summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Sweet <msweet@msweet-imac.local>2016-03-15 10:43:16 -0400
committerMichael Sweet <msweet@msweet-imac.local>2016-03-15 10:43:16 -0400
commitc8d724e6bb16ec1edfe0e13b8a5ed04cf8c417a7 (patch)
treebd27df8aa83dd7ae6cb727152b8209f2fe12cb10
parent00d0ae86f675c73d62c90f459fa47ef73b557931 (diff)
downloadcups-release-2.1b1.tar.gz
Import CUPS v2.1b1release-2.1b1
-rw-r--r--CHANGES-2.0.txt201
-rw-r--r--CHANGES.txt251
-rw-r--r--INSTALL.txt2
-rw-r--r--Makedefs.in4
-rw-r--r--Makefile4
-rw-r--r--README.txt2
-rw-r--r--backend/dnssd.c4
-rw-r--r--backend/ipp.c373
-rw-r--r--backend/snmp-supplies.c4
-rw-r--r--backend/usb-darwin.c151
-rw-r--r--backend/usb-libusb.c4
-rw-r--r--cgi-bin/Makefile4
-rw-r--r--cgi-bin/admin.c101
-rw-r--r--cgi-bin/help-index.c8
-rw-r--r--cgi-bin/ipp-var.c7
-rw-r--r--cgi-bin/template.c4
-rw-r--r--cgi-bin/var.c35
-rw-r--r--conf/Makefile8
-rw-r--r--config-scripts/cups-common.m47
-rw-r--r--config-scripts/cups-compiler.m413
-rw-r--r--config-scripts/cups-defaults.m46
-rw-r--r--config-scripts/cups-network.m44
-rw-r--r--config-scripts/cups-ssl.m410
-rw-r--r--config-scripts/cups-startup.m413
-rw-r--r--config.h.in27
-rwxr-xr-xconfigure300
-rw-r--r--configure.ac5
-rw-r--r--cups/Makefile20
-rw-r--r--cups/auth.c6
-rw-r--r--cups/cups-private.h6
-rw-r--r--cups/cups.h29
-rw-r--r--cups/debug.c4
-rw-r--r--cups/dest.c4
-rw-r--r--cups/encode.c10
-rw-r--r--cups/file.c4
-rw-r--r--cups/globals.c4
-rw-r--r--cups/http-private.h8
-rw-r--r--cups/http.c4
-rw-r--r--cups/ipp-support.c22
-rw-r--r--cups/ipp.c4
-rw-r--r--cups/ipp.h67
-rw-r--r--cups/language.c4
-rw-r--r--cups/mark.c12
-rw-r--r--cups/ppd-cache.c953
-rw-r--r--cups/ppd-private.h10
-rw-r--r--cups/test.ppd15
-rw-r--r--cups/testfile.c4
-rw-r--r--cups/testhttp.c5
-rw-r--r--cups/testppd.c57
-rw-r--r--cups/tls-darwin.c85
-rw-r--r--cups/tls-gnutls.c49
-rw-r--r--cups/tls-sspi.c25
-rw-r--r--cups/tlscheck.c739
-rw-r--r--cups/transcode.c4
-rw-r--r--cups/usersys.c53
-rw-r--r--cups/util.c4
-rw-r--r--cups/versioning.h4
-rw-r--r--data/Makefile29
-rw-r--r--data/classified6
-rw-r--r--data/confidential6
-rw-r--r--data/secret6
-rw-r--r--data/standard6
-rw-r--r--data/testprint.in7
-rw-r--r--data/topsecret6
-rw-r--r--data/unclassified6
-rw-r--r--doc/help/api-array.html2
-rw-r--r--doc/help/api-cgi.html2
-rw-r--r--doc/help/api-cups.html2
-rw-r--r--doc/help/api-filedir.html2
-rw-r--r--doc/help/api-filter.html2
-rw-r--r--doc/help/api-httpipp.html76
-rw-r--r--doc/help/api-mime.html2
-rw-r--r--doc/help/api-overview.html2
-rw-r--r--doc/help/api-ppd.html2
-rw-r--r--doc/help/api-ppdc.html2
-rw-r--r--doc/help/api-raster.html2
-rw-r--r--doc/help/man-client.conf.html8
-rw-r--r--doc/help/man-cups-files.conf.html9
-rw-r--r--doc/help/man-cupsd.conf.html5
-rw-r--r--doc/help/man-ipptool.html2
-rw-r--r--doc/help/man-ipptoolfile.html8
-rw-r--r--doc/help/man-lpadmin.html10
-rw-r--r--doc/help/postscript-driver.html2
-rw-r--r--doc/help/ppd-compiler.html2
-rw-r--r--doc/help/raster-driver.html2
-rw-r--r--doc/help/spec-cmp.html2
-rw-r--r--doc/help/spec-ppd.html2
-rw-r--r--filter/Makefile10
-rw-r--r--filter/error.c21
-rw-r--r--filter/gziptoany.c4
-rw-r--r--filter/interpret.c101
-rw-r--r--filter/pstops.c4
-rw-r--r--filter/raster.c131
-rw-r--r--filter/rastertoepson.c4
-rw-r--r--filter/rastertohp.c4
-rw-r--r--filter/rastertopwg.c4
-rw-r--r--locale/Makefile4
-rw-r--r--locale/cups.pot1334
-rw-r--r--locale/cups.strings9
-rw-r--r--locale/cups_ca.po31
-rw-r--r--locale/cups_cs.po31
-rw-r--r--locale/cups_de.po77
-rw-r--r--locale/cups_es.po1837
-rw-r--r--locale/cups_fr.po31
-rw-r--r--locale/cups_it.po40
-rw-r--r--locale/cups_ja.po1878
-rw-r--r--locale/cups_ru.po364
-rw-r--r--man/Makefile8
-rw-r--r--man/client.conf.man.in16
-rw-r--r--man/cups-files.conf.man.in17
-rw-r--r--man/cupsd.conf.man.in13
-rw-r--r--man/ipptool.man10
-rw-r--r--man/ipptoolfile.man17
-rw-r--r--man/lpadmin.man18
-rw-r--r--man/mantohtml.c4
-rw-r--r--packaging/cups.spec10
-rw-r--r--packaging/cups.spec.in6
-rw-r--r--ppdc/Makefile4
-rw-r--r--ppdc/ppdhtml.cxx4
-rw-r--r--ppdc/ppdpo.cxx4
-rw-r--r--ppdc/sample.drv6
-rw-r--r--scheduler/Makefile12
-rw-r--r--scheduler/auth.c4
-rw-r--r--scheduler/client.c11
-rw-r--r--scheduler/colorman.c8
-rw-r--r--scheduler/conf.c167
-rw-r--r--scheduler/conf.h8
-rw-r--r--scheduler/cups-driverd.cxx12
-rw-r--r--scheduler/cups-lpd.c21
-rw-r--r--scheduler/cupsfilter.c4
-rw-r--r--scheduler/dirsvc.c4
-rw-r--r--scheduler/env.c4
-rw-r--r--scheduler/ipp.c189
-rw-r--r--scheduler/job.c127
-rw-r--r--scheduler/job.h9
-rw-r--r--scheduler/log.c349
-rw-r--r--scheduler/main.c31
-rw-r--r--scheduler/org.cups.cups-lpd.plist.in6
-rw-r--r--scheduler/org.cups.cupsd.plist14
-rw-r--r--scheduler/printers.c171
-rw-r--r--scheduler/printers.h12
-rw-r--r--scheduler/process.c4
-rw-r--r--scheduler/server.c13
-rw-r--r--scheduler/sysman.c7
-rw-r--r--scheduler/testlpd.c10
-rw-r--r--scheduler/type.c4
-rw-r--r--systemv/cancel.c4
-rw-r--r--systemv/cupstestppd.c72
-rw-r--r--systemv/lpadmin.c225
-rw-r--r--templates/de/help-trailer.tmpl0
-rw-r--r--templates/ru/help-trailer.tmpl0
-rw-r--r--test/5.1-lpadmin.sh4
-rw-r--r--test/5.4-lpstat.sh4
-rw-r--r--test/Dependencies12
-rw-r--r--test/Makefile48
-rw-r--r--test/ipp-1.1.test4
-rw-r--r--test/ippfind.c10
-rw-r--r--test/ippinfra.c7125
-rw-r--r--test/ippinfra.man103
-rw-r--r--test/ippproxy.c29
-rw-r--r--test/ippproxy.man59
-rw-r--r--test/ippserver.c27
-rw-r--r--test/ipptool.c526
-rwxr-xr-xtest/run-stp-tests.sh42
-rw-r--r--test/str-header.html21
-rw-r--r--vcnet/config.h10
-rw-r--r--xcode/CUPS.xcodeproj/project.pbxproj431
-rw-r--r--xcode/config.h35
168 files changed, 13716 insertions, 6319 deletions
diff --git a/CHANGES-2.0.txt b/CHANGES-2.0.txt
new file mode 100644
index 000000000..81c8dcf54
--- /dev/null
+++ b/CHANGES-2.0.txt
@@ -0,0 +1,201 @@
+CHANGES-2.0.txt
+---------------
+
+CHANGES IN CUPS V2.0.3
+
+ - Security: Fixed CERT VU #810572 exploiting the dynamic linker
+ (STR #4609)
+ - Security: The scheduler could hang with malformed gzip data
+ (STR #4602)
+ - Restored missing generic printer icon file (STR #4587)
+ - Fixed logging of configuration errors to show up as errors (STR #4582)
+ - Fixed potential buffer overflows in raster code and filters
+ (STR #4598, STR #4599, STR #4600, STR #4601)
+ - Fixed a gzip processing bug (#4602)
+ - Fixed <Limit> inside <Location> (STR #4575)
+ - Fixed lpadmin when both -m and -o are used (STR #4578)
+ - The web interface always showed support for 2-sided printing
+ (STR #4595)
+ - cupsRasterReadHeader did not fully validate the raster header
+ (STR #4596)
+ - The rastertopwg filter did not check for truncated input (STR #4597)
+ - The cups-lpd mini-daemon did not check for request parameters
+ (STR #4603)
+ - The scheduler could get caught in a busy loop (STR #4605)
+ - The sample Epson driver could crash (STR #4616)
+ - The IPP backend now correctly monitors jobs
+ (<rdar://problem/20495955>)
+ - The ppdhtml and ppdpo utilities crashed when the -D option was used
+ before a driver information file (STR #4627)
+ - ippfind incorrectly substituted "=port" for service_port.
+ - The IPP/1.1 test file did not handle the initial print job
+ completing early (STR #4576)
+ - Fixed a memory leak in cupsConnectDest (STR #4634)
+ - PWG Raster Format output contained invalid ImageBox values
+ (<rdar://problem/21144309>)
+ - Added Russian translation (STR #4577)
+ - Added German translation (STR #4635)
+
+
+CHANGES IN CUPS V2.0.2
+
+ - Security: cupsRasterReadPixels buffer overflow with invalid page
+ header and compressed raster data (STR #4551)
+ - Command-line programs were not localized on Mac OS X
+ (<rdar://problem/14546232>)
+ - The scheduler incorrectly cleared the MakeModel string in the
+ printers.conf file after a restart (<rdar://problem/16827518>)
+ - CUPS did not compile with older versions of GNU TLS (STR #4527)
+ - CUPS did not compile without Avahi or mDNSResponder (STR #4523)
+ - ippLength() did not return the correct length for IPP_TAG_CONST
+ string values.
+ - The scheduler incorrectly aborted jobs after a job was restarted
+ (<rdar://problem/19129387>)
+ - The cups-files.conf file contained the old ServerCertificate/Key
+ directives instead of ServerKeychain.
+ - Fixed builds when no SSL/TLS library is available, or when explicitly
+ disabled (STR #4531)
+ - Fixed an OpenBSD charset transcoding issue.
+ - Fixed USB printing on OpenBSD (STR #4525)
+ - The --without-xinetd configure option did not work (STR #4542)
+ - Backends needing to load OS X kernel extensions did not work
+ (<rdar://problem/19015679>)
+ - Mapping of PPD keywords to IPP keywords did not work if the PPD
+ keyword was already an IPP keyword (<rdar://problem/19121005>)
+ - cupsGetPPD* sent bad requests (STR #4567)
+ - ippserver used the wrong temporary directory on Windows (STR #4547)
+ - ippserver did not handle Bonjour registrations properly (STR #4548)
+ - The scheduler could crash during shutdown if Avahi was shutdown
+ first (STR #4550)
+ - Added a USB quirk rule for Intermec printers (STR #4553)
+ - The scheduler did not always log which configuration file had the
+ error (STR #4559)
+ - The ippfind and ipptool programs now correctly match hostnames with
+ trailing dots (STR #4563)
+ - The ipptool timeout option did not work (STR #4515)
+ - Fixed several issues with client.conf, CUPS_SERVER, and the "-h"
+ option of most commands (STR #4528)
+ - Another change for OpenBSD (STR #4526)
+ - Added Japanese localization (STR #4524)
+ - Documentation changes (STR #4569)
+
+
+CHANGES IN CUPS V2.0.1
+
+ - Security: SSLv3 is now disabled by default to protect against the
+ POODLE attack (STR #4476)
+ - Printer sharing did not work when systemd was being used (STR #4497)
+ - cupsGetPPD* would return a symlink to the PPD in /etc/cups/ppd even if
+ it was not readable by the user (STR #4500)
+ - The web interface now protects against frame "click-jacking" attacks
+ (STR #4492)
+ - Fixed a crash in ippAttributeString (<rdar://problem/17903871>)
+ - Fixed a crash in the scheduler on Linux/*BSD if colord was not running
+ (STR #4496)
+ - Fixed a random crash in the scheduler when not using systemd
+ (STR #4484)
+ - Added systemd support for cups-lpd (STR #4493)
+ - The scheduler did not honor the FatalErrors directive for mis-
+ configured Group and SystemGroup values (STR #4495)
+ - The network backends no longer report waste-receptacle conditions when
+ using SNMP (STR #4499)
+ - The IPP backend did not work with some configurations of Windows
+ (STR #4503)
+ - RPMs did not build (STR #4490)
+ - Added a USB quirk rule for the Brother HL-1250 (STR #4519)
+ - Fixed compiles on unsupported platforms (STR #4510)
+ - "cancel -a" did not cancel all jobs on all destinations (STR #4513)
+ - The web interface did not work on OpenBSD (STR #4496)
+
+
+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/CHANGES.txt b/CHANGES.txt
index f2a44dc3b..113637de4 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,215 +1,42 @@
-CHANGES.txt - 2.0.4 - 2015-07-31
+CHANGES.txt - 2.1b1 - 2015-06-03
--------------------------------
-CHANGES IN CUPS V2.0.4
+CHANGES IN CUPS V2.1b1
+
+ - Improved speed of ppdMarkDefaults for complex/large PPDs
+ (<rdar://problem/15146999>)
+ - The IPP backend now stops sending print data if the printer indicates
+ the job has been aborted or canceled (<rdar://problem/17837631>)
+ - The IPP backend now sends the job-pages-per-set attribute when
+ printing multiple copy jobs with finishings
+ (<rdar://problem/16792757>)
+ - The IPP backend now updates the cupsMandatory values when the printer
+ configuration changes (<rdar://problem/18126570>)
+ - No longer install banner files since third-party banner filters now
+ supply their own (STR #4518)
+ - Added support for EXPECT-ALL directive in ipptool test files
+ (STR #4469)
+ - Added support for WITH-VALUE-FROM predicate in ipptool test files
+ (STR #4470)
+ - The scheduler no longer listens on the loopback interface unless the
+ web interface or printer sharing are enabled
+ (<rdar://problem/9136448>)
+ - Added a PPD generator for IPP Everywhere printers (STR #4258)
+ - Now install "default" versions of more configuration files
+ (<rdar://problem/19024491>)
+ - The cupstestppd program did not handle "maxsize(nnn)" entries in
+ cupsFilter/cupsFilter2 values (<rdar://problem/18974858>)
+ - The scheduler now checks the return value of rename() calls
+ (STR #4589)
+ - The scheduler now validates ErrorPolicy values in config files
+ (STR #4591)
+ - Long cookies caused the web interface to stop working (STR #4619)
+ - Added SSLOptions values to allow Diffie-Hellman key exchange and
+ disable TLS/1.0 support.
+ - Updated the scheduler to support more IPP Everywhere attributes
+ (STR #4630)
+ - The scheduler now supports advanced ASL and journald logging when
+ "syslog" output is configured (STR #4474)
+ - The scheduler now supports logging to stderr when running in the
+ foreground (STR #4505)
- - Fixed a bug in cupsRasterWritePixels (STR #4650)
- - Fixed redirection in the web interface (STR #4538)
- - The IPP backend did not respond to side-channel requests (STR #4645)
- - The scheduler did not start all pending jobs at once (STR #4646)
- - The web search incorrectly searched time-at-xxx values (STR #4652)
- - Fixed an RPM spec file issue (STR #4657)
- - The scheduler incorrectly started jobs while canceling multiple jobs
- (STR #4648)
- - Fixed processing of server overrides without port numbers (STR #4675)
- - Documentation changes (STR #4651, STR #4674)
-
-
-CHANGES IN CUPS V2.0.3
-
- - Security: Fixed CERT VU #810572 exploiting the dynamic linker
- (STR #4609)
- - Security: The scheduler could hang with malformed gzip data
- (STR #4602)
- - Restored missing generic printer icon file (STR #4587)
- - Fixed logging of configuration errors to show up as errors (STR #4582)
- - Fixed potential buffer overflows in raster code and filters
- (STR #4598, STR #4599, STR #4600, STR #4601)
- - Fixed a gzip processing bug (#4602)
- - Fixed <Limit> inside <Location> (STR #4575)
- - Fixed lpadmin when both -m and -o are used (STR #4578)
- - The web interface always showed support for 2-sided printing
- (STR #4595)
- - cupsRasterReadHeader did not fully validate the raster header
- (STR #4596)
- - The rastertopwg filter did not check for truncated input (STR #4597)
- - The cups-lpd mini-daemon did not check for request parameters
- (STR #4603)
- - The scheduler could get caught in a busy loop (STR #4605)
- - The sample Epson driver could crash (STR #4616)
- - The IPP backend now correctly monitors jobs
- (<rdar://problem/20495955>)
- - The ppdhtml and ppdpo utilities crashed when the -D option was used
- before a driver information file (STR #4627)
- - ippfind incorrectly substituted "=port" for service_port.
- - The IPP/1.1 test file did not handle the initial print job
- completing early (STR #4576)
- - Fixed a memory leak in cupsConnectDest (STR #4634)
- - PWG Raster Format output contained invalid ImageBox values
- (<rdar://problem/21144309>)
- - Added Russian translation (STR #4577)
- - Added German translation (STR #4635)
-
-
-CHANGES IN CUPS V2.0.2
-
- - Security: cupsRasterReadPixels buffer overflow with invalid page
- header and compressed raster data (STR #4551)
- - Command-line programs were not localized on Mac OS X
- (<rdar://problem/14546232>)
- - The scheduler incorrectly cleared the MakeModel string in the
- printers.conf file after a restart (<rdar://problem/16827518>)
- - CUPS did not compile with older versions of GNU TLS (STR #4527)
- - CUPS did not compile without Avahi or mDNSResponder (STR #4523)
- - ippLength() did not return the correct length for IPP_TAG_CONST
- string values.
- - The scheduler incorrectly aborted jobs after a job was restarted
- (<rdar://problem/19129387>)
- - The cups-files.conf file contained the old ServerCertificate/Key
- directives instead of ServerKeychain.
- - Fixed builds when no SSL/TLS library is available, or when explicitly
- disabled (STR #4531)
- - Fixed an OpenBSD charset transcoding issue.
- - Fixed USB printing on OpenBSD (STR #4525)
- - The --without-xinetd configure option did not work (STR #4542)
- - Backends needing to load OS X kernel extensions did not work
- (<rdar://problem/19015679>)
- - Mapping of PPD keywords to IPP keywords did not work if the PPD
- keyword was already an IPP keyword (<rdar://problem/19121005>)
- - cupsGetPPD* sent bad requests (STR #4567)
- - ippserver used the wrong temporary directory on Windows (STR #4547)
- - ippserver did not handle Bonjour registrations properly (STR #4548)
- - The scheduler could crash during shutdown if Avahi was shutdown
- first (STR #4550)
- - Added a USB quirk rule for Intermec printers (STR #4553)
- - The scheduler did not always log which configuration file had the
- error (STR #4559)
- - The ippfind and ipptool programs now correctly match hostnames with
- trailing dots (STR #4563)
- - The ipptool timeout option did not work (STR #4515)
- - Fixed several issues with client.conf, CUPS_SERVER, and the "-h"
- option of most commands (STR #4528)
- - Another change for OpenBSD (STR #4526)
- - Added Japanese localization (STR #4524)
- - Documentation changes (STR #4569)
-
-
-CHANGES IN CUPS V2.0.1
-
- - Security: SSLv3 is now disabled by default to protect against the
- POODLE attack (STR #4476)
- - Printer sharing did not work when systemd was being used (STR #4497)
- - cupsGetPPD* would return a symlink to the PPD in /etc/cups/ppd even if
- it was not readable by the user (STR #4500)
- - The web interface now protects against frame "click-jacking" attacks
- (STR #4492)
- - Fixed a crash in ippAttributeString (<rdar://problem/17903871>)
- - Fixed a crash in the scheduler on Linux/*BSD if colord was not running
- (STR #4496)
- - Fixed a random crash in the scheduler when not using systemd
- (STR #4484)
- - Added systemd support for cups-lpd (STR #4493)
- - The scheduler did not honor the FatalErrors directive for mis-
- configured Group and SystemGroup values (STR #4495)
- - The network backends no longer report waste-receptacle conditions when
- using SNMP (STR #4499)
- - The IPP backend did not work with some configurations of Windows
- (STR #4503)
- - RPMs did not build (STR #4490)
- - Added a USB quirk rule for the Brother HL-1250 (STR #4519)
- - Fixed compiles on unsupported platforms (STR #4510)
- - "cancel -a" did not cancel all jobs on all destinations (STR #4513)
- - The web interface did not work on OpenBSD (STR #4496)
-
-
-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 bd8c28aaf..0608c3547 100644
--- a/INSTALL.txt
+++ b/INSTALL.txt
@@ -1,4 +1,4 @@
-INSTALL - CUPS v2.0.4 - 2015-07-31
+INSTALL - CUPS v2.1b1 - 2015-06-08
----------------------------------
This file describes how to compile and install CUPS from source code. For more
diff --git a/Makedefs.in b/Makedefs.in
index f9c275f3c..3afef0a33 100644
--- a/Makedefs.in
+++ b/Makedefs.in
@@ -1,5 +1,5 @@
#
-# "$Id: Makedefs.in 11716 2014-03-21 14:50:24Z msweet $"
+# "$Id: Makedefs.in 12519 2015-02-17 13:10:19Z msweet $"
#
# Common makefile definitions for CUPS.
#
@@ -264,5 +264,5 @@ USBQUIRKS = @USBQUIRKS@
#
-# End of "$Id: Makedefs.in 11716 2014-03-21 14:50:24Z msweet $"
+# End of "$Id: Makedefs.in 12519 2015-02-17 13:10:19Z msweet $"
#
diff --git a/Makefile b/Makefile
index f5aa07c06..94ce714e8 100644
--- a/Makefile
+++ b/Makefile
@@ -1,5 +1,5 @@
#
-# "$Id: Makefile 12415 2015-01-21 00:03:08Z msweet $"
+# "$Id: Makefile 12414 2015-01-21 00:02:04Z msweet $"
#
# Top-level Makefile for CUPS.
#
@@ -348,5 +348,5 @@ dist: all
#
-# End of "$Id: Makefile 12415 2015-01-21 00:03:08Z msweet $".
+# End of "$Id: Makefile 12414 2015-01-21 00:02:04Z msweet $".
#
diff --git a/README.txt b/README.txt
index 8e4e64197..a6db7bfb9 100644
--- a/README.txt
+++ b/README.txt
@@ -1,4 +1,4 @@
-README - CUPS v2.0.4 - 2015-07-31
+README - CUPS v2.1b1 - 2015-06-08
---------------------------------
Looking for compile instructions? Read the file "INSTALL.txt" instead...
diff --git a/backend/dnssd.c b/backend/dnssd.c
index 83f450959..e76431b0b 100644
--- a/backend/dnssd.c
+++ b/backend/dnssd.c
@@ -1,5 +1,5 @@
/*
- * "$Id: dnssd.c 12660 2015-05-22 19:09:57Z msweet $"
+ * "$Id: dnssd.c 12659 2015-05-22 19:06:41Z msweet $"
*
* DNS-SD discovery backend for CUPS.
*
@@ -1330,5 +1330,5 @@ unquote(char *dst, /* I - Destination buffer */
/*
- * End of "$Id: dnssd.c 12660 2015-05-22 19:09:57Z msweet $".
+ * End of "$Id: dnssd.c 12659 2015-05-22 19:06:41Z msweet $".
*/
diff --git a/backend/ipp.c b/backend/ipp.c
index 50dd73ea4..96957eaaf 100644
--- a/backend/ipp.c
+++ b/backend/ipp.c
@@ -1,9 +1,9 @@
/*
- * "$Id: ipp.c 12759 2015-06-24 20:06:30Z msweet $"
+ * "$Id: ipp.c 12676 2015-05-28 01:19:14Z msweet $"
*
* IPP backend for CUPS.
*
- * Copyright 2007-2014 by Apple Inc.
+ * Copyright 2007-2015 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
@@ -122,6 +122,7 @@ static const char * const pattrs[] = /* Printer attributes we want */
"printer-alert",
"printer-alert-description",
"printer-is-accepting-jobs",
+ "printer-mandatory-job-attributes",
"printer-state",
"printer-state-message",
"printer-state-reasons"
@@ -145,6 +146,8 @@ static cups_option_t *attr_cache = NULL;
static cups_array_t *state_reasons; /* Array of printe-state-reasons keywords */
static char tmpfilename[1024] = "";
/* Temporary spool file name */
+static char mandatory_attrs[1024] = "";
+ /* cupsMandatory value */
/*
@@ -1295,11 +1298,16 @@ main(int argc, /* I - Number of command-line args */
* Load the PPD file and generate PWG attribute mapping information...
*/
+ ppd_attr_t *mandatory; /* cupsMandatory value */
+
ppd = ppdOpenFile(getenv("PPD"));
pc = _ppdCacheCreateWithPPD(ppd);
ppdMarkDefaults(ppd);
cupsMarkOptions(ppd, num_options, options);
+
+ if ((mandatory = ppdFindAttr(ppd, "cupsMandatory", NULL)) != NULL)
+ strlcpy(mandatory_attrs, mandatory->value, sizeof(mandatory_attrs));
}
}
else
@@ -1459,6 +1467,7 @@ main(int argc, /* I - Number of command-line args */
ipp_status == IPP_STATUS_ERROR_CUPS_ACCOUNT_AUTHORIZATION_FAILED)
goto cleanup;
else if (ipp_status == IPP_STATUS_ERROR_FORBIDDEN ||
+ ipp_status == IPP_STATUS_ERROR_NOT_AUTHORIZED ||
ipp_status == IPP_STATUS_ERROR_CUPS_AUTHENTICATION_CANCELED)
{
const char *www_auth = httpGetField(http, HTTP_FIELD_WWW_AUTHENTICATE);
@@ -1562,7 +1571,6 @@ main(int argc, /* I - Number of command-line args */
FD_ZERO(&input);
FD_SET(fd, &input);
FD_SET(snmp_fd, &input);
- FD_SET(CUPS_SC_FD, &input);
while (select(fd > snmp_fd ? fd + 1 : snmp_fd + 1, &input, NULL, NULL,
NULL) <= 0 && !job_canceled);
@@ -2018,12 +2026,8 @@ main(int argc, /* I - Number of command-line args */
remote_job_states[job_state->values[0].integer -
IPP_JOB_PENDING]);
- if ((job_sheets = ippFindAttribute(response,
- "job-media-sheets-completed",
- IPP_TAG_INTEGER)) == NULL)
- job_sheets = ippFindAttribute(response,
- "job-impressions-completed",
- IPP_TAG_INTEGER);
+ if ((job_sheets = ippFindAttribute(response, "job-impressions-completed", IPP_TAG_INTEGER)) == NULL)
+ job_sheets = ippFindAttribute(response, "job-media-sheets-completed", IPP_TAG_INTEGER);
if (job_sheets)
fprintf(stderr, "PAGE: total %d\n",
@@ -2460,6 +2464,8 @@ monitor_printer(
new_reasons |= _CUPS_JSR_JOB_PASSWORD_WAIT;
else if (!strcmp(attr->values[i].string.text, "job-release-wait"))
new_reasons |= _CUPS_JSR_JOB_RELEASE_WAIT;
+ else if (!strncmp(attr->values[i].string.text, "job-canceled-", 13) || !strcmp(attr->values[i].string.text, "aborted-by-system"))
+ job_canceled = 1;
}
if (new_reasons != monitor->job_reasons)
@@ -2560,19 +2566,10 @@ new_request(
ipp_attribute_t *print_color_mode_sup)
/* I - Printer supports print-color-mode */
{
- int i; /* Looping var */
ipp_t *request; /* Request data */
const char *keyword; /* PWG keyword */
- _pwg_size_t *size; /* PWG media size */
- ipp_t *media_col, /* media-col value */
- *media_size; /* media-size value */
- const char *media_source, /* media-source value */
- *media_type, /* media-type value */
- *collate_str, /* multiple-document-handling value */
- *mandatory; /* Mandatory attributes */
ipp_tag_t group; /* Current group */
ipp_attribute_t *attr; /* Current attribute */
- const char *color_attr_name; /* Supported color attribute */
char buffer[1024]; /* Value buffer */
@@ -2592,36 +2589,31 @@ new_request(
* Add standard 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);
fprintf(stderr, "DEBUG: printer-uri=\"%s\"\n", uri);
if (user && *user)
{
- ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME,
- "requesting-user-name", NULL, user);
+ ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "requesting-user-name", NULL, user);
fprintf(stderr, "DEBUG: requesting-user-name=\"%s\"\n", user);
}
if (title && *title)
{
- ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "job-name", NULL,
- title);
+ ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "job-name", NULL, title);
fprintf(stderr, "DEBUG: job-name=\"%s\"\n", title);
}
if (format && op != IPP_CREATE_JOB)
{
- ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_MIMETYPE,
- "document-format", NULL, format);
+ ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_MIMETYPE, "document-format", NULL, format);
fprintf(stderr, "DEBUG: document-format=\"%s\"\n", format);
}
#ifdef HAVE_LIBZ
if (compression && op != IPP_OP_CREATE_JOB && op != IPP_OP_VALIDATE_JOB)
{
- ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD,
- "compression", NULL, compression);
+ ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD, "compression", NULL, compression);
fprintf(stderr, "DEBUG: compression=\"%s\"\n", compression);
}
#endif /* HAVE_LIBZ */
@@ -2634,313 +2626,13 @@ new_request(
{
if (pc)
{
- int num_finishings = 0, /* Number of finishing values */
- finishings[10]; /* Finishing enum values */
- ppd_choice_t *choice; /* Marked choice */
-
/*
* Send standard IPP attributes...
*/
fputs("DEBUG: Adding standard IPP operation/job attributes.\n", stderr);
- if (pc->password &&
- (keyword = cupsGetOption("job-password", num_options,
- options)) != NULL)
- {
- ippAddOctetString(request, IPP_TAG_OPERATION, "job-password", keyword, (int)strlen(keyword));
-
- if ((keyword = cupsGetOption("job-password-encryption", num_options,
- options)) == NULL)
- keyword = "none";
-
- ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD,
- "job-password-encryption", NULL, keyword);
- }
-
- if (pc->account_id)
- {
- if ((keyword = cupsGetOption("job-account-id", num_options,
- options)) == NULL)
- keyword = cupsGetOption("job-billing", num_options, options);
-
- if (keyword)
- ippAddString(request, IPP_TAG_JOB, IPP_TAG_NAME, "job-account-id",
- NULL, keyword);
- }
-
- if (pc->accounting_user_id)
- {
- if ((keyword = cupsGetOption("job-accounting-user-id", num_options,
- options)) == NULL)
- keyword = user;
-
- if (keyword)
- ippAddString(request, IPP_TAG_JOB, IPP_TAG_NAME,
- "job-accounting-user-id", NULL, keyword);
- }
-
- for (mandatory = (char *)cupsArrayFirst(pc->mandatory);
- mandatory;
- mandatory = (char *)cupsArrayNext(pc->mandatory))
- {
- if (strcmp(mandatory, "copies") &&
- strcmp(mandatory, "destination-uris") &&
- strcmp(mandatory, "finishings") &&
- strcmp(mandatory, "job-account-id") &&
- strcmp(mandatory, "job-accounting-user-id") &&
- strcmp(mandatory, "job-password") &&
- strcmp(mandatory, "job-password-encryption") &&
- strcmp(mandatory, "media") &&
- strncmp(mandatory, "media-col", 9) &&
- strcmp(mandatory, "multiple-document-handling") &&
- strcmp(mandatory, "output-bin") &&
- strcmp(mandatory, "print-color-mode") &&
- strcmp(mandatory, "print-quality") &&
- strcmp(mandatory, "sides") &&
- (keyword = cupsGetOption(mandatory, num_options, options)) != NULL)
- {
- _ipp_option_t *opt = _ippFindOption(mandatory);
- /* Option type */
- ipp_tag_t value_tag = opt ? opt->value_tag : IPP_TAG_NAME;
- /* Value type */
-
- switch (value_tag)
- {
- case IPP_TAG_INTEGER :
- case IPP_TAG_ENUM :
- ippAddInteger(request, IPP_TAG_JOB, value_tag, mandatory,
- atoi(keyword));
- break;
- case IPP_TAG_BOOLEAN :
- ippAddBoolean(request, IPP_TAG_JOB, mandatory,
- !_cups_strcasecmp(keyword, "true"));
- break;
- case IPP_TAG_RANGE :
- {
- int lower, upper; /* Range */
-
- if (sscanf(keyword, "%d-%d", &lower, &upper) != 2)
- lower = upper = atoi(keyword);
-
- ippAddRange(request, IPP_TAG_JOB, mandatory, lower, upper);
- }
- break;
- case IPP_TAG_STRING :
- ippAddOctetString(request, IPP_TAG_JOB, mandatory, keyword, (int)strlen(keyword));
- break;
- default :
- if (!strcmp(mandatory, "print-color-mode") && !strcmp(keyword, "monochrome"))
- {
- if (ippContainsString(print_color_mode_sup, "auto-monochrome"))
- keyword = "auto-monochrome";
- else if (ippContainsString(print_color_mode_sup, "process-monochrome") && !ippContainsString(print_color_mode_sup, "monochrome"))
- keyword = "process-monochrome";
- }
-
- ippAddString(request, IPP_TAG_JOB, value_tag, mandatory,
- NULL, keyword);
- break;
- }
- }
- }
-
- if ((keyword = cupsGetOption("PageSize", num_options, options)) == NULL)
- keyword = cupsGetOption("media", num_options, options);
-
- if ((size = _ppdCacheGetSize(pc, keyword)) != NULL)
- {
- /*
- * Add a media-col value...
- */
-
- media_size = ippNew();
- ippAddInteger(media_size, IPP_TAG_ZERO, IPP_TAG_INTEGER,
- "x-dimension", size->width);
- ippAddInteger(media_size, IPP_TAG_ZERO, IPP_TAG_INTEGER,
- "y-dimension", size->length);
-
- media_col = ippNew();
- ippAddCollection(media_col, IPP_TAG_ZERO, "media-size", media_size);
-
- media_source = _ppdCacheGetSource(pc, cupsGetOption("InputSlot",
- num_options,
- options));
- media_type = _ppdCacheGetType(pc, cupsGetOption("MediaType",
- num_options,
- options));
-
- for (i = 0; i < media_col_sup->num_values; i ++)
- {
- if (!strcmp(media_col_sup->values[i].string.text,
- "media-left-margin"))
- ippAddInteger(media_col, IPP_TAG_ZERO, IPP_TAG_INTEGER,
- "media-left-margin", size->left);
- else if (!strcmp(media_col_sup->values[i].string.text,
- "media-bottom-margin"))
- ippAddInteger(media_col, IPP_TAG_ZERO, IPP_TAG_INTEGER,
- "media-bottom-margin", size->bottom);
- else if (!strcmp(media_col_sup->values[i].string.text,
- "media-right-margin"))
- ippAddInteger(media_col, IPP_TAG_ZERO, IPP_TAG_INTEGER,
- "media-right-margin", size->right);
- else if (!strcmp(media_col_sup->values[i].string.text,
- "media-top-margin"))
- ippAddInteger(media_col, IPP_TAG_ZERO, IPP_TAG_INTEGER,
- "media-top-margin", size->top);
- else if (!strcmp(media_col_sup->values[i].string.text,
- "media-source") && media_source)
- ippAddString(media_col, IPP_TAG_ZERO, IPP_TAG_KEYWORD,
- "media-source", NULL, media_source);
- else if (!strcmp(media_col_sup->values[i].string.text,
- "media-type") && media_type)
- ippAddString(media_col, IPP_TAG_ZERO, IPP_TAG_KEYWORD,
- "media-type", NULL, media_type);
- }
-
- ippAddCollection(request, IPP_TAG_JOB, "media-col", media_col);
- }
-
- if ((keyword = cupsGetOption("output-bin", num_options,
- options)) == NULL)
- {
- if ((choice = ppdFindMarkedChoice(ppd, "OutputBin")) != NULL)
- keyword = _ppdCacheGetBin(pc, choice->choice);
- }
-
- if (keyword)
- ippAddString(request, IPP_TAG_JOB, IPP_TAG_KEYWORD, "output-bin",
- NULL, keyword);
-
- color_attr_name = print_color_mode_sup ? "print-color-mode" : "output-mode";
-
- if ((keyword = cupsGetOption("print-color-mode", num_options,
- options)) == NULL)
- {
- if ((choice = ppdFindMarkedChoice(ppd, "ColorModel")) != NULL)
- {
- if (!_cups_strcasecmp(choice->choice, "Gray"))
- keyword = "monochrome";
- else
- keyword = "color";
- }
- }
-
- if (keyword && !strcmp(keyword, "monochrome"))
- {
- if (ippContainsString(print_color_mode_sup, "auto-monochrome"))
- keyword = "auto-monochrome";
- else if (ippContainsString(print_color_mode_sup, "process-monochrome") && !ippContainsString(print_color_mode_sup, "monochrome"))
- keyword = "process-monochrome";
- }
-
- if (keyword)
- ippAddString(request, IPP_TAG_JOB, IPP_TAG_KEYWORD, color_attr_name,
- NULL, keyword);
-
- if ((keyword = cupsGetOption("print-quality", num_options,
- options)) != NULL)
- ippAddInteger(request, IPP_TAG_JOB, IPP_TAG_ENUM, "print-quality",
- atoi(keyword));
- else if ((choice = ppdFindMarkedChoice(ppd, "cupsPrintQuality")) != NULL)
- {
- if (!_cups_strcasecmp(choice->choice, "draft"))
- ippAddInteger(request, IPP_TAG_JOB, IPP_TAG_ENUM, "print-quality",
- IPP_QUALITY_DRAFT);
- else if (!_cups_strcasecmp(choice->choice, "normal"))
- ippAddInteger(request, IPP_TAG_JOB, IPP_TAG_ENUM, "print-quality",
- IPP_QUALITY_NORMAL);
- else if (!_cups_strcasecmp(choice->choice, "high"))
- ippAddInteger(request, IPP_TAG_JOB, IPP_TAG_ENUM, "print-quality",
- IPP_QUALITY_HIGH);
- }
-
- if ((keyword = cupsGetOption("sides", num_options, options)) != NULL)
- ippAddString(request, IPP_TAG_JOB, IPP_TAG_KEYWORD, "sides",
- NULL, keyword);
- else if (pc->sides_option &&
- (choice = ppdFindMarkedChoice(ppd, pc->sides_option)) != NULL)
- {
- if (!_cups_strcasecmp(choice->choice, pc->sides_1sided))
- ippAddString(request, IPP_TAG_JOB, IPP_TAG_KEYWORD, "sides",
- NULL, "one-sided");
- else if (!_cups_strcasecmp(choice->choice, pc->sides_2sided_long))
- ippAddString(request, IPP_TAG_JOB, IPP_TAG_KEYWORD, "sides",
- NULL, "two-sided-long-edge");
- if (!_cups_strcasecmp(choice->choice, pc->sides_2sided_short))
- ippAddString(request, IPP_TAG_JOB, IPP_TAG_KEYWORD, "sides",
- NULL, "two-sided-short-edge");
- }
-
- if ((keyword = cupsGetOption("multiple-document-handling",
- num_options, options)) != NULL)
- {
- if (strstr(keyword, "uncollated"))
- keyword = "false";
- else
- keyword = "true";
- }
- else if ((keyword = cupsGetOption("collate", num_options,
- options)) == NULL)
- keyword = "true";
-
- if (format)
- {
- if (!_cups_strcasecmp(format, "image/gif") ||
- !_cups_strcasecmp(format, "image/jp2") ||
- !_cups_strcasecmp(format, "image/jpeg") ||
- !_cups_strcasecmp(format, "image/png") ||
- !_cups_strcasecmp(format, "image/tiff") ||
- !_cups_strncasecmp(format, "image/x-", 8))
- {
- /*
- * Collation makes no sense for single page image formats...
- */
-
- keyword = "false";
- }
- else if (!_cups_strncasecmp(format, "image/", 6) ||
- !_cups_strcasecmp(format, "application/vnd.cups-raster"))
- {
- /*
- * Multi-page image formats will have copies applied by the upstream
- * filters...
- */
-
- copies = 1;
- }
- }
-
- if (doc_handling_sup)
- {
- if (!_cups_strcasecmp(keyword, "true"))
- collate_str = "separate-documents-collated-copies";
- else
- collate_str = "separate-documents-uncollated-copies";
-
- for (i = 0; i < doc_handling_sup->num_values; i ++)
- if (!strcmp(doc_handling_sup->values[i].string.text, collate_str))
- {
- ippAddString(request, IPP_TAG_JOB, IPP_TAG_KEYWORD,
- "multiple-document-handling", NULL, collate_str);
- break;
- }
-
- if (i >= doc_handling_sup->num_values)
- copies = 1;
- }
-
- /*
- * Map finishing options...
- */
-
- num_finishings = _ppdCacheGetFinishingValues(pc, num_options, options,
- (int)(sizeof(finishings) /
- sizeof(finishings[0])),
- finishings);
- if (num_finishings > 0)
- ippAddIntegers(request, IPP_TAG_JOB, IPP_TAG_ENUM, "finishings",
- num_finishings, finishings);
+ copies = _cupsConvertOptions(request, ppd, pc, media_col_sup, doc_handling_sup, print_color_mode_sup, user, format, copies, num_options, options);
/*
* Map FaxOut options...
@@ -3222,6 +2914,7 @@ report_printer_state(ipp_t *ipp) /* I - IPP response */
{
ipp_attribute_t *pa, /* printer-alert */
*pam, /* printer-alert-message */
+ *pmja, /* printer-mandatory-job-attributes */
*psm, /* printer-state-message */
*reasons, /* printer-state-reasons */
*marker; /* marker-* attributes */
@@ -3242,6 +2935,26 @@ report_printer_state(ipp_t *ipp) /* I - IPP response */
IPP_TAG_TEXT)) != NULL)
report_attr(pam);
+ if ((pmja = ippFindAttribute(ipp, "printer-mandatory-job-attributes", IPP_TAG_KEYWORD)) != NULL)
+ {
+ int i, /* Looping var */
+ count = ippGetCount(pmja); /* Number of values */
+
+ for (i = 0, valptr = value; i < count; i ++, valptr += strlen(valptr))
+ {
+ if (i)
+ snprintf(valptr, sizeof(value) - (size_t)(valptr - value), " %s", ippGetString(pmja, i, NULL));
+ else
+ strlcpy(value, ippGetString(pmja, i, NULL), sizeof(value));
+ }
+
+ if (strcmp(value, mandatory_attrs))
+ {
+ strlcpy(mandatory_attrs, value, sizeof(mandatory_attrs));
+ fprintf(stderr, "PPD: cupsMandatory=\"%s\"\n", value);
+ }
+ }
+
if ((psm = ippFindAttribute(ipp, "printer-state-message",
IPP_TAG_TEXT)) != NULL)
{
@@ -3770,5 +3483,5 @@ update_reasons(ipp_attribute_t *attr, /* I - printer-state-reasons or NULL */
}
/*
- * End of "$Id: ipp.c 12759 2015-06-24 20:06:30Z msweet $".
+ * End of "$Id: ipp.c 12676 2015-05-28 01:19:14Z msweet $".
*/
diff --git a/backend/snmp-supplies.c b/backend/snmp-supplies.c
index 93d0ff114..38ef28e93 100644
--- a/backend/snmp-supplies.c
+++ b/backend/snmp-supplies.c
@@ -1,5 +1,5 @@
/*
- * "$Id: snmp-supplies.c 12228 2014-10-21 13:42:05Z msweet $"
+ * "$Id: snmp-supplies.c 12227 2014-10-21 13:42:04Z msweet $"
*
* SNMP supplies functions for CUPS.
*
@@ -1098,5 +1098,5 @@ utf16_to_utf8(
/*
- * End of "$Id: snmp-supplies.c 12228 2014-10-21 13:42:05Z msweet $".
+ * End of "$Id: snmp-supplies.c 12227 2014-10-21 13:42:04Z msweet $".
*/
diff --git a/backend/usb-darwin.c b/backend/usb-darwin.c
index cc85f885f..d9dbde335 100644
--- a/backend/usb-darwin.c
+++ b/backend/usb-darwin.c
@@ -1,5 +1,5 @@
/*
- * "$Id: usb-darwin.c 12529 2015-02-23 18:57:57Z msweet $"
+ * "$Id: usb-darwin.c 12672 2015-05-28 00:10:27Z msweet $"
*
* Copyright 2005-2014 Apple Inc. All rights reserved.
*
@@ -302,8 +302,8 @@ static void parse_pserror (char *sockBuffer, int len);
static IOUSBInterfaceInterface220 **usb_interface220_for_service(io_service_t usbClass);
static IOUSBDeviceInterface **usb_device_interface_for_device(io_service_t usbDevice);
-static CFStringRef printer_interface_deviceid(IOUSBInterfaceInterface220 **printer, UInt8 alternateSetting);
-static CFStringRef printer_interface_indexed_description(IOUSBInterfaceInterface220 ** printer, UInt8 index, UInt16 language);
+static CFStringRef copy_printer_interface_deviceid(IOUSBInterfaceInterface220 **printer, UInt8 alternateSetting);
+static CFStringRef copy_printer_interface_indexed_description(IOUSBInterfaceInterface220 ** printer, UInt8 index, UInt16 language);
static CFStringRef deviceIDCopyManufacturer(CFStringRef deviceID);
static CFStringRef deviceIDCopyModel(CFStringRef deviceID);
static CFStringRef deviceIDCopySerialNumber(CFStringRef deviceID);
@@ -1099,17 +1099,17 @@ sidechannel_thread(void *reference)
static void iterate_printers(iterator_callback_t callBack, void *userdata)
{
Iterating = 1;
-
+
mach_port_t masterPort = 0x0;
kern_return_t kr = IOMasterPort (bootstrap_port, &masterPort);
-
+
if (kr == kIOReturnSuccess && masterPort != 0x0)
{
iterator_reference_t reference = { callBack, userdata, true };
-
+
IONotificationPortRef addNotification = IONotificationPortCreate(masterPort);
io_iterator_t addIterator = IO_OBJECT_NULL;
-
+
kr = IOServiceAddMatchingNotification(addNotification, kIOFirstMatchNotification, IOServiceMatching(kIOUSBDeviceClassName),
&device_added, &reference, &addIterator);
if (kr == kIOReturnSuccess && addIterator != IO_OBJECT_NULL)
@@ -1124,7 +1124,7 @@ static void iterate_printers(iterator_callback_t callBack, void *userdata)
}
mach_port_deallocate(mach_task_self(), masterPort);
}
-
+
Iterating = 0;
}
@@ -1138,7 +1138,7 @@ static void device_added(void *userdata, io_iterator_t iterator)
{
iterator_reference_t *reference = userdata;
io_service_t device;
-
+
while (reference->keepRunning && (device = IOIteratorNext(iterator)) != 0x0)
{
UInt32 locationID = 0;
@@ -1175,7 +1175,7 @@ static void device_added(void *userdata, io_iterator_t iterator)
if (IsPrintingInterface(intfClass, intfSubclass, intfProtocol))
{
- CFStringRef deviceIDString = printer_interface_deviceid(intf220, 0);
+ CFStringRef deviceIDString = copy_printer_interface_deviceid(intf220, 0);
if (deviceIDString != NULL)
{
reference->keepRunning = reference->callback(userdata, intf, deviceIDString, locationID, intfNumber, 0);
@@ -1183,7 +1183,7 @@ static void device_added(void *userdata, io_iterator_t iterator)
}
}
- IOUSBInterfaceDescriptor *intfDesc = nil;
+ IOUSBInterfaceDescriptor *intfDesc = NULL;
while (reference->keepRunning && (intfDesc = (IOUSBInterfaceDescriptor *)(*intf220)->FindNextAssociatedDescriptor(intf220, intfDesc, kUSBInterfaceDesc)))
{
intfClass = intfDesc->bInterfaceClass;
@@ -1192,7 +1192,7 @@ static void device_added(void *userdata, io_iterator_t iterator)
if ((IsPrintingInterface(intfClass, intfSubclass, intfProtocol)))
{
- CFStringRef deviceIDString = printer_interface_deviceid(intf220, intfDesc->bAlternateSetting);
+ CFStringRef deviceIDString = copy_printer_interface_deviceid(intf220, intfDesc->bAlternateSetting);
if (deviceIDString != NULL)
{
reference->keepRunning = reference->callback(userdata, intf, deviceIDString, locationID, intfNumber, intfDesc->bAlternateSetting);
@@ -1202,6 +1202,7 @@ static void device_added(void *userdata, io_iterator_t iterator)
}
(*intf220)->Release(intf220);
}
+ IOObjectRelease(intf);
}
device_added_done:
@@ -1210,12 +1211,12 @@ static void device_added(void *userdata, io_iterator_t iterator)
IOObjectRelease(device);
}
-
+
/* One last call to the call back now that we are not longer have printers left to iterate...
*/
if (reference->keepRunning && reference->callback)
reference->keepRunning = reference->callback(reference->userdata, IO_OBJECT_NULL, NULL, 0, 0, 0);
-
+
if (!reference->keepRunning)
CFRunLoopStop(CFRunLoopGetCurrent());
}
@@ -1226,42 +1227,47 @@ static void device_added(void *userdata, io_iterator_t iterator)
static Boolean list_device_cb(void *refcon, io_service_t obj, CFStringRef deviceIDString, UInt32 deviceLocation, UInt8 interfaceNum, UInt8 alternateSetting)
{
+ (void)refcon;
(void)interfaceNum;
(void)alternateSetting;
if (obj != IO_OBJECT_NULL)
{
- CFStringRef make = NULL;
- CFStringRef model = NULL;
- CFStringRef serial = NULL;
-
+ CFStringRef make = deviceIDCopyManufacturer(deviceIDString);
+ CFStringRef model = deviceIDCopyModel(deviceIDString);
+ CFStringRef serial = deviceIDCopySerialNumber(deviceIDString);
+
char uristr[1024], makestr[1024], modelstr[1024], serialstr[1024];
char optionsstr[1024], idstr[1024], make_modelstr[1024];
-
+
CFStringGetCString(deviceIDString, idstr, sizeof(idstr), kCFStringEncodingUTF8);
backendGetMakeModel(idstr, make_modelstr, sizeof(make_modelstr));
-
+
modelstr[0] = '/';
-
+
if (make == NULL || !CFStringGetCString(make, makestr, sizeof(makestr), kCFStringEncodingUTF8))
strlcpy(makestr, "Unknown", sizeof(makestr));
-
+
if (model == NULL || !CFStringGetCString(model, &modelstr[1], sizeof(modelstr)-1, kCFStringEncodingUTF8))
strlcpy(modelstr + 1, "Printer", sizeof(modelstr) - 1);
-
+
optionsstr[0] = '\0';
if (serial != NULL && CFStringGetCString(serial, serialstr, sizeof(serialstr), kCFStringEncodingUTF8))
snprintf(optionsstr, sizeof(optionsstr), "?serial=%s", serialstr);
else if (deviceLocation != 0)
snprintf(optionsstr, sizeof(optionsstr), "?location=%x", (unsigned)deviceLocation);
-
+
httpAssembleURI(HTTP_URI_CODING_ALL, uristr, sizeof(uristr), "usb", NULL, makestr, 0, modelstr);
strlcat(uristr, optionsstr, sizeof(uristr));
-
+
cupsBackendReport("direct", uristr, make_modelstr, make_modelstr, idstr,
NULL);
- }
+ if (make != NULL) CFRelease(make);
+ if (model != NULL) CFRelease(model);
+ if (serial != NULL) CFRelease(serial);
+ }
+
return obj != IO_OBJECT_NULL;
}
@@ -1271,13 +1277,13 @@ static Boolean list_device_cb(void *refcon, io_service_t obj, CFStringRef device
static Boolean find_device_cb(void *refcon, io_service_t obj, CFStringRef deviceIDString, UInt32 deviceLocation, UInt8 interfaceNum, UInt8 alternateSetting)
{
Boolean keepLooking = true;
-
+
if (obj != IO_OBJECT_NULL)
{
CFStringRef make = deviceIDCopyManufacturer(deviceIDString);
CFStringRef model = deviceIDCopyModel(deviceIDString);
CFStringRef serial = deviceIDCopySerialNumber(deviceIDString);
-
+
if (make && CFStringCompare(make, g.make, kCFCompareCaseInsensitive) == kCFCompareEqualTo)
{
if (model && CFStringCompare(model, g.model, kCFCompareCaseInsensitive) == kCFCompareEqualTo)
@@ -1288,6 +1294,7 @@ static Boolean find_device_cb(void *refcon, io_service_t obj, CFStringRef device
{
IOObjectRetain(obj);
g.printer_obj = obj;
+ g.location = deviceLocation;
g.alternateSetting = alternateSetting;
keepLooking = false;
}
@@ -1296,20 +1303,20 @@ static Boolean find_device_cb(void *refcon, io_service_t obj, CFStringRef device
{
if (g.printer_obj != 0)
IOObjectRelease(g.printer_obj);
-
+
g.alternateSetting = alternateSetting;
g.printer_obj = obj;
IOObjectRetain(obj);
-
+
if (g.location == 0 || g.location == deviceLocation)
keepLooking = false;
}
-
+
if ( !keepLooking )
g.interfaceNum = interfaceNum;
}
}
-
+
if (make) CFRelease(make);
if (model) CFRelease(model);
if (serial) CFRelease(serial);
@@ -1328,7 +1335,7 @@ static Boolean find_device_cb(void *refcon, io_service_t obj, CFStringRef device
}
}
}
-
+
if (!keepLooking && g.status_timer != NULL)
{
fputs("STATE: -offline-report\n", stderr);
@@ -1337,14 +1344,14 @@ static Boolean find_device_cb(void *refcon, io_service_t obj, CFStringRef device
CFRelease(g.status_timer);
g.status_timer = NULL;
}
-
+
return keepLooking;
}
static CFStringRef deviceIDCopySerialNumber(CFStringRef deviceID)
{
CFStringRef serialKeys[] = { CFSTR("SN:"), CFSTR("SERN:"), NULL };
-
+
return copy_value_for_key(deviceID, serialKeys);
}
@@ -1554,7 +1561,7 @@ static IOUSBDeviceInterface **usb_device_interface_for_device(io_service_t usbDe
}
-static CFStringRef printer_interface_deviceid(IOUSBInterfaceInterface220 **printer, UInt8 alternateSetting)
+static CFStringRef copy_printer_interface_deviceid(IOUSBInterfaceInterface220 **printer, UInt8 alternateSetting)
{
// I have tried to make this function as neat as I can, but the possibility of needing to resend
// a request to get the entire string makes it hideous...
@@ -1568,8 +1575,8 @@ static CFStringRef printer_interface_deviceid(IOUSBInterfaceInterface220 **print
#define kDefaultNoDataTimeout 5000L
#define pack_device_id_wIndex(intf, alt) ((UInt16)((((UInt16)(intf)) << 8) | ((UInt8)(alt))))
- if (printer == nil)
- return nil;
+ if (printer == NULL)
+ return NULL;
IOReturn err = kIOReturnError;
@@ -1591,15 +1598,15 @@ static CFStringRef printer_interface_deviceid(IOUSBInterfaceInterface220 **print
request.pData = NULL;
}
- IOReturn err = kIOReturnError;
+ IOReturn berr = kIOReturnError;
char *buffer = malloc(size);
if (buffer == NULL)
return kIOReturnNoMemory;
request.wLength = HostToUSBWord(size);
request.pData = buffer;
- err = (*printer)->ControlRequestTO(printer, (UInt8)0, &request);
- return err;
+ berr = (*printer)->ControlRequestTO(printer, (UInt8)0, &request);
+ return berr;
};
/* This request takes the 0 based configuration index. IOKit returns a 1 based configuration index */
@@ -1639,7 +1646,7 @@ static CFStringRef printer_interface_deviceid(IOUSBInterfaceInterface220 **print
}
CFStringRef manufacturer = deviceIDCopyManufacturer(ret);
- CFStringRef model = deviceIDCopyManufacturer(ret);
+ CFStringRef model = deviceIDCopyModel(ret);
CFStringRef serial = deviceIDCopySerialNumber(ret);
if (manufacturer == NULL || serial == NULL || model == NULL)
@@ -1664,22 +1671,22 @@ static CFStringRef printer_interface_deviceid(IOUSBInterfaceInterface220 **print
CFMutableStringRef extras = CFStringCreateMutable(NULL, 0);
if (manufacturer == NULL)
{
- manufacturer = printer_interface_indexed_description(printer, desc.iManufacturer, kUSBLanguageEnglish);
- if (CFStringGetLength(manufacturer) > 0)
+ manufacturer = copy_printer_interface_indexed_description(printer, desc.iManufacturer, kUSBLanguageEnglish);
+ if (manufacturer && CFStringGetLength(manufacturer) > 0)
CFStringAppendFormat(extras, NULL, CFSTR("MFG:%@;"), manufacturer);
}
if (model == NULL)
{
- model = printer_interface_indexed_description(printer, desc.iProduct, kUSBLanguageEnglish);
- if (CFStringGetLength(model) > 0)
- CFStringAppendFormat(extras, NULL, CFSTR("MDL:%@;"), manufacturer);
+ model = copy_printer_interface_indexed_description(printer, desc.iProduct, kUSBLanguageEnglish);
+ if (model && CFStringGetLength(model) > 0)
+ CFStringAppendFormat(extras, NULL, CFSTR("MDL:%@;"), model);
}
if (serial == NULL && desc.iSerialNumber != 0)
{
- serial = printer_interface_indexed_description(printer, desc.iSerialNumber, kUSBLanguageEnglish);
- if (CFStringGetLength(serial) > 0)
+ serial = copy_printer_interface_indexed_description(printer, desc.iSerialNumber, kUSBLanguageEnglish);
+ if (serial && CFStringGetLength(serial) > 0)
CFStringAppendFormat(extras, NULL, CFSTR("SERN:%@;"), serial);
}
@@ -1697,14 +1704,8 @@ static CFStringRef printer_interface_deviceid(IOUSBInterfaceInterface220 **print
}
}
- if (manufacturer != NULL)
- CFRelease(manufacturer);
- if (model != NULL)
- CFRelease(model);
- if (serial != NULL)
- CFRelease(serial);
-
-
+ if (ret != NULL)
+ {
/* Remove special characters from the serial number */
CFRange range = (serial != NULL ? CFStringFind(serial, CFSTR("+"), 0) : CFRangeMake(0, 0));
if (range.length == 1)
@@ -1717,11 +1718,27 @@ static CFStringRef printer_interface_deviceid(IOUSBInterfaceInterface220 **print
ret = deviceIDString;
CFStringFindAndReplace(deviceIDString, CFSTR("+"), CFSTR(""), range, 0);
}
+ }
+
+ if (manufacturer != NULL)
+ CFRelease(manufacturer);
+
+ if (model != NULL)
+ CFRelease(model);
+
+ if (serial != NULL)
+ CFRelease(serial);
- return (CFStringGetLength(ret) > 0 ? ret : nil);
+ if (ret != NULL && CFStringGetLength(ret) == 0)
+ {
+ CFRelease(ret);
+ return NULL;
+ }
+
+ return ret;
}
-static CFStringRef printer_interface_indexed_description(IOUSBInterfaceInterface220 ** printer, UInt8 index, UInt16 language)
+static CFStringRef copy_printer_interface_indexed_description(IOUSBInterfaceInterface220 ** printer, UInt8 index, UInt16 language)
{
IOReturn err;
UInt8 description[256]; // Max possible descriptor length
@@ -1759,7 +1776,7 @@ static CFStringRef printer_interface_indexed_description(IOUSBInterfaceInterface
err = (*printer)->ControlRequestTO(printer, 0, &request);
if (err != kIOReturnSuccess && err != kIOReturnUnderrun)
- return nil;
+ return NULL;
}
unsigned int length = description[0];
@@ -1775,17 +1792,17 @@ static CFStringRef printer_interface_indexed_description(IOUSBInterfaceInterface
request.wIndex = language;
bzero(description, length);
- request.wLength = length;
+ request.wLength = (UInt16)length;
request.pData = &description;
request.completionTimeout = 0;
request.noDataTimeout = 60L;
err = (*printer)->ControlRequestTO(printer, 0, &request);
if (err != kIOReturnSuccess)
- return nil;
+ return NULL;
if (description[1] != kUSBStringDesc)
- return nil;
+ return NULL;
if ((description[0] & 1) != 0)
description[0] &= 0xfe;
@@ -1799,7 +1816,7 @@ static CFStringRef printer_interface_indexed_description(IOUSBInterfaceInterface
if (length > maxLength - 1)
length = maxLength -1;
- for (int i = 0; i < length; i++)
+ for (unsigned i = 0; i < length; i++)
buffer[i] = (char) description[2*i+2];
buffer[length] = 0;
@@ -2446,7 +2463,7 @@ static void get_device_id(cups_sc_status_t *status,
IOUSBInterfaceInterface220 **intf220 = usb_interface220_for_service(g.printer_obj);
if (intf220)
{
- deviceIDString = printer_interface_deviceid(intf220, g.alternateSetting);
+ deviceIDString = copy_printer_interface_deviceid(intf220, g.alternateSetting);
(*intf220)->Release(intf220);
}
}
@@ -2458,7 +2475,7 @@ static void get_device_id(cups_sc_status_t *status,
*datalen = (int)strlen(data);
else
*datalen = 0;
-
+
CFRelease(deviceIDString);
}
else
@@ -2497,5 +2514,5 @@ log_usb_class_driver(int is_64bit) /* I - Is the USB class driver 64-bit? */
/*
- * End of "$Id: usb-darwin.c 12529 2015-02-23 18:57:57Z msweet $".
+ * End of "$Id: usb-darwin.c 12672 2015-05-28 00:10:27Z msweet $".
*/
diff --git a/backend/usb-libusb.c b/backend/usb-libusb.c
index bab2bc588..4d13a2a93 100644
--- a/backend/usb-libusb.c
+++ b/backend/usb-libusb.c
@@ -1,5 +1,5 @@
/*
- * "$Id: usb-libusb.c 12349 2014-12-09 22:10:52Z msweet $"
+ * "$Id: usb-libusb.c 12348 2014-12-09 22:10:45Z msweet $"
*
* LIBUSB interface code for CUPS.
*
@@ -2004,6 +2004,6 @@ soft_reset_printer(
/*
- * End of "$Id: usb-libusb.c 12349 2014-12-09 22:10:52Z msweet $".
+ * End of "$Id: usb-libusb.c 12348 2014-12-09 22:10:45Z msweet $".
*/
diff --git a/cgi-bin/Makefile b/cgi-bin/Makefile
index 342a8a53d..898fb7bf5 100644
--- a/cgi-bin/Makefile
+++ b/cgi-bin/Makefile
@@ -1,5 +1,5 @@
#
-# "$Id: Makefile 11777 2014-03-28 19:18:10Z msweet $"
+# "$Id: Makefile 12519 2015-02-17 13:10:19Z msweet $"
#
# CGI makefile for CUPS.
#
@@ -353,5 +353,5 @@ include Dependencies
#
-# End of "$Id: Makefile 11777 2014-03-28 19:18:10Z msweet $".
+# End of "$Id: Makefile 12519 2015-02-17 13:10:19Z msweet $".
#
diff --git a/cgi-bin/admin.c b/cgi-bin/admin.c
index 9de2424c3..29ae5c8da 100644
--- a/cgi-bin/admin.c
+++ b/cgi-bin/admin.c
@@ -1,9 +1,9 @@
/*
- * "$Id: admin.c 12123 2014-08-28 14:24:45Z msweet $"
+ * "$Id: admin.c 12516 2015-02-12 20:18:11Z msweet $"
*
* Administration CGI for CUPS.
*
- * Copyright 2007-2014 by Apple Inc.
+ * Copyright 2007-2015 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -18,6 +18,8 @@
*/
#include "cgi-private.h"
+#include <cups/http-private.h>
+#include <cups/ppd-private.h>
#include <cups/adminutil.h>
#include <cups/ppd.h>
#include <errno.h>
@@ -38,12 +40,7 @@ static int current_device = 0; /* Current device shown */
* Local functions...
*/
-static void choose_device_cb(const char *device_class,
- const char *device_id, const char *device_info,
- const char *device_make_and_model,
- const char *device_uri,
- const char *device_location,
- const char *title);
+static void choose_device_cb(const char *device_class, const char *device_id, const char *device_info, const char *device_make_and_model, const char *device_uri, const char *device_location, const char *title);
static void do_add_rss_subscription(http_t *http);
static void do_am_class(http_t *http, int modify);
static void do_am_printer(http_t *http, int modify);
@@ -61,6 +58,7 @@ static void do_set_sharing(http_t *http);
static char *get_option_value(ppd_file_t *ppd, const char *name,
char *buffer, size_t bufsize);
static double get_points(double number, const char *uval);
+static char *get_printer_ppd(const char *uri, char *buffer, size_t bufsize);
/*
@@ -832,7 +830,8 @@ do_am_printer(http_t *http, /* I - HTTP connection */
const cgi_file_t *file; /* Uploaded file, if any */
const char *var; /* CGI variable */
char uri[HTTP_MAX_URI], /* Device or printer URI */
- *uriptr; /* Pointer into URI */
+ *uriptr, /* Pointer into URI */
+ evefile[1024] = ""; /* IPP Everywhere PPD file */
int maxrate; /* Maximum baud rate */
char baudrate[255]; /* Baud rate string */
const char *name, /* Pointer to class name */
@@ -1331,7 +1330,9 @@ do_am_printer(http_t *http, /* I - HTTP connection */
if (!file)
{
var = cgiGetVariable("PPD_NAME");
- if (strcmp(var, "__no_change__"))
+ if (!strcmp(var, "everywhere"))
+ get_printer_ppd(cgiGetVariable("DEVICE_URI"), evefile, sizeof(evefile));
+ else if (strcmp(var, "__no_change__"))
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "ppd-name",
NULL, var);
}
@@ -1384,6 +1385,11 @@ do_am_printer(http_t *http, /* I - HTTP connection */
if (file)
ippDelete(cupsDoFileRequest(http, request, "/admin/", file->tempfile));
+ else if (evefile[0])
+ {
+ ippDelete(cupsDoFileRequest(http, request, "/admin/", evefile));
+ unlink(evefile);
+ }
else
ippDelete(cupsDoRequest(http, request, "/admin/"));
@@ -4198,5 +4204,78 @@ get_points(double number, /* I - Original number */
/*
- * End of "$Id: admin.c 12123 2014-08-28 14:24:45Z msweet $".
+ * 'get_printer_ppd()' - Get an IPP Everywhere PPD file for the given URI.
+ */
+
+static char * /* O - Filename or NULL */
+get_printer_ppd(const char *uri, /* I - Printer URI */
+ char *buffer, /* I - Filename buffer */
+ size_t bufsize) /* I - Size of filename buffer */
+{
+ http_t *http; /* Connection to printer */
+ ipp_t *request, /* Get-Printer-Attributes request */
+ *response; /* Get-Printer-Attributes response */
+ char resolved[1024], /* Resolved URI */
+ scheme[32], /* URI scheme */
+ userpass[256], /* Username:password */
+ host[256], /* Hostname */
+ resource[256]; /* Resource path */
+ int port; /* Port number */
+
+
+ /*
+ * Connect to the printer...
+ */
+
+ if (strstr(uri, "._tcp"))
+ {
+ /*
+ * Resolve URI...
+ */
+
+ if (!_httpResolveURI(uri, resolved, sizeof(resolved), _HTTP_RESOLVE_DEFAULT, NULL, NULL))
+ {
+ fprintf(stderr, "ERROR: Unable to resolve \"%s\".\n", uri);
+ return (NULL);
+ }
+
+ uri = resolved;
+ }
+
+ if (httpSeparateURI(HTTP_URI_CODING_ALL, uri, scheme, sizeof(scheme), userpass, sizeof(userpass), host, sizeof(host), &port, resource, sizeof(resource)) < HTTP_URI_STATUS_OK)
+ {
+ fprintf(stderr, "ERROR: Bad printer URI \"%s\".\n", uri);
+ return (NULL);
+ }
+
+ http = httpConnect2(host, port, NULL, AF_UNSPEC, !strcmp(scheme, "ipps") ? HTTP_ENCRYPTION_ALWAYS : HTTP_ENCRYPTION_IF_REQUESTED, 1, 30000, NULL);
+ if (!http)
+ {
+ fprintf(stderr, "ERROR: Unable to connect to \"%s:%d\": %s\n", host, port, cupsLastErrorString());
+ return (NULL);
+ }
+
+ /*
+ * Send a Get-Printer-Attributes request...
+ */
+
+ request = ippNewRequest(IPP_OP_GET_PRINTER_ATTRIBUTES);
+ ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri", NULL, uri);
+ response = cupsDoRequest(http, request, resource);
+
+ if (!_ppdCreateFromIPP(buffer, bufsize, response))
+ fprintf(stderr, "ERROR: Unable to create PPD file: %s\n", strerror(errno));
+
+ ippDelete(response);
+ httpClose(http);
+
+ if (buffer[0])
+ return (buffer);
+ else
+ return (NULL);
+}
+
+
+/*
+ * End of "$Id: admin.c 12516 2015-02-12 20:18:11Z msweet $".
*/
diff --git a/cgi-bin/help-index.c b/cgi-bin/help-index.c
index cda5e966c..d467cb6b0 100644
--- a/cgi-bin/help-index.c
+++ b/cgi-bin/help-index.c
@@ -1,9 +1,9 @@
/*
- * "$Id: help-index.c 12344 2014-12-09 21:36:11Z msweet $"
+ * "$Id: help-index.c 12644 2015-05-19 21:22:35Z msweet $"
*
* Online help index routines for CUPS.
*
- * Copyright 2007-2014 by Apple Inc.
+ * Copyright 2007-2015 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -1220,7 +1220,7 @@ help_new_node(const char *filename, /* I - Filename */
n->filename = strdup(filename);
n->anchor = anchor ? strdup(anchor) : NULL;
- n->section = (section && *section) ? strdup(section) : NULL;
+ n->section = *section ? strdup(section) : NULL;
n->text = strdup(text);
n->mtime = mtime;
n->offset = offset;
@@ -1306,5 +1306,5 @@ help_sort_words(help_word_t *w1, /* I - Second word */
/*
- * End of "$Id: help-index.c 12344 2014-12-09 21:36:11Z msweet $".
+ * End of "$Id: help-index.c 12644 2015-05-19 21:22:35Z msweet $".
*/
diff --git a/cgi-bin/ipp-var.c b/cgi-bin/ipp-var.c
index 98300537c..f99ee41d8 100644
--- a/cgi-bin/ipp-var.c
+++ b/cgi-bin/ipp-var.c
@@ -1,5 +1,5 @@
/*
- * "$Id: ipp-var.c 12769 2015-06-30 16:13:48Z msweet $"
+ * "$Id: ipp-var.c 12700 2015-06-08 18:32:35Z msweet $"
*
* CGI <-> IPP variable routines for CUPS.
*
@@ -222,9 +222,6 @@ cgiGetIPPObjects(ipp_t *response, /* I - IPP response */
break;
case IPP_TAG_INTEGER :
- if (!strncmp(ippGetName(attr), "time-at-", 8))
- break; /* Ignore time-at-xxx */
-
for (i = 0; !add && i < attr->num_values; i ++)
{
char buf[255]; /* Number buffer */
@@ -1550,5 +1547,5 @@ cgiText(const char *message) /* I - Message */
/*
- * End of "$Id: ipp-var.c 12769 2015-06-30 16:13:48Z msweet $".
+ * End of "$Id: ipp-var.c 12700 2015-06-08 18:32:35Z msweet $".
*/
diff --git a/cgi-bin/template.c b/cgi-bin/template.c
index fefc489ff..426e635e6 100644
--- a/cgi-bin/template.c
+++ b/cgi-bin/template.c
@@ -1,5 +1,5 @@
/*
- * "$Id: template.c 12701 2015-06-08 18:33:44Z msweet $"
+ * "$Id: template.c 12700 2015-06-08 18:32:35Z msweet $"
*
* CGI template function.
*
@@ -686,5 +686,5 @@ cgi_puturi(const char *s, /* I - String to output */
/*
- * End of "$Id: template.c 12701 2015-06-08 18:33:44Z msweet $".
+ * End of "$Id: template.c 12700 2015-06-08 18:32:35Z msweet $".
*/
diff --git a/cgi-bin/var.c b/cgi-bin/var.c
index dc06cbc4c..017de1eeb 100644
--- a/cgi-bin/var.c
+++ b/cgi-bin/var.c
@@ -1,9 +1,9 @@
/*
- * "$Id: var.c 12034 2014-07-16 19:37:34Z msweet $"
+ * "$Id: var.c 12621 2015-05-06 21:32:18Z msweet $"
*
* CGI form variable and array functions for CUPS.
*
- * Copyright 2007-2014 by Apple Inc.
+ * Copyright 2007-2015 by Apple Inc.
* Copyright 1997-2005 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -626,6 +626,8 @@ cgi_initialize_cookies(void)
while (*cookie)
{
+ int skip = 0; /* Skip this cookie? */
+
/*
* Skip leading whitespace...
*/
@@ -641,9 +643,14 @@ cgi_initialize_cookies(void)
for (ptr = name; *cookie && *cookie != '=';)
if (ptr < (name + sizeof(name) - 1))
+ {
*ptr++ = *cookie++;
+ }
else
- break;
+ {
+ skip = 1;
+ cookie ++;
+ }
if (*cookie != '=')
break;
@@ -659,26 +666,38 @@ cgi_initialize_cookies(void)
{
for (cookie ++, ptr = value; *cookie && *cookie != '\"';)
if (ptr < (value + sizeof(value) - 1))
+ {
*ptr++ = *cookie++;
+ }
else
- break;
+ {
+ skip = 1;
+ cookie ++;
+ }
if (*cookie == '\"')
cookie ++;
+ else
+ skip = 1;
}
else
{
for (ptr = value; *cookie && *cookie != ';';)
if (ptr < (value + sizeof(value) - 1))
+ {
*ptr++ = *cookie++;
+ }
else
- break;
+ {
+ skip = 1;
+ cookie ++;
+ }
}
if (*cookie == ';')
cookie ++;
else if (*cookie)
- break;
+ skip = 1;
*ptr = '\0';
@@ -687,7 +706,7 @@ cgi_initialize_cookies(void)
* "$"...
*/
- if (name[0] != '$')
+ if (name[0] != '$' && !skip)
num_cookies = cupsAddOption(name, value, num_cookies, &cookies);
}
}
@@ -1278,5 +1297,5 @@ cgi_unlink_file(void)
/*
- * End of "$Id: var.c 12034 2014-07-16 19:37:34Z msweet $".
+ * End of "$Id: var.c 12621 2015-05-06 21:32:18Z msweet $".
*/
diff --git a/conf/Makefile b/conf/Makefile
index f4d63f8d4..933d7d909 100644
--- a/conf/Makefile
+++ b/conf/Makefile
@@ -1,9 +1,9 @@
#
-# "$Id: Makefile 10996 2013-05-29 11:51:34Z msweet $"
+# "$Id: Makefile 12533 2015-02-27 12:30:26Z msweet $"
#
# Configuration file makefile for CUPS.
#
-# Copyright 2007-2012 by Apple Inc.
+# Copyright 2007-2015 by Apple Inc.
# Copyright 1993-2006 by Easy Software Products.
#
# These coded instructions, statements, and computer programs are the
@@ -76,8 +76,8 @@ install-data:
else \
$(INSTALL_CONFIG) -g $(CUPS_GROUP) $$file $(SERVERROOT) ; \
fi ; \
+ $(INSTALL_CONFIG) -g $(CUPS_GROUP) $$file $(SERVERROOT)/$$file.default; \
done
- $(INSTALL_CONFIG) -g $(CUPS_GROUP) cupsd.conf $(SERVERROOT)/cupsd.conf.default
$(INSTALL_DIR) -m 755 $(DATADIR)/mime
for file in $(REPLACE); do \
if test -r $(DATADIR)/mime/$$file ; then \
@@ -139,5 +139,5 @@ uninstall:
#
-# End of "$Id: Makefile 10996 2013-05-29 11:51:34Z msweet $".
+# End of "$Id: Makefile 12533 2015-02-27 12:30:26Z msweet $".
#
diff --git a/config-scripts/cups-common.m4 b/config-scripts/cups-common.m4
index 929267da6..f1a9263c2 100644
--- a/config-scripts/cups-common.m4
+++ b/config-scripts/cups-common.m4
@@ -1,5 +1,5 @@
dnl
-dnl "$Id: cups-common.m4 12336 2014-12-09 21:19:52Z msweet $"
+dnl "$Id: cups-common.m4 12697 2015-06-08 17:42:16Z 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=2.0.4
+CUPS_VERSION=2.1b1
CUPS_REVISION=
#if test -z "$CUPS_REVISION" -a -d .svn; then
# CUPS_REVISION="-r`svnversion . | awk -F: '{print $NF}' | sed -e '1,$s/[[a-zA-Z]]*//g'`"
@@ -137,6 +137,7 @@ AC_CHECK_HEADER(bstring.h,AC_DEFINE(HAVE_BSTRING_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(asl.h,AC_DEFINE(HAVE_ASL_H))
dnl Checks for iconv.h and iconv_open
AC_CHECK_HEADER(iconv.h,
@@ -465,5 +466,5 @@ esac
AC_SUBST(BUILDDIRS)
dnl
-dnl End of "$Id: cups-common.m4 12336 2014-12-09 21:19:52Z msweet $".
+dnl End of "$Id: cups-common.m4 12697 2015-06-08 17:42:16Z msweet $".
dnl
diff --git a/config-scripts/cups-compiler.m4 b/config-scripts/cups-compiler.m4
index aa18e9525..ca3bae8e0 100644
--- a/config-scripts/cups-compiler.m4
+++ b/config-scripts/cups-compiler.m4
@@ -1,5 +1,5 @@
dnl
-dnl "$Id: cups-compiler.m4 12743 2015-06-23 14:49:09Z msweet $"
+dnl "$Id: cups-compiler.m4 12122 2014-08-28 12:55:52Z msweet $"
dnl
dnl Compiler stuff for CUPS.
dnl
@@ -156,15 +156,6 @@ 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 -Wno-unused-result)
- OLDCFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS -Werror -Wno-unused-result"
- AC_TRY_COMPILE(,,
- [OPTIM="$OPTIM -Wno-unused-result"
- AC_MSG_RESULT(yes)],
- AC_MSG_RESULT(no))
- CFLAGS="$OLDCFLAGS"
-
AC_MSG_CHECKING(whether compiler supports -Wsign-conversion)
OLDCFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -Werror -Wsign-conversion"
@@ -246,5 +237,5 @@ case $uname in
esac
dnl
-dnl End of "$Id: cups-compiler.m4 12743 2015-06-23 14:49:09Z msweet $".
+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 cf268ded2..3db1e9121 100644
--- a/config-scripts/cups-defaults.m4
+++ b/config-scripts/cups-defaults.m4
@@ -1,9 +1,9 @@
dnl
-dnl "$Id: cups-defaults.m4 11789 2014-04-02 16:52:53Z msweet $"
+dnl "$Id: cups-defaults.m4 12350 2014-12-09 22:18:21Z msweet $"
dnl
dnl Default cupsd configuration settings for CUPS.
dnl
-dnl Copyright 2007-2012 by Apple Inc.
+dnl Copyright 2007-2014 by Apple Inc.
dnl Copyright 2006-2007 by Easy Software Products, all rights reserved.
dnl
dnl These coded instructions, statements, and computer programs are the
@@ -409,5 +409,5 @@ AC_SUBST(CUPS_WEBIF)
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_WEBIF, $CUPS_DEFAULT_WEBIF)
dnl
-dnl End of "$Id: cups-defaults.m4 11789 2014-04-02 16:52:53Z msweet $".
+dnl End of "$Id: cups-defaults.m4 12350 2014-12-09 22:18:21Z msweet $".
dnl
diff --git a/config-scripts/cups-network.m4 b/config-scripts/cups-network.m4
index a2df1d53b..e5b3405cc 100644
--- a/config-scripts/cups-network.m4
+++ b/config-scripts/cups-network.m4
@@ -1,5 +1,5 @@
dnl
-dnl "$Id: cups-network.m4 12325 2014-12-09 20:28:51Z msweet $"
+dnl "$Id: cups-network.m4 12324 2014-12-09 20:28:39Z msweet $"
dnl
dnl Networking stuff for CUPS.
dnl
@@ -72,5 +72,5 @@ AC_SUBST(CUPS_DEFAULT_DOMAINSOCKET)
AC_SUBST(CUPS_LISTEN_DOMAINSOCKET)
dnl
-dnl End of "$Id: cups-network.m4 12325 2014-12-09 20:28:51Z msweet $".
+dnl End of "$Id: cups-network.m4 12324 2014-12-09 20:28:39Z msweet $".
dnl
diff --git a/config-scripts/cups-ssl.m4 b/config-scripts/cups-ssl.m4
index fdd3c56e9..df0bd45e8 100644
--- a/config-scripts/cups-ssl.m4
+++ b/config-scripts/cups-ssl.m4
@@ -1,9 +1,9 @@
dnl
-dnl "$Id: cups-ssl.m4 12290 2014-12-05 17:25:55Z msweet $"
+dnl "$Id: cups-ssl.m4 12645 2015-05-20 01:20:52Z msweet $"
dnl
dnl TLS stuff for CUPS.
dnl
-dnl Copyright 2007-2014 by Apple Inc.
+dnl Copyright 2007-2015 by Apple Inc.
dnl Copyright 1997-2007 by Easy Software Products, all rights reserved.
dnl
dnl These coded instructions, statements, and computer programs are the
@@ -53,6 +53,10 @@ if test x$enable_ssl != xno; then
AC_DEFINE(HAVE_CSSMERRORSTRING)
AC_DEFINE(HAVE_SECKEYCHAINOPEN)])
+
+ if test $uversion -ge 150; then
+ AC_DEFINE(HAVE_SSLSETENABLEDCIPHERS)
+ fi
fi
fi
@@ -104,5 +108,5 @@ EXPORT_SSLLIBS="$SSLLIBS"
AC_SUBST(EXPORT_SSLLIBS)
dnl
-dnl End of "$Id: cups-ssl.m4 12290 2014-12-05 17:25:55Z msweet $".
+dnl End of "$Id: cups-ssl.m4 12645 2015-05-20 01:20:52Z msweet $".
dnl
diff --git a/config-scripts/cups-startup.m4 b/config-scripts/cups-startup.m4
index 0053aa790..e82ad5193 100644
--- a/config-scripts/cups-startup.m4
+++ b/config-scripts/cups-startup.m4
@@ -1,5 +1,5 @@
dnl
-dnl "$Id: cups-startup.m4 12351 2014-12-09 22:18:45Z msweet $"
+dnl "$Id: cups-startup.m4 12691 2015-06-04 18:00:31Z msweet $"
dnl
dnl Launch-on-demand/startup stuff for CUPS.
dnl
@@ -68,6 +68,15 @@ if test x$enable_systemd != xno; then
else
AC_MSG_RESULT(no)
fi
+ AC_MSG_CHECKING(for libsystemd-journal)
+ if $PKGCONFIG --exists libsystemd-journal; then
+ AC_MSG_RESULT(yes)
+ ONDEMANDFLAGS="$ONDEMANDFLAGS `$PKGCONFIG --cflags libsystemd-journal`"
+ ONDEMANDLIBS="$ONDEMANDLIBS `$PKGCONFIG --libs libsystemd-journal`"
+ AC_CHECK_HEADER(systemd/sd-journal.h,AC_DEFINE(HAVE_SYSTEMD_SD_JOURNAL_H))
+ else
+ AC_MSG_RESULT(no)
+ fi
fi
fi
@@ -172,5 +181,5 @@ fi
dnl
-dnl End of "$Id: cups-startup.m4 12351 2014-12-09 22:18:45Z msweet $".
+dnl End of "$Id: cups-startup.m4 12691 2015-06-04 18:00:31Z msweet $".
dnl
diff --git a/config.h.in b/config.h.in
index 802e25925..15607eeca 100644
--- a/config.h.in
+++ b/config.h.in
@@ -1,9 +1,9 @@
/*
- * "$Id: config.h.in 12329 2014-12-09 20:50:51Z msweet $"
+ * "$Id: config.h.in 12687 2015-06-03 17:19:04Z msweet $"
*
* Configuration file for CUPS.
*
- * Copyright 2007-2014 by Apple Inc.
+ * Copyright 2007-2015 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -243,6 +243,20 @@
/*
+ * Do we have the ASL functions?
+ */
+
+#undef HAVE_ASL_H
+
+
+/*
+ * Do we have the systemd journal functions?
+ */
+
+#undef HAVE_SYSTEMD_SD_JOURNAL_H
+
+
+/*
* Do we have the (v)snprintf() functions?
*/
@@ -349,6 +363,13 @@
/*
+ * Do we have (a working) SSLSetEnabledCiphers function?
+ */
+
+#undef HAVE_SSLSETENABLEDCIPHERS
+
+
+/*
* Do we have libpaper?
*/
@@ -719,5 +740,5 @@ static __inline int _cups_abs(int i) { return (i < 0 ? -i : i); }
#endif /* !_CUPS_CONFIG_H_ */
/*
- * End of "$Id: config.h.in 12329 2014-12-09 20:50:51Z msweet $".
+ * End of "$Id: config.h.in 12687 2015-06-03 17:19:04Z msweet $".
*/
diff --git a/configure b/configure
index 6836c7db1..7d86119fe 100755
--- a/configure
+++ b/configure
@@ -1,9 +1,11 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69.
+# Generated by GNU Autoconf 2.68.
#
#
-# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
+# Foundation, Inc.
#
#
# This configure script is free software; the Free Software Foundation
@@ -132,31 +134,6 @@ export LANGUAGE
# CDPATH.
(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-# Use a proper internal environment variable to ensure we don't fall
- # into an infinite loop, continuously re-executing ourselves.
- if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
- _as_can_reexec=no; export _as_can_reexec;
- # We cannot yet assume a decent shell, so we have to provide a
-# neutralization value for shells without unset; and this also
-# works around shells that cannot unset nonexistent variables.
-# Preserve -v and -x to the replacement shell.
-BASH_ENV=/dev/null
-ENV=/dev/null
-(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
-case $- in # ((((
- *v*x* | *x*v* ) as_opts=-vx ;;
- *v* ) as_opts=-v ;;
- *x* ) as_opts=-x ;;
- * ) as_opts= ;;
-esac
-exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
-# Admittedly, this is quite paranoid, since all the known shells bail
-# out after a failed `exec'.
-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
-as_fn_exit 255
- fi
- # We don't want this to propagate to other subprocesses.
- { _as_can_reexec=; unset _as_can_reexec;}
if test "x$CONFIG_SHELL" = x; then
as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
emulate sh
@@ -190,8 +167,7 @@ if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
else
exitcode=1; echo positional parameters were not saved.
fi
-test x\$exitcode = x0 || exit 1
-test -x / || exit 1"
+test x\$exitcode = x0 || exit 1"
as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
@@ -236,25 +212,21 @@ IFS=$as_save_IFS
if test "x$CONFIG_SHELL" != x; then :
- export CONFIG_SHELL
- # We cannot yet assume a decent shell, so we have to provide a
-# neutralization value for shells without unset; and this also
-# works around shells that cannot unset nonexistent variables.
-# Preserve -v and -x to the replacement shell.
-BASH_ENV=/dev/null
-ENV=/dev/null
-(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
-case $- in # ((((
- *v*x* | *x*v* ) as_opts=-vx ;;
- *v* ) as_opts=-v ;;
- *x* ) as_opts=-x ;;
- * ) as_opts= ;;
-esac
-exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
-# Admittedly, this is quite paranoid, since all the known shells bail
-# out after a failed `exec'.
-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
-exit 255
+ # We cannot yet assume a decent shell, so we have to provide a
+ # neutralization value for shells without unset; and this also
+ # works around shells that cannot unset nonexistent variables.
+ # Preserve -v and -x to the replacement shell.
+ BASH_ENV=/dev/null
+ ENV=/dev/null
+ (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+ export CONFIG_SHELL
+ case $- in # ((((
+ *v*x* | *x*v* ) as_opts=-vx ;;
+ *v* ) as_opts=-v ;;
+ *x* ) as_opts=-x ;;
+ * ) as_opts= ;;
+ esac
+ exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"}
fi
if test x$as_have_required = xno; then :
@@ -356,14 +328,6 @@ $as_echo X"$as_dir" |
} # as_fn_mkdir_p
-
-# as_fn_executable_p FILE
-# -----------------------
-# Test if FILE is an executable regular file.
-as_fn_executable_p ()
-{
- test -f "$1" && test -x "$1"
-} # as_fn_executable_p
# as_fn_append VAR VALUE
# ----------------------
# Append the text in VALUE to the end of the definition contained in VAR. Take
@@ -485,10 +449,6 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits
chmod +x "$as_me.lineno" ||
{ $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
- # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
- # already done that, so ensure we don't try to do so again and fall
- # in an infinite loop. This has already happened in practice.
- _as_can_reexec=no; export _as_can_reexec
# Don't try to exec as it changes $[0], causing all sort of problems
# (the dirname of $[0] is not the place where we might find the
# original and so on. Autoconf is especially sensitive to this).
@@ -523,16 +483,16 @@ if (echo >conf$$.file) 2>/dev/null; then
# ... but there are two gotchas:
# 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
# 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
- # In both cases, we have to default to `cp -pR'.
+ # In both cases, we have to default to `cp -p'.
ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
- as_ln_s='cp -pR'
+ as_ln_s='cp -p'
elif ln conf$$.file conf$$ 2>/dev/null; then
as_ln_s=ln
else
- as_ln_s='cp -pR'
+ as_ln_s='cp -p'
fi
else
- as_ln_s='cp -pR'
+ as_ln_s='cp -p'
fi
rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
rmdir conf$$.dir 2>/dev/null
@@ -544,8 +504,28 @@ else
as_mkdir_p=false
fi
-as_test_x='test -x'
-as_executable_p=as_fn_executable_p
+if test -x / >/dev/null 2>&1; then
+ as_test_x='test -x'
+else
+ if ls -dL / >/dev/null 2>&1; then
+ as_ls_L_option=L
+ else
+ as_ls_L_option=
+ fi
+ as_test_x='
+ eval sh -c '\''
+ if test -d "$1"; then
+ test -d "$1/.";
+ else
+ case $1 in #(
+ -*)set "./$1";;
+ esac;
+ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
+ ???[sx]*):;;*)false;;esac;fi
+ '\'' sh
+ '
+fi
+as_executable_p=$as_test_x
# Sed expression to map a string onto a valid CPP name.
as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
@@ -1378,6 +1358,8 @@ target=$target_alias
if test "x$host_alias" != x; then
if test "x$build_alias" = x; then
cross_compiling=maybe
+ $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host.
+ If a cross compiler is detected then cross compile mode will be used" >&2
elif test "x$build_alias" != "x$host_alias"; then
cross_compiling=yes
fi
@@ -1701,9 +1683,9 @@ test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
configure
-generated by GNU Autoconf 2.69
+generated by GNU Autoconf 2.68
-Copyright (C) 2012 Free Software Foundation, Inc.
+Copyright (C) 2010 Free Software Foundation, Inc.
This configure script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it.
_ACEOF
@@ -1854,7 +1836,7 @@ $as_echo "$ac_try_echo"; } >&5
test ! -s conftest.err
} && test -s conftest$ac_exeext && {
test "$cross_compiling" = yes ||
- test -x conftest$ac_exeext
+ $as_test_x conftest$ac_exeext
}; then :
ac_retval=0
else
@@ -2161,7 +2143,7 @@ This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by $as_me, which was
-generated by GNU Autoconf 2.69. Invocation command line was
+generated by GNU Autoconf 2.68. Invocation command line was
$ $0 $@
@@ -2537,7 +2519,7 @@ esac
ac_config_headers="$ac_config_headers config.h"
-CUPS_VERSION=2.0.4
+CUPS_VERSION=2.1b1
CUPS_REVISION=
#if test -z "$CUPS_REVISION" -a -d .svn; then
# CUPS_REVISION="-r`svnversion . | awk -F: '{print $NF}' | sed -e '1,$s/[[a-zA-Z]]*//g'`"
@@ -2586,7 +2568,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_AWK="$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -2634,7 +2616,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -2678,7 +2660,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_ac_ct_CC="$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3122,7 +3104,8 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <stdarg.h>
#include <stdio.h>
-struct stat;
+#include <sys/types.h>
+#include <sys/stat.h>
/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
struct buf { int x; };
FILE * (*rcsopen) (struct buf *, struct stat *, int);
@@ -3372,7 +3355,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3416,7 +3399,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_ac_ct_CXX="$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3618,7 +3601,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3658,7 +3641,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_ac_ct_RANLIB="ranlib"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3711,7 +3694,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_AR="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3751,7 +3734,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_CHMOD="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3791,7 +3774,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_GZIP="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3831,7 +3814,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_LD="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3871,7 +3854,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_LN="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3911,7 +3894,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_MV="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3951,7 +3934,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_RM="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3991,7 +3974,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_RMDIR="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -4031,7 +4014,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_SED="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -4071,7 +4054,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_XDGOPEN="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -4147,7 +4130,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_PKGCONFIG="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -4190,7 +4173,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ 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
@@ -4600,7 +4583,7 @@ do
for ac_prog in grep ggrep; do
for ac_exec_ext in '' $ac_executable_extensions; do
ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
- as_fn_executable_p "$ac_path_GREP" || continue
+ { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
# Check for GNU ac_path_GREP and select it if it is found.
# Check for GNU $ac_path_GREP
case `"$ac_path_GREP" --version 2>&1` in
@@ -4666,7 +4649,7 @@ do
for ac_prog in egrep; do
for ac_exec_ext in '' $ac_executable_extensions; do
ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
- as_fn_executable_p "$ac_path_EGREP" || continue
+ { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
# Check for GNU ac_path_EGREP and select it if it is found.
# Check for GNU $ac_path_EGREP
case `"$ac_path_EGREP" --version 2>&1` in
@@ -4927,6 +4910,13 @@ if test "x$ac_cv_header_sys_ucred_h" = xyes; then :
fi
+ac_fn_c_check_header_mongrel "$LINENO" "asl.h" "ac_cv_header_asl_h" "$ac_includes_default"
+if test "x$ac_cv_header_asl_h" = xyes; then :
+ $as_echo "#define HAVE_ASL_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 :
@@ -6786,32 +6776,6 @@ 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"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether compiler supports -Wno-unused-result" >&5
-$as_echo_n "checking whether compiler supports -Wno-unused-result... " >&6; }
- OLDCFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS -Werror -Wno-unused-result"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- OPTIM="$OPTIM -Wno-unused-result"
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- CFLAGS="$OLDCFLAGS"
-
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether compiler supports -Wsign-conversion" >&5
$as_echo_n "checking whether compiler supports -Wsign-conversion... " >&6; }
OLDCFLAGS="$CFLAGS"
@@ -7624,7 +7588,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_KRB5CONFIG="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -7667,7 +7631,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ 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
@@ -8193,6 +8157,11 @@ fi
fi
+
+ if test $uversion -ge 150; then
+ $as_echo "#define HAVE_SSLSETENABLEDCIPHERS 1" >>confdefs.h
+
+ fi
fi
fi
@@ -8216,7 +8185,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_LIBGNUTLSCONFIG="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -8259,7 +8228,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ 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
@@ -8314,7 +8283,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_LIBGCRYPTCONFIG="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -8357,7 +8326,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ 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
@@ -8918,8 +8887,6 @@ _ACEOF
esac
rm -rf conftest*
fi
-
-
fi
@@ -9183,6 +9150,24 @@ $as_echo "yes" >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libsystemd-journal" >&5
+$as_echo_n "checking for libsystemd-journal... " >&6; }
+ if $PKGCONFIG --exists libsystemd-journal; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ ONDEMANDFLAGS="$ONDEMANDFLAGS `$PKGCONFIG --cflags libsystemd-journal`"
+ ONDEMANDLIBS="$ONDEMANDLIBS `$PKGCONFIG --libs libsystemd-journal`"
+ ac_fn_c_check_header_mongrel "$LINENO" "systemd/sd-journal.h" "ac_cv_header_systemd_sd_journal_h" "$ac_includes_default"
+if test "x$ac_cv_header_systemd_sd_journal_h" = xyes; then :
+ $as_echo "#define HAVE_SYSTEMD_SD_JOURNAL_H 1" >>confdefs.h
+
+fi
+
+
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ fi
fi
fi
@@ -9917,7 +9902,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_JAVA="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -9980,7 +9965,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_PERL="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -10043,7 +10028,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_PHPCGI="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -10084,7 +10069,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_PHP="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -10152,7 +10137,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -10212,7 +10197,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/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.cups-lpdAT.service scheduler/org.cups.cupsd.path scheduler/org.cups.cupsd.service scheduler/org.cups.cupsd.socket 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 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.cups-lpdAT.service 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
@@ -10621,16 +10606,16 @@ if (echo >conf$$.file) 2>/dev/null; then
# ... but there are two gotchas:
# 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
# 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
- # In both cases, we have to default to `cp -pR'.
+ # In both cases, we have to default to `cp -p'.
ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
- as_ln_s='cp -pR'
+ as_ln_s='cp -p'
elif ln conf$$.file conf$$ 2>/dev/null; then
as_ln_s=ln
else
- as_ln_s='cp -pR'
+ as_ln_s='cp -p'
fi
else
- as_ln_s='cp -pR'
+ as_ln_s='cp -p'
fi
rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
rmdir conf$$.dir 2>/dev/null
@@ -10690,16 +10675,28 @@ else
as_mkdir_p=false
fi
-
-# as_fn_executable_p FILE
-# -----------------------
-# Test if FILE is an executable regular file.
-as_fn_executable_p ()
-{
- test -f "$1" && test -x "$1"
-} # as_fn_executable_p
-as_test_x='test -x'
-as_executable_p=as_fn_executable_p
+if test -x / >/dev/null 2>&1; then
+ as_test_x='test -x'
+else
+ if ls -dL / >/dev/null 2>&1; then
+ as_ls_L_option=L
+ else
+ as_ls_L_option=
+ fi
+ as_test_x='
+ eval sh -c '\''
+ if test -d "$1"; then
+ test -d "$1/.";
+ else
+ case $1 in #(
+ -*)set "./$1";;
+ esac;
+ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
+ ???[sx]*):;;*)false;;esac;fi
+ '\'' sh
+ '
+fi
+as_executable_p=$as_test_x
# Sed expression to map a string onto a valid CPP name.
as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
@@ -10721,7 +10718,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# values after options handling.
ac_log="
This file was extended by $as_me, which was
-generated by GNU Autoconf 2.69. Invocation command line was
+generated by GNU Autoconf 2.68. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
CONFIG_HEADERS = $CONFIG_HEADERS
@@ -10783,10 +10780,10 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
config.status
-configured by $0, generated by GNU Autoconf 2.69,
+configured by $0, generated by GNU Autoconf 2.68,
with options \\"\$ac_cs_config\\"
-Copyright (C) 2012 Free Software Foundation, Inc.
+Copyright (C) 2010 Free Software Foundation, Inc.
This config.status script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it."
@@ -10875,7 +10872,7 @@ fi
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
if \$ac_cs_recheck; then
- set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+ set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
shift
\$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
CONFIG_SHELL='$SHELL'
@@ -10912,7 +10909,6 @@ do
"conf/pam.std") CONFIG_FILES="$CONFIG_FILES conf/pam.std" ;;
"conf/snmp.conf") CONFIG_FILES="$CONFIG_FILES conf/snmp.conf" ;;
"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/index.html") CONFIG_FILES="$CONFIG_FILES doc/index.html" ;;
"man/client.conf.man") CONFIG_FILES="$CONFIG_FILES man/client.conf.man" ;;
diff --git a/configure.ac b/configure.ac
index 26b7b713e..1e3fb72af 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,5 +1,5 @@
dnl
-dnl "$Id: configure.ac 12222 2014-10-21 11:55:01Z msweet $"
+dnl "$Id: configure.ac 12278 2014-12-01 13:53:56Z msweet $"
dnl
dnl Configuration script for CUPS.
dnl
@@ -66,7 +66,6 @@ AC_OUTPUT(Makedefs
conf/pam.std
conf/snmp.conf
cups-config
- data/testprint
desktop/cups.desktop
doc/index.html
man/client.conf.man
@@ -92,5 +91,5 @@ AC_OUTPUT(Makedefs
chmod +x cups-config
dnl
-dnl End of "$Id: configure.ac 12222 2014-10-21 11:55:01Z msweet $".
+dnl End of "$Id: configure.ac 12278 2014-12-01 13:53:56Z msweet $".
dnl
diff --git a/cups/Makefile b/cups/Makefile
index 00b9b2b80..ed44fab58 100644
--- a/cups/Makefile
+++ b/cups/Makefile
@@ -1,5 +1,5 @@
#
-# "$Id: Makefile 12032 2014-07-15 20:37:32Z msweet $"
+# "$Id: Makefile 12635 2015-05-19 02:12:22Z msweet $"
#
# API library Makefile for CUPS.
#
@@ -94,7 +94,8 @@ TESTOBJS = \
testlang.o \
testppd.o \
testpwg.o \
- testsnmp.o
+ testsnmp.o \
+ tlscheck.o
OBJS = \
$(LIBOBJS) \
$(TESTOBJS)
@@ -161,7 +162,8 @@ UNITTARGETS = \
testoptions \
testppd \
testpwg \
- testsnmp
+ testsnmp \
+ tlscheck
TARGETS = \
$(LIBTARGETS)
@@ -540,6 +542,16 @@ testsnmp: testsnmp.o $(LIBCUPSSTATIC)
#
+# tlscheck (dependency on static CUPS library is intentional)
+#
+
+tlscheck: tlscheck.o $(LIBCUPSSTATIC)
+ echo Linking $@...
+ $(CC) $(ARCHFLAGS) $(LDFLAGS) -o $@ tlscheck.o $(LIBCUPSSTATIC) \
+ $(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) $(COMMONLIBS) $(LIBZ)
+
+
+#
# Automatic API help files...
#
@@ -665,5 +677,5 @@ tls.o: tls-darwin.c tls-gnutls.c tls-sspi.c
#
-# End of "$Id: Makefile 12032 2014-07-15 20:37:32Z msweet $".
+# End of "$Id: Makefile 12635 2015-05-19 02:12:22Z msweet $".
#
diff --git a/cups/auth.c b/cups/auth.c
index 4b4c936ad..52a9db348 100644
--- a/cups/auth.c
+++ b/cups/auth.c
@@ -1,5 +1,5 @@
/*
- * "$Id: auth.c 12230 2014-10-21 13:55:24Z msweet $"
+ * "$Id: auth.c 12619 2015-05-06 21:00:19Z msweet $"
*
* Authentication functions for CUPS.
*
@@ -311,7 +311,7 @@ _cupsSetNegotiateAuthString(
* to use it...
*/
- if (gss_init_sec_context == NULL)
+ if (&gss_init_sec_context == NULL)
{
DEBUG_puts("1_cupsSetNegotiateAuthString: Weak-linked GSSAPI/Kerberos "
"framework is not present");
@@ -876,5 +876,5 @@ cups_local_auth(http_t *http) /* I - HTTP connection to server */
/*
- * End of "$Id: auth.c 12230 2014-10-21 13:55:24Z msweet $".
+ * End of "$Id: auth.c 12619 2015-05-06 21:00:19Z msweet $".
*/
diff --git a/cups/cups-private.h b/cups/cups-private.h
index 90420a220..da8a3963b 100644
--- a/cups/cups-private.h
+++ b/cups/cups-private.h
@@ -1,9 +1,9 @@
/*
- * "$Id: cups-private.h 11851 2014-05-07 23:55:35Z msweet $"
+ * "$Id: cups-private.h 12441 2015-01-29 14:42:32Z msweet $"
*
* Private definitions for CUPS.
*
- * Copyright 2007-2013 by Apple Inc.
+ * Copyright 2007-2015 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
@@ -281,5 +281,5 @@ extern char *_cupsUserDefault(char *name, size_t namesize);
#endif /* !_CUPS_CUPS_PRIVATE_H_ */
/*
- * End of "$Id: cups-private.h 11851 2014-05-07 23:55:35Z msweet $".
+ * End of "$Id: cups-private.h 12441 2015-01-29 14:42:32Z msweet $".
*/
diff --git a/cups/cups.h b/cups/cups.h
index 969919015..4faf82cdc 100644
--- a/cups/cups.h
+++ b/cups/cups.h
@@ -1,9 +1,9 @@
/*
- * "$Id: cups.h 12761 2015-06-24 20:10:19Z msweet $"
+ * "$Id: cups.h 12722 2015-06-08 22:00:19Z msweet $"
*
* API definitions for CUPS.
*
- * Copyright 2007-2015 by Apple Inc.
+ * Copyright 2007-2014 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -35,6 +35,15 @@ typedef off_t ssize_t; /* @private@ */
# include "language.h"
# include "pwg.h"
+/*
+ * Define _PPD_DEPRECATED to silence the warnings about PPD functions being
+ * deprecated...
+ */
+
+# ifndef _PPD_DEPRECATED
+# define _PPD_DEPRECATED _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.")
+# endif /* !_PPD_DEPRECATED */
+
/*
* C++ magic...
@@ -49,10 +58,10 @@ extern "C" {
* Constants...
*/
-# define CUPS_VERSION 2.0004
+# define CUPS_VERSION 2.0100
# define CUPS_VERSION_MAJOR 2
-# define CUPS_VERSION_MINOR 0
-# define CUPS_VERSION_PATCH 4
+# define CUPS_VERSION_MINOR 1
+# define CUPS_VERSION_PATCH 0
# define CUPS_BC_FD 3
/* Back-channel file descriptor for
@@ -354,8 +363,7 @@ extern int cupsGetClasses(char ***classes) _CUPS_DEPRECATED_MSG("Use cupsGetDes
extern const char *cupsGetDefault(void);
extern int cupsGetJobs(cups_job_t **jobs, const char *name,
int myjobs, int whichjobs);
-extern const char *cupsGetPPD(const char *name)
- _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo instead.");
+extern const char *cupsGetPPD(const char *name) _PPD_DEPRECATED;
extern int cupsGetPrinters(char ***printers) _CUPS_DEPRECATED_MSG("Use cupsGetDests instead.");
extern ipp_status_t cupsLastError(void);
extern int cupsPrintFile(const char *name, const char *filename,
@@ -413,8 +421,7 @@ extern int cupsGetDests2(http_t *http, cups_dest_t **dests)
extern int cupsGetJobs2(http_t *http, cups_job_t **jobs,
const char *name, int myjobs,
int whichjobs) _CUPS_API_1_1_21;
-extern const char *cupsGetPPD2(http_t *http, const char *name)
- _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo instead.");
+extern const char *cupsGetPPD2(http_t *http, const char *name) _PPD_DEPRECATED;
extern int cupsPrintFile2(http_t *http, const char *name,
const char *filename,
const char *title, int num_options,
@@ -479,7 +486,7 @@ extern const char *cupsGetPassword2(const char *prompt, http_t *http,
const char *resource) _CUPS_API_1_4;
extern http_status_t cupsGetPPD3(http_t *http, const char *name,
time_t *modtime, char *buffer,
- size_t bufsize) _CUPS_API_1_4;
+ size_t bufsize) _PPD_DEPRECATED;
extern ipp_t *cupsGetResponse(http_t *http,
const char *resource) _CUPS_API_1_4;
extern ssize_t cupsReadResponseData(http_t *http, char *buffer,
@@ -628,5 +635,5 @@ extern int cupsSetServerCredentials(const char *path, const char *common_name,
#endif /* !_CUPS_CUPS_H_ */
/*
- * End of "$Id: cups.h 12761 2015-06-24 20:10:19Z msweet $".
+ * End of "$Id: cups.h 12722 2015-06-08 22:00:19Z msweet $".
*/
diff --git a/cups/debug.c b/cups/debug.c
index 5514f773b..feae91d11 100644
--- a/cups/debug.c
+++ b/cups/debug.c
@@ -1,5 +1,5 @@
/*
- * "$Id: debug.c 12328 2014-12-09 20:38:47Z msweet $"
+ * "$Id: debug.c 12327 2014-12-09 20:38:39Z msweet $"
*
* Debugging functions for CUPS.
*
@@ -643,5 +643,5 @@ _cups_debug_set(const char *logfile, /* I - Log file or NULL */
/*
- * End of "$Id: debug.c 12328 2014-12-09 20:38:47Z msweet $".
+ * End of "$Id: debug.c 12327 2014-12-09 20:38:39Z msweet $".
*/
diff --git a/cups/dest.c b/cups/dest.c
index 384105ffb..dcbdfb9e2 100644
--- a/cups/dest.c
+++ b/cups/dest.c
@@ -1,5 +1,5 @@
/*
- * "$Id: dest.c 12665 2015-05-25 15:08:55Z msweet $"
+ * "$Id: dest.c 12722 2015-06-08 22:00:19Z msweet $"
*
* User-defined destination (and option) support for CUPS.
*
@@ -3943,5 +3943,5 @@ cups_make_string(
/*
- * End of "$Id: dest.c 12665 2015-05-25 15:08:55Z msweet $".
+ * End of "$Id: dest.c 12722 2015-06-08 22:00:19Z msweet $".
*/
diff --git a/cups/encode.c b/cups/encode.c
index 5847f5684..b43c4a3fc 100644
--- a/cups/encode.c
+++ b/cups/encode.c
@@ -1,9 +1,9 @@
/*
- * "$Id: encode.c 11733 2014-03-25 18:01:41Z msweet $"
+ * "$Id: encode.c 12668 2015-05-27 19:30:32Z msweet $"
*
* Option encoding routines for CUPS.
*
- * Copyright 2007-2014 by Apple Inc.
+ * Copyright 2007-2015 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -117,6 +117,9 @@ static const _ipp_option_t ipp_options[] =
{ 0, "copies", IPP_TAG_INTEGER, IPP_TAG_JOB,
IPP_TAG_DOCUMENT },
{ 0, "copies-default", IPP_TAG_INTEGER, IPP_TAG_PRINTER },
+ { 0, "date-time-at-completed",IPP_TAG_DATE, IPP_TAG_ZERO }, /* never send as option */
+ { 0, "date-time-at-creation", IPP_TAG_DATE, IPP_TAG_ZERO }, /* never send as option */
+ { 0, "date-time-at-processing",IPP_TAG_DATE, IPP_TAG_ZERO }, /* never send as option */
{ 0, "device-uri", IPP_TAG_URI, IPP_TAG_PRINTER },
{ 1, "document-copies", IPP_TAG_RANGE, IPP_TAG_JOB,
IPP_TAG_DOCUMENT,
@@ -274,6 +277,7 @@ static const _ipp_option_t ipp_options[] =
{ 0, "print-quality-default", IPP_TAG_ENUM, IPP_TAG_PRINTER },
{ 1, "printer-commands", IPP_TAG_KEYWORD, IPP_TAG_PRINTER },
{ 0, "printer-error-policy", IPP_TAG_NAME, IPP_TAG_PRINTER },
+ { 0, "printer-geo-location", IPP_TAG_URI, IPP_TAG_PRINTER },
{ 0, "printer-info", IPP_TAG_TEXT, IPP_TAG_PRINTER },
{ 0, "printer-is-accepting-jobs", IPP_TAG_BOOLEAN, IPP_TAG_PRINTER },
{ 0, "printer-is-shared", IPP_TAG_BOOLEAN, IPP_TAG_PRINTER },
@@ -849,5 +853,5 @@ compare_ipp_options(_ipp_option_t *a, /* I - First option */
/*
- * End of "$Id: encode.c 11733 2014-03-25 18:01:41Z msweet $".
+ * End of "$Id: encode.c 12668 2015-05-27 19:30:32Z msweet $".
*/
diff --git a/cups/file.c b/cups/file.c
index 6c6b8492e..a69f0f95a 100644
--- a/cups/file.c
+++ b/cups/file.c
@@ -1,5 +1,5 @@
/*
- * "$Id: file.c 12642 2015-05-19 15:04:47Z msweet $"
+ * "$Id: file.c 12641 2015-05-19 15:04:39Z msweet $"
*
* File functions for CUPS.
*
@@ -2752,5 +2752,5 @@ cups_write(cups_file_t *fp, /* I - CUPS file */
/*
- * End of "$Id: file.c 12642 2015-05-19 15:04:47Z msweet $".
+ * End of "$Id: file.c 12641 2015-05-19 15:04:39Z msweet $".
*/
diff --git a/cups/globals.c b/cups/globals.c
index c48c32144..4b041f471 100644
--- a/cups/globals.c
+++ b/cups/globals.c
@@ -1,5 +1,5 @@
/*
- * "$Id: globals.c 12481 2015-02-03 12:45:14Z msweet $"
+ * "$Id: globals.c 12480 2015-02-03 12:36:34Z msweet $"
*
* Global variable access routines for CUPS.
*
@@ -394,5 +394,5 @@ cups_globals_init(void)
/*
- * End of "$Id: globals.c 12481 2015-02-03 12:45:14Z msweet $".
+ * End of "$Id: globals.c 12480 2015-02-03 12:36:34Z msweet $".
*/
diff --git a/cups/http-private.h b/cups/http-private.h
index 3a8c18c02..3393e87f8 100644
--- a/cups/http-private.h
+++ b/cups/http-private.h
@@ -1,5 +1,5 @@
/*
- * "$Id: http-private.h 12419 2015-01-22 15:51:20Z msweet $"
+ * "$Id: http-private.h 12645 2015-05-20 01:20:52Z msweet $"
*
* Private HTTP definitions for CUPS.
*
@@ -126,6 +126,7 @@ extern CFAbsoluteTime SecCertificateNotValidAfter(SecCertificateRef certificate)
# ifndef WIN32
# include <net/if.h>
+# include <resolv.h>
# ifdef HAVE_GETIFADDRS
# include <ifaddrs.h>
# else
@@ -161,8 +162,11 @@ extern "C" {
#define _HTTP_RESOLVE_FQDN 2 /* Resolve to a FQDN */
#define _HTTP_RESOLVE_FAXOUT 4 /* Resolve FaxOut service? */
+#define _HTTP_TLS_NONE 0 /* No TLS options */
#define _HTTP_TLS_ALLOW_RC4 1 /* Allow RC4 cipher suites */
#define _HTTP_TLS_ALLOW_SSL3 2 /* Allow SSL 3.0 */
+#define _HTTP_TLS_ALLOW_DH 4 /* Allow DH/DHE key negotiation */
+#define _HTTP_TLS_DENY_TLS10 16 /* Deny TLS 1.0 */
/*
@@ -438,5 +442,5 @@ extern int _httpWait(http_t *http, int msec, int usessl);
#endif /* !_CUPS_HTTP_PRIVATE_H_ */
/*
- * End of "$Id: http-private.h 12419 2015-01-22 15:51:20Z msweet $".
+ * End of "$Id: http-private.h 12645 2015-05-20 01:20:52Z msweet $".
*/
diff --git a/cups/http.c b/cups/http.c
index 6c8f5797e..98188a4b5 100644
--- a/cups/http.c
+++ b/cups/http.c
@@ -1,5 +1,5 @@
/*
- * "$Id: http.c 12334 2014-12-09 21:01:55Z msweet $"
+ * "$Id: http.c 12333 2014-12-09 21:01:46Z msweet $"
*
* HTTP routines for CUPS.
*
@@ -4850,5 +4850,5 @@ http_write_chunk(http_t *http, /* I - HTTP connection */
/*
- * End of "$Id: http.c 12334 2014-12-09 21:01:55Z msweet $".
+ * End of "$Id: http.c 12333 2014-12-09 21:01:46Z msweet $".
*/
diff --git a/cups/ipp-support.c b/cups/ipp-support.c
index 88e4065f9..6a5d94067 100644
--- a/cups/ipp-support.c
+++ b/cups/ipp-support.c
@@ -1,5 +1,5 @@
/*
- * "$Id: ipp-support.c 12194 2014-10-02 18:44:36Z msweet $"
+ * "$Id: ipp-support.c 12666 2015-05-25 19:38:09Z msweet $"
*
* Internet Printing Protocol support functions for CUPS.
*
@@ -195,7 +195,7 @@ static const char * const ipp_std_ops[] =
"Suspend-Current-Job",
"Resume-Job",
- /* 0x0030 - 0x003e */
+ /* 0x0030 - 0x003f */
"Promote-Job",
"Schedule-Job-After",
"0x0032",
@@ -210,7 +210,21 @@ static const char * const ipp_std_ops[] =
"Close-Job",
"Identify-Printer",
"Validate-Document",
- "Send-Hardcopy-Document"
+ "Send-Hardcopy-Document",
+ "Acknowledge-Document",
+
+ /* 0x0040 - 0x004a */
+ "Acknowledge-Identify-Printer",
+ "Acknowledge-Job",
+ "Fetch-Document",
+ "Fetch-Job",
+ "Get-Output-Device-Attributes",
+ "Update-Active-Jobs",
+ "Deregister-Output-Device",
+ "Update-Document-Status",
+ "Update-Job-Status",
+ "Update-Output-Device-Attributes",
+ "Get-Next-Document-Data"
},
* const ipp_cups_ops[] =
{
@@ -2271,5 +2285,5 @@ ipp_col_string(ipp_t *col, /* I - Collection attribute */
/*
- * End of "$Id: ipp-support.c 12194 2014-10-02 18:44:36Z msweet $".
+ * End of "$Id: ipp-support.c 12666 2015-05-25 19:38:09Z msweet $".
*/
diff --git a/cups/ipp.c b/cups/ipp.c
index 6ef17ecd7..5e7b73062 100644
--- a/cups/ipp.c
+++ b/cups/ipp.c
@@ -1,5 +1,5 @@
/*
- * "$Id: ipp.c 12469 2015-02-01 04:51:08Z msweet $"
+ * "$Id: ipp.c 12468 2015-02-01 04:50:43Z msweet $"
*
* Internet Printing Protocol functions for CUPS.
*
@@ -7062,5 +7062,5 @@ ipp_write_file(int *fd, /* I - File descriptor */
/*
- * End of "$Id: ipp.c 12469 2015-02-01 04:51:08Z msweet $".
+ * End of "$Id: ipp.c 12468 2015-02-01 04:50:43Z msweet $".
*/
diff --git a/cups/ipp.h b/cups/ipp.h
index c56e7abe8..9fccd11ca 100644
--- a/cups/ipp.h
+++ b/cups/ipp.h
@@ -1,5 +1,5 @@
/*
- * "$Id: ipp.h 11806 2014-04-09 16:12:27Z msweet $"
+ * "$Id: ipp.h 12666 2015-05-25 19:38:09Z msweet $"
*
* Internet Printing Protocol definitions for CUPS.
*
@@ -246,11 +246,11 @@ typedef enum ipp_op_e /**** IPP operations ****/
IPP_OP_CUPS_INVALID = -1, /* Invalid operation name for @link ippOpValue@ */
IPP_OP_CUPS_NONE = 0, /* No operation @private@ */
IPP_OP_PRINT_JOB = 0x0002, /* Print a single file */
- IPP_OP_PRINT_URI, /* Print a single URL @private@ */
+ IPP_OP_PRINT_URI, /* Print a single URL */
IPP_OP_VALIDATE_JOB, /* Validate job options */
IPP_OP_CREATE_JOB, /* Create an empty print job */
IPP_OP_SEND_DOCUMENT, /* Add a file to a job */
- IPP_OP_SEND_URI, /* Add a URL to a job @private@ */
+ IPP_OP_SEND_URI, /* Add a URL to a job */
IPP_OP_CANCEL_JOB, /* Cancel a job */
IPP_OP_GET_JOB_ATTRIBUTES, /* Get job attributes */
IPP_OP_GET_JOBS, /* Get a list of jobs */
@@ -261,7 +261,7 @@ typedef enum ipp_op_e /**** IPP operations ****/
IPP_OP_PAUSE_PRINTER = 0x0010, /* Stop a printer */
IPP_OP_RESUME_PRINTER, /* Start a printer */
IPP_OP_PURGE_JOBS, /* Cancel all jobs */
- IPP_OP_SET_PRINTER_ATTRIBUTES, /* Set printer attributes @private@ */
+ IPP_OP_SET_PRINTER_ATTRIBUTES, /* Set printer attributes */
IPP_OP_SET_JOB_ATTRIBUTES, /* Set job attributes */
IPP_OP_GET_PRINTER_SUPPORTED_VALUES, /* Get supported attribute values */
IPP_OP_CREATE_PRINTER_SUBSCRIPTIONS, /* Create one or more printer subscriptions @since CUPS 1.2/OS X 10.5@ */
@@ -279,32 +279,45 @@ typedef enum ipp_op_e /**** IPP operations ****/
IPP_OP_ENABLE_PRINTER, /* Start a printer */
IPP_OP_DISABLE_PRINTER, /* Stop a printer */
IPP_OP_PAUSE_PRINTER_AFTER_CURRENT_JOB,
- /* Stop printer after the current job @private@ */
- IPP_OP_HOLD_NEW_JOBS, /* Hold new jobs @private@ */
- IPP_OP_RELEASE_HELD_NEW_JOBS, /* Release new jobs @private@ */
- IPP_OP_DEACTIVATE_PRINTER, /* Stop a printer @private@ */
- IPP_OP_ACTIVATE_PRINTER, /* Start a printer @private@ */
- IPP_OP_RESTART_PRINTER, /* Restart a printer @private@ */
- IPP_OP_SHUTDOWN_PRINTER, /* Turn a printer off @private@ */
- IPP_OP_STARTUP_PRINTER, /* Turn a printer on @private@ */
- IPP_OP_REPROCESS_JOB, /* Reprint a job @private@ */
- IPP_OP_CANCEL_CURRENT_JOB, /* Cancel the current job @private@ */
- IPP_OP_SUSPEND_CURRENT_JOB, /* Suspend the current job @private@ */
- IPP_OP_RESUME_JOB, /* Resume the current job @private@ */
- IPP_OP_PROMOTE_JOB, /* Promote a job to print sooner @private@ */
- IPP_OP_SCHEDULE_JOB_AFTER, /* Schedule a job to print after another @private@ */
- IPP_OP_CANCEL_DOCUMENT = 0x0033, /* Cancel-Document @private@ */
- IPP_OP_GET_DOCUMENT_ATTRIBUTES, /* Get-Document-Attributes @private@ */
- IPP_OP_GET_DOCUMENTS, /* Get-Documents @private@ */
- IPP_OP_DELETE_DOCUMENT, /* Delete-Document @private@ */
- IPP_OP_SET_DOCUMENT_ATTRIBUTES, /* Set-Document-Attributes @private@ */
+ /* Stop printer after the current job */
+ IPP_OP_HOLD_NEW_JOBS, /* Hold new jobs */
+ IPP_OP_RELEASE_HELD_NEW_JOBS, /* Release new jobs */
+ IPP_OP_DEACTIVATE_PRINTER, /* Stop a printer */
+ IPP_OP_ACTIVATE_PRINTER, /* Start a printer */
+ IPP_OP_RESTART_PRINTER, /* Restart a printer */
+ IPP_OP_SHUTDOWN_PRINTER, /* Turn a printer off */
+ IPP_OP_STARTUP_PRINTER, /* Turn a printer on */
+ IPP_OP_REPROCESS_JOB, /* Reprint a job */
+ IPP_OP_CANCEL_CURRENT_JOB, /* Cancel the current job */
+ IPP_OP_SUSPEND_CURRENT_JOB, /* Suspend the current job */
+ IPP_OP_RESUME_JOB, /* Resume the current job */
+ IPP_OP_PROMOTE_JOB, /* Promote a job to print sooner */
+ IPP_OP_SCHEDULE_JOB_AFTER, /* Schedule a job to print after another */
+ IPP_OP_CANCEL_DOCUMENT = 0x0033, /* Cancel-Document */
+ IPP_OP_GET_DOCUMENT_ATTRIBUTES, /* Get-Document-Attributes */
+ IPP_OP_GET_DOCUMENTS, /* Get-Documents */
+ IPP_OP_DELETE_DOCUMENT, /* Delete-Document */
+ IPP_OP_SET_DOCUMENT_ATTRIBUTES, /* Set-Document-Attributes */
IPP_OP_CANCEL_JOBS, /* Cancel-Jobs */
IPP_OP_CANCEL_MY_JOBS, /* Cancel-My-Jobs */
IPP_OP_RESUBMIT_JOB, /* Resubmit-Job */
IPP_OP_CLOSE_JOB, /* Close-Job */
- IPP_OP_IDENTIFY_PRINTER, /* Identify-Printer @private@ */
- IPP_OP_VALIDATE_DOCUMENT, /* Validate-Document @private@ */
- IPP_OP_SEND_HARDCOPY_DOCUMENT, /* Send-Hardcopy-Document @private@ */
+ IPP_OP_IDENTIFY_PRINTER, /* Identify-Printer */
+ IPP_OP_VALIDATE_DOCUMENT, /* Validate-Document */
+ IPP_OP_SEND_HARDCOPY_DOCUMENT, /* Send-Hardcopy-Document */
+ IPP_OP_ACKNOWLEDGE_DOCUMENT, /* Acknowledge-Document */
+ IPP_OP_ACKNOWLEDGE_IDENTIFY_PRINTER, /* Acknowledge-Identify-Printer */
+ IPP_OP_ACKNOWLEDGE_JOB, /* Acknowledge-Job */
+ IPP_OP_FETCH_DOCUMENT, /* Fetch-Document */
+ IPP_OP_FETCH_JOB, /* Fetch-Job */
+ IPP_OP_GET_OUTPUT_DEVICE_ATTRIBUTES, /* Get-Output-Device-Attributes */
+ IPP_OP_UPDATE_ACTIVE_JOBS, /* Update-Active-Jobs */
+ IPP_OP_DEREGISTER_OUTPUT_DEVICE, /* Deregister-Output-Device */
+ IPP_OP_UPDATE_DOCUMENT_STATUS, /* Update-Document-Status */
+ IPP_OP_UPDATE_JOB_STATUS, /* Update-Job-Status */
+ IPP_OP_UPDATE_OUTPUT_DEVICE_ATTRIBUTES,
+ /* Update-Output-Device-Attributes */
+ IPP_OP_GET_NEXT_DOCUMENT_DATA, /* Get-Next-Document-Data */
IPP_OP_PRIVATE = 0x4000, /* Reserved @private@ */
IPP_OP_CUPS_GET_DEFAULT, /* Get the default printer */
@@ -1021,5 +1034,5 @@ extern const char *ippStateString(ipp_state_t state) _CUPS_API_2_0;
#endif /* !_CUPS_IPP_H_ */
/*
- * End of "$Id: ipp.h 11806 2014-04-09 16:12:27Z msweet $".
+ * End of "$Id: ipp.h 12666 2015-05-25 19:38:09Z msweet $".
*/
diff --git a/cups/language.c b/cups/language.c
index 7888af098..0adf73ad6 100644
--- a/cups/language.c
+++ b/cups/language.c
@@ -1,5 +1,5 @@
/*
- * "$Id: language.c 12266 2014-11-19 16:05:28Z msweet $"
+ * "$Id: language.c 12262 2014-11-19 15:18:33Z msweet $"
*
* I18N/language support for CUPS.
*
@@ -1588,5 +1588,5 @@ cups_unquote(char *d, /* O - Unquoted string */
/*
- * End of "$Id: language.c 12266 2014-11-19 16:05:28Z msweet $".
+ * End of "$Id: language.c 12262 2014-11-19 15:18:33Z msweet $".
*/
diff --git a/cups/mark.c b/cups/mark.c
index 9580c0da7..0c27628e5 100644
--- a/cups/mark.c
+++ b/cups/mark.c
@@ -1,5 +1,5 @@
/*
- * "$Id: mark.c 11558 2014-02-06 18:33:34Z msweet $"
+ * "$Id: mark.c 12258 2014-11-19 12:38:44Z msweet $"
*
* Option marking routines for CUPS.
*
@@ -514,6 +514,12 @@ ppdMarkDefaults(ppd_file_t *ppd) /* I - PPD file record */
for (i = ppd->num_groups, g = ppd->groups; i > 0; i --, g ++)
ppd_defaults(ppd, g);
+
+ /*
+ * Finally, tag any conflicts (API compatibility) once at the end.
+ */
+
+ ppdConflicts(ppd);
}
@@ -710,7 +716,7 @@ ppd_defaults(ppd_file_t *ppd, /* I - PPD file */
for (i = g->num_options, o = g->options; i > 0; i --, o ++)
if (_cups_strcasecmp(o->keyword, "PageRegion") != 0)
- ppdMarkOption(ppd, o->keyword, o->defchoice);
+ ppd_mark_option(ppd, o->keyword, o->defchoice);
for (i = g->num_subgroups, sg = g->subgroups; i > 0; i --, sg ++)
ppd_defaults(ppd, sg);
@@ -1078,5 +1084,5 @@ ppd_mark_option(ppd_file_t *ppd, /* I - PPD file */
/*
- * End of "$Id: mark.c 11558 2014-02-06 18:33:34Z msweet $".
+ * End of "$Id: mark.c 12258 2014-11-19 12:38:44Z msweet $".
*/
diff --git a/cups/ppd-cache.c b/cups/ppd-cache.c
index 851cb0bea..5a5af77de 100644
--- a/cups/ppd-cache.c
+++ b/cups/ppd-cache.c
@@ -1,5 +1,5 @@
/*
- * "$Id: ppd-cache.c 12434 2015-01-28 16:29:06Z msweet $"
+ * "$Id: ppd-cache.c 12722 2015-06-08 22:00:19Z msweet $"
*
* PPD cache implementation for CUPS.
*
@@ -37,11 +37,327 @@ static int pwg_compare_finishings(_pwg_finishings_t *a,
_pwg_finishings_t *b);
static void pwg_free_finishings(_pwg_finishings_t *f);
static void pwg_ppdize_name(const char *ipp, char *name, size_t namesize);
+static void pwg_ppdize_resolution(ipp_attribute_t *attr, int element, int *xres, int *yres, char *name, size_t namesize);
static void pwg_unppdize_name(const char *ppd, char *name, size_t namesize,
const char *dashchars);
/*
+ * '_cupsConvertOptions()' - Convert printer options to standard IPP attributes.
+ *
+ * This functions converts PPD and CUPS-specific options to their standard IPP
+ * attributes and values and adds them to the specified IPP request.
+ */
+
+int /* O - New number of copies */
+_cupsConvertOptions(ipp_t *request, /* I - IPP request */
+ ppd_file_t *ppd, /* I - PPD file */
+ _ppd_cache_t *pc, /* I - PPD cache info */
+ ipp_attribute_t *media_col_sup,
+ /* I - media-col-supported values */
+ ipp_attribute_t *doc_handling_sup,
+ /* I - multiple-document-handling-supported values */
+ ipp_attribute_t *print_color_mode_sup,
+ /* I - Printer supports print-color-mode */
+ const char *user, /* I - User info */
+ const char *format, /* I - document-format value */
+ int copies, /* I - Number of copies */
+ int num_options, /* I - Number of options */
+ cups_option_t *options) /* I - Options */
+{
+ int i; /* Looping var */
+ const char *keyword; /* PWG keyword */
+ pwg_size_t *size; /* PWG media size */
+ ipp_t *media_col, /* media-col value */
+ *media_size; /* media-size value */
+ const char *media_source, /* media-source value */
+ *media_type, /* media-type value */
+ *collate_str, /* multiple-document-handling value */
+ *color_attr_name, /* Supported color attribute */
+ *mandatory; /* Mandatory attributes */
+ int num_finishings = 0, /* Number of finishing values */
+ finishings[10]; /* Finishing enum values */
+ ppd_choice_t *choice; /* Marked choice */
+
+
+ /*
+ * Send standard IPP attributes...
+ */
+
+ if (pc->password && (keyword = cupsGetOption("job-password", num_options, options)) != NULL)
+ {
+ ippAddOctetString(request, IPP_TAG_OPERATION, "job-password", keyword, (int)strlen(keyword));
+
+ if ((keyword = cupsGetOption("job-password-encryption", num_options, options)) == NULL)
+ keyword = "none";
+
+ ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD, "job-password-encryption", NULL, keyword);
+ }
+
+ if (pc->account_id)
+ {
+ if ((keyword = cupsGetOption("job-account-id", num_options, options)) == NULL)
+ keyword = cupsGetOption("job-billing", num_options, options);
+
+ if (keyword)
+ ippAddString(request, IPP_TAG_JOB, IPP_TAG_NAME, "job-account-id", NULL, keyword);
+ }
+
+ if (pc->accounting_user_id)
+ {
+ if ((keyword = cupsGetOption("job-accounting-user-id", num_options, options)) == NULL)
+ keyword = user;
+
+ if (keyword)
+ ippAddString(request, IPP_TAG_JOB, IPP_TAG_NAME, "job-accounting-user-id", NULL, keyword);
+ }
+
+ for (mandatory = (const char *)cupsArrayFirst(pc->mandatory); mandatory; mandatory = (const char *)cupsArrayNext(pc->mandatory))
+ {
+ if (strcmp(mandatory, "copies") &&
+ strcmp(mandatory, "destination-uris") &&
+ strcmp(mandatory, "finishings") &&
+ strcmp(mandatory, "job-account-id") &&
+ strcmp(mandatory, "job-accounting-user-id") &&
+ strcmp(mandatory, "job-password") &&
+ strcmp(mandatory, "job-password-encryption") &&
+ strcmp(mandatory, "media") &&
+ strncmp(mandatory, "media-col", 9) &&
+ strcmp(mandatory, "multiple-document-handling") &&
+ strcmp(mandatory, "output-bin") &&
+ strcmp(mandatory, "print-color-mode") &&
+ strcmp(mandatory, "print-quality") &&
+ strcmp(mandatory, "sides") &&
+ (keyword = cupsGetOption(mandatory, num_options, options)) != NULL)
+ {
+ _ipp_option_t *opt = _ippFindOption(mandatory);
+ /* Option type */
+ ipp_tag_t value_tag = opt ? opt->value_tag : IPP_TAG_NAME;
+ /* Value type */
+
+ switch (value_tag)
+ {
+ case IPP_TAG_INTEGER :
+ case IPP_TAG_ENUM :
+ ippAddInteger(request, IPP_TAG_JOB, value_tag, mandatory, atoi(keyword));
+ break;
+ case IPP_TAG_BOOLEAN :
+ ippAddBoolean(request, IPP_TAG_JOB, mandatory, !_cups_strcasecmp(keyword, "true"));
+ break;
+ case IPP_TAG_RANGE :
+ {
+ int lower, upper; /* Range */
+
+ if (sscanf(keyword, "%d-%d", &lower, &upper) != 2)
+ lower = upper = atoi(keyword);
+
+ ippAddRange(request, IPP_TAG_JOB, mandatory, lower, upper);
+ }
+ break;
+ case IPP_TAG_STRING :
+ ippAddOctetString(request, IPP_TAG_JOB, mandatory, keyword, (int)strlen(keyword));
+ break;
+ default :
+ if (!strcmp(mandatory, "print-color-mode") && !strcmp(keyword, "monochrome"))
+ {
+ if (ippContainsString(print_color_mode_sup, "auto-monochrome"))
+ keyword = "auto-monochrome";
+ else if (ippContainsString(print_color_mode_sup, "process-monochrome") && !ippContainsString(print_color_mode_sup, "monochrome"))
+ keyword = "process-monochrome";
+ }
+
+ ippAddString(request, IPP_TAG_JOB, value_tag, mandatory, NULL, keyword);
+ break;
+ }
+ }
+ }
+
+ if ((keyword = cupsGetOption("PageSize", num_options, options)) == NULL)
+ keyword = cupsGetOption("media", num_options, options);
+
+ if ((size = _ppdCacheGetSize(pc, keyword)) != NULL)
+ {
+ /*
+ * Add a media-col value...
+ */
+
+ media_size = ippNew();
+ ippAddInteger(media_size, IPP_TAG_ZERO, IPP_TAG_INTEGER,
+ "x-dimension", size->width);
+ ippAddInteger(media_size, IPP_TAG_ZERO, IPP_TAG_INTEGER,
+ "y-dimension", size->length);
+
+ media_col = ippNew();
+ ippAddCollection(media_col, IPP_TAG_ZERO, "media-size", media_size);
+
+ media_source = _ppdCacheGetSource(pc, cupsGetOption("InputSlot",
+ num_options,
+ options));
+ media_type = _ppdCacheGetType(pc, cupsGetOption("MediaType",
+ num_options,
+ options));
+
+ for (i = 0; i < media_col_sup->num_values; i ++)
+ {
+ if (!strcmp(media_col_sup->values[i].string.text, "media-left-margin"))
+ ippAddInteger(media_col, IPP_TAG_ZERO, IPP_TAG_INTEGER, "media-left-margin", size->left);
+ else if (!strcmp(media_col_sup->values[i].string.text, "media-bottom-margin"))
+ ippAddInteger(media_col, IPP_TAG_ZERO, IPP_TAG_INTEGER, "media-bottom-margin", size->bottom);
+ else if (!strcmp(media_col_sup->values[i].string.text, "media-right-margin"))
+ ippAddInteger(media_col, IPP_TAG_ZERO, IPP_TAG_INTEGER, "media-right-margin", size->right);
+ else if (!strcmp(media_col_sup->values[i].string.text, "media-top-margin"))
+ ippAddInteger(media_col, IPP_TAG_ZERO, IPP_TAG_INTEGER, "media-top-margin", size->top);
+ else if (!strcmp(media_col_sup->values[i].string.text, "media-source") && media_source)
+ ippAddString(media_col, IPP_TAG_ZERO, IPP_TAG_KEYWORD, "media-source", NULL, media_source);
+ else if (!strcmp(media_col_sup->values[i].string.text, "media-type") && media_type)
+ ippAddString(media_col, IPP_TAG_ZERO, IPP_TAG_KEYWORD, "media-type", NULL, media_type);
+ }
+
+ ippAddCollection(request, IPP_TAG_JOB, "media-col", media_col);
+ }
+
+ if ((keyword = cupsGetOption("output-bin", num_options, options)) == NULL)
+ {
+ if ((choice = ppdFindMarkedChoice(ppd, "OutputBin")) != NULL)
+ keyword = _ppdCacheGetBin(pc, choice->choice);
+ }
+
+ if (keyword)
+ ippAddString(request, IPP_TAG_JOB, IPP_TAG_KEYWORD, "output-bin", NULL, keyword);
+
+ color_attr_name = print_color_mode_sup ? "print-color-mode" : "output-mode";
+
+ if ((keyword = cupsGetOption("print-color-mode", num_options, options)) == NULL)
+ {
+ if ((choice = ppdFindMarkedChoice(ppd, "ColorModel")) != NULL)
+ {
+ if (!_cups_strcasecmp(choice->choice, "Gray"))
+ keyword = "monochrome";
+ else
+ keyword = "color";
+ }
+ }
+
+ if (keyword && !strcmp(keyword, "monochrome"))
+ {
+ if (ippContainsString(print_color_mode_sup, "auto-monochrome"))
+ keyword = "auto-monochrome";
+ else if (ippContainsString(print_color_mode_sup, "process-monochrome") && !ippContainsString(print_color_mode_sup, "monochrome"))
+ keyword = "process-monochrome";
+ }
+
+ if (keyword)
+ ippAddString(request, IPP_TAG_JOB, IPP_TAG_KEYWORD, color_attr_name, NULL, keyword);
+
+ if ((keyword = cupsGetOption("print-quality", num_options, options)) != NULL)
+ ippAddInteger(request, IPP_TAG_JOB, IPP_TAG_ENUM, "print-quality", atoi(keyword));
+ else if ((choice = ppdFindMarkedChoice(ppd, "cupsPrintQuality")) != NULL)
+ {
+ if (!_cups_strcasecmp(choice->choice, "draft"))
+ ippAddInteger(request, IPP_TAG_JOB, IPP_TAG_ENUM, "print-quality", IPP_QUALITY_DRAFT);
+ else if (!_cups_strcasecmp(choice->choice, "normal"))
+ ippAddInteger(request, IPP_TAG_JOB, IPP_TAG_ENUM, "print-quality", IPP_QUALITY_NORMAL);
+ else if (!_cups_strcasecmp(choice->choice, "high"))
+ ippAddInteger(request, IPP_TAG_JOB, IPP_TAG_ENUM, "print-quality", IPP_QUALITY_HIGH);
+ }
+
+ if ((keyword = cupsGetOption("sides", num_options, options)) != NULL)
+ ippAddString(request, IPP_TAG_JOB, IPP_TAG_KEYWORD, "sides", NULL, keyword);
+ else if (pc->sides_option && (choice = ppdFindMarkedChoice(ppd, pc->sides_option)) != NULL)
+ {
+ if (!_cups_strcasecmp(choice->choice, pc->sides_1sided))
+ ippAddString(request, IPP_TAG_JOB, IPP_TAG_KEYWORD, "sides", NULL, "one-sided");
+ else if (!_cups_strcasecmp(choice->choice, pc->sides_2sided_long))
+ ippAddString(request, IPP_TAG_JOB, IPP_TAG_KEYWORD, "sides", NULL, "two-sided-long-edge");
+ if (!_cups_strcasecmp(choice->choice, pc->sides_2sided_short))
+ ippAddString(request, IPP_TAG_JOB, IPP_TAG_KEYWORD, "sides", NULL, "two-sided-short-edge");
+ }
+
+ /*
+ * Copies...
+ */
+
+ if ((keyword = cupsGetOption("multiple-document-handling", num_options, options)) != NULL)
+ {
+ if (strstr(keyword, "uncollated"))
+ keyword = "false";
+ else
+ keyword = "true";
+ }
+ else if ((keyword = cupsGetOption("collate", num_options, options)) == NULL)
+ keyword = "true";
+
+ if (format)
+ {
+ if (!_cups_strcasecmp(format, "image/gif") ||
+ !_cups_strcasecmp(format, "image/jp2") ||
+ !_cups_strcasecmp(format, "image/jpeg") ||
+ !_cups_strcasecmp(format, "image/png") ||
+ !_cups_strcasecmp(format, "image/tiff") ||
+ !_cups_strncasecmp(format, "image/x-", 8))
+ {
+ /*
+ * Collation makes no sense for single page image formats...
+ */
+
+ keyword = "false";
+ }
+ else if (!_cups_strncasecmp(format, "image/", 6) ||
+ !_cups_strcasecmp(format, "application/vnd.cups-raster"))
+ {
+ /*
+ * Multi-page image formats will have copies applied by the upstream
+ * filters...
+ */
+
+ copies = 1;
+ }
+ }
+
+ if (doc_handling_sup)
+ {
+ if (!_cups_strcasecmp(keyword, "true"))
+ collate_str = "separate-documents-collated-copies";
+ else
+ collate_str = "separate-documents-uncollated-copies";
+
+ for (i = 0; i < doc_handling_sup->num_values; i ++)
+ {
+ if (!strcmp(doc_handling_sup->values[i].string.text, collate_str))
+ {
+ ippAddString(request, IPP_TAG_JOB, IPP_TAG_KEYWORD, "multiple-document-handling", NULL, collate_str);
+ break;
+ }
+ }
+
+ if (i >= doc_handling_sup->num_values)
+ copies = 1;
+ }
+
+ /*
+ * Map finishing options...
+ */
+
+ num_finishings = _ppdCacheGetFinishingValues(pc, num_options, options, (int)(sizeof(finishings) / sizeof(finishings[0])), finishings);
+ if (num_finishings > 0)
+ {
+ ippAddIntegers(request, IPP_TAG_JOB, IPP_TAG_ENUM, "finishings", num_finishings, finishings);
+
+ if (copies > 1 && (keyword = cupsGetOption("job-impressions", num_options, options)) != NULL)
+ {
+ /*
+ * Send job-pages-per-set attribute to apply finishings correctly...
+ */
+
+ ippAddInteger(request, IPP_TAG_JOB, IPP_TAG_INTEGER, "job-pages-per-set", atoi(keyword) / copies);
+ }
+ }
+
+ return (copies);
+}
+
+
+/*
* '_ppdCacheCreateWithFile()' - Create PPD cache and mapping data from a
* written file.
*
@@ -2467,6 +2783,604 @@ _ppdCacheWriteFile(
/*
+ * '_ppdCreateFromIPP()' - Create a PPD file describing the capabilities
+ * of an IPP printer.
+ */
+
+char * /* O - PPD filename or NULL on error */
+_ppdCreateFromIPP(char *buffer, /* I - Filename buffer */
+ size_t bufsize, /* I - Size of filename buffer */
+ ipp_t *response) /* I - Get-Printer-Attributes response */
+{
+ cups_file_t *fp; /* PPD file */
+ ipp_attribute_t *attr, /* xxx-supported */
+ *defattr, /* xxx-default */
+ *x_dim, *y_dim; /* Media dimensions */
+ ipp_t *media_size; /* Media size collection */
+ char make[256], /* Make and model */
+ *model, /* Model name */
+ ppdname[PPD_MAX_NAME];
+ /* PPD keyword */
+ int i, j, /* Looping vars */
+ count, /* Number of values */
+ bottom, /* Largest bottom margin */
+ left, /* Largest left margin */
+ right, /* Largest right margin */
+ top; /* Largest top margin */
+ pwg_media_t *pwg; /* PWG media size */
+ int xres, yres; /* Resolution values */
+ struct lconv *loc = localeconv();
+ /* Locale data */
+
+
+ /*
+ * Range check input...
+ */
+
+ if (buffer)
+ *buffer = '\0';
+
+ if (!buffer || bufsize < 1 || !response)
+ return (NULL);
+
+ /*
+ * Open a temporary file for the PPD...
+ */
+
+ if ((fp = cupsTempFile2(buffer, (int)bufsize)) == NULL)
+ return (NULL);
+
+ /*
+ * Standard stuff for PPD file...
+ */
+
+ cupsFilePuts(fp, "*PPD-Adobe: \"4.3\"\n");
+ cupsFilePuts(fp, "*FormatVersion: \"4.3\"\n");
+ cupsFilePrintf(fp, "*FileVersion: \"%d.%d\"\n", CUPS_VERSION_MAJOR, CUPS_VERSION_MINOR);
+ cupsFilePuts(fp, "*LanguageVersion: English\n");
+ cupsFilePuts(fp, "*LanguageEncoding: ISOLatin1\n");
+ cupsFilePuts(fp, "*PSVersion: \"(3010.000) 0\"\n");
+ cupsFilePuts(fp, "*LanguageLevel: \"3\"\n");
+ cupsFilePuts(fp, "*FileSystem: False\n");
+ cupsFilePuts(fp, "*PCFileName: \"ippeve.ppd\"\n");
+
+ if ((attr = ippFindAttribute(response, "printer-make-and-model", IPP_TAG_TEXT)) != NULL)
+ strlcpy(make, ippGetString(attr, 0, NULL), sizeof(make));
+ else
+ strlcpy(make, "Unknown Printer", sizeof(make));
+
+ if (!_cups_strncasecmp(make, "Hewlett Packard ", 16) ||
+ !_cups_strncasecmp(make, "Hewlett-Packard ", 16))
+ {
+ model = make + 16;
+ strlcpy(make, "HP", sizeof(make));
+ }
+ else if ((model = strchr(make, ' ')) != NULL)
+ *model++ = '\0';
+ else
+ model = make;
+
+ cupsFilePrintf(fp, "*Manufacturer: \"%s\"\n", make);
+ cupsFilePrintf(fp, "*ModelName: \"%s\"\n", model);
+ cupsFilePrintf(fp, "*Product: \"(%s)\"\n", model);
+ cupsFilePrintf(fp, "*NickName: \"%s\"\n", model);
+ cupsFilePrintf(fp, "*ShortNickName: \"%s\"\n", model);
+
+ if ((attr = ippFindAttribute(response, "color-supported", IPP_TAG_BOOLEAN)) != NULL && ippGetBoolean(attr, 0))
+ cupsFilePuts(fp, "*ColorDevice: True\n");
+ else
+ cupsFilePuts(fp, "*ColorDevice: False\n");
+
+ cupsFilePrintf(fp, "*cupsVersion: %d.%d\n", CUPS_VERSION_MAJOR, CUPS_VERSION_MINOR);
+ cupsFilePuts(fp, "*cupsSNMPSupplies: False\n");
+ cupsFilePuts(fp, "*cupsLanguages: \"en\"\n");
+
+ /*
+ * Filters...
+ */
+
+ if ((attr = ippFindAttribute(response, "document-format-supported", IPP_TAG_MIMETYPE)) != NULL)
+ {
+ for (i = 0, count = ippGetCount(attr); i < count; i ++)
+ {
+ const char *format = ippGetString(attr, i, NULL);
+ /* PDL */
+
+ if (!_cups_strcasecmp(format, "application/pdf"))
+ cupsFilePuts(fp, "*cupsFilter2: \"application/vnd.cups-pdf application/pdf 10 -\"\n");
+ else if (!_cups_strcasecmp(format, "application/postscript"))
+ cupsFilePuts(fp, "*cupsFilter2: \"application/vnd.cups-postscript application/postscript 10 -\"\n");
+ else if (_cups_strcasecmp(format, "application/octet-stream") && _cups_strcasecmp(format, "application/vnd.hp-pcl") && _cups_strcasecmp(format, "text/plain"))
+ cupsFilePrintf(fp, "*cupsFilter2: \"%s %s 10 -\"\n", format, format);
+ }
+ }
+
+ /*
+ * PageSize/PageRegion/ImageableArea/PaperDimension
+ */
+
+ if ((attr = ippFindAttribute(response, "media-bottom-margin-supported", IPP_TAG_INTEGER)) != NULL)
+ {
+ for (i = 1, bottom = ippGetInteger(attr, 0), count = ippGetCount(attr); i < count; i ++)
+ if (ippGetInteger(attr, i) > bottom)
+ bottom = ippGetInteger(attr, i);
+ }
+ else
+ bottom = 1270;
+
+ if ((attr = ippFindAttribute(response, "media-left-margin-supported", IPP_TAG_INTEGER)) != NULL)
+ {
+ for (i = 1, left = ippGetInteger(attr, 0), count = ippGetCount(attr); i < count; i ++)
+ if (ippGetInteger(attr, i) > left)
+ left = ippGetInteger(attr, i);
+ }
+ else
+ left = 635;
+
+ if ((attr = ippFindAttribute(response, "media-right-margin-supported", IPP_TAG_INTEGER)) != NULL)
+ {
+ for (i = 1, right = ippGetInteger(attr, 0), count = ippGetCount(attr); i < count; i ++)
+ if (ippGetInteger(attr, i) > right)
+ right = ippGetInteger(attr, i);
+ }
+ else
+ right = 635;
+
+ if ((attr = ippFindAttribute(response, "media-top-margin-supported", IPP_TAG_INTEGER)) != NULL)
+ {
+ for (i = 1, top = ippGetInteger(attr, 0), count = ippGetCount(attr); i < count; i ++)
+ if (ippGetInteger(attr, i) > top)
+ top = ippGetInteger(attr, i);
+ }
+ else
+ top = 1270;
+
+ if ((defattr = ippFindAttribute(response, "media-col-default", IPP_TAG_BEGIN_COLLECTION)) != NULL)
+ {
+ if ((attr = ippFindAttribute(ippGetCollection(defattr, 0), "media-size", IPP_TAG_BEGIN_COLLECTION)) != NULL)
+ {
+ media_size = ippGetCollection(attr, 0);
+ x_dim = ippFindAttribute(media_size, "x-dimension", IPP_TAG_INTEGER);
+ y_dim = ippFindAttribute(media_size, "y-dimension", IPP_TAG_INTEGER);
+
+ if (x_dim && y_dim)
+ {
+ pwg = pwgMediaForSize(ippGetInteger(x_dim, 0), ippGetInteger(y_dim, 0));
+ strlcpy(ppdname, pwg->ppd, sizeof(ppdname));
+ }
+ else
+ strlcpy(ppdname, "Unknown", sizeof(ppdname));
+ }
+ else
+ strlcpy(ppdname, "Unknown", sizeof(ppdname));
+ }
+
+ if ((attr = ippFindAttribute(response, "media-size-supported", IPP_TAG_BEGIN_COLLECTION)) != NULL)
+ {
+ cupsFilePrintf(fp, "*OpenUI *PageSize: PickOne\n"
+ "*OrderDependency: 10 AnySetup *PageSize\n"
+ "*DefaultPageSize: %s\n", ppdname);
+ for (i = 0, count = ippGetCount(attr); i < count; i ++)
+ {
+ media_size = ippGetCollection(attr, i);
+ x_dim = ippFindAttribute(media_size, "x-dimension", IPP_TAG_INTEGER);
+ y_dim = ippFindAttribute(media_size, "y-dimension", IPP_TAG_INTEGER);
+
+ if (x_dim && y_dim)
+ {
+ char twidth[256], /* Width string */
+ tlength[256]; /* Length string */
+
+ pwg = pwgMediaForSize(ippGetInteger(x_dim, 0), ippGetInteger(y_dim, 0));
+
+ _cupsStrFormatd(twidth, twidth + sizeof(twidth), pwg->width * 72.0 / 2540.0, loc);
+ _cupsStrFormatd(tlength, tlength + sizeof(tlength), pwg->length * 72.0 / 2540.0, loc);
+
+ cupsFilePrintf(fp, "*PageSize %s: \"<</PageSize[%s %s]>>setpagedevice\"\n", pwg->ppd, twidth, tlength);
+ }
+ }
+ cupsFilePuts(fp, "*CloseUI: *PageSize\n");
+
+ cupsFilePrintf(fp, "*OpenUI *PageRegion: PickOne\n"
+ "*OrderDependency: 10 AnySetup *PageRegion\n"
+ "*DefaultPageRegion: %s\n", ppdname);
+ for (i = 0, count = ippGetCount(attr); i < count; i ++)
+ {
+ media_size = ippGetCollection(attr, i);
+ x_dim = ippFindAttribute(media_size, "x-dimension", IPP_TAG_INTEGER);
+ y_dim = ippFindAttribute(media_size, "y-dimension", IPP_TAG_INTEGER);
+
+ if (x_dim && y_dim)
+ {
+ char twidth[256], /* Width string */
+ tlength[256]; /* Length string */
+
+ pwg = pwgMediaForSize(ippGetInteger(x_dim, 0), ippGetInteger(y_dim, 0));
+
+ _cupsStrFormatd(twidth, twidth + sizeof(twidth), pwg->width * 72.0 / 2540.0, loc);
+ _cupsStrFormatd(tlength, tlength + sizeof(tlength), pwg->length * 72.0 / 2540.0, loc);
+
+ cupsFilePrintf(fp, "*PageRegion %s: \"<</PageSize[%s %s]>>setpagedevice\"\n", pwg->ppd, twidth, tlength);
+ }
+ }
+ cupsFilePuts(fp, "*CloseUI: *PageRegion\n");
+
+ cupsFilePrintf(fp, "*DefaultImageableArea: %s\n"
+ "*DefaultPaperDimension: %s\n", ppdname, ppdname);
+ for (i = 0, count = ippGetCount(attr); i < count; i ++)
+ {
+ media_size = ippGetCollection(attr, i);
+ x_dim = ippFindAttribute(media_size, "x-dimension", IPP_TAG_INTEGER);
+ y_dim = ippFindAttribute(media_size, "y-dimension", IPP_TAG_INTEGER);
+
+ if (x_dim && y_dim)
+ {
+ char tleft[256], /* Left string */
+ tbottom[256], /* Bottom string */
+ tright[256], /* Right string */
+ ttop[256], /* Top string */
+ twidth[256], /* Width string */
+ tlength[256]; /* Length string */
+
+ pwg = pwgMediaForSize(ippGetInteger(x_dim, 0), ippGetInteger(y_dim, 0));
+
+ _cupsStrFormatd(tleft, tleft + sizeof(tleft), left * 72.0 / 2540.0, loc);
+ _cupsStrFormatd(tbottom, tbottom + sizeof(tbottom), bottom * 72.0 / 2540.0, loc);
+ _cupsStrFormatd(tright, tright + sizeof(tright), (pwg->width - right) * 72.0 / 2540.0, loc);
+ _cupsStrFormatd(ttop, ttop + sizeof(ttop), (pwg->length - top) * 72.0 / 2540.0, loc);
+ _cupsStrFormatd(twidth, twidth + sizeof(twidth), pwg->width * 72.0 / 2540.0, loc);
+ _cupsStrFormatd(tlength, tlength + sizeof(tlength), pwg->length * 72.0 / 2540.0, loc);
+
+ cupsFilePrintf(fp, "*ImageableArea %s: \"%s %s %s %s\"\n", pwg->ppd, tleft, tbottom, tright, ttop);
+ cupsFilePrintf(fp, "*PaperDimension %s: \"%s %s\"\n", pwg->ppd, twidth, tlength);
+ }
+ }
+ }
+
+ /*
+ * InputSlot...
+ */
+
+ if ((attr = ippFindAttribute(ippGetCollection(defattr, 0), "media-source", IPP_TAG_KEYWORD)) != NULL)
+ pwg_ppdize_name(ippGetString(attr, 0, NULL), ppdname, sizeof(ppdname));
+ else
+ strlcpy(ppdname, "Unknown", sizeof(ppdname));
+
+ if ((attr = ippFindAttribute(response, "media-source-supported", IPP_TAG_KEYWORD)) != NULL && (count = ippGetCount(attr)) > 1)
+ {
+ static const char * const sources[][2] =
+ {
+ { "Auto", "Automatic" },
+ { "Main", "Main" },
+ { "Alternate", "Alternate" },
+ { "LargeCapacity", "Large Capacity" },
+ { "Manual", "Manual" },
+ { "Envelope", "Envelope" },
+ { "Disc", "Disc" },
+ { "Photo", "Photo" },
+ { "Hagaki", "Hagaki" },
+ { "MainRoll", "Main Roll" },
+ { "AlternateRoll", "Alternate Roll" },
+ { "Top", "Top" },
+ { "Middle", "Middle" },
+ { "Bottom", "Bottom" },
+ { "Side", "Side" },
+ { "Left", "Left" },
+ { "Right", "Right" },
+ { "Center", "Center" },
+ { "Rear", "Rear" },
+ { "ByPassTray", "Multipurpose" },
+ { "Tray1", "Tray 1" },
+ { "Tray2", "Tray 2" },
+ { "Tray3", "Tray 3" },
+ { "Tray4", "Tray 4" },
+ { "Tray5", "Tray 5" },
+ { "Tray6", "Tray 6" },
+ { "Tray7", "Tray 7" },
+ { "Tray8", "Tray 8" },
+ { "Tray9", "Tray 9" },
+ { "Tray10", "Tray 10" },
+ { "Tray11", "Tray 11" },
+ { "Tray12", "Tray 12" },
+ { "Tray13", "Tray 13" },
+ { "Tray14", "Tray 14" },
+ { "Tray15", "Tray 15" },
+ { "Tray16", "Tray 16" },
+ { "Tray17", "Tray 17" },
+ { "Tray18", "Tray 18" },
+ { "Tray19", "Tray 19" },
+ { "Tray20", "Tray 20" },
+ { "Roll1", "Roll 1" },
+ { "Roll2", "Roll 2" },
+ { "Roll3", "Roll 3" },
+ { "Roll4", "Roll 4" },
+ { "Roll5", "Roll 5" },
+ { "Roll6", "Roll 6" },
+ { "Roll7", "Roll 7" },
+ { "Roll8", "Roll 8" },
+ { "Roll9", "Roll 9" },
+ { "Roll10", "Roll 10" }
+ };
+
+ cupsFilePrintf(fp, "*OpenUI *InputSlot: PickOne\n"
+ "*OrderDependency: 10 AnySetup *InputSlot\n"
+ "*DefaultInputSlot: %s\n", ppdname);
+ for (i = 0, count = ippGetCount(attr); i < count; i ++)
+ {
+ pwg_ppdize_name(ippGetString(attr, i, NULL), ppdname, sizeof(ppdname));
+
+ for (j = 0; j < (int)(sizeof(sources) / sizeof(sources[0])); j ++)
+ if (!strcmp(sources[j][0], ppdname))
+ {
+ cupsFilePrintf(fp, "*InputSlot %s/%s: \"<</MediaPosition %d>>setpagedevice\"\n", ppdname, sources[j][1], j);
+ break;
+ }
+ }
+ cupsFilePuts(fp, "*CloseUI: *InputSlot\n");
+ }
+
+ /*
+ * MediaType...
+ */
+
+ if ((attr = ippFindAttribute(ippGetCollection(defattr, 0), "media-type", IPP_TAG_KEYWORD)) != NULL)
+ pwg_ppdize_name(ippGetString(attr, 0, NULL), ppdname, sizeof(ppdname));
+ else
+ strlcpy(ppdname, "Unknown", sizeof(ppdname));
+
+ if ((attr = ippFindAttribute(response, "media-type-supported", IPP_TAG_KEYWORD)) != NULL && (count = ippGetCount(attr)) > 1)
+ {
+ static const char * const types[][2] =
+ { /* Media type strings (far from complete) */
+ { "Auto", "Automatic" },
+ { "Cardstock", "Cardstock" },
+ { "Disc", "CD/DVD/Bluray" },
+ { "Envelope", "Envelope" },
+ { "Labels", "Label" },
+ { "Other", "Other" },
+ { "Photographic", "Photo" },
+ { "PhotographicGlossy", "Glossy Photo" },
+ { "PhotographicHighGloss", "High-Gloss Photo" },
+ { "PhotographicMatte", "Matte Photo" },
+ { "PhotographicSatin", "Satin Photo" },
+ { "PhotographicSemiGloss", "Semi-Gloss Photo" },
+ { "Stationery", "Plain Paper" },
+ { "StationeryLetterhead", "Letterhead" },
+ { "Transparency", "Transparency" }
+ };
+
+ cupsFilePrintf(fp, "*OpenUI *MediaType: PickOne\n"
+ "*OrderDependency: 10 AnySetup *MediaType\n"
+ "*DefaultMediaType: %s\n", ppdname);
+ for (i = 0, count = ippGetCount(attr); i < count; i ++)
+ {
+ pwg_ppdize_name(ippGetString(attr, i, NULL), ppdname, sizeof(ppdname));
+
+ for (j = 0; j < (int)(sizeof(types) / sizeof(types[0])); j ++)
+ if (!strcmp(types[j][0], ppdname))
+ {
+ cupsFilePrintf(fp, "*MediaType %s/%s: \"<</MediaType(%s)>>setpagedevice\"\n", ppdname, types[j][1], ppdname);
+ break;
+ }
+
+ if (j >= (int)(sizeof(types) / sizeof(types[0])))
+ cupsFilePrintf(fp, "*MediaType %s: \"<</MediaType(%s)>>setpagedevice\"\n", ppdname, ppdname);
+
+ }
+ cupsFilePuts(fp, "*CloseUI: *MediaType\n");
+ }
+
+ /*
+ * ColorModel...
+ */
+
+ if ((attr = ippFindAttribute(response, "pwg-raster-document-type-supported", IPP_TAG_KEYWORD)) == NULL)
+ attr = ippFindAttribute(response, "print-color-mode-supported", IPP_TAG_KEYWORD);
+
+ if (attr)
+ {
+ const char *default_color = NULL; /* Default */
+
+ for (i = 0, count = ippGetCount(attr); i < count; i ++)
+ {
+ const char *keyword = ippGetString(attr, i, NULL);
+ /* Keyword for color/bit depth */
+
+ if (!strcmp(keyword, "black_1") || !strcmp(keyword, "bi-level") || !strcmp(keyword, "process-bi-level"))
+ {
+ if (!default_color)
+ cupsFilePuts(fp, "*OpenUI *ColorModel/Color Mode: PickOne\n"
+ "*OrderDependency: 10 AnySetup *ColorModel\n");
+
+ cupsFilePuts(fp, "*ColorModel FastGray/Fast Grayscale: \"<</cupsColorSpace 3/cupsBitsPerColor 1/cupsColorOrder 0/cupsCompression 0>>setpagedevice\"\n");
+
+ if (!default_color)
+ default_color = "FastGray";
+ }
+ else if (!strcmp(keyword, "sgray_8") || !strcmp(keyword, "monochrome") || !strcmp(keyword, "process-monochrome"))
+ {
+ if (!default_color)
+ cupsFilePuts(fp, "*OpenUI *ColorModel/Color Mode: PickOne\n"
+ "*OrderDependency: 10 AnySetup *ColorModel\n");
+
+ cupsFilePuts(fp, "*ColorModel Gray/Grayscale: \"<</cupsColorSpace 18/cupsBitsPerColor 8/cupsColorOrder 0/cupsCompression 0>>setpagedevice\"\n");
+
+ if (!default_color || !strcmp(default_color, "FastGray"))
+ default_color = "Gray";
+ }
+ else if (!strcmp(keyword, "srgb_8") || !strcmp(keyword, "color"))
+ {
+ if (!default_color)
+ cupsFilePuts(fp, "*OpenUI *ColorModel/Color Mode: PickOne\n"
+ "*OrderDependency: 10 AnySetup *ColorModel\n");
+
+ cupsFilePuts(fp, "*ColorModel RGB/Color: \"<</cupsColorSpace 19/cupsBitsPerColor 8/cupsColorOrder 0/cupsCompression 0>>setpagedevice\"\n");
+
+ default_color = "RGB";
+ }
+ }
+
+ if (default_color)
+ {
+ cupsFilePrintf(fp, "*DefaultColorModel: %s\n", default_color);
+ cupsFilePuts(fp, "*CloseUI: *ColorModel\n");
+ }
+ }
+
+ /*
+ * Duplex...
+ */
+
+ if ((attr = ippFindAttribute(response, "sides-supported", IPP_TAG_KEYWORD)) != NULL && ippContainsString(attr, "two-sided-long-edge"))
+ {
+ cupsFilePuts(fp, "*OpenUI *Duplex/2-Sided Printing: PickOne\n"
+ "*OrderDependency: 10 AnySetup *Duplex\n"
+ "*DefaultDuplex: None\n"
+ "*Duplex None/Off (1-Sided): \"<</Duplex false>>setpagedevice\"\n"
+ "*Duplex DuplexNoTumble/Long-Edge (Portrait): \"<</Duplex true/Tumble false>>setpagedevice\"\n"
+ "*Duplex DuplexTumble/Short-Edge (Landscape): \"<</Duplex true/Tumble true>>setpagedevice\"\n"
+ "*CloseUI: *Duplex\n");
+
+ if ((attr = ippFindAttribute(response, "pwg-raster-document-sheet-back", IPP_TAG_KEYWORD)) != NULL)
+ {
+ const char *keyword = ippGetString(attr, 0, NULL);
+ /* Keyword value */
+
+ if (!strcmp(keyword, "flipped"))
+ cupsFilePuts(fp, "*cupsBackSide: Flipped\n");
+ else if (!strcmp(keyword, "manual-tumble"))
+ cupsFilePuts(fp, "*cupsBackSide: ManualTumble\n");
+ else if (!strcmp(keyword, "normal"))
+ cupsFilePuts(fp, "*cupsBackSide: Normal\n");
+ else
+ cupsFilePuts(fp, "*cupsBackSide: Rotated\n");
+ }
+ else if ((attr = ippFindAttribute(response, "urf-supported", IPP_TAG_KEYWORD)) != NULL)
+ {
+ for (i = 0, count = ippGetCount(attr); i < count; i ++)
+ {
+ const char *dm = ippGetString(attr, i, NULL);
+ /* DM value */
+
+ if (!_cups_strcasecmp(dm, "DM1"))
+ {
+ cupsFilePuts(fp, "*cupsBackSide: Normal\n");
+ break;
+ }
+ else if (!_cups_strcasecmp(dm, "DM2"))
+ {
+ cupsFilePuts(fp, "*cupsBackSide: Flipped\n");
+ break;
+ }
+ else if (!_cups_strcasecmp(dm, "DM3"))
+ {
+ cupsFilePuts(fp, "*cupsBackSide: Rotated\n");
+ break;
+ }
+ else if (!_cups_strcasecmp(dm, "DM4"))
+ {
+ cupsFilePuts(fp, "*cupsBackSide: ManualTumble\n");
+ break;
+ }
+ }
+ }
+ }
+
+ /*
+ * cupsPrintQuality and DefaultResolution...
+ */
+
+ if ((attr = ippFindAttribute(response, "pwg-raster-document-resolution-supported", IPP_TAG_RESOLUTION)) != NULL)
+ {
+ count = ippGetCount(attr);
+
+ pwg_ppdize_resolution(attr, count / 2, &xres, &yres, ppdname, sizeof(ppdname));
+ cupsFilePrintf(fp, "*DefaultResolution: %s\n", ppdname);
+
+ cupsFilePuts(fp, "*OpenUI *cupsPrintQuality/Print Quality: PickOne\n"
+ "*OrderDependency: 10 AnySetup *cupsPrintQuality\n"
+ "*DefaultcupsPrintQuality: Normal\n");
+ if (count > 2)
+ {
+ pwg_ppdize_resolution(attr, 0, &xres, &yres, NULL, 0);
+ cupsFilePrintf(fp, "*cupsPrintQuality Draft: \"<</HWResolution[%d %d]>>setpagedevice\"\n", xres, yres);
+ }
+ pwg_ppdize_resolution(attr, count / 2, &xres, &yres, NULL, 0);
+ cupsFilePrintf(fp, "*cupsPrintQuality Normal: \"<</HWResolution[%d %d]>>setpagedevice\"\n", xres, yres);
+ if (count > 1)
+ {
+ pwg_ppdize_resolution(attr, count - 1, &xres, &yres, NULL, 0);
+ cupsFilePrintf(fp, "*cupsPrintQuality High: \"<</HWResolution[%d %d]>>setpagedevice\"\n", xres, yres);
+ }
+
+ cupsFilePuts(fp, "*CloseUI: *cupsPrintQuality\n");
+ }
+ else if ((attr = ippFindAttribute(response, "urf-supported", IPP_TAG_KEYWORD)) != NULL)
+ {
+ int lowdpi = 0, hidpi = 0; /* Lower and higher resolution */
+
+ for (i = 0, count = ippGetCount(attr); i < count; i ++)
+ {
+ const char *rs = ippGetString(attr, i, NULL);
+ /* RS value */
+
+ if (_cups_strncasecmp(rs, "RS", 2))
+ continue;
+
+ lowdpi = atoi(rs + 2);
+ if ((rs = strrchr(rs, '-')) != NULL)
+ hidpi = atoi(rs + 1);
+ else
+ hidpi = lowdpi;
+ break;
+ }
+
+ if (lowdpi == 0)
+ {
+ /*
+ * Invalid "urf-supported" value...
+ */
+
+ cupsFilePuts(fp, "*DefaultResolution: 300dpi\n");
+ }
+ else
+ {
+ /*
+ * Generate print qualities based on low and high DPIs...
+ */
+
+ cupsFilePrintf(fp, "*DefaultResolution: %ddpi\n", lowdpi);
+
+ cupsFilePuts(fp, "*OpenUI *cupsPrintQuality/Print Quality: PickOne\n"
+ "*OrderDependency: 10 AnySetup *cupsPrintQuality\n"
+ "*DefaultcupsPrintQuality: Normal\n");
+ if ((lowdpi & 1) == 0)
+ cupsFilePrintf(fp, "*cupsPrintQuality Draft: \"<</HWResolution[%d %d]>>setpagedevice\"\n", lowdpi, lowdpi / 2);
+ cupsFilePrintf(fp, "*cupsPrintQuality Normal: \"<</HWResolution[%d %d]>>setpagedevice\"\n", lowdpi, lowdpi);
+ if (hidpi > lowdpi)
+ cupsFilePrintf(fp, "*cupsPrintQuality High: \"<</HWResolution[%d %d]>>setpagedevice\"\n", hidpi, hidpi);
+ cupsFilePuts(fp, "*CloseUI: *cupsPrintQuality\n");
+ }
+ }
+ else if ((attr = ippFindAttribute(response, "printer-resolution-default", IPP_TAG_RESOLUTION)) != NULL)
+ {
+ pwg_ppdize_resolution(attr, 0, &xres, &yres, ppdname, sizeof(ppdname));
+ cupsFilePrintf(fp, "*DefaultResolution: %s\n", ppdname);
+ }
+ else
+ cupsFilePuts(fp, "*DefaultResolution: 300dpi\n");
+
+ /*
+ * Close up and return...
+ */
+
+ cupsFileClose(fp);
+
+ return (buffer);
+}
+
+
+/*
* '_pwgInputSlotForSource()' - Get the InputSlot name for the given PWG
* media-source.
*/
@@ -2677,6 +3591,41 @@ pwg_ppdize_name(const char *ipp, /* I - IPP keyword */
}
+
+/*
+ * 'pwg_ppdize_resolution()' - Convert PWG resolution values to PPD values.
+ */
+
+static void
+pwg_ppdize_resolution(
+ ipp_attribute_t *attr, /* I - Attribute to convert */
+ int element, /* I - Element to convert */
+ int *xres, /* O - X resolution in DPI */
+ int *yres, /* O - Y resolution in DPI */
+ char *name, /* I - Name buffer */
+ size_t namesize) /* I - Size of name buffer */
+{
+ ipp_res_t units; /* Units for resolution */
+
+
+ *xres = ippGetResolution(attr, element, yres, &units);
+
+ if (units == IPP_RES_PER_CM)
+ {
+ *xres = (int)(*xres * 2.54);
+ *yres = (int)(*yres * 2.54);
+ }
+
+ if (name && namesize > 4)
+ {
+ if (*xres == *yres)
+ snprintf(name, namesize, "%ddpi", *xres);
+ else
+ snprintf(name, namesize, "%dx%ddpi", *xres, *yres);
+ }
+}
+
+
/*
* 'pwg_unppdize_name()' - Convert a PPD keyword to a lowercase IPP keyword.
*/
@@ -2731,5 +3680,5 @@ pwg_unppdize_name(const char *ppd, /* I - PPD keyword */
/*
- * End of "$Id: ppd-cache.c 12434 2015-01-28 16:29:06Z msweet $".
+ * End of "$Id: ppd-cache.c 12722 2015-06-08 22:00:19Z msweet $".
*/
diff --git a/cups/ppd-private.h b/cups/ppd-private.h
index c1376d2cb..f6f63294f 100644
--- a/cups/ppd-private.h
+++ b/cups/ppd-private.h
@@ -1,9 +1,9 @@
/*
- * "$Id: ppd-private.h 11558 2014-02-06 18:33:34Z msweet $"
+ * "$Id: ppd-private.h 12722 2015-06-08 22:00:19Z msweet $"
*
* Private PPD definitions for CUPS.
*
- * Copyright 2007-2014 by Apple Inc.
+ * Copyright 2007-2015 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
@@ -49,7 +49,7 @@ extern "C" {
* Constants...
*/
-# define _PPD_CACHE_VERSION 6 /* Version number in cache file */
+# define _PPD_CACHE_VERSION 7 /* Version number in cache file */
/*
@@ -155,6 +155,7 @@ struct _ppd_cache_s /**** PPD cache and PWG conversion data ****/
* Prototypes...
*/
+extern int _cupsConvertOptions(ipp_t *request, ppd_file_t *ppd, _ppd_cache_t *pc, ipp_attribute_t *media_col_sup, ipp_attribute_t *doc_handling_sup, ipp_attribute_t *print_color_mode_sup, const char *user, const char *format, int copies, int num_options, cups_option_t *options);
extern _ppd_cache_t *_ppdCacheCreateWithFile(const char *filename,
ipp_t **attrs);
extern _ppd_cache_t *_ppdCacheCreateWithPPD(ppd_file_t *ppd);
@@ -187,6 +188,7 @@ extern const char *_ppdCacheGetType(_ppd_cache_t *pc,
const char *media_type);
extern int _ppdCacheWriteFile(_ppd_cache_t *pc,
const char *filename, ipp_t *attrs);
+extern char *_ppdCreateFromIPP(char *buffer, size_t bufsize, ipp_t *response);
extern void _ppdFreeLanguages(cups_array_t *languages);
extern cups_encoding_t _ppdGetEncoding(const char *name);
extern cups_array_t *_ppdGetLanguages(ppd_file_t *ppd);
@@ -221,5 +223,5 @@ extern const char *_pwgPageSizeForMedia(pwg_media_t *media,
#endif /* !_CUPS_PPD_PRIVATE_H_ */
/*
- * End of "$Id: ppd-private.h 11558 2014-02-06 18:33:34Z msweet $".
+ * End of "$Id: ppd-private.h 12722 2015-06-08 22:00:19Z msweet $".
*/
diff --git a/cups/test.ppd b/cups/test.ppd
index fc453a649..1f64fe55e 100644
--- a/cups/test.ppd
+++ b/cups/test.ppd
@@ -14,7 +14,7 @@
*%
*% Copyright 2007-2010 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"
@@ -22,7 +22,7 @@
*% file is missing or damaged, see the license at "http://www.cups.org/".
*FormatVersion: "4.3"
*FileVersion: "1.3"
-*LanguageVersion: English
+*LanguageVersion: English
*LanguageEncoding: ISOLatin1
*PCFileName: "TEST.PPD"
*Manufacturer: "ESP"
@@ -104,7 +104,7 @@
*fr_CA.PageRegion A4/French Canadian A4: ""
*fr_CA.PageRegion Env10/French Canadian #10 Envelope: ""
-*DefaultImageableArea: Letter
+*DefaultImageableArea: Letter
*ImageableArea Letter: "18 36 594 756"
*ImageableArea Letter.Banner: "18 0 594 792"
*ImageableArea Letter.Fullbleed: "0 0 612 792"
@@ -145,6 +145,15 @@
*MediaType Transparency/Transparency Film: "MediaType=Transparency"
*CloseUI: *MediaType
+*OpenUI *OutputBin/Output Tray: PickOne
+*OrderDependency: 25 AnySetup *OutputBin
+*DefaultOutputBin: Tray1
+*OutputBin Auto/Automatic Tray: "OutputBin=Auto"
+*OutputBin Tray1/Tray 1: "OutputBin=Tray1"
+*OutputBin Tray2/Tray 2: "OutputBin=Tray2"
+*OutputBin MainTray/Main Tray: "OutputBin=MainTray"
+*CloseUI: *OutputBin
+
*OpenUI *Duplex/2-Sided Printing: PickOne
*OrderDependency: 10 DocumentSetup *Duplex
*DefaultDuplex: None
diff --git a/cups/testfile.c b/cups/testfile.c
index 16e52c3e6..61db0807b 100644
--- a/cups/testfile.c
+++ b/cups/testfile.c
@@ -1,5 +1,5 @@
/*
- * "$Id: testfile.c 12578 2015-03-30 19:07:29Z msweet $"
+ * "$Id: testfile.c 12577 2015-03-30 19:07:17Z msweet $"
*
* File test program for CUPS.
*
@@ -825,5 +825,5 @@ read_write_tests(int compression) /* I - Use compression? */
/*
- * End of "$Id: testfile.c 12578 2015-03-30 19:07:29Z msweet $".
+ * End of "$Id: testfile.c 12577 2015-03-30 19:07:17Z msweet $".
*/
diff --git a/cups/testhttp.c b/cups/testhttp.c
index cd8cb5e37..cb5345ff3 100644
--- a/cups/testhttp.c
+++ b/cups/testhttp.c
@@ -1,5 +1,5 @@
/*
- * "$Id: testhttp.c 12028 2014-07-15 14:01:27Z msweet $"
+ * "$Id: testhttp.c 12678 2015-05-28 19:09:48Z msweet $"
*
* HTTP test program for CUPS.
*
@@ -645,7 +645,6 @@ main(int argc, /* I - Number of command-line arguments */
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);
@@ -890,5 +889,5 @@ main(int argc, /* I - Number of command-line arguments */
/*
- * End of "$Id: testhttp.c 12028 2014-07-15 14:01:27Z msweet $".
+ * End of "$Id: testhttp.c 12678 2015-05-28 19:09:48Z msweet $".
*/
diff --git a/cups/testppd.c b/cups/testppd.c
index d85810618..dbd896e3f 100644
--- a/cups/testppd.c
+++ b/cups/testppd.c
@@ -1,9 +1,9 @@
/*
- * "$Id: testppd.c 12604 2015-05-06 01:43:05Z msweet $"
+ * "$Id: testppd.c 12603 2015-05-06 01:42:51Z msweet $"
*
* PPD test program for CUPS.
*
- * Copyright 2007-2014 by Apple Inc.
+ * Copyright 2007-2015 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -51,6 +51,11 @@ static const char *default_code =
"%%EndFeature\n"
"} stopped cleartomark\n"
"[{\n"
+ "%%BeginFeature: *OutputBin Tray1\n"
+ "OutputBin=Tray1\n"
+ "%%EndFeature\n"
+ "} stopped cleartomark\n"
+ "[{\n"
"%%BeginFeature: *MediaType Plain\n"
"MediaType=Plain\n"
"%%EndFeature\n"
@@ -80,6 +85,11 @@ static const char *custom_code =
"%%EndFeature\n"
"} stopped cleartomark\n"
"[{\n"
+ "%%BeginFeature: *OutputBin Tray1\n"
+ "OutputBin=Tray1\n"
+ "%%EndFeature\n"
+ "} stopped cleartomark\n"
+ "[{\n"
"%%BeginFeature: *IntOption None\n"
"%%EndFeature\n"
"} stopped cleartomark\n"
@@ -853,6 +863,47 @@ main(int argc, /* I - Number of command-line arguments */
status ++;
}
}
+ else if (!strncmp(argv[1], "ipp://", 6) || !strncmp(argv[1], "ipps://", 7))
+ {
+ /*
+ * ipp://... or ipps://...
+ */
+
+ http_t *http; /* Connection to printer */
+ ipp_t *request, /* Get-Printer-Attributes request */
+ *response; /* Get-Printer-Attributes response */
+ char scheme[32], /* URI scheme */
+ userpass[256], /* Username:password */
+ host[256], /* Hostname */
+ resource[256]; /* Resource path */
+ int port; /* Port number */
+
+ if (httpSeparateURI(HTTP_URI_CODING_ALL, argv[1], scheme, sizeof(scheme), userpass, sizeof(userpass), host, sizeof(host), &port, resource, sizeof(resource)) < HTTP_URI_STATUS_OK)
+ {
+ printf("Bad URI \"%s\".\n", argv[1]);
+ return (1);
+ }
+
+ http = httpConnect2(host, port, NULL, AF_UNSPEC, !strcmp(scheme, "ipps") ? HTTP_ENCRYPTION_ALWAYS : HTTP_ENCRYPTION_IF_REQUESTED, 1, 30000, NULL);
+ if (!http)
+ {
+ printf("Unable to connect to \"%s:%d\": %s\n", host, port, cupsLastErrorString());
+ return (1);
+ }
+
+ request = ippNewRequest(IPP_OP_GET_PRINTER_ATTRIBUTES);
+ ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri", NULL, argv[1]);
+ response = cupsDoRequest(http, request, resource);
+
+ if (_ppdCreateFromIPP(buffer, sizeof(buffer), response))
+ printf("Created PPD: %s\n", buffer);
+ else
+ puts("Unable to create PPD.");
+
+ ippDelete(response);
+ httpClose(http);
+ return (0);
+ }
else
{
const char *filename; /* PPD filename */
@@ -1119,5 +1170,5 @@ main(int argc, /* I - Number of command-line arguments */
/*
- * End of "$Id: testppd.c 12604 2015-05-06 01:43:05Z msweet $".
+ * End of "$Id: testppd.c 12603 2015-05-06 01:42:51Z msweet $".
*/
diff --git a/cups/tls-darwin.c b/cups/tls-darwin.c
index 02a44045d..377919dda 100644
--- a/cups/tls-darwin.c
+++ b/cups/tls-darwin.c
@@ -1,5 +1,5 @@
/*
- * "$Id: tls-darwin.c 12481 2015-02-03 12:45:14Z msweet $"
+ * "$Id: tls-darwin.c 12675 2015-05-28 01:14:32Z msweet $"
*
* TLS support code for CUPS on OS X.
*
@@ -27,14 +27,6 @@ extern char **environ;
/*
- * Test define - set to 1 to use SSLSetEnabledCiphers. Currently disabled (0)
- * because of <rdar://problem/18707430>.
- */
-
-#define USE_SET_ENABLED_CIPHERS 0
-
-
-/*
* Local globals...
*/
@@ -49,8 +41,8 @@ static char *tls_keypath = NULL;
/* Server cert keychain path */
static _cups_mutex_t tls_mutex = _CUPS_MUTEX_INITIALIZER;
/* Mutex for keychain/certs */
-static int tls_options = 0;/* Options for TLS connections */
#endif /* HAVE_SECKEYCHAINOPEN */
+static int tls_options = -1;/* Options for TLS connections */
/*
@@ -1017,7 +1009,14 @@ _httpTLSStart(http_t *http) /* I - HTTP connection */
http_credential_t *credential; /* Credential data */
- DEBUG_printf(("7_httpTLSStart(http=%p)", http));
+ DEBUG_printf(("3_httpTLSStart(http=%p)", http));
+
+ if (tls_options < 0)
+ {
+ DEBUG_puts("4_httpTLSStart: Setting defaults.");
+ _cupsSetDefaults();
+ DEBUG_printf(("4_httpTLSStart: tls_options=%x", tls_options));
+ }
#ifdef HAVE_SECKEYCHAINOPEN
if (http->mode == _HTTP_MODE_SERVER && !tls_keychain)
@@ -1061,11 +1060,20 @@ _httpTLSStart(http_t *http) /* I - HTTP connection */
if (!error)
{
- error = SSLSetProtocolVersionMin(http->tls, (tls_options & _HTTP_TLS_ALLOW_SSL3) ? kSSLProtocol3 : kTLSProtocol1);
- DEBUG_printf(("4_httpTLSStart: SSLSetProtocolVersionMin, error=%d", (int)error));
+ SSLProtocol minProtocol;
+
+ if (tls_options & _HTTP_TLS_DENY_TLS10)
+ minProtocol = kTLSProtocol11;
+ else if (tls_options & _HTTP_TLS_ALLOW_SSL3)
+ minProtocol = kSSLProtocol3;
+ else
+ minProtocol = kTLSProtocol1;
+
+ error = SSLSetProtocolVersionMin(http->tls, minProtocol);
+ DEBUG_printf(("4_httpTLSStart: SSLSetProtocolVersionMin(%d), error=%d", minProtocol, (int)error));
}
-# if USE_SET_ENABLED_CIPHERS
+# if HAVE_SSLSETENABLEDCIPHERS
if (!error)
{
SSLCipherSuite supported[100]; /* Supported cipher suites */
@@ -1130,6 +1138,7 @@ _httpTLSStart(http_t *http) /* I - HTTP connection */
case TLS_RSA_PSK_WITH_NULL_SHA256 :
case TLS_RSA_PSK_WITH_NULL_SHA384 :
case SSL_RSA_WITH_DES_CBC_MD5 :
+ DEBUG_printf(("4_httpTLSStart: Excluding insecure cipher suite %d", supported[i]));
break;
/* RC4 cipher suites that should only be used as a last resort */
@@ -1144,8 +1153,52 @@ _httpTLSStart(http_t *http) /* I - HTTP connection */
case TLS_RSA_PSK_WITH_RC4_128_SHA :
if (tls_options & _HTTP_TLS_ALLOW_RC4)
enabled[num_enabled ++] = supported[i];
+ else
+ DEBUG_printf(("4_httpTLSStart: Excluding RC4 cipher suite %d", supported[i]));
break;
+ /* DH/DHE cipher suites that are problematic with parameters < 1024 bits */
+ case TLS_DH_DSS_WITH_AES_128_CBC_SHA :
+ case TLS_DH_RSA_WITH_AES_128_CBC_SHA :
+ case TLS_DHE_DSS_WITH_AES_128_CBC_SHA :
+ case TLS_DHE_RSA_WITH_AES_128_CBC_SHA :
+ case TLS_DH_DSS_WITH_AES_256_CBC_SHA :
+ case TLS_DH_RSA_WITH_AES_256_CBC_SHA :
+ case TLS_DHE_DSS_WITH_AES_256_CBC_SHA :
+ case TLS_DHE_RSA_WITH_AES_256_CBC_SHA :
+ case TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA :
+ case TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA :
+// case TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA :
+ case TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA :
+ case TLS_DH_DSS_WITH_AES_128_CBC_SHA256 :
+ case TLS_DH_RSA_WITH_AES_128_CBC_SHA256 :
+ case TLS_DHE_DSS_WITH_AES_128_CBC_SHA256 :
+ case TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 :
+ case TLS_DH_DSS_WITH_AES_256_CBC_SHA256 :
+ case TLS_DH_RSA_WITH_AES_256_CBC_SHA256 :
+ case TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 :
+ case TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 :
+ case TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA :
+ case TLS_DHE_PSK_WITH_AES_128_CBC_SHA :
+ case TLS_DHE_PSK_WITH_AES_256_CBC_SHA :
+// case TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 :
+// case TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 :
+ case TLS_DH_RSA_WITH_AES_128_GCM_SHA256 :
+ case TLS_DH_RSA_WITH_AES_256_GCM_SHA384 :
+// case TLS_DHE_DSS_WITH_AES_128_GCM_SHA256 :
+// case TLS_DHE_DSS_WITH_AES_256_GCM_SHA384 :
+ case TLS_DH_DSS_WITH_AES_128_GCM_SHA256 :
+ case TLS_DH_DSS_WITH_AES_256_GCM_SHA384 :
+ case TLS_DHE_PSK_WITH_AES_128_GCM_SHA256 :
+ case TLS_DHE_PSK_WITH_AES_256_GCM_SHA384 :
+ case TLS_DHE_PSK_WITH_AES_128_CBC_SHA256 :
+ case TLS_DHE_PSK_WITH_AES_256_CBC_SHA384 :
+ if (tls_options & _HTTP_TLS_ALLOW_DH)
+ enabled[num_enabled ++] = supported[i];
+ else
+ DEBUG_printf(("4_httpTLSStart: Excluding DH/DHE cipher suite %d", supported[i]));
+ break;
+
/* Anything else we'll assume is secure */
default :
enabled[num_enabled ++] = supported[i];
@@ -1157,7 +1210,7 @@ _httpTLSStart(http_t *http) /* I - HTTP connection */
error = SSLSetEnabledCiphers(http->tls, enabled, num_enabled);
}
}
-#endif /* USE_SET_ENABLED_CIPHERS */
+#endif /* HAVE_SSLSETENABLEDCIPHERS */
if (!error && http->mode == _HTTP_MODE_CLIENT)
{
@@ -1782,5 +1835,5 @@ http_cdsa_write(
/*
- * End of "$Id: tls-darwin.c 12481 2015-02-03 12:45:14Z msweet $".
+ * End of "$Id: tls-darwin.c 12675 2015-05-28 01:14:32Z msweet $".
*/
diff --git a/cups/tls-gnutls.c b/cups/tls-gnutls.c
index 00ff2234c..3da05e281 100644
--- a/cups/tls-gnutls.c
+++ b/cups/tls-gnutls.c
@@ -1,5 +1,5 @@
/*
- * "$Id: tls-gnutls.c 12481 2015-02-03 12:45:14Z msweet $"
+ * "$Id: tls-gnutls.c 12670 2015-05-27 19:48:05Z msweet $"
*
* TLS support code for CUPS using GNU TLS.
*
@@ -36,7 +36,7 @@ static char *tls_keypath = NULL;
/* Server cert keychain path */
static _cups_mutex_t tls_mutex = _CUPS_MUTEX_INITIALIZER;
/* Mutex for keychain/certs */
-static int tls_options = 0;/* Options for TLS connections */
+static int tls_options = -1;/* Options for TLS connections */
/*
@@ -1028,9 +1028,18 @@ _httpTLSStart(http_t *http) /* I - Connection to server */
int status; /* Status of handshake */
gnutls_certificate_credentials_t *credentials;
/* TLS credentials */
+ char priority_string[1024];
+ /* Priority string */
- DEBUG_printf(("7_httpTLSStart(http=%p)", http));
+ DEBUG_printf(("3_httpTLSStart(http=%p)", http));
+
+ if (tls_options < 0)
+ {
+ DEBUG_puts("4_httpTLSStart: Setting defaults.");
+ _cupsSetDefaults();
+ DEBUG_printf(("4_httpTLSStart: tls_options=%x", tls_options));
+ }
if (http->mode == _HTTP_MODE_SERVER && !tls_keypath)
{
@@ -1199,28 +1208,28 @@ _httpTLSStart(http_t *http) /* I - Connection to server */
return (-1);
}
-#ifdef HAVE_GNUTLS_PRIORITY_SET_DIRECT
- if (!tls_options)
- gnutls_priority_set_direct(http->tls, "NORMAL:-ARCFOUR-128:+VERS-TLS-ALL:-VERS-SSL3.0", NULL);
- else if ((tls_options & _HTTP_TLS_ALLOW_SSL3) && (tls_options & _HTTP_TLS_ALLOW_RC4))
- gnutls_priority_set_direct(http->tls, "NORMAL", NULL);
+ strlcpy(priority_string, "NORMAL", sizeof(priority_string));
+
+ if (tls_options & _HTTP_TLS_DENY_TLS10)
+ strlcat(priority_string, ":+VERS-TLS-ALL:-VERS-TLS1.0:-VERS-SSL3.0", sizeof(priority_string));
else if (tls_options & _HTTP_TLS_ALLOW_SSL3)
- gnutls_priority_set_direct(http->tls, "NORMAL:-ARCFOUR-128:+VERS-TLS-ALL", NULL);
+ strlcat(priority_string, ":+VERS-TLS-ALL", sizeof(priority_string));
else
- gnutls_priority_set_direct(http->tls, "NORMAL:+VERS-TLS-ALL:-VERS-SSL3.0", NULL);
+ strlcat(priority_string, ":+VERS-TLS-ALL:-VERS-SSL3.0", sizeof(priority_string));
+
+ if (!(tls_options & _HTTP_TLS_ALLOW_RC4))
+ strlcat(priority_string, ":-ARCFOUR-128", sizeof(priority_string));
+
+ if (!(tls_options & _HTTP_TLS_ALLOW_DH))
+ strlcat(priority_string, ":!ANON-DH", sizeof(priority_string));
+
+#ifdef HAVE_GNUTLS_PRIORITY_SET_DIRECT
+ gnutls_priority_set_direct(http->tls, priority_string, NULL);
#else
gnutls_priority_t priority; /* Priority */
- if (!tls_options)
- gnutls_priority_init(&priority, "NORMAL:-ARCFOUR-128:+VERS-TLS-ALL:-VERS-SSL3.0", NULL);
- else if ((tls_options & _HTTP_TLS_ALLOW_SSL3) && (tls_options & _HTTP_TLS_ALLOW_RC4))
- gnutls_priority_init(&priority, "NORMAL", NULL);
- else if (tls_options & _HTTP_TLS_ALLOW_SSL3)
- gnutls_priority_init(&priority, "NORMAL:-ARCFOUR-128:+VERS-TLS-ALL", NULL);
- else
- gnutls_priority_init(&priority, "NORMAL:+VERS-TLS-ALL:-VERS-SSL3.0", NULL);
-
+ gnutls_priority_init(&priority, priority_string, NULL);
gnutls_priority_set(http->tls, priority);
gnutls_priority_deinit(priority);
#endif /* HAVE_GNUTLS_PRIORITY_SET_DIRECT */
@@ -1332,5 +1341,5 @@ _httpTLSWrite(http_t *http, /* I - Connection to server */
/*
- * End of "$Id: tls-gnutls.c 12481 2015-02-03 12:45:14Z msweet $".
+ * End of "$Id: tls-gnutls.c 12670 2015-05-27 19:48:05Z msweet $".
*/
diff --git a/cups/tls-sspi.c b/cups/tls-sspi.c
index 28596befe..aa8994d34 100644
--- a/cups/tls-sspi.c
+++ b/cups/tls-sspi.c
@@ -1,5 +1,5 @@
/*
- * "$Id: tls-sspi.c 12481 2015-02-03 12:45:14Z msweet $"
+ * "$Id: tls-sspi.c 12647 2015-05-20 18:37:52Z msweet $"
*
* TLS support for CUPS on Windows using the Security Support Provider
* Interface (SSPI).
@@ -54,7 +54,7 @@
* Local globals...
*/
-static int tls_options = 0;/* Options for TLS connections */
+static int tls_options = -1;/* Options for TLS connections */
/*
@@ -930,7 +930,14 @@ _httpTLSStart(http_t *http) /* I - HTTP connection */
*hostptr; /* Pointer into hostname */
- DEBUG_printf(("7_httpTLSStart(http=%p)", http));
+ DEBUG_printf(("3_httpTLSStart(http=%p)", http));
+
+ if (tls_options < 0)
+ {
+ DEBUG_puts("4_httpTLSStart: Setting defaults.");
+ _cupsSetDefaults();
+ DEBUG_printf(("4_httpTLSStart: tls_options=%x", tls_options));
+ }
if ((http->tls = http_sspi_alloc()) == NULL)
return (-1);
@@ -1756,14 +1763,18 @@ http_sspi_find_credentials(
#ifdef SP_PROT_TLS1_2_SERVER
if (http->mode == _HTTP_MODE_SERVER)
{
- if (tls_options & _HTTP_TLS_ALLOW_SSL3)
+ if (tls_options & _HTTP_TLS_DENY_TLS10)
+ SchannelCred.grbitEnabledProtocols = SP_PROT_TLS1_2_SERVER | SP_PROT_TLS1_1_SERVER;
+ else if (tls_options & _HTTP_TLS_ALLOW_SSL3)
SchannelCred.grbitEnabledProtocols = SP_PROT_TLS1_2_SERVER | SP_PROT_TLS1_1_SERVER | SP_PROT_TLS1_0_SERVER | SP_PROT_SSL3_SERVER;
else
SchannelCred.grbitEnabledProtocols = SP_PROT_TLS1_2_SERVER | SP_PROT_TLS1_1_SERVER | SP_PROT_TLS1_0_SERVER;
}
else
{
- if (tls_options & _HTTP_TLS_ALLOW_SSL3)
+ if (tls_options & _HTTP_TLS_DENY_TLS10)
+ SchannelCred.grbitEnabledProtocols = SP_PROT_TLS1_2_CLIENT | SP_PROT_TLS1_1_CLIENT;
+ else if (tls_options & _HTTP_TLS_ALLOW_SSL3)
SchannelCred.grbitEnabledProtocols = SP_PROT_TLS1_2_CLIENT | SP_PROT_TLS1_1_CLIENT | SP_PROT_TLS1_0_CLIENT | SP_PROT_SSL3_CLIENT;
else
SchannelCred.grbitEnabledProtocols = SP_PROT_TLS1_2_CLIENT | SP_PROT_TLS1_1_CLIENT | SP_PROT_TLS1_0_CLIENT;
@@ -1786,7 +1797,7 @@ http_sspi_find_credentials(
}
#endif /* SP_PROT_TLS1_2_SERVER */
- /* TODO: Support _HTTP_TLS_ALLOW_RC4 option; right now we'll rely on Windows registry to enable/disable RC4... */
+ /* TODO: Support _HTTP_TLS_ALLOW_RC4 and _HTTP_TLS_ALLOW_DH options; right now we'll rely on Windows registry to enable/disable RC4/DH... */
/*
* Create an SSPI credential.
@@ -2416,5 +2427,5 @@ http_sspi_verify(
/*
- * End of "$Id: tls-sspi.c 12481 2015-02-03 12:45:14Z msweet $".
+ * End of "$Id: tls-sspi.c 12647 2015-05-20 18:37:52Z msweet $".
*/
diff --git a/cups/tlscheck.c b/cups/tlscheck.c
new file mode 100644
index 000000000..56cc1de53
--- /dev/null
+++ b/cups/tlscheck.c
@@ -0,0 +1,739 @@
+/*
+ * "$Id: tlscheck.c 12688 2015-06-03 17:31:30Z msweet $"
+ *
+ * TLS check program for CUPS.
+ *
+ * Copyright 2007-2015 by Apple Inc.
+ * Copyright 1997-2006 by Easy Software Products.
+ *
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law. Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file. If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
+ *
+ * This file is subject to the Apple OS-Developed Software exception.
+ */
+
+/*
+ * Include necessary headers...
+ */
+
+#include "cups-private.h"
+
+
+#ifndef HAVE_SSL
+int main(void) { puts("Sorry, no TLS support compiled in."); return (1); }
+#else
+
+/*
+ * Local functions...
+ */
+
+static void usage(void);
+
+
+/*
+ * 'main()' - Main entry.
+ */
+
+int /* O - Exit status */
+main(int argc, /* I - Number of command-line arguments */
+ char *argv[]) /* I - Command-line arguments */
+{
+ int i; /* Looping var */
+ http_t *http; /* HTTP connection */
+ const char *server = NULL; /* Hostname from command-line */
+ int port = 0; /* Port number */
+ const char *cipherName = "UNKNOWN";/* Cipher suite name */
+ int dhBits = 0; /* Diffie-Hellman bits */
+ int tlsVersion = 0; /* TLS version number */
+ char uri[1024], /* Printer URI */
+ scheme[32], /* URI scheme */
+ host[256], /* Hostname */
+ userpass[256], /* Username/password */
+ resource[256]; /* Resource path */
+ int tls_options = _HTTP_TLS_NONE,
+ /* TLS options */
+ verbose = 0; /* Verbosity */
+ ipp_t *request, /* IPP Get-Printer-Attributes request */
+ *response; /* IPP Get-Printer-Attributes response */
+ ipp_attribute_t *attr; /* Current attribute */
+ const char *name; /* Attribute name */
+ char value[1024]; /* Attribute (string) value */
+ static const char * const pattrs[] = /* Requested attributes */
+ {
+ "color-supported",
+ "compression-supported",
+ "document-format-supported",
+ "pages-per-minute",
+ "printer-location",
+ "printer-make-and-model",
+ "printer-state",
+ "printer-state-reasons",
+ "sides-supported",
+ "uri-authentication-supported",
+ "uri-security-supported"
+ };
+
+
+ for (i = 1; i < argc; i ++)
+ {
+ if (!strcmp(argv[i], "--dh"))
+ {
+ tls_options |= _HTTP_TLS_ALLOW_DH;
+ }
+ else if (!strcmp(argv[i], "--no-tls10"))
+ {
+ tls_options |= _HTTP_TLS_DENY_TLS10;
+ }
+ else if (!strcmp(argv[i], "--rc4"))
+ {
+ tls_options |= _HTTP_TLS_ALLOW_RC4;
+ }
+ else if (!strcmp(argv[i], "--verbose") || !strcmp(argv[i], "-v"))
+ {
+ verbose = 1;
+ }
+ else if (argv[i][0] == '-')
+ {
+ printf("tlscheck: Unknown option '%s'.\n", argv[i]);
+ usage();
+ }
+ else if (!server)
+ {
+ if (!strncmp(argv[i], "ipps://", 7))
+ {
+ httpSeparateURI(HTTP_URI_CODING_ALL, argv[i], scheme, sizeof(scheme), userpass, sizeof(userpass), host, sizeof(host), &port, resource, sizeof(resource));
+ server = host;
+ }
+ else
+ {
+ server = argv[i];
+ strlcpy(resource, "/ipp/print", sizeof(resource));
+ }
+ }
+ else if (!port && (argv[i][0] == '=' || isdigit(argv[i][0] & 255)))
+ {
+ if (argv[i][0] == '=')
+ port = atoi(argv[i] + 1);
+ else
+ port = atoi(argv[i]);
+ }
+ else
+ {
+ printf("tlscheck: Unexpected argument '%s'.\n", argv[i]);
+ usage();
+ }
+ }
+
+ if (!server)
+ usage();
+
+ if (!port)
+ port = 631;
+
+ _httpTLSSetOptions(tls_options);
+
+ http = httpConnect2(server, port, NULL, AF_UNSPEC, HTTP_ENCRYPTION_ALWAYS, 1, 30000, NULL);
+ if (!http)
+ {
+ printf("%s: ERROR (%s)\n", server, cupsLastErrorString());
+ return (1);
+ }
+
+#ifdef __APPLE__
+ SSLProtocol protocol;
+ SSLCipherSuite cipher;
+ char unknownCipherName[256];
+ int paramsNeeded = 0;
+ const void *params;
+ size_t paramsLen;
+ OSStatus err;
+
+ if ((err = SSLGetNegotiatedProtocolVersion(http->tls, &protocol)) != noErr)
+ {
+ printf("%s: ERROR (No protocol version - %d)\n", server, (int)err);
+ httpClose(http);
+ return (1);
+ }
+
+ switch (protocol)
+ {
+ default :
+ tlsVersion = 0;
+ break;
+ case kSSLProtocol3 :
+ tlsVersion = 30;
+ break;
+ case kTLSProtocol1 :
+ tlsVersion = 10;
+ break;
+ case kTLSProtocol11 :
+ tlsVersion = 11;
+ break;
+ case kTLSProtocol12 :
+ tlsVersion = 12;
+ break;
+ }
+
+ if ((err = SSLGetNegotiatedCipher(http->tls, &cipher)) != noErr)
+ {
+ printf("%s: ERROR (No cipher suite - %d)\n", server, (int)err);
+ httpClose(http);
+ return (1);
+ }
+
+ switch (cipher)
+ {
+ case TLS_NULL_WITH_NULL_NULL:
+ cipherName = "TLS_NULL_WITH_NULL_NULL";
+ break;
+ case TLS_RSA_WITH_NULL_MD5:
+ cipherName = "TLS_RSA_WITH_NULL_MD5";
+ break;
+ case TLS_RSA_WITH_NULL_SHA:
+ cipherName = "TLS_RSA_WITH_NULL_SHA";
+ break;
+ case TLS_RSA_WITH_RC4_128_MD5:
+ cipherName = "TLS_RSA_WITH_RC4_128_MD5";
+ break;
+ case TLS_RSA_WITH_RC4_128_SHA:
+ cipherName = "TLS_RSA_WITH_RC4_128_SHA";
+ break;
+ case TLS_RSA_WITH_3DES_EDE_CBC_SHA:
+ cipherName = "TLS_RSA_WITH_3DES_EDE_CBC_SHA";
+ break;
+ case TLS_RSA_WITH_NULL_SHA256:
+ cipherName = "TLS_RSA_WITH_NULL_SHA256";
+ break;
+ case TLS_RSA_WITH_AES_128_CBC_SHA256:
+ cipherName = "TLS_RSA_WITH_AES_128_CBC_SHA256";
+ break;
+ case TLS_RSA_WITH_AES_256_CBC_SHA256:
+ cipherName = "TLS_RSA_WITH_AES_256_CBC_SHA256";
+ break;
+ case TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA:
+ cipherName = "TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA";
+ paramsNeeded = 1;
+ break;
+ case TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA:
+ cipherName = "TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA";
+ paramsNeeded = 1;
+ break;
+ case TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA:
+ cipherName = "TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA";
+ paramsNeeded = 1;
+ break;
+ case TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA:
+ cipherName = "TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA";
+ paramsNeeded = 1;
+ break;
+ case TLS_DH_DSS_WITH_AES_128_CBC_SHA256:
+ cipherName = "TLS_DH_DSS_WITH_AES_128_CBC_SHA256";
+ paramsNeeded = 1;
+ break;
+ case TLS_DH_RSA_WITH_AES_128_CBC_SHA256:
+ cipherName = "TLS_DH_RSA_WITH_AES_128_CBC_SHA256";
+ paramsNeeded = 1;
+ break;
+ case TLS_DHE_DSS_WITH_AES_128_CBC_SHA256:
+ cipherName = "TLS_DHE_DSS_WITH_AES_128_CBC_SHA256";
+ paramsNeeded = 1;
+ break;
+ case TLS_DHE_RSA_WITH_AES_128_CBC_SHA256:
+ cipherName = "TLS_DHE_RSA_WITH_AES_128_CBC_SHA256";
+ paramsNeeded = 1;
+ break;
+ case TLS_DH_DSS_WITH_AES_256_CBC_SHA256:
+ cipherName = "TLS_DH_DSS_WITH_AES_256_CBC_SHA256";
+ paramsNeeded = 1;
+ break;
+ case TLS_DH_RSA_WITH_AES_256_CBC_SHA256:
+ cipherName = "TLS_DH_RSA_WITH_AES_256_CBC_SHA256";
+ paramsNeeded = 1;
+ break;
+ case TLS_DHE_DSS_WITH_AES_256_CBC_SHA256:
+ cipherName = "TLS_DHE_DSS_WITH_AES_256_CBC_SHA256";
+ paramsNeeded = 1;
+ break;
+ case TLS_DHE_RSA_WITH_AES_256_CBC_SHA256:
+ cipherName = "TLS_DHE_RSA_WITH_AES_256_CBC_SHA256";
+ paramsNeeded = 1;
+ break;
+ case TLS_DH_anon_WITH_RC4_128_MD5:
+ cipherName = "TLS_DH_anon_WITH_RC4_128_MD5";
+ paramsNeeded = 1;
+ break;
+ case TLS_DH_anon_WITH_3DES_EDE_CBC_SHA:
+ cipherName = "TLS_DH_anon_WITH_3DES_EDE_CBC_SHA";
+ paramsNeeded = 1;
+ break;
+ case TLS_DH_anon_WITH_AES_128_CBC_SHA256:
+ cipherName = "TLS_DH_anon_WITH_AES_128_CBC_SHA256";
+ paramsNeeded = 1;
+ break;
+ case TLS_DH_anon_WITH_AES_256_CBC_SHA256:
+ cipherName = "TLS_DH_anon_WITH_AES_256_CBC_SHA256";
+ paramsNeeded = 1;
+ break;
+ case TLS_PSK_WITH_RC4_128_SHA:
+ cipherName = "TLS_PSK_WITH_RC4_128_SHA";
+ break;
+ case TLS_PSK_WITH_3DES_EDE_CBC_SHA:
+ cipherName = "TLS_PSK_WITH_3DES_EDE_CBC_SHA";
+ break;
+ case TLS_PSK_WITH_AES_128_CBC_SHA:
+ cipherName = "TLS_PSK_WITH_AES_128_CBC_SHA";
+ break;
+ case TLS_PSK_WITH_AES_256_CBC_SHA:
+ cipherName = "TLS_PSK_WITH_AES_256_CBC_SHA";
+ break;
+ case TLS_DHE_PSK_WITH_RC4_128_SHA:
+ cipherName = "TLS_DHE_PSK_WITH_RC4_128_SHA";
+ paramsNeeded = 1;
+ break;
+ case TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA:
+ cipherName = "TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA";
+ paramsNeeded = 1;
+ break;
+ case TLS_DHE_PSK_WITH_AES_128_CBC_SHA:
+ cipherName = "TLS_DHE_PSK_WITH_AES_128_CBC_SHA";
+ paramsNeeded = 1;
+ break;
+ case TLS_DHE_PSK_WITH_AES_256_CBC_SHA:
+ cipherName = "TLS_DHE_PSK_WITH_AES_256_CBC_SHA";
+ paramsNeeded = 1;
+ break;
+ case TLS_RSA_PSK_WITH_RC4_128_SHA:
+ cipherName = "TLS_RSA_PSK_WITH_RC4_128_SHA";
+ break;
+ case TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA:
+ cipherName = "TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA";
+ break;
+ case TLS_RSA_PSK_WITH_AES_128_CBC_SHA:
+ cipherName = "TLS_RSA_PSK_WITH_AES_128_CBC_SHA";
+ break;
+ case TLS_RSA_PSK_WITH_AES_256_CBC_SHA:
+ cipherName = "TLS_RSA_PSK_WITH_AES_256_CBC_SHA";
+ break;
+ case TLS_PSK_WITH_NULL_SHA:
+ cipherName = "TLS_PSK_WITH_NULL_SHA";
+ break;
+ case TLS_DHE_PSK_WITH_NULL_SHA:
+ cipherName = "TLS_DHE_PSK_WITH_NULL_SHA";
+ paramsNeeded = 1;
+ break;
+ case TLS_RSA_PSK_WITH_NULL_SHA:
+ cipherName = "TLS_RSA_PSK_WITH_NULL_SHA";
+ break;
+ case TLS_RSA_WITH_AES_128_GCM_SHA256:
+ cipherName = "TLS_RSA_WITH_AES_128_GCM_SHA256";
+ break;
+ case TLS_RSA_WITH_AES_256_GCM_SHA384:
+ cipherName = "TLS_RSA_WITH_AES_256_GCM_SHA384";
+ break;
+ case TLS_DHE_RSA_WITH_AES_128_GCM_SHA256:
+ cipherName = "TLS_DHE_RSA_WITH_AES_128_GCM_SHA256";
+ paramsNeeded = 1;
+ break;
+ case TLS_DHE_RSA_WITH_AES_256_GCM_SHA384:
+ cipherName = "TLS_DHE_RSA_WITH_AES_256_GCM_SHA384";
+ paramsNeeded = 1;
+ break;
+ case TLS_DH_RSA_WITH_AES_128_GCM_SHA256:
+ cipherName = "TLS_DH_RSA_WITH_AES_128_GCM_SHA256";
+ paramsNeeded = 1;
+ break;
+ case TLS_DH_RSA_WITH_AES_256_GCM_SHA384:
+ cipherName = "TLS_DH_RSA_WITH_AES_256_GCM_SHA384";
+ paramsNeeded = 1;
+ break;
+ case TLS_DHE_DSS_WITH_AES_128_GCM_SHA256:
+ cipherName = "TLS_DHE_DSS_WITH_AES_128_GCM_SHA256";
+ paramsNeeded = 1;
+ break;
+ case TLS_DHE_DSS_WITH_AES_256_GCM_SHA384:
+ cipherName = "TLS_DHE_DSS_WITH_AES_256_GCM_SHA384";
+ paramsNeeded = 1;
+ break;
+ case TLS_DH_DSS_WITH_AES_128_GCM_SHA256:
+ cipherName = "TLS_DH_DSS_WITH_AES_128_GCM_SHA256";
+ paramsNeeded = 1;
+ break;
+ case TLS_DH_DSS_WITH_AES_256_GCM_SHA384:
+ cipherName = "TLS_DH_DSS_WITH_AES_256_GCM_SHA384";
+ paramsNeeded = 1;
+ break;
+ case TLS_DH_anon_WITH_AES_128_GCM_SHA256:
+ cipherName = "TLS_DH_anon_WITH_AES_128_GCM_SHA256";
+ paramsNeeded = 1;
+ break;
+ case TLS_DH_anon_WITH_AES_256_GCM_SHA384:
+ cipherName = "TLS_DH_anon_WITH_AES_256_GCM_SHA384";
+ paramsNeeded = 1;
+ break;
+ case TLS_PSK_WITH_AES_128_GCM_SHA256:
+ cipherName = "TLS_PSK_WITH_AES_128_GCM_SHA256";
+ break;
+ case TLS_PSK_WITH_AES_256_GCM_SHA384:
+ cipherName = "TLS_PSK_WITH_AES_256_GCM_SHA384";
+ break;
+ case TLS_DHE_PSK_WITH_AES_128_GCM_SHA256:
+ cipherName = "TLS_DHE_PSK_WITH_AES_128_GCM_SHA256";
+ paramsNeeded = 1;
+ break;
+ case TLS_DHE_PSK_WITH_AES_256_GCM_SHA384:
+ cipherName = "TLS_DHE_PSK_WITH_AES_256_GCM_SHA384";
+ paramsNeeded = 1;
+ break;
+ case TLS_RSA_PSK_WITH_AES_128_GCM_SHA256:
+ cipherName = "TLS_RSA_PSK_WITH_AES_128_GCM_SHA256";
+ break;
+ case TLS_RSA_PSK_WITH_AES_256_GCM_SHA384:
+ cipherName = "TLS_RSA_PSK_WITH_AES_256_GCM_SHA384";
+ break;
+ case TLS_PSK_WITH_AES_128_CBC_SHA256:
+ cipherName = "TLS_PSK_WITH_AES_128_CBC_SHA256";
+ break;
+ case TLS_PSK_WITH_AES_256_CBC_SHA384:
+ cipherName = "TLS_PSK_WITH_AES_256_CBC_SHA384";
+ break;
+ case TLS_PSK_WITH_NULL_SHA256:
+ cipherName = "TLS_PSK_WITH_NULL_SHA256";
+ break;
+ case TLS_PSK_WITH_NULL_SHA384:
+ cipherName = "TLS_PSK_WITH_NULL_SHA384";
+ break;
+ case TLS_DHE_PSK_WITH_AES_128_CBC_SHA256:
+ cipherName = "TLS_DHE_PSK_WITH_AES_128_CBC_SHA256";
+ paramsNeeded = 1;
+ break;
+ case TLS_DHE_PSK_WITH_AES_256_CBC_SHA384:
+ cipherName = "TLS_DHE_PSK_WITH_AES_256_CBC_SHA384";
+ paramsNeeded = 1;
+ break;
+ case TLS_DHE_PSK_WITH_NULL_SHA256:
+ cipherName = "TLS_DHE_PSK_WITH_NULL_SHA256";
+ paramsNeeded = 1;
+ break;
+ case TLS_DHE_PSK_WITH_NULL_SHA384:
+ cipherName = "TLS_DHE_PSK_WITH_NULL_SHA384";
+ paramsNeeded = 1;
+ break;
+ case TLS_RSA_PSK_WITH_AES_128_CBC_SHA256:
+ cipherName = "TLS_RSA_PSK_WITH_AES_128_CBC_SHA256";
+ break;
+ case TLS_RSA_PSK_WITH_AES_256_CBC_SHA384:
+ cipherName = "TLS_RSA_PSK_WITH_AES_256_CBC_SHA384";
+ break;
+ case TLS_RSA_PSK_WITH_NULL_SHA256:
+ cipherName = "TLS_RSA_PSK_WITH_NULL_SHA256";
+ break;
+ case TLS_RSA_PSK_WITH_NULL_SHA384:
+ cipherName = "TLS_RSA_PSK_WITH_NULL_SHA384";
+ break;
+ case TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256:
+ cipherName = "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256";
+ paramsNeeded = 1;
+ break;
+ case TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384:
+ cipherName = "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384";
+ paramsNeeded = 1;
+ break;
+ case TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256:
+ cipherName = "TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256";
+ paramsNeeded = 1;
+ break;
+ case TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384:
+ cipherName = "TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384";
+ paramsNeeded = 1;
+ break;
+ case TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256:
+ cipherName = "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256";
+ paramsNeeded = 1;
+ break;
+ case TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384:
+ cipherName = "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384";
+ paramsNeeded = 1;
+ break;
+ case TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256:
+ cipherName = "TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256";
+ paramsNeeded = 1;
+ break;
+ case TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384:
+ cipherName = "TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384";
+ paramsNeeded = 1;
+ break;
+ case TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256:
+ cipherName = "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256";
+ paramsNeeded = 1;
+ break;
+ case TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384:
+ cipherName = "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384";
+ paramsNeeded = 1;
+ break;
+ case TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256:
+ cipherName = "TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256";
+ paramsNeeded = 1;
+ break;
+ case TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384:
+ cipherName = "TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384";
+ paramsNeeded = 1;
+ break;
+ case TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256:
+ cipherName = "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256";
+ paramsNeeded = 1;
+ break;
+ case TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384:
+ cipherName = "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384";
+ paramsNeeded = 1;
+ break;
+ case TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256:
+ cipherName = "TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256";
+ paramsNeeded = 1;
+ break;
+ case TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384:
+ cipherName = "TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384";
+ paramsNeeded = 1;
+ break;
+ case TLS_RSA_WITH_AES_128_CBC_SHA:
+ cipherName = "TLS_RSA_WITH_AES_128_CBC_SHA";
+ break;
+ case TLS_DH_DSS_WITH_AES_128_CBC_SHA:
+ cipherName = "TLS_DH_DSS_WITH_AES_128_CBC_SHA";
+ paramsNeeded = 1;
+ break;
+ case TLS_DH_RSA_WITH_AES_128_CBC_SHA:
+ cipherName = "TLS_DH_RSA_WITH_AES_128_CBC_SHA";
+ paramsNeeded = 1;
+ break;
+ case TLS_DHE_DSS_WITH_AES_128_CBC_SHA:
+ cipherName = "TLS_DHE_DSS_WITH_AES_128_CBC_SHA";
+ paramsNeeded = 1;
+ break;
+ case TLS_DHE_RSA_WITH_AES_128_CBC_SHA:
+ cipherName = "TLS_DHE_RSA_WITH_AES_128_CBC_SHA";
+ paramsNeeded = 1;
+ break;
+ case TLS_DH_anon_WITH_AES_128_CBC_SHA:
+ cipherName = "TLS_DH_anon_WITH_AES_128_CBC_SHA";
+ paramsNeeded = 1;
+ break;
+ case TLS_RSA_WITH_AES_256_CBC_SHA:
+ cipherName = "TLS_RSA_WITH_AES_256_CBC_SHA";
+ break;
+ case TLS_DH_DSS_WITH_AES_256_CBC_SHA:
+ cipherName = "TLS_DH_DSS_WITH_AES_256_CBC_SHA";
+ paramsNeeded = 1;
+ break;
+ case TLS_DH_RSA_WITH_AES_256_CBC_SHA:
+ cipherName = "TLS_DH_RSA_WITH_AES_256_CBC_SHA";
+ paramsNeeded = 1;
+ break;
+ case TLS_DHE_DSS_WITH_AES_256_CBC_SHA:
+ cipherName = "TLS_DHE_DSS_WITH_AES_256_CBC_SHA";
+ paramsNeeded = 1;
+ break;
+ case TLS_DHE_RSA_WITH_AES_256_CBC_SHA:
+ cipherName = "TLS_DHE_RSA_WITH_AES_256_CBC_SHA";
+ paramsNeeded = 1;
+ break;
+ case TLS_DH_anon_WITH_AES_256_CBC_SHA:
+ cipherName = "TLS_DH_anon_WITH_AES_256_CBC_SHA";
+ paramsNeeded = 1;
+ break;
+ case TLS_ECDH_ECDSA_WITH_NULL_SHA:
+ cipherName = "TLS_ECDH_ECDSA_WITH_NULL_SHA";
+ paramsNeeded = 1;
+ break;
+ case TLS_ECDH_ECDSA_WITH_RC4_128_SHA:
+ cipherName = "TLS_ECDH_ECDSA_WITH_RC4_128_SHA";
+ paramsNeeded = 1;
+ break;
+ case TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA:
+ cipherName = "TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA";
+ paramsNeeded = 1;
+ break;
+ case TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA:
+ cipherName = "TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA";
+ paramsNeeded = 1;
+ break;
+ case TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA:
+ cipherName = "TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA";
+ paramsNeeded = 1;
+ break;
+ case TLS_ECDHE_ECDSA_WITH_NULL_SHA:
+ cipherName = "TLS_ECDHE_ECDSA_WITH_NULL_SHA";
+ paramsNeeded = 1;
+ break;
+ case TLS_ECDHE_ECDSA_WITH_RC4_128_SHA:
+ cipherName = "TLS_ECDHE_ECDSA_WITH_RC4_128_SHA";
+ paramsNeeded = 1;
+ break;
+ case TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA:
+ cipherName = "TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA";
+ paramsNeeded = 1;
+ break;
+ case TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA:
+ cipherName = "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA";
+ paramsNeeded = 1;
+ break;
+ case TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA:
+ cipherName = "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA";
+ paramsNeeded = 1;
+ break;
+ case TLS_ECDH_RSA_WITH_NULL_SHA:
+ cipherName = "TLS_ECDH_RSA_WITH_NULL_SHA";
+ paramsNeeded = 1;
+ break;
+ case TLS_ECDH_RSA_WITH_RC4_128_SHA:
+ cipherName = "TLS_ECDH_RSA_WITH_RC4_128_SHA";
+ paramsNeeded = 1;
+ break;
+ case TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA:
+ cipherName = "TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA";
+ paramsNeeded = 1;
+ break;
+ case TLS_ECDH_RSA_WITH_AES_128_CBC_SHA:
+ cipherName = "TLS_ECDH_RSA_WITH_AES_128_CBC_SHA";
+ paramsNeeded = 1;
+ break;
+ case TLS_ECDH_RSA_WITH_AES_256_CBC_SHA:
+ cipherName = "TLS_ECDH_RSA_WITH_AES_256_CBC_SHA";
+ paramsNeeded = 1;
+ break;
+ case TLS_ECDHE_RSA_WITH_NULL_SHA:
+ cipherName = "TLS_ECDHE_RSA_WITH_NULL_SHA";
+ paramsNeeded = 1;
+ break;
+ case TLS_ECDHE_RSA_WITH_RC4_128_SHA:
+ cipherName = "TLS_ECDHE_RSA_WITH_RC4_128_SHA";
+ paramsNeeded = 1;
+ break;
+ case TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA:
+ cipherName = "TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA";
+ paramsNeeded = 1;
+ break;
+ case TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA:
+ cipherName = "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA";
+ paramsNeeded = 1;
+ break;
+ case TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA:
+ cipherName = "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA";
+ paramsNeeded = 1;
+ break;
+ case TLS_ECDH_anon_WITH_NULL_SHA:
+ cipherName = "TLS_ECDH_anon_WITH_NULL_SHA";
+ paramsNeeded = 1;
+ break;
+ case TLS_ECDH_anon_WITH_RC4_128_SHA:
+ cipherName = "TLS_ECDH_anon_WITH_RC4_128_SHA";
+ paramsNeeded = 1;
+ break;
+ case TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA:
+ cipherName = "TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA";
+ paramsNeeded = 1;
+ break;
+ case TLS_ECDH_anon_WITH_AES_128_CBC_SHA:
+ cipherName = "TLS_ECDH_anon_WITH_AES_128_CBC_SHA";
+ paramsNeeded = 1;
+ break;
+ case TLS_ECDH_anon_WITH_AES_256_CBC_SHA:
+ cipherName = "TLS_ECDH_anon_WITH_AES_256_CBC_SHA";
+ paramsNeeded = 1;
+ break;
+ default :
+ snprintf(unknownCipherName, sizeof(unknownCipherName), "UNKNOWN_%04X", cipher);
+ cipherName = unknownCipherName;
+ break;
+ }
+
+ if (cipher == TLS_RSA_WITH_RC4_128_MD5 ||
+ cipher == TLS_RSA_WITH_RC4_128_SHA)
+ {
+ printf("%s: ERROR (Printers MUST NOT negotiate RC4 cipher suites.)\n", server);
+ httpClose(http);
+ return (1);
+ }
+
+ if ((err = SSLGetDiffieHellmanParams(http->tls, &params, &paramsLen)) != noErr && paramsNeeded)
+ {
+ printf("%s: ERROR (Unable to get Diffie-Hellman parameters - %d)\n", server, (int)err);
+ httpClose(http);
+ return (1);
+ }
+
+ if (paramsLen < 128 && paramsLen != 0)
+ {
+ printf("%s: ERROR (Diffie-Hellman parameters MUST be at least 2048 bits, but Printer uses only %d bits/%d bytes)\n", server, (int)paramsLen * 8, (int)paramsLen);
+ httpClose(http);
+ return (1);
+ }
+
+ dhBits = (int)paramsLen * 8;
+#endif /* __APPLE__ */
+
+ if (dhBits > 0)
+ printf("%s: OK (TLS: %d.%d, %s, %d DH bits)\n", server, tlsVersion / 10, tlsVersion % 10, cipherName, dhBits);
+ else
+ printf("%s: OK (TLS: %d.%d, %s)\n", server, tlsVersion / 10, tlsVersion % 10, cipherName);
+
+ if (verbose)
+ {
+ httpAssembleURI(HTTP_URI_CODING_ALL, uri, sizeof(uri), "ipps", NULL, host, port, resource);
+ request = ippNewRequest(IPP_OP_GET_PRINTER_ATTRIBUTES);
+ ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri", NULL, uri);
+ ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "requesting-user-name", NULL, cupsUser());
+ ippAddStrings(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD, "requested-attributes", (int)(sizeof(pattrs) / sizeof(pattrs[0])), NULL, pattrs);
+
+ response = cupsDoRequest(http, request, resource);
+
+ for (attr = ippFirstAttribute(response); attr; attr = ippNextAttribute(response))
+ {
+ if (ippGetGroupTag(attr) != IPP_TAG_PRINTER)
+ continue;
+
+ if ((name = ippGetName(attr)) == NULL)
+ continue;
+
+ ippAttributeString(attr, value, sizeof(value));
+ printf(" %s=%s\n", name, value);
+ }
+
+ ippDelete(response);
+ }
+
+ httpClose(http);
+
+ return (0);
+}
+
+
+/*
+ * 'usage()' - Show program usage.
+ */
+
+static void
+usage(void)
+{
+ puts("Usage: ./tlscheck [options] server [port]");
+ puts(" ./tlscheck [options] ipps://server[:port]/path");
+ puts("");
+ puts("Options:");
+ puts(" --dh Allow DH/DHE key exchange");
+ puts(" --no-tls10 Disable TLS/1.0");
+ puts(" --rc4 Allow RC4 encryption");
+ puts(" --verbose Be verbose");
+ puts(" -v Be verbose");
+ puts("");
+ puts("The default port is 631.");
+
+ exit(1);
+}
+#endif /* !HAVE_SSL */
+
+
+/*
+ * End of "$Id: tlscheck.c 12688 2015-06-03 17:31:30Z msweet $".
+ */
diff --git a/cups/transcode.c b/cups/transcode.c
index f1b26459c..81b596fe0 100644
--- a/cups/transcode.c
+++ b/cups/transcode.c
@@ -1,5 +1,5 @@
/*
- * "$Id: transcode.c 12332 2014-12-09 20:58:45Z msweet $"
+ * "$Id: transcode.c 12330 2014-12-09 20:57:28Z msweet $"
*
* Transcoding support for CUPS.
*
@@ -716,5 +716,5 @@ cupsUTF32ToUTF8(
/*
- * End of "$Id: transcode.c 12332 2014-12-09 20:58:45Z msweet $"
+ * End of "$Id: transcode.c 12330 2014-12-09 20:57:28Z msweet $"
*/
diff --git a/cups/usersys.c b/cups/usersys.c
index a04217104..da78be368 100644
--- a/cups/usersys.c
+++ b/cups/usersys.c
@@ -1,5 +1,5 @@
/*
- * "$Id: usersys.c 12813 2015-07-30 15:00:40Z msweet $"
+ * "$Id: usersys.c 12647 2015-05-20 18:37:52Z msweet $"
*
* User, system, and password routines for CUPS.
*
@@ -68,7 +68,6 @@ typedef struct _cups_client_conf_s /**** client.conf config data ****/
static void cups_finalize_client_conf(_cups_client_conf_t *cc);
static void cups_init_client_conf(_cups_client_conf_t *cc);
static void cups_read_client_conf(cups_file_t *fp, _cups_client_conf_t *cc);
-static void cups_set_default_ipp_port(_cups_globals_t *cg);
static void cups_set_encryption(_cups_client_conf_t *cc, const char *value);
#ifdef HAVE_GSSAPI
static void cups_set_gss_service_name(_cups_client_conf_t *cc, const char *value);
@@ -383,9 +382,6 @@ cupsSetServer(const char *server) /* I - Server name */
cg->ipp_port = atoi(port);
}
- if (!cg->ipp_port)
- cups_set_default_ipp_port(cg);
-
if (cg->server[0] == '/')
strlcpy(cg->servername, "localhost", sizeof(cg->servername));
else
@@ -396,7 +392,6 @@ cupsSetServer(const char *server) /* I - Server name */
cg->server[0] = '\0';
cg->servername[0] = '\0';
cg->server_version = 20;
- cg->ipp_port = 0;
}
if (cg->http)
@@ -913,7 +908,17 @@ _cupsSetDefaults(void)
cupsSetServer(cc.server_name);
if (!cg->ipp_port)
- cups_set_default_ipp_port(cg);
+ {
+ const char *ipp_port; /* IPP_PORT environment variable */
+
+ if ((ipp_port = getenv("IPP_PORT")) != NULL)
+ {
+ if ((cg->ipp_port = atoi(ipp_port)) <= 0)
+ cg->ipp_port = CUPS_DEFAULT_IPP_PORT;
+ }
+ else
+ cg->ipp_port = CUPS_DEFAULT_IPP_PORT;
+ }
if (!cg->user[0])
strlcpy(cg->user, cc.user, sizeof(cg->user));
@@ -1146,26 +1151,6 @@ cups_read_client_conf(
/*
- * 'cups_set_default_ipp_port()' - Set the default IPP port value.
- */
-
-static void
-cups_set_default_ipp_port(
- _cups_globals_t *cg) /* I - Global data */
-{
- const char *ipp_port; /* IPP_PORT environment variable */
-
-
- if ((ipp_port = getenv("IPP_PORT")) != NULL)
- {
- if ((cg->ipp_port = atoi(ipp_port)) <= 0)
- cg->ipp_port = CUPS_DEFAULT_IPP_PORT;
- }
- else
- cg->ipp_port = CUPS_DEFAULT_IPP_PORT;
-}
-
-/*
* 'cups_set_encryption()' - Set the Encryption value.
*/
@@ -1224,10 +1209,10 @@ cups_set_ssl_options(
const char *value) /* I - Value */
{
/*
- * SSLOptions [AllowRC4] [AllowSSL3] [None]
+ * SSLOptions [AllowRC4] [AllowSSL3] [AllowDH] [DenyTLS1.0] [None]
*/
- int options = 0; /* SSL/TLS options */
+ int options = _HTTP_TLS_NONE; /* SSL/TLS options */
char temp[256], /* Copy of value */
*start, /* Start of option */
*end; /* End of option */
@@ -1256,11 +1241,17 @@ cups_set_ssl_options(
options |= _HTTP_TLS_ALLOW_RC4;
else if (!_cups_strcasecmp(start, "AllowSSL3"))
options |= _HTTP_TLS_ALLOW_SSL3;
+ else if (!_cups_strcasecmp(start, "AllowDH"))
+ options |= _HTTP_TLS_ALLOW_DH;
+ else if (!_cups_strcasecmp(start, "DenyTLS1.0"))
+ options |= _HTTP_TLS_DENY_TLS10;
else if (!_cups_strcasecmp(start, "None"))
- options = 0;
+ options = _HTTP_TLS_NONE;
}
cc->ssl_options = options;
+
+ DEBUG_printf(("4cups_set_ssl_options(cc=%p, value=\"%s\") options=%x", cc, value, options));
}
#endif /* HAVE_SSL */
@@ -1279,5 +1270,5 @@ cups_set_user(
/*
- * End of "$Id: usersys.c 12813 2015-07-30 15:00:40Z msweet $".
+ * End of "$Id: usersys.c 12647 2015-05-20 18:37:52Z msweet $".
*/
diff --git a/cups/util.c b/cups/util.c
index 3ccc21c14..10ce821a0 100644
--- a/cups/util.c
+++ b/cups/util.c
@@ -1,5 +1,5 @@
/*
- * "$Id: util.c 12449 2015-01-29 20:32:16Z msweet $"
+ * "$Id: util.c 12448 2015-01-29 20:32:07Z msweet $"
*
* Printing utilities for CUPS.
*
@@ -1655,5 +1655,5 @@ cups_get_printer_uri(
/*
- * End of "$Id: util.c 12449 2015-01-29 20:32:16Z msweet $".
+ * End of "$Id: util.c 12448 2015-01-29 20:32:07Z msweet $".
*/
diff --git a/cups/versioning.h b/cups/versioning.h
index 79ac89176..1e661df34 100644
--- a/cups/versioning.h
+++ b/cups/versioning.h
@@ -1,5 +1,5 @@
/*
- * "$Id: versioning.h 12419 2015-01-22 15:51:20Z msweet $"
+ * "$Id: versioning.h 12418 2015-01-22 15:49:23Z msweet $"
*
* API versioning definitions for CUPS.
*
@@ -162,5 +162,5 @@
#endif /* !_CUPS_VERSIONING_H_ */
/*
- * End of "$Id: versioning.h 12419 2015-01-22 15:51:20Z msweet $".
+ * End of "$Id: versioning.h 12418 2015-01-22 15:49:23Z msweet $".
*/
diff --git a/data/Makefile b/data/Makefile
index 7753b7dbe..484dc2615 100644
--- a/data/Makefile
+++ b/data/Makefile
@@ -1,9 +1,9 @@
#
-# "$Id: Makefile 10996 2013-05-29 11:51:34Z msweet $"
+# "$Id: Makefile 12278 2014-12-01 13:53:56Z msweet $"
#
# Datafile makefile for CUPS.
#
-# Copyright 2007-2011 by Apple Inc.
+# Copyright 2007-2014 by Apple Inc.
# Copyright 1993-2006 by Easy Software Products.
#
# These coded instructions, statements, and computer programs are the
@@ -19,17 +19,6 @@ include ../Makedefs
# Data files...
#
-BANNERS = \
- classified \
- confidential \
- secret \
- standard \
- topsecret \
- unclassified
-
-DATAFILES = \
- testprint
-
PPDCFILES = \
epson.h \
font.defs \
@@ -87,13 +76,7 @@ install: all install-data install-headers install-libs install-exec
install-data:
$(INSTALL_DIR) -m 755 $(DATADIR)/banners
- for file in $(BANNERS); do \
- $(INSTALL_DATA) $$file $(DATADIR)/banners; \
- done
$(INSTALL_DIR) -m 755 $(DATADIR)/data
- for file in $(DATAFILES); do \
- $(INSTALL_DATA) $$file $(DATADIR)/data; \
- done
$(INSTALL_DIR) -m 755 $(DATADIR)/model
$(INSTALL_DIR) -m 755 $(DATADIR)/ppdc
for file in $(PPDCFILES); do \
@@ -128,12 +111,6 @@ install-libs:
#
uninstall:
- for file in $(BANNERS); do \
- $(RM) $(DATADIR)/banners/$$file; \
- done
- for file in $(DATAFILES); do \
- $(RM) $(DATADIR)/data/$$file; \
- done
for file in $(PPDCFILES); do \
$(RM) $(DATADIR)/ppdc/$$file; \
done
@@ -146,5 +123,5 @@ uninstall:
#
-# End of "$Id: Makefile 10996 2013-05-29 11:51:34Z msweet $".
+# End of "$Id: Makefile 12278 2014-12-01 13:53:56Z msweet $".
#
diff --git a/data/classified b/data/classified
deleted file mode 100644
index ca01a13b7..000000000
--- a/data/classified
+++ /dev/null
@@ -1,6 +0,0 @@
-#CUPS-BANNER
-Show job-id job-name job-originating-user-name job-originating-host-name job-billing
-Header Classified
-Footer Classified
-Image images/cups.png
-
diff --git a/data/confidential b/data/confidential
deleted file mode 100644
index f1f0d854d..000000000
--- a/data/confidential
+++ /dev/null
@@ -1,6 +0,0 @@
-#CUPS-BANNER
-Show job-id job-name job-originating-user-name job-originating-host-name job-billing
-Header Confidential
-Footer Confidential
-Image images/cups.png
-
diff --git a/data/secret b/data/secret
deleted file mode 100644
index 66a0e8a91..000000000
--- a/data/secret
+++ /dev/null
@@ -1,6 +0,0 @@
-#CUPS-BANNER
-Show job-id job-name job-originating-user-name job-originating-host-name job-billing
-Header Secret
-Footer Secret
-Image images/cups.png
-
diff --git a/data/standard b/data/standard
deleted file mode 100644
index 31c68a08e..000000000
--- a/data/standard
+++ /dev/null
@@ -1,6 +0,0 @@
-#CUPS-BANNER
-Show job-id job-name job-originating-user-name job-originating-host-name job-billing
-Header Cover Page
-Footer Cover Page
-Image images/cups.png
-
diff --git a/data/testprint.in b/data/testprint.in
deleted file mode 100644
index 8cee3ab4f..000000000
--- a/data/testprint.in
+++ /dev/null
@@ -1,7 +0,0 @@
-#CUPS-BANNER
-Show printer-name printer-info printer-location printer-make-and-model printer-driver-name printer-driver-version paper-size imageable-area
-Header Printer Test Page
-Footer Printer Test Page
-Notice CUPS @CUPS_VERSION@.
-Image images/cups.png
-Image images/color-wheel.png
diff --git a/data/topsecret b/data/topsecret
deleted file mode 100644
index d2b87fabb..000000000
--- a/data/topsecret
+++ /dev/null
@@ -1,6 +0,0 @@
-#CUPS-BANNER
-Show job-id job-name job-originating-user-name job-originating-host-name job-billing
-Header Top Secret
-Footer Top Secret
-Image images/cups.png
-
diff --git a/data/unclassified b/data/unclassified
deleted file mode 100644
index 2d1a7d0f9..000000000
--- a/data/unclassified
+++ /dev/null
@@ -1,6 +0,0 @@
-#CUPS-BANNER
-Show job-id job-name job-originating-user-name job-originating-host-name job-billing
-Header Unclassified
-Footer Unclassified
-Image images/cups.png
-
diff --git a/doc/help/api-array.html b/doc/help/api-array.html
index 220c0f1cb..cd93e87fb 100644
--- a/doc/help/api-array.html
+++ b/doc/help/api-array.html
@@ -5,7 +5,7 @@
<title>Array API </title>
<meta name="keywords" content="Programming">
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
- <meta name="creator" content="Mini-XML v2.7">
+ <meta name="creator" content="Mini-XML v2.8">
<style type="text/css"><!--
BODY {
font-family: lucida grande, geneva, helvetica, arial, sans-serif;
diff --git a/doc/help/api-cgi.html b/doc/help/api-cgi.html
index 63eb9ca6d..4996c87c2 100644
--- a/doc/help/api-cgi.html
+++ b/doc/help/api-cgi.html
@@ -5,7 +5,7 @@
<title>CGI API </title>
<meta name="keywords" content="Programming">
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
- <meta name="creator" content="Mini-XML v2.7">
+ <meta name="creator" content="Mini-XML v2.8">
<style type="text/css"><!--
BODY {
font-family: lucida grande, geneva, helvetica, arial, sans-serif;
diff --git a/doc/help/api-cups.html b/doc/help/api-cups.html
index 19f7ccb90..489c23a6f 100644
--- a/doc/help/api-cups.html
+++ b/doc/help/api-cups.html
@@ -5,7 +5,7 @@
<title>CUPS API </title>
<meta name="keywords" content="Programming">
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
- <meta name="creator" content="Mini-XML v2.7">
+ <meta name="creator" content="Mini-XML v2.8">
<style type="text/css"><!--
BODY {
font-family: lucida grande, geneva, helvetica, arial, sans-serif;
diff --git a/doc/help/api-filedir.html b/doc/help/api-filedir.html
index 309d09daa..0354761e1 100644
--- a/doc/help/api-filedir.html
+++ b/doc/help/api-filedir.html
@@ -5,7 +5,7 @@
<title>File and Directory APIs </title>
<meta name="keywords" content="Programming">
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
- <meta name="creator" content="Mini-XML v2.7">
+ <meta name="creator" content="Mini-XML v2.8">
<style type="text/css"><!--
BODY {
font-family: lucida grande, geneva, helvetica, arial, sans-serif;
diff --git a/doc/help/api-filter.html b/doc/help/api-filter.html
index 1ab935b51..39d183729 100644
--- a/doc/help/api-filter.html
+++ b/doc/help/api-filter.html
@@ -5,7 +5,7 @@
<title>Filter and Backend Programming </title>
<meta name="keywords" content="Programming">
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
- <meta name="creator" content="Mini-XML v2.7">
+ <meta name="creator" content="Mini-XML v2.8">
<style type="text/css"><!--
BODY {
font-family: lucida grande, geneva, helvetica, arial, sans-serif;
diff --git a/doc/help/api-httpipp.html b/doc/help/api-httpipp.html
index ef21b674c..236c24923 100644
--- a/doc/help/api-httpipp.html
+++ b/doc/help/api-httpipp.html
@@ -5,7 +5,7 @@
<title>HTTP and IPP APIs </title>
<meta name="keywords" content="Programming">
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
- <meta name="creator" content="Mini-XML v2.7">
+ <meta name="creator" content="Mini-XML v2.8">
<style type="text/css"><!--
BODY {
font-family: lucida grande, geneva, helvetica, arial, sans-serif;
@@ -6331,6 +6331,18 @@ are server-oriented...</p>
<p class="description">IPP operations</p>
<h4 class="constants">Constants</h4>
<dl>
+<dt>IPP_OP_ACKNOWLEDGE_DOCUMENT </dt>
+<dd class="description">Acknowledge-Document</dd>
+<dt>IPP_OP_ACKNOWLEDGE_IDENTIFY_PRINTER </dt>
+<dd class="description">Acknowledge-Identify-Printer</dd>
+<dt>IPP_OP_ACKNOWLEDGE_JOB </dt>
+<dd class="description">Acknowledge-Job</dd>
+<dt>IPP_OP_ACTIVATE_PRINTER </dt>
+<dd class="description">Start a printer</dd>
+<dt>IPP_OP_CANCEL_CURRENT_JOB </dt>
+<dd class="description">Cancel the current job</dd>
+<dt>IPP_OP_CANCEL_DOCUMENT </dt>
+<dd class="description">Cancel-Document</dd>
<dt>IPP_OP_CANCEL_JOB </dt>
<dd class="description">Cancel a job</dd>
<dt>IPP_OP_CANCEL_JOBS </dt>
@@ -6381,16 +6393,34 @@ are server-oriented...</p>
<dd class="description">Reject new jobs on a printer</dd>
<dt>IPP_OP_CUPS_SET_DEFAULT </dt>
<dd class="description">Set the default printer</dd>
+<dt>IPP_OP_DEACTIVATE_PRINTER </dt>
+<dd class="description">Stop a printer</dd>
+<dt>IPP_OP_DELETE_DOCUMENT </dt>
+<dd class="description">Delete-Document</dd>
+<dt>IPP_OP_DEREGISTER_OUTPUT_DEVICE </dt>
+<dd class="description">Deregister-Output-Device</dd>
<dt>IPP_OP_DISABLE_PRINTER </dt>
<dd class="description">Stop a printer</dd>
<dt>IPP_OP_ENABLE_PRINTER </dt>
<dd class="description">Start a printer</dd>
+<dt>IPP_OP_FETCH_DOCUMENT </dt>
+<dd class="description">Fetch-Document</dd>
+<dt>IPP_OP_FETCH_JOB </dt>
+<dd class="description">Fetch-Job</dd>
+<dt>IPP_OP_GET_DOCUMENTS </dt>
+<dd class="description">Get-Documents</dd>
+<dt>IPP_OP_GET_DOCUMENT_ATTRIBUTES </dt>
+<dd class="description">Get-Document-Attributes</dd>
<dt>IPP_OP_GET_JOBS </dt>
<dd class="description">Get a list of jobs</dd>
<dt>IPP_OP_GET_JOB_ATTRIBUTES </dt>
<dd class="description">Get job attributes</dd>
+<dt>IPP_OP_GET_NEXT_DOCUMENT_DATA </dt>
+<dd class="description">Get-Next-Document-Data</dd>
<dt>IPP_OP_GET_NOTIFICATIONS <span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span></dt>
<dd class="description">Get notification events </dd>
+<dt>IPP_OP_GET_OUTPUT_DEVICE_ATTRIBUTES </dt>
+<dd class="description">Get-Output-Device-Attributes</dd>
<dt>IPP_OP_GET_PRINTER_ATTRIBUTES </dt>
<dd class="description">Get printer attributes</dd>
<dt>IPP_OP_GET_PRINTER_SUPPORTED_VALUES </dt>
@@ -6401,26 +6431,70 @@ are server-oriented...</p>
<dd class="description">Get subscription attributes </dd>
<dt>IPP_OP_HOLD_JOB </dt>
<dd class="description">Hold a job for printing</dd>
+<dt>IPP_OP_HOLD_NEW_JOBS </dt>
+<dd class="description">Hold new jobs</dd>
+<dt>IPP_OP_IDENTIFY_PRINTER </dt>
+<dd class="description">Identify-Printer</dd>
<dt>IPP_OP_PAUSE_PRINTER </dt>
<dd class="description">Stop a printer</dd>
+<dt>IPP_OP_PAUSE_PRINTER_AFTER_CURRENT_JOB </dt>
+<dd class="description">Stop printer after the current job</dd>
<dt>IPP_OP_PRINT_JOB </dt>
<dd class="description">Print a single file</dd>
+<dt>IPP_OP_PRINT_URI </dt>
+<dd class="description">Print a single URL</dd>
+<dt>IPP_OP_PROMOTE_JOB </dt>
+<dd class="description">Promote a job to print sooner</dd>
<dt>IPP_OP_PURGE_JOBS </dt>
<dd class="description">Cancel all jobs</dd>
+<dt>IPP_OP_RELEASE_HELD_NEW_JOBS </dt>
+<dd class="description">Release new jobs</dd>
<dt>IPP_OP_RELEASE_JOB </dt>
<dd class="description">Release a job for printing</dd>
<dt>IPP_OP_RENEW_SUBSCRIPTION <span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span></dt>
<dd class="description">Renew a printer subscription </dd>
+<dt>IPP_OP_REPROCESS_JOB </dt>
+<dd class="description">Reprint a job</dd>
<dt>IPP_OP_RESTART_JOB </dt>
<dd class="description">Reprint a job</dd>
+<dt>IPP_OP_RESTART_PRINTER </dt>
+<dd class="description">Restart a printer</dd>
<dt>IPP_OP_RESUBMIT_JOB </dt>
<dd class="description">Resubmit-Job</dd>
+<dt>IPP_OP_RESUME_JOB </dt>
+<dd class="description">Resume the current job</dd>
<dt>IPP_OP_RESUME_PRINTER </dt>
<dd class="description">Start a printer</dd>
+<dt>IPP_OP_SCHEDULE_JOB_AFTER </dt>
+<dd class="description">Schedule a job to print after another</dd>
<dt>IPP_OP_SEND_DOCUMENT </dt>
<dd class="description">Add a file to a job</dd>
+<dt>IPP_OP_SEND_HARDCOPY_DOCUMENT </dt>
+<dd class="description">Send-Hardcopy-Document</dd>
+<dt>IPP_OP_SEND_URI </dt>
+<dd class="description">Add a URL to a job</dd>
+<dt>IPP_OP_SET_DOCUMENT_ATTRIBUTES </dt>
+<dd class="description">Set-Document-Attributes</dd>
<dt>IPP_OP_SET_JOB_ATTRIBUTES </dt>
<dd class="description">Set job attributes</dd>
+<dt>IPP_OP_SET_PRINTER_ATTRIBUTES </dt>
+<dd class="description">Set printer attributes</dd>
+<dt>IPP_OP_SHUTDOWN_PRINTER </dt>
+<dd class="description">Turn a printer off</dd>
+<dt>IPP_OP_STARTUP_PRINTER </dt>
+<dd class="description">Turn a printer on</dd>
+<dt>IPP_OP_SUSPEND_CURRENT_JOB </dt>
+<dd class="description">Suspend the current job</dd>
+<dt>IPP_OP_UPDATE_ACTIVE_JOBS </dt>
+<dd class="description">Update-Active-Jobs</dd>
+<dt>IPP_OP_UPDATE_DOCUMENT_STATUS </dt>
+<dd class="description">Update-Document-Status</dd>
+<dt>IPP_OP_UPDATE_JOB_STATUS </dt>
+<dd class="description">Update-Job-Status</dd>
+<dt>IPP_OP_UPDATE_OUTPUT_DEVICE_ATTRIBUTES </dt>
+<dd class="description">Update-Output-Device-Attributes</dd>
+<dt>IPP_OP_VALIDATE_DOCUMENT </dt>
+<dd class="description">Validate-Document</dd>
<dt>IPP_OP_VALIDATE_JOB </dt>
<dd class="description">Validate job options</dd>
</dl>
diff --git a/doc/help/api-mime.html b/doc/help/api-mime.html
index d95734299..2496acdcc 100644
--- a/doc/help/api-mime.html
+++ b/doc/help/api-mime.html
@@ -5,7 +5,7 @@
<title>MIME API </title>
<meta name="keywords" content="Programming">
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
- <meta name="creator" content="Mini-XML v2.7">
+ <meta name="creator" content="Mini-XML v2.8">
<style type="text/css"><!--
BODY {
font-family: lucida grande, geneva, helvetica, arial, sans-serif;
diff --git a/doc/help/api-overview.html b/doc/help/api-overview.html
index 01a041493..3cd6f26f4 100644
--- a/doc/help/api-overview.html
+++ b/doc/help/api-overview.html
@@ -5,7 +5,7 @@
<title>Introduction to CUPS Programming </title>
<meta name="keywords" content="Programming">
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
- <meta name="creator" content="Mini-XML v2.7">
+ <meta name="creator" content="Mini-XML v2.8">
<style type="text/css"><!--
BODY {
font-family: lucida grande, geneva, helvetica, arial, sans-serif;
diff --git a/doc/help/api-ppd.html b/doc/help/api-ppd.html
index 5121b6594..5ff14c622 100644
--- a/doc/help/api-ppd.html
+++ b/doc/help/api-ppd.html
@@ -5,7 +5,7 @@
<title>PPD API (DEPRECATED) </title>
<meta name="keywords" content="Programming">
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
- <meta name="creator" content="Mini-XML v2.7">
+ <meta name="creator" content="Mini-XML v2.8">
<style type="text/css"><!--
BODY {
font-family: lucida grande, geneva, helvetica, arial, sans-serif;
diff --git a/doc/help/api-ppdc.html b/doc/help/api-ppdc.html
index df3213575..d4290b722 100644
--- a/doc/help/api-ppdc.html
+++ b/doc/help/api-ppdc.html
@@ -5,7 +5,7 @@
<title>PPD Compiler API </title>
<meta name="keywords" content="Programming">
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
- <meta name="creator" content="Mini-XML v2.7">
+ <meta name="creator" content="Mini-XML v2.8">
<style type="text/css"><!--
BODY {
font-family: lucida grande, geneva, helvetica, arial, sans-serif;
diff --git a/doc/help/api-raster.html b/doc/help/api-raster.html
index 9acda474f..3c8ffe8b1 100644
--- a/doc/help/api-raster.html
+++ b/doc/help/api-raster.html
@@ -5,7 +5,7 @@
<title>Raster API </title>
<meta name="keywords" content="Programming">
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
- <meta name="creator" content="Mini-XML v2.7">
+ <meta name="creator" content="Mini-XML v2.8">
<style type="text/css"><!--
BODY {
font-family: lucida grande, geneva, helvetica, arial, sans-serif;
diff --git a/doc/help/man-client.conf.html b/doc/help/man-client.conf.html
index 06093fb77..edf4470b6 100644
--- a/doc/help/man-client.conf.html
+++ b/doc/help/man-client.conf.html
@@ -12,7 +12,7 @@ client.conf - client configuration file for cups (deprecated)
<h2 class="title"><a name="DESCRIPTION">Description</a></h2>
The <b>client.conf</b> file configures the CUPS client and is normally located in the <i>/etc/cups</i> and/or <i>~/.cups</i> directories.
Each line in the file can be a configuration directive, a blank line, or a comment. Comment lines start with the # character.
-<p><b>Note:</b> Starting with OS X 10.7, this file is only used by command-line and X11 applications.
+<p><b>Note:</b> Starting with OS X 10.7, this file is only used by command-line and X11 applications plus the IPP backend.
The <b>ServerName</b> directive is not supported on OS X at all.
<h3><a name="DIRECTIVES">Directives</a></h3>
The following directives are understood by the client. Consult the online help for detailed descriptions:
@@ -38,12 +38,14 @@ CUPS adds the remote hostname ("name@server.example.com") for you. The default n
<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>SSLOptions </b>[<i>AllowRC4</i>] [<i>AllowSSL3</i>]
+<dt><b>SSLOptions </b>[<i>AllowDH</i>] [<i>AllowRC4</i>] [<i>AllowSSL3</i>] [<i>DenyTLS1.0</i>]
<dd style="margin-left: 5.0em"><dt><b>SSLOptions None</b>
<dd style="margin-left: 5.0em">Sets encryption options (only in /etc/cups/client.conf).
By default, CUPS only supports encryption using TLS v1.0 or higher using known secure cipher suites.
+The <i>AllowDH</i> option enables cipher suites using plain Diffie-Hellman key negotiation.
The <i>AllowRC4</i> option enables the 128-bit RC4 cipher suites, which are required for some older clients that do not implement newer ones.
The <i>AllowSSL3</i> option enables SSL v3.0, which is required for some older clients that do not support TLS v1.0.
+The <i>DenyTLS1.0</i> option disables TLS v1.0 support - this sets the minimum protocol version to TLS v1.1.
<dt><b>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>
@@ -57,7 +59,7 @@ The <b>client.conf</b> file is deprecated and will no longer be supported in a f
<a href="man-cups.html?TOPIC=Man+Pages"><b>cups</b>(1),</a>
CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright &copy; 2007-2014 by Apple Inc.
+Copyright &copy; 2007-2015 by Apple Inc.
</body>
</html>
diff --git a/doc/help/man-cups-files.conf.html b/doc/help/man-cups-files.conf.html
index 9ab29e819..41001b163 100644
--- a/doc/help/man-cups-files.conf.html
+++ b/doc/help/man-cups-files.conf.html
@@ -23,9 +23,11 @@ The following directives are understood by
<dl class="man">
<dt><a name="AccessLog"></a><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 stderr</b>
<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 "stderr" causes log entries to be sent to the standard error file when the scheduler is running in the foreground, or to the system log daemon when run in the background.
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">
@@ -50,9 +52,11 @@ The default is usually "/usr/share/cups".
The default is usually "/usr/share/doc/cups".
<dt><a name="ErrorLog"></a><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 stderr</b>
<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 "stderr" causes log entries to be sent to the standard error file when the scheduler is running in the foreground, or to the system log daemon when run in the background.
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">
@@ -95,8 +99,10 @@ The default group is operating system specific but is usually "lp" or "nobody".
<dd style="margin-left: 5.0em">Specifies the permissions of all log files that the scheduler writes.
The default is "0644".
<dt><a name="PageLog"></a><b>PageLog </b>[ <i>filename</i> ]
+<dd style="margin-left: 5.0em"><dt><b>PageLog stderr</b>
<dd style="margin-left: 5.0em"><dt><b>PageLog syslog</b>
<dd style="margin-left: 5.0em">Defines the page log filename.
+The value "stderr" causes log entries to be sent to the standard error file when the scheduler is running in the foreground, or to the system log daemon when run in the background.
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:
@@ -112,8 +118,7 @@ The default is "remroot".
<dt><a name="RequestRoot"></a><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><a name="Sandboxing"></a><b>Sandboxing off</b>
-<dd style="margin-left: 5.0em"><dt><b>Sandboxing relaxed</b>
+<dt><a name="Sandboxing"></a><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".
diff --git a/doc/help/man-cupsd.conf.html b/doc/help/man-cupsd.conf.html
index c2ef877e2..f378bffa7 100644
--- a/doc/help/man-cupsd.conf.html
+++ b/doc/help/man-cupsd.conf.html
@@ -240,8 +240,7 @@ The following percent sequences are recognized:
"%u" inserts the username.
</pre>
-The default is the empty string, which disables page logging.
-The string "%p %u %j %T %P %C %{job-billing} %{job-originating-host-name} %{job-name} %{media} %{sides}" creates a page log with the standard items.
+The default is "%p %u %j %T %P %C %{job-billing} %{job-originating-host-name} %{job-name} %{media} %{sides}".
<dt><a name="PassEnv"></a><b>PassEnv </b><i>variable </i>[ ... <i>variable </i>]
<dd style="margin-left: 5.0em">Passes the specified environment variable(s) to child processes.
<dt><a name="Policy"></a><b>&lt;Policy </b><i>name</i><b>> </b>... <b>&lt;/Policy></b>
@@ -589,7 +588,7 @@ Require authentication for accesses from outside the 10. network:
<a href="man-subscriptions.conf.html?TOPIC=Man+Pages"><b>subscriptions.conf</b>(5),</a>
CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright &copy; 2007-2015 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
</body>
</html>
diff --git a/doc/help/man-ipptool.html b/doc/help/man-ipptool.html
index aba14e551..7f0dd5496 100644
--- a/doc/help/man-ipptool.html
+++ b/doc/help/man-ipptool.html
@@ -215,7 +215,7 @@ IANA IPP Registry (<a href="http://www.iana.org/assignments/ipp\-registrations)"
PWG Internet Printing Protocol Workgroup (<a href="http://www.pwg.org/ipp">http://www.pwg.org/ipp</a>)
RFC 2911 (<a href="http://tools.ietf.org/html/rfc2911)">http://tools.ietf.org/html/rfc2911)</a>,
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright &copy; 2007-2014 by Apple Inc.
+Copyright &copy; 2007-2015 by Apple Inc.
</body>
</html>
diff --git a/doc/help/man-ipptoolfile.html b/doc/help/man-ipptoolfile.html
index 3fffb25f1..4f54d6446 100644
--- a/doc/help/man-ipptoolfile.html
+++ b/doc/help/man-ipptoolfile.html
@@ -131,6 +131,9 @@ test report.
<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>EXPECT-ALL </b><i>attribute-name </i>[ <i>predicate(s) </i>]
+<dd style="margin-left: 5.0em"><dt><b>EXPECT-ALL ?</b><i>attribute-name predicate(s)</i>
+<dd style="margin-left: 5.0em">Specifies that the response must/may include the named attribute and that all occurrences of that attribute must match the given predicates.
<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>
@@ -247,6 +250,9 @@ Specifies the maximum number of times to repeat if the <b>REPEAT-MATCH</b> or <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.
+<dt><b>WITH-VALUE-FROM </b><i>attribute-name</i>
+<dd style="margin-left: 5.0em">Requires that the value(s) of the <b>EXPECT</b> attribute matches the value(s) in the specified attribute.
+For example, "EXPECT job-sheets WITH-VALUE-FROM job-sheets-supported" requires that the "job-sheets" value is listed as a value of the "job-sheets-supported" attribute.
</dl>
<h3><a name="STATUS_PREDICATES">Status Predicates</a></h3>
The following predicates are understood following the <b>STATUS</b> test directive:
@@ -495,7 +501,7 @@ IANA IPP Registry (<a href="http://www.iana.org/assignments/ipp-registrations)">
PWG Internet Printing Protocol Workgroup (<a href="http://www.pwg.org/ipp)">http://www.pwg.org/ipp)</a>,
RFC 2911 (<a href="http://tools.ietf.org/html/rfc3911">http://tools.ietf.org/html/rfc3911</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright &copy; 2007-2014 by Apple Inc.
+Copyright &copy; 2007-2015 by Apple Inc.
</body>
</html>
diff --git a/doc/help/man-lpadmin.html b/doc/help/man-lpadmin.html
index 1f8502991..2a74cf06c 100644
--- a/doc/help/man-lpadmin.html
+++ b/doc/help/man-lpadmin.html
@@ -79,6 +79,7 @@ This option cannot be specified with the <i>-P</i> option (PPD file) and is inte
Use the <i>-m</i> option with the
<a href="man-lpinfo.html?TOPIC=Man+Pages"><b>lpinfo</b>(8)</a>
command to get a list of supported models.
+The model "raw" clears any existing interface script or PPD file and the model "everywhere" queries the printer referred to by the specified IPP <i>device-uri</i>.
<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.
@@ -161,6 +162,13 @@ Finally, the CUPS version of <b>lpadmin</b> may ask the user for an access passw
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="EXAMPLE">Example</a></h2>
+Create an IPP Everywhere print queue:
+<pre class="man">
+
+ lpadmin -p myprinter -E -v ipp://myprinter.local/ipp/print -m everywhere
+
+</pre>
<h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
<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>
@@ -168,7 +176,7 @@ The CUPS version of <b>lpadmin</b> does not support all of the System V or Solar
<a href="man-lpoptions.html?TOPIC=Man+Pages"><b>lpoptions</b>(1),</a>
CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright &copy; 2007-2014 by Apple Inc.
+Copyright &copy; 2007-2015 by Apple Inc.
</body>
</html>
diff --git a/doc/help/postscript-driver.html b/doc/help/postscript-driver.html
index 1469f45e5..2c0cd2eec 100644
--- a/doc/help/postscript-driver.html
+++ b/doc/help/postscript-driver.html
@@ -5,7 +5,7 @@
<title>Developing PostScript Printer Drivers </title>
<meta name="keywords" content="Programming">
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
- <meta name="creator" content="Mini-XML v2.7">
+ <meta name="creator" content="Mini-XML v2.8">
<style type="text/css"><!--
BODY {
font-family: lucida grande, geneva, helvetica, arial, sans-serif;
diff --git a/doc/help/ppd-compiler.html b/doc/help/ppd-compiler.html
index 729e26851..7e24866bb 100644
--- a/doc/help/ppd-compiler.html
+++ b/doc/help/ppd-compiler.html
@@ -5,7 +5,7 @@
<title>Introduction to the PPD Compiler </title>
<meta name="keywords" content="Programming">
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
- <meta name="creator" content="Mini-XML v2.7">
+ <meta name="creator" content="Mini-XML v2.8">
<style type="text/css"><!--
BODY {
font-family: lucida grande, geneva, helvetica, arial, sans-serif;
diff --git a/doc/help/raster-driver.html b/doc/help/raster-driver.html
index 8055705f4..3a6c1320f 100644
--- a/doc/help/raster-driver.html
+++ b/doc/help/raster-driver.html
@@ -5,7 +5,7 @@
<title>Developing Raster Printer Drivers </title>
<meta name="keywords" content="Programming">
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
- <meta name="creator" content="Mini-XML v2.7">
+ <meta name="creator" content="Mini-XML v2.8">
<style type="text/css"><!--
BODY {
font-family: lucida grande, geneva, helvetica, arial, sans-serif;
diff --git a/doc/help/spec-cmp.html b/doc/help/spec-cmp.html
index e0142cfe0..4bbe7f0ee 100644
--- a/doc/help/spec-cmp.html
+++ b/doc/help/spec-cmp.html
@@ -14,7 +14,7 @@
<H2 CLASS="title"><A NAME="OVERVIEW">Overview</A></H2>
-<P>CUPS is developed by Apple Inc. and distributed as open source software under a combination of GNU GPL2 and GNU LGPL2 licenses with exceptions to allow linking to OpenSSL (which has a GPL-incompatible license) and for developers on Apple's operating systems to develop CUPS-based software under alternate license terms. Significant contributions to CUPS must be licensed to Apple using the <A HREF="https://www.cups.org/AppleContributorAgreement_2011-03-10.pdf">Apple Contributor Agreement</A>.</P>
+<P>CUPS is developed by Apple Inc. and distributed as open source software under a combination of GNU GPL2 and GNU LGPL2 licenses with exceptions to allow linking to OpenSSL (which has a GPL-incompatible license) and for developers on Apple's operating systems to develop CUPS-based software until alternate license terms. Significant contributions to CUPS must be licensed to Apple using the <A HREF="https://www.cups.org/AppleContributorAgreement_2011-03-10.pdf">Apple Contributor Agreement</A>.</P>
<P>Apple releases updates to the CUPS software approximately every three months. Each release has a version number consisting of the major version (currently 1), minor version (currently 6), and patch version (starting at 0) separated by the period, for example "1.6.0". Releases where only the patch version number changes will contain only bug fixes to the previous release, for example "1.6.1" includes bug fixes for the "1.6.0" release. New features require the major or minor version numbers to change, for example "1.6.0" release contains new features compared to the "1.5.3" release. Multiple beta and "candidate" releases generally precede each new feature release, for example "1.5b1", "1.5b2", and "1.5rc1" preceded the "1.5.0" release. Finally, we also post regular Subversion snapshot releases, for example "1.6svn-r10486", which represent a snapshot of the development for the next feature release.</P>
diff --git a/doc/help/spec-ppd.html b/doc/help/spec-ppd.html
index 4cdb4721a..f25113b0c 100644
--- a/doc/help/spec-ppd.html
+++ b/doc/help/spec-ppd.html
@@ -5,7 +5,7 @@
<title>CUPS PPD Extensions </title>
<meta name="keywords" content="Specifications">
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
- <meta name="creator" content="Mini-XML v2.7">
+ <meta name="creator" content="Mini-XML v2.8">
<style type="text/css"><!--
BODY {
font-family: lucida grande, geneva, helvetica, arial, sans-serif;
diff --git a/filter/Makefile b/filter/Makefile
index 99d2ee050..322705b74 100644
--- a/filter/Makefile
+++ b/filter/Makefile
@@ -1,5 +1,5 @@
#
-# "$Id: Makefile 10996 2013-05-29 11:51:34Z msweet $"
+# "$Id: Makefile 12568 2015-03-25 13:49:23Z msweet $"
#
# Filter makefile for CUPS.
#
@@ -367,6 +367,12 @@ rastertopwg: rastertopwg.o ../cups/$(LIBCUPS) $(LIBCUPSIMAGE)
echo Linking $@...
$(CC) $(LDFLAGS) -o $@ rastertopwg.o $(LINKCUPSIMAGE) $(IMGLIBS) $(LIBS)
+rastertopwg-static: rastertopwg.o ../cups/$(LIBCUPSSTATIC) libcupsimage.a
+ echo Linking $@...
+ $(CC) $(LDFLAGS) -o $@ rastertopwg.o libcupsimage.a \
+ ../cups/$(LIBCUPSSTATIC) $(IMGLIBS) $(DSOLIBS) $(COMMONLIBS) \
+ $(SSLLIBS) $(DNSSDLIBS) $(LIBGSSAPI)
+
#
# testraster
@@ -398,5 +404,5 @@ include Dependencies
#
-# End of "$Id: Makefile 10996 2013-05-29 11:51:34Z msweet $".
+# End of "$Id: Makefile 12568 2015-03-25 13:49:23Z msweet $".
#
diff --git a/filter/error.c b/filter/error.c
index bb9f14f00..e062757a1 100644
--- a/filter/error.c
+++ b/filter/error.c
@@ -1,9 +1,9 @@
/*
- * "$Id: error.c 12748 2015-06-24 15:58:40Z msweet $"
+ * "$Id: error.c 11558 2014-02-06 18:33:34Z msweet $"
*
* Raster error handling for CUPS.
*
- * Copyright 2007-2015 by Apple Inc.
+ * Copyright 2007-2014 by Apple Inc.
* Copyright 2007 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -56,8 +56,6 @@ _cupsRasterAddError(const char *f, /* I - Printf-style error message */
ssize_t bytes; /* Bytes in message string */
- DEBUG_printf(("_cupsRasterAddError(f=\"%s\", ...)", f));
-
va_start(ap, f);
bytes = vsnprintf(s, sizeof(s), f, ap);
va_end(ap);
@@ -65,8 +63,6 @@ _cupsRasterAddError(const char *f, /* I - Printf-style error message */
if (bytes <= 0)
return;
- DEBUG_printf(("1_cupsRasterAddError: %s", s));
-
bytes ++;
if ((size_t)bytes >= sizeof(s))
@@ -189,7 +185,7 @@ get_error_buffer(void)
* Initialize the global data exactly once...
*/
- DEBUG_puts("3get_error_buffer()");
+ DEBUG_puts("get_error_buffer()");
pthread_once(&raster_key_once, raster_init);
@@ -200,7 +196,7 @@ get_error_buffer(void)
if ((buf = (_cups_raster_error_t *)pthread_getspecific(raster_key))
== NULL)
{
- DEBUG_puts("4get_error_buffer: allocating memory for thread.");
+ DEBUG_puts("get_error_buffer: allocating memory for thread...");
/*
* No, allocate memory as set the pointer for the key...
@@ -209,7 +205,7 @@ get_error_buffer(void)
buf = calloc(1, sizeof(_cups_raster_error_t));
pthread_setspecific(raster_key, buf);
- DEBUG_printf(("4get_error_buffer: buf=%p", buf));
+ DEBUG_printf((" buf=%p\n", buf));
}
/*
@@ -229,7 +225,8 @@ raster_init(void)
{
pthread_key_create(&raster_key, raster_destructor);
- DEBUG_printf(("3raster_init(): raster_key=%x(%u)", (unsigned)raster_key, (unsigned)raster_key));
+ DEBUG_printf(("raster_init(): raster_key=%x(%u)\n", (unsigned)raster_key,
+ (unsigned)raster_key));
}
@@ -244,7 +241,7 @@ raster_destructor(void *value) /* I - Data to free */
/* Error buffer */
- DEBUG_printf(("3raster_destructor(value=%p)", value));
+ DEBUG_printf(("raster_destructor(value=%p)\n", value));
if (buf->start)
free(buf->start);
@@ -275,5 +272,5 @@ get_error_buffer(void)
/*
- * End of "$Id: error.c 12748 2015-06-24 15:58:40Z 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 a7b5d8933..9af404d7e 100644
--- a/filter/gziptoany.c
+++ b/filter/gziptoany.c
@@ -1,5 +1,5 @@
/*
- * "$Id: gziptoany.c 12656 2015-05-22 17:27:37Z msweet $"
+ * "$Id: gziptoany.c 12655 2015-05-22 17:26:40Z msweet $"
*
* GZIP/raw pre-filter for CUPS.
*
@@ -112,5 +112,5 @@ main(int argc, /* I - Number of command-line arguments */
/*
- * End of "$Id: gziptoany.c 12656 2015-05-22 17:27:37Z msweet $".
+ * End of "$Id: gziptoany.c 12655 2015-05-22 17:26:40Z msweet $".
*/
diff --git a/filter/interpret.c b/filter/interpret.c
index c8a724552..f784fa090 100644
--- a/filter/interpret.c
+++ b/filter/interpret.c
@@ -1,9 +1,9 @@
/*
- * "$Id: interpret.c 12748 2015-06-24 15:58:40Z msweet $"
+ * "$Id: interpret.c 11848 2014-05-07 00:26:44Z msweet $"
*
* PPD command interpreter for CUPS.
*
- * Copyright 2007-2015 by Apple Inc.
+ * Copyright 2007-2014 by Apple Inc.
* Copyright 1993-2007 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -91,8 +91,8 @@ static int setpagedevice(_cups_ps_stack_t *st,
cups_page_header2_t *h,
int *preferred_bits);
#ifdef DEBUG
-static void DEBUG_object(const char *prefix, _cups_ps_obj_t *obj);
-static void DEBUG_stack(const char *prefix, _cups_ps_stack_t *st);
+static void DEBUG_object(_cups_ps_obj_t *obj);
+static void DEBUG_stack(_cups_ps_stack_t *st);
#endif /* DEBUG */
@@ -547,8 +547,8 @@ _cupsRasterExecPS(
while ((obj = scan_ps(st, &codeptr)) != NULL)
{
#ifdef DEBUG
- DEBUG_printf(("_cupsRasterExecPS: Stack (%d objects)", st->num_objs));
- DEBUG_object("_cupsRasterExecPS", obj);
+ DEBUG_printf(("_cupsRasterExecPS: Stack (%d objects)\n", st->num_objs));
+ DEBUG_object(obj);
#endif /* DEBUG */
switch (obj->type)
@@ -561,11 +561,11 @@ _cupsRasterExecPS(
pop_stack(st);
if (cleartomark_stack(st))
- _cupsRasterAddError("cleartomark: Stack underflow.\n");
+ _cupsRasterAddError("cleartomark: Stack underflow!\n");
#ifdef DEBUG
- DEBUG_puts("1_cupsRasterExecPS: dup");
- DEBUG_stack("_cupsRasterExecPS", st);
+ DEBUG_puts(" dup: ");
+ DEBUG_stack(st);
#endif /* DEBUG */
break;
@@ -577,7 +577,7 @@ _cupsRasterExecPS(
#ifdef DEBUG
DEBUG_puts("_cupsRasterExecPS: copy");
- DEBUG_stack("_cupsRasterExecPS", st);
+ DEBUG_stack(st);
#endif /* DEBUG */
}
break;
@@ -588,7 +588,7 @@ _cupsRasterExecPS(
#ifdef DEBUG
DEBUG_puts("_cupsRasterExecPS: dup");
- DEBUG_stack("_cupsRasterExecPS", st);
+ DEBUG_stack(st);
#endif /* DEBUG */
break;
@@ -600,7 +600,7 @@ _cupsRasterExecPS(
#ifdef DEBUG
DEBUG_puts("_cupsRasterExecPS: index");
- DEBUG_stack("_cupsRasterExecPS", st);
+ DEBUG_stack(st);
#endif /* DEBUG */
}
break;
@@ -611,7 +611,7 @@ _cupsRasterExecPS(
#ifdef DEBUG
DEBUG_puts("_cupsRasterExecPS: pop");
- DEBUG_stack("_cupsRasterExecPS", st);
+ DEBUG_stack(st);
#endif /* DEBUG */
break;
@@ -630,7 +630,7 @@ _cupsRasterExecPS(
#ifdef DEBUG
DEBUG_puts("_cupsRasterExecPS: roll");
- DEBUG_stack("_cupsRasterExecPS", st);
+ DEBUG_stack(st);
#endif /* DEBUG */
}
}
@@ -642,7 +642,7 @@ _cupsRasterExecPS(
#ifdef DEBUG
DEBUG_puts("_cupsRasterExecPS: setpagedevice");
- DEBUG_stack("_cupsRasterExecPS", st);
+ DEBUG_stack(st);
#endif /* DEBUG */
break;
@@ -653,9 +653,10 @@ _cupsRasterExecPS(
break;
case CUPS_PS_OTHER :
- _cupsRasterAddError("Unknown operator \"%s\".\n", obj->value.other);
+ _cupsRasterAddError("Unknown operator \"%s\"!\n", obj->value.other);
error = 1;
- DEBUG_printf(("_cupsRasterExecPS: Unknown operator \"%s\".", obj->value.other));
+ DEBUG_printf(("_cupsRasterExecPS: Unknown operator \"%s\"!\n",
+ obj->value.other));
break;
}
@@ -674,8 +675,8 @@ _cupsRasterExecPS(
error_stack(st, "Stack not empty:");
#ifdef DEBUG
- DEBUG_puts("_cupsRasterExecPS: Stack not empty");
- DEBUG_stack("_cupsRasterExecPS", st);
+ DEBUG_puts("_cupsRasterExecPS: Stack not empty:");
+ DEBUG_stack(st);
#endif /* DEBUG */
delete_stack(st);
@@ -976,7 +977,7 @@ roll_stack(_cups_ps_stack_t *st, /* I - Stack */
int n; /* Index into array */
- DEBUG_printf(("3roll_stack(st=%p, s=%d, c=%d)", st, s, c));
+ DEBUG_printf((" roll_stack(st=%p, s=%d, c=%d)\n", st, s, c));
/*
* Range check input...
@@ -1434,7 +1435,7 @@ setpagedevice(
* Now pull /name and value pairs from the dictionary...
*/
- DEBUG_puts("3setpagedevice: Dictionary:");
+ DEBUG_puts("setpagedevice: Dictionary:");
for (obj ++; obj < end; obj ++)
{
@@ -1449,8 +1450,8 @@ setpagedevice(
obj ++;
#ifdef DEBUG
- DEBUG_printf(("4setpagedevice: /%s ", name));
- DEBUG_object("setpagedevice", obj);
+ DEBUG_printf(("setpagedevice: /%s ", name));
+ DEBUG_object(obj);
#endif /* DEBUG */
/*
@@ -1600,7 +1601,7 @@ setpagedevice(
* Ignore unknown name+value...
*/
- DEBUG_printf(("4setpagedevice: Unknown name (\"%s\") or value...\n", name));
+ DEBUG_printf((" Unknown name (\"%s\") or value...\n", name));
while (obj[1].type != CUPS_PS_NAME && obj < end)
obj ++;
@@ -1617,92 +1618,91 @@ setpagedevice(
*/
static void
-DEBUG_object(const char *prefix, /* I - Prefix string */
- _cups_ps_obj_t *obj) /* I - Object to print */
+DEBUG_object(_cups_ps_obj_t *obj) /* I - Object to print */
{
switch (obj->type)
{
case CUPS_PS_NAME :
- DEBUG_printf(("4%s: /%s\n", prefix, obj->value.name));
+ DEBUG_printf(("/%s\n", obj->value.name));
break;
case CUPS_PS_NUMBER :
- DEBUG_printf(("4%s: %g\n", prefix, obj->value.number));
+ DEBUG_printf(("%g\n", obj->value.number));
break;
case CUPS_PS_STRING :
- DEBUG_printf(("4%s: (%s)\n", prefix, obj->value.string));
+ DEBUG_printf(("(%s)\n", obj->value.string));
break;
case CUPS_PS_BOOLEAN :
if (obj->value.boolean)
- DEBUG_printf(("4%s: true", prefix));
+ DEBUG_puts("true");
else
- DEBUG_printf(("4%s: false", prefix));
+ DEBUG_puts("false");
break;
case CUPS_PS_NULL :
- DEBUG_printf(("4%s: null", prefix));
+ DEBUG_puts("null");
break;
case CUPS_PS_START_ARRAY :
- DEBUG_printf(("4%s: [", prefix));
+ DEBUG_puts("[");
break;
case CUPS_PS_END_ARRAY :
- DEBUG_printf(("4%s: ]", prefix));
+ DEBUG_puts("]");
break;
case CUPS_PS_START_DICT :
- DEBUG_printf(("4%s: <<", prefix));
+ DEBUG_puts("<<");
break;
case CUPS_PS_END_DICT :
- DEBUG_printf(("4%s: >>", prefix));
+ DEBUG_puts(">>");
break;
case CUPS_PS_START_PROC :
- DEBUG_printf(("4%s: {", prefix));
+ DEBUG_puts("{");
break;
case CUPS_PS_END_PROC :
- DEBUG_printf(("4%s: }", prefix));
+ DEBUG_puts("}");
break;
case CUPS_PS_CLEARTOMARK :
- DEBUG_printf(("4%s: --cleartomark--", prefix));
+ DEBUG_puts("--cleartomark--");
break;
case CUPS_PS_COPY :
- DEBUG_printf(("4%s: --copy--", prefix));
+ DEBUG_puts("--copy--");
break;
case CUPS_PS_DUP :
- DEBUG_printf(("4%s: --dup--", prefix));
+ DEBUG_puts("--dup--");
break;
case CUPS_PS_INDEX :
- DEBUG_printf(("4%s: --index--", prefix));
+ DEBUG_puts("--index--");
break;
case CUPS_PS_POP :
- DEBUG_printf(("4%s: --pop--", prefix));
+ DEBUG_puts("--pop--");
break;
case CUPS_PS_ROLL :
- DEBUG_printf(("4%s: --roll--", prefix));
+ DEBUG_puts("--roll--");
break;
case CUPS_PS_SETPAGEDEVICE :
- DEBUG_printf(("4%s: --setpagedevice--", prefix));
+ DEBUG_puts("--setpagedevice--");
break;
case CUPS_PS_STOPPED :
- DEBUG_printf(("4%s: --stopped--", prefix));
+ DEBUG_puts("--stopped--");
break;
case CUPS_PS_OTHER :
- DEBUG_printf(("4%s: --%s--", prefix, obj->value.other));
+ DEBUG_printf(("--%s--\n", obj->value.other));
break;
}
}
@@ -1713,19 +1713,18 @@ DEBUG_object(const char *prefix, /* I - Prefix string */
*/
static void
-DEBUG_stack(const char *prefix, /* I - Prefix string */
- _cups_ps_stack_t *st) /* I - Stack */
+DEBUG_stack(_cups_ps_stack_t *st) /* I - Stack */
{
int c; /* Looping var */
_cups_ps_obj_t *obj; /* Current object on stack */
for (obj = st->objs, c = st->num_objs; c > 0; c --, obj ++)
- DEBUG_object(prefix, obj);
+ DEBUG_object(obj);
}
#endif /* DEBUG */
/*
- * End of "$Id: interpret.c 12748 2015-06-24 15:58:40Z 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 f5560235b..2cdde86ca 100644
--- a/filter/pstops.c
+++ b/filter/pstops.c
@@ -1,5 +1,5 @@
/*
- * "$Id: pstops.c 12656 2015-05-22 17:27:37Z msweet $"
+ * "$Id: pstops.c 12655 2015-05-22 17:26:40Z msweet $"
*
* PostScript filter for CUPS.
*
@@ -3405,5 +3405,5 @@ write_options(
/*
- * End of "$Id: pstops.c 12656 2015-05-22 17:27:37Z msweet $".
+ * End of "$Id: pstops.c 12655 2015-05-22 17:26:40Z msweet $".
*/
diff --git a/filter/raster.c b/filter/raster.c
index 820382d64..f36ae1a81 100644
--- a/filter/raster.c
+++ b/filter/raster.c
@@ -1,5 +1,5 @@
/*
- * "$Id: raster.c 12748 2015-06-24 15:58:40Z msweet $"
+ * "$Id: raster.c 12678 2015-05-28 19:09:48Z msweet $"
*
* Raster file routines for CUPS.
*
@@ -50,9 +50,6 @@ struct _cups_raster_s /**** Raster stream data ****/
*bufptr, /* Current (read) position in buffer */
*bufend; /* End of current (read) buffer */
size_t bufsize; /* Buffer size */
-#ifdef DEBUG
- size_t iocount; /* Number of bytes read/written */
-#endif /* DEBUG */
};
@@ -196,7 +193,7 @@ cupsRasterOpenIO(
r->sync == CUPS_RASTER_REVSYNCv2)
r->swapped = 1;
- DEBUG_printf(("1cupsRasterOpenIO: r->swapped=%d, r->sync=%08x\n", r->swapped, r->sync));
+ DEBUG_printf(("r->swapped=%d, r->sync=%08x\n", r->swapped, r->sync));
}
else
{
@@ -290,8 +287,6 @@ cupsRasterReadHeader2(
* Get the raster header...
*/
- DEBUG_printf(("cupsRasterReadHeader2(r=%p, h=%p)", r, h));
-
if (!cups_raster_read_header(r))
{
memset(h, 0, sizeof(cups_page_header2_t));
@@ -330,16 +325,9 @@ cupsRasterReadPixels(cups_raster_t *r, /* I - Raster stream */
unsigned count; /* Repetition count */
- DEBUG_printf(("cupsRasterReadPixels(r=%p, p=%p, len=%u)", r, p, len));
-
if (r == NULL || r->mode != CUPS_RASTER_READ || r->remaining == 0 ||
r->header.cupsBytesPerLine == 0)
- {
- DEBUG_puts("1cupsRasterReadPixels: Returning 0.");
return (0);
- }
-
- DEBUG_printf(("1cupsRasterReadPixels: compressed=%d, remaining=%u", r->compressed, r->remaining));
if (!r->compressed)
{
@@ -350,10 +338,7 @@ cupsRasterReadPixels(cups_raster_t *r, /* I - Raster stream */
r->remaining -= len / r->header.cupsBytesPerLine;
if (cups_raster_io(r, p, len) < (ssize_t)len)
- {
- DEBUG_puts("1cupsRasterReadPixels: Read error, returning 0.");
return (0);
- }
/*
* Swap bytes as needed...
@@ -369,8 +354,6 @@ cupsRasterReadPixels(cups_raster_t *r, /* I - Raster stream */
* Return...
*/
- DEBUG_printf(("1cupsRasterReadPixels: Returning %u", len));
-
return (len);
}
@@ -399,10 +382,7 @@ cupsRasterReadPixels(cups_raster_t *r, /* I - Raster stream */
*/
if (!cups_raster_read(r, &byte, 1))
- {
- DEBUG_puts("1cupsRasterReadPixels: Read error, returning 0.");
return (0);
- }
r->count = (unsigned)byte + 1;
@@ -419,10 +399,7 @@ cupsRasterReadPixels(cups_raster_t *r, /* I - Raster stream */
*/
if (!cups_raster_read(r, &byte, 1))
- {
- DEBUG_puts("1cupsRasterReadPixels: Read error, returning 0.");
return (0);
- }
if (byte & 128)
{
@@ -436,10 +413,7 @@ cupsRasterReadPixels(cups_raster_t *r, /* I - Raster stream */
count = (unsigned)bytes;
if (!cups_raster_read(r, temp, count))
- {
- DEBUG_puts("1cupsRasterReadPixels: Read error, returning 0.");
return (0);
- }
temp += count;
bytes -= count;
@@ -460,10 +434,7 @@ cupsRasterReadPixels(cups_raster_t *r, /* I - Raster stream */
bytes -= count;
if (!cups_raster_read(r, temp, r->bpp))
- {
- DEBUG_puts("1cupsRasterReadPixels: Read error, returning 0.");
return (0);
- }
temp += r->bpp;
count -= r->bpp;
@@ -535,8 +506,6 @@ cupsRasterReadPixels(cups_raster_t *r, /* I - Raster stream */
p += bytes;
}
- DEBUG_printf(("1cupsRasterReadPixels: Returning %u", len));
-
return (len);
}
@@ -826,15 +795,10 @@ cupsRasterWritePixels(cups_raster_t *r, /* I - Raster stream */
* Write the byte-swapped buffer...
*/
- bytes = cups_raster_io(r, r->buffer, len);
+ return ((unsigned)cups_raster_io(r, r->buffer, len));
}
else
- bytes = cups_raster_io(r, p, len);
-
- if (bytes < len)
- return (0);
- else
- return (len);
+ return ((unsigned)cups_raster_io(r, p, len));
}
/*
@@ -858,7 +822,7 @@ cupsRasterWritePixels(cups_raster_t *r, /* I - Raster stream */
if (memcmp(p, r->pcurrent, (size_t)bytes))
{
- if (cups_raster_write(r, r->pixels) <= 0)
+ if (!cups_raster_write(r, r->pixels))
return (0);
r->count = 0;
@@ -887,15 +851,10 @@ cupsRasterWritePixels(cups_raster_t *r, /* I - Raster stream */
r->remaining --;
if (r->remaining == 0)
- {
- if (cups_raster_write(r, r->pixels) <= 0)
- return (0);
- else
- return (len);
- }
+ return ((unsigned)cups_raster_write(r, r->pixels));
else if (r->count == 256)
{
- if (cups_raster_write(r, r->pixels) <= 0)
+ if (cups_raster_write(r, r->pixels) == 0)
return (0);
r->count = 0;
@@ -932,10 +891,7 @@ cupsRasterWritePixels(cups_raster_t *r, /* I - Raster stream */
r->remaining --;
if (r->remaining == 0)
- {
- if (cups_raster_write(r, r->pixels) <= 0)
- return (0);
- }
+ return ((unsigned)cups_raster_write(r, r->pixels));
}
}
}
@@ -955,13 +911,9 @@ cups_raster_read_header(
size_t len; /* Length for read/swap */
- DEBUG_printf(("3cups_raster_read_header(r=%p), r->mode=%d", r, r ? r->mode : 0));
-
if (r == NULL || r->mode != CUPS_RASTER_READ)
return (0);
- DEBUG_printf(("4cups_raster_read_header: r->iocount=" CUPS_LLFMT, CUPS_LLCAST r->iocount));
-
/*
* Get the length of the raster header...
*/
@@ -971,8 +923,6 @@ cups_raster_read_header(
else
len = sizeof(cups_page_header2_t);
- DEBUG_printf(("4cups_raster_read_header: len=%d", (int)len));
-
/*
* Read the header...
*/
@@ -980,10 +930,7 @@ cups_raster_read_header(
memset(&(r->header), 0, sizeof(r->header));
if (cups_raster_read(r, (unsigned char *)&(r->header), len) < (ssize_t)len)
- {
- DEBUG_printf(("4cups_raster_read_header: EOF, r->iocount=" CUPS_LLFMT, CUPS_LLCAST r->iocount));
return (0);
- }
/*
* Swap bytes as needed...
@@ -995,19 +942,21 @@ cups_raster_read_header(
temp; /* Temporary copy */
- DEBUG_puts("4cups_raster_read_header: Swapping header bytes.");
+ DEBUG_puts("Swapping header bytes...");
for (len = 81, s = &(r->header.AdvanceDistance);
len > 0;
len --, s ++)
{
+ DEBUG_printf(("%08x =>", *s));
+
temp = *s;
*s = ((temp & 0xff) << 24) |
((temp & 0xff00) << 8) |
((temp & 0xff0000) >> 8) |
((temp & 0xff000000) >> 24);
- DEBUG_printf(("4cups_raster_read_header: %08x => %08x", temp, *s));
+ DEBUG_printf((" %08x\n", *s));
}
}
@@ -1017,8 +966,6 @@ cups_raster_read_header(
cups_raster_update(r);
- DEBUG_printf(("4cups_raster_read_header: cupsBitsPerPixel=%u, cupsBitsPerColor=%u, cupsBytesPerLine=%u, cupsWidth=%u, cupsHeight=%u, r->bpp=%d", r->header.cupsBitsPerPixel, r->header.cupsBitsPerColor, r->header.cupsBytesPerLine, r->header.cupsWidth, r->header.cupsHeight, r->bpp));
-
return (r->header.cupsBitsPerPixel != 0 && r->header.cupsBitsPerColor != 0 && r->header.cupsBytesPerLine != 0 && r->header.cupsHeight != 0 && (r->header.cupsBytesPerLine % r->bpp) == 0);
}
@@ -1036,31 +983,20 @@ cups_raster_io(cups_raster_t *r, /* I - Raster stream */
total; /* Total bytes read/written */
- DEBUG_printf(("5cups_raster_io(r=%p, buf=%p, bytes=" CUPS_LLFMT ")", r, buf, CUPS_LLCAST bytes));
+ DEBUG_printf(("4cups_raster_io(r=%p, buf=%p, bytes=" CUPS_LLFMT ")", r, buf, CUPS_LLCAST bytes));
for (total = 0; total < (ssize_t)bytes; total += count, buf += count)
{
count = (*r->iocb)(r->ctx, buf, bytes - (size_t)total);
- DEBUG_printf(("6cups_raster_io: count=%d, total=%d", (int)count, (int)total));
+ DEBUG_printf(("5cups_raster_io: count=%d, total=%d", (int)count,
+ (int)total));
if (count == 0)
- {
- DEBUG_puts("6cups_raster_io: Returning 0.");
return (0);
- }
else if (count < 0)
- {
- DEBUG_puts("6cups_raster_io: Returning -1 on error.");
return (-1);
- }
-
-#ifdef DEBUG
- r->iocount += (size_t)count;
-#endif /* DEBUG */
}
- DEBUG_printf(("6cups_raster_io: Returning " CUPS_LLFMT ".", CUPS_LLCAST total));
-
return (total);
}
@@ -1079,7 +1015,7 @@ cups_raster_read(cups_raster_t *r, /* I - Raster stream */
total; /* Total bytes read */
- DEBUG_printf(("5cups_raster_read(r=%p, buf=%p, bytes=" CUPS_LLFMT ")\n", r, buf, CUPS_LLCAST bytes));
+ DEBUG_printf(("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));
@@ -1089,8 +1025,6 @@ cups_raster_read(cups_raster_t *r, /* I - Raster stream */
*/
count = (ssize_t)(2 * r->header.cupsBytesPerLine);
- if (count < 65536)
- count = 65536;
if ((size_t)count > r->bufsize)
{
@@ -1123,7 +1057,7 @@ cups_raster_read(cups_raster_t *r, /* I - Raster stream */
{
count = (ssize_t)bytes - total;
- DEBUG_printf(("6cups_raster_read: count=" CUPS_LLFMT ", remaining=" CUPS_LLFMT ", buf=%p, bufptr=%p, bufend=%p", CUPS_LLCAST count, CUPS_LLCAST remaining, buf, r->bufptr, r->bufend));
+ DEBUG_printf(("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)
{
@@ -1139,10 +1073,6 @@ cups_raster_read(cups_raster_t *r, /* I - Raster stream */
r->bufptr = r->buffer;
r->bufend = r->buffer + remaining;
-
-#ifdef DEBUG
- r->iocount += (size_t)remaining;
-#endif /* DEBUG */
}
else
{
@@ -1155,10 +1085,6 @@ cups_raster_read(cups_raster_t *r, /* I - Raster stream */
if (count <= 0)
return (0);
-#ifdef DEBUG
- r->iocount += (size_t)count;
-#endif /* DEBUG */
-
continue;
}
}
@@ -1208,8 +1134,6 @@ cups_raster_read(cups_raster_t *r, /* I - Raster stream */
}
}
- DEBUG_printf(("6cups_raster_read: Returning %ld", (long)total));
-
return (total);
}
@@ -1359,15 +1283,15 @@ cups_raster_write(
count; /* Count */
- DEBUG_printf(("3cups_raster_write(r=%p, pixels=%p)\n", r, pixels));
+ DEBUG_printf(("cups_raster_write(r=%p, pixels=%p)\n", r, pixels));
/*
* Allocate a write buffer as needed...
*/
count = r->header.cupsBytesPerLine * 2;
- if (count < 65536)
- count = 65536;
+ if (count < 3)
+ count = 3;
if ((size_t)count > r->bufsize)
{
@@ -1377,10 +1301,7 @@ cups_raster_write(
wptr = malloc(count);
if (!wptr)
- {
- DEBUG_printf(("4cups_raster_write: Unable to allocate " CUPS_LLFMT " bytes for raster buffer: %s", CUPS_LLCAST count, strerror(errno)));
return (-1);
- }
r->buffer = wptr;
r->bufsize = count;
@@ -1453,8 +1374,6 @@ cups_raster_write(
}
}
- DEBUG_printf(("4cups_raster_write: Writing " CUPS_LLFMT " bytes.", CUPS_LLCAST (wptr - r->buffer)));
-
return (cups_raster_io(r, r->buffer, (size_t)(wptr - r->buffer)));
}
@@ -1479,12 +1398,7 @@ cups_read_fd(void *ctx, /* I - File descriptor as pointer */
while ((count = read(fd, buf, bytes)) < 0)
#endif /* WIN32 */
if (errno != EINTR && errno != EAGAIN)
- {
- DEBUG_printf(("4cups_read_fd: %s", strerror(errno)));
return (-1);
- }
-
- DEBUG_printf(("4cups_read_fd: Returning %d bytes.", (int)count));
return (count);
}
@@ -1536,15 +1450,12 @@ cups_write_fd(void *ctx, /* I - File descriptor pointer */
while ((count = write(fd, buf, bytes)) < 0)
#endif /* WIN32 */
if (errno != EINTR && errno != EAGAIN)
- {
- DEBUG_printf(("4cups_write_fd: %s", strerror(errno)));
return (-1);
- }
return (count);
}
/*
- * End of "$Id: raster.c 12748 2015-06-24 15:58:40Z msweet $".
+ * End of "$Id: raster.c 12678 2015-05-28 19:09:48Z msweet $".
*/
diff --git a/filter/rastertoepson.c b/filter/rastertoepson.c
index cd203416a..f5602d069 100644
--- a/filter/rastertoepson.c
+++ b/filter/rastertoepson.c
@@ -1,5 +1,5 @@
/*
- * "$Id: rastertoepson.c 12618 2015-05-06 20:28:48Z msweet $"
+ * "$Id: rastertoepson.c 12617 2015-05-06 20:28:22Z msweet $"
*
* EPSON ESC/P and ESC/P2 filter for CUPS.
*
@@ -1150,5 +1150,5 @@ main(int argc, /* I - Number of command-line arguments */
/*
- * End of "$Id: rastertoepson.c 12618 2015-05-06 20:28:48Z msweet $".
+ * End of "$Id: rastertoepson.c 12617 2015-05-06 20:28:22Z msweet $".
*/
diff --git a/filter/rastertohp.c b/filter/rastertohp.c
index 1178688b0..188e34bbf 100644
--- a/filter/rastertohp.c
+++ b/filter/rastertohp.c
@@ -1,5 +1,5 @@
/*
- * "$Id: rastertohp.c 12575 2015-03-26 16:36:54Z msweet $"
+ * "$Id: rastertohp.c 12574 2015-03-26 16:36:18Z msweet $"
*
* Hewlett-Packard Page Control Language filter for CUPS.
*
@@ -871,5 +871,5 @@ main(int argc, /* I - Number of command-line arguments */
/*
- * End of "$Id: rastertohp.c 12575 2015-03-26 16:36:54Z msweet $".
+ * End of "$Id: rastertohp.c 12574 2015-03-26 16:36:18Z msweet $".
*/
diff --git a/filter/rastertopwg.c b/filter/rastertopwg.c
index aa17478dd..03ad0aba6 100644
--- a/filter/rastertopwg.c
+++ b/filter/rastertopwg.c
@@ -1,5 +1,5 @@
/*
- * "$Id: rastertopwg.c 12610 2015-05-06 12:24:54Z msweet $"
+ * "$Id: rastertopwg.c 12609 2015-05-06 12:24:47Z msweet $"
*
* CUPS raster to PWG raster format filter for CUPS.
*
@@ -459,5 +459,5 @@ main(int argc, /* I - Number of command-line args */
/*
- * End of "$Id: rastertopwg.c 12610 2015-05-06 12:24:54Z msweet $".
+ * End of "$Id: rastertopwg.c 12609 2015-05-06 12:24:47Z msweet $".
*/
diff --git a/locale/Makefile b/locale/Makefile
index 56842fa70..bd7185bab 100644
--- a/locale/Makefile
+++ b/locale/Makefile
@@ -1,5 +1,5 @@
#
-# "$Id: Makefile 12347 2014-12-09 21:47:23Z msweet $"
+# "$Id: Makefile 12233 2014-10-25 00:03:02Z msweet $"
#
# Locale file makefile for CUPS.
#
@@ -204,5 +204,5 @@ include Dependencies
#
-# End of "$Id: Makefile 12347 2014-12-09 21:47:23Z msweet $".
+# End of "$Id: Makefile 12233 2014-10-25 00:03:02Z msweet $".
#
diff --git a/locale/cups.pot b/locale/cups.pot
index 591989b86..d7d2101e8 100644
--- a/locale/cups.pot
+++ b/locale/cups.pot
@@ -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-08-29 22:25-0400\n"
+"POT-Creation-Date: 2015-06-08 17:14-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"
@@ -192,61 +192,61 @@ msgstr ""
msgid "\treason unknown"
msgstr ""
-#: systemv/cupstestppd.c:454
+#: systemv/cupstestppd.c:434
msgid ""
"\n"
" DETAILED CONFORMANCE TEST RESULTS"
msgstr ""
-#: systemv/cupstestppd.c:3820
+#: systemv/cupstestppd.c:3864
msgid " Ignore specific warnings."
msgstr ""
-#: systemv/cupstestppd.c:3824
+#: systemv/cupstestppd.c:3868
msgid " Issue warnings instead of errors."
msgstr ""
-#: systemv/cupstestppd.c:410 systemv/cupstestppd.c:415
+#: systemv/cupstestppd.c:390 systemv/cupstestppd.c:395
msgid " REF: Page 15, section 3.1."
msgstr ""
-#: systemv/cupstestppd.c:405
+#: systemv/cupstestppd.c:385
msgid " REF: Page 15, section 3.2."
msgstr ""
-#: systemv/cupstestppd.c:425
+#: systemv/cupstestppd.c:405
msgid " REF: Page 19, section 3.3."
msgstr ""
-#: systemv/cupstestppd.c:378
+#: systemv/cupstestppd.c:358
msgid " REF: Page 20, section 3.4."
msgstr ""
-#: systemv/cupstestppd.c:430
+#: systemv/cupstestppd.c:410
msgid " REF: Page 27, section 3.5."
msgstr ""
-#: systemv/cupstestppd.c:373
+#: systemv/cupstestppd.c:353
msgid " REF: Page 42, section 5.2."
msgstr ""
-#: systemv/cupstestppd.c:420
+#: systemv/cupstestppd.c:400
msgid " REF: Pages 16-17, section 3.2."
msgstr ""
-#: systemv/cupstestppd.c:390
+#: systemv/cupstestppd.c:370
msgid " REF: Pages 42-45, section 5.2."
msgstr ""
-#: systemv/cupstestppd.c:384
+#: systemv/cupstestppd.c:364
msgid " REF: Pages 45-46, section 5.2."
msgstr ""
-#: systemv/cupstestppd.c:395
+#: systemv/cupstestppd.c:375
msgid " REF: Pages 48-49, section 5.2."
msgstr ""
-#: systemv/cupstestppd.c:400
+#: systemv/cupstestppd.c:380
msgid " REF: Pages 52-54, section 5.2."
msgstr ""
@@ -255,147 +255,147 @@ msgstr ""
msgid " %-39.39s %.0f bytes"
msgstr ""
-#: systemv/cupstestppd.c:589
+#: systemv/cupstestppd.c:569
#, c-format
msgid " PASS Default%s"
msgstr ""
-#: systemv/cupstestppd.c:524
+#: systemv/cupstestppd.c:504
msgid " PASS DefaultImageableArea"
msgstr ""
-#: systemv/cupstestppd.c:558
+#: systemv/cupstestppd.c:538
msgid " PASS DefaultPaperDimension"
msgstr ""
-#: systemv/cupstestppd.c:631
+#: systemv/cupstestppd.c:611
msgid " PASS FileVersion"
msgstr ""
-#: systemv/cupstestppd.c:675
+#: systemv/cupstestppd.c:655
msgid " PASS FormatVersion"
msgstr ""
-#: systemv/cupstestppd.c:695
+#: systemv/cupstestppd.c:675
msgid " PASS LanguageEncoding"
msgstr ""
-#: systemv/cupstestppd.c:715
+#: systemv/cupstestppd.c:695
msgid " PASS LanguageVersion"
msgstr ""
-#: systemv/cupstestppd.c:769
+#: systemv/cupstestppd.c:749
msgid " PASS Manufacturer"
msgstr ""
-#: systemv/cupstestppd.c:809
+#: systemv/cupstestppd.c:789
msgid " PASS ModelName"
msgstr ""
-#: systemv/cupstestppd.c:829
+#: systemv/cupstestppd.c:809
msgid " PASS NickName"
msgstr ""
-#: systemv/cupstestppd.c:889
+#: systemv/cupstestppd.c:869
msgid " PASS PCFileName"
msgstr ""
-#: systemv/cupstestppd.c:964
+#: systemv/cupstestppd.c:944
msgid " PASS PSVersion"
msgstr ""
-#: systemv/cupstestppd.c:869
+#: systemv/cupstestppd.c:849
msgid " PASS PageRegion"
msgstr ""
-#: systemv/cupstestppd.c:849
+#: systemv/cupstestppd.c:829
msgid " PASS PageSize"
msgstr ""
-#: systemv/cupstestppd.c:924
+#: systemv/cupstestppd.c:904
msgid " PASS Product"
msgstr ""
-#: systemv/cupstestppd.c:999
+#: systemv/cupstestppd.c:979
msgid " PASS ShortNickName"
msgstr ""
-#: systemv/cupstestppd.c:1374
+#: systemv/cupstestppd.c:1354
#, c-format
msgid " WARN %s has no corresponding options."
msgstr ""
-#: systemv/cupstestppd.c:1486
+#: systemv/cupstestppd.c:1466
#, c-format
msgid ""
" WARN %s shares a common prefix with %s\n"
" REF: Page 15, section 3.2."
msgstr ""
-#: systemv/cupstestppd.c:1345
+#: systemv/cupstestppd.c:1325
#, c-format
msgid ""
" WARN Duplex option keyword %s may not work as expected and should be named Duplex.\n"
" REF: Page 122, section 5.17"
msgstr ""
-#: systemv/cupstestppd.c:1744
+#: systemv/cupstestppd.c:1724
msgid " WARN File contains a mix of CR, LF, and CR LF line endings."
msgstr ""
-#: systemv/cupstestppd.c:1390
+#: systemv/cupstestppd.c:1370
msgid ""
" WARN LanguageEncoding required by PPD 4.3 spec.\n"
" REF: Pages 56-57, section 5.3."
msgstr ""
-#: systemv/cupstestppd.c:1726
+#: systemv/cupstestppd.c:1706
#, c-format
msgid " WARN Line %d only contains whitespace."
msgstr ""
-#: systemv/cupstestppd.c:1398
+#: systemv/cupstestppd.c:1378
msgid ""
" WARN Manufacturer required by PPD 4.3 spec.\n"
" REF: Pages 58-59, section 5.3."
msgstr ""
-#: systemv/cupstestppd.c:1749
+#: systemv/cupstestppd.c:1729
msgid " WARN Non-Windows PPD files should use lines ending with only LF, not CR LF."
msgstr ""
-#: systemv/cupstestppd.c:1382
+#: systemv/cupstestppd.c:1362
#, c-format
msgid ""
" WARN Obsolete PPD version %.1f.\n"
" REF: Page 42, section 5.2."
msgstr ""
-#: systemv/cupstestppd.c:1413
+#: systemv/cupstestppd.c:1393
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
+#: systemv/cupstestppd.c:1401
msgid ""
" WARN PCFileName should contain a unique filename.\n"
" REF: Pages 61-62, section 5.3."
msgstr ""
-#: systemv/cupstestppd.c:1456
+#: systemv/cupstestppd.c:1436
msgid ""
" WARN Protocols contains PJL but JCL attributes are not set.\n"
" REF: Pages 78-79, section 5.7."
msgstr ""
-#: systemv/cupstestppd.c:1447
+#: systemv/cupstestppd.c:1427
msgid ""
" WARN Protocols contains both PJL and BCP; expected TBCP.\n"
" REF: Pages 78-79, section 5.7."
msgstr ""
-#: systemv/cupstestppd.c:1430
+#: systemv/cupstestppd.c:1410
msgid ""
" WARN ShortNickName required by PPD 4.3 spec.\n"
" REF: Pages 64-65, section 5.3."
@@ -409,376 +409,376 @@ msgstr ""
msgid " cupstestdsc [options] -"
msgstr ""
-#: systemv/cupstestppd.c:3815
+#: systemv/cupstestppd.c:3859
msgid " program | cupstestppd [options] -"
msgstr ""
-#: systemv/cupstestppd.c:3747
+#: systemv/cupstestppd.c:3791
#, c-format
msgid ""
" %s \"%s %s\" conflicts with \"%s %s\"\n"
" (constraint=\"%s %s %s %s\")."
msgstr ""
-#: systemv/cupstestppd.c:2248
+#: systemv/cupstestppd.c:2228
#, c-format
msgid " %s %s %s does not exist."
msgstr ""
-#: systemv/cupstestppd.c:3904
+#: systemv/cupstestppd.c:3948
#, c-format
msgid " %s %s file \"%s\" has the wrong capitalization."
msgstr ""
-#: systemv/cupstestppd.c:2318
+#: systemv/cupstestppd.c:2298
#, c-format
msgid ""
" %s Bad %s choice %s.\n"
" REF: Page 122, section 5.17"
msgstr ""
-#: systemv/cupstestppd.c:3507 systemv/cupstestppd.c:3556
-#: systemv/cupstestppd.c:3595
+#: systemv/cupstestppd.c:3551 systemv/cupstestppd.c:3600
+#: systemv/cupstestppd.c:3639
#, c-format
msgid " %s Bad UTF-8 \"%s\" translation string for option %s, choice %s."
msgstr ""
-#: systemv/cupstestppd.c:3461
+#: systemv/cupstestppd.c:3505
#, c-format
msgid " %s Bad UTF-8 \"%s\" translation string for option %s."
msgstr ""
-#: systemv/cupstestppd.c:2389
+#: systemv/cupstestppd.c:2369 systemv/cupstestppd.c:2391
#, c-format
msgid " %s Bad cupsFilter value \"%s\"."
msgstr ""
-#: systemv/cupstestppd.c:2475
+#: systemv/cupstestppd.c:2487 systemv/cupstestppd.c:2509
#, c-format
msgid " %s Bad cupsFilter2 value \"%s\"."
msgstr ""
-#: systemv/cupstestppd.c:2964
+#: systemv/cupstestppd.c:3008
#, c-format
msgid " %s Bad cupsICCProfile %s."
msgstr ""
-#: systemv/cupstestppd.c:2571
+#: systemv/cupstestppd.c:2615
#, c-format
msgid " %s Bad cupsPreFilter value \"%s\"."
msgstr ""
-#: systemv/cupstestppd.c:1822
+#: systemv/cupstestppd.c:1802
#, c-format
msgid " %s Bad cupsUIConstraints %s: \"%s\""
msgstr ""
-#: systemv/cupstestppd.c:3411
+#: systemv/cupstestppd.c:3455
#, 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
+#: systemv/cupstestppd.c:2445 systemv/cupstestppd.c:2573
+#: systemv/cupstestppd.c:2659 systemv/cupstestppd.c:2717
+#: systemv/cupstestppd.c:2772 systemv/cupstestppd.c:2827
+#: systemv/cupstestppd.c:2882 systemv/cupstestppd.c:2935
+#: systemv/cupstestppd.c:3057
#, 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
+#: systemv/cupstestppd.c:2353 systemv/cupstestppd.c:2471
+#: systemv/cupstestppd.c:2599 systemv/cupstestppd.c:2686
+#: systemv/cupstestppd.c:2741 systemv/cupstestppd.c:2796
+#: systemv/cupstestppd.c:2851 systemv/cupstestppd.c:2906
#, c-format
msgid " %s Bad spelling of %s - should be %s."
msgstr ""
-#: systemv/cupstestppd.c:2907
+#: systemv/cupstestppd.c:2951
#, c-format
msgid " %s Cannot provide both APScanAppPath and APScanAppBundleID."
msgstr ""
-#: systemv/cupstestppd.c:2205
+#: systemv/cupstestppd.c:2185
#, c-format
msgid " %s Default choices conflicting."
msgstr ""
-#: systemv/cupstestppd.c:1803
+#: systemv/cupstestppd.c:1783
#, c-format
msgid " %s Empty cupsUIConstraints %s"
msgstr ""
-#: systemv/cupstestppd.c:3539 systemv/cupstestppd.c:3579
+#: systemv/cupstestppd.c:3583 systemv/cupstestppd.c:3623
#, c-format
msgid " %s Missing \"%s\" translation string for option %s, choice %s."
msgstr ""
-#: systemv/cupstestppd.c:3447
+#: systemv/cupstestppd.c:3491
#, 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
+#: systemv/cupstestppd.c:2430 systemv/cupstestppd.c:2558
+#: systemv/cupstestppd.c:2644 systemv/cupstestppd.c:2702
+#: systemv/cupstestppd.c:2757 systemv/cupstestppd.c:2812
+#: systemv/cupstestppd.c:2867 systemv/cupstestppd.c:2919
+#: systemv/cupstestppd.c:3042
#, c-format
msgid " %s Missing %s file \"%s\"."
msgstr ""
-#: systemv/cupstestppd.c:3121
+#: systemv/cupstestppd.c:3165
#, c-format
msgid ""
" %s Missing REQUIRED PageRegion option.\n"
" REF: Page 100, section 5.14."
msgstr ""
-#: systemv/cupstestppd.c:3106
+#: systemv/cupstestppd.c:3150
#, c-format
msgid ""
" %s Missing REQUIRED PageSize option.\n"
" REF: Page 99, section 5.14."
msgstr ""
-#: systemv/cupstestppd.c:2013 systemv/cupstestppd.c:2054
+#: systemv/cupstestppd.c:1993 systemv/cupstestppd.c:2034
#, c-format
msgid " %s Missing choice *%s %s in UIConstraints \"*%s %s *%s %s\"."
msgstr ""
-#: systemv/cupstestppd.c:1908
+#: systemv/cupstestppd.c:1888
#, c-format
msgid " %s Missing choice *%s %s in cupsUIConstraints %s: \"%s\""
msgstr ""
-#: systemv/cupstestppd.c:1840
+#: systemv/cupstestppd.c:1820
#, c-format
msgid " %s Missing cupsUIResolver %s"
msgstr ""
-#: systemv/cupstestppd.c:1999 systemv/cupstestppd.c:2040
+#: systemv/cupstestppd.c:1979 systemv/cupstestppd.c:2020
#, c-format
msgid " %s Missing option %s in UIConstraints \"*%s %s *%s %s\"."
msgstr ""
-#: systemv/cupstestppd.c:1892
+#: systemv/cupstestppd.c:1872
#, c-format
msgid " %s Missing option %s in cupsUIConstraints %s: \"%s\""
msgstr ""
-#: systemv/cupstestppd.c:3633
+#: systemv/cupstestppd.c:3677
#, c-format
msgid " %s No base translation \"%s\" is included in file."
msgstr ""
-#: systemv/cupstestppd.c:2294
+#: systemv/cupstestppd.c:2274
#, 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
+#: systemv/cupstestppd.c:3224 systemv/cupstestppd.c:3238
#, c-format
msgid " %s Size \"%s\" defined for %s but not for %s."
msgstr ""
-#: systemv/cupstestppd.c:3160
+#: systemv/cupstestppd.c:3204
#, c-format
msgid " %s Size \"%s\" has unexpected dimensions (%gx%g)."
msgstr ""
-#: systemv/cupstestppd.c:3351
+#: systemv/cupstestppd.c:3395
#, c-format
msgid " %s Size \"%s\" should be \"%s\"."
msgstr ""
-#: systemv/cupstestppd.c:3300
+#: systemv/cupstestppd.c:3344
#, c-format
msgid " %s Size \"%s\" should be the Adobe standard name \"%s\"."
msgstr ""
-#: systemv/cupstestppd.c:3041
+#: systemv/cupstestppd.c:3085
#, c-format
msgid " %s cupsICCProfile %s hash value collides with %s."
msgstr ""
-#: systemv/cupstestppd.c:1963
+#: systemv/cupstestppd.c:1943
#, c-format
msgid " %s cupsUIResolver %s causes a loop."
msgstr ""
-#: systemv/cupstestppd.c:1945
+#: systemv/cupstestppd.c:1925
#, c-format
msgid " %s cupsUIResolver %s does not list at least two different options."
msgstr ""
-#: systemv/cupstestppd.c:1168
+#: systemv/cupstestppd.c:1148
#, c-format
msgid ""
" **FAIL** %s must be 1284DeviceID\n"
" REF: Page 72, section 5.5"
msgstr ""
-#: systemv/cupstestppd.c:580
+#: systemv/cupstestppd.c:560
#, c-format
msgid ""
" **FAIL** Bad Default%s %s\n"
" REF: Page 40, section 4.5."
msgstr ""
-#: systemv/cupstestppd.c:514
+#: systemv/cupstestppd.c:494
#, c-format
msgid ""
" **FAIL** Bad DefaultImageableArea %s\n"
" REF: Page 102, section 5.15."
msgstr ""
-#: systemv/cupstestppd.c:550
+#: systemv/cupstestppd.c:530
#, c-format
msgid ""
" **FAIL** Bad DefaultPaperDimension %s\n"
" REF: Page 103, section 5.15."
msgstr ""
-#: systemv/cupstestppd.c:623
+#: systemv/cupstestppd.c:603
#, c-format
msgid ""
" **FAIL** Bad FileVersion \"%s\"\n"
" REF: Page 56, section 5.3."
msgstr ""
-#: systemv/cupstestppd.c:667
+#: systemv/cupstestppd.c:647
#, c-format
msgid ""
" **FAIL** Bad FormatVersion \"%s\"\n"
" REF: Page 56, section 5.3."
msgstr ""
-#: systemv/cupstestppd.c:1025
+#: systemv/cupstestppd.c:1005
msgid ""
" **FAIL** Bad JobPatchFile attribute in file\n"
" REF: Page 24, section 3.4."
msgstr ""
-#: systemv/cupstestppd.c:1213
+#: systemv/cupstestppd.c:1193
#, c-format
msgid " **FAIL** Bad LanguageEncoding %s - must be ISOLatin1."
msgstr ""
-#: systemv/cupstestppd.c:1227
+#: systemv/cupstestppd.c:1207
#, c-format
msgid " **FAIL** Bad LanguageVersion %s - must be English."
msgstr ""
-#: systemv/cupstestppd.c:743 systemv/cupstestppd.c:760
+#: systemv/cupstestppd.c:723 systemv/cupstestppd.c:740
#, c-format
msgid ""
" **FAIL** Bad Manufacturer (should be \"%s\")\n"
" REF: Page 211, table D.1."
msgstr ""
-#: systemv/cupstestppd.c:800
+#: systemv/cupstestppd.c:780
#, c-format
msgid ""
" **FAIL** Bad ModelName - \"%c\" not allowed in string.\n"
" REF: Pages 59-60, section 5.3."
msgstr ""
-#: systemv/cupstestppd.c:956
+#: systemv/cupstestppd.c:936
msgid ""
" **FAIL** Bad PSVersion - not \"(string) int\".\n"
" REF: Pages 62-64, section 5.3."
msgstr ""
-#: systemv/cupstestppd.c:917
+#: systemv/cupstestppd.c:897
msgid ""
" **FAIL** Bad Product - not \"(string)\".\n"
" REF: Page 62, section 5.3."
msgstr ""
-#: systemv/cupstestppd.c:991
+#: systemv/cupstestppd.c:971
msgid ""
" **FAIL** Bad ShortNickName - longer than 31 chars.\n"
" REF: Pages 64-65, section 5.3."
msgstr ""
-#: systemv/cupstestppd.c:1149
+#: systemv/cupstestppd.c:1129
#, c-format
msgid ""
" **FAIL** Bad option %s choice %s\n"
" REF: Page 84, section 5.9"
msgstr ""
-#: systemv/cupstestppd.c:3774 systemv/cupstestppd.c:3796
+#: systemv/cupstestppd.c:3818 systemv/cupstestppd.c:3840
#, c-format
msgid " **FAIL** Default option code cannot be interpreted: %s"
msgstr ""
-#: systemv/cupstestppd.c:1286
+#: systemv/cupstestppd.c:1266
#, c-format
msgid " **FAIL** Default translation string for option %s choice %s contains 8-bit characters."
msgstr ""
-#: systemv/cupstestppd.c:1259
+#: systemv/cupstestppd.c:1239
#, c-format
msgid " **FAIL** Default translation string for option %s contains 8-bit characters."
msgstr ""
-#: systemv/cupstestppd.c:2101
+#: systemv/cupstestppd.c:2081
#, c-format
msgid " **FAIL** Group names %s and %s differ only by case."
msgstr ""
-#: systemv/cupstestppd.c:2146
+#: systemv/cupstestppd.c:2126
#, c-format
msgid " **FAIL** Multiple occurrences of option %s choice name %s."
msgstr ""
-#: systemv/cupstestppd.c:2163
+#: systemv/cupstestppd.c:2143
#, c-format
msgid " **FAIL** Option %s choice names %s and %s differ only by case."
msgstr ""
-#: systemv/cupstestppd.c:2123
+#: systemv/cupstestppd.c:2103
#, c-format
msgid " **FAIL** Option names %s and %s differ only by case."
msgstr ""
-#: systemv/cupstestppd.c:600
+#: systemv/cupstestppd.c:580
#, c-format
msgid ""
" **FAIL** REQUIRED Default%s\n"
" REF: Page 40, section 4.5."
msgstr ""
-#: systemv/cupstestppd.c:499
+#: systemv/cupstestppd.c:479
msgid ""
" **FAIL** REQUIRED DefaultImageableArea\n"
" REF: Page 102, section 5.15."
msgstr ""
-#: systemv/cupstestppd.c:535
+#: systemv/cupstestppd.c:515
msgid ""
" **FAIL** REQUIRED DefaultPaperDimension\n"
" REF: Page 103, section 5.15."
msgstr ""
-#: systemv/cupstestppd.c:641
+#: systemv/cupstestppd.c:621
msgid ""
" **FAIL** REQUIRED FileVersion\n"
" REF: Page 56, section 5.3."
msgstr ""
-#: systemv/cupstestppd.c:685
+#: systemv/cupstestppd.c:665
msgid ""
" **FAIL** REQUIRED FormatVersion\n"
" REF: Page 56, section 5.3."
msgstr ""
-#: systemv/cupstestppd.c:1076
+#: systemv/cupstestppd.c:1056
#, c-format
msgid ""
" **FAIL** REQUIRED ImageableArea for PageSize %s\n"
@@ -786,68 +786,68 @@ msgid ""
" REF: Page 102, section 5.15."
msgstr ""
-#: systemv/cupstestppd.c:705
+#: systemv/cupstestppd.c:685
msgid ""
" **FAIL** REQUIRED LanguageEncoding\n"
" REF: Pages 56-57, section 5.3."
msgstr ""
-#: systemv/cupstestppd.c:725
+#: systemv/cupstestppd.c:705
msgid ""
" **FAIL** REQUIRED LanguageVersion\n"
" REF: Pages 57-58, section 5.3."
msgstr ""
-#: systemv/cupstestppd.c:779
+#: systemv/cupstestppd.c:759
msgid ""
" **FAIL** REQUIRED Manufacturer\n"
" REF: Pages 58-59, section 5.3."
msgstr ""
-#: systemv/cupstestppd.c:819
+#: systemv/cupstestppd.c:799
msgid ""
" **FAIL** REQUIRED ModelName\n"
" REF: Pages 59-60, section 5.3."
msgstr ""
-#: systemv/cupstestppd.c:839
+#: systemv/cupstestppd.c:819
msgid ""
" **FAIL** REQUIRED NickName\n"
" REF: Page 60, section 5.3."
msgstr ""
-#: systemv/cupstestppd.c:899
+#: systemv/cupstestppd.c:879
msgid ""
" **FAIL** REQUIRED PCFileName\n"
" REF: Pages 61-62, section 5.3."
msgstr ""
-#: systemv/cupstestppd.c:974
+#: systemv/cupstestppd.c:954
msgid ""
" **FAIL** REQUIRED PSVersion\n"
" REF: Pages 62-64, section 5.3."
msgstr ""
-#: systemv/cupstestppd.c:879
+#: systemv/cupstestppd.c:859
msgid ""
" **FAIL** REQUIRED PageRegion\n"
" REF: Page 100, section 5.14."
msgstr ""
-#: systemv/cupstestppd.c:1045
+#: systemv/cupstestppd.c:1025
msgid ""
" **FAIL** REQUIRED PageSize\n"
" REF: Page 41, section 5.\n"
" REF: Page 99, section 5.14."
msgstr ""
-#: systemv/cupstestppd.c:859
+#: systemv/cupstestppd.c:839
msgid ""
" **FAIL** REQUIRED PageSize\n"
" REF: Pages 99-100, section 5.14."
msgstr ""
-#: systemv/cupstestppd.c:1098
+#: systemv/cupstestppd.c:1078
#, c-format
msgid ""
" **FAIL** REQUIRED PaperDimension for PageSize %s\n"
@@ -855,25 +855,25 @@ msgid ""
" REF: Page 103, section 5.15."
msgstr ""
-#: systemv/cupstestppd.c:934
+#: systemv/cupstestppd.c:914
msgid ""
" **FAIL** REQUIRED Product\n"
" REF: Page 62, section 5.3."
msgstr ""
-#: systemv/cupstestppd.c:1009
+#: systemv/cupstestppd.c:989
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
+#: systemv/cupstestppd.c:314 systemv/cupstestppd.c:333
+#: systemv/cupstestppd.c:345
#, c-format
msgid " **FAIL** Unable to open PPD file - %s on line %d."
msgstr ""
-#: systemv/cupstestppd.c:1498
+#: systemv/cupstestppd.c:1478
#, c-format
msgid " %d ERRORS FOUND"
msgstr ""
@@ -942,7 +942,7 @@ msgid ""
" REF: Page 43, %%Pages:"
msgstr ""
-#: systemv/cupstestppd.c:1500
+#: systemv/cupstestppd.c:1480
msgid " NO ERRORS FOUND"
msgstr ""
@@ -975,11 +975,11 @@ msgstr ""
msgid " Warning: obsolete DSC version %.1f in file."
msgstr ""
-#: test/ippfind.c:2788
+#: test/ippfind.c:2796
msgid " ! expression Unary NOT of expression."
msgstr ""
-#: test/ippfind.c:2787
+#: test/ippfind.c:2795
msgid " ( expressions ) Group expressions."
msgstr ""
@@ -1011,29 +1011,29 @@ msgstr ""
msgid " --crlf End lines with CR + LF (Windows)."
msgstr ""
-#: test/ippfind.c:2769
+#: test/ippfind.c:2777
msgid " --domain regex Match domain to regular expression."
msgstr ""
-#: test/ippfind.c:2770
+#: test/ippfind.c:2778
msgid ""
" --exec utility [argument ...] ;\n"
" Execute program if true."
msgstr ""
-#: test/ippfind.c:2790
+#: test/ippfind.c:2798
msgid " --false Always false."
msgstr ""
-#: test/ipptool.c:4806
+#: test/ipptool.c:4858
msgid " --help Show help."
msgstr ""
-#: test/ippfind.c:2752
+#: test/ippfind.c:2760
msgid " --help Show this help."
msgstr ""
-#: test/ippfind.c:2772
+#: test/ippfind.c:2780
msgid " --host regex Match hostname to regular expression."
msgstr ""
@@ -1045,85 +1045,85 @@ msgstr ""
msgid " --list-filters List filters that will be used."
msgstr ""
-#: test/ippfind.c:2774
+#: test/ippfind.c:2782
msgid " --local True if service is local."
msgstr ""
-#: test/ippfind.c:2773
+#: test/ippfind.c:2781
msgid " --ls List attributes."
msgstr ""
-#: test/ippfind.c:2775
+#: test/ippfind.c:2783
msgid " --name regex Match service name to regular expression."
msgstr ""
-#: test/ippfind.c:2789
+#: test/ippfind.c:2797
msgid " --not expression Unary NOT of expression."
msgstr ""
-#: test/ippfind.c:2776
+#: test/ippfind.c:2784
msgid " --path regex Match resource path to regular expression."
msgstr ""
-#: test/ippfind.c:2777
+#: test/ippfind.c:2785
msgid " --port number[-number] Match port to number or range."
msgstr ""
-#: test/ippfind.c:2778
+#: test/ippfind.c:2786
msgid " --print Print URI if true."
msgstr ""
-#: test/ippfind.c:2779
+#: test/ippfind.c:2787
msgid " --print-name Print service name if true."
msgstr ""
-#: test/ippfind.c:2780
+#: test/ippfind.c:2788
msgid " --quiet Quietly report match via exit code."
msgstr ""
-#: test/ippfind.c:2781
+#: test/ippfind.c:2789
msgid " --remote True if service is remote."
msgstr ""
-#: test/ipptool.c:4807
+#: test/ipptool.c:4859
msgid ""
" --stop-after-include-error\n"
" Stop tests after a failed INCLUDE."
msgstr ""
-#: test/ippfind.c:2791
+#: test/ippfind.c:2799
msgid " --true Always true."
msgstr ""
-#: test/ippfind.c:2782
+#: test/ippfind.c:2790
msgid " --txt key True if the TXT record contains the key."
msgstr ""
-#: test/ippfind.c:2783
+#: test/ippfind.c:2791
msgid " --txt-* regex Match TXT record key to regular expression."
msgstr ""
-#: test/ippfind.c:2784
+#: test/ippfind.c:2792
msgid " --uri regex Match URI to regular expression."
msgstr ""
-#: test/ippfind.c:2753
+#: test/ippfind.c:2761
msgid " --version Show program version."
msgstr ""
-#: test/ipptool.c:4809
+#: test/ipptool.c:4861
msgid " --version Show version."
msgstr ""
-#: test/ippfind.c:2746 test/ipptool.c:4810
+#: test/ippfind.c:2754 test/ipptool.c:4862
msgid " -4 Connect using IPv4."
msgstr ""
-#: test/ippfind.c:2747 test/ipptool.c:4811
+#: test/ippfind.c:2755 test/ipptool.c:4863
msgid " -6 Connect using IPv6."
msgstr ""
-#: test/ipptool.c:4812
+#: test/ipptool.c:4864
msgid " -C Send requests using chunking (default)."
msgstr ""
@@ -1131,7 +1131,7 @@ msgstr ""
msgid " -D Remove the input file when finished."
msgstr ""
-#: ppdc/ppdc.cxx:433 ppdc/ppdhtml.cxx:175 ppdc/ppdpo.cxx:255
+#: ppdc/ppdc.cxx:433 ppdc/ppdhtml.cxx:180 ppdc/ppdpo.cxx:250
msgid " -D name=value Set named variable to value."
msgstr ""
@@ -1139,11 +1139,11 @@ msgstr ""
msgid " -E Encrypt the connection."
msgstr ""
-#: test/ipptool.c:4814
+#: test/ipptool.c:4866
msgid " -E Test with HTTP Upgrade to TLS."
msgstr ""
-#: scheduler/main.c:2149
+#: scheduler/main.c:2180
msgid " -F Run in the foreground but detach from console."
msgstr ""
@@ -1151,23 +1151,23 @@ msgstr ""
msgid " -H samba-server Use the named SAMBA server."
msgstr ""
-#: test/ipptool.c:4816
+#: test/ipptool.c:4868
msgid " -I Ignore errors."
msgstr ""
-#: ppdc/ppdc.cxx:435 ppdc/ppdhtml.cxx:177 ppdc/ppdi.cxx:131 ppdc/ppdpo.cxx:257
+#: ppdc/ppdc.cxx:435 ppdc/ppdhtml.cxx:182 ppdc/ppdi.cxx:131 ppdc/ppdpo.cxx:252
msgid " -I include-dir Add include directory to search path."
msgstr ""
-#: systemv/cupstestppd.c:3819
+#: systemv/cupstestppd.c:3863
msgid " -I {filename,filters,none,profiles}"
msgstr ""
-#: test/ipptool.c:4817
+#: test/ipptool.c:4869
msgid " -L Send requests using content-length."
msgstr ""
-#: test/ipptool.c:4819
+#: test/ipptool.c:4871
msgid " -P filename.plist Produce XML plist to a file and test report to standard output."
msgstr ""
@@ -1175,23 +1175,23 @@ msgstr ""
msgid " -P filename.ppd Set PPD file."
msgstr ""
-#: test/ippfind.c:2756
+#: test/ippfind.c:2764
msgid " -P number[-number] Match port to number or range."
msgstr ""
-#: systemv/cupstestppd.c:3821
+#: systemv/cupstestppd.c:3865
msgid " -R root-directory Set alternate root."
msgstr ""
-#: test/ipptool.c:4820
+#: test/ipptool.c:4872
msgid " -S Test with SSL encryption."
msgstr ""
-#: test/ippfind.c:2748
+#: test/ippfind.c:2756
msgid " -T seconds Set the browse timeout in seconds."
msgstr ""
-#: test/ipptool.c:4822
+#: test/ipptool.c:4874
msgid " -T seconds Set the receive/send timeout in seconds."
msgstr ""
@@ -1199,15 +1199,15 @@ msgstr ""
msgid " -U username Specify username."
msgstr ""
-#: test/ippfind.c:2750 test/ipptool.c:4824
+#: test/ippfind.c:2758 test/ipptool.c:4876
msgid " -V version Set default IPP version."
msgstr ""
-#: systemv/cupstestppd.c:3822
+#: systemv/cupstestppd.c:3866
msgid " -W {all,none,constraints,defaults,duplex,filters,profiles,sizes,translations}"
msgstr ""
-#: test/ipptool.c:4826
+#: test/ipptool.c:4878
msgid " -X Produce XML plist instead of plain text."
msgstr ""
@@ -1219,7 +1219,7 @@ msgstr ""
msgid " -a Export all printers."
msgstr ""
-#: test/ipptool.c:4828
+#: test/ipptool.c:4880
msgid " -c Produce CSV output."
msgstr ""
@@ -1231,7 +1231,7 @@ msgstr ""
msgid " -c cups-files.conf Set cups-files.conf file to use."
msgstr ""
-#: scheduler/main.c:2147
+#: scheduler/main.c:2178
msgid " -c cupsd.conf Set cupsd.conf file to use."
msgstr ""
@@ -1239,7 +1239,7 @@ msgstr ""
msgid " -d domain Browse/resolve in specified domain."
msgstr ""
-#: test/ipptool.c:4829
+#: test/ipptool.c:4881
msgid " -d name=value Set named variable to value."
msgstr ""
@@ -1251,7 +1251,7 @@ msgstr ""
msgid " -d printer Use the named printer."
msgstr ""
-#: test/ippfind.c:2757
+#: test/ippfind.c:2765
msgid " -d regex Match domain to regular expression."
msgstr ""
@@ -1259,19 +1259,19 @@ msgstr ""
msgid " -e Use every filter from the PPD file."
msgstr ""
-#: scheduler/main.c:2148
+#: scheduler/main.c:2179
msgid " -f Run in the foreground."
msgstr ""
-#: test/ipptool.c:4831
+#: test/ipptool.c:4883
msgid " -f filename Set default request filename."
msgstr ""
-#: scheduler/main.c:2151
+#: scheduler/main.c:2182
msgid " -h Show this usage message."
msgstr ""
-#: test/ippfind.c:2758
+#: test/ippfind.c:2766
msgid " -h regex Match hostname to regular expression."
msgstr ""
@@ -1283,7 +1283,7 @@ msgstr ""
msgid " -i mime/type Set input MIME type (otherwise auto-typed)."
msgstr ""
-#: test/ipptool.c:4833
+#: test/ipptool.c:4885
msgid " -i seconds Repeat the last file with the given time interval."
msgstr ""
@@ -1291,15 +1291,15 @@ msgstr ""
msgid " -j job-id[,N] Filter file N from the specified job (default is file 1)."
msgstr ""
-#: test/ippfind.c:2759
+#: test/ippfind.c:2767
msgid " -l List attributes."
msgstr ""
-#: test/ipptool.c:4835
+#: test/ipptool.c:4887
msgid " -l Produce plain text output."
msgstr ""
-#: scheduler/main.c:2152
+#: scheduler/main.c:2183
msgid " -l Run cupsd on demand."
msgstr ""
@@ -1319,11 +1319,11 @@ msgstr ""
msgid " -n copies Set number of copies."
msgstr ""
-#: test/ipptool.c:4836
+#: test/ipptool.c:4888
msgid " -n count Repeat the last file the given number of times."
msgstr ""
-#: test/ippfind.c:2760
+#: test/ippfind.c:2768
msgid " -n regex Match service name to regular expression."
msgstr ""
@@ -1339,7 +1339,7 @@ msgstr ""
msgid " -o name=value Set option(s)."
msgstr ""
-#: test/ippfind.c:2761
+#: test/ippfind.c:2769
msgid " -p Print URI if true."
msgstr ""
@@ -1351,27 +1351,27 @@ msgstr ""
msgid " -p program Run specified program for each service."
msgstr ""
-#: test/ippfind.c:2762
+#: test/ippfind.c:2770
msgid " -q Quietly report match via exit code."
msgstr ""
-#: systemv/cupstestppd.c:3826 test/ipptool.c:4838
+#: systemv/cupstestppd.c:3870 test/ipptool.c:4890
msgid " -q Run silently."
msgstr ""
-#: test/ippfind.c:2763
+#: test/ippfind.c:2771
msgid " -r True if service is remote."
msgstr ""
-#: systemv/cupstestppd.c:3827
+#: systemv/cupstestppd.c:3871
msgid " -r Use 'relaxed' open mode."
msgstr ""
-#: test/ippfind.c:2764
+#: test/ippfind.c:2772
msgid " -s Print service name if true."
msgstr ""
-#: test/ipptool.c:4839
+#: test/ipptool.c:4891
msgid " -t Produce a test report."
msgstr ""
@@ -1379,11 +1379,11 @@ msgstr ""
msgid " -t Test PPDs instead of generating them."
msgstr ""
-#: scheduler/main.c:2153
+#: scheduler/main.c:2184
msgid " -t Test the configuration file."
msgstr ""
-#: test/ippfind.c:2765
+#: test/ippfind.c:2773
msgid " -t key True if the TXT record contains the key."
msgstr ""
@@ -1399,20 +1399,20 @@ msgstr ""
msgid " -u Remove the PPD file when finished."
msgstr ""
-#: test/ippfind.c:2766
+#: test/ippfind.c:2774
msgid " -u regex Match URI to regular expression."
msgstr ""
-#: systemv/cupsaddsmb.c:291 systemv/cupstestppd.c:3828 test/ipptool.c:4840
-#: ppdc/ppdc.cxx:447 ppdc/ppdpo.cxx:259
+#: systemv/cupsaddsmb.c:291 systemv/cupstestppd.c:3872 test/ipptool.c:4892
+#: ppdc/ppdc.cxx:447 ppdc/ppdpo.cxx:254
msgid " -v Be verbose."
msgstr ""
-#: systemv/cupstestppd.c:3829
+#: systemv/cupstestppd.c:3873
msgid " -vv Be very verbose."
msgstr ""
-#: test/ippfind.c:2767
+#: test/ippfind.c:2775
msgid ""
" -x utility [argument ...] ;\n"
" Execute program if true."
@@ -1422,150 +1422,151 @@ msgstr ""
msgid " -z Compress PPD files using GNU zip."
msgstr ""
-#: test/ippfind.c:2810
+#: test/ippfind.c:2818
msgid " IPPFIND_SERVICE_DOMAIN Domain name"
msgstr ""
-#: test/ippfind.c:2811
+#: test/ippfind.c:2819
msgid ""
" IPPFIND_SERVICE_HOSTNAME\n"
" Fully-qualified domain name"
msgstr ""
-#: test/ippfind.c:2813
+#: test/ippfind.c:2821
msgid " IPPFIND_SERVICE_NAME Service instance name"
msgstr ""
-#: test/ippfind.c:2814
+#: test/ippfind.c:2822
msgid " IPPFIND_SERVICE_PORT Port number"
msgstr ""
-#: test/ippfind.c:2815
+#: test/ippfind.c:2823
msgid " IPPFIND_SERVICE_REGTYPE DNS-SD registration type"
msgstr ""
-#: test/ippfind.c:2816
+#: test/ippfind.c:2824
msgid " IPPFIND_SERVICE_SCHEME URI scheme"
msgstr ""
-#: test/ippfind.c:2817
+#: test/ippfind.c:2825
msgid " IPPFIND_SERVICE_URI URI"
msgstr ""
-#: test/ippfind.c:2818
+#: test/ippfind.c:2826
msgid " IPPFIND_TXT_* Value of TXT record key"
msgstr ""
-#: test/ippfind.c:2793
+#: test/ippfind.c:2801
msgid ""
" expression --and expression\n"
" Logical AND."
msgstr ""
-#: test/ippfind.c:2795
+#: test/ippfind.c:2803
msgid ""
" expression --or expression\n"
" Logical OR."
msgstr ""
-#: test/ippfind.c:2792
+#: test/ippfind.c:2800
msgid " expression expression Logical AND."
msgstr ""
-#: test/ippfind.c:2800
+#: test/ippfind.c:2808
msgid " {service_domain} Domain name"
msgstr ""
-#: test/ippfind.c:2801
+#: test/ippfind.c:2809
msgid " {service_hostname} Fully-qualified domain name"
msgstr ""
-#: test/ippfind.c:2802
+#: test/ippfind.c:2810
msgid " {service_name} Service instance name"
msgstr ""
-#: test/ippfind.c:2803
+#: test/ippfind.c:2811
msgid " {service_port} Port number"
msgstr ""
-#: test/ippfind.c:2804
+#: test/ippfind.c:2812
msgid " {service_regtype} DNS-SD registration type"
msgstr ""
-#: test/ippfind.c:2805
+#: test/ippfind.c:2813
msgid " {service_scheme} URI scheme"
msgstr ""
-#: test/ippfind.c:2806
+#: test/ippfind.c:2814
msgid " {service_uri} URI"
msgstr ""
-#: test/ippfind.c:2807
+#: test/ippfind.c:2815
msgid " {txt_*} Value of TXT record key"
msgstr ""
-#: test/ippfind.c:2799
+#: test/ippfind.c:2807
msgid " {} URI"
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: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
+#: systemv/cupstestppd.c:312 systemv/cupstestppd.c:331
+#: systemv/cupstestppd.c:343 systemv/cupstestppd.c:476
+#: systemv/cupstestppd.c:491 systemv/cupstestppd.c:512
+#: systemv/cupstestppd.c:527 systemv/cupstestppd.c:557
+#: systemv/cupstestppd.c:577 systemv/cupstestppd.c:600
+#: systemv/cupstestppd.c:618 systemv/cupstestppd.c:644
+#: systemv/cupstestppd.c:662 systemv/cupstestppd.c:682
+#: systemv/cupstestppd.c:702 systemv/cupstestppd.c:720
+#: systemv/cupstestppd.c:737 systemv/cupstestppd.c:756
+#: systemv/cupstestppd.c:777 systemv/cupstestppd.c:796
+#: systemv/cupstestppd.c:816 systemv/cupstestppd.c:836
+#: systemv/cupstestppd.c:856 systemv/cupstestppd.c:876
+#: systemv/cupstestppd.c:894 systemv/cupstestppd.c:911
+#: systemv/cupstestppd.c:933 systemv/cupstestppd.c:951
+#: systemv/cupstestppd.c:968 systemv/cupstestppd.c:986
+#: systemv/cupstestppd.c:1002 systemv/cupstestppd.c:1022
+#: systemv/cupstestppd.c:1053 systemv/cupstestppd.c:1075
+#: systemv/cupstestppd.c:1126 systemv/cupstestppd.c:1145
+#: systemv/cupstestppd.c:1189 systemv/cupstestppd.c:1203
+#: systemv/cupstestppd.c:1235 systemv/cupstestppd.c:1262
+#: systemv/cupstestppd.c:1780 systemv/cupstestppd.c:1799
+#: systemv/cupstestppd.c:1817 systemv/cupstestppd.c:1869
+#: systemv/cupstestppd.c:1885 systemv/cupstestppd.c:1922
+#: systemv/cupstestppd.c:1940 systemv/cupstestppd.c:1976
+#: systemv/cupstestppd.c:1990 systemv/cupstestppd.c:2017
+#: systemv/cupstestppd.c:2031 systemv/cupstestppd.c:2077
+#: systemv/cupstestppd.c:2099 systemv/cupstestppd.c:2122
+#: systemv/cupstestppd.c:2139 systemv/cupstestppd.c:2181
+#: systemv/cupstestppd.c:2224 systemv/cupstestppd.c:2271
+#: systemv/cupstestppd.c:2295 systemv/cupstestppd.c:2349
+#: systemv/cupstestppd.c:2365 systemv/cupstestppd.c:2387
+#: systemv/cupstestppd.c:2427 systemv/cupstestppd.c:2441
+#: systemv/cupstestppd.c:2467 systemv/cupstestppd.c:2483
+#: systemv/cupstestppd.c:2505 systemv/cupstestppd.c:2555
+#: systemv/cupstestppd.c:2569 systemv/cupstestppd.c:2595
+#: systemv/cupstestppd.c:2611 systemv/cupstestppd.c:2641
+#: systemv/cupstestppd.c:2655 systemv/cupstestppd.c:2682
+#: systemv/cupstestppd.c:2699 systemv/cupstestppd.c:2713
+#: systemv/cupstestppd.c:2737 systemv/cupstestppd.c:2754
+#: systemv/cupstestppd.c:2768 systemv/cupstestppd.c:2792
+#: systemv/cupstestppd.c:2809 systemv/cupstestppd.c:2823
+#: systemv/cupstestppd.c:2847 systemv/cupstestppd.c:2864
+#: systemv/cupstestppd.c:2878 systemv/cupstestppd.c:2902
+#: systemv/cupstestppd.c:2916 systemv/cupstestppd.c:2931
+#: systemv/cupstestppd.c:2948 systemv/cupstestppd.c:3004
+#: systemv/cupstestppd.c:3039 systemv/cupstestppd.c:3053
+#: systemv/cupstestppd.c:3081 systemv/cupstestppd.c:3146
+#: systemv/cupstestppd.c:3161 systemv/cupstestppd.c:3200
+#: systemv/cupstestppd.c:3220 systemv/cupstestppd.c:3234
+#: systemv/cupstestppd.c:3451 systemv/cupstestppd.c:3487
+#: systemv/cupstestppd.c:3501 systemv/cupstestppd.c:3547
+#: systemv/cupstestppd.c:3579 systemv/cupstestppd.c:3596
+#: systemv/cupstestppd.c:3619 systemv/cupstestppd.c:3635
+#: systemv/cupstestppd.c:3673 systemv/cupstestppd.c:3814
+#: systemv/cupstestppd.c:3836 systemv/cupstestppd.c:3944
msgid " FAIL"
msgstr ""
-#: systemv/cupstestppd.c:1306
+#: systemv/cupstestppd.c:1286
msgid " PASS"
msgstr ""
@@ -1784,7 +1785,7 @@ msgstr ""
msgid "%s accepting requests since %s"
msgstr ""
-#: scheduler/ipp.c:9952
+#: scheduler/ipp.c:9984
#, c-format
msgid "%s cannot be changed."
msgstr ""
@@ -1809,7 +1810,7 @@ msgstr ""
msgid "%s is ready and printing"
msgstr ""
-#: filter/rastertoepson.c:970 filter/rastertohp.c:700
+#: filter/rastertoepson.c:982 filter/rastertohp.c:700
#: filter/rastertolabel.c:1120
#, c-format
msgid "%s job-id user title copies options [file]"
@@ -1820,7 +1821,7 @@ msgstr ""
msgid "%s not accepting requests since %s -"
msgstr ""
-#: scheduler/ipp.c:618
+#: scheduler/ipp.c:617
#, c-format
msgid "%s not supported."
msgstr ""
@@ -1841,10 +1842,10 @@ msgid "%s: %-33.33s [job %d localhost]"
msgstr ""
#. 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
+#: cups/langprintf.c:77 scheduler/cupsfilter.c:726 systemv/lpadmin.c:803
+#: systemv/lpadmin.c:854 systemv/lpadmin.c:904 systemv/lpadmin.c:960
+#: systemv/lpadmin.c:1058 systemv/lpadmin.c:1110 systemv/lpadmin.c:1166
+#: systemv/lpadmin.c:1581
#, c-format
msgid "%s: %s"
msgstr ""
@@ -1854,7 +1855,12 @@ msgstr ""
msgid "%s: %s failed: %s"
msgstr ""
-#: test/ippfind.c:777 test/ipptool.c:378
+#: systemv/lpadmin.c:1216
+#, c-format
+msgid "%s: Bad printer URI \"%s\"."
+msgstr ""
+
+#: test/ippfind.c:777 test/ipptool.c:381
#, c-format
msgid "%s: Bad version %s for \"-V\"."
msgstr ""
@@ -1982,7 +1988,7 @@ msgid "%s: Error - expected title after \"-t\" option."
msgstr ""
#: berkeley/lpq.c:97 berkeley/lpr.c:81 berkeley/lprm.c:104 systemv/cancel.c:95
-#: systemv/cupsaccept.c:101 systemv/lp.c:110 systemv/lpadmin.c:424
+#: systemv/cupsaccept.c:101 systemv/lp.c:110 systemv/lpadmin.c:426
#: systemv/lpstat.c:124
#, c-format
msgid "%s: Error - expected username after \"-U\" option."
@@ -2069,17 +2075,17 @@ msgstr ""
msgid "%s: Invalid filter string \"%s\"."
msgstr ""
-#: test/ipptool.c:309
+#: test/ipptool.c:312
#, c-format
msgid "%s: Missing filename for \"-P\"."
msgstr ""
-#: test/ippfind.c:749 test/ipptool.c:346
+#: test/ippfind.c:749 test/ipptool.c:349
#, c-format
msgid "%s: Missing timeout for \"-T\"."
msgstr ""
-#: test/ippfind.c:762 test/ipptool.c:360
+#: test/ippfind.c:762 test/ipptool.c:363
#, c-format
msgid "%s: Missing version for \"-V\"."
msgstr ""
@@ -2101,12 +2107,17 @@ msgstr ""
#: berkeley/lpq.c:83 berkeley/lpr.c:67 berkeley/lprm.c:67 systemv/cancel.c:82
#: systemv/cupsaccept.c:88 systemv/cupsaddsmb.c:86 systemv/lp.c:96
-#: systemv/lpadmin.c:225 systemv/lpinfo.c:88 systemv/lpmove.c:73
-#: systemv/lpstat.c:88 test/ipptool.c:291 test/ipptool.c:335
+#: systemv/lpadmin.c:230 systemv/lpinfo.c:88 systemv/lpmove.c:73
+#: systemv/lpstat.c:88 test/ipptool.c:294 test/ipptool.c:338
#, c-format
msgid "%s: Sorry, no encryption support."
msgstr ""
+#: systemv/lpadmin.c:1223
+#, c-format
+msgid "%s: Unable to connect to \"%s:%d\": %s"
+msgstr ""
+
#: berkeley/lpq.c:284 scheduler/cupsfilter.c:1275 systemv/cancel.c:245
#: systemv/cupsaddsmb.c:144 systemv/cupsaddsmb.c:171
#, c-format
@@ -2118,12 +2129,17 @@ msgstr ""
msgid "%s: Unable to contact server."
msgstr ""
+#: systemv/lpadmin.c:1236
+#, c-format
+msgid "%s: Unable to create PPD file: %s"
+msgstr ""
+
#: scheduler/cupsfilter.c:416
#, c-format
msgid "%s: Unable to determine MIME type of \"%s\"."
msgstr ""
-#: test/ipptool.c:318
+#: test/ipptool.c:321
#, c-format
msgid "%s: Unable to open \"%s\": %s"
msgstr ""
@@ -2143,6 +2159,11 @@ msgstr ""
msgid "%s: Unable to read MIME database from \"%s\" or \"%s\"."
msgstr ""
+#: systemv/lpadmin.c:1207
+#, c-format
+msgid "%s: Unable to resolve \"%s\"."
+msgstr ""
+
#: berkeley/lpq.c:140 systemv/lpstat.c:575
#, c-format
msgid "%s: Unknown destination \"%s\"."
@@ -2990,20 +3011,20 @@ msgstr ""
msgid "?Invalid help command unknown."
msgstr ""
-#: cgi-bin/admin.c:2348
+#: cgi-bin/admin.c:2354
msgid "A Samba password is required to export printer drivers"
msgstr ""
-#: cgi-bin/admin.c:2344
+#: cgi-bin/admin.c:2350
msgid "A Samba username is required to export printer drivers"
msgstr ""
-#: scheduler/ipp.c:2274
+#: scheduler/ipp.c:2252
#, c-format
msgid "A class named \"%s\" already exists."
msgstr ""
-#: scheduler/ipp.c:916
+#: scheduler/ipp.c:915
#, c-format
msgid "A printer named \"%s\" already exists."
msgstr ""
@@ -3152,16 +3173,16 @@ msgstr ""
msgid "Accepted"
msgstr ""
-#: cgi-bin/admin.c:548
+#: cgi-bin/admin.c:546
msgid "Add Class"
msgstr ""
-#: cgi-bin/admin.c:860
+#: cgi-bin/admin.c:859
msgid "Add Printer"
msgstr ""
-#: cgi-bin/admin.c:422 cgi-bin/admin.c:455 cgi-bin/admin.c:503
-#: cgi-bin/admin.c:513
+#: cgi-bin/admin.c:420 cgi-bin/admin.c:453 cgi-bin/admin.c:501
+#: cgi-bin/admin.c:511
msgid "Add RSS Subscription"
msgstr ""
@@ -3169,7 +3190,7 @@ msgstr ""
msgid "Address"
msgstr ""
-#: cgi-bin/admin.c:188 cgi-bin/admin.c:262 cgi-bin/admin.c:2725
+#: cgi-bin/admin.c:186 cgi-bin/admin.c:260 cgi-bin/admin.c:2731
msgid "Administration"
msgstr ""
@@ -3185,7 +3206,7 @@ msgstr ""
msgid "Applicator"
msgstr ""
-#: scheduler/ipp.c:991
+#: scheduler/ipp.c:998
#, c-format
msgid "Attempt to set %s printer-state to bad value %d."
msgstr ""
@@ -3243,12 +3264,12 @@ msgstr ""
msgid "B9"
msgstr ""
-#: scheduler/ipp.c:10877
+#: scheduler/ipp.c:10929
#, c-format
msgid "Bad 'document-format' value \"%s\"."
msgstr ""
-#: cups/dest.c:1736
+#: cups/dest.c:1737
msgid "Bad NULL dests pointer"
msgstr ""
@@ -3264,16 +3285,16 @@ msgstr ""
msgid "Bad OrderDependency"
msgstr ""
-#: 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
+#: cups/ppd-cache.c:434 cups/ppd-cache.c:481 cups/ppd-cache.c:566
+#: cups/ppd-cache.c:572 cups/ppd-cache.c:588 cups/ppd-cache.c:604
+#: cups/ppd-cache.c:613 cups/ppd-cache.c:621 cups/ppd-cache.c:638
+#: cups/ppd-cache.c:646 cups/ppd-cache.c:661 cups/ppd-cache.c:669
+#: cups/ppd-cache.c:690 cups/ppd-cache.c:702 cups/ppd-cache.c:717
+#: cups/ppd-cache.c:729 cups/ppd-cache.c:751 cups/ppd-cache.c:759
+#: cups/ppd-cache.c:777 cups/ppd-cache.c:785 cups/ppd-cache.c:800
+#: cups/ppd-cache.c:808 cups/ppd-cache.c:826 cups/ppd-cache.c:834
+#: cups/ppd-cache.c:861 cups/ppd-cache.c:931 cups/ppd-cache.c:939
+#: cups/ppd-cache.c:947
msgid "Bad PPD cache file."
msgstr ""
@@ -3293,7 +3314,7 @@ msgstr ""
msgid "Bad arguments to function"
msgstr ""
-#: scheduler/ipp.c:1352
+#: scheduler/ipp.c:1368
#, c-format
msgid "Bad copies value %d."
msgstr ""
@@ -3302,22 +3323,22 @@ msgstr ""
msgid "Bad custom parameter"
msgstr ""
-#: cups/http-support.c:1598 scheduler/ipp.c:2360
+#: cups/http-support.c:1598 scheduler/ipp.c:2347
#, c-format
msgid "Bad device-uri \"%s\"."
msgstr ""
-#: scheduler/ipp.c:2399
+#: scheduler/ipp.c:2386
#, c-format
msgid "Bad device-uri scheme \"%s\"."
msgstr ""
-#: scheduler/ipp.c:8125 scheduler/ipp.c:8141 scheduler/ipp.c:9360
+#: scheduler/ipp.c:8141 scheduler/ipp.c:8159 scheduler/ipp.c:9385
#, c-format
msgid "Bad document-format \"%s\"."
msgstr ""
-#: scheduler/ipp.c:9376
+#: scheduler/ipp.c:9403
#, c-format
msgid "Bad document-format-default \"%s\"."
msgstr ""
@@ -3330,51 +3351,51 @@ msgstr ""
msgid "Bad hostname/address in URI"
msgstr ""
-#: scheduler/ipp.c:1527
+#: scheduler/ipp.c:1543
#, c-format
msgid "Bad job-name value: %s"
msgstr ""
-#: scheduler/ipp.c:1520
+#: scheduler/ipp.c:1536
msgid "Bad job-name value: Wrong type or count."
msgstr ""
-#: scheduler/ipp.c:9967
+#: scheduler/ipp.c:9999
msgid "Bad job-priority value."
msgstr ""
-#: scheduler/ipp.c:1382
+#: scheduler/ipp.c:1398
#, c-format
msgid "Bad job-sheets value \"%s\"."
msgstr ""
-#: scheduler/ipp.c:1366
+#: scheduler/ipp.c:1382
msgid "Bad job-sheets value type."
msgstr ""
-#: scheduler/ipp.c:9997
+#: scheduler/ipp.c:10029
msgid "Bad job-state value."
msgstr ""
-#: 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
+#: scheduler/ipp.c:2970 scheduler/ipp.c:3430 scheduler/ipp.c:5935
+#: scheduler/ipp.c:6082 scheduler/ipp.c:7570 scheduler/ipp.c:7839
+#: scheduler/ipp.c:8703 scheduler/ipp.c:8927 scheduler/ipp.c:9279
+#: scheduler/ipp.c:9892
#, c-format
msgid "Bad job-uri \"%s\"."
msgstr ""
-#: scheduler/ipp.c:2040 scheduler/ipp.c:5468
+#: scheduler/ipp.c:2018 scheduler/ipp.c:5473
#, c-format
msgid "Bad notify-pull-method \"%s\"."
msgstr ""
-#: scheduler/ipp.c:2004 scheduler/ipp.c:5432
+#: scheduler/ipp.c:1982 scheduler/ipp.c:5437
#, c-format
msgid "Bad notify-recipient-uri \"%s\"."
msgstr ""
-#: scheduler/ipp.c:1398
+#: scheduler/ipp.c:1414
#, c-format
msgid "Bad number-up value %d."
msgstr ""
@@ -3384,7 +3405,7 @@ msgstr ""
msgid "Bad option + choice on line %d."
msgstr ""
-#: scheduler/ipp.c:1415
+#: scheduler/ipp.c:1431
#, c-format
msgid "Bad page-ranges values %d-%d."
msgstr ""
@@ -3393,17 +3414,17 @@ msgstr ""
msgid "Bad port number in URI"
msgstr ""
-#: scheduler/ipp.c:2442
+#: scheduler/ipp.c:2429
#, c-format
msgid "Bad port-monitor \"%s\"."
msgstr ""
-#: scheduler/ipp.c:2503
+#: scheduler/ipp.c:2490
#, c-format
msgid "Bad printer-state value %d."
msgstr ""
-#: cups/dest.c:610 cups/dest.c:1296 cups/dest.c:1343
+#: cups/dest.c:610 cups/dest.c:1297 cups/dest.c:1344
msgid "Bad printer-uri."
msgstr ""
@@ -3425,7 +3446,7 @@ msgstr ""
msgid "Bad scheme in URI"
msgstr ""
-#: cgi-bin/admin.c:1464
+#: cgi-bin/admin.c:1470
msgid "Bad subscription ID"
msgstr ""
@@ -3441,7 +3462,7 @@ msgstr ""
msgid "Bad/empty URI"
msgstr ""
-#: cgi-bin/admin.c:3270 cgi-bin/admin.c:3516
+#: cgi-bin/admin.c:3276 cgi-bin/admin.c:3522
msgid "Banners"
msgstr ""
@@ -3449,12 +3470,12 @@ msgstr ""
msgid "Bond Paper"
msgstr ""
-#: backend/usb-darwin.c:1874
+#: backend/usb-darwin.c:2024
#, c-format
msgid "Boolean expected for waiteof option \"%s\"."
msgstr ""
-#: filter/pstops.c:2029
+#: filter/pstops.c:2034
msgid "Buffer overflow detected, aborting."
msgstr ""
@@ -3470,15 +3491,15 @@ msgstr ""
msgid "Cancel Jobs"
msgstr ""
-#: cgi-bin/admin.c:1465 cgi-bin/admin.c:1504 cgi-bin/admin.c:1514
+#: cgi-bin/admin.c:1471 cgi-bin/admin.c:1510 cgi-bin/admin.c:1520
msgid "Cancel RSS Subscription"
msgstr ""
-#: backend/ipp.c:2198
+#: backend/ipp.c:2205
msgid "Canceling print job."
msgstr ""
-#: scheduler/ipp.c:2483
+#: scheduler/ipp.c:2470
msgid "Cannot share a remote Kerberized printer."
msgstr ""
@@ -3486,12 +3507,12 @@ msgstr ""
msgid "Cassette"
msgstr ""
-#: cgi-bin/admin.c:1635 cgi-bin/admin.c:1777 cgi-bin/admin.c:1790
-#: cgi-bin/admin.c:1801
+#: cgi-bin/admin.c:1641 cgi-bin/admin.c:1783 cgi-bin/admin.c:1796
+#: cgi-bin/admin.c:1807
msgid "Change Settings"
msgstr ""
-#: scheduler/ipp.c:2052 scheduler/ipp.c:5480
+#: scheduler/ipp.c:2030 scheduler/ipp.c:5485
#, c-format
msgid "Character set \"%s\" not supported."
msgstr ""
@@ -3504,7 +3525,7 @@ msgstr ""
msgid "Clean Print Heads"
msgstr ""
-#: scheduler/ipp.c:3893
+#: scheduler/ipp.c:3882
msgid "Close-Job doesn't support the job-uri attribute."
msgstr ""
@@ -3527,11 +3548,11 @@ msgstr ""
msgid "Community name uses indefinite length"
msgstr ""
-#: backend/ipp.c:854 backend/lpd.c:879 backend/socket.c:400
+#: backend/ipp.c:858 backend/lpd.c:879 backend/socket.c:400
msgid "Connected to printer."
msgstr ""
-#: backend/ipp.c:759 backend/lpd.c:702 backend/socket.c:319
+#: backend/ipp.c:763 backend/lpd.c:702 backend/socket.c:319
msgid "Connecting to printer."
msgstr ""
@@ -3547,7 +3568,7 @@ msgstr ""
msgid "Control file sent successfully."
msgstr ""
-#: backend/ipp.c:1349 backend/lpd.c:472
+#: backend/ipp.c:1358 backend/lpd.c:472
msgid "Copying print data."
msgstr ""
@@ -3587,11 +3608,11 @@ msgstr ""
msgid "Data file sent successfully."
msgstr ""
-#: cgi-bin/admin.c:2074 cgi-bin/admin.c:2085 cgi-bin/admin.c:2130
+#: cgi-bin/admin.c:2080 cgi-bin/admin.c:2091 cgi-bin/admin.c:2136
msgid "Delete Class"
msgstr ""
-#: cgi-bin/admin.c:2159 cgi-bin/admin.c:2170 cgi-bin/admin.c:2215
+#: cgi-bin/admin.c:2165 cgi-bin/admin.c:2176 cgi-bin/admin.c:2221
msgid "Delete Printer"
msgstr ""
@@ -3599,7 +3620,7 @@ msgstr ""
msgid "DeskJet Series"
msgstr ""
-#: scheduler/ipp.c:1276
+#: scheduler/ipp.c:1297
#, c-format
msgid "Destination \"%s\" is not accepting jobs."
msgstr ""
@@ -3648,7 +3669,7 @@ msgstr ""
msgid "Disabled"
msgstr ""
-#: scheduler/ipp.c:5979
+#: scheduler/ipp.c:5984
#, c-format
msgid "Document #%d does not exist in job #%d."
msgstr ""
@@ -3669,9 +3690,9 @@ msgstr ""
msgid "EPL2 Label Printer"
msgstr ""
-#: 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
+#: cgi-bin/admin.c:1835 cgi-bin/admin.c:1847 cgi-bin/admin.c:1901
+#: cgi-bin/admin.c:1908 cgi-bin/admin.c:1943 cgi-bin/admin.c:1956
+#: cgi-bin/admin.c:1980 cgi-bin/admin.c:2053
msgid "Edit Configuration File"
msgstr ""
@@ -3679,12 +3700,12 @@ msgstr ""
msgid "Empty PPD file."
msgstr ""
-#: cups/http.c:4624
+#: cups/http.c:4648
msgid "Encryption is not supported."
msgstr ""
#. TRANSLATORS: Banner/cover sheet after the print job.
-#: cgi-bin/admin.c:3541
+#: cgi-bin/admin.c:3547
msgid "Ending Banner"
msgstr ""
@@ -3692,7 +3713,7 @@ msgstr ""
msgid "English"
msgstr ""
-#: scheduler/client.c:2209
+#: scheduler/client.c:2219
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 ""
@@ -3908,7 +3929,7 @@ msgstr ""
msgid "Envelope You4 Long Edge"
msgstr ""
-#: test/ippfind.c:2809
+#: test/ippfind.c:2817
msgid "Environment Variables:"
msgstr ""
@@ -3916,12 +3937,16 @@ msgstr ""
msgid "Epson"
msgstr ""
-#: cgi-bin/admin.c:3584
+#: cgi-bin/admin.c:3590
msgid "Error Policy"
msgstr ""
-#: filter/rastertopwg.c:395 filter/rastertopwg.c:410 filter/rastertopwg.c:421
-#: filter/rastertopwg.c:432
+#: filter/rastertopwg.c:423
+msgid "Error reading raster data."
+msgstr ""
+
+#: filter/rastertopwg.c:395 filter/rastertopwg.c:413 filter/rastertopwg.c:431
+#: filter/rastertopwg.c:442
msgid "Error sending raster data."
msgstr ""
@@ -3977,11 +4002,11 @@ msgstr ""
msgid "Expectation Failed"
msgstr ""
-#: cgi-bin/admin.c:2336 cgi-bin/admin.c:2355
+#: cgi-bin/admin.c:2342 cgi-bin/admin.c:2361
msgid "Export Printers to Samba"
msgstr ""
-#: test/ippfind.c:2755
+#: test/ippfind.c:2763
msgid "Expressions:"
msgstr ""
@@ -4036,12 +4061,12 @@ msgstr ""
msgid "File Folder "
msgstr ""
-#: scheduler/ipp.c:2378
+#: scheduler/ipp.c:2365
#, c-format
msgid "File device URIs have been disabled. To enable, see the FileDevice directive in \"%s/cups-files.conf\"."
msgstr ""
-#: filter/rastertoepson.c:1102 filter/rastertohp.c:834
+#: filter/rastertoepson.c:1114 filter/rastertohp.c:834
#: filter/rastertolabel.c:1259
#, c-format
msgid "Finished page %d."
@@ -4071,10 +4096,10 @@ msgstr ""
msgid "Glossy Paper"
msgstr ""
-#: 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
+#: scheduler/ipp.c:2948 scheduler/ipp.c:3356 scheduler/ipp.c:3894
+#: scheduler/ipp.c:5913 scheduler/ipp.c:6060 scheduler/ipp.c:7547
+#: scheduler/ipp.c:8681 scheduler/ipp.c:8905 scheduler/ipp.c:9257
+#: scheduler/ipp.c:9870
msgid "Got a printer-uri attribute but no job-id."
msgstr ""
@@ -4102,7 +4127,7 @@ msgstr ""
msgid "IPP attribute has no name."
msgstr ""
-#: cups/ipp.c:7000
+#: cups/ipp.c:7016
msgid "IPP attribute is not a member of the message."
msgstr ""
@@ -4242,7 +4267,7 @@ msgstr ""
msgid "Internet Postage 3-Part"
msgstr ""
-#: backend/ipp.c:319
+#: backend/ipp.c:323
msgid "Internet Printing Protocol"
msgstr ""
@@ -4319,52 +4344,52 @@ msgstr ""
msgid "JIS B9"
msgstr ""
-#: scheduler/ipp.c:8954
+#: scheduler/ipp.c:8977
#, c-format
msgid "Job #%d cannot be restarted - no files."
msgstr ""
-#: 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
+#: scheduler/ipp.c:2988 scheduler/ipp.c:3222 scheduler/ipp.c:3281
+#: scheduler/ipp.c:3458 scheduler/ipp.c:3904 scheduler/ipp.c:5571
+#: scheduler/ipp.c:5953 scheduler/ipp.c:6100 scheduler/ipp.c:6438
+#: scheduler/ipp.c:7394 scheduler/ipp.c:7416 scheduler/ipp.c:7588
+#: scheduler/ipp.c:7813 scheduler/ipp.c:7856 scheduler/ipp.c:8721
+#: scheduler/ipp.c:8945 scheduler/ipp.c:9297 scheduler/ipp.c:9910
#, c-format
msgid "Job #%d does not exist."
msgstr ""
-#: scheduler/ipp.c:3501
+#: scheduler/ipp.c:3490
#, c-format
msgid "Job #%d is already aborted - can't cancel."
msgstr ""
-#: scheduler/ipp.c:3495
+#: scheduler/ipp.c:3484
#, c-format
msgid "Job #%d is already canceled - can't cancel."
msgstr ""
-#: scheduler/ipp.c:3507
+#: scheduler/ipp.c:3496
#, c-format
msgid "Job #%d is already completed - can't cancel."
msgstr ""
-#: scheduler/ipp.c:7603 scheduler/ipp.c:7887 scheduler/ipp.c:9893
+#: scheduler/ipp.c:7614 scheduler/ipp.c:7898 scheduler/ipp.c:9925
#, c-format
msgid "Job #%d is finished and cannot be altered."
msgstr ""
-#: scheduler/ipp.c:8936
+#: scheduler/ipp.c:8959
#, c-format
msgid "Job #%d is not complete."
msgstr ""
-#: scheduler/ipp.c:3014
+#: scheduler/ipp.c:3003
#, c-format
msgid "Job #%d is not held for authentication."
msgstr ""
-#: scheduler/ipp.c:8710
+#: scheduler/ipp.c:8735
#, c-format
msgid "Job #%d is not held."
msgstr ""
@@ -4385,7 +4410,7 @@ msgstr ""
msgid "Job Stopped"
msgstr ""
-#: scheduler/ipp.c:9975
+#: scheduler/ipp.c:10007
msgid "Job is completed and cannot be changed."
msgstr ""
@@ -4393,11 +4418,11 @@ msgstr ""
msgid "Job operation failed"
msgstr ""
-#: scheduler/ipp.c:10011 scheduler/ipp.c:10028 scheduler/ipp.c:10039
+#: scheduler/ipp.c:10043 scheduler/ipp.c:10060 scheduler/ipp.c:10071
msgid "Job state cannot be changed."
msgstr ""
-#: scheduler/ipp.c:8802
+#: scheduler/ipp.c:8825
msgid "Job subscriptions cannot be renewed."
msgstr ""
@@ -4417,7 +4442,7 @@ msgstr ""
msgid "Label Top"
msgstr ""
-#: scheduler/ipp.c:2061 scheduler/ipp.c:5489
+#: scheduler/ipp.c:2039 scheduler/ipp.c:5494
#, c-format
msgid "Language \"%s\" not supported."
msgstr ""
@@ -4446,7 +4471,7 @@ msgstr ""
msgid "Line longer than the maximum allowed (255 characters)"
msgstr ""
-#: cgi-bin/admin.c:2373
+#: cgi-bin/admin.c:2379
msgid "List Available Printers"
msgstr ""
@@ -4502,7 +4527,7 @@ msgstr ""
msgid "Missing asterisk in column 1"
msgstr ""
-#: scheduler/ipp.c:5971
+#: scheduler/ipp.c:5976
msgid "Missing document-number attribute."
msgstr ""
@@ -4511,13 +4536,13 @@ msgstr ""
msgid "Missing double quote on line %d."
msgstr ""
-#: 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
+#: cgi-bin/admin.c:712 cgi-bin/admin.c:2092 cgi-bin/admin.c:2177
+#: cgi-bin/admin.c:2771 cgi-bin/admin.c:3025 cgi-bin/admin.c:3136
+#: cgi-bin/admin.c:3846
msgid "Missing form variable"
msgstr ""
-#: scheduler/ipp.c:9328
+#: scheduler/ipp.c:9351
msgid "Missing last-document attribute in request."
msgstr ""
@@ -4529,7 +4554,7 @@ msgstr ""
msgid "Missing media-size in media-col."
msgstr ""
-#: scheduler/ipp.c:6574
+#: scheduler/ipp.c:6579
msgid "Missing notify-subscription-ids attribute."
msgstr ""
@@ -4537,7 +4562,7 @@ msgstr ""
msgid "Missing option keyword"
msgstr ""
-#: scheduler/ipp.c:3140 scheduler/ipp.c:3165
+#: scheduler/ipp.c:3129 scheduler/ipp.c:3154
msgid "Missing requesting-user-name attribute."
msgstr ""
@@ -4579,15 +4604,15 @@ msgid ""
" device-id = %s"
msgstr ""
-#: test/ippfind.c:2786
+#: test/ippfind.c:2794
msgid "Modifiers:"
msgstr ""
-#: cgi-bin/admin.c:548
+#: cgi-bin/admin.c:546
msgid "Modify Class"
msgstr ""
-#: cgi-bin/admin.c:860
+#: cgi-bin/admin.c:859
msgid "Modify Printer"
msgstr ""
@@ -4611,7 +4636,7 @@ msgstr ""
msgid "Name OID uses indefinite length"
msgstr ""
-#: scheduler/ipp.c:1054
+#: scheduler/ipp.c:1061
msgid "Nested classes are not allowed."
msgstr ""
@@ -4647,7 +4672,7 @@ msgstr ""
msgid "No active connection."
msgstr ""
-#: scheduler/ipp.c:3418
+#: scheduler/ipp.c:3407
#, c-format
msgid "No active jobs on %s."
msgstr ""
@@ -4656,7 +4681,7 @@ msgstr ""
msgid "No attributes in request."
msgstr ""
-#: scheduler/ipp.c:3041
+#: scheduler/ipp.c:3030
msgid "No authentication information provided."
msgstr ""
@@ -4664,11 +4689,11 @@ msgstr ""
msgid "No community name"
msgstr ""
-#: scheduler/ipp.c:5771
+#: scheduler/ipp.c:5776
msgid "No default printer."
msgstr ""
-#: cgi-bin/ipp-var.c:421 scheduler/ipp.c:7149
+#: cgi-bin/ipp-var.c:421 scheduler/ipp.c:7160
msgid "No destinations added."
msgstr ""
@@ -4684,7 +4709,7 @@ msgstr ""
msgid "No error-status"
msgstr ""
-#: scheduler/ipp.c:8091 scheduler/ipp.c:9342
+#: scheduler/ipp.c:8103 scheduler/ipp.c:9365
msgid "No file in print request."
msgstr ""
@@ -4696,7 +4721,7 @@ msgstr ""
msgid "No name OID"
msgstr ""
-#: filter/rastertoepson.c:1132 filter/rastertohp.c:865
+#: filter/rastertoepson.c:1144 filter/rastertohp.c:865
#: filter/rastertolabel.c:1288
msgid "No pages were found."
msgstr ""
@@ -4713,7 +4738,7 @@ msgstr ""
msgid "No printer-uri found for class"
msgstr ""
-#: scheduler/ipp.c:6179
+#: scheduler/ipp.c:6184
msgid "No printer-uri in request."
msgstr ""
@@ -4733,11 +4758,11 @@ msgstr ""
msgid "No request-id"
msgstr ""
-#: scheduler/ipp.c:5374
+#: scheduler/ipp.c:5379
msgid "No subscription attributes in request."
msgstr ""
-#: scheduler/ipp.c:7476
+#: scheduler/ipp.c:7487
msgid "No subscriptions found."
msgstr ""
@@ -4781,7 +4806,7 @@ msgstr ""
msgid "Not Supported"
msgstr ""
-#: scheduler/ipp.c:1490 scheduler/ipp.c:10572
+#: scheduler/ipp.c:1506 scheduler/ipp.c:10624
msgid "Not allowed to print."
msgstr ""
@@ -4822,32 +4847,32 @@ msgstr ""
msgid "OpenUI/JCLOpenUI without a CloseUI/JCLCloseUI first"
msgstr ""
-#: cgi-bin/admin.c:3611
+#: cgi-bin/admin.c:3617
msgid "Operation Policy"
msgstr ""
-#: filter/pstops.c:2177
+#: filter/pstops.c:2182
#, c-format
msgid "Option \"%s\" cannot be included via %%%%IncludeFeature."
msgstr ""
-#: cgi-bin/admin.c:3261 cgi-bin/admin.c:3345
+#: cgi-bin/admin.c:3267 cgi-bin/admin.c:3351
msgid "Options Installed"
msgstr ""
-#: 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
+#: scheduler/cupsfilter.c:1482 scheduler/main.c:2177 systemv/cupsaddsmb.c:284
+#: systemv/cupsctl.c:203 systemv/cupstestdsc.c:429 systemv/cupstestppd.c:3861
+#: test/ippfind.c:2753 test/ipptool.c:4857 ppdc/ppdc.cxx:432
+#: ppdc/ppdhtml.cxx:179 ppdc/ppdi.cxx:130 ppdc/ppdmerge.cxx:363
+#: ppdc/ppdpo.cxx:249
msgid "Options:"
msgstr ""
-#: cups/ppd-cache.c:125
+#: cups/ppd-cache.c:442
msgid "Out of date PPD cache file."
msgstr ""
-#: cups/ppd-cache.c:1410
+#: cups/ppd-cache.c:1810
msgid "Out of memory."
msgstr ""
@@ -4965,11 +4990,11 @@ msgstr ""
msgid "Plain Paper"
msgstr ""
-#: cgi-bin/admin.c:3279 cgi-bin/admin.c:3560
+#: cgi-bin/admin.c:3285 cgi-bin/admin.c:3566
msgid "Policies"
msgstr ""
-#: cgi-bin/admin.c:3286 cgi-bin/admin.c:3629 cgi-bin/admin.c:3642
+#: cgi-bin/admin.c:3292 cgi-bin/admin.c:3635 cgi-bin/admin.c:3648
msgid "Port Monitor"
msgstr ""
@@ -4993,7 +5018,7 @@ msgstr ""
msgid "Postcard Long Edge"
msgstr ""
-#: backend/ipp.c:961 backend/ipp.c:969
+#: backend/ipp.c:965 backend/ipp.c:973
msgid "Preparing to print."
msgstr ""
@@ -5037,15 +5062,15 @@ msgstr ""
msgid "Print file sent."
msgstr ""
-#: backend/ipp.c:2172
+#: backend/ipp.c:2179
msgid "Print job canceled at printer."
msgstr ""
-#: backend/ipp.c:2164
+#: backend/ipp.c:2171
msgid "Print job too large."
msgstr ""
-#: backend/ipp.c:1642
+#: backend/ipp.c:1653
msgid "Print job was not accepted."
msgstr ""
@@ -5073,11 +5098,11 @@ msgstr ""
msgid "Printer Settings"
msgstr ""
-#: backend/ipp.c:2167
+#: backend/ipp.c:2174
msgid "Printer cannot print supplied content."
msgstr ""
-#: backend/ipp.c:2170
+#: backend/ipp.c:2177
msgid "Printer cannot print with supplied options."
msgstr ""
@@ -5089,7 +5114,7 @@ msgstr ""
msgid "Printers"
msgstr ""
-#: filter/rastertoepson.c:1078 filter/rastertohp.c:806
+#: filter/rastertoepson.c:1090 filter/rastertohp.c:806
#: filter/rastertolabel.c:1235
#, c-format
msgid "Printing page %d, %u%% complete."
@@ -5099,7 +5124,7 @@ msgstr ""
msgid "Quarto"
msgstr ""
-#: scheduler/ipp.c:1485 scheduler/ipp.c:10567
+#: scheduler/ipp.c:1501 scheduler/ipp.c:10619
msgid "Quota limit reached."
msgstr ""
@@ -5166,7 +5191,7 @@ msgstr ""
msgid "See Other"
msgstr ""
-#: backend/usb-darwin.c:552 backend/usb-libusb.c:346
+#: backend/usb-darwin.c:564 backend/usb-libusb.c:346
msgid "Sending data to printer."
msgstr ""
@@ -5186,7 +5211,7 @@ msgstr ""
msgid "Server Stopped"
msgstr ""
-#: cups/tls-darwin.c:1008 cups/tls-gnutls.c:1024
+#: cups/tls-darwin.c:1030 cups/tls-gnutls.c:1049
msgid "Server credentials not set."
msgstr ""
@@ -5194,24 +5219,24 @@ msgstr ""
msgid "Service Unavailable"
msgstr ""
-#: cgi-bin/admin.c:2766 cgi-bin/admin.c:2812 cgi-bin/admin.c:2969
-#: cgi-bin/admin.c:2988
+#: cgi-bin/admin.c:2772 cgi-bin/admin.c:2818 cgi-bin/admin.c:2975
+#: cgi-bin/admin.c:2994
msgid "Set Allowed Users"
msgstr ""
-#: cgi-bin/admin.c:3015
+#: cgi-bin/admin.c:3021
msgid "Set As Server Default"
msgstr ""
-#: cgi-bin/admin.c:3115
+#: cgi-bin/admin.c:3121
msgid "Set Class Options"
msgstr ""
-#: cgi-bin/admin.c:3115 cgi-bin/admin.c:3289 cgi-bin/admin.c:3671
+#: cgi-bin/admin.c:3121 cgi-bin/admin.c:3295 cgi-bin/admin.c:3677
msgid "Set Printer Options"
msgstr ""
-#: cgi-bin/admin.c:3841 cgi-bin/admin.c:3885 cgi-bin/admin.c:3903
+#: cgi-bin/admin.c:3847 cgi-bin/admin.c:3891 cgi-bin/admin.c:3909
msgid "Set Publishing"
msgstr ""
@@ -5237,11 +5262,11 @@ msgid "Standard"
msgstr ""
#. TRANSLATORS: Banner/cover sheet before the print job.
-#: cgi-bin/admin.c:3532
+#: cgi-bin/admin.c:3538
msgid "Starting Banner"
msgstr ""
-#: filter/rastertoepson.c:1054 filter/rastertohp.c:782
+#: filter/rastertoepson.c:1066 filter/rastertohp.c:782
#: filter/rastertolabel.c:1211
#, c-format
msgid "Starting page %d."
@@ -5251,13 +5276,13 @@ msgstr ""
msgid "Statement"
msgstr ""
-#: scheduler/ipp.c:3564 scheduler/ipp.c:6590 scheduler/ipp.c:7289
-#: scheduler/ipp.c:8790
+#: scheduler/ipp.c:3553 scheduler/ipp.c:6595 scheduler/ipp.c:7300
+#: scheduler/ipp.c:8813
#, c-format
msgid "Subscription #%d does not exist."
msgstr ""
-#: test/ippfind.c:2798
+#: test/ippfind.c:2806
msgid "Substitutions:"
msgstr ""
@@ -5301,43 +5326,43 @@ msgstr ""
msgid "Tear-Off Adjust Position"
msgstr ""
-#: scheduler/ipp.c:1321
+#: scheduler/ipp.c:1337
#, c-format
msgid "The \"%s\" attribute is required for print jobs."
msgstr ""
-#: scheduler/ipp.c:6250 scheduler/ipp.c:6330 scheduler/ipp.c:6343
-#: scheduler/ipp.c:6355 scheduler/ipp.c:6370
+#: scheduler/ipp.c:6255 scheduler/ipp.c:6335 scheduler/ipp.c:6348
+#: scheduler/ipp.c:6360 scheduler/ipp.c:6375
#, c-format
msgid "The %s attribute cannot be provided with job-ids."
msgstr ""
-#: scheduler/ipp.c:1297
+#: scheduler/ipp.c:1316
#, c-format
-msgid "The '%s' Job Description attribute cannot be supplied in a job creation request."
+msgid "The '%s' Job Status attribute cannot be supplied in a job creation request."
msgstr ""
-#: scheduler/ipp.c:5183
+#: scheduler/ipp.c:5188
#, c-format
msgid "The '%s' operation attribute cannot be supplied in a Create-Job request."
msgstr ""
-#: scheduler/ipp.c:6820
+#: scheduler/ipp.c:6825
#, c-format
msgid "The PPD file \"%s\" could not be found."
msgstr ""
-#: scheduler/ipp.c:6807
+#: scheduler/ipp.c:6812
#, c-format
msgid "The PPD file \"%s\" could not be opened: %s"
msgstr ""
-#: filter/rastertoepson.c:1023 filter/rastertohp.c:753
+#: filter/rastertoepson.c:1035 filter/rastertohp.c:753
#: filter/rastertolabel.c:1175
msgid "The PPD file could not be opened."
msgstr ""
-#: cgi-bin/admin.c:727
+#: cgi-bin/admin.c:725
msgid "The class name may only contain up to 127 printable characters and may not contain spaces, slashes (/), or the pound sign (#)."
msgstr ""
@@ -5357,11 +5382,11 @@ msgstr ""
msgid "The fuser's temperature is low."
msgstr ""
-#: scheduler/ipp.c:2088
+#: scheduler/ipp.c:2066
msgid "The notify-lease-duration attribute cannot be used with job subscriptions."
msgstr ""
-#: scheduler/ipp.c:2071 scheduler/ipp.c:5499
+#: scheduler/ipp.c:2049 scheduler/ipp.c:5504
#, c-format
msgid "The notify-user-data value is too large (%d > 63 octets)."
msgstr ""
@@ -5374,7 +5399,7 @@ msgstr ""
msgid "The optical photoconductor will need to be replaced soon."
msgstr ""
-#: backend/ipp.c:981
+#: backend/ipp.c:985
msgid "The printer configuration is incorrect or the printer no longer exists."
msgstr ""
@@ -5382,8 +5407,8 @@ msgstr ""
msgid "The printer did not respond."
msgstr ""
-#: 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/ipp.c:829 backend/ipp.c:948 backend/ipp.c:1062 backend/ipp.c:1459
+#: backend/ipp.c:1625 backend/lpd.c:836 backend/socket.c:379
#: backend/usb-unix.c:124 backend/usb-unix.c:414 backend/usb-unix.c:497
msgid "The printer is in use."
msgstr ""
@@ -5400,7 +5425,7 @@ msgstr ""
msgid "The printer is not connected."
msgstr ""
-#: backend/ipp.c:803 backend/ipp.c:836 backend/ipp.c:940 backend/lpd.c:815
+#: backend/ipp.c:807 backend/ipp.c:840 backend/ipp.c:944 backend/lpd.c:815
#: backend/lpd.c:856 backend/socket.c:358 backend/socket.c:391
msgid "The printer is not responding."
msgstr ""
@@ -5409,15 +5434,15 @@ msgstr ""
msgid "The printer is now connected."
msgstr ""
-#: backend/usb-darwin.c:1300
+#: backend/usb-darwin.c:1342
msgid "The printer is now online."
msgstr ""
-#: backend/usb-darwin.c:1321
+#: backend/usb-darwin.c:1381
msgid "The printer is offline."
msgstr ""
-#: backend/ipp.c:818 backend/lpd.c:829 backend/socket.c:372
+#: backend/ipp.c:822 backend/lpd.c:829 backend/socket.c:372
msgid "The printer is unreachable at this time."
msgstr ""
@@ -5429,26 +5454,26 @@ msgstr ""
msgid "The printer may be out of toner."
msgstr ""
-#: backend/ipp.c:812 backend/lpd.c:823 backend/socket.c:366
+#: backend/ipp.c:816 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:909
+#: cgi-bin/admin.c:908
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: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
+#: scheduler/ipp.c:787 scheduler/ipp.c:1055 scheduler/ipp.c:3194
+#: scheduler/ipp.c:3373 scheduler/ipp.c:5171 scheduler/ipp.c:5338
+#: scheduler/ipp.c:5652 scheduler/ipp.c:6221 scheduler/ipp.c:7030
+#: scheduler/ipp.c:7086 scheduler/ipp.c:7406 scheduler/ipp.c:7672
+#: scheduler/ipp.c:7761 scheduler/ipp.c:7794 scheduler/ipp.c:8118
+#: scheduler/ipp.c:8525 scheduler/ipp.c:8607 scheduler/ipp.c:9779
+#: scheduler/ipp.c:10231 scheduler/ipp.c:10582 scheduler/ipp.c:10664
+#: scheduler/ipp.c:11039
msgid "The printer or class does not exist."
msgstr ""
-#: scheduler/ipp.c:1234
+#: scheduler/ipp.c:1255
msgid "The printer or class is not shared."
msgstr ""
@@ -5472,42 +5497,42 @@ msgstr ""
msgid "The printer's waste bin is full."
msgstr ""
-#: scheduler/ipp.c:894 scheduler/ipp.c:2252
+#: scheduler/ipp.c:893 scheduler/ipp.c:2230
#, c-format
msgid "The printer-uri \"%s\" contains invalid characters."
msgstr ""
-#: scheduler/ipp.c:3182
+#: scheduler/ipp.c:3171
msgid "The printer-uri attribute is required."
msgstr ""
-#: scheduler/ipp.c:878
+#: scheduler/ipp.c:877
msgid "The printer-uri must be of the form \"ipp://HOSTNAME/classes/CLASSNAME\"."
msgstr ""
-#: scheduler/ipp.c:2236
+#: scheduler/ipp.c:2214
msgid "The printer-uri must be of the form \"ipp://HOSTNAME/printers/PRINTERNAME\"."
msgstr ""
-#: cgi-bin/admin.c:452
+#: cgi-bin/admin.c:450
msgid "The subscription name may not contain spaces, slashes (/), question marks (?), or the pound sign (#)."
msgstr ""
-#: scheduler/client.c:2232
+#: scheduler/client.c:2242
msgid "The web interface is currently disabled. Run \"cupsctl WebInterface=yes\" to enable it."
msgstr ""
-#: scheduler/ipp.c:6314
+#: scheduler/ipp.c:6319
#, c-format
msgid "The which-jobs value \"%s\" is not supported."
msgstr ""
-#: scheduler/ipp.c:5577
+#: scheduler/ipp.c:5582
msgid "There are too many subscriptions."
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:271 backend/usb-libusb.c:325
+#: backend/usb-darwin.c:398 backend/usb-darwin.c:457 backend/usb-darwin.c:526
+#: backend/usb-darwin.c:547 backend/usb-libusb.c:271 backend/usb-libusb.c:325
msgid "There was an unrecoverable USB error."
msgstr ""
@@ -5515,16 +5540,16 @@ msgstr ""
msgid "Thermal Transfer Media"
msgstr ""
-#: scheduler/ipp.c:1479
+#: scheduler/ipp.c:1495
msgid "Too many active jobs."
msgstr ""
-#: scheduler/ipp.c:1373
+#: scheduler/ipp.c:1389
#, c-format
msgid "Too many job-sheets values (%d > 2)."
msgstr ""
-#: scheduler/ipp.c:2537
+#: scheduler/ipp.c:2524
#, c-format
msgid "Too many printer-state-reasons values (%d > %d)."
msgstr ""
@@ -5593,7 +5618,7 @@ msgstr ""
msgid "US Letter Small"
msgstr ""
-#: cgi-bin/admin.c:1939 cgi-bin/admin.c:1952 cgi-bin/admin.c:1976
+#: cgi-bin/admin.c:1945 cgi-bin/admin.c:1958 cgi-bin/admin.c:1982
msgid "Unable to access cupsd.conf file"
msgstr ""
@@ -5601,56 +5626,56 @@ msgstr ""
msgid "Unable to access help file."
msgstr ""
-#: cgi-bin/admin.c:504
+#: cgi-bin/admin.c:502
msgid "Unable to add RSS subscription"
msgstr ""
-#: cgi-bin/admin.c:792
+#: cgi-bin/admin.c:790
msgid "Unable to add class"
msgstr ""
-#: backend/ipp.c:1796
+#: backend/ipp.c:1807
msgid "Unable to add document to print job."
msgstr ""
-#: scheduler/ipp.c:1537
+#: scheduler/ipp.c:1553
#, c-format
msgid "Unable to add job for destination \"%s\"."
msgstr ""
-#: cgi-bin/admin.c:1037 cgi-bin/admin.c:1399
+#: cgi-bin/admin.c:1036 cgi-bin/admin.c:1405
msgid "Unable to add printer"
msgstr ""
-#: scheduler/ipp.c:1164
+#: scheduler/ipp.c:1173
msgid "Unable to allocate memory for file types."
msgstr ""
-#: filter/pstops.c:418
+#: filter/pstops.c:423
msgid "Unable to allocate memory for page info"
msgstr ""
-#: filter/pstops.c:412
+#: filter/pstops.c:417
msgid "Unable to allocate memory for pages array"
msgstr ""
-#: cgi-bin/admin.c:1505
+#: cgi-bin/admin.c:1511
msgid "Unable to cancel RSS subscription"
msgstr ""
-#: backend/ipp.c:2077 backend/ipp.c:2512
+#: backend/ipp.c:2084 backend/ipp.c:2532
msgid "Unable to cancel print job."
msgstr ""
-#: cgi-bin/admin.c:2970
+#: cgi-bin/admin.c:2976
msgid "Unable to change printer"
msgstr ""
-#: cgi-bin/admin.c:3886
+#: cgi-bin/admin.c:3892
msgid "Unable to change printer-is-shared attribute"
msgstr ""
-#: cgi-bin/admin.c:1637 cgi-bin/admin.c:1779
+#: cgi-bin/admin.c:1643 cgi-bin/admin.c:1785
msgid "Unable to change server settings"
msgstr ""
@@ -5672,7 +5697,7 @@ msgstr ""
msgid "Unable to connect to host."
msgstr ""
-#: backend/ipp.c:781 backend/ipp.c:1254 backend/lpd.c:795 backend/socket.c:338
+#: backend/ipp.c:785 backend/ipp.c:1258 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 ""
@@ -5692,12 +5717,12 @@ msgstr ""
msgid "Unable to copy CUPS printer driver files (%d)."
msgstr ""
-#: scheduler/ipp.c:2657
+#: scheduler/ipp.c:2644
#, c-format
msgid "Unable to copy PPD file - %s"
msgstr ""
-#: scheduler/ipp.c:2712
+#: scheduler/ipp.c:2699
msgid "Unable to copy PPD file."
msgstr ""
@@ -5711,7 +5736,7 @@ msgstr ""
msgid "Unable to copy Windows 9x printer driver files (%d)."
msgstr ""
-#: scheduler/ipp.c:2634
+#: scheduler/ipp.c:2621
#, c-format
msgid "Unable to copy interface script - %s"
msgstr ""
@@ -5720,19 +5745,19 @@ msgstr ""
msgid "Unable to create printer-uri"
msgstr ""
-#: cups/tls-darwin.c:1116 cups/tls-gnutls.c:1157
+#: cups/tls-darwin.c:1291 cups/tls-gnutls.c:1181
msgid "Unable to create server credentials."
msgstr ""
-#: cgi-bin/admin.c:1830 cgi-bin/admin.c:1842 scheduler/cupsfilter.c:1290
+#: cgi-bin/admin.c:1836 cgi-bin/admin.c:1848 scheduler/cupsfilter.c:1290
msgid "Unable to create temporary file"
msgstr ""
-#: cgi-bin/admin.c:2133
+#: cgi-bin/admin.c:2139
msgid "Unable to delete class"
msgstr ""
-#: cgi-bin/admin.c:2218
+#: cgi-bin/admin.c:2224
msgid "Unable to delete printer"
msgstr ""
@@ -5740,39 +5765,39 @@ msgstr ""
msgid "Unable to do maintenance command"
msgstr ""
-#: cgi-bin/admin.c:1954
+#: cgi-bin/admin.c:1960
msgid "Unable to edit cupsd.conf files larger than 1MB"
msgstr ""
-#: cups/tls-darwin.c:1284
+#: cups/tls-darwin.c:1459
msgid "Unable to establish a secure connection to host (certificate chain invalid)."
msgstr ""
-#: cups/tls-darwin.c:1274
+#: cups/tls-darwin.c:1449
msgid "Unable to establish a secure connection to host (certificate not yet valid)."
msgstr ""
-#: cups/tls-darwin.c:1269
+#: cups/tls-darwin.c:1444
msgid "Unable to establish a secure connection to host (expired certificate)."
msgstr ""
-#: cups/tls-darwin.c:1279
+#: cups/tls-darwin.c:1454
msgid "Unable to establish a secure connection to host (host name mismatch)."
msgstr ""
-#: cups/tls-darwin.c:1289
+#: cups/tls-darwin.c:1464
msgid "Unable to establish a secure connection to host (peer dropped connection before responding)."
msgstr ""
-#: cups/tls-darwin.c:1264
+#: cups/tls-darwin.c:1439
msgid "Unable to establish a secure connection to host (self-signed certificate)."
msgstr ""
-#: cups/tls-darwin.c:1259
+#: cups/tls-darwin.c:1434
msgid "Unable to establish a secure connection to host (untrusted certificate)."
msgstr ""
-#: cups/tls-darwin.c:1316 cups/tls-sspi.c:1247 cups/tls-sspi.c:1264
+#: cups/tls-darwin.c:1491 cups/tls-sspi.c:1279 cups/tls-sspi.c:1296
msgid "Unable to establish a secure connection to host."
msgstr ""
@@ -5784,11 +5809,11 @@ msgstr ""
msgid "Unable to find printer."
msgstr ""
-#: cups/tls-darwin.c:1130
+#: cups/tls-darwin.c:1305
msgid "Unable to find server credentials."
msgstr ""
-#: backend/ipp.c:3493
+#: backend/ipp.c:3220
msgid "Unable to get backend exit status."
msgstr ""
@@ -5800,11 +5825,11 @@ msgstr ""
msgid "Unable to get class status"
msgstr ""
-#: cgi-bin/admin.c:1300
+#: cgi-bin/admin.c:1299
msgid "Unable to get list of printer drivers"
msgstr ""
-#: cgi-bin/admin.c:2820
+#: cgi-bin/admin.c:2826
msgid "Unable to get printer attributes"
msgstr ""
@@ -5816,7 +5841,7 @@ msgstr ""
msgid "Unable to get printer status"
msgstr ""
-#: backend/ipp.c:1005
+#: backend/ipp.c:1009
msgid "Unable to get printer status."
msgstr ""
@@ -5834,21 +5859,21 @@ msgstr ""
msgid "Unable to load help index."
msgstr ""
-#: backend/ipp.c:668 backend/lpd.c:426 backend/socket.c:277
+#: backend/ipp.c:672 backend/lpd.c:426 backend/socket.c:277
#, c-format
msgid "Unable to locate printer \"%s\"."
msgstr ""
-#: backend/dnssd.c:787 backend/ipp.c:336 backend/lpd.c:196
+#: backend/dnssd.c:787 backend/ipp.c:340 backend/lpd.c:196
#: backend/socket.c:163
msgid "Unable to locate printer."
msgstr ""
-#: cgi-bin/admin.c:791
+#: cgi-bin/admin.c:789
msgid "Unable to modify class"
msgstr ""
-#: cgi-bin/admin.c:1036 cgi-bin/admin.c:1398
+#: cgi-bin/admin.c:1035 cgi-bin/admin.c:1404
msgid "Unable to modify printer"
msgstr ""
@@ -5860,11 +5885,11 @@ msgstr ""
msgid "Unable to move jobs"
msgstr ""
-#: cgi-bin/admin.c:3166 cups/ppd.c:297
+#: cgi-bin/admin.c:3172 cups/ppd.c:297
msgid "Unable to open PPD file"
msgstr ""
-#: cgi-bin/admin.c:2588
+#: cgi-bin/admin.c:2594
msgid "Unable to open cupsd.conf file:"
msgstr ""
@@ -5872,7 +5897,7 @@ msgstr ""
msgid "Unable to open device file"
msgstr ""
-#: scheduler/ipp.c:5992
+#: scheduler/ipp.c:5997
#, c-format
msgid "Unable to open document #%d in job #%d."
msgstr ""
@@ -5881,13 +5906,13 @@ msgstr ""
msgid "Unable to open help file."
msgstr ""
-#: 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
+#: backend/ipp.c:382 backend/ipp.c:1554 backend/ipp.c:1762 backend/lpd.c:496
+#: backend/socket.c:150 backend/usb.c:237 filter/gziptoany.c:73
+#: filter/pstops.c:270
msgid "Unable to open print file"
msgstr ""
-#: filter/rastertoepson.c:983 filter/rastertohp.c:713
+#: filter/rastertoepson.c:995 filter/rastertohp.c:713
#: filter/rastertolabel.c:1133
msgid "Unable to open raster file"
msgstr ""
@@ -5896,12 +5921,16 @@ msgstr ""
msgid "Unable to print test page"
msgstr ""
-#: 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
+#: backend/runloop.c:85 backend/runloop.c:314 backend/usb-darwin.c:634
+#: backend/usb-darwin.c:678 backend/usb-libusb.c:416 backend/usb-libusb.c:451
msgid "Unable to read print data."
msgstr ""
-#: cups/dest.c:3445
+#: scheduler/ipp.c:8277 scheduler/ipp.c:9518
+msgid "Unable to rename job document file."
+msgstr ""
+
+#: cups/dest.c:3446
msgid "Unable to resolve printer-uri."
msgstr ""
@@ -5910,7 +5939,7 @@ msgstr ""
msgid "Unable to run \"%s\": %s"
msgstr ""
-#: filter/pstops.c:530
+#: filter/pstops.c:535
msgid "Unable to see in file"
msgstr ""
@@ -5918,7 +5947,7 @@ msgstr ""
msgid "Unable to send command to printer driver"
msgstr ""
-#: backend/usb-darwin.c:744 backend/usb-libusb.c:527
+#: backend/usb-darwin.c:756 backend/usb-libusb.c:527
msgid "Unable to send data to printer."
msgstr ""
@@ -5927,23 +5956,23 @@ msgstr ""
msgid "Unable to set Windows printer driver (%d)."
msgstr ""
-#: cgi-bin/admin.c:3787
+#: cgi-bin/admin.c:3793
msgid "Unable to set options"
msgstr ""
-#: cgi-bin/admin.c:3057
+#: cgi-bin/admin.c:3063
msgid "Unable to set server default"
msgstr ""
-#: backend/ipp.c:3352 backend/ipp.c:3429 backend/ipp.c:3437
+#: backend/ipp.c:3079 backend/ipp.c:3156 backend/ipp.c:3164
msgid "Unable to start backend process."
msgstr ""
-#: cgi-bin/admin.c:1892
+#: cgi-bin/admin.c:1898
msgid "Unable to upload cupsd.conf file"
msgstr ""
-#: backend/usb-darwin.c:2016 backend/usb-darwin.c:2040
+#: backend/usb-darwin.c:2166 backend/usb-darwin.c:2190
msgid "Unable to use legacy USB class driver."
msgstr ""
@@ -5951,7 +5980,7 @@ msgstr ""
msgid "Unable to write print data"
msgstr ""
-#: filter/gziptoany.c:86
+#: filter/gziptoany.c:92
#, c-format
msgid "Unable to write uncompressed print data: %s"
msgstr ""
@@ -5960,7 +5989,7 @@ msgstr ""
msgid "Unauthorized"
msgstr ""
-#: cgi-bin/admin.c:3483
+#: cgi-bin/admin.c:3489
msgid "Units"
msgstr ""
@@ -5968,12 +5997,12 @@ msgstr ""
msgid "Unknown"
msgstr ""
-#: filter/pstops.c:2185
+#: filter/pstops.c:2190
#, c-format
msgid "Unknown choice \"%s\" for option \"%s\"."
msgstr ""
-#: backend/ipp.c:520
+#: backend/ipp.c:524
#, c-format
msgid "Unknown encryption option value: \"%s\"."
msgstr ""
@@ -5992,12 +6021,12 @@ msgstr ""
msgid "Unknown media size name."
msgstr ""
-#: backend/ipp.c:584
+#: backend/ipp.c:588
#, c-format
msgid "Unknown option \"%s\" with value \"%s\"."
msgstr ""
-#: filter/pstops.c:2168
+#: filter/pstops.c:2173
#, c-format
msgid "Unknown option \"%s\"."
msgstr ""
@@ -6007,12 +6036,12 @@ msgstr ""
msgid "Unknown print mode: \"%s\"."
msgstr ""
-#: scheduler/ipp.c:10401
+#: scheduler/ipp.c:10453
#, c-format
msgid "Unknown printer-error-policy \"%s\"."
msgstr ""
-#: scheduler/ipp.c:10384
+#: scheduler/ipp.c:10436
#, c-format
msgid "Unknown printer-op-policy \"%s\"."
msgstr ""
@@ -6033,22 +6062,22 @@ msgstr ""
msgid "Unknown service name."
msgstr ""
-#: backend/ipp.c:549
+#: backend/ipp.c:553
#, c-format
msgid "Unknown version option value: \"%s\"."
msgstr ""
-#: scheduler/ipp.c:10858
+#: scheduler/ipp.c:10910
#, c-format
msgid "Unsupported 'compression' value \"%s\"."
msgstr ""
-#: scheduler/ipp.c:10888
+#: scheduler/ipp.c:10940
#, c-format
msgid "Unsupported 'document-format' value \"%s\"."
msgstr ""
-#: scheduler/ipp.c:10963
+#: scheduler/ipp.c:11015
msgid "Unsupported 'job-name' value."
msgstr ""
@@ -6057,27 +6086,27 @@ msgstr ""
msgid "Unsupported character set \"%s\"."
msgstr ""
-#: scheduler/ipp.c:8072 scheduler/ipp.c:9307
+#: scheduler/ipp.c:8084 scheduler/ipp.c:9330
#, c-format
msgid "Unsupported compression \"%s\"."
msgstr ""
-#: scheduler/ipp.c:8206 scheduler/ipp.c:9457
+#: scheduler/ipp.c:8220 scheduler/ipp.c:9483
#, c-format
msgid "Unsupported document-format \"%s\"."
msgstr ""
-#: scheduler/ipp.c:9440
+#: scheduler/ipp.c:9466
#, c-format
msgid "Unsupported document-format \"%s/%s\"."
msgstr ""
-#: scheduler/ipp.c:1339
+#: scheduler/ipp.c:1355
#, c-format
msgid "Unsupported format \"%s\"."
msgstr ""
-#: scheduler/ipp.c:1437
+#: scheduler/ipp.c:1453
msgid "Unsupported margins."
msgstr ""
@@ -6085,17 +6114,17 @@ msgstr ""
msgid "Unsupported media value."
msgstr ""
-#: filter/pstops.c:2450
+#: filter/pstops.c:2455
#, c-format
msgid "Unsupported number-up value %d, using number-up=1."
msgstr ""
-#: filter/pstops.c:2484
+#: filter/pstops.c:2489
#, c-format
msgid "Unsupported number-up-layout value %s, using number-up-layout=lrtb."
msgstr ""
-#: filter/pstops.c:2535
+#: filter/pstops.c:2540
#, c-format
msgid "Unsupported page-border value %s, using page-border=none."
msgstr ""
@@ -6112,7 +6141,7 @@ msgstr ""
msgid "Upgrade Required"
msgstr ""
-#: systemv/lpadmin.c:654
+#: systemv/lpadmin.c:666
msgid ""
"Usage:\n"
"\n"
@@ -6124,7 +6153,7 @@ msgid ""
" [-u allow:user,user] [-u deny:user,user]"
msgstr ""
-#: backend/dnssd.c:227 backend/ipp.c:325 backend/lpd.c:183
+#: backend/dnssd.c:227 backend/ipp.c:329 backend/lpd.c:183
#: backend/socket.c:127 backend/usb.c:183 filter/commandtops.c:63
#: filter/gziptoany.c:46 filter/pstops.c:231 monitor/bcp.c:56
#: monitor/tbcp.c:55
@@ -6140,7 +6169,7 @@ msgstr ""
msgid "Usage: cupsctl [options] [param=value ... paramN=valueN]"
msgstr ""
-#: scheduler/main.c:2145
+#: scheduler/main.c:2176
msgid "Usage: cupsd [options]"
msgstr ""
@@ -6152,7 +6181,7 @@ msgstr ""
msgid "Usage: cupstestdsc [options] filename.ps [... filename.ps]"
msgstr ""
-#: systemv/cupstestppd.c:3813
+#: systemv/cupstestppd.c:3857
msgid "Usage: cupstestppd [options] filename1.ppd[.gz] [... filenameN.ppd[.gz]]"
msgstr ""
@@ -6164,7 +6193,7 @@ msgid ""
"Options:"
msgstr ""
-#: test/ippfind.c:2738
+#: test/ippfind.c:2746
msgid ""
"Usage: ippfind [options] regtype[,subtype][.domain.] ... [expression]\n"
" ippfind [options] name[.regtype[.domain.]] ... [expression]\n"
@@ -6172,7 +6201,7 @@ msgid ""
" ippfind --version"
msgstr ""
-#: test/ipptool.c:4803
+#: test/ipptool.c:4855
msgid "Usage: ipptool [options] URI filename [ ... filenameN ]"
msgstr ""
@@ -6196,7 +6225,7 @@ msgstr ""
msgid "Usage: ppdc [options] filename.drv [ ... filenameN.drv ]"
msgstr ""
-#: ppdc/ppdhtml.cxx:172
+#: ppdc/ppdhtml.cxx:177
msgid "Usage: ppdhtml [options] filename.drv >filename.html"
msgstr ""
@@ -6208,7 +6237,7 @@ msgstr ""
msgid "Usage: ppdmerge [options] filename.ppd [ ... filenameN.ppd ]"
msgstr ""
-#: ppdc/ppdpo.cxx:252
+#: ppdc/ppdpo.cxx:247
msgid "Usage: ppdpo [options] -o filename.po filename.drv [ ... filenameN.drv ]"
msgstr ""
@@ -6228,11 +6257,11 @@ msgstr ""
msgid "Version uses indefinite length"
msgstr ""
-#: backend/ipp.c:1913
+#: backend/ipp.c:1924
msgid "Waiting for job to complete."
msgstr ""
-#: backend/usb-darwin.c:469 backend/usb-libusb.c:223
+#: backend/usb-darwin.c:481 backend/usb-libusb.c:223
msgid "Waiting for printer to become available."
msgstr ""
@@ -6252,7 +6281,7 @@ msgstr ""
msgid "Yes"
msgstr ""
-#: scheduler/client.c:2219
+#: scheduler/client.c:2229
#, c-format
msgid "You must access this page using the URL <A HREF=\"https://%s:%d%s\">https://%s:%d%s</A>."
msgstr ""
@@ -6277,11 +6306,11 @@ msgstr ""
msgid "completed"
msgstr ""
-#: scheduler/ipp.c:5864
+#: scheduler/ipp.c:5869
msgid "cups-deviced failed to execute."
msgstr ""
-#: scheduler/ipp.c:6743 scheduler/ipp.c:6992
+#: scheduler/ipp.c:6748 scheduler/ipp.c:6997
msgid "cups-driverd failed to execute."
msgstr ""
@@ -6309,36 +6338,36 @@ msgstr ""
msgid "cupsctl: Unknown option \"-%c\""
msgstr ""
-#: scheduler/main.c:171
+#: scheduler/main.c:182
msgid "cupsd: Expected config filename after \"-c\" option."
msgstr ""
-#: scheduler/main.c:258
+#: scheduler/main.c:278
msgid "cupsd: Expected cups-files.conf filename after \"-s\" option."
msgstr ""
-#: scheduler/main.c:236
+#: scheduler/main.c:252
msgid "cupsd: On-demand support not compiled in, running in normal mode."
msgstr ""
-#: scheduler/main.c:269
+#: scheduler/main.c:289
msgid "cupsd: Relative cups-files.conf filename not allowed."
msgstr ""
-#: scheduler/main.c:202 scheduler/main.c:209
+#: scheduler/main.c:213 scheduler/main.c:220
msgid "cupsd: Unable to get current directory."
msgstr ""
-#: scheduler/main.c:316 scheduler/main.c:325
+#: scheduler/main.c:338 scheduler/main.c:347
msgid "cupsd: Unable to get path to cups-files.conf file."
msgstr ""
-#: scheduler/main.c:298
+#: scheduler/main.c:320
#, c-format
msgid "cupsd: Unknown argument \"%s\" - aborting."
msgstr ""
-#: scheduler/main.c:291
+#: scheduler/main.c:313
#, c-format
msgid "cupsd: Unknown option \"%c\" - aborting."
msgstr ""
@@ -6362,11 +6391,11 @@ msgstr ""
msgid "cupsfilter: Unable to get job file - %s"
msgstr ""
-#: systemv/cupstestppd.c:261
+#: systemv/cupstestppd.c:241
msgid "cupstestppd: The -q option is incompatible with the -v option."
msgstr ""
-#: systemv/cupstestppd.c:277
+#: systemv/cupstestppd.c:257
msgid "cupstestppd: The -v option is incompatible with the -q option."
msgstr ""
@@ -6499,194 +6528,199 @@ msgstr ""
msgid "ippfind: Unknown variable \"{%s}\"."
msgstr ""
-#: test/ipptool.c:326 test/ipptool.c:389 test/ipptool.c:544 test/ipptool.c:567
+#: test/ipptool.c:329 test/ipptool.c:392 test/ipptool.c:547 test/ipptool.c:570
msgid "ipptool: \"-i\" and \"-n\" are incompatible with \"-P\" and \"-X\"."
msgstr ""
-#: test/ipptool.c:623
+#: test/ipptool.c:626
#, c-format
msgid "ipptool: Bad URI - %s."
msgstr ""
-#: test/ipptool.c:537
+#: test/ipptool.c:540
msgid "ipptool: Invalid seconds for \"-i\"."
msgstr ""
-#: test/ipptool.c:604
+#: test/ipptool.c:607
msgid "ipptool: May only specify a single URI."
msgstr ""
-#: test/ipptool.c:559
+#: test/ipptool.c:562
msgid "ipptool: Missing count for \"-n\"."
msgstr ""
-#: test/ipptool.c:423
+#: test/ipptool.c:426
msgid "ipptool: Missing filename for \"-f\"."
msgstr ""
-#: test/ipptool.c:404
+#: test/ipptool.c:407
msgid "ipptool: Missing name=value for \"-d\"."
msgstr ""
-#: test/ipptool.c:527
+#: test/ipptool.c:530
msgid "ipptool: Missing seconds for \"-i\"."
msgstr ""
-#: test/ipptool.c:649
+#: test/ipptool.c:652
msgid "ipptool: URI required before test file."
msgstr ""
-#: test/ipptool.c:585
+#: test/ipptool.c:588
#, c-format
msgid "ipptool: Unknown option \"-%c\"."
msgstr ""
-#: scheduler/ipp.c:7739
+#: scheduler/ipp.c:7750
msgid "job-printer-uri attribute missing."
msgstr ""
-#: systemv/lpadmin.c:117 systemv/lpadmin.c:361
+#: systemv/lpadmin.c:123 systemv/lpadmin.c:364
msgid "lpadmin: Class name can only contain printable characters."
msgstr ""
-#: systemv/lpadmin.c:600
+#: systemv/lpadmin.c:601
msgid "lpadmin: Expected PPD after \"-P\" option."
msgstr ""
-#: systemv/lpadmin.c:443
+#: systemv/lpadmin.c:445
msgid "lpadmin: Expected allow/deny:userlist after \"-u\" option."
msgstr ""
-#: systemv/lpadmin.c:350
+#: systemv/lpadmin.c:353
msgid "lpadmin: Expected class after \"-r\" option."
msgstr ""
-#: systemv/lpadmin.c:106
+#: systemv/lpadmin.c:112
msgid "lpadmin: Expected class name after \"-c\" option."
msgstr ""
-#: systemv/lpadmin.c:544
+#: systemv/lpadmin.c:545
msgid "lpadmin: Expected description after \"-D\" option."
msgstr ""
-#: systemv/lpadmin.c:477
+#: systemv/lpadmin.c:479
msgid "lpadmin: Expected device URI after \"-v\" option."
msgstr ""
-#: systemv/lpadmin.c:560
+#: systemv/lpadmin.c:561
msgid "lpadmin: Expected file type(s) after \"-I\" option."
msgstr ""
-#: systemv/lpadmin.c:188
+#: systemv/lpadmin.c:193
msgid "lpadmin: Expected hostname after \"-h\" option."
msgstr ""
-#: systemv/lpadmin.c:207
+#: systemv/lpadmin.c:212
msgid "lpadmin: Expected interface after \"-i\" option."
msgstr ""
-#: systemv/lpadmin.c:580
+#: systemv/lpadmin.c:581
msgid "lpadmin: Expected location after \"-L\" option."
msgstr ""
-#: systemv/lpadmin.c:260
+#: systemv/lpadmin.c:264
msgid "lpadmin: Expected model after \"-m\" option."
msgstr ""
-#: systemv/lpadmin.c:403
+#: systemv/lpadmin.c:405
msgid "lpadmin: Expected name after \"-R\" option."
msgstr ""
-#: systemv/lpadmin.c:280
+#: systemv/lpadmin.c:284
msgid "lpadmin: Expected name=value after \"-o\" option."
msgstr ""
-#: systemv/lpadmin.c:299
+#: systemv/lpadmin.c:303
msgid "lpadmin: Expected printer after \"-p\" option."
msgstr ""
-#: systemv/lpadmin.c:150
+#: systemv/lpadmin.c:155
msgid "lpadmin: Expected printer name after \"-d\" option."
msgstr ""
-#: systemv/lpadmin.c:511
+#: systemv/lpadmin.c:512
msgid "lpadmin: Expected printer or class after \"-x\" option."
msgstr ""
-#: systemv/lpadmin.c:961
+#: systemv/lpadmin.c:973
msgid "lpadmin: No member names were seen."
msgstr ""
-#: systemv/lpadmin.c:748
+#: systemv/lpadmin.c:760
#, c-format
msgid "lpadmin: Printer %s is already a member of class %s."
msgstr ""
-#: systemv/lpadmin.c:975
+#: systemv/lpadmin.c:987
#, c-format
msgid "lpadmin: Printer %s is not a member of class %s."
msgstr ""
-#: systemv/lpadmin.c:161 systemv/lpadmin.c:310 systemv/lpadmin.c:522
+#: systemv/lpadmin.c:166 systemv/lpadmin.c:314 systemv/lpadmin.c:523
msgid "lpadmin: Printer name can only contain printable characters."
msgstr ""
-#: systemv/lpadmin.c:91
+#: systemv/lpadmin.c:97
msgid ""
"lpadmin: Unable to add a printer to the class:\n"
" You must specify a printer name first."
msgstr ""
-#: 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
+#: systemv/lpadmin.c:88 systemv/lpadmin.c:140 systemv/lpadmin.c:243
+#: systemv/lpadmin.c:328 systemv/lpadmin.c:381 systemv/lpadmin.c:497
+#: systemv/lpadmin.c:642
#, c-format
msgid "lpadmin: Unable to connect to server: %s"
msgstr ""
-#: systemv/lpadmin.c:1314
+#: systemv/lpadmin.c:1427
msgid "lpadmin: Unable to create temporary file"
msgstr ""
-#: systemv/lpadmin.c:388
+#: systemv/lpadmin.c:390
msgid ""
"lpadmin: Unable to delete option:\n"
" You must specify a printer name first."
msgstr ""
-#: systemv/lpadmin.c:1324
+#: systemv/lpadmin.c:1419
+#, c-format
+msgid "lpadmin: Unable to open PPD \"%s\": %s on line %d."
+msgstr ""
+
+#: systemv/lpadmin.c:1439
#, c-format
msgid "lpadmin: Unable to open PPD file \"%s\" - %s"
msgstr ""
-#: systemv/lpadmin.c:334
+#: systemv/lpadmin.c:337
msgid ""
"lpadmin: Unable to remove a printer from the class:\n"
" You must specify a printer name first."
msgstr ""
-#: systemv/lpadmin.c:642
+#: systemv/lpadmin.c:651
msgid ""
"lpadmin: Unable to set the printer options:\n"
" You must specify a printer name first."
msgstr ""
-#: systemv/lpadmin.c:460
+#: systemv/lpadmin.c:462
#, c-format
msgid "lpadmin: Unknown allow/deny option \"%s\"."
msgstr ""
-#: systemv/lpadmin.c:615
+#: systemv/lpadmin.c:616
#, c-format
msgid "lpadmin: Unknown argument \"%s\"."
msgstr ""
-#: systemv/lpadmin.c:610
+#: systemv/lpadmin.c:611
#, c-format
msgid "lpadmin: Unknown option \"%c\"."
msgstr ""
-#: systemv/lpadmin.c:566
+#: systemv/lpadmin.c:567
msgid "lpadmin: Warning - content type list ignored."
msgstr ""
@@ -6793,16 +6827,16 @@ msgstr ""
msgid "no system default destination"
msgstr ""
-#: scheduler/ipp.c:5548
+#: scheduler/ipp.c:5553
msgid "notify-events not specified."
msgstr ""
-#: scheduler/ipp.c:2025 scheduler/ipp.c:5453
+#: scheduler/ipp.c:2003 scheduler/ipp.c:5458
#, c-format
msgid "notify-recipient-uri URI \"%s\" is already used."
msgstr ""
-#: scheduler/ipp.c:2015 scheduler/ipp.c:5443
+#: scheduler/ipp.c:1993 scheduler/ipp.c:5448
#, c-format
msgid "notify-recipient-uri URI \"%s\" uses unknown scheme."
msgstr ""
@@ -6811,12 +6845,12 @@ msgstr ""
msgid "pending"
msgstr ""
-#: ppdc/ppdc.cxx:108 ppdc/ppdpo.cxx:93
+#: ppdc/ppdc.cxx:108 ppdc/ppdpo.cxx:87
#, c-format
msgid "ppdc: Adding include directory \"%s\"."
msgstr ""
-#: ppdc/ppdpo.cxx:134
+#: ppdc/ppdpo.cxx:130
#, c-format
msgid "ppdc: Adding/updating UI text from %s."
msgstr ""
@@ -7106,7 +7140,7 @@ msgstr ""
msgid "ppdc: Invalid option type \"%s\" on line %d of %s."
msgstr ""
-#: ppdc/ppdc.cxx:246 ppdc/ppdpo.cxx:123
+#: ppdc/ppdc.cxx:246 ppdc/ppdpo.cxx:117
#, c-format
msgid "ppdc: Loading driver information file \"%s\"."
msgstr ""
diff --git a/locale/cups.strings b/locale/cups.strings
index 33e9891ae..65bf6e0a5 100644
--- a/locale/cups.strings
+++ b/locale/cups.strings
@@ -366,6 +366,7 @@
// TRANSLATORS: Message is "subject: error"
"%s: %s" = "%s: %s";
"%s: %s failed: %s" = "%s: %s failed: %s";
+"%s: Bad printer URI \"%s\"." = "%s: Bad printer URI \"%s\".";
"%s: Bad version %s for \"-V\"." = "%s: Bad version %s for \"-V\".";
"%s: Don't know what to do." = "%s: Don't know what to do.";
"%s: Error - %s environment variable names non-existent destination \"%s\"." = "%s: Error - %s environment variable names non-existent destination \"%s\".";
@@ -414,13 +415,16 @@
"%s: No filter to convert from %s/%s to %s/%s." = "%s: No filter to convert from %s/%s to %s/%s.";
"%s: Operation failed: %s" = "%s: Operation failed: %s";
"%s: Sorry, no encryption support." = "%s: Sorry, no encryption support.";
+"%s: Unable to connect to \"%s:%d\": %s" = "%s: Unable to connect to \"%s:%d\": %s";
"%s: Unable to connect to server." = "%s: Unable to connect to server.";
"%s: Unable to contact server." = "%s: Unable to contact server.";
+"%s: Unable to create PPD file: %s" = "%s: Unable to create PPD file: %s";
"%s: Unable to determine MIME type of \"%s\"." = "%s: Unable to determine MIME type of \"%s\".";
"%s: Unable to open \"%s\": %s" = "%s: Unable to open \"%s\": %s";
"%s: Unable to open %s: %s" = "%s: Unable to open %s: %s";
"%s: Unable to open PPD file: %s on line %d." = "%s: Unable to open PPD file: %s on line %d.";
"%s: Unable to read MIME database from \"%s\" or \"%s\"." = "%s: Unable to read MIME database from \"%s\" or \"%s\".";
+"%s: Unable to resolve \"%s\"." = "%s: Unable to resolve \"%s\".";
"%s: Unknown destination \"%s\"." = "%s: Unknown destination \"%s\".";
"%s: Unknown destination MIME type %s/%s." = "%s: Unknown destination MIME type %s/%s.";
"%s: Unknown option \"%c\"." = "%s: Unknown option \"%c\".";
@@ -849,6 +853,7 @@
"Environment Variables:" = "Environment Variables:";
"Epson" = "Epson";
"Error Policy" = "Error Policy";
+"Error reading raster data." = "Error reading raster data.";
"Error sending raster data." = "Error sending raster data.";
"Error: need hostname after \"-h\" option." = "Error: need hostname after \"-h\" option.";
"Every 10 Labels" = "Every 10 Labels";
@@ -1181,7 +1186,7 @@
"Tear-Off Adjust Position" = "Tear-Off Adjust Position";
"The \"%s\" attribute is required for print jobs." = "The \"%s\" attribute is required for print jobs.";
"The %s attribute cannot be provided with job-ids." = "The %s attribute cannot be provided with job-ids.";
-"The '%s' Job Description attribute cannot be supplied in a job creation request." = "The '%s' Job Description attribute cannot be supplied in a job creation request.";
+"The '%s' Job Status attribute cannot be supplied in a job creation request." = "The '%s' Job Status attribute cannot be supplied in a job creation request.";
"The '%s' operation attribute cannot be supplied in a Create-Job request." = "The '%s' operation attribute cannot be supplied in a Create-Job request.";
"The PPD file \"%s\" could not be found." = "The PPD file \"%s\" could not be found.";
"The PPD file \"%s\" could not be opened: %s" = "The PPD file \"%s\" could not be opened: %s";
@@ -1318,6 +1323,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 rename job document file." = "Unable to rename job document file.";
"Unable to resolve printer-uri." = "Unable to resolve printer-uri.";
"Unable to run \"%s\": %s" = "Unable to run \"%s\": %s";
"Unable to see in file" = "Unable to see in file";
@@ -1485,6 +1491,7 @@
"lpadmin: Unable to connect to server: %s" = "lpadmin: Unable to connect to server: %s";
"lpadmin: Unable to create temporary file" = "lpadmin: Unable to create temporary file";
"lpadmin: Unable to delete option:\n You must specify a printer name first." = "lpadmin: Unable to delete option:\n You must specify a printer name first.";
+"lpadmin: Unable to open PPD \"%s\": %s on line %d." = "lpadmin: Unable to open PPD \"%s\": %s on line %d.";
"lpadmin: Unable to open PPD file \"%s\" - %s" = "lpadmin: Unable to open PPD file \"%s\" - %s";
"lpadmin: Unable to remove a printer from the class:\n You must specify a printer name first." = "lpadmin: Unable to remove a printer from the class:\n You must specify a printer name first.";
"lpadmin: Unable to set the printer options:\n You must specify a printer name first." = "lpadmin: Unable to set the printer options:\n You must specify a printer name first.";
diff --git a/locale/cups_ca.po b/locale/cups_ca.po
index 9c6985f28..c0a27b8c0 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-08-29 22:25-0400\n"
+"POT-Creation-Date: 2015-06-08 17:14-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"
@@ -1638,6 +1638,10 @@ msgid "%s: %s failed: %s"
msgstr "%s: %s ha fallat: %s"
#, c-format
+msgid "%s: Bad printer URI \"%s\"."
+msgstr ""
+
+#, c-format
msgid "%s: Bad version %s for \"-V\"."
msgstr ""
@@ -1841,6 +1845,10 @@ msgid "%s: Sorry, no encryption support."
msgstr "%s: ho sento, no està compilada la compatibilitat pel xifrat."
#, c-format
+msgid "%s: Unable to connect to \"%s:%d\": %s"
+msgstr ""
+
+#, c-format
msgid "%s: Unable to connect to server."
msgstr "%s: no es pot connectar al servidor."
@@ -1849,6 +1857,10 @@ msgid "%s: Unable to contact server."
msgstr "%s: no es pot contactar amb el servidor."
#, c-format
+msgid "%s: Unable to create PPD file: %s"
+msgstr ""
+
+#, c-format
msgid "%s: Unable to determine MIME type of \"%s\"."
msgstr "%s: no es pot determinar el tips de MIME de «%s»."
@@ -1869,6 +1881,10 @@ msgid "%s: Unable to read MIME database from \"%s\" or \"%s\"."
msgstr "%s: no es pot llegir la base de dades MIME de «%s» o «%s»."
#, c-format
+msgid "%s: Unable to resolve \"%s\"."
+msgstr ""
+
+#, c-format
msgid "%s: Unknown destination \"%s\"."
msgstr "%s: el destí «%s» és desconegut."
@@ -3227,6 +3243,9 @@ msgstr "Epson"
msgid "Error Policy"
msgstr "Normes d'error"
+msgid "Error reading raster data."
+msgstr ""
+
msgid "Error sending raster data."
msgstr "S'ha produït un error quan s'enviaven les dades de la trama."
@@ -4277,8 +4296,7 @@ msgstr "No es pot fer servir l'atribut %s amb les job-ids."
#, c-format
msgid ""
-"The '%s' Job Description attribute cannot be supplied in a job creation "
-"request."
+"The '%s' Job Status attribute cannot be supplied in a job creation request."
msgstr ""
#, c-format
@@ -4773,6 +4791,9 @@ 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 rename job document file."
+msgstr ""
+
msgid "Unable to resolve printer-uri."
msgstr ""
@@ -5385,6 +5406,10 @@ msgstr ""
" Heu d'especificar primer un nom d'impressora."
#, c-format
+msgid "lpadmin: Unable to open PPD \"%s\": %s on line %d."
+msgstr ""
+
+#, c-format
msgid "lpadmin: Unable to open PPD file \"%s\" - %s"
msgstr "lpadmin: no s'ha pogut obrir el fitxer PPD «%s» - %s"
diff --git a/locale/cups_cs.po b/locale/cups_cs.po
index 307c15fa8..94c752d88 100644
--- a/locale/cups_cs.po
+++ b/locale/cups_cs.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-08-29 22:25-0400\n"
+"POT-Creation-Date: 2015-06-08 17:14-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"
@@ -1460,6 +1460,10 @@ msgid "%s: %s failed: %s"
msgstr ""
#, c-format
+msgid "%s: Bad printer URI \"%s\"."
+msgstr ""
+
+#, c-format
msgid "%s: Bad version %s for \"-V\"."
msgstr ""
@@ -1655,6 +1659,10 @@ msgid "%s: Sorry, no encryption support."
msgstr ""
#, c-format
+msgid "%s: Unable to connect to \"%s:%d\": %s"
+msgstr ""
+
+#, c-format
msgid "%s: Unable to connect to server."
msgstr ""
@@ -1663,6 +1671,10 @@ msgid "%s: Unable to contact server."
msgstr ""
#, c-format
+msgid "%s: Unable to create PPD file: %s"
+msgstr ""
+
+#, c-format
msgid "%s: Unable to determine MIME type of \"%s\"."
msgstr ""
@@ -1683,6 +1695,10 @@ msgid "%s: Unable to read MIME database from \"%s\" or \"%s\"."
msgstr ""
#, c-format
+msgid "%s: Unable to resolve \"%s\"."
+msgstr ""
+
+#, c-format
msgid "%s: Unknown destination \"%s\"."
msgstr ""
@@ -3024,6 +3040,9 @@ msgstr "Epson"
msgid "Error Policy"
msgstr "Chování při chybě"
+msgid "Error reading raster data."
+msgstr ""
+
msgid "Error sending raster data."
msgstr ""
@@ -4063,8 +4082,7 @@ msgstr ""
#, c-format
msgid ""
-"The '%s' Job Description attribute cannot be supplied in a job creation "
-"request."
+"The '%s' Job Status attribute cannot be supplied in a job creation request."
msgstr ""
#, c-format
@@ -4522,6 +4540,9 @@ msgstr "Nelze vytisknout zkušební stránku"
msgid "Unable to read print data."
msgstr ""
+msgid "Unable to rename job document file."
+msgstr ""
+
msgid "Unable to resolve printer-uri."
msgstr ""
@@ -5109,6 +5130,10 @@ msgid ""
msgstr ""
#, c-format
+msgid "lpadmin: Unable to open PPD \"%s\": %s on line %d."
+msgstr ""
+
+#, c-format
msgid "lpadmin: Unable to open PPD file \"%s\" - %s"
msgstr ""
diff --git a/locale/cups_de.po b/locale/cups_de.po
index be9e42827..93dff404e 100644
--- a/locale/cups_de.po
+++ b/locale/cups_de.po
@@ -29,7 +29,7 @@ msgid ""
msgstr ""
"Project-Id-Version: CUPS 2.0\n"
"Report-Msgid-Bugs-To: http://www.cups.org/str.php\n"
-"POT-Creation-Date: 2015-05-09 22:25+0100\n"
+"POT-Creation-Date: 2015-06-08 17:14-0400\n"
"PO-Revision-Date: 2015-05-09 22:25+0100\n"
"Last-Translator: Joachim Schwender <joachim.schwender@web.de>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -57,7 +57,7 @@ msgstr "\tNach einem Fehler: fortfahren"
#, c-format
msgid "\tAlerts: %s"
-msgstr "\Alarme: %s"
+msgstr "\tAlarme: %s"
msgid "\tBanner required"
msgstr "\tBanner erforderlich"
@@ -807,7 +807,9 @@ msgid " --[no-]share-printers Turn printer sharing on/off."
msgstr " --[no-]share-printers Druckerfreigabe ein/aus."
msgid " --[no-]user-cancel-any Allow/prevent users to cancel any job."
-msgstr " --[no-]user-cancel-any Erlaube/sperre Benutzern das abbrechen eines Druckauftrags."
+msgstr ""
+" --[no-]user-cancel-any Erlaube/sperre Benutzern das abbrechen eines "
+"Druckauftrags."
msgid " --cr End lines with CR (Mac OS 9)."
msgstr " --cr Zeilenenden mit CR (OS 9)"
@@ -816,7 +818,8 @@ msgid " --crlf End lines with CR + LF (Windows)."
msgstr " --crlf Zeilenenden mit CR+LF (Windows)"
msgid " --domain regex Match domain to regular expression."
-msgstr " --domain regex Prüfe auf Übereinstimmung mit Regulärem Ausdruck"
+msgstr ""
+" --domain regex Prüfe auf Übereinstimmung mit Regulärem Ausdruck"
msgid ""
" --exec utility [argument ...] ;\n"
@@ -833,7 +836,9 @@ msgid " --help Show this help."
msgstr " --help Zeige diese Hilfe."
msgid " --host regex Match hostname to regular expression."
-msgstr " --host regex Prüfe den Hostnamen auf Übereinstimmung mit Regulärem Audruck"
+msgstr ""
+" --host regex Prüfe den Hostnamen auf Übereinstimmung mit "
+"Regulärem Audruck"
msgid " --lf End lines with LF (UNIX/Linux/OS X)."
msgstr " --lf Zeilenenden mit LF (UNIX/Linux/OS X)"
@@ -918,7 +923,8 @@ msgstr " -E Teste mit HTTP Upgrade auf TLS."
msgid ""
" -F Run in the foreground but detach from console."
msgstr ""
-" -F Laufe im Vordergrund aber abgetrennt von der Konsole."
+" -F Laufe im Vordergrund aber abgetrennt von der "
+"Konsole."
msgid " -H samba-server Use the named SAMBA server."
msgstr " -H samba-server Benutze den SAMBA Server."
@@ -953,10 +959,14 @@ msgid " -S Test with SSL encryption."
msgstr " -S Teste mit SSL Verschlüsselung."
msgid " -T seconds Set the browse timeout in seconds."
-msgstr " -T seconds Setze die Zeitüberschreitung für das Browsen in Sekunden."
+msgstr ""
+" -T seconds Setze die Zeitüberschreitung für das Browsen in "
+"Sekunden."
msgid " -T seconds Set the receive/send timeout in seconds."
-msgstr " -T seconds Setze die Zeitüberschreitung für das Senden/Empfangen in Sekunden."
+msgstr ""
+" -T seconds Setze die Zeitüberschreitung für das Senden/"
+"Empfangen in Sekunden."
msgid " -U username Specify username."
msgstr " -U username Gebe den Benutzernamen an."
@@ -985,7 +995,8 @@ msgid " -c catalog.po Load the specified message catalog."
msgstr ""
msgid " -c cups-files.conf Set cups-files.conf file to use."
-msgstr " -c cups-files.conf Setze die zu benutzende Datei cups-files.conf"
+msgstr ""
+" -c cups-files.conf Setze die zu benutzende Datei cups-files.conf"
msgid " -c cupsd.conf Set cupsd.conf file to use."
msgstr " -c cups.conf Setze die zu benutzende Datei cups.conf"
@@ -1134,7 +1145,8 @@ msgid ""
msgstr ""
msgid " -z Compress PPD files using GNU zip."
-msgstr " -z Komprimiere PPD Datei unter Verwendung von GNU zip."
+msgstr ""
+" -z Komprimiere PPD Datei unter Verwendung von GNU zip."
msgid " IPPFIND_SERVICE_DOMAIN Domain name"
msgstr ""
@@ -1461,6 +1473,10 @@ msgid "%s: %s failed: %s"
msgstr ""
#, c-format
+msgid "%s: Bad printer URI \"%s\"."
+msgstr ""
+
+#, c-format
msgid "%s: Bad version %s for \"-V\"."
msgstr ""
@@ -1656,6 +1672,10 @@ msgid "%s: Sorry, no encryption support."
msgstr ""
#, c-format
+msgid "%s: Unable to connect to \"%s:%d\": %s"
+msgstr ""
+
+#, c-format
msgid "%s: Unable to connect to server."
msgstr ""
@@ -1664,6 +1684,10 @@ msgid "%s: Unable to contact server."
msgstr ""
#, c-format
+msgid "%s: Unable to create PPD file: %s"
+msgstr ""
+
+#, c-format
msgid "%s: Unable to determine MIME type of \"%s\"."
msgstr ""
@@ -1684,6 +1708,10 @@ msgid "%s: Unable to read MIME database from \"%s\" or \"%s\"."
msgstr ""
#, c-format
+msgid "%s: Unable to resolve \"%s\"."
+msgstr ""
+
+#, c-format
msgid "%s: Unknown destination \"%s\"."
msgstr "%s: Unbekanntes Druckziel \"%s\"."
@@ -1845,6 +1873,7 @@ msgstr "1"
msgid "1 inch/sec."
msgstr "1 inch/s"
+
# Die Verwendung des x ist nur ersatzweise erlaubt, typografisch korrekt und in UTF-8 auch möglich ist ×
# Keine Leerzeichen zwischen Zahl und ×!
# Die Verwendung von " für die Einheit Inch ist nicht zulässig (ISO 80000).
@@ -2109,7 +2138,7 @@ msgid "3.25x5.00\""
msgstr "3,25×5,00 inch"
msgid "3.25x5.50\""
-msgstr "3,25×5,50 inch
+msgstr "3,25×5,50 inch"
msgid "3.25x5.83\""
msgstr "3,25×5,83 inch"
@@ -3033,6 +3062,9 @@ msgstr "Epson"
msgid "Error Policy"
msgstr "Fehlerbehandlung"
+msgid "Error reading raster data."
+msgstr ""
+
msgid "Error sending raster data."
msgstr "Fehler beim Senden von Rasterdaten."
@@ -3594,7 +3626,8 @@ msgid "No destinations added."
msgstr "Keine Druckziele hinzugefügt."
msgid "No device URI found in argv[0] or in DEVICE_URI environment variable."
-msgstr "Keine Geräte-URI in argv[0] oder der Umgebungsvariablen DEVICE_URI gefunden."
+msgstr ""
+"Keine Geräte-URI in argv[0] oder der Umgebungsvariablen DEVICE_URI gefunden."
msgid "No error-index"
msgstr "Kein Fehlerindex"
@@ -3684,7 +3717,8 @@ msgid ""
"Note: this program only validates the DSC comments, not the PostScript "
"itself."
msgstr ""
-"Hinweis: dieses Programme validiert nur die DSC Kommentare, nicht PostScript selber"
+"Hinweis: dieses Programme validiert nur die DSC Kommentare, nicht PostScript "
+"selber"
msgid "OK"
msgstr "OK"
@@ -4074,8 +4108,7 @@ msgstr ""
#, c-format
msgid ""
-"The '%s' Job Description attribute cannot be supplied in a job creation "
-"request."
+"The '%s' Job Status attribute cannot be supplied in a job creation request."
msgstr ""
#, c-format
@@ -4229,8 +4262,8 @@ msgid ""
"The web interface is currently disabled. Run \"cupsctl WebInterface=yes\" to "
"enable it."
msgstr ""
-"Die Web-Schnittstelle ist derzeit abgeschaltet. Das Einschalten kann mit"
-"dem Befehl \"cupsctl WebInterface=yes\" erfolgen."
+"Die Web-Schnittstelle ist derzeit abgeschaltet. Das Einschalten kann mitdem "
+"Befehl \"cupsctl WebInterface=yes\" erfolgen."
#, c-format
msgid "The which-jobs value \"%s\" is not supported."
@@ -4540,6 +4573,9 @@ msgstr "Die Testseite kann nicht gedruckt werden"
msgid "Unable to read print data."
msgstr ""
+msgid "Unable to rename job document file."
+msgstr ""
+
msgid "Unable to resolve printer-uri."
msgstr ""
@@ -5051,7 +5087,8 @@ msgid "lpadmin: Expected PPD after \"-P\" option."
msgstr "lpadmin: Nach der \"-P\" Option PPD erwartet."
msgid "lpadmin: Expected allow/deny:userlist after \"-u\" option."
-msgstr "lpadmin: Nach der \"-u\" Option wird eine allow/deny:userlist erwartet."
+msgstr ""
+"lpadmin: Nach der \"-u\" Option wird eine allow/deny:userlist erwartet."
msgid "lpadmin: Expected class after \"-r\" option."
msgstr ""
@@ -5129,6 +5166,10 @@ msgid ""
msgstr ""
#, c-format
+msgid "lpadmin: Unable to open PPD \"%s\": %s on line %d."
+msgstr ""
+
+#, c-format
msgid "lpadmin: Unable to open PPD file \"%s\" - %s"
msgstr "lpadmin: Kann PPD Datei \"%s\" - %s nicht öffnen"
diff --git a/locale/cups_es.po b/locale/cups_es.po
index 00a63b8a4..966b07fff 100644
--- a/locale/cups_es.po
+++ b/locale/cups_es.po
@@ -16,7 +16,7 @@ msgid ""
msgstr ""
"Project-Id-Version: CUPS 1.6\n"
"Report-Msgid-Bugs-To: http://www.cups.org/str.php\n"
-"POT-Creation-Date: 2014-08-29 22:25-0400\n"
+"POT-Creation-Date: 2015-06-08 17:14-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"
@@ -25,160 +25,122 @@ msgstr ""
"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 "\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"
@@ -186,135 +148,103 @@ 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 ""
" 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"
@@ -323,7 +253,6 @@ 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 "
@@ -334,13 +263,11 @@ 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."
@@ -349,12 +276,10 @@ 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."
@@ -363,7 +288,6 @@ 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."
@@ -371,7 +295,6 @@ 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"
@@ -380,7 +303,6 @@ 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."
@@ -389,7 +311,6 @@ 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."
@@ -397,7 +318,6 @@ 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."
@@ -406,7 +326,6 @@ 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."
@@ -415,7 +334,6 @@ 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."
@@ -424,19 +342,15 @@ 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"
@@ -445,17 +359,14 @@ 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 %s archivo \"%s\" tiene las mayúsculas equivocadas."
-#: systemv/cupstestppd.c:2318
#, c-format
msgid ""
" %s Bad %s choice %s.\n"
@@ -464,102 +375,73 @@ 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 \"%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 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"
@@ -568,7 +450,6 @@ 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"
@@ -577,38 +458,31 @@ 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"
@@ -617,44 +491,36 @@ 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."
-#: 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"
@@ -663,7 +529,6 @@ 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"
@@ -672,7 +537,6 @@ 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"
@@ -681,7 +545,6 @@ 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"
@@ -690,7 +553,6 @@ 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"
@@ -699,7 +561,6 @@ 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"
@@ -708,7 +569,6 @@ 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."
@@ -716,19 +576,16 @@ 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"
@@ -737,7 +594,6 @@ 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"
@@ -746,7 +602,6 @@ 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."
@@ -754,7 +609,6 @@ 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."
@@ -762,7 +616,6 @@ 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."
@@ -770,7 +623,6 @@ 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"
@@ -779,14 +631,12 @@ 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 "
@@ -795,7 +645,6 @@ 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 "
@@ -804,34 +653,29 @@ 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"
@@ -840,7 +684,6 @@ 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."
@@ -848,7 +691,6 @@ 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."
@@ -856,7 +698,6 @@ 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."
@@ -864,7 +705,6 @@ 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."
@@ -872,7 +712,6 @@ 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"
@@ -883,7 +722,6 @@ 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."
@@ -891,7 +729,6 @@ 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."
@@ -899,7 +736,6 @@ 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."
@@ -907,7 +743,6 @@ 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."
@@ -915,7 +750,6 @@ 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."
@@ -923,7 +757,6 @@ 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."
@@ -931,7 +764,6 @@ 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."
@@ -939,7 +771,6 @@ 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."
@@ -947,7 +778,6 @@ 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"
@@ -957,7 +787,6 @@ 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."
@@ -965,7 +794,6 @@ 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"
@@ -976,7 +804,6 @@ 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."
@@ -984,7 +811,6 @@ 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."
@@ -992,23 +818,18 @@ 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"
@@ -1017,7 +838,6 @@ 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"
@@ -1026,7 +846,6 @@ 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"
@@ -1035,7 +854,6 @@ 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"
@@ -1044,7 +862,6 @@ 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"
@@ -1052,13 +869,11 @@ 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"
@@ -1067,7 +882,6 @@ 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"
@@ -1076,7 +890,6 @@ 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"
@@ -1085,85 +898,67 @@ 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 " ! expresión NOT unario de la expresión."
-#: test/ippfind.c:2787
msgid " ( expressions ) Group expressions."
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."
@@ -1171,81 +966,64 @@ msgstr ""
" --exec utilidad [argumento ...] ;\n"
" Ejecutar programa si es cierto."
-#: test/ippfind.c:2790
msgid " --false Always false."
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 " --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 " --local Cierto si el servicio es local."
-#: test/ippfind.c:2773
msgid " --ls List attributes."
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 " [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 " --print Imprimir URI si es cierto."
-#: test/ippfind.c:2779
msgid " --print-name Print service name if true."
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."
@@ -1253,93 +1031,73 @@ msgstr ""
" --stop-after-include-error\n"
" Detiene las pruebas tras un INCLUDE fallido."
-#: test/ippfind.c:2791
msgid " --true Always true."
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 " --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."
@@ -1347,45 +1105,36 @@ 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}"
@@ -1393,98 +1142,77 @@ 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 " -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 " -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)."
@@ -1492,149 +1220,117 @@ 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 " -l Lista atributos."
-#: 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 " -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 " -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 " -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 " -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."
-#: test/ippdiscover.c:821
msgid " -t type Browse/resolve with specified type."
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."
-#: 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."
@@ -1642,15 +1338,12 @@ 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 " IPPFIND_SERVICE_DOMAIN Nombre de dominio"
-#: test/ippfind.c:2811
msgid ""
" IPPFIND_SERVICE_HOSTNAME\n"
" Fully-qualified domain name"
@@ -1658,31 +1351,24 @@ msgstr ""
" IPPFIND_SERVICE_HOSTNAME\n"
" Nombre de dominio completo"
-#: test/ippfind.c:2813
msgid " IPPFIND_SERVICE_NAME Service instance name"
msgstr " IPPFIND_SERVICE_NAME Nombre de la instancia del servicio"
-#: test/ippfind.c:2814
msgid " IPPFIND_SERVICE_PORT Port number"
msgstr " IPPFIND_SERVICE_PORT Número del puerto"
-#: test/ippfind.c:2815
msgid " IPPFIND_SERVICE_REGTYPE DNS-SD registration type"
msgstr " IPPFIND_SERVICE_REGTYPE Tipo de registro DNS-SD"
-#: test/ippfind.c:2816
msgid " IPPFIND_SERVICE_SCHEME URI scheme"
msgstr " IPPFIND_SERVICE_SCHEME Esquema URI"
-#: test/ippfind.c:2817
msgid " IPPFIND_SERVICE_URI URI"
msgstr " IPPFIND_SERVICE_URI URI"
-#: test/ippfind.c:2818
msgid " IPPFIND_TXT_* Value of TXT record key"
msgstr " IPPFIND_TXT_* Valor de la clave del registro TXT"
-#: test/ippfind.c:2793
msgid ""
" expression --and expression\n"
" Logical AND."
@@ -1690,7 +1376,6 @@ msgstr ""
" expresión --and expresión\n"
" AND lógico."
-#: test/ippfind.c:2795
msgid ""
" expression --or expression\n"
" Logical OR."
@@ -1698,127 +1383,58 @@ msgstr ""
" expresión --or expresión\n"
" OR lógico."
-#: test/ippfind.c:2792
msgid " expression expression Logical AND."
msgstr " expresión expresión AND lógico."
-#: test/ippfind.c:2800
msgid " {service_domain} Domain name"
msgstr " {service_domain} Nombre de dominio"
-#: test/ippfind.c:2801
msgid " {service_hostname} Fully-qualified domain name"
msgstr " {service_hostname} Nombre de dominio completo"
-#: test/ippfind.c:2802
msgid " {service_name} Service instance name"
msgstr " {service_name} Nombre de la instancia del servicio"
-#: test/ippfind.c:2803
msgid " {service_port} Port number"
msgstr " {service_port} Número de puerto"
-#: test/ippfind.c:2804
msgid " {service_regtype} DNS-SD registration type"
msgstr " {service_regtype} Tipo de registro DNS-SD"
-#: test/ippfind.c:2805
msgid " {service_scheme} URI scheme"
msgstr " {service_scheme} Esquema URI"
-#: test/ippfind.c:2806
msgid " {service_uri} URI"
msgstr " {service_uri} URI"
-#: test/ippfind.c:2807
msgid " {txt_*} Value of TXT record key"
msgstr " {txt_*} Valor de la clave del registro TXT"
-#: test/ippfind.c:2799
msgid " {} URI"
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 "\"%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)."
@@ -1826,12 +1442,10 @@ 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 "\"%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)."
@@ -1839,7 +1453,6 @@ 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)."
@@ -1847,60 +1460,49 @@ 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 "\"%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 "\"%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 "\"%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 "\"%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 "\"%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 "\"%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 "\"%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 "\"%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)."
@@ -1908,7 +1510,6 @@ 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 "
@@ -1917,7 +1518,6 @@ 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 "
@@ -1926,7 +1526,6 @@ 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 "
@@ -1935,7 +1534,6 @@ 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)."
@@ -1943,14 +1541,12 @@ 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 "
@@ -1959,7 +1555,6 @@ 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 "
@@ -1968,7 +1563,6 @@ 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)."
@@ -1976,7 +1570,6 @@ 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 "
@@ -1985,7 +1578,6 @@ 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 "
@@ -1994,7 +1586,6 @@ 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 "
@@ -2003,7 +1594,6 @@ 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 "
@@ -2012,7 +1602,6 @@ 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)."
@@ -2020,14 +1609,12 @@ 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)."
@@ -2035,7 +1622,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)."
@@ -2043,272 +1629,213 @@ msgstr ""
"\"%s\": Valor uriScheme \"%s\" incorrecto - longitud %d incorrecta (RFC 2911 "
"sección 4.1.6)."
-#: 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 "%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 printer URI \"%s\"."
+msgstr ""
+
#, c-format
msgid "%s: Bad version %s for \"-V\"."
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 "%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 \"-#\"."
-#: 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\"."
-#: 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\"."
-#: 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 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 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\"."
-#: 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\"."
-#: systemv/lpstat.c:144 systemv/lpstat.c:158
#, c-format
msgid ""
"%s: Error - need \"completed\", \"not-completed\", or \"all\" after \"-W\" "
@@ -2317,178 +1844,151 @@ 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."
-#: 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\"."
-#: 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 "%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 "%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á 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 \"%s:%d\": %s"
+msgstr ""
+
#, 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 create PPD file: %s"
+msgstr ""
+
#, 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: Unable to resolve \"%s\"."
+msgstr ""
+
#, 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 "%s: Opción \"%s\" desconocida."
-#: test/ippfind.c:928
#, c-format
msgid "%s: Unknown option \"-%c\"."
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 "
@@ -2497,1350 +1997,1011 @@ 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"
-#: 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 "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 "Valor job-name incorrecto: %s"
-#: scheduler/ipp.c:1520
msgid "Bad job-name value: Wrong type or count."
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."
-#: 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"
@@ -3850,88 +3011,67 @@ 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"
@@ -3948,84 +3088,64 @@ 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"
-#: 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 "
@@ -4035,347 +3155,260 @@ 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 "
-#: 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 "
-#: 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 "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 reading raster data."
+msgstr ""
+
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 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 "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 "
-#: scheduler/ipp.c:2378
#, c-format
msgid ""
"File device URIs have been disabled. To enable, see the FileDevice directive "
@@ -4384,536 +3417,398 @@ 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."
-#: cups/ipp.c:3183 cups/ipp.c:3210 cups/ipp.c:3233
msgid "IPP 1setOf attribute with incompatible value tags."
msgstr "Atributo IPP 1setOf con etiquetas de valor incompatibles."
-#: cups/ipp.c:3146
msgid "IPP attribute has no name."
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 "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 "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 "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 "Argumentos del nombre del papel no válidos."
-#: cups/dest-options.c:1032
msgid "Invalid media size."
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"
@@ -4926,754 +3821,562 @@ msgstr ""
" make-and-model = %s\n"
" device-id = %s"
-#: test/ippfind.c:2786
msgid "Modifiers:"
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"
-#: 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 "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 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 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 "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 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:"
-#: 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"
-#: cups/localize.c:316
msgid "Output bin is almost full."
msgstr "El recipiente de salida está casi lleno."
-#: cups/localize.c:318
msgid "Output bin is full."
msgstr "El recipiente de salida está lleno."
-#: 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 "
-#: 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 "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 "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 "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, %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"
-#: 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 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 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"
-#: 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 "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 "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."
+"The '%s' Job Status 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."
@@ -5681,22 +4384,17 @@ 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 (#)."
@@ -5704,103 +4402,77 @@ 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."
-#: 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."
-#: cups/localize.c:330
msgid "The fuser's temperature is low."
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."
-#: 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."
-#: 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 (#)."
@@ -5808,65 +4480,46 @@ 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_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_EQUIPO/printers/"
"NOMBRE_IMPRESORA\"."
-#: cgi-bin/admin.c:452
msgid ""
"The subscription name may not contain spaces, slashes (/), question marks "
"(?), or the pound sign (#)."
@@ -5874,7 +4527,6 @@ 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."
@@ -5882,292 +4534,227 @@ 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."
-#: 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 "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 "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 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 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 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 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 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)."
@@ -6175,372 +4762,290 @@ msgstr ""
"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 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 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 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."
-#: 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."
-#: cups/dest.c:3445
+msgid "Unable to rename job document file."
+msgstr ""
+
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."
-#: 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 "Valor 'compression' \"%s\" no implementado."
-#: scheduler/ipp.c:10888
#, c-format
msgid "Unsupported 'document-format' value \"%s\"."
msgstr "Valor 'document-format' \"%s\" no implementado."
-#: scheduler/ipp.c:10963
msgid "Unsupported 'job-name' value."
msgstr "Valor 'job-name' no implementado."
-#: scheduler/ipp.c:329
#, c-format
msgid "Unsupported character set \"%s\"."
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 implementada."
-#: scheduler/ipp.c:8206 scheduler/ipp.c:9457
#, c-format
msgid "Unsupported document-format \"%s\"."
msgstr "document-format \"%s\" no implementado."
-#: scheduler/ipp.c:9440
#, c-format
msgid "Unsupported document-format \"%s/%s\"."
msgstr "document-format \"%s/%s\" no implementado."
-#: scheduler/ipp.c:1339
#, c-format
msgid "Unsupported format \"%s\"."
msgstr "Formato \"%s\" no implementado."
-#: scheduler/ipp.c:1437
msgid "Unsupported margins."
msgstr "Márgenes no implementados."
-#: cups/pwg-media.c:549
msgid "Unsupported media value."
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 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 "
"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 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 implementados."
-#: cups/snmp.c:1064
msgid "Unsupported value type"
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"
@@ -6560,42 +5065,31 @@ 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]"
-#: 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"
@@ -6607,7 +5101,6 @@ msgstr ""
"\n"
"Opciones:"
-#: test/ippfind.c:2738
msgid ""
"Usage: ippfind [options] regtype[,subtype][.domain.] ... [expression]\n"
" ippfind [options] name[.regtype[.domain.]] ... [expression]\n"
@@ -6619,15 +5112,12 @@ msgstr ""
" 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"
@@ -6639,80 +5129,63 @@ msgstr ""
" lpoptions [-h servidor] [-E] -p impresora -o opción[=valor] ...\n"
" lpoptions [-h servidor] [-E] -x impresora"
-#: 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_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 [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://"
@@ -6721,389 +5194,300 @@ msgstr ""
"Debe acceder a esta página usando el URL <A HREF=\"https://%s:%d%s\">https://"
"%s:%d%s</A>."
-#: 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"
"\"."
-#: 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 "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."
-#: 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 "ippfind: Expresión regular incorrecta: %s"
-#: test/ippfind.c:328
msgid "ippfind: Cannot use --and after --or."
msgstr "ippfind: No se puede usar --and tras --or."
-#: test/ippfind.c:601
#, c-format
msgid "ippfind: Expected key name after %s."
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 "ippfind: Se esperaba un intervalo de puertos tras %s."
-#: test/ippfind.c:361
#, c-format
msgid "ippfind: Expected program after %s."
msgstr "ippfind: Se esperaba un programa tras %s."
-#: test/ippfind.c:378
#, c-format
msgid "ippfind: Expected semi-colon after %s."
msgstr "ippfind: Se esperaba un punto y coma tras %s."
-#: test/ippfind.c:1965
msgid "ippfind: Missing close brace in substitution."
msgstr "ippfind: Falta la llave de cierre en la substitución."
-#: test/ippfind.c:1053
msgid "ippfind: Missing close parenthesis."
msgstr "ippfind: Falta el paréntesis de cierre."
-#: test/ippfind.c:335
msgid "ippfind: Missing expression before \"--and\"."
msgstr "ippfind: Falta una expresión antes de \"--and\"."
-#: test/ippfind.c:448
msgid "ippfind: Missing expression before \"--or\"."
msgstr "ippfind: Falta una expresión antes de \"--or\"."
-#: test/ippfind.c:871
#, c-format
msgid "ippfind: Missing key name after %s."
msgstr "ippfind: Falta un nombre de clave tras %s."
-#: test/ippfind.c:1024
msgid "ippfind: Missing open parenthesis."
msgstr "ippfind: Falta el paréntesis de apertura."
-#: test/ippfind.c:901
#, c-format
msgid "ippfind: Missing program after %s."
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 "ippfind: Falta una expresión regular tras %s."
-#: test/ippfind.c:919
#, c-format
msgid "ippfind: Missing semi-colon after %s."
msgstr "ippfind: Falta un punto y coma tras %s."
-#: test/ippfind.c:1912 test/ippfind.c:1937
msgid "ippfind: Out of memory."
msgstr "ippfind: Sin memoria."
-#: test/ippfind.c:997
msgid "ippfind: Too many parenthesis."
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 "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 "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 "ippfind: No se ha podido usar Bonjour: %s"
-#: test/ippfind.c:1994
#, c-format
msgid "ippfind: Unknown variable \"{%s}\"."
msgstr "ippfind: Variable desconocida \"{%s}\"."
-#: 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 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."
-#: 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."
@@ -7111,18 +5495,13 @@ 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."
@@ -7130,12 +5509,14 @@ 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 \"%s\": %s on line %d."
+msgstr ""
+
#, 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."
@@ -7143,7 +5524,6 @@ 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."
@@ -7151,112 +5531,88 @@ 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."
-#: systemv/lpstat.c:1074
#, c-format
msgid ""
"lpstat: error - %s environment variable names non-existent destination \"%s"
@@ -7265,137 +5621,110 @@ 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 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."
@@ -7403,133 +5732,108 @@ 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."
@@ -7537,7 +5841,6 @@ 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 "
@@ -7546,100 +5849,80 @@ 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."
@@ -7647,118 +5930,94 @@ 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."
@@ -7766,128 +6025,104 @@ 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 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"
-
-#
-# End of "$Id$".
-#
+#~ 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."
diff --git a/locale/cups_fr.po b/locale/cups_fr.po
index 98433845b..df2be2a0b 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-08-29 22:25-0400\n"
+"POT-Creation-Date: 2015-06-08 17:14-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"
@@ -1460,6 +1460,10 @@ msgid "%s: %s failed: %s"
msgstr ""
#, c-format
+msgid "%s: Bad printer URI \"%s\"."
+msgstr ""
+
+#, c-format
msgid "%s: Bad version %s for \"-V\"."
msgstr ""
@@ -1655,6 +1659,10 @@ msgid "%s: Sorry, no encryption support."
msgstr ""
#, c-format
+msgid "%s: Unable to connect to \"%s:%d\": %s"
+msgstr ""
+
+#, c-format
msgid "%s: Unable to connect to server."
msgstr ""
@@ -1663,6 +1671,10 @@ msgid "%s: Unable to contact server."
msgstr ""
#, c-format
+msgid "%s: Unable to create PPD file: %s"
+msgstr ""
+
+#, c-format
msgid "%s: Unable to determine MIME type of \"%s\"."
msgstr ""
@@ -1683,6 +1695,10 @@ msgid "%s: Unable to read MIME database from \"%s\" or \"%s\"."
msgstr ""
#, c-format
+msgid "%s: Unable to resolve \"%s\"."
+msgstr ""
+
+#, c-format
msgid "%s: Unknown destination \"%s\"."
msgstr ""
@@ -3021,6 +3037,9 @@ msgstr "Epson"
msgid "Error Policy"
msgstr "Règles d’erreur"
+msgid "Error reading raster data."
+msgstr ""
+
msgid "Error sending raster data."
msgstr ""
@@ -4060,8 +4079,7 @@ msgstr ""
#, c-format
msgid ""
-"The '%s' Job Description attribute cannot be supplied in a job creation "
-"request."
+"The '%s' Job Status attribute cannot be supplied in a job creation request."
msgstr ""
#, c-format
@@ -4524,6 +4542,9 @@ msgstr "Impossible d’imprimer la page de test :"
msgid "Unable to read print data."
msgstr ""
+msgid "Unable to rename job document file."
+msgstr ""
+
msgid "Unable to resolve printer-uri."
msgstr ""
@@ -5111,6 +5132,10 @@ msgid ""
msgstr ""
#, c-format
+msgid "lpadmin: Unable to open PPD \"%s\": %s on line %d."
+msgstr ""
+
+#, c-format
msgid "lpadmin: Unable to open PPD file \"%s\" - %s"
msgstr ""
diff --git a/locale/cups_it.po b/locale/cups_it.po
index ad8133239..7526aeef8 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-08-29 22:25-0400\n"
+"POT-Creation-Date: 2015-06-08 17:14-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"
@@ -1712,6 +1712,10 @@ msgid "%s: %s failed: %s"
msgstr "%s: %s non riuscito correttamente: %s"
#, c-format
+msgid "%s: Bad printer URI \"%s\"."
+msgstr ""
+
+#, c-format
msgid "%s: Bad version %s for \"-V\"."
msgstr "%s: la versione %s non è valida per \"-V\"."
@@ -1918,6 +1922,10 @@ msgid "%s: Sorry, no encryption support."
msgstr "%s: spiacenti, nessun supporto per la crittografia."
#, c-format
+msgid "%s: Unable to connect to \"%s:%d\": %s"
+msgstr ""
+
+#, c-format
msgid "%s: Unable to connect to server."
msgstr "%s: non è possibile connettersi al server."
@@ -1926,6 +1934,10 @@ msgid "%s: Unable to contact server."
msgstr "%s: non è possibile contattare il server."
#, c-format
+msgid "%s: Unable to create PPD file: %s"
+msgstr ""
+
+#, c-format
msgid "%s: Unable to determine MIME type of \"%s\"."
msgstr "%s: non è possibile determinare il tipo di MIME di \"%s\"."
@@ -1947,6 +1959,10 @@ msgstr ""
"%s: non è possibile leggere il database del MIME da \"%s\" oppure da \"%s\"."
#, c-format
+msgid "%s: Unable to resolve \"%s\"."
+msgstr ""
+
+#, c-format
msgid "%s: Unknown destination \"%s\"."
msgstr "%s: destinazione sconosciuta \"%s\"."
@@ -3302,6 +3318,9 @@ msgstr "Epson"
msgid "Error Policy"
msgstr "Policy dell'errore"
+msgid "Error reading raster data."
+msgstr ""
+
msgid "Error sending raster data."
msgstr "Si è verificato un errore durante l'invio dei dati raster."
@@ -4351,11 +4370,8 @@ msgstr "L'attributo %s non può essere fornito con job-ids."
#, c-format
msgid ""
-"The '%s' Job Description attribute cannot be supplied in a job creation "
-"request."
+"The '%s' Job Status attribute cannot be supplied in a job creation request."
msgstr ""
-"L'attributo della descrizione del processo '%s' non può essere fornito nella "
-"richiesta di creazione di un processo."
#, c-format
msgid ""
@@ -4845,6 +4861,9 @@ 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 rename job document file."
+msgstr ""
+
msgid "Unable to resolve printer-uri."
msgstr ""
@@ -5462,6 +5481,10 @@ msgstr ""
" Bisogna specificare prima un nome per la stampante."
#, c-format
+msgid "lpadmin: Unable to open PPD \"%s\": %s on line %d."
+msgstr ""
+
+#, c-format
msgid "lpadmin: Unable to open PPD file \"%s\" - %s"
msgstr "lpadmin: non è possibile aprile il file PPD \"%s\" - %s"
@@ -6126,6 +6149,13 @@ msgstr "variable-bindings utilizza una lunghezza indefinita"
#~ msgid "Stylus Photo Series"
#~ msgstr "Stylus Photo Series"
+#~ msgid ""
+#~ "The '%s' Job Description attribute cannot be supplied in a job creation "
+#~ "request."
+#~ msgstr ""
+#~ "L'attributo della descrizione del processo '%s' non può essere fornito "
+#~ "nella richiesta di creazione di un processo."
+
#~ msgid "The output bin is almost full."
#~ msgstr "Il raccoglitore di uscita è quasi pieno."
diff --git a/locale/cups_ja.po b/locale/cups_ja.po
index f2e873051..a81d595bb 100644
--- a/locale/cups_ja.po
+++ b/locale/cups_ja.po
@@ -28,7 +28,7 @@ msgid ""
msgstr ""
"Project-Id-Version: CUPS 2.0\n"
"Report-Msgid-Bugs-To: http://www.cups.org/str.php\n"
-"POT-Creation-Date: 2014-08-29 22:25-0400\n"
+"POT-Creation-Date: 2015-06-08 17:14-0400\n"
"PO-Revision-Date: 2014-11-15 19:27+0900\n"
"Last-Translator: OPFC TRANSCUPS <opfc-transcups@sourceforge.jp>\n"
"Language-Team: OPFC TRANSCUPS <opfc-transcups@sourceforge.jp>\n"
@@ -37,160 +37,122 @@ msgstr ""
"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(ã™ã¹ã¦)"
-#: systemv/lpstat.c:1870 systemv/lpstat.c:1873 systemv/lpstat.c:1993
-#: systemv/lpstat.c:1996
msgid "\t\t(none)"
msgstr "\t\t(ãªã—)"
-#: berkeley/lpc.c:426
#, c-format
msgid "\t%d entries"
msgstr "\t%d エントリー"
-#: 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 "\t失敗後: 継続"
-#: systemv/lpstat.c:1471 systemv/lpstat.c:1817 systemv/lpstat.c:1941
#, c-format
msgid "\tAlerts: %s"
msgstr "\t警告: %s"
-#: systemv/lpstat.c:1871 systemv/lpstat.c:1994
msgid "\tBanner required"
msgstr "\tãƒãƒŠãƒ¼ãŒå¿…è¦"
-#: systemv/lpstat.c:1872 systemv/lpstat.c:1995
msgid "\tCharset sets:"
msgstr "\t文字セット:"
-#: systemv/lpstat.c:1836 systemv/lpstat.c:1959
msgid "\tConnection: direct"
msgstr "\t接続: ç›´çµ"
-#: systemv/lpstat.c:1827 systemv/lpstat.c:1951
msgid "\tConnection: remote"
msgstr "\t接続: リモート"
-#: systemv/lpstat.c:1793 systemv/lpstat.c:1917
msgid "\tContent types: any"
msgstr "\tコンテンツã®ç¨®é¡ž: ã™ã¹ã¦"
-#: systemv/lpstat.c:1875 systemv/lpstat.c:1998
msgid "\tDefault page size:"
msgstr "\tデフォルト用紙サイズ:"
-#: systemv/lpstat.c:1874 systemv/lpstat.c:1997
msgid "\tDefault pitch:"
msgstr "\tデフォルトピッãƒ:"
-#: systemv/lpstat.c:1876 systemv/lpstat.c:1999
msgid "\tDefault port settings:"
msgstr "\tデフォルトãƒãƒ¼ãƒˆè¨­å®š:"
-#: systemv/lpstat.c:1799 systemv/lpstat.c:1923
#, c-format
msgid "\tDescription: %s"
msgstr "\t説明: %s"
-#: systemv/lpstat.c:1792 systemv/lpstat.c:1916
msgid "\tForm mounted:"
msgstr "\t設定ã•ã‚ŒãŸãƒ•ã‚©ãƒ¼ãƒ :"
-#: systemv/lpstat.c:1869 systemv/lpstat.c:1992
msgid "\tForms allowed:"
msgstr "\t許å¯ã•ã‚Œã¦ã„るフォーム:"
-#: systemv/lpstat.c:1831 systemv/lpstat.c:1955
#, c-format
msgid "\tInterface: %s.ppd"
msgstr "\tインターフェイス: %s.ppd"
-#: systemv/lpstat.c:1840 systemv/lpstat.c:1963
#, c-format
msgid "\tInterface: %s/interfaces/%s"
msgstr "\tインターフェイス: %s/interfaces/%s"
-#: systemv/lpstat.c:1844 systemv/lpstat.c:1967
#, c-format
msgid "\tInterface: %s/ppd/%s.ppd"
msgstr "\tインターフェイス: %s/ppd/%s.ppd"
-#: systemv/lpstat.c:1822 systemv/lpstat.c:1946
#, c-format
msgid "\tLocation: %s"
msgstr "\t場所: %s"
-#: systemv/lpstat.c:1847 systemv/lpstat.c:1970
msgid "\tOn fault: no alert"
msgstr "\t失敗時: 警告ãªã—"
-#: systemv/lpstat.c:1794 systemv/lpstat.c:1918
msgid "\tPrinter types: unknown"
msgstr "\tプリンターã®ç¨®é¡ž: ä¸æ˜Ž"
-#: systemv/lpstat.c:1454
#, c-format
msgid "\tStatus: %s"
msgstr "\tステータス: %s"
-#: systemv/lpstat.c:1852 systemv/lpstat.c:1866 systemv/lpstat.c:1975
-#: systemv/lpstat.c:1989
msgid "\tUsers allowed:"
msgstr "\t許å¯ã•ã‚Œã¦ã„るユーザー:"
-#: systemv/lpstat.c:1859 systemv/lpstat.c:1982
msgid "\tUsers denied:"
msgstr "\tç¦æ­¢ã•ã‚Œã¦ã„るユーザー:"
-#: berkeley/lpc.c:428
msgid "\tdaemon present"
msgstr "\tデーモンã¯æä¾›ã•ã‚Œã¦ã„ã¾ã™"
-#: berkeley/lpc.c:424
msgid "\tno entries"
msgstr "\tエントリーãŒã‚ã‚Šã¾ã›ã‚“"
-#: berkeley/lpc.c:396 berkeley/lpc.c:408
#, c-format
msgid "\tprinter is on device '%s' speed -1"
msgstr "\tデãƒã‚¤ã‚¹ '%s' 上ã®ãƒ—リンター 速度 -1"
-#: berkeley/lpc.c:421
msgid "\tprinting is disabled"
msgstr "\tå°åˆ·ã¯ç„¡åŠ¹ã§ã™"
-#: berkeley/lpc.c:419
msgid "\tprinting is enabled"
msgstr "\tå°åˆ·ã¯æœ‰åŠ¹ã§ã™"
-#: systemv/lpstat.c:1474
#, c-format
msgid "\tqueued for %s"
msgstr "\t%s ã«ã‚­ãƒ¥ãƒ¼ã—ã¾ã—ãŸ"
-#: berkeley/lpc.c:416
msgid "\tqueuing is disabled"
msgstr "\tキューã¯ç„¡åŠ¹ã§ã™"
-#: berkeley/lpc.c:414
msgid "\tqueuing is enabled"
msgstr "\tキューã¯æœ‰åŠ¹ã§ã™"
-#: systemv/lpstat.c:1785 systemv/lpstat.c:1909
msgid "\treason unknown"
msgstr "\t未知ã®ç†ç”±"
-#: systemv/cupstestppd.c:454
msgid ""
"\n"
" DETAILED CONFORMANCE TEST RESULTS"
@@ -198,134 +160,102 @@ msgstr ""
"\n"
" é©åˆãƒ†ã‚¹ãƒˆçµæžœè©³ç´°"
-#: systemv/cupstestppd.c:3820
msgid " Ignore specific warnings."
msgstr " 指定ã•ã‚ŒãŸè­¦å‘Šã‚’無視ã™ã‚‹ã€‚"
-#: systemv/cupstestppd.c:3824
msgid " Issue warnings instead of errors."
msgstr " エラーを警告ã¨ã—ã¦æ‰±ã†ã€‚"
-#: systemv/cupstestppd.c:410 systemv/cupstestppd.c:415
msgid " REF: Page 15, section 3.1."
msgstr " å‚ç…§: 15 ページã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ 3.1。"
-#: systemv/cupstestppd.c:405
msgid " REF: Page 15, section 3.2."
msgstr " å‚ç…§: 15 ページã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ 3.2。"
-#: systemv/cupstestppd.c:425
msgid " REF: Page 19, section 3.3."
msgstr " å‚ç…§: 19 ページã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ 3.3。"
-#: systemv/cupstestppd.c:378
msgid " REF: Page 20, section 3.4."
msgstr " å‚ç…§: 20 ページã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ 3.4。"
-#: systemv/cupstestppd.c:430
msgid " REF: Page 27, section 3.5."
msgstr " å‚ç…§: 27 ページã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ 3.5。"
-#: systemv/cupstestppd.c:373
msgid " REF: Page 42, section 5.2."
msgstr " å‚ç…§: 42 ページã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ 5.2。"
-#: systemv/cupstestppd.c:420
msgid " REF: Pages 16-17, section 3.2."
msgstr " å‚ç…§: 16-17 ページã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ 3.2。"
-#: systemv/cupstestppd.c:390
msgid " REF: Pages 42-45, section 5.2."
msgstr " å‚ç…§: 42-45 ページã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ 5.2。"
-#: systemv/cupstestppd.c:384
msgid " REF: Pages 45-46, section 5.2."
msgstr " å‚ç…§: 45-46 ページã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ 5.2。"
-#: systemv/cupstestppd.c:395
msgid " REF: Pages 48-49, section 5.2."
msgstr " å‚ç…§: 48-49 ページã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ 5.2。"
-#: systemv/cupstestppd.c:400
msgid " REF: Pages 52-54, section 5.2."
msgstr " å‚ç…§: 52-54 ページã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ 5.2。"
-#: berkeley/lpq.c:528
#, c-format
msgid " %-39.39s %.0f bytes"
msgstr " %-39.39s %.0f ãƒã‚¤ãƒˆ"
-#: systemv/cupstestppd.c:589
#, c-format
msgid " PASS Default%s"
msgstr " åˆæ ¼ Default%s"
-#: systemv/cupstestppd.c:524
msgid " PASS DefaultImageableArea"
msgstr " åˆæ ¼ DefaultImageableArea"
-#: systemv/cupstestppd.c:558
msgid " PASS DefaultPaperDimension"
msgstr " åˆæ ¼ DefaultPaperDimension"
-#: systemv/cupstestppd.c:631
msgid " PASS FileVersion"
msgstr " åˆæ ¼ FileVersion"
-#: systemv/cupstestppd.c:675
msgid " PASS FormatVersion"
msgstr " åˆæ ¼ FormatVersion"
-#: systemv/cupstestppd.c:695
msgid " PASS LanguageEncoding"
msgstr " åˆæ ¼ LanguageEncoding"
-#: systemv/cupstestppd.c:715
msgid " PASS LanguageVersion"
msgstr " åˆæ ¼ LanguageVersion"
-#: systemv/cupstestppd.c:769
msgid " PASS Manufacturer"
msgstr " åˆæ ¼ Manufacturer"
-#: systemv/cupstestppd.c:809
msgid " PASS ModelName"
msgstr " åˆæ ¼ ModelName"
-#: systemv/cupstestppd.c:829
msgid " PASS NickName"
msgstr " åˆæ ¼ NickName"
-#: systemv/cupstestppd.c:889
msgid " PASS PCFileName"
msgstr " åˆæ ¼ PCFileName"
-#: systemv/cupstestppd.c:964
msgid " PASS PSVersion"
msgstr " åˆæ ¼ PSVersion"
-#: systemv/cupstestppd.c:869
msgid " PASS PageRegion"
msgstr " åˆæ ¼ PageRegion"
-#: systemv/cupstestppd.c:849
msgid " PASS PageSize"
msgstr " åˆæ ¼ PageSize"
-#: systemv/cupstestppd.c:924
msgid " PASS Product"
msgstr " åˆæ ¼ Product"
-#: systemv/cupstestppd.c:999
msgid " PASS ShortNickName"
msgstr " åˆæ ¼ ShortNickName"
-#: systemv/cupstestppd.c:1374
#, c-format
msgid " WARN %s has no corresponding options."
msgstr " 警告 %s ã¯ç›¸å½“ã™ã‚‹ã‚ªãƒ—ションãŒã‚ã‚Šã¾ã›ã‚“。"
-#: systemv/cupstestppd.c:1486
#, c-format
msgid ""
" WARN %s shares a common prefix with %s\n"
@@ -334,7 +264,6 @@ msgstr ""
" 警告 %s 㯠%s ã¨ä¸€èˆ¬ãƒ—レフィックスを共有ã—ã¾ã™ã€‚\n"
" å‚ç…§: 15 ページã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ 3.2。"
-#: systemv/cupstestppd.c:1345
#, c-format
msgid ""
" WARN Duplex option keyword %s may not work as expected and should "
@@ -345,12 +274,10 @@ msgstr ""
"ã¾ã›ã‚“。ã¾ãŸã€Duplex ã¨ã„ã†åå‰ã§ã‚ã‚‹ã¹ãã§ã™ã€‚ å‚ç…§: 122 ペー"
"ジã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ 5.17"
-#: systemv/cupstestppd.c:1744
msgid " WARN File contains a mix of CR, LF, and CR LF line endings."
msgstr ""
" 警告 ファイル㌠CRã€LFã€CR LF ã®è¡Œæœ«ã‚’混在ã—ã¦å«ã‚“ã§ã„ã¾ã™ã€‚"
-#: systemv/cupstestppd.c:1390
msgid ""
" WARN LanguageEncoding required by PPD 4.3 spec.\n"
" REF: Pages 56-57, section 5.3."
@@ -358,12 +285,10 @@ msgstr ""
" 警告 LanguageEncoding 㯠PPD 4.3 仕様ã§å¿…é ˆã§ã™ã€‚\n"
" å‚ç…§: 56-57 ページã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ 5.3。"
-#: systemv/cupstestppd.c:1726
#, c-format
msgid " WARN Line %d only contains whitespace."
msgstr " 警告 %d è¡ŒãŒç©ºç™½ã ã‘ã§ã™ã€‚"
-#: systemv/cupstestppd.c:1398
msgid ""
" WARN Manufacturer required by PPD 4.3 spec.\n"
" REF: Pages 58-59, section 5.3."
@@ -371,7 +296,6 @@ msgstr ""
" 警告 Manufacturer 㯠PPD 4.3 仕様ã§å¿…é ˆã§ã™ã€‚\n"
" å‚ç…§: 58-59 ページã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ 5.3。"
-#: systemv/cupstestppd.c:1749
msgid ""
" WARN Non-Windows PPD files should use lines ending with only LF, "
"not CR LF."
@@ -379,7 +303,6 @@ msgstr ""
" 警告 éž Windows PPD ファイルã¯ã€CR LF ã§ãªã LF ã®ã¿ã‚’行末ã«ä½¿ã†ã¹"
"ãã§ã™ã€‚"
-#: systemv/cupstestppd.c:1382
#, c-format
msgid ""
" WARN Obsolete PPD version %.1f.\n"
@@ -388,7 +311,6 @@ msgstr ""
" 警告 PPD ãƒãƒ¼ã‚¸ãƒ§ãƒ³ %.1f ã¯ç¾åœ¨ä½¿ã‚ã‚Œã¦ã„ã¾ã›ã‚“。\n"
" å‚ç…§: 42 ページã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ 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."
@@ -396,7 +318,6 @@ msgstr ""
" 警告 8.3 文字より長ㄠPCFileName 㯠PPD 仕様é•åã§ã™ã€‚\n"
" å‚ç…§: 61-62 ページã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ 5.3。"
-#: systemv/cupstestppd.c:1421
msgid ""
" WARN PCFileName should contain a unique filename.\n"
" REF: Pages 61-62, section 5.3."
@@ -404,7 +325,6 @@ msgstr ""
" 警告 PCFileName ã¯ãƒ¦ãƒ‹ãƒ¼ã‚¯ãªãƒ•ã‚¡ã‚¤ãƒ«åã§ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。\n"
" å‚ç…§: 61-62 ページã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ 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."
@@ -413,7 +333,6 @@ msgstr ""
"ん。\n"
" å‚ç…§: 78-79 ページã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ 5.7。"
-#: systemv/cupstestppd.c:1447
msgid ""
" WARN Protocols contains both PJL and BCP; expected TBCP.\n"
" REF: Pages 78-79, section 5.7."
@@ -422,7 +341,6 @@ msgstr ""
"ã™ã€‚\n"
" å‚ç…§: 78-79 ページã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ 5.7。"
-#: systemv/cupstestppd.c:1430
msgid ""
" WARN ShortNickName required by PPD 4.3 spec.\n"
" REF: Pages 64-65, section 5.3."
@@ -430,19 +348,15 @@ msgstr ""
" 警告 ShortNickName 㯠PPD 4.3 仕様ã§å¿…é ˆã§ã™ã€‚\n"
" å‚ç…§: 64-65 ページã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ 5.3。"
-#: systemv/cupsaddsmb.c:282
msgid " cupsaddsmb [options] -a"
msgstr " cupsaddsmb [オプション] -a"
-#: systemv/cupstestdsc.c:427
msgid " cupstestdsc [options] -"
msgstr " cupstestdsc [オプション] -"
-#: systemv/cupstestppd.c:3815
msgid " program | cupstestppd [options] -"
msgstr " program | cupstestppd [オプション] -"
-#: systemv/cupstestppd.c:3747
#, c-format
msgid ""
" %s \"%s %s\" conflicts with \"%s %s\"\n"
@@ -451,18 +365,15 @@ msgstr ""
" %s \"%s %s\" 㯠\"%s %s\" ã¨ç«¶åˆã—ã¾ã™\n"
" (ç¦å‰‡=\"%s %s %s %s\")。"
-#: systemv/cupstestppd.c:2248
#, c-format
msgid " %s %s %s does not exist."
msgstr " %s %s %s ãŒå­˜åœ¨ã—ã¾ã›ã‚“。"
-#: systemv/cupstestppd.c:3904
#, c-format
msgid " %s %s file \"%s\" has the wrong capitalization."
msgstr ""
" %s %s ファイル \"%s\" ã¯ä¸æ­£ãªå¤§æ–‡å­—ã§å§‹ã¾ã‚‹ãƒ¯ãƒ¼ãƒ‰ã‚’å«ã‚“ã§ã„ã¾ã™ã€‚"
-#: systemv/cupstestppd.c:2318
#, c-format
msgid ""
" %s Bad %s choice %s.\n"
@@ -471,101 +382,72 @@ msgstr ""
" %s ä¸æ­£ãª %s ㌠%s ã‚’é¸ã‚“ã§ã„ã¾ã™ã€‚\n"
" å‚ç…§: 122 ページã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ 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 ä¸æ­£ãª UTF-8 \"%s\" 翻訳文字列 (オプション %s ã€é¸æŠž %s) ã§ã™ã€‚"
-#: systemv/cupstestppd.c:3461
#, c-format
msgid " %s Bad UTF-8 \"%s\" translation string for option %s."
msgstr " %s ä¸æ­£ãª UTF-8 \"%s\" 翻訳文字列 (オプション %s 用) ã§ã™ã€‚"
-#: systemv/cupstestppd.c:2389
#, c-format
msgid " %s Bad cupsFilter value \"%s\"."
msgstr " %s ä¸æ­£ãªå€¤ãŒ cupsFilter ã«è¨­å®šã•ã‚Œã¦ã„ã¾ã™ã€‚ \"%s\""
-#: systemv/cupstestppd.c:2475
#, c-format
msgid " %s Bad cupsFilter2 value \"%s\"."
msgstr " %s ä¸æ­£ãªå€¤ãŒ cupsFilter2 ã«è¨­å®šã•ã‚Œã¦ã„ã¾ã™ã€‚ \"%s\""
-#: systemv/cupstestppd.c:2964
#, c-format
msgid " %s Bad cupsICCProfile %s."
msgstr " %s ä¸æ­£ãª cupsICCProfile %s ã§ã™ã€‚"
-#: systemv/cupstestppd.c:2571
#, c-format
msgid " %s Bad cupsPreFilter value \"%s\"."
msgstr " %s ä¸æ­£ãªå€¤ãŒ cupsPreFilter ã«è¨­å®šã•ã‚Œã¦ã„ã¾ã™ã€‚ \"%s\""
-#: systemv/cupstestppd.c:1822
#, c-format
msgid " %s Bad cupsUIConstraints %s: \"%s\""
msgstr " %s ä¸æ­£ãª cupsUIConstraints %s: \"%s\" ã§ã™ã€‚"
-#: systemv/cupstestppd.c:3411
#, c-format
msgid " %s Bad language \"%s\"."
msgstr " %s 無効ãªè¨€èªž \"%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 ä¸æ­£ãªãƒ‘ーミッション %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 ã®ä¸æ­£ãªç¶´ã‚Šã§ã™ - %s ã§ã‚ã‚‹ã¹ãã§ã™ã€‚"
-#: systemv/cupstestppd.c:2907
#, c-format
msgid " %s Cannot provide both APScanAppPath and APScanAppBundleID."
msgstr " %s APScanAppPath 㨠APScanAppBundleID ã¯åŒæ™‚ã«æŒ‡å®šã§ãã¾ã›ã‚“。"
-#: systemv/cupstestppd.c:2205
#, c-format
msgid " %s Default choices conflicting."
msgstr " %s デフォルトã®é¸æŠžè‚¢ãŒç«¶åˆã—ã¦ã„ã¾ã™ã€‚"
-#: systemv/cupstestppd.c:1803
#, c-format
msgid " %s Empty cupsUIConstraints %s"
msgstr " %s 空㮠cupsUIConstraints %s ã§ã™ã€‚"
-#: systemv/cupstestppd.c:3539 systemv/cupstestppd.c:3579
#, c-format
msgid " %s Missing \"%s\" translation string for option %s, choice %s."
msgstr ""
" %s \"%s\" 翻訳文字列 (オプション %s ã€é¸æŠž %s) ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。"
-#: systemv/cupstestppd.c:3447
#, c-format
msgid " %s Missing \"%s\" translation string for option %s."
msgstr " %s \"%s\" 翻訳文字列 (オプション %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 %s ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ (ファイル \"%s\")。"
-#: systemv/cupstestppd.c:3121
#, c-format
msgid ""
" %s Missing REQUIRED PageRegion option.\n"
@@ -574,7 +456,6 @@ msgstr ""
" %s 必須㮠PageRegion オプションãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。\n"
" å‚ç…§: 100 ページã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ 5.14。"
-#: systemv/cupstestppd.c:3106
#, c-format
msgid ""
" %s Missing REQUIRED PageSize option.\n"
@@ -583,42 +464,35 @@ msgstr ""
" %s 必須㮠PageSize オプションãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。\n"
" å‚ç…§: 99 ページã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ 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  é¸æŠž *%s %s ㌠UIConstraints \"*%s %s *%s %s\" 内ã«è¦‹ã¤ã‹ã‚Šã¾ã›"
"ん。"
-#: systemv/cupstestppd.c:1908
#, c-format
msgid " %s Missing choice *%s %s in cupsUIConstraints %s: \"%s\""
msgstr ""
" %s é¸æŠž *%s %s ㌠cupsUIConstraints %s: \"%s\" 内ã«è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。"
-#: systemv/cupstestppd.c:1840
#, c-format
msgid " %s Missing cupsUIResolver %s"
msgstr " %s 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 オプション %s ãŒUIConstraints \"*%s %s *%s %s\" ã«è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。"
-#: systemv/cupstestppd.c:1892
#, c-format
msgid " %s Missing option %s in cupsUIConstraints %s: \"%s\""
msgstr ""
" %s オプション %s ãŒcupsUIConstraints %s ã«è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“: \"%s\""
-#: systemv/cupstestppd.c:3633
#, c-format
msgid " %s No base translation \"%s\" is included in file."
msgstr " %s ファイルã«ãƒ™ãƒ¼ã‚¹ç¿»è¨³æ–‡å­—列 \"%s\" ãŒã‚ã‚Šã¾ã›ã‚“。"
-#: systemv/cupstestppd.c:2294
#, c-format
msgid ""
" %s REQUIRED %s does not define choice None.\n"
@@ -627,38 +501,31 @@ msgstr ""
" %s 必須㮠%s ãŒé¸æŠžè‚¢ None を定義ã—ã¦ã„ã¾ã›ã‚“。\n"
" å‚ç…§: 122 ページã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ 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 サイズ \"%s\" 㯠%s å‘ã‘ã«å®šç¾©ã•ã‚Œã¦ã„ã¾ã™ãŒã€%s ã«ã¯ã‚ã‚Šã¾ã›ã‚“。"
-#: systemv/cupstestppd.c:3160
#, c-format
msgid " %s Size \"%s\" has unexpected dimensions (%gx%g)."
msgstr " %s サイズ \"%s\" ã¯è¦å®šå¤–ã®å¯¸æ³• (%gx%g) ã‚’æŒã£ã¦ã„ã¾ã™ã€‚"
-#: systemv/cupstestppd.c:3351
#, c-format
msgid " %s Size \"%s\" should be \"%s\"."
msgstr " %s サイズ \"%s\" 㯠\"%s\" ã§ã‚ã‚‹ã¹ãã§ã™ã€‚"
-#: systemv/cupstestppd.c:3300
#, c-format
msgid " %s Size \"%s\" should be the Adobe standard name \"%s\"."
msgstr " %s サイズ \"%s\" 㯠Adobe 標準å称 \"%s\" ã§ã‚ã‚‹ã¹ãã§ã™ã€‚"
-#: systemv/cupstestppd.c:3041
#, c-format
msgid " %s cupsICCProfile %s hash value collides with %s."
msgstr " %s cupsICCProfileã®ãƒãƒƒã‚·ãƒ¥å€¤ %s ㌠%s ã¨ä¸€è‡´ã—ã¾ã›ã‚“。"
-#: systemv/cupstestppd.c:1963
#, c-format
msgid " %s cupsUIResolver %s causes a loop."
msgstr " %s cupsUIResolverã® %s ãŒãƒ«ãƒ¼ãƒ—ã—ã¦ã„ã¾ã™ã€‚"
-#: systemv/cupstestppd.c:1945
#, c-format
msgid ""
" %s cupsUIResolver %s does not list at least two different options."
@@ -666,7 +533,6 @@ msgstr ""
" %s cupsUIResolver %s ã¯æœ€ä½Žã§ã‚‚ 2 ã¤ã®ç•°ãªã£ãŸã‚ªãƒ—ションをæŒã£ã¦ã„ãªã‘"
"ã‚Œã°ãªã‚Šã¾ã›ã‚“。"
-#: systemv/cupstestppd.c:1168
#, c-format
msgid ""
" **FAIL** %s must be 1284DeviceID\n"
@@ -675,7 +541,6 @@ msgstr ""
" **失敗** %s 㯠1284DeviceID ã§ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。\n"
" å‚ç…§: 72 ページã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ 5.5"
-#: systemv/cupstestppd.c:580
#, c-format
msgid ""
" **FAIL** Bad Default%s %s\n"
@@ -684,7 +549,6 @@ msgstr ""
" **失敗** ä¸æ­£ãª Default%s %s\n"
" å‚ç…§: 40 ページã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ 4.5。"
-#: systemv/cupstestppd.c:514
#, c-format
msgid ""
" **FAIL** Bad DefaultImageableArea %s\n"
@@ -693,7 +557,6 @@ msgstr ""
" **失敗** %s ã¯ä¸æ­£ãª DefaultImageableArea ã§ã™ã€‚\n"
" å‚ç…§: 102 ページã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ 5.15。"
-#: systemv/cupstestppd.c:550
#, c-format
msgid ""
" **FAIL** Bad DefaultPaperDimension %s\n"
@@ -702,7 +565,6 @@ msgstr ""
" **失敗** %s ã¯ä¸æ­£ãª DefaultPaperDimension ã§ã™ã€‚\n"
" å‚ç…§: 103 ページã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ 5.15。"
-#: systemv/cupstestppd.c:623
#, c-format
msgid ""
" **FAIL** Bad FileVersion \"%s\"\n"
@@ -711,7 +573,6 @@ msgstr ""
" **失敗** ä¸æ­£ãªFileVersion \"%s\"\n"
" å‚ç…§: 56 ページã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ 5.3。"
-#: systemv/cupstestppd.c:667
#, c-format
msgid ""
" **FAIL** Bad FormatVersion \"%s\"\n"
@@ -720,7 +581,6 @@ msgstr ""
" **失敗** FormatVersion ãŒé•ã„ã¾ã™ \"%s\"\n"
" å‚ç…§: 56 ページã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ 5.3。"
-#: systemv/cupstestppd.c:1025
msgid ""
" **FAIL** Bad JobPatchFile attribute in file\n"
" REF: Page 24, section 3.4."
@@ -728,19 +588,16 @@ msgstr ""
" **失敗** ファイルã«ä¸æ­£ãª JobPatchFile 属性ãŒã‚ã‚Šã¾ã™\n"
" å‚ç…§: 24 ページã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ 3.4。"
-#: systemv/cupstestppd.c:1213
#, c-format
msgid " **FAIL** Bad LanguageEncoding %s - must be ISOLatin1."
msgstr ""
" **失敗** 無効㪠LanguageEncoding %s - ISOLatin1 ã§ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。"
-#: systemv/cupstestppd.c:1227
#, c-format
msgid " **FAIL** Bad LanguageVersion %s - must be English."
msgstr ""
" **失敗** 無効㪠LanguageVersion %s - English ã§ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。"
-#: systemv/cupstestppd.c:743 systemv/cupstestppd.c:760
#, c-format
msgid ""
" **FAIL** Bad Manufacturer (should be \"%s\")\n"
@@ -749,7 +606,6 @@ msgstr ""
" **失敗** ä¸æ­£ãª Manufacturer (\"%s\" ã§ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“)\n"
" å‚ç…§: 211 ページã€è¡¨ D.1。"
-#: systemv/cupstestppd.c:800
#, c-format
msgid ""
" **FAIL** Bad ModelName - \"%c\" not allowed in string.\n"
@@ -758,7 +614,6 @@ msgstr ""
" **失敗** ä¸æ­£ãª ModelName - 文字列㫠\"%c\" ã¯è¨±å¯ã•ã‚Œã¦ã„ã¾ã›ã‚“。\n"
" å‚ç…§: 59-60 ページã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ 5.3。"
-#: systemv/cupstestppd.c:956
msgid ""
" **FAIL** Bad PSVersion - not \"(string) int\".\n"
" REF: Pages 62-64, section 5.3."
@@ -766,7 +621,6 @@ msgstr ""
" **失敗** ä¸æ­£ãª PSVersion - \"(文字列) æ•´æ•°\" ã§ã¯ã‚ã‚Šã¾ã›ã‚“。\n"
" å‚ç…§: 62-64 ページã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ 5.3。"
-#: systemv/cupstestppd.c:917
msgid ""
" **FAIL** Bad Product - not \"(string)\".\n"
" REF: Page 62, section 5.3."
@@ -774,7 +628,6 @@ msgstr ""
" **失敗** ä¸æ­£ãª Product - \"(文字列)\" ã§ã¯ã‚ã‚Šã¾ã›ã‚“。\n"
" å‚ç…§: 62 ページã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ 5.3。"
-#: systemv/cupstestppd.c:991
msgid ""
" **FAIL** Bad ShortNickName - longer than 31 chars.\n"
" REF: Pages 64-65, section 5.3."
@@ -782,7 +635,6 @@ msgstr ""
" **失敗** ä¸æ­£ãª ShortNickName - 31 文字を超ãˆã¦ã„ã¾ã™ã€‚\n"
" å‚ç…§: 64-65 ページã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ 5.3。"
-#: systemv/cupstestppd.c:1149
#, c-format
msgid ""
" **FAIL** Bad option %s choice %s\n"
@@ -791,12 +643,10 @@ msgstr ""
" **失敗** ä¸æ­£ãª %s ㌠%s ã‚’é¸ã‚“ã§ã„ã¾ã™ã€‚\n"
" å‚ç…§: 84 ページã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ 5.9"
-#: systemv/cupstestppd.c:3774 systemv/cupstestppd.c:3796
#, c-format
msgid " **FAIL** Default option code cannot be interpreted: %s"
msgstr " **失敗** デフォルトã®ã‚ªãƒ—ションコードãŒè§£é‡ˆã§ãã¾ã›ã‚“: %s"
-#: systemv/cupstestppd.c:1286
#, c-format
msgid ""
" **FAIL** Default translation string for option %s choice %s contains "
@@ -805,7 +655,6 @@ msgstr ""
" **失敗** オプション %sã€é¸æŠžè‚¢ %s ã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®ç¿»è¨³æ–‡å­—列㌠8 ビット"
"文字をå«ã‚“ã§ã„ã¾ã™ã€‚"
-#: systemv/cupstestppd.c:1259
#, c-format
msgid ""
" **FAIL** Default translation string for option %s contains 8-bit "
@@ -814,28 +663,23 @@ msgstr ""
" **失敗** オプション %s ã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®ç¿»è¨³æ–‡å­—列㌠8 ビット文字をå«ã‚“ã§"
"ã„ã¾ã™ã€‚"
-#: systemv/cupstestppd.c:2101
#, c-format
msgid " **FAIL** Group names %s and %s differ only by case."
msgstr " **失敗** グループå %s 㨠%s ã¯å¤§æ–‡å­—/å°æ–‡å­—ãŒé•ã†ã ã‘ã§ã™ã€‚"
-#: systemv/cupstestppd.c:2146
#, c-format
msgid " **FAIL** Multiple occurrences of option %s choice name %s."
msgstr " **失敗** %s ã§è¤‡æ•°ã®ã‚ªãƒ—ション %s ãŒé¸æŠžã•ã‚Œã¦ã„ã¾ã™ã€‚"
-#: systemv/cupstestppd.c:2163
#, c-format
msgid " **FAIL** Option %s choice names %s and %s differ only by case."
msgstr ""
" **失敗** %s ãŒé¸æŠžã—㟠%s 㨠%s ã¯å¤§æ–‡å­—/å°æ–‡å­—ã®ã¿ãŒé•ã†ã ã‘ã§ã™ã€‚"
-#: systemv/cupstestppd.c:2123
#, c-format
msgid " **FAIL** Option names %s and %s differ only by case."
msgstr " **失敗** オプションå %s 㨠%s ã¯å¤§æ–‡å­—/å°æ–‡å­—ãŒé•ã†ã ã‘ã§ã™ã€‚"
-#: systemv/cupstestppd.c:600
#, c-format
msgid ""
" **FAIL** REQUIRED Default%s\n"
@@ -844,7 +688,6 @@ msgstr ""
" **失敗** Default%s ã¯å¿…é ˆ\n"
" å‚ç…§: 40 ページã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ 4.5。"
-#: systemv/cupstestppd.c:499
msgid ""
" **FAIL** REQUIRED DefaultImageableArea\n"
" REF: Page 102, section 5.15."
@@ -852,7 +695,6 @@ msgstr ""
" **失敗** DefaultImageableArea ã¯å¿…é ˆ\n"
" å‚ç…§: 102 ページã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ 5.15。"
-#: systemv/cupstestppd.c:535
msgid ""
" **FAIL** REQUIRED DefaultPaperDimension\n"
" REF: Page 103, section 5.15."
@@ -860,7 +702,6 @@ msgstr ""
" **失敗** DefaultPaperDimension ã¯å¿…é ˆ\n"
" å‚ç…§: 103 ページã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ 5.15。"
-#: systemv/cupstestppd.c:641
msgid ""
" **FAIL** REQUIRED FileVersion\n"
" REF: Page 56, section 5.3."
@@ -868,7 +709,6 @@ msgstr ""
" **失敗** FileVersion ã¯å¿…é ˆ\n"
" å‚ç…§: 56 ページã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ 5.3。"
-#: systemv/cupstestppd.c:685
msgid ""
" **FAIL** REQUIRED FormatVersion\n"
" REF: Page 56, section 5.3."
@@ -876,7 +716,6 @@ msgstr ""
" **失敗** FormatVersion ã¯å¿…é ˆ\n"
" å‚ç…§: 56 ページã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ 5.3。"
-#: systemv/cupstestppd.c:1076
#, c-format
msgid ""
" **FAIL** REQUIRED ImageableArea for PageSize %s\n"
@@ -887,7 +726,6 @@ msgstr ""
" å‚ç…§: 41 ページã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ 5。\n"
" å‚ç…§: 102 ページã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ 5.15。"
-#: systemv/cupstestppd.c:705
msgid ""
" **FAIL** REQUIRED LanguageEncoding\n"
" REF: Pages 56-57, section 5.3."
@@ -895,7 +733,6 @@ msgstr ""
" **失敗** LanguageEncoding ã¯å¿…é ˆ\n"
" å‚ç…§: 56-57 ページã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ 5.3。"
-#: systemv/cupstestppd.c:725
msgid ""
" **FAIL** REQUIRED LanguageVersion\n"
" REF: Pages 57-58, section 5.3."
@@ -903,7 +740,6 @@ msgstr ""
" **失敗** LanguageVersion ã¯å¿…é ˆ\n"
" å‚ç…§: 57-58 ページã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ 5.3。"
-#: systemv/cupstestppd.c:779
msgid ""
" **FAIL** REQUIRED Manufacturer\n"
" REF: Pages 58-59, section 5.3."
@@ -911,7 +747,6 @@ msgstr ""
" **失敗** Manufacturer ã¯å¿…é ˆ\n"
" å‚ç…§: 58-59 ページã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ 5.3。"
-#: systemv/cupstestppd.c:819
msgid ""
" **FAIL** REQUIRED ModelName\n"
" REF: Pages 59-60, section 5.3."
@@ -919,7 +754,6 @@ msgstr ""
" **失敗** ModelName ã¯å¿…é ˆ\n"
" å‚ç…§: 59-60 ページã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ 5.3。"
-#: systemv/cupstestppd.c:839
msgid ""
" **FAIL** REQUIRED NickName\n"
" REF: Page 60, section 5.3."
@@ -927,7 +761,6 @@ msgstr ""
" **失敗** NickName ã¯å¿…é ˆ\n"
" å‚ç…§: 60 ページã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ 5.3。"
-#: systemv/cupstestppd.c:899
msgid ""
" **FAIL** REQUIRED PCFileName\n"
" REF: Pages 61-62, section 5.3."
@@ -935,7 +768,6 @@ msgstr ""
" **失敗** PCFileName ã¯å¿…é ˆ\n"
" å‚ç…§: 61-62 ページã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ 5.3。"
-#: systemv/cupstestppd.c:974
msgid ""
" **FAIL** REQUIRED PSVersion\n"
" REF: Pages 62-64, section 5.3."
@@ -943,7 +775,6 @@ msgstr ""
" **失敗** PSVersion ã¯å¿…é ˆ\n"
" å‚ç…§: 62-64 ページã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ 5.3。"
-#: systemv/cupstestppd.c:879
msgid ""
" **FAIL** REQUIRED PageRegion\n"
" REF: Page 100, section 5.14."
@@ -951,7 +782,6 @@ msgstr ""
" **失敗** PageRegion ã¯å¿…é ˆ\n"
" å‚ç…§: 100 ページã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ 5.14。"
-#: systemv/cupstestppd.c:1045
msgid ""
" **FAIL** REQUIRED PageSize\n"
" REF: Page 41, section 5.\n"
@@ -961,7 +791,6 @@ msgstr ""
" å‚ç…§: 41 ページã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ 5。\n"
" å‚ç…§: 99 ページã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ 5.14。"
-#: systemv/cupstestppd.c:859
msgid ""
" **FAIL** REQUIRED PageSize\n"
" REF: Pages 99-100, section 5.14."
@@ -969,7 +798,6 @@ msgstr ""
" **失敗** PageSize ã¯å¿…é ˆ\n"
" å‚ç…§: 99-100 ページã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ 5.14。"
-#: systemv/cupstestppd.c:1098
#, c-format
msgid ""
" **FAIL** REQUIRED PaperDimension for PageSize %s\n"
@@ -980,7 +808,6 @@ msgstr ""
" å‚ç…§: 41 ページã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ 5。\n"
" å‚ç…§: 103 ページã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ 5.15。"
-#: systemv/cupstestppd.c:934
msgid ""
" **FAIL** REQUIRED Product\n"
" REF: Page 62, section 5.3."
@@ -988,7 +815,6 @@ msgstr ""
" **失敗** Product ã¯å¿…é ˆ\n"
" å‚ç…§: 62 ページã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ 5.3。"
-#: systemv/cupstestppd.c:1009
msgid ""
" **FAIL** REQUIRED ShortNickName\n"
" REF: Page 64-65, section 5.3."
@@ -996,24 +822,19 @@ msgstr ""
" **失敗** ShortNickName ã¯å¿…é ˆ\n"
" å‚ç…§: 64-65 ページã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ 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 ""
" 失敗\n"
" **失敗** PPD ファイルを開ã‘ã¾ã›ã‚“ - %s (%d è¡Œ)。"
-#: systemv/cupstestppd.c:1498
#, c-format
msgid " %d ERRORS FOUND"
msgstr " %d 個ã®ã‚¨ãƒ©ãƒ¼ãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸ"
-#: systemv/cupstestdsc.c:431
msgid " -h Show program usage"
msgstr " -h ã“ã®ãƒ—ログラムã®åˆ©ç”¨æ³•ã‚’表示ã™ã‚‹"
-#: systemv/cupstestdsc.c:234 systemv/cupstestdsc.c:276
#, c-format
msgid ""
" Bad %%%%BoundingBox: on line %d.\n"
@@ -1022,7 +843,6 @@ msgstr ""
" ä¸æ­£ãª %%%%BoundingBox: (%d è¡Œ)。\n"
" å‚ç…§: 39 ページã€%%%%BoundingBox:"
-#: systemv/cupstestdsc.c:305
#, c-format
msgid ""
" Bad %%%%Page: on line %d.\n"
@@ -1031,7 +851,6 @@ msgstr ""
" ä¸æ­£ãª %%%%Page: (%d è¡Œ)。\n"
" å‚ç…§: 53 ページã€%%%%Page:"
-#: systemv/cupstestdsc.c:218 systemv/cupstestdsc.c:258
#, c-format
msgid ""
" Bad %%%%Pages: on line %d.\n"
@@ -1040,7 +859,6 @@ msgstr ""
" ä¸æ­£ãª %%%%Pages: (%d è¡Œ)。\n"
" REF: Page 43, %%%%Pages:"
-#: systemv/cupstestdsc.c:176
#, c-format
msgid ""
" Line %d is longer than 255 characters (%d).\n"
@@ -1049,7 +867,6 @@ msgstr ""
" %d 行㌠255文字より長ããªã£ã¦ã„ã¾ã™ (%d)。\n"
" å‚ç…§: 25 ページã€Line Length"
-#: systemv/cupstestdsc.c:192
msgid ""
" Missing %!PS-Adobe-3.0 on first line.\n"
" REF: Page 17, 3.1 Conforming Documents"
@@ -1057,14 +874,12 @@ msgstr ""
" 先頭行㫠%!PS-Adobe-3.0 ãŒã‚ã‚Šã¾ã›ã‚“。\n"
" å‚ç…§: 17 ページã€3.1 Conforming Documents"
-#: systemv/cupstestdsc.c:362
#, c-format
msgid " Missing %%EndComments comment. REF: Page 41, %%EndComments"
msgstr ""
" %%EndComments コメントãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。\n"
" å‚ç…§: 41 ページã€%%EndComments"
-#: systemv/cupstestdsc.c:342
#, c-format
msgid ""
" Missing or bad %%BoundingBox: comment.\n"
@@ -1073,7 +888,6 @@ msgstr ""
" %%BoundingBox: コメントãŒè¦‹ã¤ã‹ã‚‰ãªã„ã‹ä¸æ­£ã§ã™ã€‚\n"
" å‚ç…§: 39 ページã€%%BoundingBox:"
-#: systemv/cupstestdsc.c:372
#, c-format
msgid ""
" Missing or bad %%Page: comments.\n"
@@ -1082,7 +896,6 @@ msgstr ""
" %%Page: コメントãŒè¦‹ã¤ã‹ã‚‰ãªã„ã‹ä¸æ­£ã§ã™ã€‚\n"
" å‚ç…§: 53 ページã€%%Page:"
-#: systemv/cupstestdsc.c:352
#, c-format
msgid ""
" Missing or bad %%Pages: comment.\n"
@@ -1091,82 +904,64 @@ msgstr ""
" %%Pages: コメントãŒè¦‹ã¤ã‹ã‚‰ãªã„ã‹ä¸æ­£ã§ã™ã€‚\n"
" å‚ç…§: 43 ページã€%%Pages:"
-#: systemv/cupstestppd.c:1500
msgid " NO ERRORS FOUND"
msgstr " エラーã¯è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ"
-#: systemv/cupstestdsc.c:395
#, c-format
msgid " Saw %d lines that exceeded 255 characters."
msgstr " 255文字を超ãˆã‚‹ %d è¡ŒãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸã€‚"
-#: systemv/cupstestdsc.c:390
#, c-format
msgid " Too many %%BeginDocument comments."
msgstr " %%BeginDocument コメントãŒå¤šã™ãŽã¾ã™ã€‚"
-#: systemv/cupstestdsc.c:382
#, c-format
msgid " Too many %%EndDocument comments."
msgstr " %%EndDocument コメントãŒå¤šã™ãŽã¾ã™ã€‚"
-#: 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 " 警告: ファイル㫠%%EndComments コメントãŒã‚ã‚Šã¾ã›ã‚“。"
-#: systemv/cupstestdsc.c:406
#, c-format
msgid " Warning: obsolete DSC version %.1f in file."
msgstr " 警告: ファイルã¯æ™‚代é…れ㮠DSC ãƒãƒ¼ã‚¸ãƒ§ãƒ³ %.1f ã§ã™ã€‚"
-#: test/ippfind.c:2788
msgid " ! expression Unary NOT of expression."
msgstr "! <å¼> å¼ã‚’å¦å®šã™ã‚‹å˜é …演算å­ã€‚"
-#: test/ippfind.c:2787
msgid " ( expressions ) Group expressions."
msgstr " ( <複数ã®å¼> ) グループ化ã•ã‚ŒãŸè¤‡æ•°ã®å¼ã€‚"
-#: systemv/cupsctl.c:210
msgid " --[no-]debug-logging Turn debug logging on/off."
msgstr " --[no-]debug-logging デãƒãƒƒã‚°ãƒ­ã‚°ã®æœ‰åŠ¹/無効を切り替ãˆã‚‹ã€‚"
-#: systemv/cupsctl.c:212
msgid " --[no-]remote-admin Turn remote administration on/off."
msgstr " --[no-]remote-admin リモート管ç†ã®æœ‰åŠ¹/無効を切り替ãˆã‚‹ã€‚"
-#: systemv/cupsctl.c:214
msgid " --[no-]remote-any Allow/prevent access from the Internet."
msgstr ""
" --[no-]remote-any インターãƒãƒƒãƒˆã‹ã‚‰ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’許å¯/ç¦æ­¢ã™ã‚‹ã€‚"
-#: systemv/cupsctl.c:216
msgid " --[no-]share-printers Turn printer sharing on/off."
msgstr " --[no-]share-printers プリンター共有ã®æœ‰åŠ¹/無効を切り替ãˆã‚‹ã€‚"
-#: systemv/cupsctl.c:218
msgid " --[no-]user-cancel-any Allow/prevent users to cancel any job."
msgstr ""
" --[no-]user-cancel-any ã‚らゆるジョブã®ã‚­ãƒ£ãƒ³ã‚»ãƒ«ã‚’ユーザーã«è¨±å¯/ç¦æ­¢ã™ã‚‹"
-#: ppdc/ppdc.cxx:450
msgid " --cr End lines with CR (Mac OS 9)."
msgstr " --cr 行末を CR ã¨ã™ã‚‹ (Mac OS 9)。"
-#: ppdc/ppdc.cxx:452
msgid " --crlf End lines with CR + LF (Windows)."
msgstr " --crlf 行末を CR + LF ã¨ã™ã‚‹ (Windows)。"
-#: test/ippfind.c:2769
msgid " --domain regex Match domain to regular expression."
msgstr " --domain <æ­£è¦è¡¨ç¾> ドメインãŒæ­£è¦è¡¨ç¾ã«ãƒžãƒƒãƒã™ã‚‹ã‹ã€‚"
-#: test/ippfind.c:2770
msgid ""
" --exec utility [argument ...] ;\n"
" Execute program if true."
@@ -1174,73 +969,56 @@ msgstr ""
" --exec <実行ファイルå> [引数 ...] ;\n"
" æˆåŠŸã—ãŸå ´åˆã€<実行ファイルå>を実行ã™ã‚‹ã€‚"
-#: test/ippfind.c:2790
msgid " --false Always false."
msgstr " --false 常ã«å¤±æ•—。"
-#: test/ipptool.c:4806
msgid " --help Show help."
msgstr " --help ヘルプを表示ã™ã‚‹ã€‚"
-#: test/ippfind.c:2752
msgid " --help Show this help."
msgstr " --help ã“ã®ãƒ˜ãƒ«ãƒ—を表示ã™ã‚‹ã€‚"
-#: test/ippfind.c:2772
msgid " --host regex Match hostname to regular expression."
msgstr " --host <æ­£è¦è¡¨ç¾> ホストåãŒæ­£è¦è¡¨ç¾ã«ãƒžãƒƒãƒã™ã‚‹ã‹ã€‚"
-#: ppdc/ppdc.cxx:454
msgid " --lf End lines with LF (UNIX/Linux/OS X)."
msgstr " --lf 行末を LF ã¨ã™ã‚‹ (UNIX/Linux/OS X)。"
-#: scheduler/cupsfilter.c:1483
msgid " --list-filters List filters that will be used."
msgstr " --list-filters 使用ã•ã‚Œã‚‹ãƒ•ã‚£ãƒ«ã‚¿ãƒ¼ã®ãƒªã‚¹ãƒˆã‚’表示ã™ã‚‹ã€‚"
-#: test/ippfind.c:2774
msgid " --local True if service is local."
msgstr " --local サービスãŒãƒ­ãƒ¼ã‚«ãƒ«ãªã‚‰çœŸã€‚"
-#: test/ippfind.c:2773
msgid " --ls List attributes."
msgstr " --ls 属性ã®ä¸€è¦§ã‚’表示ã™ã‚‹ã€‚"
-#: test/ippfind.c:2775
msgid " --name regex Match service name to regular expression."
msgstr " --name <æ­£è¦è¡¨ç¾> サービスåãŒæ­£è¦è¡¨ç¾ã¨ãƒžãƒƒãƒã™ã‚‹ã‹ã€‚"
-#: test/ippfind.c:2789
msgid " --not expression Unary NOT of expression."
msgstr " --not <å¼> å¼ã‚’å¦å®šã™ã‚‹å˜é …演算å­ã€‚"
-#: test/ippfind.c:2776
msgid " --path regex Match resource path to regular expression."
msgstr " --path <æ­£è¦è¡¨ç¾> リソースã®ãƒ‘スãŒæ­£è¦è¡¨ç¾ã¨ãƒžãƒƒãƒã™ã‚‹ã‹ã€‚"
-#: test/ippfind.c:2777
msgid " --port number[-number] Match port to number or range."
msgstr ""
" --port 番å·[-番å·] ãƒãƒ¼ãƒˆãŒæŒ‡å®šã•ã‚ŒãŸç•ªå·ã¾ãŸã¯ç¯„囲ã¨ãƒžãƒƒãƒã™ã‚‹ã‹ã€‚"
-#: test/ippfind.c:2778
msgid " --print Print URI if true."
msgstr " --print çµæžœãŒçœŸãªã‚‰ URI を表示ã™ã‚‹ã€‚"
-#: test/ippfind.c:2779
msgid " --print-name Print service name if true."
msgstr " --print-name çµæžœãŒçœŸãªã‚‰ã‚µãƒ¼ãƒ“スåを表示ã™ã‚‹ã€‚"
-#: test/ippfind.c:2780
msgid " --quiet Quietly report match via exit code."
msgstr ""
" --quiet マッãƒçµæžœã‚’終了コードã§å ±å‘Šã—ã€å‡ºåŠ›ã‚’ã—ãªã„。"
-#: test/ippfind.c:2781
msgid " --remote True if service is remote."
msgstr " --remote サービスãŒãƒªãƒ¢ãƒ¼ãƒˆãªã‚‰çœŸã€‚"
-#: test/ipptool.c:4807
msgid ""
" --stop-after-include-error\n"
" Stop tests after a failed INCLUDE."
@@ -1248,130 +1026,103 @@ msgstr ""
" --stop-after-include-error\n"
" INCLUDE ãŒå¤±æ•—ã—ãŸã¨ãテストをåœæ­¢ã™ã‚‹ã€‚"
-#: test/ippfind.c:2791
msgid " --true Always true."
msgstr " --true 常ã«çœŸã€‚"
-#: test/ippfind.c:2782
msgid " --txt key True if the TXT record contains the key."
msgstr " --txt <キーå> TXT レコードãŒã‚­ãƒ¼åã‚’å«ã‚“ã§ã„ãŸã‚‰çœŸã€‚"
-#: test/ippfind.c:2783
msgid " --txt-* regex Match TXT record key to regular expression."
msgstr ""
" --txt-* <æ­£è¦è¡¨ç¾> TXT レコードã®ã‚­ãƒ¼ãŒæ­£è¦è¡¨ç¾ã¨ãƒžãƒƒãƒã—ãŸã‚‰çœŸã€‚"
-#: test/ippfind.c:2784
msgid " --uri regex Match URI to regular expression."
msgstr " --uri <æ­£è¦è¡¨ç¾> URI ãŒæ­£è¦è¡¨ç¾ã¨ãƒžãƒƒãƒã™ã‚‹ã‹ã€‚"
-#: test/ippfind.c:2753
msgid " --version Show program version."
msgstr " --version プログラムã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’表示。"
-#: test/ipptool.c:4809
msgid " --version Show version."
msgstr " --version ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’表示ã™ã‚‹ã€‚"
-#: test/ippfind.c:2746 test/ipptool.c:4810
msgid " -4 Connect using IPv4."
msgstr " -4 IPv4 ã§æŽ¥ç¶šã™ã‚‹ã€‚"
-#: test/ippfind.c:2747 test/ipptool.c:4811
msgid " -6 Connect using IPv6."
msgstr " -6 IPv6 ã§æŽ¥ç¶šã™ã‚‹ã€‚"
-#: test/ipptool.c:4812
msgid " -C Send requests using chunking (default)."
msgstr ""
" -C chunking を用ã„ã¦ãƒªã‚¯ã‚¨ã‚¹ãƒˆã‚’é€ã‚‹ (デフォルト)。"
-#: scheduler/cupsfilter.c:1484
msgid " -D Remove the input file when finished."
msgstr " -D 終了ã—ãŸã¨ãã«å…¥åŠ›ãƒ•ã‚¡ã‚¤ãƒ«ã‚’削除ã™ã‚‹ã€‚"
-#: ppdc/ppdc.cxx:433 ppdc/ppdhtml.cxx:175 ppdc/ppdpo.cxx:255
msgid " -D name=value Set named variable to value."
msgstr ""
" -D name=value name ã§æŒ‡å®šã•ã‚ŒãŸå¤‰æ•°ã«å€¤ value をセットã™ã‚‹ã€‚"
-#: systemv/cupsaddsmb.c:285 systemv/cupsctl.c:205
msgid " -E Encrypt the connection."
msgstr " -E 接続を暗å·åŒ–ã™ã‚‹ã€‚"
-#: test/ipptool.c:4814
msgid " -E Test with HTTP Upgrade to TLS."
msgstr ""
" -E HTTP ã‹ã‚‰ TLS ã¸ã®ã‚¢ãƒƒãƒ—グレードã§ãƒ†ã‚¹ãƒˆã™ã‚‹ã€‚"
-#: scheduler/main.c:2149
msgid ""
" -F Run in the foreground but detach from console."
msgstr ""
" -F フォアグラウンドã§å®Ÿè¡Œã™ã‚‹ãŒã‚³ãƒ³ã‚½ãƒ¼ãƒ«ã‹ã‚‰ã¯ãƒ‡ã‚¿ãƒƒ"
"ãƒã™ã‚‹ã€‚"
-#: systemv/cupsaddsmb.c:286
msgid " -H samba-server Use the named SAMBA server."
msgstr " -H sambaサーãƒãƒ¼ 指定㮠SAMBA サーãƒãƒ¼ã‚’使ã†ã€‚"
-#: test/ipptool.c:4816
msgid " -I Ignore errors."
msgstr " -I エラーを無視ã™ã‚‹ã€‚"
-#: 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 インクルードディレクトリーを検索パスã«å«ã‚る。"
-#: 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 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 XML ã® plist å½¢å¼ã§æ›¸ã出ã—テストリãƒãƒ¼ãƒˆã‚’標準出力ã«ã™ã‚‹ã€‚"
+msgstr ""
+" -P filename.plist XML ã® plist å½¢å¼ã§æ›¸ã出ã—テストリãƒãƒ¼ãƒˆã‚’標準出力"
+"ã«ã™ã‚‹ã€‚"
-#: scheduler/cupsfilter.c:1485
msgid " -P filename.ppd Set PPD file."
msgstr " -P filename.ppd PPD ファイルを指定ã™ã‚‹ã€‚"
-#: test/ippfind.c:2756
msgid " -P number[-number] Match port to number or range."
msgstr ""
" -P 番å·[-番å·] ãƒãƒ¼ãƒˆãŒæŒ‡å®šã•ã‚ŒãŸç•ªå·ã¾ãŸã¯ç¯„囲ã¨ãƒžãƒƒãƒã™ã‚‹ã‹ã€‚"
-#: systemv/cupstestppd.c:3821
msgid " -R root-directory Set alternate root."
msgstr " -R root-directory 別ã®ãƒ«ãƒ¼ãƒˆãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªãƒ¼ã‚’指定ã™ã‚‹ã€‚"
-#: test/ipptool.c:4820
msgid " -S Test with SSL encryption."
msgstr " -S SSL æš—å·åŒ–ã§ãƒ†ã‚¹ãƒˆã™ã‚‹ã€‚"
-#: test/ippfind.c:2748
msgid " -T seconds Set the browse timeout in seconds."
msgstr " -T <秒> ブラウズã®ã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆã‚’秒ã§æŒ‡å®šã™ã‚‹ã€‚"
-#: test/ipptool.c:4822
msgid " -T seconds Set the receive/send timeout in seconds."
msgstr " -T seconds å—ä¿¡ï¼é€ä¿¡ã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆã‚’秒ã§æŒ‡å®šã™ã‚‹ã€‚"
-#: scheduler/cupsfilter.c:1486 systemv/cupsaddsmb.c:288 systemv/cupsctl.c:206
msgid " -U username Specify username."
msgstr " -U username ユーザーåを指定ã™ã‚‹ã€‚"
-#: test/ippfind.c:2750 test/ipptool.c:4824
msgid " -V version Set default IPP version."
msgstr " -V version デフォルト㮠IPP ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’指定ã™ã‚‹ã€‚"
-#: systemv/cupstestppd.c:3822
msgid ""
" -W {all,none,constraints,defaults,duplex,filters,profiles,sizes,"
"translations}"
@@ -1379,93 +1130,72 @@ 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 プレーンテキストã®ä»£ã‚ã‚Šã« XML を用ã„る。"
-#: test/ippdiscover.c:818
msgid " -a Browse for all services."
msgstr " -a ã™ã¹ã¦ã®ã‚µãƒ¼ãƒ“スをブラウズã™ã‚‹ã€‚"
-#: systemv/cupsaddsmb.c:289
msgid " -a Export all printers."
msgstr " -a ã™ã¹ã¦ã®ãƒ—リンターをエクスãƒãƒ¼ãƒˆã™ã‚‹ã€‚"
-#: test/ipptool.c:4828
msgid " -c Produce CSV output."
msgstr " -c CSV 出力を行ã†ã€‚"
-#: ppdc/ppdc.cxx:437
msgid " -c catalog.po Load the specified message catalog."
msgstr " -c catalog.po 指定ã—ãŸãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚«ã‚¿ãƒ­ã‚°ã‚’ロードã™ã‚‹ã€‚"
-#: scheduler/cupsfilter.c:1487
msgid " -c cups-files.conf Set cups-files.conf file to use."
msgstr " -c cups-files.conf cups-files.conf を利用ã™ã‚‹ã‚ˆã†è¨­å®šã™ã‚‹ã€‚"
-#: scheduler/main.c:2147
msgid " -c cupsd.conf Set cupsd.conf file to use."
msgstr " -c cupsd.conf 使用ã™ã‚‹ cupsd.conf ファイルを指定ã™ã‚‹ã€‚"
-#: test/ippdiscover.c:819
msgid " -d domain Browse/resolve in specified domain."
msgstr " -d <ドメインå> 指定ã•ã‚ŒãŸãƒ‰ãƒ¡ã‚¤ãƒ³ã§ãƒ–ラウズ/åå‰è§£æ±ºã™ã‚‹ã€‚"
-#: test/ipptool.c:4829
msgid " -d name=value Set named variable to value."
msgstr ""
" -d name=value name ã§æŒ‡å®šã•ã‚ŒãŸå¤‰æ•°ã«å€¤ value をセットã™ã‚‹ã€‚"
-#: ppdc/ppdc.cxx:439
msgid " -d output-dir Specify the output directory."
msgstr " -d output-dir 出力先ディレクトリーを指定ã™ã‚‹ã€‚"
-#: scheduler/cupsfilter.c:1488
msgid " -d printer Use the named printer."
msgstr " -d printer 指定ã•ã‚ŒãŸãƒ—リンターを利用ã™ã‚‹ã€‚"
-#: test/ippfind.c:2757
msgid " -d regex Match domain to regular expression."
msgstr " -d <æ­£è¦è¡¨ç¾> ドメインãŒæ­£è¦è¡¨ç¾ã«ãƒžãƒƒãƒã™ã‚‹ã‹ã€‚"
-#: scheduler/cupsfilter.c:1489
msgid " -e Use every filter from the PPD file."
msgstr ""
" -e PPD ファイルã‹ã‚‰ã™ã¹ã¦ã®ãƒ•ã‚£ãƒ«ã‚¿ãƒ¼ã‚’使用ã™ã‚‹ã€‚"
-#: scheduler/main.c:2148
msgid " -f Run in the foreground."
msgstr " -f フォアグラウンドã§å®Ÿè¡Œã™ã‚‹ã€‚"
-#: test/ipptool.c:4831
msgid " -f filename Set default request filename."
msgstr " -f filename デフォルトã®ãƒªã‚¯ã‚¨ã‚¹ãƒˆãƒ•ã‚¡ã‚¤ãƒ«åを指定ã™ã‚‹ã€‚"
-#: scheduler/main.c:2151
msgid " -h Show this usage message."
msgstr " -h ã“ã®ãƒ˜ãƒ«ãƒ—メッセージを表示ã™ã‚‹ã€‚"
-#: test/ippfind.c:2758
msgid " -h regex Match hostname to regular expression."
msgstr " -h <æ­£è¦è¡¨ç¾> ホストåãŒæ­£è¦è¡¨ç¾ã«ãƒžãƒƒãƒã™ã‚‹ã‹ã€‚"
-#: systemv/cupsaddsmb.c:290 systemv/cupsctl.c:207
msgid " -h server[:port] Specify server address."
msgstr " -h server[:port] サーãƒãƒ¼ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’指定ã™ã‚‹ã€‚"
-#: scheduler/cupsfilter.c:1490
msgid " -i mime/type Set input MIME type (otherwise auto-typed)."
msgstr ""
" -i mime/type 入力㮠MIME タイプを指定ã™ã‚‹ (指定ãŒãªã‘ã‚Œã°è‡ªå‹•ã‚¿"
"イプ)。"
-#: test/ipptool.c:4833
msgid ""
" -i seconds Repeat the last file with the given time interval."
msgstr ""
" -i seconds 最後ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’与ãˆã‚‰ã‚ŒãŸæ™‚é–“é–“éš”ã§ç¹°ã‚Šè¿”ã™ã€‚"
-#: scheduler/cupsfilter.c:1491
msgid ""
" -j job-id[,N] Filter file N from the specified job (default is "
"file 1)."
@@ -1473,139 +1203,107 @@ msgstr ""
" -j job-id[,N] フィルターファイル N を指定ã•ã‚ŒãŸã‚¸ãƒ§ãƒ–ã‹ã‚‰ä½¿ç”¨ã™"
"る (デフォルト㯠ファイル 1)。"
-#: test/ippfind.c:2759
msgid " -l List attributes."
msgstr " -l 属性ã®ä¸€è¦§ã‚’表示ã™ã‚‹ã€‚"
-#: test/ipptool.c:4835
msgid " -l Produce plain text output."
msgstr " -l プレーンテキスト出力を行ã†ã€‚"
-#: scheduler/main.c:2152
msgid " -l Run cupsd on demand."
msgstr " -l cupsd をオンデマンドã§å®Ÿè¡Œã™ã‚‹ã€‚"
-#: ppdc/ppdc.cxx:441
msgid " -l lang[,lang,...] Specify the output language(s) (locale)."
msgstr " -l lang[,lang,...] 出力言語を指定ã™ã‚‹ã€‚(複数å¯èƒ½)"
-#: ppdc/ppdc.cxx:443
msgid " -m Use the ModelName value as the filename."
msgstr " -m ModelName ã®å€¤ã‚’ファイルåã¨ã—ã¦ä½¿ç”¨ã™ã‚‹ã€‚"
-#: scheduler/cupsfilter.c:1492
msgid ""
" -m mime/type Set output MIME type (otherwise application/pdf)."
msgstr ""
" -m mime/type 出力㮠MIME タイプを指定ã™ã‚‹ (指定ãŒãªã‘れ㰠"
"application/pdf)。"
-#: scheduler/cupsfilter.c:1493
msgid " -n copies Set number of copies."
msgstr " -n copies 部数を指定ã™ã‚‹ã€‚"
-#: test/ipptool.c:4836
msgid ""
" -n count Repeat the last file the given number of times."
msgstr " -n count 最後ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’与ãˆã‚‰ã‚ŒãŸå›žæ•°ã ã‘ç¹°ã‚Šè¿”ã™ã€‚"
-#: test/ippfind.c:2760
msgid " -n regex Match service name to regular expression."
msgstr " -n <æ­£è¦è¡¨ç¾> サービスåãŒæ­£è¦è¡¨ç¾ã¨ãƒžãƒƒãƒã™ã‚‹ã‹ã€‚"
-#: ppdc/ppdi.cxx:133
msgid ""
" -o filename.drv Set driver information file (otherwise ppdi.drv)."
msgstr ""
" -o filename.drv ドライãƒãƒ¼æƒ…報ファイルを指定ã™ã‚‹ (指定ãŒãªã‘れ㰠"
"ppdi.drv)。"
-#: ppdc/ppdmerge.cxx:364
msgid " -o filename.ppd[.gz] Set output file (otherwise stdout)."
msgstr ""
" -o filename.ppd[.gz] 出力ファイルを指定ã™ã‚‹ (指定ãŒãªã‘ã‚Œã°æ¨™æº–出力)。"
-#: scheduler/cupsfilter.c:1494
msgid " -o name=value Set option(s)."
msgstr " -o name=value オプションを指定ã™ã‚‹ã€‚"
-#: test/ippfind.c:2761
msgid " -p Print URI if true."
msgstr " -p çµæžœãŒçœŸãªã‚‰ URI を表示ã™ã‚‹ã€‚"
-#: scheduler/cupsfilter.c:1495
msgid " -p filename.ppd Set PPD file."
msgstr " -p filename.ppd PPD ファイルを指定ã™ã‚‹ã€‚"
-#: test/ippdiscover.c:820
msgid " -p program Run specified program for each service."
msgstr ""
" -p <プログラムå> 指定ã•ã‚ŒãŸãƒ—ログラムをãã‚Œãžã‚Œã®ã‚µãƒ¼ãƒ“スã«å¯¾ã—実行"
"ã™ã‚‹ã€‚"
-#: test/ippfind.c:2762
msgid " -q Quietly report match via exit code."
msgstr ""
" -q マッãƒçµæžœã‚’終了コードã§å ±å‘Šã—ã€å‡ºåŠ›ã‚’ã—ãªã„。"
-#: systemv/cupstestppd.c:3826 test/ipptool.c:4838
msgid " -q Run silently."
msgstr " -q 詳細ã¯è¡¨ç¤ºã—ãªã„。"
-#: test/ippfind.c:2763
msgid " -r True if service is remote."
msgstr " -r サービスãŒãƒªãƒ¢ãƒ¼ãƒˆãªã‚‰çœŸã€‚"
-#: systemv/cupstestppd.c:3827
msgid " -r Use 'relaxed' open mode."
msgstr " -r 寛容モードを用ã„る。"
-#: test/ippfind.c:2764
msgid " -s Print service name if true."
msgstr " -s çµæžœãŒçœŸãªã‚‰ã‚µãƒ¼ãƒ“スåを表示ã™ã‚‹ã€‚"
-#: test/ipptool.c:4839
msgid " -t Produce a test report."
msgstr " -t テストリãƒãƒ¼ãƒˆã‚’出力ã™ã‚‹ã€‚"
-#: ppdc/ppdc.cxx:445
msgid " -t Test PPDs instead of generating them."
msgstr " -t PPD を出力ã—ãªã„ã§ãƒ†ã‚¹ãƒˆã™ã‚‹ã€‚"
-#: scheduler/main.c:2153
msgid " -t Test the configuration file."
msgstr " -t 設定ファイルをテストã™ã‚‹ã€‚"
-#: test/ippfind.c:2765
msgid " -t key True if the TXT record contains the key."
msgstr " -t <キーå> TXT レコードãŒã‚­ãƒ¼åã‚’å«ã‚“ã§ã„ãŸã‚‰çœŸã€‚"
-#: scheduler/cupsfilter.c:1496
msgid " -t title Set title."
msgstr " -t title タイトルを指定ã™ã‚‹ã€‚"
-#: test/ippdiscover.c:821
msgid " -t type Browse/resolve with specified type."
msgstr " -t タイプ 指定ã•ã‚ŒãŸã‚¿ã‚¤ãƒ—ã§ãƒ–ラウズ/åå‰è§£æ±ºã™ã‚‹ã€‚"
-#: scheduler/cupsfilter.c:1497
msgid " -u Remove the PPD file when finished."
msgstr " -u 終了ã—ãŸã¨ãã« PPD ファイルを削除ã™ã‚‹ã€‚"
-#: test/ippfind.c:2766
msgid " -u regex Match URI to regular expression."
msgstr " -u <æ­£è¦è¡¨ç¾> URI ãŒæ­£è¦è¡¨ç¾ã¨ãƒžãƒƒãƒã™ã‚‹ã‹ã€‚"
-#: 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 冗長出力を行ã†ã€‚"
-#: systemv/cupstestppd.c:3829
msgid " -vv Be very verbose."
msgstr " -vv より冗長ãªå‡ºåŠ›ã‚’è¡Œã†ã€‚"
-#: test/ippfind.c:2767
msgid ""
" -x utility [argument ...] ;\n"
" Execute program if true."
@@ -1613,15 +1311,12 @@ msgstr ""
" -x <実行ファイルå> [引数 ...] ;\n"
" æˆåŠŸã—ãŸå ´åˆã€<実行ファイルå> を実行ã™ã‚‹ã€‚"
-#: ppdc/ppdc.cxx:448
msgid " -z Compress PPD files using GNU zip."
msgstr " -z PPD ファイルを GNU zip を使ã£ã¦åœ§ç¸®ã™ã‚‹ã€‚"
-#: test/ippfind.c:2810
msgid " IPPFIND_SERVICE_DOMAIN Domain name"
msgstr " IPPFIND_SERVICE_DOMAIN ドメインå"
-#: test/ippfind.c:2811
msgid ""
" IPPFIND_SERVICE_HOSTNAME\n"
" Fully-qualified domain name"
@@ -1629,178 +1324,98 @@ msgstr ""
" IPPFIND_SERVICE_HOSTNAME\n"
" 完全修飾ドメインå (FQDN)"
-#: test/ippfind.c:2813
msgid " IPPFIND_SERVICE_NAME Service instance name"
msgstr " IPPFIND_SERVICE_NAME サービスインスタンスå"
-#: test/ippfind.c:2814
msgid " IPPFIND_SERVICE_PORT Port number"
msgstr " IPPFIND_SERVICE_PORT ãƒãƒ¼ãƒˆç•ªå·"
-#: test/ippfind.c:2815
msgid " IPPFIND_SERVICE_REGTYPE DNS-SD registration type"
msgstr " IPPFIND_SERVICE_REGTYPE DNS-SD 登録タイプ"
-#: test/ippfind.c:2816
msgid " IPPFIND_SERVICE_SCHEME URI scheme"
msgstr " IPPFIND_SERVICE_SCHEME URI スキーム"
-#: test/ippfind.c:2817
msgid " IPPFIND_SERVICE_URI URI"
msgstr " IPPFIND_SERVICE_URI URI"
-#: test/ippfind.c:2818
msgid " IPPFIND_TXT_* Value of TXT record key"
msgstr " IPPFIND_TXT_* TXT レコードキーã®å€¤"
-#: test/ippfind.c:2793
msgid ""
" expression --and expression\n"
" Logical AND."
msgstr " <å¼> --and <å¼> è«–ç† AND。"
-#: test/ippfind.c:2795
msgid ""
" expression --or expression\n"
" Logical OR."
msgstr " <å¼> --or <å¼> è«–ç† OR。"
-#: test/ippfind.c:2792
msgid " expression expression Logical AND."
msgstr " <å¼> <å¼> è«–ç† AND。"
-#: test/ippfind.c:2800
msgid " {service_domain} Domain name"
msgstr " {service_domain} ドメインå"
-#: test/ippfind.c:2801
msgid " {service_hostname} Fully-qualified domain name"
msgstr " {service_hostname} 完全修飾ドメインå (FQDN)"
-#: test/ippfind.c:2802
msgid " {service_name} Service instance name"
msgstr " {service_name} サービスインスタンスå"
-#: test/ippfind.c:2803
msgid " {service_port} Port number"
msgstr " {service_port} ãƒãƒ¼ãƒˆç•ªå·"
-#: test/ippfind.c:2804
msgid " {service_regtype} DNS-SD registration type"
msgstr " {service_regtype} DNS-SD 登録タイプ"
-#: test/ippfind.c:2805
msgid " {service_scheme} URI scheme"
msgstr " {service_scheme} URI スキーム"
-#: test/ippfind.c:2806
msgid " {service_uri} URI"
msgstr " {service_uri} URI"
-#: test/ippfind.c:2807
msgid " {txt_*} Value of TXT record key"
msgstr " {txt_*} TXT レコードキーã®å€¤"
-#: test/ippfind.c:2799
msgid " {} URI"
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 " 失敗"
-#: systemv/cupstestppd.c:1306
msgid " PASS"
msgstr " åˆæ ¼"
-#: cups/ipp.c:5227
#, c-format
msgid "\"%s\": Bad URI value \"%s\" - %s (RFC 2911 section 4.1.5)."
msgstr "\"%s\": URI ã®å€¤ \"%s\" ãŒèª¤ã£ã¦ã„ã¾ã™ - %s (RFC 2911 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\": URI ã®å€¤ \"%s\" ãŒèª¤ã£ã¦ã„ã¾ã™ - é•·ã•ã®èª¤ã‚Š %d (RFC 2911 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\": 属性åãŒèª¤ã£ã¦ã„ã¾ã™ - é•·ã•ã®èª¤ã‚Š %d (RFC 2911 4.1.3 節)。"
-#: cups/ipp.c:4850
#, c-format
msgid ""
"\"%s\": Bad attribute name - invalid character (RFC 2911 section 4.1.3)."
msgstr "\"%s\": 属性åãŒèª¤ã£ã¦ã„ã¾ã™ - ä¸æ­£ãªæ–‡å­— (RFC 2911 4.1.3 節)。"
-#: cups/ipp.c:4876
#, c-format
msgid "\"%s\": Bad boolen value %d (RFC 2911 section 4.1.11)."
msgstr "\"%s\": 真å½å€¤ %d ãŒèª¤ã£ã¦ã„ã¾ã™ (RFC 2911 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\": charset ã®å€¤ \"%s\" ãŒèª¤ã£ã¦ã„ã¾ã™ - ä¸æ­£ãªæ–‡å­— (RFC 2911 4.1.7 節)。"
-#: cups/ipp.c:5299
#, c-format
msgid ""
"\"%s\": Bad charset value \"%s\" - bad length %d (RFC 2911 section 4.1.7)."
@@ -1808,67 +1423,55 @@ msgstr ""
"\"%s\": charset ã®å€¤ \"%s\" ãŒèª¤ã£ã¦ã„ã¾ã™ - ä¸æ­£ãªé•·ã• %d (RFC 2911 section "
"4.1.7)."
-#: cups/ipp.c:4976
#, c-format
msgid "\"%s\": Bad dateTime UTC hours %u (RFC 2911 section 4.1.14)."
msgstr ""
"\"%s\": dateTime UTC ã®æ™‚間指定 %u ãŒèª¤ã£ã¦ã„ã¾ã™ (RFC 2911 4.1.14 節)."
-#: cups/ipp.c:4984
#, c-format
msgid "\"%s\": Bad dateTime UTC minutes %u (RFC 2911 section 4.1.14)."
msgstr "\"%s\": dateTime UTC ã®åˆ†æŒ‡å®š %u ãŒèª¤ã£ã¦ã„ã¾ã™ (RFC 2911 4.1.14 節)。"
-#: cups/ipp.c:4968
#, c-format
msgid "\"%s\": Bad dateTime UTC sign '%c' (RFC 2911 section 4.1.14)."
msgstr ""
"\"%s\": dateTime UTC ã®ç¬¦å·æŒ‡å®š '%c' ãŒèª¤ã£ã¦ã„ã¾ã™ (RFC 2911 4.1.14 節)。"
-#: cups/ipp.c:4928
#, c-format
msgid "\"%s\": Bad dateTime day %u (RFC 2911 section 4.1.14)."
msgstr "\"%s\": dateTime ã®æ—¥ä»˜æŒ‡å®š %u ãŒèª¤ã£ã¦ã„ã¾ã™ (RFC 2911 4.1.14 節)."
-#: cups/ipp.c:4960
#, c-format
msgid "\"%s\": Bad dateTime deciseconds %u (RFC 2911 section 4.1.14)."
msgstr ""
"\"%s\": dateTime ã® 0.1 秒ã®æŒ‡å®š %u ãŒèª¤ã£ã¦ã„ã¾ã™ (RFC 2911 4.1.14 節)。"
-#: cups/ipp.c:4936
#, c-format
msgid "\"%s\": Bad dateTime hours %u (RFC 2911 section 4.1.14)."
msgstr "\"%s\": dateTime ã®æ™‚間指定 %u ãŒèª¤ã£ã¦ã„ã¾ã™ (RFC 2911 4.1.14 節)。"
-#: cups/ipp.c:4944
#, c-format
msgid "\"%s\": Bad dateTime minutes %u (RFC 2911 section 4.1.14)."
msgstr "\"%s\": dateTime ã®åˆ†æŒ‡å®šãŒèª¤ã£ã¦ã„ã¾ã™ %u (RFC 2911 4.1.14 節)。"
-#: cups/ipp.c:4920
#, c-format
msgid "\"%s\": Bad dateTime month %u (RFC 2911 section 4.1.14)."
msgstr "\"%s\": dateTime ã®æœˆæŒ‡å®š %u ãŒèª¤ã£ã¦ã„ã¾ã™ (RFC 2911 4.1.14 節)。"
-#: cups/ipp.c:4952
#, c-format
msgid "\"%s\": Bad dateTime seconds %u (RFC 2911 section 4.1.14)."
msgstr "\"%s\": 日時ã®ç§’指定 %u ãŒèª¤ã£ã¦ã„ã¾ã™ (RFC 2911 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\": enum ã®å€¤ %d ãŒèª¤ã£ã¦ã„ã¾ã™ - 範囲外ã®å€¤ (RFC 2911 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\": keyword ã®å€¤ \"%s\" ãŒèª¤ã£ã¦ã„ã¾ã™ - %d (RFC 2911 section 4.1.3)."
-#: cups/ipp.c:5196
#, c-format
msgid ""
"\"%s\": Bad keyword value \"%s\" - invalid character (RFC 2911 section "
@@ -1876,7 +1479,6 @@ msgid ""
msgstr ""
"\"%s\": keyword ã®å€¤ \"%s\" ãŒèª¤ã£ã¦ã„ã¾ã™ - ä¸æ­£ãªæ–‡å­— (RFC 2911 4.1.3 節)。"
-#: cups/ipp.c:5399
#, c-format
msgid ""
"\"%s\": Bad mimeMediaType value \"%s\" - bad characters (RFC 2911 section "
@@ -1885,7 +1487,6 @@ msgstr ""
"\"%s\": mimeMediaType ã®å€¤ \"%s\" ãŒèª¤ã£ã¦ã„ã¾ã™ - 誤ã£ãŸæ–‡å­— (RFC 2911 "
"4.1.9 節)。"
-#: cups/ipp.c:5409
#, c-format
msgid ""
"\"%s\": Bad mimeMediaType value \"%s\" - bad length %d (RFC 2911 section "
@@ -1894,7 +1495,6 @@ msgstr ""
"\"%s\": mimeMediaType ã®å€¤ \"%s\" ãŒèª¤ã£ã¦ã„ã¾ã™ - é•·ã•ã®èª¤ã‚Š %d (RFC 2911 "
"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)."
@@ -1902,14 +1502,12 @@ msgstr ""
"\"%s\": name ã®å€¤ \"%s\" ãŒèª¤ã£ã¦ã„ã¾ã™ - UTF-8 ã¨ã—ã¦èª¤ã£ãŸä¸¦ã³ (RFC 2911 "
"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\": name ã®å€¤ \"%s\" ãŒèª¤ã£ã¦ã„ã¾ã™ - 誤ã£ãŸé•·ã• %d (RFC 2911 section "
"4.1.2)。"
-#: cups/ipp.c:5345
#, c-format
msgid ""
"\"%s\": Bad naturalLanguage value \"%s\" - bad characters (RFC 2911 section "
@@ -1918,7 +1516,6 @@ msgstr ""
"\"%s\": naturalLanguage ã®å€¤ \"%s\" ãŒèª¤ã£ã¦ã„ã¾ã™ - 誤ã£ãŸæ–‡å­— (RFC 2911 "
"4.1.8 節)。"
-#: cups/ipp.c:5355
#, c-format
msgid ""
"\"%s\": Bad naturalLanguage value \"%s\" - bad length %d (RFC 2911 section "
@@ -1927,14 +1524,12 @@ msgstr ""
"\"%s\": naturalLanguage ã®å€¤ \"%s\" ãŒèª¤ã£ã¦ã„ã¾ã™ - 誤ã£ãŸé•·ã• %d (RFC 2911 "
"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\": octetString 値ãŒèª¤ã£ã¦ã„ã¾ã™ - 誤ã£ãŸé•·ã• %d (RFC 2911 4.1.10 節)。"
-#: cups/ipp.c:5047
#, c-format
msgid ""
"\"%s\": Bad rangeOfInteger value %d-%d - lower greater than upper (RFC 2911 "
@@ -1943,7 +1538,6 @@ msgstr ""
"\"%s\": rangeOfInteger ã®å€¤ %d-%d ãŒèª¤ã£ã¦ã„ã¾ã™ - 下é™ãŒä¸Šé™ã‚ˆã‚Šã‚‚大ãã„ "
"(RFC 2911 4.1.13 節)。"
-#: cups/ipp.c:5028
#, c-format
msgid ""
"\"%s\": Bad resolution value %dx%d%s - bad units value (RFC 2911 section "
@@ -1952,14 +1546,14 @@ msgstr ""
"\"%s\": resolution ã®å€¤ %dx%d%s ãŒèª¤ã£ã¦ã„ã¾ã™ - å˜ä½å€¤ã®èª¤ã‚Š (RFC 2911 "
"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\": resolution ã®å€¤ %dx%d%s ãŒèª¤ã£ã¦ã„ã¾ã™ - 主走査解åƒåº¦ãŒè²  (RFC 2911 4.1.15 節)。"
+msgstr ""
+"\"%s\": resolution ã®å€¤ %dx%d%s ãŒèª¤ã£ã¦ã„ã¾ã™ - 主走査解åƒåº¦ãŒè²  (RFC 2911 "
+"4.1.15 節)。"
-#: cups/ipp.c:5012
#, c-format
msgid ""
"\"%s\": Bad resolution value %dx%d%s - feed resolution must be positive (RFC "
@@ -1968,7 +1562,6 @@ msgstr ""
"\"%s\": resolution ã®å€¤ %dx%d%s ãŒèª¤ã£ã¦ã„ã¾ã™ - 副走査解åƒåº¦ãŒè²  (RFC 2911 "
"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)."
@@ -1976,13 +1569,11 @@ msgstr ""
"\"%s\": text ã®å€¤ \"%s\" ãŒèª¤ã£ã¦ã„ã¾ã™ - UTF-8 ã¨ã—ã¦èª¤ã£ãŸä¸¦ã³ (RFC 2911 "
"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\": text ã®å€¤ \"%s\" ãŒèª¤ã£ã¦ã„ã¾ã™ - ä¸æ­£ãªé•·ã• %d (RFC 2911 4.1.1 節)。"
-#: cups/ipp.c:5261
#, c-format
msgid ""
"\"%s\": Bad uriScheme value \"%s\" - bad characters (RFC 2911 section 4.1.6)."
@@ -1990,276 +1581,218 @@ msgstr ""
"\"%s\": uriScheme ã®å€¤ \"%s\" ãŒèª¤ã£ã¦ã„ã¾ã™ - 誤ã£ãŸæ–‡å­— (RFC 2911 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\": uriScheme ã®å€¤ \"%s\" ãŒèª¤ã£ã¦ã„ã¾ã™ - ä¸æ­£ãªé•·ã• %d (RFC 2911 4.1.6 節)."
+msgstr ""
+"\"%s\": uriScheme ã®å€¤ \"%s\" ãŒèª¤ã£ã¦ã„ã¾ã™ - ä¸æ­£ãªé•·ã• %d (RFC 2911 4.1.6 "
+"節)."
-#: berkeley/lpq.c:533
#, c-format
msgid "%-7s %-7.7s %-7d %-31.31s %.0f bytes"
msgstr "%-7s %-7.7s %-7d %-31.31s %.0f ãƒã‚¤ãƒˆ"
-#: 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 (ãµã¡ãªã—)"
-#: cups/dest-localization.c:167 cups/dest-localization.c:174
#, c-format
msgid "%s (Borderless, %s)"
msgstr "%s (ãµã¡ãªã—, %s)"
-#: cups/dest-localization.c:181
#, c-format
msgid "%s (Borderless, %s, %s)"
msgstr "%s (ãµã¡ãªã—, %s, %s)"
-#: systemv/lpstat.c:777
#, c-format
msgid "%s accepting requests since %s"
msgstr "%s 㯠%s ã‹ã‚‰ãƒªã‚¯ã‚¨ã‚¹ãƒˆã‚’å—ã‘付ã‘ã¦ã„ã¾ã™"
-#: scheduler/ipp.c:9952
#, c-format
msgid "%s cannot be changed."
msgstr "%s ã¯å¤‰æ›´ã§ãã¾ã›ã‚“。"
-#: berkeley/lpc.c:181
#, c-format
msgid "%s is not implemented by the CUPS version of lpc."
msgstr "%s 㯠lpc ã® CUPS ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã§ã¯å®Ÿè£…ã•ã‚Œã¦ã„ã¾ã›ã‚“。"
-#: berkeley/lpq.c:618
#, c-format
msgid "%s is not ready"
msgstr "%s ã¯æº–å‚™ãŒã§ãã¦ã„ã¾ã›ã‚“"
-#: berkeley/lpq.c:611
#, c-format
msgid "%s is ready"
msgstr "%s ã¯æº–å‚™ãŒã§ãã¦ã„ã¾ã™"
-#: berkeley/lpq.c:614
#, c-format
msgid "%s is ready and printing"
msgstr "%s ã¯æº–å‚™ãŒã§ãã¦ãŠã‚Šå°åˆ·ã—ã¦ã„ã¾ã™"
-#: 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 ジョブID ユーザー タイトル コピー数 オプション [ファイル]"
-#: systemv/lpstat.c:781
#, c-format
msgid "%s not accepting requests since %s -"
msgstr "%s 㯠%s ã‹ã‚‰ãƒªã‚¯ã‚¨ã‚¹ãƒˆã‚’å—ã‘付ã‘ã¦ã„ã¾ã›ã‚“ -"
-#: scheduler/ipp.c:618
#, c-format
msgid "%s not supported."
msgstr "%s ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“。"
-#: systemv/lpstat.c:792
#, c-format
msgid "%s/%s accepting requests since %s"
msgstr "%s/%s 㯠%s ã‹ã‚‰ãƒªã‚¯ã‚¨ã‚¹ãƒˆã‚’å—ã‘付ã‘ã¦ã„ã¾ã™"
-#: systemv/lpstat.c:797
#, c-format
msgid "%s/%s not accepting requests since %s -"
msgstr "%s/%s 㯠%s ã‹ã‚‰ãƒªã‚¯ã‚¨ã‚¹ãƒˆã‚’å—ã‘付ã‘ã¦ã„ã¾ã›ã‚“ - "
-#: berkeley/lpq.c:526
#, c-format
msgid "%s: %-33.33s [job %d localhost]"
msgstr "%s:%-33.33s [ジョブ %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 ã«å¤±æ•—ã—ã¾ã—ãŸ: %s"
-#: test/ippfind.c:777 test/ipptool.c:378
+#, c-format
+msgid "%s: Bad printer URI \"%s\"."
+msgstr ""
+
#, c-format
msgid "%s: Bad version %s for \"-V\"."
msgstr "%s: -V オプションã«ãŠã„㦠%s ã¯ä¸æ­£ãªãƒãƒ¼ã‚¸ãƒ§ãƒ³ã§ã™ã€‚"
-#: systemv/cupsaccept.c:68
#, c-format
msgid "%s: Don't know what to do."
msgstr "%s: 何ãŒèµ·ãã¦ã„ã‚‹ã‹ä¸æ˜Žã§ã™ã€‚"
-#: 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: エラー - 環境変数 %s ãŒå­˜åœ¨ã—ãªã„宛先 \"%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 "%s: エラー - '/version=1.1' をサーãƒãƒ¼åã«ä»˜ä¸Žã—ã¦ãã ã•ã„。"
-#: systemv/lp.c:234
#, c-format
msgid "%s: Error - bad job ID."
msgstr "%s: エラー - ä¸æ­£ãªã‚¸ãƒ§ãƒ– ID ã§ã™ã€‚"
-#: systemv/lp.c:222
#, c-format
msgid "%s: Error - cannot print files and alter jobs simultaneously."
msgstr ""
"%s: エラー - ファイルをå°åˆ·ã§ããšã€ã‚¸ãƒ§ãƒ–ã‚’åŒæ™‚ã«å¤‰ãˆã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。"
-#: systemv/lp.c:515
#, c-format
msgid "%s: Error - cannot print from stdin if files or a job ID are provided."
msgstr ""
"%s: エラー - ファイルã¾ãŸã¯ã‚¸ãƒ§ãƒ– ID ãŒæä¾›ã•ã‚Œã¦ã„ã‚‹å ´åˆã€æ¨™æº–入力ã‹ã‚‰å°åˆ·ã§"
"ãã¾ã›ã‚“。 "
-#: systemv/lp.c:464
#, c-format
msgid "%s: Error - expected character set after \"-S\" option."
msgstr "%s: エラー - \"-S\" オプションã®ã‚ã¨ã«ã¯æ–‡å­—セットãŒå¿…è¦ã§ã™ã€‚"
-#: systemv/lp.c:483
#, c-format
msgid "%s: Error - expected content type after \"-T\" option."
msgstr "%s: エラー - \"-T\" オプションã®ã‚ã¨ã«ã¯ã‚³ãƒ³ãƒ†ãƒ³ãƒ„タイプãŒå¿…è¦ã§ã™ã€‚"
-#: berkeley/lpr.c:245
#, c-format
msgid "%s: Error - expected copies after \"-#\" option."
msgstr "%s: エラー - \"-#\" オプションã®ã‚ã¨ã«ã¯ã‚³ãƒ”ー数ãŒå¿…è¦ã§ã™ã€‚"
-#: systemv/lp.c:267
#, c-format
msgid "%s: Error - expected copies after \"-n\" option."
msgstr "%s: エラー - \"-n\" オプションã®ã‚ã¨ã«ã¯ã‚³ãƒ”ー数ãŒå¿…è¦ã§ã™ã€‚"
-#: berkeley/lpr.c:206
#, c-format
msgid "%s: Error - expected destination after \"-P\" option."
msgstr "%s: エラー - \"-P\" オプションã®ã‚ã¨ã«ã¯å®›å…ˆãŒå¿…è¦ã§ã™ã€‚"
-#: systemv/lp.c:132
#, c-format
msgid "%s: Error - expected destination after \"-d\" option."
msgstr "%s: エラー - \"-d\" オプションã®ã‚ã¨ã«ã¯ãƒ—リンターåãŒå¿…è¦ã§ã™ã€‚"
-#: systemv/lp.c:171
#, c-format
msgid "%s: Error - expected form after \"-f\" option."
msgstr "%s: エラー - \"-f\" オプションã®ã‚ã¨ã«ã¯ç”¨ç´™åãŒå¿…è¦ã§ã™ã€‚"
-#: systemv/lp.c:394
#, c-format
msgid "%s: Error - expected hold name after \"-H\" option."
msgstr "%s: エラー - \"-H\" オプションã®ã‚ã¨ã«ã¯ãƒ›ãƒ¼ãƒ«ãƒ‰åãŒå¿…è¦ã§ã™ã€‚"
-#: berkeley/lpr.c:100
#, c-format
msgid "%s: Error - expected hostname after \"-H\" option."
msgstr "%s: エラー - \"-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: エラー - \"-h\" オプションã®ã‚ã¨ã«ã¯ãƒ›ã‚¹ãƒˆåãŒå¿…è¦ã§ã™ã€‚"
-#: systemv/lp.c:374
#, c-format
msgid "%s: Error - expected mode list after \"-y\" option."
msgstr "%s: エラー - \"-y\" オプションã®ã‚ã¨ã«ã¯ãƒ¢ãƒ¼ãƒ‰ãƒªã‚¹ãƒˆãŒå¿…è¦ã§ã™ã€‚"
-#: berkeley/lpr.c:268
#, c-format
msgid "%s: Error - expected name after \"-%c\" option."
msgstr "%s: エラー - \"-%c\" オプションã®ã‚ã¨ã«ã¯åå‰ãŒå¿…è¦ã§ã™ã€‚"
-#: berkeley/lpr.c:150 systemv/lp.c:291
#, c-format
msgid "%s: Error - expected option=value after \"-o\" option."
msgstr "%s: エラー - \"-o\" オプションã®ã‚ã¨ã«ã¯ オプション=値 ãŒå¿…è¦ã§ã™ã€‚"
-#: systemv/lp.c:444
#, c-format
msgid "%s: Error - expected page list after \"-P\" option."
msgstr "%s: エラー - \"-P\" オプションã®ã‚ã¨ã«ã¯ãƒšãƒ¼ã‚¸ãƒªã‚¹ãƒˆãŒå¿…è¦ã§ã™ã€‚"
-#: systemv/lp.c:311
#, c-format
msgid "%s: Error - expected priority after \"-%c\" option."
msgstr "%s: エラー - \"-%c\" オプションã®ã‚ã¨ã«ã¯å„ªå…ˆåº¦ãŒå¿…è¦ã§ã™ã€‚"
-#: systemv/cupsaccept.c:141
#, c-format
msgid "%s: Error - expected reason text after \"-r\" option."
msgstr "%s: エラー - \"-r\" ã®ã‚ã¨ã«ã¯ç†ç”±ã®ãƒ†ã‚­ã‚¹ãƒˆãŒå¿…è¦ã§ã™ã€‚"
-#: systemv/lp.c:357
#, c-format
msgid "%s: Error - expected title after \"-t\" option."
msgstr "%s: エラー - \"-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: エラー - \"-U\" オプションã®ã‚ã¨ã«ã¯ãƒ¦ãƒ¼ã‚¶ãƒ¼åãŒå¿…è¦ã§ã™ã€‚"
-#: systemv/cancel.c:145
#, c-format
msgid "%s: Error - expected username after \"-u\" option."
msgstr "%s: エラー - \"-u\" オプションã®ã‚ã¨ã«ã¯ãƒ¦ãƒ¼ã‚¶ãƒ¼åãŒå¿…è¦ã§ã™ã€‚"
-#: berkeley/lpr.c:122
#, c-format
msgid "%s: Error - expected value after \"-%c\" option."
msgstr "%s: エラー - \"-%c\" オプションã®ã‚ã¨ã«ã¯å€¤ãŒå¿…è¦ã§ã™ã€‚"
-#: systemv/lpstat.c:144 systemv/lpstat.c:158
#, c-format
msgid ""
"%s: Error - need \"completed\", \"not-completed\", or \"all\" after \"-W\" "
@@ -2268,178 +1801,151 @@ msgstr ""
"%s: エラー - \"-W\" オプションã®ã‚ã¨ã«ã¯ã€\"completed\"ã€\"not-completed"
"\"ã€\"all\" ã®ã„ãšã‚Œã‹ãŒå¿…è¦ã§ã™ã€‚"
-#: berkeley/lpq.c:230 berkeley/lpr.c:363 systemv/lp.c:607
#, c-format
msgid "%s: Error - no default destination available."
msgstr "%s: エラー - 利用å¯èƒ½ãªãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®å®›å…ˆãŒã‚ã‚Šã¾ã›ã‚“。"
-#: systemv/lp.c:333
#, c-format
msgid "%s: Error - priority must be between 1 and 100."
msgstr "%s: エラー - 優先度㯠1 ã‹ã‚‰ 100 ã®é–“ã§ã‚ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚"
-#: berkeley/lpr.c:366 systemv/lp.c:610
#, c-format
msgid "%s: Error - scheduler not responding."
msgstr "%s: エラー - スケジューラーãŒå¿œç­”ã—ã¦ã„ã¾ã›ã‚“。"
-#: berkeley/lpr.c:311 systemv/lp.c:547
#, c-format
msgid "%s: Error - too many files - \"%s\"."
msgstr "%s: エラー - ファイルãŒå¤šã™ãŽã¾ã™ - \"%s\""
-#: berkeley/lpr.c:293 systemv/lp.c:530
#, c-format
msgid "%s: Error - unable to access \"%s\" - %s"
msgstr "%s: エラー - \"%s\" ã«ã‚¢ã‚¯ã‚»ã‚¹ã§ãã¾ã›ã‚“ - %s"
-#: berkeley/lpr.c:409 systemv/lp.c:641
#, c-format
msgid "%s: Error - unable to queue from stdin - %s."
msgstr "%s: エラー - 標準入力ã‹ã‚‰ã‚­ãƒ¥ãƒ¼ã«ãƒ‡ãƒ¼ã‚¿ã‚’入力ã§ãã¾ã›ã‚“。 - %s"
-#: berkeley/lprm.c:87 berkeley/lprm.c:172 systemv/cancel.c:222
#, c-format
msgid "%s: Error - unknown destination \"%s\"."
msgstr "%s: エラー - \"%s\" ã¯æœªçŸ¥ã®å®›å…ˆã§ã™ã€‚"
-#: berkeley/lpq.c:137
#, c-format
msgid "%s: Error - unknown destination \"%s/%s\"."
msgstr "%s: エラー - \"%s/%s\" ã¯æœªçŸ¥ã®å®›å…ˆã§ã™ã€‚"
-#: 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: エラー - '%c' ã¯æœªçŸ¥ã®ã‚ªãƒ—ションã§ã™ã€‚"
-#: systemv/cupsaccept.c:157 systemv/lp.c:497
#, c-format
msgid "%s: Error - unknown option \"%s\"."
msgstr "%s: エラー - '%s' ã¯æœªçŸ¥ã®ã‚ªãƒ—ションã§ã™ã€‚"
-#: systemv/lp.c:211
#, c-format
msgid "%s: Expected job ID after \"-i\" option."
msgstr "%s: '-i' オプションã®ã‚ã¨ã«ã¯ã‚¸ãƒ§ãƒ– ID ãŒå¿…è¦ã§ã™ã€‚"
-#: systemv/lpstat.c:514 systemv/lpstat.c:554
#, c-format
msgid "%s: Invalid destination name in list \"%s\"."
msgstr "%s: リスト \"%s\" ã«ç„¡åŠ¹ãªå®›å…ˆåãŒã‚ã‚Šã¾ã™ã€‚"
-#: scheduler/cupsfilter.c:579
#, c-format
msgid "%s: Invalid filter string \"%s\"."
msgstr "%s: 無効ãªãƒ•ã‚£ãƒ«ã‚¿ãƒ¼æ–‡å­—列ã§ã™ \"%s\""
-#: test/ipptool.c:309
#, c-format
msgid "%s: Missing filename for \"-P\"."
msgstr "%s: \"-P\" ã«ãƒ•ã‚¡ã‚¤ãƒ«åãŒã‚ã‚Šã¾ã›ã‚“。"
-#: test/ippfind.c:749 test/ipptool.c:346
#, c-format
msgid "%s: Missing timeout for \"-T\"."
msgstr "%s: \"-T\" オプションã«ã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆãŒè¨­å®šã•ã‚Œã¦ã„ã¾ã›ã‚“。"
-#: test/ippfind.c:762 test/ipptool.c:360
#, c-format
msgid "%s: Missing version for \"-V\"."
msgstr "%s: \"-V\" オプションã«ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®æŒ‡å®šãŒã‚ã‚Šã¾ã›ã‚“。"
-#: systemv/lp.c:421
#, c-format
msgid "%s: Need job ID (\"-i jobid\") before \"-H restart\"."
msgstr "%s: '-H restart' ã®å‰ã«ã¯ã‚¸ãƒ§ãƒ– ID ('-i ジョブID') ãŒå¿…è¦ã§ã™ã€‚"
-#: scheduler/cupsfilter.c:451
#, c-format
msgid "%s: No filter to convert from %s/%s to %s/%s."
msgstr "%s: %s/%s ã‹ã‚‰ %s/%s ã«å¤‰æ›ã™ã‚‹ãƒ•ã‚£ãƒ«ã‚¿ãƒ¼ãŒã‚ã‚Šã¾ã›ã‚“。"
-#: systemv/cupsaccept.c:198
#, c-format
msgid "%s: Operation failed: %s"
msgstr "%s: æ“作ã«å¤±æ•—ã—ã¾ã—ãŸ: %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: 残念ãªãŒã‚‰ã€æš—å·åŒ–サãƒãƒ¼ãƒˆã¯ã‚³ãƒ³ãƒ‘イル時ã«çµ„ã¿è¾¼ã¾ã‚Œã¦ã„ã¾ã›ã‚“。"
-#: 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 \"%s:%d\": %s"
+msgstr ""
+
#, c-format
msgid "%s: Unable to connect to server."
msgstr "%s: サーãƒãƒ¼ã«æŽ¥ç¶šã§ãã¾ã›ã‚“"
-#: systemv/cancel.c:328
#, c-format
msgid "%s: Unable to contact server."
msgstr "%s: サーãƒãƒ¼ã«é€£çµ¡ã§ãã¾ã›ã‚“。"
-#: scheduler/cupsfilter.c:416
+#, c-format
+msgid "%s: Unable to create PPD file: %s"
+msgstr ""
+
#, c-format
msgid "%s: Unable to determine MIME type of \"%s\"."
msgstr "%s: \"%s\" ã® MIME タイプを判別ã§ãã¾ã›ã‚“。"
-#: test/ipptool.c:318
#, c-format
msgid "%s: Unable to open \"%s\": %s"
msgstr "%s: \"%s\" ã‚’é–‹ã‘ã¾ã›ã‚“: %s"
-#: ppdc/ppdmerge.cxx:90
#, c-format
msgid "%s: Unable to open %s: %s"
msgstr "%s: %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: PPD ファイルを開ã‘ã¾ã›ã‚“: %s ã® %d 行目"
-#: scheduler/cupsfilter.c:383
#, c-format
msgid "%s: Unable to read MIME database from \"%s\" or \"%s\"."
msgstr ""
"%s: \"%s\" ã¾ãŸã¯ \"%s\" ã‹ã‚‰ MIME データベースを読ã¿å–ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。"
-#: berkeley/lpq.c:140 systemv/lpstat.c:575
+#, c-format
+msgid "%s: Unable to resolve \"%s\"."
+msgstr ""
+
#, c-format
msgid "%s: Unknown destination \"%s\"."
msgstr "%s: \"%s\" ã¯æœªçŸ¥ã®å®›å…ˆã§ã™ã€‚"
-#: scheduler/cupsfilter.c:428
#, c-format
msgid "%s: Unknown destination MIME type %s/%s."
msgstr "%s: %s/%s ã¯æœªçŸ¥ã®å®›å…ˆ MIME タイプã§ã™ã€‚"
-#: scheduler/cupsfilter.c:1479
#, c-format
msgid "%s: Unknown option \"%c\"."
msgstr "%s: '%c' ã¯æœªçŸ¥ã®ã‚ªãƒ—ションã§ã™ã€‚"
-#: test/ippfind.c:648
#, c-format
msgid "%s: Unknown option \"%s\"."
msgstr "%s: \"%s\" ã¯æœªçŸ¥ã®ã‚ªãƒ—ションã§ã™ã€‚"
-#: test/ippfind.c:928
#, c-format
msgid "%s: Unknown option \"-%c\"."
msgstr "%s: \"-%c\" ã¯æœªçŸ¥ã®ã‚ªãƒ—ションã§ã™ã€‚"
-#: scheduler/cupsfilter.c:408
#, c-format
msgid "%s: Unknown source MIME type %s/%s."
msgstr "%s: %s/%s ã¯æœªçŸ¥ã®ã‚½ãƒ¼ã‚¹ MIME タイプã§ã™ã€‚"
-#: berkeley/lpr.c:136
#, c-format
msgid ""
"%s: Warning - \"%c\" format modifier not supported - output may not be "
@@ -2448,1347 +1954,1008 @@ msgstr ""
"%s: 警告 - '%c' å½¢å¼ä¿®é£¾å­ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“ - 出力ã¯æ­£ã—ããªã„ã‚‚ã®ã«ãª"
"ã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。"
-#: systemv/lp.c:471
#, c-format
msgid "%s: Warning - character set option ignored."
msgstr "%s: 警告 - 文字セットオプションã¯ç„¡è¦–ã•ã‚Œã¾ã™ã€‚"
-#: systemv/lp.c:490
#, c-format
msgid "%s: Warning - content type option ignored."
msgstr "%s: 警告 - コンテンツタイプオプションã¯ç„¡è¦–ã•ã‚Œã¾ã™ã€‚"
-#: systemv/lp.c:178
#, c-format
msgid "%s: Warning - form option ignored."
msgstr "%s: 警告 - 用紙オプションã¯ç„¡è¦–ã•ã‚Œã¾ã™ã€‚"
-#: systemv/lp.c:381
#, c-format
msgid "%s: Warning - mode option ignored."
msgstr "%s: 警告 - モードオプションã¯ç„¡è¦–ã•ã‚Œã¾ã™ã€‚"
-#: 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 インãƒ/秒"
-#: 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:427
msgid "1.5 inch/sec."
msgstr "1.5 インãƒ/秒"
-#: 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:316
msgid "10"
msgstr "10"
-#: ppdc/sample.c:438
msgid "10 inches/sec."
msgstr "10 インãƒ/秒"
-#: 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 ミリメートル/秒"
-#: 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 インãƒ/秒"
-#: 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 インãƒ/秒"
-#: 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 ミリメートル/秒"
-#: ppdc/sample.c:243
msgid "120x60dpi"
msgstr "120x60dpi"
-#: ppdc/sample.c:249
msgid "120x72dpi"
msgstr "120x72dpi"
-#: ppdc/sample.c:319
msgid "13"
msgstr "13"
-#: ppdc/sample.c:232
msgid "136dpi"
msgstr "136dpi"
-#: 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 ミリメートル/秒"
-#: ppdc/sample.c:10
msgid "15 x 11"
msgstr "15 x 11 インãƒ"
-#: ppdc/sample.c:331
msgid "150 mm/sec."
msgstr "150 ミリメートル/秒"
-#: ppdc/sample.c:278
msgid "150dpi"
msgstr "150dpi"
-#: 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 "180dpi"
-#: 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 インãƒ/秒"
-#: ppdc/sample.c:262
msgid "2-Sided Printing"
msgstr "両é¢å°åˆ·"
-#: 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:428
msgid "2.5 inches/sec."
msgstr "2.5 インãƒ/秒"
-#: 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:367
msgid "20"
msgstr "20"
-#: ppdc/sample.c:324
msgid "20 mm/sec."
msgstr "20 ミリメートル/秒"
-#: ppdc/sample.c:332
msgid "200 mm/sec."
msgstr "200 ミリメートル/秒"
-#: ppdc/sample.c:233
msgid "203dpi"
msgstr "203dpi"
-#: 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 ピンシリーズ"
-#: ppdc/sample.c:250
msgid "240x72dpi"
msgstr "240x72dpi"
-#: ppdc/sample.c:372
msgid "25"
msgstr "25"
-#: ppdc/sample.c:333
msgid "250 mm/sec."
msgstr "250 ミリメートル/秒"
-#: 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 インãƒ/秒"
-#: ppdc/sample.c:3
msgid "3 x 5"
msgstr "3 x 5"
-#: 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 "3.5 x 5"
-#: ppdc/sample.c:171
msgid "3.5\" Disk"
msgstr "3.5 インãƒãƒ‡ã‚£ã‚¹ã‚¯"
-#: ppdc/sample.c:205
msgid "3.50x1.00\""
msgstr "3.50x1.00 インãƒ"
-#: ppdc/sample.c:377
msgid "30"
msgstr "30"
-#: ppdc/sample.c:325
msgid "30 mm/sec."
msgstr "30 ミリメートル/秒"
-#: ppdc/sample.c:334
msgid "300 mm/sec."
msgstr "300 ミリメートル/秒"
-#: ppdc/sample.c:234
msgid "300dpi"
msgstr "300dpi"
-#: ppdc/sample.c:405
msgid "35"
msgstr "35"
-#: ppdc/sample.c:246
msgid "360dpi"
msgstr "360dpi"
-#: ppdc/sample.c:245
msgid "360x180dpi"
msgstr "360x180dpi"
-#: ppdc/sample.c:310
msgid "4"
msgstr "4"
-#: ppdc/sample.c:382
msgid "4 inches/sec."
msgstr "4 インãƒ/秒"
-#: 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:406
msgid "40"
msgstr "40"
-#: ppdc/sample.c:326
msgid "40 mm/sec."
msgstr "40 ミリメートル/秒"
-#: 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 インãƒ/秒"
-#: 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 インãƒ/秒"
-#: 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:410
msgid "60"
msgstr "60"
-#: ppdc/sample.c:327
msgid "60 mm/sec."
msgstr "60 ミリメートル/秒"
-#: ppdc/sample.c:253
msgid "600dpi"
msgstr "600dpi"
-#: ppdc/sample.c:242
msgid "60dpi"
msgstr "60dpi"
-#: ppdc/sample.c:248
msgid "60x72dpi"
msgstr "60x72dpi"
-#: 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 インãƒ/秒"
-#: ppdc/sample.c:11
msgid "7 x 9"
msgstr "7 x 9 インãƒ"
-#: ppdc/sample.c:412
msgid "70"
msgstr "70"
-#: 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 インãƒ/秒"
-#: ppdc/sample.c:12
msgid "8 x 10"
msgstr "8 x 10 インãƒ"
-#: 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:414
msgid "80"
msgstr "80"
-#: ppdc/sample.c:328
msgid "80 mm/sec."
msgstr "80 ミリメートル/秒"
-#: 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 インãƒ/秒"
-#: 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 ピンシリーズ"
-#: 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 "?無効ãªãƒ˜ãƒ«ãƒ—コマンドã§ã™"
-#: cgi-bin/admin.c:2348
msgid "A Samba password is required to export printer drivers"
msgstr ""
"プリンタードライãƒãƒ¼ã‚’エクスãƒãƒ¼ãƒˆã™ã‚‹ã«ã¯ Samba ã®ãƒ‘スワードãŒå¿…è¦ã§ã™ã€‚"
-#: cgi-bin/admin.c:2344
msgid "A Samba username is required to export printer drivers"
msgstr ""
"プリンタードライãƒãƒ¼ã‚’エクスãƒãƒ¼ãƒˆã™ã‚‹ã«ã¯ã€Samba ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼åãŒå¿…è¦ã§ã™ã€‚"
-#: scheduler/ipp.c:2274
#, c-format
msgid "A class named \"%s\" already exists."
msgstr "\"%s\" ã¨ã„ã†åå‰ã®ã‚¯ãƒ©ã‚¹ã¯ã™ã§ã«å­˜åœ¨ã—ã¾ã™ã€‚"
-#: scheduler/ipp.c:916
#, c-format
msgid "A printer named \"%s\" already exists."
msgstr "\"%s\" ã¨ã„ã†åå‰ã®ãƒ—リンターã¯ã™ã§ã«å­˜åœ¨ã—ã¾ã™ã€‚"
-#: ppdc/sample.c:15
msgid "A0"
msgstr "A0"
-#: ppdc/sample.c:16
msgid "A0 Long Edge"
msgstr "A0 長辺é€ã‚Š"
-#: ppdc/sample.c:17
msgid "A1"
msgstr "A1"
-#: ppdc/sample.c:18
msgid "A1 Long Edge"
msgstr "A1 長辺é€ã‚Š"
-#: 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 長辺é€ã‚Š"
-#: ppdc/sample.c:21
msgid "A3"
msgstr "A3"
-#: ppdc/sample.c:22
msgid "A3 Long Edge"
msgstr "A3 長辺é€ã‚Š"
-#: ppdc/sample.c:23
msgid "A3 Oversize"
msgstr "A3 (特大)"
-#: ppdc/sample.c:24
msgid "A3 Oversize Long Edge"
msgstr "A3 (特大) 長辺é€ã‚Š"
-#: ppdc/sample.c:25
msgid "A4"
msgstr "A4"
-#: ppdc/sample.c:27
msgid "A4 Long Edge"
msgstr "A4 長辺é€ã‚Š"
-#: ppdc/sample.c:26
msgid "A4 Oversize"
msgstr "A4 (特大)"
-#: ppdc/sample.c:28
msgid "A4 Small"
msgstr "A4 (å°)"
-#: ppdc/sample.c:29
msgid "A5"
msgstr "A5"
-#: ppdc/sample.c:31
msgid "A5 Long Edge"
msgstr "A5 長辺é€ã‚Š"
-#: ppdc/sample.c:30
msgid "A5 Oversize"
msgstr "A5 (特大)"
-#: ppdc/sample.c:32
msgid "A6"
msgstr "A6"
-#: ppdc/sample.c:33
msgid "A6 Long Edge"
msgstr "A6 長辺é€ã‚Š"
-#: 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 長辺é€ã‚Š"
-#: ppdc/sample.c:49
msgid "ARCH D"
msgstr "ARCH D"
-#: ppdc/sample.c:50
msgid "ARCH D Long Edge"
msgstr "ARCH D 長辺é€ã‚Š"
-#: ppdc/sample.c:51
msgid "ARCH E"
msgstr "ARCH E"
-#: ppdc/sample.c:52
msgid "ARCH E Long Edge"
msgstr "ARCH E 長辺é€ã‚Š"
-#: cgi-bin/classes.c:161 cgi-bin/printers.c:164
msgid "Accept Jobs"
msgstr "ジョブã®å—ã‘付ã‘"
-#: cups/http-support.c:1347
msgid "Accepted"
msgstr "å—ã‘付ã‘ã¾ã—ãŸ"
-#: cgi-bin/admin.c:548
msgid "Add Class"
msgstr "クラスã®è¿½åŠ "
-#: cgi-bin/admin.c:860
msgid "Add Printer"
msgstr "プリンターã®è¿½åŠ "
-#: 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 "RSS 購読を追加"
-#: ppdc/sample.c:163
msgid "Address"
msgstr "アドレス"
-#: cgi-bin/admin.c:188 cgi-bin/admin.c:262 cgi-bin/admin.c:2725
msgid "Administration"
msgstr "管ç†"
-#: ppdc/sample.c:424
msgid "Always"
msgstr "常ã«æœ‰åŠ¹"
-#: backend/socket.c:121
msgid "AppSocket/HP JetDirect"
msgstr "AppSocket/HP JetDirect"
-#: ppdc/sample.c:445
msgid "Applicator"
msgstr "アプリケーター"
-#: scheduler/ipp.c:991
#, c-format
msgid "Attempt to set %s printer-state to bad value %d."
msgstr "%s printer-state ã« ä¸æ­£ãªå€¤ %d を設定ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚"
-#: scheduler/ipp.c:239
#, c-format
msgid "Attribute groups are out of order (%x < %x)."
msgstr "属性グループã¯ç¯„囲外ã§ã™ (%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 "B5 (特大)"
-#: 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 "誤ã£ãŸ 'document-format' ã®å€¤ã§ã™ \"%s\"。"
-#: cups/dest.c:1736
msgid "Bad NULL dests pointer"
msgstr "ä¸æ­£ãª NULL é€ä¿¡å…ˆãƒã‚¤ãƒ³ã‚¿ãƒ¼"
-#: cups/ppd.c:303
msgid "Bad OpenGroup"
msgstr "ä¸æ­£ãª OpenGroup"
-#: cups/ppd.c:305
msgid "Bad OpenUI/JCLOpenUI"
msgstr "ä¸æ­£ãª OpenUI/JCLOpenUI"
-#: cups/ppd.c:307
msgid "Bad OrderDependency"
msgstr "ä¸æ­£ãª OrderDependency"
-#: 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 "ä¸æ­£ãª PPD キャッシュファイルã§ã™ã€‚"
-#: cups/http-support.c:1362
msgid "Bad Request"
msgstr "ä¸æ­£ãªãƒªã‚¯ã‚¨ã‚¹ãƒˆ"
-#: cups/snmp.c:954
msgid "Bad SNMP version number"
msgstr "ä¸æ­£ãª SNMP ãƒãƒ¼ã‚¸ãƒ§ãƒ³ç•ªå·"
-#: cups/ppd.c:308
msgid "Bad UIConstraints"
msgstr "ä¸æ­£ãª UIConstraints"
-#: cups/http-support.c:1456
msgid "Bad arguments to function"
msgstr "関数ã®å¼•æ•°ãŒä¸æ­£"
-#: scheduler/ipp.c:1352
#, c-format
msgid "Bad copies value %d."
msgstr "%d ã¯ä¸æ­£ãªã‚³ãƒ”ー値ã§ã™ã€‚"
-#: cups/ppd.c:316
msgid "Bad custom parameter"
msgstr "ä¸æ­£ãªã‚«ã‚¹ã‚¿ãƒ ãƒ‘ラメーター"
-#: cups/http-support.c:1598 scheduler/ipp.c:2360
#, c-format
msgid "Bad device-uri \"%s\"."
msgstr "\"%s\" ã¯ç„¡åŠ¹ãª device-uri ã§ã™ã€‚"
-#: scheduler/ipp.c:2399
#, c-format
msgid "Bad device-uri scheme \"%s\"."
msgstr "\"%s\" ã¯ç„¡åŠ¹ãª device-uri スキーマã§ã™ã€‚"
-#: scheduler/ipp.c:8125 scheduler/ipp.c:8141 scheduler/ipp.c:9360
#, c-format
msgid "Bad document-format \"%s\"."
msgstr "\"%s\" ã¯ä¸æ­£ãª document-format ã§ã™ã€‚"
-#: scheduler/ipp.c:9376
#, c-format
msgid "Bad document-format-default \"%s\"."
msgstr "\"%s\" ã¯ä¸æ­£ãª document-format-default ã§ã™ã€‚"
-#: cups/util.c:823
msgid "Bad filename buffer"
msgstr "ä¸æ­£ãªãƒ•ã‚¡ã‚¤ãƒ«åãƒãƒƒãƒ•ã‚¡ãƒ¼ã§ã™ã€‚"
-#: cups/http-support.c:1465
msgid "Bad hostname/address in URI"
msgstr "URI ã®ãƒ›ã‚¹ãƒˆå/アドレスãŒä¸æ­£"
-#: scheduler/ipp.c:1527
#, c-format
msgid "Bad job-name value: %s"
msgstr "誤ã£ãŸ job-name 値: %s"
-#: scheduler/ipp.c:1520
msgid "Bad job-name value: Wrong type or count."
msgstr "誤ã£ãŸ job-name 値: åž‹ã‹ã‚«ã‚¦ãƒ³ãƒˆãŒèª¤ã£ã¦ã„ã¾ã™ã€‚"
-#: scheduler/ipp.c:9967
msgid "Bad job-priority value."
msgstr "ä¸æ­£ãª job-priority 値ã§ã™ã€‚"
-#: scheduler/ipp.c:1382
#, c-format
msgid "Bad job-sheets value \"%s\"."
msgstr "\"%s\" ã¯ä¸æ­£ãª job-sheets 値ã§ã™ã€‚"
-#: scheduler/ipp.c:1366
msgid "Bad job-sheets value type."
msgstr "ä¸æ­£ãª job-sheets 値タイプ ã§ã™ã€‚"
-#: scheduler/ipp.c:9997
msgid "Bad job-state value."
msgstr "ä¸æ­£ãª job-state 値ã§ã™ã€‚"
-#: 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 "\"%s\" ã¯ç„¡åŠ¹ãª job-uri 属性ã§ã™ã€‚"
-#: scheduler/ipp.c:2040 scheduler/ipp.c:5468
#, c-format
msgid "Bad notify-pull-method \"%s\"."
msgstr "\"%s\" ã¯ç„¡åŠ¹ãª notify-pull-method ã§ã™ã€‚"
-#: scheduler/ipp.c:2004 scheduler/ipp.c:5432
#, c-format
msgid "Bad notify-recipient-uri \"%s\"."
msgstr "URI \"%s\" ã¯ä¸æ­£ãª notify-recipient-uri ã§ã™ã€‚"
-#: scheduler/ipp.c:1398
#, c-format
msgid "Bad number-up value %d."
msgstr "%d ã¯ä¸æ­£ãª number-up 値ã§ã™ã€‚"
-#: cups/adminutil.c:281
#, c-format
msgid "Bad option + choice on line %d."
msgstr "%d è¡Œã«ä¸æ­£ãªã‚ªãƒ—ションã¨é¸æŠžãŒã‚ã‚Šã¾ã™ã€‚"
-#: scheduler/ipp.c:1415
#, c-format
msgid "Bad page-ranges values %d-%d."
msgstr "%d-%d ã¯ä¸æ­£ãª page-ranges 値ã§ã™ã€‚"
-#: cups/http-support.c:1462
msgid "Bad port number in URI"
msgstr "URI ã®ãƒãƒ¼ãƒˆç•ªå·ãŒä¸æ­£"
-#: scheduler/ipp.c:2442
#, c-format
msgid "Bad port-monitor \"%s\"."
msgstr "\"%s\" ã¯ç„¡åŠ¹ãª port-monitor ã§ã™ã€‚"
-#: scheduler/ipp.c:2503
#, c-format
msgid "Bad printer-state value %d."
msgstr "%d ã¯ç„¡åŠ¹ãª printer-state 値ã§ã™ã€‚"
-#: cups/dest.c:610 cups/dest.c:1296 cups/dest.c:1343
msgid "Bad printer-uri."
msgstr "printer-uri ãŒä¸æ­£ã§ã™ã€‚"
-#: scheduler/ipp.c:207
#, c-format
msgid "Bad request ID %d."
msgstr "%d ã¯ç„¡åŠ¹ãªãƒªã‚¯ã‚¨ã‚¹ãƒˆIDã§ã™ã€‚"
-#: scheduler/ipp.c:192
#, c-format
msgid "Bad request version number %d.%d."
msgstr "ãƒãƒ¼ã‚¸ãƒ§ãƒ³ç•ªå· %d.%d ã¯ç„¡åŠ¹ãªãƒªã‚¯ã‚¨ã‚¹ãƒˆã§ã™ã€‚"
-#: cups/http-support.c:1459
msgid "Bad resource in URI"
msgstr "URI ã®ãƒªã‚½ãƒ¼ã‚¹ãŒä¸æ­£"
-#: cups/http-support.c:1471
msgid "Bad scheme in URI"
msgstr "URI ã®ã‚¹ã‚­ãƒ¼ãƒ ãŒä¸æ­£"
-#: cgi-bin/admin.c:1464
msgid "Bad subscription ID"
msgstr "ä¸æ­£ãªã‚µãƒ–スクリプション ID"
-#: cups/http-support.c:1468
msgid "Bad username in URI"
msgstr "URI ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼åãŒä¸æ­£"
-#: cups/ppd.c:318
msgid "Bad value string"
msgstr "値文字列ãŒã‚ã‚Šã¾ã›ã‚“"
-#: cups/http-support.c:1474
msgid "Bad/empty URI"
msgstr "URI ãŒä¸æ­£ã‹ç©º"
-#: cgi-bin/admin.c:3270 cgi-bin/admin.c:3516
msgid "Banners"
msgstr "ãƒãƒŠãƒ¼"
-#: ppdc/sample.c:282
msgid "Bond Paper"
msgstr "ボンド紙"
-#: backend/usb-darwin.c:1874
#, c-format
msgid "Boolean expected for waiteof option \"%s\"."
msgstr "è«–ç†å€¤ã¯ã€waiteof オプション \"%s\" ã§ã‚ã‚‹ã¹ãã§ã™"
-#: filter/pstops.c:2029
msgid "Buffer overflow detected, aborting."
msgstr "オーãƒãƒ¼ãƒ•ãƒ­ãƒ¼ãŒæ¤œå‡ºã•ã‚Œã€ä¸­æ–­ã—ã¾ã—ãŸã€‚"
-#: ppdc/sample.c:277
msgid "CMYK"
msgstr "CMYK"
-#: ppdc/sample.c:358
msgid "CPCL Label Printer"
msgstr "CPCL ラベルプリンター"
-#: 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 "RSS 購読をキャンセル"
-#: backend/ipp.c:2198
msgid "Canceling print job."
msgstr "プリントジョブをキャンセルã—ã¦ã„ã¾ã™ã€‚"
-#: scheduler/ipp.c:2483
msgid "Cannot share a remote Kerberized printer."
msgstr "リモート㮠Kerberos èªè¨¼ã®ãƒ—リンターを共有ã§ãã¾ã›ã‚“。"
-#: ppdc/sample.c:271
msgid "Cassette"
msgstr "カセット"
-#: 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:2052 scheduler/ipp.c:5480
#, c-format
msgid "Character set \"%s\" not supported."
msgstr "文字セット \"%s\" ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“。"
-#: cgi-bin/classes.c:187 cgi-bin/classes.c:314
msgid "Classes"
msgstr "クラス"
-#: cgi-bin/printers.c:174
msgid "Clean Print Heads"
msgstr "プリントヘッドクリーニング"
-#: scheduler/ipp.c:3893
msgid "Close-Job doesn't support the job-uri attribute."
msgstr "Close-Job 㯠job-uri 属性をサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。"
-#: ppdc/sample.c:276
msgid "Color"
msgstr "カラー"
-#: ppdc/sample.c:274
msgid "Color Mode"
msgstr "カラーモード"
-#: berkeley/lpc.c:196
msgid ""
"Commands may be abbreviated. Commands are:\n"
"\n"
@@ -3798,88 +2965,67 @@ msgstr ""
"\n"
"exit help quit status ?"
-#: cups/snmp.c:958
msgid "Community name uses indefinite length"
msgstr "コミュニティåã®é•·ã•ãŒä¸å®š"
-#: backend/ipp.c:854 backend/lpd.c:879 backend/socket.c:400
msgid "Connected to printer."
msgstr "プリンターã«æŽ¥ç¶šã—ã¾ã—ãŸã€‚"
-#: backend/ipp.c:759 backend/lpd.c:702 backend/socket.c:319
msgid "Connecting to printer."
msgstr "プリンターã«æŽ¥ç¶šä¸­ã€‚"
-#: cups/http-support.c:1335
msgid "Continue"
msgstr "継続"
-#: ppdc/sample.c:360
msgid "Continuous"
msgstr "連続"
-#: backend/lpd.c:1028 backend/lpd.c:1160
msgid "Control file sent successfully."
msgstr "コントロールファイルãŒæ­£å¸¸ã«é€ä¿¡ã•ã‚Œã¾ã—ãŸã€‚"
-#: backend/ipp.c:1349 backend/lpd.c:472
msgid "Copying print data."
msgstr "å°åˆ·ãƒ‡ãƒ¼ã‚¿ã‚’コピーã—ã¦ã„ã¾ã™ã€‚"
-#: cups/http-support.c:1344
msgid "Created"
msgstr "ジョブ作æˆ"
-#: cups/ppd.c:1069 cups/ppd.c:1109 cups/ppd.c:1354 cups/ppd.c:1457
msgid "Custom"
msgstr "カスタム"
-#: ppdc/sample.c:354
msgid "CustominCutInterval"
msgstr "CustominCutInterval"
-#: ppdc/sample.c:352
msgid "CustominTearInterval"
msgstr "CustominTearInterval"
-#: ppdc/sample.c:338
msgid "Cut"
msgstr "カット"
-#: ppdc/sample.c:446
msgid "Cutter"
msgstr "カッター"
-#: ppdc/sample.c:239
msgid "Dark"
msgstr "濃ã„"
-#: ppdc/sample.c:235
msgid "Darkness"
msgstr "濃ã•"
-#: backend/lpd.c:1113
msgid "Data file sent successfully."
msgstr "データファイルãŒæ­£å¸¸ã«é€ä¿¡ã•ã‚Œã¾ã—ãŸã€‚"
-#: cgi-bin/admin.c:2074 cgi-bin/admin.c:2085 cgi-bin/admin.c:2130
msgid "Delete Class"
msgstr "クラスã®å‰Šé™¤"
-#: cgi-bin/admin.c:2159 cgi-bin/admin.c:2170 cgi-bin/admin.c:2215
msgid "Delete Printer"
msgstr "プリンターã®å‰Šé™¤"
-#: ppdc/sample.c:273
msgid "DeskJet Series"
msgstr "DeskJet シリーズ"
-#: scheduler/ipp.c:1276
#, c-format
msgid "Destination \"%s\" is not accepting jobs."
msgstr "宛先 \"%s\" ã¯ã‚¸ãƒ§ãƒ–ã‚’å—ã‘付ã‘ã¦ã„ã¾ã›ã‚“。"
-#: systemv/lpinfo.c:300
#, c-format
msgid ""
"Device: uri = %s\n"
@@ -3896,87 +3042,67 @@ msgstr ""
" device-id = %s\n"
" location = %s"
-#: ppdc/sample.c:431
msgid "Direct Thermal Media"
msgstr "感熱紙"
-#: cups/file.c:258
#, c-format
msgid "Directory \"%s\" contains a relative path."
msgstr "ディレクトリー \"%s\" ã¯ç›¸å¯¾ãƒ‘スをå«ã‚“ã§ã„ã¾ã™ã€‚"
-#: cups/file.c:230
#, c-format
msgid "Directory \"%s\" has insecure permissions (0%o/uid=%d/gid=%d)."
msgstr ""
"ディレクトリー \"%s\" ã¯å®‰å…¨ã§ãªã„パーミッションãŒä¸Žãˆã‚‰ã‚Œã¦ã„ã¾ã™ (0%o/uid="
"%d/gid=%d)。"
-#: cups/file.c:247
#, c-format
msgid "Directory \"%s\" is a file."
msgstr "ディレクトリー \"%s\" ã¯ãƒ•ã‚¡ã‚¤ãƒ«ã§ã™ã€‚"
-#: cups/file.c:218
#, c-format
msgid "Directory \"%s\" not available: %s"
msgstr "ディレクトリー \"%s\" ã¯åˆ©ç”¨ã§ãã¾ã›ã‚“: %s"
-#: cups/file.c:203
#, c-format
msgid "Directory \"%s\" permissions OK (0%o/uid=%d/gid=%d)."
msgstr ""
"ディレクトリー \"%s\" ã®ãƒ‘ーミッションã¯å•é¡Œã‚ã‚Šã¾ã›ã‚“ (0%o/uid=%d/gid=%d)。"
-#: ppdc/sample.c:340
msgid "Disabled"
msgstr "無効"
-#: scheduler/ipp.c:5979
#, c-format
msgid "Document #%d does not exist in job #%d."
msgstr "ドキュメント #%d ãŒã‚¸ãƒ§ãƒ– #%d ã«è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。"
-#: ppdc/sample.c:267
msgid "Duplexer"
msgstr "両é¢ã‚ªãƒ—ション"
-#: ppdc/sample.c:229
msgid "Dymo"
msgstr "Dymo"
-#: ppdc/sample.c:426
msgid "EPL1 Label Printer"
msgstr "EPL1 ラベルプリンター"
-#: ppdc/sample.c:429
msgid "EPL2 Label Printer"
msgstr "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 "設定ファイルã®ç·¨é›†"
-#: cups/adminutil.c:326
msgid "Empty PPD file."
msgstr "PPD ファイルãŒç©ºã§ã™ã€‚"
-#: cups/http.c:4624
msgid "Encryption is not supported."
msgstr "æš—å·åŒ–ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“。"
#. TRANSLATORS: Banner/cover sheet after the print job.
-#: cgi-bin/admin.c:3541
msgid "Ending Banner"
msgstr "終了ãƒãƒŠãƒ¼"
-#: ppdc/sample.c:2
msgid "English"
msgstr "English"
-#: 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 "
@@ -3986,349 +3112,262 @@ msgstr ""
"root ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼åã¨ãƒ‘スワードを入力ã—ã¦ãã ã•ã„。Kerberos èªè¨¼ã‚’使用ã—ã¦ã„ã‚‹"
"å ´åˆã€æœ‰åŠ¹ãª Kerberos ãƒã‚±ãƒƒãƒˆãŒã‚ã‚‹ã“ã¨ã‚’確èªã—ã¦ãã ã•ã„。"
-#: ppdc/sample.c:73
msgid "Envelope #10 "
msgstr "å°ç­’ #10"
-#: ppdc/sample.c:74
msgid "Envelope #11"
msgstr "å°ç­’ #11"
-#: ppdc/sample.c:75
msgid "Envelope #12"
msgstr "å°ç­’ #12"
-#: ppdc/sample.c:76
msgid "Envelope #14"
msgstr "å°ç­’ #14"
-#: ppdc/sample.c:77
msgid "Envelope #9"
msgstr "å°ç­’ #9"
-#: ppdc/sample.c:89
msgid "Envelope B4"
msgstr "å°ç­’ B4"
-#: ppdc/sample.c:90
msgid "Envelope B5"
msgstr "å°ç­’ B5"
-#: ppdc/sample.c:91
msgid "Envelope B6"
msgstr "å°ç­’ B6"
-#: ppdc/sample.c:78
msgid "Envelope C0"
msgstr "å°ç­’ C0"
-#: ppdc/sample.c:79
msgid "Envelope C1"
msgstr "å°ç­’ C1"
-#: ppdc/sample.c:80
msgid "Envelope C2"
msgstr "å°ç­’ C2"
-#: ppdc/sample.c:81
msgid "Envelope C3"
msgstr "å°ç­’ C3"
-#: ppdc/sample.c:67
msgid "Envelope C4"
msgstr "å°ç­’ C4"
-#: ppdc/sample.c:68
msgid "Envelope C5"
msgstr "å°ç­’ C5"
-#: ppdc/sample.c:69
msgid "Envelope C6"
msgstr "å°ç­’ C6"
-#: ppdc/sample.c:82
msgid "Envelope C65"
msgstr "å°ç­’ C65"
-#: ppdc/sample.c:83
msgid "Envelope C7"
msgstr "å°ç­’ C7"
-#: ppdc/sample.c:84
msgid "Envelope Choukei 3"
msgstr "å°ç­’ é•·å½¢3å·"
-#: ppdc/sample.c:85
msgid "Envelope Choukei 3 Long Edge"
msgstr "å°ç­’ é•·å½¢3å· é•·è¾ºé€ã‚Š"
-#: ppdc/sample.c:86
msgid "Envelope Choukei 4"
msgstr "å°ç­’ é•·å½¢4å·"
-#: ppdc/sample.c:87
msgid "Envelope Choukei 4 Long Edge"
msgstr "å°ç­’ é•·å½¢4å· é•·è¾ºé€ã‚Š"
-#: ppdc/sample.c:70
msgid "Envelope DL"
msgstr "å°ç­’ DL"
-#: ppdc/sample.c:261
msgid "Envelope Feed"
msgstr "å°ç­’フィード"
-#: ppdc/sample.c:88
msgid "Envelope Invite"
msgstr "招待状å°ç­’"
-#: ppdc/sample.c:92
msgid "Envelope Italian"
msgstr "イタリアå°ç­’"
-#: ppdc/sample.c:93
msgid "Envelope Kaku2"
msgstr "å°ç­’ 角2"
-#: ppdc/sample.c:94
msgid "Envelope Kaku2 Long Edge"
msgstr "å°ç­’ 角2 長辺é€ã‚Š"
-#: ppdc/sample.c:95
msgid "Envelope Kaku3"
msgstr "å°ç­’ 角3"
-#: ppdc/sample.c:96
msgid "Envelope Kaku3 Long Edge"
msgstr "å°ç­’ 角3 長辺é€ã‚Š"
-#: ppdc/sample.c:97
msgid "Envelope Monarch"
msgstr "å°ç­’ Monarch"
-#: ppdc/sample.c:99
msgid "Envelope PRC1 "
msgstr "å°ç­’ PRC1"
-#: ppdc/sample.c:100
msgid "Envelope PRC1 Long Edge"
msgstr "å°ç­’ PRC1 長辺é€ã‚Š"
-#: ppdc/sample.c:117
msgid "Envelope PRC10"
msgstr "å°ç­’ PRC10"
-#: ppdc/sample.c:118
msgid "Envelope PRC10 Long Edge"
msgstr "å°ç­’ PRC10 長辺é€ã‚Š"
-#: ppdc/sample.c:101
msgid "Envelope PRC2"
msgstr "å°ç­’ PRC2"
-#: ppdc/sample.c:102
msgid "Envelope PRC2 Long Edge"
msgstr "å°ç­’ PRC2 長辺é€ã‚Š"
-#: ppdc/sample.c:103
msgid "Envelope PRC3"
msgstr "å°ç­’ PRC3"
-#: ppdc/sample.c:104
msgid "Envelope PRC3 Long Edge"
msgstr "å°ç­’ PRC3 長辺é€ã‚Š"
-#: ppdc/sample.c:105
msgid "Envelope PRC4"
msgstr "å°ç­’ PRC4"
-#: ppdc/sample.c:106
msgid "Envelope PRC4 Long Edge"
msgstr "å°ç­’ PRC4 長辺é€ã‚Š"
-#: ppdc/sample.c:108
msgid "Envelope PRC5 Long Edge"
msgstr "å°ç­’ PRC5 長辺é€ã‚Š"
-#: ppdc/sample.c:107
msgid "Envelope PRC5PRC5"
msgstr "å°ç­’ PRC5"
-#: ppdc/sample.c:109
msgid "Envelope PRC6"
msgstr "å°ç­’ PRC6"
-#: ppdc/sample.c:110
msgid "Envelope PRC6 Long Edge"
msgstr "å°ç­’ PRC6 長辺é€ã‚Š"
-#: ppdc/sample.c:111
msgid "Envelope PRC7"
msgstr "å°ç­’ PRC7"
-#: ppdc/sample.c:112
msgid "Envelope PRC7 Long Edge"
msgstr "å°ç­’ PRC7 長辺é€ã‚Š"
-#: ppdc/sample.c:113
msgid "Envelope PRC8"
msgstr "å°ç­’ PRC8"
-#: ppdc/sample.c:114
msgid "Envelope PRC8 Long Edge"
msgstr "å°ç­’ PRC8 長辺é€ã‚Š"
-#: ppdc/sample.c:115
msgid "Envelope PRC9"
msgstr "å°ç­’ PRC9"
-#: ppdc/sample.c:116
msgid "Envelope PRC9 Long Edge"
msgstr "å°ç­’ PRC9 長辺é€ã‚Š"
-#: ppdc/sample.c:98
msgid "Envelope Personal"
msgstr "パーソナルå°ç­’"
-#: ppdc/sample.c:119
msgid "Envelope You4"
msgstr "å°ç­’ æ´‹å½¢4å·"
-#: ppdc/sample.c:120
msgid "Envelope You4 Long Edge"
msgstr "å°ç­’ æ´‹å½¢4å· é•·è¾ºé€ã‚Š"
-#: test/ippfind.c:2809
msgid "Environment Variables:"
msgstr "環境変数:"
-#: ppdc/sample.c:240
msgid "Epson"
msgstr "Epson"
-#: cgi-bin/admin.c:3584
msgid "Error Policy"
msgstr "エラーãƒãƒªã‚·ãƒ¼"
-#: filter/rastertopwg.c:395 filter/rastertopwg.c:410 filter/rastertopwg.c:421
-#: filter/rastertopwg.c:432
+msgid "Error reading raster data."
+msgstr ""
+
msgid "Error sending raster data."
msgstr "ラスターデータã®é€ä¿¡ã§ã‚¨ãƒ©ãƒ¼ãŒèµ·ãã¾ã—ãŸã€‚"
-#: systemv/lpinfo.c:103 systemv/lpmove.c:88
msgid "Error: need hostname after \"-h\" option."
msgstr "Error: '-h' オプションã®ã‚ã¨ã«ã¯ãƒ›ã‚¹ãƒˆåãŒå¿…è¦ã§ã™ã€‚"
-#: ppdc/sample.c:350
msgid "Every 10 Labels"
msgstr "10 ラベルã”ã¨"
-#: ppdc/sample.c:342
msgid "Every 2 Labels"
msgstr "2 ラベルã”ã¨"
-#: ppdc/sample.c:343
msgid "Every 3 Labels"
msgstr "3 ラベルã”ã¨"
-#: ppdc/sample.c:344
msgid "Every 4 Labels"
msgstr "4 ラベルã”ã¨"
-#: ppdc/sample.c:345
msgid "Every 5 Labels"
msgstr "5 ラベルã”ã¨"
-#: ppdc/sample.c:346
msgid "Every 6 Labels"
msgstr "6 ラベルã”ã¨"
-#: ppdc/sample.c:347
msgid "Every 7 Labels"
msgstr "7 ラベルã”ã¨"
-#: ppdc/sample.c:348
msgid "Every 8 Labels"
msgstr "8 ラベルã”ã¨"
-#: ppdc/sample.c:349
msgid "Every 9 Labels"
msgstr "9 ラベルã”ã¨"
-#: ppdc/sample.c:341
msgid "Every Label"
msgstr "ã™ã¹ã¦ã®ãƒ©ãƒ™ãƒ«"
-#: ppdc/sample.c:121
msgid "Executive"
msgstr "エグゼクティブ"
-#: cups/http-support.c:1390
msgid "Expectation Failed"
msgstr "予測ã«å¤±æ•—ã—ã¾ã—ãŸ"
-#: cgi-bin/admin.c:2336 cgi-bin/admin.c:2355
msgid "Export Printers to Samba"
msgstr "Samba ã¸ãƒ—リンターをエクスãƒãƒ¼ãƒˆ"
-#: test/ippfind.c:2755
msgid "Expressions:"
msgstr "å¼:"
-#: systemv/cupstestdsc.c:172 systemv/cupstestdsc.c:189
-#: systemv/cupstestdsc.c:214 systemv/cupstestdsc.c:231
-#: systemv/cupstestdsc.c:255 systemv/cupstestdsc.c:273
-#: systemv/cupstestdsc.c:302 systemv/cupstestdsc.c:339
-#: systemv/cupstestdsc.c:349 systemv/cupstestdsc.c:359
-#: systemv/cupstestdsc.c:369 systemv/cupstestdsc.c:379
-#: systemv/cupstestdsc.c:387
msgid "FAIL"
msgstr "失敗"
-#: ppdc/sample.c:122
msgid "FanFold German"
msgstr "FanFold German"
-#: ppdc/sample.c:123
msgid "FanFold Legal German"
msgstr "FanFold Legal German"
-#: ppdc/sample.c:124
msgid "Fanfold US"
msgstr "Fanfold US"
-#: cups/file.c:262
#, c-format
msgid "File \"%s\" contains a relative path."
msgstr "ファイル \"%s\" ã¯ç›¸å¯¾ãƒ‘スをå«ã‚“ã§ã„ã¾ã™ã€‚"
-#: cups/file.c:237
#, c-format
msgid "File \"%s\" has insecure permissions (0%o/uid=%d/gid=%d)."
msgstr ""
"ファイル \"%s\" ã¯å®‰å…¨ã§ãªã„パーミッションãŒä¸Žãˆã‚‰ã‚Œã¦ã„ã¾ã™ (0%o/uid=%d/gid="
"%d)。"
-#: cups/file.c:251
#, c-format
msgid "File \"%s\" is a directory."
msgstr "ファイル \"%s\" ã¯ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªãƒ¼ã§ã™ã€‚"
-#: cups/file.c:223
#, c-format
msgid "File \"%s\" not available: %s"
msgstr "ファイル \"%s\" ã¯åˆ©ç”¨ã§ãã¾ã›ã‚“: %s"
-#: cups/file.c:209
#, c-format
msgid "File \"%s\" permissions OK (0%o/uid=%d/gid=%d)."
msgstr "ファイル \"%s\" ã®ãƒ‘ーミッションã¯å•é¡Œã‚ã‚Šã¾ã›ã‚“ (0%o/uid=%d/gid=%d)。"
-#: ppdc/sample.c:169
msgid "File Folder "
msgstr "ファイルフォルダー"
-#: scheduler/ipp.c:2378
#, c-format
msgid ""
"File device URIs have been disabled. To enable, see the FileDevice directive "
@@ -4337,536 +3376,398 @@ msgstr ""
"ファイルデãƒã‚¤ã‚¹ URI ã¯ç„¡åŠ¹ã«ãªã£ã¦ã„ã¾ã™ã€‚有効ã«ã™ã‚‹ã«ã¯ã€\"%s/cups-files."
"conf\" ã® FileDevice ディレクティブをå‚ç…§ã—ã¦ãã ã•ã„。"
-#: filter/rastertoepson.c:1102 filter/rastertohp.c:834
-#: filter/rastertolabel.c:1259
#, c-format
msgid "Finished page %d."
msgstr "ページ %d を終了。"
-#: ppdc/sample.c:125
msgid "Folio"
msgstr "フォリオ"
-#: cups/http-support.c:1369
msgid "Forbidden"
msgstr "Forbidden"
-#: cups/ppd.c:700 cups/ppd.c:1258
msgid "General"
msgstr "一般"
-#: ppdc/sample.c:251
msgid "Generic"
msgstr "汎用"
-#: cups/snmp.c:968
msgid "Get-Response-PDU uses indefinite length"
msgstr "Get-Response-PDU ã¯ä¸ç¢ºå®šã®é•·ã•ã‚’使用ã—ã¦ã„ã¾ã™"
-#: ppdc/sample.c:285
msgid "Glossy Paper"
msgstr "光沢紙"
-#: 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 "printer-uri 属性をå–å¾—ã—ã¾ã—ãŸãŒã€job-id ã‚’å–å¾—ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚"
-#: ppdc/sample.c:275
msgid "Grayscale"
msgstr "グレースケール"
-#: ppdc/sample.c:272
msgid "HP"
msgstr "HP"
-#: ppdc/sample.c:170
msgid "Hanging Folder"
msgstr "Hanging Folder"
-#: cgi-bin/help.c:143
msgid "Help file not in index."
msgstr "ヘルプファイルãŒç´¢å¼•ã«å«ã¾ã‚Œã¦ã„ã¾ã›ã‚“。"
-#: cups/ipp.c:3183 cups/ipp.c:3210 cups/ipp.c:3233
msgid "IPP 1setOf attribute with incompatible value tags."
msgstr "IPP ã® 1setOf 属性㌠value ã‚¿ã‚°ã¨äº’æ›æ€§ãŒã‚ã‚Šã¾ã›ã‚“。"
-#: cups/ipp.c:3146
msgid "IPP attribute has no name."
msgstr "IPP ã®å±žæ€§ã«åå‰ãŒã‚ã‚Šã¾ã›ã‚“。"
-#: cups/ipp.c:7000
msgid "IPP attribute is not a member of the message."
msgstr "IPP ã®å±žæ€§ãŒãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã®ãƒ¡ãƒ³ãƒãƒ¼ã§ã¯ã‚ã‚Šã¾ã›ã‚“。"
-#: cups/ipp.c:3594
msgid "IPP begCollection value not 0 bytes."
msgstr "IPP ã® begCollection ã¯æƒ³å®šã•ã‚ŒãŸ 0 ãƒã‚¤ãƒˆã«ãªã£ã¦ã„ã¾ã›ã‚“。"
-#: cups/ipp.c:3376
msgid "IPP boolean value not 1 byte."
msgstr "IPP ã®çœŸå½å€¤ãŒæƒ³å®šã•ã‚ŒãŸ 1 ãƒã‚¤ãƒˆã«ãªã£ã¦ã„ã¾ã›ã‚“。"
-#: cups/ipp.c:3437
msgid "IPP date value not 11 bytes."
msgstr "IPP ã® date 値ã¯æƒ³å®šã•ã‚ŒãŸ 11 ãƒã‚¤ãƒˆã«ãªã£ã¦ã„ã¾ã›ã‚“。"
-#: cups/ipp.c:3615
msgid "IPP endCollection value not 0 bytes."
msgstr "IPP ã® endCollection ã¯æƒ³å®šã•ã‚ŒãŸ 0 ãƒã‚¤ãƒˆã«ãªã£ã¦ã„ã¾ã›ã‚“。"
-#: cups/ipp.c:3351
msgid "IPP enum value not 4 bytes."
msgstr "IPP ã® enum 値ã¯æƒ³å®šã•ã‚ŒãŸ 4 ãƒã‚¤ãƒˆã«ãªã£ã¦ã„ã¾ã›ã‚“。"
-#: cups/ipp.c:3075
msgid "IPP extension tag larger than 0x7FFFFFFF."
msgstr "IPP ã®æ‹¡å¼µã‚¿ã‚°ãŒ 0x7FFFFFFF より大ãã„ã§ã™ã€‚"
-#: cups/ipp.c:3348
msgid "IPP integer value not 4 bytes."
msgstr "IPP ã®æ•´æ•°å€¤ã¯æƒ³å®šã•ã‚ŒãŸ 4 ãƒã‚¤ãƒˆã«ãªã£ã¦ã„ã¾ã›ã‚“。"
-#: cups/ipp.c:3547
msgid "IPP language length overflows value."
msgstr "IPP ã® language length ã®å€¤ãŒã‚ªãƒ¼ãƒãƒ¼ãƒ•ãƒ­ãƒ¼ã—ã¦ã„ã¾ã™ã€‚"
-#: cups/ipp.c:3556
msgid "IPP language length too large."
msgstr "IPP ã® language ã®é•·ã•ãŒé•·ã™ãŽã¾ã™ã€‚"
-#: cups/ipp.c:3260
msgid "IPP member name is not empty."
msgstr "IPP ã®ãƒ¡ãƒ³ãƒãƒ¼åãŒç©ºã§ã¯ã‚ã‚Šã¾ã›ã‚“。"
-#: cups/ipp.c:3641
msgid "IPP memberName value is empty."
msgstr "IPP ã® memberName ã®å€¤ãŒç©ºã§ã™ã€‚"
-#: cups/ipp.c:3633
msgid "IPP memberName with no attribute."
msgstr "IPP ã® memberName ã«å±žæ€§ãŒã‚ã‚Šã¾ã›ã‚“。"
-#: cups/ipp.c:3129
msgid "IPP name larger than 32767 bytes."
msgstr "IPP å㌠32767 ãƒã‚¤ãƒˆã‚ˆã‚Šå¤§ãã„ã§ã™ã€‚"
-#: cups/ipp.c:3514
msgid "IPP nameWithLanguage value less than minimum 4 bytes."
msgstr "IPP ã® nameWithLanguage ãŒæœ€å°å€¤ 4 ãƒã‚¤ãƒˆæœªæº€ã§ã™ã€‚"
-#: cups/ipp.c:3671
msgid "IPP octetString length too large."
msgstr "IPP ã® octetString ã®é•·ã•ãŒå¤§ãã™ãŽã¾ã™ã€‚"
-#: cups/ipp.c:3482
msgid "IPP rangeOfInteger value not 8 bytes."
msgstr "IPP ã® rangeOfInteger ã¯æƒ³å®šã•ã‚ŒãŸ 8 ãƒã‚¤ãƒˆã«ãªã£ã¦ã„ã¾ã›ã‚“。"
-#: cups/ipp.c:3455
msgid "IPP resolution value not 9 bytes."
msgstr "IPP ã® resolution ã¯æƒ³å®šã•ã‚ŒãŸ 9 ãƒã‚¤ãƒˆã«ãªã£ã¦ã„ã¾ã›ã‚“。"
-#: cups/ipp.c:3574
msgid "IPP string length overflows value."
msgstr "IPP ã®æ–‡å­—列長ã®å€¤ãŒã‚ªãƒ¼ãƒãƒ¼ãƒ•ãƒ­ãƒ¼ã—ã¦ã„ã¾ã™ã€‚"
-#: cups/ipp.c:3510
msgid "IPP textWithLanguage value less than minimum 4 bytes."
msgstr "IPP ã® textWithLanguage ã®å€¤ãŒæœ€å°å€¤ 4 ãƒã‚¤ãƒˆæœªæº€ã§ã™ã€‚"
-#: cups/ipp.c:3334
msgid "IPP value larger than 32767 bytes."
msgstr "IPP ã®å€¤ãŒ 32767 ãƒã‚¤ãƒˆä»¥ä¸Šã§ã™ã€‚"
-#: ppdc/sample.c:1
msgid "ISOLatin1"
msgstr "ISOLatin1"
-#: cups/ppd.c:311
msgid "Illegal control character"
msgstr "ä¸æ­£ãªåˆ¶å¾¡æ–‡å­—"
-#: cups/ppd.c:312
msgid "Illegal main keyword string"
msgstr "ä¸æ­£ãªãƒ¡ã‚¤ãƒ³ã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰æ–‡å­—列"
-#: cups/ppd.c:313
msgid "Illegal option keyword string"
msgstr "ä¸æ­£ãªã‚ªãƒ—ションキーワード文字列"
-#: cups/ppd.c:314
msgid "Illegal translation string"
msgstr "ä¸æ­£ãªç¿»è¨³æ–‡å­—列"
-#: cups/ppd.c:315
msgid "Illegal whitespace character"
msgstr "ä¸æ­£ãªç©ºç™½æ–‡å­—"
-#: ppdc/sample.c:266
msgid "Installable Options"
msgstr "インストールå¯èƒ½ã‚ªãƒ—ション"
-#: ppdc/sample.c:269
msgid "Installed"
msgstr "インストールã•ã‚Œã¦ã„ã¾ã™"
-#: ppdc/sample.c:288
msgid "IntelliBar Label Printer"
msgstr "IntelliBar ラベルプリンター"
-#: ppdc/sample.c:287
msgid "Intellitech"
msgstr "Intellitech"
-#: cups/http-support.c:1396
msgid "Internal Server Error"
msgstr "サーãƒãƒ¼å†…部エラー"
-#: cups/ppd.c:302
msgid "Internal error"
msgstr "内部エラー"
-#: 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:319
msgid "Internet Printing Protocol"
msgstr "インターãƒãƒƒãƒˆå°åˆ·ãƒ—ロトコル"
-#: cups/pwg-media.c:293 cups/pwg-media.c:312
msgid "Invalid media name arguments."
msgstr "無効ãªãƒ¡ãƒ‡ã‚£ã‚¢å引数ã§ã™ã€‚"
-#: cups/dest-options.c:1032
msgid "Invalid media size."
msgstr "無効ãªãƒ¡ãƒ‡ã‚£ã‚¢ã‚µã‚¤ã‚ºã§ã™ã€‚"
-#: filter/commandtops.c:114
#, c-format
msgid "Invalid printer command \"%s\"."
msgstr "無効ãªãƒ—リンターコマンドã§ã™ã€‚ \"%s\""
-#: 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 長辺é€ã‚Š"
-#: ppdc/sample.c:60
msgid "JIS B5"
msgstr "JIS B5"
-#: ppdc/sample.c:61
msgid "JIS B5 Long Edge"
msgstr "JIS B5 長辺é€ã‚Š"
-#: ppdc/sample.c:62
msgid "JIS B6"
msgstr "JIS B6"
-#: ppdc/sample.c:63
msgid "JIS B6 Long Edge"
msgstr "JIS B6 長辺é€ã‚Š"
-#: 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 "ã‚¸ãƒ§ãƒ–ç•ªå· %d ã‚’å†é–‹ã§ãã¾ã›ã‚“ - ファイルãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。"
-#: 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 "ã‚¸ãƒ§ãƒ–ç•ªå· %d ã¯å­˜åœ¨ã—ã¾ã›ã‚“。"
-#: scheduler/ipp.c:3501
#, c-format
msgid "Job #%d is already aborted - can't cancel."
msgstr "ã‚¸ãƒ§ãƒ–ç•ªå· %d ã¯ã™ã§ã«ä¸­æ–­ã•ã‚Œã¦ã„ã¾ã™ - キャンセルã§ãã¾ã›ã‚“。"
-#: scheduler/ipp.c:3495
#, c-format
msgid "Job #%d is already canceled - can't cancel."
msgstr "ã‚¸ãƒ§ãƒ–ç•ªå· %d ã¯ã™ã§ã«ã‚­ãƒ£ãƒ³ã‚»ãƒ«ã•ã‚Œã¦ã„ã¾ã™ - キャンセルã§ãã¾ã›ã‚“。"
-#: scheduler/ipp.c:3507
#, c-format
msgid "Job #%d is already completed - can't cancel."
msgstr "ã‚¸ãƒ§ãƒ–ç•ªå· %d ã¯ã™ã§ã«å®Œäº†ã—ã¦ã„ã¾ã™ - キャンセルã§ãã¾ã›ã‚“。"
-#: scheduler/ipp.c:7603 scheduler/ipp.c:7887 scheduler/ipp.c:9893
#, c-format
msgid "Job #%d is finished and cannot be altered."
msgstr "ã‚¸ãƒ§ãƒ–ç•ªå· %d ã¯ã™ã§ã«çµ‚了ã—ã€å¤‰æ›´ã§ãã¾ã›ã‚“。"
-#: scheduler/ipp.c:8936
#, c-format
msgid "Job #%d is not complete."
msgstr "ã‚¸ãƒ§ãƒ–ç•ªå· %d ã¯å®Œäº†ã—ã¦ã„ã¾ã›ã‚“。"
-#: scheduler/ipp.c:3014
#, c-format
msgid "Job #%d is not held for authentication."
msgstr "ã‚¸ãƒ§ãƒ–ç•ªå· %d ã¯èªè¨¼ã®ãŸã‚ã«ä¿ç•™ã•ã‚Œã¦ã„ã¾ã›ã‚“。"
-#: scheduler/ipp.c:8710
#, c-format
msgid "Job #%d is not held."
msgstr "ã‚¸ãƒ§ãƒ–ç•ªå· %d ã¯ä¿ç•™ã•ã‚Œã¦ã„ã¾ã›ã‚“。"
-#: cgi-bin/ipp-var.c:1035
msgid "Job Completed"
msgstr "ジョブ完了"
-#: cgi-bin/ipp-var.c:1033
msgid "Job Created"
msgstr "ジョブ作æˆ"
-#: cgi-bin/ipp-var.c:1039
msgid "Job Options Changed"
msgstr "ジョブオプション変更"
-#: cgi-bin/ipp-var.c:1037
msgid "Job Stopped"
msgstr "ジョブ中止"
-#: scheduler/ipp.c:9975
msgid "Job is completed and cannot be changed."
msgstr "ジョブã¯å®Œäº†ã—変更ã§ãã¾ã›ã‚“。"
-#: cgi-bin/jobs.c:192
msgid "Job operation failed"
msgstr "ジョブæ“作失敗"
-#: scheduler/ipp.c:10011 scheduler/ipp.c:10028 scheduler/ipp.c:10039
msgid "Job state cannot be changed."
msgstr "ジョブã®çŠ¶æ…‹ã‚’変更ã§ãã¾ã›ã‚“。"
-#: scheduler/ipp.c:8802
msgid "Job subscriptions cannot be renewed."
msgstr "ジョブサブスクリプションを更新ã§ãã¾ã›ã‚“。"
-#: cgi-bin/jobs.c:97 cgi-bin/jobs.c:108 cgi-bin/jobs.c:189
msgid "Jobs"
msgstr "ジョブ"
-#: backend/lpd.c:177
msgid "LPD/LPR Host or Printer"
msgstr "LPD/LPR ホストã¾ãŸã¯ãƒ—リンター"
-#: ppdc/sample.c:230
msgid "Label Printer"
msgstr "ラベルプリンター"
-#: ppdc/sample.c:441
msgid "Label Top"
msgstr "ラベルトップ"
-#: scheduler/ipp.c:2061 scheduler/ipp.c:5489
#, c-format
msgid "Language \"%s\" not supported."
msgstr "言語 \"%s\" ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“。"
-#: ppdc/sample.c:164
msgid "Large Address"
msgstr "ラージアドレス"
-#: ppdc/sample.c:286
msgid "LaserJet Series PCL 4/5"
msgstr "LaserJet Series PCL 4/5"
-#: ppdc/sample.c:43
msgid "Letter Oversize"
msgstr "US レター (特大)"
-#: ppdc/sample.c:44
msgid "Letter Oversize Long Edge"
msgstr "US レター (特大) 長辺é€ã‚Š"
-#: ppdc/sample.c:236
msgid "Light"
msgstr "è–„ã„"
-#: cups/ppd.c:310
msgid "Line longer than the maximum allowed (255 characters)"
msgstr "1 è¡ŒãŒæœ€å¤§å€¤ (255 文字) を超ãˆã¦ã„ã¾ã™"
-#: cgi-bin/admin.c:2373
msgid "List Available Printers"
msgstr "使用å¯èƒ½ãªãƒ—リンター一覧"
-#: cups/localize.c:291
msgid "Load paper."
msgstr "用紙を補給ã—ã¦ãã ã•ã„。"
-#: ppdc/sample.c:264
msgid "Long-Edge (Portrait)"
msgstr "長辺給紙 (縦å‘ã)"
-#: cups/http-support.c:1725
msgid "Looking for printer."
msgstr "プリンターを探ã—ã¦ã„ã¾ã™ã€‚"
-#: ppdc/sample.c:260
msgid "Manual Feed"
msgstr "手差ã—"
-#: cups/ppd.c:747 cups/ppd.c:1313
msgid "Media Size"
msgstr "用紙サイズ"
-#: cups/ppd.c:751 cups/ppd.c:1317 ppdc/sample.c:254
msgid "Media Source"
msgstr "給紙"
-#: ppdc/sample.c:359
msgid "Media Tracking"
msgstr "用紙ã®çµŒè·¯"
-#: cups/ppd.c:749 cups/ppd.c:1315 ppdc/sample.c:280
msgid "Media Type"
msgstr "用紙種類"
-#: ppdc/sample.c:237
msgid "Medium"
msgstr "紙質"
-#: cups/ppd.c:299
msgid "Memory allocation error"
msgstr "メモリー割り当ã¦ã‚¨ãƒ©ãƒ¼"
-#: cups/ppd.c:319
msgid "Missing CloseGroup"
msgstr "CloseGroup ãŒã‚ã‚Šã¾ã›ã‚“"
-#: cups/ppd.c:300
msgid "Missing PPD-Adobe-4.x header"
msgstr "PPD-Adobe-4.x ヘッダーãŒã‚ã‚Šã¾ã›ã‚“"
-#: cups/ppd.c:309
msgid "Missing asterisk in column 1"
msgstr "1 列目ã«ã‚¢ã‚¹ã‚¿ãƒªã‚¹ã‚¯ãŒã‚ã‚Šã¾ã›ã‚“"
-#: scheduler/ipp.c:5971
msgid "Missing document-number attribute."
msgstr "document-number 属性ãŒã‚ã‚Šã¾ã›ã‚“。"
-#: cups/adminutil.c:262
#, c-format
msgid "Missing double quote on line %d."
msgstr "%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 "form 変数ãŒã‚ã‚Šã¾ã›ã‚“。"
-#: scheduler/ipp.c:9328
msgid "Missing last-document attribute in request."
msgstr "リクエスト㫠last-document 属性ãŒã‚ã‚Šã¾ã›ã‚“。"
-#: cups/pwg-media.c:555
msgid "Missing media or media-col."
msgstr "media ã¾ãŸã¯ media-col ãŒã‚ã‚Šã¾ã›ã‚“。"
-#: cups/pwg-media.c:474
msgid "Missing media-size in media-col."
msgstr "media-col ã« media-size ãŒã‚ã‚Šã¾ã›ã‚“。"
-#: scheduler/ipp.c:6574
msgid "Missing notify-subscription-ids attribute."
msgstr "notify-subscription-ids 属性ãŒã‚ã‚Šã¾ã›ã‚“。"
-#: cups/ppd.c:317
msgid "Missing option keyword"
msgstr "オプションキーワードãŒã‚ã‚Šã¾ã›ã‚“"
-#: scheduler/ipp.c:3140 scheduler/ipp.c:3165
msgid "Missing requesting-user-name attribute."
msgstr "requesting-user-name 属性ãŒè¨­å®šã•ã‚Œã¦ã„ã¾ã›ã‚“。"
-#: scheduler/ipp.c:388
msgid "Missing required attributes."
msgstr "å¿…é ˆã®å±žæ€§ãŒè¨­å®šã•ã‚Œã¦ã„ã¾ã›ã‚“。"
-#: cups/http-support.c:1486
msgid "Missing resource in URI"
msgstr "URI ã®ãƒªã‚½ãƒ¼ã‚¹ãŒãªã„"
-#: cups/http-support.c:1480
msgid "Missing scheme in URI"
msgstr "URI ã®ã‚¹ã‚­ãƒ¼ãƒ ãŒãªã„"
-#: cups/adminutil.c:243
#, c-format
msgid "Missing value on line %d."
msgstr "%d è¡Œã«å€¤ãŒã‚ã‚Šã¾ã›ã‚“。"
-#: cups/ppd.c:301
msgid "Missing value string"
msgstr "値文字列ãŒã‚ã‚Šã¾ã›ã‚“"
-#: cups/pwg-media.c:462
msgid "Missing x-dimension in media-size."
msgstr "media-size ã« x-dimension ãŒã‚ã‚Šã¾ã›ã‚“。"
-#: cups/pwg-media.c:468
msgid "Missing y-dimension in media-size."
msgstr "media-size ã« y-dimension ãŒã‚ã‚Šã¾ã›ã‚“。"
-#: systemv/lpinfo.c:470
#, c-format
msgid ""
"Model: name = %s\n"
@@ -4879,217 +3780,163 @@ msgstr ""
" プリンタードライãƒãƒ¼ = %s\n"
" デãƒã‚¤ã‚¹ ID = %s"
-#: test/ippfind.c:2786
msgid "Modifiers:"
msgstr "修飾å­:"
-#: cgi-bin/admin.c:548
msgid "Modify Class"
msgstr "クラスã®å¤‰æ›´"
-#: cgi-bin/admin.c:860
msgid "Modify Printer"
msgstr "プリンターã®å¤‰æ›´"
-#: cgi-bin/ipp-var.c:410 cgi-bin/ipp-var.c:501
msgid "Move All Jobs"
msgstr "ã™ã¹ã¦ã®ã‚¸ãƒ§ãƒ–ã®ç§»å‹•"
-#: 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:1353
msgid "Moved Permanently"
msgstr "別ã®å ´æ‰€ã¸ç§»å‹•ã—ã¾ã—ãŸ"
-#: cups/ppd.c:298
msgid "NULL PPD file pointer"
msgstr "PPD ファイルãƒã‚¤ãƒ³ã‚¿ãƒ¼ãŒ NULL ã§ã™"
-#: cups/snmp.c:1005
msgid "Name OID uses indefinite length"
msgstr "OID åã¯é™å®šçš„ãªé•·ã•ã‚’使用ã—ã¾ã™"
-#: scheduler/ipp.c:1054
msgid "Nested classes are not allowed."
msgstr "入れå­ã«ãªã£ãŸã‚¯ãƒ©ã‚¹ã¯è¨±å¯ã•ã‚Œã¦ã„ã¾ã›ã‚“。"
-#: ppdc/sample.c:425
msgid "Never"
msgstr "Never"
-#: cups/ppd.c:1904
msgid "No"
msgstr "ã„ã„ãˆ"
-#: cups/http-support.c:1350
msgid "No Content"
msgstr "中身ãŒã‚ã‚Šã¾ã›ã‚“"
-#: cups/util.c:1123
msgid "No PPD name"
msgstr "PPD ã®åå‰ãŒã‚ã‚Šã¾ã›ã‚“"
-#: cups/snmp.c:999
msgid "No VarBind SEQUENCE"
msgstr "VarBind SEQUENCE ãŒã‚ã‚Šã¾ã›ã‚“"
-#: cups/adminutil.c:777
msgid "No Windows printer drivers are installed."
msgstr "Windows プリンタードライãƒãƒ¼ãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¦ã„ã¾ã›ã‚“。"
-#: cups/request.c:570 cups/request.c:933
msgid "No active connection"
msgstr "アクティブãªæŽ¥ç¶šã¯ã‚ã‚Šã¾ã›ã‚“"
-#: cups/request.c:350
msgid "No active connection."
msgstr "アクティブãªæŽ¥ç¶šã¯ã‚ã‚Šã¾ã›ã‚“。"
-#: scheduler/ipp.c:3418
#, c-format
msgid "No active jobs on %s."
msgstr "%s ã«ã¯ã‚¢ã‚¯ãƒ†ã‚£ãƒ–ãªã‚¸ãƒ§ãƒ–ã¯ã‚ã‚Šã¾ã›ã‚“。"
-#: scheduler/ipp.c:216
msgid "No attributes in request."
msgstr "リクエストã«å±žæ€§ãŒã‚ã‚Šã¾ã›ã‚“。"
-#: scheduler/ipp.c:3041
msgid "No authentication information provided."
msgstr "èªè¨¼æƒ…å ±ãŒæä¾›ã•ã‚Œã¦ã„ã¾ã›ã‚“。"
-#: cups/snmp.c:956
msgid "No community name"
msgstr "コミュニティåãŒã‚ã‚Šã¾ã›ã‚“"
-#: scheduler/ipp.c:5771
msgid "No default printer."
msgstr "デフォルトã®ãƒ—リンターã¯ã‚ã‚Šã¾ã›ã‚“。"
-#: cgi-bin/ipp-var.c:421 scheduler/ipp.c:7149
msgid "No destinations added."
msgstr "追加ã•ã‚ŒãŸå®›å…ˆã¯ã‚ã‚Šã¾ã›ã‚“。"
-#: backend/usb.c:200
msgid "No device URI found in argv[0] or in DEVICE_URI environment variable."
msgstr "argv[0] ã¾ãŸã¯ 環境変数 DEVICE_URI ã«ãƒ‡ãƒã‚¤ã‚¹ URI ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。"
-#: cups/snmp.c:986
msgid "No error-index"
msgstr "エラーインデックスãŒã‚ã‚Šã¾ã›ã‚“"
-#: cups/snmp.c:978
msgid "No error-status"
msgstr "エラーステータスãŒã‚ã‚Šã¾ã›ã‚“"
-#: scheduler/ipp.c:8091 scheduler/ipp.c:9342
msgid "No file in print request."
msgstr "å°åˆ·ãƒªã‚¯ã‚¨ã‚¹ãƒˆã«ãƒ•ã‚¡ã‚¤ãƒ«ãŒã‚ã‚Šã¾ã›ã‚“。"
-#: cups/util.c:817
msgid "No modification time"
msgstr "変更時刻ãŒã‚ã‚Šã¾ã›ã‚“"
-#: cups/snmp.c:1003
msgid "No name OID"
msgstr "OID åãŒã‚ã‚Šã¾ã›ã‚“"
-#: filter/rastertoepson.c:1132 filter/rastertohp.c:865
-#: filter/rastertolabel.c:1288
msgid "No pages were found."
msgstr " ページãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。"
-#: cups/util.c:811
msgid "No printer name"
msgstr "プリンターåãŒã‚ã‚Šã¾ã›ã‚“"
-#: cups/util.c:1647
msgid "No printer-uri found"
msgstr "プリンター URI ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“"
-#: cups/util.c:1631
msgid "No printer-uri found for class"
msgstr "クラスã®ãƒ—リンター URI ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“"
-#: scheduler/ipp.c:6179
msgid "No printer-uri in request."
msgstr "プリンター URI ã®ãƒªã‚¯ã‚¨ã‚¹ãƒˆãŒã‚ã‚Šã¾ã›ã‚“。"
-#: cups/http.c:2260
msgid "No request URI."
msgstr "リクエスト URI ãŒã‚ã‚Šã¾ã›ã‚“。"
-#: cups/http.c:2277
msgid "No request protocol version."
msgstr "リクエストプロトコルãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒã‚ã‚Šã¾ã›ã‚“。"
-#: cups/request.c:358
msgid "No request sent."
msgstr "リクエストãŒé€ã‚‰ã‚Œã¾ã›ã‚“ã§ã—ãŸã€‚"
-#: cups/snmp.c:970
msgid "No request-id"
msgstr "リクエストID ãŒã‚ã‚Šã¾ã›ã‚“"
-#: scheduler/ipp.c:5374
msgid "No subscription attributes in request."
msgstr "リクエストã«ã‚µãƒ–スクリプション属性ãŒã‚ã‚Šã¾ã›ã‚“。"
-#: scheduler/ipp.c:7476
msgid "No subscriptions found."
msgstr "サブスクリプションãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。"
-#: cups/snmp.c:994
msgid "No variable-bindings SEQUENCE"
msgstr "variable-bindings SEQUENCE ãŒã‚ã‚Šã¾ã›ã‚“"
-#: cups/snmp.c:949
msgid "No version number"
msgstr "ãƒãƒ¼ã‚¸ãƒ§ãƒ³åãŒã‚ã‚Šã¾ã›ã‚“"
-#: ppdc/sample.c:362
msgid "Non-continuous (Mark sensing)"
msgstr "éžé€£ç¶šã§ã™ (Mark sensing)"
-#: ppdc/sample.c:361
msgid "Non-continuous (Web sensing)"
msgstr "éžé€£ç¶šã§ã™ (Web sensing)"
-#: ppdc/sample.c:238
msgid "Normal"
msgstr "標準"
-#: cups/http-support.c:1372
msgid "Not Found"
msgstr "見ã¤ã‹ã‚Šã¾ã›ã‚“"
-#: cups/http-support.c:1384
msgid "Not Implemented"
msgstr "実装ã•ã‚Œã¦ã„ã¾ã›ã‚“"
-#: ppdc/sample.c:268
msgid "Not Installed"
msgstr "インストールã•ã‚Œã¦ã„ã¾ã›ã‚“"
-#: cups/http-support.c:1359
msgid "Not Modified"
msgstr "変更ã•ã‚Œã¦ã„ã¾ã›ã‚“"
-#: cups/http-support.c:1387
msgid "Not Supported"
msgstr "サãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“"
-#: scheduler/ipp.c:1490 scheduler/ipp.c:10572
msgid "Not allowed to print."
msgstr "å°åˆ·ãŒè¨±å¯ã•ã‚Œã¦ã„ã¾ã›ã‚“。"
-#: ppdc/sample.c:146
msgid "Note"
msgstr "注æ„"
-#: systemv/cupstestdsc.c:433
msgid ""
"Note: this program only validates the DSC comments, not the PostScript "
"itself."
@@ -5097,725 +3944,544 @@ msgstr ""
"注æ„: ã“ã®ãƒ—ログラム㯠DSC コメントを検証ã™ã‚‹ã ã‘ã§ã€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 "Off (片é¢)"
-#: 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 "オンラインヘルプ"
-#: cups/adminutil.c:944
#, c-format
msgid "Open of %s failed: %s"
msgstr "%s ã®ã‚ªãƒ¼ãƒ—ンã«å¤±æ•—ã—ã¾ã—ãŸ: %s"
-#: cups/ppd.c:304
msgid "OpenGroup without a CloseGroup first"
msgstr "OpenGroup ã®å‰ã«ã¾ãš CloseGroup ãŒå¿…è¦ã§ã™"
-#: cups/ppd.c:306
msgid "OpenUI/JCLOpenUI without a CloseUI/JCLCloseUI first"
msgstr "OpenUI/JCLOpenUI ã®å‰ã«ã¾ãš CloseUI/JCLCloseUI ãŒå¿…è¦ã§ã™"
-#: cgi-bin/admin.c:3611
msgid "Operation Policy"
msgstr "æ“作ãƒãƒªã‚·ãƒ¼"
-#: filter/pstops.c:2177
#, c-format
msgid "Option \"%s\" cannot be included via %%%%IncludeFeature."
msgstr "オプション \"%s\" 㯠%%%%IncludeFeature 経由ã§å«ã‚ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。"
-#: cgi-bin/admin.c:3261 cgi-bin/admin.c:3345
msgid "Options Installed"
msgstr "インストールã•ã‚ŒãŸã‚ªãƒ—ション"
-#: 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 "オプション:"
-#: cups/ppd-cache.c:125
msgid "Out of date PPD cache file."
msgstr "PPD キャッシュファイルãŒå¤ã™ãŽã¾ã™ã€‚"
-#: cups/ppd-cache.c:1410
msgid "Out of memory."
msgstr "メモリーãŒè¶³ã‚Šã¾ã›ã‚“。"
-#: cups/ppd.c:753 cups/ppd.c:1319
msgid "Output Mode"
msgstr "出力モード"
-#: cups/localize.c:316
msgid "Output bin is almost full."
msgstr "排紙ビンãŒã»ã¨ã‚“ã©æº€æ¯ã§ã™ã€‚"
-#: cups/localize.c:318
msgid "Output bin is full."
msgstr "排紙ビンãŒæº€æ¯ã§ã™ã€‚"
-#: cups/localize.c:314
msgid "Output bin is missing."
msgstr "排紙ビンãŒã‚ã‚Šã¾ã›ã‚“。"
-#: systemv/cupstestdsc.c:399
msgid "PASS"
msgstr "åˆæ ¼"
-#: ppdc/sample.c:252
msgid "PCL Laser Printer"
msgstr "PCL レーザープリンター"
-#: ppdc/sample.c:149
msgid "PRC16K"
msgstr "PRC16K"
-#: ppdc/sample.c:150
msgid "PRC16K Long Edge"
msgstr "PRC16K 長辺é€ã‚Š"
-#: ppdc/sample.c:151
msgid "PRC32K"
msgstr "PRC32K"
-#: ppdc/sample.c:154
msgid "PRC32K Long Edge"
msgstr "PRC32K 長辺é€ã‚Š"
-#: ppdc/sample.c:152
msgid "PRC32K Oversize"
msgstr "PRC32K (特大)"
-#: ppdc/sample.c:153
msgid "PRC32K Oversize Long Edge"
msgstr "PRC32K (特大) 長辺é€ã‚Š"
-#: cups/snmp.c:966
msgid "Packet does not contain a Get-Response-PDU"
msgstr "パケット㌠Get-Response-PDU ã‚’å«ã‚“ã§ã„ã¾ã›ã‚“"
-#: cups/snmp.c:945
msgid "Packet does not start with SEQUENCE"
msgstr "パケット㌠SEQUENCE ã‹ã‚‰å§‹ã¾ã‚Šã¾ã›ã‚“"
-#: 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 "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 "%s ã®ãƒ‘スワード (%s 上)? "
-#: systemv/cupsaddsmb.c:252
#, c-format
msgid "Password for %s required to access %s via SAMBA: "
msgstr "%s ã®ãƒ‘スワード (SAMBA 経由㧠%s ã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ã®ã«å¿…è¦):"
-#: cgi-bin/classes.c:159
msgid "Pause Class"
msgstr "クラスã®ä¼‘æ­¢"
-#: cgi-bin/printers.c:162
msgid "Pause Printer"
msgstr "プリンターã®ä¼‘æ­¢"
-#: ppdc/sample.c:443
msgid "Peel-Off"
msgstr "Peel-Off"
-#: ppdc/sample.c:160
msgid "Photo"
msgstr "写真"
-#: ppdc/sample.c:161
msgid "Photo Labels"
msgstr "写真ラベル"
-#: ppdc/sample.c:281
msgid "Plain Paper"
msgstr "普通紙"
-#: cgi-bin/admin.c:3279 cgi-bin/admin.c:3560
msgid "Policies"
msgstr "ãƒãƒªã‚·ãƒ¼"
-#: cgi-bin/admin.c:3286 cgi-bin/admin.c:3629 cgi-bin/admin.c:3642
msgid "Port Monitor"
msgstr "ãƒãƒ¼ãƒˆãƒ¢ãƒ‹ã‚¿ãƒ¼"
-#: ppdc/sample.c:270
msgid "PostScript Printer"
msgstr "PostScript プリンター"
-#: ppdc/sample.c:147
msgid "Postcard"
msgstr "ãƒã‚¬ã‚­"
-#: 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 "ãƒã‚¬ã‚­ 長辺é€ã‚Š"
-#: backend/ipp.c:961 backend/ipp.c:969
msgid "Preparing to print."
msgstr "å°åˆ·æº–備中ã§ã™ã€‚"
-#: ppdc/sample.c:290
msgid "Print Density"
msgstr "å°åˆ·å¯†åº¦"
-#: cups/notify.c:82
msgid "Print Job:"
msgstr "ジョブã®å°åˆ·:"
-#: ppdc/sample.c:335
msgid "Print Mode"
msgstr "å°åˆ·ãƒ¢ãƒ¼ãƒ‰"
-#: ppdc/sample.c:378
msgid "Print Rate"
msgstr "å°åˆ·ãƒ¬ãƒ¼ãƒˆ"
-#: cgi-bin/printers.c:171
msgid "Print Self-Test Page"
msgstr "自己テストページã®å°åˆ·"
-#: ppdc/sample.c:322
msgid "Print Speed"
msgstr "å°åˆ·é€Ÿåº¦"
-#: cgi-bin/ipp-var.c:777
msgid "Print Test Page"
msgstr "テストページã®å°åˆ·"
-#: ppdc/sample.c:351
msgid "Print and Cut"
msgstr "プリントã—ã¦ã‚«ãƒƒãƒˆ"
-#: ppdc/sample.c:339
msgid "Print and Tear"
msgstr "プリントã—ã¦åˆ‡ã‚Šå–ã‚‹"
-#: backend/socket.c:429 backend/usb-unix.c:184
msgid "Print file sent."
msgstr "プリントファイルãŒé€ã‚‰ã‚Œã¾ã—ãŸã€‚"
-#: backend/ipp.c:2172
msgid "Print job canceled at printer."
msgstr "å°åˆ·ã‚¸ãƒ§ãƒ–ã¯ãƒ—リンターã§ã‚­ãƒ£ãƒ³ã‚»ãƒ«ã•ã‚Œã¾ã—ãŸã€‚"
-#: backend/ipp.c:2164
msgid "Print job too large."
msgstr "å°åˆ·ã‚¸ãƒ§ãƒ–ãŒå¤§ãã™ãŽã¾ã™ã€‚"
-#: backend/ipp.c:1642
msgid "Print job was not accepted."
msgstr "å°åˆ·ã‚¸ãƒ§ãƒ–ãŒå—ã‘付ã‘られã¾ã›ã‚“ã§ã—ãŸã€‚"
-#: cgi-bin/ipp-var.c:1027
msgid "Printer Added"
msgstr "追加ã•ã‚ŒãŸãƒ—リンター"
-#: ppdc/sample.c:255
msgid "Printer Default"
msgstr "デフォルトã®ãƒ—リンター"
-#: cgi-bin/ipp-var.c:1031
msgid "Printer Deleted"
msgstr "削除ã•ã‚ŒãŸãƒ—リンター"
-#: cgi-bin/ipp-var.c:1029
msgid "Printer Modified"
msgstr "変更ã•ã‚ŒãŸãƒ—リンター"
-#: cgi-bin/ipp-var.c:1025
msgid "Printer Paused"
msgstr "プリンターã®ä¼‘æ­¢"
-#: ppdc/sample.c:289
msgid "Printer Settings"
msgstr "プリンター設定"
-#: backend/ipp.c:2167
msgid "Printer cannot print supplied content."
msgstr "プリンターã¯å—ä¿¡ã—ãŸå†…容をå°åˆ·ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚"
-#: backend/ipp.c:2170
msgid "Printer cannot print with supplied options."
msgstr "指定ã•ã‚ŒãŸã‚ªãƒ—ションã§ã¯ãƒ—リンターã¯å°åˆ·ã§ãã¾ã›ã‚“。"
-#: cups/notify.c:126
msgid "Printer:"
msgstr "プリンター:"
-#: cgi-bin/printers.c:196 cgi-bin/printers.c:324
msgid "Printers"
msgstr "プリンター"
-#: filter/rastertoepson.c:1078 filter/rastertohp.c:806
-#: filter/rastertolabel.c:1235
#, c-format
msgid "Printing page %d, %u%% complete."
msgstr "ページ %d, %u%% ã®å°åˆ·ãŒå®Œäº†ã—ã¾ã—ãŸã€‚"
-#: ppdc/sample.c:155
msgid "Quarto"
msgstr "Quarto"
-#: scheduler/ipp.c:1485 scheduler/ipp.c:10567
msgid "Quota limit reached."
msgstr "クォータã®åˆ¶é™ã«é”ã—ã¾ã—ãŸã€‚"
-#: berkeley/lpq.c:490
msgid "Rank Owner Job File(s) Total Size"
msgstr "ランク 所有者 ジョブ ファイル åˆè¨ˆã‚µã‚¤ã‚º"
-#: cgi-bin/classes.c:163 cgi-bin/printers.c:166
msgid "Reject Jobs"
msgstr "ジョブã®æ‹’å¦"
-#: backend/lpd.c:1024 backend/lpd.c:1156
#, c-format
msgid "Remote host did not accept control file (%d)."
msgstr "リモートホストãŒã‚³ãƒ³ãƒˆãƒ­ãƒ¼ãƒ«ãƒ•ã‚¡ã‚¤ãƒ«ã‚’å—ã‘付ã‘ã¾ã›ã‚“ã§ã—㟠(%d)。"
-#: backend/lpd.c:1109
#, c-format
msgid "Remote host did not accept data file (%d)."
msgstr "リモートホストãŒãƒ‡ãƒ¼ã‚¿ãƒ•ã‚¡ã‚¤ãƒ«ã‚’å—ã‘付ã‘ã¾ã›ã‚“ã§ã—㟠(%d)。"
-#: ppdc/sample.c:423
msgid "Reprint After Error"
msgstr "エラー後ã®å†å°åˆ·"
-#: cups/http-support.c:1375
msgid "Request Entity Too Large"
msgstr "è¦æ±‚ã™ã‚‹ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ãŒå¤§ãã™ãŽã¾ã™"
-#: cups/ppd.c:755 cups/ppd.c:1321 ppdc/sample.c:231
msgid "Resolution"
msgstr "解åƒåº¦"
-#: cgi-bin/classes.c:157
msgid "Resume Class"
msgstr "クラスをå†é–‹ã™ã‚‹"
-#: cgi-bin/printers.c:159
msgid "Resume Printer"
msgstr "プリンターをå†é–‹ã™ã‚‹"
-#: ppdc/sample.c:165
msgid "Return Address"
msgstr "返信用ラベル"
-#: ppdc/sample.c:444
msgid "Rewind"
msgstr "å·»ãå–ã‚Š"
-#: cups/adminutil.c:2041
#, c-format
msgid "Running command: %s %s -N -A %s -c '%s'"
msgstr "コマンドを実行中: %s %s -N -A %s -c '%s'"
-#: cups/snmp.c:947
msgid "SEQUENCE uses indefinite length"
msgstr "SEQUENCE ã¯ä¸å®šé•·ã‚’使用ã—ã¦ã„ã¾ã™"
-#: cups/http-support.c:1399
msgid "SSL/TLS Negotiation Error"
msgstr "SSL/TLS ã®ãƒã‚´ã‚·ã‚¨ãƒ¼ã‚·ãƒ§ãƒ³ã‚¨ãƒ©ãƒ¼"
-#: cups/http-support.c:1356
msgid "See Other"
msgstr "残りを見ã¦ãã ã•ã„"
-#: backend/usb-darwin.c:552 backend/usb-libusb.c:346
msgid "Sending data to printer."
msgstr "データをプリンターã«é€ä¿¡ã—ã¦ã„ã¾ã™ã€‚"
-#: cgi-bin/ipp-var.c:1041
msgid "Server Restarted"
msgstr "å†èµ·å‹•ã•ã‚ŒãŸã‚µãƒ¼ãƒãƒ¼"
-#: cgi-bin/ipp-var.c:1047
msgid "Server Security Auditing"
msgstr "サーãƒãƒ¼ã®ã‚»ã‚­ãƒ¥ãƒªãƒ†ã‚£ãƒ¼ç›£æŸ»"
-#: cgi-bin/ipp-var.c:1043
msgid "Server Started"
msgstr "開始ã•ã‚ŒãŸã‚µãƒ¼ãƒãƒ¼"
-#: cgi-bin/ipp-var.c:1045
msgid "Server Stopped"
msgstr "åœæ­¢ã•ã‚ŒãŸã‚µãƒ¼ãƒãƒ¼"
-#: 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: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:3015
msgid "Set As Server Default"
msgstr "サーãƒãƒ¼ã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã«è¨­å®š"
-#: cgi-bin/admin.c:3115
msgid "Set Class Options"
msgstr "クラスオプションã®è¨­å®š"
-#: cgi-bin/admin.c:3115 cgi-bin/admin.c:3289 cgi-bin/admin.c:3671
msgid "Set Printer Options"
msgstr "プリンターオプションã®è¨­å®š"
-#: cgi-bin/admin.c:3841 cgi-bin/admin.c:3885 cgi-bin/admin.c:3903
msgid "Set Publishing"
msgstr "公開ã®è¨­å®š"
-#: ppdc/sample.c:166
msgid "Shipping Address"
msgstr "発é€å…ˆãƒ©ãƒ™ãƒ«"
-#: ppdc/sample.c:265
msgid "Short-Edge (Landscape)"
msgstr "短辺 (横原稿)"
-#: ppdc/sample.c:283
msgid "Special Paper"
msgstr "特殊紙"
-#: backend/lpd.c:1065
#, c-format
msgid "Spooling job, %.0f%% complete."
msgstr "ジョブをスプール中ã€%.0f%% 完了ã—ã¾ã—ãŸã€‚"
-#: ppdc/sample.c:336
msgid "Standard"
msgstr "標準"
#. TRANSLATORS: Banner/cover sheet before the print job.
-#: cgi-bin/admin.c:3532
msgid "Starting Banner"
msgstr "開始ãƒãƒŠãƒ¼"
-#: filter/rastertoepson.c:1054 filter/rastertohp.c:782
-#: filter/rastertolabel.c:1211
#, c-format
msgid "Starting page %d."
msgstr "ページ %d を開始ã—ã¦ã„ã¾ã™ã€‚"
-#: ppdc/sample.c:156
msgid "Statement"
msgstr "記述"
-#: 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 "ã‚µãƒ–ã‚¹ã‚¯ãƒªãƒ—ã‚·ãƒ§ãƒ³ç•ªå· %d ã¯å­˜åœ¨ã—ã¾ã›ã‚“。"
-#: test/ippfind.c:2798
msgid "Substitutions:"
msgstr "ç½®æ›:"
-#: ppdc/sample.c:157
msgid "Super A"
msgstr "スーパー A"
-#: ppdc/sample.c:158
msgid "Super B"
msgstr "スーパー B"
-#: ppdc/sample.c:162
msgid "Super B/A3"
msgstr "スーパー B/A3"
-#: cups/http-support.c:1338
msgid "Switching Protocols"
msgstr "プロトコルã®å¤‰æ›´"
-#: ppdc/sample.c:159
msgid "Tabloid"
msgstr "タブロイド"
-#: ppdc/sample.c:45
msgid "Tabloid Oversize"
msgstr "タブロイド (特大)"
-#: ppdc/sample.c:46
msgid "Tabloid Oversize Long Edge"
msgstr "タブロイド (特大) 長辺é€ã‚Š"
-#: ppdc/sample.c:337
msgid "Tear"
msgstr "Tear"
-#: ppdc/sample.c:442
msgid "Tear-Off"
msgstr "Tear-Off"
-#: ppdc/sample.c:383
msgid "Tear-Off Adjust Position"
msgstr "Tear-Off ä½ç½®èª¿ç¯€"
-#: scheduler/ipp.c:1321
#, c-format
msgid "The \"%s\" attribute is required for print jobs."
msgstr "å°åˆ·ã‚¸ãƒ§ãƒ–ã« \"%s\" 属性ãŒå¿…è¦ã§ã™ã€‚"
-#: 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 "%s 属性ã¯ã€ã‚¸ãƒ§ãƒ– ID ã¨ä¸€ç·’ã«ä½¿ã†ã“ã¨ã¯ã§ãã¾ã›ã‚“。"
-#: scheduler/ipp.c:1297
#, c-format
msgid ""
-"The '%s' Job Description attribute cannot be supplied in a job creation "
-"request."
-msgstr "'%s' Job Description 属性ã¯ã‚¸ãƒ§ãƒ–作æˆè¦æ±‚ã®ä¸­ã§æŒ‡å®šã§ãã¾ã›ã‚“。"
+"The '%s' Job Status attribute cannot be supplied in a job creation request."
+msgstr ""
-#: scheduler/ipp.c:5183
#, c-format
msgid ""
"The '%s' operation attribute cannot be supplied in a Create-Job request."
msgstr "%s æ“作属性ã¯ã€Create-Job リクエストã®ä¸­ã§ä½¿ã†ã“ã¨ã¯ã§ãã¾ã›ã‚“。"
-#: scheduler/ipp.c:6820
#, c-format
msgid "The PPD file \"%s\" could not be found."
msgstr "PPD ファイル \"%s\" ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。"
-#: scheduler/ipp.c:6807
#, c-format
msgid "The PPD file \"%s\" could not be opened: %s"
msgstr "PPD ファイル \"%s\" ã‚’é–‹ã‘ã¾ã›ã‚“ã§ã—ãŸ: %s"
-#: filter/rastertoepson.c:1023 filter/rastertohp.c:753
-#: filter/rastertolabel.c:1175
msgid "The PPD file could not be opened."
msgstr "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 (#)."
-msgstr "クラスå㯠127 文字以内ã®è¡¨ç¤ºå¯èƒ½æ–‡å­—ã‹ã‚‰ãªã‚Šã€ç©ºç™½ã€ã‚¹ãƒ©ãƒƒã‚·ãƒ¥ (/)ã€ãƒãƒƒã‚·ãƒ¥ (#) ã‚’å«ã‚“ã§ã¯ãªã‚Šã¾ã›ã‚“。"
+msgstr ""
+"クラスå㯠127 文字以内ã®è¡¨ç¤ºå¯èƒ½æ–‡å­—ã‹ã‚‰ãªã‚Šã€ç©ºç™½ã€ã‚¹ãƒ©ãƒƒã‚·ãƒ¥ (/)ã€ãƒãƒƒ"
+"シュ (#) ã‚’å«ã‚“ã§ã¯ãªã‚Šã¾ã›ã‚“。"
-#: cups/localize.c:338
msgid "The developer unit needs to be replaced."
msgstr "ç¾åƒãƒ¦ãƒ‹ãƒƒãƒˆã®äº¤æ›ãŒå¿…è¦ã§ã™ã€‚"
-#: cups/localize.c:336
msgid "The developer unit will need to be replaced soon."
msgstr "ã‚‚ã†ã™ãç¾åƒãƒ¦ãƒ‹ãƒƒãƒˆã®äº¤æ›æ™‚期ã§ã™ã€‚"
-#: cups/localize.c:328
msgid "The fuser's temperature is high."
msgstr "定ç€å™¨ã®æ¸©åº¦ãŒé«˜ã™ãŽã¾ã™ã€‚"
-#: cups/localize.c:330
msgid "The fuser's temperature is low."
msgstr "定ç€å™¨ã®æ¸©åº¦ãŒä½Žã™ãŽã¾ã™ã€‚"
-#: scheduler/ipp.c:2088
msgid ""
"The notify-lease-duration attribute cannot be used with job subscriptions."
msgstr ""
"notify-lease-duration 属性ã¯ã€ã‚¸ãƒ§ãƒ–サブスクリプションã¨ä¸€ç·’ã«ä½¿ã†ã“ã¨ã¯ã§ã"
"ã¾ã›ã‚“。"
-#: scheduler/ipp.c:2071 scheduler/ipp.c:5499
#, c-format
msgid "The notify-user-data value is too large (%d > 63 octets)."
msgstr "notify-user-data 値ãŒå¤§ãã™ãŽã¾ã™ (%d > 63 オクテット)。"
-#: cups/localize.c:334
msgid "The optical photoconductor needs to be replaced."
msgstr "感光体ã®äº¤æ›ãŒå¿…è¦ã§ã™ã€‚"
-#: cups/localize.c:332
msgid "The optical photoconductor will need to be replaced soon."
msgstr "ã‚‚ã†ã™ã感光体ã®äº¤æ›æ™‚期ã§ã™ã€‚"
-#: backend/ipp.c:981
msgid "The printer configuration is incorrect or the printer no longer exists."
msgstr "プリンターã®è¨­å®šãŒæ­£ã—ããªã„ã‹ãƒ—リンターã¯ã™ã§ã«å­˜åœ¨ã—ã¾ã›ã‚“。"
-#: backend/lpd.c:627 backend/lpd.c:1017 backend/lpd.c:1099 backend/lpd.c:1149
msgid "The printer did not respond."
msgstr "プリンターãŒå¿œç­”ã—ã¾ã›ã‚“。"
-#: 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 "プリンターã¯ä½¿ç”¨ä¸­ã§ã™ã€‚"
-#: cups/localize.c:320
msgid "The printer is low on ink."
msgstr "インク残é‡ãŒæ®‹ã‚Šå°‘ãªããªã£ã¦ã„ã¾ã™ã€‚"
-#: cups/localize.c:298
msgid "The printer is low on toner."
msgstr "トナー残é‡ãŒæ®‹ã‚Šå°‘ãªããªã£ã¦ã„ã¾ã™ã€‚"
-#: backend/runloop.c:243 backend/runloop.c:363 cups/localize.c:296
msgid "The printer is not connected."
msgstr "プリンターã¯æŽ¥ç¶šã•ã‚Œã¦ã„ã¾ã›ã‚“。"
-#: 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:385
msgid "The printer is now connected."
msgstr "プリンターãŒæŽ¥ç¶šã•ã‚Œã¾ã—ãŸã€‚"
-#: backend/usb-darwin.c:1300
msgid "The printer is now online."
msgstr "プリンターã¯ç¾åœ¨ã‚ªãƒ³ãƒ©ã‚¤ãƒ³ã§ã™ã€‚"
-#: backend/usb-darwin.c:1321
msgid "The printer is offline."
msgstr "プリンターã¯ã‚ªãƒ•ãƒ©ã‚¤ãƒ³ã§ã™ã€‚"
-#: backend/ipp.c:818 backend/lpd.c:829 backend/socket.c:372
msgid "The printer is unreachable at this time."
msgstr "プリンターã«ã¯ç¾åœ¨åˆ°é”ã§ãã¾ã›ã‚“。"
-#: cups/localize.c:322
msgid "The printer may be out of ink."
msgstr "プリンターã®ã‚¤ãƒ³ã‚¯ãŒãªããªã£ã¦ã„るよã†ã§ã™ã€‚"
-#: cups/localize.c:300
msgid "The printer may be out of toner."
msgstr "プリンターã®ãƒˆãƒŠãƒ¼ãŒãªããªã£ã¦ã„るよã†ã§ã™ã€‚"
-#: 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:909
msgid ""
"The printer name may only contain up to 127 printable characters and may not "
"contain spaces, slashes (/), or the pound sign (#)."
-msgstr "プリンターå㯠127 文字以内ã®è¡¨ç¤ºå¯èƒ½æ–‡å­—ã‹ã‚‰æˆã‚Šã€ç©ºç™½ã€ã‚¹ãƒ©ãƒƒã‚·ãƒ¥ (/)ã€ãƒãƒƒã‚·ãƒ¥ (#) ã‚’å«ã‚“ã§ã¯ãªã‚Šã¾ã›ã‚“。"
-
-#: 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
+msgstr ""
+"プリンターå㯠127 文字以内ã®è¡¨ç¤ºå¯èƒ½æ–‡å­—ã‹ã‚‰æˆã‚Šã€ç©ºç™½ã€ã‚¹ãƒ©ãƒƒã‚·ãƒ¥ (/)ã€ãƒãƒƒ"
+"シュ (#) ã‚’å«ã‚“ã§ã¯ãªã‚Šã¾ã›ã‚“。"
+
msgid "The printer or class does not exist."
msgstr "プリンターã¾ãŸã¯ã‚¯ãƒ©ã‚¹ã¯å­˜åœ¨ã—ã¾ã›ã‚“。"
-#: scheduler/ipp.c:1234
msgid "The printer or class is not shared."
msgstr "プリンターã¾ãŸã¯ã‚¯ãƒ©ã‚¹ã¯å…±æœ‰ã§ãã¾ã›ã‚“。"
-#: cups/localize.c:302
msgid "The printer's cover is open."
msgstr "プリンターã®ã‚«ãƒãƒ¼ãŒé–‹ã„ã¦ã„ã¾ã™ã€‚"
-#: cups/localize.c:306
msgid "The printer's door is open."
msgstr "プリンターã®ãƒ‰ã‚¢ãŒé–‹ã„ã¦ã„ã¾ã™ã€‚"
-#: cups/localize.c:304
msgid "The printer's interlock is open."
msgstr "プリンターã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ­ãƒƒã‚¯ãŒé–‹ã„ã¦ã„ã¾ã™ã€‚"
-#: cups/localize.c:324
msgid "The printer's waste bin is almost full."
msgstr "プリンターã®å»ƒã‚¤ãƒ³ã‚¯ã¾ãŸã¯å»ƒãƒˆãƒŠãƒ¼å®¹å™¨ãŒã»ã¨ã‚“ã©ä¸€æ¯ã§ã™ã€‚"
-#: cups/localize.c:326
msgid "The printer's waste bin is full."
msgstr "プリンターã®å»ƒã‚¤ãƒ³ã‚¯ã¾ãŸã¯å»ƒãƒˆãƒŠãƒ¼å®¹å™¨ãŒä¸€æ¯ã§ã™ã€‚"
-#: scheduler/ipp.c:894 scheduler/ipp.c:2252
#, c-format
msgid "The printer-uri \"%s\" contains invalid characters."
msgstr "printer-uri \"%s\" ã«ã¯ã€ç„¡åŠ¹ãªæ–‡å­—ãŒå«ã¾ã‚Œã¦ã„ã¾ã™ã€‚"
-#: scheduler/ipp.c:3182
msgid "The printer-uri attribute is required."
msgstr "printer-uri 属性ã¯å¿…é ˆã§ã™ã€‚"
-#: scheduler/ipp.c:878
msgid ""
"The printer-uri must be of the form \"ipp://HOSTNAME/classes/CLASSNAME\"."
msgstr ""
"printer-uri ã¯ã€\"ipp://ホストå/classes/クラスå\" å½¢å¼ã§ãªã‘ã‚Œã°ãªã‚Šã¾ã›"
"ん。"
-#: scheduler/ipp.c:2236
msgid ""
"The printer-uri must be of the form \"ipp://HOSTNAME/printers/PRINTERNAME\"."
msgstr ""
"printer-uri 㯠\"ipp://ホストå/printers/プリンターå\" å½¢å¼ã§ãªã‘ã‚Œã°ãªã‚Šã¾"
"ã›ã‚“。"
-#: cgi-bin/admin.c:452
msgid ""
"The subscription name may not contain spaces, slashes (/), question marks "
"(?), or the pound sign (#)."
-msgstr "サブスクリプションåã«ã¯ã€ã‚¹ãƒšãƒ¼ã‚¹ã€ã‚¹ãƒ©ãƒƒã‚·ãƒ¥ (/)ã€ç–‘å•åºœ (?)ã€ãƒãƒƒã‚·ãƒ¥ (#) を使用ã—ãªã„ã§ãã ã•ã„。"
+msgstr ""
+"サブスクリプションåã«ã¯ã€ã‚¹ãƒšãƒ¼ã‚¹ã€ã‚¹ãƒ©ãƒƒã‚·ãƒ¥ (/)ã€ç–‘å•åºœ (?)ã€ãƒãƒƒã‚·ãƒ¥ (#) "
+"を使用ã—ãªã„ã§ãã ã•ã„。"
-#: scheduler/client.c:2232
msgid ""
"The web interface is currently disabled. Run \"cupsctl WebInterface=yes\" to "
"enable it."
@@ -5823,637 +4489,490 @@ msgstr ""
"Web インターフェイスãŒç¾åœ¨ç„¡åŠ¹ã«ãªã£ã¦ã„ã¾ã™ã€‚有効ã«ã™ã‚‹ã«ã¯ \"cupsctl "
"WebInterface=yes\" を実行ã—ã¦ãã ã•ã„。"
-#: scheduler/ipp.c:6314
#, c-format
msgid "The which-jobs value \"%s\" is not supported."
msgstr "which-jobs ã®å€¤ \"%s\" ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“。"
-#: scheduler/ipp.c:5577
msgid "There are too many subscriptions."
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:271 backend/usb-libusb.c:325
msgid "There was an unrecoverable USB error."
msgstr "回復ä¸å¯èƒ½ãª USB ã®ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¦ã„ã¾ã™ã€‚"
-#: ppdc/sample.c:430
msgid "Thermal Transfer Media"
msgstr "熱転写メディア"
-#: scheduler/ipp.c:1479
msgid "Too many active jobs."
msgstr "アクティブãªã‚¸ãƒ§ãƒ–ãŒå¤šã™ãŽã¾ã™ã€‚"
-#: scheduler/ipp.c:1373
#, c-format
msgid "Too many job-sheets values (%d > 2)."
msgstr "job-sheets 値ãŒå¤šã™ãŽã¾ã™ (%d > 2)。"
-#: scheduler/ipp.c:2537
#, c-format
msgid "Too many printer-state-reasons values (%d > %d)."
msgstr "printer-state-reasons 値ãŒå¤šã™ãŽã¾ã™ (%d > %d)。"
-#: ppdc/sample.c:284
msgid "Transparency"
msgstr "OHP シート"
-#: ppdc/sample.c:279
msgid "Tray"
msgstr "トレイ"
-#: ppdc/sample.c:256
msgid "Tray 1"
msgstr "トレイ 1"
-#: ppdc/sample.c:257
msgid "Tray 2"
msgstr "トレイ 2"
-#: ppdc/sample.c:258
msgid "Tray 3"
msgstr "トレイ 3"
-#: ppdc/sample.c:259
msgid "Tray 4"
msgstr "トレイ 4"
-#: cups/http-support.c:1378
msgid "URI Too Long"
msgstr "URI ãŒé•·ã™ãŽã¾ã™"
-#: cups/http-support.c:1453
msgid "URI too large"
msgstr "URI ãŒé•·ã™ãŽã‚‹"
-#: ppdc/sample.c:138
msgid "US Ledger"
msgstr "US レジャー"
-#: ppdc/sample.c:139
msgid "US Legal"
msgstr "US リーガル"
-#: ppdc/sample.c:140
msgid "US Legal Oversize"
msgstr "US リーガル (特大)"
-#: ppdc/sample.c:141
msgid "US Letter"
msgstr "US レター"
-#: ppdc/sample.c:142
msgid "US Letter Long Edge"
msgstr "US レター 長辺é€ã‚Š"
-#: ppdc/sample.c:143
msgid "US Letter Oversize"
msgstr "US レター (特大)"
-#: ppdc/sample.c:144
msgid "US Letter Oversize Long Edge"
msgstr "US レター (特大) 長辺é€ã‚Š"
-#: ppdc/sample.c:145
msgid "US Letter Small"
msgstr "US レター (å°)"
-#: cgi-bin/admin.c:1939 cgi-bin/admin.c:1952 cgi-bin/admin.c:1976
msgid "Unable to access cupsd.conf file"
msgstr "cupsd.conf ファイルã«ã‚¢ã‚¯ã‚»ã‚¹ã§ãã¾ã›ã‚“"
-#: cgi-bin/help.c:133
msgid "Unable to access help file."
msgstr "ヘルプファイルã«ã‚¢ã‚¯ã‚»ã‚¹ã§ãã¾ã›ã‚“。"
-#: cgi-bin/admin.c:504
msgid "Unable to add RSS subscription"
msgstr "RSS 購読を追加ã§ãã¾ã›ã‚“"
-#: cgi-bin/admin.c:792
msgid "Unable to add class"
msgstr "クラスを追加ã§ãã¾ã›ã‚“"
-#: backend/ipp.c:1796
msgid "Unable to add document to print job."
msgstr "ドキュメントをå°åˆ·ã‚¸ãƒ§ãƒ–ã«è¿½åŠ ã§ãã¾ã›ã‚“。"
-#: scheduler/ipp.c:1537
#, c-format
msgid "Unable to add job for destination \"%s\"."
msgstr "宛先 \"%s\"ã«ã‚¸ãƒ§ãƒ–を追加ã§ãã¾ã›ã‚“。"
-#: cgi-bin/admin.c:1037 cgi-bin/admin.c:1399
msgid "Unable to add printer"
msgstr "プリンターを追加ã§ãã¾ã›ã‚“"
-#: scheduler/ipp.c:1164
msgid "Unable to allocate memory for file types."
msgstr "ファイルタイプ用ã«ãƒ¡ãƒ¢ãƒªãƒ¼ã‚’割り当ã¦ã‚‰ã‚Œã¾ã›ã‚“。"
-#: filter/pstops.c:418
msgid "Unable to allocate memory for page info"
msgstr "ページ情報ã®ãƒ¡ãƒ¢ãƒªãƒ¼å‰²ã‚Šå½“ã¦ãŒã§ãã¾ã›ã‚“"
-#: filter/pstops.c:412
msgid "Unable to allocate memory for pages array"
msgstr "ページアレイã®ãƒ¡ãƒ¢ãƒªãƒ¼å‰²ã‚Šå½“ã¦ãŒã§ãã¾ã›ã‚“"
-#: cgi-bin/admin.c:1505
msgid "Unable to cancel RSS subscription"
msgstr "RSS 購読をキャンセルã§ãã¾ã›ã‚“"
-#: backend/ipp.c:2077 backend/ipp.c:2512
msgid "Unable to cancel print job."
msgstr "プリンターを変更ã§ãã¾ã›ã‚“。"
-#: cgi-bin/admin.c:2970
msgid "Unable to change printer"
msgstr "プリンターを変更ã§ãã¾ã›ã‚“"
-#: cgi-bin/admin.c:3886
msgid "Unable to change printer-is-shared attribute"
msgstr "printer-is-shared 属性を変更ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“"
-#: cgi-bin/admin.c:1637 cgi-bin/admin.c:1779
msgid "Unable to change server settings"
msgstr "サーãƒãƒ¼ã®è¨­å®šã‚’変更ã§ãã¾ã›ã‚“"
-#: cups/ipp.c:5389
#, c-format
msgid "Unable to compile mimeMediaType regular expression: %s."
msgstr "mimeMediaType ã®æ­£è¦è¡¨ç¾ã‚’解釈ã§ãã¾ã›ã‚“ã§ã—ãŸ: %s。"
-#: cups/ipp.c:5335
#, c-format
msgid "Unable to compile naturalLanguage regular expression: %s."
msgstr "naturalLanguage ã®æ­£è¦è¡¨ç¾ã‚’解釈ã§ãã¾ã›ã‚“ã§ã—ãŸ: %s。"
-#: filter/commandtops.c:407
msgid "Unable to configure printer options."
msgstr "プリンターオプションを設定ã§ãã¾ã›ã‚“。"
-#: cups/adminutil.c:900 cups/request.c:1066
msgid "Unable to connect to host."
msgstr "ホストã«æŽ¥ç¶šã§ãã¾ã›ã‚“。"
-#: 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:715
#, c-format
msgid "Unable to copy 64-bit CUPS printer driver files (%d)."
msgstr "64-bit 版㮠CUPS プリンタードライãƒãƒ¼ãƒ•ã‚¡ã‚¤ãƒ«ã‚’コピーã§ãã¾ã›ã‚“ (%d)。"
-#: cups/adminutil.c:680
#, c-format
msgid "Unable to copy 64-bit Windows printer driver files (%d)."
msgstr "64-bit 版㮠Windows プリンタードライãƒãƒ¼ã‚’コピーã§ãã¾ã›ã‚“ (%d)。"
-#: cups/adminutil.c:511
#, c-format
msgid "Unable to copy CUPS printer driver files (%d)."
msgstr "複数㮠CUPS プリンタードライãƒãƒ¼ãƒ•ã‚¡ã‚¤ãƒ«ã‚’コピーã§ãã¾ã›ã‚“ (%d)。"
-#: scheduler/ipp.c:2657
#, c-format
msgid "Unable to copy PPD file - %s"
msgstr "PPD ファイルをコピーã§ãã¾ã›ã‚“ - %s"
-#: scheduler/ipp.c:2712
msgid "Unable to copy PPD file."
msgstr "PPD ファイルをコピーã§ãã¾ã›ã‚“。"
-#: cups/adminutil.c:476
#, c-format
msgid "Unable to copy Windows 2000 printer driver files (%d)."
msgstr ""
"複数㮠Windows 2000 プリンタードライãƒãƒ¼ãƒ•ã‚¡ã‚¤ãƒ«ã‚’コピーã§ãã¾ã›ã‚“ (%d)。"
-#: cups/adminutil.c:599
#, c-format
msgid "Unable to copy Windows 9x printer driver files (%d)."
msgstr ""
"複数㮠Windows 9x プリンタードライãƒãƒ¼ãƒ•ã‚¡ã‚¤ãƒ«ã‚’コピーã§ãã¾ã›ã‚“ (%d)。"
-#: scheduler/ipp.c:2634
#, c-format
msgid "Unable to copy interface script - %s"
msgstr "インターフェイススクリプトをコピーã§ãã¾ã›ã‚“ - %s"
-#: cups/util.c:496 cups/util.c:1479
msgid "Unable to create printer-uri"
msgstr "printer-uri を作æˆã§ãã¾ã›ã‚“"
-#: 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:2133
msgid "Unable to delete class"
msgstr "クラスを削除ã§ãã¾ã›ã‚“"
-#: cgi-bin/admin.c:2218
msgid "Unable to delete printer"
msgstr "プリンターを削除ã§ãã¾ã›ã‚“"
-#: cgi-bin/classes.c:252 cgi-bin/printers.c:261
msgid "Unable to do maintenance command"
msgstr "メンテナンスコマンドを実行ã§ãã¾ã›ã‚“"
-#: cgi-bin/admin.c:1954
msgid "Unable to edit cupsd.conf files larger than 1MB"
msgstr "1MB 以上㮠cupsd.conf ファイルã¯ç·¨é›†ã§ãã¾ã›ã‚“"
-#: cups/tls-darwin.c:1284
msgid ""
"Unable to establish a secure connection to host (certificate chain invalid)."
msgstr "ホストã¸ã®å®‰å…¨ãªæŽ¥ç¶šãŒç¢ºç«‹ã§ãã¾ã›ã‚“ (èªè¨¼ãƒ‘スãŒç„¡åŠ¹ã§ã™)。"
-#: cups/tls-darwin.c:1274
msgid ""
"Unable to establish a secure connection to host (certificate not yet valid)."
msgstr "ホストã¸ã®å®‰å…¨ãªæŽ¥ç¶šãŒç¢ºç«‹ã§ãã¾ã›ã‚“ (èªè¨¼ãŒã¾ã æœ‰åŠ¹ã§ã¯ã‚ã‚Šã¾ã›ã‚“)。"
-#: cups/tls-darwin.c:1269
msgid "Unable to establish a secure connection to host (expired certificate)."
msgstr "ホストã¸ã®å®‰å…¨ãªæŽ¥ç¶šãŒç¢ºç«‹ã§ãã¾ã›ã‚“ (èªè¨¼ãŒæœŸé™åˆ‡ã‚Œã§ã™)。"
-#: cups/tls-darwin.c:1279
msgid "Unable to establish a secure connection to host (host name mismatch)."
msgstr "ホストã¸ã®å®‰å…¨ãªæŽ¥ç¶šãŒç¢ºç«‹ã§ãã¾ã›ã‚“ (ホストåãŒä¸€è‡´ã—ã¾ã›ã‚“)。"
-#: cups/tls-darwin.c:1289
msgid ""
"Unable to establish a secure connection to host (peer dropped connection "
"before responding)."
msgstr ""
"ホストã¸ã®å®‰å…¨ãªæŽ¥ç¶šãŒç¢ºç«‹ã§ãã¾ã›ã‚“ (応答ãŒã‚ã‚‹å‰ã«æŽ¥ç¶šãŒåˆ‡æ–­ã•ã‚Œã¾ã—ãŸ)。"
-#: cups/tls-darwin.c:1264
msgid ""
"Unable to establish a secure connection to host (self-signed certificate)."
msgstr "ホストã¸ã®å®‰å…¨ãªæŽ¥ç¶šãŒç¢ºç«‹ã§ãã¾ã›ã‚“ (自己署å証明書ã§ã™)。"
-#: cups/tls-darwin.c:1259
msgid ""
"Unable to establish a secure connection to host (untrusted certificate)."
msgstr "ホストã¸ã®å®‰å…¨ãªæŽ¥ç¶šãŒç¢ºç«‹ã§ãã¾ã›ã‚“ (信用ã§ããªã„証明書ã§ã™)。"
-#: 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:350
msgid "Unable to find destination for job"
msgstr "ジョブã®å®›å…ˆãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“"
-#: cups/http-support.c:1949
msgid "Unable to find printer."
msgstr "プリンターãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。"
-#: 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:442
msgid "Unable to get class list"
msgstr "クラスリストをå–å¾—ã§ãã¾ã›ã‚“"
-#: cgi-bin/classes.c:541
msgid "Unable to get class status"
msgstr "クラスã®çŠ¶æ…‹ã‚’å–å¾—ã§ãã¾ã›ã‚“。"
-#: cgi-bin/admin.c:1300
msgid "Unable to get list of printer drivers"
msgstr "プリンタードライãƒãƒ¼ã®ãƒªã‚¹ãƒˆã‚’å–å¾—ã§ãã¾ã›ã‚“"
-#: cgi-bin/admin.c:2820
msgid "Unable to get printer attributes"
msgstr "プリンター属性をå–å¾—ã§ãã¾ã›ã‚“"
-#: cgi-bin/printers.c:459
msgid "Unable to get printer list"
msgstr "プリンターリストをå–å¾—ã§ãã¾ã›ã‚“"
-#: cgi-bin/printers.c:561
msgid "Unable to get printer status"
msgstr "プリンターã®çŠ¶æ…‹ã‚’å–å¾—ã§ãã¾ã›ã‚“"
-#: backend/ipp.c:1005
msgid "Unable to get printer status."
msgstr "プリンターã®çŠ¶æ…‹ã‚’å–å¾—ã§ãã¾ã›ã‚“。"
-#: cups/adminutil.c:554 cups/adminutil.c:758
#, c-format
msgid "Unable to install Windows 2000 printer driver files (%d)."
msgstr ""
"複数㮠Windows 2000 プリンタードライãƒãƒ¼ãƒ•ã‚¡ã‚¤ãƒ«ã‚’インストールã§ãã¾ã›ã‚“ "
"(%d)。"
-#: cups/adminutil.c:628
#, c-format
msgid "Unable to install Windows 9x printer driver files (%d)."
msgstr ""
"複数㮠Windows 9x プリンタードライãƒãƒ¼ãƒ•ã‚¡ã‚¤ãƒ«ã‚’インストールã§ãã¾ã›ã‚“ (%d)。"
-#: cgi-bin/help.c:92
msgid "Unable to load help index."
msgstr "ヘルプã®ç´¢å¼•ã‚’読ã¿è¾¼ã‚ã¾ã›ã‚“。"
-#: backend/ipp.c:668 backend/lpd.c:426 backend/socket.c:277
#, c-format
msgid "Unable to locate printer \"%s\"."
msgstr "プリンター \"%s\" ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。"
-#: 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:791
msgid "Unable to modify class"
msgstr "クラスを変更ã§ãã¾ã›ã‚“"
-#: cgi-bin/admin.c:1036 cgi-bin/admin.c:1398
msgid "Unable to modify printer"
msgstr "プリンターを変更ã§ãã¾ã›ã‚“"
-#: cgi-bin/ipp-var.c:417 cgi-bin/ipp-var.c:506
msgid "Unable to move job"
msgstr "ジョブを移動ã§ãã¾ã›ã‚“"
-#: cgi-bin/ipp-var.c:419 cgi-bin/ipp-var.c:508
msgid "Unable to move jobs"
msgstr "複数ã®ã‚¸ãƒ§ãƒ–を移動ã§ãã¾ã›ã‚“"
-#: cgi-bin/admin.c:3166 cups/ppd.c:297
msgid "Unable to open PPD file"
msgstr "PPD ファイルを読ã¿è¾¼ã‚€ã“ã¨ãŒã§ãã¾ã›ã‚“"
-#: cgi-bin/admin.c:2588
msgid "Unable to open cupsd.conf file:"
msgstr "cupsd.conf ファイルを開ã‘ã¾ã›ã‚“:"
-#: backend/usb-unix.c:134
msgid "Unable to open device file"
msgstr "デãƒã‚¤ã‚¹ãƒ•ã‚¡ã‚¤ãƒ«ã‚’é–‹ã‘ã¾ã›ã‚“"
-#: scheduler/ipp.c:5992
#, c-format
msgid "Unable to open document #%d in job #%d."
msgstr "ドキュメント %d (ジョブ %d) ã‚’é–‹ã‘ã¾ã›ã‚“。"
-#: cgi-bin/help.c:364
msgid "Unable to open help file."
msgstr "ヘルプファイルを読ã¿è¾¼ã‚€ã“ã¨ãŒã§ãã¾ã›ã‚“。"
-#: 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:983 filter/rastertohp.c:713
-#: filter/rastertolabel.c:1133
msgid "Unable to open raster file"
msgstr "ラスターファイルを開ã‘ã¾ã›ã‚“"
-#: cgi-bin/ipp-var.c:780
msgid "Unable to print test page"
msgstr "テストページをå°åˆ·ã§ãã¾ã›ã‚“"
-#: 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:3445
+msgid "Unable to rename job document file."
+msgstr ""
+
msgid "Unable to resolve printer-uri."
msgstr "printer-uri を解決ã§ãã¾ã›ã‚“。"
-#: cups/adminutil.c:2077
#, c-format
msgid "Unable to run \"%s\": %s"
msgstr "\"%s\" を実行ã§ãã¾ã›ã‚“: %s"
-#: filter/pstops.c:530
msgid "Unable to see in file"
msgstr "ファイルを読ã¿è¾¼ã‚€ã“ã¨ãŒã§ãã¾ã›ã‚“"
-#: 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:527
msgid "Unable to send data to printer."
msgstr "プリンターã«ãƒ‡ãƒ¼ã‚¿ã‚’é€ä¿¡ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。"
-#: cups/adminutil.c:810
#, c-format
msgid "Unable to set Windows printer driver (%d)."
msgstr "Windows プリンタードライãƒãƒ¼ã‚’設定ã§ãã¾ã›ã‚“ (%d)。"
-#: cgi-bin/admin.c:3787
msgid "Unable to set options"
msgstr "オプションを設定ã§ãã¾ã›ã‚“"
-#: cgi-bin/admin.c:3057
msgid "Unable to set server default"
msgstr "サーãƒãƒ¼ã‚’デフォルトã«è¨­å®šã§ãã¾ã›ã‚“"
-#: backend/ipp.c:3352 backend/ipp.c:3429 backend/ipp.c:3437
msgid "Unable to start backend process."
msgstr "ãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰ã®ãƒ—ロセスを起動ã§ãã¾ã›ã‚“。"
-#: cgi-bin/admin.c:1892
msgid "Unable to upload cupsd.conf file"
msgstr "cupsd.conf ファイルをアップロードã§ãã¾ã›ã‚“"
-#: backend/usb-darwin.c:2016 backend/usb-darwin.c:2040
msgid "Unable to use legacy USB class driver."
msgstr "å¤ã„タイプ㮠USB クラスドライãƒãƒ¼ã¯ä½¿ç”¨ã§ãã¾ã›ã‚“。"
-#: backend/runloop.c:114 backend/runloop.c:369
msgid "Unable to write print data"
msgstr "プリントデータを書ãè¾¼ã‚ã¾ã›ã‚“"
-#: filter/gziptoany.c:86
#, c-format
msgid "Unable to write uncompressed print data: %s"
msgstr "éžåœ§ç¸®ã®ãƒ—リントデータを書ãè¾¼ã‚ã¾ã›ã‚“: %s"
-#: cups/http-support.c:1366
msgid "Unauthorized"
msgstr "未許å¯"
-#: cgi-bin/admin.c:3483
msgid "Units"
msgstr "ユニット"
-#: cups/http-support.c:1406 cups/http-support.c:1490 cups/ppd.c:324
msgid "Unknown"
msgstr "未知"
-#: filter/pstops.c:2185
#, c-format
msgid "Unknown choice \"%s\" for option \"%s\"."
msgstr "\"%s\" (オプション \"%s\" 用) ã¯æœªçŸ¥ã®è¨­å®šã§ã™ã€‚"
-#: backend/ipp.c:520
#, c-format
msgid "Unknown encryption option value: \"%s\"."
msgstr "\"%s\" ã¯æœªçŸ¥ã®æš—å·ã‚ªãƒ—ション値ã§ã™ã€‚"
-#: backend/lpd.c:342
#, c-format
msgid "Unknown file order: \"%s\"."
msgstr "\"%s\" ã¯æœªçŸ¥ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚ªãƒ¼ãƒ€ãƒ¼ã§ã™ã€‚"
-#: backend/lpd.c:313
#, c-format
msgid "Unknown format character: \"%c\"."
msgstr "\"%c\" ã¯æœªçŸ¥ã®æ›¸å¼æ–‡å­—ã§ã™ã€‚"
-#: cups/dest-options.c:964
msgid "Unknown media size name."
msgstr "未知ã®ãƒ¡ãƒ‡ã‚£ã‚¢ã‚µã‚¤ã‚ºå称ã§ã™ã€‚"
-#: backend/ipp.c:584
#, c-format
msgid "Unknown option \"%s\" with value \"%s\"."
msgstr "\"%s\" (値 \"%s\") ã¯æœªçŸ¥ã®ã‚ªãƒ—ションã§ã™ã€‚"
-#: filter/pstops.c:2168
#, c-format
msgid "Unknown option \"%s\"."
msgstr "\"%s\" ã¯æœªçŸ¥ã®ã‚ªãƒ—ションã§ã™ã€‚"
-#: backend/lpd.c:328
#, c-format
msgid "Unknown print mode: \"%s\"."
msgstr "\"%s\" ã¯æœªçŸ¥ã®ãƒ—リントモードã§ã™ã€‚"
-#: scheduler/ipp.c:10401
#, c-format
msgid "Unknown printer-error-policy \"%s\"."
msgstr "\"%s\" ã¯æœªçŸ¥ã® printer-error-policy ã§ã™ã€‚"
-#: scheduler/ipp.c:10384
#, c-format
msgid "Unknown printer-op-policy \"%s\"."
msgstr "\"%s\" ã¯æœªçŸ¥ã® printer-op-policy ã§ã™ã€‚"
-#: 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 "URI ã«æœªçŸ¥ã®ã‚¹ã‚­ãƒ¼ãƒžãŒã‚ã‚Šã¾ã™"
-#: cups/http-addrlist.c:737
msgid "Unknown service name."
msgstr "未知ã®ã‚µãƒ¼ãƒ“スåã§ã™ã€‚"
-#: backend/ipp.c:549
#, c-format
msgid "Unknown version option value: \"%s\"."
msgstr "\"%s\" ã¯æœªçŸ¥ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚ªãƒ—ション値ã§ã™ã€‚"
-#: scheduler/ipp.c:10858
#, c-format
msgid "Unsupported 'compression' value \"%s\"."
msgstr "\"%s\" ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ãªã„ 'compression' ã®å€¤ã§ã™ã€‚"
-#: scheduler/ipp.c:10888
#, c-format
msgid "Unsupported 'document-format' value \"%s\"."
msgstr "\"%s\" ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ãªã„ 'document-format' ã®å€¤ã§ã™ã€‚"
-#: scheduler/ipp.c:10963
msgid "Unsupported 'job-name' value."
msgstr "サãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ãªã„ 'job-name' ã®å€¤ã§ã™ã€‚"
-#: scheduler/ipp.c:329
#, c-format
msgid "Unsupported character set \"%s\"."
msgstr "\"%s\" ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ãªã„文字セットã§ã™ã€‚"
-#: scheduler/ipp.c:8072 scheduler/ipp.c:9307
#, c-format
msgid "Unsupported compression \"%s\"."
msgstr "\"%s\" ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ãªã„圧縮形å¼ã§ã™ã€‚"
-#: scheduler/ipp.c:8206 scheduler/ipp.c:9457
#, c-format
msgid "Unsupported document-format \"%s\"."
msgstr "\"%s\" ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ãªã„文書形å¼ã§ã™ã€‚"
-#: scheduler/ipp.c:9440
#, c-format
msgid "Unsupported document-format \"%s/%s\"."
msgstr "\"%s/%s\" ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ãªã„文書形å¼ã§ã™ã€‚"
-#: scheduler/ipp.c:1339
#, c-format
msgid "Unsupported format \"%s\"."
msgstr "\"%s\" ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ãªã„å½¢å¼ã§ã™ã€‚"
-#: scheduler/ipp.c:1437
msgid "Unsupported margins."
msgstr "サãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ãªã„マージンã§ã™ã€‚"
-#: cups/pwg-media.c:549
msgid "Unsupported media value."
msgstr "サãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ãªã„メディアã®å€¤ã§ã™ã€‚"
-#: filter/pstops.c:2450
#, c-format
msgid "Unsupported number-up value %d, using number-up=1."
msgstr "%d ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ãªã„ number-up 値ã§ã™ã€‚number-up=1 を使用ã—ã¾ã™ã€‚"
-#: filter/pstops.c:2484
#, c-format
msgid "Unsupported number-up-layout value %s, using number-up-layout=lrtb."
msgstr ""
"%s ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ãªã„ number-up-layout 値ã§ã™ã€‚number-up-layout=lrtb を使"
"用ã—ã¾ã™ã€‚"
-#: filter/pstops.c:2535
#, c-format
msgid "Unsupported page-border value %s, using page-border=none."
msgstr ""
"%s ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ãªã„ page-border 値ã§ã™ã€‚page-border=none を使用ã—ã¾ã™ã€‚"
-#: filter/rastertopwg.c:139 filter/rastertopwg.c:147 filter/rastertopwg.c:156
msgid "Unsupported raster data."
msgstr "サãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ãªã„ラスターデータã§ã™ã€‚"
-#: cups/snmp.c:1064
msgid "Unsupported value type"
msgstr "サãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ãªã„åž‹ã®å€¤ã§ã™"
-#: cups/http-support.c:1381
msgid "Upgrade Required"
msgstr "アップグレードãŒå¿…è¦ã§ã™"
-#: systemv/lpadmin.c:654
msgid ""
"Usage:\n"
"\n"
@@ -6475,42 +4994,31 @@ msgstr ""
" [-u allow:ユーザー,ユーザー] [-u deny:ユーザー,ユー"
"ザー]"
-#: 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 "使ã„æ–¹: %s ジョブID ユーザー タイトル コピー数 オプション [ファイル]"
-#: systemv/cupsaddsmb.c:281
msgid "Usage: cupsaddsmb [options] printer1 ... printerN"
msgstr "Usage: cupsaddsmb [オプション] プリンター1 ... プリンターN"
-#: systemv/cupsctl.c:200
msgid "Usage: cupsctl [options] [param=value ... paramN=valueN]"
msgstr "Usage: cupsctl [オプション] [パラメータ=値 ... パラメータN=値N]"
-#: scheduler/main.c:2145
msgid "Usage: cupsd [options]"
msgstr "使ã„æ–¹: cupsd [オプション]"
-#: scheduler/cupsfilter.c:1481
msgid "Usage: cupsfilter [ options ] [ -- ] filename"
msgstr "使ã„æ–¹: cupsfilter [ オプション ] [ -- ] ファイルå"
-#: systemv/cupstestdsc.c:425
msgid "Usage: cupstestdsc [options] filename.ps [... filename.ps]"
msgstr "使ã„æ–¹: cupstestdsc [オプション] ファイルå.ps [... ファイルå.ps]"
-#: systemv/cupstestppd.c:3813
msgid ""
"Usage: cupstestppd [options] filename1.ppd[.gz] [... filenameN.ppd[.gz]]"
msgstr ""
"使ã„æ–¹: cupstestppd [オプション] ファイルå1.ppd[.gz] [... ファイルåN.ppd[."
"gz]]"
-#: test/ippdiscover.c:814
msgid ""
"Usage: ippdiscover [options] -a\n"
" ippdiscover [options] \"service name\"\n"
@@ -6522,7 +5030,6 @@ msgstr ""
"\n"
"オプション:"
-#: test/ippfind.c:2738
msgid ""
"Usage: ippfind [options] regtype[,subtype][.domain.] ... [expression]\n"
" ippfind [options] name[.regtype[.domain.]] ... [expression]\n"
@@ -6534,15 +5041,12 @@ msgstr ""
" ippfind --help\n"
" ippfind --version"
-#: test/ipptool.c:4803
msgid "Usage: ipptool [options] URI filename [ ... filenameN ]"
msgstr "使ã„æ–¹: ipptool [オプション] URI ファイルå [ ... ファイルåN ]"
-#: systemv/lpmove.c:125
msgid "Usage: lpmove job/src dest"
msgstr "使ã„æ–¹: lpmove ジョブ/ソース 宛先"
-#: systemv/lpoptions.c:539
msgid ""
"Usage: lpoptions [-h server] [-E] -d printer\n"
" lpoptions [-h server] [-E] [-p printer] -l\n"
@@ -6554,76 +5058,59 @@ msgstr ""
" lpoptions [-h サーãƒãƒ¼] [-E] -p プリンター -o オプション[=値] ...\n"
" lpoptions [-h サーãƒãƒ¼] [-E] -x プリンター"
-#: berkeley/lpq.c:637
msgid ""
"Usage: lpq [-P dest] [-U username] [-h hostname[:port]] [-l] [+interval]"
msgstr ""
"使ã„æ–¹: lpq [-P 宛先] [-U ユーザーå] [-h ホストå[:ãƒãƒ¼ãƒˆ]] [-l] [+é–“éš”]"
-#: ppdc/ppdc.cxx:430
msgid "Usage: ppdc [options] filename.drv [ ... filenameN.drv ]"
msgstr "使ã„æ–¹: ppdc [オプション] ファイルå.drv [ ... ファイルåN.drv ]"
-#: ppdc/ppdhtml.cxx:172
msgid "Usage: ppdhtml [options] filename.drv >filename.html"
msgstr "使ã„æ–¹: ppdhtml [オプション] ファイルå.drv >ファイルå.html"
-#: ppdc/ppdi.cxx:128
msgid "Usage: ppdi [options] filename.ppd [ ... filenameN.ppd ]"
msgstr "使ã„æ–¹: ppdi [オプション] ファイルå.ppd [ ... ファイルåN.ppd ]"
-#: ppdc/ppdmerge.cxx:361
msgid "Usage: ppdmerge [options] filename.ppd [ ... filenameN.ppd ]"
msgstr "使ã„æ–¹: ppdmerge [オプション] ファイルå.ppd [ ... ファイルåN.ppd ]"
-#: ppdc/ppdpo.cxx:252
msgid ""
"Usage: ppdpo [options] -o filename.po filename.drv [ ... filenameN.drv ]"
msgstr ""
"使ã„æ–¹: ppdpo [オプション] -o ファイルå.po ファイルå.drv [ ... ファイルåN."
"drv ]"
-#: backend/snmp.c:192
msgid "Usage: snmp [host-or-ip-address]"
msgstr "使ã„æ–¹: snmp [ホストåã¾ãŸã¯IPアドレス]"
-#: cups/snmp.c:1016
msgid "Value uses indefinite length"
msgstr "値ã¯ä¸å®šé•·ã§ã™"
-#: cups/snmp.c:1001
msgid "VarBind uses indefinite length"
msgstr "VarBind ã¯ä¸å®šé•·ã§ã™"
-#: cups/snmp.c:951
msgid "Version uses indefinite length"
msgstr "Version ã¯ä¸å®šé•·ã§ã™"
-#: backend/ipp.c:1913
msgid "Waiting for job to complete."
msgstr "ジョブãŒå®Œäº†ã™ã‚‹ã®ã‚’å¾…ã£ã¦ã„ã¾ã™ã€‚"
-#: backend/usb-darwin.c:469 backend/usb-libusb.c:223
msgid "Waiting for printer to become available."
msgstr "プリンターãŒä½¿ç”¨å¯èƒ½ã«ãªã‚‹ã®ã‚’å¾…ã£ã¦ã„ã¾ã™ã€‚"
-#: backend/socket.c:440
msgid "Waiting for printer to finish."
msgstr "プリンターãŒçµ‚了ã™ã‚‹ã®ã‚’å¾…ã£ã¦ã„ã¾ã™ã€‚"
-#: cups/adminutil.c:782
msgid "Warning, no Windows 2000 printer drivers are installed."
msgstr "警告ã€Windows 2000 プリンタードライãƒãƒ¼ãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¦ã„ã¾ã›ã‚“。"
-#: cups/http-support.c:1402
msgid "Web Interface is Disabled"
msgstr "Web インターフェイスãŒç„¡åŠ¹ã«ãªã£ã¦ã„ã¾ã™"
-#: cups/ppd.c:1902
msgid "Yes"
msgstr "ã¯ã„"
-#: scheduler/client.c:2219
#, c-format
msgid ""
"You must access this page using the URL <A HREF=\"https://%s:%d%s\">https://"
@@ -6632,384 +5119,298 @@ msgstr ""
"ã“ã®ãƒšãƒ¼ã‚¸ã«ã¯ URL <A HREF=\"https://%s:%d%s\">https://%s:%d%s</A> を使ã£ã¦ã‚¢"
"クセスã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚"
-#: ppdc/sample.c:434
msgid "ZPL Label Printer"
msgstr "ZPL ラベルプリンター"
-#: ppdc/sample.c:357
msgid "Zebra"
msgstr "ゼブラ"
-#: cups/notify.c:102
msgid "aborted"
msgstr "åœæ­¢"
-#: cups/notify.c:99
msgid "canceled"
msgstr "キャンセル"
-#: cups/notify.c:105
msgid "completed"
msgstr "完了"
-#: scheduler/ipp.c:5864
msgid "cups-deviced failed to execute."
msgstr "cups-deviced ã®å®Ÿè¡Œã«å¤±æ•—ã—ã¾ã—ãŸã€‚"
-#: scheduler/ipp.c:6743 scheduler/ipp.c:6992
msgid "cups-driverd failed to execute."
msgstr "cups-driverd ã®å®Ÿè¡Œã«å¤±æ•—ã—ã¾ã—ãŸã€‚"
-#: systemv/cupsaddsmb.c:233
#, c-format
msgid "cupsaddsmb: No PPD file for printer \"%s\" - %s"
msgstr "cupsaddsmb: プリンター \"%s\" ã® PPD ファイルãŒã‚ã‚Šã¾ã›ã‚“ - %s"
-#: systemv/cupsctl.c:141
msgid "cupsctl: Cannot set Listen or Port directly."
msgstr "cupsctl: Listen ã‚ã‚‹ã„㯠Port を直接設定ã§ãã¾ã›ã‚“。"
-#: systemv/cupsctl.c:152
#, c-format
msgid "cupsctl: Unable to connect to server: %s"
msgstr "cupsctl: サーãƒãƒ¼ã«æŽ¥ç¶šã§ãã¾ã›ã‚“: %s"
-#: systemv/cupsctl.c:195
#, c-format
msgid "cupsctl: Unknown option \"%s\""
msgstr "cupsctl: \"%s\" ã¯æœªçŸ¥ã®ã‚ªãƒ—ションã§ã™ã€‚"
-#: systemv/cupsctl.c:197
#, c-format
msgid "cupsctl: Unknown option \"-%c\""
msgstr "cupsctl: \"-%c\"ã¯æœªçŸ¥ã®ã‚ªãƒ—ションã§ã™ã€‚"
-#: scheduler/main.c:171
msgid "cupsd: Expected config filename after \"-c\" option."
msgstr "cupsd: \"-c\" オプションã®ã‚ã¨ã«ã¯è¨­å®šãƒ•ã‚¡ã‚¤ãƒ«åãŒå¿…è¦ã§ã™ã€‚"
-#: scheduler/main.c:258
msgid "cupsd: Expected cups-files.conf filename after \"-s\" option."
msgstr ""
"cupsd: cups-files.conf ファイルå㯠\"-s\" オプションã®å¾Œã‚ã«ã‚ã‚‹ã¹ãã§ã™ã€‚"
-#: scheduler/main.c:236
msgid "cupsd: On-demand support not compiled in, running in normal mode."
-msgstr "cupsd: オンデマンドサãƒãƒ¼ãƒˆæœ‰åŠ¹ã§ã‚³ãƒ³ãƒ‘イルã•ã‚Œã¦ã„ã¾ã›ã‚“ã€æ¨™æº–モードã§å‹•ä½œã—ã¾ã™ã€‚"
+msgstr ""
+"cupsd: オンデマンドサãƒãƒ¼ãƒˆæœ‰åŠ¹ã§ã‚³ãƒ³ãƒ‘イルã•ã‚Œã¦ã„ã¾ã›ã‚“ã€æ¨™æº–モードã§å‹•ä½œã—"
+"ã¾ã™ã€‚"
-#: scheduler/main.c:269
msgid "cupsd: Relative cups-files.conf filename not allowed."
msgstr "cupsd: 相対パスã§ã® cups-files.conf ã®æŒ‡å®šã¯ã§ãã¾ã›ã‚“。"
-#: scheduler/main.c:202 scheduler/main.c:209
msgid "cupsd: Unable to get current directory."
msgstr "cupsd: カレントディレクトリーをå–å¾—ã§ãã¾ã›ã‚“。"
-#: scheduler/main.c:316 scheduler/main.c:325
msgid "cupsd: Unable to get path to cups-files.conf file."
msgstr "cupsd: cups-files.conf ファイルã¸ã®ãƒ‘スãŒå–å¾—ã§ãã¾ã›ã‚“。"
-#: scheduler/main.c:298
#, c-format
msgid "cupsd: Unknown argument \"%s\" - aborting."
msgstr "cupsd: \"%s\" ã¯æœªçŸ¥ã®å¼•æ•°ã§ã™ - åœæ­¢ã—ã¾ã™ã€‚"
-#: scheduler/main.c:291
#, c-format
msgid "cupsd: Unknown option \"%c\" - aborting."
msgstr "cupsd: \"%c\" ã¯æœªçŸ¥ã®ã‚ªãƒ—ションã§ã™ - åœæ­¢ã—ã¾ã™ã€‚"
-#: scheduler/cupsfilter.c:1263
#, c-format
msgid "cupsfilter: Invalid document number %d."
msgstr "cupsfilter: ä¸æ­£ãªæ–‡æ›¸ç•ªå· %d ã§ã™ã€‚"
-#: scheduler/cupsfilter.c:1257
#, c-format
msgid "cupsfilter: Invalid job ID %d."
msgstr "cupsfilter: ä¸æ­£ãªã‚¸ãƒ§ãƒ–ID %d ã§ã™ã€‚"
-#: scheduler/cupsfilter.c:348
msgid "cupsfilter: Only one filename can be specified."
msgstr "cupsfilter: 1 ã¤ã®ãƒ•ã‚¡ã‚¤ãƒ«åã®ã¿ã‚’指定ã§ãã¾ã™ã€‚"
-#: scheduler/cupsfilter.c:1305
#, c-format
msgid "cupsfilter: Unable to get job file - %s"
msgstr "cupsfilter: ジョブ・ファイルをå–å¾—ã§ãã¾ã›ã‚“ - %s"
-#: systemv/cupstestppd.c:261
msgid "cupstestppd: The -q option is incompatible with the -v option."
msgstr "cupstestppd: -q オプション㯠-v オプションã¨ä¸¡ç«‹ã§ãã¾ã›ã‚“。"
-#: systemv/cupstestppd.c:277
msgid "cupstestppd: The -v option is incompatible with the -q option."
msgstr "cupstestppd: -v オプション㯠-q オプションã¨ä¸¡ç«‹ã§ãã¾ã›ã‚“。"
-#: systemv/lpstat.c:1232 systemv/lpstat.c:1235 systemv/lpstat.c:1238
#, c-format
msgid "device for %s/%s: %s"
msgstr "%s/%s ã®ãƒ‡ãƒã‚¤ã‚¹: %s"
-#: systemv/lpstat.c:1218 systemv/lpstat.c:1221 systemv/lpstat.c:1224
#, c-format
msgid "device for %s: %s"
msgstr "%s ã®ãƒ‡ãƒã‚¤ã‚¹: %s"
-#: cups/snmp.c:988
msgid "error-index uses indefinite length"
msgstr "error-index ã¯ä¸å®šé•·ã§ã™"
-#: cups/snmp.c:980
msgid "error-status uses indefinite length"
msgstr "error-status ã¯ä¸å®šé•·ã§ã™"
-#: cups/notify.c:90
msgid "held"
msgstr "ä¿ç•™"
-#: berkeley/lpc.c:201
msgid "help\t\tGet help on commands."
msgstr "help\t\tコマンドã®ãƒ˜ãƒ«ãƒ—ã‚’å–得。"
-#: cups/notify.c:131
msgid "idle"
msgstr "待機中"
-#: test/ippfind.c:2465
#, c-format
msgid "ippfind: Bad regular expression: %s"
msgstr "ippfind: ä¸æ­£ãªæ­£è¦è¡¨ç¾ã§ã™: %s"
-#: test/ippfind.c:328
msgid "ippfind: Cannot use --and after --or."
msgstr "ippfind: --and 㯠--or ã®ã‚ã¨ã«æŒ‡å®šã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。"
-#: test/ippfind.c:601
#, c-format
msgid "ippfind: Expected key name after %s."
msgstr "ippfind: %s ã®ã‚ã¨ã«ã¯ã‚­ãƒ¼åãŒå¿…è¦ã§ã™ã€‚"
-#: test/ippfind.c:551 test/ippfind.c:734
#, c-format
msgid "ippfind: Expected port range after %s."
msgstr "ippfind: %s ã®ã‚ã¨ã«ã¯ãƒãƒ¼ãƒˆç¯„囲ãŒå¿…è¦ã§ã™ã€‚"
-#: test/ippfind.c:361
#, c-format
msgid "ippfind: Expected program after %s."
msgstr "ippfind: %s ã®ã‚ã¨ã«ã¯ãƒ—ログラムåãŒå¿…è¦ã§ã™ã€‚"
-#: test/ippfind.c:378
#, c-format
msgid "ippfind: Expected semi-colon after %s."
msgstr "ippfind: %s ã®ã‚ã¨ã«ã¯ã‚»ãƒŸã‚³ãƒ­ãƒ³ãŒå¿…è¦ã§ã™ã€‚"
-#: test/ippfind.c:1965
msgid "ippfind: Missing close brace in substitution."
msgstr "ippfind: ç½®æ›æ–‡å­—列ã®é–‰ã˜ã‚«ãƒƒã‚³ãŒã‚ã‚Šã¾ã›ã‚“。"
-#: test/ippfind.c:1053
msgid "ippfind: Missing close parenthesis."
msgstr "ippfind: é–‰ã˜ã‚«ãƒƒã‚³ãŒä¸è¶³ã—ã¦ã„ã¾ã™ã€‚"
-#: test/ippfind.c:335
msgid "ippfind: Missing expression before \"--and\"."
msgstr "ippfind: \"--and\" ã®å‰ã«ã¯å¼ãŒå¿…è¦ã§ã™ã€‚"
-#: test/ippfind.c:448
msgid "ippfind: Missing expression before \"--or\"."
msgstr "ippfind: \"--or\" ã®å‰ã«ã¯å¼ãŒå¿…è¦ã§ã™ã€‚"
-#: test/ippfind.c:871
#, c-format
msgid "ippfind: Missing key name after %s."
msgstr "ippfind: %s ã®ã‚ã¨ã«ã¯ã‚­ãƒ¼åãŒå¿…è¦ã§ã™ã€‚"
-#: test/ippfind.c:1024
msgid "ippfind: Missing open parenthesis."
msgstr "ippfind: é–‹ãカッコãŒè¶³ã‚Šã¾ã›ã‚“。"
-#: test/ippfind.c:901
#, c-format
msgid "ippfind: Missing program after %s."
msgstr "ippfind: %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 "ippfind: %s ã®ã‚ã¨ã«ã¯æ­£è¦è¡¨ç¾ãŒå¿…è¦ã§ã™ã€‚"
-#: test/ippfind.c:919
#, c-format
msgid "ippfind: Missing semi-colon after %s."
msgstr "ippfind: %s ã®ã‚ã¨ã«ã¯ã‚»ãƒŸã‚³ãƒ­ãƒ³ãŒå¿…è¦ã§ã™ã€‚"
-#: test/ippfind.c:1912 test/ippfind.c:1937
msgid "ippfind: Out of memory."
msgstr "ippfind: メモリä¸è¶³ã§ã™ã€‚"
-#: test/ippfind.c:997
msgid "ippfind: Too many parenthesis."
msgstr "ippfind: カッコãŒå¤šã™ãŽã¾ã™ã€‚"
-#: test/ippfind.c:1266 test/ippfind.c:1402 test/ippfind.c:2557
#, c-format
msgid "ippfind: Unable to browse or resolve: %s"
msgstr "ippfind: %s をブラウズã§ããªã„ã‹åå‰è§£æ±ºã§ãã¾ã›ã‚“。"
-#: test/ippfind.c:2035 test/ippfind.c:2062
#, c-format
msgid "ippfind: Unable to execute \"%s\": %s"
msgstr "ippfind: \"%s\" を実行ã§ãã¾ã›ã‚“: %s"
-#: test/ippfind.c:1143 test/ippfind.c:1151 test/ippfind.c:1162
#, c-format
msgid "ippfind: Unable to use Bonjour: %s"
msgstr "ippfind: Bonjour を利用ã§ãã¾ã›ã‚“: %s"
-#: test/ippfind.c:1994
#, c-format
msgid "ippfind: Unknown variable \"{%s}\"."
msgstr "ippfind: \"{%s}\" ã¯ä¸æ˜Žãªå¤‰æ•°ã§ã™ã€‚"
-#: 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\" ãŠã‚ˆã³ \"-n\" 㯠\"-P\"ã€\"-X\" ã¨ä¸€ç·’ã«æŒ‡å®šã§ãã¾ã›ã‚“。"
+msgstr ""
+"ipptool: \"-i\" ãŠã‚ˆã³ \"-n\" 㯠\"-P\"ã€\"-X\" ã¨ä¸€ç·’ã«æŒ‡å®šã§ãã¾ã›ã‚“。"
-#: test/ipptool.c:623
#, c-format
msgid "ipptool: Bad URI - %s."
msgstr "ipptool: ä¸æ­£ãª URI ã§ã™ - %s。"
-#: test/ipptool.c:537
msgid "ipptool: Invalid seconds for \"-i\"."
msgstr "ipptool: \"-i\" ã«ä¸æ­£ãªç§’æ•°ãŒæŒ‡å®šã•ã‚Œã¾ã—ãŸã€‚"
-#: test/ipptool.c:604
msgid "ipptool: May only specify a single URI."
msgstr "ipptool: URI 㯠1 ã¤ã ã‘指定ã§ãã¾ã™ã€‚"
-#: test/ipptool.c:559
msgid "ipptool: Missing count for \"-n\"."
msgstr "ipptool: \"-n\" ã«å›žæ•°ã®æŒ‡å®šãŒã‚ã‚Šã¾ã›ã‚“。"
-#: test/ipptool.c:423
msgid "ipptool: Missing filename for \"-f\"."
msgstr "ipptool: \"-f\" ã«ãƒ•ã‚¡ã‚¤ãƒ«åã®æŒ‡å®šãŒã‚ã‚Šã¾ã›ã‚“。"
-#: test/ipptool.c:404
msgid "ipptool: Missing name=value for \"-d\"."
msgstr "ipptool: \"-d\" ã« åå‰=値 ã®æŒ‡å®šãŒã‚ã‚Šã¾ã›ã‚“。"
-#: test/ipptool.c:527
msgid "ipptool: Missing seconds for \"-i\"."
msgstr "ipptool: \"-i\" ã«ç§’æ•°ã®æŒ‡å®šãŒã‚ã‚Šã¾ã›ã‚“。"
-#: test/ipptool.c:649
msgid "ipptool: URI required before test file."
msgstr "ipptool: テストファイルã®å‰ã« URI ã®æŒ‡å®šãŒå¿…è¦ã§ã™ã€‚"
-#: test/ipptool.c:585
#, c-format
msgid "ipptool: Unknown option \"-%c\"."
msgstr "ipptool: \"-%c\"ã¯æœªçŸ¥ã®ã‚ªãƒ—ションã§ã™ã€‚"
-#: scheduler/ipp.c:7739
msgid "job-printer-uri attribute missing."
msgstr "job-printer-uri 属性ãŒã‚ã‚Šã¾ã›ã‚“。"
-#: systemv/lpadmin.c:117 systemv/lpadmin.c:361
msgid "lpadmin: Class name can only contain printable characters."
msgstr "lpadmin: クラスåã¯è¡¨ç¤ºå¯èƒ½æ–‡å­—ã®ã¿ã§æ§‹æˆã•ã‚Œãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。"
-#: systemv/lpadmin.c:600
msgid "lpadmin: Expected PPD after \"-P\" option."
msgstr "lpadmin: \"-P\" オプションã®ã‚ã¨ã«ã¯ PPD ãŒå¿…è¦ã§ã™ã€‚"
-#: systemv/lpadmin.c:443
msgid "lpadmin: Expected allow/deny:userlist after \"-u\" option."
msgstr ""
"lpadmin: \"-u\" オプションã®ã‚ã¨ã«ã¯ allow/deny:ユーザーリスト ãŒå¿…è¦ã§ã™ã€‚"
-#: systemv/lpadmin.c:350
msgid "lpadmin: Expected class after \"-r\" option."
msgstr "lpadmin: \"-r\" オプションã®ã‚ã¨ã«ã¯ã‚¯ãƒ©ã‚¹åãŒå¿…è¦ã§ã™ã€‚"
-#: systemv/lpadmin.c:106
msgid "lpadmin: Expected class name after \"-c\" option."
msgstr "lpadmin: \"-c\" オプションã®ã‚ã¨ã«ã¯ã‚¯ãƒ©ã‚¹åãŒå¿…è¦ã§ã™ã€‚"
-#: systemv/lpadmin.c:544
msgid "lpadmin: Expected description after \"-D\" option."
msgstr "lpadmin: \"-D\" オプションã®ã‚ã¨ã«ã¯èª¬æ˜ŽãŒå¿…è¦ã§ã™ã€‚"
-#: systemv/lpadmin.c:477
msgid "lpadmin: Expected device URI after \"-v\" option."
msgstr "lpadmin: \"-v\" オプションã®ã‚ã¨ã«ã¯ãƒ‡ãƒã‚¤ã‚¹ URI ãŒå¿…è¦ã§ã™ã€‚"
-#: systemv/lpadmin.c:560
msgid "lpadmin: Expected file type(s) after \"-I\" option."
msgstr "lpadmin: \"-I\" オプションã®ã‚ã¨ã«ã¯ãƒ•ã‚¡ã‚¤ãƒ«å½¢å¼ãŒå¿…è¦ã§ã™ã€‚"
-#: systemv/lpadmin.c:188
msgid "lpadmin: Expected hostname after \"-h\" option."
msgstr "lpadmin: \"-h\" オプションã®ã‚ã¨ã«ã¯ãƒ›ã‚¹ãƒˆåãŒå¿…è¦ã§ã™ã€‚"
-#: systemv/lpadmin.c:207
msgid "lpadmin: Expected interface after \"-i\" option."
msgstr "lpadmin: \"-i\" オプションã®ã‚ã¨ã«ã¯ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ã‚¤ã‚¹åãŒå¿…è¦ã§ã™ã€‚"
-#: systemv/lpadmin.c:580
msgid "lpadmin: Expected location after \"-L\" option."
msgstr "lpadmin: \"-L\" オプションã®ã‚ã¨ã«ã¯å ´æ‰€ãŒå¿…è¦ã§ã™ã€‚"
-#: systemv/lpadmin.c:260
msgid "lpadmin: Expected model after \"-m\" option."
msgstr "lpadmin: \"-m\" オプションã®ã‚ã¨ã«ã¯ãƒ¢ãƒ‡ãƒ«åãŒå¿…è¦ã§ã™ã€‚"
-#: systemv/lpadmin.c:403
msgid "lpadmin: Expected name after \"-R\" option."
msgstr "lpadmin: \"-R\" オプションã®ã‚ã¨ã«ã¯åå‰ãŒå¿…è¦ã§ã™ã€‚"
-#: systemv/lpadmin.c:280
msgid "lpadmin: Expected name=value after \"-o\" option."
msgstr "lpadmin: \"-o\" オプションã®ã‚ã¨ã«ã¯ 変数å=値 ãŒå¿…è¦ã§ã™ã€‚"
-#: systemv/lpadmin.c:299
msgid "lpadmin: Expected printer after \"-p\" option."
msgstr "lpadmin: \"-p\" オプションã®ã‚ã¨ã«ã¯ãƒ—リンターåãŒå¿…è¦ã§ã™ã€‚"
-#: systemv/lpadmin.c:150
msgid "lpadmin: Expected printer name after \"-d\" option."
msgstr "lpadmin: \"-d\" オプションã®ã‚ã¨ã«ã¯ãƒ—リンターåãŒå¿…è¦ã§ã™ã€‚"
-#: systemv/lpadmin.c:511
msgid "lpadmin: Expected printer or class after \"-x\" option."
msgstr ""
"lpadmin: \"-x\" オプションã®ã‚ã¨ã«ã¯ãƒ—リンターåã¾ãŸã¯ã‚¯ãƒ©ã‚¹åãŒå¿…è¦ã§ã™ã€‚"
-#: systemv/lpadmin.c:961
msgid "lpadmin: No member names were seen."
msgstr "lpadmin: メンãƒãƒ¼åãŒè¦‹å½“ãŸã‚Šã¾ã›ã‚“。"
-#: systemv/lpadmin.c:748
#, c-format
msgid "lpadmin: Printer %s is already a member of class %s."
msgstr "lpadmin: プリンター %s ã¯ã™ã§ã«ã‚¯ãƒ©ã‚¹ %s ã®ãƒ¡ãƒ³ãƒãƒ¼ã§ã™ã€‚"
-#: systemv/lpadmin.c:975
#, c-format
msgid "lpadmin: Printer %s is not a member of class %s."
msgstr "lpadmin: プリンター %s ã¯ã‚¯ãƒ©ã‚¹ %s ã®ãƒ¡ãƒ³ãƒãƒ¼ã§ã¯ã‚ã‚Šã¾ã›ã‚“。"
-#: systemv/lpadmin.c:161 systemv/lpadmin.c:310 systemv/lpadmin.c:522
msgid "lpadmin: Printer name can only contain printable characters."
msgstr "lpadmin: プリンターåã«ã¯è¡¨ç¤ºå¯èƒ½æ–‡å­—ã ã‘ãŒä½¿ç”¨ã§ãã¾ã™ã€‚"
-#: systemv/lpadmin.c:91
msgid ""
"lpadmin: Unable to add a printer to the class:\n"
" You must specify a printer name first."
@@ -7017,18 +5418,13 @@ msgstr ""
"lpadmin: クラスã«ãƒ—リンターを追加ã§ãã¾ã›ã‚“:\n"
" å…ˆã«ãƒ—リンターåを指定ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚"
-#: 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: サーãƒãƒ¼ã«æŽ¥ç¶šã§ãã¾ã›ã‚“: %s"
-#: systemv/lpadmin.c:1314
msgid "lpadmin: Unable to create temporary file"
msgstr "lpadmin: テンãƒãƒ©ãƒªãƒ¼ãƒ•ã‚¡ã‚¤ãƒ«ã‚’作æˆã§ãã¾ã›ã‚“"
-#: systemv/lpadmin.c:388
msgid ""
"lpadmin: Unable to delete option:\n"
" You must specify a printer name first."
@@ -7036,12 +5432,14 @@ msgstr ""
"lpadmin: プリンター・オプションを削除ã§ãã¾ã›ã‚“:\n"
" å…ˆã«ãƒ—リンターåを指定ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚"
-#: systemv/lpadmin.c:1324
+#, c-format
+msgid "lpadmin: Unable to open PPD \"%s\": %s on line %d."
+msgstr ""
+
#, c-format
msgid "lpadmin: Unable to open PPD file \"%s\" - %s"
msgstr "lpadmin: 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."
@@ -7049,7 +5447,6 @@ msgstr ""
"lpadmin: クラスã‹ã‚‰ãƒ—リンターを削除ã§ãã¾ã›ã‚“:\n"
" å…ˆã«ãƒ—リンターåを指定ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚"
-#: systemv/lpadmin.c:642
msgid ""
"lpadmin: Unable to set the printer options:\n"
" You must specify a printer name first."
@@ -7057,118 +5454,96 @@ msgstr ""
"lpadmin: プリンター・オプションを設定ã§ãã¾ã›ã‚“:\n"
" å…ˆã«ãƒ—リンターåを指定ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚"
-#: systemv/lpadmin.c:460
#, c-format
msgid "lpadmin: Unknown allow/deny option \"%s\"."
msgstr "lpadmin:\"%s\" ã¯æœªçŸ¥ã® allow/deny オプションã§ã™ã€‚"
-#: systemv/lpadmin.c:615
#, c-format
msgid "lpadmin: Unknown argument \"%s\"."
msgstr "lpadmin: \"%s\" ã¯æœªçŸ¥ã®å¼•æ•°ã§ã™ã€‚"
-#: systemv/lpadmin.c:610
#, c-format
msgid "lpadmin: Unknown option \"%c\"."
msgstr "lpadmin: \"%c\" ã¯æœªçŸ¥ã®ã‚ªãƒ—ションã§ã™ã€‚"
-#: systemv/lpadmin.c:566
msgid "lpadmin: Warning - content type list ignored."
msgstr "lpadmin: 警告 - コンテンツタイプリストã¯ç„¡è¦–ã•ã‚Œã¾ã™ã€‚"
-#: 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: \"--device-id\" ã®ã‚ã¨ã«ã¯ã€1284 デãƒã‚¤ã‚¹ ID を指定ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾"
"ã™ã€‚"
-#: systemv/lpinfo.c:190
msgid "lpinfo: Expected language after \"--language\"."
msgstr "lpinfo: \"--language\" ã®ã‚ã¨ã«ã¯ã€è¨€èªžã‚’指定ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚"
-#: systemv/lpinfo.c:207
msgid "lpinfo: Expected make and model after \"--make-and-model\"."
-msgstr "lpinfo: \"--make-and-model\" ã®ã‚ã¨ã«ã¯ã€ãƒ¡ãƒ¼ã‚«ãƒ¼ã¨ãƒ¢ãƒ‡ãƒ«ã‚’指定ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚"
+msgstr ""
+"lpinfo: \"--make-and-model\" ã®ã‚ã¨ã«ã¯ã€ãƒ¡ãƒ¼ã‚«ãƒ¼ã¨ãƒ¢ãƒ‡ãƒ«ã‚’指定ã™ã‚‹å¿…è¦ãŒã‚ã‚Š"
+"ã¾ã™ã€‚"
-#: systemv/lpinfo.c:224
msgid "lpinfo: Expected product string after \"--product\"."
msgstr "lpinfo: \"--product\" ã®ã‚ã¨ã«ã¯ã€è£½å“åを指定ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚"
-#: systemv/lpinfo.c:155
msgid "lpinfo: Expected scheme list after \"--exclude-schemes\"."
msgstr ""
"lpinfo: \"--exclude-schemes\" ã®ã‚ã¨ã«ã¯ã€ã‚¹ã‚­ãƒ¼ãƒžãƒ»ãƒªã‚¹ãƒˆã‚’指定ã™ã‚‹å¿…è¦ãŒã‚"
"ã‚Šã¾ã™ã€‚"
-#: systemv/lpinfo.c:173
msgid "lpinfo: Expected scheme list after \"--include-schemes\"."
msgstr ""
"lpinfo: \"--include-schemes\" ã®ã‚ã¨ã«ã¯ã€ã‚¹ã‚­ãƒ¼ãƒžãƒ»ãƒªã‚¹ãƒˆã‚’指定ã™ã‚‹å¿…è¦ãŒã‚"
"ã‚Šã¾ã™ã€‚"
-#: systemv/lpinfo.c:241
msgid "lpinfo: Expected timeout after \"--timeout\"."
msgstr ""
"lpinfo: \"--timeout\" ã®ã‚ã¨ã«ã¯ã€ã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆå€¤ã‚’指定ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚"
-#: systemv/lpinfo.c:265
#, c-format
msgid "lpinfo: Unknown argument \"%s\"."
msgstr "lpinfo: 未知ã®å¼•æ•° \"%s\"。"
-#: systemv/lpinfo.c:259
#, c-format
msgid "lpinfo: Unknown option \"%c\"."
msgstr "lpinfo: 未知ã®ã‚ªãƒ—ション \"%c\"。"
-#: systemv/lpinfo.c:252
#, c-format
msgid "lpinfo: Unknown option \"%s\"."
msgstr "lpinfo: 未知ã®ã‚ªãƒ—ション \"%s\"。"
-#: systemv/lpmove.c:133
#, c-format
msgid "lpmove: Unable to connect to server: %s"
msgstr "lpmove: サーãƒãƒ¼ã«æŽ¥ç¶šã§ãã¾ã›ã‚“: %s"
-#: systemv/lpmove.c:119
#, c-format
msgid "lpmove: Unknown argument \"%s\"."
msgstr "lpmove: 未知ã®å¼•æ•° \"%s\"。"
-#: systemv/lpmove.c:97
#, c-format
msgid "lpmove: Unknown option \"%c\"."
msgstr "lpmove: 未知ã®ã‚ªãƒ—ション \"%c\"。"
-#: systemv/lpoptions.c:143 systemv/lpoptions.c:161 systemv/lpoptions.c:237
msgid "lpoptions: No printers."
msgstr "lpoptions: プリンターãŒã‚ã‚Šã¾ã›ã‚“。"
-#: systemv/lpoptions.c:212
#, c-format
msgid "lpoptions: Unable to add printer or instance: %s"
msgstr "lpoptions: プリンターã¾ãŸã¯ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’追加ã§ãã¾ã›ã‚“: %s"
-#: systemv/lpoptions.c:507
#, c-format
msgid "lpoptions: Unable to get PPD file for %s: %s"
msgstr "lpoptions: %s ã® PPD ファイルをå–å¾—ã§ãã¾ã›ã‚“: %s"
-#: systemv/lpoptions.c:515
#, c-format
msgid "lpoptions: Unable to open PPD file for %s."
msgstr "lpoptions: %s ã® PPD ファイルを開ã‘ã¾ã›ã‚“。"
-#: systemv/lpoptions.c:92
msgid "lpoptions: Unknown printer or class."
msgstr "lpoptions: 未知ã®ãƒ—リンターã¾ãŸã¯ã‚¯ãƒ©ã‚¹ã§ã™ã€‚"
-#: systemv/lpstat.c:1074
#, c-format
msgid ""
"lpstat: error - %s environment variable names non-existent destination \"%s"
@@ -7176,143 +5551,118 @@ msgid ""
msgstr ""
"lpstat: エラー - 環境変数 %s ãŒã€å­˜åœ¨ã—ãªã„宛先 \"%s\" を指ã—ã¦ã„ã¾ã™ã€‚"
-#: systemv/lpstat.c:1010
#, c-format
msgid "members of class %s:"
msgstr "クラス %s ã®ãƒ¡ãƒ³ãƒãƒ¼:"
-#: berkeley/lpq.c:549
msgid "no entries"
msgstr "エントリーãŒã‚ã‚Šã¾ã›ã‚“"
-#: systemv/lpstat.c:1078
msgid "no system default destination"
msgstr "システムã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®å®›å…ˆãŒã‚ã‚Šã¾ã›ã‚“"
-#: scheduler/ipp.c:5548
msgid "notify-events not specified."
msgstr "notify-events ãŒæŒ‡å®šã•ã‚Œã¦ã„ã¾ã›ã‚“。"
-#: scheduler/ipp.c:2025 scheduler/ipp.c:5453
#, c-format
msgid "notify-recipient-uri URI \"%s\" is already used."
msgstr "notify-recipient-uri URI \"%s\" ã¯ã™ã§ã«ä½¿ã‚ã‚Œã¦ã„ã¾ã™ã€‚"
-#: scheduler/ipp.c:2015 scheduler/ipp.c:5443
#, c-format
msgid "notify-recipient-uri URI \"%s\" uses unknown scheme."
msgstr "notify-recipient-uri URI \"%s\" ã«ã¯æœªçŸ¥ã®ã‚¹ã‚­ãƒ¼ãƒ ãŒä½¿ã‚ã‚Œã¦ã„ã¾ã™ã€‚"
-#: cups/notify.c:87
msgid "pending"
msgstr "プリンター待ã¡"
-#: ppdc/ppdc.cxx:108 ppdc/ppdpo.cxx:93
#, c-format
msgid "ppdc: Adding include directory \"%s\"."
msgstr "ppdc: ディレクトリー \"%s\" を追加ã—ã¦ã„ã¾ã™ã€‚"
-#: ppdc/ppdpo.cxx:134
#, c-format
msgid "ppdc: Adding/updating UI text from %s."
msgstr "ppdc: %s ã‹ã‚‰ UI テキストを追加ã¾ãŸã¯æ›´æ–°ã—ã¦ã„ã¾ã™ã€‚"
-#: ppdc/ppdc-source.cxx:367
#, c-format
msgid "ppdc: Bad boolean value (%s) on line %d of %s."
msgstr "ppdc: ä¸æ­£ãª boolean 値 (%s) ãŒã‚ã‚Šã¾ã™ã€‚%d 行目ã€ãƒ•ã‚¡ã‚¤ãƒ«å %s。"
-#: ppdc/ppdc-import.cxx:264
#, c-format
msgid "ppdc: Bad font attribute: %s"
msgstr "ä¸æ­£ãªãƒ•ã‚©ãƒ³ãƒˆå±žæ€§: %s"
-#: ppdc/ppdc-source.cxx:1753
#, c-format
msgid "ppdc: Bad resolution name \"%s\" on line %d of %s."
msgstr "ppdc: ä¸æ­£ãª resolution å \"%s\" ãŒã‚ã‚Šã¾ã™ã€‚%d 行目ã€ãƒ•ã‚¡ã‚¤ãƒ«å %s。"
-#: ppdc/ppdc-source.cxx:1070
#, c-format
msgid "ppdc: Bad status keyword %s on line %d of %s."
msgstr "ppdc: ä¸æ­£ãª status キーワード %s ãŒã‚ã‚Šã¾ã™ã€‚%d 行目ã€ãƒ•ã‚¡ã‚¤ãƒ«å %s。"
-#: ppdc/ppdc-source.cxx:1990
#, c-format
msgid "ppdc: Bad variable substitution ($%c) on line %d of %s."
msgstr "ppdc: ä¸æ­£ãªæ•°å€¤ç½®æ› ($%c) ãŒã‚ã‚Šã¾ã™ã€‚%d 行目ã€ãƒ•ã‚¡ã‚¤ãƒ«å %s。"
-#: ppdc/ppdc-source.cxx:2675
#, c-format
msgid "ppdc: Choice found on line %d of %s with no Option."
msgstr ""
"ppdc: %d 行目ã€ãƒ•ã‚¡ã‚¤ãƒ«å %s ã§ã€Option ãŒãªã„ã®ã« Choice ãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸã€‚"
-#: ppdc/ppdc-source.cxx:1655
#, c-format
msgid "ppdc: Duplicate #po for locale %s on line %d of %s."
-msgstr "ppdc: locale %s ã«å¯¾ã—㦠#po ãŒäºŒé‡ã«å®šç¾©ã•ã‚Œã¦ã„ã¾ã™ã€‚%d 行目ã€ãƒ•ã‚¡ã‚¤ãƒ«å %s。"
+msgstr ""
+"ppdc: locale %s ã«å¯¾ã—㦠#po ãŒäºŒé‡ã«å®šç¾©ã•ã‚Œã¦ã„ã¾ã™ã€‚%d 行目ã€ãƒ•ã‚¡ã‚¤ãƒ«å "
+"%s。"
-#: ppdc/ppdc-source.cxx:889
#, c-format
msgid "ppdc: Expected a filter definition on line %d of %s."
msgstr "ppdc: %d 行目ã€ãƒ•ã‚¡ã‚¤ãƒ«å %s ã«ãŠã„ã¦ãƒ•ã‚£ãƒ«ã‚¿ãƒ¼å®šç¾©ãŒå¿…è¦ã§ã™ã€‚"
-#: ppdc/ppdc-source.cxx:912
#, c-format
msgid "ppdc: Expected a program name on line %d of %s."
msgstr "ppdc: %d 行目ã€ãƒ•ã‚¡ã‚¤ãƒ«å %s ã«ãŠã„ã¦ãƒ—ログラムåãŒå¿…è¦ã§ã™ã€‚"
-#: ppdc/ppdc-source.cxx:351
#, c-format
msgid "ppdc: Expected boolean value on line %d of %s."
msgstr "ppdc: %d 行目ã€ãƒ•ã‚¡ã‚¤ãƒ«å %s ã«ãŠã„㦠boolean 値ãŒå¿…è¦ã§ã™ã€‚"
-#: ppdc/ppdc-source.cxx:1050
#, c-format
msgid "ppdc: Expected charset after Font on line %d of %s."
msgstr ""
"ppdc: %d 行目ã€ãƒ•ã‚¡ã‚¤ãƒ«å %s ã«ãŠã„㦠Font ã®ã‚ã¨ã« charset ãŒå¿…è¦ã§ã™ã€‚"
-#: ppdc/ppdc-source.cxx:404
#, c-format
msgid "ppdc: Expected choice code on line %d of %s."
msgstr "ppdc: %d 行目ã€ãƒ•ã‚¡ã‚¤ãƒ«å %s ã«ãŠã„㦠choice code ãŒå¿…è¦ã§ã™ã€‚"
-#: ppdc/ppdc-source.cxx:392
#, c-format
msgid "ppdc: Expected choice name/text on line %d of %s."
msgstr "ppdc: %d 行目ã€ãƒ•ã‚¡ã‚¤ãƒ«å %s ã«ãŠã„㦠choice name/text ãŒå¿…è¦ã§ã™ã€‚"
-#: ppdc/ppdc-source.cxx:460
#, c-format
msgid "ppdc: Expected color order for ColorModel on line %d of %s."
msgstr ""
"ppdc: %d 行目ã€ãƒ•ã‚¡ã‚¤ãƒ«å %s ã«ãŠã„㦠ColorModel ã«å¯¾ã™ã‚‹ color order ãŒå¿…è¦"
"ã§ã™ã€‚"
-#: ppdc/ppdc-source.cxx:449
#, c-format
msgid "ppdc: Expected colorspace for ColorModel on line %d of %s."
msgstr ""
"ppdc: %d 行目ã€ãƒ•ã‚¡ã‚¤ãƒ«å %s ã«ãŠã„㦠ColorModel ã«å¯¾ã™ã‚‹ colorspace ãŒå¿…è¦ã§"
"ã™ã€‚"
-#: ppdc/ppdc-source.cxx:471
#, c-format
msgid "ppdc: Expected compression for ColorModel on line %d of %s."
msgstr ""
"ppdc: %d 行目ã€ãƒ•ã‚¡ã‚¤ãƒ«å %s ã«ãŠã„㦠ColorModel ã«å¯¾ã™ã‚‹ compression ãŒå¿…è¦"
"ã§ã™ã€‚"
-#: ppdc/ppdc-source.cxx:652
#, c-format
msgid "ppdc: Expected constraints string for UIConstraints on line %d of %s."
msgstr ""
"ppdc: %d 行目ã€ãƒ•ã‚¡ã‚¤ãƒ«å %s ã«ãŠã„㦠UIConstraints ã«å¯¾ã™ã‚‹ constraint ãŒå¿…"
"è¦ã§ã™ã€‚"
-#: ppdc/ppdc-source.cxx:2861
#, c-format
msgid ""
"ppdc: Expected driver type keyword following DriverType on line %d of %s."
@@ -7320,142 +5670,117 @@ msgstr ""
"ppdc: %d 行目ã€ãƒ•ã‚¡ã‚¤ãƒ«å %s ã«ãŠã„㦠DriverType ã®ã‚ã¨ã« driver type "
"keyword ãŒå¿…è¦ã§ã™ã€‚"
-#: ppdc/ppdc-source.cxx:783
#, c-format
msgid "ppdc: Expected duplex type after Duplex on line %d of %s."
msgstr ""
"ppdc: %d 行目ã€ãƒ•ã‚¡ã‚¤ãƒ«å %s ã«ãŠã„㦠Duplex ã®ã‚ã¨ã« type ãŒå¿…è¦ã§ã™ã€‚"
-#: ppdc/ppdc-source.cxx:1034
#, c-format
msgid "ppdc: Expected encoding after Font on line %d of %s."
msgstr ""
"ppdc: %d 行目ã€ãƒ•ã‚¡ã‚¤ãƒ«å %s ã«ãŠã„㦠Font ã®ã‚ã¨ã« encoding ãŒå¿…è¦ã§ã™ã€‚"
-#: ppdc/ppdc-source.cxx:1646
#, c-format
msgid "ppdc: Expected filename after #po %s on line %d of %s."
msgstr "ppdc: #po %s ã®ã‚ã¨ã«ãƒ•ã‚¡ã‚¤ãƒ«åãŒå¿…è¦ã§ã™ (%d 行目, ファイル %s)。"
-#: ppdc/ppdc-source.cxx:1162
#, c-format
msgid "ppdc: Expected group name/text on line %d of %s."
msgstr "ppdc: %d 行目ã€ãƒ•ã‚¡ã‚¤ãƒ«å %s ã«ãŠã„㦠group name/text ãŒå¿…è¦ã§ã™ã€‚"
-#: ppdc/ppdc-source.cxx:2575
#, c-format
msgid "ppdc: Expected include filename on line %d of %s."
msgstr "ppdc: %d 行目ã€ãƒ•ã‚¡ã‚¤ãƒ«å %s ã«ãŠã„㦠include ファイルå ãŒå¿…è¦ã§ã™ã€‚"
-#: ppdc/ppdc-source.cxx:1459
#, c-format
msgid "ppdc: Expected integer on line %d of %s."
msgstr "ppdc: %d 行目ã€ãƒ•ã‚¡ã‚¤ãƒ«å %s ã«ãŠã„ã¦æ•´æ•°æŒ‡å®šãŒå¿…è¦ã§ã™ã€‚"
-#: ppdc/ppdc-source.cxx:1638
#, c-format
msgid "ppdc: Expected locale after #po on line %d of %s."
msgstr "ppdc: %d 行目ã€ãƒ•ã‚¡ã‚¤ãƒ«å %s ã«ãŠã„㦠#po ã®ã‚ã¨ã« locale ãŒå¿…è¦ã§ã™ã€‚"
-#: ppdc/ppdc-source.cxx:310
#, c-format
msgid "ppdc: Expected name after %s on line %d of %s."
msgstr "ppdc: %s ã®ã‚ã¨ã« name ãŒå¿…è¦ã§ã™ã€‚%d 行目ã€ãƒ•ã‚¡ã‚¤ãƒ«å %s。"
-#: ppdc/ppdc-source.cxx:3233
#, c-format
msgid "ppdc: Expected name after FileName on line %d of %s."
msgstr ""
"ppdc: %d 行目ã€ãƒ•ã‚¡ã‚¤ãƒ«å %s ã«ãŠã„㦠FileName ã®ã‚ã¨ã« name ãŒå¿…è¦ã§ã™ã€‚"
-#: ppdc/ppdc-source.cxx:1015
#, c-format
msgid "ppdc: Expected name after Font on line %d of %s."
msgstr "ppdc: %d 行目ã€ãƒ•ã‚¡ã‚¤ãƒ«å %s ã«ãŠã„㦠Font ã®ã‚ã¨ã« name ãŒå¿…è¦ã§ã™ã€‚"
-#: ppdc/ppdc-source.cxx:3064
#, c-format
msgid "ppdc: Expected name after Manufacturer on line %d of %s."
msgstr ""
"ppdc: %d 行目ã€ãƒ•ã‚¡ã‚¤ãƒ«å %s ã«ãŠã„㦠Manufacturer ã®ã‚ã¨ã« name ãŒå¿…è¦ã§ã™ã€‚"
-#: ppdc/ppdc-source.cxx:3097
#, c-format
msgid "ppdc: Expected name after MediaSize on line %d of %s."
msgstr ""
"ppdc: %d 行目ã€ãƒ•ã‚¡ã‚¤ãƒ«å %s ã«ãŠã„㦠MediaSize ã®ã‚ã¨ã« name ãŒå¿…è¦ã§ã™ã€‚"
-#: ppdc/ppdc-source.cxx:3187
#, c-format
msgid "ppdc: Expected name after ModelName on line %d of %s."
msgstr ""
"ppdc: %d 行目ã€ãƒ•ã‚¡ã‚¤ãƒ«å %s ã«ãŠã„㦠ModelName ã®ã‚ã¨ã« name ãŒå¿…è¦ã§ã™ã€‚"
-#: ppdc/ppdc-source.cxx:3250
#, c-format
msgid "ppdc: Expected name after PCFileName on line %d of %s."
msgstr ""
"ppdc: %d 行目ã€ãƒ•ã‚¡ã‚¤ãƒ«å %s ã«ãŠã„㦠PCFileName ã®ã‚ã¨ã« name ãŒå¿…è¦ã§ã™ã€‚"
-#: ppdc/ppdc-source.cxx:1113
#, c-format
msgid "ppdc: Expected name/text after %s on line %d of %s."
msgstr "ppdc: %s ã®ã‚ã¨ã« name/text ãŒå¿…è¦ã§ã™ã€‚%d 行目ã€ãƒ•ã‚¡ã‚¤ãƒ«å %s。"
-#: ppdc/ppdc-source.cxx:1202
#, c-format
msgid "ppdc: Expected name/text after Installable on line %d of %s."
msgstr ""
"ppdc: %d 行目ã€ãƒ•ã‚¡ã‚¤ãƒ«å %s ã«ãŠã„㦠Installable ã®ã‚ã¨ã« name/text ãŒå¿…è¦ã§"
"ã™ã€‚"
-#: ppdc/ppdc-source.cxx:1739
#, c-format
msgid "ppdc: Expected name/text after Resolution on line %d of %s."
msgstr ""
"ppdc: %d 行目ã€ãƒ•ã‚¡ã‚¤ãƒ«å %s ã«ãŠã„㦠Resolution ã®ã‚ã¨ã« name/text ãŒå¿…è¦ã§"
"ã™ã€‚"
-#: ppdc/ppdc-source.cxx:436
#, c-format
msgid "ppdc: Expected name/text combination for ColorModel on line %d of %s."
msgstr ""
"ppdc: %d 行目ã€ãƒ•ã‚¡ã‚¤ãƒ«å %s ã«ãŠã„㦠ColorModel ã«å¯¾ã™ã‚‹ name/text ãŒå¿…è¦ã§"
"ã™ã€‚"
-#: ppdc/ppdc-source.cxx:1531
#, c-format
msgid "ppdc: Expected option name/text on line %d of %s."
msgstr "ppdc: %d 行目ã€ãƒ•ã‚¡ã‚¤ãƒ«å %s ã«ãŠã„㦠option name/text ãŒå¿…è¦ã§ã™ã€‚"
-#: ppdc/ppdc-source.cxx:1565
#, c-format
msgid "ppdc: Expected option section on line %d of %s."
msgstr "ppdc: %d 行目ã€ãƒ•ã‚¡ã‚¤ãƒ«å %s ã«ãŠã„㦠option section ãŒå¿…è¦ã§ã™ã€‚"
-#: ppdc/ppdc-source.cxx:1543
#, c-format
msgid "ppdc: Expected option type on line %d of %s."
msgstr "ppdc: %d 行目ã€ãƒ•ã‚¡ã‚¤ãƒ«å %s ã«ãŠã„㦠option type ãŒå¿…è¦ã§ã™ã€‚"
-#: ppdc/ppdc-source.cxx:1722
#, c-format
msgid "ppdc: Expected override field after Resolution on line %d of %s."
msgstr ""
"ppdc: %d 行目ã€ãƒ•ã‚¡ã‚¤ãƒ«å %s ã«ãŠã„㦠Resolution ã®ã‚ã¨ã« override field ãŒå¿…"
"è¦ã§ã™ã€‚"
-#: ppdc/ppdc-catalog.cxx:389 ppdc/ppdc-catalog.cxx:401
#, c-format
msgid "ppdc: Expected quoted string on line %d of %s."
msgstr "%d è¡Œ: %s ã«ã¯å¼•ç”¨ç¬¦ã§å›²ã¾ã‚ŒãŸæ–‡å­—列ãŒå¿…è¦ã§ã™ã€‚"
-#: ppdc/ppdc-source.cxx:961
#, c-format
msgid "ppdc: Expected real number on line %d of %s."
msgstr "ppdc: %d 行目ã€ãƒ•ã‚¡ã‚¤ãƒ«å %s ã«ãŠã„ã¦å®Ÿæ•°ãŒå¿…è¦ã§ã™ã€‚"
-#: ppdc/ppdc-source.cxx:529
#, c-format
msgid ""
"ppdc: Expected resolution/mediatype following ColorProfile on line %d of %s."
@@ -7463,7 +5788,6 @@ msgstr ""
"ppdc: %d 行目ã€ãƒ•ã‚¡ã‚¤ãƒ«å %s ã«ãŠã„㦠ColorProfile ã«ç¶šã„㦠resolution/"
"mediatype ãŒå¿…è¦ã§ã™ã€‚"
-#: ppdc/ppdc-source.cxx:1820
#, c-format
msgid ""
"ppdc: Expected resolution/mediatype following SimpleColorProfile on line %d "
@@ -7472,349 +5796,282 @@ msgstr ""
"ppdc: %d 行目ã€ãƒ•ã‚¡ã‚¤ãƒ«å %s ã«ãŠã„㦠SimpleColorProfile ã«ç¶šã„㦠resolution/"
"mediatype ãŒå¿…è¦ã§ã™ã€‚"
-#: ppdc/ppdc-source.cxx:318
#, c-format
msgid "ppdc: Expected selector after %s on line %d of %s."
msgstr "ppdc: %s ã®ã‚ã¨ã« selector ãŒå¿…è¦ã§ã™ã€‚%d 行目ã€ãƒ•ã‚¡ã‚¤ãƒ«å %s。"
-#: ppdc/ppdc-source.cxx:1058
#, c-format
msgid "ppdc: Expected status after Font on line %d of %s."
msgstr ""
"ppdc: %d 行目ã€ãƒ•ã‚¡ã‚¤ãƒ«å %s ã«ãŠã„㦠Font ã®ã‚ã¨ã« status ãŒå¿…è¦ã§ã™ã€‚"
-#: ppdc/ppdc-source.cxx:2750
#, c-format
msgid "ppdc: Expected string after Copyright on line %d of %s."
msgstr ""
"ppdc: %d 行目ã€ãƒ•ã‚¡ã‚¤ãƒ«å %s ã«ãŠã„㦠Copyright ã®ã‚ã¨ã«æ–‡å­—列ãŒå¿…è¦ã§ã™ã€‚"
-#: ppdc/ppdc-source.cxx:3353
#, c-format
msgid "ppdc: Expected string after Version on line %d of %s."
msgstr ""
"ppdc: %d 行目ã€ãƒ•ã‚¡ã‚¤ãƒ«å %s ã«ãŠã„㦠Version ã®ã‚ã¨ã«æ–‡å­—列ãŒå¿…è¦ã§ã™ã€‚"
-#: ppdc/ppdc-source.cxx:685
#, c-format
msgid "ppdc: Expected two option names on line %d of %s."
msgstr "ppdc: %d 行目ã€ãƒ•ã‚¡ã‚¤ãƒ«å %s ã«ãŠã„㦠2 ã¤ã®ã‚ªãƒ—ションåãŒå¿…è¦ã§ã™ã€‚"
-#: ppdc/ppdc-source.cxx:329
#, c-format
msgid "ppdc: Expected value after %s on line %d of %s."
msgstr "ppdc: %s ã®ã‚ã¨ã« value ãŒå¿…è¦ã§ã™ã€‚%d 行目ã€ãƒ•ã‚¡ã‚¤ãƒ«å %s。"
-#: ppdc/ppdc-source.cxx:1042
#, c-format
msgid "ppdc: Expected version after Font on line %d of %s."
msgstr ""
"ppdc: %d 行目ã€ãƒ•ã‚¡ã‚¤ãƒ«å %s ã«ãŠã„㦠Font ã®ã‚ã¨ã« version ãŒå¿…è¦ã§ã™ã€‚"
-#: ppdc/ppdc-source.cxx:184
#, c-format
msgid "ppdc: Invalid #include/#po filename \"%s\"."
msgstr "ppdc: 無効㪠#include/#po ファイルåã§ã™ \"%s\"。"
-#: ppdc/ppdc-source.cxx:929
#, c-format
msgid "ppdc: Invalid cost for filter on line %d of %s."
msgstr ""
"ppdc: %d 行目ã€ãƒ•ã‚¡ã‚¤ãƒ«å %s ã«ãŠã„ã¦ãƒ•ã‚£ãƒ«ã‚¿ãƒ¼ã«å¯¾ã™ã‚‹ç„¡åŠ¹ãª cost ãŒã‚ã‚Šã¾"
"ã™ã€‚"
-#: ppdc/ppdc-source.cxx:921
#, c-format
msgid "ppdc: Invalid empty MIME type for filter on line %d of %s."
msgstr ""
"ppdc: %d 行目ã€ãƒ•ã‚¡ã‚¤ãƒ«å %s ã«ãŠã„ã¦ãƒ•ã‚£ãƒ«ã‚¿ãƒ¼ã«å¯¾ã™ã‚‹ç„¡åŠ¹ãªç©ºã® MIME タイプ"
"ãŒã‚ã‚Šã¾ã™ã€‚"
-#: ppdc/ppdc-source.cxx:937
#, c-format
msgid "ppdc: Invalid empty program name for filter on line %d of %s."
msgstr ""
"ppdc: %d 行目ã€ãƒ•ã‚¡ã‚¤ãƒ«å %s ã«ãŠã„ã¦ãƒ•ã‚£ãƒ«ã‚¿ãƒ¼ã«å¯¾ã™ã‚‹ãƒ—ログラムåãŒç©ºã§ã‚ã‚Š"
"無効ã§ã™ã€‚"
-#: ppdc/ppdc-source.cxx:1585
#, c-format
msgid "ppdc: Invalid option section \"%s\" on line %d of %s."
-msgstr "ppdc: 無効㪠option section ãŒã‚ã‚Šã¾ã™ \"%s\"。%d 行目ã€ãƒ•ã‚¡ã‚¤ãƒ«å %s。"
+msgstr ""
+"ppdc: 無効㪠option section ãŒã‚ã‚Šã¾ã™ \"%s\"。%d 行目ã€ãƒ•ã‚¡ã‚¤ãƒ«å %s。"
-#: ppdc/ppdc-source.cxx:1557
#, c-format
msgid "ppdc: Invalid option type \"%s\" on line %d of %s."
msgstr "ppdc: 無効㪠option type ãŒã‚ã‚Šã¾ã™ \"%s\"。%d 行目ã€ãƒ•ã‚¡ã‚¤ãƒ«å %s。"
-#: ppdc/ppdc.cxx:246 ppdc/ppdpo.cxx:123
#, c-format
msgid "ppdc: Loading driver information file \"%s\"."
msgstr "ppdc: ドライãƒãƒ¼æƒ…報ファイル \"%s\" を読ã¿è¾¼ã‚“ã§ã„ã¾ã™ã€‚"
-#: ppdc/ppdc.cxx:182
#, c-format
msgid "ppdc: Loading messages for locale \"%s\"."
msgstr "ppdc: ロケール \"%s\" ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’読ã¿è¾¼ã‚“ã§ã„ã¾ã™ã€‚"
-#: ppdc/ppdc.cxx:121
#, c-format
msgid "ppdc: Loading messages from \"%s\"."
msgstr "ppdc: \"%s\" ã‹ã‚‰ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’読ã¿è¾¼ã‚“ã§ã„ã¾ã™ã€‚"
-#: ppdc/ppdc-source.cxx:2368 ppdc/ppdc-source.cxx:2600
#, c-format
msgid "ppdc: Missing #endif at end of \"%s\"."
msgstr "ppdc: \"%s\" ã®æœ€å¾Œã« #endif ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。"
-#: 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: %d 行目ã€ãƒ•ã‚¡ã‚¤ãƒ«å %s ã«ãŠã„㦠#if ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。"
-#: ppdc/ppdc-catalog.cxx:466
#, c-format
msgid ""
"ppdc: Need a msgid line before any translation strings on line %d of %s."
msgstr "%d è¡Œ: %s ã®ç¿»è¨³æ–‡å­—列ã®å‰ã« msgid è¡ŒãŒå¿…è¦ã§ã™ã€‚"
-#: ppdc/ppdc-driver.cxx:712
#, c-format
msgid "ppdc: No message catalog provided for locale %s."
msgstr "ppdc: ロケール %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: オプション %s ãŒè¡Œ %dã€ãƒ•ã‚¡ã‚¤ãƒ« %s ã® 2 ã¤ã®ç•°ãªã‚‹ã‚°ãƒ«ãƒ¼ãƒ—ã§å®šç¾©ã•ã‚Œã¦"
"ã„ã¾ã™ã€‚"
-#: ppdc/ppdc-source.cxx:1601
#, c-format
msgid "ppdc: Option %s redefined with a different type on line %d of %s."
-msgstr "ppdc: オプション %s ã¯ç•°ãªã‚‹åž‹ã§å†å®šç¾©ã•ã‚Œã¦ã„ã¾ã™ã€‚%d 行目ã€ãƒ•ã‚¡ã‚¤ãƒ«å %s。"
+msgstr ""
+"ppdc: オプション %s ã¯ç•°ãªã‚‹åž‹ã§å†å®šç¾©ã•ã‚Œã¦ã„ã¾ã™ã€‚%d 行目ã€ãƒ•ã‚¡ã‚¤ãƒ«å %s。"
-#: ppdc/ppdc-source.cxx:662
#, c-format
msgid "ppdc: Option constraint must *name on line %d of %s."
msgstr ""
"ppdc: %d 行目ã€ãƒ•ã‚¡ã‚¤ãƒ«å %s ã«ãŠã„㦠Option constraint 㯠*name ã§æŒ‡å®šã—ãªã‘"
"ã‚Œã°ãªã‚Šã¾ã›ã‚“。"
-#: ppdc/ppdc-source.cxx:2451
#, c-format
msgid "ppdc: Too many nested #if's on line %d of %s."
msgstr "ppdc: %d 行目ã€ãƒ•ã‚¡ã‚¤ãƒ«å %s ã«ãŠã„㦠#if ã®ãƒã‚¹ãƒˆãŒå¤šã™ãŽã¾ã™ã€‚"
-#: ppdc/ppdc.cxx:369
#, c-format
msgid "ppdc: Unable to create PPD file \"%s\" - %s."
msgstr "ppdc: PPD ファイル \"%s\" を作æˆã§ãã¾ã›ã‚“ - %s。"
-#: ppdc/ppdc.cxx:261
#, c-format
msgid "ppdc: Unable to create output directory %s: %s"
msgstr "ppdc: 出力ディレクトリー \"%s\" を作æˆã§ãã¾ã›ã‚“ - %s"
-#: ppdc/ppdc.cxx:282
#, c-format
msgid "ppdc: Unable to create output pipes: %s"
msgstr "ppdc: 出力パイプを作æˆã§ãã¾ã›ã‚“: %s"
-#: ppdc/ppdc.cxx:298 ppdc/ppdc.cxx:304
#, c-format
msgid "ppdc: Unable to execute cupstestppd: %s"
msgstr "ppdc: cupstestppd を実行ã§ãã¾ã›ã‚“: %s"
-#: ppdc/ppdc-source.cxx:1687
#, c-format
msgid "ppdc: Unable to find #po file %s on line %d of %s."
msgstr "ppdc: #po ファイル %s ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。%d 行目ã€ãƒ•ã‚¡ã‚¤ãƒ«å %s。"
-#: ppdc/ppdc-source.cxx:2607
#, c-format
msgid "ppdc: Unable to find include file \"%s\" on line %d of %s."
-msgstr "ppdc: インクルードファイル %s ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。%d 行目ã€ãƒ•ã‚¡ã‚¤ãƒ«å %s。"
+msgstr ""
+"ppdc: インクルードファイル %s ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。%d 行目ã€ãƒ•ã‚¡ã‚¤ãƒ«å %s。"
-#: ppdc/ppdc.cxx:193
#, c-format
msgid "ppdc: Unable to find localization for \"%s\" - %s"
msgstr "ppdc: \"%s\" ã«å¯¾ã™ã‚‹åœ°åŸŸåŒ–情報ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ - %s"
-#: ppdc/ppdc.cxx:130
#, c-format
msgid "ppdc: Unable to load localization file \"%s\" - %s"
msgstr "ppdc: \"%s\" ã«å¯¾ã™ã‚‹ãƒ­ãƒ¼ã‚«ãƒ©ã‚¤ã‚ºãƒ•ã‚¡ã‚¤ãƒ«ã‚’読ã¿è¾¼ã‚ã¾ã›ã‚“ - %s"
-#: ppdc/ppdc-file.cxx:50
#, c-format
msgid "ppdc: Unable to open %s: %s"
msgstr "ppdc: %s ã‚’é–‹ã‘ã¾ã›ã‚“: %s"
-#: ppdc/ppdc-source.cxx:2011
#, c-format
msgid "ppdc: Undefined variable (%s) on line %d of %s."
msgstr "ppdc: 変数 (%s) ã¯æœªå®šç¾©ã§ã™ã€‚%d 行目ã€ãƒ•ã‚¡ã‚¤ãƒ«å %s。"
-#: ppdc/ppdc-catalog.cxx:483
#, c-format
msgid "ppdc: Unexpected text on line %d of %s."
msgstr "%d è¡Œ: %s ã¯äºˆæœŸã›ã¬ãƒ†ã‚­ã‚¹ãƒˆã§ã™ã€‚"
-#: ppdc/ppdc-source.cxx:2880
#, c-format
msgid "ppdc: Unknown driver type %s on line %d of %s."
msgstr "ppdc: %s ã¯æœªçŸ¥ã®ãƒ‰ãƒ©ã‚¤ãƒãƒ¼ã‚¿ã‚¤ãƒ—ã§ã™ã€‚%d 行目ã€ãƒ•ã‚¡ã‚¤ãƒ«å %s。"
-#: ppdc/ppdc-source.cxx:863
#, c-format
msgid "ppdc: Unknown duplex type \"%s\" on line %d of %s."
msgstr "ppdc: \"%s\" ã¯æœªçŸ¥ã®ä¸¡é¢ã‚¿ã‚¤ãƒ—ã§ã™ã€‚%d 行目ã€ãƒ•ã‚¡ã‚¤ãƒ«å %s。"
-#: ppdc/ppdc-source.cxx:3110
#, c-format
msgid "ppdc: Unknown media size \"%s\" on line %d of %s."
msgstr "ppdc: \"%s\" ã¯æœªçŸ¥ã®ç”¨ç´™ã‚µã‚¤ã‚ºã§ã™ã€‚%d 行目ã€ãƒ•ã‚¡ã‚¤ãƒ«å %s。"
-#: ppdc/ppdc-catalog.cxx:511
#, c-format
msgid "ppdc: Unknown message catalog format for \"%s\"."
msgstr "\"%s\" ã¯æœªçŸ¥ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚«ã‚¿ãƒ­ã‚°ã®æ›¸å¼ã§ã™ã€‚"
-#: ppdc/ppdc-source.cxx:3364
#, c-format
msgid "ppdc: Unknown token \"%s\" seen on line %d of %s."
msgstr "ppdc: 未知ã®ãƒˆãƒ¼ã‚¯ãƒ³ \"%s\" ãŒã‚ã‚Šã¾ã™ã€‚%d 行目ã€ãƒ•ã‚¡ã‚¤ãƒ«å %s。"
-#: ppdc/ppdc-source.cxx:971
#, c-format
msgid ""
"ppdc: Unknown trailing characters in real number \"%s\" on line %d of %s."
msgstr "ppdc: 実数 \"%s\" ã«æœªçŸ¥ã®çµ‚了文字ãŒã‚ã‚Šã¾ã™ã€‚%d 行目ã€ãƒ•ã‚¡ã‚¤ãƒ«å %s。"
-#: ppdc/ppdc-source.cxx:2121
#, c-format
msgid "ppdc: Unterminated string starting with %c on line %d of %s."
msgstr ""
"ppdc: %c ã§å§‹ã¾ã‚‹æ–‡å­—ã«å¯¾ã—ã¦çµ‚端文字ãŒã‚ã‚Šã¾ã›ã‚“。%d 行目ã€ãƒ•ã‚¡ã‚¤ãƒ«å %s。"
-#: ppdc/ppdc.cxx:360
#, c-format
msgid "ppdc: Warning - overlapping filename \"%s\"."
msgstr "ppdc: 警告 - ファイルå \"%s\" ãŒé‡è¤‡ã—ã¦ã„ã¾ã™ã€‚"
-#: ppdc/ppdc.cxx:375
#, c-format
msgid "ppdc: Writing %s."
msgstr "ppdc: %s を書ã込んã§ã„ã¾ã™ã€‚"
-#: ppdc/ppdc.cxx:143
#, c-format
msgid "ppdc: Writing PPD files to directory \"%s\"."
msgstr "ppdc: ディレクトリー \"%s\" ã« PPD ファイルを書ã込んã§ã„ã¾ã™ã€‚"
-#: ppdc/ppdmerge.cxx:130
#, c-format
msgid "ppdmerge: Bad LanguageVersion \"%s\" in %s."
msgstr "ppdmerge: ä¸æ­£ãª LanguageVersion \"%s\" ㌠%s ã«ã‚ã‚Šã¾ã™ã€‚"
-#: ppdc/ppdmerge.cxx:170
#, c-format
msgid "ppdmerge: Ignoring PPD file %s."
msgstr "ppdmerge: PPD ファイル %s を無視ã—ã¾ã™ã€‚"
-#: ppdc/ppdmerge.cxx:154
#, c-format
msgid "ppdmerge: Unable to backup %s to %s - %s"
msgstr "ppdmerge: %s ã‚’ %s ã«ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—ã§ãã¾ã›ã‚“ - %s"
-#: systemv/lpstat.c:1777
#, c-format
msgid "printer %s disabled since %s -"
msgstr "プリンター %s 㯠%s ã‹ã‚‰ç„¡åŠ¹ã§ã™ -"
-#: systemv/lpstat.c:1766
#, c-format
msgid "printer %s is idle. enabled since %s"
msgstr "プリンター %s ã¯å¾…機中ã§ã™ã€‚%s 以æ¥æœ‰åŠ¹ã§ã™"
-#: systemv/lpstat.c:1771
#, c-format
msgid "printer %s now printing %s-%d. enabled since %s"
msgstr "プリンター %s 㯠%s-%d ã‚’å°åˆ·ã—ã¦ã„ã¾ã™ã€‚%s 以æ¥æœ‰åŠ¹ã§ã™"
-#: systemv/lpstat.c:1900
#, c-format
msgid "printer %s/%s disabled since %s -"
msgstr "プリンター %s/%s 㯠%s ã‹ã‚‰ç„¡åŠ¹ã§ã™ -"
-#: systemv/lpstat.c:1886
#, c-format
msgid "printer %s/%s is idle. enabled since %s"
msgstr "プリンター %s/%s ã¯å¾…機中ã§ã™ã€‚%s 以æ¥æœ‰åŠ¹ã§ã™"
-#: systemv/lpstat.c:1893
#, c-format
msgid "printer %s/%s now printing %s-%d. enabled since %s"
msgstr "プリンター %s/%s ã¯ç¾åœ¨ %s-%d ã‚’å°åˆ·ä¸­ã§ã™ã€‚%s 以æ¥æœ‰åŠ¹ã§ã™"
-#: cups/notify.c:93 cups/notify.c:134
msgid "processing"
msgstr "処ç†ä¸­"
-#: systemv/lp.c:662
#, c-format
msgid "request id is %s-%d (%d file(s))"
msgstr "リクエスト ID 㯠%s-%d ã§ã™ (%d 個ã®ãƒ•ã‚¡ã‚¤ãƒ«)"
-#: cups/snmp.c:972
msgid "request-id uses indefinite length"
msgstr "リクエスト ID ã®é•·ã•ãŒä¸å®š"
-#: systemv/lpstat.c:2032
msgid "scheduler is not running"
msgstr "スケジューラーã¯å‹•ä½œã—ã¦ã„ã¾ã›ã‚“"
-#: systemv/lpstat.c:2028
msgid "scheduler is running"
msgstr "スケジューラーã¯å‹•ä½œä¸­ã§ã™"
-#: cups/adminutil.c:2148
#, c-format
msgid "stat of %s failed: %s"
msgstr "%s ã®çŠ¶æ…‹å–å¾—ã«å¤±æ•—ã—ã¾ã—ãŸ: %s"
-#: berkeley/lpc.c:203
msgid "status\t\tShow status of daemon and queue."
msgstr "status\t\tデーモンã¨ã‚­ãƒ¥ãƒ¼ã®çŠ¶æ…‹ã‚’表示。"
-#: cups/notify.c:96 cups/notify.c:137
msgid "stopped"
msgstr "åœæ­¢"
-#: systemv/lpstat.c:1052
#, c-format
msgid "system default destination: %s"
msgstr "システムã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®å®›å…ˆ: %s"
-#: systemv/lpstat.c:1049
#, c-format
msgid "system default destination: %s/%s"
msgstr "システムã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®å®›å…ˆ: %s/%s"
-#: cups/notify.c:108 cups/notify.c:140
msgid "unknown"
msgstr "未知"
-#: cups/notify.c:117
msgid "untitled"
msgstr "タイトルãªã—"
-#: cups/snmp.c:997
msgid "variable-bindings uses indefinite length"
msgstr "variable-bindings ã®é•·ã•ãŒä¸å®š"
@@ -7893,6 +6150,11 @@ msgstr "variable-bindings ã®é•·ã•ãŒä¸å®š"
#~ msgid "Stylus Photo Series"
#~ msgstr "Stylus Photo シリーズ"
+#~ msgid ""
+#~ "The '%s' Job Description attribute cannot be supplied in a job creation "
+#~ "request."
+#~ msgstr "'%s' Job Description 属性ã¯ã‚¸ãƒ§ãƒ–作æˆè¦æ±‚ã®ä¸­ã§æŒ‡å®šã§ãã¾ã›ã‚“。"
+
#~ msgid "The output bin is almost full."
#~ msgstr "排紙トレイãŒã»ã¨ã‚“ã©ä¸€æ¯ã§ã™ã€‚"
diff --git a/locale/cups_ru.po b/locale/cups_ru.po
index 983a7e7f3..83dae0862 100644
--- a/locale/cups_ru.po
+++ b/locale/cups_ru.po
@@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: CUPS 2.0\n"
"Report-Msgid-Bugs-To: http://www.cups.org/str.php\n"
-"POT-Creation-Date: 2015-01-28 22:25-0400\n"
+"POT-Creation-Date: 2015-06-08 17:14-0400\n"
"PO-Revision-Date: 2015-01-28 12:00-0800\n"
"Last-Translator: Aleksandr Proklov\n"
"Language-Team: PuppyRus Linux Team\n"
@@ -21,6 +21,7 @@ msgstr "\t\t(нет)"
msgid "\t%d entries"
msgstr "\tзапиÑей: %d"
+#, c-format
msgid "\t%s"
msgstr "\t%s"
@@ -243,8 +244,8 @@ msgid ""
"be named Duplex.\n"
" REF: Page 122, section 5.17"
msgstr ""
-"\tWARN\tКлючевое Ñлово параметра дуплекÑа %s может привеÑти к "
-"некорректным результатам. ИÑпользуйте Ð¸Ð¼Ñ 'Duplex'\n"
+"\tWARN\tКлючевое Ñлово параметра дуплекÑа %s может привеÑти к некорректным "
+"результатам. ИÑпользуйте Ð¸Ð¼Ñ 'Duplex'\n"
" REF: Стр. 122, раздел 5.17"
msgid " WARN File contains a mix of CR, LF, and CR LF line endings."
@@ -393,9 +394,7 @@ msgstr " %s Ошибки в %s - должно быть %s."
#, c-format
msgid " %s Cannot provide both APScanAppPath and APScanAppBundleID."
-msgstr ""
-"\t%s Ðевозможно предоÑтавить APScanAppPath и APScanAppBundleID "
-"вмеÑте."
+msgstr "\t%s Ðевозможно предоÑтавить APScanAppPath и APScanAppBundleID вмеÑте."
#, c-format
msgid " %s Default choices conflicting."
@@ -410,8 +409,8 @@ msgid " %s Missing \"%s\" translation string for option %s, choice %s."
msgstr "\t%s Перевод \"%s\" отÑутÑтвует Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° %s, выбора %s"
#, c-format
-msgid " %s Missing \"%s\" translation string for option %s"
-msgstr "\t%s Перевод \"%s\" отÑутÑтвует Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° %s"
+msgid " %s Missing \"%s\" translation string for option %s."
+msgstr ""
#, c-format
msgid " %s Missing %s file \"%s\"."
@@ -435,8 +434,7 @@ msgstr ""
#, c-format
msgid " %s Missing choice *%s %s in UIConstraints \"*%s %s *%s %s\"."
-msgstr ""
-" %s Выбор *%s %s отÑутÑтвует в UIConstraints \"*%s %s *%s %s\"."
+msgstr " %s Выбор *%s %s отÑутÑтвует в UIConstraints \"*%s %s *%s %s\"."
#, c-format
msgid " %s Missing choice *%s %s in cupsUIConstraints %s: \"%s\""
@@ -495,7 +493,6 @@ msgid ""
" %s cupsUIResolver %s does not list at least two different options."
msgstr "\t%s Ð’ cupsUIResolver %s не перечиÑлено как минимум два параметра."
-
#, c-format
msgid ""
" **FAIL** %s must be 1284DeviceID\n"
@@ -504,7 +501,6 @@ msgstr ""
"\t**FAIL** %s должно ÑоответÑтвовать 1284DeviceID\n"
" REF: Стр. 72, раздел 5.5"
-
#, c-format
msgid ""
" **FAIL** Bad Default%s %s\n"
@@ -614,21 +610,19 @@ msgid ""
" **FAIL** Default translation string for option %s choice %s contains "
"8-bit characters."
msgstr ""
-"\t**FAIL** Стандартный перевод Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° %s выбора %s Ñодержит "
-"8-битовые Ñимволы."
+"\t**FAIL** Стандартный перевод Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° %s выбора %s Ñодержит 8-битовые "
+"Ñимволы."
#, c-format
msgid ""
" **FAIL** Default translation string for option %s contains 8-bit "
"characters."
msgstr ""
-"\t**FAIL** Стандартный перевод Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° %s Ñодержит "
-"8-битовые Ñимволы."
+"\t**FAIL** Стандартный перевод Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° %s Ñодержит 8-битовые Ñимволы."
#, c-format
msgid " **FAIL** Group names %s and %s differ only by case."
-msgstr ""
-"\t**FAIL** Имена групп %s и %s отличаютÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ региÑтром Ñимволов."
+msgstr "\t**FAIL** Имена групп %s и %s отличаютÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ региÑтром Ñимволов."
#, c-format
msgid " **FAIL** Multiple occurrences of option %s choice name %s."
@@ -636,11 +630,14 @@ msgstr "\t**FAIL** Ð”Ð»Ñ Ð²Ñ‹Ð±Ð¾Ñ€Ð° параметра %s Ð¸Ð¼Ñ %s вÑÑ‚Ñ€
#, c-format
msgid " **FAIL** Option %s choice names %s and %s differ only by case."
-msgstr "\t**FAIL** Параметр %s Ñ Ð¸Ð¼ÐµÐ½Ð°Ð¼Ð¸ %s и %s отличаетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ региÑтром Ñимволов."
+msgstr ""
+"\t**FAIL** Параметр %s Ñ Ð¸Ð¼ÐµÐ½Ð°Ð¼Ð¸ %s и %s отличаетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ региÑтром "
+"Ñимволов."
#, c-format
msgid " **FAIL** Option names %s and %s differ only by case."
-msgstr "\t**FAIL** ÐÐ°Ð·Ð²Ð°Ð½Ð¸Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð² %s и %s отличаютÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ региÑтром Ñимволов."
+msgstr ""
+"\t**FAIL** ÐÐ°Ð·Ð²Ð°Ð½Ð¸Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð² %s и %s отличаютÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ региÑтром Ñимволов."
#, c-format
msgid ""
@@ -791,6 +788,7 @@ msgstr "\t**FAIL** Ðе удаетÑÑ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ PPD-файл – %s в Ñ
#, c-format
msgid " %d ERRORS FOUND"
msgstr " ОБÐÐРУЖЕÐО ОШИБОК: %d"
+
msgid " -h Show program usage"
msgstr " -h Показать Ñправку по иÑпользованию программы"
@@ -802,7 +800,6 @@ msgstr ""
" Ðеверный %%%%BoundingBox: в Ñтроке %d\n"
" REF: Стр. 39, %%%%BoundingBox:"
-
#, c-format
msgid ""
" Bad %%%%Page: on line %d.\n"
@@ -835,10 +832,8 @@ msgstr ""
" REF: Стр. 17, 3.1 СоответÑтвующие документы"
#, c-format
-msgid " Missing %%EndComments comment.\n"
-" REF: Page 41, %%EndComments"
-msgstr " Комментарий %%EndComments отÑутÑтвует.\n"
-" REF: Стр. 41, %%EndComments"
+msgid " Missing %%EndComments comment. REF: Page 41, %%EndComments"
+msgstr ""
#, c-format
msgid ""
@@ -906,10 +901,13 @@ msgid " --[no-]remote-any Allow/prevent access from the Internet."
msgstr " --[no-]remote-any РазрешаетÑÑ/запрещаетÑÑ Ð´Ð¾Ñтуп из Интернет."
msgid " --[no-]share-printers Turn printer sharing on/off."
-msgstr " --[no-]share-printers Вкл./откл. ÑовмеÑтное иÑпользование принтеров."
+msgstr ""
+" --[no-]share-printers Вкл./откл. ÑовмеÑтное иÑпользование принтеров."
msgid " --[no-]user-cancel-any Allow/prevent users to cancel any job."
-msgstr " --[no-]user-cancel-any ПользователÑм разрешаетÑÑ/запрещаетÑÑ Ð¾Ñ‚Ð¼ÐµÐ½ÑÑ‚ÑŒ заданиÑ."
+msgstr ""
+" --[no-]user-cancel-any ПользователÑм разрешаетÑÑ/запрещаетÑÑ Ð¾Ñ‚Ð¼ÐµÐ½ÑÑ‚ÑŒ "
+"заданиÑ."
msgid " --cr End lines with CR (Mac OS 9)."
msgstr " --cr Строки заканчиваютÑÑ Ð½Ð° CR (Mac OS 9)."
@@ -940,10 +938,12 @@ msgid " --host regex Match hostname to regular expression."
msgstr " --host regex Ðайти hostname по регулÑрному выражению."
msgid " --lf End lines with LF (UNIX/Linux/OS X)."
-msgstr " --lf Строки заканчиваютÑÑ Ð½Ð° LF (UNIX/Linux/Mac OS X)."
+msgstr ""
+" --lf Строки заканчиваютÑÑ Ð½Ð° LF (UNIX/Linux/Mac OS X)."
msgid " --list-filters List filters that will be used."
-msgstr " --list-filters СпиÑок фильтров которые должны иÑпользоватьÑÑ."
+msgstr ""
+" --list-filters СпиÑок фильтров которые должны иÑпользоватьÑÑ."
msgid " --local True if service is local."
msgstr " --local \"ИÑтина\" еÑли ÑÐµÑ€Ð²Ð¸Ñ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ð¹."
@@ -958,10 +958,12 @@ msgid " --not expression Unary NOT of expression."
msgstr " --not expression ЛогичеÑкое NOT Ð´Ð»Ñ Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ."
msgid " --path regex Match resource path to regular expression."
-msgstr " --path regex Ðайти путь к реÑурÑу по регулÑрному выражению."
+msgstr ""
+" --path regex Ðайти путь к реÑурÑу по регулÑрному выражению."
msgid " --port number[-number] Match port to number or range."
-msgstr " --port number[-number] Ðайти номер порта по номеру или диапазону портов."
+msgstr ""
+" --port number[-number] Ðайти номер порта по номеру или диапазону портов."
msgid " --print Print URI if true."
msgstr " --print Печать URI при ÑоответÑтвии."
@@ -970,7 +972,8 @@ msgid " --print-name Print service name if true."
msgstr " --print-name Печать имени ÑервиÑа еÑли ÑоответÑтвует."
msgid " --quiet Quietly report match via exit code."
-msgstr " --quiet Кратко уведомлÑÑ‚ÑŒ о Ñовпадении через код выхода."
+msgstr ""
+" --quiet Кратко уведомлÑÑ‚ÑŒ о Ñовпадении через код выхода."
msgid " --remote True if service is remote."
msgstr " --remote \"ИÑтина\" еÑли ÑÐµÑ€Ð²Ð¸Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð½Ñ‹Ð¹."
@@ -1007,7 +1010,9 @@ msgid " -6 Connect using IPv6."
msgstr " -6 Соединение иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ IPv6."
msgid " -C Send requests using chunking (default)."
-msgstr " -C Передача запроÑа Ñ Ð¸Ñпользованием chunking (по умолчанию)"
+msgstr ""
+" -C Передача запроÑа Ñ Ð¸Ñпользованием chunking (по "
+"умолчанию)"
msgid " -D Remove the input file when finished."
msgstr " -D Удалить входной файл поÑле завершениÑ."
@@ -1024,7 +1029,8 @@ msgstr " -E ПроверÑÑ‚ÑŒ что HTTP иÑпользÑ
msgid ""
" -F Run in the foreground but detach from console."
msgstr ""
-" -F ЗапуÑкать Ñ Ð²Ñ‹Ñоким приоритетом и отдельно от конÑоли."
+" -F ЗапуÑкать Ñ Ð²Ñ‹Ñоким приоритетом и отдельно от "
+"конÑоли."
msgid " -H samba-server Use the named SAMBA server."
msgstr " -H samba-server ИÑпользовать заданный Ñервер SAMBA."
@@ -1039,20 +1045,22 @@ msgid " -I {filename,filters,none,profiles}"
msgstr " -I {filename,filters,none,profiles}"
msgid " -L Send requests using content-length."
-msgstr " -L Передача запроÑа Ñ Ð¸Ñпользованием content-length."
+msgstr ""
+" -L Передача запроÑа Ñ Ð¸Ñпользованием content-length."
msgid ""
" -P filename.plist Produce XML plist to a file and test report to "
"standard output."
msgstr ""
-" -P filename.plist ВывеÑти XML plist в файл и проверить результат "
-"на Ñтандартном выводе."
+" -P filename.plist ВывеÑти XML plist в файл и проверить результат на "
+"Ñтандартном выводе."
msgid " -P filename.ppd Set PPD file."
msgstr " -P filename.ppd Задать PPD-файл."
msgid " -P number[-number] Match port to number or range."
-msgstr " -P number[-number] Ðайти номер порта по номеру или диапазону портов."
+msgstr ""
+" -P number[-number] Ðайти номер порта по номеру или диапазону портов."
msgid " -R root-directory Set alternate root."
msgstr " -R root-directory Задать корневой каталог."
@@ -1064,7 +1072,8 @@ msgid " -T seconds Set the browse timeout in seconds."
msgstr " -T seconds Задать Ð²Ñ€ÐµÐ¼Ñ Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ Ð² Ñекундах."
msgid " -T seconds Set the receive/send timeout in seconds."
-msgstr " -T seconds Задать Ð²Ñ€ÐµÐ¼Ñ Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ Ð¿Ñ€Ð¸ÐµÐ¼Ð°/передачи в Ñекундах."
+msgstr ""
+" -T seconds Задать Ð²Ñ€ÐµÐ¼Ñ Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ Ð¿Ñ€Ð¸ÐµÐ¼Ð°/передачи в Ñекундах."
msgid " -U username Specify username."
msgstr " -U username Указание имени пользователÑ."
@@ -1134,19 +1143,22 @@ msgid " -h server[:port] Specify server address."
msgstr " -h server[:port] Задать Ð°Ð´Ñ€ÐµÑ Ð¸ порт Ñервера."
msgid " -i mime/type Set input MIME type (otherwise auto-typed)."
-msgstr " -i mime/type Указать MIME-тип данных на входе (иначе автоопред.)."
+msgstr ""
+" -i mime/type Указать MIME-тип данных на входе (иначе "
+"автоопред.)."
msgid ""
" -i seconds Repeat the last file with the given time interval."
msgstr ""
-" -i seconds Повтор поÑледнего файла через заданный интервал в Ñек."
+" -i seconds Повтор поÑледнего файла через заданный интервал в "
+"Ñек."
msgid ""
" -j job-id[,N] Filter file N from the specified job (default is "
"file 1)."
msgstr ""
-" -j job-id[,N] Из указанного Ð·Ð°Ð´Ð°Ð½Ð¸Ñ Ð²Ñ‹Ð±Ð¸Ñ€Ð°ÐµÑ‚ÑÑ Ñ„Ð°Ð¹Ð» N (по умолчанию "
-"файл 1)."
+" -j job-id[,N] Из указанного Ð·Ð°Ð´Ð°Ð½Ð¸Ñ Ð²Ñ‹Ð±Ð¸Ñ€Ð°ÐµÑ‚ÑÑ Ñ„Ð°Ð¹Ð» N (по "
+"умолчанию файл 1)."
msgid " -l List attributes."
msgstr " -l СпиÑок атрибутов."
@@ -1161,20 +1173,21 @@ msgid " -l lang[,lang,...] Specify the output language(s) (locale)."
msgstr " -l lang[,lang,...] Задать выходной Ñзык(и) (locale)."
msgid " -m Use the ModelName value as the filename."
-msgstr " -m Ð’ качеÑтве имени файла иÑпользуетÑÑ ModelName."
+msgstr ""
+" -m Ð’ качеÑтве имени файла иÑпользуетÑÑ ModelName."
msgid ""
" -m mime/type Set output MIME type (otherwise application/pdf)."
msgstr ""
-" -m mime/type Указать MIME-тип данных на выходе (иначе application/pdf)."
+" -m mime/type Указать MIME-тип данных на выходе (иначе "
+"application/pdf)."
msgid " -n copies Set number of copies."
msgstr " -n copies Указать количеÑтво копий."
msgid ""
" -n count Repeat the last file the given number of times."
-msgstr ""
-" -n count Повтор поÑледнего файла заданное чиÑло раз."
+msgstr " -n count Повтор поÑледнего файла заданное чиÑло раз."
msgid " -n regex Match service name to regular expression."
msgstr " -n regex Ðайти Ð¸Ð¼Ñ Ð¿Ð¾ регулÑрному выражению."
@@ -1182,7 +1195,8 @@ msgstr " -n regex Ðайти Ð¸Ð¼Ñ Ð¿Ð¾ регулÑрному
msgid ""
" -o filename.drv Set driver information file (otherwise ppdi.drv)."
msgstr ""
-" -o filename.drv Указать файл Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸ÐµÐ¹ о драйвере (иначе ppdi.drv)."
+" -o filename.drv Указать файл Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸ÐµÐ¹ о драйвере (иначе ppdi."
+"drv)."
msgid " -o filename.ppd[.gz] Set output file (otherwise stdout)."
msgstr " -o filename.ppd[.gz] Задать выходной файл (иначе stdout)."
@@ -1200,7 +1214,8 @@ msgid " -p program Run specified program for each service."
msgstr " -p program ЗапуÑтить указанную программу."
msgid " -q Quietly report match via exit code."
-msgstr " -q Кратко уведомлÑÑ‚ÑŒ о Ñовпадении через код выхода."
+msgstr ""
+" -q Кратко уведомлÑÑ‚ÑŒ о Ñовпадении через код выхода."
msgid " -q Run silently."
msgstr " -q Команда выполнÑетÑÑ Ð² «тихом» режиме."
@@ -1338,17 +1353,21 @@ msgstr "\"%s\": Ðеправильное значение URI \"%s\" - %s (RFC 2
#, c-format
msgid "\"%s\": Bad URI value \"%s\" - bad length %d (RFC 2911 section 4.1.5)."
-msgstr "\"%s\": Ðеправильное значение URI \"%s\" - ошибка длины %d (RFC 2911 раздел 4.1.5)."
+msgstr ""
+"\"%s\": Ðеправильное значение URI \"%s\" - ошибка длины %d (RFC 2911 раздел "
+"4.1.5)."
#, c-format
msgid "\"%s\": Bad attribute name - bad length %d (RFC 2911 section 4.1.3)."
-msgstr "\"%s\": Ðеправильный атрибут имени - ошибка длины %d (RFC 2911 раздел 4.1.3)."
+msgstr ""
+"\"%s\": Ðеправильный атрибут имени - ошибка длины %d (RFC 2911 раздел 4.1.3)."
#, c-format
msgid ""
"\"%s\": Bad attribute name - invalid character (RFC 2911 section 4.1.3)."
msgstr ""
-"\"%s\": Ðеправильный атрибут имени - недопуÑтимый Ñимвол (RFC 2911 раздел 4.1.3)."
+"\"%s\": Ðеправильный атрибут имени - недопуÑтимый Ñимвол (RFC 2911 раздел "
+"4.1.3)."
#, c-format
msgid "\"%s\": Bad boolen value %d (RFC 2911 section 4.1.11)."
@@ -1358,13 +1377,15 @@ msgstr "\"%s\": Ðеправильное двоичное значение %d (R
msgid ""
"\"%s\": Bad charset value \"%s\" - bad characters (RFC 2911 section 4.1.7)."
msgstr ""
-"\"%s\": Ðеправильное Ñимвольное значение \"%s\" - недопуÑтимые Ñимволы (RFC 2911 раздел 4.1.7)."
+"\"%s\": Ðеправильное Ñимвольное значение \"%s\" - недопуÑтимые Ñимволы (RFC "
+"2911 раздел 4.1.7)."
#, c-format
msgid ""
"\"%s\": Bad charset value \"%s\" - bad length %d (RFC 2911 section 4.1.7)."
msgstr ""
-"\"%s\": Ðеправильное Ñимвольное значение \"%s\" - ошибка длины %d (RFC 2911 раздел 4.1.7)."
+"\"%s\": Ðеправильное Ñимвольное значение \"%s\" - ошибка длины %d (RFC 2911 "
+"раздел 4.1.7)."
#, c-format
msgid "\"%s\": Bad dateTime UTC hours %u (RFC 2911 section 4.1.14)."
@@ -1404,38 +1425,40 @@ msgstr "\"%s\": Ошибка в dateTime Ñекунды %u (RFC 2911 раздеÐ
#, c-format
msgid "\"%s\": Bad enum value %d - out of range (RFC 2911 section 4.1.4)."
-msgstr "\"%s\": Ошибка в значении %d - за пределами диапазона (RFC 2911 раздел 4.1.4)."
+msgstr ""
+"\"%s\": Ошибка в значении %d - за пределами диапазона (RFC 2911 раздел "
+"4.1.4)."
#, c-format
msgid ""
"\"%s\": Bad keyword value \"%s\" - bad length %d (RFC 2911 section 4.1.3)."
msgstr ""
-"\"%s\": Ошибка в значении \"%s\" - Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° %d (RFC 2911 раздел 4.1.3)."
+"\"%s\": Ошибка в значении \"%s\" - Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° %d (RFC 2911 раздел "
+"4.1.3)."
#, c-format
msgid ""
"\"%s\": Bad keyword value \"%s\" - invalid character (RFC 2911 section "
"4.1.3)."
msgstr ""
-"\"%s\": Ошибка в значении \"%s\" - недопуÑтимый Ñимвол (RFC 2911 "
-"раздел 4.1.3)."
+"\"%s\": Ошибка в значении \"%s\" - недопуÑтимый Ñимвол (RFC 2911 раздел "
+"4.1.3)."
#, c-format
msgid ""
"\"%s\": Bad mimeMediaType value \"%s\" - bad characters (RFC 2911 section "
"4.1.9)."
msgstr ""
-"\"%s\": Ошибка mimeMediaType значение \"%s\" - недопуÑтимые Ñимволы (RFC 2911 "
-"раздел 4.1.9)."
+"\"%s\": Ошибка mimeMediaType значение \"%s\" - недопуÑтимые Ñимволы (RFC "
+"2911 раздел 4.1.9)."
#, c-format
msgid ""
"\"%s\": Bad mimeMediaType value \"%s\" - bad length %d (RFC 2911 section "
"4.1.9)."
msgstr ""
-msgid ""
-"\"%s\": Ошибка mimeMediaType значение \"%s\" - Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° %d "
-"(RFC 2911 раздел 4.1.9)."
+"\"%s\": Ошибка mimeMediaType значение \"%s\" - Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° %d (RFC "
+"2911 раздел 4.1.9)."
#, c-format
msgid ""
@@ -1445,37 +1468,40 @@ msgstr ""
#, c-format
msgid "\"%s\": Bad name value \"%s\" - bad length %d (RFC 2911 section 4.1.2)."
-msgstr "\"%s\": Ðеправильное Ð¸Ð¼Ñ \"%s\" - Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° %d (RFC 2911 раздел 4.1.2)."
+msgstr ""
+"\"%s\": Ðеправильное Ð¸Ð¼Ñ \"%s\" - Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° %d (RFC 2911 раздел "
+"4.1.2)."
#, c-format
msgid ""
"\"%s\": Bad naturalLanguage value \"%s\" - bad characters (RFC 2911 section "
"4.1.8)."
msgstr ""
-"\"%s\": Ошибка naturalLanguage значение \"%s\" - недопуÑтимые Ñимволы "
-"(RFC 2911 раздел 4.1.8)."
+"\"%s\": Ошибка naturalLanguage значение \"%s\" - недопуÑтимые Ñимволы (RFC "
+"2911 раздел 4.1.8)."
#, c-format
msgid ""
"\"%s\": Bad naturalLanguage value \"%s\" - bad length %d (RFC 2911 section "
"4.1.8)."
msgstr ""
-"\"%s\": Ошибка naturalLanguage значение \"%s\" - Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° %d "
-"(RFC 2911 раздел 4.1.8)."
+"\"%s\": Ошибка naturalLanguage значение \"%s\" - Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° %d (RFC "
+"2911 раздел 4.1.8)."
#, c-format
msgid ""
"\"%s\": Bad octetString value - bad length %d (RFC 2911 section 4.1.10)."
msgstr ""
-"\"%s\": Ошибка Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ octetString - Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° %d (RFC 2911 раздел 4.1.10)."
+"\"%s\": Ошибка Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ octetString - Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° %d (RFC 2911 раздел "
+"4.1.10)."
#, c-format
msgid ""
"\"%s\": Bad rangeOfInteger value %d-%d - lower greater than upper (RFC 2911 "
"section 4.1.13)."
msgstr ""
-"\"%s\": Ошибка rangeOfInteger значение %d-%d - первое больше чем второе "
-"(RFC 2911 раздел 4.1.13)."
+"\"%s\": Ошибка rangeOfInteger значение %d-%d - первое больше чем второе (RFC "
+"2911 раздел 4.1.13)."
#, c-format
msgid ""
@@ -1490,38 +1516,43 @@ msgid ""
"\"%s\": Bad resolution value %dx%d%s - cross feed resolution must be "
"positive (RFC 2911 section 4.1.15)."
msgstr ""
-"\"%s\": Ðеправильное значение Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ %dx%d%s - значение cross feed должно быть положительным "
-"(RFC 2911 раздел 4.1.15)."
+"\"%s\": Ðеправильное значение Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ %dx%d%s - значение cross feed "
+"должно быть положительным (RFC 2911 раздел 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\": Ðеправильное значение Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ %dx%d%s - значение feed должно быть положительным "
-"(RFC 2911 раздел 4.1.15)."
+"\"%s\": Ðеправильное значение Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ %dx%d%s - значение feed должно быть "
+"положительным (RFC 2911 раздел 4.1.15)."
#, c-format
msgid ""
"\"%s\": Bad text value \"%s\" - bad UTF-8 sequence (RFC 2911 section 4.1.1)."
msgstr ""
-"\"%s\": Ðеправильное текÑтовое значение \"%s\" - ошибка в UTF-8 (RFC 2911 раздел 4.1.1)."
+"\"%s\": Ðеправильное текÑтовое значение \"%s\" - ошибка в UTF-8 (RFC 2911 "
+"раздел 4.1.1)."
#, c-format
msgid "\"%s\": Bad text value \"%s\" - bad length %d (RFC 2911 section 4.1.1)."
-msgstr "\"%s\": Ðеправильное текÑтовое значение \"%s\" - ошибка длины %d (RFC 2911 раздел 4.1.1)."
+msgstr ""
+"\"%s\": Ðеправильное текÑтовое значение \"%s\" - ошибка длины %d (RFC 2911 "
+"раздел 4.1.1)."
#, c-format
msgid ""
"\"%s\": Bad uriScheme value \"%s\" - bad characters (RFC 2911 section 4.1.6)."
msgstr ""
-"\"%s\": Ошибка uriScheme значение \"%s\" - недопуÑтимые Ñимволы (RFC 2911 раздел 4.1.6)."
+"\"%s\": Ошибка uriScheme значение \"%s\" - недопуÑтимые Ñимволы (RFC 2911 "
+"раздел 4.1.6)."
#, c-format
msgid ""
"\"%s\": Bad uriScheme value \"%s\" - bad length %d (RFC 2911 section 4.1.6)."
msgstr ""
-"\"%s\": Ошибка uriScheme значение \"%s\" - ошибка длины %d (RFC 2911 раздел 4.1.6)."
+"\"%s\": Ошибка uriScheme значение \"%s\" - ошибка длины %d (RFC 2911 раздел "
+"4.1.6)."
#, c-format
msgid "%-7s %-7.7s %-7d %-31.31s %.0f bytes"
@@ -1555,6 +1586,7 @@ msgstr "%s (без полей, %s)"
msgid "%s (Borderless, %s, %s)"
msgstr "%s (без полей, %s, %s)"
+#, c-format
msgid "%s accepting requests since %s"
msgstr "%s принимает запроÑÑ‹ Ñ Ð¼Ð¾Ð¼ÐµÐ½Ñ‚Ð° %s"
@@ -1590,7 +1622,6 @@ msgstr "%s не принимает запроÑÑ‹ Ñ Ð¼Ð¾Ð¼ÐµÐ½Ñ‚Ð° %s -"
msgid "%s not supported."
msgstr "%s не поддерживаетÑÑ."
-
#, c-format
msgid "%s/%s accepting requests since %s"
msgstr "%s/%s принимает запроÑÑ‹ Ñ Ð¼Ð¾Ð¼ÐµÐ½Ñ‚Ð° %s"
@@ -1613,6 +1644,10 @@ msgid "%s: %s failed: %s"
msgstr "%s: ошибка %s: %s"
#, c-format
+msgid "%s: Bad printer URI \"%s\"."
+msgstr ""
+
+#, c-format
msgid "%s: Bad version %s for \"-V\"."
msgstr "%s: ÐÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ %s Ð´Ð»Ñ \"-V\"."
@@ -1624,7 +1659,8 @@ msgstr "%s: Дальнейшие дейÑÑ‚Ð²Ð¸Ñ Ð½ÐµÐ¸Ð·Ð²ÐµÑтны."
msgid ""
"%s: Error - %s environment variable names non-existent destination \"%s\"."
msgstr ""
-"%s: Ошибка - %s Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð¾ÐºÑ€ÑƒÐ¶ÐµÐ½Ð¸Ñ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ на неÑущеÑтвующее назначение \"%s\"."
+"%s: Ошибка - %s Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð¾ÐºÑ€ÑƒÐ¶ÐµÐ½Ð¸Ñ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ на неÑущеÑтвующее назначение "
+"\"%s\"."
#, c-format
msgid "%s: Error - add '/version=1.1' to server name."
@@ -1641,17 +1677,18 @@ msgstr ""
#, c-format
msgid "%s: Error - cannot print from stdin if files or a job ID are provided."
-msgstr "%s: Ошибка - не удаетÑÑ Ð¿ÐµÑ‡Ð°Ñ‚ÑŒ из stdin, еÑли предоÑтавлены файлы "
-"или ID заданиÑ."
+msgstr ""
+"%s: Ошибка - не удаетÑÑ Ð¿ÐµÑ‡Ð°Ñ‚ÑŒ из stdin, еÑли предоÑтавлены файлы или ID "
+"заданиÑ."
#, c-format
msgid "%s: Error - expected character set after \"-S\" option."
msgstr "%s: Ошибка - поÑле параметра \"-S\" должен идти набор Ñимволов."
-
#, c-format
msgid "%s: Error - expected content type after \"-T\" option."
-msgstr "%s: Ошибка - поÑле параметра \"-T\" должен быть указан тип Ñодержимого."
+msgstr ""
+"%s: Ошибка - поÑле параметра \"-T\" должен быть указан тип Ñодержимого."
#, c-format
msgid "%s: Error - expected copies after \"-#\" option."
@@ -1671,17 +1708,14 @@ msgstr "%s: Ошибка - поÑле параметра \"-P\" должно бÑ
msgid "%s: Error - expected destination after \"-d\" option."
msgstr "%s: Ошибка - поÑле параметра \"-d\" должно быть указано назначение."
-
#, c-format
msgid "%s: Error - expected form after \"-f\" option."
msgstr "%s: Ошибка - поÑле параметра \"-f\" должна быть указана форма."
-
#, c-format
msgid "%s: Error - expected hold name after \"-H\" option."
msgstr "%s: Ошибка - поÑле параметра \"-H\" должно быть указано Ð¸Ð¼Ñ Ñ…Ð¾Ñта."
-
#, c-format
msgid "%s: Error - expected hostname after \"-H\" option."
msgstr "%s: Ошибка - поÑле параметра \"-H\" должно быть указано Ð¸Ð¼Ñ Ñ…Ð¾Ñта."
@@ -1690,22 +1724,19 @@ msgstr "%s: Ошибка - поÑле параметра \"-H\" должно бÑ
msgid "%s: Error - expected hostname after \"-h\" option."
msgstr "%s: Ошибка - поÑле параметра \"-h\" должно быть указано Ð¸Ð¼Ñ Ñ…Ð¾Ñта."
-
#, c-format
msgid "%s: Error - expected mode list after \"-y\" option."
-msgstr ""
-"%s: Ошибка - поÑле параметра \"-y\" должен быть указан ÑпиÑок режимов."
+msgstr "%s: Ошибка - поÑле параметра \"-y\" должен быть указан ÑпиÑок режимов."
#, c-format
msgid "%s: Error - expected name after \"-%c\" option."
msgstr "%s: Ошибка - поÑле параметра \"-%c\" должно быть указано имÑ."
-
#, c-format
msgid "%s: Error - expected option=value after \"-o\" option."
msgstr ""
-"%s: Ошибка - поÑле параметра '-o' должна быть указана Ñтрока вида option=value"
-
+"%s: Ошибка - поÑле параметра '-o' должна быть указана Ñтрока вида "
+"option=value"
#, c-format
msgid "%s: Error - expected page list after \"-P\" option."
@@ -1715,12 +1746,10 @@ msgstr "%s: Ошибка – поÑле параметра \"-P\" должен Ð
msgid "%s: Error - expected priority after \"-%c\" option."
msgstr "%s: Ошибка - поÑле параметра \"-%c\" должен быть указан приоритет."
-
#, c-format
msgid "%s: Error - expected reason text after \"-r\" option."
msgstr "%s: Ошибка - поÑле параметра \"-r\" должен идти текÑÑ‚ причины."
-
#, c-format
msgid "%s: Error - expected title after \"-t\" option."
msgstr "%s: Ошибка - поÑле параметра \"-t\" должен быть указан заголовок."
@@ -1735,7 +1764,6 @@ msgid "%s: Error - expected username after \"-u\" option."
msgstr ""
"%s: Ошибка - поÑле параметра \"-u\" должно быть указано Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ."
-
#, c-format
msgid "%s: Error - expected value after \"-%c\" option."
msgstr "%s: Ошибка - поÑле параметра \"-%c\" должно быть указано значение."
@@ -1748,7 +1776,6 @@ msgstr ""
"%s: Ошибка - требуетÑÑ \"завершено\",\"не завершено\" или \"вÑе\" поÑле "
"параметра \"-W\" "
-
#, c-format
msgid "%s: Error - no default destination available."
msgstr "%s: Ошибка – нет доÑтупного Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¿Ð¾ умолчанию."
@@ -1761,9 +1788,6 @@ msgstr "%s: Ошибка – приоритет должен быть от 1 дÐ
msgid "%s: Error - scheduler not responding."
msgstr "%s: Ошибка - планировщик не отвечает."
-msgid "%s: Error - scheduler not responding."
-msgstr "%s: Ошибка – планировщик не отвечает."
-
#, c-format
msgid "%s: Error - too many files - \"%s\"."
msgstr "%s: Ошибка – Ñлишком много файлов – \"%s\"."
@@ -1780,17 +1804,14 @@ msgstr "%s: Ошибка – не удаетÑÑ Ð¿Ð¾Ñтавить в очерÐ
msgid "%s: Error - unknown destination \"%s\"."
msgstr "%s: Ошибка - неизвеÑтное назначение \"%s\"."
-
#, c-format
msgid "%s: Error - unknown destination \"%s/%s\"."
msgstr "%s: ошибка - неизвеÑтное назначение \"%s/%s\"."
-
#, c-format
msgid "%s: Error - unknown option \"%c\"."
msgstr "%s: Ошибка - неизвеÑтный параметр \"%c\"."
-
#, c-format
msgid "%s: Error - unknown option \"%s\"."
msgstr "%s: Ошибка - неизвеÑтный параметр \"%s\"."
@@ -1803,7 +1824,6 @@ msgstr "%s: ПоÑле параметра \"-i\" должен быть указÐ
msgid "%s: Invalid destination name in list \"%s\"."
msgstr "%s: ÐедопуÑтимое Ð¸Ð¼Ñ Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð² ÑпиÑке \"%s\"."
-
#, c-format
msgid "%s: Invalid filter string \"%s\"."
msgstr "%s: ÐÐµÐ²ÐµÑ€Ð½Ð°Ñ Ñтрока фильтра \"%s\"."
@@ -1820,13 +1840,10 @@ msgstr "%s: Пропущен таймаут Ð´Ð»Ñ \"-T\"."
msgid "%s: Missing version for \"-V\"."
msgstr "%s: Пропущена верÑÐ¸Ñ Ð´Ð»Ñ \"-V\"."
-
#, c-format
msgid "%s: Need job ID (\"-i jobid\") before \"-H restart\"."
msgstr "%s: Ðеобходимо указать ID Ð·Ð°Ð´Ð°Ð½Ð¸Ñ (\"-i jobid\") перед \"-H restart\"."
-
-
#, c-format
msgid "%s: No filter to convert from %s/%s to %s/%s."
msgstr ""
@@ -1840,6 +1857,9 @@ msgstr "%s: ÐžÐ¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð½Ðµ удалаÑÑŒ: %s"
msgid "%s: Sorry, no encryption support."
msgstr "%s: Ðет поддержки шифрованиÑ."
+#, c-format
+msgid "%s: Unable to connect to \"%s:%d\": %s"
+msgstr ""
#, c-format
msgid "%s: Unable to connect to server."
@@ -1850,6 +1870,10 @@ msgid "%s: Unable to contact server."
msgstr "%s: Ðе удаетÑÑ ÑƒÑтановить ÑвÑзь Ñ Ñервером."
#, c-format
+msgid "%s: Unable to create PPD file: %s"
+msgstr ""
+
+#, c-format
msgid "%s: Unable to determine MIME type of \"%s\"."
msgstr "%s: Ðе удаетÑÑ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ð¸Ñ‚ÑŒ тип MIME \"%s\"."
@@ -1869,17 +1893,18 @@ msgstr "%s: Ðе удаетÑÑ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ PPD-файл: %s в Ñтроке
msgid "%s: Unable to read MIME database from \"%s\" or \"%s\"."
msgstr "%s: Ðе удаетÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ базу данных MIME из \"%s\" или \"%s\"."
+#, c-format
+msgid "%s: Unable to resolve \"%s\"."
+msgstr ""
#, c-format
msgid "%s: Unknown destination \"%s\"."
msgstr "%s: ÐеизвеÑтное назначение \"%s\"."
-
#, c-format
msgid "%s: Unknown destination MIME type %s/%s."
msgstr "%s: ÐеизвеÑтный MIME-тип Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ %s/%s."
-
#, c-format
msgid "%s: Unknown option \"%c\"."
msgstr "%s: ÐеизвеÑтный параметр \"%c\"."
@@ -1904,7 +1929,6 @@ msgstr ""
"%s: Внимание - модификатор формата \"%c\" не поддерживаетÑÑ - вывод может "
"быть неправильным."
-
#, c-format
msgid "%s: Warning - character set option ignored."
msgstr "%s: Внимание - параметр набора Ñимволов пропущен."
@@ -3220,6 +3244,9 @@ msgstr "Epson"
msgid "Error Policy"
msgstr "Политика ошибок"
+msgid "Error reading raster data."
+msgstr ""
+
msgid "Error sending raster data."
msgstr "Ошибка отправки данных раÑтра."
@@ -3786,7 +3813,8 @@ msgid "No destinations added."
msgstr "Ðет добавленных назначений."
msgid "No device URI found in argv[0] or in DEVICE_URI environment variable."
-msgstr "Ðе обнаружено URI уÑтройÑтва в argv[0] или в переменной Ð¾ÐºÑ€ÑƒÐ¶ÐµÐ½Ð¸Ñ DEVICE_URI"
+msgstr ""
+"Ðе обнаружено URI уÑтройÑтва в argv[0] или в переменной Ð¾ÐºÑ€ÑƒÐ¶ÐµÐ½Ð¸Ñ DEVICE_URI"
msgid "No error-index"
msgstr "Ðет Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ error-index"
@@ -3876,8 +3904,8 @@ msgid ""
"Note: this program only validates the DSC comments, not the PostScript "
"itself."
msgstr ""
-"Примечание: Ð´Ð°Ð½Ð½Ð°Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð° проверÑет только комментарии DSC, а не "
-"Ñам PostScript."
+"Примечание: Ð´Ð°Ð½Ð½Ð°Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð° проверÑет только комментарии DSC, а не Ñам "
+"PostScript."
msgid "OK"
msgstr "ОК"
@@ -4110,7 +4138,8 @@ msgid "Quota limit reached."
msgstr "Предел квоты доÑтигнут."
msgid "Rank Owner Job File(s) Total Size"
-msgstr "Ранг Владелец Задание Файл(ы) Общий размер"
+msgstr ""
+"Ранг Владелец Задание Файл(ы) Общий размер"
msgid "Reject Jobs"
msgstr "Отклонить заданиÑ"
@@ -4267,10 +4296,8 @@ msgstr "Ðтрибут %s не может быть иÑпользован Ñ job
#, c-format
msgid ""
-"The '%s' Job Description attribute cannot be supplied in a job creation "
-"request."
-msgstr "Ðтрибут '%s' Job Description не может быть подÑтавлен при Ñоздании"
-"заданиÑ"
+"The '%s' Job Status attribute cannot be supplied in a job creation request."
+msgstr ""
#, c-format
msgid ""
@@ -4555,8 +4582,9 @@ msgid "Unable to connect to host."
msgstr "Ðе удаетÑÑ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡Ð¸Ñ‚ÑŒÑÑ Ðº хоÑту."
msgid "Unable to contact printer, queuing on next printer in class."
-msgstr "Ðе удаетÑÑ ÑƒÑтановить ÑвÑзь Ñ Ð¿Ñ€Ð¸Ð½Ñ‚ÐµÑ€Ð¾Ð¼, поÑтановка в очередь на "
-"Ñледующем принтере в группе."
+msgstr ""
+"Ðе удаетÑÑ ÑƒÑтановить ÑвÑзь Ñ Ð¿Ñ€Ð¸Ð½Ñ‚ÐµÑ€Ð¾Ð¼, поÑтановка в очередь на Ñледующем "
+"принтере в группе."
#, c-format
msgid "Unable to copy 64-bit CUPS printer driver files (%d)."
@@ -4564,7 +4592,8 @@ msgstr "Ðе удаетÑÑ ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ 64-битовые файлы д
#, c-format
msgid "Unable to copy 64-bit Windows printer driver files (%d)."
-msgstr "Ðе удаетÑÑ ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ 64-битовые файлы драйвера принтера Ð´Ð»Ñ Windows (%d)."
+msgstr ""
+"Ðе удаетÑÑ ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ 64-битовые файлы драйвера принтера Ð´Ð»Ñ Windows (%d)."
#, c-format
msgid "Unable to copy CUPS printer driver files (%d)."
@@ -4625,14 +4654,15 @@ 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 "Ðе удаетÑÑ ÑƒÑтановить защищенное Ñоединение (неÑовпадение имени хоÑта)."
+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)."
@@ -4641,8 +4671,7 @@ msgstr ""
msgid ""
"Unable to establish a secure connection to host (untrusted certificate)."
-msgstr ""
-"Ðе удаетÑÑ ÑƒÑтановить защищенное Ñоединение (ненадежный Ñертификат)."
+msgstr "Ðе удаетÑÑ ÑƒÑтановить защищенное Ñоединение (ненадежный Ñертификат)."
msgid "Unable to establish a secure connection to host."
msgstr "Ðе удаетÑÑ ÑƒÑтановить защищенное Ñоединение."
@@ -4738,6 +4767,9 @@ msgstr "Ðе удаетÑÑ Ð½Ð°Ð¿ÐµÑ‡Ð°Ñ‚Ð°Ñ‚ÑŒ пробную Ñтраницу
msgid "Unable to read print data."
msgstr "Ðе удаетÑÑ Ñчитать данные печати."
+msgid "Unable to rename job document file."
+msgstr ""
+
msgid "Unable to resolve printer-uri."
msgstr "Ðе удаетÑÑ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ð¸Ñ‚ÑŒ printer-uri"
@@ -4883,18 +4915,20 @@ msgstr "Ðеподдерживаемое значение бумаги."
#, c-format
msgid "Unsupported number-up value %d, using number-up=1."
-msgstr "Ðеподдерживаемое значение number-up %d, иÑпользуетÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ "
-"number-up=1."
+msgstr ""
+"Ðеподдерживаемое значение number-up %d, иÑпользуетÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ number-up=1."
#, c-format
msgid "Unsupported number-up-layout value %s, using number-up-layout=lrtb."
-msgstr "Ðеподдерживаемое значение number-up-layout %s, иÑпользуетÑÑ "
-"значение number-up-layout=lrtb."
+msgstr ""
+"Ðеподдерживаемое значение number-up-layout %s, иÑпользуетÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ number-"
+"up-layout=lrtb."
#, c-format
msgid "Unsupported page-border value %s, using page-border=none."
-msgstr "Ðеподдерживаемое значение page-border %s, иÑпользуетÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ "
-"page-border=none."
+msgstr ""
+"Ðеподдерживаемое значение page-border %s, иÑпользуетÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ page-"
+"border=none."
msgid "Unsupported raster data."
msgstr "Ðеподдерживаемые данные раÑтра."
@@ -5095,7 +5129,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 "cupsd: Поддержка запуÑка \"по запроÑу\" не включена, запуÑк в нормальном режиме."
+msgstr ""
+"cupsd: Поддержка запуÑка \"по запроÑу\" не включена, запуÑк в нормальном "
+"режиме."
msgid "cupsd: Relative cups-files.conf filename not allowed."
msgstr ""
@@ -5356,6 +5392,10 @@ msgstr ""
"\t Ðеобходимо Ñначала указать Ð¸Ð¼Ñ Ð¿Ñ€Ð¸Ð½Ñ‚ÐµÑ€Ð°."
#, c-format
+msgid "lpadmin: Unable to open PPD \"%s\": %s on line %d."
+msgstr ""
+
+#, c-format
msgid "lpadmin: Unable to open PPD file \"%s\" - %s"
msgstr "lpadmin: Ðе удаетÑÑ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ PPD-файл \"%s\" - %s"
@@ -5516,7 +5556,8 @@ msgstr "ppdc: ÐедопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð·Ð°Ð¼ÐµÐ½Ð° переменной ($%c) Ð
#, c-format
msgid "ppdc: Choice found on line %d of %s with no Option."
-msgstr "ppdc: Ð’ Ñтроке %d из %s обнаружено значение, не привÑзанное к параметру"
+msgstr ""
+"ppdc: Ð’ Ñтроке %d из %s обнаружено значение, не привÑзанное к параметру"
#, c-format
msgid "ppdc: Duplicate #po for locale %s on line %d of %s."
@@ -5548,8 +5589,8 @@ msgstr "ppdc: Ð’ Ñтроке %d из %s должно быть имÑ/текÑÑ‚
#, c-format
msgid "ppdc: Expected color order for ColorModel on line %d of %s."
-msgstr "ppdc: ПоÑле ColorModel в Ñтроке %d из %s должна быть указана Ñ†Ð²ÐµÑ‚Ð¾Ð²Ð°Ñ "
-"Ñхема."
+msgstr ""
+"ppdc: ПоÑле ColorModel в Ñтроке %d из %s должна быть указана Ñ†Ð²ÐµÑ‚Ð¾Ð²Ð°Ñ Ñхема."
#, c-format
msgid "ppdc: Expected colorspace for ColorModel on line %d of %s."
@@ -5561,15 +5602,16 @@ msgstr "ppdc: Ð”Ð»Ñ ColorModel в Ñтроке %d из %s должно быть
#, c-format
msgid "ppdc: Expected constraints string for UIConstraints on line %d of %s."
-msgstr "ppdc: Ð”Ð»Ñ UIConstraints в Ñтроке %d из %s должна быть указана Ñтрока "
+msgstr ""
+"ppdc: Ð”Ð»Ñ UIConstraints в Ñтроке %d из %s должна быть указана Ñтрока "
"ограничений."
#, c-format
msgid ""
"ppdc: Expected driver type keyword following DriverType on line %d of %s."
msgstr ""
-"ppdc: ПоÑле DriverType в Ñтроке %d из %s должно быть указано ключевое "
-"Ñлово типа драйвера."
+"ppdc: ПоÑле DriverType в Ñтроке %d из %s должно быть указано ключевое Ñлово "
+"типа драйвера."
#, c-format
msgid "ppdc: Expected duplex type after Duplex on line %d of %s."
@@ -5633,13 +5675,13 @@ msgstr "ppdc: ПоÑле %s в Ñтроке %d из %s должно быть уÐ
#, c-format
msgid "ppdc: Expected name/text after Installable on line %d of %s."
-msgstr "
+msgstr ""
"ppdc: ПоÑле Installable в Ñтроке %d из %s должно быть указано имÑ/текÑÑ‚."
#, c-format
msgid "ppdc: Expected name/text after Resolution on line %d of %s."
msgstr ""
-"ppdc: ПоÑле Resolution в Ñтроке %d из %s должно быть указано имÑ/текÑÑ‚.
+"ppdc: ПоÑле Resolution в Ñтроке %d из %s должно быть указано имÑ/текÑÑ‚."
#, c-format
msgid "ppdc: Expected name/text combination for ColorModel on line %d of %s."
@@ -5661,8 +5703,7 @@ msgstr "ppdc: Ð’ Ñтроке %d из %s должен быть указан ти
#, c-format
msgid "ppdc: Expected override field after Resolution on line %d of %s."
msgstr ""
-"ppdc: ПоÑле Resolution в Ñтроке %d из %s должно быть поле "
-"переопределениÑ.
+"ppdc: ПоÑле Resolution в Ñтроке %d из %s должно быть поле переопределениÑ."
#, c-format
msgid "ppdc: Expected quoted string on line %d of %s."
@@ -5676,8 +5717,8 @@ msgstr "ppdc: Ð’ Ñтроке %d из %s должно быть дейÑтвитÐ
msgid ""
"ppdc: Expected resolution/mediatype following ColorProfile on line %d of %s."
msgstr ""
-"ppdc: ПоÑле ColorProfile в Ñтроке %d из %s должно быть указано "
-"разрешение/тип ноÑителÑ."
+"ppdc: ПоÑле ColorProfile в Ñтроке %d из %s должно быть указано разрешение/"
+"тип ноÑителÑ."
#, c-format
msgid ""
@@ -5729,8 +5770,7 @@ msgstr "ppdc: ÐедопуÑтимый пуÑтой MIME-тип Ð´Ð»Ñ Ñ„Ð¸Ð»ÑŒÑ
#, c-format
msgid "ppdc: Invalid empty program name for filter on line %d of %s."
-msgstr ""
-"ppdc: ÐедопуÑтимое пуÑтое Ð¸Ð¼Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ñ‹ Ð´Ð»Ñ Ñ„Ð¸Ð»ÑŒÑ‚Ñ€Ð° в Ñтроке %d из %s."
+msgstr "ppdc: ÐедопуÑтимое пуÑтое Ð¸Ð¼Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ñ‹ Ð´Ð»Ñ Ñ„Ð¸Ð»ÑŒÑ‚Ñ€Ð° в Ñтроке %d из %s."
#, c-format
msgid "ppdc: Invalid option section \"%s\" on line %d of %s."
@@ -5763,8 +5803,7 @@ msgstr "ppdc: ОтÑутÑтвует #if в Ñтроке %d из %s."
#, c-format
msgid ""
"ppdc: Need a msgid line before any translation strings on line %d of %s."
-msgstr ""
-"ppdc: ТребуетÑÑ Ñтрока msgid перед Ñтрокой перевода в Ñтроке %d из %s"
+msgstr "ppdc: ТребуетÑÑ Ñтрока msgid перед Ñтрокой перевода в Ñтроке %d из %s"
#, c-format
msgid "ppdc: No message catalog provided for locale %s."
@@ -5772,8 +5811,7 @@ msgstr "ppdc: Ðе указан каталог Ñообщений Ð´Ð»Ñ Ñ€ÐµÐ³Ð
#, c-format
msgid "ppdc: Option %s defined in two different groups on line %d of %s."
-msgstr ""
-"ppdc: Параметр %s определен в двух разных группах в Ñтроке %d из %s."
+msgstr "ppdc: Параметр %s определен в двух разных группах в Ñтроке %d из %s."
#, c-format
msgid "ppdc: Option %s redefined with a different type on line %d of %s."
@@ -5782,8 +5820,7 @@ msgstr "ppdc: Ð”Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° %s определен другой тиÐ
#, c-format
msgid "ppdc: Option constraint must *name on line %d of %s."
msgstr ""
-"ppdc: Ð”Ð»Ñ Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° должно быть указано *name в Ñтроке %d из "
-"%s."
+"ppdc: Ð”Ð»Ñ Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° должно быть указано *name в Ñтроке %d из %s."
#, c-format
msgid "ppdc: Too many nested #if's on line %d of %s."
@@ -5857,8 +5894,8 @@ msgstr "ppdc: ÐеизвеÑтный маркер \"%s\" в Ñтроке %d иÐ
msgid ""
"ppdc: Unknown trailing characters in real number \"%s\" on line %d of %s."
msgstr ""
-"ppdc: ÐеизвеÑтные конечные Ñимволы в вещеÑтвенном чиÑле \"%s\" в Ñтроке "
-"%d из %s."
+"ppdc: ÐеизвеÑтные конечные Ñимволы в вещеÑтвенном чиÑле \"%s\" в Ñтроке %d "
+"из %s."
#, c-format
msgid "ppdc: Unterminated string starting with %c on line %d of %s."
@@ -5955,3 +5992,18 @@ msgstr "новый"
msgid "variable-bindings uses indefinite length"
msgstr "Ð”Ð»Ñ variable-bindings длина не уÑтановлена"
+#~ msgid " %s Missing \"%s\" translation string for option %s"
+#~ msgstr "\t%s Перевод \"%s\" отÑутÑтвует Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° %s"
+
+#~ msgid ""
+#~ " Missing %%EndComments comment.\n"
+#~ " REF: Page 41, %%EndComments"
+#~ msgstr ""
+#~ " Комментарий %%EndComments отÑутÑтвует.\n"
+#~ " REF: Стр. 41, %%EndComments"
+
+#~ msgid ""
+#~ "The '%s' Job Description attribute cannot be supplied in a job creation "
+#~ "request."
+#~ msgstr ""
+#~ "Ðтрибут '%s' Job Description не может быть подÑтавлен при ÑозданиизаданиÑ"
diff --git a/man/Makefile b/man/Makefile
index 15feafab2..dc1a8c0a4 100644
--- a/man/Makefile
+++ b/man/Makefile
@@ -1,9 +1,9 @@
#
-# "$Id: Makefile 12815 2015-07-30 15:03:38Z msweet $"
+# "$Id: Makefile 11919 2014-06-11 15:38:28Z msweet $"
#
# Man page makefile for CUPS.
#
-# Copyright 2007-2015 by Apple Inc.
+# Copyright 2007-2014 by Apple Inc.
# Copyright 1993-2006 by Easy Software Products.
#
# These coded instructions, statements, and computer programs are the
@@ -43,7 +43,6 @@ MAN5 = classes.conf.$(MAN5EXT) \
cups-files.conf.$(MAN5EXT) \
cups-snmp.conf.$(MAN5EXT) \
cupsd.conf.$(MAN5EXT) \
- cupsd-logs.$(MAN5EXT) \
ipptoolfile.$(MAN5EXT) \
mailto.conf.$(MAN5EXT) \
mime.convs.$(MAN5EXT) \
@@ -62,6 +61,7 @@ MAN8 = cupsaccept.$(MAN8EXT) \
cups-snmp.$(MAN8EXT) \
cupsd.$(MAN8EXT) \
cupsd-helper.$(MAN8EXT) \
+ cupsd-logs.$(MAN8EXT) \
cupsenable.$(MAN8EXT) \
lpadmin.$(MAN8EXT) \
lpinfo.$(MAN8EXT) \
@@ -228,5 +228,5 @@ mantohtml: mantohtml.o ../cups/$(LIBCUPSSTATIC)
#
-# End of "$Id: Makefile 12815 2015-07-30 15:03:38Z msweet $".
+# End of "$Id: Makefile 11919 2014-06-11 15:38:28Z msweet $".
#
diff --git a/man/client.conf.man.in b/man/client.conf.man.in
index 30e0d1ea0..ae6cdb05e 100644
--- a/man/client.conf.man.in
+++ b/man/client.conf.man.in
@@ -1,9 +1,9 @@
.\"
-.\" "$Id: client.conf.man.in 12215 2014-10-20 18:24:56Z msweet $"
+.\" "$Id: client.conf.man.in 12645 2015-05-20 01:20:52Z msweet $"
.\"
.\" client.conf man page for CUPS.
.\"
-.\" Copyright 2007-2014 by Apple Inc.
+.\" Copyright 2007-2015 by Apple Inc.
.\" Copyright 2006 by Easy Software Products.
.\"
.\" These coded instructions, statements, and computer programs are the
@@ -12,14 +12,14 @@
.\" which 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" "20 October 2014" "Apple Inc."
+.TH client.conf 5 "CUPS" "19 May 2015" "Apple Inc."
.SH NAME
client.conf \- client configuration file for cups (deprecated)
.SH DESCRIPTION
The \fBclient.conf\fR file configures the CUPS client and is normally located in the \fI/etc/cups\fR and/or \fI~/.cups\fR directories.
Each line in the file can be a configuration directive, a blank line, or a comment. Comment lines start with the # character.
.LP
-\fBNote:\fR Starting with OS X 10.7, this file is only used by command-line and X11 applications.
+\fBNote:\fR Starting with OS X 10.7, this file is only used by command-line and X11 applications plus the IPP backend.
The \fBServerName\fR directive is not supported on OS X at all.
.SS DIRECTIVES
The following directives are understood by the client. Consult the online help for detailed descriptions:
@@ -56,13 +56,15 @@ Specifies the address and optionally the port to use when connecting to the serv
\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
-\fBSSLOptions \fR[\fIAllowRC4\fR] [\fIAllowSSL3\fR]
+\fBSSLOptions \fR[\fIAllowDH\fR] [\fIAllowRC4\fR] [\fIAllowSSL3\fR] [\fIDenyTLS1.0\fR]
.TP 5
\fBSSLOptions None\fR
Sets encryption options (only in /etc/cups/client.conf).
By default, CUPS only supports encryption using TLS v1.0 or higher using known secure cipher suites.
+The \fIAllowDH\fR option enables cipher suites using plain Diffie-Hellman key negotiation.
The \fIAllowRC4\fR option enables the 128-bit RC4 cipher suites, which are required for some older clients that do not implement newer ones.
The \fIAllowSSL3\fR option enables SSL v3.0, which is required for some older clients that do not support TLS v1.0.
+The \fIDenyTLS1.0\fR option disables TLS v1.0 support - this sets the minimum protocol version to TLS v1.1.
.TP 5
\fBUser \fIname\fR
Specifies the default user name to use for requests.
@@ -78,7 +80,7 @@ The \fBclient.conf\fR file is deprecated and will no longer be supported in a fu
.BR cups (1),
CUPS Online Help (http://localhost:631/help)
.SH COPYRIGHT
-Copyright \[co] 2007-2014 by Apple Inc.
+Copyright \[co] 2007-2015 by Apple Inc.
.\"
-.\" End of "$Id: client.conf.man.in 12215 2014-10-20 18:24:56Z msweet $".
+.\" End of "$Id: client.conf.man.in 12645 2015-05-20 01:20:52Z msweet $".
.\"
diff --git a/man/cups-files.conf.man.in b/man/cups-files.conf.man.in
index a8daf8d3f..8603754e7 100644
--- a/man/cups-files.conf.man.in
+++ b/man/cups-files.conf.man.in
@@ -1,5 +1,5 @@
.\"
-.\" "$Id: cups-files.conf.man.in 12477 2015-02-02 18:38:25Z msweet $"
+.\" "$Id: cups-files.conf.man.in 12699 2015-06-08 18:16:30Z msweet $"
.\"
.\" cups-files.conf man page for CUPS.
.\"
@@ -12,7 +12,7 @@
.\" which should have been included with this file. If this file is
.\" file is missing or damaged, see the license at "http://www.cups.org/".
.\"
-.TH cups-files.conf 5 "CUPS" "2 February 2015" "Apple Inc."
+.TH cups-files.conf 5 "CUPS" "3 June 2015" "Apple Inc."
.SH NAME
cups\-files.conf \- file and directory configuration file for cups
.SH DESCRIPTION
@@ -33,9 +33,12 @@ The following directives are understood by
.TP 5
\fBAccessLog \fIfilename\fR
.TP 5
+\fBAccessLog stderr\fR
+.TP 5
\fBAccessLog syslog\fR
Defines the access log filename.
Specifying a blank filename disables access log generation.
+The value "stderr" causes log entries to be sent to the standard error file when the scheduler is running in the foreground, or to the system log daemon when run in the background.
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
@@ -69,9 +72,12 @@ The default is usually "/usr/share/doc/cups".
.TP 5
\fBErrorLog \fIfilename\fR
.TP 5
+\fBErrorLog stderr\fR
+.TP 5
\fBErrorLog syslog\fR
Defines the error log filename.
Specifying a blank filename disables error log generation.
+The value "stderr" causes log entries to be sent to the standard error file when the scheduler is running in the foreground, or to the system log daemon when run in the background.
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
@@ -134,8 +140,11 @@ The default is "0644".
.TP 5
\fBPageLog \fR[ \fIfilename\fR ]
.TP 5
+\fBPageLog stderr\fR
+.TP 5
\fBPageLog syslog\fR
Defines the page log filename.
+The value "stderr" causes log entries to be sent to the standard error file when the scheduler is running in the foreground, or to the system log daemon when run in the background.
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:
@@ -157,8 +166,6 @@ Specifies the directory that contains print jobs and other HTTP request data.
The default is "/var/spool/cups".
.\"#Sandboxing
.TP 5
-\fBSandboxing off\fR
-.TP 5
\fBSandboxing relaxed\fR
.TP 5
\fBSandboxing strict\fR
@@ -218,5 +225,5 @@ CUPS Online Help (http://localhost:631/help)
.SH COPYRIGHT
Copyright \[co] 2007-2015 by Apple Inc.
.\"
-.\" End of "$Id: cups-files.conf.man.in 12477 2015-02-02 18:38:25Z msweet $".
+.\" End of "$Id: cups-files.conf.man.in 12699 2015-06-08 18:16:30Z msweet $".
.\"
diff --git a/man/cupsd.conf.man.in b/man/cupsd.conf.man.in
index 97238426f..13de12694 100644
--- a/man/cupsd.conf.man.in
+++ b/man/cupsd.conf.man.in
@@ -1,9 +1,9 @@
.\"
-.\" "$Id: cupsd.conf.man.in 12769 2015-06-30 16:13:48Z msweet $"
+.\" "$Id: cupsd.conf.man.in 12362 2014-12-12 19:50:49Z msweet $"
.\"
.\" cupsd.conf man page for CUPS.
.\"
-.\" Copyright 2007-2015 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
@@ -12,7 +12,7 @@
.\" which should have been included with this file. If this file is
.\" file is missing or damaged, see the license at "http://www.cups.org/".
.\"
-.TH cupsd.conf 5 "CUPS" "30 June 2015" "Apple Inc."
+.TH cupsd.conf 5 "CUPS" "20 October 2014" "Apple Inc."
.SH NAME
cupsd.conf \- server configuration file for cups
.SH DESCRIPTION
@@ -369,8 +369,7 @@ The following percent sequences are recognized:
"%u" inserts the username.
.fi
-The default is the empty string, which disables page logging.
-The string "%p %u %j %T %P %C %{job-billing} %{job-originating-host-name} %{job-name} %{media} %{sides}" creates a page log with the standard items.
+The default is "%p %u %j %T %P %C %{job-billing} %{job-originating-host-name} %{job-name} %{media} %{sides}".
.\"#PassEnv
.TP 5
\fBPassEnv \fIvariable \fR[ ... \fIvariable \fR]
@@ -870,7 +869,7 @@ Require authentication for accesses from outside the 10. network:
.BR subscriptions.conf (5),
CUPS Online Help (http://localhost:631/help)
.SH COPYRIGHT
-Copyright \[co] 2007-2015 by Apple Inc.
+Copyright \[co] 2007-2014 by Apple Inc.
.\"
-.\" End of "$Id: cupsd.conf.man.in 12769 2015-06-30 16:13:48Z msweet $".
+.\" End of "$Id: cupsd.conf.man.in 12362 2014-12-12 19:50:49Z msweet $".
.\"
diff --git a/man/ipptool.man b/man/ipptool.man
index 0b441dd4c..b04d24809 100644
--- a/man/ipptool.man
+++ b/man/ipptool.man
@@ -1,9 +1,9 @@
.\"
-.\" "$Id: ipptool.man 12140 2014-08-30 01:51:22Z msweet $"
+.\" "$Id: ipptool.man 12484 2015-02-03 19:25:57Z msweet $"
.\"
.\" ipptool man page for CUPS.
.\"
-.\" Copyright 2010-2014 by Apple Inc.
+.\" Copyright 2010-2015 by Apple Inc.
.\"
.\" These coded instructions, statements, and computer programs are the
.\" property of Apple Inc. and are protected by Federal copyright
@@ -11,7 +11,7 @@
.\" which should have been included with this file. If this file is
.\" file is missing or damaged, see the license at "http://www.cups.org/".
.\"
-.TH ipptool 1 "CUPS" "29 August 2014" "Apple Inc."
+.TH ipptool 1 "CUPS" "3 February 2015" "Apple Inc."
.SH NAME
ipptool \- perform internet printing protocol requests
.SH SYNOPSIS
@@ -242,7 +242,7 @@ IANA IPP Registry (http://www.iana.org/assignments/ipp\-registrations),
PWG Internet Printing Protocol Workgroup (http://www.pwg.org/ipp)
RFC 2911 (http://tools.ietf.org/html/rfc2911),
.SH COPYRIGHT
-Copyright \[co] 2007-2014 by Apple Inc.
+Copyright \[co] 2007-2015 by Apple Inc.
.\"
-.\" End of "$Id: ipptool.man 12140 2014-08-30 01:51:22Z msweet $".
+.\" End of "$Id: ipptool.man 12484 2015-02-03 19:25:57Z msweet $".
.\"
diff --git a/man/ipptoolfile.man b/man/ipptoolfile.man
index 2021184d2..f9c5c41fb 100644
--- a/man/ipptoolfile.man
+++ b/man/ipptoolfile.man
@@ -1,5 +1,5 @@
.\"
-.\" "$Id: ipptoolfile.man 11880 2014-05-16 06:14:11Z msweet $"
+.\" "$Id: ipptoolfile.man 12487 2015-02-05 15:42:59Z msweet $"
.\"
.\" ipptoolfile man page for CUPS.
.\"
@@ -11,7 +11,7 @@
.\" which should have been included with this file. If this file is
.\" file is missing or damaged, see the license at "http://www.cups.org/".
.\"
-.TH ipptoolfile 5 "CUPS" "15 May 2014" "Apple Inc."
+.TH ipptoolfile 5 "CUPS" "4 February 2015" "Apple Inc."
.SH NAME
ipptoolfile \- ipptool file format
.SH DESCRIPTION
@@ -168,6 +168,11 @@ test report.
\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
+\fBEXPECT-ALL \fIattribute-name \fR[ \fIpredicate(s) \fR]
+.TP 5
+\fBEXPECT-ALL ?\fIattribute-name predicate(s)\fR
+Specifies that the response must/may include the named attribute and that all occurrences of that attribute must match the given predicates.
+.TP 5
\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
@@ -345,6 +350,10 @@ Requires that at least one value of the \fBEXPECT\fR attribute matches the boole
.TP 5
\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.
+.TP 5
+\fBWITH\-VALUE\-FROM \fIattribute-name\fR
+Requires that the value(s) of the \fBEXPECT\fR attribute matches the value(s) in the specified attribute.
+For example, "EXPECT job\-sheets WITH\-VALUE\-FROM job\-sheets\-supported" requires that the "job\-sheets" value is listed as a value of the "job\-sheets\-supported" attribute.
.SS STATUS PREDICATES
The following predicates are understood following the \fBSTATUS\fR test directive:
.TP 5
@@ -610,7 +619,7 @@ IANA IPP Registry (http://www.iana.org/assignments/ipp-registrations),
PWG Internet Printing Protocol Workgroup (http://www.pwg.org/ipp),
RFC 2911 (http://tools.ietf.org/html/rfc3911)
.SH COPYRIGHT
-Copyright \[co] 2007-2014 by Apple Inc.
+Copyright \[co] 2007-2015 by Apple Inc.
.\"
-.\" End of "$Id: ipptoolfile.man 11880 2014-05-16 06:14:11Z msweet $".
+.\" End of "$Id: ipptoolfile.man 12487 2015-02-05 15:42:59Z msweet $".
.\"
diff --git a/man/lpadmin.man b/man/lpadmin.man
index a89e6a5d4..1790022d1 100644
--- a/man/lpadmin.man
+++ b/man/lpadmin.man
@@ -1,9 +1,9 @@
.\"
-.\" "$Id: lpadmin.man 11922 2014-06-11 23:35:37Z msweet $"
+.\" "$Id: lpadmin.man 12513 2015-02-11 19:45:01Z msweet $"
.\"
.\" lpadmin man page for CUPS.
.\"
-.\" Copyright 2007-2014 by Apple Inc.
+.\" Copyright 2007-2015 by Apple Inc.
.\" Copyright 1997-2006 by Easy Software Products.
.\"
.\" These coded instructions, statements, and computer programs are the
@@ -12,7 +12,7 @@
.\" which should have been included with this file. If this file is
.\" file is missing or damaged, see the license at "http://www.cups.org/".
.\"
-.TH lpadmin 8 "CUPS" "11 June 2014" "Apple Inc."
+.TH lpadmin 8 "CUPS" "11 February 2015" "Apple Inc."
.SH NAME
lpadmin \- configure cups printers and classes
.SH SYNOPSIS
@@ -91,6 +91,7 @@ Sets a standard System V interface script or PPD file for the printer from the \
Use the \fI-m\fR option with the
.BR lpinfo (8)
command to get a list of supported models.
+The model "raw" clears any existing interface script or PPD file and the model "everywhere" queries the printer referred to by the specified IPP \fIdevice-uri\fR.
.TP 5
\fB\-o cupsIPPSupplies=true\fR
.TP 5
@@ -199,6 +200,13 @@ Finally, the CUPS version of \fBlpadmin\fR may ask the user for an access passwo
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 EXAMPLE
+Create an IPP Everywhere print queue:
+.nf
+
+ lpadmin -p myprinter -E -v ipp://myprinter.local/ipp/print -m everywhere
+
+.fi
.SH SEE ALSO
.BR cupsaccept (8),
.BR cupsenable (8),
@@ -206,7 +214,7 @@ The CUPS version of \fBlpadmin\fR does not support all of the System V or Solari
.BR lpoptions (1),
CUPS Online Help (http://localhost:631/help)
.SH COPYRIGHT
-Copyright \[co] 2007-2014 by Apple Inc.
+Copyright \[co] 2007-2015 by Apple Inc.
.\"
-.\" End of "$Id: lpadmin.man 11922 2014-06-11 23:35:37Z msweet $".
+.\" End of "$Id: lpadmin.man 12513 2015-02-11 19:45:01Z msweet $".
.\"
diff --git a/man/mantohtml.c b/man/mantohtml.c
index 798b03ebc..11ae93ab2 100644
--- a/man/mantohtml.c
+++ b/man/mantohtml.c
@@ -1,5 +1,5 @@
/*
- * "$Id: mantohtml.c 12363 2014-12-12 19:51:33Z msweet $"
+ * "$Id: mantohtml.c 12362 2014-12-12 19:50:49Z msweet $"
*
* Man page to HTML conversion program.
*
@@ -1221,5 +1221,5 @@ strmove(char *d, /* I - Destination */
/*
- * End of "$Id: mantohtml.c 12363 2014-12-12 19:51:33Z msweet $".
+ * End of "$Id: mantohtml.c 12362 2014-12-12 19:50:49Z msweet $".
*/
diff --git a/packaging/cups.spec b/packaging/cups.spec
index 7ddcc5212..befa11703 100644
--- a/packaging/cups.spec
+++ b/packaging/cups.spec
@@ -1,5 +1,5 @@
#
-# "$Id: cups.spec.in 12770 2015-06-30 16:17:56Z msweet $"
+# "$Id: cups.spec.in 12713 2015-06-08 21:10:09Z msweet $"
#
# RPM "spec" file for CUPS.
#
@@ -44,12 +44,12 @@
Summary: CUPS
Name: cups
-Version: 2.0.4
+Version: 2.1b1
Release: 1
Epoch: 1
License: GPL
Group: System Environment/Daemons
-Source: http://www.cups.org/software/2.0.4/cups-2.0.4-source.tar.bz2
+Source: http://www.cups.org/software/2.1b1/cups-2.1b1-source.tar.bz2
Url: http://www.cups.org
Packager: Anonymous <anonymous@foo.com>
Vendor: Apple Inc.
@@ -164,7 +164,9 @@ rm -rf $RPM_BUILD_ROOT
%defattr(-,root,root)
%dir /etc/cups
%config(noreplace) /etc/cups/*.conf
+/etc/cups/cups-files.conf.default
/etc/cups/cupsd.conf.default
+/etc/cups/snmp.conf.default
%dir /etc/cups/interfaces
%dir /etc/cups/ppd
%attr(0700,root,root) %dir /etc/cups/ssl
@@ -399,5 +401,5 @@ rm -rf $RPM_BUILD_ROOT
#
-# End of "$Id: cups.spec.in 12770 2015-06-30 16:17:56Z msweet $".
+# End of "$Id: cups.spec.in 12713 2015-06-08 21:10:09Z msweet $".
#
diff --git a/packaging/cups.spec.in b/packaging/cups.spec.in
index 4e8fbfe50..4f911783d 100644
--- a/packaging/cups.spec.in
+++ b/packaging/cups.spec.in
@@ -1,5 +1,5 @@
#
-# "$Id: cups.spec.in 12770 2015-06-30 16:17:56Z msweet $"
+# "$Id: cups.spec.in 12713 2015-06-08 21:10:09Z msweet $"
#
# RPM "spec" file for CUPS.
#
@@ -164,7 +164,9 @@ rm -rf $RPM_BUILD_ROOT
%defattr(-,root,root)
%dir /etc/cups
%config(noreplace) /etc/cups/*.conf
+/etc/cups/cups-files.conf.default
/etc/cups/cupsd.conf.default
+/etc/cups/snmp.conf.default
%dir /etc/cups/interfaces
%dir /etc/cups/ppd
%attr(0700,root,root) %dir /etc/cups/ssl
@@ -399,5 +401,5 @@ rm -rf $RPM_BUILD_ROOT
#
-# End of "$Id: cups.spec.in 12770 2015-06-30 16:17:56Z msweet $".
+# End of "$Id: cups.spec.in 12713 2015-06-08 21:10:09Z msweet $".
#
diff --git a/ppdc/Makefile b/ppdc/Makefile
index 221ea1893..7ac25eac1 100644
--- a/ppdc/Makefile
+++ b/ppdc/Makefile
@@ -1,5 +1,5 @@
#
-# "$Id: Makefile 12616 2015-05-06 20:22:01Z msweet $"
+# "$Id: Makefile 12615 2015-05-06 20:21:51Z msweet $"
#
# Makefile for the CUPS PPD Compiler.
#
@@ -388,5 +388,5 @@ include Dependencies
#
-# End of "$Id: Makefile 12616 2015-05-06 20:22:01Z msweet $".
+# End of "$Id: Makefile 12615 2015-05-06 20:21:51Z msweet $".
#
diff --git a/ppdc/ppdhtml.cxx b/ppdc/ppdhtml.cxx
index 7d47d1d79..234495cef 100644
--- a/ppdc/ppdhtml.cxx
+++ b/ppdc/ppdhtml.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: ppdhtml.cxx 12634 2015-05-15 19:17:07Z msweet $"
+// "$Id: ppdhtml.cxx 12633 2015-05-15 19:16:58Z msweet $"
//
// PPD to HTML utility for the CUPS PPD Compiler.
//
@@ -187,5 +187,5 @@ usage(void)
//
-// End of "$Id: ppdhtml.cxx 12634 2015-05-15 19:17:07Z msweet $".
+// End of "$Id: ppdhtml.cxx 12633 2015-05-15 19:16:58Z msweet $".
//
diff --git a/ppdc/ppdpo.cxx b/ppdc/ppdpo.cxx
index 6a0e72919..ab53bf4f7 100644
--- a/ppdc/ppdpo.cxx
+++ b/ppdc/ppdpo.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: ppdpo.cxx 12634 2015-05-15 19:17:07Z msweet $"
+// "$Id: ppdpo.cxx 12633 2015-05-15 19:16:58Z msweet $"
//
// PPD file message catalog program for the CUPS PPD Compiler.
//
@@ -258,5 +258,5 @@ usage(void)
//
-// End of "$Id: ppdpo.cxx 12634 2015-05-15 19:17:07Z msweet $".
+// End of "$Id: ppdpo.cxx 12633 2015-05-15 19:16:58Z msweet $".
//
diff --git a/ppdc/sample.drv b/ppdc/sample.drv
index 4935feb83..fe1e55536 100644
--- a/ppdc/sample.drv
+++ b/ppdc/sample.drv
@@ -1,5 +1,5 @@
//
-// "$Id: sample.drv 12105 2014-08-20 15:27:43Z msweet $"
+// "$Id: sample.drv 12201 2014-10-15 19:11:12Z msweet $"
//
// Driver info file for CUPS-supplied PPDs.
//
@@ -114,7 +114,7 @@
#media "w576h468/8.00x6.50\"" 576 468
// Common stuff for all drivers...
-Attribute "cupsVersion" "" "2.0"
+Attribute "cupsVersion" "" "2.1"
Attribute "FileSystem" "" "False"
Attribute "LandscapeOrientation" "" "Plus90"
Attribute "TTRasterizer" "" "Type42"
@@ -1168,5 +1168,5 @@ Version "2.0"
}
//
-// End of "$Id: sample.drv 12105 2014-08-20 15:27:43Z msweet $".
+// End of "$Id: sample.drv 12201 2014-10-15 19:11:12Z msweet $".
//
diff --git a/scheduler/Makefile b/scheduler/Makefile
index 3e0884a21..c7d244dfc 100644
--- a/scheduler/Makefile
+++ b/scheduler/Makefile
@@ -1,9 +1,9 @@
#
-# "$Id: Makefile 12222 2014-10-21 11:55:01Z msweet $"
+# "$Id: Makefile 12519 2015-02-17 13:10:19Z msweet $"
#
# Scheduler Makefile for CUPS.
#
-# Copyright 2007-2014 by Apple Inc.
+# Copyright 2007-2015 by Apple Inc.
# Copyright 1997-2007 by Easy Software Products, all rights reserved.
#
# These coded instructions, statements, and computer programs are the
@@ -402,6 +402,12 @@ cupsfilter: cupsfilter.o $(LIBCUPSMIME) ../cups/$(LIBCUPS)
$(RM) convert
$(LN) cupsfilter convert
+cupsfilter-static: cupsfilter.o libcupsmime.a ../cups/$(LIBCUPSSTATIC)
+ echo Linking $@...
+ $(CC) $(LDFLAGS) -o cupsfilter-static cupsfilter.o libcupsmime.a \
+ ../cups/$(LIBCUPSSTATIC) $(COMMONLIBS) $(LIBZ) $(SSLLIBS) \
+ $(DNSSDLIBS) $(LIBGSSAPI)
+
#
# Make the device daemon, "cups-deviced".
@@ -548,5 +554,5 @@ include Dependencies
#
-# End of "$Id: Makefile 12222 2014-10-21 11:55:01Z msweet $".
+# End of "$Id: Makefile 12519 2015-02-17 13:10:19Z msweet $".
#
diff --git a/scheduler/auth.c b/scheduler/auth.c
index 3f3f411be..bb75756c2 100644
--- a/scheduler/auth.c
+++ b/scheduler/auth.c
@@ -1,5 +1,5 @@
/*
- * "$Id: auth.c 12604 2015-05-06 01:43:05Z msweet $"
+ * "$Id: auth.c 12602 2015-05-05 20:19:35Z msweet $"
*
* Authorization routines for the CUPS scheduler.
*
@@ -2336,5 +2336,5 @@ to64(char *s, /* O - Output string */
/*
- * End of "$Id: auth.c 12604 2015-05-06 01:43:05Z msweet $".
+ * End of "$Id: auth.c 12602 2015-05-05 20:19:35Z msweet $".
*/
diff --git a/scheduler/client.c b/scheduler/client.c
index 8c67272d4..22cad512b 100644
--- a/scheduler/client.c
+++ b/scheduler/client.c
@@ -1,5 +1,5 @@
/*
- * "$Id: client.c 12754 2015-06-24 19:37:53Z msweet $"
+ * "$Id: client.c 12700 2015-06-08 18:32:35Z msweet $"
*
* Client routines for the CUPS scheduler.
*
@@ -2159,9 +2159,6 @@ cupsdSendError(cupsd_client_t *con, /* I - Connection */
http_status_t code, /* I - Error code */
int auth_type)/* I - Authentication type */
{
- char location[HTTP_MAX_VALUE]; /* Location field */
-
-
cupsdLogClient(con, CUPSD_LOG_DEBUG2, "cupsdSendError code=%d, auth_type=%d",
code, auth_type);
@@ -2194,12 +2191,8 @@ cupsdSendError(cupsd_client_t *con, /* I - Connection */
* never disable it in that case.
*/
- strlcpy(location, httpGetField(con->http, HTTP_FIELD_LOCATION), sizeof(location));
-
httpClearFields(con->http);
- httpSetField(con->http, HTTP_FIELD_LOCATION, location);
-
if (code >= HTTP_STATUS_BAD_REQUEST && con->type != CUPSD_AUTH_NEGOTIATE)
httpSetKeepAlive(con->http, HTTP_KEEPALIVE_OFF);
@@ -4072,5 +4065,5 @@ write_pipe(cupsd_client_t *con) /* I - Client connection */
/*
- * End of "$Id: client.c 12754 2015-06-24 19:37:53Z msweet $".
+ * End of "$Id: client.c 12700 2015-06-08 18:32:35Z msweet $".
*/
diff --git a/scheduler/colorman.c b/scheduler/colorman.c
index b3e6f0821..0d90dde54 100644
--- a/scheduler/colorman.c
+++ b/scheduler/colorman.c
@@ -1,5 +1,5 @@
/*
- * "$Id: colorman.c 12369 2014-12-15 14:51:28Z msweet $"
+ * "$Id: colorman.c 12619 2015-05-06 21:00:19Z msweet $"
*
* Color management routines for the CUPS scheduler.
*
@@ -368,7 +368,7 @@ apple_register_profiles(
* Make sure ColorSync is available...
*/
- if (ColorSyncRegisterDevice == NULL)
+ if (&ColorSyncRegisterDevice == NULL)
return;
/*
@@ -868,7 +868,7 @@ apple_unregister_profiles(
* Make sure ColorSync is available...
*/
- if (ColorSyncUnregisterDevice != NULL)
+ if (&ColorSyncUnregisterDevice != NULL)
{
CFUUIDRef deviceUUID; /* Device UUID */
@@ -1519,5 +1519,5 @@ colord_unregister_printer(
/*
- * End of "$Id: colorman.c 12369 2014-12-15 14:51:28Z msweet $".
+ * End of "$Id: colorman.c 12619 2015-05-06 21:00:19Z msweet $".
*/
diff --git a/scheduler/conf.c b/scheduler/conf.c
index 17a17fa5f..cbd1b7ce3 100644
--- a/scheduler/conf.c
+++ b/scheduler/conf.c
@@ -1,9 +1,9 @@
/*
- * "$Id: conf.c 12701 2015-06-08 18:33:44Z msweet $"
+ * "$Id: conf.c 12689 2015-06-03 19:49:54Z msweet $"
*
* Configuration routines for the CUPS scheduler.
*
- * Copyright 2007-2014 by Apple Inc.
+ * Copyright 2007-2015 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
@@ -21,6 +21,12 @@
#include <stdarg.h>
#include <grp.h>
#include <sys/utsname.h>
+#ifdef HAVE_ASL_H
+# include <asl.h>
+#elif defined(HAVE_SYSTEMD_SD_JOURNAL_H)
+# define SD_JOURNAL_SUPPRESS_LOCATION
+# include <systemd/sd-journal.h>
+#endif /* HAVE_ASL_H */
#include <syslog.h>
#ifdef HAVE_LIBPAPER
@@ -269,8 +275,20 @@ cupsdCheckPermissions(
"Unable to create directory \"%s\" - %s", filename,
strerror(errno));
else
- syslog(LOG_ERR, "Unable to create directory \"%s\" - %s", filename,
- strerror(errno));
+#ifdef HAVE_ASL_H
+ {
+ asl_object_t m; /* Log message */
+
+ m = asl_new(ASL_TYPE_MSG);
+ asl_set(m, ASL_KEY_FACILITY, "org.cups.cupsd");
+ asl_log(NULL, m, ASL_LEVEL_ERR, "Unable to create directory \"%s\" - %s", filename, strerror(errno));
+ asl_release(m);
+ }
+#elif defined(HAVE_SYSTEMD_SD_JOURNAL_H)
+ sd_journal_print(LOG_ERR, "Unable to create directory \"%s\" - %s", filename, strerror(errno));
+#else
+ syslog(LOG_ERR, "Unable to create directory \"%s\" - %s", filename, strerror(errno));
+#endif /* HAVE_ASL_H */
return (-1);
}
@@ -307,7 +325,20 @@ cupsdCheckPermissions(
if (create_dir >= 0)
cupsdLogMessage(CUPSD_LOG_ERROR, "\"%s\" is not a directory.", filename);
else
+#ifdef HAVE_ASL_H
+ {
+ asl_object_t m; /* Log message */
+
+ m = asl_new(ASL_TYPE_MSG);
+ asl_set(m, ASL_KEY_FACILITY, "org.cups.cupsd");
+ asl_log(NULL, m, ASL_LEVEL_ERR, "\"%s\" is not a directory.", filename);
+ asl_release(m);
+ }
+#elif defined(HAVE_SYSTEMD_SD_JOURNAL_H)
+ sd_journal_print(LOG_ERR, "\"%s\" is not a directory.", filename);
+#else
syslog(LOG_ERR, "\"%s\" is not a directory.", filename);
+#endif /* HAVE_ASL_H */
return (-1);
}
@@ -336,8 +367,20 @@ cupsdCheckPermissions(
"Unable to change ownership of \"%s\" - %s", filename,
strerror(errno));
else
- syslog(LOG_ERR, "Unable to change ownership of \"%s\" - %s", filename,
- strerror(errno));
+#ifdef HAVE_ASL_H
+ {
+ asl_object_t m; /* Log message */
+
+ m = asl_new(ASL_TYPE_MSG);
+ asl_set(m, ASL_KEY_FACILITY, "org.cups.cupsd");
+ asl_log(NULL, m, ASL_LEVEL_ERR, "Unable to change ownership of \"%s\" - %s", filename, strerror(errno));
+ asl_release(m);
+ }
+#elif defined(HAVE_SYSTEMD_SD_JOURNAL_H)
+ sd_journal_print(LOG_ERR, "Unable to change ownership of \"%s\" - %s", filename, strerror(errno));
+#else
+ syslog(LOG_ERR, "Unable to change ownership of \"%s\" - %s", filename, strerror(errno));
+#endif /* HAVE_ASL_H */
return (1);
}
@@ -356,8 +399,20 @@ cupsdCheckPermissions(
"Unable to change permissions of \"%s\" - %s", filename,
strerror(errno));
else
- syslog(LOG_ERR, "Unable to change permissions of \"%s\" - %s", filename,
- strerror(errno));
+#ifdef HAVE_ASL_H
+ {
+ asl_object_t m; /* Log message */
+
+ m = asl_new(ASL_TYPE_MSG);
+ asl_set(m, ASL_KEY_FACILITY, "org.cups.cupsd");
+ asl_log(NULL, m, ASL_LEVEL_ERR, "Unable to change permissions of \"%s\" - %s", filename, strerror(errno));
+ asl_release(m);
+ }
+#elif defined(HAVE_SYSTEMD_SD_JOURNAL_H)
+ sd_journal_print(LOG_ERR, "Unable to change permissions of \"%s\" - %s", filename, strerror(errno));
+#else
+ syslog(LOG_ERR, "Unable to change permissions of \"%s\" - %s", filename, strerror(errno));
+#endif /* HAVE_ASL_H */
return (1);
}
@@ -782,8 +837,20 @@ cupsdReadConfiguration(void)
if (TestConfigFile)
printf("\"%s\" contains errors.\n", CupsFilesFile);
else
- syslog(LOG_LPR, "Unable to read \"%s\" due to errors.",
- CupsFilesFile);
+#ifdef HAVE_ASL_H
+ {
+ asl_object_t m; /* Log message */
+
+ m = asl_new(ASL_TYPE_MSG);
+ asl_set(m, ASL_KEY_FACILITY, "org.cups.cupsd");
+ asl_log(NULL, m, ASL_LEVEL_ERR, "Unable to read \"%s\" due to errors.", CupsFilesFile);
+ asl_release(m);
+ }
+#elif defined(HAVE_SYSTEMD_SD_JOURNAL_H)
+ sd_journal_print(LOG_ERR, "Unable to read \"%s\" due to errors.", CupsFilesFile);
+#else
+ syslog(LOG_LPR, "Unable to read \"%s\" due to errors.", CupsFilesFile);
+#endif /* HAVE_ASL_H */
return (0);
}
@@ -792,8 +859,20 @@ cupsdReadConfiguration(void)
cupsdLogMessage(CUPSD_LOG_INFO, "No %s, using defaults.", CupsFilesFile);
else
{
- syslog(LOG_LPR, "Unable to open \"%s\": %s", CupsFilesFile,
- strerror(errno));
+#ifdef HAVE_ASL_H
+ asl_object_t m; /* Log message */
+
+ m = asl_new(ASL_TYPE_MSG);
+ asl_set(m, ASL_KEY_FACILITY, "org.cups.cupsd");
+ asl_log(NULL, m, ASL_LEVEL_ERR, "Unable to open \"%s\" - %s", CupsFilesFile, strerror(errno));
+ asl_release(m);
+
+#elif defined(HAVE_SYSTEMD_SD_JOURNAL_H)
+ sd_journal_print(LOG_ERR, "Unable to open \"%s\" - %s", CupsFilesFile, strerror(errno));
+#else
+ syslog(LOG_LPR, "Unable to open \"%s\" - %s", CupsFilesFile, strerror(errno));
+#endif /* HAVE_ASL_H */
+
return (0);
}
@@ -806,8 +885,19 @@ cupsdReadConfiguration(void)
if ((fp = cupsFileOpen(ConfigurationFile, "r")) == NULL)
{
- syslog(LOG_LPR, "Unable to open \"%s\": %s", ConfigurationFile,
- strerror(errno));
+#ifdef HAVE_ASL_H
+ asl_object_t m; /* Log message */
+
+ m = asl_new(ASL_TYPE_MSG);
+ asl_set(m, ASL_KEY_FACILITY, "org.cups.cupsd");
+ asl_log(NULL, m, ASL_LEVEL_ERR, "Unable to open \"%s\" - %s", ConfigurationFile, strerror(errno));
+ asl_release(m);
+#elif defined(HAVE_SYSTEMD_SD_JOURNAL_H)
+ sd_journal_print(LOG_ERR, "Unable to open \"%s\" - %s", ConfigurationFile, strerror(errno));
+#else
+ syslog(LOG_LPR, "Unable to open \"%s\" - %s", ConfigurationFile, strerror(errno));
+#endif /* HAVE_ASL_H */
+
return (0);
}
@@ -820,8 +910,20 @@ cupsdReadConfiguration(void)
if (TestConfigFile)
printf("\"%s\" contains errors.\n", ConfigurationFile);
else
- syslog(LOG_LPR, "Unable to read \"%s\" due to errors.",
- ConfigurationFile);
+#ifdef HAVE_ASL_H
+ {
+ asl_object_t m; /* Log message */
+
+ m = asl_new(ASL_TYPE_MSG);
+ asl_set(m, ASL_KEY_FACILITY, "org.cups.cupsd");
+ asl_log(NULL, m, ASL_LEVEL_ERR, "Unable to read \"%s\" due to errors.", ConfigurationFile);
+ asl_release(m);
+ }
+#elif defined(HAVE_SYSTEMD_SD_JOURNAL_H)
+ sd_journal_print(LOG_ERR, "Unable to read \"%s\" due to errors.", ConfigurationFile);
+#else
+ syslog(LOG_LPR, "Unable to read \"%s\" due to errors.", ConfigurationFile);
+#endif /* HAVE_ASL_H */
return (0);
}
@@ -948,12 +1050,24 @@ cupsdReadConfiguration(void)
* Open the system log for cupsd if necessary...
*/
-#ifdef HAVE_VSYSLOG
+ if (!LogStderr)
+ {
+ if (!strcmp(AccessLog, "stderr"))
+ cupsdSetString(&AccessLog, "syslog");
+
+ if (!strcmp(ErrorLog, "stderr"))
+ cupsdSetString(&ErrorLog, "syslog");
+
+ if (!strcmp(PageLog, "stderr"))
+ cupsdSetString(&PageLog, "syslog");
+ }
+
+#if defined(HAVE_VSYSLOG) && !defined(HAVE_ASL_H) && !defined(HAVE_SYSTEMD_SD_JOURNAL_H)
if (!strcmp(AccessLog, "syslog") ||
!strcmp(ErrorLog, "syslog") ||
!strcmp(PageLog, "syslog"))
openlog("cupsd", LOG_PID | LOG_NOWAIT | LOG_NDELAY, LOG_LPR);
-#endif /* HAVE_VSYSLOG */
+#endif /* HAVE_VSYSLOG && !HAVE_ASL_H && !HAVE_SYSTEMD_SD_JOURNAL_H */
/*
* Make sure each of the log files exists and gets rotated as necessary...
@@ -1182,6 +1296,19 @@ cupsdReadConfiguration(void)
cupsdUpdateEnv();
+ /*
+ * Validate the default error policy...
+ */
+
+ if (strcmp(ErrorPolicy, "retry-current-job") &&
+ strcmp(ErrorPolicy, "abort-job") &&
+ strcmp(ErrorPolicy, "retry-job") &&
+ strcmp(ErrorPolicy, "stop-printer"))
+ {
+ cupsdLogMessage(CUPSD_LOG_ALERT, "Invalid ErrorPolicy \"%s\", resetting to \"stop-printer\".", ErrorPolicy);
+ cupsdSetString(&ErrorPolicy, "stop-printer");
+ }
+
/*
* Update default paper size setting as needed...
*/
@@ -3470,7 +3597,7 @@ read_cups_files_conf(cups_file_t *fp) /* I - File to read from */
* Level of sandboxing?
*/
- if (!_cups_strcasecmp(value, "off"))
+ if (!_cups_strcasecmp(value, "off") && getuid())
{
Sandboxing = CUPSD_SANDBOXING_OFF;
cupsdLogMessage(CUPSD_LOG_WARN, "Disabling sandboxing is not recommended (line %d of %s)", linenum, CupsFilesFile);
@@ -4143,5 +4270,5 @@ set_policy_defaults(cupsd_policy_t *pol)/* I - Policy */
/*
- * End of "$Id: conf.c 12701 2015-06-08 18:33:44Z msweet $".
+ * End of "$Id: conf.c 12689 2015-06-03 19:49:54Z msweet $".
*/
diff --git a/scheduler/conf.h b/scheduler/conf.h
index 1c47b53bc..59cb15718 100644
--- a/scheduler/conf.h
+++ b/scheduler/conf.h
@@ -1,9 +1,9 @@
/*
- * "$Id: conf.h 11789 2014-04-02 16:52:53Z msweet $"
+ * "$Id: conf.h 12689 2015-06-03 19:49:54Z msweet $"
*
* Configuration file definitions for the CUPS scheduler.
*
- * Copyright 2007-2014 by Apple Inc.
+ * Copyright 2007-2015 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
@@ -182,6 +182,8 @@ 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 cups_file_t *LogStderr VALUE(NULL);
+ /* Stderr file, if any */
VAR cupsd_sandboxing_t Sandboxing VALUE(CUPSD_SANDBOXING_STRICT);
/* Sandboxing level */
VAR int UseSandboxing VALUE(1);
@@ -298,5 +300,5 @@ extern int cupsdWriteErrorLog(int level, const char *message);
/*
- * End of "$Id: conf.h 11789 2014-04-02 16:52:53Z msweet $".
+ * End of "$Id: conf.h 12689 2015-06-03 19:49:54Z msweet $".
*/
diff --git a/scheduler/cups-driverd.cxx b/scheduler/cups-driverd.cxx
index 782844805..8b279025e 100644
--- a/scheduler/cups-driverd.cxx
+++ b/scheduler/cups-driverd.cxx
@@ -1,5 +1,5 @@
/*
- * "$Id: cups-driverd.cxx 12124 2014-08-28 15:37:22Z msweet $"
+ * "$Id: cups-driverd.cxx 12722 2015-06-08 22:00:19Z msweet $"
*
* PPD/driver support for CUPS.
*
@@ -7,7 +7,7 @@
* created from driver information files, and dynamically generated PPD files
* using driver helper programs.
*
- * Copyright 2007-2014 by Apple Inc.
+ * Copyright 2007-2015 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -1172,11 +1172,11 @@ list_ppds(int request_id, /* I - Request ID */
load_drivers(include, exclude);
/*
- * Add the raw driver...
+ * Add the raw and IPP Everywhere drivers...
*/
- add_ppd("", "raw", "en", "Raw", "Raw Queue", "", "", "", 0, 0, 0,
- PPD_TYPE_UNKNOWN, "raw");
+ add_ppd("", "everywhere", "en", "Generic", "IPP Everywhere", "", "", "", 0, 0, 0, PPD_TYPE_UNKNOWN, "everywhere");
+ add_ppd("", "raw", "en", "Raw", "Raw Queue", "", "", "", 0, 0, 0, PPD_TYPE_UNKNOWN, "raw");
/*
* Send IPP attributes...
@@ -2903,5 +2903,5 @@ regex_string(const char *s) /* I - String to compare */
/*
- * End of "$Id: cups-driverd.cxx 12124 2014-08-28 15:37:22Z msweet $".
+ * End of "$Id: cups-driverd.cxx 12722 2015-06-08 22:00:19Z msweet $".
*/
diff --git a/scheduler/cups-lpd.c b/scheduler/cups-lpd.c
index 7ce14ef62..4748ce07b 100644
--- a/scheduler/cups-lpd.c
+++ b/scheduler/cups-lpd.c
@@ -1,9 +1,9 @@
/*
- * "$Id: cups-lpd.c 12612 2015-05-06 15:30:50Z msweet $"
+ * "$Id: cups-lpd.c 12611 2015-05-06 15:30:36Z msweet $"
*
* Line Printer Daemon interface for CUPS.
*
- * Copyright 2007-2014 by Apple Inc.
+ * Copyright 2007-2015 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
@@ -29,6 +29,9 @@
#ifdef HAVE_INTTYPES_H
# include <inttypes.h>
#endif /* HAVE_INTTYPES_H */
+#ifdef __APPLE__
+# include <vproc.h>
+#endif /* __APPLE__ */
/*
@@ -96,6 +99,9 @@ main(int argc, /* I - Number of command-line arguments */
hostip[256], /* IP address */
*hostfamily; /* Address family */
int hostlookups; /* Do hostname lookups? */
+#ifdef __APPLE__
+ vproc_transaction_t vtran = vproc_transaction_begin(NULL);
+#endif /* __APPLE__ */
/*
@@ -211,6 +217,11 @@ main(int argc, /* I - Number of command-line arguments */
syslog(LOG_ERR, "Unable to get command line from client!");
putchar(1);
+
+#ifdef __APPLE__
+ vproc_transaction_end(NULL, vtran);
+#endif /* __APPLE__ */
+
return (1);
}
@@ -303,6 +314,10 @@ main(int argc, /* I - Number of command-line arguments */
syslog(LOG_INFO, "Closing connection");
closelog();
+#ifdef __APPLE__
+ vproc_transaction_end(NULL, vtran);
+#endif /* __APPLE__ */
+
return (status);
}
@@ -1614,5 +1629,5 @@ smart_gets(char *s, /* I - Pointer to line buffer */
/*
- * End of "$Id: cups-lpd.c 12612 2015-05-06 15:30:50Z msweet $".
+ * End of "$Id: cups-lpd.c 12611 2015-05-06 15:30:36Z msweet $".
*/
diff --git a/scheduler/cupsfilter.c b/scheduler/cupsfilter.c
index ebe035bc1..81e159d30 100644
--- a/scheduler/cupsfilter.c
+++ b/scheduler/cupsfilter.c
@@ -1,5 +1,5 @@
/*
- * "$Id: cupsfilter.c 12303 2014-12-09 16:16:07Z msweet $"
+ * "$Id: cupsfilter.c 12304 2014-12-09 16:16:28Z msweet $"
*
* Filtering program for CUPS.
*
@@ -1501,5 +1501,5 @@ usage(const char *opt) /* I - Incorrect option, if any */
/*
- * End of "$Id: cupsfilter.c 12303 2014-12-09 16:16:07Z msweet $".
+ * End of "$Id: cupsfilter.c 12304 2014-12-09 16:16:28Z msweet $".
*/
diff --git a/scheduler/dirsvc.c b/scheduler/dirsvc.c
index 9a3961d28..54a08e24d 100644
--- a/scheduler/dirsvc.c
+++ b/scheduler/dirsvc.c
@@ -1,5 +1,5 @@
/*
- * "$Id: dirsvc.c 12459 2015-01-30 16:16:12Z msweet $"
+ * "$Id: dirsvc.c 12458 2015-01-30 16:15:53Z msweet $"
*
* Directory services routines for the CUPS scheduler.
*
@@ -1823,5 +1823,5 @@ update_smb(int onoff) /* I - 1 = turn on, 0 = turn off */
/*
- * End of "$Id: dirsvc.c 12459 2015-01-30 16:16:12Z msweet $".
+ * End of "$Id: dirsvc.c 12458 2015-01-30 16:15:53Z msweet $".
*/
diff --git a/scheduler/env.c b/scheduler/env.c
index 3e33afca0..59eab2734 100644
--- a/scheduler/env.c
+++ b/scheduler/env.c
@@ -1,5 +1,5 @@
/*
- * "$Id: env.c 12701 2015-06-08 18:33:44Z msweet $"
+ * "$Id: env.c 12700 2015-06-08 18:32:35Z msweet $"
*
* Environment management routines for the CUPS scheduler.
*
@@ -265,5 +265,5 @@ find_env(const char *name) /* I - Variable name */
/*
- * End of "$Id: env.c 12701 2015-06-08 18:33:44Z msweet $".
+ * End of "$Id: env.c 12700 2015-06-08 18:32:35Z msweet $".
*/
diff --git a/scheduler/ipp.c b/scheduler/ipp.c
index c84e34f7e..defccb16e 100644
--- a/scheduler/ipp.c
+++ b/scheduler/ipp.c
@@ -1,5 +1,5 @@
/*
- * "$Id: ipp.c 12778 2015-07-07 17:28:51Z msweet $"
+ * "$Id: ipp.c 12700 2015-06-08 18:32:35Z msweet $"
*
* IPP routines for the CUPS scheduler.
*
@@ -945,10 +945,18 @@ add_class(cupsd_client_t *con, /* I - Client connection */
need_restart_job = 0;
- if ((attr = ippFindAttribute(con->request, "printer-location",
- IPP_TAG_TEXT)) != NULL)
+ if ((attr = ippFindAttribute(con->request, "printer-location", IPP_TAG_TEXT)) != NULL)
cupsdSetString(&pclass->location, attr->values[0].string.text);
+ if ((attr = ippFindAttribute(con->request, "printer-geo-location", IPP_TAG_URI)) != NULL && !strncmp(attr->values[0].string.text, "geo:", 4))
+ cupsdSetString(&pclass->geo_location, attr->values[0].string.text);
+
+ if ((attr = ippFindAttribute(con->request, "printer-organization", IPP_TAG_TEXT)) != NULL)
+ cupsdSetString(&pclass->organization, attr->values[0].string.text);
+
+ if ((attr = ippFindAttribute(con->request, "printer-organizational-unit", IPP_TAG_TEXT)) != NULL)
+ cupsdSetString(&pclass->organizational_unit, attr->values[0].string.text);
+
if ((attr = ippFindAttribute(con->request, "printer-info",
IPP_TAG_TEXT)) != NULL)
cupsdSetString(&pclass->info, attr->values[0].string.text);
@@ -1068,6 +1076,8 @@ add_class(cupsd_client_t *con, /* I - Client connection */
IPP_TAG_KEYWORD)) != NULL)
cupsdSetAuthInfoRequired(pclass, NULL, attr);
+ pclass->config_time = time(NULL);
+
/*
* Update the printer class attributes and return...
*/
@@ -1203,13 +1213,25 @@ add_job(cupsd_client_t *con, /* I - Client connection */
ipp_t *unsup_col; /* media-col in unsupported response */
static const char * const readonly[] =/* List of read-only attributes */
{
+ "date-time-at-completed",
+ "date-time-at-creation",
+ "date-time-at-processing",
+ "job-detailed-status-messages",
+ "job-document-access-errors",
"job-id",
- "job-k-octets-completed",
"job-impressions-completed",
+ "job-k-octets-completed",
"job-media-sheets-completed",
+ "job-pages-completed",
+ "job-printer-up-time",
+ "job-printer-uri",
"job-state",
"job-state-message",
"job-state-reasons",
+ "job-uri",
+ "number-of-documents",
+ "number-of-intervening-jobs",
+ "output-device-assigned",
"time-at-completed",
"time-at-creation",
"time-at-processing"
@@ -1285,22 +1307,17 @@ add_job(cupsd_client_t *con, /* I - Client connection */
for (i = 0; i < (int)(sizeof(readonly) / sizeof(readonly[0])); i ++)
{
- if ((attr = ippFindAttribute(con->request, readonly[i],
- IPP_TAG_ZERO)) != NULL)
+ if ((attr = ippFindAttribute(con->request, readonly[i], IPP_TAG_ZERO)) != NULL)
{
ippDeleteAttribute(con->request, attr);
if (StrictConformance)
{
- send_ipp_status(con, IPP_BAD_REQUEST,
- _("The '%s' Job Description attribute cannot be "
- "supplied in a job creation request."), readonly[i]);
+ send_ipp_status(con, IPP_BAD_REQUEST, _("The '%s' Job Status attribute cannot be supplied in a job creation request."), readonly[i]);
return (NULL);
}
- cupsdLogMessage(CUPSD_LOG_INFO,
- "Unexpected '%s' Job Description attribute in a job "
- "creation request.", readonly[i]);
+ cupsdLogMessage(CUPSD_LOG_INFO, "Unexpected '%s' Job Status attribute in a job creation request.", readonly[i]);
}
}
@@ -1625,14 +1642,12 @@ add_job(cupsd_client_t *con, /* I - Client connection */
"job-originating-host-name", NULL, con->http->hostname);
}
- ippAddInteger(job->attrs, IPP_TAG_JOB, IPP_TAG_INTEGER, "time-at-creation",
- time(NULL));
- attr = ippAddInteger(job->attrs, IPP_TAG_JOB, IPP_TAG_INTEGER,
- "time-at-processing", 0);
- attr->value_tag = IPP_TAG_NOVALUE;
- attr = ippAddInteger(job->attrs, IPP_TAG_JOB, IPP_TAG_INTEGER,
- "time-at-completed", 0);
- attr->value_tag = IPP_TAG_NOVALUE;
+ ippAddOutOfBand(job->attrs, IPP_TAG_JOB, IPP_TAG_NOVALUE, "date-time-at-completed");
+ ippAddDate(job->attrs, IPP_TAG_JOB, "date-time-at-creation", ippTimeToDate(time(NULL)));
+ ippAddOutOfBand(job->attrs, IPP_TAG_JOB, IPP_TAG_NOVALUE, "date-time-at-processing");
+ ippAddOutOfBand(job->attrs, IPP_TAG_JOB, IPP_TAG_NOVALUE, "time-at-completed");
+ ippAddInteger(job->attrs, IPP_TAG_JOB, IPP_TAG_INTEGER, "time-at-creation", time(NULL));
+ ippAddOutOfBand(job->attrs, IPP_TAG_JOB, IPP_TAG_NOVALUE, "time-at-processing");
/*
* Add remaining job attributes...
@@ -1644,6 +1659,7 @@ add_job(cupsd_client_t *con, /* I - Client connection */
job->state_value = (ipp_jstate_t)job->state->values[0].integer;
job->reasons = ippAddString(job->attrs, IPP_TAG_JOB, IPP_TAG_KEYWORD,
"job-state-reasons", NULL, "job-incoming");
+ job->impressions = ippAddInteger(job->attrs, IPP_TAG_JOB, IPP_TAG_INTEGER, "job-impressions-completed", 0);
job->sheets = ippAddInteger(job->attrs, IPP_TAG_JOB, IPP_TAG_INTEGER,
"job-media-sheets-completed", 0);
ippAddString(job->attrs, IPP_TAG_JOB, IPP_TAG_URI, "job-printer-uri", NULL,
@@ -1859,6 +1875,7 @@ add_job(cupsd_client_t *con, /* I - Client connection */
ippAddInteger(con->response, IPP_TAG_JOB, IPP_TAG_ENUM, "job-state",
job->state_value);
+ ippAddString(con->response, IPP_TAG_JOB, IPP_TAG_TEXT, "job-state-message", NULL, "");
ippAddString(con->response, IPP_TAG_JOB, IPP_TAG_KEYWORD, "job-state-reasons",
NULL, job->reasons->values[0].string.text);
@@ -2270,6 +2287,15 @@ add_printer(cupsd_client_t *con, /* I - Client connection */
IPP_TAG_TEXT)) != NULL)
cupsdSetString(&printer->location, attr->values[0].string.text);
+ if ((attr = ippFindAttribute(con->request, "printer-geo-location", IPP_TAG_URI)) != NULL && !strncmp(attr->values[0].string.text, "geo:", 4))
+ cupsdSetString(&printer->geo_location, attr->values[0].string.text);
+
+ if ((attr = ippFindAttribute(con->request, "printer-organization", IPP_TAG_TEXT)) != NULL)
+ cupsdSetString(&printer->organization, attr->values[0].string.text);
+
+ if ((attr = ippFindAttribute(con->request, "printer-organizational-unit", IPP_TAG_TEXT)) != NULL)
+ cupsdSetString(&printer->organizational_unit, attr->values[0].string.text);
+
if ((attr = ippFindAttribute(con->request, "printer-info",
IPP_TAG_TEXT)) != NULL)
cupsdSetString(&printer->info, attr->values[0].string.text);
@@ -2743,6 +2769,8 @@ add_printer(cupsd_client_t *con, /* I - Client connection */
}
}
+ printer->config_time = time(NULL);
+
/*
* Update the printer attributes and return...
*/
@@ -3284,8 +3312,6 @@ cancel_all_jobs(cupsd_client_t *con, /* I - Client connection */
}
con->response->request.status.status_code = IPP_OK;
-
- cupsdCheckJobs();
}
@@ -4725,6 +4751,12 @@ copy_job_attrs(cupsd_client_t *con, /* I - Client connection */
* Generate attributes from the job structure...
*/
+ if (job->completed_time && (!ra || cupsArrayFind(ra, "date-time-at-completed")))
+ ippAddDate(con->response, IPP_TAG_JOB, "date-time-at-completed", ippTimeToDate(job->completed_time));
+
+ if (job->creation_time && (!ra || cupsArrayFind(ra, "date-time-at-creation")))
+ ippAddDate(con->response, IPP_TAG_JOB, "date-time-at-creation", ippTimeToDate(job->creation_time));
+
if (!ra || cupsArrayFind(ra, "job-id"))
ippAddInteger(con->response, IPP_TAG_JOB, IPP_TAG_INTEGER, "job-id", job->id);
@@ -4761,7 +4793,7 @@ copy_job_attrs(cupsd_client_t *con, /* I - Client connection */
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")))
+ if (job->creation_time && (!ra || cupsArrayFind(ra, "time-at-creation")))
ippAddInteger(con->response, IPP_TAG_JOB, IPP_TAG_INTEGER, "time-at-creation", (int)job->creation_time);
}
}
@@ -4840,6 +4872,13 @@ copy_printer_attrs(
"printer-alert-description", NULL,
printer->alert_description);
+ if (!ra || cupsArrayFind(ra, "printer-config-change-date-time"))
+ ippAddDate(con->response, IPP_TAG_PRINTER, "printer-config-change-date-time", ippTimeToDate(printer->config_time));
+
+ if (!ra || cupsArrayFind(ra, "printer-config-change-time"))
+ ippAddInteger(con->response, IPP_TAG_PRINTER, IPP_TAG_INTEGER,
+ "printer-config-change-time", printer->config_time);
+
if (!ra || cupsArrayFind(ra, "printer-current-time"))
ippAddDate(con->response, IPP_TAG_PRINTER, "printer-current-time",
ippTimeToDate(curtime));
@@ -4913,6 +4952,9 @@ copy_printer_attrs(
ippAddInteger(con->response, IPP_TAG_PRINTER, IPP_TAG_ENUM, "printer-state",
printer->state);
+ if (!ra || cupsArrayFind(ra, "printer-state-change-date-time"))
+ ippAddDate(con->response, IPP_TAG_PRINTER, "printer-state-change-date-time", ippTimeToDate(printer->state_time));
+
if (!ra || cupsArrayFind(ra, "printer-state-change-time"))
ippAddInteger(con->response, IPP_TAG_PRINTER, IPP_TAG_INTEGER,
"printer-state-change-time", printer->state_time);
@@ -7060,9 +7102,15 @@ get_printer_supported(
*/
ippAddInteger(con->response, IPP_TAG_PRINTER, IPP_TAG_ADMINDEFINE,
+ "printer-geo-location", 0);
+ ippAddInteger(con->response, IPP_TAG_PRINTER, IPP_TAG_ADMINDEFINE,
"printer-info", 0);
ippAddInteger(con->response, IPP_TAG_PRINTER, IPP_TAG_ADMINDEFINE,
"printer-location", 0);
+ ippAddInteger(con->response, IPP_TAG_PRINTER, IPP_TAG_ADMINDEFINE,
+ "printer-organization", 0);
+ ippAddInteger(con->response, IPP_TAG_PRINTER, IPP_TAG_ADMINDEFINE,
+ "printer-organizational-unit", 0);
con->response->request.status.status_code = IPP_OK;
}
@@ -7997,6 +8045,7 @@ print_job(cupsd_client_t *con, /* I - Client connection */
ipp_attribute_t *uri) /* I - Printer URI */
{
ipp_attribute_t *attr; /* Current attribute */
+ ipp_attribute_t *doc_name; /* document-name attribute */
ipp_attribute_t *format; /* Document-format attribute */
const char *default_format; /* document-format-default value */
cupsd_job_t *job; /* New job */
@@ -8074,6 +8123,10 @@ print_job(cupsd_client_t *con, /* I - Client connection */
* Is it a format we support?
*/
+ doc_name = ippFindAttribute(con->request, "document-name", IPP_TAG_NAME);
+ if (doc_name)
+ ippSetName(con->request, &doc_name, "document-name-supplied");
+
if ((format = ippFindAttribute(con->request, "document-format",
IPP_TAG_MIMETYPE)) != NULL)
{
@@ -8089,6 +8142,8 @@ print_job(cupsd_client_t *con, /* I - Client connection */
format->values[0].string.text);
return;
}
+
+ ippAddString(con->request, IPP_TAG_JOB, IPP_TAG_MIMETYPE, "document-format-supplied", NULL, ippGetString(format, 0, NULL));
}
else if ((default_format = cupsGetOption("document-format",
printer->num_options,
@@ -8122,12 +8177,9 @@ print_job(cupsd_client_t *con, /* I - Client connection */
* Auto-type the file...
*/
- ipp_attribute_t *doc_name; /* document-name attribute */
-
-
cupsdLogMessage(CUPSD_LOG_DEBUG, "[Job ???] Auto-typing file...");
- doc_name = ippFindAttribute(con->request, "document-name", IPP_TAG_NAME);
+
filetype = mimeFileType(MimeDatabase, con->filename,
doc_name ? doc_name->values[0].string.text : NULL,
&compression);
@@ -8137,6 +8189,9 @@ print_job(cupsd_client_t *con, /* I - Client connection */
cupsdLogMessage(CUPSD_LOG_INFO, "[Job ???] Request file type is %s/%s.",
filetype->super, filetype->type);
+
+ snprintf(mimetype, sizeof(mimetype), "%s/%s", filetype->super, filetype->type);
+ ippAddString(con->request, IPP_TAG_JOB, IPP_TAG_MIMETYPE, "document-format-detected", NULL, mimetype);
}
else
filetype = mimeType(MimeDatabase, super, type);
@@ -8214,9 +8269,15 @@ print_job(cupsd_client_t *con, /* I - Client connection */
if (add_file(con, job, filetype, compression))
return;
- snprintf(filename, sizeof(filename), "%s/d%05d-%03d", RequestRoot, job->id,
- job->num_files);
- rename(con->filename, filename);
+ snprintf(filename, sizeof(filename), "%s/d%05d-%03d", RequestRoot, job->id, job->num_files);
+ if (rename(con->filename, filename))
+ {
+ cupsdLogJob(job, CUPSD_LOG_ERROR, "Unable to rename job document file \"%s\": %s", filename, strerror(errno));
+
+ send_ipp_status(con, IPP_INTERNAL_ERROR, _("Unable to rename job document file."));
+ return;
+ }
+
cupsdClearString(&con->filename);
/*
@@ -8375,12 +8436,17 @@ read_job_ticket(cupsd_client_t *con) /* I - Client connection */
if (attr->group_tag != IPP_TAG_JOB || !attr->name)
continue;
- if (!strcmp(attr->name, "job-originating-host-name") ||
- !strcmp(attr->name, "job-originating-user-name") ||
+ if (!strncmp(attr->name, "date-time-at-", 13) ||
+ !strcmp(attr->name, "job-impressions-completed") ||
!strcmp(attr->name, "job-media-sheets-completed") ||
- !strcmp(attr->name, "job-k-octets") ||
+ !strncmp(attr->name, "job-k-octets", 12) ||
!strcmp(attr->name, "job-id") ||
+ !strcmp(attr->name, "job-originating-host-name") ||
+ !strcmp(attr->name, "job-originating-user-name") ||
+ !strcmp(attr->name, "job-pages-completed") ||
+ !strcmp(attr->name, "job-printer-uri") ||
!strncmp(attr->name, "job-state", 9) ||
+ !strcmp(attr->name, "job-uri") ||
!strncmp(attr->name, "time-at-", 8))
continue; /* Read-only attrs */
@@ -9304,6 +9370,8 @@ send_document(cupsd_client_t *con, /* I - Client connection */
* Is it a format we support?
*/
+ cupsdLoadJob(job);
+
if ((format = ippFindAttribute(con->request, "document-format",
IPP_TAG_MIMETYPE)) != NULL)
{
@@ -9318,6 +9386,8 @@ send_document(cupsd_client_t *con, /* I - Client connection */
format->values[0].string.text);
return;
}
+
+ ippAddString(job->attrs, IPP_TAG_JOB, IPP_TAG_MIMETYPE, "document-format-supplied", NULL, ippGetString(format, 0, NULL));
}
else if ((default_format = cupsGetOption("document-format",
printer->num_options,
@@ -9366,6 +9436,9 @@ send_document(cupsd_client_t *con, /* I - Client connection */
if (filetype)
cupsdLogJob(job, CUPSD_LOG_DEBUG, "Request file type is %s/%s.",
filetype->super, filetype->type);
+
+ snprintf(mimetype, sizeof(mimetype), "%s/%s", filetype->super, filetype->type);
+ ippAddString(job->attrs, IPP_TAG_JOB, IPP_TAG_MIMETYPE, "document-format-detected", NULL, mimetype);
}
else
filetype = mimeType(MimeDatabase, super, type);
@@ -9419,11 +9492,12 @@ send_document(cupsd_client_t *con, /* I - Client connection */
* Add the file to the job...
*/
- cupsdLoadJob(job);
-
if (add_file(con, job, filetype, compression))
return;
+ if ((attr = ippFindAttribute(con->request, "document-name", IPP_TAG_NAME)) != NULL)
+ ippAddString(job->attrs, IPP_TAG_JOB, IPP_TAG_NAME, "document-name-supplied", NULL, ippGetString(attr, 0, NULL));
+
if (stat(con->filename, &fileinfo))
kbytes = 0;
else
@@ -9436,9 +9510,14 @@ send_document(cupsd_client_t *con, /* I - Client connection */
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,
- job->num_files);
- rename(con->filename, filename);
+ snprintf(filename, sizeof(filename), "%s/d%05d-%03d", RequestRoot, job->id, job->num_files);
+ if (rename(con->filename, filename))
+ {
+ cupsdLogJob(job, CUPSD_LOG_ERROR, "Unable to rename job document file \"%s\": %s", filename, strerror(errno));
+
+ send_ipp_status(con, IPP_INTERNAL_ERROR, _("Unable to rename job document file."));
+ return;
+ }
cupsdClearString(&con->filename);
@@ -9874,15 +9953,18 @@ set_job_attrs(cupsd_client_t *con, /* I - Client connection */
if (!strcmp(attr->name, "attributes-charset") ||
!strcmp(attr->name, "attributes-natural-language") ||
- !strcmp(attr->name, "document-compression") ||
- !strcmp(attr->name, "document-format") ||
+ !strncmp(attr->name, "date-time-at-", 13) ||
+ !strncmp(attr->name, "document-compression", 20) ||
+ !strncmp(attr->name, "document-format", 15) ||
!strcmp(attr->name, "job-detailed-status-messages") ||
!strcmp(attr->name, "job-document-access-errors") ||
!strcmp(attr->name, "job-id") ||
!strcmp(attr->name, "job-impressions-completed") ||
- !strcmp(attr->name, "job-k-octets") ||
+ !strcmp(attr->name, "job-k-octets-completed") ||
+ !strcmp(attr->name, "job-media-sheets-completed") ||
!strcmp(attr->name, "job-originating-host-name") ||
!strcmp(attr->name, "job-originating-user-name") ||
+ !strcmp(attr->name, "job-pages-completed") ||
!strcmp(attr->name, "job-printer-up-time") ||
!strcmp(attr->name, "job-printer-uri") ||
!strcmp(attr->name, "job-sheets") ||
@@ -9892,9 +9974,6 @@ set_job_attrs(cupsd_client_t *con, /* I - Client connection */
!strcmp(attr->name, "number-of-documents") ||
!strcmp(attr->name, "number-of-intervening-jobs") ||
!strcmp(attr->name, "output-device-assigned") ||
- !strncmp(attr->name, "date-time-at-", 13) ||
- !strncmp(attr->name, "job-k-octets", 12) ||
- !strncmp(attr->name, "job-media-sheets", 16) ||
!strncmp(attr->name, "time-at-", 8))
{
/*
@@ -10174,6 +10253,24 @@ set_printer_attrs(cupsd_client_t *con, /* I - Client connection */
changed = 1;
}
+ if ((attr = ippFindAttribute(con->request, "printer-geo-location", IPP_TAG_URI)) != NULL && !strncmp(attr->values[0].string.text, "geo:", 4))
+ {
+ cupsdSetString(&printer->geo_location, attr->values[0].string.text);
+ changed = 1;
+ }
+
+ if ((attr = ippFindAttribute(con->request, "printer-organization", IPP_TAG_TEXT)) != NULL)
+ {
+ cupsdSetString(&printer->organization, attr->values[0].string.text);
+ changed = 1;
+ }
+
+ if ((attr = ippFindAttribute(con->request, "printer-organizational-unit", IPP_TAG_TEXT)) != NULL)
+ {
+ cupsdSetString(&printer->organizational_unit, attr->values[0].string.text);
+ changed = 1;
+ }
+
if ((attr = ippFindAttribute(con->request, "printer-info",
IPP_TAG_TEXT)) != NULL)
{
@@ -10187,6 +10284,8 @@ set_printer_attrs(cupsd_client_t *con, /* I - Client connection */
if (changed)
{
+ printer->config_time = time(NULL);
+
cupsdSetPrinterAttrs(printer);
cupsdMarkDirty(CUPSD_DIRTY_PRINTERS);
@@ -11049,5 +11148,5 @@ validate_user(cupsd_job_t *job, /* I - Job */
/*
- * End of "$Id: ipp.c 12778 2015-07-07 17:28:51Z msweet $".
+ * End of "$Id: ipp.c 12700 2015-06-08 18:32:35Z msweet $".
*/
diff --git a/scheduler/job.c b/scheduler/job.c
index 8ca308c61..d572a6433 100644
--- a/scheduler/job.c
+++ b/scheduler/job.c
@@ -1,9 +1,9 @@
/*
- * "$Id: job.c 12778 2015-07-07 17:28:51Z msweet $"
+ * "$Id: job.c 12700 2015-06-08 18:32:35Z msweet $"
*
* Job management routines for the CUPS scheduler.
*
- * Copyright 2007-2014 by Apple Inc.
+ * Copyright 2007-2015 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
@@ -213,6 +213,8 @@ cupsdCancelJobs(const char *dest, /* I - Destination to cancel */
"Job canceled by user.");
}
}
+
+ cupsdCheckJobs();
}
@@ -390,9 +392,7 @@ cupsdCheckJobs(void)
* Start the job...
*/
- cupsArraySave(ActiveJobs);
start_job(job, printer);
- cupsArrayRestore(ActiveJobs);
}
}
}
@@ -1531,9 +1531,10 @@ void
cupsdLoadAllJobs(void)
{
char filename[1024]; /* Full filename of job.cache file */
- struct stat fileinfo, /* Information on job.cache file */
- dirinfo; /* Information on RequestRoot dir */
-
+ struct stat fileinfo; /* Information on job.cache file */
+ cups_dir_t *dir; /* RequestRoot dir */
+ cups_dentry_t *dent; /* Entry in RequestRoot */
+ int load_cache = 1; /* Load the job.cache file? */
/*
@@ -1557,36 +1558,65 @@ cupsdLoadAllJobs(void)
if (stat(filename, &fileinfo))
{
- fileinfo.st_mtime = 0;
+ /*
+ * No job.cache file...
+ */
+
+ load_cache = 0;
if (errno != ENOENT)
cupsdLogMessage(CUPSD_LOG_ERROR,
"Unable to get file information for \"%s\" - %s",
filename, strerror(errno));
}
+ else if ((dir = cupsDirOpen(RequestRoot)) == NULL)
+ {
+ /*
+ * No spool directory...
+ */
- if (stat(RequestRoot, &dirinfo))
+ load_cache = 0;
+ }
+ else
{
- dirinfo.st_mtime = 0;
+ while ((dent = cupsDirRead(dir)) != NULL)
+ {
+ if (strlen(dent->filename) >= 6 && dent->filename[0] == 'c' && dent->fileinfo.st_mtime > fileinfo.st_mtime)
+ {
+ /*
+ * Job history file is newer than job.cache file...
+ */
- if (errno != ENOENT)
- cupsdLogMessage(CUPSD_LOG_ERROR,
- "Unable to get directory information for \"%s\" - %s",
- RequestRoot, strerror(errno));
+ load_cache = 0;
+ break;
+ }
+ }
+
+ cupsDirClose(dir);
}
/*
* Load the most recent source for job data...
*/
- if (dirinfo.st_mtime > fileinfo.st_mtime)
+ if (load_cache)
+ {
+ /*
+ * Load the job.cache file...
+ */
+
+ load_job_cache(filename);
+ }
+ else
{
+ /*
+ * Load the job history files...
+ */
+
load_request_root();
load_next_job_id(filename);
}
- else
- load_job_cache(filename);
/*
* Clean out old jobs as needed...
@@ -1793,9 +1823,12 @@ cupsdLoadJob(cupsd_job_t *job) /* I - Job */
ippSetString(job->attrs, &job->reasons, 0, "none");
}
- job->sheets = ippFindAttribute(job->attrs, "job-media-sheets-completed",
- IPP_TAG_INTEGER);
- job->job_sheets = ippFindAttribute(job->attrs, "job-sheets", IPP_TAG_NAME);
+ job->impressions = ippFindAttribute(job->attrs, "job-impressions-completed", IPP_TAG_INTEGER);
+ job->sheets = ippFindAttribute(job->attrs, "job-media-sheets-completed", IPP_TAG_INTEGER);
+ job->job_sheets = ippFindAttribute(job->attrs, "job-sheets", IPP_TAG_NAME);
+
+ if (!job->impressions)
+ job->impressions = ippAddInteger(job->attrs, IPP_TAG_JOB, IPP_TAG_INTEGER, "job-impressions-completed", 0);
if (!job->priority)
{
@@ -3491,6 +3524,13 @@ finalize_job(cupsd_job_t *job, /* I - Job */
job->printer->job = NULL;
job->printer = NULL;
+
+ /*
+ * Try printing another job...
+ */
+
+ if (printer_state != IPP_PRINTER_STOPPED)
+ cupsdCheckJobs();
}
@@ -4476,6 +4516,7 @@ static void
set_time(cupsd_job_t *job, /* I - Job to update */
const char *name) /* I - Name of attribute */
{
+ char date_name[128]; /* date-time-at-xxx */
ipp_attribute_t *attr; /* Time attribute */
time_t curtime; /* Current time */
@@ -4490,6 +4531,14 @@ set_time(cupsd_job_t *job, /* I - Job to update */
attr->values[0].integer = curtime;
}
+ snprintf(date_name, sizeof(date_name), "date-%s", name);
+
+ if ((attr = ippFindAttribute(job->attrs, date_name, IPP_TAG_ZERO)) != NULL)
+ {
+ attr->value_tag = IPP_TAG_DATE;
+ ippSetDate(job->attrs, &attr, 0, ippTimeToDate(curtime));
+ }
+
if (!strcmp(name, "time-at-completed"))
{
job->completed_time = curtime;
@@ -4776,6 +4825,7 @@ unload_job(cupsd_job_t *job) /* I - Job */
job->attrs = NULL;
job->state = NULL;
job->reasons = NULL;
+ job->impressions = NULL;
job->sheets = NULL;
job->job_sheets = NULL;
job->printer_message = NULL;
@@ -4797,8 +4847,6 @@ update_job(cupsd_job_t *job) /* I - Job to check */
*ptr; /* Pointer update... */
int loglevel, /* Log level for message */
event = 0; /* Events? */
- cupsd_printer_t *printer = job->printer;
- /* Printer */
static const char * const levels[] = /* Log levels */
{
"NONE",
@@ -4836,6 +4884,25 @@ update_job(cupsd_job_t *job) /* I - Job to check */
cupsdLogJob(job, CUPSD_LOG_DEBUG, "PAGE: %s", message);
+ if (job->impressions)
+ {
+ if (!_cups_strncasecmp(message, "total ", 6))
+ {
+ /*
+ * Got a total count of pages from a backend or filter...
+ */
+
+ copies = atoi(message + 6);
+ copies -= ippGetInteger(job->impressions, 0); /* Just track the delta */
+ }
+ else if (!sscanf(message, "%*d%d", &copies))
+ copies = 1;
+
+ ippSetInteger(job->attrs, &job->impressions, 0, ippGetInteger(job->impressions, 0) + copies);
+ job->dirty = 1;
+ cupsdMarkDirty(CUPSD_DIRTY_JOBS);
+ }
+
if (job->sheets)
{
if (!_cups_strncasecmp(message, "total ", 6))
@@ -4845,12 +4912,14 @@ update_job(cupsd_job_t *job) /* I - Job to check */
*/
copies = atoi(message + 6);
- copies -= job->sheets->values[0].integer; /* Just track the delta */
+ copies -= ippGetInteger(job->sheets, 0); /* Just track the delta */
}
else if (!sscanf(message, "%*d%d", &copies))
copies = 1;
- job->sheets->values[0].integer += copies;
+ ippSetInteger(job->attrs, &job->sheets, 0, ippGetInteger(job->sheets, 0) + copies);
+ job->dirty = 1;
+ cupsdMarkDirty(CUPSD_DIRTY_JOBS);
if (job->printer->page_limit)
cupsdUpdateQuota(job->printer, job->username, copies, 0);
@@ -4859,8 +4928,7 @@ update_job(cupsd_job_t *job) /* I - Job to check */
cupsdLogPage(job, message);
if (job->sheets)
- cupsdAddEvent(CUPSD_EVENT_JOB_PROGRESS, job->printer, job,
- "Printed %d page(s).", job->sheets->values[0].integer);
+ cupsdAddEvent(CUPSD_EVENT_JOB_PROGRESS, job->printer, job, "Printed %d page(s).", ippGetInteger(job->sheets, 0));
}
else if (loglevel == CUPSD_LOG_JOBSTATE)
{
@@ -5152,11 +5220,10 @@ update_job(cupsd_job_t *job) /* I - Job to check */
finalize_job(job, 1);
/*
- * Try printing another job...
+ * Check for new jobs...
*/
- if (printer->state != IPP_PRINTER_STOPPED)
- cupsdCheckJobs();
+ cupsdCheckJobs();
}
}
@@ -5276,5 +5343,5 @@ update_job_attrs(cupsd_job_t *job, /* I - Job to update */
/*
- * End of "$Id: job.c 12778 2015-07-07 17:28:51Z msweet $".
+ * End of "$Id: job.c 12700 2015-06-08 18:32:35Z msweet $".
*/
diff --git a/scheduler/job.h b/scheduler/job.h
index 909e3a30e..2e3edc8ec 100644
--- a/scheduler/job.h
+++ b/scheduler/job.h
@@ -1,9 +1,9 @@
/*
- * "$Id: job.h 12067 2014-07-31 00:02:30Z msweet $"
+ * "$Id: job.h 12668 2015-05-27 19:30:32Z msweet $"
*
* Print job definitions for the CUPS scheduler.
*
- * Copyright 2007-2014 by Apple Inc.
+ * Copyright 2007-2015 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
@@ -46,7 +46,8 @@ struct cupsd_job_s /**** Job request ****/
int num_files; /* Number of files in job */
mime_type_t **filetypes; /* File types */
int *compressions; /* Compression status of each file */
- ipp_attribute_t *sheets; /* job-media-sheets-completed */
+ ipp_attribute_t *impressions, /* job-impressions-completed */
+ *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 */
@@ -179,5 +180,5 @@ extern void cupsdUpdateJobs(void);
/*
- * End of "$Id: job.h 12067 2014-07-31 00:02:30Z msweet $".
+ * End of "$Id: job.h 12668 2015-05-27 19:30:32Z msweet $".
*/
diff --git a/scheduler/log.c b/scheduler/log.c
index 7566edbcd..85202d3e3 100644
--- a/scheduler/log.c
+++ b/scheduler/log.c
@@ -1,9 +1,9 @@
/*
- * "$Id: log.c 11920 2014-06-11 19:03:59Z msweet $"
+ * "$Id: log.c 12691 2015-06-04 18:00:31Z msweet $"
*
* Log file routines for the CUPS scheduler.
*
- * Copyright 2007-2014 by Apple Inc.
+ * Copyright 2007-2015 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
@@ -19,10 +19,44 @@
#include "cupsd.h"
#include <stdarg.h>
+#ifdef HAVE_ASL_H
+# include <asl.h>
+#elif defined(HAVE_SYSTEMD_SD_JOURNAL_H)
+# define SD_JOURNAL_SUPPRESS_LOCATION
+# include <systemd/sd-journal.h>
+#endif /* HAVE_ASL_H */
#include <syslog.h>
/*
+ * Constants for log keys from PWG 5110.3 (PWG Common Log Format)...
+ */
+
+#define PWG_DeviceUUID "DUU"
+#define PWG_Event "E"
+#define PWG_LogNaturalLanguage "NL"
+#define PWG_Status "S"
+#define PWG_ServiceURI "URI"
+#define PWG_UserHost "UH"
+#define PWG_UserName "UN"
+#define PWG_UserURI "UU"
+#define PWG_ServiceIsAcceptingJobs "IAJ"
+#define PWG_ServiceState "ST"
+#define PWG_ServiceStateReasons "SR"
+#define PWG_ServiceUUID "SUU"
+#define PWG_JobID "JID"
+#define PWG_JobUUID "JUU"
+#define PWG_JobImagesCompleted "JIM"
+#define PWG_JobImpressionsCompleted "JIC"
+#define PWG_JobDestinationURI "JD"
+#define PWG_JobState "JS"
+#define PWG_JobStateReasons "JR"
+#define PWG_JobAccountingID "JA"
+#define PWG_JobAcountingUserName "JAUN"
+#define PWG_JobAccountingUserURI "JAUU"
+
+
+/*
* Local globals...
*/
@@ -31,8 +65,22 @@ static _cups_mutex_t log_mutex = _CUPS_MUTEX_INITIALIZER;
static size_t log_linesize = 0; /* Size of line for output file */
static char *log_line = NULL; /* Line for output file */
-#ifdef HAVE_VSYSLOG
-static const int syslevels[] = /* SYSLOG levels... */
+#ifdef HAVE_ASL_H
+static const int log_levels[] = /* ASL levels... */
+ {
+ ASL_LEVEL_EMERG,
+ ASL_LEVEL_EMERG,
+ ASL_LEVEL_ALERT,
+ ASL_LEVEL_CRIT,
+ ASL_LEVEL_ERR,
+ ASL_LEVEL_WARNING,
+ ASL_LEVEL_NOTICE,
+ ASL_LEVEL_INFO,
+ ASL_LEVEL_DEBUG,
+ ASL_LEVEL_DEBUG
+ };
+#elif defined(HAVE_VSYSLOG) || defined(HAVE_SYSTEMD_SD_JOURNAL_H)
+static const int log_levels[] = /* SYSLOG levels... */
{
0,
LOG_EMERG,
@@ -45,7 +93,7 @@ static const int syslevels[] = /* SYSLOG levels... */
LOG_DEBUG,
LOG_DEBUG
};
-#endif /* HAVE_VSYSLOG */
+#endif /* HAVE_ASL_H */
/*
@@ -77,6 +125,16 @@ cupsdCheckLogFile(cups_file_t **lf, /* IO - Log file */
return (1);
/*
+ * Handle logging to stderr...
+ */
+
+ if (!strcmp(logname, "stderr"))
+ {
+ *lf = LogStderr;
+ return (1);
+ }
+
+ /*
* Format the filename as needed...
*/
@@ -169,8 +227,20 @@ cupsdCheckLogFile(cups_file_t **lf, /* IO - Log file */
if (*lf == NULL)
{
- syslog(LOG_ERR, "Unable to open log file \"%s\" - %s", filename,
- strerror(errno));
+#ifdef HAVE_ASL_H
+ asl_object_t m; /* Log message */
+
+ m = asl_new(ASL_TYPE_MSG);
+ asl_set(m, ASL_KEY_FACILITY, "org.cups.cupsd");
+ asl_log(NULL, m, ASL_LEVEL_ERR, "Unable to open log file \"%s\" - %s", filename, strerror(errno));
+ asl_release(m);
+
+#elif defined(HAVE_SYSTEMD_SD_JOURNAL_H)
+ sd_journal_print(LOG_ERR, "Unable to open log file \"%s\" - %s", filename, strerror(errno));
+
+#else
+ syslog(LOG_ERR, "Unable to open log file \"%s\" - %s", filename, strerror(errno));
+#endif /* HAVE_ASL_H */
if (FatalErrors & CUPSD_FATAL_LOG)
cupsdEndProcess(getpid(), 0);
@@ -211,8 +281,20 @@ cupsdCheckLogFile(cups_file_t **lf, /* IO - Log file */
if ((*lf = cupsFileOpen(filename, "a")) == NULL)
{
- syslog(LOG_ERR, "Unable to open log file \"%s\" - %s", filename,
- strerror(errno));
+#ifdef HAVE_ASL_H
+ asl_object_t m; /* Log message */
+
+ m = asl_new(ASL_TYPE_MSG);
+ asl_set(m, ASL_KEY_FACILITY, "org.cups.cupsd");
+ asl_log(NULL, m, ASL_LEVEL_ERR, "Unable to open log file \"%s\" - %s", filename, strerror(errno));
+ asl_release(m);
+
+#elif defined(HAVE_SYSTEMD_SD_JOURNAL_H)
+ sd_journal_print(LOG_ERR, "Unable to open log file \"%s\" - %s", filename, strerror(errno));
+
+#else
+ syslog(LOG_ERR, "Unable to open log file \"%s\" - %s", filename, strerror(errno));
+#endif /* HAVE_ASL_H */
if (FatalErrors & CUPSD_FATAL_LOG)
cupsdEndProcess(getpid(), 0);
@@ -507,6 +589,85 @@ cupsdLogJob(cupsd_job_t *job, /* I - Job */
LogDebugHistory <= 0)
return (1);
+#ifdef HAVE_ASL_H
+ if (!strcmp(ErrorLog, "syslog"))
+ {
+ asl_object_t m; /* Log message */
+ char job_id[32], /* job-id string */
+ completed[32]; /* job-impressions-completed string */
+ static const char * const job_states[] =
+ { /* job-state strings */
+ "Pending",
+ "PendingHeld",
+ "Processing",
+ "ProcessingStopped",
+ "Canceled",
+ "Aborted",
+ "Completed"
+ };
+
+ snprintf(job_id, sizeof(job_id), "%d", job->id);
+
+ m = asl_new(ASL_TYPE_MSG);
+ asl_set(m, ASL_KEY_FACILITY, "org.cups.cupsd");
+ asl_set(m, PWG_Event, "JobStateChanged");
+ asl_set(m, PWG_ServiceURI, job->printer->uri);
+ asl_set(m, PWG_JobID, job_id);
+ asl_set(m, PWG_JobState, job_states[job->state_value - IPP_JSTATE_PENDING]);
+
+ if (job->impressions)
+ {
+ snprintf(completed, sizeof(completed), "%d", ippGetInteger(job->impressions, 0));
+ asl_set(m, PWG_JobImpressionsCompleted, completed);
+ }
+
+ va_start(ap, message);
+ asl_vlog(NULL, m, log_levels[level], message, ap);
+ va_end(ap);
+
+ asl_release(m);
+ return (1);
+ }
+
+#elif defined(HAVE_SYSTEMD_SD_JOURNAL_H)
+ if (!strcmp(ErrorLog, "syslog"))
+ {
+ static const char * const job_states[] =
+ { /* job-state strings */
+ "Pending",
+ "PendingHeld",
+ "Processing",
+ "ProcessingStopped",
+ "Canceled",
+ "Aborted",
+ "Completed"
+ };
+
+ va_start(ap, message);
+
+ do
+ {
+ va_copy(ap2, ap);
+ status = format_log_line(message, ap2);
+ va_end(ap2);
+ }
+ while (status == 0);
+
+ va_end(ap);
+
+ sd_journal_send("MESSAGE=%s", log_line,
+ "PRIORITY=%i", log_levels[level],
+ PWG_Event"=JobStateChanged",
+ PWG_ServiceURI"=%s", job->printer->uri,
+ PWG_JobID"=%d", job->id,
+ PWG_JobState"=%s", job_states[job->state_value - IPP_JSTATE_PENDING],
+ PWG_JobImpressionsCompleted"=%d", ippGetInteger(job->impressions, 0),
+ NULL);
+ return (1);
+ }
+
+#endif /* HAVE_ASL_H */
+
/*
* Format and write the log message...
*/
@@ -604,12 +765,26 @@ cupsdLogMessage(int level, /* I - Log level */
if ((TestConfigFile || !ErrorLog) && level <= CUPSD_LOG_WARN)
{
va_start(ap, message);
-#ifdef HAVE_VSYSLOG
- vsyslog(LOG_LPR | syslevels[level], message, ap);
+
+#ifdef HAVE_ASL_H
+ asl_object_t m; /* Log message */
+
+ m = asl_new(ASL_TYPE_MSG);
+ asl_set(m, ASL_KEY_FACILITY, "org.cups.cupsd");
+ asl_vlog(NULL, m, log_levels[level], message, ap);
+ asl_release(m);
+
+#elif defined(HAVE_SYSTEMD_SD_JOURNAL_H)
+ sd_journal_printv(log_levels[level], message, ap);
+
+#elif defined(HAVE_VSYSLOG)
+ vsyslog(LOG_LPR | log_levels[level], message, ap);
+
#else
vfprintf(stderr, message, ap);
putc('\n', stderr);
#endif /* HAVE_VSYSLOG */
+
va_end(ap);
return (1);
@@ -618,6 +793,30 @@ cupsdLogMessage(int level, /* I - Log level */
if (level > LogLevel || !ErrorLog)
return (1);
+#ifdef HAVE_ASL_H
+ if (!strcmp(ErrorLog, "syslog"))
+ {
+ asl_object_t m; /* Log message */
+
+ m = asl_new(ASL_TYPE_MSG);
+ asl_set(m, ASL_KEY_FACILITY, "org.cups.cupsd");
+
+ va_start(ap, message);
+ asl_vlog(NULL, m, log_levels[level], message, ap);
+ va_end(ap);
+
+ asl_release(m);
+ return (1);
+ }
+
+#elif defined(HAVE_SYSTEMD_SD_JOURNAL_H)
+ if (!strcmp(ErrorLog, "syslog"))
+ {
+ sd_journal_printv(log_levels[level], message, ap);
+ return (1);
+ }
+#endif /* HAVE_ASL_H */
+
/*
* Format and write the log message...
*/
@@ -831,7 +1030,70 @@ cupsdLogPage(cupsd_job_t *job, /* I - Job being printed */
*bufptr = '\0';
-#ifdef HAVE_VSYSLOG
+#ifdef HAVE_ASL_H
+ if (!strcmp(ErrorLog, "syslog"))
+ {
+ asl_object_t m; /* Log message */
+ char job_id[32], /* job-id string */
+ completed[32]; /* job-impressions-completed string */
+ static const char * const job_states[] =
+ { /* job-state strings */
+ "Pending",
+ "PendingHeld",
+ "Processing",
+ "ProcessingStopped",
+ "Canceled",
+ "Aborted",
+ "Completed"
+ };
+
+ snprintf(job_id, sizeof(job_id), "%d", job->id);
+
+ m = asl_new(ASL_TYPE_MSG);
+ asl_set(m, ASL_KEY_FACILITY, "org.cups.cupsd");
+ asl_set(m, PWG_Event, "JobStateChanged");
+ asl_set(m, PWG_ServiceURI, job->printer->uri);
+ asl_set(m, PWG_JobID, job_id);
+ asl_set(m, PWG_JobState, job_states[job->state_value - IPP_JSTATE_PENDING]);
+
+ if (job->impressions)
+ {
+ snprintf(completed, sizeof(completed), "%d", ippGetInteger(job->impressions, 0));
+ asl_set(m, PWG_JobImpressionsCompleted, completed);
+ }
+
+ asl_log(NULL, m, ASL_LEVEL_INFO, "%s", buffer);
+
+ asl_release(m);
+ return (1);
+ }
+
+#elif defined(HAVE_SYSTEMD_SD_JOURNAL_H)
+ if (!strcmp(ErrorLog, "syslog"))
+ {
+ static const char * const job_states[] =
+ { /* job-state strings */
+ "Pending",
+ "PendingHeld",
+ "Processing",
+ "ProcessingStopped",
+ "Canceled",
+ "Aborted",
+ "Completed"
+ };
+
+ sd_journal_send("MESSAGE=%s", buffer,
+ "PRIORITY=%i", LOG_INFO,
+ PWG_Event"=JobStateChanged",
+ PWG_ServiceURI"=%s", job->printer->uri,
+ PWG_JobID"=%d", job->id,
+ PWG_JobState"=%s", job_states[job->state_value - IPP_JSTATE_PENDING],
+ PWG_JobImpressionsCompleted"=%d", ippGetInteger(job->impressions, 0),
+ NULL);
+ return (1);
+ }
+
+#elif defined(HAVE_VSYSLOG)
/*
* See if we are logging pages via syslog...
*/
@@ -842,7 +1104,7 @@ cupsdLogPage(cupsd_job_t *job, /* I - Job being printed */
return (1);
}
-#endif /* HAVE_VSYSLOG */
+#endif /* HAVE_ASL_H */
/*
* Not using syslog; check the log file...
@@ -1003,7 +1265,36 @@ cupsdLogRequest(cupsd_client_t *con, /* I - Request to log */
}
}
-#ifdef HAVE_VSYSLOG
+#ifdef HAVE_ASL_H
+ if (!strcmp(ErrorLog, "syslog"))
+ {
+ asl_object_t m; /* Log message */
+
+ m = asl_new(ASL_TYPE_MSG);
+ asl_set(m, ASL_KEY_FACILITY, "org.cups.cupsd");
+
+ asl_log(NULL, m, ASL_LEVEL_INFO, "REQUEST %s - %s \"%s %s HTTP/%d.%d\" %d " CUPS_LLFMT " %s %s\n",
+ 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,
+ code, CUPS_LLCAST con->bytes,
+ con->request ?
+ ippOpString(con->request->request.op.operation_id) : "-",
+ con->response ?
+ ippErrorString(con->response->request.status.status_code) : "-");
+
+ asl_release(m);
+ return (1);
+ }
+
+#elif defined(HAVE_SYSTEMD_SD_JOURNAL_H)
+ if (!strcmp(ErrorLog, "syslog"))
+ {
+ sd_journal_print(LOG_INFO, "REQUEST %s - %s \"%s %s HTTP/%d.%d\" %d " CUPS_LLFMT " %s %s", 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, code, CUPS_LLCAST con->bytes, con->request ? ippOpString(con->request->request.op.operation_id) : "-", con->response ? ippErrorString(con->response->request.status.status_code) : "-");
+ return (1);
+ }
+
+#elif defined(HAVE_VSYSLOG)
/*
* See if we are logging accesses via syslog...
*/
@@ -1023,7 +1314,7 @@ cupsdLogRequest(cupsd_client_t *con, /* I - Request to log */
return (1);
}
-#endif /* HAVE_VSYSLOG */
+#endif /* HAVE_ASL_H */
/*
* Not using syslog; check the log file...
@@ -1081,17 +1372,37 @@ cupsdWriteErrorLog(int level, /* I - Log level */
};
-#ifdef HAVE_VSYSLOG
+#ifdef HAVE_ASL_H
+ if (!strcmp(ErrorLog, "syslog"))
+ {
+ asl_object_t m; /* Log message */
+
+ m = asl_new(ASL_TYPE_MSG);
+ asl_set(m, ASL_KEY_FACILITY, "org.cups.cupsd");
+ asl_log(NULL, m, ASL_LEVEL_INFO, "%s", message);
+
+ asl_release(m);
+ return (1);
+ }
+
+#elif defined(HAVE_SYSTEMD_SD_JOURNAL_H)
+ if (!strcmp(ErrorLog, "syslog"))
+ {
+ sd_journal_print(log_levels[level], "%s", message);
+ return (1);
+ }
+
+#elif defined(HAVE_VSYSLOG)
/*
* See if we are logging errors via syslog...
*/
if (!strcmp(ErrorLog, "syslog"))
{
- syslog(syslevels[level], "%s", message);
+ syslog(log_levels[level], "%s", message);
return (1);
}
-#endif /* HAVE_VSYSLOG */
+#endif /* HAVE_ASL_H */
/*
* Not using syslog; check the log file...
@@ -1186,5 +1497,5 @@ format_log_line(const char *message, /* I - Printf-style format string */
/*
- * End of "$Id: log.c 11920 2014-06-11 19:03:59Z msweet $".
+ * End of "$Id: log.c 12691 2015-06-04 18:00:31Z msweet $".
*/
diff --git a/scheduler/main.c b/scheduler/main.c
index 8069419a2..b1aa50375 100644
--- a/scheduler/main.c
+++ b/scheduler/main.c
@@ -1,5 +1,5 @@
/*
- * "$Id: main.c 12701 2015-06-08 18:33:44Z msweet $"
+ * "$Id: main.c 12700 2015-06-08 18:32:35Z msweet $"
*
* Main loop for the CUPS scheduler.
*
@@ -20,6 +20,12 @@
#define _MAIN_C_
#include "cupsd.h"
#include <sys/resource.h>
+#ifdef HAVE_ASL_H
+# include <asl.h>
+#elif defined(HAVE_SYSTEMD_SD_JOURNAL_H)
+# define SD_JOURNAL_SUPPRESS_LOCATION
+# include <systemd/sd-journal.h>
+#endif /* HAVE_ASL_H */
#include <syslog.h>
#include <grp.h>
@@ -396,6 +402,8 @@ main(int argc, /* I - Number of command-line args */
close(i);
}
}
+ else
+ LogStderr = cupsFileStderr();
/*
* Run in the background as needed...
@@ -728,8 +736,19 @@ main(int argc, /* I - Number of command-line args */
if (!cupsdReadConfiguration())
{
- syslog(LOG_LPR, "Unable to read configuration file \'%s\' - exiting!",
- ConfigurationFile);
+#ifdef HAVE_ASL_H
+ asl_object_t m; /* Log message */
+
+ m = asl_new(ASL_TYPE_MSG);
+ asl_set(m, ASL_KEY_FACILITY, "org.cups.cupsd");
+ asl_log(NULL, m, ASL_LEVEL_ERR, "Unable to read configuration file \"%s\" - exiting.", ConfigurationFile);
+ asl_release(m);
+#elif defined(HAVE_SYSTEMD_SD_JOURNAL_H)
+ sd_journal_print(LOG_ERR, "Unable to read configuration file \"%s\" - exiting.", ConfigurationFile);
+#else
+ syslog(LOG_LPR, "Unable to read configuration file \'%s\' - exiting.", ConfigurationFile);
+#endif /* HAVE_ASL_H */
+
break;
}
@@ -2120,14 +2139,12 @@ service_checkout(void)
/*
- * Create or remove the systemd path file based on whether there are active
+ * Create or remove the "keep-alive" file based on whether there are active
* jobs or shared printers to advertise...
*/
if (cupsArrayCount(ActiveJobs) || /* Active jobs */
-# ifdef HAVE_SYSTEMD
WebInterface || /* Web interface enabled */
-# endif /* HAVE_SYSTEMD */
(Browsing && BrowseLocalProtocols && cupsArrayCount(Printers)))
/* Printers being shared */
{
@@ -2172,5 +2189,5 @@ usage(int status) /* O - Exit status */
/*
- * End of "$Id: main.c 12701 2015-06-08 18:33:44Z msweet $".
+ * End of "$Id: main.c 12700 2015-06-08 18:32:35Z msweet $".
*/
diff --git a/scheduler/org.cups.cups-lpd.plist.in b/scheduler/org.cups.cups-lpd.plist.in
index 43eee68c1..76eb2eefd 100644
--- a/scheduler/org.cups.cups-lpd.plist.in
+++ b/scheduler/org.cups.cups-lpd.plist.in
@@ -6,10 +6,12 @@
<true/>
<key>Label</key>
<string>org.cups.cups-lpd</string>
+ <key>ProcessType</key>
+ <string>Background</string>
<key>EnableTransactions</key>
- <false/>
+ <true/>
<key>EnablePressuredExit</key>
- <false/>
+ <true/>
<key>ProgramArguments</key>
<array>
<string>/usr/libexec/cups/daemon/cups-lpd</string>
diff --git a/scheduler/org.cups.cupsd.plist b/scheduler/org.cups.cupsd.plist
index 51d28e2c2..c0755c47b 100644
--- a/scheduler/org.cups.cupsd.plist
+++ b/scheduler/org.cups.cupsd.plist
@@ -4,6 +4,8 @@
<dict>
<key>Label</key>
<string>org.cups.cupsd</string>
+ <key>ProcessType</key>
+ <string>Background</string>
<key>EnableTransactions</key>
<true/>
<key>EnablePressuredExit</key>
@@ -38,18 +40,6 @@
<key>Listeners</key>
<array>
<dict>
- <key>SockNodeName</key>
- <string>::1</string>
- <key>SockServiceName</key>
- <string>ipp</string>
- </dict>
- <dict>
- <key>SockNodeName</key>
- <string>127.0.0.1</string>
- <key>SockServiceName</key>
- <string>ipp</string>
- </dict>
- <dict>
<key>SockPathMode</key>
<integer>49663</integer>
<key>SockPathName</key>
diff --git a/scheduler/printers.c b/scheduler/printers.c
index 96f6d063f..feb44689f 100644
--- a/scheduler/printers.c
+++ b/scheduler/printers.c
@@ -1,9 +1,9 @@
/*
- * "$Id: printers.c 12463 2015-01-30 16:34:31Z msweet $"
+ * "$Id: printers.c 12722 2015-06-08 22:00:19Z msweet $"
*
* Printer routines for the CUPS scheduler.
*
- * Copyright 2007-2014 by Apple Inc.
+ * Copyright 2007-2015 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
@@ -95,11 +95,12 @@ cupsdAddPrinter(const char *name) /* I - Name of printer */
uuid, sizeof(uuid)));
cupsdSetDeviceURI(p, "file:///dev/null");
- p->state = IPP_PRINTER_STOPPED;
- p->state_time = time(NULL);
- p->accepting = 0;
- p->shared = DefaultShared;
- p->filetype = mimeAddType(MimeDatabase, "printer", name);
+ p->config_time = time(NULL);
+ p->state = IPP_PRINTER_STOPPED;
+ p->state_time = time(NULL);
+ p->accepting = 0;
+ p->shared = DefaultShared;
+ p->filetype = mimeAddType(MimeDatabase, "printer", name);
cupsdSetString(&p->job_sheets[0], "none");
cupsdSetString(&p->job_sheets[1], "none");
@@ -171,6 +172,10 @@ cupsdCreateCommonData(void)
"third-shift",
"weekend"
};
+ static const char * const features[] =/* ipp-features-supported values */
+ {
+ "subscription-object"
+ };
static const char * const versions[] =/* ipp-versions-supported values */
{
"1.0",
@@ -339,8 +344,11 @@ cupsdCreateCommonData(void)
};
static const char * const printer_settable[] =
{ /* printer-settable-attributes-supported */
+ "printer-geo-location",
"printer-info",
- "printer-location"
+ "printer-location",
+ "printer-organization",
+ "printer-organizational-unit"
};
static const char * const which_jobs[] =
{ /* which-jobs-supported values */
@@ -420,6 +428,9 @@ cupsdCreateCommonData(void)
ippAddString(CommonData, IPP_TAG_PRINTER, IPP_TAG_LANGUAGE,
"generated-natural-language-supported", NULL, DefaultLanguage);
+ /* ipp-features-supported */
+ ippAddStrings(CommonData, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "ipp-features-supported", sizeof(features) / sizeof(features[0]), NULL, features);
+
/* ipp-versions-supported */
ippAddStrings(CommonData, IPP_TAG_PRINTER, IPP_TAG_KEYWORD | IPP_TAG_COPY,
"ipp-versions-supported", sizeof(versions) / sizeof(versions[0]),
@@ -533,6 +544,9 @@ cupsdCreateCommonData(void)
ippAddInteger(CommonData, IPP_TAG_PRINTER, IPP_TAG_INTEGER,
"multiple-operation-time-out", MultipleOperationTimeout);
+ /* multiple-operation-time-out-action */
+ ippAddString(CommonData, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "multiple-operation-time-out-action", NULL, "process-job");
+
/* natural-language-configured (no IPP_TAG_COPY) */
ippAddString(CommonData, IPP_TAG_PRINTER, IPP_TAG_LANGUAGE,
"natural-language-configured", NULL, DefaultLanguage);
@@ -618,6 +632,9 @@ cupsdCreateCommonData(void)
ippAddString(CommonData, IPP_TAG_PRINTER, IPP_TAG_KEYWORD | IPP_TAG_COPY,
"pdl-override-supported", NULL, "attempted");
+ /* printer-get-attributes-supported */
+ ippAddString(CommonData, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "printer-get-attributes-supported", NULL, "document-format");
+
/* printer-op-policy-supported */
attr = ippAddStrings(CommonData, IPP_TAG_PRINTER, IPP_TAG_NAME | IPP_TAG_COPY,
"printer-op-policy-supported", cupsArrayCount(Policies),
@@ -751,6 +768,7 @@ cupsdDeletePrinter(
cupsdClearString(&p->hostname);
cupsdClearString(&p->name);
cupsdClearString(&p->location);
+ cupsdClearString(&p->geo_location);
cupsdClearString(&p->make_model);
cupsdClearString(&p->info);
cupsdClearString(&p->job_sheets[0]);
@@ -960,6 +978,21 @@ cupsdLoadAllPrinters(void)
if (value)
cupsdSetString(&p->location, value);
}
+ else if (!_cups_strcasecmp(line, "GeoLocation"))
+ {
+ if (value)
+ cupsdSetString(&p->geo_location, value);
+ }
+ else if (!_cups_strcasecmp(line, "Organization"))
+ {
+ if (value)
+ cupsdSetString(&p->organization, value);
+ }
+ else if (!_cups_strcasecmp(line, "OrganizationalUnit"))
+ {
+ if (value)
+ cupsdSetString(&p->organizational_unit, value);
+ }
else if (!_cups_strcasecmp(line, "DeviceURI"))
{
if (value)
@@ -1064,6 +1097,15 @@ cupsdLoadAllPrinters(void)
if (value)
p->state_time = atoi(value);
}
+ else if (!_cups_strcasecmp(line, "ConfigTime"))
+ {
+ /*
+ * Set the config time...
+ */
+
+ if (value)
+ p->config_time = atoi(value);
+ }
else if (!_cups_strcasecmp(line, "Accepting"))
{
/*
@@ -1214,10 +1256,17 @@ cupsdLoadAllPrinters(void)
else if (!_cups_strcasecmp(line, "ErrorPolicy"))
{
if (value)
- cupsdSetString(&p->error_policy, value);
+ {
+ if (strcmp(value, "retry-current-job") &&
+ strcmp(value, "abort-job") &&
+ strcmp(value, "retry-job") &&
+ strcmp(value, "stop-printer"))
+ cupsdLogMessage(CUPSD_LOG_ALERT, "Invalid ErrorPolicy \"%s\" on line %d or printers.conf.", ErrorPolicy, linenum);
+ else
+ cupsdSetString(&p->error_policy, value);
+ }
else
- cupsdLogMessage(CUPSD_LOG_ERROR,
- "Syntax error on line %d of printers.conf.", linenum);
+ cupsdLogMessage(CUPSD_LOG_ERROR, "Syntax error on line %d of printers.conf.", linenum);
}
else if (!_cups_strcasecmp(line, "Attribute") && value)
{
@@ -1413,9 +1462,18 @@ cupsdSaveAllPrinters(void)
if (printer->location)
cupsFilePutConf(fp, "Location", printer->location);
+ if (printer->geo_location)
+ cupsFilePutConf(fp, "GeoLocation", printer->geo_location);
+
if (printer->make_model)
cupsFilePutConf(fp, "MakeModel", printer->make_model);
+ if (printer->organization)
+ cupsFilePutConf(fp, "Organization", printer->organization);
+
+ if (printer->organizational_unit)
+ cupsFilePutConf(fp, "OrganizationalUnit", printer->organizational_unit);
+
cupsFilePutConf(fp, "DeviceURI", printer->device_uri);
if (printer->port_monitor)
@@ -1425,13 +1483,14 @@ cupsdSaveAllPrinters(void)
{
cupsFilePuts(fp, "State Stopped\n");
- if (printer->state_message)
+ if (printer->state_message[0])
cupsFilePutConf(fp, "StateMessage", printer->state_message);
}
else
cupsFilePuts(fp, "State Idle\n");
cupsFilePrintf(fp, "StateTime %d\n", (int)printer->state_time);
+ cupsFilePrintf(fp, "ConfigTime %d\n", (int)printer->config_time);
for (i = 0; i < printer->num_reasons; i ++)
if (strcmp(printer->reasons[i], "connecting-to-device") &&
@@ -1997,6 +2056,77 @@ cupsdSetPrinterAttr(
}
free(temp);
+
+ /*
+ * Update the printer-supply and printer-supply-description, as needed...
+ */
+
+ if (!strcmp(name, "marker-names"))
+ {
+ ipp_attribute_t *supply_desc = ippFindAttribute(p->attrs, "printer-supply-description", IPP_TAG_TEXT);
+ /* printer-supply-description attribute */
+
+ if (supply_desc != NULL)
+ ippDeleteAttribute(p->attrs, supply_desc);
+
+ supply_desc = ippCopyAttribute(p->attrs, attr, 0);
+ ippSetName(p->attrs, &supply_desc, "printer-supply-description");
+ ippSetValueTag(p->attrs, &supply_desc, IPP_TAG_TEXT);
+ }
+ else if (!strcmp(name, "marker-colors") || !strcmp(name, "marker-levels") || !strcmp(name, "marker-types"))
+ {
+ char buffer[256], /* printer-supply values */
+ pstype[64], /* printer-supply type value */
+ *psptr; /* Pointer into type */
+ const char *color, /* marker-colors value */
+ *type; /* marker-types value */
+ int level; /* marker-levels value */
+ ipp_attribute_t *colors = ippFindAttribute(p->attrs, "marker-colors", IPP_TAG_NAME);
+ /* marker-colors attribute */
+ ipp_attribute_t *levels = ippFindAttribute(p->attrs, "marker-levels", IPP_TAG_INTEGER);
+ /* marker-levels attribute */
+ ipp_attribute_t *types = ippFindAttribute(p->attrs, "marker-types", IPP_TAG_KEYWORD);
+ /* marker-types attribute */
+ ipp_attribute_t *supply = ippFindAttribute(p->attrs, "printer-supply", IPP_TAG_STRING);
+ /* printer-supply attribute */
+
+ if (supply != NULL)
+ {
+ ippDeleteAttribute(p->attrs, supply);
+ supply = NULL;
+ }
+
+ if (!colors || !levels || !types)
+ return;
+
+ count = ippGetCount(colors);
+ if (count != ippGetCount(levels) || count != ippGetCount(types))
+ return;
+
+ for (i = 0; i < count; i ++)
+ {
+ color = ippGetString(colors, i, NULL);
+ level = ippGetInteger(levels, i);
+ type = ippGetString(types, i, NULL);
+
+ for (psptr = pstype; *type && psptr < (pstype + sizeof(pstype) - 1); type ++)
+ if (*type == '-')
+ {
+ type ++;
+ *psptr++ = (char)toupper(*type & 255);
+ }
+ else
+ *psptr++ = *type;
+ *psptr = '\0';
+
+ snprintf(buffer, sizeof(buffer), "index=%d;class=%s;type=%s;unit=percent;maxcapacity=100;level=%d;colorantname=%s;", i + 1, strncmp(pstype, "waste", 5) ? "supplyThatIsConsumed" : "receptacleThatIsFilled", pstype, level, color);
+
+ if (!i)
+ supply = ippAddOctetString(p->attrs, IPP_TAG_PRINTER, "printer-supply", buffer, (int)strlen(buffer));
+ else
+ ippSetOctetString(p->attrs, &supply, i, buffer, (int)strlen(buffer));
+ }
+ }
}
@@ -2086,10 +2216,15 @@ cupsdSetPrinterAttrs(cupsd_printer_t *p)/* I - Printer to setup */
p->name);
ippAddString(p->attrs, IPP_TAG_PRINTER, IPP_TAG_TEXT, "printer-location",
NULL, p->location ? p->location : "");
+ if (p->geo_location)
+ ippAddString(p->attrs, IPP_TAG_PRINTER, IPP_TAG_URI, "printer-geo-location", NULL, p->geo_location);
+ else
+ ippAddOutOfBand(p->attrs, IPP_TAG_PRINTER, IPP_TAG_UNKNOWN, "printer-geo-location");
ippAddString(p->attrs, IPP_TAG_PRINTER, IPP_TAG_TEXT, "printer-info",
NULL, p->info ? p->info : "");
- ippAddString(p->attrs, IPP_TAG_PRINTER, IPP_TAG_URI, "printer-uuid", NULL,
- p->uuid);
+ ippAddString(p->attrs, IPP_TAG_PRINTER, IPP_TAG_TEXT, "printer-organization", NULL, p->organization ? p->organization : "");
+ ippAddString(p->attrs, IPP_TAG_PRINTER, IPP_TAG_TEXT, "printer-organizational-unit", NULL, p->organizational_unit ? p->organizational_unit : "");
+ ippAddString(p->attrs, IPP_TAG_PRINTER, IPP_TAG_URI, "printer-uuid", NULL, p->uuid);
if (cupsArrayCount(p->users) > 0)
{
@@ -3485,8 +3620,7 @@ add_printer_formats(cupsd_printer_t *p) /* I - Printer */
filter;
filter = (mime_filter_t *)cupsArrayNext(MimeDatabase->filters))
{
- if (filter->dst == p->filetype && filter->filter &&
- strstr(filter->filter, "PrintJobMgr"))
+ if (filter->dst == p->filetype && strstr(filter->filter, "PrintJobMgr"))
break;
}
@@ -3785,6 +3919,9 @@ load_ppd(cupsd_printer_t *p) /* I - Printer */
"pages-per-minute-color", 1);
}
+ if ((ppd_attr = ppdFindAttr(ppd, "1284DeviceId", NULL)) != NULL)
+ ippAddString(p->ppd_attrs, IPP_TAG_PRINTER, IPP_TAG_TEXT, "printer-device-id", NULL, ppd_attr->value);
+
num_qualities = 0;
if ((output_mode = ppdFindOption(ppd, "OutputMode")) != NULL)
@@ -4934,5 +5071,5 @@ write_xml_string(cups_file_t *fp, /* I - File to write to */
/*
- * End of "$Id: printers.c 12463 2015-01-30 16:34:31Z msweet $".
+ * End of "$Id: printers.c 12722 2015-06-08 22:00:19Z msweet $".
*/
diff --git a/scheduler/printers.h b/scheduler/printers.h
index c4ccf03f2..27db75057 100644
--- a/scheduler/printers.h
+++ b/scheduler/printers.h
@@ -1,5 +1,5 @@
/*
- * "$Id: printers.h 11377 2013-11-05 01:05:00Z msweet $"
+ * "$Id: printers.h 12666 2015-05-25 19:38:09Z msweet $"
*
* Printer definitions for the CUPS scheduler.
*
@@ -63,9 +63,12 @@ struct cupsd_printer_s
*uuid, /* Printer UUID */
*hostname, /* Host printer resides on */
*name, /* Printer name */
- *location, /* Location code */
+ *location, /* Location string */
+ *geo_location, /* Geographic location URI */
*make_model, /* Make and model */
*info, /* Description */
+ *organization, /* Organization name */
+ *organizational_unit, /* Organizational unit (department, etc.) */
*op_policy, /* Operation policy name */
*error_policy; /* Error policy */
cupsd_policy_t *op_policy_ptr; /* Pointer to operation policy */
@@ -77,7 +80,8 @@ struct cupsd_printer_s
char state_message[1024]; /* Printer state message */
int num_reasons; /* Number of printer-state-reasons */
char *reasons[64]; /* printer-state-reasons strings */
- time_t state_time; /* Time at this state */
+ time_t config_time, /* Time at this configuration */
+ state_time; /* Time at this state */
char *job_sheets[2]; /* Banners/job sheets */
cups_ptype_t type; /* Printer type (color, small, etc.) */
char *device_uri; /* Device URI */
@@ -190,5 +194,5 @@ extern void cupsdWritePrintcap(void);
/*
- * End of "$Id: printers.h 11377 2013-11-05 01:05:00Z msweet $".
+ * End of "$Id: printers.h 12666 2015-05-25 19:38:09Z msweet $".
*/
diff --git a/scheduler/process.c b/scheduler/process.c
index 33fcc5002..19c7472d0 100644
--- a/scheduler/process.c
+++ b/scheduler/process.c
@@ -1,5 +1,5 @@
/*
- * "$Id: process.c 12522 2015-02-17 20:01:33Z msweet $"
+ * "$Id: process.c 12521 2015-02-17 20:00:17Z msweet $"
*
* Process management routines for the CUPS scheduler.
*
@@ -890,5 +890,5 @@ cupsd_requote(char *dst, /* I - Destination buffer */
/*
- * End of "$Id: process.c 12522 2015-02-17 20:01:33Z msweet $".
+ * End of "$Id: process.c 12521 2015-02-17 20:00:17Z msweet $".
*/
diff --git a/scheduler/server.c b/scheduler/server.c
index 8b40c2155..37001de64 100644
--- a/scheduler/server.c
+++ b/scheduler/server.c
@@ -1,5 +1,5 @@
/*
- * "$Id: server.c 11576 2014-02-11 15:06:01Z msweet $"
+ * "$Id: server.c 12689 2015-06-03 19:49:54Z msweet $"
*
* Server start/stop routines for the CUPS scheduler.
*
@@ -142,21 +142,24 @@ cupsdStopServer(void)
if (AccessFile != NULL)
{
- cupsFileClose(AccessFile);
+ if (AccessFile != LogStderr)
+ cupsFileClose(AccessFile);
AccessFile = NULL;
}
if (ErrorFile != NULL)
{
- cupsFileClose(ErrorFile);
+ if (ErrorFile != LogStderr)
+ cupsFileClose(ErrorFile);
ErrorFile = NULL;
}
if (PageFile != NULL)
{
- cupsFileClose(PageFile);
+ if (PageFile != LogStderr)
+ cupsFileClose(PageFile);
PageFile = NULL;
}
@@ -180,5 +183,5 @@ cupsdStopServer(void)
/*
- * End of "$Id: server.c 11576 2014-02-11 15:06:01Z msweet $".
+ * End of "$Id: server.c 12689 2015-06-03 19:49:54Z msweet $".
*/
diff --git a/scheduler/sysman.c b/scheduler/sysman.c
index 315db7f4d..63b51a975 100644
--- a/scheduler/sysman.c
+++ b/scheduler/sysman.c
@@ -1,5 +1,5 @@
/*
- * "$Id: sysman.c 12140 2014-08-30 01:51:22Z msweet $"
+ * "$Id: sysman.c 12236 2014-11-03 04:08:41Z msweet $"
*
* System management functions for the CUPS scheduler.
*
@@ -360,7 +360,8 @@ cupsdStartSystemMonitor(void)
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; });
+ notify_register_dispatch(kIOPSNotifyPowerSource, &PSToken, dispatch_get_main_queue(), ^(int t) { (void)t;
+ ACPower = IOPSGetTimeRemainingEstimate() == kIOPSTimeRemainingUnlimited; });
}
@@ -1071,5 +1072,5 @@ sysUpdateNames(void)
/*
- * End of "$Id: sysman.c 12140 2014-08-30 01:51:22Z msweet $".
+ * End of "$Id: sysman.c 12236 2014-11-03 04:08:41Z msweet $".
*/
diff --git a/scheduler/testlpd.c b/scheduler/testlpd.c
index 8db5affd7..a614ec4d0 100644
--- a/scheduler/testlpd.c
+++ b/scheduler/testlpd.c
@@ -1,9 +1,9 @@
/*
- * "$Id: testlpd.c 11558 2014-02-06 18:33:34Z msweet $"
+ * "$Id: testlpd.c 12644 2015-05-19 21:22:35Z msweet $"
*
* cups-lpd test program for CUPS.
*
- * Copyright 2007-2014 by Apple Inc.
+ * Copyright 2007-2015 by Apple Inc.
* Copyright 2006 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
@@ -447,7 +447,7 @@ status_long(int outfd, /* I - Command file descriptor */
* Send the "send short status" command...
*/
- if (args)
+ if (args[0])
snprintf(command, sizeof(command), "\004%s %s\n", dest, args[0]);
else
snprintf(command, sizeof(command), "\004%s\n", dest);
@@ -490,7 +490,7 @@ status_short(int outfd, /* I - Command file descriptor */
* Send the "send short status" command...
*/
- if (args)
+ if (args[0])
snprintf(command, sizeof(command), "\003%s %s\n", dest, args[0]);
else
snprintf(command, sizeof(command), "\003%s\n", dest);
@@ -535,5 +535,5 @@ usage(void)
/*
- * End of "$Id: testlpd.c 11558 2014-02-06 18:33:34Z msweet $".
+ * End of "$Id: testlpd.c 12644 2015-05-19 21:22:35Z msweet $".
*/
diff --git a/scheduler/type.c b/scheduler/type.c
index 2bfaf719b..68ed07e33 100644
--- a/scheduler/type.c
+++ b/scheduler/type.c
@@ -1,5 +1,5 @@
/*
- * "$Id: type.c 12578 2015-03-30 19:07:29Z msweet $"
+ * "$Id: type.c 12577 2015-03-30 19:07:17Z msweet $"
*
* MIME typing routines for CUPS.
*
@@ -1279,5 +1279,5 @@ mime_patmatch(const char *s, /* I - String to match against */
/*
- * End of "$Id: type.c 12578 2015-03-30 19:07:29Z msweet $".
+ * End of "$Id: type.c 12577 2015-03-30 19:07:17Z msweet $".
*/
diff --git a/systemv/cancel.c b/systemv/cancel.c
index dbe5e70be..388110246 100644
--- a/systemv/cancel.c
+++ b/systemv/cancel.c
@@ -1,5 +1,5 @@
/*
- * "$Id: cancel.c 12248 2014-11-12 16:32:57Z msweet $"
+ * "$Id: cancel.c 12247 2014-11-12 16:23:39Z msweet $"
*
* "cancel" command for CUPS.
*
@@ -383,5 +383,5 @@ main(int argc, /* I - Number of command-line arguments */
/*
- * End of "$Id: cancel.c 12248 2014-11-12 16:32:57Z msweet $".
+ * End of "$Id: cancel.c 12247 2014-11-12 16:23:39Z msweet $".
*/
diff --git a/systemv/cupstestppd.c b/systemv/cupstestppd.c
index 94d67c74c..9c6be592c 100644
--- a/systemv/cupstestppd.c
+++ b/systemv/cupstestppd.c
@@ -1,5 +1,5 @@
/*
- * "$Id: cupstestppd.c 12412 2015-01-19 15:18:02Z msweet $"
+ * "$Id: cupstestppd.c 12583 2015-04-03 00:33:05Z msweet $"
*
* PPD test program for CUPS.
*
@@ -2371,8 +2371,40 @@ check_filters(ppd_file_t *ppd, /* I - PPD file */
if (!warn)
errors ++;
+
+ continue;
}
- else if (strcmp(program, "-"))
+
+ if (!strncmp(program, "maxsize(", 8))
+ {
+ char *mptr; /* Pointer into maxsize(nnnn) program */
+
+ strtoll(program + 8, &mptr, 10);
+
+ if (*mptr != ')')
+ {
+ if (!warn && !errors && !verbose)
+ _cupsLangPuts(stdout, _(" FAIL"));
+
+ if (verbose >= 0)
+ _cupsLangPrintf(stdout,
+ _(" %s Bad cupsFilter value \"%s\"."),
+ prefix, attr->value);
+
+ if (!warn)
+ errors ++;
+
+ continue;
+ }
+
+ mptr ++;
+ while (_cups_isspace(*mptr))
+ mptr ++;
+
+ _cups_strcpy(program, mptr);
+ }
+
+ if (strcmp(program, "-"))
{
if (program[0] == '/')
snprintf(pathprog, sizeof(pathprog), "%s%s", root, program);
@@ -2457,8 +2489,40 @@ check_filters(ppd_file_t *ppd, /* I - PPD file */
if (!warn)
errors ++;
+
+ continue;
}
- else if (strcmp(program, "-"))
+
+ if (!strncmp(program, "maxsize(", 8))
+ {
+ char *mptr; /* Pointer into maxsize(nnnn) program */
+
+ strtoll(program + 8, &mptr, 10);
+
+ if (*mptr != ')')
+ {
+ if (!warn && !errors && !verbose)
+ _cupsLangPuts(stdout, _(" FAIL"));
+
+ if (verbose >= 0)
+ _cupsLangPrintf(stdout,
+ _(" %s Bad cupsFilter2 value \"%s\"."),
+ prefix, attr->value);
+
+ if (!warn)
+ errors ++;
+
+ continue;
+ }
+
+ mptr ++;
+ while (_cups_isspace(*mptr))
+ mptr ++;
+
+ _cups_strcpy(program, mptr);
+ }
+
+ if (strcmp(program, "-"))
{
if (strncmp(program, "maxsize(", 8) &&
(ptr = strchr(program + 8, ')')) != NULL)
@@ -3972,5 +4036,5 @@ valid_utf8(const char *s) /* I - String to check */
/*
- * End of "$Id: cupstestppd.c 12412 2015-01-19 15:18:02Z msweet $".
+ * End of "$Id: cupstestppd.c 12583 2015-04-03 00:33:05Z msweet $".
*/
diff --git a/systemv/lpadmin.c b/systemv/lpadmin.c
index 1f6f9da19..c181d2bdb 100644
--- a/systemv/lpadmin.c
+++ b/systemv/lpadmin.c
@@ -1,5 +1,5 @@
/*
- * "$Id: lpadmin.c 12604 2015-05-06 01:43:05Z msweet $"
+ * "$Id: lpadmin.c 12603 2015-05-06 01:42:51Z msweet $"
*
* "lpadmin" command for CUPS.
*
@@ -17,6 +17,8 @@
* Include necessary headers...
*/
+#define _CUPS_NO_DEPRECATED
+#define _PPD_DEPRECATED
#include <cups/cups-private.h>
@@ -32,6 +34,7 @@ static int delete_printer_from_class(http_t *http, char *printer,
static int delete_printer_option(http_t *http, char *printer,
char *option);
static int enable_printer(http_t *http, char *printer);
+static char *get_printer_ppd(const char *uri, char *buffer, size_t bufsize);
static cups_ptype_t get_printer_type(http_t *http, char *printer, char *uri,
size_t urisize);
static int set_printer_options(http_t *http, char *printer,
@@ -55,7 +58,11 @@ main(int argc, /* I - Number of command-line arguments */
*val; /* Pointer to allow/deny value */
int num_options; /* Number of options */
cups_option_t *options; /* Options */
- char *file; /* New PPD file/interface script */
+ char *file, /* New PPD file/interface script */
+ evefile[1024] = "";
+ /* IPP Everywhere PPD */
+ const char *ppd_name, /* ppd-name value */
+ *device_uri; /* device-uri value */
_cupsSetLocale(argv);
@@ -73,8 +80,7 @@ main(int argc, /* I - Number of command-line arguments */
case 'c' : /* Add printer to class */
if (!http)
{
- http = httpConnectEncrypt(cupsServer(), ippPort(),
- cupsEncryption());
+ http = httpConnect2(cupsServer(), ippPort(), NULL, AF_UNSPEC, cupsEncryption(), 1, 30000, NULL);
if (http == NULL)
{
@@ -126,8 +132,7 @@ main(int argc, /* I - Number of command-line arguments */
case 'd' : /* Set as default destination */
if (!http)
{
- http = httpConnectEncrypt(cupsServer(), ippPort(),
- cupsEncryption());
+ http = httpConnect2(cupsServer(), ippPort(), NULL, AF_UNSPEC, cupsEncryption(), 1, 30000, NULL);
if (http == NULL)
{
@@ -217,10 +222,10 @@ main(int argc, /* I - Number of command-line arguments */
if (printer == NULL)
{
#ifdef HAVE_SSL
- cupsSetEncryption(HTTP_ENCRYPT_REQUIRED);
+ cupsSetEncryption(HTTP_ENCRYPTION_REQUIRED);
if (http)
- httpEncryption(http, HTTP_ENCRYPT_REQUIRED);
+ httpEncryption(http, HTTP_ENCRYPTION_REQUIRED);
#else
_cupsLangPrintf(stderr, _("%s: Sorry, no encryption support."),
argv[0]);
@@ -230,8 +235,7 @@ main(int argc, /* I - Number of command-line arguments */
if (!http)
{
- http = httpConnectEncrypt(cupsServer(), ippPort(),
- cupsEncryption());
+ http = httpConnect2(cupsServer(), ippPort(), NULL, AF_UNSPEC, cupsEncryption(), 1, 30000, NULL);
if (http == NULL)
{
@@ -316,8 +320,7 @@ main(int argc, /* I - Number of command-line arguments */
case 'r' : /* Remove printer from class */
if (!http)
{
- http = httpConnectEncrypt(cupsServer(), ippPort(),
- cupsEncryption());
+ http = httpConnect2(cupsServer(), ippPort(), NULL, AF_UNSPEC, cupsEncryption(), 1, 30000, NULL);
if (http == NULL)
{
@@ -370,8 +373,7 @@ main(int argc, /* I - Number of command-line arguments */
case 'R' : /* Remove option */
if (!http)
{
- http = httpConnectEncrypt(cupsServer(), ippPort(),
- cupsEncryption());
+ http = httpConnect2(cupsServer(), ippPort(), NULL, AF_UNSPEC, cupsEncryption(), 1, 30000, NULL);
if (http == NULL)
{
@@ -487,8 +489,7 @@ main(int argc, /* I - Number of command-line arguments */
case 'x' : /* Delete a printer */
if (!http)
{
- http = httpConnectEncrypt(cupsServer(), ippPort(),
- cupsEncryption());
+ http = httpConnect2(cupsServer(), ippPort(), NULL, AF_UNSPEC, cupsEncryption(), 1, 30000, NULL);
if (http == NULL)
{
@@ -621,11 +622,19 @@ main(int argc, /* I - Number of command-line arguments */
* Set options as needed...
*/
+ if ((ppd_name = cupsGetOption("ppd-name", num_options, options)) != NULL && !strcmp(ppd_name, "everywhere") && (device_uri = cupsGetOption("device-uri", num_options, options)) != NULL)
+ {
+ if ((file = get_printer_ppd(device_uri, evefile, sizeof(evefile))) == NULL)
+ return (1);
+
+ num_options = cupsRemoveOption("ppd-name", num_options, &options);
+ }
+
if (num_options || file)
{
if (!http)
{
- http = httpConnectEncrypt(cupsServer(), ippPort(), cupsEncryption());
+ http = httpConnect2(cupsServer(), ippPort(), NULL, AF_UNSPEC, cupsEncryption(), 1, 30000, NULL);
if (http == NULL)
{
@@ -648,6 +657,9 @@ main(int argc, /* I - Number of command-line arguments */
return (1);
}
+ if (evefile[0])
+ unlink(evefile);
+
if (printer == NULL)
{
_cupsLangPuts(stdout,
@@ -692,7 +704,7 @@ add_printer_to_class(http_t *http, /* I - Server connection */
printer, pclass));
/*
- * Build an IPP_GET_PRINTER_ATTRIBUTES request, which requires the following
+ * Build an IPP_OP_GET_PRINTER_ATTRIBUTES request, which requires the following
* attributes:
*
* attributes-charset
@@ -701,7 +713,7 @@ add_printer_to_class(http_t *http, /* I - Server connection */
* requesting-user-name
*/
- request = ippNewRequest(IPP_GET_PRINTER_ATTRIBUTES);
+ request = ippNewRequest(IPP_OP_GET_PRINTER_ATTRIBUTES);
httpAssembleURIf(HTTP_URI_CODING_ALL, uri, sizeof(uri), "ipp", NULL,
"localhost", 0, "/classes/%s", pclass);
@@ -717,7 +729,7 @@ add_printer_to_class(http_t *http, /* I - Server connection */
response = cupsDoRequest(http, request, "/");
/*
- * Build a CUPS_ADD_MODIFY_CLASS request, which requires the following
+ * Build a CUPS-Add-Modify-Class request, which requires the following
* attributes:
*
* attributes-charset
@@ -727,7 +739,7 @@ add_printer_to_class(http_t *http, /* I - Server connection */
* member-uris
*/
- request = ippNewRequest(CUPS_ADD_MODIFY_CLASS);
+ request = ippNewRequest(IPP_OP_CUPS_ADD_MODIFY_CLASS);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI,
"printer-uri", NULL, uri);
@@ -786,7 +798,7 @@ add_printer_to_class(http_t *http, /* I - Server connection */
ippDelete(response);
ippDelete(cupsDoRequest(http, request, "/admin/"));
- if (cupsLastError() > IPP_OK_CONFLICT)
+ if (cupsLastError() > IPP_STATUS_OK_CONFLICTING)
{
_cupsLangPrintf(stderr, _("%s: %s"), "lpadmin", cupsLastErrorString());
@@ -812,7 +824,7 @@ default_printer(http_t *http, /* I - Server connection */
DEBUG_printf(("default_printer(%p, \"%s\")\n", http, printer));
/*
- * Build a CUPS_SET_DEFAULT request, which requires the following
+ * Build a CUPS-Set-Default request, which requires the following
* attributes:
*
* attributes-charset
@@ -824,7 +836,7 @@ default_printer(http_t *http, /* I - Server connection */
httpAssembleURIf(HTTP_URI_CODING_ALL, uri, sizeof(uri), "ipp", NULL,
"localhost", 0, "/printers/%s", printer);
- request = ippNewRequest(CUPS_SET_DEFAULT);
+ request = ippNewRequest(IPP_OP_CUPS_SET_DEFAULT);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI,
"printer-uri", NULL, uri);
@@ -837,7 +849,7 @@ default_printer(http_t *http, /* I - Server connection */
ippDelete(cupsDoRequest(http, request, "/admin/"));
- if (cupsLastError() > IPP_OK_CONFLICT)
+ if (cupsLastError() > IPP_STATUS_OK_CONFLICTING)
{
_cupsLangPrintf(stderr, _("%s: %s"), "lpadmin", cupsLastErrorString());
@@ -863,7 +875,7 @@ delete_printer(http_t *http, /* I - Server connection */
DEBUG_printf(("delete_printer(%p, \"%s\")\n", http, printer));
/*
- * Build a CUPS_DELETE_PRINTER request, which requires the following
+ * Build a CUPS-Delete-Printer request, which requires the following
* attributes:
*
* attributes-charset
@@ -872,7 +884,7 @@ delete_printer(http_t *http, /* I - Server connection */
* requesting-user-name
*/
- request = ippNewRequest(CUPS_DELETE_PRINTER);
+ request = ippNewRequest(IPP_OP_CUPS_DELETE_PRINTER);
httpAssembleURIf(HTTP_URI_CODING_ALL, uri, sizeof(uri), "ipp", NULL,
"localhost", 0, "/printers/%s", printer);
@@ -887,7 +899,7 @@ delete_printer(http_t *http, /* I - Server connection */
ippDelete(cupsDoRequest(http, request, "/admin/"));
- if (cupsLastError() > IPP_OK_CONFLICT)
+ if (cupsLastError() > IPP_STATUS_OK_CONFLICTING)
{
_cupsLangPrintf(stderr, _("%s: %s"), "lpadmin", cupsLastErrorString());
@@ -920,7 +932,7 @@ delete_printer_from_class(
printer, pclass));
/*
- * Build an IPP_GET_PRINTER_ATTRIBUTES request, which requires the following
+ * Build an IPP_OP_GET_PRINTER_ATTRIBUTES request, which requires the following
* attributes:
*
* attributes-charset
@@ -929,7 +941,7 @@ delete_printer_from_class(
* requesting-user-name
*/
- request = ippNewRequest(IPP_GET_PRINTER_ATTRIBUTES);
+ request = ippNewRequest(IPP_OP_GET_PRINTER_ATTRIBUTES);
httpAssembleURIf(HTTP_URI_CODING_ALL, uri, sizeof(uri), "ipp", NULL,
"localhost", 0, "/classes/%s", pclass);
@@ -943,7 +955,7 @@ delete_printer_from_class(
*/
if ((response = cupsDoRequest(http, request, "/classes/")) == NULL ||
- response->request.status.status_code == IPP_NOT_FOUND)
+ response->request.status.status_code == IPP_STATUS_ERROR_NOT_FOUND)
{
_cupsLangPrintf(stderr, _("%s: %s"), "lpadmin", cupsLastErrorString());
@@ -983,7 +995,7 @@ delete_printer_from_class(
if (members->num_values == 1)
{
/*
- * Build a CUPS_DELETE_CLASS request, which requires the following
+ * Build a CUPS-Delete-Class request, which requires the following
* attributes:
*
* attributes-charset
@@ -992,7 +1004,7 @@ delete_printer_from_class(
* requesting-user-name
*/
- request = ippNewRequest(CUPS_DELETE_CLASS);
+ request = ippNewRequest(IPP_OP_CUPS_DELETE_CLASS);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI,
"printer-uri", NULL, uri);
@@ -1002,7 +1014,7 @@ delete_printer_from_class(
else
{
/*
- * Build a CUPS_ADD_MODIFY_CLASS request, which requires the following
+ * Build a IPP_OP_CUPS_ADD_MODIFY_CLASS request, which requires the following
* attributes:
*
* attributes-charset
@@ -1012,7 +1024,7 @@ delete_printer_from_class(
* member-uris
*/
- request = ippNewRequest(CUPS_ADD_MODIFY_CLASS);
+ request = ippNewRequest(IPP_OP_CUPS_ADD_MODIFY_CLASS);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI,
"printer-uri", NULL, uri);
@@ -1041,7 +1053,7 @@ delete_printer_from_class(
ippDelete(cupsDoRequest(http, request, "/admin/"));
- if (cupsLastError() > IPP_OK_CONFLICT)
+ if (cupsLastError() > IPP_STATUS_OK_CONFLICTING)
{
_cupsLangPrintf(stderr, _("%s: %s"), "lpadmin", cupsLastErrorString());
@@ -1066,7 +1078,7 @@ delete_printer_option(http_t *http, /* I - Server connection */
/*
- * Build a CUPS_ADD_MODIFY_PRINTER or CUPS_ADD_MODIFY_CLASS request, which
+ * Build a IPP_OP_CUPS_ADD_MODIFY_PRINTER or IPP_OP_CUPS_ADD_MODIFY_CLASS request, which
* requires the following attributes:
*
* attributes-charset
@@ -1077,9 +1089,9 @@ delete_printer_option(http_t *http, /* I - Server connection */
*/
if (get_printer_type(http, printer, uri, sizeof(uri)) & CUPS_PRINTER_CLASS)
- request = ippNewRequest(CUPS_ADD_MODIFY_CLASS);
+ request = ippNewRequest(IPP_OP_CUPS_ADD_MODIFY_CLASS);
else
- request = ippNewRequest(CUPS_ADD_MODIFY_PRINTER);
+ request = ippNewRequest(IPP_OP_CUPS_ADD_MODIFY_PRINTER);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI,
"printer-uri", NULL, uri);
@@ -1093,7 +1105,7 @@ delete_printer_option(http_t *http, /* I - Server connection */
ippDelete(cupsDoRequest(http, request, "/admin/"));
- if (cupsLastError() > IPP_OK_CONFLICT)
+ if (cupsLastError() > IPP_STATUS_OK_CONFLICTING)
{
_cupsLangPrintf(stderr, _("%s: %s"), "lpadmin", cupsLastErrorString());
@@ -1119,7 +1131,7 @@ enable_printer(http_t *http, /* I - Server connection */
DEBUG_printf(("enable_printer(%p, \"%s\")\n", http, printer));
/*
- * Build a CUPS_ADD_MODIFY_PRINTER or CUPS_ADD_MODIFY_CLASS request, which
+ * Build a IPP_OP_CUPS_ADD_MODIFY_PRINTER or IPP_OP_CUPS_ADD_MODIFY_CLASS request, which
* require the following attributes:
*
* attributes-charset
@@ -1131,16 +1143,16 @@ enable_printer(http_t *http, /* I - Server connection */
*/
if (get_printer_type(http, printer, uri, sizeof(uri)) & CUPS_PRINTER_CLASS)
- request = ippNewRequest(CUPS_ADD_MODIFY_CLASS);
+ request = ippNewRequest(IPP_OP_CUPS_ADD_MODIFY_CLASS);
else
- request = ippNewRequest(CUPS_ADD_MODIFY_PRINTER);
+ request = ippNewRequest(IPP_OP_CUPS_ADD_MODIFY_PRINTER);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI,
"printer-uri", NULL, uri);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME,
"requesting-user-name", NULL, cupsUser());
ippAddInteger(request, IPP_TAG_PRINTER, IPP_TAG_ENUM, "printer-state",
- IPP_PRINTER_IDLE);
+ IPP_PSTATE_IDLE);
ippAddBoolean(request, IPP_TAG_PRINTER, "printer-is-accepting-jobs", 1);
/*
@@ -1149,7 +1161,7 @@ enable_printer(http_t *http, /* I - Server connection */
ippDelete(cupsDoRequest(http, request, "/admin/"));
- if (cupsLastError() > IPP_OK_CONFLICT)
+ if (cupsLastError() > IPP_STATUS_OK_CONFLICTING)
{
_cupsLangPrintf(stderr, _("%s: %s"), "lpadmin", cupsLastErrorString());
@@ -1161,6 +1173,79 @@ enable_printer(http_t *http, /* I - Server connection */
/*
+ * 'get_printer_ppd()' - Get an IPP Everywhere PPD file for the given URI.
+ */
+
+static char * /* O - Filename or NULL */
+get_printer_ppd(const char *uri, /* I - Printer URI */
+ char *buffer, /* I - Filename buffer */
+ size_t bufsize) /* I - Size of filename buffer */
+{
+ http_t *http; /* Connection to printer */
+ ipp_t *request, /* Get-Printer-Attributes request */
+ *response; /* Get-Printer-Attributes response */
+ char resolved[1024], /* Resolved URI */
+ scheme[32], /* URI scheme */
+ userpass[256], /* Username:password */
+ host[256], /* Hostname */
+ resource[256]; /* Resource path */
+ int port; /* Port number */
+
+
+ /*
+ * Connect to the printer...
+ */
+
+ if (strstr(uri, "._tcp"))
+ {
+ /*
+ * Resolve URI...
+ */
+
+ if (!_httpResolveURI(uri, resolved, sizeof(resolved), _HTTP_RESOLVE_DEFAULT, NULL, NULL))
+ {
+ _cupsLangPrintf(stderr, _("%s: Unable to resolve \"%s\"."), "lpadmin", uri);
+ return (NULL);
+ }
+
+ uri = resolved;
+ }
+
+ if (httpSeparateURI(HTTP_URI_CODING_ALL, uri, scheme, sizeof(scheme), userpass, sizeof(userpass), host, sizeof(host), &port, resource, sizeof(resource)) < HTTP_URI_STATUS_OK)
+ {
+ _cupsLangPrintf(stderr, _("%s: Bad printer URI \"%s\"."), "lpadmin", uri);
+ return (NULL);
+ }
+
+ http = httpConnect2(host, port, NULL, AF_UNSPEC, !strcmp(scheme, "ipps") ? HTTP_ENCRYPTION_ALWAYS : HTTP_ENCRYPTION_IF_REQUESTED, 1, 30000, NULL);
+ if (!http)
+ {
+ _cupsLangPrintf(stderr, _("%s: Unable to connect to \"%s:%d\": %s"), "lpadmin", host, port, cupsLastErrorString());
+ return (NULL);
+ }
+
+ /*
+ * Send a Get-Printer-Attributes request...
+ */
+
+ request = ippNewRequest(IPP_OP_GET_PRINTER_ATTRIBUTES);
+ ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri", NULL, uri);
+ response = cupsDoRequest(http, request, resource);
+
+ if (!_ppdCreateFromIPP(buffer, bufsize, response))
+ _cupsLangPrintf(stderr, _("%s: Unable to create PPD file: %s"), "lpadmin", strerror(errno));
+
+ ippDelete(response);
+ httpClose(http);
+
+ if (buffer[0])
+ return (buffer);
+ else
+ return (NULL);
+}
+
+
+/*
* 'get_printer_type()' - Determine the printer type and URI.
*/
@@ -1189,7 +1274,7 @@ get_printer_type(http_t *http, /* I - Server connection */
httpAssembleURIf(HTTP_URI_CODING_ALL, uri, (int)urisize, "ipp", NULL, "localhost", ippPort(), "/printers/%s", printer);
- request = ippNewRequest(IPP_GET_PRINTER_ATTRIBUTES);
+ 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_KEYWORD,
@@ -1257,8 +1342,8 @@ set_printer_options(
options, file));
/*
- * Build a CUPS_ADD_MODIFY_PRINTER or CUPS_ADD_MODIFY_CLASS request, which
- * requires the following attributes:
+ * Build a CUPS-Add-Modify-Printer or CUPS-Add-Modify-Class request,
+ * which requires the following attributes:
*
* attributes-charset
* attributes-natural-language
@@ -1268,32 +1353,17 @@ set_printer_options(
*/
if (get_printer_type(http, printer, uri, sizeof(uri)) & CUPS_PRINTER_CLASS)
- request = ippNewRequest(CUPS_ADD_MODIFY_CLASS);
+ request = ippNewRequest(IPP_OP_CUPS_ADD_MODIFY_CLASS);
else
- request = ippNewRequest(CUPS_ADD_MODIFY_PRINTER);
+ request = ippNewRequest(IPP_OP_CUPS_ADD_MODIFY_PRINTER);
- ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI,
- "printer-uri", NULL, uri);
- ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME,
- "requesting-user-name", NULL, cupsUser());
+ ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri", NULL, uri);
+ ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "requesting-user-name", NULL, cupsUser());
/*
* Add the options...
*/
- cupsEncodeOptions2(request, num_options, options, IPP_TAG_OPERATION);
- cupsEncodeOptions2(request, num_options, options, IPP_TAG_PRINTER);
-
- if ((protocol = cupsGetOption("protocol", num_options, options)) != NULL)
- {
- if (!_cups_strcasecmp(protocol, "bcp"))
- ippAddString(request, IPP_TAG_PRINTER, IPP_TAG_NAME, "port-monitor",
- NULL, "bcp");
- else if (!_cups_strcasecmp(protocol, "tbcp"))
- ippAddString(request, IPP_TAG_PRINTER, IPP_TAG_NAME, "port-monitor",
- NULL, "tbcp");
- }
-
if (file)
ppdfile = file;
else if ((ppdname = cupsGetOption("ppd-name", num_options, options)) != NULL && strcmp(ppdname, "raw") && num_options > 1)
@@ -1316,12 +1386,25 @@ set_printer_options(
options = temp;
}
}
- else if (request->request.op.operation_id == CUPS_ADD_MODIFY_PRINTER)
+ else if (request->request.op.operation_id == IPP_OP_CUPS_ADD_MODIFY_PRINTER)
ppdfile = cupsGetPPD(printer);
else
ppdfile = NULL;
- if (ppdfile != NULL)
+ cupsEncodeOptions2(request, num_options, options, IPP_TAG_OPERATION);
+ cupsEncodeOptions2(request, num_options, options, IPP_TAG_PRINTER);
+
+ if ((protocol = cupsGetOption("protocol", num_options, options)) != NULL)
+ {
+ if (!_cups_strcasecmp(protocol, "bcp"))
+ ippAddString(request, IPP_TAG_PRINTER, IPP_TAG_NAME, "port-monitor",
+ NULL, "bcp");
+ else if (!_cups_strcasecmp(protocol, "tbcp"))
+ ippAddString(request, IPP_TAG_PRINTER, IPP_TAG_NAME, "port-monitor",
+ NULL, "tbcp");
+ }
+
+ if (ppdfile)
{
/*
* Set default options in the PPD file...
@@ -1493,7 +1576,7 @@ set_printer_options(
* Check the response...
*/
- if (cupsLastError() > IPP_OK_CONFLICT)
+ if (cupsLastError() > IPP_STATUS_OK_CONFLICTING)
{
_cupsLangPrintf(stderr, _("%s: %s"), "lpadmin", cupsLastErrorString());
@@ -1534,5 +1617,5 @@ validate_name(const char *name) /* I - Name to check */
/*
- * End of "$Id: lpadmin.c 12604 2015-05-06 01:43:05Z msweet $".
+ * End of "$Id: lpadmin.c 12603 2015-05-06 01:42:51Z msweet $".
*/
diff --git a/templates/de/help-trailer.tmpl b/templates/de/help-trailer.tmpl
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/templates/de/help-trailer.tmpl
diff --git a/templates/ru/help-trailer.tmpl b/templates/ru/help-trailer.tmpl
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/templates/ru/help-trailer.tmpl
diff --git a/test/5.1-lpadmin.sh b/test/5.1-lpadmin.sh
index bffe24b74..c6158da05 100644
--- a/test/5.1-lpadmin.sh
+++ b/test/5.1-lpadmin.sh
@@ -1,6 +1,6 @@
#!/bin/sh
#
-# "$Id: 5.1-lpadmin.sh 12394 2014-12-19 15:33:36Z msweet $"
+# "$Id: 5.1-lpadmin.sh 12393 2014-12-19 15:33:22Z msweet $"
#
# Test the lpadmin command.
#
@@ -68,5 +68,5 @@ fi
echo ""
#
-# End of "$Id: 5.1-lpadmin.sh 12394 2014-12-19 15:33:36Z msweet $".
+# End of "$Id: 5.1-lpadmin.sh 12393 2014-12-19 15:33:22Z msweet $".
#
diff --git a/test/5.4-lpstat.sh b/test/5.4-lpstat.sh
index b92df0b89..9d9a182ca 100644
--- a/test/5.4-lpstat.sh
+++ b/test/5.4-lpstat.sh
@@ -1,6 +1,6 @@
#!/bin/sh
#
-# "$Id: 5.4-lpstat.sh 12491 2015-02-06 18:46:09Z msweet $"
+# "$Id: 5.4-lpstat.sh 12490 2015-02-06 18:45:48Z msweet $"
#
# Test the lpstat command.
#
@@ -39,5 +39,5 @@ fi
echo ""
#
-# End of "$Id: 5.4-lpstat.sh 12491 2015-02-06 18:46:09Z msweet $".
+# End of "$Id: 5.4-lpstat.sh 12490 2015-02-06 18:45:48Z msweet $".
#
diff --git a/test/Dependencies b/test/Dependencies
index 8405117d2..e2822d073 100644
--- a/test/Dependencies
+++ b/test/Dependencies
@@ -5,9 +5,17 @@ ippfind.o: ippfind.c ../cups/cups-private.h ../cups/string-private.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
-ippserver.o: ippserver.c ../cups/cups.h ../cups/file.h \
+ippinfra.o: ippinfra.c ../config.h ../cups/cups.h ../cups/file.h \
../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
- ../cups/language.h ../cups/pwg.h ../config.h ../cups/thread-private.h
+ ../cups/language.h ../cups/pwg.h ../cups/string-private.h \
+ ../cups/thread-private.h
+ippproxy.o: ippproxy.c ../cups/cups.h ../cups/file.h ../cups/versioning.h \
+ ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/language.h \
+ ../cups/pwg.h
+ippserver.o: ippserver.c ../config.h ../cups/cups.h ../cups/file.h \
+ ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
+ ../cups/language.h ../cups/pwg.h ../cups/string-private.h \
+ ../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 \
diff --git a/test/Makefile b/test/Makefile
index cda505d31..01af7cc32 100644
--- a/test/Makefile
+++ b/test/Makefile
@@ -1,9 +1,9 @@
#
-# "$Id: Makefile 12415 2015-01-21 00:03:08Z msweet $"
+# "$Id: Makefile 12414 2015-01-21 00:02:04Z msweet $"
#
# IPP test makefile 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
@@ -54,6 +54,8 @@ TESTFILES = \
validate-job.test
OBJS = \
ippfind.o \
+ ippinfra.o \
+ ippproxy.o \
ippserver.o \
ipptool.o \
xmltotest.o
@@ -90,7 +92,7 @@ unittests:
#
clean:
- $(RM) $(TARGETS) $(OBJS) ippfind-static
+ $(RM) $(TARGETS) $(OBJS) ippfind-static ippinfra ippinfra-shared ippproxy ippproxy-shared ippserver-shared
#
@@ -185,6 +187,44 @@ ippfind: ippfind.o ../cups/$(LIBCUPS) ../cups/$(LIBCUPSSTATIC)
#
+# ippinfra
+#
+
+ippinfra: ippinfra.o ../cups/$(LIBCUPSSTATIC)
+ echo Linking $@...
+ $(CC) $(LDFLAGS) -o $@ ippinfra.o ../cups/$(LIBCUPSSTATIC) \
+ $(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) $(COMMONLIBS) $(LIBZ)
+
+
+#
+# ippinfra-shared
+#
+
+ippinfra-shared: ippinfra.o ../cups/$(LIBCUPS)
+ echo Linking $@...
+ $(CC) $(LDFLAGS) -o $@ ippinfra.o $(LIBS)
+
+
+#
+# ippproxy
+#
+
+ippproxy: ippproxy.o ../cups/$(LIBCUPSSTATIC)
+ echo Linking $@...
+ $(CC) $(LDFLAGS) -o $@ ippproxy.o ../cups/$(LIBCUPSSTATIC) \
+ $(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) $(COMMONLIBS) $(LIBZ)
+
+
+#
+# ippproxy-shared
+#
+
+ippproxy-shared: ippproxy.o ../cups/$(LIBCUPS)
+ echo Linking $@...
+ $(CC) $(LDFLAGS) -o $@ ippproxy.o $(LIBS)
+
+
+#
# ippserver
#
@@ -241,5 +281,5 @@ include Dependencies
#
-# End of "$Id: Makefile 12415 2015-01-21 00:03:08Z msweet $".
+# End of "$Id: Makefile 12414 2015-01-21 00:02:04Z msweet $".
#
diff --git a/test/ipp-1.1.test b/test/ipp-1.1.test
index 35117c09d..0d4c64634 100644
--- a/test/ipp-1.1.test
+++ b/test/ipp-1.1.test
@@ -1,5 +1,5 @@
#
-# "$Id: ipp-1.1.test 12663 2015-05-25 14:32:17Z msweet $"
+# "$Id: ipp-1.1.test 12661 2015-05-25 14:30:52Z msweet $"
#
# IPP/1.1 test suite.
#
@@ -2346,5 +2346,5 @@ DEFINE IPP_URI_SCHEME "/^ipps?://.+$$/"
#
-# End of "$Id: ipp-1.1.test 12663 2015-05-25 14:32:17Z msweet $".
+# End of "$Id: ipp-1.1.test 12661 2015-05-25 14:30:52Z msweet $".
#
diff --git a/test/ippfind.c b/test/ippfind.c
index 109944417..78b608ecd 100644
--- a/test/ippfind.c
+++ b/test/ippfind.c
@@ -1,5 +1,5 @@
/*
- * "$Id: ippfind.c 12639 2015-05-19 02:36:30Z msweet $"
+ * "$Id: ippfind.c 12638 2015-05-19 02:36:15Z msweet $"
*
* Utility to find IPP printers via Bonjour/DNS-SD and optionally run
* commands such as IPP and Bonjour conformance tests. This tool is
@@ -1983,9 +1983,9 @@ exec_program(ippfind_srv_t *service, /* I - Service */
strlcpy(tptr, scheme + 22, sizeof(temp) - (size_t)(tptr - temp));
else if (!strncmp(keyword, "txt_", 4))
{
- const char *txt = cupsGetOption(keyword + 4, service->num_txt, service->txt);
- if (txt)
- strlcpy(tptr, txt, sizeof(temp) - (size_t)(tptr - temp));
+ const char *val = cupsGetOption(keyword + 4, service->num_txt, service->txt);
+ if (val)
+ strlcpy(tptr, val, sizeof(temp) - (size_t)(tptr - temp));
else
*tptr = '\0';
}
@@ -2843,5 +2843,5 @@ show_version(void)
/*
- * End of "$Id: ippfind.c 12639 2015-05-19 02:36:30Z msweet $".
+ * End of "$Id: ippfind.c 12638 2015-05-19 02:36:15Z msweet $".
*/
diff --git a/test/ippinfra.c b/test/ippinfra.c
new file mode 100644
index 000000000..0a4a3674d
--- /dev/null
+++ b/test/ippinfra.c
@@ -0,0 +1,7125 @@
+/*
+ * "$Id: ippinfra.c 12237 2014-11-03 13:07:32Z msweet $"
+ *
+ * Sample IPP INFRA server for CUPS.
+ *
+ * Copyright 2010-2014 by Apple Inc.
+ *
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law. Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file. If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
+ *
+ * This file is subject to the Apple OS-Developed Software exception.
+ */
+
+/*
+ * Disable private and deprecated stuff so we can verify that the public API
+ * is sufficient to implement a server.
+ */
+
+#define _IPP_PRIVATE_STRUCTURES 0 /* Disable private IPP stuff */
+#define _CUPS_NO_DEPRECATED 1 /* Disable deprecated stuff */
+
+
+/*
+ * Include necessary headers...
+ */
+
+#include <config.h> /* CUPS configuration header */
+#include <cups/cups.h> /* Public API */
+#include <cups/string-private.h> /* CUPS string functions */
+#include <cups/thread-private.h> /* For multithreading functions */
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+#include <errno.h>
+#include <limits.h>
+#include <sys/stat.h>
+
+#ifdef WIN32
+# include <fcntl.h>
+# include <io.h>
+# include <process.h>
+# define WEXITSTATUS(s) (s)
+# include <winsock2.h>
+typedef ULONG nfds_t;
+# define poll WSAPoll
+#else
+extern char **environ;
+
+# include <sys/fcntl.h>
+# include <sys/wait.h>
+# include <poll.h>
+#endif /* WIN32 */
+
+#ifdef HAVE_SYS_MOUNT_H
+# include <sys/mount.h>
+#endif /* HAVE_SYS_MOUNT_H */
+#ifdef HAVE_SYS_STATFS_H
+# include <sys/statfs.h>
+#endif /* HAVE_SYS_STATFS_H */
+#ifdef HAVE_SYS_STATVFS_H
+# include <sys/statvfs.h>
+#endif /* HAVE_SYS_STATVFS_H */
+#ifdef HAVE_SYS_VFS_H
+# include <sys/vfs.h>
+#endif /* HAVE_SYS_VFS_H */
+
+#ifdef HAVE_PTHREAD_H
+typedef pthread_cond_t _cups_cond_t;
+# define _CUPS_COND_INITIALIZER PTHREAD_COND_INITIALIZER
+# define _cupsCondBroadcast(c) pthread_cond_broadcast(c)
+# define _cupsCondDeinit(c) pthread_cond_destroy(c)
+# define _cupsCondInit(c) pthread_cond_init((c), NULL)
+# define _cupsCondWait(c,m) pthread_cond_wait((c),(m))
+# define _cupsMutexDeinit(m) pthread_mutex_destroy(m)
+# define _cupsRWDeinit(rw) pthread_rwlock_destroy(rw)
+#else
+typedef char _cups_cond_t;
+# define _CUPS_COND_INITIALIZER 0
+# define _cupsCondBroadcast(c)
+# define _cupsCondDeinit(c)
+# define _cupsCondInit(c) *(c)=0
+# define _cupsCondWait(c,m) 0
+# define _cupsMutexDeinit(m)
+# define _cupsRWDeinit(rw)
+#endif /* HAVE_PTHREAD_H */
+
+
+/*
+ * Constants...
+ */
+
+/* New IPP operation codes from IPP INFRA */
+# define _IPP_OP_ACKNOWLEDGE_DOCUMENT (ipp_op_t)0x003f
+# define _IPP_OP_ACKNOWLEDGE_IDENTIFY_PRINTER (ipp_op_t)0x0040
+# define _IPP_OP_ACKNOWLEDGE_JOB (ipp_op_t)0x0041
+# define _IPP_OP_FETCH_DOCUMENT (ipp_op_t)0x0042
+# define _IPP_OP_FETCH_JOB (ipp_op_t)0x0043
+# define _IPP_OP_GET_OUTPUT_DEVICE_ATTRIBUTES (ipp_op_t)0x0044
+# define _IPP_OP_UPDATE_ACTIVE_JOBS (ipp_op_t)0x0045
+# define _IPP_OP_UPDATE_DOCUMENT_STATUS (ipp_op_t)0x0047
+# define _IPP_OP_UPDATE_JOB_STATUS (ipp_op_t)0x0048
+# define _IPP_OP_UPDATE_OUTPUT_DEVICE_ATTRIBUTES (ipp_op_t)0x0049
+# define _IPP_OP_DEREGISTER_OUTPUT_DEVICE (ipp_op_t)0x204b
+
+/* New IPP status code from IPP INFRA */
+# define _IPP_STATUS_ERROR_NOT_FETCHABLE (ipp_status_t)0x0420
+
+/* Maximum lease duration value from RFC 3995 - 2^26-1 or ~2 years */
+# define _IPP_NOTIFY_LEASE_DURATION_MAX 67108863
+/* But a value of 0 means "never expires"... */
+# define _IPP_NOTIFY_LEASE_DURATION_FOREVER 0
+/* Default duration is 1 day */
+# define _IPP_NOTIFY_LEASE_DURATION_DEFAULT 86400
+
+
+/*
+ * Event mask enumeration...
+ */
+
+enum _ipp_event_e /* notify-events bit values */
+{
+ _IPP_EVENT_DOCUMENT_COMPLETED = 0x00000001,
+ _IPP_EVENT_DOCUMENT_CONFIG_CHANGED = 0x00000002,
+ _IPP_EVENT_DOCUMENT_CREATED = 0x00000004,
+ _IPP_EVENT_DOCUMENT_FETCHABLE = 0x00000008,
+ _IPP_EVENT_DOCUMENT_STATE_CHANGED = 0x00000010,
+ _IPP_EVENT_DOCUMENT_STOPPED = 0x00000020,
+ _IPP_EVENT_JOB_COMPLETED = 0x00000040,
+ _IPP_EVENT_JOB_CONFIG_CHANGED = 0x00000080,
+ _IPP_EVENT_JOB_CREATED = 0x00000100,
+ _IPP_EVENT_JOB_FETCHABLE = 0x00000200,
+ _IPP_EVENT_JOB_PROGRESS = 0x00000400,
+ _IPP_EVENT_JOB_STATE_CHANGED = 0x00000800,
+ _IPP_EVENT_JOB_STOPPED = 0x00001000,
+ _IPP_EVENT_PRINTER_CONFIG_CHANGED = 0x00002000,
+ _IPP_EVENT_PRINTER_FINISHINGS_CHANGED = 0x00004000,
+ _IPP_EVENT_PRINTER_MEDIA_CHANGED = 0x00008000,
+ _IPP_EVENT_PRINTER_QUEUE_ORDER_CHANGED = 0x00010000,
+ _IPP_EVENT_PRINTER_RESTARTED = 0x00020000,
+ _IPP_EVENT_PRINTER_SHUTDOWN = 0x00040000,
+ _IPP_EVENT_PRINTER_STATE_CHANGED = 0x00080000,
+ _IPP_EVENT_PRINTER_STOPPED = 0x00100000,
+
+ /* "Wildcard" values... */
+ _IPP_EVENT_NONE = 0x00000000, /* Nothing */
+ _IPP_EVENT_DOCUMENT_ALL = 0x0000003f,
+ _IPP_EVENT_DOCUMENT_STATE_ALL = 0x00000037,
+ _IPP_EVENT_JOB_ALL = 0x00001fc0,
+ _IPP_EVENT_JOB_STATE_ALL = 0x00001940,
+ _IPP_EVENT_PRINTER_ALL = 0x001fe000,
+ _IPP_EVENT_PRINTER_CONFIG_ALL = 0x0000e000,
+ _IPP_EVENT_PRINTER_STATE_ALL = 0x001e0000,
+ _IPP_EVENT_ALL = 0x001fffff /* Everything */
+};
+typedef unsigned int _ipp_event_t; /* Bitfield for notify-events */
+#define _IPP_EVENT_DEFAULT _IPP_EVENT_JOB_COMPLETED
+#define _IPP_EVENT_DEFAULT_STRING "job-completed"
+static const char * const _ipp_events[] =
+{ /* Strings for bits */
+ "document-completed",
+ "document-config-changed",
+ "document-created",
+ "document-fetchable",
+ "document-state-changed",
+ "document-stopped",
+ "job-completed",
+ "job-config-changed",
+ "job-created",
+ "job-fetchable",
+ "job-progress",
+ "job-state-changed",
+ "job-stopped",
+ "printer-config-changed",
+ "printer-finishings-changed",
+ "printer-media-changed",
+ "printer-queue-order-changed",
+ "printer-restarted",
+ "printer-shutdown",
+ "printer-state-changed",
+ "printer-stopped"
+};
+
+enum _ipp_jreason_e /* job-state-reasons bit values */
+{
+ _IPP_JREASON_NONE = 0x00000000, /* none */
+ _IPP_JREASON_ABORTED_BY_SYSTEM = 0x00000001,
+ _IPP_JREASON_COMPRESSION_ERROR = 0x00000002,
+ _IPP_JREASON_DOCUMENT_ACCESS_ERROR = 0x00000004,
+ _IPP_JREASON_DOCUMENT_FORMAT_ERROR = 0x00000008,
+ _IPP_JREASON_DOCUMENT_PASSWORD_ERROR = 0x00000010,
+ _IPP_JREASON_DOCUMENT_PERMISSION_ERROR = 0x00000020,
+ _IPP_JREASON_DOCUMENT_SECURITY_ERROR = 0x00000040,
+ _IPP_JREASON_DOCUMENT_UNPRINTABLE_ERROR = 0x00000080,
+ _IPP_JREASON_ERRORS_DETECTED = 0x00000100,
+ _IPP_JREASON_JOB_CANCELED_AT_DEVICE = 0x00000200,
+ _IPP_JREASON_JOB_CANCELED_BY_USER = 0x00000400,
+ _IPP_JREASON_JOB_COMPLETED_SUCCESSFULLY = 0x00000800,
+ _IPP_JREASON_JOB_COMPLETED_WITH_ERRORS = 0x00001000,
+ _IPP_JREASON_JOB_COMPLETED_WITH_WARNINGS = 0x00002000,
+ _IPP_JREASON_JOB_DATA_INSUFFICIENT = 0x00004000,
+ _IPP_JREASON_JOB_FETCHABLE = 0x00008000,
+ _IPP_JREASON_JOB_INCOMING = 0x00010000,
+ _IPP_JREASON_JOB_PASSWORD_WAIT = 0x00020000,
+ _IPP_JREASON_JOB_PRINTING = 0x00040000,
+ _IPP_JREASON_JOB_QUEUED = 0x00080000,
+ _IPP_JREASON_JOB_SPOOLING = 0x00100000,
+ _IPP_JREASON_JOB_STOPPED = 0x00200000,
+ _IPP_JREASON_JOB_TRANSFORMING = 0x00400000,
+ _IPP_JREASON_PRINTER_STOPPED = 0x00800000,
+ _IPP_JREASON_PRINTER_STOPPED_PARTLY = 0x01000000,
+ _IPP_JREASON_PROCESSING_TO_STOP_POINT = 0x02000000,
+ _IPP_JREASON_QUEUED_IN_DEVICE = 0x04000000,
+ _IPP_JREASON_WARNINGS_DETECTED = 0x08000000
+};
+typedef unsigned int _ipp_jreason_t; /* Bitfield for job-state-reasons */
+static const char * const _ipp_jreasons[] =
+{ /* Strings for bits */
+ "aborted-by-system",
+ "compression-error",
+ "document-access-error",
+ "document-format-error",
+ "document-password-error",
+ "document-permission-error",
+ "document-security-error",
+ "document-unprintable-error",
+ "errors-detected",
+ "job-canceled-at-device",
+ "job-canceled-by-user",
+ "job-completed-successfully",
+ "job-completed-with-errors",
+ "job-completed-with-warnings",
+ "job-data-insufficient",
+ "job-fetchable",
+ "job-incoming",
+ "job-password-wait",
+ "job-printing",
+ "job-queued",
+ "job-spooling",
+ "job-stopped",
+ "job-transforming",
+ "printer-stopped",
+ "printer-stopped-partly",
+ "processing-to-stop-point",
+ "queued-in-device",
+ "warnings-detected"
+};
+
+enum _ipp_preason_e /* printer-state-reasons bit values */
+{
+ _IPP_PREASON_NONE = 0x0000, /* none */
+ _IPP_PREASON_OTHER = 0x0001, /* other */
+ _IPP_PREASON_COVER_OPEN = 0x0002, /* cover-open */
+ _IPP_PREASON_INPUT_TRAY_MISSING = 0x0004,
+ /* input-tray-missing */
+ _IPP_PREASON_MARKER_SUPPLY_EMPTY = 0x0008,
+ /* marker-supply-empty */
+ _IPP_PREASON_MARKER_SUPPLY_LOW = 0x0010,
+ /* marker-supply-low */
+ _IPP_PREASON_MARKER_WASTE_ALMOST_FULL = 0x0020,
+ /* marker-waste-almost-full */
+ _IPP_PREASON_MARKER_WASTE_FULL = 0x0040,
+ /* marker-waste-full */
+ _IPP_PREASON_MEDIA_EMPTY = 0x0080, /* media-empty */
+ _IPP_PREASON_MEDIA_JAM = 0x0100, /* media-jam */
+ _IPP_PREASON_MEDIA_LOW = 0x0200, /* media-low */
+ _IPP_PREASON_MEDIA_NEEDED = 0x0400, /* media-needed */
+ _IPP_PREASON_MOVING_TO_PAUSED = 0x0800,
+ /* moving-to-paused */
+ _IPP_PREASON_PAUSED = 0x1000, /* paused */
+ _IPP_PREASON_SPOOL_AREA_FULL = 0x2000,/* spool-area-full */
+ _IPP_PREASON_TONER_EMPTY = 0x4000, /* toner-empty */
+ _IPP_PREASON_TONER_LOW = 0x8000 /* toner-low */
+};
+typedef unsigned int _ipp_preason_t; /* Bitfield for printer-state-reasons */
+static const char * const _ipp_preasons[] =
+{ /* Strings for bits */
+ "other",
+ "cover-open",
+ "input-tray-missing",
+ "marker-supply-empty",
+ "marker-supply-low",
+ "marker-waste-almost-full",
+ "marker-waste-full",
+ "media-empty",
+ "media-jam",
+ "media-low",
+ "media-needed",
+ "moving-to-paused",
+ "paused",
+ "spool-area-full",
+ "toner-empty",
+ "toner-low"
+};
+
+
+/*
+ * Structures...
+ */
+
+typedef struct _ipp_filter_s /**** Attribute filter ****/
+{
+ cups_array_t *ra; /* Requested attributes */
+ ipp_tag_t group_tag; /* Group to copy */
+} _ipp_filter_t;
+
+typedef struct _ipp_job_s _ipp_job_t;
+
+typedef struct _ipp_device_s /**** Output Device data ****/
+{
+ _cups_rwlock_t rwlock; /* Printer lock */
+ char *name, /* printer-name (mapped to output-device) */
+ *uuid; /* output-device-uuid */
+ ipp_t *attrs; /* All printer attributes */
+ ipp_pstate_t state; /* printer-state value */
+ _ipp_preason_t reasons; /* printer-state-reasons values */
+} _ipp_device_t;
+
+typedef struct _ipp_printer_s /**** Printer data ****/
+{
+ _cups_rwlock_t rwlock; /* Printer lock */
+ int ipv4, /* IPv4 listener */
+ ipv6; /* IPv6 listener */
+ char *name, /* printer-name */
+ *directory, /* Spool directory */
+ *hostname, /* Hostname */
+ *uri, /* printer-uri-supported */
+ *proxy_user, /* Proxy username */
+ *proxy_pass; /* Proxy password */
+ int port; /* Port */
+ size_t urilen; /* Length of printer URI */
+ cups_array_t *devices; /* Associated devices */
+ ipp_t *attrs; /* Static attributes */
+ ipp_t *dev_attrs; /* Current device attributes */
+ time_t start_time; /* Startup time */
+ time_t config_time; /* printer-config-change-time */
+ ipp_pstate_t state, /* printer-state value */
+ dev_state; /* Current device printer-state value */
+ _ipp_preason_t state_reasons, /* printer-state-reasons values */
+ dev_reasons; /* Current device printer-state-reasons values */
+ time_t state_time; /* printer-state-change-time */
+ cups_array_t *jobs, /* Jobs */
+ *active_jobs, /* Active jobs */
+ *completed_jobs;/* Completed jobs */
+ _ipp_job_t *processing_job;/* Current processing job */
+ int next_job_id; /* Next job-id value */
+ cups_array_t *subscriptions; /* Subscriptions */
+ int next_sub_id; /* Next notify-subscription-id value */
+} _ipp_printer_t;
+
+struct _ipp_job_s /**** Job data ****/
+{
+ int id; /* job-id */
+ _cups_rwlock_t rwlock; /* Job lock */
+ const char *name, /* job-name */
+ *username, /* job-originating-user-name */
+ *format; /* document-format */
+ int priority; /* job-priority */
+ char *dev_uuid; /* output-device-uuid-assigned */
+ ipp_jstate_t state, /* job-state value */
+ dev_state; /* output-device-job-state value */
+ _ipp_jreason_t state_reasons, /* job-state-reasons values */
+ dev_state_reasons;
+ /* output-device-job-state-reasons values */
+ char *dev_state_message;
+ /* output-device-job-state-message value */
+ time_t created, /* time-at-creation value */
+ processing, /* time-at-processing value */
+ completed; /* time-at-completed value */
+ int impressions, /* job-impressions value */
+ impcompleted; /* job-impressions-completed value */
+ ipp_t *attrs; /* Attributes */
+ int cancel; /* Non-zero when job canceled */
+ char *filename; /* Print file name */
+ int fd; /* Print file descriptor */
+ _ipp_printer_t *printer; /* Printer */
+};
+
+typedef struct _ipp_subscription_s /**** Subscription data ****/
+{
+ int id; /* notify-subscription-id */
+ const char *uuid; /* notify-subscription-uuid */
+ _cups_rwlock_t rwlock; /* Subscription lock */
+ _ipp_event_t mask; /* Event mask */
+ _ipp_printer_t *printer; /* Printer */
+ _ipp_job_t *job; /* Job, if any */
+ ipp_t *attrs; /* Attributes */
+ const char *username; /* notify-subscriber-user-name */
+ int lease; /* notify-lease-duration */
+ int interval; /* notify-time-interval */
+ time_t expire; /* Lease expiration time */
+ int first_sequence, /* First notify-sequence-number in cache */
+ last_sequence; /* Last notify-sequence-number used */
+ cups_array_t *events; /* Events (ipp_t *'s) */
+ int pending_delete; /* Non-zero when the subscription is about to be deleted/canceled */
+} _ipp_subscription_t;
+
+typedef struct _ipp_client_s /**** Client data ****/
+{
+ http_t *http; /* HTTP connection */
+ ipp_t *request, /* IPP request */
+ *response; /* IPP response */
+ time_t start; /* Request start time */
+ http_state_t operation; /* Request operation */
+ ipp_op_t operation_id; /* IPP operation-id */
+ char uri[1024], /* Request URI */
+ *options; /* URI options */
+ http_addr_t addr; /* Client address */
+ char hostname[256], /* Client hostname */
+ username[32]; /* Client authenticated username */
+ _ipp_printer_t *printer; /* Printer */
+ _ipp_job_t *job; /* Current job, if any */
+ int fetch_compression,
+ /* Compress file? */
+ fetch_file; /* File to fetch */
+} _ipp_client_t;
+
+
+/*
+ * Local functions...
+ */
+
+static void add_event(_ipp_printer_t *printer, _ipp_job_t *job, _ipp_event_t event, const char *message, ...) __attribute__((__format__(__printf__, 4, 5)));
+static void check_jobs(_ipp_printer_t *printer);
+static void clean_jobs(_ipp_printer_t *printer);
+static int compare_active_jobs(_ipp_job_t *a, _ipp_job_t *b);
+static int compare_completed_jobs(_ipp_job_t *a, _ipp_job_t *b);
+static int compare_devices(_ipp_device_t *a, _ipp_device_t *b);
+static int compare_jobs(_ipp_job_t *a, _ipp_job_t *b);
+static void copy_attributes(ipp_t *to, ipp_t *from, cups_array_t *ra,
+ ipp_tag_t group_tag, int quickcopy);
+static void copy_job_attributes(_ipp_client_t *client,
+ _ipp_job_t *job, cups_array_t *ra);
+static void copy_job_state_reasons(ipp_t *ipp, ipp_tag_t group_tag, _ipp_job_t *job);
+static void copy_printer_state_reasons(ipp_t *ipp, ipp_tag_t group_tag, _ipp_printer_t *printer);
+static void copy_subscription_attributes(_ipp_client_t *client, _ipp_subscription_t *sub, cups_array_t *ra);
+static _ipp_client_t *create_client(_ipp_printer_t *printer, int sock);
+static _ipp_device_t *create_device(_ipp_client_t *client);
+static _ipp_job_t *create_job(_ipp_client_t *client);
+static void create_job_filename(_ipp_printer_t *printer, _ipp_job_t *job, const char *format, char *fname, size_t fnamesize);
+static int create_listener(int family, int port);
+static _ipp_subscription_t *create_subscription(_ipp_printer_t *printer, _ipp_job_t *job, int interval, int lease, const char *username, ipp_attribute_t *notify_events, ipp_attribute_t *notify_attributes, ipp_attribute_t *notify_user_data);
+static _ipp_printer_t *create_printer(const char *servername, int port, const char *name, const char *directory, const char *proxy_user, const char *proxy_pass);
+static void debug_attributes(const char *title, ipp_t *ipp,
+ int response);
+static void delete_client(_ipp_client_t *client);
+static void delete_device(_ipp_device_t *device);
+static void delete_job(_ipp_job_t *job);
+static void delete_printer(_ipp_printer_t *printer);
+static void delete_subscription(_ipp_subscription_t *sub);
+static int filter_cb(_ipp_filter_t *filter, ipp_t *dst, ipp_attribute_t *attr);
+static _ipp_device_t *find_device(_ipp_client_t *client);
+static _ipp_job_t *find_job(_ipp_client_t *client, int job_id);
+static _ipp_subscription_t *find_subscription(_ipp_client_t *client, int sub_id);
+static _ipp_jreason_t get_job_state_reasons_bits(ipp_attribute_t *attr);
+static _ipp_event_t get_notify_events_bits(ipp_attribute_t *attr);
+static const char *get_notify_subscribed_event(_ipp_event_t event);
+static _ipp_preason_t get_printer_state_reasons_bits(ipp_attribute_t *attr);
+static void html_escape(_ipp_client_t *client, const char *s,
+ size_t slen);
+static void html_footer(_ipp_client_t *client);
+static void html_header(_ipp_client_t *client, const char *title);
+static void html_printf(_ipp_client_t *client, const char *format, ...) __attribute__((__format__(__printf__, 2, 3)));
+static void ipp_acknowledge_document(_ipp_client_t *client);
+static void ipp_acknowledge_identify_printer(_ipp_client_t *client);
+static void ipp_acknowledge_job(_ipp_client_t *client);
+static void ipp_cancel_job(_ipp_client_t *client);
+static void ipp_cancel_my_jobs(_ipp_client_t *client);
+static void ipp_cancel_subscription(_ipp_client_t *client);
+static void ipp_close_job(_ipp_client_t *client);
+static void ipp_create_job(_ipp_client_t *client);
+static void ipp_create_xxx_subscriptions(_ipp_client_t *client);
+static void ipp_deregister_output_device(_ipp_client_t *client);
+static void ipp_fetch_document(_ipp_client_t *client);
+static void ipp_fetch_job(_ipp_client_t *client);
+static void ipp_get_document_attributes(_ipp_client_t *client);
+static void ipp_get_documents(_ipp_client_t *client);
+static void ipp_get_job_attributes(_ipp_client_t *client);
+static void ipp_get_jobs(_ipp_client_t *client);
+static void ipp_get_notifications(_ipp_client_t *client);
+static void ipp_get_output_device_attributes(_ipp_client_t *client);
+static void ipp_get_printer_attributes(_ipp_client_t *client);
+static void ipp_get_printer_supported_values(_ipp_client_t *client);
+static void ipp_get_subscription_attributes(_ipp_client_t *client);
+static void ipp_get_subscriptions(_ipp_client_t *client);
+static void ipp_identify_printer(_ipp_client_t *client);
+static void ipp_print_job(_ipp_client_t *client);
+static void ipp_print_uri(_ipp_client_t *client);
+static void ipp_renew_subscription(_ipp_client_t *client);
+static void ipp_send_document(_ipp_client_t *client);
+static void ipp_send_uri(_ipp_client_t *client);
+static void ipp_update_active_jobs(_ipp_client_t *client);
+static void ipp_update_document_status(_ipp_client_t *client);
+static void ipp_update_job_status(_ipp_client_t *client);
+static void ipp_update_output_device_attributes(_ipp_client_t *client);
+static void ipp_validate_document(_ipp_client_t *client);
+static void ipp_validate_job(_ipp_client_t *client);
+//static int parse_options(_ipp_client_t *client, cups_option_t **options);
+static void *process_client(_ipp_client_t *client);
+static int process_http(_ipp_client_t *client);
+static int process_ipp(_ipp_client_t *client);
+static void *process_job(_ipp_job_t *job);
+static int respond_http(_ipp_client_t *client, http_status_t code,
+ const char *content_coding,
+ const char *type, size_t length);
+static void respond_ipp(_ipp_client_t *client, ipp_status_t status,
+ const char *message, ...)
+ __attribute__ ((__format__ (__printf__, 3, 4)));
+static void respond_unsupported(_ipp_client_t *client,
+ ipp_attribute_t *attr);
+static void run_printer(_ipp_printer_t *printer);
+static char *time_string(time_t tv, char *buffer, size_t bufsize);
+static void update_device_attributes_no_lock(_ipp_printer_t *printer);
+static void update_device_state_no_lock(_ipp_printer_t *printer);
+static void usage(int status) __attribute__((noreturn));
+static int valid_doc_attributes(_ipp_client_t *client);
+static int valid_job_attributes(_ipp_client_t *client);
+
+
+/*
+ * Globals...
+ */
+
+static int KeepFiles = 0,
+ Verbosity = 0;
+//static _cups_mutex_t SubscriptionMutex = _CUPS_MUTEX_INITIALIZER;
+static _cups_cond_t SubscriptionCondition = _CUPS_COND_INITIALIZER;
+
+
+/*
+ * 'main()' - Main entry to the sample infrastructure server.
+ */
+
+int /* O - Exit status */
+main(int argc, /* I - Number of command-line args */
+ char *argv[]) /* I - Command-line arguments */
+{
+ int i; /* Looping var */
+ const char *opt, /* Current option character */
+ *servername = NULL, /* Server host name */
+ *name = NULL; /* Printer name */
+#ifdef HAVE_SSL
+ const char *keypath = NULL; /* Keychain path */
+#endif /* HAVE_SSL */
+ int port = 0; /* Port number (0 = auto) */
+ char directory[1024] = "", /* Spool directory */
+ hostname[1024], /* Auto-detected hostname */
+ proxy_user[256] = "", /* Proxy username */
+ *proxy_pass = NULL; /* Proxy password */
+ _ipp_printer_t *printer; /* Printer object */
+
+
+ /*
+ * Parse command-line arguments...
+ */
+
+ for (i = 1; i < argc; i ++)
+ if (argv[i][0] == '-')
+ {
+ for (opt = argv[i] + 1; *opt; opt ++)
+ {
+ switch (*opt)
+ {
+#ifdef HAVE_SSL
+ case 'K' : /* -K keypath */
+ i ++;
+ if (i >= argc)
+ usage(1);
+ keypath = argv[i];
+ break;
+#endif /* HAVE_SSL */
+
+ case 'd' : /* -d spool-directory */
+ i ++;
+ if (i >= argc)
+ usage(1);
+ strlcpy(directory, argv[i], sizeof(directory));
+ break;
+
+ case 'h' : /* -h (show help) */
+ usage(0);
+
+ case 'k' : /* -k (keep files) */
+ KeepFiles = 1;
+ break;
+
+ case 'n' : /* -n hostname */
+ i ++;
+ if (i >= argc)
+ usage(1);
+ servername = argv[i];
+ break;
+
+ case 'p' : /* -p port */
+ i ++;
+ if (i >= argc || !isdigit(argv[i][0] & 255))
+ usage(1);
+ port = atoi(argv[i]);
+ break;
+
+ case 'u' : /* -u user:pass */
+ i ++;
+ if (i >= argc)
+ usage(1);
+ strlcpy(proxy_user, argv[i], sizeof(proxy_user));
+ if ((proxy_pass = strchr(proxy_user, ':')) != NULL)
+ *proxy_pass++ = '\0';
+ break;
+
+ case 'v' : /* -v (be verbose) */
+ Verbosity ++;
+ break;
+
+ default : /* Unknown */
+ fprintf(stderr, "Unknown option \"-%c\".\n", *opt);
+ usage(1);
+ }
+ }
+ }
+ else if (!name)
+ {
+ name = argv[i];
+ }
+ else
+ {
+ fprintf(stderr, "Unexpected command-line argument \"%s\"\n", argv[i]);
+ usage(1);
+ }
+
+ if (!name)
+ usage(1);
+
+ /*
+ * Apply defaults as needed...
+ */
+
+ if (!servername)
+ servername = httpGetHostname(NULL, hostname, sizeof(hostname));
+
+ if (!port)
+ {
+#ifdef WIN32
+ /*
+ * Windows is almost always used as a single user system, so use a default port
+ * number of 8631.
+ */
+
+ port = 8631;
+
+#else
+ /*
+ * Use 8000 + UID mod 1000 for the default port number...
+ */
+
+ port = 8000 + ((int)getuid() % 1000);
+#endif /* WIN32 */
+
+ fprintf(stderr, "Listening on port %d.\n", port);
+ }
+
+ if (!directory[0])
+ {
+ snprintf(directory, sizeof(directory), "/tmp/ippserver.%d", (int)getpid());
+
+ if (mkdir(directory, 0777) && errno != EEXIST)
+ {
+ fprintf(stderr, "Unable to create spool directory \"%s\": %s\n",
+ directory, strerror(errno));
+ usage(1);
+ }
+
+ if (Verbosity)
+ fprintf(stderr, "Using spool directory \"%s\".\n", directory);
+ }
+
+ if (!proxy_user[0])
+ {
+ strlcpy(proxy_user, "test", sizeof(proxy_user));
+
+ if (Verbosity)
+ fputs("Using proxy username \"test\".\n", stderr);
+ }
+
+ if (!proxy_pass)
+ {
+ proxy_pass = "test123";
+
+ if (Verbosity)
+ fputs("Using proxy password \"test123\".\n", stderr);
+ }
+
+#ifdef HAVE_SSL
+ cupsSetServerCredentials(keypath, servername, 1);
+#endif /* HAVE_SSL */
+
+ /*
+ * Create the printer...
+ */
+
+ if ((printer = create_printer(servername, port, name, directory, proxy_user, proxy_pass)) == NULL)
+ return (1);
+
+ /*
+ * Run the print service...
+ */
+
+ run_printer(printer);
+
+ /*
+ * Destroy the printer and exit...
+ */
+
+ delete_printer(printer);
+
+ return (0);
+}
+
+
+/*
+ * 'add_event()' - Add an event to a subscription.
+ */
+
+static void
+add_event(_ipp_printer_t *printer, /* I - Printer */
+ _ipp_job_t *job, /* I - Job, if any */
+ _ipp_event_t event, /* I - Event */
+ const char *message, /* I - Printf-style notify-text message */
+ ...) /* I - Additional printf arguments */
+{
+ _ipp_subscription_t *sub; /* Current subscription */
+ ipp_t *n; /* Notify attributes */
+ char text[1024]; /* notify-text value */
+ va_list ap; /* Argument pointer */
+
+
+ va_start(ap, message);
+ vsnprintf(text, sizeof(text), message, ap);
+ va_end(ap);
+
+ for (sub = (_ipp_subscription_t *)cupsArrayFirst(printer->subscriptions);
+ sub;
+ sub = (_ipp_subscription_t *)cupsArrayNext(printer->subscriptions))
+ {
+ if (sub->mask & event && (!sub->job || job == sub->job))
+ {
+ _cupsRWLockWrite(&sub->rwlock);
+
+ n = ippNew();
+ ippAddString(n, IPP_TAG_EVENT_NOTIFICATION, IPP_TAG_CHARSET, "notify-charset", NULL, "utf-8");
+ ippAddString(n, IPP_TAG_EVENT_NOTIFICATION, IPP_TAG_LANGUAGE, "notify-natural-language", NULL, "en");
+ ippAddInteger(n, IPP_TAG_EVENT_NOTIFICATION, IPP_TAG_INTEGER, "notify-printer-up-time", time(NULL) - printer->start_time);
+ ippAddString(n, IPP_TAG_EVENT_NOTIFICATION, IPP_TAG_URI, "notify-printer-uri", NULL, printer->uri);
+ if (job)
+ ippAddInteger(n, IPP_TAG_EVENT_NOTIFICATION, IPP_TAG_INTEGER, "notify-job-id", job->id);
+ ippAddInteger(n, IPP_TAG_EVENT_NOTIFICATION, IPP_TAG_INTEGER, "notify-subcription-id", sub->id);
+ ippAddString(n, IPP_TAG_EVENT_NOTIFICATION, IPP_TAG_URI, "notify-subscription-uuid", NULL, sub->uuid);
+ ippAddInteger(n, IPP_TAG_EVENT_NOTIFICATION, IPP_TAG_INTEGER, "notify-sequence-number", ++ sub->last_sequence);
+ ippAddString(n, IPP_TAG_EVENT_NOTIFICATION, IPP_TAG_KEYWORD, "notify-subscribed-event", NULL, get_notify_subscribed_event(event));
+ ippAddString(n, IPP_TAG_EVENT_NOTIFICATION, IPP_TAG_TEXT, "notify-text", NULL, text);
+ if (event & _IPP_EVENT_PRINTER_ALL)
+ {
+ ippAddInteger(n, IPP_TAG_EVENT_NOTIFICATION, IPP_TAG_ENUM, "printer-state", printer->state);
+ copy_printer_state_reasons(n, IPP_TAG_EVENT_NOTIFICATION, printer);
+ }
+ if (event & _IPP_EVENT_JOB_ALL)
+ {
+ ippAddInteger(n, IPP_TAG_EVENT_NOTIFICATION, IPP_TAG_ENUM, "job-state", job->state);
+ copy_job_state_reasons(n, IPP_TAG_EVENT_NOTIFICATION, job);
+ if (event == _IPP_EVENT_JOB_CREATED)
+ {
+ ippAddString(n, IPP_TAG_EVENT_NOTIFICATION, IPP_TAG_NAME, "job-name", NULL, job->name);
+ ippAddString(n, IPP_TAG_EVENT_NOTIFICATION, IPP_TAG_NAME, "job-originating-user-name", NULL, job->username);
+ }
+ }
+
+ cupsArrayAdd(sub->events, n);
+ if (cupsArrayCount(sub->events) > 100)
+ {
+ n = (ipp_t *)cupsArrayFirst(sub->events);
+ cupsArrayRemove(sub->events, n);
+ ippDelete(n);
+ sub->first_sequence ++;
+ }
+
+ _cupsRWUnlock(&sub->rwlock);
+ _cupsCondBroadcast(&SubscriptionCondition);
+ }
+ }
+}
+
+
+/*
+ * 'check_jobs()' - Check for new jobs to process.
+ */
+
+static void
+check_jobs(_ipp_printer_t *printer) /* I - Printer */
+{
+ _ipp_job_t *job; /* Current job */
+
+
+ if (printer->processing_job)
+ return;
+
+ _cupsRWLockWrite(&(printer->rwlock));
+ for (job = (_ipp_job_t *)cupsArrayFirst(printer->active_jobs);
+ job;
+ job = (_ipp_job_t *)cupsArrayNext(printer->active_jobs))
+ {
+ if (job->state == IPP_JSTATE_PENDING)
+ {
+ if (!_cupsThreadCreate((_cups_thread_func_t)process_job, job))
+ {
+ job->state = IPP_JSTATE_ABORTED;
+ job->completed = time(NULL);
+
+ add_event(printer, job, _IPP_EVENT_JOB_COMPLETED, "Job aborted because creation of processing thread failed.");
+ }
+ break;
+ }
+ }
+ _cupsRWUnlock(&(printer->rwlock));
+}
+
+
+/*
+ * 'clean_jobs()' - Clean out old (completed) jobs.
+ */
+
+static void
+clean_jobs(_ipp_printer_t *printer) /* I - Printer */
+{
+ _ipp_job_t *job; /* Current job */
+ time_t cleantime; /* Clean time */
+
+
+ if (cupsArrayCount(printer->jobs) == 0)
+ return;
+
+ cleantime = time(NULL) - 60;
+
+ _cupsRWLockWrite(&(printer->rwlock));
+ for (job = (_ipp_job_t *)cupsArrayFirst(printer->jobs);
+ job;
+ job = (_ipp_job_t *)cupsArrayNext(printer->jobs))
+ if (job->completed && job->completed < cleantime)
+ {
+ cupsArrayRemove(printer->jobs, job);
+ delete_job(job);
+ }
+ else
+ break;
+ _cupsRWUnlock(&(printer->rwlock));
+}
+
+
+/*
+ * 'compare_active_jobs()' - Compare two active jobs.
+ */
+
+static int /* O - Result of comparison */
+compare_active_jobs(_ipp_job_t *a, /* I - First job */
+ _ipp_job_t *b) /* I - Second job */
+{
+ int diff; /* Difference */
+
+
+ if ((diff = b->priority - a->priority) == 0)
+ diff = b->id - a->id;
+
+ return (diff);
+}
+
+
+/*
+ * 'compare_completed_jobs()' - Compare two completed jobs.
+ */
+
+static int /* O - Result of comparison */
+compare_completed_jobs(_ipp_job_t *a, /* I - First job */
+ _ipp_job_t *b) /* I - Second job */
+{
+ int diff; /* Difference */
+
+
+ if ((diff = a->completed - b->completed) == 0)
+ diff = b->id - a->id;
+
+ return (diff);
+}
+
+
+/*
+ * 'compare_devices()' - Compare two devices...
+ */
+
+static int /* O - Result of comparison */
+compare_devices(_ipp_device_t *a, /* I - First device */
+ _ipp_device_t *b) /* I - Second device */
+{
+ return (strcmp(a->uuid, b->uuid));
+}
+
+
+/*
+ * 'compare_jobs()' - Compare two jobs.
+ */
+
+static int /* O - Result of comparison */
+compare_jobs(_ipp_job_t *a, /* I - First job */
+ _ipp_job_t *b) /* I - Second job */
+{
+ return (b->id - a->id);
+}
+
+
+/*
+ * 'copy_attributes()' - Copy attributes from one request to another.
+ */
+
+static void
+copy_attributes(ipp_t *to, /* I - Destination request */
+ ipp_t *from, /* I - Source request */
+ cups_array_t *ra, /* I - Requested attributes */
+ ipp_tag_t group_tag, /* I - Group to copy */
+ int quickcopy) /* I - Do a quick copy? */
+{
+ _ipp_filter_t filter; /* Filter data */
+
+
+ filter.ra = ra;
+ filter.group_tag = group_tag;
+
+ ippCopyAttributes(to, from, quickcopy, (ipp_copycb_t)filter_cb, &filter);
+}
+
+
+/*
+ * 'copy_job_attrs()' - Copy job attributes to the response.
+ */
+
+static void
+copy_job_attributes(
+ _ipp_client_t *client, /* I - Client */
+ _ipp_job_t *job, /* I - Job */
+ cups_array_t *ra) /* I - requested-attributes */
+{
+ copy_attributes(client->response, job->attrs, ra, IPP_TAG_JOB, 0);
+
+ if (!ra || cupsArrayFind(ra, "date-time-at-completed"))
+ {
+ if (job->completed)
+ ippAddDate(client->response, IPP_TAG_JOB, "date-time-at-completed", ippTimeToDate(job->completed));
+ else
+ ippAddOutOfBand(client->response, IPP_TAG_JOB, IPP_TAG_NOVALUE, "date-time-at-completed");
+ }
+
+ if (!ra || cupsArrayFind(ra, "date-time-at-processing"))
+ {
+ if (job->processing)
+ ippAddDate(client->response, IPP_TAG_JOB, "date-time-at-processing", ippTimeToDate(job->processing));
+ else
+ ippAddOutOfBand(client->response, IPP_TAG_JOB, IPP_TAG_NOVALUE, "date-time-at-processing");
+ }
+
+ if (!ra || cupsArrayFind(ra, "job-impressions"))
+ ippAddInteger(client->response, IPP_TAG_JOB, IPP_TAG_INTEGER, "job-impressions", job->impressions);
+
+ if (!ra || cupsArrayFind(ra, "job-impressions-completed"))
+ ippAddInteger(client->response, IPP_TAG_JOB, IPP_TAG_INTEGER, "job-impressions-completed", job->impcompleted);
+
+ if (!ra || cupsArrayFind(ra, "job-printer-up-time"))
+ ippAddInteger(client->response, IPP_TAG_JOB, IPP_TAG_INTEGER, "job-printer-up-time", (int)(time(NULL) - client->printer->start_time));
+
+ if (!ra || cupsArrayFind(ra, "job-state"))
+ ippAddInteger(client->response, IPP_TAG_JOB, IPP_TAG_ENUM,
+ "job-state", job->state);
+
+ if (!ra || cupsArrayFind(ra, "job-state-message"))
+ {
+ if (job->dev_state_message)
+ {
+ ippAddString(client->response, IPP_TAG_JOB, IPP_TAG_TEXT, "job-state-message", NULL, job->dev_state_message);
+ }
+ else
+ {
+ const char *message = ""; /* Message string */
+
+ switch (job->state)
+ {
+ case IPP_JSTATE_PENDING :
+ message = "Job pending.";
+ break;
+
+ case IPP_JSTATE_HELD :
+ if (job->state_reasons & _IPP_JREASON_JOB_INCOMING)
+ message = "Job incoming.";
+ else if (ippFindAttribute(job->attrs, "job-hold-until", IPP_TAG_ZERO))
+ message = "Job held.";
+ else
+ message = "Job created.";
+ break;
+
+ case IPP_JSTATE_PROCESSING :
+ if (job->state_reasons & _IPP_JREASON_PROCESSING_TO_STOP_POINT)
+ {
+ if (job->cancel)
+ message = "Cancel in progress.";
+ else
+ message = "Abort in progress.";
+ }
+ else
+ message = "Job printing.";
+ break;
+
+ case IPP_JSTATE_STOPPED :
+ message = "Job stopped.";
+ break;
+
+ case IPP_JSTATE_CANCELED :
+ message = "Job canceled.";
+ break;
+
+ case IPP_JSTATE_ABORTED :
+ message = "Job aborted.";
+ break;
+
+ case IPP_JSTATE_COMPLETED :
+ message = "Job completed.";
+ break;
+ }
+
+ ippAddString(client->response, IPP_TAG_JOB, IPP_CONST_TAG(IPP_TAG_TEXT), "job-state-message", NULL, message);
+ }
+ }
+
+ if (!ra || cupsArrayFind(ra, "job-state-reasons"))
+ copy_job_state_reasons(client->response, IPP_TAG_JOB, job);
+/*
+ switch (job->state)
+ {
+ case IPP_JSTATE_PENDING :
+ ippAddString(client->response, IPP_TAG_JOB,
+ IPP_CONST_TAG(IPP_TAG_KEYWORD), "job-state-reasons",
+ NULL, "none");
+ break;
+
+ case IPP_JSTATE_HELD :
+ if (job->fd >= 0)
+ ippAddString(client->response, IPP_TAG_JOB,
+ IPP_CONST_TAG(IPP_TAG_KEYWORD),
+ "job-state-reasons", NULL, "job-incoming");
+ else if (ippFindAttribute(job->attrs, "job-hold-until", IPP_TAG_ZERO))
+ ippAddString(client->response, IPP_TAG_JOB,
+ IPP_CONST_TAG(IPP_TAG_KEYWORD),
+ "job-state-reasons", NULL, "job-hold-until-specified");
+ else
+ ippAddString(client->response, IPP_TAG_JOB,
+ IPP_CONST_TAG(IPP_TAG_KEYWORD),
+ "job-state-reasons", NULL, "job-data-insufficient");
+ break;
+
+ case IPP_JSTATE_PROCESSING :
+ if (job->cancel)
+ ippAddString(client->response, IPP_TAG_JOB,
+ IPP_CONST_TAG(IPP_TAG_KEYWORD),
+ "job-state-reasons", NULL, "processing-to-stop-point");
+ else
+ ippAddString(client->response, IPP_TAG_JOB,
+ IPP_CONST_TAG(IPP_TAG_KEYWORD),
+ "job-state-reasons", NULL, "job-printing");
+ break;
+
+ case IPP_JSTATE_STOPPED :
+ ippAddString(client->response, IPP_TAG_JOB,
+ IPP_CONST_TAG(IPP_TAG_KEYWORD), "job-state-reasons",
+ NULL, "job-stopped");
+ break;
+
+ case IPP_JSTATE_CANCELED :
+ ippAddString(client->response, IPP_TAG_JOB,
+ IPP_CONST_TAG(IPP_TAG_KEYWORD), "job-state-reasons",
+ NULL, "job-canceled-by-user");
+ break;
+
+ case IPP_JSTATE_ABORTED :
+ ippAddString(client->response, IPP_TAG_JOB,
+ IPP_CONST_TAG(IPP_TAG_KEYWORD), "job-state-reasons",
+ NULL, "aborted-by-system");
+ break;
+
+ case IPP_JSTATE_COMPLETED :
+ ippAddString(client->response, IPP_TAG_JOB,
+ IPP_CONST_TAG(IPP_TAG_KEYWORD), "job-state-reasons",
+ NULL, "job-completed-successfully");
+ break;
+ }
+*/
+
+ if (!ra || cupsArrayFind(ra, "time-at-completed"))
+ ippAddInteger(client->response, IPP_TAG_JOB,
+ job->completed ? IPP_TAG_INTEGER : IPP_TAG_NOVALUE,
+ "time-at-completed", (int)(job->completed - client->printer->start_time));
+
+ if (!ra || cupsArrayFind(ra, "time-at-processing"))
+ ippAddInteger(client->response, IPP_TAG_JOB,
+ job->processing ? IPP_TAG_INTEGER : IPP_TAG_NOVALUE,
+ "time-at-processing", (int)(job->processing - client->printer->start_time));
+}
+
+
+/*
+ * 'copy_job_state_reasons()' - Copy printer-state-reasons values.
+ */
+
+static void
+copy_job_state_reasons(
+ ipp_t *ipp, /* I - Attributes */
+ ipp_tag_t group_tag, /* I - Group */
+ _ipp_job_t *job) /* I - Printer */
+{
+ _ipp_jreason_t creasons; /* Combined job-state-reasons */
+
+
+ creasons = job->state_reasons | job->dev_state_reasons;
+
+ if (!creasons)
+ {
+ ippAddString(ipp, group_tag, IPP_CONST_TAG(IPP_TAG_KEYWORD), "job-state-reasons", NULL, "none");
+ }
+ else
+ {
+ int i, /* Looping var */
+ num_reasons = 0;/* Number of reasons */
+ _ipp_jreason_t reason; /* Current reason */
+ const char *reasons[32]; /* Reason strings */
+
+ for (i = 0, reason = 1; i < (int)(sizeof(_ipp_jreasons) / sizeof(_ipp_jreasons[0])); i ++, reason <<= 1)
+ {
+ if (creasons & reason)
+ reasons[num_reasons ++] = _ipp_jreasons[i];
+ }
+
+ ippAddStrings(ipp, group_tag, IPP_CONST_TAG(IPP_TAG_KEYWORD), "job-state-reasons", num_reasons, NULL, reasons);
+ }
+}
+
+
+/*
+ * 'copy_printer_state_reasons()' - Copy printer-state-reasons values.
+ */
+
+static void
+copy_printer_state_reasons(
+ ipp_t *ipp, /* I - Attributes */
+ ipp_tag_t group_tag, /* I - Group */
+ _ipp_printer_t *printer) /* I - Printer */
+{
+ _ipp_preason_t creasons = printer->state_reasons | printer->dev_reasons;
+ /* Combined reasons */
+
+
+ if (creasons == _IPP_PREASON_NONE)
+ {
+ ippAddString(ipp, group_tag, IPP_CONST_TAG(IPP_TAG_KEYWORD), "printer-state-reasons", NULL, "none");
+ }
+ else
+ {
+ int i, /* Looping var */ num_reasons = 0;/* Number of reasons */
+ _ipp_preason_t reason; /* Current reason */
+ const char *reasons[32]; /* Reason strings */
+
+ for (i = 0, reason = 1; i < (int)(sizeof(_ipp_preasons) / sizeof(_ipp_preasons[0])); i ++, reason <<= 1)
+ {
+ if (creasons & reason)
+ reasons[num_reasons ++] = _ipp_preasons[i];
+ }
+
+ ippAddStrings(ipp, group_tag, IPP_CONST_TAG(IPP_TAG_KEYWORD), "printer-state-reasons", num_reasons, NULL, reasons);
+ }
+}
+
+
+/*
+ * 'copy_sub_attrs()' - Copy job attributes to the response.
+ */
+
+static void
+copy_subscription_attributes(
+ _ipp_client_t *client, /* I - Client */
+ _ipp_subscription_t *sub, /* I - Subscription */
+ cups_array_t *ra) /* I - requested-attributes */
+{
+ copy_attributes(client->response, sub->attrs, ra, IPP_TAG_SUBSCRIPTION, 0);
+
+ if (!ra || cupsArrayFind(ra, "notify-lease-expiration-time"))
+ ippAddInteger(client->response, IPP_TAG_SUBSCRIPTION, IPP_TAG_INTEGER, "notify-lease-expiration-time", (int)(sub->expire - client->printer->start_time));
+
+ if (!ra || cupsArrayFind(ra, "notify-printer-up-time"))
+ ippAddInteger(client->response, IPP_TAG_SUBSCRIPTION, IPP_TAG_INTEGER, "notify-printer-up-time", (int)(time(NULL) - client->printer->start_time));
+
+ if (!ra || cupsArrayFind(ra, "notify-sequence-number"))
+ ippAddInteger(client->response, IPP_TAG_SUBSCRIPTION, IPP_TAG_INTEGER, "notify-sequence-number", sub->last_sequence);
+}
+
+
+/*
+ * 'create_client()' - Accept a new network connection and create a client
+ * object.
+ */
+
+static _ipp_client_t * /* O - Client */
+create_client(_ipp_printer_t *printer, /* I - Printer */
+ int sock) /* I - Listen socket */
+{
+ _ipp_client_t *client; /* Client */
+
+
+ if ((client = calloc(1, sizeof(_ipp_client_t))) == NULL)
+ {
+ perror("Unable to allocate memory for client");
+ return (NULL);
+ }
+
+ client->printer = printer;
+ client->fetch_file = -1;
+
+ /*
+ * Accept the client and get the remote address...
+ */
+
+ if ((client->http = httpAcceptConnection(sock, 1)) == NULL)
+ {
+ perror("Unable to accept client connection");
+
+ free(client);
+
+ return (NULL);
+ }
+
+ httpGetHostname(client->http, client->hostname, sizeof(client->hostname));
+
+ if (Verbosity)
+ fprintf(stderr, "Accepted connection from %s\n", client->hostname);
+
+ return (client);
+}
+
+
+/*
+ * 'create_device()' - Create an output device tracking object.
+ */
+
+static _ipp_device_t * /* O - Device */
+create_device(_ipp_client_t *client) /* I - Client */
+{
+ _ipp_device_t *device; /* Device */
+ ipp_attribute_t *uuid; /* output-device-uuid */
+
+
+ if ((uuid = ippFindAttribute(client->request, "output-device-uuid", IPP_TAG_URI)) == NULL)
+ return (NULL);
+
+ if ((device = calloc(1, sizeof(_ipp_device_t))) == NULL)
+ return (NULL);
+
+ _cupsRWInit(&device->rwlock);
+
+ device->uuid = strdup(ippGetString(uuid, 0, NULL));
+ device->state = IPP_PSTATE_STOPPED;
+
+ _cupsRWLockWrite(&client->printer->rwlock);
+ cupsArrayAdd(client->printer->devices, device);
+ _cupsRWUnlock(&client->printer->rwlock);
+
+ return (device);
+}
+
+
+/*
+ * 'create_job()' - Create a new job object from a Print-Job or Create-Job
+ * request.
+ */
+
+static _ipp_job_t * /* O - Job */
+create_job(_ipp_client_t *client) /* I - Client */
+{
+ _ipp_job_t *job; /* Job */
+ ipp_attribute_t *attr; /* Job attribute */
+ char uri[1024], /* job-uri value */
+ uuid[64]; /* job-uuid value */
+
+
+ _cupsRWLockWrite(&(client->printer->rwlock));
+
+ /*
+ * Allocate and initialize the job object...
+ */
+
+ if ((job = calloc(1, sizeof(_ipp_job_t))) == NULL)
+ {
+ perror("Unable to allocate memory for job");
+ return (NULL);
+ }
+
+ job->printer = client->printer;
+ job->attrs = ippNew();
+ job->state = IPP_JSTATE_HELD;
+ job->fd = -1;
+
+ /*
+ * Copy all of the job attributes...
+ */
+
+ copy_attributes(job->attrs, client->request, NULL, IPP_TAG_JOB, 0);
+
+ /*
+ * Get the requesting-user-name, document format, and priority...
+ */
+
+ if ((attr = ippFindAttribute(client->request, "job-priority", IPP_TAG_INTEGER)) != NULL)
+ job->priority = ippGetInteger(attr, 0);
+ else
+ job->priority = 50;
+
+ if ((attr = ippFindAttribute(client->request, "requesting-user-name", IPP_TAG_NAME)) != NULL)
+ job->username = ippGetString(attr, 0, NULL);
+ else
+ job->username = "anonymous";
+
+ ippAddString(job->attrs, IPP_TAG_JOB, IPP_TAG_NAME, "job-originating-user-name", NULL, job->username);
+
+ if (ippGetOperation(client->request) != IPP_OP_CREATE_JOB)
+ {
+ if ((attr = ippFindAttribute(job->attrs, "document-format-detected", IPP_TAG_MIMETYPE)) != NULL)
+ job->format = ippGetString(attr, 0, NULL);
+ else if ((attr = ippFindAttribute(job->attrs, "document-format-supplied", IPP_TAG_MIMETYPE)) != NULL)
+ job->format = ippGetString(attr, 0, NULL);
+ else
+ job->format = "application/octet-stream";
+ }
+
+ if ((attr = ippFindAttribute(client->request, "job-impressions", IPP_TAG_INTEGER)) != NULL)
+ job->impressions = ippGetInteger(attr, 0);
+
+ if ((attr = ippFindAttribute(client->request, "job-name", IPP_TAG_NAME)) != NULL)
+ job->name = ippGetString(attr, 0, NULL);
+
+ /*
+ * Add job description attributes and add to the jobs array...
+ */
+
+ job->id = client->printer->next_job_id ++;
+
+ snprintf(uri, sizeof(uri), "%s/%d", client->printer->uri, job->id);
+ httpAssembleUUID(client->printer->hostname, client->printer->port, client->printer->name, job->id, uuid, sizeof(uuid));
+
+ ippAddDate(job->attrs, IPP_TAG_JOB, "date-time-at-creation", ippTimeToDate(time(&job->created)));
+ ippAddInteger(job->attrs, IPP_TAG_JOB, IPP_TAG_INTEGER, "job-id", job->id);
+ ippAddString(job->attrs, IPP_TAG_JOB, IPP_TAG_URI, "job-uri", NULL, uri);
+ ippAddString(job->attrs, IPP_TAG_JOB, IPP_TAG_URI, "job-uuid", NULL, uuid);
+ ippAddString(job->attrs, IPP_TAG_JOB, IPP_TAG_URI, "job-printer-uri", NULL, client->printer->uri);
+ ippAddInteger(job->attrs, IPP_TAG_JOB, IPP_TAG_INTEGER, "time-at-creation", (int)(job->created - client->printer->start_time));
+
+ cupsArrayAdd(client->printer->jobs, job);
+ cupsArrayAdd(client->printer->active_jobs, job);
+
+ _cupsRWUnlock(&(client->printer->rwlock));
+
+ return (job);
+}
+
+
+/*
+ * 'create_job_filename()' - Create the filename for a document in a job.
+ */
+
+static void create_job_filename(
+ _ipp_printer_t *printer, /* I - Printer */
+ _ipp_job_t *job, /* I - Job */
+ const char *format, /* I - Format or NULL */
+ char *fname, /* I - Filename buffer */
+ size_t fnamesize) /* I - Size of filename buffer */
+{
+ char name[256], /* "Safe" filename */
+ *nameptr; /* Pointer into filename */
+ const char *ext, /* Filename extension */
+ *job_name; /* job-name value */
+ ipp_attribute_t *job_name_attr; /* job-name attribute */
+
+
+ /*
+ * Make a name from the job-name attribute...
+ */
+
+ if ((job_name_attr = ippFindAttribute(job->attrs, "job-name", IPP_TAG_NAME)) != NULL)
+ job_name = ippGetString(job_name_attr, 0, NULL);
+ else
+ job_name = "untitled";
+
+ for (nameptr = name; *job_name && nameptr < (name + sizeof(name) - 1); job_name ++)
+ if (isalnum(*job_name & 255) || *job_name == '-')
+ *nameptr++ = (char)tolower(*job_name & 255);
+ else
+ *nameptr++ = '_';
+
+ *nameptr = '\0';
+
+ /*
+ * Figure out the extension...
+ */
+
+ if (!format)
+ format = job->format;
+
+ if (!strcasecmp(format, "image/jpeg"))
+ ext = "jpg";
+ else if (!strcasecmp(format, "image/png"))
+ ext = "png";
+ else if (!strcasecmp(format, "image/pwg-raster"))
+ ext = "ras";
+ else if (!strcasecmp(format, "image/urf"))
+ ext = "urf";
+ else if (!strcasecmp(format, "application/pdf"))
+ ext = "pdf";
+ else if (!strcasecmp(format, "application/postscript"))
+ ext = "ps";
+ else
+ ext = "prn";
+
+ /*
+ * Create a filename with the job-id, job-name, and document-format (extension)...
+ */
+
+ snprintf(fname, fnamesize, "%s/%d-%s.%s", printer->directory, job->id, name, ext);
+}
+
+
+/*
+ * 'create_listener()' - Create a listener socket.
+ */
+
+static int /* O - Listener socket or -1 on error */
+create_listener(int family, /* I - Address family */
+ int port) /* I - Port number */
+{
+ int sock; /* Listener socket */
+ http_addrlist_t *addrlist; /* Listen address */
+ char service[255]; /* Service port */
+
+
+ snprintf(service, sizeof(service), "%d", port);
+ if ((addrlist = httpAddrGetList(NULL, family, service)) == NULL)
+ return (-1);
+
+ sock = httpAddrListen(&(addrlist->addr), port);
+
+ httpAddrFreeList(addrlist);
+
+ return (sock);
+}
+
+
+/*
+ * 'create_printer()' - Create, register, and listen for connections to a
+ * printer object.
+ */
+
+static _ipp_printer_t * /* O - Printer */
+create_printer(const char *servername, /* I - Server hostname (NULL for default) */
+ int port, /* I - Port number */
+ const char *name, /* I - printer-name */
+ const char *directory, /* I - Spool directory */
+ const char *proxy_user, /* I - Proxy account username */
+ const char *proxy_pass) /* I - Proxy account password */
+{
+ _ipp_printer_t *printer; /* Printer */
+ char uri[1024], /* Printer URI */
+ adminurl[1024], /* printer-more-info URI */
+ supplyurl[1024],/* printer-supply-info-uri URI */
+ uuid[128]; /* printer-uuid */
+ int k_supported; /* Maximum file size supported */
+#ifdef HAVE_STATVFS
+ struct statvfs spoolinfo; /* FS info for spool directory */
+ double spoolsize; /* FS size */
+#elif defined(HAVE_STATFS)
+ struct statfs spoolinfo; /* FS info for spool directory */
+ double spoolsize; /* FS size */
+#endif /* HAVE_STATVFS */
+ static const char * const versions[] =/* ipp-versions-supported values */
+ {
+ "1.0",
+ "1.1",
+ "2.0"
+ };
+ static const char * const features[] =/* ipp-features-supported values */
+ {
+ "document-object",
+ "ipp-everywhere",
+ "infrastructure-printer",
+ "page-overrides"
+ };
+ static const int ops[] = /* operations-supported values */
+ {
+ IPP_OP_PRINT_JOB,
+ IPP_OP_PRINT_URI,
+ IPP_OP_VALIDATE_JOB,
+ IPP_OP_CREATE_JOB,
+ IPP_OP_SEND_DOCUMENT,
+ IPP_OP_SEND_URI,
+ IPP_OP_CANCEL_JOB,
+ IPP_OP_GET_JOB_ATTRIBUTES,
+ IPP_OP_GET_JOBS,
+ IPP_OP_GET_PRINTER_ATTRIBUTES,
+ IPP_OP_GET_PRINTER_SUPPORTED_VALUES,
+ IPP_OP_CREATE_PRINTER_SUBSCRIPTIONS,
+ IPP_OP_CREATE_JOB_SUBSCRIPTIONS,
+ IPP_OP_GET_SUBSCRIPTION_ATTRIBUTES,
+ IPP_OP_GET_SUBSCRIPTIONS,
+ IPP_OP_RENEW_SUBSCRIPTION,
+ IPP_OP_CANCEL_SUBSCRIPTION,
+ IPP_OP_GET_NOTIFICATIONS,
+ IPP_OP_GET_DOCUMENT_ATTRIBUTES,
+ IPP_OP_GET_DOCUMENTS,
+ IPP_OP_CANCEL_MY_JOBS,
+ IPP_OP_CLOSE_JOB,
+ IPP_OP_IDENTIFY_PRINTER,
+ IPP_OP_VALIDATE_DOCUMENT,
+ _IPP_OP_ACKNOWLEDGE_DOCUMENT,
+ _IPP_OP_ACKNOWLEDGE_IDENTIFY_PRINTER,
+ _IPP_OP_ACKNOWLEDGE_JOB,
+ _IPP_OP_FETCH_DOCUMENT,
+ _IPP_OP_FETCH_JOB,
+ _IPP_OP_GET_OUTPUT_DEVICE_ATTRIBUTES,
+ _IPP_OP_UPDATE_ACTIVE_JOBS,
+ _IPP_OP_UPDATE_DOCUMENT_STATUS,
+ _IPP_OP_UPDATE_JOB_STATUS,
+ _IPP_OP_UPDATE_OUTPUT_DEVICE_ATTRIBUTES,
+ _IPP_OP_DEREGISTER_OUTPUT_DEVICE
+ };
+ static const char * const charsets[] =/* charset-supported values */
+ {
+ "us-ascii",
+ "utf-8"
+ };
+ static const char * const compressions[] =/* compression-supported values */
+ {
+#ifdef HAVE_LIBZ
+ "deflate",
+ "gzip",
+#endif /* HAVE_LIBZ */
+ "none"
+ };
+ static const char * const notify_attributes[] =
+ { /* notify-attributes-supported */
+ "printer-state-change-time",
+ "notify-lease-expiration-time",
+ "notify-subscriber-user-name"
+ };
+ static const char * const reference_uri_schemes_supported[] =
+ { /* reference-uri-schemes-supported */
+ "file",
+ "ftp",
+ "http"
+#ifdef HAVE_SSL
+ , "https"
+#endif /* HAVE_SSL */
+ };
+ static const char * const which_jobs[] =
+ { /* which-jobs-supported values */
+ "completed",
+ "not-completed",
+ "aborted",
+ "all",
+ "canceled",
+ "pending",
+ "pending-held",
+ "processing",
+ "processing-stopped"
+ };
+
+
+ /*
+ * Allocate memory for the printer...
+ */
+
+ if ((printer = calloc(1, sizeof(_ipp_printer_t))) == NULL)
+ {
+ perror("ippserver: Unable to allocate memory for printer");
+ return (NULL);
+ }
+
+ printer->ipv4 = -1;
+ printer->ipv6 = -1;
+ printer->name = strdup(name);
+ printer->directory = strdup(directory);
+ printer->hostname = strdup(servername);
+ printer->port = port;
+ printer->start_time = time(NULL);
+ printer->config_time = printer->start_time;
+ printer->state = IPP_PSTATE_IDLE;
+ printer->state_reasons = _IPP_PREASON_NONE;
+ printer->state_time = printer->start_time;
+ printer->jobs = cupsArrayNew3((cups_array_func_t)compare_jobs, NULL, NULL, 0, NULL, (cups_afree_func_t)delete_job);
+ printer->active_jobs = cupsArrayNew((cups_array_func_t)compare_active_jobs, NULL);
+ printer->completed_jobs = cupsArrayNew((cups_array_func_t)compare_completed_jobs, NULL);
+ printer->next_job_id = 1;
+
+ httpAssembleURI(HTTP_URI_CODING_ALL, uri, sizeof(uri), "ipp", NULL,
+ printer->hostname, printer->port, "/ipp/print");
+ printer->uri = strdup(uri);
+ printer->urilen = strlen(uri);
+
+ if (proxy_user)
+ printer->proxy_user = strdup(proxy_user);
+ if (proxy_pass)
+ printer->proxy_pass = strdup(proxy_pass);
+
+ printer->devices = cupsArrayNew((cups_array_func_t)compare_devices, NULL);
+
+ _cupsRWInit(&(printer->rwlock));
+
+ /*
+ * Create the listener sockets...
+ */
+
+ if ((printer->ipv4 = create_listener(AF_INET, printer->port)) < 0)
+ {
+ perror("Unable to create IPv4 listener");
+ goto bad_printer;
+ }
+
+ if ((printer->ipv6 = create_listener(AF_INET6, printer->port)) < 0)
+ {
+ perror("Unable to create IPv6 listener");
+ goto bad_printer;
+ }
+
+ /*
+ * Prepare values for the printer attributes...
+ */
+
+ httpAssembleURI(HTTP_URI_CODING_ALL, adminurl, sizeof(adminurl), "http", NULL, printer->hostname, printer->port, "/");
+ httpAssembleURI(HTTP_URI_CODING_ALL, supplyurl, sizeof(supplyurl), "http", NULL, printer->hostname, printer->port, "/supplies");
+
+ if (Verbosity)
+ {
+ fprintf(stderr, "printer-more-info=\"%s\"\n", adminurl);
+ fprintf(stderr, "printer-supply-info-uri=\"%s\"\n", supplyurl);
+ fprintf(stderr, "printer-uri=\"%s\"\n", uri);
+ }
+
+ /*
+ * Get the maximum spool size based on the size of the filesystem used for
+ * the spool directory. If the host OS doesn't support the statfs call
+ * or the filesystem is larger than 2TiB, always report INT_MAX.
+ */
+
+#ifdef HAVE_STATVFS
+ if (statvfs(printer->directory, &spoolinfo))
+ k_supported = INT_MAX;
+ else if ((spoolsize = (double)spoolinfo.f_frsize *
+ spoolinfo.f_blocks / 1024) > INT_MAX)
+ k_supported = INT_MAX;
+ else
+ k_supported = (int)spoolsize;
+
+#elif defined(HAVE_STATFS)
+ if (statfs(printer->directory, &spoolinfo))
+ k_supported = INT_MAX;
+ else if ((spoolsize = (double)spoolinfo.f_bsize *
+ spoolinfo.f_blocks / 1024) > INT_MAX)
+ k_supported = INT_MAX;
+ else
+ k_supported = (int)spoolsize;
+
+#else
+ k_supported = INT_MAX;
+#endif /* HAVE_STATVFS */
+
+ /*
+ * Create the printer attributes. This list of attributes is sorted to improve
+ * performance when the client provides a requested-attributes attribute...
+ */
+
+ printer->attrs = ippNew();
+
+ /* charset-configured */
+ ippAddString(printer->attrs, IPP_TAG_PRINTER,
+ IPP_CONST_TAG(IPP_TAG_CHARSET),
+ "charset-configured", NULL, "utf-8");
+
+ /* charset-supported */
+ ippAddStrings(printer->attrs, IPP_TAG_PRINTER,
+ IPP_CONST_TAG(IPP_TAG_CHARSET),
+ "charset-supported", sizeof(charsets) / sizeof(charsets[0]),
+ NULL, charsets);
+
+ /* compression-supported */
+ ippAddStrings(printer->attrs, IPP_TAG_PRINTER,
+ IPP_CONST_TAG(IPP_TAG_KEYWORD),
+ "compression-supported",
+ (int)(sizeof(compressions) / sizeof(compressions[0])), NULL,
+ compressions);
+
+ /* generated-natural-language-supported */
+ ippAddString(printer->attrs, IPP_TAG_PRINTER,
+ IPP_CONST_TAG(IPP_TAG_LANGUAGE),
+ "generated-natural-language-supported", NULL, "en");
+
+ /* ipp-features-supported */
+ ippAddStrings(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "ipp-features-supported", sizeof(features) / sizeof(features[0]), NULL, features);
+
+ /* ipp-versions-supported */
+ ippAddStrings(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "ipp-versions-supported", sizeof(versions) / sizeof(versions[0]), NULL, versions);
+
+ /* ippget-event-life */
+ ippAddInteger(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_INTEGER, "ippget-event-life", 300);
+
+ /* job-ids-supported */
+ ippAddBoolean(printer->attrs, IPP_TAG_PRINTER, "job-ids-supported", 1);
+
+ /* job-k-octets-supported */
+ ippAddRange(printer->attrs, IPP_TAG_PRINTER, "job-k-octets-supported", 0,
+ k_supported);
+
+ /* job-priority-default */
+ ippAddInteger(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_INTEGER,
+ "job-priority-default", 50);
+
+ /* job-priority-supported */
+ ippAddInteger(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_INTEGER,
+ "job-priority-supported", 100);
+
+ /* multiple-document-jobs-supported */
+ ippAddBoolean(printer->attrs, IPP_TAG_PRINTER, "multiple-document-jobs-supported", 0);
+
+ /* multiple-operation-time-out */
+ ippAddInteger(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_INTEGER, "multiple-operation-time-out", 60);
+
+ /* multiple-operation-time-out-action */
+ ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "multiple-operation-time-out-action", NULL, "abort-job");
+
+ /* natural-language-configured */
+ ippAddString(printer->attrs, IPP_TAG_PRINTER,
+ IPP_CONST_TAG(IPP_TAG_LANGUAGE),
+ "natural-language-configured", NULL, "en");
+
+ /* notify-attributes-supported */
+ ippAddStrings(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "notify-attributes-supported", sizeof(notify_attributes) / sizeof(notify_attributes[0]), NULL, notify_attributes);
+
+ /* notify-events-default */
+ ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "notify-events-default", NULL, "job-completed");
+
+ /* notify-events-supported */
+ ippAddStrings(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "notify-events-supported", sizeof(_ipp_events) / sizeof(_ipp_events[0]), NULL, _ipp_events);
+
+ /* notify-lease-duration-default */
+ ippAddInteger(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_INTEGER, "notify-lease-duration-default", 86400);
+
+ /* notify-lease-duration-supported */
+ ippAddRange(printer->attrs, IPP_TAG_PRINTER, "notify-lease-duration-supported", 0, _IPP_NOTIFY_LEASE_DURATION_MAX);
+
+ /* notify-max-events-supported */
+ ippAddInteger(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_INTEGER, "notify-lease-duration-default", (int)(sizeof(_ipp_events) / sizeof(_ipp_events[0])));
+
+ /* notify-pull-method-supported */
+ ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "notify-pull-method-supported", NULL, "ippget");
+
+ /* operations-supported */
+ ippAddIntegers(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_ENUM,
+ "operations-supported", sizeof(ops) / sizeof(ops[0]), ops);
+
+ /* printer-get-attributes-supported */
+ ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "printer-get-attributes-supported", NULL, "document-format");
+
+ /* printer-is-accepting-jobs */
+ ippAddBoolean(printer->attrs, IPP_TAG_PRINTER, "printer-is-accepting-jobs", 1);
+
+ /* printer-info */
+ ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_TEXT, "printer-info", NULL, name);
+
+ /* printer-more-info */
+ ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_URI, "printer-more-info", NULL, adminurl);
+
+ /* printer-name */
+ ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_NAME, "printer-name", NULL, name);
+
+ /* printer-supply-info-uri */
+ ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_URI, "printer-supply-info-uri", NULL, supplyurl);
+
+ /* printer-uri-supported */
+ ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_URI, "printer-uri-supported", NULL, uri);
+
+ /* printer-uuid */
+ httpAssembleUUID(printer->hostname, port, name, 0, uuid, sizeof(uuid));
+ ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_URI, "printer-uuid", NULL, uuid);
+
+ /* reference-uri-scheme-supported */
+ ippAddStrings(printer->attrs, IPP_TAG_PRINTER,
+ IPP_CONST_TAG(IPP_TAG_URISCHEME),
+ "reference-uri-schemes-supported",
+ (int)(sizeof(reference_uri_schemes_supported) /
+ sizeof(reference_uri_schemes_supported[0])),
+ NULL, reference_uri_schemes_supported);
+
+ /* uri-authentication-supported */
+ ippAddString(printer->attrs, IPP_TAG_PRINTER,
+ IPP_CONST_TAG(IPP_TAG_KEYWORD),
+ "uri-authentication-supported", NULL, "basic");
+
+ /* uri-security-supported */
+ ippAddString(printer->attrs, IPP_TAG_PRINTER,
+ IPP_CONST_TAG(IPP_TAG_KEYWORD),
+ "uri-security-supported", NULL, "tls");
+
+ /* which-jobs-supported */
+ ippAddStrings(printer->attrs, IPP_TAG_PRINTER,
+ IPP_CONST_TAG(IPP_TAG_KEYWORD),
+ "which-jobs-supported",
+ sizeof(which_jobs) / sizeof(which_jobs[0]), NULL, which_jobs);
+
+ debug_attributes("Printer", printer->attrs, 0);
+
+ /*
+ * Return it!
+ */
+
+ return (printer);
+
+
+ /*
+ * If we get here we were unable to create the printer...
+ */
+
+ bad_printer:
+
+ delete_printer(printer);
+ return (NULL);
+}
+
+
+/*
+ * 'create_subscription()' - Create a new subscription object from a
+ * Print-Job, Create-Job, or Create-xxx-Subscription
+ * request.
+ */
+
+static _ipp_subscription_t * /* O - Subscription object */
+create_subscription(
+ _ipp_printer_t *printer, /* I - Printer */
+ _ipp_job_t *job, /* I - Job, if any */
+ int interval, /* I - Interval for progress events */
+ int lease, /* I - Lease duration */
+ const char *username, /* I - User creating the subscription */
+ ipp_attribute_t *notify_events, /* I - Events to monitor */
+ ipp_attribute_t *notify_attributes, /* I - Attributes to report */
+ ipp_attribute_t *notify_user_data) /* I - User data, if any */
+{
+ _ipp_subscription_t *sub; /* Subscription */
+ ipp_attribute_t *attr; /* Subscription attribute */
+ char uuid[64]; /* notify-subscription-uuid value */
+
+
+ /*
+ * Allocate and initialize the subscription object...
+ */
+
+ if ((sub = calloc(1, sizeof(_ipp_subscription_t))) == NULL)
+ {
+ perror("Unable to allocate memory for subscription");
+ return (NULL);
+ }
+
+ _cupsRWLockWrite(&(printer->rwlock));
+
+ sub->id = printer->next_sub_id ++;
+ sub->mask = notify_events ? get_notify_events_bits(notify_events) : _IPP_EVENT_DEFAULT;
+ sub->printer = printer;
+ sub->job = job;
+ sub->interval = interval;
+ sub->lease = lease;
+ sub->attrs = ippNew();
+
+ if (lease)
+ sub->expire = time(NULL) + sub->lease;
+ else
+ sub->expire = INT_MAX;
+
+ _cupsRWInit(&(sub->rwlock));
+
+ /*
+ * Add subscription description attributes and add to the subscriptions
+ * array...
+ */
+
+ ippAddInteger(sub->attrs, IPP_TAG_SUBSCRIPTION, IPP_TAG_INTEGER, "notify-subscription-id", sub->id);
+
+ httpAssembleUUID(printer->hostname, printer->port, printer->name, -sub->id, uuid, sizeof(uuid));
+ attr = ippAddString(sub->attrs, IPP_TAG_SUBSCRIPTION, IPP_TAG_URI, "notify-subscription-uuid", NULL, uuid);
+ sub->uuid = ippGetString(attr, 0, NULL);
+
+ ippAddString(sub->attrs, IPP_TAG_SUBSCRIPTION, IPP_TAG_URI, "notify-printer-uri", NULL, printer->uri);
+
+ if (job)
+ ippAddInteger(sub->attrs, IPP_TAG_SUBSCRIPTION, IPP_TAG_INTEGER, "notify-job-id", job->id);
+ else
+ ippAddInteger(sub->attrs, IPP_TAG_SUBSCRIPTION, IPP_TAG_INTEGER, "notify-lease-duration", sub->lease);
+
+ attr = ippAddString(sub->attrs, IPP_TAG_SUBSCRIPTION, IPP_TAG_NAME, "notify-subscriber-user-name", NULL, username);
+ sub->username = ippGetString(attr, 0, NULL);
+
+ if (notify_events)
+ ippCopyAttribute(sub->attrs, notify_events, 0);
+ else
+ ippAddString(sub->attrs, IPP_TAG_SUBSCRIPTION, IPP_CONST_TAG(IPP_TAG_KEYWORD), "notify-events", NULL, _IPP_EVENT_DEFAULT_STRING);
+
+ ippAddString(sub->attrs, IPP_TAG_SUBSCRIPTION, IPP_CONST_TAG(IPP_TAG_KEYWORD), "notify-pull-method", NULL, "ippget");
+
+ if (notify_attributes)
+ ippCopyAttribute(sub->attrs, notify_attributes, 0);
+
+ if (notify_user_data)
+ ippCopyAttribute(sub->attrs, notify_user_data, 0);
+
+ sub->events = cupsArrayNew3(NULL, NULL, NULL, 0, NULL, (cups_afree_func_t)ippDelete);
+
+ cupsArrayAdd(printer->subscriptions, sub);
+
+ _cupsRWUnlock(&(printer->rwlock));
+
+ return (sub);
+}
+
+
+/*
+ * 'debug_attributes()' - Print attributes in a request or response.
+ */
+
+static void
+debug_attributes(const char *title, /* I - Title */
+ ipp_t *ipp, /* I - Request/response */
+ int type) /* I - 0 = object, 1 = request, 2 = response */
+{
+ ipp_tag_t group_tag; /* Current group */
+ ipp_attribute_t *attr; /* Current attribute */
+ char buffer[2048]; /* String buffer for value */
+ int major, minor; /* Version */
+
+
+ if (Verbosity <= 1)
+ return;
+
+ fprintf(stderr, "%s:\n", title);
+ major = ippGetVersion(ipp, &minor);
+ fprintf(stderr, " version=%d.%d\n", major, minor);
+ if (type == 1)
+ fprintf(stderr, " operation-id=%s(%04x)\n",
+ ippOpString(ippGetOperation(ipp)), ippGetOperation(ipp));
+ else if (type == 2)
+ fprintf(stderr, " status-code=%s(%04x)\n",
+ ippErrorString(ippGetStatusCode(ipp)), ippGetStatusCode(ipp));
+ fprintf(stderr, " request-id=%d\n\n", ippGetRequestId(ipp));
+
+ for (attr = ippFirstAttribute(ipp), group_tag = IPP_TAG_ZERO;
+ attr;
+ attr = ippNextAttribute(ipp))
+ {
+ if (ippGetGroupTag(attr) != group_tag)
+ {
+ group_tag = ippGetGroupTag(attr);
+ fprintf(stderr, " %s\n", ippTagString(group_tag));
+ }
+
+ if (ippGetName(attr))
+ {
+ ippAttributeString(attr, buffer, sizeof(buffer));
+ fprintf(stderr, " %s (%s%s) %s\n", ippGetName(attr),
+ ippGetCount(attr) > 1 ? "1setOf " : "",
+ ippTagString(ippGetValueTag(attr)), buffer);
+ }
+ }
+}
+
+
+/*
+ * 'delete_client()' - Close the socket and free all memory used by a client
+ * object.
+ */
+
+static void
+delete_client(_ipp_client_t *client) /* I - Client */
+{
+ if (Verbosity)
+ fprintf(stderr, "Closing connection from %s\n", client->hostname);
+
+ /*
+ * Flush pending writes before closing...
+ */
+
+ httpFlushWrite(client->http);
+
+ /*
+ * Free memory...
+ */
+
+ httpClose(client->http);
+
+ ippDelete(client->request);
+ ippDelete(client->response);
+
+ free(client);
+}
+
+
+/*
+ * 'delete_device()' - Remove a device from a printer.
+ *
+ * Note: Caller is responsible for locking the printer object.
+ */
+
+static void
+delete_device(_ipp_device_t *device) /* I - Device */
+{
+ /*
+ * Free memory used for the device...
+ */
+
+ _cupsRWDeinit(&device->rwlock);
+
+ if (device->name)
+ free(device->name);
+
+ free(device->uuid);
+
+ ippDelete(device->attrs);
+
+ free(device);
+}
+
+
+/*
+ * 'delete_job()' - Remove from the printer and free all memory used by a job
+ * object.
+ */
+
+static void
+delete_job(_ipp_job_t *job) /* I - Job */
+{
+ if (Verbosity)
+ fprintf(stderr, "Removing job #%d from history.\n", job->id);
+
+ _cupsRWLockWrite(&job->rwlock);
+
+ ippDelete(job->attrs);
+
+ if (job->filename)
+ {
+ if (!KeepFiles)
+ unlink(job->filename);
+
+ free(job->filename);
+ }
+
+ _cupsRWDeinit(&job->rwlock);
+
+ free(job);
+}
+
+
+/*
+ * 'delete_printer()' - Unregister, close listen sockets, and free all memory
+ * used by a printer object.
+ */
+
+static void
+delete_printer(_ipp_printer_t *printer) /* I - Printer */
+{
+ _cupsRWLockWrite(&printer->rwlock);
+
+ if (printer->ipv4 >= 0)
+ close(printer->ipv4);
+
+ if (printer->ipv6 >= 0)
+ close(printer->ipv6);
+
+ if (printer->name)
+ free(printer->name);
+ if (printer->directory)
+ free(printer->directory);
+ if (printer->hostname)
+ free(printer->hostname);
+ if (printer->uri)
+ free(printer->uri);
+ if (printer->proxy_user)
+ free(printer->proxy_user);
+ if (printer->proxy_pass)
+ free(printer->proxy_pass);
+
+
+ ippDelete(printer->attrs);
+ ippDelete(printer->dev_attrs);
+
+ cupsArrayDelete(printer->active_jobs);
+ cupsArrayDelete(printer->completed_jobs);
+ cupsArrayDelete(printer->jobs);
+ cupsArrayDelete(printer->subscriptions);
+
+ _cupsRWDeinit(&printer->rwlock);
+
+ free(printer);
+}
+
+
+/*
+ * 'delete_subscription()' - Delete a subscription.
+ */
+
+static void
+delete_subscription(
+ _ipp_subscription_t *sub) /* I - Subscription */
+{
+ sub->pending_delete = 1;
+
+ _cupsCondBroadcast(&SubscriptionCondition);
+
+ _cupsRWLockWrite(&sub->rwlock);
+
+ ippDelete(sub->attrs);
+ cupsArrayDelete(sub->events);
+
+ _cupsRWDeinit(&sub->rwlock);
+
+ free(sub);
+}
+
+
+/*
+ * 'filter_cb()' - Filter printer attributes based on the requested array.
+ */
+
+static int /* O - 1 to copy, 0 to ignore */
+filter_cb(_ipp_filter_t *filter, /* I - Filter parameters */
+ ipp_t *dst, /* I - Destination (unused) */
+ ipp_attribute_t *attr) /* I - Source attribute */
+{
+ /*
+ * Filter attributes as needed...
+ */
+
+ (void)dst;
+
+ ipp_tag_t group = ippGetGroupTag(attr);
+ const char *name = ippGetName(attr);
+
+ if ((filter->group_tag != IPP_TAG_ZERO && group != filter->group_tag && group != IPP_TAG_ZERO) || !name || (!strcmp(name, "media-col-database") && !cupsArrayFind(filter->ra, (void *)name)))
+ return (0);
+
+ return (!filter->ra || cupsArrayFind(filter->ra, (void *)name) != NULL);
+}
+
+
+/*
+ * 'find_device()' - Find a device.
+ */
+
+static _ipp_device_t * /* I - Device */
+find_device(_ipp_client_t *client) /* I - Client */
+{
+ ipp_attribute_t *uuid; /* output-device-uuid */
+ _ipp_device_t key, /* Search key */
+ *device; /* Matching device */
+
+
+ if ((uuid = ippFindAttribute(client->request, "output-device-uuid", IPP_TAG_URI)) == NULL)
+ return (NULL);
+
+ key.uuid = (char *)ippGetString(uuid, 0, NULL);
+
+ _cupsRWLockRead(&client->printer->rwlock);
+ device = (_ipp_device_t *)cupsArrayFind(client->printer->devices, &key);
+ _cupsRWUnlock(&client->printer->rwlock);
+
+ return (device);
+}
+
+
+/*
+ * 'find_job()' - Find a job specified in a request.
+ */
+
+static _ipp_job_t * /* O - Job or NULL */
+find_job(_ipp_client_t *client, /* I - Client */
+ int job_id) /* I - Job ID to find or 0 to lookup */
+{
+ ipp_attribute_t *attr; /* job-id or job-uri attribute */
+ _ipp_job_t key, /* Job search key */
+ *job; /* Matching job, if any */
+
+
+ if (job_id > 0)
+ {
+ key.id = job_id;
+ }
+ else if ((attr = ippFindAttribute(client->request, "job-uri", IPP_TAG_URI)) != NULL)
+ {
+ const char *uri = ippGetString(attr, 0, NULL);
+
+ if (!strncmp(uri, client->printer->uri, client->printer->urilen) &&
+ uri[client->printer->urilen] == '/')
+ key.id = atoi(uri + client->printer->urilen + 1);
+ else
+ return (NULL);
+ }
+ else if ((attr = ippFindAttribute(client->request, "job-id", IPP_TAG_INTEGER)) != NULL)
+ {
+ key.id = ippGetInteger(attr, 0);
+ }
+
+ _cupsRWLockRead(&(client->printer->rwlock));
+ job = (_ipp_job_t *)cupsArrayFind(client->printer->jobs, &key);
+ _cupsRWUnlock(&(client->printer->rwlock));
+
+ return (job);
+}
+
+
+/*
+ * 'find_subscription()' - Find a subcription.
+ */
+
+static _ipp_subscription_t * /* O - Subscription */
+find_subscription(_ipp_client_t *client,/* I - Client */
+ int sub_id) /* I - Subscription ID or 0 */
+{
+ ipp_attribute_t *notify_subscription_id;
+ /* notify-subscription-id */
+ _ipp_subscription_t key, /* Search key */
+ *sub; /* Matching subscription */
+
+
+ if (sub_id > 0)
+ key.id = sub_id;
+ else if ((notify_subscription_id = ippFindAttribute(client->request, "notify-subscription-id", IPP_TAG_INTEGER)) == NULL)
+ return (NULL);
+ else
+ key.id = ippGetInteger(notify_subscription_id, 0);
+
+ _cupsRWLockRead(&client->printer->rwlock);
+ sub = (_ipp_subscription_t *)cupsArrayFind(client->printer->subscriptions, &key);
+ _cupsRWUnlock(&client->printer->rwlock);
+
+ return (sub);
+}
+
+
+/*
+ * 'get_job_state_reasons_bits()' - Get the bits associates with "job-state-reasons" values.
+ */
+
+static _ipp_jreason_t /* O - Bits */
+get_job_state_reasons_bits(
+ ipp_attribute_t *attr) /* I - "job-state-reasons" attribute */
+{
+ int i, j, /* Looping vars */
+ count; /* Number of "job-state-reasons" values */
+ const char *keyword; /* "job-state-reasons" value */
+ _ipp_jreason_t jreasons = _IPP_JREASON_NONE;
+ /* Bits for "job-state-reasons" values */
+
+
+ count = ippGetCount(attr);
+ for (i = 0; i < count; i ++)
+ {
+ keyword = ippGetString(attr, i, NULL);
+
+ for (j = 0; j < (int)(sizeof(_ipp_jreasons) / sizeof(_ipp_jreasons[0])); j ++)
+ {
+ if (!strcmp(keyword, _ipp_jreasons[j]))
+ {
+ jreasons |= 1 << j;
+ break;
+ }
+ }
+ }
+
+ return (jreasons);
+}
+
+
+/*
+ * 'get_notify_event_bits()' - Get the bits associated with "notify-events" values.
+ */
+
+static _ipp_event_t /* O - Bits */
+get_notify_events_bits(
+ ipp_attribute_t *attr) /* I - "notify-events" attribute */
+{
+ int i, j, /* Looping vars */
+ count; /* Number of "notify-events" values */
+ const char *keyword; /* "notify-events" value */
+ _ipp_event_t events = _IPP_EVENT_NONE;
+ /* Bits for "notify-events" values */
+
+
+ count = ippGetCount(attr);
+ for (i = 0; i < count; i ++)
+ {
+ keyword = ippGetString(attr, i, NULL);
+
+ for (j = 0; j < (int)(sizeof(_ipp_events) / sizeof(_ipp_events[0])); j ++)
+ {
+ if (!strcmp(keyword, _ipp_jreasons[j]))
+ {
+ events |= 1 << j;
+ break;
+ }
+ }
+ }
+
+ return (events);
+}
+
+
+/*
+ * 'get_notify_subscribed_event()' - Get the event name.
+ */
+
+static const char * /* O - Event name */
+get_notify_subscribed_event(
+ _ipp_event_t event) /* I - Event bit */
+{
+ int i; /* Looping var */
+ _ipp_event_t mask; /* Current mask */
+
+ for (i = 0, mask = 1; i < (int)(sizeof(_ipp_events) / sizeof(_ipp_events[0])); i ++, mask <<= 1)
+ if (event & mask)
+ return (_ipp_events[i]);
+
+ return ("none");
+}
+
+
+/*
+ * 'get_printer_state_reasons_bits()' - Get the bits associated with "printer-state-reasons" values.
+ */
+
+static _ipp_preason_t /* O - Bits */
+get_printer_state_reasons_bits(
+ ipp_attribute_t *attr) /* I - "printer-state-reasons" bits */
+{
+ int i, j, /* Looping vars */
+ count; /* Number of "printer-state-reasons" values */
+ const char *keyword; /* "printer-state-reasons" value */
+ _ipp_preason_t preasons = _IPP_PREASON_NONE;
+ /* Bits for "printer-state-reasons" values */
+
+
+ count = ippGetCount(attr);
+ for (i = 0; i < count; i ++)
+ {
+ keyword = ippGetString(attr, i, NULL);
+
+ for (j = 0; j < (int)(sizeof(_ipp_preasons) / sizeof(_ipp_preasons[0])); j ++)
+ {
+ if (!strcmp(keyword, _ipp_preasons[j]))
+ {
+ preasons |= 1 << j;
+ break;
+ }
+ }
+ }
+
+ return (preasons);
+}
+
+
+/*
+ * 'html_escape()' - Write a HTML-safe string.
+ */
+
+static void
+html_escape(_ipp_client_t *client, /* I - Client */
+ const char *s, /* I - String to write */
+ size_t slen) /* I - Number of characters to write */
+{
+ const char *start, /* Start of segment */
+ *end; /* End of string */
+
+
+ start = s;
+ end = s + (slen > 0 ? slen : strlen(s));
+
+ while (*s && s < end)
+ {
+ if (*s == '&' || *s == '<')
+ {
+ if (s > start)
+ httpWrite2(client->http, start, (size_t)(s - start));
+
+ if (*s == '&')
+ httpWrite2(client->http, "&amp;", 5);
+ else
+ httpWrite2(client->http, "&lt;", 4);
+
+ start = s + 1;
+ }
+
+ s ++;
+ }
+
+ if (s > start)
+ httpWrite2(client->http, start, (size_t)(s - start));
+}
+
+
+/*
+ * 'html_footer()' - Show the web interface footer.
+ *
+ * This function also writes the trailing 0-length chunk.
+ */
+
+static void
+html_footer(_ipp_client_t *client) /* I - Client */
+{
+ html_printf(client,
+ "</div>\n"
+ "</body>\n"
+ "</html>\n");
+ httpWrite2(client->http, "", 0);
+}
+
+
+/*
+ * 'html_header()' - Show the web interface header and title.
+ */
+
+static void
+html_header(_ipp_client_t *client, /* I - Client */
+ const char *title) /* I - Title */
+{
+ html_printf(client,
+ "<!doctype html>\n"
+ "<html>\n"
+ "<head>\n"
+ "<title>%s</title>\n"
+ "<link rel=\"shortcut icon\" href=\"/icon.png\" type=\"image/png\">\n"
+ "<link rel=\"apple-touch-icon\" href=\"/icon.png\" type=\"image/png\">\n"
+ "<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\">\n"
+ "<meta name=\"viewport\" content=\"width=device-width\">\n"
+ "<style>\n"
+ "body { font-family: sans-serif; margin: 0; }\n"
+ "div.body { padding: 0px 10px 10px; }\n"
+ "blockquote { background: #dfd; border-radius: 5px; color: #006; padding: 10px; }\n"
+ "table.form { border-collapse: collapse; margin-top: 10px; width: 100%%; }\n"
+ "table.form td, table.form th { padding: 5px 2px; width: 50%%; }\n"
+ "table.form th { text-align: right; }\n"
+ "table.striped { border-bottom: solid thin black; border-collapse: collapse; width: 100%%; }\n"
+ "table.striped tr:nth-child(even) { background: #fcfcfc; }\n"
+ "table.striped tr:nth-child(odd) { background: #f0f0f0; }\n"
+ "table.striped th { background: white; border-bottom: solid thin black; text-align: left; vertical-align: bottom; }\n"
+ "table.striped td { margin: 0; padding: 5px; vertical-align: top; }\n"
+ "table.nav { border-collapse: collapse; width: 100%%; }\n"
+ "table.nav td { margin: 0; text-align: center; }\n"
+ "td.nav a, td.nav a:active, td.nav a:hover, td.nav a:hover:link, td.nav a:hover:link:visited, td.nav a:link, td.nav a:link:visited, td.nav a:visited { background: inherit; color: inherit; font-size: 80%%; text-decoration: none; }\n"
+ "td.nav { background: #333; color: #fff; padding: 4px 8px; width: 33%%; }\n"
+ "td.nav.sel { background: #fff; color: #000; font-weight: bold; }\n"
+ "td.nav:hover { background: #666; color: #fff; }\n"
+ "td.nav:active { background: #000; color: #ff0; }\n"
+ "</style>\n"
+ "</head>\n"
+ "<body>\n"
+ "<table class=\"nav\"><tr>"
+ "<td class=\"nav%s\"><a href=\"/\">Status</a></td>"
+ "<td class=\"nav%s\"><a href=\"/supplies\">Supplies</a></td>"
+ "<td class=\"nav%s\"><a href=\"/media\">Media</a></td>"
+ "</tr></table>\n"
+ "<div class=\"body\">\n", title, !strcmp(client->uri, "/") ? " sel" : "", !strcmp(client->uri, "/supplies") ? " sel" : "", !strcmp(client->uri, "/media") ? " sel" : "");
+}
+
+
+/*
+ * 'html_printf()' - Send formatted text to the client, quoting as needed.
+ */
+
+static void
+html_printf(_ipp_client_t *client, /* I - Client */
+ const char *format, /* I - Printf-style format string */
+ ...) /* I - Additional arguments as needed */
+{
+ va_list ap; /* Pointer to arguments */
+ const char *start; /* Start of string */
+ char size, /* Size character (h, l, L) */
+ type; /* Format type character */
+ int width, /* Width of field */
+ prec; /* Number of characters of precision */
+ char tformat[100], /* Temporary format string for sprintf() */
+ *tptr, /* Pointer into temporary format */
+ temp[1024]; /* Buffer for formatted numbers */
+ char *s; /* Pointer to string */
+
+
+ /*
+ * Loop through the format string, formatting as needed...
+ */
+
+ va_start(ap, format);
+ start = format;
+
+ while (*format)
+ {
+ if (*format == '%')
+ {
+ if (format > start)
+ httpWrite2(client->http, start, (size_t)(format - start));
+
+ tptr = tformat;
+ *tptr++ = *format++;
+
+ if (*format == '%')
+ {
+ httpWrite2(client->http, "%", 1);
+ format ++;
+ start = format;
+ continue;
+ }
+ else if (strchr(" -+#\'", *format))
+ *tptr++ = *format++;
+
+ if (*format == '*')
+ {
+ /*
+ * Get width from argument...
+ */
+
+ format ++;
+ width = va_arg(ap, int);
+
+ snprintf(tptr, sizeof(tformat) - (size_t)(tptr - tformat), "%d", width);
+ tptr += strlen(tptr);
+ }
+ else
+ {
+ width = 0;
+
+ while (isdigit(*format & 255))
+ {
+ if (tptr < (tformat + sizeof(tformat) - 1))
+ *tptr++ = *format;
+
+ width = width * 10 + *format++ - '0';
+ }
+ }
+
+ if (*format == '.')
+ {
+ if (tptr < (tformat + sizeof(tformat) - 1))
+ *tptr++ = *format;
+
+ format ++;
+
+ if (*format == '*')
+ {
+ /*
+ * Get precision from argument...
+ */
+
+ format ++;
+ prec = va_arg(ap, int);
+
+ snprintf(tptr, sizeof(tformat) - (size_t)(tptr - tformat), "%d", prec);
+ tptr += strlen(tptr);
+ }
+ else
+ {
+ prec = 0;
+
+ while (isdigit(*format & 255))
+ {
+ if (tptr < (tformat + sizeof(tformat) - 1))
+ *tptr++ = *format;
+
+ prec = prec * 10 + *format++ - '0';
+ }
+ }
+ }
+
+ if (*format == 'l' && format[1] == 'l')
+ {
+ size = 'L';
+
+ if (tptr < (tformat + sizeof(tformat) - 2))
+ {
+ *tptr++ = 'l';
+ *tptr++ = 'l';
+ }
+
+ format += 2;
+ }
+ else if (*format == 'h' || *format == 'l' || *format == 'L')
+ {
+ if (tptr < (tformat + sizeof(tformat) - 1))
+ *tptr++ = *format;
+
+ size = *format++;
+ }
+ else
+ size = 0;
+
+
+ if (!*format)
+ {
+ start = format;
+ break;
+ }
+
+ if (tptr < (tformat + sizeof(tformat) - 1))
+ *tptr++ = *format;
+
+ type = *format++;
+ *tptr = '\0';
+ start = format;
+
+ switch (type)
+ {
+ case 'E' : /* Floating point formats */
+ case 'G' :
+ case 'e' :
+ case 'f' :
+ case 'g' :
+ if ((size_t)(width + 2) > sizeof(temp))
+ break;
+
+ sprintf(temp, tformat, va_arg(ap, double));
+
+ httpWrite2(client->http, temp, strlen(temp));
+ break;
+
+ case 'B' : /* Integer formats */
+ case 'X' :
+ case 'b' :
+ case 'd' :
+ case 'i' :
+ case 'o' :
+ case 'u' :
+ case 'x' :
+ if ((size_t)(width + 2) > sizeof(temp))
+ break;
+
+# ifdef HAVE_LONG_LONG
+ if (size == 'L')
+ sprintf(temp, tformat, va_arg(ap, long long));
+ else
+# endif /* HAVE_LONG_LONG */
+ if (size == 'l')
+ sprintf(temp, tformat, va_arg(ap, long));
+ else
+ sprintf(temp, tformat, va_arg(ap, int));
+
+ httpWrite2(client->http, temp, strlen(temp));
+ break;
+
+ case 'p' : /* Pointer value */
+ if ((size_t)(width + 2) > sizeof(temp))
+ break;
+
+ sprintf(temp, tformat, va_arg(ap, void *));
+
+ httpWrite2(client->http, temp, strlen(temp));
+ break;
+
+ case 'c' : /* Character or character array */
+ if (width <= 1)
+ {
+ temp[0] = (char)va_arg(ap, int);
+ temp[1] = '\0';
+ html_escape(client, temp, 1);
+ }
+ else
+ html_escape(client, va_arg(ap, char *), (size_t)width);
+ break;
+
+ case 's' : /* String */
+ if ((s = va_arg(ap, char *)) == NULL)
+ s = "(null)";
+
+ html_escape(client, s, strlen(s));
+ break;
+ }
+ }
+ else
+ format ++;
+ }
+
+ if (format > start)
+ httpWrite2(client->http, start, (size_t)(format - start));
+
+ va_end(ap);
+}
+
+
+/*
+ * 'ipp_acknowledge_document()' - Acknowledge receipt of a document.
+ */
+
+static void
+ipp_acknowledge_document(
+ _ipp_client_t *client) /* I - Client */
+{
+ _ipp_device_t *device; /* Device */
+ _ipp_job_t *job; /* Job */
+ ipp_attribute_t *attr; /* Attribute */
+
+
+ if ((device = find_device(client)) == NULL)
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_NOT_FOUND, "Device was not found.");
+ return;
+ }
+
+ if ((job = find_job(client, 0)) == NULL)
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_NOT_FOUND, "Job was not found.");
+ return;
+ }
+
+ if (!job->dev_uuid || strcmp(job->dev_uuid, device->uuid))
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_NOT_POSSIBLE, "Job not assigned to device.");
+ return;
+ }
+
+ if ((attr = ippFindAttribute(client->request, "document-number", IPP_TAG_ZERO)) == NULL || ippGetGroupTag(attr) != IPP_TAG_OPERATION || ippGetValueTag(attr) != IPP_TAG_INTEGER || ippGetCount(attr) != 1 || ippGetInteger(attr, 0) != 1)
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST, attr ? "Bad document-number attribute." : "Missing document-number attribute.");
+ return;
+ }
+
+ respond_ipp(client, IPP_STATUS_OK, NULL);
+}
+
+
+/*
+ * 'ipp_acknowledge_identify_printer()' - Acknowledge an identify command.
+ */
+
+static void
+ipp_acknowledge_identify_printer(
+ _ipp_client_t *client) /* I - Client */
+{
+ // TODO: Implement this!
+ respond_ipp(client, IPP_STATUS_ERROR_NOT_POSSIBLE, "Need to implement this.");
+}
+
+
+/*
+ * 'ipp_acknowledge_job()' - Acknowledge receipt of a job.
+ */
+
+static void
+ipp_acknowledge_job(
+ _ipp_client_t *client) /* I - Client */
+{
+ _ipp_device_t *device; /* Device */
+ _ipp_job_t *job; /* Job */
+
+
+ if ((device = find_device(client)) == NULL)
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_NOT_FOUND, "Device was not found.");
+ return;
+ }
+
+ if ((job = find_job(client, 0)) == NULL)
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_NOT_FOUND, "Job was not found.");
+ return;
+ }
+
+ if (job->dev_uuid && strcmp(job->dev_uuid, device->uuid))
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_NOT_AUTHORIZED, "Job not assigned to device.");
+ return;
+ }
+
+ if (!(job->state_reasons & _IPP_JREASON_JOB_FETCHABLE))
+ {
+ respond_ipp(client, _IPP_STATUS_ERROR_NOT_FETCHABLE, "Job not fetchable.");
+ return;
+ }
+
+ if (!job->dev_uuid)
+ job->dev_uuid = strdup(device->uuid);
+
+ job->state_reasons &= (_ipp_jreason_t)~_IPP_JREASON_JOB_FETCHABLE;
+
+ add_event(client->printer, job, _IPP_EVENT_JOB_STATE_CHANGED, "Job acknowledged.");
+
+ respond_ipp(client, IPP_STATUS_OK, NULL);
+}
+
+
+/*
+ * 'ipp_cancel_job()' - Cancel a job.
+ */
+
+static void
+ipp_cancel_job(_ipp_client_t *client) /* I - Client */
+{
+ _ipp_job_t *job; /* Job information */
+
+
+ /*
+ * Get the job...
+ */
+
+ if ((job = find_job(client, 0)) == NULL)
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_NOT_FOUND, "Job does not exist.");
+ return;
+ }
+
+ /*
+ * See if the job is already completed, canceled, or aborted; if so,
+ * we can't cancel...
+ */
+
+ switch (job->state)
+ {
+ case IPP_JSTATE_CANCELED :
+ respond_ipp(client, IPP_STATUS_ERROR_NOT_POSSIBLE,
+ "Job #%d is already canceled - can\'t cancel.", job->id);
+ break;
+
+ case IPP_JSTATE_ABORTED :
+ respond_ipp(client, IPP_STATUS_ERROR_NOT_POSSIBLE,
+ "Job #%d is already aborted - can\'t cancel.", job->id);
+ break;
+
+ case IPP_JSTATE_COMPLETED :
+ respond_ipp(client, IPP_STATUS_ERROR_NOT_POSSIBLE,
+ "Job #%d is already completed - can\'t cancel.", job->id);
+ break;
+
+ default :
+ /*
+ * Cancel the job...
+ */
+
+ _cupsRWLockWrite(&(client->printer->rwlock));
+
+ if (job->state == IPP_JSTATE_PROCESSING ||
+ (job->state == IPP_JSTATE_HELD && job->fd >= 0))
+ job->cancel = 1;
+ else
+ {
+ job->state = IPP_JSTATE_CANCELED;
+ job->completed = time(NULL);
+ }
+
+ _cupsRWUnlock(&(client->printer->rwlock));
+
+ add_event(client->printer, job, _IPP_EVENT_JOB_COMPLETED, NULL);
+
+ respond_ipp(client, IPP_STATUS_OK, NULL);
+ break;
+ }
+}
+
+
+/*
+ * 'ipp_cancel_my_jobs()' - Cancel a user's jobs.
+ */
+
+static void
+ipp_cancel_my_jobs(
+ _ipp_client_t *client) /* I - Client */
+{
+ // TODO: Implement this!
+ respond_ipp(client, IPP_STATUS_ERROR_NOT_POSSIBLE, "Need to implement this.");
+}
+
+
+/*
+ * 'ipp_cancel_subscription()' - Cancel a subscription.
+ */
+
+static void
+ipp_cancel_subscription(
+ _ipp_client_t *client) /* I - Client */
+{
+ _ipp_subscription_t *sub; /* Subscription */
+
+
+ if ((sub = find_subscription(client, 0)) == NULL)
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_NOT_FOUND, "Subscription was not found.");
+ return;
+ }
+
+ _cupsRWLockWrite(&client->printer->rwlock);
+ cupsArrayRemove(client->printer->subscriptions, sub);
+ delete_subscription(sub);
+ _cupsRWUnlock(&client->printer->rwlock);
+ respond_ipp(client, IPP_STATUS_OK, NULL);
+}
+
+
+/*
+ * 'ipp_close_job()' - Close an open job.
+ */
+
+static void
+ipp_close_job(_ipp_client_t *client) /* I - Client */
+{
+ _ipp_job_t *job; /* Job information */
+
+
+ /*
+ * Get the job...
+ */
+
+ if ((job = find_job(client, 0)) == NULL)
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_NOT_FOUND, "Job does not exist.");
+ return;
+ }
+
+ /*
+ * See if the job is already completed, canceled, or aborted; if so,
+ * we can't cancel...
+ */
+
+ switch (job->state)
+ {
+ case IPP_JSTATE_CANCELED :
+ respond_ipp(client, IPP_STATUS_ERROR_NOT_POSSIBLE,
+ "Job #%d is canceled - can\'t close.", job->id);
+ break;
+
+ case IPP_JSTATE_ABORTED :
+ respond_ipp(client, IPP_STATUS_ERROR_NOT_POSSIBLE,
+ "Job #%d is aborted - can\'t close.", job->id);
+ break;
+
+ case IPP_JSTATE_COMPLETED :
+ respond_ipp(client, IPP_STATUS_ERROR_NOT_POSSIBLE,
+ "Job #%d is completed - can\'t close.", job->id);
+ break;
+
+ case IPP_JSTATE_PROCESSING :
+ case IPP_JSTATE_STOPPED :
+ respond_ipp(client, IPP_STATUS_ERROR_NOT_POSSIBLE,
+ "Job #%d is already closed.", job->id);
+ break;
+
+ default :
+ respond_ipp(client, IPP_STATUS_OK, NULL);
+ break;
+ }
+}
+
+
+/*
+ * 'ipp_create_job()' - Create a job object.
+ */
+
+static void
+ipp_create_job(_ipp_client_t *client) /* I - Client */
+{
+ _ipp_job_t *job; /* New job */
+ cups_array_t *ra; /* Attributes to send in response */
+
+
+ /*
+ * Validate print job attributes...
+ */
+
+ if (!valid_job_attributes(client))
+ {
+ httpFlush(client->http);
+ return;
+ }
+
+ /*
+ * Do we have a file to print?
+ */
+
+ if (httpGetState(client->http) == HTTP_STATE_POST_RECV)
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST,
+ "Unexpected document data following request.");
+ return;
+ }
+
+ /*
+ * Create the job...
+ */
+
+ if ((job = create_job(client)) == NULL)
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_TOO_MANY_JOBS, "Too many jobs are queued.");
+ return;
+ }
+
+ /*
+ * Return the job info...
+ */
+
+ respond_ipp(client, IPP_STATUS_OK, NULL);
+
+ ra = cupsArrayNew((cups_array_func_t)strcmp, NULL);
+ cupsArrayAdd(ra, "job-id");
+ cupsArrayAdd(ra, "job-state");
+ cupsArrayAdd(ra, "job-state-message");
+ cupsArrayAdd(ra, "job-state-reasons");
+ cupsArrayAdd(ra, "job-uri");
+
+ copy_job_attributes(client, job, ra);
+ cupsArrayDelete(ra);
+
+ /*
+ * Add any subscriptions...
+ */
+
+ client->job = job;
+ ipp_create_xxx_subscriptions(client);
+}
+
+
+/*
+ * 'ipp_create_xxx_subscriptions()' - Create job and printer subscriptions.
+ */
+
+static void
+ipp_create_xxx_subscriptions(
+ _ipp_client_t *client)
+{
+ _ipp_subscription_t *sub; /* Subscription */
+ ipp_attribute_t *attr; /* Subscription attribute */
+ const char *username; /* requesting-user-name or
+ authenticated username */
+ int num_subs = 0, /* Number of subscriptions */
+ ok_subs = 0; /* Number of good subscriptions */
+
+
+ /*
+ * For the Create-xxx-Subscriptions operations, queue up a successful-ok
+ * response...
+ */
+
+ if (ippGetOperation(client->request) == IPP_OP_CREATE_JOB_SUBSCRIPTIONS || ippGetOperation(client->request) == IPP_OP_CREATE_PRINTER_SUBSCRIPTIONS)
+ respond_ipp(client, IPP_STATUS_OK, NULL);
+
+ /*
+ * Get the authenticated user name, if any...
+ */
+
+ if (client->username[0])
+ username = client->username;
+ else if ((attr = ippFindAttribute(client->request, "requesting-user-name", IPP_TAG_NAME)) != NULL && ippGetGroupTag(attr) == IPP_TAG_OPERATION && ippGetCount(attr) == 1)
+ username = ippGetString(attr, 0, NULL);
+ else
+ username = "guest";
+
+ /*
+ * Skip past the initial attributes to the first subscription group.
+ */
+
+ attr = ippFirstAttribute(client->request);
+ while (attr && ippGetGroupTag(attr) != IPP_TAG_SUBSCRIPTION)
+ attr = ippNextAttribute(client->request);
+
+ while (attr)
+ {
+ _ipp_job_t *job = NULL; /* Job */
+ const char *attrname, /* Attribute name */
+ *pullmethod = NULL;
+ /* notify-pull-method */
+ ipp_attribute_t *notify_attributes = NULL,
+ /* notify-attributes */
+ *notify_events = NULL,
+ /* notify-events */
+ *notify_user_data = NULL;
+ /* notify-user-data */
+ int interval = 0, /* notify-time-interval */
+ lease = _IPP_NOTIFY_LEASE_DURATION_DEFAULT;
+ /* notify-lease-duration */
+ ipp_status_t status = IPP_STATUS_OK;
+ /* notify-status-code */
+
+ num_subs ++;
+
+ while (attr)
+ {
+ if ((attrname = ippGetName(attr)) == NULL)
+ break;
+
+ if (!strcmp(attrname, "notify-recipient-uri"))
+ {
+ /*
+ * Push notifications not supported.
+ */
+
+ status = IPP_STATUS_ERROR_ATTRIBUTES_OR_VALUES;
+ ippCopyAttribute(client->response, attr, 0);
+ }
+ else if (!strcmp(attrname, "notify-pull-method"))
+ {
+ pullmethod = ippGetString(attr, 0, NULL);
+
+ if (ippGetValueTag(attr) != IPP_TAG_KEYWORD || ippGetCount(attr) != 1 || !pullmethod || strcmp(pullmethod, "ippget"))
+ {
+ ippCopyAttribute(client->response, attr, 0);
+ pullmethod = NULL;
+ status = IPP_STATUS_ERROR_ATTRIBUTES_OR_VALUES;
+ }
+ }
+ else if (!strcmp(attrname, "notify-attributes"))
+ {
+ if (ippGetValueTag(attr) != IPP_TAG_KEYWORD)
+ {
+ status = IPP_STATUS_ERROR_ATTRIBUTES_OR_VALUES;
+ ippCopyAttribute(client->response, attr, 0);
+ }
+
+ notify_attributes = attr;
+ }
+ else if (!strcmp(attrname, "notify-charset"))
+ {
+ if (ippGetValueTag(attr) != IPP_TAG_CHARSET || ippGetCount(attr) != 1 ||
+ (strcmp(ippGetString(attr, 0, NULL), "us-ascii") && strcmp(ippGetString(attr, 0, NULL), "utf-8")))
+ {
+ status = IPP_STATUS_ERROR_ATTRIBUTES_OR_VALUES;
+ ippCopyAttribute(client->response, attr, 0);
+ }
+ }
+ else if (!strcmp(attrname, "notify-natural-language"))
+ {
+ if (ippGetValueTag(attr) != IPP_TAG_LANGUAGE || ippGetCount(attr) != 1 || strcmp(ippGetString(attr, 0, NULL), "en"))
+ {
+ status = IPP_STATUS_ERROR_ATTRIBUTES_OR_VALUES;
+ ippCopyAttribute(client->response, attr, 0);
+ }
+ }
+ else if (!strcmp(attrname, "notify-user-data"))
+ {
+ int datalen; /* Length of data */
+
+ if (ippGetValueTag(attr) != IPP_TAG_STRING || ippGetCount(attr) != 1 || !ippGetOctetString(attr, 0, &datalen) || datalen > 63)
+ {
+ status = IPP_STATUS_ERROR_ATTRIBUTES_OR_VALUES;
+ ippCopyAttribute(client->response, attr, 0);
+ }
+ else
+ notify_user_data = attr;
+ }
+ else if (!strcmp(attrname, "notify-events"))
+ {
+ if (ippGetValueTag(attr) != IPP_TAG_KEYWORD)
+ {
+ status = IPP_STATUS_ERROR_ATTRIBUTES_OR_VALUES;
+ ippCopyAttribute(client->response, attr, 0);
+ }
+ else
+ notify_events = attr;
+ }
+ else if (!strcmp(attrname, "notify-lease-duration"))
+ {
+ if (ippGetValueTag(attr) != IPP_TAG_INTEGER || ippGetCount(attr) != 1 || ippGetInteger(attr, 0) < 0)
+ {
+ status = IPP_STATUS_ERROR_ATTRIBUTES_OR_VALUES;
+ ippCopyAttribute(client->response, attr, 0);
+ }
+ else
+ lease = ippGetInteger(attr, 0);
+ }
+ else if (!strcmp(attrname, "notify-time-interval"))
+ {
+ if (ippGetValueTag(attr) != IPP_TAG_INTEGER || ippGetCount(attr) != 1 || ippGetInteger(attr, 0) < 0)
+ {
+ status = IPP_STATUS_ERROR_ATTRIBUTES_OR_VALUES;
+ ippCopyAttribute(client->response, attr, 0);
+ }
+ else
+ interval = ippGetInteger(attr, 0);
+ }
+ else if (!strcmp(attrname, "notify-job-id"))
+ {
+ if (ippGetOperation(client->request) != IPP_OP_CREATE_JOB_SUBSCRIPTIONS || ippGetValueTag(attr) != IPP_TAG_INTEGER || ippGetInteger(attr, 0) < 1)
+ {
+ status = IPP_STATUS_ERROR_ATTRIBUTES_OR_VALUES;
+ ippCopyAttribute(client->response, attr, 0);
+ }
+ else if ((job = find_job(client, ippGetInteger(attr, 0))) == NULL)
+ {
+ status = IPP_STATUS_ERROR_NOT_FOUND;
+ ippCopyAttribute(client->response, attr, 0);
+ }
+ }
+
+ attr = ippNextAttribute(client->request);
+ }
+
+ if (status)
+ {
+ ippAddInteger(client->response, IPP_TAG_SUBSCRIPTION, IPP_TAG_ENUM, "notify-status-code", status);
+ }
+ else if (!pullmethod)
+ {
+ ippAddInteger(client->response, IPP_TAG_SUBSCRIPTION, IPP_TAG_ENUM, "notify-status-code", IPP_STATUS_ERROR_BAD_REQUEST);
+ }
+ else
+ {
+ switch (ippGetOperation(client->request))
+ {
+ case IPP_OP_PRINT_JOB :
+ case IPP_OP_PRINT_URI :
+ case IPP_OP_CREATE_JOB :
+ job = client->job;
+ break;
+
+ default :
+ break;
+ }
+
+ if ((sub = create_subscription(client->printer, job, interval, lease, username, notify_events, notify_attributes, notify_user_data)) == NULL)
+ {
+ ippAddInteger(client->response, IPP_TAG_SUBSCRIPTION, IPP_TAG_INTEGER, "notify-subscription-id", sub->id);
+ ok_subs ++;
+ }
+ else
+ ippAddInteger(client->response, IPP_TAG_SUBSCRIPTION, IPP_TAG_ENUM, "notify-status-code", IPP_STATUS_ERROR_INTERNAL);
+ }
+ }
+
+ if (ok_subs == 0)
+ ippSetStatusCode(client->response, IPP_STATUS_ERROR_IGNORED_ALL_SUBSCRIPTIONS);
+ else if (ok_subs != num_subs)
+ ippSetStatusCode(client->response, IPP_STATUS_OK_IGNORED_SUBSCRIPTIONS);
+}
+
+
+/*
+ * 'ipp_deregister_output_device()' - Unregister an output device.
+ */
+
+static void
+ipp_deregister_output_device(
+ _ipp_client_t *client) /* I - Client */
+{
+ _ipp_device_t *device; /* Device */
+
+
+ /*
+ * Find the device...
+ */
+
+ if ((device = find_device(client)) == NULL)
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_NOT_FOUND, "Output device not found.");
+ return;
+ }
+
+ /*
+ * Remove the device from the printer...
+ */
+
+ _cupsRWLockWrite(&client->printer->rwlock);
+
+ cupsArrayRemove(client->printer->devices, device);
+
+ update_device_attributes_no_lock(client->printer);
+ update_device_state_no_lock(client->printer);
+
+ _cupsRWUnlock(&client->printer->rwlock);
+
+ /*
+ * Delete the device...
+ */
+
+ delete_device(device);
+
+ respond_ipp(client, IPP_STATUS_OK, NULL);
+}
+
+
+/*
+ * 'ipp_fetch_document()' - Download a document.
+ */
+
+static void
+ipp_fetch_document(
+ _ipp_client_t *client) /* I - Client */
+{
+ _ipp_device_t *device; /* Device */
+ _ipp_job_t *job; /* Job */
+ ipp_attribute_t *attr; /* Attribute */
+ int compression; /* compression */
+ char filename[1024]; /* Job filename */
+ const char *format; /* document-format */
+
+
+ if ((device = find_device(client)) == NULL)
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_NOT_FOUND, "Device was not found.");
+ return;
+ }
+
+ if ((job = find_job(client, 0)) == NULL)
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_NOT_FOUND, "Job was not found.");
+ return;
+ }
+
+ if (!job->dev_uuid || strcmp(job->dev_uuid, device->uuid))
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_NOT_POSSIBLE, "Job not assigned to device.");
+ return;
+ }
+
+ if ((attr = ippFindAttribute(client->request, "document-number", IPP_TAG_ZERO)) == NULL || ippGetGroupTag(attr) != IPP_TAG_OPERATION || ippGetValueTag(attr) != IPP_TAG_INTEGER || ippGetCount(attr) != 1 || ippGetInteger(attr, 0) != 1)
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST, attr ? "Bad document-number attribute." : "Missing document-number attribute.");
+ return;
+ }
+
+ if ((attr = ippFindAttribute(client->request, "compression-accepted", IPP_TAG_KEYWORD)) != NULL)
+ compression = !strcmp(ippGetString(attr, 0, NULL), "gzip");
+ else
+ compression = 0;
+
+ if ((attr = ippFindAttribute(client->request, "document-format-accepted", IPP_TAG_MIMETYPE)) != NULL)
+ {
+ int i, /* Looping var */
+ count = ippGetCount(attr); /* Number of values */
+
+
+ for (i = 0; i < count; i ++)
+ {
+ format = ippGetString(attr, i, NULL);
+
+ create_job_filename(client->printer, job, NULL, filename, sizeof(filename));
+
+ if (!access(filename, R_OK))
+ break;
+ }
+
+ if (i >= count)
+ {
+ respond_ipp(client, _IPP_STATUS_ERROR_NOT_FETCHABLE, "Document not available in requested format.");
+ return;
+ }
+ }
+ else if ((attr = ippFindAttribute(job->attrs, "document-format", IPP_TAG_MIMETYPE)) != NULL)
+ format = ippGetString(attr, 0, NULL);
+ else
+ {
+ respond_ipp(client, _IPP_STATUS_ERROR_NOT_FETCHABLE, "Document format unknown.");
+ return;
+ }
+
+ respond_ipp(client, IPP_STATUS_OK, NULL);
+ ippAddString(client->response, IPP_TAG_OPERATION, IPP_TAG_MIMETYPE, "document-format", NULL, format);
+ ippAddString(client->response, IPP_TAG_OPERATION, IPP_TAG_KEYWORD, "compression", NULL, compression ? "gzip" : "none");
+
+ client->fetch_file = open(filename, O_RDONLY);
+}
+
+
+/*
+ * 'ipp_fetch_job()' - Download a job.
+ */
+
+static void
+ipp_fetch_job(_ipp_client_t *client) /* I - Client */
+{
+ _ipp_device_t *device; /* Device */
+ _ipp_job_t *job; /* Job */
+
+
+ if ((device = find_device(client)) == NULL)
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_NOT_FOUND, "Device was not found.");
+ return;
+ }
+
+ if ((job = find_job(client, 0)) == NULL)
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_NOT_FOUND, "Job was not found.");
+ return;
+ }
+
+ if (job->dev_uuid && strcmp(job->dev_uuid, device->uuid))
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_NOT_POSSIBLE, "Job not assigned to device.");
+ return;
+ }
+
+ if (!(job->state_reasons & _IPP_JREASON_JOB_FETCHABLE))
+ {
+ respond_ipp(client, _IPP_STATUS_ERROR_NOT_FETCHABLE, "Job not fetchable.");
+ return;
+ }
+
+ respond_ipp(client, IPP_STATUS_OK, NULL);
+ copy_attributes(client->response, job->attrs, NULL, IPP_TAG_JOB, 0);
+}
+
+
+/*
+ * 'ipp_get_document_attributes()' - Get the attributes for a document object.
+ *
+ * Note: This implementation only supports single document jobs so we
+ * synthesize the information for a single document from the job.
+ */
+
+static void
+ipp_get_document_attributes(
+ _ipp_client_t *client) /* I - Client */
+{
+ // TODO: Implement this!
+ respond_ipp(client, IPP_STATUS_ERROR_NOT_POSSIBLE, "Need to implement this.");
+}
+
+
+/*
+ * 'ipp_get_documents()' - Get the list of documents in a job.
+ *
+ * Note: This implementation only supports single document jobs so we
+ * synthesize the information for a single document from the job.
+ */
+
+static void
+ipp_get_documents(_ipp_client_t *client)/* I - Client */
+{
+ // TODO: Implement this!
+ respond_ipp(client, IPP_STATUS_ERROR_NOT_POSSIBLE, "Need to implement this.");
+}
+
+
+/*
+ * 'ipp_get_job_attributes()' - Get the attributes for a job object.
+ */
+
+static void
+ipp_get_job_attributes(
+ _ipp_client_t *client) /* I - Client */
+{
+ _ipp_job_t *job; /* Job */
+ cups_array_t *ra; /* requested-attributes */
+
+
+ if ((job = find_job(client, 0)) == NULL)
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_NOT_FOUND, "Job not found.");
+ return;
+ }
+
+ respond_ipp(client, IPP_STATUS_OK, NULL);
+
+ ra = ippCreateRequestedArray(client->request);
+ copy_job_attributes(client, job, ra);
+ cupsArrayDelete(ra);
+}
+
+
+/*
+ * 'ipp_get_jobs()' - Get a list of job objects.
+ */
+
+static void
+ipp_get_jobs(_ipp_client_t *client) /* I - Client */
+{
+ ipp_attribute_t *attr; /* Current attribute */
+ const char *which_jobs = NULL;
+ /* which-jobs values */
+ int job_comparison; /* Job comparison */
+ ipp_jstate_t job_state; /* job-state value */
+ int first_job_id, /* First job ID */
+ limit, /* Maximum number of jobs to return */
+ count; /* Number of jobs that match */
+ const char *username; /* Username */
+ _ipp_job_t *job; /* Current job pointer */
+ cups_array_t *ra; /* Requested attributes array */
+
+
+ /*
+ * See if the "which-jobs" attribute have been specified...
+ */
+
+ if ((attr = ippFindAttribute(client->request, "which-jobs",
+ IPP_TAG_KEYWORD)) != NULL)
+ {
+ which_jobs = ippGetString(attr, 0, NULL);
+ fprintf(stderr, "%s Get-Jobs which-jobs=%s", client->hostname, which_jobs);
+ }
+
+ if (!which_jobs || !strcmp(which_jobs, "not-completed"))
+ {
+ job_comparison = -1;
+ job_state = IPP_JSTATE_STOPPED;
+ }
+ else if (!strcmp(which_jobs, "completed"))
+ {
+ job_comparison = 1;
+ job_state = IPP_JSTATE_CANCELED;
+ }
+ else if (!strcmp(which_jobs, "aborted"))
+ {
+ job_comparison = 0;
+ job_state = IPP_JSTATE_ABORTED;
+ }
+ else if (!strcmp(which_jobs, "all"))
+ {
+ job_comparison = 1;
+ job_state = IPP_JSTATE_PENDING;
+ }
+ else if (!strcmp(which_jobs, "canceled"))
+ {
+ job_comparison = 0;
+ job_state = IPP_JSTATE_CANCELED;
+ }
+ else if (!strcmp(which_jobs, "pending"))
+ {
+ job_comparison = 0;
+ job_state = IPP_JSTATE_PENDING;
+ }
+ else if (!strcmp(which_jobs, "pending-held"))
+ {
+ job_comparison = 0;
+ job_state = IPP_JSTATE_HELD;
+ }
+ else if (!strcmp(which_jobs, "processing"))
+ {
+ job_comparison = 0;
+ job_state = IPP_JSTATE_PROCESSING;
+ }
+ else if (!strcmp(which_jobs, "processing-stopped"))
+ {
+ job_comparison = 0;
+ job_state = IPP_JSTATE_STOPPED;
+ }
+ else
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_ATTRIBUTES_OR_VALUES,
+ "The which-jobs value \"%s\" is not supported.", which_jobs);
+ ippAddString(client->response, IPP_TAG_UNSUPPORTED_GROUP, IPP_TAG_KEYWORD,
+ "which-jobs", NULL, which_jobs);
+ return;
+ }
+
+ /*
+ * See if they want to limit the number of jobs reported...
+ */
+
+ if ((attr = ippFindAttribute(client->request, "limit",
+ IPP_TAG_INTEGER)) != NULL)
+ {
+ limit = ippGetInteger(attr, 0);
+
+ fprintf(stderr, "%s Get-Jobs limit=%d", client->hostname, limit);
+ }
+ else
+ limit = 0;
+
+ if ((attr = ippFindAttribute(client->request, "first-job-id",
+ IPP_TAG_INTEGER)) != NULL)
+ {
+ first_job_id = ippGetInteger(attr, 0);
+
+ fprintf(stderr, "%s Get-Jobs first-job-id=%d", client->hostname,
+ first_job_id);
+ }
+ else
+ first_job_id = 1;
+
+ /*
+ * See if we only want to see jobs for a specific user...
+ */
+
+ username = NULL;
+
+ if ((attr = ippFindAttribute(client->request, "my-jobs",
+ IPP_TAG_BOOLEAN)) != NULL)
+ {
+ int my_jobs = ippGetBoolean(attr, 0);
+
+ fprintf(stderr, "%s Get-Jobs my-jobs=%s\n", client->hostname,
+ my_jobs ? "true" : "false");
+
+ if (my_jobs)
+ {
+ if ((attr = ippFindAttribute(client->request, "requesting-user-name",
+ IPP_TAG_NAME)) == NULL)
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST,
+ "Need requesting-user-name with my-jobs.");
+ return;
+ }
+
+ username = ippGetString(attr, 0, NULL);
+
+ fprintf(stderr, "%s Get-Jobs requesting-user-name=\"%s\"\n",
+ client->hostname, username);
+ }
+ }
+
+ /*
+ * OK, build a list of jobs for this printer...
+ */
+
+ ra = ippCreateRequestedArray(client->request);
+
+ respond_ipp(client, IPP_STATUS_OK, NULL);
+
+ _cupsRWLockRead(&(client->printer->rwlock));
+
+ for (count = 0, job = (_ipp_job_t *)cupsArrayFirst(client->printer->jobs);
+ (limit <= 0 || count < limit) && job;
+ job = (_ipp_job_t *)cupsArrayNext(client->printer->jobs))
+ {
+ /*
+ * Filter out jobs that don't match...
+ */
+
+ if ((job_comparison < 0 && job->state > job_state) ||
+ (job_comparison == 0 && job->state != job_state) ||
+ (job_comparison > 0 && job->state < job_state) ||
+ job->id < first_job_id ||
+ (username && job->username &&
+ strcasecmp(username, job->username)))
+ continue;
+
+ if (count > 0)
+ ippAddSeparator(client->response);
+
+ count ++;
+ copy_job_attributes(client, job, ra);
+ }
+
+ cupsArrayDelete(ra);
+
+ _cupsRWUnlock(&(client->printer->rwlock));
+}
+
+
+/*
+ * 'ipp_get_notifications()' - Get notification events for one or more subscriptions.
+ */
+
+static void
+ipp_get_notifications(
+ _ipp_client_t *client) /* I - Client */
+{
+ ipp_attribute_t *sub_ids, /* notify-subscription-ids */
+ *seq_nums, /* notify-sequence-numbers */
+ *notify_wait; /* Wait for events? */
+ int i, /* Looping vars */
+ count, /* Number of IDs */
+ first = 1, /* First event? */
+ seq_num; /* Sequence number */
+ _ipp_subscription_t *sub; /* Current subscription */
+ ipp_t *event; /* Current event */
+
+
+ if ((sub_ids = ippFindAttribute(client->request, "notify-subscription-ids", IPP_TAG_INTEGER)) == NULL)
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST, "Missing notify-subscription-ids attribute.");
+ return;
+ }
+
+ count = ippGetCount(sub_ids);
+ seq_nums = ippFindAttribute(client->request, "notify-sequence-numbers", IPP_TAG_INTEGER);
+ notify_wait = ippFindAttribute(client->request, "notify-wait", IPP_TAG_BOOLEAN);
+
+ if (seq_nums && count != ippGetCount(seq_nums))
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST, "The notify-subscription-ids and notify-sequence-numbers attributes are different lengths.");
+ return;
+ }
+
+ respond_ipp(client, IPP_STATUS_OK, NULL);
+ ippAddInteger(client->response, IPP_TAG_OPERATION, IPP_TAG_INTEGER, "notify-get-interval", 30);
+
+ for (i = 0; i < count; i ++)
+ {
+ if ((sub = find_subscription(client, ippGetInteger(sub_ids, i))) == NULL)
+ continue;
+
+ seq_num = ippGetInteger(seq_nums, i);
+ if (seq_num < sub->first_sequence)
+ seq_num = sub->first_sequence;
+
+ if (seq_num > sub->last_sequence)
+ continue;
+
+ for (event = (ipp_t *)cupsArrayIndex(sub->events, seq_num - sub->first_sequence);
+ event;
+ event = (ipp_t *)cupsArrayNext(sub->events))
+ {
+ if (first)
+ first = 0;
+ else
+ ippAddSeparator(client->response);
+
+ ippCopyAttributes(client->response, event, 0, NULL, NULL);
+ }
+ }
+}
+
+
+/*
+ * 'ipp_get_output_device_attributes()' - Get attributes for an output device.
+ */
+
+static void
+ipp_get_output_device_attributes(
+ _ipp_client_t *client) /* I - Client */
+{
+ // TODO: Implement this!
+ respond_ipp(client, IPP_STATUS_ERROR_NOT_POSSIBLE, "Need to implement this.");
+}
+
+
+/*
+ * 'ipp_get_printer_attributes()' - Get the attributes for a printer object.
+ */
+
+static void
+ipp_get_printer_attributes(
+ _ipp_client_t *client) /* I - Client */
+{
+ cups_array_t *ra; /* Requested attributes array */
+ _ipp_printer_t *printer; /* Printer */
+
+
+ /*
+ * Send the attributes...
+ */
+
+ ra = ippCreateRequestedArray(client->request);
+ printer = client->printer;
+
+ respond_ipp(client, IPP_STATUS_OK, NULL);
+
+ _cupsRWLockRead(&(printer->rwlock));
+
+ copy_attributes(client->response, printer->attrs, ra, IPP_TAG_ZERO,
+ IPP_TAG_CUPS_CONST);
+ copy_attributes(client->response, printer->dev_attrs, ra, IPP_TAG_ZERO, IPP_TAG_ZERO);
+
+ if (!ra || cupsArrayFind(ra, "printer-config-change-date-time"))
+ ippAddDate(client->response, IPP_TAG_PRINTER, "printer-config-change-date-time", ippTimeToDate(printer->config_time));
+
+ if (!ra || cupsArrayFind(ra, "printer-config-change-time"))
+ ippAddInteger(client->response, IPP_TAG_PRINTER, IPP_TAG_INTEGER, "printer-config-change-time", (int)(printer->config_time - printer->start_time));
+
+ if (!ra || cupsArrayFind(ra, "printer-current-time"))
+ ippAddDate(client->response, IPP_TAG_PRINTER, "printer-current-time", ippTimeToDate(time(NULL)));
+
+
+ if (!ra || cupsArrayFind(ra, "printer-state"))
+ ippAddInteger(client->response, IPP_TAG_PRINTER, IPP_TAG_ENUM,
+ "printer-state", printer->state > printer->dev_state ? printer->state : printer->dev_state);
+
+ if (!ra || cupsArrayFind(ra, "printer-state-change-date-time"))
+ ippAddDate(client->response, IPP_TAG_PRINTER, "printer-state-change-date-time", ippTimeToDate(printer->state_time));
+
+ if (!ra || cupsArrayFind(ra, "printer-state-change-time"))
+ ippAddInteger(client->response, IPP_TAG_PRINTER, IPP_TAG_INTEGER, "printer-state-change-time", (int)(printer->state_time - printer->start_time));
+
+ if (!ra || cupsArrayFind(ra, "printer-state-message"))
+ {
+ static const char * const messages[] = { "Idle.", "Printing.", "Stopped." };
+
+ if (printer->state > printer->dev_state)
+ ippAddString(client->response, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_TEXT), "printer-state-message", NULL, messages[printer->state - IPP_PSTATE_IDLE]);
+ else
+ ippAddString(client->response, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_TEXT), "printer-state-message", NULL, messages[printer->dev_state - IPP_PSTATE_IDLE]);
+ }
+
+ if (!ra || cupsArrayFind(ra, "printer-state-reasons"))
+ copy_printer_state_reasons(client->response, IPP_TAG_PRINTER, printer);
+
+ if (!ra || cupsArrayFind(ra, "printer-up-time"))
+ ippAddInteger(client->response, IPP_TAG_PRINTER, IPP_TAG_INTEGER, "printer-up-time", (int)(time(NULL) - printer->start_time));
+
+ if (!ra || cupsArrayFind(ra, "queued-job-count"))
+ ippAddInteger(client->response, IPP_TAG_PRINTER, IPP_TAG_INTEGER, "queued-job-count", cupsArrayCount(printer->active_jobs));
+
+ _cupsRWUnlock(&(printer->rwlock));
+
+ cupsArrayDelete(ra);
+}
+
+
+/*
+ * 'ipp_get_printer_supported_values()' - Return the supported values for
+ * the infrastructure printer.
+ */
+
+static void
+ipp_get_printer_supported_values(
+ _ipp_client_t *client) /* I - Client */
+{
+ cups_array_t *ra = ippCreateRequestedArray(client->request);
+ /* Requested attributes */
+
+
+ respond_ipp(client, IPP_STATUS_OK, NULL);
+
+ copy_attributes(client->response, client->printer->attrs, ra, IPP_TAG_PRINTER, 1);
+
+ cupsArrayDelete(ra);
+}
+
+
+/*
+ * 'ipp_get_subscription_attributes()' - Get attributes for a subscription.
+ */
+
+static void
+ipp_get_subscription_attributes(
+ _ipp_client_t *client) /* I - Client */
+{
+ _ipp_subscription_t *sub; /* Subscription */
+ cups_array_t *ra = ippCreateRequestedArray(client->request);
+ /* Requested attributes */
+
+
+ if ((sub = find_subscription(client, 0)) == NULL)
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_NOT_FOUND, "Subscription was not found.");
+ }
+ else
+ {
+ respond_ipp(client, IPP_STATUS_OK, NULL);
+ copy_subscription_attributes(client, sub, ra);
+ }
+
+ cupsArrayDelete(ra);
+}
+
+
+/*
+ * 'ipp_get_subscriptions()' - Get attributes for all subscriptions.
+ */
+
+static void
+ipp_get_subscriptions(
+ _ipp_client_t *client) /* I - Client */
+{
+ _ipp_subscription_t *sub; /* Current subscription */
+ cups_array_t *ra = ippCreateRequestedArray(client->request);
+ /* Requested attributes */
+ int first = 1; /* First time? */
+
+
+ respond_ipp(client, IPP_STATUS_OK, NULL);
+ _cupsRWLockRead(&client->printer->rwlock);
+ for (sub = (_ipp_subscription_t *)cupsArrayFirst(client->printer->subscriptions);
+ sub;
+ sub = (_ipp_subscription_t *)cupsArrayNext(client->printer->subscriptions))
+ {
+ if (first)
+ first = 0;
+ else
+ ippAddSeparator(client->response);
+
+ copy_subscription_attributes(client, sub, ra);
+ }
+
+ cupsArrayDelete(ra);
+}
+
+
+/*
+ * 'ipp_identify_printer()' - Beep or display a message.
+ */
+
+static void
+ipp_identify_printer(
+ _ipp_client_t *client) /* I - Client */
+{
+ /* TODO: Do something */
+
+ respond_ipp(client, IPP_STATUS_OK, NULL);
+}
+
+
+/*
+ * 'ipp_print_job()' - Create a job object with an attached document.
+ */
+
+static void
+ipp_print_job(_ipp_client_t *client) /* I - Client */
+{
+ _ipp_job_t *job; /* New job */
+ char filename[1024], /* Filename buffer */
+ buffer[4096]; /* Copy buffer */
+ ssize_t bytes; /* Bytes read */
+ cups_array_t *ra; /* Attributes to send in response */
+
+
+ /*
+ * Validate print job attributes...
+ */
+
+ if (!valid_job_attributes(client))
+ {
+ httpFlush(client->http);
+ return;
+ }
+
+ /*
+ * Do we have a file to print?
+ */
+
+ if (httpGetState(client->http) == HTTP_STATE_POST_SEND)
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST, "No file in request.");
+ return;
+ }
+
+ /*
+ * Print the job...
+ */
+
+ if ((job = create_job(client)) == NULL)
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_BUSY,
+ "Currently printing another job.");
+ return;
+ }
+
+ /*
+ * Create a file for the request data...
+ */
+
+ create_job_filename(client->printer, job, NULL, filename, sizeof(filename));
+
+ if (Verbosity)
+ fprintf(stderr, "Creating job file \"%s\", format \"%s\".\n", filename, job->format);
+
+ if ((job->fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC, 0600)) < 0)
+ {
+ job->state = IPP_JSTATE_ABORTED;
+
+ respond_ipp(client, IPP_STATUS_ERROR_INTERNAL,
+ "Unable to create print file: %s", strerror(errno));
+ return;
+ }
+
+ while ((bytes = httpRead2(client->http, buffer, sizeof(buffer))) > 0)
+ {
+ if (write(job->fd, buffer, (size_t)bytes) < bytes)
+ {
+ int error = errno; /* Write error */
+
+ job->state = IPP_JSTATE_ABORTED;
+
+ close(job->fd);
+ job->fd = -1;
+
+ unlink(filename);
+
+ respond_ipp(client, IPP_STATUS_ERROR_INTERNAL,
+ "Unable to write print file: %s", strerror(error));
+ return;
+ }
+ }
+
+ if (bytes < 0)
+ {
+ /*
+ * Got an error while reading the print data, so abort this job.
+ */
+
+ job->state = IPP_JSTATE_ABORTED;
+
+ close(job->fd);
+ job->fd = -1;
+
+ unlink(filename);
+
+ respond_ipp(client, IPP_STATUS_ERROR_INTERNAL,
+ "Unable to read print file.");
+ return;
+ }
+
+ if (close(job->fd))
+ {
+ int error = errno; /* Write error */
+
+ job->state = IPP_JSTATE_ABORTED;
+ job->fd = -1;
+
+ unlink(filename);
+
+ respond_ipp(client, IPP_STATUS_ERROR_INTERNAL,
+ "Unable to write print file: %s", strerror(error));
+ return;
+ }
+
+ job->fd = -1;
+ job->filename = strdup(filename);
+ job->state = IPP_JSTATE_PENDING;
+
+ /*
+ * Process the job, if possible...
+ */
+
+ check_jobs(client->printer);
+
+ /*
+ * Return the job info...
+ */
+
+ respond_ipp(client, IPP_STATUS_OK, NULL);
+
+ ra = cupsArrayNew((cups_array_func_t)strcmp, NULL);
+ cupsArrayAdd(ra, "job-id");
+ cupsArrayAdd(ra, "job-state");
+ cupsArrayAdd(ra, "job-state-message");
+ cupsArrayAdd(ra, "job-state-reasons");
+ cupsArrayAdd(ra, "job-uri");
+
+ copy_job_attributes(client, job, ra);
+ cupsArrayDelete(ra);
+
+ /*
+ * Process any pending subscriptions...
+ */
+
+ client->job = job;
+ ipp_create_xxx_subscriptions(client);
+}
+
+
+/*
+ * 'ipp_print_uri()' - Create a job object with a referenced document.
+ */
+
+static void
+ipp_print_uri(_ipp_client_t *client) /* I - Client */
+{
+ _ipp_job_t *job; /* New job */
+ ipp_attribute_t *uri; /* document-uri */
+ char scheme[256], /* URI scheme */
+ userpass[256], /* Username and password info */
+ hostname[256], /* Hostname */
+ resource[1024]; /* Resource path */
+ int port; /* Port number */
+ http_uri_status_t uri_status; /* URI decode status */
+ http_encryption_t encryption; /* Encryption to use, if any */
+ http_t *http; /* Connection for http/https URIs */
+ http_status_t status; /* Access status for http/https URIs */
+ int infile; /* Input file for local file URIs */
+ char filename[1024], /* Filename buffer */
+ buffer[4096]; /* Copy buffer */
+ ssize_t bytes; /* Bytes read */
+ cups_array_t *ra; /* Attributes to send in response */
+ static const char * const uri_status_strings[] =
+ { /* URI decode errors */
+ "URI too large.",
+ "Bad arguments to function.",
+ "Bad resource in URI.",
+ "Bad port number in URI.",
+ "Bad hostname in URI.",
+ "Bad username in URI.",
+ "Bad scheme in URI.",
+ "Bad/empty URI."
+ };
+
+
+ /*
+ * Validate print job attributes...
+ */
+
+ if (!valid_job_attributes(client))
+ {
+ httpFlush(client->http);
+ return;
+ }
+
+ /*
+ * Do we have a file to print?
+ */
+
+ if (httpGetState(client->http) == HTTP_STATE_POST_RECV)
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST,
+ "Unexpected document data following request.");
+ return;
+ }
+
+ /*
+ * Do we have a document URI?
+ */
+
+ if ((uri = ippFindAttribute(client->request, "document-uri",
+ IPP_TAG_URI)) == NULL)
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST, "Missing document-uri.");
+ return;
+ }
+
+ if (ippGetCount(uri) != 1)
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST,
+ "Too many document-uri values.");
+ return;
+ }
+
+ uri_status = httpSeparateURI(HTTP_URI_CODING_ALL, ippGetString(uri, 0, NULL),
+ scheme, sizeof(scheme), userpass,
+ sizeof(userpass), hostname, sizeof(hostname),
+ &port, resource, sizeof(resource));
+ if (uri_status < HTTP_URI_STATUS_OK)
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST, "Bad document-uri: %s",
+ uri_status_strings[uri_status - HTTP_URI_STATUS_OVERFLOW]);
+ return;
+ }
+
+ if (strcmp(scheme, "file") &&
+#ifdef HAVE_SSL
+ strcmp(scheme, "https") &&
+#endif /* HAVE_SSL */
+ strcmp(scheme, "http"))
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_URI_SCHEME,
+ "URI scheme \"%s\" not supported.", scheme);
+ return;
+ }
+
+ if (!strcmp(scheme, "file") && access(resource, R_OK))
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_DOCUMENT_ACCESS,
+ "Unable to access URI: %s", strerror(errno));
+ return;
+ }
+
+ /*
+ * Print the job...
+ */
+
+ if ((job = create_job(client)) == NULL)
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_BUSY,
+ "Currently printing another job.");
+ return;
+ }
+
+ /*
+ * Create a file for the request data...
+ */
+
+ if (!strcasecmp(job->format, "image/jpeg"))
+ snprintf(filename, sizeof(filename), "%s/%d.jpg",
+ client->printer->directory, job->id);
+ else if (!strcasecmp(job->format, "image/png"))
+ snprintf(filename, sizeof(filename), "%s/%d.png",
+ client->printer->directory, job->id);
+ else if (!strcasecmp(job->format, "application/pdf"))
+ snprintf(filename, sizeof(filename), "%s/%d.pdf",
+ client->printer->directory, job->id);
+ else if (!strcasecmp(job->format, "application/postscript"))
+ snprintf(filename, sizeof(filename), "%s/%d.ps",
+ client->printer->directory, job->id);
+ else
+ snprintf(filename, sizeof(filename), "%s/%d.prn",
+ client->printer->directory, job->id);
+
+ if ((job->fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC, 0600)) < 0)
+ {
+ job->state = IPP_JSTATE_ABORTED;
+
+ respond_ipp(client, IPP_STATUS_ERROR_INTERNAL,
+ "Unable to create print file: %s", strerror(errno));
+ return;
+ }
+
+ if (!strcmp(scheme, "file"))
+ {
+ if ((infile = open(resource, O_RDONLY)) < 0)
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_DOCUMENT_ACCESS,
+ "Unable to access URI: %s", strerror(errno));
+ return;
+ }
+
+ do
+ {
+ if ((bytes = read(infile, buffer, sizeof(buffer))) < 0 &&
+ (errno == EAGAIN || errno == EINTR))
+ bytes = 1;
+ else if (bytes > 0 && write(job->fd, buffer, (size_t)bytes) < bytes)
+ {
+ int error = errno; /* Write error */
+
+ job->state = IPP_JSTATE_ABORTED;
+
+ close(job->fd);
+ job->fd = -1;
+
+ unlink(filename);
+ close(infile);
+
+ respond_ipp(client, IPP_STATUS_ERROR_INTERNAL,
+ "Unable to write print file: %s", strerror(error));
+ return;
+ }
+ }
+ while (bytes > 0);
+
+ close(infile);
+ }
+ else
+ {
+#ifdef HAVE_SSL
+ if (port == 443 || !strcmp(scheme, "https"))
+ encryption = HTTP_ENCRYPTION_ALWAYS;
+ else
+#endif /* HAVE_SSL */
+ encryption = HTTP_ENCRYPTION_IF_REQUESTED;
+
+ if ((http = httpConnect2(hostname, port, NULL, AF_UNSPEC, encryption,
+ 1, 30000, NULL)) == NULL)
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_DOCUMENT_ACCESS,
+ "Unable to connect to %s: %s", hostname,
+ cupsLastErrorString());
+ job->state = IPP_JSTATE_ABORTED;
+
+ close(job->fd);
+ job->fd = -1;
+
+ unlink(filename);
+ return;
+ }
+
+ httpClearFields(http);
+ httpSetField(http, HTTP_FIELD_ACCEPT_LANGUAGE, "en");
+ if (httpGet(http, resource))
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_DOCUMENT_ACCESS,
+ "Unable to GET URI: %s", strerror(errno));
+
+ job->state = IPP_JSTATE_ABORTED;
+
+ close(job->fd);
+ job->fd = -1;
+
+ unlink(filename);
+ httpClose(http);
+ return;
+ }
+
+ while ((status = httpUpdate(http)) == HTTP_STATUS_CONTINUE);
+
+ if (status != HTTP_STATUS_OK)
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_DOCUMENT_ACCESS,
+ "Unable to GET URI: %s", httpStatus(status));
+
+ job->state = IPP_JSTATE_ABORTED;
+
+ close(job->fd);
+ job->fd = -1;
+
+ unlink(filename);
+ httpClose(http);
+ return;
+ }
+
+ while ((bytes = httpRead2(http, buffer, sizeof(buffer))) > 0)
+ {
+ if (write(job->fd, buffer, (size_t)bytes) < bytes)
+ {
+ int error = errno; /* Write error */
+
+ job->state = IPP_JSTATE_ABORTED;
+
+ close(job->fd);
+ job->fd = -1;
+
+ unlink(filename);
+ httpClose(http);
+
+ respond_ipp(client, IPP_STATUS_ERROR_INTERNAL,
+ "Unable to write print file: %s", strerror(error));
+ return;
+ }
+ }
+
+ httpClose(http);
+ }
+
+ if (close(job->fd))
+ {
+ int error = errno; /* Write error */
+
+ job->state = IPP_JSTATE_ABORTED;
+ job->fd = -1;
+
+ unlink(filename);
+
+ respond_ipp(client, IPP_STATUS_ERROR_INTERNAL,
+ "Unable to write print file: %s", strerror(error));
+ return;
+ }
+
+ job->fd = -1;
+ job->filename = strdup(filename);
+ job->state = IPP_JSTATE_PENDING;
+
+ /* TODO: Do something different here - only process if the printer is idle */
+ /*
+ * Process the job...
+ */
+
+ check_jobs(client->printer);
+
+ /*
+ * Return the job info...
+ */
+
+ respond_ipp(client, IPP_STATUS_OK, NULL);
+
+ ra = cupsArrayNew((cups_array_func_t)strcmp, NULL);
+ cupsArrayAdd(ra, "job-id");
+ cupsArrayAdd(ra, "job-state");
+ cupsArrayAdd(ra, "job-state-reasons");
+ cupsArrayAdd(ra, "job-uri");
+
+ copy_job_attributes(client, job, ra);
+ cupsArrayDelete(ra);
+
+ /*
+ * Process any pending subscriptions...
+ */
+
+ client->job = job;
+ ipp_create_xxx_subscriptions(client);
+}
+
+
+/*
+ * 'ipp_renew_subscription()' - Renew a subscription.
+ */
+
+static void
+ipp_renew_subscription(
+ _ipp_client_t *client) /* I - Client */
+{
+ _ipp_subscription_t *sub; /* Subscription */
+ ipp_attribute_t *attr; /* notify-lease-duration */
+ int lease; /* Lease duration in seconds */
+
+
+ if ((sub = find_subscription(client, 0)) == NULL)
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_NOT_FOUND, "Subscription was not found.");
+ return;
+ }
+
+ if (sub->job)
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_NOT_POSSIBLE, "Per-job subscriptions cannot be renewed.");
+ return;
+ }
+
+ if ((attr = ippFindAttribute(client->request, "notify-lease-duration", IPP_TAG_ZERO)) != NULL)
+ {
+ if (ippGetGroupTag(attr) != IPP_TAG_SUBSCRIPTION || ippGetValueTag(attr) != IPP_TAG_INTEGER || ippGetCount(attr) != 1 || ippGetInteger(attr, 0) < 0)
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_ATTRIBUTES_OR_VALUES, "Bad notify-lease-duration.");
+ return;
+ }
+
+ lease = ippGetInteger(attr, 0);
+ }
+ else
+ lease = _IPP_NOTIFY_LEASE_DURATION_DEFAULT;
+
+ sub->lease = lease;
+
+ if (lease)
+ sub->expire = time(NULL) + sub->lease;
+ else
+ sub->expire = INT_MAX;
+
+ respond_ipp(client, IPP_STATUS_OK, NULL);
+}
+
+
+/*
+ * 'ipp_send_document()' - Add an attached document to a job object created with
+ * Create-Job.
+ */
+
+static void
+ipp_send_document(_ipp_client_t *client)/* I - Client */
+{
+ _ipp_job_t *job; /* Job information */
+ char filename[1024], /* Filename buffer */
+ buffer[4096]; /* Copy buffer */
+ ssize_t bytes; /* Bytes read */
+ ipp_attribute_t *attr; /* Current attribute */
+ cups_array_t *ra; /* Attributes to send in response */
+
+
+ /*
+ * Get the job...
+ */
+
+ if ((job = find_job(client, 0)) == NULL)
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_NOT_FOUND, "Job does not exist.");
+ httpFlush(client->http);
+ return;
+ }
+
+ /*
+ * See if we already have a document for this job or the job has already
+ * in a non-pending state...
+ */
+
+ if (job->state > IPP_JSTATE_HELD)
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_NOT_POSSIBLE,
+ "Job is not in a pending state.");
+ httpFlush(client->http);
+ return;
+ }
+ else if (job->filename || job->fd >= 0)
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_MULTIPLE_JOBS_NOT_SUPPORTED,
+ "Multiple document jobs are not supported.");
+ httpFlush(client->http);
+ return;
+ }
+
+ if ((attr = ippFindAttribute(client->request, "last-document",
+ IPP_TAG_ZERO)) == NULL)
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST,
+ "Missing required last-document attribute.");
+ httpFlush(client->http);
+ return;
+ }
+ else if (ippGetValueTag(attr) != IPP_TAG_BOOLEAN || ippGetCount(attr) != 1 ||
+ !ippGetBoolean(attr, 0))
+ {
+ respond_unsupported(client, attr);
+ httpFlush(client->http);
+ return;
+ }
+
+ /*
+ * Validate document attributes...
+ */
+
+ if (!valid_doc_attributes(client))
+ {
+ httpFlush(client->http);
+ return;
+ }
+
+ copy_attributes(job->attrs, client->request, NULL, IPP_TAG_JOB, 0);
+
+ /*
+ * Get the document format for the job...
+ */
+
+ _cupsRWLockWrite(&(client->printer->rwlock));
+
+ if ((attr = ippFindAttribute(job->attrs, "document-format-detected", IPP_TAG_MIMETYPE)) != NULL)
+ job->format = ippGetString(attr, 0, NULL);
+ else if ((attr = ippFindAttribute(job->attrs, "document-format-supplied", IPP_TAG_MIMETYPE)) != NULL)
+ job->format = ippGetString(attr, 0, NULL);
+ else
+ job->format = "application/octet-stream";
+
+ /*
+ * Create a file for the request data...
+ */
+
+ create_job_filename(client->printer, job, NULL, filename, sizeof(filename));
+
+ if (Verbosity)
+ fprintf(stderr, "Creating job file \"%s\", format \"%s\".\n", filename, job->format);
+
+ job->fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC, 0600);
+
+ _cupsRWUnlock(&(client->printer->rwlock));
+
+ if (job->fd < 0)
+ {
+ job->state = IPP_JSTATE_ABORTED;
+
+ respond_ipp(client, IPP_STATUS_ERROR_INTERNAL,
+ "Unable to create print file: %s", strerror(errno));
+ return;
+ }
+
+ while ((bytes = httpRead2(client->http, buffer, sizeof(buffer))) > 0)
+ {
+ if (write(job->fd, buffer, (size_t)bytes) < bytes)
+ {
+ int error = errno; /* Write error */
+
+ job->state = IPP_JSTATE_ABORTED;
+
+ close(job->fd);
+ job->fd = -1;
+
+ unlink(filename);
+
+ respond_ipp(client, IPP_STATUS_ERROR_INTERNAL,
+ "Unable to write print file: %s", strerror(error));
+ return;
+ }
+ }
+
+ if (bytes < 0)
+ {
+ /*
+ * Got an error while reading the print data, so abort this job.
+ */
+
+ job->state = IPP_JSTATE_ABORTED;
+
+ close(job->fd);
+ job->fd = -1;
+
+ unlink(filename);
+
+ respond_ipp(client, IPP_STATUS_ERROR_INTERNAL,
+ "Unable to read print file.");
+ return;
+ }
+
+ if (close(job->fd))
+ {
+ int error = errno; /* Write error */
+
+ job->state = IPP_JSTATE_ABORTED;
+ job->fd = -1;
+
+ unlink(filename);
+
+ respond_ipp(client, IPP_STATUS_ERROR_INTERNAL,
+ "Unable to write print file: %s", strerror(error));
+ return;
+ }
+
+ _cupsRWLockWrite(&(client->printer->rwlock));
+
+ job->fd = -1;
+ job->filename = strdup(filename);
+ job->state = IPP_JSTATE_PENDING;
+
+ _cupsRWUnlock(&(client->printer->rwlock));
+
+ /*
+ * Process the job, if possible...
+ */
+
+ check_jobs(client->printer);
+
+ /*
+ * Return the job info...
+ */
+
+ respond_ipp(client, IPP_STATUS_OK, NULL);
+
+ ra = cupsArrayNew((cups_array_func_t)strcmp, NULL);
+ cupsArrayAdd(ra, "job-id");
+ cupsArrayAdd(ra, "job-state");
+ cupsArrayAdd(ra, "job-state-reasons");
+ cupsArrayAdd(ra, "job-uri");
+
+ copy_job_attributes(client, job, ra);
+ cupsArrayDelete(ra);
+}
+
+
+/*
+ * 'ipp_send_uri()' - Add a referenced document to a job object created with
+ * Create-Job.
+ */
+
+static void
+ipp_send_uri(_ipp_client_t *client) /* I - Client */
+{
+ _ipp_job_t *job; /* Job information */
+ ipp_attribute_t *uri; /* document-uri */
+ char scheme[256], /* URI scheme */
+ userpass[256], /* Username and password info */
+ hostname[256], /* Hostname */
+ resource[1024]; /* Resource path */
+ int port; /* Port number */
+ http_uri_status_t uri_status; /* URI decode status */
+ http_encryption_t encryption; /* Encryption to use, if any */
+ http_t *http; /* Connection for http/https URIs */
+ http_status_t status; /* Access status for http/https URIs */
+ int infile; /* Input file for local file URIs */
+ char filename[1024], /* Filename buffer */
+ buffer[4096]; /* Copy buffer */
+ ssize_t bytes; /* Bytes read */
+ ipp_attribute_t *attr; /* Current attribute */
+ cups_array_t *ra; /* Attributes to send in response */
+ static const char * const uri_status_strings[] =
+ { /* URI decode errors */
+ "URI too large.",
+ "Bad arguments to function.",
+ "Bad resource in URI.",
+ "Bad port number in URI.",
+ "Bad hostname in URI.",
+ "Bad username in URI.",
+ "Bad scheme in URI.",
+ "Bad/empty URI."
+ };
+
+
+ /*
+ * Get the job...
+ */
+
+ if ((job = find_job(client, 0)) == NULL)
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_NOT_FOUND, "Job does not exist.");
+ httpFlush(client->http);
+ return;
+ }
+
+ /*
+ * See if we already have a document for this job or the job has already
+ * in a non-pending state...
+ */
+
+ if (job->state > IPP_JSTATE_HELD)
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_NOT_POSSIBLE,
+ "Job is not in a pending state.");
+ httpFlush(client->http);
+ return;
+ }
+ else if (job->filename || job->fd >= 0)
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_MULTIPLE_JOBS_NOT_SUPPORTED,
+ "Multiple document jobs are not supported.");
+ httpFlush(client->http);
+ return;
+ }
+
+ if ((attr = ippFindAttribute(client->request, "last-document",
+ IPP_TAG_ZERO)) == NULL)
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST,
+ "Missing required last-document attribute.");
+ httpFlush(client->http);
+ return;
+ }
+ else if (ippGetValueTag(attr) != IPP_TAG_BOOLEAN || ippGetCount(attr) != 1 ||
+ !ippGetBoolean(attr, 0))
+ {
+ respond_unsupported(client, attr);
+ httpFlush(client->http);
+ return;
+ }
+
+ /*
+ * Validate document attributes...
+ */
+
+ if (!valid_doc_attributes(client))
+ {
+ httpFlush(client->http);
+ return;
+ }
+
+ /*
+ * Do we have a file to print?
+ */
+
+ if (httpGetState(client->http) == HTTP_STATE_POST_RECV)
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST,
+ "Unexpected document data following request.");
+ return;
+ }
+
+ /*
+ * Do we have a document URI?
+ */
+
+ if ((uri = ippFindAttribute(client->request, "document-uri",
+ IPP_TAG_URI)) == NULL)
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST, "Missing document-uri.");
+ return;
+ }
+
+ if (ippGetCount(uri) != 1)
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST,
+ "Too many document-uri values.");
+ return;
+ }
+
+ uri_status = httpSeparateURI(HTTP_URI_CODING_ALL, ippGetString(uri, 0, NULL),
+ scheme, sizeof(scheme), userpass,
+ sizeof(userpass), hostname, sizeof(hostname),
+ &port, resource, sizeof(resource));
+ if (uri_status < HTTP_URI_STATUS_OK)
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST, "Bad document-uri: %s",
+ uri_status_strings[uri_status - HTTP_URI_STATUS_OVERFLOW]);
+ return;
+ }
+
+ if (strcmp(scheme, "file") &&
+#ifdef HAVE_SSL
+ strcmp(scheme, "https") &&
+#endif /* HAVE_SSL */
+ strcmp(scheme, "http"))
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_URI_SCHEME,
+ "URI scheme \"%s\" not supported.", scheme);
+ return;
+ }
+
+ if (!strcmp(scheme, "file") && access(resource, R_OK))
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_DOCUMENT_ACCESS,
+ "Unable to access URI: %s", strerror(errno));
+ return;
+ }
+
+ /*
+ * Get the document format for the job...
+ */
+
+ _cupsRWLockWrite(&(client->printer->rwlock));
+
+ if ((attr = ippFindAttribute(job->attrs, "document-format",
+ IPP_TAG_MIMETYPE)) != NULL)
+ job->format = ippGetString(attr, 0, NULL);
+ else
+ job->format = "application/octet-stream";
+
+ /*
+ * Create a file for the request data...
+ */
+
+ if (!strcasecmp(job->format, "image/jpeg"))
+ snprintf(filename, sizeof(filename), "%s/%d.jpg",
+ client->printer->directory, job->id);
+ else if (!strcasecmp(job->format, "image/png"))
+ snprintf(filename, sizeof(filename), "%s/%d.png",
+ client->printer->directory, job->id);
+ else if (!strcasecmp(job->format, "application/pdf"))
+ snprintf(filename, sizeof(filename), "%s/%d.pdf",
+ client->printer->directory, job->id);
+ else if (!strcasecmp(job->format, "application/postscript"))
+ snprintf(filename, sizeof(filename), "%s/%d.ps",
+ client->printer->directory, job->id);
+ else
+ snprintf(filename, sizeof(filename), "%s/%d.prn",
+ client->printer->directory, job->id);
+
+ job->fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC, 0600);
+
+ _cupsRWUnlock(&(client->printer->rwlock));
+
+ if (job->fd < 0)
+ {
+ job->state = IPP_JSTATE_ABORTED;
+
+ respond_ipp(client, IPP_STATUS_ERROR_INTERNAL,
+ "Unable to create print file: %s", strerror(errno));
+ return;
+ }
+
+ if (!strcmp(scheme, "file"))
+ {
+ if ((infile = open(resource, O_RDONLY)) < 0)
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_DOCUMENT_ACCESS,
+ "Unable to access URI: %s", strerror(errno));
+ return;
+ }
+
+ do
+ {
+ if ((bytes = read(infile, buffer, sizeof(buffer))) < 0 &&
+ (errno == EAGAIN || errno == EINTR))
+ bytes = 1;
+ else if (bytes > 0 && write(job->fd, buffer, (size_t)bytes) < bytes)
+ {
+ int error = errno; /* Write error */
+
+ job->state = IPP_JSTATE_ABORTED;
+
+ close(job->fd);
+ job->fd = -1;
+
+ unlink(filename);
+ close(infile);
+
+ respond_ipp(client, IPP_STATUS_ERROR_INTERNAL,
+ "Unable to write print file: %s", strerror(error));
+ return;
+ }
+ }
+ while (bytes > 0);
+
+ close(infile);
+ }
+ else
+ {
+#ifdef HAVE_SSL
+ if (port == 443 || !strcmp(scheme, "https"))
+ encryption = HTTP_ENCRYPTION_ALWAYS;
+ else
+#endif /* HAVE_SSL */
+ encryption = HTTP_ENCRYPTION_IF_REQUESTED;
+
+ if ((http = httpConnect2(hostname, port, NULL, AF_UNSPEC, encryption,
+ 1, 30000, NULL)) == NULL)
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_DOCUMENT_ACCESS,
+ "Unable to connect to %s: %s", hostname,
+ cupsLastErrorString());
+ job->state = IPP_JSTATE_ABORTED;
+
+ close(job->fd);
+ job->fd = -1;
+
+ unlink(filename);
+ return;
+ }
+
+ httpClearFields(http);
+ httpSetField(http, HTTP_FIELD_ACCEPT_LANGUAGE, "en");
+ if (httpGet(http, resource))
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_DOCUMENT_ACCESS,
+ "Unable to GET URI: %s", strerror(errno));
+
+ job->state = IPP_JSTATE_ABORTED;
+
+ close(job->fd);
+ job->fd = -1;
+
+ unlink(filename);
+ httpClose(http);
+ return;
+ }
+
+ while ((status = httpUpdate(http)) == HTTP_STATUS_CONTINUE);
+
+ if (status != HTTP_STATUS_OK)
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_DOCUMENT_ACCESS,
+ "Unable to GET URI: %s", httpStatus(status));
+
+ job->state = IPP_JSTATE_ABORTED;
+
+ close(job->fd);
+ job->fd = -1;
+
+ unlink(filename);
+ httpClose(http);
+ return;
+ }
+
+ while ((bytes = httpRead2(http, buffer, sizeof(buffer))) > 0)
+ {
+ if (write(job->fd, buffer, (size_t)bytes) < bytes)
+ {
+ int error = errno; /* Write error */
+
+ job->state = IPP_JSTATE_ABORTED;
+
+ close(job->fd);
+ job->fd = -1;
+
+ unlink(filename);
+ httpClose(http);
+
+ respond_ipp(client, IPP_STATUS_ERROR_INTERNAL,
+ "Unable to write print file: %s", strerror(error));
+ return;
+ }
+ }
+
+ httpClose(http);
+ }
+
+ if (close(job->fd))
+ {
+ int error = errno; /* Write error */
+
+ job->state = IPP_JSTATE_ABORTED;
+ job->fd = -1;
+
+ unlink(filename);
+
+ respond_ipp(client, IPP_STATUS_ERROR_INTERNAL,
+ "Unable to write print file: %s", strerror(error));
+ return;
+ }
+
+ _cupsRWLockWrite(&(client->printer->rwlock));
+
+ job->fd = -1;
+ job->filename = strdup(filename);
+ job->state = IPP_JSTATE_PENDING;
+
+ _cupsRWUnlock(&(client->printer->rwlock));
+
+ /*
+ * Process the job, if possible...
+ */
+
+ check_jobs(client->printer);
+
+ /*
+ * Return the job info...
+ */
+
+ respond_ipp(client, IPP_STATUS_OK, NULL);
+
+ ra = cupsArrayNew((cups_array_func_t)strcmp, NULL);
+ cupsArrayAdd(ra, "job-id");
+ cupsArrayAdd(ra, "job-state");
+ cupsArrayAdd(ra, "job-state-reasons");
+ cupsArrayAdd(ra, "job-uri");
+
+ copy_job_attributes(client, job, ra);
+ cupsArrayDelete(ra);
+}
+
+
+/*
+ * 'ipp_update_active_jobs()' - Update the list of active jobs.
+ */
+
+static void
+ipp_update_active_jobs(
+ _ipp_client_t *client) /* I - Client */
+{
+ _ipp_device_t *device; /* Output device */
+ _ipp_job_t *job; /* Job */
+ ipp_attribute_t *job_ids, /* job-ids */
+ *job_states; /* output-device-job-states */
+ int i, /* Looping var */
+ count, /* Number of values */
+ num_different = 0,
+ /* Number of jobs with different states */
+ different[1000],/* Jobs with different states */
+ num_unsupported = 0,
+ /* Number of unsupported job-ids */
+ unsupported[1000];
+ /* Unsupported job-ids */
+ ipp_jstate_t states[1000]; /* Different job state values */
+
+
+ /*
+ * Process the job-ids and output-device-job-states values...
+ */
+
+ if ((device = find_device(client)) == NULL)
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_NOT_FOUND, "Device was not found.");
+ return;
+ }
+
+ if ((job_ids = ippFindAttribute(client->request, "job-ids", IPP_TAG_ZERO)) == NULL || ippGetGroupTag(job_ids) != IPP_TAG_OPERATION || ippGetValueTag(job_ids) != IPP_TAG_INTEGER)
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST, job_ids ? "Bad job-ids attribute." : "Missing required job-ids attribute.");
+ return;
+ }
+
+ if ((job_states = ippFindAttribute(client->request, "output-device-job-states", IPP_TAG_ZERO)) == NULL || ippGetGroupTag(job_states) != IPP_TAG_OPERATION || ippGetValueTag(job_states) != IPP_TAG_ENUM)
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST, job_ids ? "Bad output-device-job-states attribute." : "Missing required output-device-job-states attribute.");
+ return;
+ }
+
+ count = ippGetCount(job_ids);
+ if (count != ippGetCount(job_states))
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST, "The job-ids and output-device-job-states attributes do not have the same number of values.");
+ return;
+ }
+
+ for (i = 0; i < count; i ++)
+ {
+ if ((job = find_job(client, ippGetInteger(job_ids, i))) == NULL || !job->dev_uuid || strcmp(job->dev_uuid, device->uuid))
+ {
+ if (num_unsupported < 1000)
+ unsupported[num_unsupported ++] = ippGetInteger(job_ids, i);
+ }
+ else
+ {
+ ipp_jstate_t state = (ipp_jstate_t)ippGetInteger(job_states, i);
+
+ if (job->state >= IPP_JSTATE_STOPPED && state != job->state)
+ {
+ if (num_different < 1000)
+ {
+ different[num_different] = job->id;
+ states[num_different ++] = job->state;
+ }
+ }
+ else
+ job->dev_state = state;
+ }
+ }
+
+ /*
+ * Then look for jobs assigned to the device but not listed...
+ */
+
+ for (job = (_ipp_job_t *)cupsArrayFirst(client->printer->jobs);
+ job && num_different < 1000;
+ job = (_ipp_job_t *)cupsArrayNext(client->printer->jobs))
+ {
+ if (job->dev_uuid && !strcmp(job->dev_uuid, device->uuid) && !ippContainsInteger(job_ids, job->id))
+ {
+ different[num_different] = job->id;
+ states[num_different ++] = job->state;
+ }
+ }
+
+ respond_ipp(client, IPP_STATUS_OK, NULL);
+
+ if (num_different > 0)
+ {
+ ippAddIntegers(client->response, IPP_TAG_OPERATION, IPP_TAG_INTEGER, "job-ids", num_different, different);
+ ippAddIntegers(client->response, IPP_TAG_OPERATION, IPP_TAG_ENUM, "output-device-job-states", num_different, (int *)states);
+ }
+
+ if (num_unsupported > 0)
+ {
+ ippAddIntegers(client->response, IPP_TAG_UNSUPPORTED_GROUP, IPP_TAG_INTEGER, "job-ids", num_unsupported, unsupported);
+ }
+}
+
+
+/*
+ * 'ipp_update_document_status()' - Update the state of a document.
+ */
+
+static void
+ipp_update_document_status(
+ _ipp_client_t *client) /* I - Client */
+{
+ _ipp_device_t *device; /* Device */
+ _ipp_job_t *job; /* Job */
+ ipp_attribute_t *attr; /* Attribute */
+
+
+ if ((device = find_device(client)) == NULL)
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_NOT_FOUND, "Device was not found.");
+ return;
+ }
+
+ if ((job = find_job(client, 0)) == NULL)
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_NOT_FOUND, "Job was not found.");
+ return;
+ }
+
+ if (!job->dev_uuid || strcmp(job->dev_uuid, device->uuid))
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_NOT_POSSIBLE, "Job not assigned to device.");
+ return;
+ }
+
+ if ((attr = ippFindAttribute(client->request, "document-number", IPP_TAG_ZERO)) == NULL || ippGetGroupTag(attr) != IPP_TAG_OPERATION || ippGetValueTag(attr) != IPP_TAG_INTEGER || ippGetCount(attr) != 1 || ippGetInteger(attr, 0) != 1)
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST, attr ? "Bad document-number attribute." : "Missing document-number attribute.");
+ return;
+ }
+
+ if ((attr = ippFindAttribute(client->request, "impressions-completed", IPP_TAG_INTEGER)) != NULL)
+ {
+ job->impcompleted = ippGetInteger(attr, 0);
+ add_event(client->printer, job, _IPP_EVENT_JOB_PROGRESS, NULL);
+ }
+
+ respond_ipp(client, IPP_STATUS_OK, NULL);
+}
+
+
+/*
+ * 'ipp_update_job_status()' - Update the state of a job.
+ */
+
+static void
+ipp_update_job_status(
+ _ipp_client_t *client) /* I - Client */
+{
+ _ipp_device_t *device; /* Device */
+ _ipp_job_t *job; /* Job */
+ ipp_attribute_t *attr; /* Attribute */
+ _ipp_event_t events = _IPP_EVENT_NONE;
+ /* Event(s) */
+
+
+ if ((device = find_device(client)) == NULL)
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_NOT_FOUND, "Device was not found.");
+ return;
+ }
+
+ if ((job = find_job(client, 0)) == NULL)
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_NOT_FOUND, "Job was not found.");
+ return;
+ }
+
+ if (!job->dev_uuid || strcmp(job->dev_uuid, device->uuid))
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_NOT_POSSIBLE, "Job not assigned to device.");
+ return;
+ }
+
+ if ((attr = ippFindAttribute(client->request, "job-impressions-completed", IPP_TAG_INTEGER)) != NULL)
+ {
+ job->impcompleted = ippGetInteger(attr, 0);
+ events |= _IPP_EVENT_JOB_PROGRESS;
+ }
+
+ if ((attr = ippFindAttribute(client->request, "output-device-job-state", IPP_TAG_ENUM)) != NULL)
+ {
+ job->dev_state = (ipp_jstate_t)ippGetInteger(attr, 0);
+ events |= _IPP_EVENT_JOB_STATE_CHANGED;
+ }
+
+ if ((attr = ippFindAttribute(client->request, "output-device-job-state-reasons", IPP_TAG_KEYWORD)) != NULL)
+ {
+ job->dev_state_reasons = get_job_state_reasons_bits(attr);
+ events |= _IPP_EVENT_JOB_STATE_CHANGED;
+ }
+
+ if (events)
+ add_event(client->printer, job, events, NULL);
+
+ respond_ipp(client, IPP_STATUS_OK, NULL);
+}
+
+
+/*
+ * 'ipp_update_output_device_attributes()' - Update the values for an output device.
+ */
+
+static void
+ipp_update_output_device_attributes(
+ _ipp_client_t *client) /* I - Client */
+{
+ _ipp_device_t *device; /* Device */
+ ipp_attribute_t *attr, /* Current attribute */
+ *dev_attr; /* Device attribute */
+ _ipp_event_t events = _IPP_EVENT_NONE;
+ /* Config/state changed? */
+
+
+ if ((device = find_device(client)) == NULL)
+ {
+ if ((device = create_device(client)) == NULL)
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_NOT_POSSIBLE, "Unable to add output device.");
+ return;
+ }
+ }
+
+ _cupsRWLockWrite(&device->rwlock);
+
+ attr = ippFirstAttribute(client->request);
+ while (attr && ippGetGroupTag(attr) != IPP_TAG_PRINTER)
+ attr = ippNextAttribute(client->request);
+
+ for (; attr; attr = ippNextAttribute(client->request))
+ {
+ const char *attrname = ippGetName(attr),
+ /* Attribute name */
+ *dotptr; /* Pointer to dot in name */
+
+ /*
+ * Skip attributes we don't care about...
+ */
+
+ if (!attrname)
+ continue;
+
+ if (strncmp(attrname, "copies", 6) && strncmp(attrname, "document-format", 15) && strncmp(attrname, "finishings", 10) && strncmp(attrname, "media", 5) && strncmp(attrname, "print-", 6) && strncmp(attrname, "sides", 5) && strncmp(attrname, "printer-alert", 13) && strncmp(attrname, "printer-input", 13) && strncmp(attrname, "printer-output", 14) && strncmp(attrname, "printer-resolution", 18) && strncmp(attrname, "pwg-raster", 10) && strncmp(attrname, "urf-", 4))
+ continue;
+
+ if (strncmp(attrname, "printer-alert", 13) || strncmp(attrname, "printer-state", 13))
+ events |= _IPP_EVENT_PRINTER_CONFIG_CHANGED;
+ else
+ events |= _IPP_EVENT_PRINTER_STATE_CHANGED;
+
+ if (!strcmp(attrname, "media-col-ready") || !strcmp(attrname, "media-ready"))
+ events |= _IPP_EVENT_PRINTER_MEDIA_CHANGED;
+
+ if (!strcmp(attrname, "finishings-col-ready") || !strcmp(attrname, "finishings-ready"))
+ events |= _IPP_EVENT_PRINTER_FINISHINGS_CHANGED;
+
+ if ((dotptr = strrchr(attrname, '.')) != NULL && isdigit(dotptr[1] & 255))
+ {
+#if 0
+ /*
+ * Sparse representation: name.NNN or name.NNN-NNN
+ */
+
+ char temp[256], /* Temporary name string */
+ *tempptr; /* Pointer into temporary string */
+ int low, high; /* Low and high numbers in range */
+
+ low = (int)strtol(dotptr + 1, (char **)&dotptr, 10);
+ if (dotptr && *dotptr == '-')
+ high = (int)strtol(dotptr + 1, NULL, 10);
+ else
+ high = low;
+
+ strlcpy(temp, attrname, sizeof(temp));
+ if ((tempptr = strrchr(temp, '.')) != NULL)
+ *tempptr = '\0';
+
+ if ((dev_attr = ippFindAttribute(device->attrs, temp, IPP_TAG_ZERO)) != NULL)
+ {
+ }
+ else
+#endif /* 0 */
+ respond_unsupported(client, attr);
+ }
+ else
+ {
+ /*
+ * Regular representation - replace or delete current attribute,
+ * if any...
+ */
+
+ if ((dev_attr = ippFindAttribute(device->attrs, attrname, IPP_TAG_ZERO)) != NULL)
+ ippDeleteAttribute(device->attrs, dev_attr);
+
+ if (ippGetValueTag(attr) != IPP_TAG_DELETEATTR)
+ ippCopyAttribute(device->attrs, attr, 0);
+ }
+ }
+
+ _cupsRWUnlock(&device->rwlock);
+
+ if (events)
+ {
+ _cupsRWLockWrite(&client->printer->rwlock);
+ if (events & _IPP_EVENT_PRINTER_CONFIG_CHANGED)
+ update_device_attributes_no_lock(client->printer);
+ if (events & _IPP_EVENT_PRINTER_STATE_CHANGED)
+ update_device_state_no_lock(client->printer);
+ _cupsRWUnlock(&client->printer->rwlock);
+
+ add_event(client->printer, NULL, events, NULL);
+ }
+}
+
+
+/*
+ * 'ipp_validate_document()' - Validate document creation attributes.
+ */
+
+static void
+ipp_validate_document(
+ _ipp_client_t *client) /* I - Client */
+{
+ if (valid_doc_attributes(client))
+ respond_ipp(client, IPP_STATUS_OK, NULL);
+}
+
+
+/*
+ * 'ipp_validate_job()' - Validate job creation attributes.
+ */
+
+static void
+ipp_validate_job(_ipp_client_t *client) /* I - Client */
+{
+ if (valid_job_attributes(client))
+ respond_ipp(client, IPP_STATUS_OK, NULL);
+}
+
+
+#if 0
+/*
+ * 'parse_options()' - Parse URL options into CUPS options.
+ *
+ * The client->options string is destroyed by this function.
+ */
+
+static int /* O - Number of options */
+parse_options(_ipp_client_t *client, /* I - Client */
+ cups_option_t **options) /* O - Options */
+{
+ char *name, /* Name */
+ *value, /* Value */
+ *next; /* Next name=value pair */
+ int num_options = 0; /* Number of options */
+
+
+ *options = NULL;
+
+ for (name = client->options; name && *name; name = next)
+ {
+ if ((value = strchr(name, '=')) == NULL)
+ break;
+
+ *value++ = '\0';
+ if ((next = strchr(value, '&')) != NULL)
+ *next++ = '\0';
+
+ num_options = cupsAddOption(name, value, num_options, options);
+ }
+
+ return (num_options);
+}
+#endif /* 0 */
+
+
+/*
+ * 'process_client()' - Process client requests on a thread.
+ */
+
+static void * /* O - Exit status */
+process_client(_ipp_client_t *client) /* I - Client */
+{
+ /*
+ * Loop until we are out of requests or timeout (30 seconds)...
+ */
+
+#ifdef HAVE_SSL
+ int first_time = 1; /* First time request? */
+#endif /* HAVE_SSL */
+
+ while (httpWait(client->http, 30000))
+ {
+#ifdef HAVE_SSL
+ if (first_time)
+ {
+ /*
+ * See if we need to negotiate a TLS connection...
+ */
+
+ char buf[1]; /* First byte from client */
+
+ if (recv(httpGetFd(client->http), buf, 1, MSG_PEEK) == 1 && (!buf[0] || !strchr("DGHOPT", buf[0])))
+ {
+ fprintf(stderr, "%s Starting HTTPS session.\n", client->hostname);
+
+ if (httpEncryption(client->http, HTTP_ENCRYPTION_ALWAYS))
+ {
+ fprintf(stderr, "%s Unable to encrypt connection: %s\n", client->hostname, cupsLastErrorString());
+ break;
+ }
+
+ fprintf(stderr, "%s Connection now encrypted.\n", client->hostname);
+ }
+
+ first_time = 0;
+ }
+#endif /* HAVE_SSL */
+
+ if (!process_http(client))
+ break;
+ }
+
+ /*
+ * Close the conection to the client and return...
+ */
+
+ delete_client(client);
+
+ return (NULL);
+}
+
+
+/*
+ * 'process_http()' - Process a HTTP request.
+ */
+
+int /* O - 1 on success, 0 on failure */
+process_http(_ipp_client_t *client) /* I - Client connection */
+{
+ char uri[1024]; /* URI */
+ http_state_t http_state; /* HTTP state */
+ http_status_t http_status; /* HTTP status */
+ ipp_state_t ipp_state; /* State of IPP transfer */
+ char scheme[32], /* Method/scheme */
+ userpass[128], /* Username:password */
+ hostname[HTTP_MAX_HOST];
+ /* Hostname */
+ int port; /* Port number */
+ const char *encoding; /* Content-Encoding value */
+ static const char * const http_states[] =
+ { /* Strings for logging HTTP method */
+ "WAITING",
+ "OPTIONS",
+ "GET",
+ "GET_SEND",
+ "HEAD",
+ "POST",
+ "POST_RECV",
+ "POST_SEND",
+ "PUT",
+ "PUT_RECV",
+ "DELETE",
+ "TRACE",
+ "CONNECT",
+ "STATUS",
+ "UNKNOWN_METHOD",
+ "UNKNOWN_VERSION"
+ };
+
+
+ /*
+ * Clear state variables...
+ */
+
+ ippDelete(client->request);
+ ippDelete(client->response);
+
+ client->request = NULL;
+ client->response = NULL;
+ client->operation = HTTP_STATE_WAITING;
+
+ /*
+ * Read a request from the connection...
+ */
+
+ while ((http_state = httpReadRequest(client->http, uri,
+ sizeof(uri))) == HTTP_STATE_WAITING)
+ usleep(1);
+
+ /*
+ * Parse the request line...
+ */
+
+ if (http_state == HTTP_STATE_ERROR)
+ {
+ if (httpError(client->http) == EPIPE)
+ fprintf(stderr, "%s Client closed connection.\n", client->hostname);
+ else
+ fprintf(stderr, "%s Bad request line (%s).\n", client->hostname,
+ strerror(httpError(client->http)));
+
+ return (0);
+ }
+ else if (http_state == HTTP_STATE_UNKNOWN_METHOD)
+ {
+ fprintf(stderr, "%s Bad/unknown operation.\n", client->hostname);
+ respond_http(client, HTTP_STATUS_BAD_REQUEST, NULL, NULL, 0);
+ return (0);
+ }
+ else if (http_state == HTTP_STATE_UNKNOWN_VERSION)
+ {
+ fprintf(stderr, "%s Bad HTTP version.\n", client->hostname);
+ respond_http(client, HTTP_STATUS_BAD_REQUEST, NULL, NULL, 0);
+ return (0);
+ }
+
+ fprintf(stderr, "%s %s %s\n", client->hostname, http_states[http_state],
+ uri);
+
+ /*
+ * Separate the URI into its components...
+ */
+
+ if (httpSeparateURI(HTTP_URI_CODING_MOST, uri, scheme, sizeof(scheme),
+ userpass, sizeof(userpass),
+ hostname, sizeof(hostname), &port,
+ client->uri, sizeof(client->uri)) < HTTP_URI_STATUS_OK &&
+ (http_state != HTTP_STATE_OPTIONS || strcmp(uri, "*")))
+ {
+ fprintf(stderr, "%s Bad URI \"%s\".\n", client->hostname, uri);
+ respond_http(client, HTTP_STATUS_BAD_REQUEST, NULL, NULL, 0);
+ return (0);
+ }
+
+ if ((client->options = strchr(client->uri, '?')) != NULL)
+ *(client->options)++ = '\0';
+
+ /*
+ * Process the request...
+ */
+
+ client->start = time(NULL);
+ client->operation = httpGetState(client->http);
+
+ /*
+ * Parse incoming parameters until the status changes...
+ */
+
+ while ((http_status = httpUpdate(client->http)) == HTTP_STATUS_CONTINUE);
+
+ if (http_status != HTTP_STATUS_OK)
+ {
+ respond_http(client, HTTP_STATUS_BAD_REQUEST, NULL, NULL, 0);
+ return (0);
+ }
+
+ if (!httpGetField(client->http, HTTP_FIELD_HOST)[0] &&
+ httpGetVersion(client->http) >= HTTP_VERSION_1_1)
+ {
+ /*
+ * HTTP/1.1 and higher require the "Host:" field...
+ */
+
+ respond_http(client, HTTP_STATUS_BAD_REQUEST, NULL, NULL, 0);
+ return (0);
+ }
+
+ /*
+ * Handle HTTP Upgrade...
+ */
+
+ if (!strcasecmp(httpGetField(client->http, HTTP_FIELD_CONNECTION),
+ "Upgrade"))
+ {
+#ifdef HAVE_SSL
+ if (strstr(httpGetField(client->http, HTTP_FIELD_UPGRADE), "TLS/") != NULL && !httpIsEncrypted(client->http))
+ {
+ if (!respond_http(client, HTTP_STATUS_SWITCHING_PROTOCOLS, NULL, NULL, 0))
+ return (0);
+
+ fprintf(stderr, "%s Upgrading to encrypted connection.\n", client->hostname);
+
+ if (httpEncryption(client->http, HTTP_ENCRYPTION_REQUIRED))
+ {
+ fprintf(stderr, "%s Unable to encrypt connection: %s\n", client->hostname, cupsLastErrorString());
+ return (0);
+ }
+
+ fprintf(stderr, "%s Connection now encrypted.\n", client->hostname);
+ }
+ else
+#endif /* HAVE_SSL */
+
+ if (!respond_http(client, HTTP_STATUS_NOT_IMPLEMENTED, NULL, NULL, 0))
+ return (0);
+ }
+
+ /*
+ * Handle HTTP Expect...
+ */
+
+ if (httpGetExpect(client->http) &&
+ (client->operation == HTTP_STATE_POST ||
+ client->operation == HTTP_STATE_PUT))
+ {
+ if (httpGetExpect(client->http) == HTTP_STATUS_CONTINUE)
+ {
+ /*
+ * Send 100-continue header...
+ */
+
+ if (!respond_http(client, HTTP_STATUS_CONTINUE, NULL, NULL, 0))
+ return (0);
+ }
+ else
+ {
+ /*
+ * Send 417-expectation-failed header...
+ */
+
+ if (!respond_http(client, HTTP_STATUS_EXPECTATION_FAILED, NULL, NULL, 0))
+ return (0);
+ }
+ }
+
+ /*
+ * Handle new transfers...
+ */
+
+ encoding = httpGetContentEncoding(client->http);
+
+ switch (client->operation)
+ {
+ case HTTP_STATE_OPTIONS :
+ /*
+ * Do OPTIONS command...
+ */
+
+ return (respond_http(client, HTTP_STATUS_OK, NULL, NULL, 0));
+
+ case HTTP_STATE_HEAD :
+#if 0 /* TODO: Work out icon support */
+ if (!strcmp(client->uri, "/icon.png"))
+ return (respond_http(client, HTTP_STATUS_OK, NULL, "image/png", 0));
+ else
+#endif /* 0 */
+ if (!strcmp(client->uri, "/") || !strcmp(client->uri, "/media") || !strcmp(client->uri, "/supplies"))
+ return (respond_http(client, HTTP_STATUS_OK, NULL, "text/html", 0));
+ else
+ return (respond_http(client, HTTP_STATUS_NOT_FOUND, NULL, NULL, 0));
+
+ case HTTP_STATE_GET :
+#if 0 /* TODO: Work out icon support */
+ if (!strcmp(client->uri, "/icon.png"))
+ {
+ /*
+ * Send PNG icon file.
+ */
+
+ int fd; /* Icon file */
+ struct stat fileinfo; /* Icon file information */
+ char buffer[4096]; /* Copy buffer */
+ ssize_t bytes; /* Bytes */
+
+ fprintf(stderr, "Icon file is \"%s\".\n", client->printer->icon);
+
+ if (!stat(client->printer->icon, &fileinfo) &&
+ (fd = open(client->printer->icon, O_RDONLY)) >= 0)
+ {
+ if (!respond_http(client, HTTP_STATUS_OK, NULL, "image/png",
+ (size_t)fileinfo.st_size))
+ {
+ close(fd);
+ return (0);
+ }
+
+ while ((bytes = read(fd, buffer, sizeof(buffer))) > 0)
+ httpWrite2(client->http, buffer, (size_t)bytes);
+
+ httpFlushWrite(client->http);
+
+ close(fd);
+ }
+ else
+ return (respond_http(client, HTTP_STATUS_NOT_FOUND, NULL, NULL, 0));
+ }
+ else
+#endif /* 0 */
+ if (!strcmp(client->uri, "/"))
+ {
+ /*
+ * Show web status page...
+ */
+
+ _ipp_job_t *job; /* Current job */
+ int i; /* Looping var */
+ _ipp_preason_t reason; /* Current reason */
+ static const char * const reasons[] =
+ { /* Reason strings */
+ "Other",
+ "Cover Open",
+ "Input Tray Missing",
+ "Marker Supply Empty",
+ "Marker Supply Low",
+ "Marker Waste Almost Full",
+ "Marker Waste Full",
+ "Media Empty",
+ "Media Jam",
+ "Media Low",
+ "Media Needed",
+ "Moving to Paused",
+ "Paused",
+ "Spool Area Full",
+ "Toner Empty",
+ "Toner Low"
+ };
+
+ if (!respond_http(client, HTTP_STATUS_OK, encoding, "text/html", 0))
+ return (0);
+
+ html_header(client, client->printer->name);
+ html_printf(client,
+ "<p><img align=\"right\" src=\"/icon.png\" width=\"64\" height=\"64\"><b>ippserver (" CUPS_SVERSION ")</b></p>\n"
+ "<p>%s, %d job(s).", client->printer->state == IPP_PSTATE_IDLE ? "Idle" : client->printer->state == IPP_PSTATE_PROCESSING ? "Printing" : "Stopped", cupsArrayCount(client->printer->jobs));
+ for (i = 0, reason = 1; i < (int)(sizeof(reasons) / sizeof(reasons[0])); i ++, reason <<= 1)
+ if (client->printer->state_reasons & reason)
+ html_printf(client, "\n<br>&nbsp;&nbsp;&nbsp;&nbsp;%s", reasons[i]);
+ html_printf(client, "</p>\n");
+
+ if (cupsArrayCount(client->printer->jobs) > 0)
+ {
+ _cupsRWLockRead(&(client->printer->rwlock));
+
+ html_printf(client, "<table class=\"striped\" summary=\"Jobs\"><thead><tr><th>Job #</th><th>Name</th><th>Owner</th><th>When</th></tr></thead><tbody>\n");
+ for (job = (_ipp_job_t *)cupsArrayFirst(client->printer->jobs); job; job = (_ipp_job_t *)cupsArrayNext(client->printer->jobs))
+ {
+ char when[256], /* When job queued/started/finished */
+ hhmmss[64]; /* Time HH:MM:SS */
+
+ switch (job->state)
+ {
+ case IPP_JSTATE_PENDING :
+ case IPP_JSTATE_HELD :
+ snprintf(when, sizeof(when), "Queued at %s", time_string(job->created, hhmmss, sizeof(hhmmss)));
+ break;
+ case IPP_JSTATE_PROCESSING :
+ case IPP_JSTATE_STOPPED :
+ snprintf(when, sizeof(when), "Started at %s", time_string(job->processing, hhmmss, sizeof(hhmmss)));
+ break;
+ case IPP_JSTATE_ABORTED :
+ snprintf(when, sizeof(when), "Aborted at %s", time_string(job->completed, hhmmss, sizeof(hhmmss)));
+ break;
+ case IPP_JSTATE_CANCELED :
+ snprintf(when, sizeof(when), "Canceled at %s", time_string(job->completed, hhmmss, sizeof(hhmmss)));
+ break;
+ case IPP_JSTATE_COMPLETED :
+ snprintf(when, sizeof(when), "Completed at %s", time_string(job->completed, hhmmss, sizeof(hhmmss)));
+ break;
+ }
+
+ html_printf(client, "<tr><td>%d</td><td>%s</td><td>%s</td><td>%s</td></tr>\n", job->id, job->name, job->username, when);
+ }
+ html_printf(client, "</tbody></table>\n");
+
+ _cupsRWUnlock(&(client->printer->rwlock));
+ }
+ html_footer(client);
+
+ return (1);
+ }
+#if 0 /* TODO: Pull media and supply info from device attrs */
+ else if (!strcmp(client->uri, "/media"))
+ {
+ /*
+ * Show web media page...
+ */
+
+ int i, /* Looping var */
+ num_options; /* Number of form options */
+ cups_option_t *options; /* Form options */
+ static const char * const sizes[] =
+ { /* Size strings */
+ "ISO A4",
+ "ISO A5",
+ "ISO A6",
+ "DL Envelope",
+ "US Legal",
+ "US Letter",
+ "#10 Envelope",
+ "3x5 Photo",
+ "3.5x5 Photo",
+ "4x6 Photo",
+ "5x7 Photo"
+ };
+ static const char * const types[] =
+ /* Type strings */
+ {
+ "Auto",
+ "Cardstock",
+ "Envelope",
+ "Labels",
+ "Other",
+ "Glossy Photo",
+ "High-Gloss Photo",
+ "Matte Photo",
+ "Satin Photo",
+ "Semi-Gloss Photo",
+ "Plain",
+ "Letterhead",
+ "Transparency"
+ };
+ static const int sheets[] = /* Number of sheets */
+ {
+ 250,
+ 100,
+ 25,
+ 5,
+ 0
+ };
+
+ if (!respond_http(client, HTTP_STATUS_OK, encoding, "text/html", 0))
+ return (0);
+
+ html_header(client, client->printer->name);
+
+ if ((num_options = parse_options(client, &options)) > 0)
+ {
+ /*
+ * WARNING: A real printer/server implementation MUST NOT implement
+ * media updates via a GET request - GET requests are supposed to be
+ * idempotent (without side-effects) and we obviously are not
+ * authenticating access here. This form is provided solely to
+ * enable testing and development!
+ */
+
+ const char *val; /* Form value */
+
+ if ((val = cupsGetOption("main_size", num_options, options)) != NULL)
+ client->printer->main_size = atoi(val);
+ if ((val = cupsGetOption("main_type", num_options, options)) != NULL)
+ client->printer->main_type = atoi(val);
+ if ((val = cupsGetOption("main_level", num_options, options)) != NULL)
+ client->printer->main_level = atoi(val);
+
+ if ((val = cupsGetOption("envelope_size", num_options, options)) != NULL)
+ client->printer->envelope_size = atoi(val);
+ if ((val = cupsGetOption("envelope_level", num_options, options)) != NULL)
+ client->printer->envelope_level = atoi(val);
+
+ if ((val = cupsGetOption("photo_size", num_options, options)) != NULL)
+ client->printer->photo_size = atoi(val);
+ if ((val = cupsGetOption("photo_type", num_options, options)) != NULL)
+ client->printer->photo_type = atoi(val);
+ if ((val = cupsGetOption("photo_level", num_options, options)) != NULL)
+ client->printer->photo_level = atoi(val);
+
+ if ((client->printer->main_level < 100 && client->printer->main_level > 0) || (client->printer->envelope_level < 25 && client->printer->envelope_level > 0) || (client->printer->photo_level < 25 && client->printer->photo_level > 0))
+ client->printer->state_reasons |= _IPP_PREASON_MEDIA_LOW;
+ else
+ client->printer->state_reasons &= (_ipp_preason_t)~_IPP_PREASON_MEDIA_LOW;
+
+ if ((client->printer->main_level == 0 && client->printer->main_size > _IPP_MEDIA_SIZE_NONE) || (client->printer->envelope_level == 0 && client->printer->envelope_size > _IPP_MEDIA_SIZE_NONE) || (client->printer->photo_level == 0 && client->printer->photo_size > _IPP_MEDIA_SIZE_NONE))
+ {
+ client->printer->state_reasons |= _IPP_PREASON_MEDIA_EMPTY;
+ if (client->printer->active_job)
+ client->printer->state_reasons |= _IPP_PREASON_MEDIA_NEEDED;
+ }
+ else
+ client->printer->state_reasons &= (_ipp_preason_t)~(_IPP_PREASON_MEDIA_EMPTY | _IPP_PREASON_MEDIA_NEEDED);
+
+ html_printf(client, "<blockquote>Media updated.</blockquote>\n");
+ }
+
+ html_printf(client, "<form method=\"GET\" action=\"/media\">\n");
+
+ html_printf(client, "<table class=\"form\" summary=\"Media\">\n");
+ html_printf(client, "<tr><th>Main Tray:</th><td><select name=\"main_size\"><option value=\"-1\">None</option>");
+ for (i = 0; i < (int)(sizeof(sizes) / sizeof(sizes[0])); i ++)
+ if (!strstr(sizes[i], "Envelope") && !strstr(sizes[i], "Photo"))
+ html_printf(client, "<option value=\"%d\"%s>%s</option>", i, i == client->printer->main_size ? " selected" : "", sizes[i]);
+ html_printf(client, "</select> <select name=\"main_type\"><option value=\"-1\">None</option>");
+ for (i = 0; i < (int)(sizeof(types) / sizeof(types[0])); i ++)
+ if (!strstr(types[i], "Photo"))
+ html_printf(client, "<option value=\"%d\"%s>%s</option>", i, i == client->printer->main_type ? " selected" : "", types[i]);
+ html_printf(client, "</select> <select name=\"main_level\">");
+ for (i = 0; i < (int)(sizeof(sheets) / sizeof(sheets[0])); i ++)
+ html_printf(client, "<option value=\"%d\"%s>%d sheets</option>", sheets[i], sheets[i] == client->printer->main_level ? " selected" : "", sheets[i]);
+ html_printf(client, "</select></td></tr>\n");
+
+ html_printf(client,
+ "<tr><th>Envelope Feeder:</th><td><select name=\"envelope_size\"><option value=\"-1\">None</option>");
+ for (i = 0; i < (int)(sizeof(sizes) / sizeof(sizes[0])); i ++)
+ if (strstr(sizes[i], "Envelope"))
+ html_printf(client, "<option value=\"%d\"%s>%s</option>", i, i == client->printer->envelope_size ? " selected" : "", sizes[i]);
+ html_printf(client, "</select> <select name=\"envelope_level\">");
+ for (i = 0; i < (int)(sizeof(sheets) / sizeof(sheets[0])); i ++)
+ html_printf(client, "<option value=\"%d\"%s>%d sheets</option>", sheets[i], sheets[i] == client->printer->envelope_level ? " selected" : "", sheets[i]);
+ html_printf(client, "</select></td></tr>\n");
+
+ html_printf(client,
+ "<tr><th>Photo Tray:</th><td><select name=\"photo_size\"><option value=\"-1\">None</option>");
+ for (i = 0; i < (int)(sizeof(sizes) / sizeof(sizes[0])); i ++)
+ if (strstr(sizes[i], "Photo"))
+ html_printf(client, "<option value=\"%d\"%s>%s</option>", i, i == client->printer->photo_size ? " selected" : "", sizes[i]);
+ html_printf(client, "</select> <select name=\"photo_type\"><option value=\"-1\">None</option>");
+ for (i = 0; i < (int)(sizeof(types) / sizeof(types[0])); i ++)
+ if (strstr(types[i], "Photo"))
+ html_printf(client, "<option value=\"%d\"%s>%s</option>", i, i == client->printer->photo_type ? " selected" : "", types[i]);
+ html_printf(client, "</select> <select name=\"photo_level\">");
+ for (i = 0; i < (int)(sizeof(sheets) / sizeof(sheets[0])); i ++)
+ html_printf(client, "<option value=\"%d\"%s>%d sheets</option>", sheets[i], sheets[i] == client->printer->photo_level ? " selected" : "", sheets[i]);
+ html_printf(client, "</select></td></tr>\n");
+
+ html_printf(client, "<tr><td></td><td><input type=\"submit\" value=\"Update Media\"></td></tr></table></form>\n");
+ html_footer(client);
+
+ return (1);
+ }
+ else if (!strcmp(client->uri, "/supplies"))
+ {
+ /*
+ * Show web supplies page...
+ */
+
+ int i, j, /* Looping vars */
+ num_options; /* Number of form options */
+ cups_option_t *options; /* Form options */
+ static const int levels[] = { 0, 5, 10, 25, 50, 75, 90, 95, 100 };
+
+ if (!respond_http(client, HTTP_STATUS_OK, encoding, "text/html", 0))
+ return (0);
+
+ html_header(client, client->printer->name);
+
+ if ((num_options = parse_options(client, &options)) > 0)
+ {
+ /*
+ * WARNING: A real printer/server implementation MUST NOT implement
+ * supply updates via a GET request - GET requests are supposed to be
+ * idempotent (without side-effects) and we obviously are not
+ * authenticating access here. This form is provided solely to
+ * enable testing and development!
+ */
+
+ char name[64]; /* Form field */
+ const char *val; /* Form value */
+
+ client->printer->state_reasons &= (_ipp_preason_t)~(_IPP_PREASON_MARKER_SUPPLY_EMPTY | _IPP_PREASON_MARKER_SUPPLY_LOW | _IPP_PREASON_MARKER_WASTE_ALMOST_FULL | _IPP_PREASON_MARKER_WASTE_FULL | _IPP_PREASON_TONER_EMPTY | _IPP_PREASON_TONER_LOW);
+
+ for (i = 0; i < (int)(sizeof(printer_supplies) / sizeof(printer_supplies[0])); i ++)
+ {
+ snprintf(name, sizeof(name), "supply_%d", i);
+ if ((val = cupsGetOption(name, num_options, options)) != NULL)
+ {
+ int level = client->printer->supplies[i] = atoi(val);
+ /* New level */
+
+ if (i < 4)
+ {
+ if (level == 0)
+ client->printer->state_reasons |= _IPP_PREASON_TONER_EMPTY;
+ else if (level < 10)
+ client->printer->state_reasons |= _IPP_PREASON_TONER_LOW;
+ }
+ else
+ {
+ if (level == 100)
+ client->printer->state_reasons |= _IPP_PREASON_MARKER_WASTE_FULL;
+ else if (level > 90)
+ client->printer->state_reasons |= _IPP_PREASON_MARKER_WASTE_ALMOST_FULL;
+ }
+ }
+ }
+
+ html_printf(client, "<blockquote>Supplies updated.</blockquote>\n");
+ }
+
+ html_printf(client, "<form method=\"GET\" action=\"/supplies\">\n");
+
+ html_printf(client, "<table class=\"form\" summary=\"Supplies\">\n");
+ for (i = 0; i < (int)(sizeof(printer_supplies) / sizeof(printer_supplies[0])); i ++)
+ {
+ html_printf(client, "<tr><th>%s:</th><td><select name=\"supply_%d\">", printer_supplies[i], i);
+ for (j = 0; j < (int)(sizeof(levels) / sizeof(levels[0])); j ++)
+ html_printf(client, "<option value=\"%d\"%s>%d%%</option>", levels[j], levels[j] == client->printer->supplies[i] ? " selected" : "", levels[j]);
+ html_printf(client, "</select></td></tr>\n");
+ }
+ html_printf(client, "<tr><td></td><td><input type=\"submit\" value=\"Update Supplies\"></td></tr>\n</table>\n</form>\n");
+ html_footer(client);
+
+ return (1);
+ }
+#endif /* 0 */
+ else
+ return (respond_http(client, HTTP_STATUS_NOT_FOUND, NULL, NULL, 0));
+ break;
+
+ case HTTP_STATE_POST :
+ if (strcmp(httpGetField(client->http, HTTP_FIELD_CONTENT_TYPE),
+ "application/ipp"))
+ {
+ /*
+ * Not an IPP request...
+ */
+
+ return (respond_http(client, HTTP_STATUS_BAD_REQUEST, NULL, NULL, 0));
+ }
+
+ /*
+ * Read the IPP request...
+ */
+
+ client->request = ippNew();
+
+ while ((ipp_state = ippRead(client->http,
+ client->request)) != IPP_STATE_DATA)
+ {
+ if (ipp_state == IPP_STATE_ERROR)
+ {
+ fprintf(stderr, "%s IPP read error (%s).\n", client->hostname,
+ cupsLastErrorString());
+ respond_http(client, HTTP_STATUS_BAD_REQUEST, NULL, NULL, 0);
+ return (0);
+ }
+ }
+
+ /*
+ * Now that we have the IPP request, process the request...
+ */
+
+ return (process_ipp(client));
+
+ default :
+ break; /* Anti-compiler-warning-code */
+ }
+
+ return (1);
+}
+
+
+/*
+ * 'process_ipp()' - Process an IPP request.
+ */
+
+static int /* O - 1 on success, 0 on error */
+process_ipp(_ipp_client_t *client) /* I - Client */
+{
+ ipp_tag_t group; /* Current group tag */
+ ipp_attribute_t *attr; /* Current attribute */
+ ipp_attribute_t *charset; /* Character set attribute */
+ ipp_attribute_t *language; /* Language attribute */
+ ipp_attribute_t *uri; /* Printer URI attribute */
+ int major, minor; /* Version number */
+ const char *name; /* Name of attribute */
+
+
+ debug_attributes("Request", client->request, 1);
+
+ /*
+ * First build an empty response message for this request...
+ */
+
+ client->operation_id = ippGetOperation(client->request);
+ client->response = ippNewResponse(client->request);
+
+ /*
+ * Then validate the request header and required attributes...
+ */
+
+ major = ippGetVersion(client->request, &minor);
+
+ if (major < 1 || major > 2)
+ {
+ /*
+ * Return an error, since we only support IPP 1.x and 2.x.
+ */
+
+ respond_ipp(client, IPP_STATUS_ERROR_VERSION_NOT_SUPPORTED,
+ "Bad request version number %d.%d.", major, minor);
+ }
+ else if (ippGetRequestId(client->request) <= 0)
+ respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST, "Bad request-id %d.",
+ ippGetRequestId(client->request));
+ else if (!ippFirstAttribute(client->request))
+ respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST,
+ "No attributes in request.");
+ else
+ {
+ /*
+ * Make sure that the attributes are provided in the correct order and
+ * don't repeat groups...
+ */
+
+ for (attr = ippFirstAttribute(client->request),
+ group = ippGetGroupTag(attr);
+ attr;
+ attr = ippNextAttribute(client->request))
+ {
+ if (ippGetGroupTag(attr) < group && ippGetGroupTag(attr) != IPP_TAG_ZERO)
+ {
+ /*
+ * Out of order; return an error...
+ */
+
+ respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST,
+ "Attribute groups are out of order (%x < %x).",
+ ippGetGroupTag(attr), group);
+ break;
+ }
+ else
+ group = ippGetGroupTag(attr);
+ }
+
+ if (!attr)
+ {
+ /*
+ * Then make sure that the first three attributes are:
+ *
+ * attributes-charset
+ * attributes-natural-language
+ * printer-uri/job-uri
+ */
+
+ attr = ippFirstAttribute(client->request);
+ name = ippGetName(attr);
+ if (attr && name && !strcmp(name, "attributes-charset") &&
+ ippGetValueTag(attr) == IPP_TAG_CHARSET)
+ charset = attr;
+ else
+ charset = NULL;
+
+ attr = ippNextAttribute(client->request);
+ name = ippGetName(attr);
+
+ if (attr && name && !strcmp(name, "attributes-natural-language") &&
+ ippGetValueTag(attr) == IPP_TAG_LANGUAGE)
+ language = attr;
+ else
+ language = NULL;
+
+ if ((attr = ippFindAttribute(client->request, "printer-uri",
+ IPP_TAG_URI)) != NULL)
+ uri = attr;
+ else if ((attr = ippFindAttribute(client->request, "job-uri",
+ IPP_TAG_URI)) != NULL)
+ uri = attr;
+ else
+ uri = NULL;
+
+ if (charset &&
+ strcasecmp(ippGetString(charset, 0, NULL), "us-ascii") &&
+ strcasecmp(ippGetString(charset, 0, NULL), "utf-8"))
+ {
+ /*
+ * Bad character set...
+ */
+
+ respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST,
+ "Unsupported character set \"%s\".",
+ ippGetString(charset, 0, NULL));
+ }
+ else if (!charset || !language || !uri)
+ {
+ /*
+ * Return an error, since attributes-charset,
+ * attributes-natural-language, and printer-uri/job-uri are required
+ * for all operations.
+ */
+
+ respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST,
+ "Missing required attributes.");
+ }
+ else
+ {
+ char scheme[32], /* URI scheme */
+ userpass[32], /* Username/password in URI */
+ host[256], /* Host name in URI */
+ resource[256]; /* Resource path in URI */
+ int port; /* Port number in URI */
+
+ name = ippGetName(uri);
+
+ if (httpSeparateURI(HTTP_URI_CODING_ALL, ippGetString(uri, 0, NULL),
+ scheme, sizeof(scheme),
+ userpass, sizeof(userpass),
+ host, sizeof(host), &port,
+ resource, sizeof(resource)) < HTTP_URI_STATUS_OK)
+ respond_ipp(client, IPP_STATUS_ERROR_ATTRIBUTES_OR_VALUES,
+ "Bad %s value '%s'.", name, ippGetString(uri, 0, NULL));
+ else if ((!strcmp(name, "job-uri") && strncmp(resource, "/ipp/print/", 11)) ||
+ (!strcmp(name, "printer-uri") && strcmp(resource, "/ipp/print")))
+ respond_ipp(client, IPP_STATUS_ERROR_NOT_FOUND, "%s %s not found.",
+ name, ippGetString(uri, 0, NULL));
+ else
+ {
+ /*
+ * Try processing the operation...
+ */
+
+ switch ((int)ippGetOperation(client->request))
+ {
+ case IPP_OP_PRINT_JOB :
+ ipp_print_job(client);
+ break;
+
+ case IPP_OP_PRINT_URI :
+ ipp_print_uri(client);
+ break;
+
+ case IPP_OP_VALIDATE_JOB :
+ ipp_validate_job(client);
+ break;
+
+ case IPP_OP_CREATE_JOB :
+ ipp_create_job(client);
+ break;
+
+ case IPP_OP_SEND_DOCUMENT :
+ ipp_send_document(client);
+ break;
+
+ case IPP_OP_SEND_URI :
+ ipp_send_uri(client);
+ break;
+
+ case IPP_OP_CANCEL_JOB :
+ ipp_cancel_job(client);
+ break;
+
+ case IPP_OP_CANCEL_MY_JOBS :
+ ipp_cancel_my_jobs(client);
+ break;
+
+ case IPP_OP_GET_JOB_ATTRIBUTES :
+ ipp_get_job_attributes(client);
+ break;
+
+ case IPP_OP_GET_JOBS :
+ ipp_get_jobs(client);
+ break;
+
+ case IPP_OP_GET_PRINTER_ATTRIBUTES :
+ ipp_get_printer_attributes(client);
+ break;
+
+ case IPP_OP_GET_PRINTER_SUPPORTED_VALUES :
+ ipp_get_printer_supported_values(client);
+ break;
+
+ case IPP_OP_CLOSE_JOB :
+ ipp_close_job(client);
+ break;
+
+ case IPP_OP_IDENTIFY_PRINTER :
+ ipp_identify_printer(client);
+ break;
+
+ case IPP_OP_CANCEL_SUBSCRIPTION :
+ ipp_cancel_subscription(client);
+ break;
+
+ case IPP_OP_CREATE_JOB_SUBSCRIPTIONS :
+ case IPP_OP_CREATE_PRINTER_SUBSCRIPTIONS :
+ ipp_create_xxx_subscriptions(client);
+ break;
+
+ case IPP_OP_GET_NOTIFICATIONS :
+ ipp_get_notifications(client);
+ break;
+
+ case IPP_OP_GET_SUBSCRIPTION_ATTRIBUTES :
+ ipp_get_subscription_attributes(client);
+ break;
+
+ case IPP_OP_GET_SUBSCRIPTIONS :
+ ipp_get_subscriptions(client);
+ break;
+
+ case IPP_OP_RENEW_SUBSCRIPTION :
+ ipp_renew_subscription(client);
+ break;
+
+ case IPP_OP_GET_DOCUMENT_ATTRIBUTES :
+ ipp_get_document_attributes(client);
+ break;
+
+ case IPP_OP_GET_DOCUMENTS :
+ ipp_get_documents(client);
+ break;
+
+ case IPP_OP_VALIDATE_DOCUMENT :
+ ipp_validate_document(client);
+ break;
+
+ case _IPP_OP_ACKNOWLEDGE_DOCUMENT :
+ ipp_acknowledge_document(client);
+ break;
+
+ case _IPP_OP_ACKNOWLEDGE_IDENTIFY_PRINTER :
+ ipp_acknowledge_identify_printer(client);
+ break;
+
+ case _IPP_OP_ACKNOWLEDGE_JOB :
+ ipp_acknowledge_job(client);
+ break;
+
+ case _IPP_OP_FETCH_DOCUMENT :
+ ipp_fetch_document(client);
+ break;
+
+ case _IPP_OP_FETCH_JOB :
+ ipp_fetch_job(client);
+ break;
+
+ case _IPP_OP_GET_OUTPUT_DEVICE_ATTRIBUTES :
+ ipp_get_output_device_attributes(client);
+ break;
+
+ case _IPP_OP_UPDATE_ACTIVE_JOBS :
+ ipp_update_active_jobs(client);
+ break;
+
+ case _IPP_OP_UPDATE_DOCUMENT_STATUS :
+ ipp_update_document_status(client);
+ break;
+
+ case _IPP_OP_UPDATE_JOB_STATUS :
+ ipp_update_job_status(client);
+ break;
+
+ case _IPP_OP_UPDATE_OUTPUT_DEVICE_ATTRIBUTES :
+ ipp_update_output_device_attributes(client);
+ break;
+
+ case _IPP_OP_DEREGISTER_OUTPUT_DEVICE :
+ ipp_deregister_output_device(client);
+ break;
+
+ default :
+ respond_ipp(client, IPP_STATUS_ERROR_OPERATION_NOT_SUPPORTED,
+ "Operation not supported.");
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ /*
+ * Send the HTTP header and return...
+ */
+
+ if (httpGetState(client->http) != HTTP_STATE_POST_SEND)
+ httpFlush(client->http); /* Flush trailing (junk) data */
+
+ return (respond_http(client, HTTP_STATUS_OK, NULL, "application/ipp",
+ client->fetch_file >= 0 ? 0 : ippLength(client->response)));
+}
+
+
+/*
+ * 'process_job()' - Process a print job.
+ */
+
+static void * /* O - Thread exit status */
+process_job(_ipp_job_t *job) /* I - Job */
+{
+ job->state = IPP_JSTATE_PROCESSING;
+ job->printer->state = IPP_PSTATE_PROCESSING;
+ job->processing = time(NULL);
+ job->printer->processing_job = job;
+
+ add_event(job->printer, job, _IPP_EVENT_JOB_STATE_CHANGED, "Job processing.");
+
+ /*
+ * TODO: Perform any preprocessing needed...
+ */
+
+ // job->state_reasons |= _IPP_JREASON_JOB_TRANSFORMING;
+ // job->state_reasons &= ~_IPP_JREASON_JOB_TRANSFORMING;
+
+ /*
+ * Set the state to processing-stopped, fetchable, then send a
+ * notification.
+ */
+
+ job->state = IPP_JSTATE_STOPPED;
+ job->state_reasons |= _IPP_JREASON_JOB_FETCHABLE;
+
+ add_event(job->printer, job, _IPP_EVENT_JOB_STATE_CHANGED, "Job fetchable.");
+
+ return (NULL);
+}
+
+
+/*
+ * 'respond_http()' - Send a HTTP response.
+ */
+
+int /* O - 1 on success, 0 on failure */
+respond_http(
+ _ipp_client_t *client, /* I - Client */
+ http_status_t code, /* I - HTTP status of response */
+ const char *content_encoding, /* I - Content-Encoding of response */
+ const char *type, /* I - MIME media type of response */
+ size_t length) /* I - Length of response */
+{
+ char message[1024]; /* Text message */
+
+
+ fprintf(stderr, "%s %s\n", client->hostname, httpStatus(code));
+
+ if (code == HTTP_STATUS_CONTINUE)
+ {
+ /*
+ * 100-continue doesn't send any headers...
+ */
+
+ return (httpWriteResponse(client->http, HTTP_STATUS_CONTINUE) == 0);
+ }
+
+ /*
+ * Format an error message...
+ */
+
+ if (!type && !length && code != HTTP_STATUS_OK && code != HTTP_STATUS_SWITCHING_PROTOCOLS)
+ {
+ snprintf(message, sizeof(message), "%d - %s\n", code, httpStatus(code));
+
+ type = "text/plain";
+ length = strlen(message);
+ }
+ else
+ message[0] = '\0';
+
+ /*
+ * Send the HTTP response header...
+ */
+
+ httpClearFields(client->http);
+
+ if (code == HTTP_STATUS_METHOD_NOT_ALLOWED ||
+ client->operation == HTTP_STATE_OPTIONS)
+ httpSetField(client->http, HTTP_FIELD_ALLOW, "GET, HEAD, OPTIONS, POST");
+
+ if (type)
+ {
+ if (!strcmp(type, "text/html"))
+ httpSetField(client->http, HTTP_FIELD_CONTENT_TYPE,
+ "text/html; charset=utf-8");
+ else
+ httpSetField(client->http, HTTP_FIELD_CONTENT_TYPE, type);
+
+ if (content_encoding)
+ httpSetField(client->http, HTTP_FIELD_CONTENT_ENCODING, content_encoding);
+ }
+
+ httpSetLength(client->http, length);
+
+ if (httpWriteResponse(client->http, code) < 0)
+ return (0);
+
+ /*
+ * Send the response data...
+ */
+
+ if (message[0])
+ {
+ /*
+ * Send a plain text message.
+ */
+
+ if (httpPrintf(client->http, "%s", message) < 0)
+ return (0);
+
+ if (httpWrite2(client->http, "", 0) < 0)
+ return (0);
+ }
+ else if (client->response)
+ {
+ /*
+ * Send an IPP response...
+ */
+
+ debug_attributes("Response", client->response, 2);
+
+ ippSetState(client->response, IPP_STATE_IDLE);
+
+ if (ippWrite(client->http, client->response) != IPP_STATE_DATA)
+ return (0);
+
+ if (client->fetch_file >= 0)
+ {
+ ssize_t bytes; /* Bytes read */
+ char buffer[32768]; /* Buffer */
+
+ if (client->fetch_compression)
+ httpSetField(client->http, HTTP_FIELD_CONTENT_ENCODING, "gzip");
+
+ while ((bytes = read(client->fetch_file, buffer, sizeof(buffer))) > 0)
+ httpWrite2(client->http, buffer, (size_t)bytes);
+
+ httpWrite2(client->http, "", 0);
+ close(client->fetch_file);
+ client->fetch_file = -1;
+ }
+ }
+
+ return (1);
+}
+
+
+/*
+ * 'respond_ipp()' - Send an IPP response.
+ */
+
+static void
+respond_ipp(_ipp_client_t *client, /* I - Client */
+ ipp_status_t status, /* I - status-code */
+ const char *message, /* I - printf-style status-message */
+ ...) /* I - Additional args as needed */
+{
+ const char *formatted = NULL; /* Formatted message */
+
+
+ ippSetStatusCode(client->response, status);
+
+ if (message)
+ {
+ va_list ap; /* Pointer to additional args */
+ ipp_attribute_t *attr; /* New status-message attribute */
+
+ va_start(ap, message);
+ if ((attr = ippFindAttribute(client->response, "status-message",
+ IPP_TAG_TEXT)) != NULL)
+ ippSetStringfv(client->response, &attr, 0, message, ap);
+ else
+ attr = ippAddStringfv(client->response, IPP_TAG_OPERATION, IPP_TAG_TEXT,
+ "status-message", NULL, message, ap);
+ va_end(ap);
+
+ formatted = ippGetString(attr, 0, NULL);
+ }
+
+ if (formatted)
+ fprintf(stderr, "%s %s %s (%s)\n", client->hostname,
+ ippOpString(client->operation_id), ippErrorString(status),
+ formatted);
+ else
+ fprintf(stderr, "%s %s %s\n", client->hostname,
+ ippOpString(client->operation_id), ippErrorString(status));
+}
+
+
+/*
+ * 'respond_unsupported()' - Respond with an unsupported attribute.
+ */
+
+static void
+respond_unsupported(
+ _ipp_client_t *client, /* I - Client */
+ ipp_attribute_t *attr) /* I - Atribute */
+{
+ ipp_attribute_t *temp; /* Copy of attribute */
+
+
+ respond_ipp(client, IPP_STATUS_ERROR_ATTRIBUTES_OR_VALUES,
+ "Unsupported %s %s%s value.", ippGetName(attr),
+ ippGetCount(attr) > 1 ? "1setOf " : "",
+ ippTagString(ippGetValueTag(attr)));
+
+ temp = ippCopyAttribute(client->response, attr, 0);
+ ippSetGroupTag(client->response, &temp, IPP_TAG_UNSUPPORTED_GROUP);
+}
+
+
+/*
+ * 'run_printer()' - Run the printer service.
+ */
+
+static void
+run_printer(_ipp_printer_t *printer) /* I - Printer */
+{
+ int num_fds; /* Number of file descriptors */
+ struct pollfd polldata[3]; /* poll() data */
+ int timeout; /* Timeout for poll() */
+ _ipp_client_t *client; /* New client */
+
+
+ /*
+ * Setup poll() data for the Bonjour service socket and IPv4/6 listeners...
+ */
+
+ polldata[0].fd = printer->ipv4;
+ polldata[0].events = POLLIN;
+
+ polldata[1].fd = printer->ipv6;
+ polldata[1].events = POLLIN;
+
+ num_fds = 2;
+
+ /*
+ * Loop until we are killed or have a hard error...
+ */
+
+ for (;;)
+ {
+ if (cupsArrayCount(printer->jobs))
+ timeout = 10;
+ else
+ timeout = -1;
+
+ if (poll(polldata, (nfds_t)num_fds, timeout) < 0 && errno != EINTR)
+ {
+ perror("poll() failed");
+ break;
+ }
+
+ if (polldata[0].revents & POLLIN)
+ {
+ if ((client = create_client(printer, printer->ipv4)) != NULL)
+ {
+ if (!_cupsThreadCreate((_cups_thread_func_t)process_client, client))
+ {
+ perror("Unable to create client thread");
+ delete_client(client);
+ }
+ }
+ }
+
+ if (polldata[1].revents & POLLIN)
+ {
+ if ((client = create_client(printer, printer->ipv6)) != NULL)
+ {
+ if (!_cupsThreadCreate((_cups_thread_func_t)process_client, client))
+ {
+ perror("Unable to create client thread");
+ delete_client(client);
+ }
+ }
+ }
+
+ /*
+ * Clean out old jobs...
+ */
+
+ clean_jobs(printer);
+ }
+}
+
+
+/*
+ * 'time_string()' - Return the local time in hours, minutes, and seconds.
+ */
+
+static char *
+time_string(time_t tv, /* I - Time value */
+ char *buffer, /* I - Buffer */
+ size_t bufsize) /* I - Size of buffer */
+{
+ struct tm *curtime = localtime(&tv);
+ /* Local time */
+
+ strftime(buffer, bufsize, "%X", curtime);
+ return (buffer);
+}
+
+
+/*
+ * 'update_device_attributes_no_lock()' - Update the composite device attributes.
+ *
+ * Note: Caller MUST lock the printer object for writing before using.
+ */
+
+static void
+update_device_attributes_no_lock(
+ _ipp_printer_t *printer) /* I - Printer */
+{
+ _ipp_device_t *device; /* Current device */
+ ipp_t *dev_attrs; /* Device attributes */
+
+
+ /* TODO: Support multiple output devices, icons, etc... */
+ device = (_ipp_device_t *)cupsArrayFirst(printer->devices);
+ dev_attrs = ippNew();
+
+ if (device)
+ copy_attributes(dev_attrs, device->attrs, NULL, IPP_TAG_PRINTER, 0);
+
+ ippDelete(printer->dev_attrs);
+ printer->dev_attrs = dev_attrs;
+
+ printer->config_time = time(NULL);
+}
+
+
+/*
+ * 'update_device_status_no_lock()' - Update the composite device state.
+ *
+ * Note: Caller MUST lock the printer object for writing before using.
+ */
+
+static void
+update_device_state_no_lock(
+ _ipp_printer_t *printer) /* I - Printer */
+{
+ _ipp_device_t *device; /* Current device */
+ ipp_attribute_t *attr; /* Current attribute */
+
+
+ /* TODO: Support multiple output devices, icons, etc... */
+ device = (_ipp_device_t *)cupsArrayFirst(printer->devices);
+
+ if ((attr = ippFindAttribute(device->attrs, "printer-state", IPP_TAG_ENUM)) != NULL)
+ printer->dev_state = (ipp_pstate_t)ippGetInteger(attr, 0);
+ else
+ printer->dev_state = IPP_PSTATE_STOPPED;
+
+ if ((attr = ippFindAttribute(device->attrs, "printer-state-reasons", IPP_TAG_KEYWORD)) != NULL)
+ printer->dev_reasons = get_printer_state_reasons_bits(attr);
+ else
+ printer->dev_reasons = _IPP_PREASON_PAUSED;
+
+ printer->state_time = time(NULL);
+}
+
+
+/*
+ * 'usage()' - Show program usage.
+ */
+
+static void
+usage(int status) /* O - Exit status */
+{
+ if (!status)
+ {
+ puts(CUPS_SVERSION " - Copyright 2010-2014 by Apple Inc. All rights reserved.");
+ puts("");
+ }
+
+ puts("Usage: ippinfra [options] \"name\"");
+ puts("");
+ puts("Options:");
+ printf("-d spool-directory Spool directory "
+ "(default=/tmp/ippserver.%d)\n", (int)getpid());
+ puts("-h Show program help");
+ puts("-k Keep job spool files");
+ puts("-n hostname Hostname for printer");
+ puts("-p port Port number (default=auto)");
+ puts("-u user:pass Set proxy username and password");
+ puts("-v[vvv] Be (very) verbose");
+
+ exit(status);
+}
+
+
+/*
+ * 'valid_doc_attributes()' - Determine whether the document attributes are
+ * valid.
+ *
+ * When one or more document attributes are invalid, this function adds a
+ * suitable response and attributes to the unsupported group.
+ */
+
+static int /* O - 1 if valid, 0 if not */
+valid_doc_attributes(
+ _ipp_client_t *client) /* I - Client */
+{
+ int valid = 1; /* Valid attributes? */
+ ipp_op_t op = ippGetOperation(client->request);
+ /* IPP operation */
+ const char *op_name = ippOpString(op);
+ /* IPP operation name */
+ ipp_attribute_t *attr, /* Current attribute */
+ *supported; /* xxx-supported attribute */
+ const char *compression = NULL,
+ /* compression value */
+ *format = NULL; /* document-format value */
+
+
+ /*
+ * Check operation attributes...
+ */
+
+ if ((attr = ippFindAttribute(client->request, "compression", IPP_TAG_ZERO)) != NULL)
+ {
+ /*
+ * If compression is specified, only accept a supported value in a Print-Job
+ * or Send-Document request...
+ */
+
+ compression = ippGetString(attr, 0, NULL);
+ supported = ippFindAttribute(client->printer->attrs,
+ "compression-supported", IPP_TAG_KEYWORD);
+
+ if (ippGetCount(attr) != 1 || ippGetValueTag(attr) != IPP_TAG_KEYWORD ||
+ ippGetGroupTag(attr) != IPP_TAG_OPERATION ||
+ (op != IPP_OP_PRINT_JOB && op != IPP_OP_SEND_DOCUMENT &&
+ op != IPP_OP_VALIDATE_JOB) ||
+ !ippContainsString(supported, compression))
+ {
+ respond_unsupported(client, attr);
+ valid = 0;
+ }
+ else
+ {
+ fprintf(stderr, "%s %s compression=\"%s\"\n", client->hostname, op_name, compression);
+
+ ippAddString(client->request, IPP_TAG_JOB, IPP_TAG_KEYWORD, "compression-supplied", NULL, compression);
+
+ if (strcmp(compression, "none"))
+ {
+ if (Verbosity)
+ fprintf(stderr, "Receiving job file with \"%s\" compression.\n", compression);
+ httpSetField(client->http, HTTP_FIELD_CONTENT_ENCODING, compression);
+ }
+ }
+ }
+
+ /*
+ * Is it a format we support?
+ */
+
+ if ((attr = ippFindAttribute(client->request, "document-format", IPP_TAG_ZERO)) != NULL)
+ {
+ if (ippGetCount(attr) != 1 || ippGetValueTag(attr) != IPP_TAG_MIMETYPE ||
+ ippGetGroupTag(attr) != IPP_TAG_OPERATION)
+ {
+ respond_unsupported(client, attr);
+ valid = 0;
+ }
+ else
+ {
+ format = ippGetString(attr, 0, NULL);
+
+ fprintf(stderr, "%s %s document-format=\"%s\"\n",
+ client->hostname, op_name, format);
+
+ ippAddString(client->request, IPP_TAG_JOB, IPP_TAG_MIMETYPE, "document-format-supplied", NULL, format);
+ }
+ }
+ else
+ {
+ format = ippGetString(ippFindAttribute(client->printer->attrs, "document-format-default", IPP_TAG_MIMETYPE), 0, NULL);
+ if (!format)
+ format = "application/octet-stream"; /* Should never happen */
+
+ attr = ippAddString(client->request, IPP_TAG_OPERATION, IPP_TAG_MIMETYPE, "document-format", NULL, format);
+ }
+
+ if (!strcmp(format, "application/octet-stream") && (ippGetOperation(client->request) == IPP_OP_PRINT_JOB || ippGetOperation(client->request) == IPP_OP_SEND_DOCUMENT))
+ {
+ /*
+ * Auto-type the file using the first 8 bytes of the file...
+ */
+
+ unsigned char header[8]; /* First 8 bytes of file */
+
+ memset(header, 0, sizeof(header));
+ httpPeek(client->http, (char *)header, sizeof(header));
+
+ if (!memcmp(header, "%PDF", 4))
+ format = "application/pdf";
+ else if (!memcmp(header, "%!", 2))
+ format = "application/postscript";
+ else if (!memcmp(header, "\377\330\377", 3) && header[3] >= 0xe0 && header[3] <= 0xef)
+ format = "image/jpeg";
+ else if (!memcmp(header, "\211PNG", 4))
+ format = "image/png";
+ else if (!memcmp(header, "RAS2", 4))
+ format = "image/pwg-raster";
+ else if (!memcmp(header, "UNIRAST", 8))
+ format = "image/urf";
+ else
+ format = NULL;
+
+ if (format)
+ {
+ fprintf(stderr, "%s %s Auto-typed document-format=\"%s\"\n",
+ client->hostname, op_name, format);
+
+ ippAddString(client->request, IPP_TAG_JOB, IPP_TAG_MIMETYPE, "document-format-detected", NULL, format);
+ }
+ }
+
+ if (op != IPP_OP_CREATE_JOB && (supported = ippFindAttribute(client->printer->attrs, "document-format-supported", IPP_TAG_MIMETYPE)) != NULL && !ippContainsString(supported, format))
+ {
+ respond_unsupported(client, attr);
+ valid = 0;
+ }
+
+ /*
+ * document-name
+ */
+
+ if ((attr = ippFindAttribute(client->request, "document-name", IPP_TAG_NAME)) != NULL)
+ ippAddString(client->request, IPP_TAG_JOB, IPP_TAG_NAME, "document-name-supplied", NULL, ippGetString(attr, 0, NULL));
+
+ return (valid);
+}
+
+
+/*
+ * 'valid_job_attributes()' - Determine whether the job attributes are valid.
+ *
+ * When one or more job attributes are invalid, this function adds a suitable
+ * response and attributes to the unsupported group.
+ */
+
+static int /* O - 1 if valid, 0 if not */
+valid_job_attributes(
+ _ipp_client_t *client) /* I - Client */
+{
+ int i, /* Looping var */
+ valid = 1; /* Valid attributes? */
+ ipp_attribute_t *attr, /* Current attribute */
+ *supported; /* xxx-supported attribute */
+
+
+ /*
+ * Check operation attributes...
+ */
+
+ valid = valid_doc_attributes(client);
+
+ /*
+ * Check the various job template attributes...
+ */
+
+ if ((attr = ippFindAttribute(client->request, "copies", IPP_TAG_ZERO)) != NULL)
+ {
+ if (ippGetCount(attr) != 1 || ippGetValueTag(attr) != IPP_TAG_INTEGER ||
+ ippGetInteger(attr, 0) < 1 || ippGetInteger(attr, 0) > 999)
+ {
+ respond_unsupported(client, attr);
+ valid = 0;
+ }
+ }
+
+ if ((attr = ippFindAttribute(client->request, "ipp-attribute-fidelity", IPP_TAG_ZERO)) != NULL)
+ {
+ if (ippGetCount(attr) != 1 || ippGetValueTag(attr) != IPP_TAG_BOOLEAN)
+ {
+ respond_unsupported(client, attr);
+ valid = 0;
+ }
+ }
+
+ if ((attr = ippFindAttribute(client->request, "job-hold-until", IPP_TAG_ZERO)) != NULL)
+ {
+ if (ippGetCount(attr) != 1 ||
+ (ippGetValueTag(attr) != IPP_TAG_NAME &&
+ ippGetValueTag(attr) != IPP_TAG_NAMELANG &&
+ ippGetValueTag(attr) != IPP_TAG_KEYWORD) ||
+ strcmp(ippGetString(attr, 0, NULL), "no-hold"))
+ {
+ respond_unsupported(client, attr);
+ valid = 0;
+ }
+ }
+
+ if ((attr = ippFindAttribute(client->request, "job-impressions", IPP_TAG_ZERO)) != NULL)
+ {
+ if (ippGetCount(attr) != 1 || ippGetValueTag(attr) != IPP_TAG_INTEGER || ippGetInteger(attr, 0) < 0)
+ {
+ respond_unsupported(client, attr);
+ valid = 0;
+ }
+ }
+
+ if ((attr = ippFindAttribute(client->request, "job-name", IPP_TAG_ZERO)) != NULL)
+ {
+ if (ippGetCount(attr) != 1 ||
+ (ippGetValueTag(attr) != IPP_TAG_NAME &&
+ ippGetValueTag(attr) != IPP_TAG_NAMELANG))
+ {
+ respond_unsupported(client, attr);
+ valid = 0;
+ }
+
+ ippSetGroupTag(client->request, &attr, IPP_TAG_JOB);
+ }
+ else
+ ippAddString(client->request, IPP_TAG_JOB, IPP_TAG_NAME, "job-name", NULL, "Untitled");
+
+ if ((attr = ippFindAttribute(client->request, "job-priority", IPP_TAG_ZERO)) != NULL)
+ {
+ if (ippGetCount(attr) != 1 || ippGetValueTag(attr) != IPP_TAG_INTEGER ||
+ ippGetInteger(attr, 0) < 1 || ippGetInteger(attr, 0) > 100)
+ {
+ respond_unsupported(client, attr);
+ valid = 0;
+ }
+ }
+
+ if ((attr = ippFindAttribute(client->request, "job-sheets", IPP_TAG_ZERO)) != NULL)
+ {
+ if (ippGetCount(attr) != 1 ||
+ (ippGetValueTag(attr) != IPP_TAG_NAME &&
+ ippGetValueTag(attr) != IPP_TAG_NAMELANG &&
+ ippGetValueTag(attr) != IPP_TAG_KEYWORD) ||
+ strcmp(ippGetString(attr, 0, NULL), "none"))
+ {
+ respond_unsupported(client, attr);
+ valid = 0;
+ }
+ }
+
+ if ((attr = ippFindAttribute(client->request, "media", IPP_TAG_ZERO)) != NULL)
+ {
+ if (ippGetCount(attr) != 1 ||
+ (ippGetValueTag(attr) != IPP_TAG_NAME &&
+ ippGetValueTag(attr) != IPP_TAG_NAMELANG &&
+ ippGetValueTag(attr) != IPP_TAG_KEYWORD))
+ {
+ respond_unsupported(client, attr);
+ valid = 0;
+ }
+ else
+ {
+#if 0 /* TODO: Validate media */
+ for (i = 0;
+ i < (int)(sizeof(media_supported) / sizeof(media_supported[0]));
+ i ++)
+ if (!strcmp(ippGetString(attr, 0, NULL), media_supported[i]))
+ break;
+
+ if (i >= (int)(sizeof(media_supported) / sizeof(media_supported[0])))
+ {
+ respond_unsupported(client, attr);
+ valid = 0;
+ }
+#endif /* 0 */
+ }
+ }
+
+ if ((attr = ippFindAttribute(client->request, "media-col", IPP_TAG_ZERO)) != NULL)
+ {
+ if (ippGetCount(attr) != 1 ||
+ ippGetValueTag(attr) != IPP_TAG_BEGIN_COLLECTION)
+ {
+ respond_unsupported(client, attr);
+ valid = 0;
+ }
+ /* TODO: check for valid media-col */
+ }
+
+ if ((attr = ippFindAttribute(client->request, "multiple-document-handling", IPP_TAG_ZERO)) != NULL)
+ {
+ if (ippGetCount(attr) != 1 || ippGetValueTag(attr) != IPP_TAG_KEYWORD ||
+ (strcmp(ippGetString(attr, 0, NULL),
+ "separate-documents-uncollated-copies") &&
+ strcmp(ippGetString(attr, 0, NULL),
+ "separate-documents-collated-copies")))
+ {
+ respond_unsupported(client, attr);
+ valid = 0;
+ }
+ }
+
+ if ((attr = ippFindAttribute(client->request, "orientation-requested", IPP_TAG_ZERO)) != NULL)
+ {
+ if (ippGetCount(attr) != 1 || ippGetValueTag(attr) != IPP_TAG_ENUM ||
+ ippGetInteger(attr, 0) < IPP_ORIENT_PORTRAIT ||
+ ippGetInteger(attr, 0) > IPP_ORIENT_REVERSE_PORTRAIT)
+ {
+ respond_unsupported(client, attr);
+ valid = 0;
+ }
+ }
+
+ if ((attr = ippFindAttribute(client->request, "page-ranges", IPP_TAG_ZERO)) != NULL)
+ {
+ if (ippGetValueTag(attr) != IPP_TAG_RANGE)
+ {
+ respond_unsupported(client, attr);
+ valid = 0;
+ }
+ }
+
+ if ((attr = ippFindAttribute(client->request, "print-quality", IPP_TAG_ZERO)) != NULL)
+ {
+ if (ippGetCount(attr) != 1 || ippGetValueTag(attr) != IPP_TAG_ENUM ||
+ ippGetInteger(attr, 0) < IPP_QUALITY_DRAFT ||
+ ippGetInteger(attr, 0) > IPP_QUALITY_HIGH)
+ {
+ respond_unsupported(client, attr);
+ valid = 0;
+ }
+ }
+
+ if ((attr = ippFindAttribute(client->request, "printer-resolution", IPP_TAG_ZERO)) != NULL)
+ {
+ supported = ippFindAttribute(client->printer->dev_attrs, "printer-resolution-supported", IPP_TAG_RESOLUTION);
+
+ if (ippGetCount(attr) != 1 || ippGetValueTag(attr) != IPP_TAG_RESOLUTION ||
+ !supported)
+ {
+ respond_unsupported(client, attr);
+ valid = 0;
+ }
+ else
+ {
+ int count, /* Number of supported values */
+ xdpi, /* Horizontal resolution for job template attribute */
+ ydpi, /* Vertical resolution for job template attribute */
+ sydpi; /* Vertical resolution for supported value */
+ ipp_res_t units, /* Units for job template attribute */
+ sunits; /* Units for supported value */
+
+ xdpi = ippGetResolution(attr, 0, &ydpi, &units);
+ count = ippGetCount(supported);
+
+ for (i = 0; i < count; i ++)
+ {
+ if (xdpi == ippGetResolution(supported, i, &sydpi, &sunits) && ydpi == sydpi && units == sunits)
+ break;
+ }
+
+ if (i >= count)
+ {
+ respond_unsupported(client, attr);
+ valid = 0;
+ }
+ }
+ }
+
+ if ((attr = ippFindAttribute(client->request, "sides", IPP_TAG_ZERO)) != NULL)
+ {
+ const char *sides = ippGetString(attr, 0, NULL);
+ /* "sides" value... */
+
+ if (ippGetCount(attr) != 1 || ippGetValueTag(attr) != IPP_TAG_KEYWORD)
+ {
+ respond_unsupported(client, attr);
+ valid = 0;
+ }
+ else if ((supported = ippFindAttribute(client->printer->dev_attrs, "sides-supported", IPP_TAG_KEYWORD)) != NULL)
+ {
+ if (!ippContainsString(supported, sides))
+ {
+ respond_unsupported(client, attr);
+ valid = 0;
+ }
+ }
+ else if (strcmp(sides, "one-sided"))
+ {
+ respond_unsupported(client, attr);
+ valid = 0;
+ }
+ }
+
+ return (valid);
+}
+
+
+/*
+ * End of "$Id: ippinfra.c 12237 2014-11-03 13:07:32Z msweet $".
+ */
diff --git a/test/ippinfra.man b/test/ippinfra.man
new file mode 100644
index 000000000..46ac84e40
--- /dev/null
+++ b/test/ippinfra.man
@@ -0,0 +1,103 @@
+.\"
+.\" "$Id$"
+.\"
+.\" ippinfra man page for CUPS.
+.\"
+.\" Copyright 2014 by Apple Inc.
+.\"
+.\" These coded instructions, statements, and computer programs are the
+.\" property of Apple Inc. and are protected by Federal copyright
+.\" law. Distribution and use rights are outlined in the file "LICENSE.txt"
+.\" which should have been included with this file. If this file is
+.\" file is missing or damaged, see the license at "http://www.cups.org/".
+.\"
+.TH ippinfra 1 "CUPS" "16 September 2014" "Apple Inc."
+.SH NAME
+ippinfra \- a simple ipp infrastructure server
+.SH SYNOPSIS
+.B ippinfra
+[
+.B \-d
+.I spool-directory
+] [
+.B \-h
+] [
+.B \-k
+] [
+.B \-n
+.I hostname
+] [
+.B \-p
+.I port
+] [
+.B \-u
+.I username:password
+] [
+.B \-v[vvv]
+]
+.I service-name
+.SH DESCRIPTION
+.B ippinfra
+is a simple Internet Printing Protocol (IPP) infrastructure server conforming to the IPP Shared Infrastructure Extensions (INFRA) specification. It can be used as a very basic infrastructure server between standard IPP clients and IPP proxies conforming to the INFRA specification.
+.SH OPTIONS
+The following options are recognized by
+.B ippinfra:
+.TP 5
+\fB\-d \fIspool-directory\fR
+Specifies the directory that will hold the print files.
+The default is a directory under the user's current temporary directory.
+.TP 5
+.B \-h
+Shows program help.
+.TP 5
+.B \-k
+Keeps the print documents in the spool directory rather than deleting them.
+.TP 5
+\fB\-n \fIhostname\fR
+Specifies the hostname that is reported by the server.
+The default is the name returned by the
+.BR hostname (1)
+command.
+.TP 5
+\fB\-p \fIport\fR
+Specifies the port number to listen on.
+The default is a user-specific number from 8000 to 8999.
+.TP 5
+\fB\-u \fIusername:password\fR
+Specifies the username and password for the IPP proxy.
+The default is "test:test123".
+.TP 5
+.B \-v[vvv]
+Be (very) verbose when logging activity to the standard output.
+.SH EXIT STATUS
+The
+.B ippinfra
+program returns 1 if it is unable to process the command-line arguments.
+Otherwise
+.B ippinfra
+will run continuously until terminated.
+.SH CONFORMING TO
+The
+.B ippinfra
+program is unique to CUPS and conforms to the IPP Shared Infrastructure Extensions (INFRA) specification as an Infrastructure Printer.
+.SH EXAMPLES
+Run
+.B ippinfra
+with a service name of My Cool Printer:
+.nf
+
+ ippinfra "My Cool Printer"
+.fi
+.LP
+Specify a proxy username of "foo" and password of "bar":
+.nf
+
+ ippinfra \-u foo:bar "My Cool Printer"
+.fi
+.SH SEE ALSO
+PWG Internet Printing Protocol Workgroup (http://www.pwg.org/ipp)
+.SH COPYRIGHT
+Copyright \[co] 2007-2014 by Apple Inc.
+.\"
+.\" End of "$Id$".
+.\"
diff --git a/test/ippproxy.c b/test/ippproxy.c
new file mode 100644
index 000000000..e8dd2c19e
--- /dev/null
+++ b/test/ippproxy.c
@@ -0,0 +1,29 @@
+/*
+ * "$Id: ippproxy.c 12191 2014-10-01 19:00:21Z msweet $"
+ *
+ * CUPS Cloud Proxy for HP PCL and IPP Everywhere printers.
+ *
+ * Copyright 2014 by Apple Inc.
+ */
+
+#include <cups/cups.h>
+
+
+/*
+ * 'main()' - Main entry for cupsproxy.
+ */
+
+int /* O - Exit status */
+main(int argc, /* I - Number of command-line arguments */
+ char *argv[]) /* I - Command-line arguments */
+{
+ (void)argc;
+ (void)argv;
+
+ return (0);
+}
+
+
+/*
+ * End of "$Id: ippproxy.c 12191 2014-10-01 19:00:21Z msweet $".
+ */
diff --git a/test/ippproxy.man b/test/ippproxy.man
new file mode 100644
index 000000000..1d46c9afe
--- /dev/null
+++ b/test/ippproxy.man
@@ -0,0 +1,59 @@
+.\"
+.\" "$Id$"
+.\"
+.\" ippproxy man page for CUPS.
+.\"
+.\" Copyright 2014 by Apple Inc.
+.\"
+.\" These coded instructions, statements, and computer programs are the
+.\" property of Apple Inc. and are protected by Federal copyright
+.\" law. Distribution and use rights are outlined in the file "LICENSE.txt"
+.\" which should have been included with this file. If this file is
+.\" file is missing or damaged, see the license at "http://www.cups.org/".
+.\"
+.TH ippproxy 1 "CUPS" "16 September 2014" "Apple Inc."
+.SH NAME
+ippproxy \- a simple ipp proxy client
+.SH SYNOPSIS
+.B ippproxy
+[
+.B \-v[vvv]
+]
+.I infrastructure-printer-uri
+.I local-printer-uri
+.SH DESCRIPTION
+.B ippproxy
+is a simple IPP proxy client conforming to the IPP Shared Infrastructure Extensions (INFRA) specification. It can be used to proxy access to a local IPP printer through an Infrastructure Printer such as
+.BR ippinfra (1).
+.SH OPTIONS
+The following options are recognized by
+.B ippproxy:
+.TP 5
+.B \-v[vvv]
+Be (very) verbose when logging activity to the standard output.
+.SH EXIT STATUS
+The
+.B ippproxy
+program returns 1 if it is unable to process the command-line arguments or connect to either the infrastructure or local printers.
+Otherwise
+.B ippproxy
+will run continuously until terminated.
+.SH CONFORMING TO
+The
+.B ippproxy
+program is unique to CUPS and conforms to the IPP Shared Infrastructure Extensions (INFRA) specification.
+.SH EXAMPLE
+Run
+.B ippproxy
+with an infrastructure URI of "ipps://host.example.com/ipp/print" and a local URI of "ipp://10.0.1.2/ipp/print":
+.nf
+
+ ippproxy ipps://host.example.com/ipp/print ipp://10.0.1.2/ipp/print
+.fi
+.SH SEE ALSO
+PWG Internet Printing Protocol Workgroup (http://www.pwg.org/ipp)
+.SH COPYRIGHT
+Copyright \[co] 2007-2014 by Apple Inc.
+.\"
+.\" End of "$Id$".
+.\"
diff --git a/test/ippserver.c b/test/ippserver.c
index 22c2dd51c..03c8cfb2a 100644
--- a/test/ippserver.c
+++ b/test/ippserver.c
@@ -1,5 +1,5 @@
/*
- * "$Id: ippserver.c 12486 2015-02-04 13:13:21Z msweet $"
+ * "$Id: ippserver.c 12598 2015-05-05 18:57:57Z msweet $"
*
* Sample IPP Everywhere server for CUPS.
*
@@ -1371,16 +1371,15 @@ create_printer(const char *servername, /* I - Server hostname (NULL for default)
static const int pwg_raster_document_resolution_supported[] =
{
150,
- 300,
- 600
+ 300
};
static const char * const pwg_raster_document_type_supported[] =
{
- "black-1",
- "cmyk-8",
- "sgray-8",
- "srgb-8",
- "srgb-16"
+ "black_1",
+ "cmyk_8",
+ "sgray_8",
+ "srgb_8",
+ "srgb_16"
};
static const char * const reference_uri_schemes_supported[] =
{ /* reference-uri-schemes-supported */
@@ -1402,7 +1401,7 @@ create_printer(const char *servername, /* I - Server hostname (NULL for default)
"CP1",
"IS1-5-7",
"MT1-2-3-4-5-6-8-9-10-11-12-13",
- "RS600",
+ "RS300",
"SRGB24",
"V1.4",
"W8",
@@ -1992,6 +1991,7 @@ create_printer(const char *servername, /* I - Server hostname (NULL for default)
{
static const char * const names[] =
{
+ "job-account-id",
"job-accounting-user-id",
"job-password"
};
@@ -4812,7 +4812,7 @@ process_http(_ipp_client_t *client) /* I - Client connection */
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));
@@ -5603,6 +5603,11 @@ register_printer(
# ifdef HAVE_SSL
TXTRecordSetValue(&ipp_txt, "TLS", 3, "1.2");
# endif /* HAVE_SSL */
+ if (strstr(formats, "image/urf"))
+ TXTRecordSetValue(&ipp_txt, "URF", 66, "CP1,IS1-5-7,MT1-2-3-4-5-6-8-9-10-11-12-13,RS300,SRGB24,V1.4,W8,DM1");
+
+ TXTRecordSetValue(&ipp_txt, "txtvers", 1, "1");
+ TXTRecordSetValue(&ipp_txt, "qtotal", 1, "1");
/*
* Register the _printer._tcp (LPD) service type with a port number of 0 to
@@ -6489,5 +6494,5 @@ valid_job_attributes(
/*
- * End of "$Id: ippserver.c 12486 2015-02-04 13:13:21Z msweet $".
+ * End of "$Id: ippserver.c 12598 2015-05-05 18:57:57Z msweet $".
*/
diff --git a/test/ipptool.c b/test/ipptool.c
index b1f784359..bbb865abb 100644
--- a/test/ipptool.c
+++ b/test/ipptool.c
@@ -1,5 +1,5 @@
/*
- * "$Id: ipptool.c 12465 2015-02-01 02:47:23Z msweet $"
+ * "$Id: ipptool.c 12644 2015-05-19 21:22:35Z msweet $"
*
* ipptool command for CUPS.
*
@@ -70,13 +70,15 @@ typedef enum _cups_with_e /**** WITH flags ****/
typedef struct _cups_expect_s /**** Expected attribute info ****/
{
int optional, /* Optional attribute? */
- not_expect; /* Don't expect attribute? */
+ not_expect, /* Don't expect attribute? */
+ expect_all; /* Expect all attributes to match/not match */
char *name, /* Attribute name */
*of_type, /* Type name */
*same_count_as, /* Parallel attribute name */
*if_defined, /* Only required if variable defined */
*if_not_defined, /* Only required if variable is not defined */
*with_value, /* Attribute must include this value */
+ *with_value_from, /* Attribute must have one of the values in this attribute */
*define_match, /* Variable to define on match */
*define_no_match, /* Variable to define on no-match */
*define_value; /* Variable to define with value */
@@ -189,6 +191,7 @@ static int validate_attr(FILE *outfile, cups_array_t *errors, ipp_attribute_t *a
static int with_value(FILE *outfile, cups_array_t *errors, char *value, int flags,
ipp_attribute_t *attr, char *matchbuf,
size_t matchlen);
+static int with_value_from(cups_array_t *errors, ipp_attribute_t *fromattr, ipp_attribute_t *attr, char *matchbuf, size_t matchlen);
/*
@@ -1258,7 +1261,8 @@ do_tests(FILE *outfile, /* I - Output file */
_cups_strcasecmp(token, "WITH-HOSTNAME") &&
_cups_strcasecmp(token, "WITH-RESOURCE") &&
_cups_strcasecmp(token, "WITH-SCHEME") &&
- _cups_strcasecmp(token, "WITH-VALUE"))
+ _cups_strcasecmp(token, "WITH-VALUE") &&
+ _cups_strcasecmp(token, "WITH-VALUE-FROM"))
last_expect = NULL;
if (_cups_strcasecmp(token, "DEFINE-MATCH") &&
@@ -1993,12 +1997,14 @@ do_tests(FILE *outfile, /* I - Output file */
last_status->repeat_match = 0;
last_status->repeat_no_match = 0;
}
- else if (!_cups_strcasecmp(token, "EXPECT"))
+ else if (!_cups_strcasecmp(token, "EXPECT") || !_cups_strcasecmp(token, "EXPECT-ALL"))
{
/*
* Expected attributes...
*/
+ int expect_all = !_cups_strcasecmp(token, "EXPECT-ALL");
+
if (num_expects >= (int)(sizeof(expects) / sizeof(expects[0])))
{
print_fatal_error(outfile, "Too many EXPECT's on line %d.", linenum);
@@ -2018,6 +2024,7 @@ do_tests(FILE *outfile, /* I - Output file */
memset(last_expect, 0, sizeof(_cups_expect_t));
last_expect->repeat_limit = 1000;
+ last_expect->expect_all = expect_all;
if (token[0] == '!')
{
@@ -2369,6 +2376,34 @@ do_tests(FILE *outfile, /* I - Output file */
goto test_exit;
}
}
+ else if (!_cups_strcasecmp(token, "WITH-VALUE-FROM"))
+ {
+ if (!get_token(fp, temp, sizeof(temp), &linenum))
+ {
+ print_fatal_error(outfile, "Missing %s value on line %d.", token, linenum);
+ pass = 0;
+ goto test_exit;
+ }
+
+ if (last_expect)
+ {
+ /*
+ * Expand any variables in the value and then save it.
+ */
+
+ expand_variables(vars, token, temp, sizeof(token));
+
+ last_expect->with_value_from = strdup(token);
+ last_expect->with_flags = _CUPS_WITH_LITERAL;
+ }
+ else
+ {
+ print_fatal_error(outfile, "%s without a preceding EXPECT on line %d.", token,
+ linenum);
+ pass = 0;
+ goto test_exit;
+ }
+ }
else if (!_cups_strcasecmp(token, "DISPLAY"))
{
/*
@@ -2938,192 +2973,210 @@ do_tests(FILE *outfile, /* I - Output file */
get_variable(vars, expect->if_not_defined))
continue;
- found = ippFindAttribute(response, expect->name, IPP_TAG_ZERO);
+ found = ippFindAttribute(response, expect->name, IPP_TAG_ZERO);
- if ((found && expect->not_expect) ||
- (!found && !(expect->not_expect || expect->optional)) ||
- (found && !expect_matches(expect, found->value_tag)) ||
- (found && expect->in_group &&
- found->group_tag != expect->in_group))
- {
- if (expect->define_no_match)
- set_variable(outfile, vars, expect->define_no_match, "1");
- else if (!expect->define_match && !expect->define_value)
+ do
+ {
+ if ((found && expect->not_expect) ||
+ (!found && !(expect->not_expect || expect->optional)) ||
+ (found && !expect_matches(expect, found->value_tag)) ||
+ (found && expect->in_group &&
+ found->group_tag != expect->in_group))
{
- if (found && expect->not_expect)
- add_stringf(errors, "NOT EXPECTED: %s", expect->name);
- else if (!found && !(expect->not_expect || expect->optional))
- add_stringf(errors, "EXPECTED: %s", expect->name);
- else if (found)
+ if (expect->define_no_match)
+ set_variable(outfile, vars, expect->define_no_match, "1");
+ else if (!expect->define_match && !expect->define_value)
{
- if (!expect_matches(expect, found->value_tag))
- add_stringf(errors, "EXPECTED: %s OF-TYPE %s (got %s)",
- expect->name, expect->of_type,
- ippTagString(found->value_tag));
-
- if (expect->in_group && found->group_tag != expect->in_group)
- add_stringf(errors, "EXPECTED: %s IN-GROUP %s (got %s).",
- expect->name, ippTagString(expect->in_group),
- ippTagString(found->group_tag));
- }
- }
+ if (found && expect->not_expect)
+ add_stringf(errors, "NOT EXPECTED: %s", expect->name);
+ else if (!found && !(expect->not_expect || expect->optional))
+ add_stringf(errors, "EXPECTED: %s", expect->name);
+ else if (found)
+ {
+ if (!expect_matches(expect, found->value_tag))
+ add_stringf(errors, "EXPECTED: %s OF-TYPE %s (got %s)",
+ expect->name, expect->of_type,
+ ippTagString(found->value_tag));
+
+ if (expect->in_group && found->group_tag != expect->in_group)
+ add_stringf(errors, "EXPECTED: %s IN-GROUP %s (got %s).",
+ expect->name, ippTagString(expect->in_group),
+ ippTagString(found->group_tag));
+ }
+ }
- if (expect->repeat_no_match &&
- repeat_count < expect->repeat_limit)
- repeat_test = 1;
+ if (expect->repeat_no_match &&
+ repeat_count < expect->repeat_limit)
+ repeat_test = 1;
- continue;
- }
+ break;
+ }
- if (found)
- ippAttributeString(found, buffer, sizeof(buffer));
+ if (found)
+ ippAttributeString(found, buffer, sizeof(buffer));
- if (found &&
- !with_value(outfile, NULL, expect->with_value, expect->with_flags, found,
- buffer, sizeof(buffer)))
- {
- if (expect->define_no_match)
- set_variable(outfile, vars, expect->define_no_match, "1");
- else if (!expect->define_match && !expect->define_value &&
- !expect->repeat_match && !expect->repeat_no_match)
+ if (found && expect->with_value_from && !with_value_from(NULL, ippFindAttribute(response, expect->with_value_from, IPP_TAG_ZERO), found, buffer, sizeof(buffer)))
{
- if (expect->with_flags & _CUPS_WITH_REGEX)
- add_stringf(errors, "EXPECTED: %s %s /%s/",
- expect->name,
- (expect->with_flags & _CUPS_WITH_ALL) ?
- "WITH-ALL-VALUES" : "WITH-VALUE",
- expect->with_value);
- else
- add_stringf(errors, "EXPECTED: %s %s \"%s\"",
- expect->name,
- (expect->with_flags & _CUPS_WITH_ALL) ?
- "WITH-ALL-VALUES" : "WITH-VALUE",
- expect->with_value);
-
- with_value(outfile, errors, expect->with_value, expect->with_flags, found,
- buffer, sizeof(buffer));
- }
+ if (expect->define_no_match)
+ set_variable(outfile, vars, expect->define_no_match, "1");
+ else if (!expect->define_match && !expect->define_value && !expect->repeat_match && !expect->repeat_no_match)
+ {
+ add_stringf(errors, "EXPECTED: %s WITH-VALUES-FROM %s", expect->name, expect->with_value_from);
- if (expect->repeat_no_match &&
- repeat_count < expect->repeat_limit)
- repeat_test = 1;
+ with_value_from(errors, ippFindAttribute(response, expect->with_value_from, IPP_TAG_ZERO), found, buffer, sizeof(buffer));
+ }
- continue;
- }
+ if (expect->repeat_no_match && repeat_count < expect->repeat_limit)
+ repeat_test = 1;
- if (found && expect->count > 0 &&
- found->num_values != expect->count)
- {
- if (expect->define_no_match)
- 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,
- expect->count, found->num_values);
+ break;
}
+ else if (found && !with_value(outfile, NULL, expect->with_value, expect->with_flags, found, buffer, sizeof(buffer)))
+ {
+ if (expect->define_no_match)
+ set_variable(outfile, vars, expect->define_no_match, "1");
+ else if (!expect->define_match && !expect->define_value &&
+ !expect->repeat_match && !expect->repeat_no_match)
+ {
+ if (expect->with_flags & _CUPS_WITH_REGEX)
+ add_stringf(errors, "EXPECTED: %s %s /%s/",
+ expect->name,
+ (expect->with_flags & _CUPS_WITH_ALL) ?
+ "WITH-ALL-VALUES" : "WITH-VALUE",
+ expect->with_value);
+ else
+ add_stringf(errors, "EXPECTED: %s %s \"%s\"",
+ expect->name,
+ (expect->with_flags & _CUPS_WITH_ALL) ?
+ "WITH-ALL-VALUES" : "WITH-VALUE",
+ expect->with_value);
+
+ with_value(outfile, errors, expect->with_value, expect->with_flags, found,
+ buffer, sizeof(buffer));
+ }
- if (expect->repeat_no_match &&
- repeat_count < expect->repeat_limit)
- repeat_test = 1;
-
- continue;
- }
+ if (expect->repeat_no_match &&
+ repeat_count < expect->repeat_limit)
+ repeat_test = 1;
- if (found && expect->same_count_as)
- {
- attrptr = ippFindAttribute(response, expect->same_count_as,
- IPP_TAG_ZERO);
+ break;
+ }
- if (!attrptr || attrptr->num_values != found->num_values)
+ if (found && expect->count > 0 &&
+ found->num_values != expect->count)
{
if (expect->define_no_match)
set_variable(outfile, vars, expect->define_no_match, "1");
else if (!expect->define_match && !expect->define_value)
{
- if (!attrptr)
- add_stringf(errors,
- "EXPECTED: %s (%d values) SAME-COUNT-AS %s "
- "(not returned)", expect->name,
- found->num_values, expect->same_count_as);
- else if (attrptr->num_values != found->num_values)
- add_stringf(errors,
- "EXPECTED: %s (%d values) SAME-COUNT-AS %s "
- "(%d values)", expect->name, found->num_values,
- expect->same_count_as, attrptr->num_values);
+ add_stringf(errors, "EXPECTED: %s COUNT %d (got %d)", expect->name,
+ expect->count, found->num_values);
}
if (expect->repeat_no_match &&
- repeat_count < expect->repeat_limit)
+ repeat_count < expect->repeat_limit)
repeat_test = 1;
- continue;
+ break;
}
- }
- if (found && expect->define_match)
- set_variable(outfile, vars, expect->define_match, "1");
-
- if (found && expect->define_value)
- {
- if (!expect->with_value)
+ if (found && expect->same_count_as)
{
- int last = ippGetCount(found) - 1;
- /* Last element in attribute */
+ attrptr = ippFindAttribute(response, expect->same_count_as,
+ IPP_TAG_ZERO);
- switch (ippGetValueTag(found))
+ if (!attrptr || attrptr->num_values != found->num_values)
{
- 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;
+ if (expect->define_no_match)
+ set_variable(outfile, vars, expect->define_no_match, "1");
+ else if (!expect->define_match && !expect->define_value)
+ {
+ if (!attrptr)
+ add_stringf(errors,
+ "EXPECTED: %s (%d values) SAME-COUNT-AS %s "
+ "(not returned)", expect->name,
+ found->num_values, expect->same_count_as);
+ else if (attrptr->num_values != found->num_values)
+ add_stringf(errors,
+ "EXPECTED: %s (%d values) SAME-COUNT-AS %s "
+ "(%d values)", expect->name, found->num_values,
+ expect->same_count_as, attrptr->num_values);
+ }
- case IPP_TAG_RESOLUTION :
- {
- int xres, /* Horizontal resolution */
- yres; /* Vertical resolution */
- ipp_res_t units; /* Resolution units */
+ if (expect->repeat_no_match &&
+ repeat_count < expect->repeat_limit)
+ repeat_test = 1;
- xres = ippGetResolution(found, last, &yres, &units);
+ break;
+ }
+ }
- 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;
+ if (found && expect->define_match)
+ set_variable(outfile, vars, expect->define_match, "1");
- 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;
+ if (found && expect->define_value)
+ {
+ if (!expect->with_value)
+ {
+ int last = ippGetCount(found) - 1;
+ /* Last element in attribute */
- default :
- ippAttributeString(found, buffer, sizeof(buffer));
- break;
+ 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);
- }
+ set_variable(outfile, vars, expect->define_value, buffer);
+ }
- if (found && expect->repeat_match &&
- repeat_count < expect->repeat_limit)
- repeat_test = 1;
+ if (found && expect->repeat_match &&
+ repeat_count < expect->repeat_limit)
+ repeat_test = 1;
+ }
+ while (expect->expect_all && (found = ippFindNextAttribute(response, expect->name, IPP_TAG_ZERO)) != NULL);
}
}
@@ -3463,7 +3516,7 @@ expand_variables(_cups_vars_t *vars, /* I - Variables */
value = getenv(temp);
src += tempptr - temp + 5;
}
- else if (vars)
+ else
{
if (src[1] == '{')
{
@@ -3510,11 +3563,6 @@ expand_variables(_cups_vars_t *vars, /* I - Variables */
src += tempptr - temp + 1;
}
- else
- {
- value = "$";
- src ++;
- }
if (value)
{
@@ -5870,5 +5918,165 @@ with_value(FILE *outfile, /* I - Output file */
/*
- * End of "$Id: ipptool.c 12465 2015-02-01 02:47:23Z msweet $".
+ * 'with_value_from()' - Test a WITH-VALUE-FROM predicate.
+ */
+
+static int /* O - 1 on match, 0 on non-match */
+with_value_from(
+ cups_array_t *errors, /* I - Errors array */
+ ipp_attribute_t *fromattr, /* I - "From" attribute */
+ ipp_attribute_t *attr, /* I - Attribute to compare */
+ char *matchbuf, /* I - Buffer to hold matching value */
+ size_t matchlen) /* I - Length of match buffer */
+{
+ int i, j, /* Looping vars */
+ count = ippGetCount(attr), /* Number of attribute values */
+ match = 1; /* Match? */
+
+
+ *matchbuf = '\0';
+
+ /*
+ * Compare the from value(s) to the attribute value(s)...
+ */
+
+ switch (ippGetValueTag(attr))
+ {
+ case IPP_TAG_INTEGER :
+ if (ippGetValueTag(fromattr) != IPP_TAG_INTEGER && ippGetValueTag(fromattr) != IPP_TAG_RANGE)
+ goto wrong_value_tag;
+
+ for (i = 0; i < count; i ++)
+ {
+ int value = ippGetInteger(attr, i);
+ /* Current integer value */
+
+ if (ippContainsInteger(fromattr, value))
+ {
+ if (!matchbuf[0])
+ snprintf(matchbuf, matchlen, "%d", value);
+ }
+ else
+ {
+ add_stringf(errors, "GOT: %s=%d", ippGetName(attr), value);
+ match = 0;
+ }
+ }
+ break;
+
+ case IPP_TAG_ENUM :
+ if (ippGetValueTag(fromattr) != IPP_TAG_ENUM)
+ goto wrong_value_tag;
+
+ for (i = 0; i < count; i ++)
+ {
+ int value = ippGetInteger(attr, i);
+ /* Current integer value */
+
+ if (ippContainsInteger(fromattr, value))
+ {
+ if (!matchbuf[0])
+ snprintf(matchbuf, matchlen, "%d", value);
+ }
+ else
+ {
+ add_stringf(errors, "GOT: %s=%d", ippGetName(attr), value);
+ match = 0;
+ }
+ }
+ break;
+
+ case IPP_TAG_RESOLUTION :
+ if (ippGetValueTag(fromattr) != IPP_TAG_RESOLUTION)
+ goto wrong_value_tag;
+
+ for (i = 0; i < count; i ++)
+ {
+ int xres, yres;
+ ipp_res_t units;
+ int fromcount = ippGetCount(fromattr);
+ int fromxres, fromyres;
+ ipp_res_t fromunits;
+
+ xres = ippGetResolution(attr, i, &yres, &units);
+
+ for (j = 0; j < fromcount; j ++)
+ {
+ fromxres = ippGetResolution(fromattr, j, &fromyres, &fromunits);
+ if (fromxres == xres && fromyres == yres && fromunits == units)
+ break;
+ }
+
+ if (j < fromcount)
+ {
+ if (!matchbuf[0])
+ {
+ if (xres == yres)
+ snprintf(matchbuf, matchlen, "%d%s", xres, units == IPP_RES_PER_INCH ? "dpi" : "dpcm");
+ else
+ snprintf(matchbuf, matchlen, "%dx%d%s", xres, yres, units == IPP_RES_PER_INCH ? "dpi" : "dpcm");
+ }
+ }
+ else
+ {
+ if (xres == yres)
+ add_stringf(errors, "GOT: %s=%d%s", ippGetName(attr), xres, units == IPP_RES_PER_INCH ? "dpi" : "dpcm");
+ else
+ add_stringf(errors, "GOT: %s=%dx%d%s", ippGetName(attr), xres, yres, units == IPP_RES_PER_INCH ? "dpi" : "dpcm");
+
+ match = 0;
+ }
+ }
+ break;
+
+ case IPP_TAG_NOVALUE :
+ case IPP_TAG_UNKNOWN :
+ return (1);
+
+ 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 :
+ for (i = 0; i < count; i ++)
+ {
+ const char *value = ippGetString(attr, i, NULL);
+ /* Current string value */
+
+ if (ippContainsString(fromattr, value))
+ {
+ if (!matchbuf[0])
+ strlcpy(matchbuf, value, matchlen);
+ }
+ else
+ {
+ add_stringf(errors, "GOT: %s='%s'", ippGetName(attr), value);
+ match = 0;
+ }
+ }
+ break;
+
+ default :
+ match = 0;
+ break;
+ }
+
+ return (match);
+
+ /* value tag mismatch between fromattr and attr */
+ wrong_value_tag :
+
+ add_stringf(errors, "GOT: %s OF-TYPE %s", ippGetName(attr), ippTagString(ippGetValueTag(attr)));
+
+ return (0);
+}
+
+
+/*
+ * End of "$Id: ipptool.c 12644 2015-05-19 21:22:35Z msweet $".
*/
diff --git a/test/run-stp-tests.sh b/test/run-stp-tests.sh
index 0f02ba249..88560dac1 100755
--- a/test/run-stp-tests.sh
+++ b/test/run-stp-tests.sh
@@ -1,6 +1,6 @@
#!/bin/sh
#
-# "$Id: run-stp-tests.sh 12658 2015-05-22 17:53:45Z msweet $"
+# "$Id: run-stp-tests.sh 12696 2015-06-08 15:05:11Z msweet $"
#
# Perform the complete set of IPP compliance tests specified in the
# CUPS Software Test Plan.
@@ -722,9 +722,9 @@ date=`date "+%Y-%m-%d"`
if test -d $root/.svn; then
rev=`svn info . | grep Revision: | awk '{print $2}'`
- strfile=$BASE/cups-str-2.0-r$rev-$user.html
+ strfile=$BASE/cups-str-2.1-r$rev-$user.html
else
- strfile=$BASE/cups-str-2.0-$date-$user.html
+ strfile=$BASE/cups-str-2.1-$date-$user.html
fi
rm -f $strfile
@@ -737,7 +737,7 @@ cat str-header.html >$strfile
echo ""
echo "Running IPP compliance tests..."
-echo "<H1>1 - IPP Compliance Tests</H1>" >>$strfile
+echo "<H1><A NAME='IPP'>1 - IPP Compliance Tests</A></H1>" >>$strfile
echo "<P>This section provides the results to the IPP compliance tests" >>$strfile
echo "outlined in the CUPS Software Test Plan. These tests were run on" >>$strfile
echo `date "+%Y-%m-%d"` by $user on `hostname`. >>$strfile
@@ -775,7 +775,7 @@ echo "</PRE>" >>$strfile
echo ""
echo "Running command tests..."
-echo "<H1>2 - Command Tests</H1>" >>$strfile
+echo "<H1><A NAME='COMMAND'>2 - Command Tests</A></H1>" >>$strfile
echo "<P>This section provides the results to the command tests" >>$strfile
echo "outlined in the CUPS Software Test Plan. These tests were run on" >>$strfile
echo $date by $user on `hostname`. >>$strfile
@@ -840,12 +840,8 @@ echo "</PRE>" >>$strfile
#
kill $cupsd
-
-#
-# Append the log files for post-mortim...
-#
-
-echo "<H1>3 - Log Files</H1>" >>$strfile
+wait $cupsd
+cupsdstatus=$?
#
# Verify counts...
@@ -853,7 +849,16 @@ echo "<H1>3 - Log Files</H1>" >>$strfile
echo "Test Summary"
echo ""
-echo "<H2>Summary</H2>" >>$strfile
+echo "<H1><A NAME='SUMMARY'>3 - Test Summary</A></H1>" >>$strfile
+
+if test $cupsdstatus != 0; then
+ echo "FAIL: cupsd failed with exit status $cupsdstatus."
+ echo "<p>FAIL: cupsd failed with exit status $cupsdstatus.</p>" >>$strfile
+ fail=`expr $fail + 1`
+else
+ echo "PASS: cupsd exited with no errors."
+ echo "<p>PASS: cupsd exited with no errors.</p>" >>$strfile
+fi
# Job control files
count=`ls -1 $BASE/spool | wc -l`
@@ -1052,18 +1057,23 @@ else
echo "<P>PASS: $count debug2 messages.</P>" >>$strfile
fi
+#
# Log files...
-echo "<H2>access_log</H2>" >>$strfile
+#
+
+echo "<H1><A NAME='LOGS'>4 - Log Files</A></H1>" >>$strfile
+
+echo "<H2><A NAME='access_log'>access_log</A></H2>" >>$strfile
echo "<PRE>" >>$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 "<H2><A NAME='error_log'>error_log</A></H2>" >>$strfile
echo "<PRE>" >>$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 "<H2><A NAME='page_log'>page_log</A></H2>" >>$strfile
echo "<PRE>" >>$strfile
sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' $BASE/log/page_log >>$strfile
echo "</PRE>" >>$strfile
@@ -1103,5 +1113,5 @@ if test $fail != 0; then
fi
#
-# End of "$Id: run-stp-tests.sh 12658 2015-05-22 17:53:45Z msweet $"
+# End of "$Id: run-stp-tests.sh 12696 2015-06-08 15:05:11Z msweet $"
#
diff --git a/test/str-header.html b/test/str-header.html
index 4dafd6806..d13205af6 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-2013, All Rights Reserved">
- <META NAME="DOCNUMBER" CONTENT="CUPS-STR-2.0">
+ <META NAME="COPYRIGHT" CONTENT="Copyright 2007-2015, All Rights Reserved">
+ <META NAME="DOCNUMBER" CONTENT="CUPS-STR-2.1">
<META NAME="Author" CONTENT="Apple Inc.">
- <TITLE>CUPS 2.0 Software Test Report</TITLE>
+ <TITLE>CUPS 2.1 Software Test Report</TITLE>
<STYLE TYPE="text/css"><!--
PRE {
font-size: 80%;
@@ -14,17 +14,22 @@
</HEAD>
<BODY>
-<H1>CUPS 2.0 Software Test Report</H1>
+<H1>CUPS 2.1 Software Test Report</H1>
<P>This software test report provides detailed test results that
-are used to evaluate the stability and compliance of CUPS Version 2.0.
+are used to evaluate the stability and compliance of CUPS Version 2.1.
<H2>Document Overview</H2>
<P>This software test plan is organized into the following sections:
<UL>
- <LI>1 - IPP Compliance Tests</LI>
- <LI>2 - Command Tests</LI>
- <LI>3 - Log Files</LI>
+ <LI><A HREF="#IPP">1 - IPP Compliance Tests</A></LI>
+ <LI><A HREF="#COMMAND">2 - Command Tests</A></LI>
+ <LI><A HREF="#SUMMARY">3 - Test Summary</A></LI>
+ <LI><A HREF="#LOGS">4 - Log Files</A><UL>
+ <LI><A HREF="#access_log">access_log</A></LI>
+ <LI><A HREF="#error_log">error_log</A></LI>
+ <LI><A HREF="#page_log">page_log</A></LI>
+ </UL></LI>
</UL>
diff --git a/vcnet/config.h b/vcnet/config.h
index 7a8bd0fda..156c42d80 100644
--- a/vcnet/config.h
+++ b/vcnet/config.h
@@ -1,9 +1,9 @@
/*
- * "$Id: config.h 12762 2015-06-24 20:11:53Z msweet $"
+ * "$Id: config.h 12269 2014-11-20 15:37:29Z msweet $"
*
* Configuration file for CUPS on Windows.
*
- * Copyright 2007-2015 by Apple Inc.
+ * Copyright 2007-2014 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -96,8 +96,8 @@ typedef unsigned long useconds_t;
* Version of software...
*/
-#define CUPS_SVERSION "CUPS v2.0.4"
-#define CUPS_MINIMAL "CUPS/2.0.4"
+#define CUPS_SVERSION "CUPS v2.1svn"
+#define CUPS_MINIMAL "CUPS/2.1svn"
/*
@@ -799,5 +799,5 @@ static __inline int _cups_abs(int i) { return (i < 0 ? -i : i); }
#endif /* !_CUPS_CONFIG_H_ */
/*
- * End of "$Id: config.h 12762 2015-06-24 20:11:53Z msweet $".
+ * End of "$Id: config.h 12269 2014-11-20 15:37:29Z msweet $".
*/
diff --git a/xcode/CUPS.xcodeproj/project.pbxproj b/xcode/CUPS.xcodeproj/project.pbxproj
index 81ed4acbd..37c0a3110 100644
--- a/xcode/CUPS.xcodeproj/project.pbxproj
+++ b/xcode/CUPS.xcodeproj/project.pbxproj
@@ -13,6 +13,8 @@
buildPhases = (
);
dependencies = (
+ 274EE2861A03EEEE003213D1 /* PBXTargetDependency */,
+ 274EE2881A03EEEE003213D1 /* PBXTargetDependency */,
726AD704135E8AA1002C930D /* PBXTargetDependency */,
2767FC5419267469000F61D3 /* PBXTargetDependency */,
273BF6DE1333B6370022CAAB /* PBXTargetDependency */,
@@ -29,6 +31,9 @@
buildPhases = (
);
dependencies = (
+ 27A034871A8BDC6900650675 /* PBXTargetDependency */,
+ 274EE2821A03EEE0003213D1 /* PBXTargetDependency */,
+ 274EE2841A03EEE0003213D1 /* PBXTargetDependency */,
274FF5E313332D4300317ECB /* PBXTargetDependency */,
72BEA8D819AFA8BB0085F0F3 /* PBXTargetDependency */,
72F75A711336FACD004BB496 /* PBXTargetDependency */,
@@ -68,6 +73,20 @@
270CCDBA135E3D0900007BE2 /* libcupsmime.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 72220FAC13330B2200FCA411 /* libcupsmime.dylib */; };
270CCDBC135E3D3E00007BE2 /* testmime.c in Sources */ = {isa = PBXBuildFile; fileRef = 270CCDBB135E3D3E00007BE2 /* testmime.c */; };
273BF6C71333B5370022CAAB /* testcups.c in Sources */ = {isa = PBXBuildFile; fileRef = 273BF6C61333B5370022CAAB /* testcups.c */; };
+ 274EE2611A03EDCA003213D1 /* libcups_static.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 72A4332F155844CF002E172D /* libcups_static.a */; };
+ 274EE2621A03EDCA003213D1 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC591926750C000F61D3 /* CoreFoundation.framework */; };
+ 274EE2631A03EDCA003213D1 /* libresolv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5B1926750C000F61D3 /* libresolv.dylib */; };
+ 274EE2641A03EDCA003213D1 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5C1926750C000F61D3 /* libz.dylib */; };
+ 274EE2651A03EDCA003213D1 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5D1926750C000F61D3 /* Security.framework */; };
+ 274EE2661A03EDCA003213D1 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5E1926750C000F61D3 /* SystemConfiguration.framework */; };
+ 274EE2721A03EDCB003213D1 /* libcups_static.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 72A4332F155844CF002E172D /* libcups_static.a */; };
+ 274EE2731A03EDCB003213D1 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC591926750C000F61D3 /* CoreFoundation.framework */; };
+ 274EE2741A03EDCB003213D1 /* libresolv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5B1926750C000F61D3 /* libresolv.dylib */; };
+ 274EE2751A03EDCB003213D1 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5C1926750C000F61D3 /* libz.dylib */; };
+ 274EE2761A03EDCB003213D1 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5D1926750C000F61D3 /* Security.framework */; };
+ 274EE2771A03EDCB003213D1 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5E1926750C000F61D3 /* SystemConfiguration.framework */; };
+ 274EE27E1A03EE0B003213D1 /* ippinfra.c in Sources */ = {isa = PBXBuildFile; fileRef = 274EE27D1A03EE0B003213D1 /* ippinfra.c */; };
+ 274EE2801A03EE41003213D1 /* ippproxy.c in Sources */ = {isa = PBXBuildFile; fileRef = 274EE27F1A03EE41003213D1 /* ippproxy.c */; };
274FF5D913332CC700317ECB /* cups-driverd.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 274FF5D613332CC700317ECB /* cups-driverd.cxx */; };
274FF5DA13332CC700317ECB /* util.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FF5D713332CC700317ECB /* util.c */; };
274FF5DD13332D0600317ECB /* libcups.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 72220EAE1333047D00FCA411 /* libcups.dylib */; };
@@ -228,6 +247,8 @@
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 */; };
+ 27A034821A8BDC3A00650675 /* lpadmin.c in Sources */ = {isa = PBXBuildFile; fileRef = 2732E08D137A3F5200FAFEF6 /* lpadmin.c */; };
+ 27A034851A8BDC5C00650675 /* libcups.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 72220EAE1333047D00FCA411 /* libcups.dylib */; };
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 */; };
@@ -448,6 +469,48 @@
remoteGlobalIDString = 273BF6BC1333B5000022CAAB;
remoteInfo = testcups;
};
+ 274EE25D1A03EDCA003213D1 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 274FF6891333B1C400317ECB;
+ remoteInfo = libcups_static;
+ };
+ 274EE26E1A03EDCB003213D1 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 274FF6891333B1C400317ECB;
+ remoteInfo = libcups_static;
+ };
+ 274EE2811A03EEE0003213D1 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 274EE25B1A03EDCA003213D1;
+ remoteInfo = ippinfra;
+ };
+ 274EE2831A03EEE0003213D1 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 274EE26C1A03EDCB003213D1;
+ remoteInfo = ippproxy;
+ };
+ 274EE2851A03EEEE003213D1 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 274EE25B1A03EDCA003213D1;
+ remoteInfo = ippinfra;
+ };
+ 274EE2871A03EEEE003213D1 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 274EE26C1A03EDCB003213D1;
+ remoteInfo = ippproxy;
+ };
274FF5DB13332CF900317ECB /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
@@ -756,6 +819,20 @@
remoteGlobalIDString = 274FF6891333B1C400317ECB;
remoteInfo = libcups_static;
};
+ 27A034831A8BDC4A00650675 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 72220EAD1333047D00FCA411;
+ remoteInfo = libcups;
+ };
+ 27A034861A8BDC6900650675 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 27A0347A1A8BDB1200650675;
+ remoteInfo = lpadmin;
+ };
720DD6CE1358FD790064AA82 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
@@ -966,6 +1043,24 @@
);
runOnlyForDeploymentPostprocessing = 1;
};
+ 274EE2671A03EDCA003213D1 /* CopyFiles */ = {
+ isa = PBXCopyFilesBuildPhase;
+ buildActionMask = 2147483647;
+ dstPath = /usr/share/man/man1/;
+ dstSubfolderSpec = 0;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 1;
+ };
+ 274EE2781A03EDCB003213D1 /* CopyFiles */ = {
+ isa = PBXCopyFilesBuildPhase;
+ buildActionMask = 2147483647;
+ dstPath = /usr/share/man/man1/;
+ dstSubfolderSpec = 0;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 1;
+ };
274FF5CA13332B1F00317ECB /* CopyFiles */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
@@ -1101,6 +1196,15 @@
);
runOnlyForDeploymentPostprocessing = 1;
};
+ 27A034791A8BDB1200650675 /* CopyFiles */ = {
+ isa = PBXCopyFilesBuildPhase;
+ buildActionMask = 2147483647;
+ dstPath = /usr/share/man/man1/;
+ dstSubfolderSpec = 0;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 1;
+ };
720DD6C01358FD5F0064AA82 /* CopyFiles */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
@@ -1219,6 +1323,10 @@
2732E092137A3F5200FAFEF6 /* lpstat.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = lpstat.c; path = ../systemv/lpstat.c; sourceTree = "<group>"; };
273BF6BD1333B5000022CAAB /* testcups */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testcups; sourceTree = BUILT_PRODUCTS_DIR; };
273BF6C61333B5370022CAAB /* testcups.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = testcups.c; path = ../cups/testcups.c; sourceTree = "<group>"; };
+ 274EE26B1A03EDCA003213D1 /* ippserver copy */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "ippserver copy"; sourceTree = BUILT_PRODUCTS_DIR; };
+ 274EE27C1A03EDCB003213D1 /* ippserver copy copy */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "ippserver copy copy"; sourceTree = BUILT_PRODUCTS_DIR; };
+ 274EE27D1A03EE0B003213D1 /* ippinfra.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ippinfra.c; path = ../test/ippinfra.c; sourceTree = "<group>"; };
+ 274EE27F1A03EE41003213D1 /* ippproxy.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ippproxy.c; path = ../test/ippproxy.c; sourceTree = "<group>"; };
274FF5CC13332B1F00317ECB /* cups-driverd */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "cups-driverd"; sourceTree = BUILT_PRODUCTS_DIR; };
274FF5D613332CC700317ECB /* cups-driverd.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "cups-driverd.cxx"; path = "../scheduler/cups-driverd.cxx"; sourceTree = "<group>"; };
274FF5D713332CC700317ECB /* util.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = util.c; path = ../scheduler/util.c; sourceTree = "<group>"; };
@@ -1286,6 +1394,7 @@
278C58E6136B64B000836530 /* Kerberos.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Kerberos.framework; path = /System/Library/Frameworks/Kerberos.framework; sourceTree = "<absolute>"; };
278C58E7136B64B000836530 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = /System/Library/Frameworks/Security.framework; sourceTree = "<absolute>"; };
278C58E8136B64B000836530 /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = /System/Library/Frameworks/SystemConfiguration.framework; sourceTree = "<absolute>"; };
+ 27A0347B1A8BDB1300650675 /* lpadmin */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = lpadmin; sourceTree = BUILT_PRODUCTS_DIR; };
27D3037D134148CB00F022B1 /* libcups2.def */ = {isa = PBXFileReference; lastKnownFileType = text; name = libcups2.def; path = ../cups/libcups2.def; sourceTree = "<group>"; };
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>"; };
@@ -1427,6 +1536,8 @@
724379C41333FFC7009631B9 /* usb-darwin.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "usb-darwin.c"; path = "../backend/usb-darwin.c"; sourceTree = "<group>"; };
724379C51333FFC7009631B9 /* usb.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = usb.c; path = ../backend/usb.c; sourceTree = "<group>"; };
724379CA1334000E009631B9 /* ieee1284.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ieee1284.c; path = ../backend/ieee1284.c; sourceTree = "<group>"; };
+ 72496E161A13A03B0051899C /* org.cups.cups-lpd.socket */ = {isa = PBXFileReference; lastKnownFileType = text; name = "org.cups.cups-lpd.socket"; path = "../scheduler/org.cups.cups-lpd.socket"; sourceTree = SOURCE_ROOT; };
+ 72496E171A13A03B0051899C /* org.cups.cups-lpdAT.service.in */ = {isa = PBXFileReference; lastKnownFileType = text; name = "org.cups.cups-lpdAT.service.in"; path = "../scheduler/org.cups.cups-lpdAT.service.in"; sourceTree = SOURCE_ROOT; };
7258EAE2134594C4009286F1 /* rastertopwg */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = rastertopwg; sourceTree = BUILT_PRODUCTS_DIR; };
7258EAEC134594EB009286F1 /* rastertopwg.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = rastertopwg.c; path = ../filter/rastertopwg.c; sourceTree = "<group>"; };
726AD6F7135E88F0002C930D /* ippserver */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = ippserver; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -1441,7 +1552,7 @@
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>"; };
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>"; };
+ 727EF02F192E3498001EF690 /* admin.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = admin.c; path = "../cgi-bin/admin.c"; sourceTree = "<group>"; wrapsLines = 1; };
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>"; };
@@ -1477,6 +1588,8 @@
728FB7EC1536161C005426E1 /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = /usr/lib/libz.dylib; sourceTree = "<absolute>"; };
728FB7EF1536167A005426E1 /* libiconv.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libiconv.dylib; path = /usr/lib/libiconv.dylib; sourceTree = "<absolute>"; };
728FB7F01536167A005426E1 /* libresolv.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libresolv.dylib; path = /usr/lib/libresolv.dylib; sourceTree = "<absolute>"; };
+ 729D4B561A2CB48700692B21 /* CHANGES-2.0.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = "CHANGES-2.0.txt"; path = "../CHANGES-2.0.txt"; sourceTree = "<group>"; };
+ 729D4B571A2CB48700692B21 /* CHANGES-IPPTOOL.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = "CHANGES-IPPTOOL.txt"; path = "../CHANGES-IPPTOOL.txt"; sourceTree = "<group>"; };
72A4332F155844CF002E172D /* libcups_static.a */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = libcups_static.a; sourceTree = BUILT_PRODUCTS_DIR; };
72C16CB8137B195D007E4BF4 /* file.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = file.c; path = ../scheduler/file.c; sourceTree = SOURCE_ROOT; };
72CF95E018A13543000FCAE4 /* dest-job.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "dest-job.c"; path = "../cups/dest-job.c"; sourceTree = "<group>"; };
@@ -1593,6 +1706,32 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
+ 274EE2601A03EDCA003213D1 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 274EE2611A03EDCA003213D1 /* libcups_static.a in Frameworks */,
+ 274EE2621A03EDCA003213D1 /* CoreFoundation.framework in Frameworks */,
+ 274EE2631A03EDCA003213D1 /* libresolv.dylib in Frameworks */,
+ 274EE2641A03EDCA003213D1 /* libz.dylib in Frameworks */,
+ 274EE2651A03EDCA003213D1 /* Security.framework in Frameworks */,
+ 274EE2661A03EDCA003213D1 /* SystemConfiguration.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 274EE2711A03EDCB003213D1 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 274EE2721A03EDCB003213D1 /* libcups_static.a in Frameworks */,
+ 274EE2731A03EDCB003213D1 /* CoreFoundation.framework in Frameworks */,
+ 274EE2741A03EDCB003213D1 /* libresolv.dylib in Frameworks */,
+ 274EE2751A03EDCB003213D1 /* libz.dylib in Frameworks */,
+ 274EE2761A03EDCB003213D1 /* Security.framework in Frameworks */,
+ 274EE2771A03EDCB003213D1 /* SystemConfiguration.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
274FF5C913332B1F00317ECB /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
@@ -1756,6 +1895,14 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
+ 27A034781A8BDB1200650675 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 27A034851A8BDC5C00650675 /* libcups.dylib in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
720DD6BF1358FD5F0064AA82 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
@@ -1977,6 +2124,8 @@
2732E08B137A3F5200FAFEF6 /* cupstestdsc.c */,
72F75A5B1336F988004BB496 /* cupstestppd.c */,
72CF95F218A19165000FCAE4 /* ippfind.c */,
+ 274EE27D1A03EE0B003213D1 /* ippinfra.c */,
+ 274EE27F1A03EE41003213D1 /* ippproxy.c */,
726AD701135E8A90002C930D /* ippserver.c */,
276683F91337F7A9000D33D0 /* ipptool.c */,
2732E08C137A3F5200FAFEF6 /* lp.c */,
@@ -2035,6 +2184,9 @@
72A4332F155844CF002E172D /* libcups_static.a */,
72CF95F118A19134000FCAE4 /* ipptool copy */,
2767FC5019266A0D000F61D3 /* testdest */,
+ 274EE26B1A03EDCA003213D1 /* ippserver copy */,
+ 274EE27C1A03EDCB003213D1 /* ippserver copy copy */,
+ 27A0347B1A8BDB1300650675 /* lpadmin */,
);
name = Products;
sourceTree = "<group>";
@@ -2157,12 +2309,12 @@
72E65BDC18DC852700097E89 /* Makefile */,
7226369B18AE6D19004ED309 /* org.cups.cups-lpd.plist */,
72E65BD518DC818400097E89 /* org.cups.cups-lpd.plist.in */,
+ 72496E171A13A03B0051899C /* org.cups.cups-lpdAT.service.in */,
+ 72496E161A13A03B0051899C /* org.cups.cups-lpd.socket */,
72E65BD618DC818400097E89 /* org.cups.cupsd.path.in */,
7226369C18AE6D19004ED309 /* org.cups.cupsd.plist */,
72E65BD718DC818400097E89 /* org.cups.cupsd.service.in */,
72E65BD818DC818400097E89 /* org.cups.cupsd.socket.in */,
- 72D53A3615B4929D003F877F /* colorman.c */,
- 72D53A3715B4929D003F877F /* colorman.h */,
72220F6913330B0C00FCA411 /* auth.c */,
72220F6A13330B0C00FCA411 /* auth.h */,
72220F6B13330B0C00FCA411 /* banners.c */,
@@ -2173,6 +2325,8 @@
72220F7013330B0C00FCA411 /* classes.h */,
72220F7113330B0C00FCA411 /* client.c */,
72220F7213330B0C00FCA411 /* client.h */,
+ 72D53A3615B4929D003F877F /* colorman.c */,
+ 72D53A3715B4929D003F877F /* colorman.h */,
72220F7313330B0C00FCA411 /* conf.c */,
72220F7413330B0C00FCA411 /* conf.h */,
72220F7513330B0C00FCA411 /* cupsd.h */,
@@ -2337,7 +2491,7 @@
indentWidth = 2;
sourceTree = "<group>";
tabWidth = 8;
- wrapsLines = 0;
+ wrapsLines = 1;
};
72E65BA218DC796500097E89 /* Autoconf Files */ = {
isa = PBXGroup;
@@ -2372,15 +2526,6 @@
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 */,
@@ -2401,12 +2546,23 @@
72E65BCA18DC7A7E00097E89 /* api-ppdc.shtml */,
72E65BCB18DC7A9800097E89 /* api-raster.header */,
72E65BCC18DC7A9800097E89 /* api-raster.shtml */,
+ 72E65BDD18DCA35700097E89 /* CHANGES-1.7.txt */,
+ 729D4B561A2CB48700692B21 /* CHANGES-2.0.txt */,
+ 729D4B571A2CB48700692B21 /* CHANGES-IPPTOOL.txt */,
+ 72E65BDE18DCA35700097E89 /* CHANGES.txt */,
+ 72E65BDF18DCA35700097E89 /* CREDITS.txt */,
+ 72E65BB918DC7A3600097E89 /* doc */,
+ 72E65BE018DCA35700097E89 /* INSTALL.txt */,
+ 72E65BE118DCA35700097E89 /* IPPTOOL.txt */,
+ 72E65BE218DCA35700097E89 /* LICENSE.txt */,
+ 72E65BBA18DC7A3600097E89 /* man */,
72E65BCD18DC7A9800097E89 /* postscript-driver.header */,
72E65BCE18DC7A9800097E89 /* postscript-driver.shtml */,
72E65BCF18DC7A9800097E89 /* ppd-compiler.header */,
72E65BD018DC7A9800097E89 /* ppd-compiler.shtml */,
72E65BD118DC7A9800097E89 /* raster-driver.header */,
72E65BD218DC7A9800097E89 /* raster-driver.shtml */,
+ 72E65BE318DCA35700097E89 /* README.txt */,
72E65BD318DC7A9800097E89 /* spec-ppd.header */,
72E65BD418DC7A9800097E89 /* spec-ppd.shtml */,
);
@@ -2560,6 +2716,42 @@
productReference = 273BF6BD1333B5000022CAAB /* testcups */;
productType = "com.apple.product-type.tool";
};
+ 274EE25B1A03EDCA003213D1 /* ippinfra */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 274EE2681A03EDCA003213D1 /* Build configuration list for PBXNativeTarget "ippinfra" */;
+ buildPhases = (
+ 274EE25E1A03EDCA003213D1 /* Sources */,
+ 274EE2601A03EDCA003213D1 /* Frameworks */,
+ 274EE2671A03EDCA003213D1 /* CopyFiles */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ 274EE25C1A03EDCA003213D1 /* PBXTargetDependency */,
+ );
+ name = ippinfra;
+ productName = ippserver;
+ productReference = 274EE26B1A03EDCA003213D1 /* ippserver copy */;
+ productType = "com.apple.product-type.tool";
+ };
+ 274EE26C1A03EDCB003213D1 /* ippproxy */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 274EE2791A03EDCB003213D1 /* Build configuration list for PBXNativeTarget "ippproxy" */;
+ buildPhases = (
+ 274EE26F1A03EDCB003213D1 /* Sources */,
+ 274EE2711A03EDCB003213D1 /* Frameworks */,
+ 274EE2781A03EDCB003213D1 /* CopyFiles */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ 274EE26D1A03EDCB003213D1 /* PBXTargetDependency */,
+ );
+ name = ippproxy;
+ productName = ippserver;
+ productReference = 274EE27C1A03EDCB003213D1 /* ippserver copy copy */;
+ productType = "com.apple.product-type.tool";
+ };
274FF5CB13332B1F00317ECB /* cups-driverd */ = {
isa = PBXNativeTarget;
buildConfigurationList = 274FF5D213332B1F00317ECB /* Build configuration list for PBXNativeTarget "cups-driverd" */;
@@ -2871,6 +3063,24 @@
productReference = 278C58CB136B640300836530 /* testhttp */;
productType = "com.apple.product-type.tool";
};
+ 27A0347A1A8BDB1200650675 /* lpadmin */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 27A034811A8BDB1300650675 /* Build configuration list for PBXNativeTarget "lpadmin" */;
+ buildPhases = (
+ 27A034771A8BDB1200650675 /* Sources */,
+ 27A034781A8BDB1200650675 /* Frameworks */,
+ 27A034791A8BDB1200650675 /* CopyFiles */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ 27A034841A8BDC4A00650675 /* PBXTargetDependency */,
+ );
+ name = lpadmin;
+ productName = lpadmin;
+ productReference = 27A0347B1A8BDB1300650675 /* lpadmin */;
+ productType = "com.apple.product-type.tool";
+ };
720DD6C11358FD5F0064AA82 /* snmp */ = {
isa = PBXNativeTarget;
buildConfigurationList = 720DD6CB1358FD600064AA82 /* Build configuration list for PBXNativeTarget "snmp" */;
@@ -3133,6 +3343,11 @@
attributes = {
LastUpgradeCheck = 0600;
ORGANIZATIONNAME = "Apple Inc.";
+ TargetAttributes = {
+ 27A0347A1A8BDB1200650675 = {
+ CreatedOnToolsVersion = 6.1.1;
+ };
+ };
};
buildConfigurationList = 72BF963A1333042100B1EAD7 /* Build configuration list for PBXProject "CUPS" */;
compatibilityVersion = "Xcode 3.2";
@@ -3165,8 +3380,11 @@
724379461333FEA9009631B9 /* dnssd */,
724378FC1333E43E009631B9 /* ipp */,
72CF95E618A19134000FCAE4 /* ippfind */,
+ 274EE25B1A03EDCA003213D1 /* ippinfra */,
+ 274EE26C1A03EDCB003213D1 /* ippproxy */,
726AD6F6135E88F0002C930D /* ippserver */,
276683EF1337F78E000D33D0 /* ipptool */,
+ 27A0347A1A8BDB1200650675 /* lpadmin */,
724379171333E532009631B9 /* lpd */,
2766836F1337AC79000D33D0 /* ppdc */,
2766837C1337AC8C000D33D0 /* ppdhtml */,
@@ -3202,6 +3420,22 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
+ 274EE25E1A03EDCA003213D1 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 274EE27E1A03EE0B003213D1 /* ippinfra.c in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 274EE26F1A03EDCB003213D1 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 274EE2801A03EE41003213D1 /* ippproxy.c in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
274FF5C813332B1F00317ECB /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
@@ -3407,6 +3641,14 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
+ 27A034771A8BDB1200650675 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 27A034821A8BDC3A00650675 /* lpadmin.c in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
720DD6BE1358FD5F0064AA82 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
@@ -3635,6 +3877,36 @@
target = 273BF6BC1333B5000022CAAB /* testcups */;
targetProxy = 273BF6DD1333B6370022CAAB /* PBXContainerItemProxy */;
};
+ 274EE25C1A03EDCA003213D1 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 274FF6891333B1C400317ECB /* libcups_static */;
+ targetProxy = 274EE25D1A03EDCA003213D1 /* PBXContainerItemProxy */;
+ };
+ 274EE26D1A03EDCB003213D1 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 274FF6891333B1C400317ECB /* libcups_static */;
+ targetProxy = 274EE26E1A03EDCB003213D1 /* PBXContainerItemProxy */;
+ };
+ 274EE2821A03EEE0003213D1 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 274EE25B1A03EDCA003213D1 /* ippinfra */;
+ targetProxy = 274EE2811A03EEE0003213D1 /* PBXContainerItemProxy */;
+ };
+ 274EE2841A03EEE0003213D1 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 274EE26C1A03EDCB003213D1 /* ippproxy */;
+ targetProxy = 274EE2831A03EEE0003213D1 /* PBXContainerItemProxy */;
+ };
+ 274EE2861A03EEEE003213D1 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 274EE25B1A03EDCA003213D1 /* ippinfra */;
+ targetProxy = 274EE2851A03EEEE003213D1 /* PBXContainerItemProxy */;
+ };
+ 274EE2881A03EEEE003213D1 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 274EE26C1A03EDCB003213D1 /* ippproxy */;
+ targetProxy = 274EE2871A03EEEE003213D1 /* PBXContainerItemProxy */;
+ };
274FF5DC13332CF900317ECB /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 72220EAD1333047D00FCA411 /* libcups */;
@@ -3855,6 +4127,16 @@
target = 274FF6891333B1C400317ECB /* libcups_static */;
targetProxy = 278C58D7136B642F00836530 /* PBXContainerItemProxy */;
};
+ 27A034841A8BDC4A00650675 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 72220EAD1333047D00FCA411 /* libcups */;
+ targetProxy = 27A034831A8BDC4A00650675 /* PBXContainerItemProxy */;
+ };
+ 27A034871A8BDC6900650675 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 27A0347A1A8BDB1200650675 /* lpadmin */;
+ targetProxy = 27A034861A8BDC6900650675 /* PBXContainerItemProxy */;
+ };
720DD6CF1358FD790064AA82 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 72220EAD1333047D00FCA411 /* libcups */;
@@ -4035,6 +4317,34 @@
};
name = Release;
};
+ 274EE2691A03EDCA003213D1 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ PRODUCT_NAME = "ippserver copy";
+ };
+ name = Debug;
+ };
+ 274EE26A1A03EDCA003213D1 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ PRODUCT_NAME = "ippserver copy";
+ };
+ name = Release;
+ };
+ 274EE27A1A03EDCB003213D1 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ PRODUCT_NAME = "ippserver copy copy";
+ };
+ name = Debug;
+ };
+ 274EE27B1A03EDCB003213D1 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ PRODUCT_NAME = "ippserver copy copy";
+ };
+ name = Release;
+ };
274FF5D313332B1F00317ECB /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
@@ -4339,6 +4649,74 @@
};
name = Release;
};
+ 27A0347F1A8BDB1300650675 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ COPY_PHASE_STRIP = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_SYMBOLS_PRIVATE_EXTERN = NO;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ INSTALL_PATH = /usr/sbin;
+ MACOSX_DEPLOYMENT_TARGET = 10.10;
+ MTL_ENABLE_DEBUG_INFO = YES;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SDKROOT = macosx;
+ };
+ name = Debug;
+ };
+ 27A034801A8BDB1300650675 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ COPY_PHASE_STRIP = YES;
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ INSTALL_PATH = /usr/sbin;
+ MACOSX_DEPLOYMENT_TARGET = 10.10;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SDKROOT = macosx;
+ };
+ name = Release;
+ };
720DD6C91358FD5F0064AA82 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
@@ -4673,6 +5051,24 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
+ 274EE2681A03EDCA003213D1 /* Build configuration list for PBXNativeTarget "ippinfra" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 274EE2691A03EDCA003213D1 /* Debug */,
+ 274EE26A1A03EDCA003213D1 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 274EE2791A03EDCB003213D1 /* Build configuration list for PBXNativeTarget "ippproxy" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 274EE27A1A03EDCB003213D1 /* Debug */,
+ 274EE27B1A03EDCB003213D1 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
274FF5D213332B1F00317ECB /* Build configuration list for PBXNativeTarget "cups-driverd" */ = {
isa = XCConfigurationList;
buildConfigurations = (
@@ -4835,6 +5231,15 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
+ 27A034811A8BDB1300650675 /* Build configuration list for PBXNativeTarget "lpadmin" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 27A0347F1A8BDB1300650675 /* Debug */,
+ 27A034801A8BDB1300650675 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
720DD6CB1358FD600064AA82 /* Build configuration list for PBXNativeTarget "snmp" */ = {
isa = XCConfigurationList;
buildConfigurations = (
diff --git a/xcode/config.h b/xcode/config.h
index 24f2da2fc..abe5107c6 100644
--- a/xcode/config.h
+++ b/xcode/config.h
@@ -1,5 +1,5 @@
/*
- * "$Id: config.h 12762 2015-06-24 20:11:53Z msweet $"
+ * "$Id: config.h 12687 2015-06-03 17:19:04Z msweet $"
*
* Configuration file for CUPS and Xcode.
*
@@ -16,12 +16,14 @@
#ifndef _CUPS_CONFIG_H_
#define _CUPS_CONFIG_H_
+#include <AvailabilityMacros.h>
+
/*
* Version of software...
*/
-#define CUPS_SVERSION "CUPS v2.0.4"
-#define CUPS_MINIMAL "CUPS/2.0.4"
+#define CUPS_SVERSION "CUPS v2.1svn"
+#define CUPS_MINIMAL "CUPS/2.1svn"
/*
@@ -246,6 +248,20 @@
/*
+ * Do we have the ASL functions?
+ */
+
+#define HAVE_ASL_H
+
+
+/*
+ * Do we have the systemd journal functions?
+ */
+
+/*#undef HAVE_SYSTEMD_SD_JOURNAL_H*/
+
+
+/*
* Do we have the (v)snprintf() functions?
*/
@@ -351,6 +367,15 @@
/*
+ * Do we have (a working) SSLSetEnabledCiphers function?
+ */
+
+#ifdef AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER
+# define HAVE_SSLSETENABLEDCIPHERS 1
+#endif /* AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER */
+
+
+/*
* Do we have libpaper?
*/
@@ -468,7 +493,7 @@
#define HAVE_LAUNCH_H 1
#define HAVE_LAUNCHD 1
-#undef HAVE_LAUNCH_ACTIVATE_SOCKET
+#define HAVE_LAUNCH_ACTIVATE_SOCKET 1
/*
@@ -713,5 +738,5 @@ static __inline int _cups_abs(int i) { return (i < 0 ? -i : i); }
#endif /* !_CUPS_CONFIG_H_ */
/*
- * End of "$Id: config.h 12762 2015-06-24 20:11:53Z msweet $".
+ * End of "$Id: config.h 12687 2015-06-03 17:19:04Z msweet $".
*/