Comparar commits

..

359 Commits

Autor SHA1 Mensagem Data
msweet f28bae1aea Tag 1.7.0
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/tags/release-1.7.0@11360 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-10-24 13:04:13 +00:00
msweet 27efcd61e0 Add Italian localizations to packaging file.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/branches/branch-1.7@11359 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-10-24 03:04:17 +00:00
msweet 06cefec35c Mirror fix from trunk.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/branches/branch-1.7@11356 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-10-23 20:33:21 +00:00
msweet c2def0ced7 Mirror fix from trunk.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/branches/branch-1.7@11353 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-10-23 19:53:08 +00:00
msweet e9152ac713 Mirror fix from trunk.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/branches/branch-1.7@11345 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-10-18 21:14:52 +00:00
msweet 3d3f64a982 Mirror fix from trunk.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/branches/branch-1.7@11319 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-09-27 16:18:26 +00:00
msweet 4ecc320364 Mirror fix from trunk.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/branches/branch-1.7@11311 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-09-27 14:23:42 +00:00
msweet 60c3ee0499 Mirror fix from trunk.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/branches/branch-1.7@11308 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-09-27 14:09:25 +00:00
msweet 305331a392 Don't use "rfo" for CUPS queues (mirror previous bug fix for mDNSResponder).
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/branches/branch-1.7@11269 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-09-04 20:05:00 +00:00
msweet 40e88e9009 Update Japanese localization.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/branches/branch-1.7@11265 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-08-29 20:11:25 +00:00
msweet 5f19ab52fe Mirror changes from trunk.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/branches/branch-1.7@11240 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-08-14 20:33:55 +00:00
msweet 4a842d5397 Point source distributions to 1.7 branch.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/branches/branch-1.7@11226 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-08-06 17:23:54 +00:00
msweet 75ff7c7fea Branch trunk for CUPS 1.7.x.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/branches/branch-1.7@11224 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-08-06 17:05:52 +00:00
msweet ee8618f3fd The IPP backend did not add the "last-document" attribute
(<rdar://problem/114660379>)



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11220 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-08-06 16:15:50 +00:00
msweet dfc4cea4be Fix builds with debug printfs turned off.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11215 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-08-02 15:24:51 +00:00
msweet f253405029 The scheduler did not respond using the hostname specified by the client
(<rdar://problem/14583574>)



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11213 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-08-01 22:23:18 +00:00
msweet f6008c81b9 Bump MSI version to 13.07.31
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11208 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-31 18:31:50 +00:00
msweet 9941cf57f2 Make this script executable again.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11207 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-31 18:18:52 +00:00
msweet fde3d2df54 Clean up cupsaddsmb man page.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11206 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-31 18:16:09 +00:00
msweet 4972f4feee Add PPD test.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11205 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-31 18:06:15 +00:00
msweet f593fc1f91 Fix typo.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11202 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-26 21:31:54 +00:00
msweet 8a25966925 Added a SyncOnClose directive to cups-files.conf to force cupsd to call fsync
before closing any configuration/state files it writes
(<rdar://problem/14523043>)



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11201 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-26 21:27:27 +00:00
msweet 1d670c3987 Fix typos in examples - CUPS-Add-Modify-xxx instead of CUPS-Add-xxx.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11200 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-26 21:07:52 +00:00
msweet 1523f10d81 Error messages from the scheduler were not localized using the language
specified in the client's IPP request (<rdar://problem/14128011>)


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11195 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-26 11:50:02 +00:00
msweet 0d4d48ad63 Fax queues did not work when shared via Bonjour (<rdar://problem/14498310>)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11193 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-26 03:12:37 +00:00
msweet f902c56223 Fix a couple memory leaks in ippfind that were reported by Clang.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11177 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-24 12:16:37 +00:00
msweet e826f56b16 Added USB quirk rule for Lexmark E238 (<rdar://problem/14493054>)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11175 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-23 12:36:57 +00:00
msweet 80360a5e4c Closed server connections were still not always detected
(<rdar://problem/14484313>)

- Also need to check for EOF from recv...



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11174 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-23 12:33:52 +00:00
msweet 737b017edf Add Italian localization (<rdar://problem/14481578>)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11172 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-23 12:24:21 +00:00
msweet 483fc76b98 Still need to use -Wl,-pie on OS X (regression in change for
<rdar://problem/14480938>)


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11171 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-23 12:21:51 +00:00
msweet d939104ddc Fixed a compile issue on 64-bit Linux with Clang - need to use the -pie option
instead of -Wl,-pie now (<rdar://problem/14480938>)


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11170 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-22 18:10:51 +00:00
msweet 7d1419a770 Don't reference CUPS driver for windows page anymore.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11165 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-22 15:00:03 +00:00
msweet e1a3eca81c The ippfind utility reported the wrong port numbers when compiled against Avahi
(<rdar://problem/14508324>)


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11164 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-22 14:57:14 +00:00
msweet f8f52a9058 Fix compile errors.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11155 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-17 15:51:43 +00:00
msweet 89a653066e The libusb-based USB backend now loads its list of quirks from files in
/usr/share/cups/usb instead of using a hardcoded table
(<rdar://problem/14442769>)



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11154 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-17 15:21:18 +00:00
msweet 0c4bedc42d Reconnect as needed prior to sending a GET, HEAD, or PUT request.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11153 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-17 14:10:21 +00:00
msweet e924ce801a Fix a compile error in libcups (<rdar://problem/14467141>)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11151 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-17 13:06:14 +00:00
msweet f9a12035df The scheduler did not properly register ICC color profiles with colord
(<rdar://problem/14455625>)



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11150 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-17 13:03:56 +00:00
msweet f8e23ef7e7 Bump version to 1.7.0 in preparation for a release in the next couple weeks.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11149 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-17 02:57:09 +00:00
msweet 54f63cdfb5 The scheduler incorrectly did not pass a FINAL_CONTENT_TYPE environment variable
to the filters or backend (<rdar://problem/14355011>)



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11147 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-17 02:54:31 +00:00
msweet ac0ec51ba0 Remove unused var.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11144 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-17 02:45:55 +00:00
msweet 990c79d278 The cups-exec helper program could fail randomly on OS X due to sandbox
violations when closing excess file descriptors (<rdar://problem/14421943>)

The scheduler incorrectly did not use the kqueue interface on OS X.



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11142 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-17 01:07:00 +00:00
msweet cca2420513 Remove debug printf.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11141 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-16 14:58:25 +00:00
msweet 1505041083 Update README files for ipptool packages.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11140 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-15 15:51:32 +00:00
msweet f0ccfab317 Update ipptool packaging script to allow for Fedora, Red Hat Enterprise Linux
(RHEL). and Ubuntu Linux variants since LSB doesn't support OpenSSL or Avahi.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11139 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-15 13:22:34 +00:00
msweet 6c78e3f887 Ignore generated files.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11130 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-11 20:50:45 +00:00
msweet bc0305b0b9 Fix build error
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11129 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-11 20:39:46 +00:00
msweet ad0357ca1d Also package ippfind.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11128 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-11 20:31:43 +00:00
msweet 75b9ea1c3a Don't package old "standard configuration" help file.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11127 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-11 20:27:14 +00:00
msweet 24a8828edd Tweak working in "what's new" document.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11126 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-11 20:21:18 +00:00
msweet 7a712c54f8 Changelog update - previous bug only affects 1.7.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11116 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-10 14:41:37 +00:00
msweet 3f786819c8 Printer xxx-default values were not reported by Get-Printer-Attributes or
lpoptions (<rdar://problem/14401795>)



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11115 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-10 14:35:53 +00:00
msweet 567f49cba3 The default IPP version did not always get set before creating a new IPP
request message (<rdar://problem/14401718>)



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11113 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-10 14:08:39 +00:00
msweet ffa2ca90d5 Update documentation to not embed unstable configuration values, now that man
pages are part of the repository...


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11109 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-08 21:15:13 +00:00
msweet 9520743f2d Prep for 1.7rc1.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11107 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-08 13:47:51 +00:00
msweet bf500a5653 Change kIOPMAssertRemoteAccess to kIOPMAssertNetworkClientActive...
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11106 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-08 12:29:10 +00:00
msweet a782e5574a Update localization files.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11102 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-08 11:21:56 +00:00
msweet c606bcae4e <rdar://problem/14290628> cups.org: cupsGetNamedDest returns the wrong default printer, lpr/lpq/lp/lpstat use different defaults!
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11101 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-08 11:20:33 +00:00
msweet 83385e2997 Make ippfind build and install on Windows
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11100 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-05 15:11:29 +00:00
msweet 8a78aa3778 Some ippserver fixes to allow it to be used as a CUPS destination:
- Don't actually advertise IPPS support yet, since libcups doesn't support
  server-side HTTPS yet.
- Allow printer-uri values that have the right resource paths - this allows
  things like back-to-my-mac to work.
- Advertise the correct URI resource path in the Bonjour TXT record.
- Fix valid_doc_attributes to use the document-format-default value instead of
  "application/octet-stream".



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11097 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-04 15:54:36 +00:00
msweet 94446c2699 Allow job-billing to be an alias for job-account-id, and requesting-user-name to
be an alias for job-accounting-user-id (<rdar://problem/14290027>)


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11089 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-03 16:39:38 +00:00
msweet 7374e9e5d4 Fix HTML errors in documentation (using swish-e to validate HTML...)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11087 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-03 14:26:55 +00:00
msweet d48a10026a Fix compile error.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11086 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-03 13:55:05 +00:00
msweet 9c0e8e5d83 Update version numbers.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11085 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-03 13:53:05 +00:00
msweet d1f0f86b73 Update usage to match what is now supported.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11084 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-03 13:36:21 +00:00
msweet 7bf181980c Use new kIOPMAssertRemoteAccess power management assertion, when supported, to
keep the system awake enough to print (<rdar://problem/11918463>)


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11081 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-02 20:39:24 +00:00
msweet 223bdaa186 Update distribution script to use new SVN repo location.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11078 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-06-27 19:03:21 +00:00
msweet 25f3e1eef0 Add ippfind project for Visual Studio.
Drop support for VC++ 2005.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11077 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-06-27 18:49:52 +00:00
msweet ad29aeab8c Fix a state transition issue that affected ippserver.
Fix a crasher for handling of sides in ippserver.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11074 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-06-27 18:36:13 +00:00
msweet 7e5023ddea Fix ippfind for Linux/Avahi.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11064 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-06-25 16:46:38 +00:00
msweet b63a0d90da httpStatus(HTTP_ERROR) did not return a useful error message
(<rdar://problem/14217326>)



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11062 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-06-25 15:11:25 +00:00
msweet 5489ad4342 The lp and lpr commands incorrectly ignored the default printer set in the
lpoptions file (<rdar://problem/14216472>)



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11060 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-06-25 15:02:18 +00:00
msweet 3699c6372c Added documentation about the /version=1.1 option to ServerName in client.conf
(<rdar://problem/14216262>)



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11058 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-06-25 14:38:01 +00:00
msweet d680d3826c Also deprecate cupsGetPPD and cupsGetPPD2.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11057 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-06-25 14:30:18 +00:00
msweet e666fe5e38 Fixed deprecation warnings for many functions on OS X so they are tied
to the deployment version when building (<rdar://problem/14210079>)



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11056 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-06-25 14:27:30 +00:00
msweet ff862e509f <rdar://problem/14243133> AirPrint: Printers with name containing certain characters are not recognized
Support backquote (`) character and fix the IPv6 address detection code.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11052 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-06-25 01:42:48 +00:00
msweet 71f294cef9 Add unit test for httpAssembleUUID.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11051 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-06-25 00:57:09 +00:00
msweet 56cd8959f0 ARM-based Linux doesn't allow pointer comparisons on va_list values; not sure
how you are supposed to validate input, but whatever...


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11032 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-06-12 13:00:54 +00:00
msweet 94b4b4a07d Save work on ippfind for Linux.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11028 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-06-07 02:18:50 +00:00
msweet e5528d423b Update ippfind documentation with examples, change '-e' to '-x' for --exec.
Add ippfind to the ipptool binary package. 


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11027 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-06-07 01:45:14 +00:00
msweet b34254bcf1 Fix up svn:keywords for all files.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11025 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-06-07 01:00:33 +00:00
msweet 4875b2f3f6 Don't clean HTML man pages.
Add some other print-job tests.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11024 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-06-06 23:11:13 +00:00
msweet 83f65dd609 Ignore more stuff.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11023 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-06-06 22:48:46 +00:00
msweet e4e5666b10 Fix keywords on man page files.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11022 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-06-06 22:14:09 +00:00
msweet 2d0a0f48e7 <rdar://problem/13876199> cups.org: Need ippfind command-line utility
Implement --exec.

The ippfind command is now feature complete for CUPS 1.7.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11021 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-06-06 22:08:14 +00:00
msweet 70752071b3 Implement --ls.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11020 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-06-06 19:19:26 +00:00
msweet a505eef406 Fix --or handling.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11019 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-06-06 15:03:40 +00:00
msweet 4174320042 Save work - all of the tests work, todo:
- Fix --or
- Implement --ls
- Implement --exec



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11018 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-06-05 20:40:53 +00:00
msweet c4aa297584 <rdar://problem/14040186> Backend failure when sharing Simulated inkjet after creating ACL with standard user. OS X 10.9 (13A476l)
Don't trampoline if we are using a password.

Don't call xpc_connection_suspend since we are releasing it (not supposed to do
that for some reason...)


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11014 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-06-05 18:23:08 +00:00
msweet 4ffc419764 <rdar://problem/14065748> pwgMediaForPWG: roll_max_36.1025x3622.0472in becomes 91700 x 180568 instead of 91700 x 9199999
Convert fractional portion separately to avoid integer overflow.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11011 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-06-05 17:25:22 +00:00
msweet 766a822957 Save work on ippfind program. Nearly there.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11010 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-06-05 16:05:45 +00:00
msweet 69518a8578 <rdar://problem/13854722> 13A459 Printing completely broken on MBP after upgrade to Cab
Fix httpFlushWrite, which was incorrectly updating data_remaining.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11003 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-05-31 13:29:59 +00:00
msweet bac0799207 Save work on new ippfind tool.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11002 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-05-30 21:45:32 +00:00
msweet 26340b35e8 <rdar://problem/14016099> ipptool: Use SO_NWRITE socket option to extend timeouts
Make the ipptool timeout callback check whether the output buffer is empty.  If
not, automatically extend the timeout until it is - useful for when the printer
is blocking due to a printer error like "out of paper"...


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11000 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-05-30 01:33:55 +00:00
msweet 1bc82dd928 Restore debug2 logging of cupsdAdd/RemoveSelect.
Add higher-level debug logging of client select management.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@10999 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-05-30 00:48:16 +00:00
msweet 21f36711d9 Go back to non-blocking ippWrite.
Add some more debug logging.

Normalize some of the logging to consistently have a [Client NNN] prefix.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@10998 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-05-30 00:41:43 +00:00
msweet 0687ea6984 Ignore generated files.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@10997 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-05-29 21:45:03 +00:00
msweet f2d18633e2 Update svn:keyword properties.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@10996 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-05-29 11:51:34 +00:00
msweet 23ef1cac65 Add option to specify a single operation to test with.
Add CUPS-Get-Default to the list of standard ops to test.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@10995 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-05-29 11:51:03 +00:00
msweet 86c809d99c Added support for RFC 6874's IPv6 link local address format in URIs
(<rdar://problem/13979453>)



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@10990 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-05-24 21:21:04 +00:00
msweet 4fcfa0cf96 <rdar://problem/13493241> APVT3.0 checks a custom size using a 1/100mm smaller size
Don't use floating point at all.  Go old-school and do integer math to convert
to 100ths of millimeters...


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@10988 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-05-23 19:57:17 +00:00
msweet ee8d237de0 Changelog.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@10984 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-05-16 19:39:53 +00:00
msweet 06399b6e0d Save new Bonjour discovery/test program.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@10983 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-05-13 23:57:32 +00:00
msweet 890a10b7de <rdar://problem/13876091> cups.org: ipptool should support validation of hostname and port in URIs
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@10982 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-05-13 21:48:45 +00:00
msweet 1d47b929b0 <rdar://problem/13876038> cups.org: ipptool does not include any version information in the plist output
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@10981 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-05-13 19:40:47 +00:00
msweet 9475ec92d8 <rdar://problem/13875803> cups.org: ipptool does not proceed past INCLUDE if ignore is not used
Also: IPP finishings values for (now standardized) punch and fold stuff, new
IPP FaxOut Send-Hardcopy-Document operation.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@10980 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-05-13 19:15:06 +00:00
msweet 2a241c9efc <rdar://problem/13875729> cups.org: libusb-based backend can crash if USB is disabled in BIOS
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@10977 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-05-13 16:46:08 +00:00
msweet 90c6ec2104 <rdar://problem/ 13493241> APVT3.0 checks a custom size using a 1/100mm smaller size
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@10976 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-05-13 16:36:57 +00:00
msweet a8109fbe78 Move current import directory to new cups.org trunk
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@4303 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-05-10 17:14:12 +00:00
msweet 94436c5a61 Final sync-up with cups.org trunk repository
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@4297 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-05-10 16:04:59 +00:00
msweet 6961465fb2 Merge changes from CUPS 1.7b1-r10947.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@4274 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-04-09 20:10:23 +00:00
msweet cb7f98ee7f Sync up with CUPS 1.7svn-r10893
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@4216 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-03-11 13:57:36 +00:00
msweet c5b24bfa98 Merge changes from CUPS 1.7svn-r10874.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@4189 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-02-20 15:22:35 +00:00
msweet db8b865d20 Merge changes from CUPS 1.7svn-r10861.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@4167 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-02-04 19:27:13 +00:00
msweet 0cb67df369 Merge changes from CUPS 1.7svn-r10814.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@4125 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-01-14 22:10:30 +00:00
msweet 0fa6c7fa54 Merge changes from CUPS 1.7svn-r10791.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@4120 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-01-10 17:01:44 +00:00
msweet c1420c8744 Merge changes from CUPS 1.7svn-r10755.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@4074 a1ca3aef-8c08-0410-bb20-df032aa958be
2012-12-12 20:54:21 +00:00
msweet c41769ffd0 Merge changes from CUPS 1.7svn-r10710.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@4040 a1ca3aef-8c08-0410-bb20-df032aa958be
2012-11-26 19:37:04 +00:00
msweet a469f8a576 Merge changes from CUPS 1.7svn-r10704.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@4027 a1ca3aef-8c08-0410-bb20-df032aa958be
2012-11-16 01:00:05 +00:00
msweet 76aa1ac14c Fix property on test file.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3943 a1ca3aef-8c08-0410-bb20-df032aa958be
2012-10-15 21:10:00 +00:00
msweet 3dd9c34058 Merge changes from CUPS 1.7svn-r10643
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3940 a1ca3aef-8c08-0410-bb20-df032aa958be
2012-10-15 21:02:10 +00:00
msweet 5a9febac19 Merge changes from CUPS 1.7svn-r10629.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3933 a1ca3aef-8c08-0410-bb20-df032aa958be
2012-10-01 03:01:10 +00:00
msweet 37e7e6e0b2 Merge changes from CUPS 1.7svn-r10578.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3891 a1ca3aef-8c08-0410-bb20-df032aa958be
2012-08-29 00:26:48 +00:00
msweet a29fd7ddb5 Merge changes from CUPS 1.6svn-r10510.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3833 a1ca3aef-8c08-0410-bb20-df032aa958be
2012-05-23 22:51:18 +00:00
msweet f3c17241a4 Merge changes from CUPS 1.6svn-r10437.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3794 a1ca3aef-8c08-0410-bb20-df032aa958be
2012-04-23 22:44:16 +00:00
msweet 271780fb87 Remove ".orig" files that somehow got into the repo.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3764 a1ca3aef-8c08-0410-bb20-df032aa958be
2012-03-31 04:54:53 +00:00
msweet 82cc1f9ac3 Merge changes from CUPS 1.6svn-r10390.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3755 a1ca3aef-8c08-0410-bb20-df032aa958be
2012-03-30 05:59:14 +00:00
msweet 3e7fe0ca76 Merge changes from CUPS 1.6svn-r10310.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3683 a1ca3aef-8c08-0410-bb20-df032aa958be
2012-02-16 22:03:53 +00:00
msweet bb0d23b21b Sync up with CUPS 1.6svn-r10269 (changes from Zin TOT merged into cups.org TOT)
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3645 a1ca3aef-8c08-0410-bb20-df032aa958be
2012-02-13 17:18:19 +00:00
msweet 3ee4274c97 Remove deleted file.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3644 a1ca3aef-8c08-0410-bb20-df032aa958be
2012-02-13 16:38:44 +00:00
msweet 12f89d241c Merge changes from CUPS 1.6svn-r10267.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3643 a1ca3aef-8c08-0410-bb20-df032aa958be
2012-02-13 16:35:48 +00:00
msweet dcb445bcf3 Merge changes from CUPS 1.6svn-r10188, including changes for <rdar://problem/10127258> CUPS 1.6: New printer/printing APIs
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3618 a1ca3aef-8c08-0410-bb20-df032aa958be
2012-01-19 16:53:50 +00:00
msweet 9c80ffa289 Merge changes from CUPS 1.6svn-r10127.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3518 a1ca3aef-8c08-0410-bb20-df032aa958be
2011-11-28 17:26:29 +00:00
msweet a2326b5b72 Merge changes from CUPS 1.6svn-r10112.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3486 a1ca3aef-8c08-0410-bb20-df032aa958be
2011-11-08 00:30:03 +00:00
msweet d7225fc298 Merge changes from CUPS 1.6svn-r10056
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3448 a1ca3aef-8c08-0410-bb20-df032aa958be
2011-10-04 06:53:26 +00:00
msweet 9b66acc599 Merge changes from CUPS 1.6svn-r10024.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3438 a1ca3aef-8c08-0410-bb20-df032aa958be
2011-09-28 22:40:47 +00:00
msweet 10ddcf65af Merge changes from CUPS 1.6svn-r10006.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3427 a1ca3aef-8c08-0410-bb20-df032aa958be
2011-09-20 18:40:57 +00:00
msweet 83e0800111 Merge changes from CUPS 1.6svn-r10002
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3421 a1ca3aef-8c08-0410-bb20-df032aa958be
2011-09-14 22:44:45 +00:00
msweet 85dda01c84 Merge changes from CUPS 1.6svn-r9968.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3411 a1ca3aef-8c08-0410-bb20-df032aa958be
2011-09-07 22:31:27 +00:00
msweet a48458814a Merge changes from CUPS 1.6svn-r9939.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3392 a1ca3aef-8c08-0410-bb20-df032aa958be
2011-08-31 01:58:55 +00:00
msweet 771bd8cbff Merge changes from CUPS 1.5.1-r9875.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3363 a1ca3aef-8c08-0410-bb20-df032aa958be
2011-08-09 21:32:14 +00:00
msweet bd8b6777d6 Merge changes from CUPS 1.5rc1-r9834.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3322 a1ca3aef-8c08-0410-bb20-df032aa958be
2011-06-15 00:48:47 +00:00
msweet f99f369831 Merge changes from CUPS 1.5rc1-r9833.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3318 a1ca3aef-8c08-0410-bb20-df032aa958be
2011-06-15 00:37:13 +00:00
msweet d4d033982c Merge changes from CUPS 1.5rc1-r9815.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3299 a1ca3aef-8c08-0410-bb20-df032aa958be
2011-06-05 17:00:32 +00:00
msweet f228370c3f Merge changes from CUPS 1.5b2-r9811.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3289 a1ca3aef-8c08-0410-bb20-df032aa958be
2011-05-26 13:22:56 +00:00
msweet 88f9aafc49 Merge changes from CUPS 1.5b1-r9798.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3275 a1ca3aef-8c08-0410-bb20-df032aa958be
2011-05-20 07:26:13 +00:00
msweet 321d8d57da Merge changes from CUPS 1.5b1-r9774.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3247 a1ca3aef-8c08-0410-bb20-df032aa958be
2011-05-12 06:22:31 +00:00
msweet eac3a0a01b Merge changes from CUPS 1.5svn-r9763.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3242 a1ca3aef-8c08-0410-bb20-df032aa958be
2011-05-11 05:36:13 +00:00
msweet 22c9029b44 Merge changes from CUPS 1.5svn-r9717.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3171 a1ca3aef-8c08-0410-bb20-df032aa958be
2011-04-22 23:02:56 +00:00
msweet 07ed0e9a43 Merge changes from CUPS 1.5svn-r9675.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3122 a1ca3aef-8c08-0410-bb20-df032aa958be
2011-04-11 18:53:27 +00:00
msweet 84315f460a Merge changes from CUPS 1.5svn-r9641
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3071 a1ca3aef-8c08-0410-bb20-df032aa958be
2011-03-23 00:05:29 +00:00
msweet 82f972324d Merge changes from CUPS 1.5svn-r9631.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3062 a1ca3aef-8c08-0410-bb20-df032aa958be
2011-03-20 21:48:45 +00:00
msweet 31db8dedac Sync up some other changes.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3047 a1ca3aef-8c08-0410-bb20-df032aa958be
2011-03-14 18:48:04 +00:00
msweet f14324a792 Merge changes from CUPS 1.5svn-r9602.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3046 a1ca3aef-8c08-0410-bb20-df032aa958be
2011-03-14 18:45:10 +00:00
msweet c8fef167ba Merge changes from CUPS 1.5svn-r9567
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3015 a1ca3aef-8c08-0410-bb20-df032aa958be
2011-02-25 01:40:44 +00:00
msweet e60ec91f3e Merge changes from CUPS 1.5svn-r9525
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@2975 a1ca3aef-8c08-0410-bb20-df032aa958be
2011-02-11 21:20:35 +00:00
msweet 515b46cde4 Fix bad merge.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@2951 a1ca3aef-8c08-0410-bb20-df032aa958be
2011-01-18 00:26:43 +00:00
msweet 0268488e2f Merge changes from CUPS 1.5svn-r9491.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@2949 a1ca3aef-8c08-0410-bb20-df032aa958be
2011-01-17 23:54:15 +00:00
msweet c779abb06a Merge changes from CUPS 1.5svn-r9407.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@2910 a1ca3aef-8c08-0410-bb20-df032aa958be
2010-12-14 21:25:17 +00:00
msweet 229681c188 Merge changes from CUPS 1.5svn-r9400
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@2890 a1ca3aef-8c08-0410-bb20-df032aa958be
2010-12-03 06:58:01 +00:00
msweet 0837b7e828 Merge changes from CUPS 1.5svn-r9385.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@2873 a1ca3aef-8c08-0410-bb20-df032aa958be
2010-11-30 03:16:24 +00:00
msweet 1106b00e75 Merge changes from CUPS 1.5svn-r9374.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@2859 a1ca3aef-8c08-0410-bb20-df032aa958be
2010-11-17 18:58:56 +00:00
msweet 10d09e334a Merge changes from CUPS 1.5svn-r9352.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@2848 a1ca3aef-8c08-0410-bb20-df032aa958be
2010-11-06 05:13:04 +00:00
msweet 6c48a6cafc Merge changes from CUPS 1.5svn-r9323.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@2733 a1ca3aef-8c08-0410-bb20-df032aa958be
2010-10-01 22:44:58 +00:00
msweet 7cf5915ead Merge changes from CUPS 1.5svn-r9313.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@2683 a1ca3aef-8c08-0410-bb20-df032aa958be
2010-09-22 22:13:21 +00:00
msweet 030ae6a14e Merge changes from CUPS 1.5svn-r9229.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@2468 a1ca3aef-8c08-0410-bb20-df032aa958be
2010-08-09 22:14:41 +00:00
msweet 4220952d4d Merge changes from CUPS 1.5svn-r9214.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@2395 a1ca3aef-8c08-0410-bb20-df032aa958be
2010-07-27 00:17:12 +00:00
msweet c7017eccd2 Merge changes from CUPS 1.5svn-r9198.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@2309 a1ca3aef-8c08-0410-bb20-df032aa958be
2010-07-08 20:45:48 +00:00
msweet cc75483441 Merge changes from CUPS 1.5svn-r9136.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@2180 a1ca3aef-8c08-0410-bb20-df032aa958be
2010-05-10 22:58:10 +00:00
msweet 6d2f911bdd Merge changes from CUPS 1.5svn-r9105.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@2070 a1ca3aef-8c08-0410-bb20-df032aa958be
2010-04-12 04:23:14 +00:00
msweet 39ff2fe72b Merge changes from CUPS 1.5svn-r9098.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@2056 a1ca3aef-8c08-0410-bb20-df032aa958be
2010-04-09 22:45:27 +00:00
msweet aaf19ab07e Import changes from CUPS 1.5svn-r9085.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@2046 a1ca3aef-8c08-0410-bb20-df032aa958be
2010-04-07 07:11:03 +00:00
msweet e2d18a01cc Make sure EOL is right on import file.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@2017 a1ca3aef-8c08-0410-bb20-df032aa958be
2010-03-30 23:24:57 +00:00
msweet 5180a04ce8 Merge changes from CUPS 1.5svn-r9062.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@2016 a1ca3aef-8c08-0410-bb20-df032aa958be
2010-03-30 23:24:27 +00:00
msweet 61e2aeb0be Remove bad file.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@2015 a1ca3aef-8c08-0410-bb20-df032aa958be
2010-03-30 23:22:52 +00:00
msweet a480a1b6b4 Add a missing change to the test script.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1993 a1ca3aef-8c08-0410-bb20-df032aa958be
2010-03-24 14:33:57 +00:00
msweet 71e160228f Merge changes from CUPS 1.5svn-r9049 (private header support)
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1992 a1ca3aef-8c08-0410-bb20-df032aa958be
2010-03-24 14:32:08 +00:00
msweet 54afec3350 Merge changes from CUPS 1.5svn-r9041.
(all of the media changes)


git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1987 a1ca3aef-8c08-0410-bb20-df032aa958be
2010-03-23 21:42:49 +00:00
msweet ba55dc12de Merge changes from CUPS 1.5svn-r9037.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1968 a1ca3aef-8c08-0410-bb20-df032aa958be
2010-03-11 06:44:46 +00:00
msweet 5a6b583acf Merge changes from CUPS 1.5svn-r9022.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1937 a1ca3aef-8c08-0410-bb20-df032aa958be
2010-03-03 22:36:38 +00:00
msweet f8b3a85b79 Merge changes from CUPS 1.5svn-r9000.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1912 a1ca3aef-8c08-0410-bb20-df032aa958be
2010-02-25 00:52:27 +00:00
msweet 4168188389 Merge changes from CUPS 1.5svn-r8950.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1816 a1ca3aef-8c08-0410-bb20-df032aa958be
2010-01-14 22:50:23 +00:00
msweet 5a662dc060 Merge changes from CUPS 1.5svn-r8933.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1788 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-12-16 00:13:28 +00:00
msweet ef55b74533 Merge changes from CUPS 1.5svn-r8916.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1766 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-12-09 18:36:59 +00:00
msweet 3fb9c47ea6 Merge changes from CUPS 1.5svn-r8857.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1736 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-11-07 06:21:32 +00:00
msweet 101decd054 Remove old file.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1727 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-10-15 21:28:49 +00:00
msweet 4d301e694f Merge changes from CUPS 1.5svn-r8849.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1725 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-10-15 18:50:47 +00:00
msweet b226ab9913 Merge changes from CUPS 1.5svn-r8842.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1709 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-10-07 18:20:31 +00:00
msweet 18ecb42821 Merge changes from CUPS 1.5svn-r8829.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1695 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-09-24 23:50:39 +00:00
msweet 7a0cbd5e57 Import changes from CUPS 1.4.1 (r8801)
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1649 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-08-29 06:12:06 +00:00
msweet ee6ddad257 Merge final 1.4.0 (r8761) changes.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1629 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-08-07 22:49:21 +00:00
msweet 4a4b4f9914 Merge changes from CUPS 1.4.0 (r8756)
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1613 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-07-14 23:31:23 +00:00
msweet f701418f7b Merge changes from CUPS 1.4.0 (r8750)
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1608 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-07-07 18:36:58 +00:00
msweet 60198c6dba Merge changes from 1.4.0 r8744.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1603 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-07-02 19:16:48 +00:00
msweet e38f5e9c4d Merge changes from 1.4.0 (r8743)
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1595 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-07-02 15:21:10 +00:00
msweet 85b5d1dfa7 Merge fixes from CUPS 1.4.0 (r8739).
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1586 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-07-01 16:36:51 +00:00
msweet 4e6f60f000 Merge changes from CUPS 1.4svn-r8731 (1.4.0)
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1572 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-06-26 22:23:28 +00:00
msweet acb056cb17 Merge changes from CUPS 1.4svn-r8722 (tentative 1.4.0 GM)
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1567 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-06-18 22:32:02 +00:00
msweet 97c9a8d722 Import changes from CUPS 1.4svn-r8704.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1556 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-06-10 19:02:58 +00:00
msweet 393ac6abae Merge changes from CUPS 1.4svn-r8681 (tentative CUPS 1.4rc1)
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1537 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-05-22 23:56:34 +00:00
msweet b0f6947b4d Merge changes from CUPS 1.4svn-r8679.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1531 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-05-22 21:50:50 +00:00
msweet 68b10830fa Merge changes from CUPS 1.4svn-r8659
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1516 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-05-18 22:09:10 +00:00
msweet 536bc2c652 Merge changes from CUPS 1.4svn-r8639.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1505 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-05-14 22:48:33 +00:00
msweet 6c663ae27a Add missing man page file.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1499 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-05-14 16:10:44 +00:00
msweet 178cb7369d Merge changes from CUPS 1.4svn-r8628.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1495 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-05-13 22:29:41 +00:00
msweet f11a948a02 Merge changes from CUPS 1.4svn-r8606.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1480 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-05-08 18:38:44 +00:00
msweet e07d4801f9 Merge changes from CUPS 1.4svn-r8540.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1432 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-04-22 17:28:12 +00:00
msweet 38e73f8781 Merge changes from CUPS 1.4svn-r8492.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1378 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-04-08 03:17:45 +00:00
msweet 94da7e344c Merge changes from CUPS 1.4svn-r8469.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1338 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-03-25 00:42:10 +00:00
msweet 238c383265 Merge changes from CUPS 1.4svn-r8454.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1311 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-03-18 17:09:48 +00:00
msweet 8b116e6004 Merge changes from CUPS 1.4svn-r8443.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1296 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-03-13 22:09:14 +00:00
msweet 9aff70cc17 Merge more Common UNIX Printing System -> CUPS changes.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1286 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-03-09 22:00:45 +00:00
msweet d7871c8c7f Merge trademark/logo changes from CUPS 1.4svn-r8418.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1283 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-03-09 21:13:04 +00:00
msweet 1340db2dab Merge changes from CUPS 1.4svn-r8414.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1277 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-03-07 16:36:03 +00:00
msweet b9faaae17c Merge changes from CUPS 1.4svn-r8394.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1253 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-02-25 23:37:25 +00:00
msweet ede613e028 Remove generated file.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1234 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-02-18 17:49:06 +00:00
msweet f0ab5bff8a Merge changes from CUPS 1.4svn-r8362.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1228 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-02-17 19:24:29 +00:00
msweet bf3816c7ed Merge changes from CUPS 1.4svn-r8346.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1212 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-02-11 16:34:01 +00:00
msweet 745129beeb Merge changes from CUPS 1.4svn-r8329.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1182 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-02-04 04:27:58 +00:00
msweet dfd5680b87 Merge changes from CUPS 1.4svn-r8305.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1166 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-01-29 18:07:00 +00:00
msweet d1c13e1686 Merge changes from CUPS 1.4svn-r8290.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1144 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-01-23 22:36:42 +00:00
msweet d2354e6397 Merge changes from CUPS 1.4svn-r8252.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1123 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-01-14 19:55:19 +00:00
msweet c168a833ca Merge changes from CUPS 1.4svn-r8227.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1113 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-01-09 23:33:14 +00:00
msweet 557dde9fbc Merge changes from CUPS 1.4svn-r8196 (CUPS 1.4b2)
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1100 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-12-15 18:13:37 +00:00
msweet 426c6a5959 Merge changes from CUPS 1.4svn-r8177 (tentative CUPS 1.4b2)
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1090 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-12-11 01:40:30 +00:00
msweet 8b450588f4 Merge changes from CUPS 1.4svn-r8177.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1084 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-12-08 23:45:00 +00:00
msweet ed6e7faf3e Merge changes from CUPS 1.4svn-r8162.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1079 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-12-06 00:24:23 +00:00
msweet 52f6f666c3 Merge changes from CUPS 1.4svn-r8148.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1068 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-11-19 23:25:47 +00:00
msweet 9380acaa78 Ignore generated testprint.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1061 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-11-14 21:04:37 +00:00
msweet 4b3f67ff4c Merge changes from CUPS 1.4svn-r8131.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1060 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-11-14 21:04:14 +00:00
msweet e6013cfab0 Merge changes from CUPS 1.4svn-r8115.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1055 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-11-12 01:01:46 +00:00
msweet e4572d571c Merge changes from CUPS 1.4svn-r8088, the real official 1.4b1!
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1035 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-10-27 21:56:38 +00:00
msweet 28b9d139c0 Merge changes from CUPS 1.4svn-r8067 (tentative CUPS 1.4b1)
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1021 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-10-17 22:12:14 +00:00
msweet 6e8b116d7f Merge CUPS 1.4svn-r8058 (tentative CUPS 1.4b1)
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1016 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-10-15 21:06:58 +00:00
msweet 758a062feb Doco updates from CUPS 1.4svn-r8054.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1013 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-10-13 17:16:02 +00:00
msweet 02797ade68 Add missing file.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1011 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-10-10 21:06:56 +00:00
msweet 61cf44e2b7 Merge CUPS 1.4svn-r8052 (tentative 1.4b1)
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1009 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-10-10 21:00:18 +00:00
msweet 076fd0e4fb Add missing files from r8033.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1004 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-10-08 22:53:46 +00:00
msweet 58dc193312 Merge changes from CUPS 1.4svn-r8033.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1003 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-10-08 22:50:16 +00:00
msweet f2245c695c Add missing image.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@995 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-10-02 00:59:36 +00:00
msweet cda47a960f Merge changes from CUPS 1.4svn-r7999.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@993 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-10-02 00:56:58 +00:00
msweet 1f6f3dbcf9 Merge changes from CUPS 1.4svn-r7994.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@989 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-09-29 17:17:42 +00:00
msweet 0af14961a8 Merge changes from 1.4svn-r7979.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@983 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-09-24 21:31:49 +00:00
msweet b19ccc9e27 Merge changes from CUPS 1.4svn-r7961.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@969 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-09-17 19:54:07 +00:00
msweet 49d8745278 Merge changes from CUPS 1.4svn-r7932.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@957 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-09-10 22:30:50 +00:00
msweet c5571a1d68 Import CUPS 1.4svn-r7908.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@943 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-09-04 17:09:47 +00:00
msweet 9a4f8274e9 Merge changes from CUPS 1.4svn-r7874.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@933 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-08-28 22:58:28 +00:00
msweet 5f64df2982 Merge changes from CUPS 1.4svn-r7874.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@924 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-08-27 22:04:19 +00:00
msweet 247efae55f Add missing file.`
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@922 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-08-26 03:55:07 +00:00
msweet 06d4e77b9b Merge changes from CUPS 1.4svn-r7864.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@921 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-08-26 03:49:44 +00:00
msweet 1ff0402e47 Merge changes from CUPS 1.4svn-r7851.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@913 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-08-20 00:21:51 +00:00
msweet 9f5eb9be66 Merge changes from CUPS 1.4svn-r7844.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@909 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-08-14 06:33:44 +00:00
msweet ee571f261a Merge easysw-1.4svn-r7834
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@905 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-08-04 21:07:04 +00:00
msweet 749b1e90a8 Merge changes from CUPS 1.4svn-r7817.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@901 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-07-30 23:42:12 +00:00
msweet 005dd1eb9e Merge changes from CUPS 1.4svn-r7791.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@886 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-07-24 01:02:46 +00:00
msweet 5d6412a9f1 Merge changes from CUPS 1.4svn-r7770.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@872 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-07-18 21:45:31 +00:00
msweet e78998dfeb Add missing files.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@870 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-07-18 18:56:19 +00:00
msweet 66ab9486ef Merge CUPS 1.4svn-r7762.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@868 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-07-18 18:47:53 +00:00
msweet 1f0275e3cc Merge changes from CUPS 1.4svn-r7715.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@859 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-07-15 01:21:40 +00:00
msweet 4509bb4933 Merge changes from CUPS 1.4svn-r7715.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@834 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-07-03 05:38:29 +00:00
msweet 75bd9771f6 Merge changes from CUPS 1.4svn-r7696.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@818 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-06-27 20:26:20 +00:00
msweet dd1abb6b5f Merge changes from CUPS 1.4svn-r7670.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@810 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-06-18 16:44:53 +00:00
msweet c934a06cde Merge changes from CUPS 1.4svn-r7626.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@798 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-06-09 15:59:44 +00:00
msweet 79e1d494ec Merge changes from CUPS 1.4svn-r7617.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@793 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-05-28 23:38:36 +00:00
msweet 8922323b9f Merge changes from CUPS 1.4svn-r7614.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@789 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-05-23 22:28:53 +00:00
msweet bdd6c45b5e Merge changes from CUPS 1.4svn-r7607.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@784 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-05-21 01:15:17 +00:00
msweet 20fbc90347 Merge changes from CUPS 1.4svn-r7594.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@779 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-05-19 23:16:59 +00:00
msweet 47879b8b63 Merge CUPS 1.4svn-r7588 (dependency updates, compiler warnings, and one web UI buglet)
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@774 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-05-17 00:06:01 +00:00
msweet 5eb9da713f Import CUPS 1.4svn-r7585.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@771 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-05-16 23:29:51 +00:00
msweet 01ce6322ca Merge changes from CUPS 1.4svn-r7582.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@768 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-05-16 03:15:15 +00:00
msweet 3c8c76971a Merge changes from 1.4svn-r7568.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@763 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-05-15 01:47:12 +00:00
msweet c9fc04c6ec Merge changes from CUPS trunk, r7566.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@761 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-05-15 01:42:36 +00:00
msweet 969307f096 Merge fixes from CUPS 1.4svn-r7555.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@755 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-05-12 18:20:10 +00:00
msweet a0f6818ebf Merge changes from CUPS 1.4svn-r7547.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@748 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-05-07 22:24:51 +00:00
msweet d8bcaa3c4c Fix imported files.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@735 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-05-01 21:24:43 +00:00
msweet 7a14d7682b Merge CUPS 1.4svn-r7524.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@733 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-05-01 21:18:10 +00:00
msweet a4f1b3dff2 Remove old files.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@727 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-04-28 17:37:04 +00:00
msweet 634763e80e Merge CUPS 1.4svn-r7493.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@723 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-04-24 00:13:12 +00:00
msweet 3dfe78b336 Merge changes from CUPS 1.4svn-r7485.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@718 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-04-21 23:14:57 +00:00
msweet ae71f5deb4 Import CUPS 1.4svn-r7464.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@713 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-04-17 00:50:22 +00:00
msweet 839a51c83c Merge changes from CUPS 1.4svn-r7394.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@702 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-04-09 22:42:49 +00:00
msweet 50fe720154 <rdar://problem/5792631> dependency cycle in cups-144 / PrintingCore-250 / ApplicationServices
Merge build system changes to use shared support libraries.

Merge build system changes to separate installation of data, program, header,
and library files.


git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@668 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-03-21 23:46:46 +00:00
msweet db0bd74adb Merge changes from CUPS 1.4svn-r7386.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@665 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-03-21 00:59:28 +00:00
msweet 64a69576c8 Merge changes from CUPS 1.4svn-r7370.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@659 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-03-05 00:28:36 +00:00
msweet a603edef72 Merge changes from CUPS 1.4svn-r7366.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@656 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-03-04 01:12:17 +00:00
msweet 568fa3faf1 Import CUPS 1.4svn-r7356.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@647 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-02-28 23:00:58 +00:00
msweet d6943d1d31 Add missing files for test.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@632 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-02-18 17:47:07 +00:00
msweet ac884b6a1c Merge CUPS 1.4svn-r7319.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@624 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-02-16 00:27:39 +00:00
msweet 5a738aeaea Merge changes from CUPS 1.4svn-r7282.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@614 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-01-31 17:01:57 +00:00
msweet d9bca400be Merge changes from CUPS 1.4svn-r7255.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@608 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-01-24 00:18:39 +00:00
msweet 5bd77a735f Merge changes from CUPS 1.4svn-r7242.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@598 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-01-22 22:37:41 +00:00
msweet 91c84a3551 Import CUPS 1.4svn-r7226.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@582 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-01-17 00:06:33 +00:00
msweet 080811b190 Merge changes from CUPS 1.4svn-r7199.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@577 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-01-08 00:39:02 +00:00
msweet 3d052e4330 Import CUPS 1.4svn-r7170.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@567 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-01-04 02:32:38 +00:00
msweet a4924f6c45 Import CUPS 1.4svn-r7153.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@563 a1ca3aef-8c08-0410-bb20-df032aa958be
2007-12-21 23:54:03 +00:00
msweet 0a6827453a Import CUPS trunk (1.4svn) r7116.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@551 a1ca3aef-8c08-0410-bb20-df032aa958be
2007-12-07 19:47:43 +00:00
msweet a41f09e265 Merge changes from 1.4svn-r7067.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@533 a1ca3aef-8c08-0410-bb20-df032aa958be
2007-11-09 19:55:26 +00:00
msweet e94d2f1068 Add missing file to repo.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@527 a1ca3aef-8c08-0410-bb20-df032aa958be
2007-10-24 20:55:54 +00:00
msweet 2fb7629816 Import CUPS 1.4svn-r7041.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@520 a1ca3aef-8c08-0410-bb20-df032aa958be
2007-10-22 20:33:34 +00:00
msweet cc9a7e967e Remove old button files.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@507 a1ca3aef-8c08-0410-bb20-df032aa958be
2007-10-17 20:29:26 +00:00
msweet 65a152d3f1 Remove old file.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@506 a1ca3aef-8c08-0410-bb20-df032aa958be
2007-10-17 20:28:09 +00:00
msweet 183ee7626a Remove old data files.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@505 a1ca3aef-8c08-0410-bb20-df032aa958be
2007-10-17 20:26:59 +00:00
msweet 2e4ff8afcb Import CUPS 1.4svn r7023 into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@502 a1ca3aef-8c08-0410-bb20-df032aa958be
2007-10-17 20:05:25 +00:00
msweet 56ab62c60c What the heck, make it the full 1.3.3 release code - we've already got all of
the 1.3.3 changes anyways...


git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@486 a1ca3aef-8c08-0410-bb20-df032aa958be
2007-09-28 20:17:05 +00:00
msweet 7dfedb921d Import changes from CUPS 1.3svn-r7000.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@485 a1ca3aef-8c08-0410-bb20-df032aa958be
2007-09-28 20:09:54 +00:00
msweet c277e2f802 Import CUPS 1.3.2.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@477 a1ca3aef-8c08-0410-bb20-df032aa958be
2007-09-18 20:56:41 +00:00
msweet db1f069b7f Merge changes from CUPS 1.3.1.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@470 a1ca3aef-8c08-0410-bb20-df032aa958be
2007-09-14 02:27:22 +00:00
msweet 76cd9e37aa Merge changes from r6781 to r6792 (CUPS 1.3.0)
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@405 a1ca3aef-8c08-0410-bb20-df032aa958be
2007-08-13 21:04:11 +00:00
msweet 7ff4fea9bc Merge changes from r6758 to r6781.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@388 a1ca3aef-8c08-0410-bb20-df032aa958be
2007-08-09 16:35:06 +00:00
msweet c24d21342f Merge changes from CUPS trunk, r6758.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@379 a1ca3aef-8c08-0410-bb20-df032aa958be
2007-08-02 00:17:51 +00:00
msweet 355e94dc85 Merge changes from CUPS trunk, r6739.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@361 a1ca3aef-8c08-0410-bb20-df032aa958be
2007-07-26 22:45:43 +00:00
msweet cc0d019f5e Update to CUPS trunk r6695.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@352 a1ca3aef-8c08-0410-bb20-df032aa958be
2007-07-19 23:13:28 +00:00
jlovell bc44d92092 Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@342 a1ca3aef-8c08-0410-bb20-df032aa958be
2007-07-16 23:34:09 +00:00
jlovell 09a101d671 Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@334 a1ca3aef-8c08-0410-bb20-df032aa958be
2007-06-23 05:26:17 +00:00
jlovell 3d8365b8dc Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@326 a1ca3aef-8c08-0410-bb20-df032aa958be
2007-05-24 18:54:11 +00:00
jlovell b94498cfba Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@321 a1ca3aef-8c08-0410-bb20-df032aa958be
2007-05-04 21:17:48 +00:00
jlovell 323c5de1e8 Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@308 a1ca3aef-8c08-0410-bb20-df032aa958be
2007-04-05 18:24:21 +00:00
jlovell c0e1af835b Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@303 a1ca3aef-8c08-0410-bb20-df032aa958be
2007-04-02 15:56:16 +00:00
jlovell f42414bf8a Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@299 a1ca3aef-8c08-0410-bb20-df032aa958be
2007-03-26 16:28:00 +00:00
jlovell f899b12170 Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@294 a1ca3aef-8c08-0410-bb20-df032aa958be
2007-03-21 22:24:16 +00:00
jlovell 7594b2247b Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@289 a1ca3aef-8c08-0410-bb20-df032aa958be
2007-03-20 18:25:41 +00:00
jlovell f7deaa1a21 Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@279 a1ca3aef-8c08-0410-bb20-df032aa958be
2007-03-14 16:55:44 +00:00
jlovell b86bc4cf57 Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@266 a1ca3aef-8c08-0410-bb20-df032aa958be
2007-02-14 19:18:46 +00:00
jlovell 411affcf6a Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@245 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-11-16 17:01:30 +00:00
jlovell 26d47ec688 Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@238 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-11-07 19:32:27 +00:00
jlovell 2abf387cae Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@224 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-10-20 18:36:23 +00:00
jlovell 07725fee41 Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@216 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-09-22 05:53:50 +00:00
jlovell d09495fadd Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@211 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-08-30 16:09:13 +00:00
jlovell 8ca02f3c05 Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@194 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-07-20 22:59:35 +00:00
jlovell f7faf1f5c3 Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@185 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-06-23 01:40:35 +00:00
jlovell c07d5b2daf Remove svn:keywords since they cause svn_load_dirs.pl to complain about every file.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@183 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-06-23 00:14:22 +00:00
jlovell ed48691112 Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@181 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-06-22 20:01:18 +00:00
jlovell 9e22304f01 The easysw/current branch should have the same properties as trunk...
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@179 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-06-21 18:38:41 +00:00
jlovell 7a6a01ddca More svn:properties changes.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@177 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-06-21 00:20:03 +00:00
jlovell 3608048605 Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@161 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-05-22 23:39:03 +00:00
jlovell f301802fc2 Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@158 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-05-22 21:33:05 +00:00
jlovell a9252913e7 Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@150 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-05-08 22:42:35 +00:00
jlovell a74454a757 Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@145 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-05-05 19:18:41 +00:00
jlovell 89d46774ee Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@136 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-04-24 18:03:36 +00:00
jlovell e53920b922 Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@125 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-04-07 21:00:45 +00:00
jlovell d6ae789d92 Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@113 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-04-04 20:09:25 +00:00
jlovell 80ca45929e Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@103 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-03-27 23:11:24 +00:00
jlovell e1d6a77454 Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@92 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-03-20 21:11:41 +00:00
jlovell 480ef0fe29 Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@83 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-03-08 23:30:01 +00:00
jlovell 757d2cad8f Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@80 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-03-08 00:32:35 +00:00
jlovell 4744bd907e Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@75 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-03-04 15:56:42 +00:00
jlovell b423cd4cb9 Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@69 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-02-28 17:54:14 +00:00
jlovell ecdc06282a Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@63 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-02-22 16:59:36 +00:00
jlovell bd7854cb4d Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@60 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-02-20 18:43:55 +00:00
jlovell 4400e98de2 Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@54 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-02-03 00:47:45 +00:00
jlovell e00b005a05 Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@51 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-02-01 23:41:32 +00:00
jlovell ffb6300882 To prepare to load cups into easysw/current, perform 4 renames.
* easysw/current/init/org.cups.cupsd.plist: Renamed from
  easysw/current/init/cupsd-launchd.plist.
* easysw/current/init/PrintingServices: Renamed from
  easysw/current/init/cups.osx.
* easysw/current/init/StartupParameters.plist: Renamed from
  easysw/current/init/cups.plist.
* easysw/current/init/Localizable.strings: Renamed from
  easysw/current/init/cups.strings.


git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@50 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-02-01 23:41:17 +00:00
jlovell a4d045870e Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@39 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-01-29 16:52:03 +00:00
jlovell 09ec001812 Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@35 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-01-27 21:43:41 +00:00
jlovell 923edb689d Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@29 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-01-27 00:19:36 +00:00
jlovell fa73b22906 Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@13 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-01-26 21:39:43 +00:00
jlovell 4a09f02d10 To prepare to load cups into easysw/current, perform 4 renames.
* easysw/current/init/cups.osx: Renamed from easysw/current/cups.osx.
* easysw/current/init/cups.plist: Renamed from
  easysw/current/cups.plist.
* easysw/current/init/cups.sh.in: Renamed from
  easysw/current/cups.sh.in.
* easysw/current/init/cups.strings: Renamed from
  easysw/current/cups.strings.


git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@12 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-01-26 21:39:24 +00:00
jlovell ef416fc25c Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@2 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-01-13 01:51:53 +00:00
jlovell 9ec11526e1 Create directories to load project into.
* easysw: New directory.
  * easysw/current: New directory.


git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-01-13 01:51:40 +00:00
909 arquivos alterados com 104526 adições e 13695 exclusões
+9
Ver Arquivo
@@ -3,6 +3,15 @@ CHANGES-1.5.txt
CHANGES IN CUPS V1.5.4
- Documentation updates (STR #4112, STR #4130, STR #4134)
- Fixes for libusb-based USB backend (STR #4128)
- The lpq command did not show the owner or title of jobs unless passed
a username on the command-line (STR #4135)
- Localized empty strings contained the message catalog metadata
(STR #4119)
- Fixed a crash in the libusb-based USB backend (STR #4099)
- The cups-lpd mini-daemon no longer handled jobs with multiple copies
(STR #4118)
- Multiple libusb backend fixes (STR #4098, STR #4100)
- The IPP backend no longer tries to get the job status for printers
that do not implement the required operation (STR #4083)
+244
Ver Arquivo
@@ -0,0 +1,244 @@
CHANGES-1.6.txt
---------------
CHANGES IN CUPS V1.6.4
- Removed some duplicate size definitions for some ISO sizes that were
causing problems (<rdar://problem/14722721>)
- The IPP backend did not add the "last-document" attribute
(<rdar://problem/114660379>)
- Added a SyncOnClose directive to cups-files.conf to force cupsd to
call fsync before closing any configuration/state files it writes
(<rdar://problem/14523043>)
- Added USB quirk rule for Lexmark E238 (<rdar://problem/14493054>)
- Closed server connections were still not always detected
(<rdar://problem/14484313>)
- The libusb-based USB backend now loads its list of quirks from files
in /usr/share/cups/usb instead of using a hardcoded table
(<rdar://problem/14442769>)
- The scheduler did not properly register ICC color profiles with
colord (<rdar://problem/14455625>)
CHANGES IN CUPS V1.6.3
- The configure script now prefers Clang over GCC.
- Fixed a compile problem on AIX (STR #4307)
- The default IPP version did not always get set before creating a new
IPP request message (<rdar://problem/14401718>)
- The lp, lpq, lpr, and lpstat now display an error message advising the
use of the /version=1.1 ServerName option (<rdar://problem/14290628>)
- Added documentation about the /version=1.1 option to ServerName in
client.conf (<rdar://problem/14216262>)
- httpStatus(HTTP_ERROR) did not return a useful error message
(<rdar://problem/14217326>)
- The lp, lpq, lpr, and lpstat commands incorrectly ignored the default
printer set in the lpoptions file (<rdar://problem/14216472>)
- Fixed a URI encoding issue for hostnames containing the ` (backquote)
character (<rdar://problem/14243133>)
- Added support for RFC 6874's IPv6 link local address format in URIs
(<rdar://problem/13979453>)
- The USB backend could crash on libusb-based systems if USB was
disabled in the BIOS (<rdar://problem/13875729>)
- Fixed a rounding error in the PWG media size mapping code
(<rdar://problem/13493241>)
- Fixed several ipptool test files that used old STATUS names.
- Kerberos credentials could get truncated when printing to a shared
printer.
- Printing using "ipps" URIs was not encrypted.
- Insecure ICC profiles prevented installation of user profiles for a
printer on OS X.
- Added more USB quirks for the libusb-based backend (STR #4311,
<rdar://problem/13736470>)
- The Russian web interface templates were broken (STR #4310)
- The scheduler no longer tries to do Kerberos authentication over the
loopback interface.
- The IPP backend could fail to pause a job for authentication
(STR #4298)
- Fixed a regression on the handling of auth keys on OS X if the
cups-files.conf was not present or did not contain a SystemAuthKey
value.
- The scheduler incorrectly did a reverse lookup of the server address
when HostNameLookups was turned off (STR #4302)
- The scheduler incorrectly computed the final content type value when
null filters were present.
CHANGES IN CUPS V1.6.2
- Documentation fixes (STR #4229, STR #4239, STR #4234, STR #4248,
STR #4259)
- Security: All file, directory, user, and group settings are now stored
in a separate cups-files.conf configuration file that cannot be set
through the CUPS web interface or APIs (STR #4223)
- Added a Czech localization (STR #4201)
- Added a French localization (STR #4247)
- Added a Russian localization (STR #4228, STR #4285)
- Updated the Catalan localization (STR #4202)
- Local certificate authentication did not guard against an empty
certification file (STR #4293)
- The scheduler did not reject device URIs with spaces.
- Added USB quirk rule for Epson Stylus Photo 750 (STR #4286)
- The IPP backend could crash if the printer disconnects early
(STR #4284)
- cupsGetPPD did not work with statically-configured CUPS shared
queues (STR #4178)
- The scheduler did not support long MIME media types (STR #4270)
- The cupsfilter command did not set the CHARSET environment variable
for the text filters (STR #4273)
- The lp command did not show errors for unknown "--foo" (STR #4261)
- Bad IPP responses could crash ipptool (STR #4262)
- Updated USB quirk rules for Canon and Xerox printers (STR #4217,
STR #4263)
- Added USB blacklisting for printers that require a custom backend
(STR #4218)
- The PPD compiler did not correctly JCL options (STR #4115, STR #4203)
- The ipptool program now supports DEFINE-MATCH and DEFINE-NO-MATCH
predicates for STATUS directives.
- Fixed a problem with local Kerberos authentication (STR #4140)
- Coverity scan: fixed some minor issues (STR #4242)
- The scheduler did not remove color profiles after deleting a printer
(STR #4232, STR #4276)
- The CUPS library did not always detect a timed out connection to the
server which could cause temporary loss of printing from applications
(STR #4187)
- The ipptool program now supports variable substitution in OPERATION
and DELAY directives (STR #4175)
- The IPP backend now stops queues when the server configuration
prevents successful job submission (STR #4125)
- The XML output of ipptool contained empty dictionaries (STR #4136)
- The scheduler did not delete job control backup files (STR #4244)
- cupsGetPPD3 could return a local PPD instead of the correct remote
PPD.
- The scheduler incorrectly advertised auth-info-required for local
queues needing local authentication (STR #4205)
- CUPS 1.6 clients using the ServerName directive in client.conf did not
work with CUPS 1.3.x or older servers (STR #4231, STR #4291)
- The SNMP backend now tries to work around broken printers that use a
newline to separate key/value pairs.
- The IPP backend did not send a cancel request to printers when a job
was canceled and the printer did not support Create-Job.
- Fixed EPM packaging files (STR #4199)
- OpenBSD build fix (STR #4195, STR #4196, STR #4197)
- The scheduler could crash when using Avahi (STR #4183, STR #4192,
STR #4200, STR #4213)
- The IPP backend could get stuck in an endless loop on certain network
errors (STR #4194)
- 32-bit builds failed on Debian (STR #4133)
- The scheduler no longer accepts or sends job description attributes.
- The IPP backend now works around some conformance issues for broken
printers (STR #4190)
- cupsBackendReport() now filters out all control characters from the
reported 1284 device IDs (STR #4124)
- The scheduler no longer allows job-name values that are not valid
network Unicode strings (STR #4072)
- The web interface did not preserve the order of classes, jobs, or
printers (STR #4170)
- The network backends now support disabling of SNMP supply level
queries via the "snmp" URI option (STR #4106)
- The IPP backend did not specify the compression used (STR #4181)
- ipptool did not support octetString values.
- The scheduler did not recognize dnssd: or ipps: URIs as Bonjour shared
queues (STR #4158)
- Applications could not get the PPD file for statically-configured
Bonjour-shared print queues (STR #4159)
- The cupsd.conf file included obsolete browsing directives (STR #4157)
- Fixed a USB backend compatibility issue on systems using libusb
(STR #4155, STR #4191)
- Some Bonjour features were not available on systems with Avahi
(STR #4156)
- CUPS now includes the port number in the Host: header for HTTP
requests.
- Fixed REPEAT-MATCH for STATUS and EXPECT - was incorrectly erroring
out.
CHANGES IN CUPS V1.6.1
- Documentation fix (STR #4149)
- RPM packaging fixes (STR #4129, #4145)
- The Japanese and English web interface headers were swapped
(STR #4148)
CHANGES IN CUPS V1.6.0
- Document changes (STR #4131)
- Added new Catalan (STR #4107) and Spanish (STR #4137) localizations.
CHANGES IN CUPS V1.6rc1
- Added a new Japanese localization (STR #4122)
- The SNMP backend no longer exits if it is unable to obtain an IPv6
socket (STR #4109)
- The LPD backend incorrectly used "localhost" in the control file
instead of the current hostname.
CHANGES IN CUPS V1.6b1
- Documentation updates (STR #3927, STR #3980, STR #4010, STR #4068)
- The scheduler now consolidates all PPD updates from filters at the
end of the job (STR #4075)
- CUPS now supports color management using colord (STR #3808)
- CUPS now supports Bonjour using Avahi (STR #3066)
- The PreserveJobFiles and PreserveJobHistory directives now support
specification of a time interval (STR #3143)
- PPD files can now be archived in (gzip'd) tar files to further reduce
the disk space used by PPD files (STR #3772)
- The network backends now deal with printers that report their levels
in percent but do not specify a maximum capacity of 100 (STR #3551)
- The network backends now report full/almost-full waste bins in
printers along with end-of-life for cleaning pads (STR #4017)
- Added a configure option to set the permissions of the installed
cupsd (STR #3459)
- Added a new WITH-ALL-VALUES directive to ipptool EXPECT predicates
(STR #3949)
- CUPS now supports a User directive in client.conf and the CUPS_USER
environment variable for overriding the default username (STR #3114)
- Now set the PJL USERNAME variable as needed (STR #3100)
- Added support for usernames and passwords longer than 32 characters
(STR #2856)
- Added a new MaxHoldTime directive to automatically cancel jobs that
have been held indefinitely after a specific number of seconds
(STR #2291)
- The LPD backend now uses the originating host name when it is not the
local system (STR #2053)
- CUPS now prefers the suffix "dpcm" when reporting resolution in dots-
per-centimeter (STR #4006)
- The configure script and build system no longer support building of
separate 32-bit and 64-bit libraries.
- The "brightness", "columns", "fitplot", "gamma", "hue",
"natural-scaling", "penwidth", "position", "ppi", "saturation", and
"scaling" options are not longer supported (STR #4010)
- The "page-bottom", "page-left", "page-right", "page-top",
"prettyprint", and "wrap" options have been deprecated (STR #4010)
- The scheduler now reports the standard "number-of-documents" attribute
instead of the CUPS-specific "document-count" attribute in
job objects.
- Added new destination connection and enumeration functions (STR #3924)
- Added new option, localization, and job submission functions that do
not depend on PPD files (STR #3925)
- Added a new MaxJobTime directive for cupsd that specifies the maximum
amount of time allowed for a job to complete before it is canceled.
- The default password callback now supports passwords up to 127
characters.
- The scheduler now supports a DefaultAuthType of "auto" to
automatically choose between Basic (username/password) and Negotiate
(Kerberos) authentication.
- cupsSideChannelSNMPGet/Walk now support OIDs and values up to 64k in
length.
- CUPS no longer supports automatic remote printers or implicit classes
via the CUPS, LDAP, or SLP protocols (STR #3922, STR #3923)
- The PPD APIs are now deprecated and will be removed in a future
version of CUPS (STR #3927)
- The default IPP version for requests is now 2.0 (STR #3929)
- The IPP APIs no longer expose the ipp_t or ipp_attribute_t structures
and instead provide accessor functions (STR #3928)
- The scheduler will no longer run programs with group write permission.
- The PHP module has been removed (STR #3932)
- The bannertops, commandtoescpx, commandtopclx, imagetops,
imagetoraster, pdftops, rastertoescpx, rastertopclx, and texttops
filters have been removed (STR #3930)
- The serial and parallel backends have been removed (STR 3935)
+35 -1
Ver Arquivo
@@ -1,9 +1,43 @@
CHANGES-IPPTOOL.txt - 2012-02-28
CHANGES-IPPTOOL.txt - 2013-07-15
--------------------------------
This file provides a list of changes to the ipptool binary distribution posted
on cups.org.
2013-07-15
- New ippfind tool now included with ipptool.
- Added support for automatically extending the timeout when all of the
request data has not yet been written (all platforms but Windows
which does not support it...)
- Fixed several ipptool test files that used old STATUS names.
2013-04-18
- Fixed some HTTP issues with authentication and compression.
- The IPP/1.1 test file did not allow for sufficient retries when
printing.
- The IPP/1.1 test file did not allow for empty printer-name values.
- The IPP Everywhere test file contained numerous errors.
- The color.jpg test file used a progressive mode instead of the
baseline JPEG mode.
- The IPP/1.1 test file referenced "color.jpeg" instead of "color.jpg".
2013-01-31
- Added support for DEFINE-MATCH and DEFINE-NO-MATCH as STATUS
predicates.
- Added support for WITH-VALUE and resolution values.
- Added support for SKIP-IF-MISSING (skip test if file is missing)
- Added support for octetString values.
- Added support for document compression in Print-Job and Send-Document
requests.
- Fixed REPEAT-MATCH for STATUS and EXPECT - was incorrectly erroring
out.
- Fixed a bug where bad IPP responses would cause ipptool to crash.
2012-02-28
+98 -66
Ver Arquivo
@@ -1,69 +1,101 @@
CHANGES.txt - 1.6b1 - 2012-05-24
CHANGES.txt - 1.7.0 - 2013-10-18
--------------------------------
CHANGES IN CUPS V1.6b1
CHANGES IN CUPS V1.7.0
- Documentation updates (STR #3927, STR #3980, STR #4010, STR #4068)
- The scheduler now consolidates all PPD updates from filters at the
end of the job (STR #4075)
- CUPS now supports color management using colord (STR #3808)
- CUPS now supports Bonjour using Avahi (STR #3066)
- The PreserveJobFiles and PreserveJobHistory directives now support
specification of a time interval (STR #3143)
- PPD files can now be archived in (gzip'd) tar files to further reduce
the disk space used by PPD files (STR #3772)
- The network backends now deal with printers that report their levels
in percent but do not specify a maximum capacity of 100 (STR #3551)
- The network backends now report full/almost-full waste bins in
printers along with end-of-life for cleaning pads (STR #4017)
- Added a configure option to set the permissions of the installed
cupsd (STR #3459)
- Added a new WITH-ALL-VALUES directive to ipptool EXPECT predicates
(STR #3949)
- CUPS now supports a User directive in client.conf and the CUPS_USER
environment variable for overriding the default username (STR #3114)
- Now set the PJL USERNAME variable as needed (STR #3100)
- Added support for usernames and passwords longer than 32 characters
(STR #2856)
- Added a new MaxHoldTime directive to automatically cancel jobs that
have been held indefinitely after a specific number of seconds
(STR #2291)
- The LPD backend now uses the originating host name when it is not the
local system (STR #2053)
- CUPS now prefers the suffix "dpcm" when reporting resolution in dots-
per-centimeter (STR #4006)
- The configure script and build system no longer support building of
separate 32-bit and 64-bit libraries.
- The "brightness", "columns", "fitplot", "gamma", "hue",
"natural-scaling", "penwidth", "position", "ppi", "saturation", and
"scaling" options are not longer supported (STR #4010)
- The "page-bottom", "page-left", "page-right", "page-top",
"prettyprint", and "wrap" options have been deprecated (STR #4010)
- The scheduler now reports the standard "number-of-documents" attribute
instead of the CUPS-specific "document-count" attribute in
job objects.
- Added new destination connection and enumeration functions (STR #3924)
- Added new option, localization, and job submission functions that do
not depend on PPD files (STR #3925)
- Added a new MaxJobTime directive for cupsd that specifies the maximum
amount of time allowed for a job to complete before it is canceled.
- The default password callback now supports passwords up to 127
characters.
- The scheduler now supports a DefaultAuthType of "auto" to
automatically choose between Basic (username/password) and Negotiate
(Kerberos) authentication.
- cupsSideChannelSNMPGet/Walk now support OIDs and values up to 64k in
length.
- CUPS no longer supports automatic remote printers or implicit classes
via the CUPS, LDAP, or SLP protocols (STR #3922, STR #3923)
- The PPD APIs are now deprecated and will be removed in a future
version of CUPS (STR #3927)
- The default IPP version for requests is now 2.0 (STR #3929)
- The IPP APIs no longer expose the ipp_t or ipp_attribute_t structures
and instead provide accessor functions (STR #3928)
- The scheduler will no longer run programs with group write permission.
- The PHP module has been removed (STR #3932)
- The bannertops, commandtoescpx, commandtopclx, imagetops,
imagetoraster, pdftops, rastertoescpx, rastertopclx, and texttops
filters have been removed (STR #3930)
- The serial and parallel backends have been removed (STR 3935)
- Updated Japanese localization.
- The lpadmin command did not send the PPD name from the "-m" option
(<rdar://problem/15264697>)
- Network backends now use the prtMarkerSuppliesClass property to
determine the direction of supply level values
(<rdar://problem/14302628>)
- The scheduler did not remove backup PPD files when a printer was
deleted (<rdar://problem/15065555>)
- The scheduler incorrectly responded to HEAD requests when the web
interface was disabled (<rdar://problem/15090332>)
- The scheduler did not respond using the hostname specified by the
client (<rdar://problem/14583574>)
- Fax queues did not work when shared via Bonjour
(<rdar://problem/14498310>)
- Error messages from the scheduler were not localized using the
language specified in the client's IPP request
(<rdar://problem/14128011>)
- Added an Italian localization (<rdar://problem/14481578>)
- Fixed a couple memory leaks in ippfind that were reported by Clang.
- Fixed a compile issue on 64-bit Linux with Clang - need to use the
-pie option instead of -Wl,-pie now (<rdar://problem/14480938>)
- The ippfind utility reported the wrong port numbers when compiled
against Avahi (<rdar://problem/14508324>)
- httpGetFd, httpGetFile, httpPutFd, and httpPutFile did not
automatically reconnect if the server closed the connecion after the
previous response.
- Fixed a compile error in libcups (<rdar://problem/14467141>)
- The scheduler incorrectly did not pass a FINAL_CONTENT_TYPE
environment variable to the filters or backend
(<rdar://problem/14355011>)
- The cups-exec helper program could fail randomly on OS X due to
sandbox violations when closing excess file descriptors
(<rdar://problem/14421943>)
- The scheduler incorrectly did not use the kqueue interface on OS X.
CHANGES IN CUPS V1.7rc1
- Printer xxx-default values were not reported by Get-Printer-Attributes
or lpoptions (<rdar://problem/14401795>)
- Fixed deprecation warnings for many functions on OS X so they are tied
to the deployment version when building (<rdar://problem/14210079>)
- Fixed a build issue on ARM-based Linux systems - unable to validate
va_list arguments.
- Added a new ippfind tool for finding IPP printers and other Bonjour
services (<rdar://problem/13876199>)
- Fixed some issues with conversion of PWG media size names to
hundredths of millimeters (<rdar://problem/14065748>)
- The IPP backend could crash on OS X when printing to a Kerberized
printer (<rdar://problem/14040186>)
- The ipptool program now automatically extends timeouts when the
output buffer is filled (<rdar://problem/14016099>)
- The ipptool program now supports the --help and --version options.
- The ipptool program did not continue past include file errors by
default (<rdar://problem/13875803>)
- The ipptool program now supports FILE-ID and TEST-ID directives and
includes their values in its XML output (<rdar://problem/13876038>)
- The ipptool program now supports WITH-HOSTNAME, WITH-RESOURCE, and
WITH-SCHEME expect predicates to compare the corresponding URI
components (<rdar://problem/13876091>)
CHANGES IN CUPS V1.7b1
- The configure script now supports a --with-rundir option to change
the transient run-time state directory from the default to other
locations like /run/cups (STR #4306)
- The scheduler now supports PPD lookups for classes (STR #4296)
- The cupsfilter program did not set the FINAL_CONTENT_TYPE
environment variable for filters.
- Added a new "-x" option to the cancel command (STR #4103)
- Made the PWG media handling APIs public (STR #4267)
- Implemented ready media support for the cupsGetDestMediaXxx APIs
(STR #4289)
- Added new cupsFindDestDefault, cupsFindDestReady, and
cupsFindDestSupported APIs (STR #4289)
- Added new cupsGetDestMediaByIndex, cupsGetDestMediaCount, and
cupsGetDestMediaDefault APIs (STR #4289)
- Added new ippGet/SetOctetString APIs for getting and setting an
octetString value (STR #4289)
- Added new ippCreateRequestedArray API for generating a array of
attributes from the requested-attributes attribute.
- The ipptool utility now supports compression, conditional tests based
on the presence of files, and new DEFINE predicates for STATUS.
- Added new IPP APIs for checking values (STR #4167)
- Added new IPP APis for adding and setting formatted strings.
- Added new HTTP APIs to support basic server functionality via libcups.
- The dnssd backend now generates a 1284 device ID as needed (STR #3702)
- CUPS now supports compressing and decompressing streamed data
(STR #4168)
- CUPS now supports higher-level PIN printing, external accounting
systems, and "print here" printing environments (STR #4169)
- IRIX is no longer a supported operating system (STR #4092)
- The PPD compiler now supports JCL options properly (STR #4115)
- The web interface now checks whether the web browser has cookies
enabled and displays a suitable error message (STR #4141)
+7 -4
Ver Arquivo
@@ -1,4 +1,4 @@
CREDITS.txt - 2010-03-13
CREDITS.txt - 2013-07-23
------------------------
Few projects are completed by one person, and CUPS is no exception. We'd
@@ -17,7 +17,7 @@ like to thank the following individuals for their contributions:
Wang Jian - CUPS RPM corrections.
Roderick Johnstone - Beta tester of the millenium.
Till Kamppeter - Bug fixes, beta testing, evangelism.
Iaki Larraaga - Basque localization.
Iñaki Larrañaga - Basque localization.
Kenshi Muto - Japanese localization, patches, and
testing.
Tomohiro Kato - Japanese localization.
@@ -27,16 +27,19 @@ like to thank the following individuals for their contributions:
Mark Lawrence - Microsoft interoperability testing.
Jeff Licquia - Bug fixes, beta testing, evangelism.
Jason McMullan - Original CUPS RPM distributions.
Àngel Mompó - Catalan localization.
Wes Morgan - *BSD fixes.
Daniel Nylander - Swedish localization.
Niklas 'Nille' kerstršm - Swedish localization.
Niklas 'Nille' Åkerström - Swedish localization.
Naruiko Ogasawara - Japanese localization.
Giulio Orsero - Bug fixes and testing.
Michal Osowiecki - Polish localization.
Citra Paska - Indonesian localization.
Kurt Pfeifle - Bug fixes, beta testing, evangelism.
Vincenzo Reale - Italian localization.
Petter Reinholdtsen - HP-UX compiler stuff.
Juan Pablo Gonzlez Riopedre - Spanish localization.
Juan Pablo González Riopedre - Spanish localization.
Giovanni Scafora - Italian localization.
Opher Shachar - Hebrew localization.
Stuart Stevens - HP JetDirect IPP information.
Andrea Suatoni - IRIX desktop integration and testing.
+23 -20
Ver Arquivo
@@ -1,14 +1,20 @@
INSTALL - CUPS v1.6b1 - 2012-05-24
INSTALL - CUPS v1.7.0 - 2013-07-16
----------------------------------
This file describes how to compile and install CUPS from source code. For more
information on CUPS see the file called "README.txt". A complete change log can
be found in "CHANGES.txt".
**** IF YOU HAVE A NON-POSTSCRIPT PRINTER AND ARE NOT ****
**** RUNNING OS X, YOU WILL ALSO NEED TO INSTALL GPL ****
**** GHOSTSCRIPT WITH THE "cups" DRIVER AFTER YOU INSTALL ****
**** CUPS. ****
*******************************************************************************
*******************************************************************************
**** ****
**** USING CUPS REQUIRES ADDITIONAL THIRD-PARTY SUPPORT SOFTWARE AND ****
**** PRINTER DRIVERS. THESE ARE TYPICALLY INCLUDED WITH YOUR OPERATING ****
**** SYSTEM DISTRIBUTION. APPLE DOES NOT ENDORSE OR SUPPORT THIRD-PARTY ****
**** SUPPORT SOFTWARE FOR CUPS. ****
**** ****
*******************************************************************************
*******************************************************************************
BEFORE YOU BEGIN
@@ -23,18 +29,16 @@ BEFORE YOU BEGIN
Compaq, HP, SGI, and Sun. BSD users should use GNU make (gmake) since BSD
make does not support "include".
Besides these tools you'll want the JPEG, PNG, TIFF, and ZLIB libraries for
image support, the CDSA, GNU TLS, or OpenSSL libraries for encryption
support, the OpenLDAP and OpenSLP libraries for directory services support,
and either MIT (1.6.3 or higher) or Heimdal Kerberos for Kerberos support.
CUPS will compile and run without these, however you'll miss out on many of
the features provided by CUPS.
Besides these tools you'll want ZLIB library for compression support, the
CDSA, GNU TLS, or OpenSSL libraries for encryption support, and either MIT
(1.6.3 or higher) or Heimdal Kerberos for Kerberos support. CUPS will
compile and run without these, however you'll miss out on many of the
features provided by CUPS.
Also, please note that CUPS does not include the Ghostscript-based
PostScript filter needed by non-PostScript printers. You *must* download
GPL Ghostscript separately from the CUPS web site if you want to print
PostScript files to non-PostScript printers on operating systems other than
OS X.
Also, please note that CUPS does not include print filters to support PDF
or raster printing. You *must* download GPL Ghostscript and/or the Open
Printing CUPS filters package separately to print on operating systems
other than OS X.
COMPILING THE SUBVERSION REPOSITORY CODE
@@ -143,7 +147,7 @@ INSTALLING THE SOFTWARE
The EPM software is available at:
http://www.epmhome.org/
http://www.msweet.org/
CREATING BINARY DISTRIBUTIONS WITH EPM
@@ -193,10 +197,9 @@ GETTING DEBUG LOGGING FROM CUPS
REPORTING PROBLEMS
If you have problems, READ THE DOCUMENTATION FIRST! If the documentation
does not solve your problems, please post a message on the "cups.general"
forum at:
does not solve your problems, please post a message on the users forum at:
http://www.cups.org/newsgroups.php
http://www.cups.org/
Include your operating system and version, compiler and version, and any
errors or problems you've run into. The "config.log" file and the output
+77 -31
Ver Arquivo
@@ -1,4 +1,4 @@
IPPTOOL.txt - 2012-02-06
IPPTOOL.txt - 2013-07-15
------------------------
See the file CHANGES-IPPTOOL.txt for a list of changes to this software.
@@ -6,14 +6,46 @@ See the file CHANGES-IPPTOOL.txt for a list of changes to this software.
INTRODUCTION
CUPS includes a user program called ipptool that can be used to send
arbitrary IPP requests to a CUPS server or IPP printer. This tool started
life as part of the CUPS automated test suite and has grown to support
complex conformance tests and a simple way to query printer, job, and
subscription attributes.
CUPS includes two user programs for IPP printers. The first is called
ipptool and can be used to send arbitrary IPP requests to a CUPS server or
IPP printer. This tool started life as part of the CUPS automated test
suite and has grown to support complex conformance tests and a simple way
to query printer, job, and subscription attributes.
The second program called ippfind that can be used to find IPP printers
that have registered themselves using Bonjour (DNS-SD, mDNS, and Zeroconf)
and run commands such as ipptool.
BASIC USAGE
READING THE DOCUMENTATION
Full documentation on the ipptool command can be found in the
"man-ipptool.html" and "man-ipptoolfile.html" files; the latter describes
the test file format supported by ipptool.
Full documentation on the ippfind command can be found in the
"man-ippfind.html" file.
IPPFIND BASIC USAGE
The ippfind command can be used to discover IPP printers on your network.
For example, the following command prints the printer URI of registered IPP
printers:
ippfind
To find all color IPP printers, run:
ippfind --txt-color T
And to run the IPP Everywhere conformance test file on every registered IPP
printer, run the following command:
ippfind _ipp._tcp,_print --exec ipptool -t '{}' ipp-everywhere.test \;
IPPTOOL BASIC USAGE
The ipptool command requires a printer URI and one or more "test" files that
describe the operations, attributes to display, and expected status and
@@ -54,19 +86,29 @@ STANDARD TEST FILES
state change notifications
get-completed-jobs.test Shows a list of completed jobs
get-jobs.test Shows a list of pending jobs
get-notifications.test Shows events for an ippget
subscription.
get-printer-attributes.test Shows printer attributes
get-subscriptions.test Shows a list of subscriptions
ipp-1.1.test IPP/1.1 conformance test suite
ipp-2.0.test IPP/2.0 conformance test suite
ipp-2.1.test IPP/2.1 conformance test suite
ipp-2.2.test IPP/2.2 conformance test suite
ipp-everywhere.test IPP Everywhere conformance test
suite
print-job.test Prints a file
print-job-deflate.test Prints a file, compressing with
deflate.
print-job-gzip.test Prints a file, compressing with gzip
validate-job.test Validates attributes for a job
submission.
CONFORMANCE TESTS
We provide basic IPP conformance tests for IPP/1.1, IPP/2.0, IPP/2.1, and
IPP/2.2. For a given printer URI, the following commands perform tests at
each level:
We provide basic IPP conformance tests for IPP/1.1, IPP/2.0, IPP/2.1,
IPP/2.2, and IPP Everywhere. For a given printer URI, the following
commands perform tests at each level:
ipptool -tf filename [options] -I printer-uri ipp-1.1.test
ipptool -tf filename [options] -I -V 2.0 printer-uri ipp-2.0.test
@@ -104,6 +146,7 @@ CONFORMANCE TESTS
-S Test IPP over HTTPS (default for ipps: URIs)
-T seconds Set a timeout for responses in seconds
-v Be verbose, showing all attributes sent and received
-X Produce XML (Apple plist) output
The printer-uri must be a URI supported by the printer using the "ipp" or
"ipps" scheme, for example:
@@ -112,7 +155,7 @@ CONFORMANCE TESTS
ipps://192.168.0.1/ipp/print
Print-by-reference (URL) printing can be tested by defining the document-uri
variable to a URL, for example:
variable as a URL, for example:
ipptool -tf filename -d document-uri=url -I printer-uri ipp-1.1.test
@@ -128,37 +171,40 @@ CONFORMANCE TESTS
printer.
READING THE DOCUMENTATION
IPP EVERYWHERE TESTING
The command usage is described in the ipptest(1) man page, while the file
format is described in the ipptestfile(5) man page. Both are provided in
HTML format with the standalone releases of ipptool.
The IPP Everywhere tests use sample PWG raster files available from:
ftp://ftp.pwg.org/pub/pwg/ipp/examples
Extract the corresponding ZIP archives into the current directory before
running the ipp-everywhere.test file. The test file will attempt to print
each PWG Raster file that is supported by the printer being tested - up to
372 pages including the 90 pages produced by the regular IPP test suite.
GETTING SUPPORT AND OTHER RESOURCES
If you have problems, READ THE DOCUMENTATION FIRST! We also provide many
If you have problems, READ THE DOCUMENTATION FIRST! We also provide
discussion forums which are available at:
http://www.cups.org/newsgroups.php
See the CUPS web site at "http://www.cups.org/" for other resources.
http://www.cups.org/
REPORTING BUGS
If you believe you have discovered a bug in ipptool, please fill out the
bug form at:
If you believe you have discovered a bug in ippfind or ipptool, please fill
out the bug form at:
http://www.cups.org/str.php
Be sure to identify the version of CUPS and ipptool (if you downloaded the
standalone version) you are using, the printer (if any) and firmware
version, and include any files that apply.
Be sure to identify the version of CUPS and ippfind/ipptool (if you
downloaded the standalone version) you are using, the printer (if any) and
firmware version, and include any files that apply.
If you downloaded the standalone version of ipptool, please also re-run the
test with debug logging enabled. Run the following commands on Windows to
enable debug logging:
If you downloaded the standalone version of ippfind/ipptool, please also
re-run the command with debug logging enabled. Run the following commands
on Windows to enable debug logging:
setdebug.bat
@@ -167,14 +213,14 @@ REPORTING BUGS
CUPS_DEBUG_LOG=ipptool.log; export CUPS_DEBUG_LOG
CUPS_DEBUG_LEVEL=6; export CUPS_DEBUG_LEVEL
Then when you run the ipptool command a new "ipptool.log" file will be
created with detailed information - attach this file to the bug you file
as well.
Then when you run the ippfind or ipptool command a new "ipptool.log" file
will be created with detailed information - attach this file to the bug you
file as well.
LEGAL STUFF
CUPS is Copyright 2007-2012 by Apple Inc. CUPS and the CUPS logo are
CUPS is Copyright 2007-2013 by Apple Inc. CUPS and the CUPS logo are
trademarks of Apple Inc.
The MD5 Digest code is Copyright 1999 Aladdin Enterprises.
+4 -1
Ver Arquivo
@@ -3,7 +3,7 @@
#
# Common makefile definitions for CUPS.
#
# Copyright 2007-2012 by Apple Inc.
# Copyright 2007-2013 by Apple Inc.
# Copyright 1997-2007 by Easy Software Products, all rights reserved.
#
# These coded instructions, statements, and computer programs are the
@@ -138,6 +138,8 @@ DNSSD_BACKEND = @DNSSD_BACKEND@
DSOFLAGS = -L../cups @DSOFLAGS@
DSOLIBS = @DSOLIBS@ $(COMMONLIBS)
DNSSDLIBS = @DNSSDLIBS@
IPPFIND_BIN = @IPPFIND_BIN@
IPPFIND_MAN = @IPPFIND_MAN@
LAUNCHDLIBS = @LAUNCHDLIBS@
LDFLAGS = -L../cgi-bin -L../cups -L../filter -L../ppdc \
-L../scheduler @LDARCHFLAGS@ \
@@ -216,6 +218,7 @@ SERVERBIN = $(BUILDROOT)@CUPS_SERVERBIN@
SERVERROOT = $(BUILDROOT)@CUPS_SERVERROOT@
SMFMANIFESTDIR = @SMFMANIFESTDIR@
STATEDIR = $(BUILDROOT)@CUPS_STATEDIR@
USBQUIRKS = @USBQUIRKS@
XINETD = @XINETD@
MAN1EXT = @MAN1EXT@
+4 -5
Ver Arquivo
@@ -3,7 +3,7 @@
#
# Top-level Makefile for CUPS.
#
# Copyright 2007-2012 by Apple Inc.
# Copyright 2007-2013 by Apple Inc.
# Copyright 1997-2007 by Easy Software Products, all rights reserved.
#
# These coded instructions, statements, and computer programs are the
@@ -242,7 +242,7 @@ debugcheck: all unittests
#
# Create HTML documentation...
# Create HTML documentation using Mini-XML's mxmldoc (http://www.msweet.org/)...
#
apihelp:
@@ -259,7 +259,7 @@ framedhelp:
#
# Create an Xcode docset...
# Create an Xcode docset using Mini-XML's mxmldoc (http://www.msweet.org/)...
#
docset: apihelp
@@ -295,7 +295,7 @@ sloc:
#
# Make software distributions using EPM (http://www.epmhome.org/)...
# Make software distributions using EPM (http://www.msweet.org/)...
#
EPMFLAGS = -v --output-dir dist $(EPMARCH)
@@ -316,7 +316,6 @@ dist: all
case `uname` in \
*BSD*) $(MAKE) $(MFLAGS) bsd;; \
Darwin*) $(MAKE) $(MFLAGS) osx;; \
IRIX*) $(MAKE) $(MFLAGS) tardist;; \
Linux*) test ! -x /usr/bin/rpm || $(MAKE) $(MFLAGS) rpm;; \
SunOS*) $(MAKE) $(MFLAGS) pkg;; \
esac
+5 -6
Ver Arquivo
@@ -1,14 +1,13 @@
README - CUPS v1.6b1 - 2012-05-24
----------------------------------
README - CUPS v1.7.0 - 2013-07-16
---------------------------------
Looking for compile instructions? Read the file "INSTALL.txt"
instead...
Looking for compile instructions? Read the file "INSTALL.txt" instead...
INTRODUCTION
CUPS is a standards-based, open source printing system developed by Apple
Inc. for Mac OS® X and other UNIX®-like operating systems. CUPS uses the
Inc. for OS® X and other UNIX®-like operating systems. CUPS uses the
Internet Printing Protocol ("IPP") and provides System V and Berkeley
command-line interfaces, a web interface, and a C API to manage printers and
print jobs. It supports printing to both local (parallel, serial, USB) and
@@ -150,7 +149,7 @@ PRINTING FILES
LEGAL STUFF
CUPS is Copyright 2007-2012 by Apple Inc. CUPS and the CUPS logo are
CUPS is Copyright 2007-2013 by Apple Inc. CUPS and the CUPS logo are
trademarks of Apple Inc.
The MD5 Digest code is Copyright 1999 Aladdin Enterprises.
+13 -5
Ver Arquivo
@@ -3,7 +3,7 @@
#
# Backend makefile for CUPS.
#
# Copyright 2007-2012 by Apple Inc.
# Copyright 2007-2013 by Apple Inc.
# Copyright 1997-2007 by Easy Software Products, all rights reserved.
#
# These coded instructions, statements, and computer programs are the
@@ -109,6 +109,11 @@ install: all install-data install-headers install-libs install-exec
#
install-data:
if test "x$(USBQUIRKS)" != x; then \
echo Installing USB quirks in $(USBQUIRKS); \
$(INSTALL_DIR) -m 755 $(USBQUIRKS); \
$(INSTALL_DATA) org.cups.usb-quirks $(USBQUIRKS); \
fi
#
@@ -128,14 +133,15 @@ install-exec: $(INSTALLXPC)
$(RM) $(SERVERBIN)/backend/$$file; \
$(LN) ipp $(SERVERBIN)/backend/$$file; \
done
if test "x$(DNSSD_BACKEND)" != x; then \
if test "x$(DNSSD_BACKEND)" != x -a `uname` = Darwin; then \
$(RM) $(SERVERBIN)/backend/mdns; \
$(LN) $(DNSSD_BACKEND) $(SERVERBIN)/backend/mdns; \
fi
if test "x$(SYMROOT)" != "x"; then \
$(INSTALL_DIR) $(SYMROOT); \
for file in $(TARGETS); do \
for file in $(RBACKENDS) $(UBACKENDS); do \
cp $$file $(SYMROOT); \
dsymutil $(SYMROOT)/$$file; \
done \
fi
@@ -232,8 +238,10 @@ libbackend.a: $(LIBOBJS)
dnssd: dnssd.o ../cups/$(LIBCUPS) libbackend.a
echo Linking $@...
$(CC) $(LDFLAGS) -o dnssd dnssd.o libbackend.a $(LIBS)
$(RM) mdns
$(LN) dnssd mdns
if test `uname` = Darwin; then \
$(RM) mdns; \
$(LN) dnssd mdns; \
fi
#
+50 -6
Ver Arquivo
@@ -1031,6 +1031,7 @@ query_callback(
value[256], /* Value string */
make_and_model[512], /* Manufacturer and model */
model[256], /* Model */
pdl[256], /* PDL */
device_id[2048]; /* 1284 device ID */
@@ -1079,8 +1080,9 @@ query_callback(
device_id[0] = '\0';
make_and_model[0] = '\0';
pdl[0] = '\0';
strcpy(model, "Unknown");
strlcpy(model, "Unknown", sizeof(model));
for (data = rdata, dataend = data + rdlen;
data < dataend;
@@ -1134,9 +1136,9 @@ query_callback(
if (!_cups_strcasecmp(key, "usb_MFG") || !_cups_strcasecmp(key, "usb_MANU") ||
!_cups_strcasecmp(key, "usb_MANUFACTURER"))
strcpy(make_and_model, value);
strlcpy(make_and_model, value, sizeof(make_and_model));
else if (!_cups_strcasecmp(key, "usb_MDL") || !_cups_strcasecmp(key, "usb_MODEL"))
strcpy(model, value);
strlcpy(model, value, sizeof(model));
else if (!_cups_strcasecmp(key, "product") && !strstr(value, "Ghostscript"))
{
if (value[0] == '(')
@@ -1148,18 +1150,20 @@ query_callback(
if ((ptr = value + strlen(value) - 1) > value && *ptr == ')')
*ptr = '\0';
strcpy(model, value + 1);
strlcpy(model, value + 1, sizeof(model));
}
else
strcpy(model, value);
strlcpy(model, value, sizeof(model));
}
else if (!_cups_strcasecmp(key, "ty"))
{
strcpy(model, value);
strlcpy(model, value, sizeof(model));
if ((ptr = strchr(model, ',')) != NULL)
*ptr = '\0';
}
else if (!_cups_strcasecmp(key, "pdl"))
strlcpy(pdl, value, sizeof(pdl));
else if (!_cups_strcasecmp(key, "priority"))
device->priority = atoi(value);
else if ((device->type == CUPS_DEVICE_IPP ||
@@ -1204,6 +1208,46 @@ query_callback(
}
}
if (device_id[0] &&
!strstr(device_id, "CMD:") &&
!strstr(device_id, "COMMAND SET:") &&
(strstr(pdl, "application/pdf") ||
strstr(pdl, "application/postscript") ||
strstr(pdl, "application/vnd.hp-PCL") ||
strstr(pdl, "image/")))
{
value[0] = '\0';
if (strstr(pdl, "application/pdf"))
strlcat(value, ",PDF", sizeof(value));
if (strstr(pdl, "application/postscript"))
strlcat(value, ",PS", sizeof(value));
if (strstr(pdl, "application/vnd.hp-PCL"))
strlcat(value, ",PCL", sizeof(value));
for (ptr = strstr(pdl, "image/"); ptr; ptr = strstr(ptr, "image/"))
{
char *valptr = value + strlen(value);
/* Pointer into value */
if (valptr < (value + sizeof(value) - 1))
*valptr++ = ',';
ptr += 6;
while (isalnum(*ptr & 255) || *ptr == '-' || *ptr == '.')
{
if (isalnum(*ptr & 255) && valptr < (value + sizeof(value) - 1))
*valptr++ = toupper(*ptr++ & 255);
else
break;
}
*valptr = '\0';
}
ptr = device_id + strlen(device_id);
snprintf(ptr, sizeof(device_id) - (ptr - device_id), "CMD:%s;",
value + 1);
}
if (device_id[0])
device->device_id = strdup(device_id);
else
+618 -234
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+24 -7
Ver Arquivo
@@ -126,6 +126,7 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
int port; /* Port number */
char portname[256]; /* Port name (string) */
http_addrlist_t *addrlist; /* List of addresses for printer */
int snmp_enabled = 1; /* Is SNMP enabled? */
int snmp_fd; /* SNMP socket */
int fd; /* Print file */
int status; /* Status of LPD job */
@@ -356,7 +357,8 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
*/
if (!value[0] || !_cups_strcasecmp(value, "on") ||
!_cups_strcasecmp(value, "yes") || !_cups_strcasecmp(value, "true") ||
!_cups_strcasecmp(value, "yes") ||
!_cups_strcasecmp(value, "true") ||
!_cups_strcasecmp(value, "rfc1179"))
reserve = RESERVE_RFC1179;
else if (!_cups_strcasecmp(value, "any"))
@@ -371,7 +373,8 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
*/
manual_copies = !value[0] || !_cups_strcasecmp(value, "on") ||
!_cups_strcasecmp(value, "yes") || !_cups_strcasecmp(value, "true");
!_cups_strcasecmp(value, "yes") ||
!_cups_strcasecmp(value, "true");
}
else if (!_cups_strcasecmp(name, "sanitize_title"))
{
@@ -380,7 +383,18 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
*/
sanitize_title = !value[0] || !_cups_strcasecmp(value, "on") ||
!_cups_strcasecmp(value, "yes") || !_cups_strcasecmp(value, "true");
!_cups_strcasecmp(value, "yes") ||
!_cups_strcasecmp(value, "true");
}
else if (!_cups_strcasecmp(name, "snmp"))
{
/*
* Enable/disable SNMP stuff...
*/
snmp_enabled = !value[0] || !_cups_strcasecmp(value, "on") ||
_cups_strcasecmp(value, "yes") ||
_cups_strcasecmp(value, "true");
}
else if (!_cups_strcasecmp(name, "timeout"))
{
@@ -428,7 +442,10 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
}
}
snmp_fd = _cupsSNMPOpen(addrlist->addr.addr.sa_family);
if (snmp_enabled)
snmp_fd = _cupsSNMPOpen(addrlist->addr.addr.sa_family);
else
snmp_fd = -1;
/*
* Wait for data from the filter...
@@ -690,7 +707,7 @@ lpd_queue(const char *hostname, /* I - Host to connect to */
*/
fprintf(stderr, "DEBUG: Connecting to %s:%d for printer %s\n", hostname,
_httpAddrPort(&(addrlist->addr)), printer);
httpAddrPort(&(addrlist->addr)), printer);
_cupsLangPrintFilter(stderr, "INFO", _("Connecting to printer."));
for (lport = reserve == RESERVE_RFC1179 ? 732 : 1024, addr = addrlist,
@@ -872,7 +889,7 @@ lpd_queue(const char *hostname, /* I - Host to connect to */
fprintf(stderr, "DEBUG: Connected to %s:%d (local port %d)...\n",
httpAddrString(&(addr->addr), addrname, sizeof(addrname)),
_httpAddrPort(&(addr->addr)), lport);
httpAddrPort(&(addr->addr)), lport);
/*
* See if the printer supports SNMP...
@@ -936,7 +953,7 @@ lpd_queue(const char *hostname, /* I - Host to connect to */
return (CUPS_BACKEND_FAILED);
}
if (orighost)
if (orighost && _cups_strcasecmp(orighost, "localhost"))
strlcpy(localhost, orighost, sizeof(localhost));
else
httpGetHostname(NULL, localhost, sizeof(localhost));
+214
Ver Arquivo
@@ -0,0 +1,214 @@
# USB backend 'quirks' file.
#
# This file lists known issues with various vendors or printers. Each
# line contains either a comment (starting with #) or the USB vendor ID,
# product ID (omit for all vendor products), and a list of known issues:
#
# blacklist The printer is not functional with the USB backend.
# no-reattach Do no re-attach usblp kernel module after printing.
# soft-reset Do a soft reset after printing for cleanup.
# unidir Only supported unidirectional I/O
# usb-init Needs vendor USB initialization string.
# vendor-class Uses vendor-specific class or subclass.
# whitelist The printer is functional with the USB backend.
# HP DeskJet 895C
0x03f0 0x0004 unidir
# HP DeskJet 880C
0x03f0 0x0104 unidir
# HP DeskJet 815C
0x03f0 0x0204 unidir
# HP DeskJet 810C/812C
0x03f0 0x0304 unidir
# HP DeskJet 830C
0x03f0 0x0404 unidir
# HP DeskJet 885C
0x03f0 0x0504 unidir
# HP DeskJet 840C
0x03f0 0x0604 unidir
# HP DeskJet 816C
0x03f0 0x0804 unidir
# HP Deskjet 959C
0x03f0 0x1104 unidir
# NEC Picty900 (HP OEM)
0x0409 0xefbe unidir
# NEC Picty760 (HP OEM)
0x0409 0xbef4 unidir
# NEC Picty920 (HP OEM)
0x0409 0xf0be unidir
# NEC Picty800 (HP OEM)
0x0409 0xf1be unidir
# Lexmark International, Inc. (e250d), https://bugs.launchpad.net/bugs/1084164
0x043d 0x00f3 no-reattach
# Kyocera Mita FS 820, by zut <kernel@zut.de>
0x0482 0x0010 unidir
# Canon, Inc. PIXMA iP6000D Printer, https://bugs.launchpad.net/bugs/1160638
0x04a9 0x1095 unidir
# Canon, Inc. PIXMA iP4200 Printer, http://www.cups.org/str.php?L4155
0x04a9 0x10a2 unidir
# Canon, Inc. PIXMA iP4300 Printer, https://bugs.launchpad.net/bugs/1032385
0x04a9 0x10b6 unidir
# Canon, Inc. MP210 https://bugzilla.redhat.com/show_bug.cgi?id=847923#c53
0x04a9 0x1721 unidir
# Canon, Inc. MP500 Printer, https://bugs.launchpad.net/bugs/1032456
0x04a9 0x170c unidir
# Canon, Inc. MP510 Printer, https://bugs.launchpad.net/bugs/1050009
0x04a9 0x1717 unidir
# Canon, Inc. MP550 Printer, http://www.cups.org/str.php?L4155
0x04a9 0x173d unidir
# Canon, Inc. MP560 Printer, http://www.cups.org/str.php?L4155
0x04a9 0x173e unidir
# Canon, Inc. MF4150 Printer, https://bugs.launchpad.net/bugs/1160638
0x04a9 0x26a3 no-reattach
# Brother Industries, Ltd HL-1430 Laser Printer, https://bugs.launchpad.net/bugs/1038695
0x04f9 0x001a no-reattach
# Brother Industries, Ltd HL-1440 Laser Printer, https://bugs.launchpad.net/bugs/1000253
0x04f9 0x000d no-reattach unidir
# Brother Industries, Ltd HL-1450 Laser Printer, https://bugs.launchpad.net/bugs/1000253
0x04f9 0x000e no-reattach unidir
# Oki Data Corp. Okipage 14ex Printer, https://bugs.launchpad.net/bugs/872483
0x06bc 0x000b no-reattach
# Oki Data Corp. B410d, https://bugs.launchpad.net/bugs/872483
0x06bc 0x01c7 no-reattach
# Seiko Epson Corp. Stylus Color 740 / Photo 750, http://bugs.debian.org/697970
0x04b8 0x0001 no-reattach unidir
# Seiko Epson Corp. Stylus Color 670, https://bugs.launchpad.net/bugs/872483
0x04b8 0x0005 no-reattach
# Seiko Epson Receipt Printer M129C
0x04b8 0x0202 vendor-class
# Prolific Technology, Inc. PL2305 Parallel Port (USB -> Parallel adapter), https://bugs.launchpad.net/bugs/987485
0x067b 0x2305 no-reattach soft-reset unidir
# Xerox Phaser 3124 https://bugzilla.redhat.com/show_bug.cgi?id=867392
0x0924 0x3ce9 no-reattach
# Xerox WorkCentre 3210 https://bugs.launchpad.net/bugs/1102470
0x0924 0x4293 no-reattach
# QinHeng Electronics CH340S (USB -> Parallel adapter), https://bugs.launchpad.net/bugs/1000253
0x1a86 0x7584 no-reattach
# All Samsung devices, https://bugs.launchpad.net/bugs/1032456
0x04e8 soft-reset
# All Zebra devices, https://bugs.launchpad.net/bugs/1001028
0x0a5f unidir
# Canon CP-10
0x04a9 0x304a blacklist
# Canon CP-100
0x04a9 0x3063 blacklist
# Canon CP-200
0x04a9 0x307c blacklist
# Canon CP-300
0x04a9 0x307d blacklist
# Canon CP-220
0x04a9 0x30bd blacklist
# Canon CP-330
0x04a9 0x30be blacklist
# Canon SELPHY CP400
0x04a9 0x30f6 blacklist
# Canon SELPHY CP600
0x04a9 0x310b blacklist
# Canon SELPHY CP710
0x04a9 0x3127 blacklist
# Canon SELPHY CP510
0x04a9 0x3128 blacklist
# Canon SELPHY ES1
0x04a9 0x3141 blacklist
# Canon SELPHY CP730
0x04a9 0x3142 blacklist
# Canon SELPHY CP720
0x04a9 0x3143 blacklist
# Canon SELPHY CP750
0x04a9 0x3170 blacklist
# Canon SELPHY CP740
0x04a9 0x3171 blacklist
# Canon SELPHY ES2
0x04a9 0x3185 blacklist
# Canon SELPHY ES20
0x04a9 0x3186 blacklist
# Canon SELPHY CP770
0x04a9 0x31aa blacklist
# Canon SELPHY CP760
0x04a9 0x31ab blacklist
# Canon SELPHY ES30
0x04a9 0x31b0 blacklist
# Canon SELPHY CP780
0x04a9 0x31dd blacklist
# Canon SELPHY ES40
0x04a9 0x31ee blacklist
# Canon SELPHY CP800
0x04a9 0x3214 blacklist
# Canon SELPHY CP900
0x04a9 0x3255 blacklist
# Canon SELPHY CP810
0x04a9 0x3256 blacklist
# Canon SELPHY CP500
0x04a9 0x30f5 blacklist
# Canon SELPHY ES3
0x04a9 0x31af blacklist
# Canon SELPHY CP780
0x04a9 0x31dd blacklist
# Lexmark E238 (<rdar://problem/14493054>)
0x043d 0x00d7 no-reattach
Arquivo executável → Arquivo normal
Ver Arquivo
+66 -36
Ver Arquivo
@@ -3,7 +3,7 @@
*
* SNMP supplies functions for CUPS.
*
* Copyright 2008-2012 by Apple Inc.
* Copyright 2008-2013 by Apple Inc.
*
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
@@ -62,6 +62,7 @@ typedef struct /**** Printer supply data ****/
char name[CUPS_SNMP_MAX_STRING], /* Name of supply */
color[8]; /* Color: "#RRGGBB" or "none" */
int colorant, /* Colorant index */
sclass, /* Supply class */
type, /* Supply type */
max_capacity, /* Maximum capacity */
level; /* Current level value */
@@ -148,6 +149,13 @@ static const int prtMarkerSuppliesMaxCapacity[] =
(sizeof(prtMarkerSuppliesMaxCapacity) /
sizeof(prtMarkerSuppliesMaxCapacity[0]));
/* Offset to supply index */
static const int prtMarkerSuppliesClass[] =
{ CUPS_OID_prtMarkerSuppliesClass, -1 },
/* Class OID */
prtMarkerSuppliesClassOffset =
(sizeof(prtMarkerSuppliesClass) /
sizeof(prtMarkerSuppliesClass[0]));
/* Offset to supply index */
static const int prtMarkerSuppliesType[] =
{ CUPS_OID_prtMarkerSuppliesType, -1 },
/* Type OID */
@@ -163,7 +171,7 @@ static const int prtMarkerSuppliesSupplyUnit[] =
sizeof(prtMarkerSuppliesSupplyUnit[0]));
/* Offset to supply index */
static const backend_state_t const printer_states[] =
static const backend_state_t printer_states[] =
{
/* { CUPS_TC_lowPaper, "media-low-report" }, */
{ CUPS_TC_noPaper | CUPS_TC_inputTrayEmpty, "media-empty-warning" },
@@ -180,7 +188,7 @@ static const backend_state_t const printer_states[] =
{ CUPS_TC_outputFull, "output-area-full-warning" }
};
static const backend_state_t const supply_states[] =
static const backend_state_t supply_states[] =
{
{ CUPS_DEVELOPER_LOW, "developer-low-report" },
{ CUPS_DEVELOPER_EMPTY, "developer-empty-warning" },
@@ -257,6 +265,9 @@ backendSNMPSupplies(
else
percent = 50;
if (supplies[i].sclass == CUPS_TC_receptacleThatIsFilled)
percent = 100 - percent;
if (percent <= 5)
{
switch (supplies[i].type)
@@ -318,9 +329,9 @@ backendSNMPSupplies(
if ((supplies[i].max_capacity > 0 || (quirks & CUPS_SNMP_CAPACITY)) &&
supplies[i].level >= 0)
sprintf(ptr, "%d", percent);
snprintf(ptr, sizeof(value) - (ptr - value), "%d", percent);
else
strcpy(ptr, "-1");
strlcpy(ptr, "-1", sizeof(value) - (ptr - value));
}
fprintf(stderr, "ATTR: marker-levels=%s\n", value);
@@ -458,34 +469,34 @@ backend_init_supplies(
"other",
"unknown",
"toner",
"wasteToner",
"waste-toner",
"ink",
"inkCartridge",
"inkRibbon",
"wasteInk",
"ink-cartridge",
"ink-ribbon",
"waste-ink",
"opc",
"developer",
"fuserOil",
"solidWax",
"ribbonWax",
"wasteWax",
"fuser-oil",
"solid-wax",
"ribbon-wax",
"waste-wax",
"fuser",
"coronaWire",
"fuserOilWick",
"cleanerUnit",
"fuserCleaningPad",
"transferUnit",
"tonerCartridge",
"fuserOiler",
"corona-wire",
"fuser-oil-wick",
"cleaner-unit",
"fuser-cleaning-pad",
"transfer-unit",
"toner-cartridge",
"fuser-oiler",
"water",
"wasteWater",
"glueWaterAdditive",
"wastePaper",
"bindingSupply",
"bandingSupply",
"stitchingWire",
"shrinkWrap",
"paperWrap",
"waste-water",
"glue-water-additive",
"waste-paper",
"binding-supply",
"banding-supply",
"stitching-wire",
"shrink-wrap",
"paper-wrap",
"staples",
"inserts",
"covers"
@@ -561,14 +572,14 @@ backend_init_supplies(
/*
* Yes, read the cache file:
*
* 2 num_supplies charset
* 3 num_supplies charset
* device description
* supply structures...
*/
if (cupsFileGets(cachefile, value, sizeof(value)))
{
if (sscanf(value, "2 %d%d", &num_supplies, &charset) == 2 &&
if (sscanf(value, "3 %d%d", &num_supplies, &charset) == 2 &&
num_supplies <= CUPS_MAX_SUPPLIES &&
cupsFileGets(cachefile, value, sizeof(value)))
{
@@ -664,7 +675,7 @@ backend_init_supplies(
if ((cachefile = cupsFileOpen(cachefilename, "w")) != NULL)
{
cupsFilePrintf(cachefile, "2 %d %d\n", num_supplies, charset);
cupsFilePrintf(cachefile, "3 %d %d\n", num_supplies, charset);
cupsFilePrintf(cachefile, "%s\n", description);
if (num_supplies > 0)
@@ -682,7 +693,7 @@ backend_init_supplies(
*/
for (i = 0; i < num_supplies; i ++)
strcpy(supplies[i].color, "none");
strlcpy(supplies[i].color, "none", sizeof(supplies[i].color));
_cupsSNMPWalk(snmp_fd, &current_addr, CUPS_SNMP_VERSION_1,
_cupsSNMPDefaultCommunity(), prtMarkerColorantValue,
@@ -697,7 +708,7 @@ backend_init_supplies(
if (i)
*ptr++ = ',';
strcpy(ptr, supplies[i].color);
strlcpy(ptr, supplies[i].color, sizeof(value) - (ptr - value));
}
fprintf(stderr, "ATTR: marker-colors=%s\n", value);
@@ -745,9 +756,9 @@ backend_init_supplies(
type = supplies[i].type;
if (type < CUPS_TC_other || type > CUPS_TC_covers)
strcpy(ptr, "unknown");
strlcpy(ptr, "unknown", sizeof(value) - (ptr - value));
else
strcpy(ptr, types[type - CUPS_TC_other]);
strlcpy(ptr, types[type - CUPS_TC_other], sizeof(value) - (ptr - value));
}
fprintf(stderr, "ATTR: marker-types=%s\n", value);
@@ -814,7 +825,7 @@ backend_walk_cb(cups_snmp_t *packet, /* I - SNMP packet */
if (!_cups_strcasecmp(colors[k][0],
(char *)packet->object_value.string.bytes))
{
strcpy(supplies[j].color, colors[k][1]);
strlcpy(supplies[j].color, colors[k][1], sizeof(supplies[j].color));
break;
}
}
@@ -969,6 +980,25 @@ backend_walk_cb(cups_snmp_t *packet, /* I - SNMP packet */
packet->object_value.integer > 0)
supplies[i - 1].max_capacity = packet->object_value.integer;
}
else if (_cupsSNMPIsOIDPrefixed(packet, prtMarkerSuppliesClass))
{
/*
* Get marker class...
*/
i = packet->object_name[prtMarkerSuppliesClassOffset];
if (i < 1 || i > CUPS_MAX_SUPPLIES ||
packet->object_type != CUPS_ASN1_INTEGER)
return;
fprintf(stderr, "DEBUG2: prtMarkerSuppliesClass.1.%d = %d\n", i,
packet->object_value.integer);
if (i > num_supplies)
num_supplies = i;
supplies[i - 1].sclass = packet->object_value.integer;
}
else if (_cupsSNMPIsOIDPrefixed(packet, prtMarkerSuppliesType))
{
/*
+10 -2
Ver Arquivo
@@ -251,7 +251,7 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
#ifdef AF_INET6
if ((ipv6 = _cupsSNMPOpen(AF_INET6)) < 0)
return (1);
perror("DEBUG: Unable to create IPv6 socket");
#else
ipv6 = -1;
#endif /* AF_INET6 */
@@ -1025,6 +1025,11 @@ read_snmp_response(int fd) /* I - SNMP socket file descriptor */
* Description is the IEEE-1284 device ID...
*/
char *ptr; /* Pointer into device ID */
for (ptr = (char *)packet.object_value.string.bytes; *ptr; ptr ++)
if (*ptr == '\n')
*ptr = ';'; /* A lot of bad printers put a newline */
if (!device->id)
device->id = strdup((char *)packet.object_value.string.bytes);
@@ -1066,8 +1071,11 @@ read_snmp_response(int fd) /* I - SNMP socket file descriptor */
*/
char make_model[256]; /* Make and model */
char *ptr; /* Pointer into device ID */
for (ptr = (char *)packet.object_value.string.bytes; *ptr; ptr ++)
if (*ptr == '\n')
*ptr = ';'; /* A lot of bad printers put a newline */
if (device->id)
free(device->id);
+18 -19
Ver Arquivo
@@ -73,10 +73,6 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
int print_fd; /* Print file */
int copies; /* Number of copies to print */
time_t start_time; /* Time of first connect */
#ifdef __APPLE__
time_t current_time, /* Current time */
wait_time; /* Time to wait before shutting down socket */
#endif /* __APPLE__ */
int contimeout; /* Connection timeout */
int waiteof; /* Wait for end-of-file? */
int port; /* Port number */
@@ -87,6 +83,7 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
http_addrlist_t *addrlist, /* Address list */
*addr; /* Connected address */
char addrname[256]; /* Address name */
int snmp_enabled = 1; /* Is SNMP enabled? */
int snmp_fd, /* SNMP socket */
start_count, /* Page count via SNMP at start */
page_count, /* Page count via SNMP */
@@ -246,6 +243,16 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
waiteof = !value[0] || !_cups_strcasecmp(value, "on") ||
!_cups_strcasecmp(value, "yes") || !_cups_strcasecmp(value, "true");
}
else if (!_cups_strcasecmp(name, "snmp"))
{
/*
* Enable/disable SNMP stuff...
*/
snmp_enabled = !value[0] || !_cups_strcasecmp(value, "on") ||
_cups_strcasecmp(value, "yes") ||
_cups_strcasecmp(value, "true");
}
else if (!_cups_strcasecmp(name, "contimeout"))
{
/*
@@ -286,11 +293,14 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
* See if the printer supports SNMP...
*/
if ((snmp_fd = _cupsSNMPOpen(addrlist->addr.addr.sa_family)) >= 0)
{
if (snmp_enabled)
snmp_fd = _cupsSNMPOpen(addrlist->addr.addr.sa_family);
else
snmp_fd = -1;
if (snmp_fd >= 0)
have_supplies = !backendSNMPSupplies(snmp_fd, &(addrlist->addr),
&start_count, NULL);
}
else
have_supplies = start_count = 0;
@@ -396,7 +406,7 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
fprintf(stderr, "DEBUG: Connected to %s:%d...\n",
httpAddrString(&(addr->addr), addrname, sizeof(addrname)),
_httpAddrPort(&(addr->addr)));
httpAddrPort(&(addr->addr)));
/*
* Print everything...
@@ -424,17 +434,6 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
_cupsLangPrintFilter(stderr, "INFO", _("Print file sent."));
}
#ifdef __APPLE__
/*
* Wait up to 5 seconds to get any pending back-channel data...
*/
wait_time = time(NULL) + 5;
while (wait_time >= time(&current_time))
if (wait_bc(device_fd, wait_time - current_time) <= 0)
break;
#endif /* __APPLE__ */
if (waiteof)
{
/*
+13 -1
Ver Arquivo
@@ -667,7 +667,19 @@ walk_cb(const char *oid, /* I - OID */
int datalen, /* I - Length of data */
void *context) /* I - Context (unused) */
{
printf("CUPS_SC_CMD_SNMP_WALK %s, %d bytes (%s)\n", oid, datalen, data);
char temp[80];
if (datalen > (sizeof(temp) - 1))
{
memcpy(temp, data, sizeof(temp) - 1);
temp[sizeof(temp) - 1] = '\0';
}
else
{
memcpy(temp, data, datalen);
temp[datalen] = '\0';
}
printf("CUPS_SC_CMD_SNMP_WALK %s, %d bytes (%s)\n", oid, datalen, temp);
}
+98 -24
Ver Arquivo
@@ -1,7 +1,7 @@
/*
* "$Id$"
*
* Copyright 2005-2012 Apple Inc. All rights reserved.
* Copyright 2005-2013 Apple Inc. All rights reserved.
*
* IMPORTANT: This Apple software is supplied to you by Apple Computer,
* Inc. ("Apple") in consideration of your agreement to the following
@@ -96,6 +96,7 @@
#include <CoreFoundation/CoreFoundation.h>
#include <IOKit/usb/IOUSBLib.h>
#include <IOKit/IOCFPlugIn.h>
#include <libproc.h>
#include <spawn.h>
#include <pthread.h>
@@ -134,6 +135,26 @@ extern char **environ;
#define kUSBGenericTOPrinterClassDriver CFSTR("/System/Library/Printers/Libraries/USBGenericPrintingClass.plugin")
#define kUSBPrinterClassDeviceNotOpen -9664 /*kPMInvalidIOMContext*/
#define CRSetCrashLogMessage(m) _crc_make_setter(message, m)
#define _crc_make_setter(attr, arg) (gCRAnnotations.attr = (uint64_t)(unsigned long)(arg))
#define CRASH_REPORTER_CLIENT_HIDDEN __attribute__((visibility("hidden")))
#define CRASHREPORTER_ANNOTATIONS_VERSION 4
#define CRASHREPORTER_ANNOTATIONS_SECTION "__crash_info"
struct crashreporter_annotations_t {
uint64_t version; // unsigned long
uint64_t message; // char *
uint64_t signature_string; // char *
uint64_t backtrace; // char *
uint64_t message2; // char *
uint64_t thread; // uint64_t
uint64_t dialog_mode; // unsigned int
};
CRASH_REPORTER_CLIENT_HIDDEN
struct crashreporter_annotations_t gCRAnnotations
__attribute__((section("__DATA," CRASHREPORTER_ANNOTATIONS_SECTION)))
= { CRASHREPORTER_ANNOTATIONS_VERSION, 0, 0, 0, 0, 0, 0 };
/*
* Section 5.3 USB Printing Class spec
@@ -179,7 +200,7 @@ typedef struct classdriver_s /**** g.classdriver context ****/
UInt16 vendorID; /* Vendor id */
UInt16 productID; /* Product id */
printer_interface_t interface; /* identify the device to IOKit */
UInt8 outpipe; /* mandatory bulkOut pipe */
UInt8 outpipe; /* mandatory bulkOut pipe */
UInt8 inpipe; /* optional bulkIn pipe */
/* general class requests */
@@ -259,6 +280,7 @@ typedef struct globals_s
*/
globals_t g = { 0 }; /* Globals */
int Iterating = 0; /* Are we iterating the bus? */
/*
@@ -293,6 +315,7 @@ static pid_t child_pid; /* Child PID */
static void run_legacy_backend(int argc, char *argv[], int fd); /* Starts child backend process running as a ppc executable */
#endif /* __i386__ || __x86_64__ */
static void sigterm_handler(int sig); /* SIGTERM handler */
static void sigquit_handler(int sig, siginfo_t *si, void *unused);
#ifdef PARSE_PS_ERRORS
static const char *next_line (const char *buffer);
@@ -344,10 +367,20 @@ print_device(const char *uri, /* I - Device URI */
struct timeval *timeout, /* Timeout pointer */
tv; /* Time value */
struct timespec cond_timeout; /* pthread condition timeout */
struct sigaction action; /* Actions for POSIX signals */
(void)uri;
/*
* Catch SIGQUIT to determine who is sending it...
*/
memset(&action, 0, sizeof(action));
action.sa_sigaction = sigquit_handler;
action.sa_flags = SA_SIGINFO;
sigaction(SIGQUIT, &action, NULL);
/*
* See if the side-channel descriptor is valid...
*/
@@ -472,9 +505,6 @@ print_device(const char *uri, /* I - Device URI */
if (!print_fd)
{
struct sigaction action; /* POSIX signal action */
memset(&action, 0, sizeof(action));
sigemptyset(&action.sa_mask);
@@ -684,7 +714,7 @@ print_device(const char *uri, /* I - Device URI */
/*
* Ignore timeout errors, but retain the number of bytes written to
* avoid sending duplicate data (<rdar://problem/6254911>)...
* avoid sending duplicate data...
*/
if (iostatus == kIOUSBTransactionTimeout)
@@ -707,7 +737,7 @@ print_device(const char *uri, /* I - Device URI */
/*
* Retry a write after an aborted write since we probably just got
* SIGTERM (<rdar://problem/6860126>)...
* SIGTERM...
*/
else if (iostatus == kIOReturnAborted)
@@ -1077,6 +1107,8 @@ 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);
@@ -1100,7 +1132,7 @@ static void iterate_printers(iterator_callback_t callBack,
CFRelease(usb_klass);
CFRelease(usb_subklass);
kr = IOServiceAddMatchingNotification(addNotification, kIOMatchedNotification, usbPrinterMatchDictionary, &device_added, &reference, &addIterator);
IOServiceAddMatchingNotification(addNotification, kIOMatchedNotification, usbPrinterMatchDictionary, &device_added, &reference, &addIterator);
if (addIterator != 0x0)
{
device_added (&reference, addIterator);
@@ -1114,6 +1146,8 @@ static void iterate_printers(iterator_callback_t callBack,
}
mach_port_deallocate(mach_task_self(), masterPort);
}
Iterating = 0;
}
@@ -1137,7 +1171,7 @@ static void device_added(void *userdata,
/* One last call to the call back now that we are not longer have printers left to iterate...
*/
if (reference->keepRunning)
if (reference->keepRunning && reference->callback)
reference->keepRunning = reference->callback(reference->userdata, 0x0);
if (!reference->keepRunning)
@@ -1180,12 +1214,12 @@ static Boolean list_device_cb(void *refcon,
if (!make ||
!CFStringGetCString(make, makestr, sizeof(makestr),
kCFStringEncodingUTF8))
strcpy(makestr, "Unknown");
strlcpy(makestr, "Unknown", sizeof(makestr));
if (!model ||
!CFStringGetCString(model, &modelstr[1], sizeof(modelstr)-1,
kCFStringEncodingUTF8))
strcpy(modelstr + 1, "Printer");
strlcpy(modelstr + 1, "Printer", sizeof(modelstr) - 1);
optionsstr[0] = '\0';
if (serial != NULL)
@@ -1402,7 +1436,7 @@ static kern_return_t load_classdriver(CFStringRef driverPath,
_cups_fc_result_t result = _cupsFileCheck(bundlestr,
_CUPS_FILE_CHECK_DIRECTORY, 1,
_cupsFileCheckFilter, NULL);
Iterating ? NULL : _cupsFileCheckFilter, NULL);
if (result && driverPath)
return (load_classdriver(NULL, interface, printerDriver));
@@ -1569,11 +1603,12 @@ static kern_return_t registry_close(void)
static OSStatus copy_deviceid(classdriver_t **classdriver,
CFStringRef *deviceID)
{
CFStringRef devID = NULL,
deviceMake = NULL,
deviceModel = NULL,
deviceSerial = NULL;
CFStringRef devID = NULL;
CFStringRef deviceMake = NULL;
CFStringRef deviceModel = NULL;
CFStringRef deviceSerial = NULL;
*deviceID = NULL;
OSStatus err = (*classdriver)->GetDeviceID(classdriver, &devID, DEFAULT_TIMEOUT);
@@ -1619,12 +1654,10 @@ static OSStatus copy_deviceid(classdriver_t **classdriver,
if (deviceSerial == NULL && desc.iSerialNumber != 0)
{
CFStringRef data = NULL;
err = (*classdriver)->GetString(classdriver, desc.iSerialNumber, kUSBLanguageEnglish, DEFAULT_TIMEOUT, &data);
if (data != NULL)
err = (*classdriver)->GetString(classdriver, desc.iSerialNumber, kUSBLanguageEnglish, DEFAULT_TIMEOUT, &deviceSerial);
if (deviceSerial != NULL)
{
CFStringAppendFormat(newDevID, NULL, CFSTR("SERN:%@;"), data);
CFRelease(data);
CFStringAppendFormat(newDevID, NULL, CFSTR("SERN:%@;"), deviceSerial);
}
}
@@ -1641,6 +1674,21 @@ static OSStatus copy_deviceid(classdriver_t **classdriver,
{
*deviceID = devID;
}
if (*deviceID == NULL)
return err;
/* Remove special characters from the serial number */
CFRange range = (deviceSerial != NULL ? CFStringFind(deviceSerial, CFSTR("+"), 0) : CFRangeMake(0, 0));
if (range.length == 1) {
range = CFStringFind(*deviceID, deviceSerial, 0);
CFMutableStringRef deviceIDString = CFStringCreateMutableCopy(NULL, 0, *deviceID);
CFStringFindAndReplace(deviceIDString, CFSTR("+"), CFSTR(""), range, 0);
CFRelease(*deviceID);
*deviceID = deviceIDString;
}
release_deviceinfo(&deviceMake, &deviceModel, &deviceSerial);
return err;
@@ -1685,7 +1733,7 @@ static void copy_devicestring(io_service_t usbInterface,
kr = load_classdriver(NULL, interface, &klassDriver);
if (kr == kIOReturnSuccess && klassDriver != NULL)
kr = copy_deviceid(klassDriver, deviceID);
copy_deviceid(klassDriver, deviceID);
unload_classdriver(&klassDriver);
@@ -2094,6 +2142,32 @@ sigterm_handler(int sig) /* I - Signal */
}
/*
* 'sigquit_handler()' - SIGQUIT handler.
*/
static void sigquit_handler(int sig, siginfo_t *si, void *unused)
{
char *path;
char pathbuf[PROC_PIDPATHINFO_MAXSIZE];
static char msgbuf[256] = "";
(void)sig;
(void)unused;
if (proc_pidpath(si->si_pid, pathbuf, sizeof(pathbuf)) > 0 &&
(path = basename(pathbuf)) != NULL)
snprintf(msgbuf, sizeof(msgbuf), "SIGQUIT sent by %s(%d)", path, (int)si->si_pid);
else
snprintf(msgbuf, sizeof(msgbuf), "SIGQUIT sent by PID %d", (int)si->si_pid);
CRSetCrashLogMessage(msgbuf);
abort();
}
#ifdef PARSE_PS_ERRORS
/*
* 'next_line()' - Find the next line in a buffer.
@@ -2164,7 +2238,7 @@ static void parse_pserror(char *sockBuffer,
}
/* move everything over... */
strcpy(gErrorBuffer, pLineEnd);
strlcpy(gErrorBuffer, pLineEnd, sizeof(gErrorBuffer));
gErrorBufferPtr = gErrorBuffer;
pLineEnd = (char *)next_line((const char *)gErrorBuffer);
}
+492 -117
Ver Arquivo
@@ -3,7 +3,7 @@
*
* LIBUSB interface code for CUPS.
*
* Copyright 2007-2012 by Apple Inc.
* Copyright 2007-2013 by Apple Inc.
*
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
@@ -13,18 +13,23 @@
*
* Contents:
*
 * list_devices() - List the available printers.
* list_devices() - List the available printers.
* print_device() - Print a file to a USB device.
* close_device() - Close the connection to the USB printer.
* compare_quirks() - Compare two quirks entries.
* find_device() - Find or enumerate USB printers.
* find_quirks() - Find the quirks for the given printer, if any.
* get_device_id() - Get the IEEE-1284 device ID for the printer.
* list_cb() - List USB printers for discovery.
* load_quirks() - Load all quirks files in the /usr/share/cups/usb
* directory.
* make_device_uri() - Create a device URI for a USB printer.
* open_device() - Open a connection to the USB printer.
* print_cb() - Find a USB printer for printing.
* read_thread() - Thread to read the backchannel data on.
* sidechannel_thread() - Handle side-channel requests.
* soft_reset() - Send a soft reset to the device.
* soft_reset_printer() - Do the soft reset request specific to printers
*/
/*
@@ -33,6 +38,7 @@
#include <libusb.h>
#include <cups/cups-private.h>
#include <cups/dir.h>
#include <pthread.h>
#include <sys/select.h>
#include <sys/types.h>
@@ -60,20 +66,22 @@ typedef struct usb_printer_s /**** USB Printer Data ****/
{
struct libusb_device *device; /* Device info */
int conf, /* Configuration */
origconf, /* Original configuration */
iface, /* Interface */
altset, /* Alternate setting */
write_endp, /* Write endpoint */
read_endp, /* Read endpoint */
read_endp, /* Read endpoint */
protocol, /* Protocol: 1 = Uni-di, 2 = Bi-di. */
usblp_attached; /* Is the "usblp" kernel module
attached? */
usblp_attached, /* "usblp" kernel module attached? */
reset_after_job;/* Set to 1 by print_device() */
unsigned quirks; /* Quirks flags */
struct libusb_device_handle *handle; /* Open handle to device */
} usb_printer_t;
typedef int (*usb_cb_t)(usb_printer_t *, const char *, const char *,
const void *);
typedef struct usb_globals_s
typedef struct usb_globals_s /* Global USB printer information */
{
usb_printer_t *printer; /* Printer */
@@ -99,13 +107,42 @@ typedef struct usb_globals_s
int sidechannel_thread_done;
} usb_globals_t;
/*
* Quirks: various printer quirks are handled by this structure and its flags.
*
* The quirks table used to be compiled into the backend but is now loaded from
* one or more files in the /usr/share/cups/usb directory.
*/
#define USB_QUIRK_BLACKLIST 0x0001 /* Does not conform to the spec */
#define USB_QUIRK_NO_REATTACH 0x0002 /* After printing we cannot re-attach
the usblp kernel module */
#define USB_QUIRK_SOFT_RESET 0x0004 /* After printing do a soft reset
for clean-up */
#define USB_QUIRK_UNIDIR 0x0008 /* Requires unidirectional mode */
#define USB_QUIRK_USB_INIT 0x0010 /* Needs vendor USB init string */
#define USB_QUIRK_VENDOR_CLASS 0x0020 /* Descriptor uses vendor-specific
Class or SubClass */
#define USB_QUIRK_WHITELIST 0x0000 /* no quirks */
typedef struct usb_quirk_s /* USB "quirk" information */
{
int vendor_id, /* Affected vendor ID */
product_id; /* Affected product ID or 0 for all */
unsigned quirks; /* Quirks bitfield */
} usb_quirk_t;
/*
* Globals...
*/
cups_array_t *all_quirks; /* Array of printer quirks */
usb_globals_t g = { 0 }; /* Globals */
libusb_device **list; /* List of connected USB devices */
libusb_device **all_list; /* List of connected USB devices */
/*
@@ -113,11 +150,14 @@ libusb_device **list; /* List of connected USB devices */
*/
static int close_device(usb_printer_t *printer);
static int compare_quirks(usb_quirk_t *a, usb_quirk_t *b);
static usb_printer_t *find_device(usb_cb_t cb, const void *data);
static unsigned find_quirks(int vendor_id, int product_id);
static int get_device_id(usb_printer_t *printer, char *buffer,
size_t bufsize);
static int list_cb(usb_printer_t *printer, const char *device_uri,
const char *device_id, const void *data);
static void load_quirks(void);
static char *make_device_uri(usb_printer_t *printer,
const char *device_id,
char *uri, size_t uri_size);
@@ -127,6 +167,7 @@ static int print_cb(usb_printer_t *printer, const char *device_uri,
static void *read_thread(void *reference);
static void *sidechannel_thread(void *reference);
static void soft_reset(void);
static int soft_reset_printer(usb_printer_t *printer);
/*
@@ -136,6 +177,8 @@ static void soft_reset(void);
void
list_devices(void)
{
load_quirks();
fputs("DEBUG: list_devices\n", stderr);
find_device(list_cb, NULL);
}
@@ -163,7 +206,8 @@ print_device(const char *uri, /* I - Device URI */
iostatus; /* Current IO status */
pthread_t read_thread_id, /* Read thread */
sidechannel_thread_id; /* Side-channel thread */
int have_sidechannel = 0; /* Was the side-channel thread started? */
int have_sidechannel = 0, /* Was the side-channel thread started? */
have_backchannel = 0; /* Do we have a back channel? */
struct stat sidechannel_info; /* Side-channel file descriptor info */
unsigned char print_buffer[8192], /* Print data buffer */
*print_ptr; /* Pointer into print data buffer */
@@ -172,8 +216,13 @@ print_device(const char *uri, /* I - Device URI */
struct timeval *timeout, /* Timeout pointer */
tv; /* Time value */
struct timespec cond_timeout; /* pthread condition timeout */
int num_opts; /* Number of options */
cups_option_t *opts; /* Options */
const char *val; /* Option value */
load_quirks();
/*
* See if the side-channel descriptor is valid...
*/
@@ -187,6 +236,7 @@ print_device(const char *uri, /* I - Device URI */
* Connect to the printer...
*/
fprintf(stderr, "DEBUG: Printing on printer with URI: %s\n", uri);
while ((g.printer = find_device(print_cb, uri)) == NULL)
{
_cupsLangPrintFilter(stderr, "INFO",
@@ -196,6 +246,12 @@ print_device(const char *uri, /* I - Device URI */
g.print_fd = print_fd;
/*
* Some devices need a reset after finishing a job, these devices are
* marked with the USB_QUIRK_SOFT_RESET quirk.
*/
g.printer->reset_after_job = (g.printer->quirks & USB_QUIRK_SOFT_RESET ? 1 : 0);
/*
* If we are printing data from a print driver on stdin, ignore SIGTERM
* so that the driver can finish out any page data, e.g. to eject the
@@ -239,25 +295,62 @@ print_device(const char *uri, /* I - Device URI */
}
}
/*
* Debug mode: If option "usb-unidir" is given, always deactivate
* backchannel
*/
num_opts = cupsParseOptions(argv[5], 0, &opts);
val = cupsGetOption("usb-unidir", num_opts, opts);
if (val && strcasecmp(val, "no") && strcasecmp(val, "off") &&
strcasecmp(val, "false"))
{
g.printer->read_endp = -1;
fprintf(stderr, "DEBUG: Forced uni-directional communication "
"via \"usb-unidir\" option.\n");
}
/*
* Debug mode: If option "usb-no-reattach" is given, do not re-attach
* the usblp kernel module after the job has completed.
*/
val = cupsGetOption("usb-no-reattach", num_opts, opts);
if (val && strcasecmp(val, "no") && strcasecmp(val, "off") &&
strcasecmp(val, "false"))
{
g.printer->usblp_attached = 0;
fprintf(stderr, "DEBUG: Forced not re-attaching the usblp kernel module "
"after the job via \"usb-no-reattach\" option.\n");
}
/*
* Get the read thread going...
*/
g.read_thread_stop = 0;
g.read_thread_done = 0;
pthread_cond_init(&g.read_thread_cond, NULL);
pthread_mutex_init(&g.read_thread_mutex, NULL);
if (pthread_create(&read_thread_id, NULL, read_thread, NULL))
if (g.printer->read_endp != -1)
{
fprintf(stderr, "DEBUG: Fatal USB error.\n");
_cupsLangPrintFilter(stderr, "ERROR",
_("There was an unrecoverable USB error."));
fputs("DEBUG: Couldn't create read thread.\n", stderr);
close_device(g.printer);
return (CUPS_BACKEND_STOP);
have_backchannel = 1;
g.read_thread_stop = 0;
g.read_thread_done = 0;
pthread_cond_init(&g.read_thread_cond, NULL);
pthread_mutex_init(&g.read_thread_mutex, NULL);
if (pthread_create(&read_thread_id, NULL, read_thread, NULL))
{
fprintf(stderr, "DEBUG: Fatal USB error.\n");
_cupsLangPrintFilter(stderr, "ERROR",
_("There was an unrecoverable USB error."));
fputs("DEBUG: Couldn't create read thread.\n", stderr);
close_device(g.printer);
return (CUPS_BACKEND_STOP);
}
}
else
fprintf(stderr, "DEBUG: Uni-directional device/mode, back channel "
"deactivated.\n");
/*
* The main thread sends the print file...
@@ -515,38 +608,18 @@ print_device(const char *uri, /* I - Device URI */
* Signal the read thread to exit then wait 7 seconds for it to complete...
*/
g.read_thread_stop = 1;
pthread_mutex_lock(&g.read_thread_mutex);
if (!g.read_thread_done)
if (have_backchannel)
{
fputs("DEBUG: Waiting for read thread to exit...\n", stderr);
g.read_thread_stop = 1;
gettimeofday(&tv, NULL);
cond_timeout.tv_sec = tv.tv_sec + WAIT_EOF_DELAY;
cond_timeout.tv_nsec = tv.tv_usec * 1000;
while (!g.read_thread_done)
{
if (pthread_cond_timedwait(&g.read_thread_cond, &g.read_thread_mutex,
&cond_timeout) != 0)
break;
}
/*
* If it didn't exit abort the pending read and wait an additional second...
*/
pthread_mutex_lock(&g.read_thread_mutex);
if (!g.read_thread_done)
{
fputs("DEBUG: Read thread still active, aborting the pending read...\n",
stderr);
g.wait_eof = 0;
fputs("DEBUG: Waiting for read thread to exit...\n", stderr);
gettimeofday(&tv, NULL);
cond_timeout.tv_sec = tv.tv_sec + 1;
cond_timeout.tv_sec = tv.tv_sec + WAIT_EOF_DELAY;
cond_timeout.tv_nsec = tv.tv_usec * 1000;
while (!g.read_thread_done)
@@ -555,14 +628,35 @@ print_device(const char *uri, /* I - Device URI */
&cond_timeout) != 0)
break;
}
/*
* If it didn't exit abort the pending read and wait an additional
* second...
*/
if (!g.read_thread_done)
{
fputs("DEBUG: Read thread still active, aborting the pending read...\n",
stderr);
g.wait_eof = 0;
gettimeofday(&tv, NULL);
cond_timeout.tv_sec = tv.tv_sec + 1;
cond_timeout.tv_nsec = tv.tv_usec * 1000;
while (!g.read_thread_done)
{
if (pthread_cond_timedwait(&g.read_thread_cond, &g.read_thread_mutex,
&cond_timeout) != 0)
break;
}
}
}
pthread_mutex_unlock(&g.read_thread_mutex);
}
pthread_mutex_unlock(&g.read_thread_mutex);
if (print_fd)
close(print_fd);
/*
* Close the connection and input file and general clean up...
*/
@@ -573,7 +667,7 @@ print_device(const char *uri, /* I - Device URI */
* Clean up ....
*/
libusb_free_device_list(list, 1);
libusb_free_device_list(all_list, 1);
libusb_exit(NULL);
return (status);
@@ -600,31 +694,86 @@ close_device(usb_printer_t *printer) /* I - Printer */
* to the device...
*/
int number; /* Interface number */
int errcode; /* Return value of libusb function */
int number1, /* Interface number */
number2; /* Configuration number */
libusb_get_device_descriptor(printer->device, &devdesc);
libusb_get_config_descriptor(printer->device, printer->conf, &confptr);
number = confptr->interface[printer->iface].
altsetting[printer->altset].bInterfaceNumber;
libusb_release_interface(printer->handle, number);
if (number != 0)
libusb_release_interface(printer->handle, 0);
errcode =
libusb_get_config_descriptor(printer->device, printer->conf, &confptr);
if (errcode >= 0)
{
number1 = confptr->interface[printer->iface].
altsetting[printer->altset].bInterfaceNumber;
libusb_release_interface(printer->handle, number1);
number2 = confptr->bConfigurationValue;
libusb_free_config_descriptor(confptr);
/*
* If we have changed the configuration from one valid configuration
* to another, restore the old one
*/
if (printer->origconf > 0 && printer->origconf != number2)
{
fprintf(stderr, "DEBUG: Restoring USB device configuration: %d -> %d\n",
number2, printer->origconf);
if ((errcode = libusb_set_configuration(printer->handle,
printer->origconf)) < 0)
{
if (errcode != LIBUSB_ERROR_BUSY)
{
errcode =
libusb_get_device_descriptor (printer->device, &devdesc);
if (errcode < 0)
fprintf(stderr,
"DEBUG: Failed to set configuration %d\n",
printer->origconf);
else
fprintf(stderr,
"DEBUG: Failed to set configuration %d for %04x:%04x\n",
printer->origconf, devdesc.idVendor, devdesc.idProduct);
}
}
}
/*
* Re-attach "usblp" kernel module if it was attached before using this
* device
*/
if (printer->usblp_attached == 1)
if (libusb_attach_kernel_driver(printer->handle, number1) < 0)
{
errcode = libusb_get_device_descriptor (printer->device, &devdesc);
if (errcode < 0)
fprintf(stderr,
"DEBUG: Failed to re-attach \"usblp\" kernel module\n");
else
fprintf(stderr,
"DEBUG: Failed to re-attach \"usblp\" kernel module to "
"%04x:%04x\n", devdesc.idVendor, devdesc.idProduct);
}
}
else
fprintf(stderr,
"DEBUG: Failed to get configuration descriptor %d\n",
printer->conf);
/*
* Re-attach "usblp" kernel module if it was attached before using this
* device
* Reset the device to clean up after the job
*/
if (printer->usblp_attached == 1)
if (printer->reset_after_job == 1)
{
if (libusb_attach_kernel_driver(printer->handle, printer->iface) < 0)
if ((errcode = libusb_reset_device(printer->handle)) < 0)
fprintf(stderr,
"DEBUG: Failed to re-attach \"usblp\" kernel module to "
"%04x:%04x\n", devdesc.idVendor, devdesc.idProduct);
"DEBUG: Device reset failed, error code: %d\n",
errcode);
else
fprintf(stderr,
"DEBUG: Resetting printer.\n");
}
libusb_free_config_descriptor(confptr);
/*
* Close the interface and return...
*/
@@ -637,6 +786,23 @@ close_device(usb_printer_t *printer) /* I - Printer */
}
/*
* 'compare_quirks()' - Compare two quirks entries.
*/
static int /* O - Result of comparison */
compare_quirks(usb_quirk_t *a, /* I - First quirk entry */
usb_quirk_t *b) /* I - Second quirk entry */
{
int result; /* Result of comparison */
if ((result = b->vendor_id - a->vendor_id) == 0)
result = b->product_id - a->product_id;
return (result);
}
/*
* 'find_device()' - Find or enumerate USB printers.
*/
@@ -657,7 +823,8 @@ find_device(usb_cb_t cb, /* I - Callback function */
/* Pointer to current alternate setting */
const struct libusb_endpoint_descriptor *endpptr = NULL;
/* Pointer to current endpoint */
ssize_t numdevs, /* number of connected devices */
ssize_t err = 0, /* Error code */
numdevs, /* number of connected devices */
i = 0;
uint8_t conf, /* Current configuration */
iface, /* Current interface */
@@ -676,7 +843,14 @@ find_device(usb_cb_t cb, /* I - Callback function */
* Initialize libusb...
*/
libusb_init(NULL);
err = libusb_init(NULL);
if (err)
{
fprintf(stderr, "DEBUG: Unable to initialize USB access via libusb, "
"libusb error %i\n", (int)err);
return (NULL);
}
numdevs = libusb_get_device_list(NULL, &list);
fprintf(stderr, "DEBUG: libusb_get_device_list=%d\n", (int)numdevs);
@@ -694,12 +868,22 @@ find_device(usb_cb_t cb, /* I - Callback function */
* a printer...
*/
libusb_get_device_descriptor(device, &devdesc);
if (libusb_get_device_descriptor(device, &devdesc) < 0)
continue;
if (!devdesc.bNumConfigurations || !devdesc.idVendor ||
!devdesc.idProduct)
continue;
printer.quirks = find_quirks(devdesc.idVendor, devdesc.idProduct);
/*
* Ignore blacklisted printers...
*/
if (printer.quirks & USB_QUIRK_BLACKLIST)
continue;
for (conf = 0; conf < devdesc.bNumConfigurations; conf ++)
{
if (libusb_get_config_descriptor(device, conf, &confptr) < 0)
@@ -724,13 +908,18 @@ find_device(usb_cb_t cb, /* I - Callback function */
* 1284.4 (packet mode) protocol as well.
*/
if (altptr->bInterfaceClass != LIBUSB_CLASS_PRINTER ||
altptr->bInterfaceSubClass != 1 ||
if (((altptr->bInterfaceClass != LIBUSB_CLASS_PRINTER ||
altptr->bInterfaceSubClass != 1) &&
((printer.quirks & USB_QUIRK_VENDOR_CLASS) == 0)) ||
(altptr->bInterfaceProtocol != 1 && /* Unidirectional */
altptr->bInterfaceProtocol != 2) || /* Bidirectional */
altptr->bInterfaceProtocol < protocol)
continue;
if (printer.quirks & USB_QUIRK_VENDOR_CLASS)
fprintf(stderr, "DEBUG: Printer does not report class 7 and/or "
"subclass 1 but works as a printer anyway\n");
read_endp = -1;
write_endp = -1;
@@ -755,7 +944,10 @@ find_device(usb_cb_t cb, /* I - Callback function */
protocol = altptr->bInterfaceProtocol;
printer.altset = altset;
printer.write_endp = write_endp;
printer.read_endp = read_endp;
if (protocol > 1)
printer.read_endp = read_endp;
else
printer.read_endp = -1;
}
}
@@ -773,16 +965,41 @@ find_device(usb_cb_t cb, /* I - Callback function */
make_device_uri(&printer, device_id, device_uri,
sizeof(device_uri));
fprintf(stderr, "DEBUG2: Printer found with device ID: %s "
"Device URI: %s\n",
device_id, device_uri);
if ((*cb)(&printer, device_uri, device_id, data))
{
printer.read_endp = confptr->interface[printer.iface].
altsetting[printer.altset].
endpoint[printer.read_endp].
bEndpointAddress;
fprintf(stderr, "DEBUG: Device protocol: %d\n",
printer.protocol);
if (printer.quirks & USB_QUIRK_UNIDIR)
{
printer.read_endp = -1;
fprintf(stderr, "DEBUG: Printer reports bi-di support "
"but in reality works only uni-directionally\n");
}
if (printer.read_endp != -1)
{
printer.read_endp = confptr->interface[printer.iface].
altsetting[printer.altset].
endpoint[printer.read_endp].
bEndpointAddress;
}
else
fprintf(stderr, "DEBUG: Uni-directional USB communication "
"only!\n");
printer.write_endp = confptr->interface[printer.iface].
altsetting[printer.altset].
endpoint[printer.write_endp].
bEndpointAddress;
if (printer.quirks & USB_QUIRK_NO_REATTACH)
{
printer.usblp_attached = 0;
fprintf(stderr, "DEBUG: Printer does not like usblp "
"kernel module to be re-attached after job\n");
}
libusb_free_config_descriptor(confptr);
return (&printer);
}
@@ -803,13 +1020,43 @@ find_device(usb_cb_t cb, /* I - Callback function */
* Clean up ....
*/
libusb_free_device_list(list, 1);
if (numdevs >= 0)
libusb_free_device_list(list, 1);
libusb_exit(NULL);
return (NULL);
}
/*
* 'find_quirks()' - Find the quirks for the given printer, if any.
*
* First looks for an exact match, then looks for the vendor ID wildcard match.
*/
static unsigned /* O - Quirks flags */
find_quirks(int vendor_id, /* I - Vendor ID */
int product_id) /* I - Product ID */
{
usb_quirk_t key, /* Search key */
*match; /* Matching quirk entry */
key.vendor_id = vendor_id;
key.product_id = product_id;
if ((match = cupsArrayFind(all_quirks, &key)) != NULL)
return (match->quirks);
key.product_id = 0;
if ((match = cupsArrayFind(all_quirks, &key)) != NULL)
return (match->quirks);
return (USB_QUIRK_WHITELIST);
}
/*
* 'get_device_id()' - Get the IEEE-1284 device ID for the printer.
*/
@@ -915,6 +1162,104 @@ list_cb(usb_printer_t *printer, /* I - Printer */
}
/*
* 'load_quirks()' - Load all quirks files in the /usr/share/cups/usb directory.
*/
static void
load_quirks(void)
{
const char *datadir; /* CUPS_DATADIR environment variable */
char filename[1024], /* Filename */
line[1024]; /* Line from file */
cups_dir_t *dir; /* Directory */
cups_dentry_t *dent; /* Directory entry */
cups_file_t *fp; /* Quirks file */
usb_quirk_t *quirk; /* New quirk */
all_quirks = cupsArrayNew((cups_array_func_t)compare_quirks, NULL);
if ((datadir = getenv("CUPS_DATADIR")) == NULL)
datadir = CUPS_DATADIR;
snprintf(filename, sizeof(filename), "%s/usb", datadir);
if ((dir = cupsDirOpen(filename)) == NULL)
{
perror(filename);
return;
}
fprintf(stderr, "DEBUG: Loading USB quirks from \"%s\".\n", filename);
while ((dent = cupsDirRead(dir)) != NULL)
{
if (!S_ISREG(dent->fileinfo.st_mode))
continue;
snprintf(filename, sizeof(filename), "%s/usb/%s", datadir, dent->filename);
if ((fp = cupsFileOpen(filename, "r")) == NULL)
{
perror(filename);
continue;
}
while (cupsFileGets(fp, line, sizeof(line)))
{
/*
* Skip blank and comment lines...
*/
if (line[0] == '#' || !line[0])
continue;
/*
* Add a quirk...
*/
if ((quirk = calloc(1, sizeof(usb_quirk_t))) == NULL)
{
perror("DEBUG: Unable to allocate memory for quirk");
break;
}
if (sscanf(line, "%x%x", &quirk->vendor_id, &quirk->product_id) < 1)
{
fprintf(stderr, "DEBUG: Bad line: %s\n", line);
free(quirk);
continue;
}
if (strstr(line, " blacklist"))
quirk->quirks |= USB_QUIRK_BLACKLIST;
if (strstr(line, " no-reattach"))
quirk->quirks |= USB_QUIRK_NO_REATTACH;
if (strstr(line, " soft-reset"))
quirk->quirks |= USB_QUIRK_SOFT_RESET;
if (strstr(line, " unidir"))
quirk->quirks |= USB_QUIRK_UNIDIR;
if (strstr(line, " usb-init"))
quirk->quirks |= USB_QUIRK_USB_INIT;
if (strstr(line, " vendor-class"))
quirk->quirks |= USB_QUIRK_VENDOR_CLASS;
cupsArrayAdd(all_quirks, quirk);
}
cupsFileClose(fp);
}
fprintf(stderr, "DEBUG: Loaded %d quirks.\n", cupsArrayCount(all_quirks));
cupsDirClose(dir);
}
/*
* 'make_device_uri()' - Create a device URI for a USB printer.
*/
@@ -1086,15 +1431,20 @@ open_device(usb_printer_t *printer, /* I - Printer */
* Try opening the printer...
*/
if (libusb_open(printer->device, &printer->handle) < 0)
if ((errcode = libusb_open(printer->device, &printer->handle)) < 0)
{
fprintf(stderr, "DEBUG: Failed to open device, code: %d\n",
errcode);
return (-1);
}
printer->usblp_attached = 0;
printer->reset_after_job = 0;
if (verbose)
fputs("STATE: +connecting-to-device\n", stderr);
if ((errcode = libusb_get_device_descriptor (printer->device, &devdesc)) < 0)
if ((errcode = libusb_get_device_descriptor(printer->device, &devdesc)) < 0)
{
fprintf(stderr, "DEBUG: Failed to get device descriptor, code: %d\n",
errcode);
@@ -1142,12 +1492,22 @@ open_device(usb_printer_t *printer, /* I - Printer */
0, 0, (unsigned char *)&current, 1, 5000) < 0)
current = 0; /* Assume not configured */
libusb_get_device_descriptor(printer->device, &devdesc);
libusb_get_config_descriptor(printer->device, printer->conf, &confptr);
printer->origconf = current;
if ((errcode =
libusb_get_config_descriptor (printer->device, printer->conf, &confptr))
< 0)
{
fprintf(stderr, "DEBUG: Failed to get config descriptor for %04x:%04x\n",
devdesc.idVendor, devdesc.idProduct);
goto error;
}
number1 = confptr->bConfigurationValue;
if (number1 != current)
{
fprintf(stderr, "DEBUG: Switching USB device configuration: %d -> %d\n",
current, number1);
if ((errcode = libusb_set_configuration(printer->handle, number1)) < 0)
{
/*
@@ -1162,38 +1522,6 @@ open_device(usb_printer_t *printer, /* I - Printer */
}
}
/*
* Get the "usblp" kernel module out of the way. This backend only
* works without the module attached.
*/
errcode = libusb_kernel_driver_active(printer->handle, printer->iface);
if (errcode == 0)
printer->usblp_attached = 0;
else if (errcode == 1)
{
printer->usblp_attached = 1;
if ((errcode =
libusb_detach_kernel_driver(printer->handle, printer->iface)) < 0)
{
fprintf(stderr, "DEBUG: Failed to detach \"usblp\" module from %04x:%04x\n",
devdesc.idVendor, devdesc.idProduct);
goto error;
}
}
else
{
printer->usblp_attached = 0;
if (errcode != LIBUSB_ERROR_NOT_SUPPORTED)
{
fprintf(stderr,
"DEBUG: Failed to check whether %04x:%04x has the \"usblp\" "
"kernel module attached\n", devdesc.idVendor, devdesc.idProduct);
goto error;
}
}
/*
* Claim interfaces as needed...
*/
@@ -1581,13 +1909,15 @@ sidechannel_thread(void *reference)
* 'soft_reset()' - Send a soft reset to the device.
*/
static void soft_reset(void)
static void
soft_reset(void)
{
fd_set input_set; /* Input set for select() */
struct timeval tv; /* Time value */
char buffer[2048]; /* Buffer */
struct timespec cond_timeout; /* pthread condition timeout */
/*
* Send an abort once a second until the I/O lock is released by the main
* thread...
@@ -1632,7 +1962,7 @@ static void soft_reset(void)
* Send the reset...
*/
libusb_reset_device (g.printer->handle);
soft_reset_printer(g.printer);
/*
* Release the I/O lock...
@@ -1645,6 +1975,51 @@ static void soft_reset(void)
}
/*
* 'soft_reset_printer()' - Do the soft reset request specific to printers
*
* This soft reset is specific to the printer device class and is much less
* invasive than the general USB reset libusb_reset_device(). Especially it
* does never happen that the USB addressing and configuration changes. What
* is actually done is that all buffers get flushed and the bulk IN and OUT
* pipes get reset to their default states. This clears all stall conditions.
* See http://cholla.mmto.org/computers/linux/usb/usbprint11.pdf
*/
static int /* O - 0 on success, < 0 on error */
soft_reset_printer(
usb_printer_t *printer) /* I - Printer */
{
struct libusb_config_descriptor *confptr = NULL;
/* Pointer to current configuration */
int interface, /* Interface to reset */
errcode; /* Error code */
if (libusb_get_config_descriptor(printer->device, printer->conf,
&confptr) < 0)
interface = printer->iface;
else
interface = confptr->interface[printer->iface].
altsetting[printer->altset].bInterfaceNumber;
libusb_free_config_descriptor(confptr);
if ((errcode = libusb_control_transfer(printer->handle,
LIBUSB_REQUEST_TYPE_CLASS |
LIBUSB_ENDPOINT_OUT |
LIBUSB_RECIPIENT_OTHER,
2, 0, interface, NULL, 0, 5000)) < 0)
errcode = libusb_control_transfer(printer->handle,
LIBUSB_REQUEST_TYPE_CLASS |
LIBUSB_ENDPOINT_OUT |
LIBUSB_RECIPIENT_INTERFACE,
2, 0, interface, NULL, 0, 5000);
return (errcode);
}
/*
* End of "$Id$".
*/
-1
Ver Arquivo
@@ -257,7 +257,6 @@ list_devices(void)
close(fd);
}
#elif defined(__sgi)
#elif defined(__sun) && defined(ECPPIOC_GETDEVID)
int i; /* Looping var */
int fd; /* File descriptor */
+1
Ver Arquivo
@@ -88,6 +88,7 @@ install-exec:
$(INSTALL_DIR) $(SYMROOT); \
for file in $(TARGETS); do \
cp $$file $(SYMROOT); \
dsymutil $(SYMROOT)/$$file; \
done \
fi
+31 -26
Ver Arquivo
@@ -3,7 +3,7 @@
*
* "lpq" command for CUPS.
*
* Copyright 2007-2011 by Apple Inc.
* Copyright 2007-2013 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -60,8 +60,7 @@ main(int argc, /* I - Number of command-line arguments */
all, /* All printers */
interval, /* Reporting interval */
longstatus; /* Show file details */
int num_dests; /* Number of destinations */
cups_dest_t *dests; /* Destinations */
cups_dest_t *named_dest; /* Named destination */
_cupsSetLocale(argv);
@@ -77,8 +76,6 @@ main(int argc, /* I - Number of command-line arguments */
interval = 0;
longstatus = 0;
all = 0;
num_dests = 0;
dests = NULL;
for (i = 1; i < argc; i ++)
if (argv[i][0] == '+')
@@ -127,7 +124,6 @@ main(int argc, /* I - Number of command-line arguments */
if (i >= argc)
{
httpClose(http);
cupsFreeDests(num_dests, dests);
usage();
}
@@ -140,12 +136,14 @@ main(int argc, /* I - Number of command-line arguments */
http = connect_server(argv[0], http);
if (num_dests == 0)
num_dests = cupsGetDests2(http, &dests);
if (cupsGetDest(dest, instance, num_dests, dests) == NULL)
if ((named_dest = cupsGetNamedDest(http, dest, instance)) == NULL)
{
if (instance)
if (cupsLastError() == IPP_STATUS_ERROR_BAD_REQUEST ||
cupsLastError() == IPP_STATUS_ERROR_VERSION_NOT_SUPPORTED)
_cupsLangPrintf(stderr,
_("%s: Error - add '/version=1.1' to server "
"name."), argv[0]);
else if (instance)
_cupsLangPrintf(stderr,
_("%s: Error - unknown destination \"%s/%s\"."),
argv[0], dest, instance);
@@ -155,6 +153,8 @@ main(int argc, /* I - Number of command-line arguments */
return (1);
}
cupsFreeDests(1, named_dest);
break;
case 'a' : /* All printers */
@@ -192,7 +192,6 @@ main(int argc, /* I - Number of command-line arguments */
default :
httpClose(http);
cupsFreeDests(num_dests, dests);
usage();
break;
@@ -207,15 +206,17 @@ main(int argc, /* I - Number of command-line arguments */
if (dest == NULL && !all)
{
if (num_dests == 0)
num_dests = cupsGetDests2(http, &dests);
for (i = 0; i < num_dests; i ++)
if (dests[i].is_default)
dest = dests[i].name;
if (dest == NULL)
if ((named_dest = cupsGetNamedDest(http, NULL, NULL)) == NULL)
{
if (cupsLastError() == IPP_STATUS_ERROR_BAD_REQUEST ||
cupsLastError() == IPP_STATUS_ERROR_VERSION_NOT_SUPPORTED)
{
_cupsLangPrintf(stderr,
_("%s: Error - add '/version=1.1' to server name."),
argv[0]);
return (1);
}
val = NULL;
if ((dest = getenv("LPDEST")) == NULL)
@@ -231,7 +232,7 @@ main(int argc, /* I - Number of command-line arguments */
else
val = "LPDEST";
if (dest && !cupsGetDest(dest, NULL, num_dests, dests))
if (dest && val)
_cupsLangPrintf(stderr,
_("%s: Error - %s environment variable names "
"non-existent destination \"%s\"."), argv[0], val,
@@ -241,9 +242,10 @@ main(int argc, /* I - Number of command-line arguments */
_("%s: Error - no default destination available."),
argv[0]);
httpClose(http);
cupsFreeDests(num_dests, dests);
return (1);
}
dest = named_dest->name;
}
/*
@@ -270,7 +272,6 @@ main(int argc, /* I - Number of command-line arguments */
* Close the connection to the server and return...
*/
cupsFreeDests(num_dests, dests);
httpClose(http);
return (0);
@@ -371,6 +372,7 @@ show_jobs(const char *command, /* I - Command name */
* attributes-natural-language
* job-uri or printer-uri
* requested-attributes
* requesting-user-name
*/
request = ippNewRequest(id ? IPP_GET_JOB_ATTRIBUTES : IPP_GET_JOBS);
@@ -399,6 +401,9 @@ show_jobs(const char *command, /* I - Command name */
"requesting-user-name", NULL, user);
ippAddBoolean(request, IPP_TAG_OPERATION, "my-jobs", 1);
}
else
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME,
"requesting-user-name", NULL, cupsUser());
ippAddStrings(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD,
"requested-attributes",
@@ -447,8 +452,8 @@ show_jobs(const char *command, /* I - Command name */
jobpriority = 50;
#endif /* __osf__ */
jobstate = IPP_JOB_PENDING;
jobname = "untitled";
jobuser = NULL;
jobname = "unknown";
jobuser = "unknown";
jobdest = NULL;
jobcopies = 1;
@@ -523,7 +528,7 @@ show_jobs(const char *command, /* I - Command name */
*/
if (jobstate == IPP_JOB_PROCESSING)
strcpy(rankstr, "active");
strlcpy(rankstr, "active", sizeof(rankstr));
else
{
/*
+19 -1
Ver Arquivo
@@ -3,7 +3,7 @@
*
* "lpr" command for CUPS.
*
* Copyright 2007-2012 by Apple Inc.
* Copyright 2007-2013 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -61,6 +61,7 @@ main(int argc, /* I - Number of command-line arguments */
for (i = 1; i < argc; i ++)
if (argv[i][0] == '-')
{
switch (ch = argv[i][1])
{
case 'E' : /* Encrypt */
@@ -226,6 +227,14 @@ main(int argc, /* I - Number of command-line arguments */
dest->options[j].value,
num_options, &options);
}
else if (cupsLastError() == IPP_STATUS_ERROR_BAD_REQUEST ||
cupsLastError() == IPP_STATUS_ERROR_VERSION_NOT_SUPPORTED)
{
_cupsLangPrintf(stderr,
_("%s: Error - add '/version=1.1' to server "
"name."), argv[0]);
return (1);
}
break;
case '#' : /* Number of copies */
@@ -275,6 +284,7 @@ main(int argc, /* I - Number of command-line arguments */
argv[i][1]);
return (1);
}
}
else if (num_files < 1000)
{
/*
@@ -320,6 +330,14 @@ main(int argc, /* I - Number of command-line arguments */
dest->options[j].value,
num_options, &options);
}
else if (cupsLastError() == IPP_STATUS_ERROR_BAD_REQUEST ||
cupsLastError() == IPP_STATUS_ERROR_VERSION_NOT_SUPPORTED)
{
_cupsLangPrintf(stderr,
_("%s: Error - add '/version=1.1' to server "
"name."), argv[0]);
return (1);
}
}
if (printer == NULL)
+2
Ver Arquivo
@@ -120,6 +120,7 @@ install-exec:
$(INSTALL_DIR) $(SYMROOT); \
for file in $(CGIS); do \
cp $$file $(SYMROOT); \
dsymutil $(SYMROOT)/$$file; \
done \
fi
@@ -154,6 +155,7 @@ install-libs: $(INSTALLSTATIC)
if test "x$(SYMROOT)" != "x"; then \
$(INSTALL_DIR) $(SYMROOT); \
cp $(LIBCUPSCGI) $(SYMROOT); \
dsymutil $(SYMROOT)/$(LIBCUPSCGI); \
fi
installstatic:
+13 -13
Ver Arquivo
@@ -962,13 +962,13 @@ do_am_printer(http_t *http, /* I - HTTP connection */
else if (!_cups_strncasecmp(make, "laserjet", 8) ||
!_cups_strncasecmp(make, "deskjet", 7) ||
!_cups_strncasecmp(make, "designjet", 9))
strcpy(make, "HP");
strlcpy(make, "HP", sizeof(make));
else if (!_cups_strncasecmp(make, "phaser", 6))
strcpy(make, "Xerox");
strlcpy(make, "Xerox", sizeof(make));
else if (!_cups_strncasecmp(make, "stylus", 6))
strcpy(make, "Epson");
strlcpy(make, "Epson", sizeof(make));
else
strcpy(make, "Generic");
strlcpy(make, "Generic", sizeof(make));
if (!cgiGetVariable("CURRENT_MAKE"))
cgiSetVariable("CURRENT_MAKE", make);
@@ -1348,20 +1348,20 @@ do_am_printer(http_t *http, /* I - HTTP connection */
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
NULL, uri);
if (!file)
{
var = cgiGetVariable("PPD_NAME");
if (strcmp(var, "__no_change__"))
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "ppd-name",
NULL, var);
}
ippAddString(request, IPP_TAG_PRINTER, IPP_TAG_TEXT, "printer-location",
NULL, cgiGetVariable("PRINTER_LOCATION"));
ippAddString(request, IPP_TAG_PRINTER, IPP_TAG_TEXT, "printer-info",
NULL, cgiGetVariable("PRINTER_INFO"));
if (!file)
{
var = cgiGetVariable("PPD_NAME");
if (strcmp(var, "__no_change__"))
ippAddString(request, IPP_TAG_PRINTER, IPP_TAG_NAME, "ppd-name",
NULL, var);
}
strlcpy(uri, cgiGetVariable("DEVICE_URI"), sizeof(uri));
/*
@@ -4187,7 +4187,7 @@ get_option_value(
if (bufptr == buffer || (bufend - bufptr) < 2)
return (NULL);
strcpy(bufptr, "}");
memcpy(bufptr, "}", 2);
}
return (buffer);
+1 -1
Ver Arquivo
@@ -380,7 +380,7 @@ show_all_classes(http_t *http, /* I - Connection to server */
sprintf(val, "%d", count);
cgiSetVariable("TOTAL", val);
if ((var = cgiGetVariable("ORDER")) != NULL)
if ((var = cgiGetVariable("ORDER")) != NULL && *var)
ascending = !_cups_strcasecmp(var, "asc");
else
ascending = 1;
+2 -2
Ver Arquivo
@@ -3,7 +3,7 @@
*
* Online help index routines for CUPS.
*
* Copyright 2007-2011 by Apple Inc.
* Copyright 2007-2012 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -910,7 +910,7 @@ help_load_file(
node = NULL;
offset = 0;
strcpy(section, "Other");
strlcpy(section, "Other", sizeof(section));
while (cupsFileGets(fp, line, sizeof(line)))
{
+6 -5
Ver Arquivo
@@ -129,7 +129,7 @@ cgiGetAttributes(ipp_t *request, /* I - IPP request */
*nameptr = '\0';
if (!strncmp(name, "printer_state_history", 21))
strcpy(name, "printer_state_history");
strlcpy(name, "printer_state_history", sizeof(name));
/*
* Possibly add it to the list of attributes...
@@ -554,7 +554,7 @@ cgiPrintCommand(http_t *http, /* I - Connection to server */
ipp_t *request, /* Get-Job-Attributes request */
*response; /* Get-Job-Attributes response */
ipp_attribute_t *attr; /* Current job attribute */
static const char const *job_attrs[] =/* Job attributes we want */
static const char * const job_attrs[] =/* Job attributes we want */
{
"job-state",
"job-printer-state-message"
@@ -1432,7 +1432,7 @@ cgiShowJobs(http_t *http, /* I - Connection to server */
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri", NULL,
"ipp://localhost/");
if ((which_jobs = cgiGetVariable("which_jobs")) != NULL)
if ((which_jobs = cgiGetVariable("which_jobs")) != NULL && *which_jobs)
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD, "which-jobs",
NULL, which_jobs);
@@ -1480,10 +1480,11 @@ cgiShowJobs(http_t *http, /* I - Connection to server */
if (first < 0)
first = 0;
if ((var = cgiGetVariable("ORDER")) != NULL)
if ((var = cgiGetVariable("ORDER")) != NULL && *var)
ascending = !_cups_strcasecmp(var, "asc");
else
ascending = !which_jobs || !_cups_strcasecmp(which_jobs, "not-completed");
ascending = !which_jobs || !*which_jobs ||
!_cups_strcasecmp(which_jobs, "not-completed");
section = cgiGetVariable("SECTION");
+1 -1
Ver Arquivo
@@ -182,7 +182,7 @@ do_job_op(http_t *http, /* I - HTTP connection */
char url[1024]; /* Encoded URL */
strcpy(url, "5;URL=");
strlcpy(url, "5;URL=", sizeof(url));
cgiFormEncode(url + 6, getenv("HTTP_REFERER"), sizeof(url) - 6);
cgiSetVariable("refresh_page", url);
}
+1 -1
Ver Arquivo
@@ -397,7 +397,7 @@ show_all_printers(http_t *http, /* I - Connection to server */
sprintf(val, "%d", count);
cgiSetVariable("TOTAL", val);
if ((var = cgiGetVariable("ORDER")) != NULL)
if ((var = cgiGetVariable("ORDER")) != NULL && *var)
ascending = !_cups_strcasecmp(var, "asc");
else
ascending = 1;
+7 -7
Ver Arquivo
@@ -3,7 +3,7 @@
*
* Search routines for CUPS.
*
* Copyright 2007-2011 by Apple Inc.
* Copyright 2007-2012 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -208,7 +208,7 @@ cgiCompileSearch(const char *query) /* I - Query string */
* Add the prefix string...
*/
strcpy(sptr, prefix);
memcpy(sptr, prefix, strlen(prefix) + 1);
sptr += strlen(sptr);
/*
@@ -249,16 +249,16 @@ cgiCompileSearch(const char *query) /* I - Query string */
return (NULL);
}
strcpy(sptr, ".*|.*");
memcpy(sptr, ".*|.*", 6);
sptr += 5;
strcpy(sptr, lword2);
memcpy(sptr, lword2, strlen(lword2) + 1);
sptr += strlen(sptr);
strcpy(sptr, ".*");
memcpy(sptr, ".*", 3);
sptr += 2;
strcpy(sptr, lword);
memcpy(sptr, lword, strlen(lword) + 1);
sptr += strlen(sptr);
free(lword);
@@ -287,7 +287,7 @@ cgiCompileSearch(const char *query) /* I - Query string */
free(lword);
if (sptr > s)
strcpy(sptr, ".*");
memcpy(sptr, ".*", 3);
else
{
/*
+2 -2
Ver Arquivo
@@ -3,7 +3,7 @@
#
# Configuration file makefile for CUPS.
#
# Copyright 2007-2011 by Apple Inc.
# Copyright 2007-2012 by Apple Inc.
# Copyright 1993-2006 by Easy Software Products.
#
# These coded instructions, statements, and computer programs are the
@@ -19,7 +19,7 @@ include ../Makedefs
# Config files...
#
KEEP = cupsd.conf snmp.conf
KEEP = cups-files.conf cupsd.conf snmp.conf
REPLACE = mime.convs mime.types
+101
Ver Arquivo
@@ -0,0 +1,101 @@
#
# "$Id$"
#
# Sample file/directory/user/group configuration file for the CUPS scheduler.
# See "man cups-files.conf" for a complete description of this file.
#
# List of events that are considered fatal errors for the scheduler...
#FatalErrors @CUPS_FATAL_ERRORS@
# Do we call fsync() after writing configuration or status files?
#SyncOnClose No
# Default user and group for filters/backends/helper programs; this cannot be
# any user or group that resolves to ID 0 for security reasons...
#User @CUPS_USER@
#Group @CUPS_GROUP@
# Administrator user group, used to match @SYSTEM in cupsd.conf policy rules...
SystemGroup @CUPS_SYSTEM_GROUPS@
@CUPS_SYSTEM_AUTHKEY@
# User that is substituted for unauthenticated (remote) root accesses...
#RemoteRoot remroot
# Do we allow file: device URIs other than to /dev/null?
#FileDevice No
# Permissions for configuration and log files...
#ConfigFilePerm 0@CUPS_CONFIG_FILE_PERM@
#LogFilePerm 0@CUPS_LOG_FILE_PERM@
# Location of the file logging all access to the scheduler; may be the name
# "syslog". If not an absolute path, the value of ServerRoot is used as the
# root directory. Also see the "AccessLogLevel" directive in cupsd.conf.
AccessLog @CUPS_LOGDIR@/access_log
# Location of cache files used by the scheduler...
#CacheDir @CUPS_CACHEDIR@
# Location of data files used by the scheduler...
#DataDir @CUPS_DATADIR@
# Location of the static web content served by the scheduler...
#DocumentRoot @CUPS_DOCROOT@
# Location of the file logging all messages produced by the scheduler and any
# helper programs; may be the name "syslog". If not an absolute path, the value
# of ServerRoot is used as the root directory. Also see the "LogLevel"
# directive in cupsd.conf.
ErrorLog @CUPS_LOGDIR@/error_log
# Location of fonts used by older print filters...
#FontPath @CUPS_FONTPATH@
# Location of LPD configuration
#LPDConfigFile @CUPS_DEFAULT_LPD_CONFIG_FILE@
# Location of the file logging all pages printed by the scheduler and any
# helper programs; may be the name "syslog". If not an absolute path, the value
# of ServerRoot is used as the root directory. Also see the "PageLogFormat"
# directive in cupsd.conf.
PageLog @CUPS_LOGDIR@/page_log
# Location of the file listing all of the local printers...
#Printcap @CUPS_DEFAULT_PRINTCAP@
# Format of the Printcap file...
#PrintcapFormat bsd
#PrintcapFormat plist
#PrintcapFormat solaris
# Location of all spool files...
#RequestRoot @CUPS_REQUESTS@
# Location of helper programs...
#ServerBin @CUPS_SERVERBIN@
# SSL/TLS certificate for the scheduler...
#ServerCertificate @CUPS_SERVERCERT@
# SSL/TLS private key for the scheduler...
#ServerKey @CUPS_SERVERKEY@
# Location of other configuration files...
#ServerRoot @CUPS_SERVERROOT@
# Location of Samba configuration file...
#SMBConfigFile @CUPS_DEFAULT_SMB_CONFIG_FILE@
# Location of scheduler state files...
#StateDir @CUPS_STATEDIR@
# Location of scheduler/helper temporary files. This directory is emptied on
# scheduler startup and cannot be one of the standard (public) temporary
# directory locations for security reasons...
#TempDir @CUPS_REQUESTS@/tmp
#
# End of "$Id$".
#
-6
Ver Arquivo
@@ -9,18 +9,12 @@
# for troubleshooting...
LogLevel @CUPS_LOG_LEVEL@
# Administrator user group...
SystemGroup @CUPS_SYSTEM_GROUPS@
@CUPS_SYSTEM_AUTHKEY@
# Only listen for connections from the local machine.
Listen localhost:@DEFAULT_IPP_PORT@
@CUPS_LISTEN_DOMAINSOCKET@
# Show shared printers on the local network.
Browsing On
BrowseOrder allow,deny
BrowseAllow all
BrowseLocalProtocols @CUPS_BROWSE_LOCAL_PROTOCOLS@
# Default authentication type, when authentication is required...
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
#
# "$Id: mime.types 9871 2011-08-06 06:34:46Z mike $"
# "$Id: mime.types 7670 2008-06-17 22:42:08Z mike $"
#
# Base MIME types file for CUPS.
#
@@ -170,5 +170,5 @@ application/vnd.cups-raw (string(0,<1B>E) + !string(2,<1B>%0B)) \
application/octet-stream
#
# End of "$Id: mime.types 9871 2011-08-06 06:34:46Z mike $".
# End of "$Id: mime.types 7670 2008-06-17 22:42:08Z mike $".
#
+22 -12
Ver Arquivo
@@ -1,9 +1,9 @@
dnl
dnl "$Id: cups-common.m4 10512 2012-05-25 02:19:37Z mike $"
dnl "$Id: cups-common.m4 8781 2009-08-28 17:34:54Z mike $"
dnl
dnl Common configuration stuff for CUPS.
dnl
dnl Copyright 2007-2012 by Apple Inc.
dnl Copyright 2007-2013 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
@@ -20,11 +20,11 @@ dnl Set the name of the config header file...
AC_CONFIG_HEADER(config.h)
dnl Version number information...
CUPS_VERSION="1.6b1"
CUPS_VERSION="1.7.0"
CUPS_REVISION=""
if test -z "$CUPS_REVISION" -a -d .svn; then
CUPS_REVISION="-r`svnversion . | awk -F: '{print $NF}' | sed -e '1,$s/[[a-zA-Z]]*//g'`"
fi
#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'`"
#fi
CUPS_BUILD="cups-$CUPS_VERSION"
AC_ARG_WITH(cups_build, [ --with-cups-build set "cups-config --build" string ],
@@ -44,9 +44,9 @@ LDFLAGS="${LDFLAGS:=}"
dnl Checks for programs...
AC_PROG_AWK
AC_PROG_CC
AC_PROG_CC(clang cc gcc)
AC_PROG_CPP
AC_PROG_CXX
AC_PROG_CXX(clang++ c++ g++)
AC_PROG_RANLIB
AC_PATH_PROG(AR,ar)
AC_PATH_PROG(CHMOD,chmod)
@@ -130,6 +130,7 @@ AC_CHECK_HEADER(crypt.h,AC_DEFINE(HAVE_CRYPT_H))
AC_CHECK_HEADER(langinfo.h,AC_DEFINE(HAVE_LANGINFO_H))
AC_CHECK_HEADER(malloc.h,AC_DEFINE(HAVE_MALLOC_H))
AC_CHECK_HEADER(shadow.h,AC_DEFINE(HAVE_SHADOW_H))
AC_CHECK_HEADER(stdint.h,AC_DEFINE(HAVE_STDINT_H))
AC_CHECK_HEADER(string.h,AC_DEFINE(HAVE_STRING_H))
AC_CHECK_HEADER(strings.h,AC_DEFINE(HAVE_STRINGS_H))
AC_CHECK_HEADER(bstring.h,AC_DEFINE(HAVE_BSTRING_H))
@@ -224,7 +225,9 @@ dnl See if we have libusb...
AC_ARG_ENABLE(libusb, [ --enable-libusb use libusb for USB printing])
LIBUSB=""
USBQUIRKS=""
AC_SUBST(LIBUSB)
AC_SUBST(USBQUIRKS)
if test "x$PKGCONFIG" != x; then
if test x$enable_libusb = xyes -o $uname != Darwin; then
@@ -234,6 +237,7 @@ if test "x$PKGCONFIG" != x; then
AC_DEFINE(HAVE_LIBUSB)
CFLAGS="$CFLAGS `$PKGCONFIG --cflags libusb-1.0`"
LIBUSB="`$PKGCONFIG --libs libusb-1.0`"
USBQUIRKS="\$(DATADIR)/usb"
else
AC_MSG_RESULT(no)
fi
@@ -263,6 +267,7 @@ AC_CHECK_HEADER(zlib.h,
AC_DEFINE(HAVE_LIBZ)
LIBZ="-lz"
LIBS="$LIBS -lz"
AC_CHECK_LIB(z, inflateCopy, AC_DEFINE(HAVE_INFLATECOPY))
if test "x$GZIP" != z; then
INSTALL_GZIP="-z"
fi))
@@ -304,7 +309,7 @@ else
DBUSDIR=""
fi
AC_ARG_ENABLE(dbus, [ --enable-dbus build with DBUS support])
AC_ARG_ENABLE(dbus, [ --disable-dbus build without DBUS support])
AC_ARG_WITH(dbusdir, [ --with-dbusdir set DBUS configuration directory ],
DBUSDIR="$withval")
@@ -336,6 +341,7 @@ AC_SUBST(DBUS_NOTIFIERLIBS)
dnl Extra platform-specific libraries...
CUPS_DEFAULT_PRINTOPERATOR_AUTH="@SYSTEM"
CUPS_DEFAULT_SYSTEM_AUTHKEY=""
CUPS_SYSTEM_AUTHKEY=""
INSTALLXPC=""
@@ -383,10 +389,13 @@ case $uname in
if test "x$default_adminkey" != xdefault; then
CUPS_SYSTEM_AUTHKEY="SystemGroupAuthKey $default_adminkey"
CUPS_DEFAULT_SYSTEM_AUTHKEY="$default_adminkey"
elif grep -q system.print.operator /etc/authorization; then
CUPS_SYSTEM_AUTHKEY="SystemGroupAuthKey system.print.admin"
CUPS_DEFAULT_SYSTEM_AUTHKEY="system.print.admin"
else
CUPS_SYSTEM_AUTHKEY="SystemGroupAuthKey system.preferences"
CUPS_DEFAULT_SYSTEM_AUTHKEY="system.preferences"
fi
if test "x$default_operkey" != xdefault; then
@@ -402,8 +411,8 @@ case $uname in
if test $uversion -ge 100; then
AC_CHECK_HEADER(sandbox.h,AC_DEFINE(HAVE_SANDBOX_H))
fi
if test $uversion -ge 110; then
# Broken public headers in 10.7...
if test $uversion -ge 110 -a $uversion -lt 120; then
# Broken public headers in 10.7.x...
AC_MSG_CHECKING(for sandbox/private.h presence)
if test -f /usr/local/include/sandbox/private.h; then
AC_MSG_RESULT(yes)
@@ -424,6 +433,7 @@ esac
AC_SUBST(CUPS_DEFAULT_PRINTOPERATOR_AUTH)
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_PRINTOPERATOR_AUTH, "$CUPS_DEFAULT_PRINTOPERATOR_AUTH")
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_SYSTEM_AUTHKEY, "$CUPS_DEFAULT_SYSTEM_AUTHKEY")
AC_SUBST(CUPS_SYSTEM_AUTHKEY)
AC_SUBST(INSTALLXPC)
@@ -452,5 +462,5 @@ esac
AC_SUBST(BUILDDIRS)
dnl
dnl End of "$Id: cups-common.m4 10512 2012-05-25 02:19:37Z mike $".
dnl End of "$Id: cups-common.m4 8781 2009-08-28 17:34:54Z mike $".
dnl
+32 -31
Ver Arquivo
@@ -1,9 +1,9 @@
dnl
dnl "$Id: cups-compiler.m4 10190 2012-01-20 16:22:58Z mike $"
dnl "$Id: cups-compiler.m4 7871 2008-08-27 21:12:43Z mike $"
dnl
dnl Compiler stuff for CUPS.
dnl
dnl Copyright 2007-2012 by Apple Inc.
dnl Copyright 2007-2013 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
@@ -114,29 +114,43 @@ if test -n "$GCC"; then
OLDCFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -fstack-protector"
AC_TRY_LINK(,,
OPTIM="$OPTIM -fstack-protector"
if test "x$LSB_BUILD" = xy; then
# Can't use stack-protector with LSB binaries...
OPTIM="$OPTIM -fno-stack-protector"
else
OPTIM="$OPTIM -fstack-protector"
fi
AC_MSG_RESULT(yes),
AC_MSG_RESULT(no))
CFLAGS="$OLDCFLAGS"
# The -fPIE option is available with some versions of GCC and adds
# randomization of addresses, which avoids another class of exploits
# that depend on a fixed address for common functions.
AC_MSG_CHECKING(if GCC supports -fPIE)
OLDCFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -fPIE"
AC_TRY_COMPILE(,,
[case "$CC" in
*clang)
PIEFLAGS="-fPIE -Wl,-pie"
if test "x$LSB_BUILD" != xy; then
# The -fPIE option is available with some versions of GCC and
# adds randomization of addresses, which avoids another class of
# exploits that depend on a fixed address for common functions.
#
# Not available to LSB binaries...
AC_MSG_CHECKING(if GCC supports -fPIE)
OLDCFLAGS="$CFLAGS"
case "$uname" in
Darwin*)
CFLAGS="$CFLAGS -fPIE -Wl,-pie"
AC_TRY_COMPILE(,,[
PIEFLAGS="-fPIE -Wl,-pie"
AC_MSG_RESULT(yes)],
AC_MSG_RESULT(no))
;;
*)
PIEFLAGS="-fPIE -pie"
CFLAGS="$CFLAGS -fPIE -pie"
AC_TRY_COMPILE(,,[
PIEFLAGS="-fPIE -pie"
AC_MSG_RESULT(yes)],
AC_MSG_RESULT(no))
;;
esac
AC_MSG_RESULT(yes)],
AC_MSG_RESULT(no))
CFLAGS="$OLDCFLAGS"
CFLAGS="$OLDCFLAGS"
fi
if test "x$with_optim" = x; then
# Add useful warning options for tracking down problems...
@@ -202,19 +216,6 @@ else
OPTIM="+z $OPTIM"
fi
;;
IRIX)
if test -z "$OPTIM"; then
if test "x$with_optim" = x; then
OPTIM="-O2"
else
OPTIM="$with_optim $OPTIM"
fi
fi
if test "x$with_optim" = x; then
OPTIM="-fullwarn -woff 1183,1209,1349,1506,3201 $OPTIM"
fi
;;
OSF*)
# Tru64 UNIX aka Digital UNIX aka OSF/1
if test -z "$OPTIM"; then
@@ -295,5 +296,5 @@ case $uname in
esac
dnl
dnl End of "$Id: cups-compiler.m4 10190 2012-01-20 16:22:58Z mike $".
dnl End of "$Id: cups-compiler.m4 7871 2008-08-27 21:12:43Z mike $".
dnl
+4 -2
Ver Arquivo
@@ -1,5 +1,5 @@
dnl
dnl "$Id: cups-defaults.m4 10424 2012-04-23 17:26:57Z mike $"
dnl "$Id: cups-defaults.m4 7959 2008-09-17 19:30:58Z mike $"
dnl
dnl Default cupsd configuration settings for CUPS.
dnl
@@ -305,6 +305,7 @@ else
fi
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_LPD_CONFIG_FILE, "$CUPS_DEFAULT_LPD_CONFIG_FILE")
AC_SUBST(CUPS_DEFAULT_LPD_CONFIG_FILE)
dnl Default SMB config file...
AC_ARG_WITH(smbconfigfile, [ --with-smbconfigfile set default SMBConfigFile URI],
@@ -326,6 +327,7 @@ else
fi
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_SMB_CONFIG_FILE, "$CUPS_DEFAULT_SMB_CONFIG_FILE")
AC_SUBST(CUPS_DEFAULT_SMB_CONFIG_FILE)
dnl Default MaxCopies value...
AC_ARG_WITH(max-copies, [ --with-max-copies set default max copies value, default=9999 ],
@@ -398,5 +400,5 @@ AC_SUBST(CUPS_WEBIF)
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_WEBIF, $CUPS_DEFAULT_WEBIF)
dnl
dnl End of "$Id: cups-defaults.m4 10424 2012-04-23 17:26:57Z mike $".
dnl End of "$Id: cups-defaults.m4 7959 2008-09-17 19:30:58Z mike $".
dnl
+15 -24
Ver Arquivo
@@ -1,9 +1,9 @@
dnl
dnl "$Id: cups-directories.m4 10424 2012-04-23 17:26:57Z mike $"
dnl "$Id: cups-directories.m4 7799 2008-07-25 20:06:08Z mike $"
dnl
dnl Directory stuff for CUPS.
dnl
dnl Copyright 2007-2012 by Apple Inc.
dnl Copyright 2007-2013 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
@@ -102,11 +102,8 @@ fi
dnl Fix "libdir" variable...
if test "$libdir" = "\${exec_prefix}/lib"; then
case "$uname" in
IRIX*)
libdir="$exec_prefix/lib32"
;;
Linux*)
if test -d /usr/lib64; then
if test -d /usr/lib64 -a ! -d /usr/lib64/fakeroot; then
libdir="$exec_prefix/lib64"
fi
;;
@@ -169,13 +166,6 @@ if test x$rcdir = x; then
RCSTOP="620"
;;
IRIX*)
# IRIX
INITDIR="/etc"
RCSTART="60"
RCSTOP="25"
;;
Linux | GNU | GNU/k*BSD*)
# Linux/HURD seems to choose an init.d directory at random...
if test -d /sbin/init.d; then
@@ -422,19 +412,20 @@ AC_DEFINE_UNQUOTED(CUPS_SERVERROOT, "$sysconfdir/cups")
AC_SUBST(CUPS_SERVERROOT)
# Transient run-time state
case "$uname" in
Darwin*)
# Darwin (OS X)
CUPS_STATEDIR="$CUPS_SERVERROOT"
;;
*)
# All others
CUPS_STATEDIR="$localstatedir/run/cups"
;;
esac
AC_ARG_WITH(rundir, [ --with-rundir set transient run-time state directory],CUPS_STATEDIR="$withval",[
case "$uname" in
Darwin*)
# Darwin (OS X)
CUPS_STATEDIR="$CUPS_SERVERROOT"
;;
*)
# All others
CUPS_STATEDIR="$localstatedir/run/cups"
;;
esac])
AC_DEFINE_UNQUOTED(CUPS_STATEDIR, "$CUPS_STATEDIR")
AC_SUBST(CUPS_STATEDIR)
dnl
dnl End of "$Id: cups-directories.m4 10424 2012-04-23 17:26:57Z mike $".
dnl End of "$Id: cups-directories.m4 7799 2008-07-25 20:06:08Z mike $".
dnl
+12 -2
Ver Arquivo
@@ -1,5 +1,5 @@
dnl
dnl "$Id: cups-dnssd.m4 10471 2012-05-16 22:57:03Z mike $"
dnl "$Id: cups-dnssd.m4 7890 2008-08-29 22:19:39Z mike $"
dnl
dnl DNS Service Discovery (aka Bonjour) stuff for CUPS.
dnl
@@ -23,6 +23,8 @@ AC_ARG_WITH(dnssd-includes, [ --with-dnssd-includes set directory for DNS Ser
DNSSDLIBS=""
DNSSD_BACKEND=""
IPPFIND_BIN=""
IPPFIND_MAN=""
if test "x$PKGCONFIG" != x -a x$enable_avahi != xno; then
AC_MSG_CHECKING(for Avahi)
@@ -31,6 +33,8 @@ if test "x$PKGCONFIG" != x -a x$enable_avahi != xno; then
CFLAGS="$CFLAGS `$PKGCONFIG --cflags avahi-client`"
DNSSDLIBS="`$PKGCONFIG --libs avahi-client`"
DNSSD_BACKEND="dnssd"
IPPFIND_BIN="ippfind"
IPPFIND_MAN="ippfind.\$(MAN1EXT)"
AC_DEFINE(HAVE_AVAHI)
else
AC_MSG_RESULT(no)
@@ -45,6 +49,8 @@ if test "x$DNSSD_BACKEND" = x -a x$enable_dnssd != xno; then
AC_DEFINE(HAVE_DNSSD)
DNSSDLIBS="-framework CoreFoundation -framework SystemConfiguration"
DNSSD_BACKEND="dnssd"
IPPFIND_BIN="ippfind"
IPPFIND_MAN="ippfind.\$(MAN1EXT)"
;;
*)
# All others...
@@ -61,6 +67,8 @@ if test "x$DNSSD_BACKEND" = x -a x$enable_dnssd != xno; then
AC_DEFINE(HAVE_DNSSD)
DNSSDLIBS="-ldns_sd"
DNSSD_BACKEND="dnssd",
IPPFIND_BIN="ippfind"
IPPFIND_MAN="ippfind.\$(MAN1EXT)"
AC_MSG_RESULT(no))
LIBS="$SAVELIBS"
;;
@@ -70,7 +78,9 @@ fi
AC_SUBST(DNSSDLIBS)
AC_SUBST(DNSSD_BACKEND)
AC_SUBST(IPPFIND_BIN)
AC_SUBST(IPPFIND_MAN)
dnl
dnl End of "$Id: cups-dnssd.m4 10471 2012-05-16 22:57:03Z mike $".
dnl End of "$Id: cups-dnssd.m4 7890 2008-08-29 22:19:39Z mike $".
dnl
+4 -13
Ver Arquivo
@@ -1,5 +1,5 @@
dnl
dnl "$Id: cups-gssapi.m4 10424 2012-04-23 17:26:57Z mike $"
dnl "$Id$"
dnl
dnl GSSAPI/Kerberos library detection for CUPS.
dnl
@@ -86,13 +86,6 @@ if test x$enable_gssapi != xno; then
else
AC_MSG_RESULT(no)
fi
AC_MSG_CHECKING(for GSS/gssapi_krb5.h presence)
if test -f $gssdir/Headers/gssapi_krb5.h; then
AC_DEFINE(HAVE_GSSAPI_KRB5_H)
AC_MSG_RESULT(yes)
else
AC_MSG_RESULT(no)
fi
AC_MSG_CHECKING(for GSS/gssapi_spi.h presence)
if test -f $gssdir/PrivateHeaders/gssapi_spi.h; then
AC_MSG_RESULT(yes)
@@ -105,16 +98,14 @@ if test x$enable_gssapi != xno; then
fi
else
AC_MSG_RESULT(no)
if test $uversion -ge 110; then
# Broken public headers in 10.7...
if test $uversion -ge 110 -a $uversion -lt 120; then
# Broken public headers in 10.7.x...
AC_MSG_ERROR(Run 'sudo mkdir -p $gssdir/PrivateHeaders' and 'sudo touch $gssdir/PrivateHeaders/gssapi_spi.h' to build CUPS.)
fi
fi
else
AC_CHECK_HEADER(gssapi.h, AC_DEFINE(HAVE_GSSAPI_H))
AC_CHECK_HEADER(gssapi/gssapi.h, AC_DEFINE(HAVE_GSSAPI_GSSAPI_H))
AC_CHECK_HEADER(gssapi/gssapi_generic.h, AC_DEFINE(HAVE_GSSAPI_GENERIC_H))
AC_CHECK_HEADER(gssapi/gssapi_krb5.h, AC_DEFINE(HAVE_GSSAPI_KRB5_H))
fi
SAVELIBS="$LIBS"
@@ -167,5 +158,5 @@ AC_SUBST(CUPS_DEFAULT_GSSSERVICENAME)
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_GSSSERVICENAME, "$CUPS_DEFAULT_GSSSERVICENAME")
dnl
dnl End of "$Id: cups-gssapi.m4 10424 2012-04-23 17:26:57Z mike $".
dnl End of "$Id$".
dnl
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
dnl
dnl "$Id: cups-largefile.m4 9771 2011-05-12 05:21:56Z mike $"
dnl "$Id: cups-largefile.m4 6649 2007-07-11 21:46:42Z mike $"
dnl
dnl Large file support stuff for CUPS.
dnl
@@ -48,5 +48,5 @@ fi
AC_CHECK_FUNC(strtoll, AC_DEFINE(HAVE_STRTOLL))
dnl
dnl End of "$Id: cups-largefile.m4 9771 2011-05-12 05:21:56Z mike $".
dnl End of "$Id: cups-largefile.m4 6649 2007-07-11 21:46:42Z mike $".
dnl
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
dnl
dnl "$Id: cups-launchd.m4 8983 2010-02-13 02:20:23Z mike $"
dnl "$Id: cups-launchd.m4 6649 2007-07-11 21:46:42Z mike $"
dnl
dnl launchd stuff for CUPS.
dnl
@@ -39,5 +39,5 @@ AC_SUBST(DEFAULT_LAUNCHD_CONF)
AC_SUBST(LAUNCHDLIBS)
dnl
dnl End of "$Id: cups-launchd.m4 8983 2010-02-13 02:20:23Z mike $".
dnl End of "$Id: cups-launchd.m4 6649 2007-07-11 21:46:42Z mike $".
dnl
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
dnl
dnl "$Id: cups-libtool.m4 9771 2011-05-12 05:21:56Z mike $"
dnl "$Id: cups-libtool.m4 6649 2007-07-11 21:46:42Z mike $"
dnl
dnl Libtool stuff for CUPS.
dnl
@@ -35,5 +35,5 @@ if test x$LIBTOOL != x; then
fi
dnl
dnl End of "$Id: cups-libtool.m4 9771 2011-05-12 05:21:56Z mike $".
dnl End of "$Id: cups-libtool.m4 6649 2007-07-11 21:46:42Z mike $".
dnl
+2 -16
Ver Arquivo
@@ -1,5 +1,5 @@
dnl
dnl "$Id: cups-manpages.m4 10424 2012-04-23 17:26:57Z mike $"
dnl "$Id: cups-manpages.m4 6649 2007-07-11 21:46:42Z mike $"
dnl
dnl Manpage stuff for CUPS.
dnl
@@ -28,12 +28,6 @@ if test "$mandir" = "\${prefix}/man" -a "$prefix" = "/"; then
AMANDIR="/usr/share/man"
PMANDIR="/usr/share/man"
;;
IRIX)
# SGI IRIX
mandir="/usr/share/catman/u_man"
AMANDIR="/usr/share/catman/a_man"
PMANDIR="/usr/share/catman/p_man"
;;
*)
# All others
mandir="/usr/man"
@@ -51,14 +45,6 @@ AC_SUBST(PMANDIR)
dnl Setup manpage extensions...
case "$uname" in
IRIX*)
# SGI IRIX
MAN1EXT=1
MAN5EXT=5
MAN7EXT=7
MAN8EXT=1m
MAN8DIR=1
;;
SunOS* | HP-UX*)
# Solaris and HP-UX
MAN1EXT=1
@@ -92,5 +78,5 @@ AC_SUBST(MAN8EXT)
AC_SUBST(MAN8DIR)
dnl
dnl End of "$Id: cups-manpages.m4 10424 2012-04-23 17:26:57Z mike $".
dnl End of "$Id: cups-manpages.m4 6649 2007-07-11 21:46:42Z mike $".
dnl
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
dnl
dnl "$Id: cups-network.m4 9771 2011-05-12 05:21:56Z mike $"
dnl "$Id: cups-network.m4 7918 2008-09-08 22:03:01Z mike $"
dnl
dnl Networking stuff for CUPS.
dnl
@@ -70,5 +70,5 @@ AC_CHECK_HEADERS(AppleTalk/at_proto.h,AC_DEFINE(HAVE_APPLETALK_AT_PROTO_H),,
[#include <netat/appletalk.h>])
dnl
dnl End of "$Id: cups-network.m4 9771 2011-05-12 05:21:56Z mike $".
dnl End of "$Id: cups-network.m4 7918 2008-09-08 22:03:01Z mike $".
dnl
+10 -6
Ver Arquivo
@@ -1,9 +1,9 @@
dnl
dnl "$Id: cups-opsys.m4 9771 2011-05-12 05:21:56Z mike $"
dnl "$Id: cups-opsys.m4 6649 2007-07-11 21:46:42Z mike $"
dnl
dnl Operating system stuff for CUPS.
dnl
dnl Copyright 2007-2011 by Apple Inc.
dnl Copyright 2007-2012 by Apple Inc.
dnl Copyright 1997-2006 by Easy Software Products, all rights reserved.
dnl
dnl These coded instructions, statements, and computer programs are the
@@ -19,17 +19,21 @@ uversion=`uname -r | sed -e '1,$s/^[[^0-9]]*\([[0-9]]*\)\.\([[0-9]]*\).*/\1\2/'`
uarch=`uname -m`
case "$uname" in
Darwin*)
uname="Darwin"
if test $uversion -lt 120; then
AC_MSG_ERROR([Sorry, this version of CUPS requires OS X 10.8 or higher.])
fi
;;
GNU* | GNU/*)
uname="GNU"
;;
IRIX*)
uname="IRIX"
;;
Linux*)
uname="Linux"
;;
esac
dnl
dnl "$Id: cups-opsys.m4 9771 2011-05-12 05:21:56Z mike $"
dnl "$Id: cups-opsys.m4 6649 2007-07-11 21:46:42Z mike $"
dnl
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
dnl
dnl "$Id: cups-pam.m4 10424 2012-04-23 17:26:57Z mike $"
dnl "$Id: cups-pam.m4 7960 2008-09-17 19:42:02Z mike $"
dnl
dnl PAM stuff for CUPS.
dnl
@@ -98,5 +98,5 @@ AC_SUBST(PAMMOD)
AC_SUBST(PAMMODAUTH)
dnl
dnl End of "$Id: cups-pam.m4 10424 2012-04-23 17:26:57Z mike $".
dnl End of "$Id: cups-pam.m4 7960 2008-09-17 19:42:02Z mike $".
dnl
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
dnl
dnl "$Id: cups-poll.m4 9771 2011-05-12 05:21:56Z mike $"
dnl "$Id$"
dnl
dnl Select/poll stuff for CUPS.
dnl
@@ -18,5 +18,5 @@ AC_CHECK_FUNC(epoll_create, AC_DEFINE(HAVE_EPOLL))
AC_CHECK_FUNC(kqueue, AC_DEFINE(HAVE_KQUEUE))
dnl
dnl End of "$Id: cups-poll.m4 9771 2011-05-12 05:21:56Z mike $".
dnl End of "$Id$".
dnl
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
dnl
dnl "$Id: cups-scripting.m4 9927 2011-08-27 09:28:30Z mike $"
dnl "$Id: cups-scripting.m4 7915 2008-09-07 22:18:29Z mike $"
dnl
dnl Scripting configuration stuff for CUPS.
dnl
@@ -85,5 +85,5 @@ if test "x$CUPS_PYTHON" != x; then
fi
dnl
dnl End of "$Id: cups-scripting.m4 9927 2011-08-27 09:28:30Z mike $".
dnl End of "$Id: cups-scripting.m4 7915 2008-09-07 22:18:29Z mike $".
dnl
+4 -4
Ver Arquivo
@@ -1,5 +1,5 @@
dnl
dnl "$Id: cups-sharedlibs.m4 10190 2012-01-20 16:22:58Z mike $"
dnl "$Id: cups-sharedlibs.m4 7630 2008-06-09 22:31:44Z mike $"
dnl
dnl Shared library support for CUPS.
dnl
@@ -215,8 +215,8 @@ if test "$DSO" != ":"; then
EXPORT_LDFLAGS="-Wl,-R$libdir"
fi
;;
IRIX | Linux | GNU)
# IRIX, Linux, and HURD...
Linux | GNU)
# Linux, and HURD...
if test $exec_prefix != /usr; then
DSOFLAGS="-Wl,-rpath,$libdir $DSOFLAGS"
LDFLAGS="$LDFLAGS -Wl,-rpath,$libdir"
@@ -234,5 +234,5 @@ AC_SUBST(IMGLIBS)
AC_SUBST(EXPORT_LDFLAGS)
dnl
dnl End of "$Id: cups-sharedlibs.m4 10190 2012-01-20 16:22:58Z mike $".
dnl End of "$Id: cups-sharedlibs.m4 7630 2008-06-09 22:31:44Z mike $".
dnl
+14 -36
Ver Arquivo
@@ -1,5 +1,5 @@
dnl
dnl "$Id: cups-ssl.m4 10478 2012-05-18 17:59:14Z mike $"
dnl "$Id: cups-ssl.m4 7241 2008-01-22 22:34:52Z mike $"
dnl
dnl OpenSSL/GNUTLS stuff for CUPS.
dnl
@@ -27,6 +27,8 @@ AC_ARG_WITH(openssl-includes, [ --with-openssl-includes set directory for OpenS
SSLFLAGS=""
SSLLIBS=""
have_ssl=0
CUPS_SERVERCERT=""
CUPS_SERVERKEY=""
if test x$enable_ssl != xno; then
dnl Look for CDSA...
@@ -36,6 +38,7 @@ if test x$enable_ssl != xno; then
have_ssl=1
AC_DEFINE(HAVE_SSL)
AC_DEFINE(HAVE_CDSASSL)
CUPS_SERVERCERT="/Library/Keychains/System.keychain"
dnl Check for the various security headers...
AC_CHECK_HEADER(Security/SecureTransportPriv.h,
@@ -56,40 +59,7 @@ if test x$enable_ssl != xno; then
AC_CHECK_HEADER(Security/SecIdentitySearchPriv.h,
AC_DEFINE(HAVE_SECIDENTITYSEARCHPRIV_H))
dnl Check for SSLSetProtocolVersionMax...
SAVELIBS="$LIBS"
LIBS="$LIBS -framework Security"
AC_CHECK_FUNC(SSLSetProtocolVersionMax)
LIBS="$SAVELIBS"
dnl Check for SecCertificateCopyData..
AC_MSG_CHECKING(for SecCertificateCopyData)
if test $uversion -ge 100; then
AC_DEFINE(HAVE_SECCERTIFICATECOPYDATA)
AC_MSG_RESULT(yes)
else
AC_MSG_RESULT(no)
fi
dnl Check for SecIdentitySearchCreateWithPolicy...
AC_MSG_CHECKING(for SecIdentitySearchCreateWithPolicy)
if test $uversion -ge 80; then
AC_DEFINE(HAVE_SECIDENTITYSEARCHCREATEWITHPOLICY)
AC_MSG_RESULT(yes)
else
AC_MSG_RESULT(no)
fi
dnl Check for SecPolicyCreateSSL...
AC_MSG_CHECKING(for SecPolicyCreateSSL)
if test $uversion -ge 110; then
AC_DEFINE(HAVE_SECPOLICYCREATESSL)
AC_MSG_RESULT(yes)
else
AC_MSG_RESULT(no)
fi])
AC_DEFINE(HAVE_CSSMERRORSTRING)
AC_DEFINE(HAVE_CSSMERRORSTRING)])
fi
fi
@@ -112,6 +82,9 @@ if test x$enable_ssl != xno; then
fi
if test $have_ssl = 1; then
CUPS_SERVERCERT="ssl/server.crt"
CUPS_SERVERKEY="ssl/server.key"
if $PKGCONFIG --exists gcrypt; then
SSLLIBS="$SSLLIBS `$PKGCONFIG --libs gcrypt`"
SSLFLAGS="$SSLFLAGS `$PKGCONFIG --cflags gcrypt`"
@@ -154,6 +127,9 @@ if test x$enable_ssl != xno; then
done
if test "x${SSLLIBS}" != "x"; then
CUPS_SERVERCERT="ssl/server.crt"
CUPS_SERVERKEY="ssl/server.key"
LIBS="$SAVELIBS $SSLLIBS"
AC_CHECK_FUNCS(SSL_set_tlsext_host_name)
fi
@@ -171,6 +147,8 @@ elif test x$enable_cdsa = xyes -o x$enable_gnutls = xyes -o x$enable_openssl = x
AC_MSG_ERROR([Unable to enable SSL support.])
fi
AC_SUBST(CUPS_SERVERCERT)
AC_SUBST(CUPS_SERVERKEY)
AC_SUBST(IPPALIASES)
AC_SUBST(SSLFLAGS)
AC_SUBST(SSLLIBS)
@@ -179,5 +157,5 @@ EXPORT_SSLLIBS="$SSLLIBS"
AC_SUBST(EXPORT_SSLLIBS)
dnl
dnl End of "$Id: cups-ssl.m4 10478 2012-05-18 17:59:14Z mike $".
dnl End of "$Id: cups-ssl.m4 7241 2008-01-22 22:34:52Z mike $".
dnl
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
dnl
dnl "$Id: cups-threads.m4 9771 2011-05-12 05:21:56Z mike $"
dnl "$Id: cups-threads.m4 6649 2007-07-11 21:46:42Z mike $"
dnl
dnl Threading stuff for CUPS.
dnl
@@ -50,5 +50,5 @@ fi
AC_SUBST(PTHREAD_FLAGS)
dnl
dnl End of "$Id: cups-threads.m4 9771 2011-05-12 05:21:56Z mike $".
dnl End of "$Id: cups-threads.m4 6649 2007-07-11 21:46:42Z mike $".
dnl
+6 -64
Ver Arquivo
@@ -3,7 +3,7 @@
*
* Configuration file for CUPS.
*
* Copyright 2007-2012 by Apple Inc.
* Copyright 2007-2013 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -32,6 +32,7 @@
#define CUPS_DEFAULT_GROUP "sys"
#define CUPS_DEFAULT_SYSTEM_GROUPS "sys root system"
#define CUPS_DEFAULT_PRINTOPERATOR_AUTH "@SYSTEM"
#define CUPS_DEFAULT_SYSTEM_AUTHKEY "system.print.admin"
/*
@@ -131,13 +132,11 @@
/*
* Do we have various image libraries?
* Do we have ZLIB?
*/
#undef HAVE_LIBPNG
#undef HAVE_LIBZ
#undef HAVE_LIBJPEG
#undef HAVE_LIBTIFF
#undef HAVE_INFLATECOPY
/*
@@ -168,10 +167,10 @@
/*
* Do we have <scsi/sg.h>?
* Use <stdint.h>?
*/
#undef HAVE_SCSI_SG_H
#undef HAVE_STDINT_H
/*
@@ -317,41 +316,6 @@
#undef HAVE_SECURETRANSPORTPRIV_H
/*
* Do we have the SecCertificateCopyData function?
*/
#undef HAVE_SECCERTIFICATECOPYDATA
/*
* Do we have the SecIdentitySearchCreateWithPolicy function?
*/
#undef HAVE_SECIDENTITYSEARCHCREATEWITHPOLICY
/*
* Do we have the SecPolicyCreateSSL function?
*/
#undef HAVE_SECPOLICYCREATESSL
/*
* Do we have the SecPolicyCreateSSL function?
*/
#undef HAVE_SECPOLICYCREATESSL
/*
* Do we have the SSLSetProtocolVersionMax function?
*/
#undef HAVE_SSLSETPROTOCOLVERSIONMAX
/*
* Do we have the cssmErrorString function?
*/
@@ -359,25 +323,6 @@
#undef HAVE_CSSMERRORSTRING
/*
* Do we have the SLP library?
*/
#undef HAVE_LIBSLP
/*
* Do we have an LDAP library?
*/
#undef HAVE_LDAP
#undef HAVE_OPENLDAP
#undef HAVE_MOZILLA_LDAP
#undef HAVE_LDAP_SSL_H
#undef HAVE_LDAP_SSL
#undef HAVE_LDAP_REBIND_PROC
/*
* Do we have libpaper?
*/
@@ -601,11 +546,8 @@
#undef HAVE_GSS_GSSAPI_H
#undef HAVE_GSS_GSSAPI_SPI_H
#undef HAVE_GSSAPI
#undef HAVE_GSSAPI_GENERIC_H
#undef HAVE_GSSAPI_GSSAPI_H
#undef HAVE_GSSAPI_H
#undef HAVE_GSSAPI_KRB5_H
#undef HAVE_KRB5_H
/*
+3 -1
Ver Arquivo
@@ -60,6 +60,7 @@ AC_SUBST(INSTALL_LANGUAGES)
AC_SUBST(UNINSTALL_LANGUAGES)
AC_OUTPUT(Makedefs
conf/cups-files.conf
conf/cupsd.conf
conf/mime.convs
conf/pam.std
@@ -67,12 +68,13 @@ AC_OUTPUT(Makedefs
cups-config
data/testprint
desktop/cups.desktop
doc/help/ref-cups-files-conf.html
doc/help/ref-cupsd-conf.html
doc/help/standard.html
doc/index.html
man/client.conf.man
man/cups-deviced.man
man/cups-driverd.man
man/cups-files.conf.man
man/cups-lpd.man
man/cups-snmp.man
man/cupsaddsmb.man
+24 -6
Ver Arquivo
@@ -3,7 +3,7 @@
#
# API library Makefile for CUPS.
#
# Copyright 2007-2012 by Apple Inc.
# Copyright 2007-2013 by Apple Inc.
# Copyright 1997-2006 by Easy Software Products, all rights reserved.
#
# These coded instructions, statements, and computer programs are the
@@ -17,6 +17,14 @@
include ../Makedefs
#
# Options to build libcups without the use of deprecated APIs...
#
OPTIONS = -D_CUPS_NO_DEPRECATED=1 -D_PPD_DEPRECATED=""
#
# Object files...
#
@@ -105,6 +113,7 @@ HEADERS = \
ipp.h \
language.h \
ppd.h \
pwg.h \
raster.h \
sidechannel.h \
transcode.h \
@@ -192,6 +201,14 @@ depend:
$(CC) -MM $(ALL_CFLAGS) $(OBJS:.o=.c) >Dependencies
#
# Run oclint to check code coverage...
#
oclint:
oclint -o=oclint.html -html $(LIBOBJS:.o=.c) -- $(ALL_CFLAGS)
#
# Install all targets...
#
@@ -251,6 +268,7 @@ install-libs: $(INSTALLSTATIC)
if test "x$(SYMROOT)" != "x"; then \
$(INSTALL_DIR) $(SYMROOT); \
cp $(LIBCUPS) $(SYMROOT); \
dsymutil $(SYMROOT)/$(LIBCUPS); \
fi
installstatic:
@@ -304,7 +322,7 @@ libcups.2.dylib: $(LIBOBJS) $(LIBCUPSORDER)
echo Linking $@...
$(DSO) $(ARCHFLAGS) $(DSOFLAGS) -o $@ \
-install_name $(libdir)/$@ \
-current_version 2.9.0 \
-current_version 2.10.0 \
-compatibility_version 2.0.0 \
-exported_symbols_list t.exp \
$(LIBOBJS) $(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) \
@@ -333,7 +351,7 @@ libcups_s.a: $(LIBOBJS) libcups_s.exp
libcups.la: $(LIBOBJS)
echo Linking $@...
$(CC) $(ARCHFLAGS) $(DSOFLAGS) -o $@ $(LIBOBJS:.o=.lo) \
-rpath $(LIBDIR) -version-info 2:9 $(LIBGSSAPI) $(SSLLIBS) \
-rpath $(LIBDIR) -version-info 2:10 $(LIBGSSAPI) $(SSLLIBS) \
$(DNSSDLIBS) $(COMMONLIBS) $(LIBZ)
@@ -518,8 +536,8 @@ apihelp:
--css ../doc/cups-printable.css \
--header api-cups.header --intro api-cups.shtml \
api-cups.xml \
cups.h adminutil.c dest.c language.c notify.c \
options.c tempfile.c usersys.c \
cups.h pwg.h adminutil.c dest*.c language.c notify.c \
options.c pwg-media.c tempfile.c usersys.c \
util.c >../doc/help/api-cups.html
mxmldoc --tokens help/api-cups.html api-cups.xml >../doc/help/api-cups.tokens
$(RM) api-cups.xml
@@ -573,7 +591,7 @@ framedhelp:
--section "Programming" --title "CUPS API" \
--css ../doc/cups-printable.css \
--header api-cups.header --intro api-cups.shtml \
cups.h adminutil.c dest.c language.c notify.c \
cups.h adminutil.c dest*.c language.c notify.c \
options.c tempfile.c usersys.c \
util.c
mxmldoc --framed api-filedir \
+45 -45
Ver Arquivo
@@ -3,7 +3,7 @@
*
* Administration utility API definitions for CUPS.
*
* Copyright 2007-2012 by Apple Inc.
* Copyright 2007-2013 by Apple Inc.
* Copyright 2001-2007 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -65,7 +65,7 @@ static void write_option(cups_file_t *dstfp, int order,
/*
* 'cupsAdminCreateWindowsPPD()' - Create the Windows PPD file for a printer.
*
* @since CUPS 1.2/OS X 10.5@
* @deprecated@
*/
char * /* O - PPD file or NULL */
@@ -129,7 +129,7 @@ cupsAdminCreateWindowsPPD(
* Get the supported banner pages, etc. for the printer...
*/
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, "/printers/%s", dest);
@@ -145,7 +145,7 @@ cupsAdminCreateWindowsPPD(
*/
response = cupsDoRequest(http, request, "/");
if (!response || cupsLastError() > IPP_OK_CONFLICT)
if (!response || cupsLastError() > IPP_STATUS_OK_CONFLICTING)
{
unlink(src);
return (NULL);
@@ -253,7 +253,7 @@ cupsAdminCreateWindowsPPD(
snprintf(line, sizeof(line),
_cupsLangString(language, _("Missing value on line %d.")),
linenum);
_cupsSetError(IPP_DOCUMENT_FORMAT_ERROR, line, 0);
_cupsSetError(IPP_STATUS_ERROR_DOCUMENT_FORMAT_ERROR, line, 0);
cupsFileClose(srcfp);
cupsFileClose(dstfp);
@@ -272,7 +272,7 @@ cupsAdminCreateWindowsPPD(
_cupsLangString(language,
_("Missing double quote on line %d.")),
linenum);
_cupsSetError(IPP_DOCUMENT_FORMAT_ERROR, line, 0);
_cupsSetError(IPP_STATUS_ERROR_DOCUMENT_FORMAT_ERROR, line, 0);
cupsFileClose(srcfp);
cupsFileClose(dstfp);
@@ -291,7 +291,7 @@ cupsAdminCreateWindowsPPD(
_cupsLangString(language,
_("Bad option + choice on line %d.")),
linenum);
_cupsSetError(IPP_DOCUMENT_FORMAT_ERROR, line, 0);
_cupsSetError(IPP_STATUS_ERROR_DOCUMENT_FORMAT_ERROR, line, 0);
cupsFileClose(srcfp);
cupsFileClose(dstfp);
@@ -334,7 +334,7 @@ cupsAdminCreateWindowsPPD(
if (linenum == 0)
{
_cupsSetError(IPP_DOCUMENT_FORMAT_ERROR, _("Empty PPD file."), 1);
_cupsSetError(IPP_STATUS_ERROR_DOCUMENT_FORMAT_ERROR, _("Empty PPD file."), 1);
cupsFileClose(dstfp);
unlink(buffer);
@@ -393,7 +393,7 @@ cupsAdminCreateWindowsPPD(
/*
* 'cupsAdminExportSamba()' - Export a printer to Samba.
*
* @since CUPS 1.2/OS X 10.5@
* @deprecated@
*/
int /* O - 1 on success, 0 on failure */
@@ -424,7 +424,7 @@ cupsAdminExportSamba(
if (!dest || !ppd || !samba_server || !samba_user || !samba_password)
{
_cupsSetError(IPP_INTERNAL_ERROR, strerror(EINVAL), 0);
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(EINVAL), 0);
return (0);
}
@@ -434,7 +434,7 @@ cupsAdminExportSamba(
if ((fp = cupsTempFile2(authfile, sizeof(authfile))) == NULL)
{
_cupsSetError(IPP_INTERNAL_ERROR, NULL, 0);
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, NULL, 0);
return (0);
}
@@ -487,7 +487,7 @@ cupsAdminExportSamba(
_("Unable to copy Windows 2000 printer "
"driver files (%d).")), status);
_cupsSetError(IPP_INTERNAL_ERROR, message, 0);
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, message, 0);
if (logfile)
_cupsLangPuts(logfile, message);
@@ -522,7 +522,7 @@ cupsAdminExportSamba(
_("Unable to copy CUPS printer driver "
"files (%d).")), status);
_cupsSetError(IPP_INTERNAL_ERROR, message, 0);
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, message, 0);
if (logfile)
_cupsLangPuts(logfile, message);
@@ -565,7 +565,7 @@ cupsAdminExportSamba(
_("Unable to install Windows 2000 printer "
"driver files (%d).")), status);
_cupsSetError(IPP_INTERNAL_ERROR, message, 0);
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, message, 0);
if (logfile)
_cupsLangPuts(logfile, message);
@@ -610,7 +610,7 @@ cupsAdminExportSamba(
_("Unable to copy Windows 9x printer "
"driver files (%d).")), status);
_cupsSetError(IPP_INTERNAL_ERROR, message, 0);
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, message, 0);
if (logfile)
_cupsLangPuts(logfile, message);
@@ -639,7 +639,7 @@ cupsAdminExportSamba(
_("Unable to install Windows 9x printer "
"driver files (%d).")), status);
_cupsSetError(IPP_INTERNAL_ERROR, message, 0);
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, message, 0);
if (logfile)
_cupsLangPuts(logfile, message);
@@ -691,7 +691,7 @@ cupsAdminExportSamba(
_("Unable to copy 64-bit Windows printer "
"driver files (%d).")), status);
_cupsSetError(IPP_INTERNAL_ERROR, message, 0);
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, message, 0);
if (logfile)
_cupsLangPuts(logfile, message);
@@ -726,7 +726,7 @@ cupsAdminExportSamba(
_("Unable to copy 64-bit CUPS printer driver "
"files (%d).")), status);
_cupsSetError(IPP_INTERNAL_ERROR, message, 0);
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, message, 0);
if (logfile)
_cupsLangPuts(logfile, message);
@@ -769,7 +769,7 @@ cupsAdminExportSamba(
_("Unable to install Windows 2000 printer "
"driver files (%d).")), status);
_cupsSetError(IPP_INTERNAL_ERROR, message, 0);
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, message, 0);
if (logfile)
_cupsLangPuts(logfile, message);
@@ -794,13 +794,13 @@ cupsAdminExportSamba(
"are installed.")),
sizeof(message));
_cupsSetError(IPP_NOT_FOUND, message, 0);
_cupsSetError(IPP_STATUS_ERROR_NOT_FOUND, message, 0);
_cupsLangPuts(logfile, message);
}
if (have_drivers == 0)
{
_cupsSetError(IPP_NOT_FOUND, message, 0);
_cupsSetError(IPP_STATUS_ERROR_NOT_FOUND, message, 0);
unlink(authfile);
@@ -821,7 +821,7 @@ cupsAdminExportSamba(
_("Unable to set Windows printer driver (%d).")),
status);
_cupsSetError(IPP_INTERNAL_ERROR, message, 0);
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, message, 0);
if (logfile)
_cupsLangPuts(logfile, message);
@@ -882,9 +882,9 @@ cupsAdminGetServerSettings(
*/
if (strcmp(cg->http->hostname, cg->server) ||
cg->ipp_port != _httpAddrPort(cg->http->hostaddr) ||
cg->ipp_port != httpAddrPort(cg->http->hostaddr) ||
(cg->http->encryption != cg->encryption &&
cg->http->encryption == HTTP_ENCRYPT_NEVER))
cg->http->encryption == HTTP_ENCRYPTION_NEVER))
{
/*
* Need to close the current connection because something has changed...
@@ -901,13 +901,13 @@ cupsAdminGetServerSettings(
if (!cg->http)
{
if ((cg->http = _httpCreate(cupsServer(), ippPort(), NULL,
cupsEncryption(), AF_UNSPEC)) == NULL)
if ((cg->http = httpConnect2(cupsServer(), ippPort(), NULL, AF_UNSPEC,
cupsEncryption(), 1, 0, NULL)) == NULL)
{
if (errno)
_cupsSetError(IPP_SERVICE_UNAVAILABLE, NULL, 0);
_cupsSetError(IPP_STATUS_ERROR_SERVICE_UNAVAILABLE, NULL, 0);
else
_cupsSetError(IPP_SERVICE_UNAVAILABLE,
_cupsSetError(IPP_STATUS_ERROR_SERVICE_UNAVAILABLE,
_("Unable to connect to host."), 1);
if (num_settings)
@@ -925,7 +925,7 @@ cupsAdminGetServerSettings(
if (!http || !num_settings || !settings)
{
_cupsSetError(IPP_INTERNAL_ERROR, strerror(EINVAL), 0);
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(EINVAL), 0);
if (num_settings)
*num_settings = 0;
@@ -944,7 +944,7 @@ cupsAdminGetServerSettings(
*/
if ((status = get_cupsd_conf(http, cg, cg->cupsd_update, cupsdconf,
sizeof(cupsdconf), &remote)) == HTTP_OK)
sizeof(cupsdconf), &remote)) == HTTP_STATUS_OK)
{
if ((cupsd = cupsFileOpen(cupsdconf, "r")) == NULL)
{
@@ -954,7 +954,7 @@ cupsAdminGetServerSettings(
snprintf(message, sizeof(message),
_cupsLangString(cupsLangDefault(), _("Open of %s failed: %s")),
cupsdconf, strerror(errno));
_cupsSetError(IPP_INTERNAL_ERROR, message, 0);
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, message, 0);
}
}
else
@@ -1136,7 +1136,7 @@ cupsAdminGetServerSettings(
cg->cupsd_num_settings,
&(cg->cupsd_settings));
}
else if (status != HTTP_NOT_MODIFIED)
else if (status != HTTP_STATUS_NOT_MODIFIED)
invalidate_cupsd_cache(cg);
/*
@@ -1220,7 +1220,7 @@ cupsAdminSetServerSettings(
if (!http || !num_settings || !settings)
{
_cupsSetError(IPP_INTERNAL_ERROR, strerror(EINVAL), 0);
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(EINVAL), 0);
return (0);
}
@@ -1230,11 +1230,11 @@ cupsAdminSetServerSettings(
*/
if (get_cupsd_conf(http, cg, 0, cupsdconf, sizeof(cupsdconf),
&remote) == HTTP_OK)
&remote) == HTTP_STATUS_OK)
{
if ((cupsd = cupsFileOpen(cupsdconf, "r")) == NULL)
{
_cupsSetError(IPP_INTERNAL_ERROR, NULL, 0);
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, NULL, 0);
return (0);
}
}
@@ -1398,7 +1398,7 @@ cupsAdminSetServerSettings(
if (remote)
unlink(cupsdconf);
_cupsSetError(IPP_INTERNAL_ERROR, NULL, 0);
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, NULL, 0);
return (0);
}
@@ -1954,7 +1954,7 @@ cupsAdminSetServerSettings(
status = cupsPutFile(http, "/admin/conf/cupsd.conf", tempfile);
if (status == HTTP_CREATED)
if (status == HTTP_STATUS_CREATED)
{
/*
* Updated OK, add the basic settings...
@@ -2024,7 +2024,7 @@ cupsAdminSetServerSettings(
unlink(tempfile);
return (status == HTTP_CREATED);
return (status == HTTP_STATUS_CREATED);
}
@@ -2158,16 +2158,16 @@ get_cupsd_conf(
snprintf(message, sizeof(message),
_cupsLangString(cupsLangDefault(), _("stat of %s failed: %s")),
name, strerror(errno));
_cupsSetError(IPP_INTERNAL_ERROR, message, 0);
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, message, 0);
*name = '\0';
return (HTTP_SERVER_ERROR);
return (HTTP_STATUS_SERVER_ERROR);
}
else if (last_update && info.st_mtime <= last_update)
status = HTTP_NOT_MODIFIED;
status = HTTP_STATUS_NOT_MODIFIED;
else
status = HTTP_OK;
status = HTTP_STATUS_OK;
}
else
#endif /* !WIN32 */
@@ -2180,11 +2180,11 @@ get_cupsd_conf(
{
*name = '\0';
_cupsSetError(IPP_INTERNAL_ERROR, NULL, 0);
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, NULL, 0);
invalidate_cupsd_cache(cg);
return (HTTP_SERVER_ERROR);
return (HTTP_STATUS_SERVER_ERROR);
}
*remote = 1;
@@ -2199,7 +2199,7 @@ get_cupsd_conf(
close(fd);
if (status != HTTP_OK)
if (status != HTTP_STATUS_OK)
{
unlink(name);
*name = '\0';
+8 -5
Ver Arquivo
@@ -3,7 +3,7 @@
*
* Administration utility API definitions for CUPS.
*
* Copyright 2007-2011 by Apple Inc.
* Copyright 2007-2012 by Apple Inc.
* Copyright 2001-2007 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -55,16 +55,19 @@ extern int cupsAdminExportSamba(const char *dest, const char *ppd,
const char *samba_server,
const char *samba_user,
const char *samba_password,
FILE *logfile) _CUPS_API_1_2;
FILE *logfile) _CUPS_DEPRECATED;
extern char *cupsAdminCreateWindowsPPD(http_t *http, const char *dest,
char *buffer, int bufsize) _CUPS_API_1_2;
char *buffer, int bufsize)
_CUPS_DEPRECATED;
extern int cupsAdminGetServerSettings(http_t *http,
int *num_settings,
cups_option_t **settings) _CUPS_API_1_3;
cups_option_t **settings)
_CUPS_API_1_3;
extern int cupsAdminSetServerSettings(http_t *http,
int num_settings,
cups_option_t *settings) _CUPS_API_1_3;
cups_option_t *settings)
_CUPS_API_1_3;
# ifdef __cplusplus
+1 -1
Ver Arquivo
@@ -1,5 +1,5 @@
<!--
"$Id: api-array.header 9771 2011-05-12 05:21:56Z mike $"
"$Id: api-array.header 7266 2008-01-29 02:15:29Z mike $"
Array API header for CUPS.
+1 -1
Ver Arquivo
@@ -1,5 +1,5 @@
<!--
"$Id: api-array.shtml 9727 2011-04-28 21:20:12Z mike $"
"$Id: api-array.shtml 7616 2008-05-28 00:34:13Z mike $"
Array API introduction for CUPS.
+1 -1
Ver Arquivo
@@ -1,5 +1,5 @@
<!--
"$Id: api-cups.header 9771 2011-05-12 05:21:56Z mike $"
"$Id: api-cups.header 7279 2008-01-31 01:50:44Z mike $"
CUPS API header for CUPS.
+5 -5
Ver Arquivo
@@ -1,9 +1,9 @@
<!--
"$Id: api-cups.shtml 9727 2011-04-28 21:20:12Z mike $"
"$Id: api-cups.shtml 7337 2008-02-22 04:44:04Z mike $"
API introduction for CUPS.
Copyright 2007-2011 by Apple Inc.
Copyright 2007-2013 by Apple Inc.
Copyright 1997-2006 by Easy Software Products, all rights reserved.
These coded instructions, statements, and computer programs are the
@@ -183,7 +183,7 @@ int num_options = 0;
<a href='#cups_option_t'>cups_option_t</a> *options = NULL;
<a href='#cups_dest_t'>cups_dest_t</a> *dest;
for (i = 0; i < dest->num_options; i ++)
for (i = 0; i &lt; dest->num_options; i ++)
num_options = <a href='#cupsAddOption'>cupsAddOption</a>(dest->options[i].name, dest->options[i].value,
num_options, &amp;options);
</pre>
@@ -235,7 +235,7 @@ job_id = <a href='#cupsPrintFiles'>cupsPrintFiles</a>(dest->name, 3, files, "Tes
<p>Finally, the <a href='#cupsCreateJob'><code>cupsCreateJob</code></a>
function creates a new job with no files in it. Files are added using the
<a href='#cupsStartDocument'><code>cupsStartDocument</code></a>,
<a href='#cupsStartDocument'><code>cupsStartDocument</code></a>,
<a href='api-httpipp.html#cupsWriteRequestData'><code>cupsWriteRequestData</code></a>,
and <a href='#cupsFinishDocument'><code>cupsFinishDocument</code></a> functions.
The following example creates a job with 10 text files for printing:</p>
@@ -299,7 +299,7 @@ int num_jobs;
<a href='#cups_job_t'>cups_job_t</a> *jobs;
int i;
ipp_jstate_t job_state = IPP_JOB_PENDING;
while (job_state &lt; IPP_JOB_STOPPED)
{
/* Get my jobs (1) with any state (-1) */
+1 -1
Ver Arquivo
@@ -1,5 +1,5 @@
<!--
"$Id: api-filedir.header 9771 2011-05-12 05:21:56Z mike $"
"$Id: api-filedir.header 7279 2008-01-31 01:50:44Z mike $"
File and Directory API header for CUPS.
+1 -1
Ver Arquivo
@@ -1,5 +1,5 @@
<!--
"$Id: api-filedir.shtml 9727 2011-04-28 21:20:12Z mike $"
"$Id: api-filedir.shtml 7279 2008-01-31 01:50:44Z mike $"
File and directory API introduction for CUPS.
+1 -1
Ver Arquivo
@@ -1,5 +1,5 @@
<!--
"$Id: api-filter.header 9771 2011-05-12 05:21:56Z mike $"
"$Id: api-filter.header 7616 2008-05-28 00:34:13Z mike $"
Filter and backend programming header for CUPS.
+4 -4
Ver Arquivo
@@ -1,9 +1,9 @@
<!--
"$Id: api-filter.shtml 10424 2012-04-23 17:26:57Z mike $"
"$Id: api-filter.shtml 7677 2008-06-19 23:22:19Z mike $"
Filter and backend programming introduction for CUPS.
Copyright 2007-2012 by Apple Inc.
Copyright 2007-2013 by Apple Inc.
Copyright 1997-2006 by Easy Software Products, all rights reserved.
These coded instructions, statements, and computer programs are the
@@ -488,7 +488,7 @@ from localizing the vendor-prefixed keyword in the PPD file - otherwise both
the generic and vendor-specific keyword will be shown in the user
interface.</p>
</blockquote></dd>
</blockquote>
<h4><a name="REPORTING_SUPPLIES">Reporting Supply Levels</a></h4>
@@ -613,7 +613,7 @@ datalen = sizeof(data) - 1;
status = <a href="#cupsSideChannelDoRequest">cupsSideChannelDoRequest</a>(CUPS_SC_CMD_GET_DEVICE_ID, data, &amp;datalen, 1.0);
/* Use the returned value if OK was returned and the length is non-zero */
if (status == CUPS_SC_STATUS_OK && datalen > 0)
if (status == CUPS_SC_STATUS_OK &amp;&amp; datalen > 0)
data[datalen] = '\0';
else
data[0] = '\0';
+1 -1
Ver Arquivo
@@ -1,5 +1,5 @@
<!--
"$Id: api-httpipp.header 9771 2011-05-12 05:21:56Z mike $"
"$Id: api-httpipp.header 7258 2008-01-28 00:15:05Z mike $"
HTTP and IPP API header for CUPS.
+1 -1
Ver Arquivo
@@ -1,5 +1,5 @@
<!--
"$Id: api-httpipp.shtml 10388 2012-03-26 21:15:41Z mike $"
"$Id: api-httpipp.shtml 7684 2008-06-23 16:47:38Z mike $"
HTTP and IPP API introduction for CUPS.
+1 -1
Ver Arquivo
@@ -1,5 +1,5 @@
<!--
"$Id: api-ppd.header 10424 2012-04-23 17:26:57Z mike $"
"$Id: api-ppd.header 7616 2008-05-28 00:34:13Z mike $"
PPD API header for CUPS.
+1 -1
Ver Arquivo
@@ -1,5 +1,5 @@
<!--
"$Id: api-ppd.shtml 10424 2012-04-23 17:26:57Z mike $"
"$Id: api-ppd.shtml 7616 2008-05-28 00:34:13Z mike $"
PPD API introduction for CUPS.
+5 -4
Ver Arquivo
@@ -3,7 +3,7 @@
*
* Private array definitions for CUPS.
*
* Copyright 2011 by Apple Inc.
* Copyright 2011-2012 by Apple Inc.
*
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
@@ -37,9 +37,10 @@ extern "C" {
* Functions...
*/
extern int _cupsArrayAddStrings(cups_array_t *a, const char *s)
_CUPS_API_1_5;
extern cups_array_t *_cupsArrayNewStrings(const char *s) _CUPS_API_1_5;
extern int _cupsArrayAddStrings(cups_array_t *a, const char *s,
char delim) _CUPS_API_1_5;
extern cups_array_t *_cupsArrayNewStrings(const char *s, char delim)
_CUPS_API_1_5;
# ifdef __cplusplus
}
+50 -10
Ver Arquivo
@@ -138,8 +138,7 @@ cupsArrayAdd(cups_array_t *a, /* I - Array */
/*
* '_cupsArrayAddStrings()' - Add zero or more comma-delimited strings to an
* array.
* '_cupsArrayAddStrings()' - Add zero or more delimited strings to an array.
*
* Note: The array MUST be created using the @link _cupsArrayNewStrings@
* function. Duplicate strings are NOT added. If the string pointer "s" is NULL
@@ -148,7 +147,8 @@ cupsArrayAdd(cups_array_t *a, /* I - Array */
int /* O - 1 on success, 0 on failure */
_cupsArrayAddStrings(cups_array_t *a, /* I - Array */
const char *s) /* I - Comma-delimited strings or NULL */
const char *s, /* I - Delimited strings or NULL */
char delim)/* I - Delimiter character */
{
char *buffer, /* Copy of string */
*start, /* Start of string */
@@ -156,20 +156,47 @@ _cupsArrayAddStrings(cups_array_t *a, /* I - Array */
int status = 1; /* Status of add */
if (!a || !s || !*s)
return (0);
DEBUG_printf(("_cupsArrayAddStrings(a=%p, s=\"%s\", delim='%c')", a, s,
delim));
if (!strchr(s, ','))
if (!a || !s || !*s)
{
DEBUG_puts("1_cupsArrayAddStrings: Returning 0");
return (0);
}
if (delim == ' ')
{
/*
* String doesn't contain a comma, so add it as a single value...
* Skip leading whitespace...
*/
DEBUG_puts("1_cupsArrayAddStrings: Skipping leading whitespace.");
while (*s && isspace(*s & 255))
s ++;
DEBUG_printf(("1_cupsArrayAddStrings: Remaining string \"%s\".", s));
}
if (!strchr(s, delim) &&
(delim != ' ' || (!strchr(s, '\t') && !strchr(s, '\n'))))
{
/*
* String doesn't contain a delimiter, so add it as a single value...
*/
DEBUG_puts("1_cupsArrayAddStrings: No delimiter seen, adding a single "
"value.");
if (!cupsArrayFind(a, (void *)s))
status = cupsArrayAdd(a, (void *)s);
}
else if ((buffer = strdup(s)) == NULL)
{
DEBUG_puts("1_cupsArrayAddStrings: Unable to duplicate string.");
status = 0;
}
else
{
for (start = end = buffer; *end; start = end)
@@ -179,11 +206,21 @@ _cupsArrayAddStrings(cups_array_t *a, /* I - Array */
* it...
*/
if ((end = strchr(start, ',')) != NULL)
if (delim == ' ')
{
while (*end && !isspace(*end & 255))
end ++;
while (*end && isspace(*end & 255))
*end++ = '\0';
}
else if ((end = strchr(start, delim)) != NULL)
*end++ = '\0';
else
end = start + strlen(start);
DEBUG_printf(("1_cupsArrayAddStrings: Adding \"%s\", end=\"%s\"", start,
end));
if (!cupsArrayFind(a, start))
status &= cupsArrayAdd(a, start);
}
@@ -191,6 +228,8 @@ _cupsArrayAddStrings(cups_array_t *a, /* I - Array */
free(buffer);
}
DEBUG_printf(("1_cupsArrayAddStrings: Returning %d.", status));
return (status);
}
@@ -782,7 +821,8 @@ cupsArrayNew3(cups_array_func_t f, /* I - Comparison function or @code NULL@ fo
*/
cups_array_t * /* O - Array */
_cupsArrayNewStrings(const char *s) /* I - Comma-delimited strings or NULL */
_cupsArrayNewStrings(const char *s, /* I - Delimited strings or NULL */
char delim) /* I - Delimiter character */
{
cups_array_t *a; /* Array */
@@ -790,7 +830,7 @@ _cupsArrayNewStrings(const char *s) /* I - Comma-delimited strings or NULL */
if ((a = cupsArrayNew3((cups_array_func_t)strcmp, NULL, NULL, 0,
(cups_acopy_func_t)_cupsStrAlloc,
(cups_afree_func_t)_cupsStrFree)) != NULL)
_cupsArrayAddStrings(a, s);
_cupsArrayAddStrings(a, s, delim);
return (a);
}
+33 -21
Ver Arquivo
@@ -3,7 +3,7 @@
*
* Authentication functions for CUPS.
*
* Copyright 2007-2012 by Apple Inc.
* Copyright 2007-2013 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products.
*
* This file contains Kerberos support code, copyright 2006 by
@@ -112,7 +112,7 @@ static int cups_local_auth(http_t *http);
/*
* 'cupsDoAuthentication()' - Authenticate a request.
*
* This function should be called in response to a @code HTTP_UNAUTHORIZED@
* This function should be called in response to a @code HTTP_STATUS_UNAUTHORIZED@
* status, prior to resubmitting your request.
*
* @since CUPS 1.1.20/OS X 10.4@
@@ -164,14 +164,14 @@ cupsDoAuthentication(
DEBUG_printf(("2cupsDoAuthentication: authstring=\"%s\"",
http->authstring));
if (http->status == HTTP_UNAUTHORIZED)
if (http->status == HTTP_STATUS_UNAUTHORIZED)
http->digest_tries ++;
return (0);
}
else if (localauth == -1)
{
http->status = HTTP_AUTHORIZATION_CANCELED;
http->status = HTTP_STATUS_CUPS_AUTHORIZATION_CANCELED;
return (-1); /* Error or canceled */
}
}
@@ -190,11 +190,18 @@ cupsDoAuthentication(
* Nope - get a new password from the user...
*/
char default_username[HTTP_MAX_VALUE];
/* Default username */
cg = _cupsGlobals();
if (!cg->lang_default)
cg->lang_default = cupsLangDefault();
if (httpGetSubField(http, HTTP_FIELD_WWW_AUTHENTICATE, "username",
default_username))
cupsSetUser(default_username);
snprintf(prompt, sizeof(prompt),
_cupsLangString(cg->lang_default, _("Password for %s on %s? ")),
cupsUser(),
@@ -205,22 +212,22 @@ cupsDoAuthentication(
if ((password = cupsGetPassword2(prompt, http, method, resource)) == NULL)
{
http->status = HTTP_AUTHORIZATION_CANCELED;
http->status = HTTP_STATUS_CUPS_AUTHORIZATION_CANCELED;
return (-1);
}
snprintf(http->userpass, sizeof(http->userpass), "%s:%s", cupsUser(),
password);
}
else if (http->status == HTTP_UNAUTHORIZED)
else if (http->status == HTTP_STATUS_UNAUTHORIZED)
http->digest_tries ++;
if (http->status == HTTP_UNAUTHORIZED && http->digest_tries >= 3)
if (http->status == HTTP_STATUS_UNAUTHORIZED && http->digest_tries >= 3)
{
DEBUG_printf(("1cupsDoAuthentication: Too many authentication tries (%d)",
http->digest_tries));
http->status = HTTP_AUTHORIZATION_CANCELED;
http->status = HTTP_STATUS_CUPS_AUTHORIZATION_CANCELED;
return (-1);
}
@@ -237,7 +244,7 @@ cupsDoAuthentication(
if (_cupsSetNegotiateAuthString(http, method, resource))
{
http->status = HTTP_AUTHORIZATION_CANCELED;
http->status = HTTP_STATUS_CUPS_AUTHORIZATION_CANCELED;
return (-1);
}
}
@@ -280,7 +287,7 @@ cupsDoAuthentication(
{
DEBUG_printf(("1cupsDoAuthentication: Unknown auth type: \"%s\"",
www_auth));
http->status = HTTP_AUTHORIZATION_CANCELED;
http->status = HTTP_STATUS_CUPS_AUTHORIZATION_CANCELED;
return (-1);
}
@@ -458,7 +465,7 @@ _cupsSetNegotiateAuthString(
authsize = sizeof(http->_authstring);
}
strcpy(http->authstring, "Negotiate ");
strlcpy(http->authstring, "Negotiate ", authsize);
httpEncode64_2(http->authstring + 10, authsize - 10, output_token.value,
output_token.length);
@@ -660,8 +667,7 @@ cups_local_auth(http_t *http) /* I - HTTP connection to server */
int pid; /* Current process ID */
FILE *fp; /* Certificate file */
char trc[16], /* Try Root Certificate parameter */
filename[1024], /* Certificate filename */
certificate[33];/* Certificate string */
filename[1024]; /* Certificate filename */
_cups_globals_t *cg = _cupsGlobals(); /* Global data */
# if defined(HAVE_AUTHORIZATION_H)
OSStatus status; /* Status */
@@ -855,19 +861,25 @@ cups_local_auth(http_t *http) /* I - HTTP connection to server */
* Read the certificate from the file...
*/
fgets(certificate, sizeof(certificate), fp);
char certificate[33], /* Certificate string */
*certptr; /* Pointer to certificate string */
certptr = fgets(certificate, sizeof(certificate), fp);
fclose(fp);
/*
* Set the authorization string and return...
*/
if (certptr)
{
/*
* Set the authorization string and return...
*/
httpSetAuthString(http, "Local", certificate);
httpSetAuthString(http, "Local", certificate);
DEBUG_printf(("8cups_local_auth: Returning authstring=\"%s\"",
http->authstring));
DEBUG_printf(("8cups_local_auth: Returning authstring=\"%s\"",
http->authstring));
return (0);
return (0);
}
}
return (1);
+1 -1
Ver Arquivo
@@ -136,7 +136,7 @@ quote_string(const char *s) /* I - String to write */
if (*s == '\\' || *s == '\"')
putchar('\\');
if (*s == '\n')
if (((*s & 255) < ' ' && *s != '\t') || *s == 0x7f)
putchar(' ');
else
putchar(*s);
+1 -1
Ver Arquivo
@@ -930,7 +930,7 @@ ppd_load_constraints(ppd_file_t *ppd) /* I - PPD file */
if (!_cups_strncasecmp(option, "Custom", 6) && !_cups_strcasecmp(choice, "True"))
{
_cups_strcpy(option, option + 6);
strcpy(choice, "Custom");
strlcpy(choice, "Custom", sizeof(choice));
}
constptr->option = ppdFindOption(ppd, option);
+17 -3
Ver Arquivo
@@ -3,7 +3,7 @@
*
* Private definitions for CUPS.
*
* Copyright 2007-2012 by Apple Inc.
* Copyright 2007-2013 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
@@ -24,6 +24,7 @@
# include "string-private.h"
# include "debug-private.h"
# include "array-private.h"
# include "ipp-private.h"
# include "http-private.h"
# include "language-private.h"
@@ -86,6 +87,11 @@ typedef struct _cups_globals_s /**** CUPS global state data ****/
char resolved_uri[1024];
/* Buffer for cupsBackendDeviceURI */
/* debug.c */
# ifdef DEBUG
int thread_id; /* Friendly thread ID */
# endif /* DEBUG */
/* file.c */
cups_file_t *stdio_files[3];/* stdin, stdout, stderr */
@@ -125,7 +131,7 @@ typedef struct _cups_globals_s /**** CUPS global state data ****/
cups_array_t *leg_size_lut, /* Lookup table for legacy names */
*ppd_size_lut, /* Lookup table for PPD names */
*pwg_size_lut; /* Lookup table for PWG names */
_pwg_media_t pwg_media; /* PWG media data for custom size */
pwg_media_t pwg_media; /* PWG media data for custom size */
char pwg_name[65]; /* PWG media name for custom size */
/* request.c */
@@ -145,6 +151,7 @@ typedef struct _cups_globals_s /**** CUPS global state data ****/
/* usersys.c */
http_encryption_t encryption; /* Encryption setting */
char user[65], /* User name */
user_agent[256],/* User-Agent string */
server[256], /* Server address */
servername[256],/* Server hostname */
password[128]; /* Password for default callback */
@@ -158,7 +165,8 @@ typedef struct _cups_globals_s /**** CUPS global state data ****/
cups_server_cert_cb_t server_cert_cb; /* Server certificate callback */
void *server_cert_data;
/* Server certificate user data */
int any_root, /* Allow any root */
int server_version, /* Server IPP version */
any_root, /* Allow any root */
expired_certs, /* Allow expired certs */
expired_root; /* Allow expired root */
@@ -199,6 +207,7 @@ typedef struct _cups_dconstres_s /* Constraint/resolver */
struct _cups_dinfo_s /* Destination capability and status
* information */
{
int version; /* IPP version */
const char *uri; /* Printer URI */
char *resource; /* Resource path */
ipp_t *attrs; /* Printer attributes */
@@ -210,6 +219,11 @@ struct _cups_dinfo_s /* Destination capability and status
cups_array_t *media_db; /* Media database */
_cups_media_db_t min_size, /* Minimum size */
max_size; /* Maximum size */
unsigned cached_flags; /* Flags used for cached media */
cups_array_t *cached_db; /* Cache of media from last index/default */
time_t ready_time; /* When xxx-ready attributes were last queried */
ipp_t *ready_attrs; /* xxx-ready attributes */
cups_array_t *ready_db; /* media[-col]-ready media database */
};
+38 -8
Ver Arquivo
@@ -3,7 +3,7 @@
*
* API definitions for CUPS.
*
* Copyright 2007-2012 by Apple Inc.
* Copyright 2007-2013 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -37,6 +37,7 @@ typedef off_t ssize_t; /* @private@ */
# include "file.h"
# include "ipp.h"
# include "language.h"
# include "pwg.h"
/*
@@ -52,9 +53,9 @@ extern "C" {
* Constants...
*/
# define CUPS_VERSION 1.0600
# define CUPS_VERSION 1.0700
# define CUPS_VERSION_MAJOR 1
# define CUPS_VERSION_MINOR 6
# define CUPS_VERSION_MINOR 7
# define CUPS_VERSION_PATCH 0
# define CUPS_BC_FD 3
@@ -353,12 +354,13 @@ extern ipp_t *cupsDoRequest(http_t *http, ipp_t *request,
const char *resource);
extern http_encryption_t cupsEncryption(void);
extern void cupsFreeJobs(int num_jobs, cups_job_t *jobs);
extern int cupsGetClasses(char ***classes) _CUPS_DEPRECATED;
extern int cupsGetClasses(char ***classes) _CUPS_DEPRECATED_MSG("Use cupsGetDests instead.");
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);
extern int cupsGetPrinters(char ***printers) _CUPS_DEPRECATED;
extern const char *cupsGetPPD(const char *name)
_CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo instead.");
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,
const char *title, int num_options,
@@ -366,7 +368,7 @@ extern int cupsPrintFile(const char *name, const char *filename,
extern int cupsPrintFiles(const char *name, int num_files,
const char **files, const char *title,
int num_options, cups_option_t *options);
extern char *cupsTempFile(char *filename, int len) _CUPS_DEPRECATED;
extern char *cupsTempFile(char *filename, int len) _CUPS_DEPRECATED_MSG("Use cupsTempFd or cupsTempFile2 instead.");
extern int cupsTempFd(char *filename, int len);
extern int cupsAddDest(const char *name, const char *instance,
@@ -416,7 +418,7 @@ 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_API_1_1_21;
_CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo instead.");
extern int cupsPrintFile2(http_t *http, const char *name,
const char *filename,
const char *title, int num_options,
@@ -590,6 +592,34 @@ extern http_status_t cupsStartDestDocument(http_t *http, cups_dest_t *dest,
cups_option_t *options,
int last_document) _CUPS_API_1_6;
/* New in CUPS 1.7 */
extern ipp_attribute_t *cupsFindDestDefault(http_t *http, cups_dest_t *dest,
cups_dinfo_t *dinfo,
const char *option) _CUPS_API_1_7;
extern ipp_attribute_t *cupsFindDestReady(http_t *http, cups_dest_t *dest,
cups_dinfo_t *dinfo,
const char *option) _CUPS_API_1_7;
extern ipp_attribute_t *cupsFindDestSupported(http_t *http, cups_dest_t *dest,
cups_dinfo_t *dinfo,
const char *option)
_CUPS_API_1_7;
extern int cupsGetDestMediaByIndex(http_t *http, cups_dest_t *dest,
cups_dinfo_t *dinfo, int n,
unsigned flags,
cups_size_t *size)
_CUPS_API_1_7;
extern int cupsGetDestMediaCount(http_t *http, cups_dest_t *dest,
cups_dinfo_t *dinfo,
unsigned flags) _CUPS_API_1_7;
extern int cupsGetDestMediaDefault(http_t *http, cups_dest_t *dest,
cups_dinfo_t *dinfo,
unsigned flags,
cups_size_t *size)
_CUPS_API_1_7;
extern void cupsSetUserAgent(const char *user_agent) _CUPS_API_1_7;
extern const char *cupsUserAgent(void) _CUPS_API_1_7;
# ifdef __cplusplus
}
# endif /* __cplusplus */
+38 -42
Ver Arquivo
@@ -68,8 +68,24 @@ int _cups_debug_level = 1;
static regex_t *debug_filter = NULL;
/* Filter expression for messages */
static int debug_init = 0; /* Did we initialize debugging? */
static _cups_mutex_t debug_mutex = _CUPS_MUTEX_INITIALIZER;
static _cups_mutex_t debug_init_mutex = _CUPS_MUTEX_INITIALIZER,
/* Mutex to control initialization */
debug_log_mutex = _CUPS_MUTEX_INITIALIZER;
/* Mutex to serialize log entries */
/*
* 'debug_thread_id()' - Return an integer representing the current thread.
*/
static int /* O - Local thread ID */
debug_thread_id(void)
{
_cups_globals_t *cg = _cupsGlobals(); /* Global data */
return (cg->thread_id);
}
/*
@@ -229,16 +245,8 @@ debug_vsnprintf(char *buffer, /* O - Output buffer */
if (bufptr)
{
if ((bufptr + strlen(temp)) > bufend)
{
strncpy(bufptr, temp, (size_t)(bufend - bufptr));
bufptr = bufend;
}
else
{
strcpy(bufptr, temp);
bufptr += strlen(temp);
}
strlcpy(bufptr, temp, (size_t)(bufend - bufptr));
bufptr += strlen(bufptr);
}
break;
@@ -267,16 +275,8 @@ debug_vsnprintf(char *buffer, /* O - Output buffer */
if (bufptr)
{
if ((bufptr + strlen(temp)) > bufend)
{
strncpy(bufptr, temp, (size_t)(bufend - bufptr));
bufptr = bufend;
}
else
{
strcpy(bufptr, temp);
bufptr += strlen(temp);
}
strlcpy(bufptr, temp, (size_t)(bufend - bufptr));
bufptr += strlen(bufptr);
}
break;
@@ -290,16 +290,8 @@ debug_vsnprintf(char *buffer, /* O - Output buffer */
if (bufptr)
{
if ((bufptr + strlen(temp)) > bufend)
{
strncpy(bufptr, temp, (size_t)(bufend - bufptr));
bufptr = bufend;
}
else
{
strcpy(bufptr, temp);
bufptr += strlen(temp);
}
strlcpy(bufptr, temp, (size_t)(bufend - bufptr));
bufptr += strlen(bufptr);
}
break;
@@ -457,9 +449,9 @@ _cups_debug_printf(const char *format, /* I - Printf-style format string */
{
int result; /* Filter result */
_cupsMutexLock(&debug_mutex);
_cupsMutexLock(&debug_init_mutex);
result = regexec(debug_filter, format, 0, NULL, 0);
_cupsMutexUnlock(&debug_mutex);
_cupsMutexUnlock(&debug_init_mutex);
if (result)
return;
@@ -470,13 +462,13 @@ _cups_debug_printf(const char *format, /* I - Printf-style format string */
*/
gettimeofday(&curtime, NULL);
snprintf(buffer, sizeof(buffer), "%02d:%02d:%02d.%03d ",
(int)((curtime.tv_sec / 3600) % 24),
snprintf(buffer, sizeof(buffer), "T%03d %02d:%02d:%02d.%03d ",
debug_thread_id(), (int)((curtime.tv_sec / 3600) % 24),
(int)((curtime.tv_sec / 60) % 60),
(int)(curtime.tv_sec % 60), (int)(curtime.tv_usec / 1000));
va_start(ap, format);
bytes = debug_vsnprintf(buffer + 13, sizeof(buffer) - 14, format, ap) + 13;
bytes = debug_vsnprintf(buffer + 19, sizeof(buffer) - 20, format, ap) + 19;
va_end(ap);
if (bytes >= (sizeof(buffer) - 1))
@@ -494,7 +486,9 @@ _cups_debug_printf(const char *format, /* I - Printf-style format string */
* Write it out...
*/
_cupsMutexLock(&debug_log_mutex);
write(_cups_debug_fd, buffer, bytes);
_cupsMutexUnlock(&debug_log_mutex);
}
@@ -538,9 +532,9 @@ _cups_debug_puts(const char *s) /* I - String to output */
{
int result; /* Filter result */
_cupsMutexLock(&debug_mutex);
_cupsMutexLock(&debug_init_mutex);
result = regexec(debug_filter, s, 0, NULL, 0);
_cupsMutexUnlock(&debug_mutex);
_cupsMutexUnlock(&debug_init_mutex);
if (result)
return;
@@ -551,8 +545,8 @@ _cups_debug_puts(const char *s) /* I - String to output */
*/
gettimeofday(&curtime, NULL);
bytes = snprintf(buffer, sizeof(buffer), "%02d:%02d:%02d.%03d %s",
(int)((curtime.tv_sec / 3600) % 24),
bytes = snprintf(buffer, sizeof(buffer), "T%03d %02d:%02d:%02d.%03d %s",
debug_thread_id(), (int)((curtime.tv_sec / 3600) % 24),
(int)((curtime.tv_sec / 60) % 60),
(int)(curtime.tv_sec % 60), (int)(curtime.tv_usec / 1000),
s);
@@ -572,7 +566,9 @@ _cups_debug_puts(const char *s) /* I - String to output */
* Write it out...
*/
_cupsMutexLock(&debug_log_mutex);
write(_cups_debug_fd, buffer, bytes);
_cupsMutexUnlock(&debug_log_mutex);
}
@@ -586,7 +582,7 @@ _cups_debug_set(const char *logfile, /* I - Log file or NULL */
const char *filter, /* I - Filter string or NULL */
int force) /* I - Force initialization */
{
_cupsMutexLock(&debug_mutex);
_cupsMutexLock(&debug_init_mutex);
if (!debug_init || force)
{
@@ -648,7 +644,7 @@ _cups_debug_set(const char *logfile, /* I - Log file or NULL */
debug_init = 1;
}
_cupsMutexUnlock(&debug_mutex);
_cupsMutexUnlock(&debug_init_mutex);
}
#endif /* DEBUG */
+35 -27
Ver Arquivo
@@ -3,7 +3,7 @@
*
* Destination job support for CUPS.
*
* Copyright 2012 by Apple Inc.
* Copyright 2012-2013 by Apple Inc.
*
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
@@ -15,7 +15,7 @@
*
* Contents:
*
 * cupsCancelDestJob() - Cancel a job on a destination.
* cupsCancelDestJob() - Cancel a job on a destination.
* cupsCloseDestJob() - Close a job and start printing.
* cupsCreateDestJob() - Create a job on a destination.
* cupsFinishDestDocument() - Finish the current document.
@@ -34,7 +34,7 @@
*
* The "job_id" is the number returned by cupsCreateDestJob.
*
* Returns IPP_OK on success and IPP_NOT_AUTHORIZED or IPP_FORBIDDEN on
* Returns IPP_STATUS_OK on success and IPP_NOT_AUTHORIZED or IPP_FORBIDDEN on
* failure.
*
* @since CUPS 1.6/OS X 10.8@
@@ -45,7 +45,7 @@ cupsCancelDestJob(http_t *http, /* I - Connection to destination */
cups_dest_t *dest, /* I - Destination */
int job_id) /* I - Job ID */
{
return (IPP_NOT_FOUND);
return (IPP_STATUS_ERROR_NOT_FOUND);
}
@@ -53,7 +53,7 @@ cupsCancelDestJob(http_t *http, /* I - Connection to destination */
* 'cupsCloseDestJob()' - Close a job and start printing.
*
* Use when the last call to cupsStartDocument passed 0 for "last_document".
* "job_id" is the job ID returned by cupsCreateDestJob. Returns @code IPP_OK@
* "job_id" is the job ID returned by cupsCreateDestJob. Returns @code IPP_STATUS_OK@
* on success.
*
* @since CUPS 1.6/OS X 10.8@
@@ -81,9 +81,9 @@ cupsCloseDestJob(
if (!http || !dest || !info || job_id <= 0)
{
_cupsSetError(IPP_INTERNAL_ERROR, strerror(EINVAL), 0);
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(EINVAL), 0);
DEBUG_puts("1cupsCloseDestJob: Bad arguments.");
return (IPP_INTERNAL_ERROR);
return (IPP_STATUS_ERROR_INTERNAL);
}
/*
@@ -94,31 +94,33 @@ cupsCloseDestJob(
IPP_TAG_ENUM)) != NULL)
{
for (i = 0; i < attr->num_values; i ++)
if (attr->values[i].integer == IPP_CLOSE_JOB)
if (attr->values[i].integer == IPP_OP_CLOSE_JOB)
{
request = ippNewRequest(IPP_CLOSE_JOB);
request = ippNewRequest(IPP_OP_CLOSE_JOB);
break;
}
}
if (!request)
request = ippNewRequest(IPP_SEND_DOCUMENT);
request = ippNewRequest(IPP_OP_SEND_DOCUMENT);
if (!request)
{
_cupsSetError(IPP_INTERNAL_ERROR, strerror(ENOMEM), 0);
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(ENOMEM), 0);
DEBUG_puts("1cupsCloseDestJob: Unable to create Close-Job/Send-Document "
"request.");
return (IPP_INTERNAL_ERROR);
return (IPP_STATUS_ERROR_INTERNAL);
}
ippSetVersion(request, info->version / 10, info->version % 10);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
NULL, info->uri);
ippAddInteger(request, IPP_TAG_OPERATION, IPP_TAG_INTEGER, "job-id",
job_id);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "requesting-user-name",
NULL, cupsUser());
if (ippGetOperation(request) == IPP_SEND_DOCUMENT)
if (ippGetOperation(request) == IPP_OP_SEND_DOCUMENT)
ippAddBoolean(request, IPP_TAG_OPERATION, "last-document", 1);
/*
@@ -137,7 +139,7 @@ cupsCloseDestJob(
/*
* 'cupsCreateDestJob()' - Create a job on a destination.
*
* Returns @code IPP_OK@ or @code IPP_OK_SUBST@ on success, saving the job ID
* Returns @code IPP_STATUS_OK@ or @code IPP_STATUS_OK_SUBST@ on success, saving the job ID
* in the variable pointed to by "job_id".
*
* @since CUPS 1.6/OS X 10.8@
@@ -173,22 +175,24 @@ cupsCreateDestJob(
if (!http || !dest || !info || !job_id)
{
_cupsSetError(IPP_INTERNAL_ERROR, strerror(EINVAL), 0);
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(EINVAL), 0);
DEBUG_puts("1cupsCreateDestJob: Bad arguments.");
return (IPP_INTERNAL_ERROR);
return (IPP_STATUS_ERROR_INTERNAL);
}
/*
* Build a Create-Job request...
*/
if ((request = ippNewRequest(IPP_CREATE_JOB)) == NULL)
if ((request = ippNewRequest(IPP_OP_CREATE_JOB)) == NULL)
{
_cupsSetError(IPP_INTERNAL_ERROR, strerror(ENOMEM), 0);
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(ENOMEM), 0);
DEBUG_puts("1cupsCreateDestJob: Unable to create Create-Job request.");
return (IPP_INTERNAL_ERROR);
return (IPP_STATUS_ERROR_INTERNAL);
}
ippSetVersion(request, info->version / 10, info->version % 10);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
NULL, info->uri);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "requesting-user-name",
@@ -197,6 +201,7 @@ cupsCreateDestJob(
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "job-name", NULL,
title);
cupsEncodeOptions2(request, num_options, options, IPP_TAG_OPERATION);
cupsEncodeOptions2(request, num_options, options, IPP_TAG_JOB);
cupsEncodeOptions2(request, num_options, options, IPP_TAG_SUBSCRIPTION);
@@ -228,7 +233,7 @@ cupsCreateDestJob(
/*
* 'cupsFinishDestDocument()' - Finish the current document.
*
* Returns @code IPP_OK@ or @code IPP_OK_SUBST@ on success.
* Returns @code IPP_STATUS_OK@ or @code IPP_STATUS_OK_SUBST@ on success.
*
* @since CUPS 1.6/OS X 10.8@
*/
@@ -249,9 +254,9 @@ cupsFinishDestDocument(
if (!http || !dest || !info)
{
_cupsSetError(IPP_INTERNAL_ERROR, strerror(EINVAL), 0);
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(EINVAL), 0);
DEBUG_puts("1cupsFinishDestDocument: Bad arguments.");
return (IPP_INTERNAL_ERROR);
return (IPP_STATUS_ERROR_INTERNAL);
}
/*
@@ -309,23 +314,25 @@ cupsStartDestDocument(
if (!http || !dest || !info || job_id <= 0)
{
_cupsSetError(IPP_INTERNAL_ERROR, strerror(EINVAL), 0);
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(EINVAL), 0);
DEBUG_puts("1cupsStartDestDocument: Bad arguments.");
return (HTTP_ERROR);
return (HTTP_STATUS_ERROR);
}
/*
* Create a Send-Document request...
*/
if ((request = ippNewRequest(IPP_SEND_DOCUMENT)) == NULL)
if ((request = ippNewRequest(IPP_OP_SEND_DOCUMENT)) == NULL)
{
_cupsSetError(IPP_INTERNAL_ERROR, strerror(ENOMEM), 0);
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(ENOMEM), 0);
DEBUG_puts("1cupsStartDestDocument: Unable to create Send-Document "
"request.");
return (HTTP_ERROR);
return (HTTP_STATUS_ERROR);
}
ippSetVersion(request, info->version / 10, info->version % 10);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
NULL, info->uri);
ippAddInteger(request, IPP_TAG_OPERATION, IPP_TAG_INTEGER, "job-id", job_id);
@@ -339,6 +346,7 @@ cupsStartDestDocument(
"document-format", NULL, format);
ippAddBoolean(request, IPP_TAG_OPERATION, "last-document", last_document);
cupsEncodeOptions2(request, num_options, options, IPP_TAG_OPERATION);
cupsEncodeOptions2(request, num_options, options, IPP_TAG_DOCUMENT);
/*
+8 -7
Ver Arquivo
@@ -3,7 +3,7 @@
*
* Destination localization support for CUPS.
*
* Copyright 2012 by Apple Inc.
* Copyright 2012-2013 by Apple Inc.
*
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
@@ -178,7 +178,7 @@ cups_create_localizations(
if (httpSeparateURI(HTTP_URI_CODING_ALL, attr->values[0].string.text,
scheme, sizeof(scheme), userpass, sizeof(userpass),
hostname, sizeof(hostname), &port, resource,
sizeof(resource)) < HTTP_URI_OK)
sizeof(resource)) < HTTP_URI_STATUS_OK)
{
DEBUG_printf(("4cups_create_localizations: Bad printer-strings-uri value "
"\"%s\".", attr->values[0].string.text));
@@ -188,7 +188,7 @@ cups_create_localizations(
httpGetHostname(http, http_hostname, sizeof(http_hostname));
if (!_cups_strcasecmp(http_hostname, hostname) &&
port == _httpAddrPort(http->hostaddr))
port == httpAddrPort(http->hostaddr))
{
/*
* Use the same connection...
@@ -203,11 +203,12 @@ cups_create_localizations(
*/
if (!strcmp(scheme, "https"))
encryption = HTTP_ENCRYPT_ALWAYS;
encryption = HTTP_ENCRYPTION_ALWAYS;
else
encryption = HTTP_ENCRYPT_IF_REQUESTED;
encryption = HTTP_ENCRYPTION_IF_REQUESTED;
if ((http2 = httpConnectEncrypt(hostname, port, encryption)) == NULL)
if ((http2 = httpConnect2(hostname, port, NULL, AF_UNSPEC, encryption, 1,
30000, NULL)) == NULL)
{
DEBUG_printf(("4cups_create_localizations: Unable to connect to "
"%s:%d: %s", hostname, port, cupsLastErrorString()));
@@ -233,7 +234,7 @@ cups_create_localizations(
DEBUG_printf(("4cups_create_localizations: GET %s = %s", resource,
httpStatus(status)));
if (status == HTTP_OK)
if (status == HTTP_STATUS_OK)
{
/*
* Got the file, read it...
+595 -89
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+58 -67
Ver Arquivo
@@ -3,7 +3,7 @@
*
* User-defined destination (and option) support for CUPS.
*
* Copyright 2007-2012 by Apple Inc.
* Copyright 2007-2013 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -319,7 +319,8 @@ cupsAddDest(const char *name, /* I - Destination name */
if (instance && !cupsGetDest(name, NULL, num_dests, *dests))
return (num_dests);
dest = cups_add_dest(name, instance, &num_dests, dests);
if ((dest = cups_add_dest(name, instance, &num_dests, dests)) == NULL)
return (num_dests);
/*
* Find the base dest again now the array has been realloc'd.
@@ -634,7 +635,7 @@ cupsConnectDest(
if (resource)
*resource = '\0';
_cupsSetError(IPP_INTERNAL_ERROR, strerror(EINVAL), 0);
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(EINVAL), 0);
return (NULL);
}
@@ -651,7 +652,7 @@ cupsConnectDest(
if ((uri = cupsGetOption("printer-uri-supported", dest->num_options,
dest->options)) == NULL)
{
_cupsSetError(IPP_INTERNAL_ERROR, strerror(ENOENT), 0);
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(ENOENT), 0);
if (cb)
(*cb)(user_data, CUPS_DEST_FLAGS_UNCONNECTED | CUPS_DEST_FLAGS_ERROR,
@@ -671,9 +672,9 @@ cupsConnectDest(
if (httpSeparateURI(HTTP_URI_CODING_ALL, uri, scheme, sizeof(scheme),
userpass, sizeof(userpass), hostname, sizeof(hostname),
&port, resource, resourcesize) < HTTP_URI_OK)
&port, resource, resourcesize) < HTTP_URI_STATUS_OK)
{
_cupsSetError(IPP_INTERNAL_ERROR, _("Bad printer URI."), 1);
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad printer URI."), 1);
if (cb)
(*cb)(user_data, CUPS_DEST_FLAGS_UNCONNECTED | CUPS_DEST_FLAGS_ERROR,
@@ -717,11 +718,12 @@ cupsConnectDest(
*/
if (!strcmp(scheme, "ipps") || port == 443)
encryption = HTTP_ENCRYPT_ALWAYS;
encryption = HTTP_ENCRYPTION_ALWAYS;
else
encryption = HTTP_ENCRYPT_IF_REQUESTED;
encryption = HTTP_ENCRYPTION_IF_REQUESTED;
http = _httpCreate(hostname, port, addrlist, encryption, AF_UNSPEC);
http = httpConnect2(hostname, port, addrlist, AF_UNSPEC, encryption, 1, 0,
NULL);
/*
* Connect if requested...
@@ -931,8 +933,8 @@ cupsEnumDests(
* Get the list of local printers and pass them to the callback function...
*/
num_dests = _cupsGetDests(CUPS_HTTP_DEFAULT, CUPS_GET_PRINTERS, NULL, &dests,
type, mask);
num_dests = _cupsGetDests(CUPS_HTTP_DEFAULT, IPP_OP_CUPS_GET_PRINTERS, NULL,
&dests, type, mask);
for (i = num_dests, dest = dests;
i > 0 && (!cancel || !*cancel);
@@ -1299,7 +1301,7 @@ _cupsGetDestResource(
if (resource)
*resource = '\0';
_cupsSetError(IPP_INTERNAL_ERROR, strerror(EINVAL), 0);
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(EINVAL), 0);
return (NULL);
}
@@ -1313,7 +1315,7 @@ _cupsGetDestResource(
if (resource)
*resource = '\0';
_cupsSetError(IPP_INTERNAL_ERROR, strerror(ENOENT), 0);
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(ENOENT), 0);
return (NULL);
}
@@ -1328,9 +1330,9 @@ _cupsGetDestResource(
if (httpSeparateURI(HTTP_URI_CODING_ALL, uri, scheme, sizeof(scheme),
userpass, sizeof(userpass), hostname, sizeof(hostname),
&port, resource, resourcesize) < HTTP_URI_OK)
&port, resource, resourcesize) < HTTP_URI_STATUS_OK)
{
_cupsSetError(IPP_INTERNAL_ERROR, _("Bad printer URI."), 1);
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad printer URI."), 1);
return (NULL);
}
@@ -1342,12 +1344,12 @@ _cupsGetDestResource(
/*
* '_cupsGetDests()' - Get destinations from a server.
*
* "op" is CUPS_GET_PRINTERS to get a full list, CUPS_GET_DEFAULT to get the
* system-wide default printer, or IPP_GET_PRINTER_ATTRIBUTES for a known
* printer.
* "op" is IPP_OP_CUPS_GET_PRINTERS to get a full list, IPP_OP_CUPS_GET_DEFAULT
* to get the system-wide default printer, or IPP_OP_GET_PRINTER_ATTRIBUTES for
* a known printer.
*
* "name" is the name of an existing printer and is only used when "op" is
* IPP_GET_PRINTER_ATTRIBUTES.
* IPP_OP_GET_PRINTER_ATTRIBUTES.
*
* "dest" is initialized to point to the array of destinations.
*
@@ -1409,6 +1411,7 @@ _cupsGetDests(http_t *http, /* I - Connection to server or
"printer-is-shared",
"printer-location",
"printer-make-and-model",
"printer-mandatory-job-attributes",
"printer-name",
"printer-state",
"printer-state-change-time",
@@ -1427,13 +1430,13 @@ _cupsGetDests(http_t *http, /* I - Connection to server or
#endif /* __APPLE__ */
/*
* Build a CUPS_GET_PRINTERS or IPP_GET_PRINTER_ATTRIBUTES request, which
* Build a IPP_OP_CUPS_GET_PRINTERS or IPP_OP_GET_PRINTER_ATTRIBUTES request, which
* require the following attributes:
*
* attributes-charset
* attributes-natural-language
* requesting-user-name
* printer-uri [for IPP_GET_PRINTER_ATTRIBUTES]
* printer-uri [for IPP_OP_GET_PRINTER_ATTRIBUTES]
*/
request = ippNewRequest(op);
@@ -1445,7 +1448,7 @@ _cupsGetDests(http_t *http, /* I - Connection to server or
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME,
"requesting-user-name", NULL, cupsUser());
if (name && op != CUPS_GET_DEFAULT)
if (name && op != IPP_OP_CUPS_GET_DEFAULT)
{
httpAssembleURIf(HTTP_URI_CODING_ALL, uri, sizeof(uri), "ipp", NULL,
"localhost", ippPort(), "/printers/%s", name);
@@ -1514,6 +1517,7 @@ _cupsGetDests(http_t *http, /* I - Connection to server or
!strcmp(attr->name, "printer-info") ||
!strcmp(attr->name, "printer-is-shared") ||
!strcmp(attr->name, "printer-make-and-model") ||
!strcmp(attr->name, "printer-mandatory-job-attributes") ||
!strcmp(attr->name, "printer-state") ||
!strcmp(attr->name, "printer-state-change-time") ||
!strcmp(attr->name, "printer-type") ||
@@ -1657,7 +1661,6 @@ int /* O - Number of destinations */
cupsGetDests2(http_t *http, /* I - Connection to server or @code CUPS_HTTP_DEFAULT@ */
cups_dest_t **dests) /* O - Destinations */
{
int i; /* Looping var */
int num_dests; /* Number of destinations */
cups_dest_t *dest; /* Destination pointer */
const char *home; /* HOME environment variable */
@@ -1677,7 +1680,7 @@ cupsGetDests2(http_t *http, /* I - Connection to server or @code CUPS_HTTP_
if (!dests)
{
_cupsSetError(IPP_INTERNAL_ERROR, _("Bad NULL dests pointer"), 1);
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad NULL dests pointer"), 1);
return (0);
}
@@ -1686,9 +1689,9 @@ cupsGetDests2(http_t *http, /* I - Connection to server or @code CUPS_HTTP_
*/
*dests = (cups_dest_t *)0;
num_dests = _cupsGetDests(http, CUPS_GET_PRINTERS, NULL, dests, 0, 0);
num_dests = _cupsGetDests(http, IPP_OP_CUPS_GET_PRINTERS, NULL, dests, 0, 0);
if (cupsLastError() >= IPP_REDIRECTION_OTHER_SITE)
if (cupsLastError() >= IPP_STATUS_REDIRECTION_OTHER_SITE)
{
cupsFreeDests(num_dests, *dests);
*dests = (cups_dest_t *)0;
@@ -1780,21 +1783,16 @@ cupsGetDests2(http_t *http, /* I - Connection to server or @code CUPS_HTTP_
* Have a default; see if it is real...
*/
dest = cupsGetDest(dest->name, NULL, num_reals, reals);
}
if (!cupsGetDest(dest->name, NULL, num_reals, reals))
{
/*
* Remove the non-real printer from the list, since we don't want jobs
* going to an unexpected printer... (<rdar://problem/14216472>)
*/
/*
* If dest is NULL, then no default (that exists) is set, so we
* need to set a default if one exists...
*/
if (dest == NULL && defprinter != NULL)
{
for (i = 0; i < num_dests; i ++)
(*dests)[i].is_default = 0;
if ((dest = cupsGetDest(name, instance, num_dests, *dests)) != NULL)
dest->is_default = 1;
num_dests = cupsRemoveDest(dest->name, dest->instance, num_dests,
dests);
}
}
/*
@@ -1809,7 +1807,7 @@ cupsGetDests2(http_t *http, /* I - Connection to server or @code CUPS_HTTP_
*/
if (num_dests > 0)
_cupsSetError(IPP_OK, NULL, 0);
_cupsSetError(IPP_STATUS_OK, NULL, 0);
return (num_dests);
}
@@ -1846,7 +1844,7 @@ cupsGetNamedDest(http_t *http, /* I - Connection to server or @code CUPS_HTT
defname[256]; /* Default printer name */
const char *home = getenv("HOME"); /* Home directory */
int set_as_default = 0; /* Set returned destination as default */
ipp_op_t op = IPP_GET_PRINTER_ATTRIBUTES;
ipp_op_t op = IPP_OP_GET_PRINTER_ATTRIBUTES;
/* IPP operation to get server ops */
_cups_globals_t *cg = _cupsGlobals(); /* Pointer to library globals */
@@ -1900,7 +1898,7 @@ cupsGetNamedDest(http_t *http, /* I - Connection to server or @code CUPS_HTT
* No locally-set default destination, ask the server...
*/
op = CUPS_GET_DEFAULT;
op = IPP_OP_CUPS_GET_DEFAULT;
}
}
@@ -1909,18 +1907,7 @@ cupsGetNamedDest(http_t *http, /* I - Connection to server or @code CUPS_HTT
*/
if (!_cupsGetDests(http, op, name, &dest, 0, 0))
{
if (op == CUPS_GET_DEFAULT || (name && !set_as_default))
return (NULL);
/*
* The default printer from environment variables or from a
* configuration file does not exist. Find out the real default.
*/
if (!_cupsGetDests(http, CUPS_GET_DEFAULT, NULL, &dest, 0, 0))
return (NULL);
}
return (NULL);
if (instance)
dest->instance = _cupsStrAlloc(instance);
@@ -2095,9 +2082,9 @@ cupsSetDests2(http_t *http, /* I - Connection to server or @code CUPS_HTTP_
* Get the server destinations...
*/
num_temps = _cupsGetDests(http, CUPS_GET_PRINTERS, NULL, &temps, 0, 0);
num_temps = _cupsGetDests(http, IPP_OP_CUPS_GET_PRINTERS, NULL, &temps, 0, 0);
if (cupsLastError() >= IPP_REDIRECTION_OTHER_SITE)
if (cupsLastError() >= IPP_STATUS_REDIRECTION_OTHER_SITE)
{
cupsFreeDests(num_temps, temps);
return (-1);
@@ -2449,12 +2436,12 @@ appleCopyNetwork(void)
* 'appleGetPaperSize()' - Get the default paper size.
*/
char * /* O - Default paper size */
static char * /* O - Default paper size */
appleGetPaperSize(char *name, /* I - Paper size name buffer */
int namesize) /* I - Size of buffer */
{
CFStringRef defaultPaperID; /* Default paper ID */
_pwg_media_t *pwgmedia; /* PWG media size */
pwg_media_t *pwgmedia; /* PWG media size */
defaultPaperID = _cupsAppleCopyDefaultPaperID();
@@ -2463,7 +2450,7 @@ appleGetPaperSize(char *name, /* I - Paper size name buffer */
!CFStringGetCString(defaultPaperID, name, namesize,
kCFStringEncodingUTF8))
name[0] = '\0';
else if ((pwgmedia = _pwgMediaForLegacy(name)) != NULL)
else if ((pwgmedia = pwgMediaForLegacy(name)) != NULL)
strlcpy(name, pwgmedia->pwg, namesize);
if (defaultPaperID)
@@ -2679,8 +2666,10 @@ cups_dnssd_browse_cb(
AvahiLookupResultFlags flags, /* I - Flags */
void *context) /* I - Devices array */
{
#ifdef DEBUG
AvahiClient *client = avahi_service_browser_get_client(browser);
/* Client information */
#endif /* DEBUG */
_cups_dnssd_data_t *data = (_cups_dnssd_data_t *)context;
/* Enumeration data */
@@ -3064,8 +3053,10 @@ cups_dnssd_query_cb(
AvahiLookupResultFlags flags, /* I - Flags */
void *context) /* I - Enumeration data */
{
# ifdef DEBUG
AvahiClient *client = avahi_record_browser_get_client(browser);
/* Client information */
# endif /* DEBUG */
# endif /* HAVE_DNSSD */
_cups_dnssd_data_t *data = (_cups_dnssd_data_t *)context;
/* Enumeration data */
@@ -3146,7 +3137,7 @@ cups_dnssd_query_cb(
device->state = _CUPS_DNSSD_PENDING;
make_and_model[0] = '\0';
strcpy(model, "Unknown");
strlcpy(model, "Unknown", sizeof(model));
for (txt = rdata, txtend = txt + rdlen;
txt < txtend;
@@ -3188,10 +3179,10 @@ cups_dnssd_query_cb(
if (!_cups_strcasecmp(key, "usb_MFG") ||
!_cups_strcasecmp(key, "usb_MANU") ||
!_cups_strcasecmp(key, "usb_MANUFACTURER"))
strcpy(make_and_model, value);
strlcpy(make_and_model, value, sizeof(make_and_model));
else if (!_cups_strcasecmp(key, "usb_MDL") ||
!_cups_strcasecmp(key, "usb_MODEL"))
strcpy(model, value);
strlcpy(model, value, sizeof(model));
else if (!_cups_strcasecmp(key, "product") && !strstr(value, "Ghostscript"))
{
if (value[0] == '(')
@@ -3203,14 +3194,14 @@ cups_dnssd_query_cb(
if ((ptr = value + strlen(value) - 1) > value && *ptr == ')')
*ptr = '\0';
strcpy(model, value + 1);
strlcpy(model, value + 1, sizeof(model));
}
else
strcpy(model, value);
strlcpy(model, value, sizeof(model));
}
else if (!_cups_strcasecmp(key, "ty"))
{
strcpy(model, value);
strlcpy(model, value, sizeof(model));
if ((ptr = strchr(model, ',')) != NULL)
*ptr = '\0';
@@ -3399,7 +3390,7 @@ cups_dnssd_resolve(
_HTTP_RESOLVE_FQDN, cups_dnssd_resolve_cb,
&resolve)) == NULL)
{
_cupsSetError(IPP_INTERNAL_ERROR, _("Unable to resolve printer URI."), 1);
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Unable to resolve printer URI."), 1);
if (cb)
(*cb)(user_data, CUPS_DEST_FLAGS_UNCONNECTED | CUPS_DEST_FLAGS_ERROR,
+252 -28
Ver Arquivo
@@ -3,7 +3,7 @@
*
* Option encoding routines for CUPS.
*
* Copyright 2007-2012 by Apple Inc.
* Copyright 2007-2013 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -31,14 +31,104 @@
/*
* Local list of option names and the value tags they should use...
* Local list of option names, the value tags they should use, and the list of
* supported operations...
*
* **** THIS LIST MUST BE SORTED ****
* **** THIS LIST MUST BE SORTED BY ATTRIBUTE NAME ****
*/
static const ipp_op_t ipp_job_creation[] =
{
IPP_OP_PRINT_JOB,
IPP_OP_PRINT_URI,
IPP_OP_CREATE_JOB,
IPP_OP_CUPS_NONE
};
static const ipp_op_t ipp_doc_creation[] =
{
IPP_OP_PRINT_JOB,
IPP_OP_PRINT_URI,
IPP_OP_SEND_DOCUMENT,
IPP_OP_SEND_URI,
IPP_OP_CUPS_NONE
};
static const ipp_op_t ipp_sub_creation[] =
{
IPP_OP_PRINT_JOB,
IPP_OP_PRINT_URI,
IPP_OP_CREATE_JOB,
IPP_OP_CREATE_PRINTER_SUBSCRIPTION,
IPP_OP_CREATE_JOB_SUBSCRIPTION,
IPP_OP_CUPS_NONE
};
static const ipp_op_t ipp_all_print[] =
{
IPP_OP_PRINT_JOB,
IPP_OP_PRINT_URI,
IPP_OP_CREATE_JOB,
IPP_OP_SEND_DOCUMENT,
IPP_OP_SEND_URI,
IPP_OP_CUPS_NONE
};
static const ipp_op_t ipp_all_limit[] =
{
IPP_OP_GET_JOBS,
IPP_OP_GET_PRINTER_ATTRIBUTES,
IPP_OP_CUPS_GET_PRINTERS,
IPP_OP_CUPS_GET_CLASSES,
IPP_OP_CUPS_GET_DEVICES,
IPP_OP_CUPS_GET_PPDS,
IPP_OP_CUPS_NONE
};
static const ipp_op_t ipp_set_printer[] =
{
IPP_OP_SET_PRINTER_ATTRIBUTES,
IPP_OP_CUPS_ADD_MODIFY_PRINTER,
IPP_OP_CUPS_ADD_MODIFY_CLASS,
IPP_OP_CUPS_NONE
};
static const ipp_op_t cups_am_class[] =
{
IPP_OP_CUPS_ADD_MODIFY_CLASS,
IPP_OP_CUPS_NONE
};
static const ipp_op_t cups_am_printer[] =
{
IPP_OP_CUPS_ADD_MODIFY_PRINTER,
IPP_OP_CUPS_NONE
};
static const ipp_op_t cups_schemes[] =
{
IPP_OP_CUPS_GET_DEVICES,
IPP_OP_CUPS_GET_PPDS,
IPP_OP_CUPS_NONE
};
static const ipp_op_t cups_get_ppds[] =
{
IPP_OP_CUPS_GET_PPDS,
IPP_OP_CUPS_NONE
};
static const ipp_op_t cups_ppd_name[] =
{
IPP_OP_CUPS_ADD_MODIFY_PRINTER,
IPP_OP_CUPS_GET_PPD,
IPP_OP_CUPS_NONE
};
static const _ipp_option_t ipp_options[] =
{
{ 1, "auth-info", IPP_TAG_TEXT, IPP_TAG_JOB },
{ 1, "auth-info-default", IPP_TAG_TEXT, IPP_TAG_PRINTER },
{ 1, "auth-info-required", IPP_TAG_KEYWORD, IPP_TAG_PRINTER },
{ 0, "blackplot", IPP_TAG_BOOLEAN, IPP_TAG_JOB },
{ 0, "blackplot-default", IPP_TAG_BOOLEAN, IPP_TAG_PRINTER },
@@ -46,18 +136,26 @@ static const _ipp_option_t ipp_options[] =
{ 0, "brightness-default", IPP_TAG_INTEGER, IPP_TAG_PRINTER },
{ 0, "columns", IPP_TAG_INTEGER, IPP_TAG_JOB },
{ 0, "columns-default", IPP_TAG_INTEGER, IPP_TAG_PRINTER },
{ 0, "compression", IPP_TAG_KEYWORD, IPP_TAG_OPERATION },
{ 0, "compression", IPP_TAG_KEYWORD, IPP_TAG_OPERATION,
IPP_TAG_ZERO,
ipp_doc_creation },
{ 0, "copies", IPP_TAG_INTEGER, IPP_TAG_JOB,
IPP_TAG_DOCUMENT },
{ 0, "copies-default", IPP_TAG_INTEGER, IPP_TAG_PRINTER },
{ 0, "device-uri", IPP_TAG_URI, IPP_TAG_PRINTER },
{ 1, "document-copies", IPP_TAG_RANGE, IPP_TAG_JOB,
IPP_TAG_DOCUMENT },
{ 0, "document-format", IPP_TAG_MIMETYPE, IPP_TAG_OPERATION },
IPP_TAG_DOCUMENT,
ipp_doc_creation },
{ 0, "document-format", IPP_TAG_MIMETYPE, IPP_TAG_OPERATION,
IPP_TAG_ZERO,
ipp_doc_creation },
{ 0, "document-format-default", IPP_TAG_MIMETYPE, IPP_TAG_PRINTER },
{ 1, "document-numbers", IPP_TAG_RANGE, IPP_TAG_JOB,
IPP_TAG_DOCUMENT },
{ 1, "exclude-schemes", IPP_TAG_NAME, IPP_TAG_OPERATION },
IPP_TAG_DOCUMENT,
ipp_all_print },
{ 1, "exclude-schemes", IPP_TAG_NAME, IPP_TAG_OPERATION,
IPP_TAG_ZERO,
cups_schemes },
{ 1, "finishings", IPP_TAG_ENUM, IPP_TAG_JOB,
IPP_TAG_DOCUMENT },
{ 1, "finishings-default", IPP_TAG_ENUM, IPP_TAG_PRINTER },
@@ -70,14 +168,37 @@ static const _ipp_option_t ipp_options[] =
{ 0, "gamma-default", IPP_TAG_INTEGER, IPP_TAG_PRINTER },
{ 0, "hue", IPP_TAG_INTEGER, IPP_TAG_JOB },
{ 0, "hue-default", IPP_TAG_INTEGER, IPP_TAG_PRINTER },
{ 1, "include-schemes", IPP_TAG_NAME, IPP_TAG_OPERATION },
{ 0, "job-impressions", IPP_TAG_INTEGER, IPP_TAG_JOB },
{ 1, "include-schemes", IPP_TAG_NAME, IPP_TAG_OPERATION,
IPP_TAG_ZERO,
cups_schemes },
{ 0, "job-account-id", IPP_TAG_NAME, IPP_TAG_JOB },
{ 0, "job-account-id-default",IPP_TAG_NAME, IPP_TAG_PRINTER },
{ 0, "job-accounting-user-id", IPP_TAG_NAME, IPP_TAG_JOB },
{ 0, "job-accounting-user-id-default", IPP_TAG_NAME, IPP_TAG_PRINTER },
{ 0, "job-authorization-uri", IPP_TAG_URI, IPP_TAG_OPERATION },
{ 0, "job-hold-until", IPP_TAG_KEYWORD, IPP_TAG_JOB },
{ 0, "job-id", IPP_TAG_INTEGER, IPP_TAG_ZERO }, /* never send as option */
{ 0, "job-impressions", IPP_TAG_INTEGER, IPP_TAG_ZERO }, /* never send as option */
{ 0, "job-impressions-completed", IPP_TAG_INTEGER, IPP_TAG_ZERO }, /* never send as option */
{ 0, "job-k-limit", IPP_TAG_INTEGER, IPP_TAG_PRINTER },
{ 0, "job-k-octets", IPP_TAG_INTEGER, IPP_TAG_ZERO }, /* never send as option */
{ 0, "job-k-octets-completed",IPP_TAG_INTEGER, IPP_TAG_ZERO }, /* never send as option */
{ 0, "job-media-sheets", IPP_TAG_INTEGER, IPP_TAG_ZERO }, /* never send as option */
{ 0, "job-media-sheets-completed", IPP_TAG_INTEGER, IPP_TAG_ZERO }, /* never send as option */
{ 0, "job-page-limit", IPP_TAG_INTEGER, IPP_TAG_PRINTER },
{ 0, "job-password", IPP_TAG_STRING, IPP_TAG_OPERATION,
IPP_TAG_ZERO,
ipp_job_creation },
{ 0, "job-password-encryption", IPP_TAG_KEYWORD, IPP_TAG_OPERATION,
IPP_TAG_ZERO,
ipp_job_creation },
{ 0, "job-priority", IPP_TAG_INTEGER, IPP_TAG_JOB },
{ 0, "job-quota-period", IPP_TAG_INTEGER, IPP_TAG_PRINTER },
{ 1, "job-sheets", IPP_TAG_NAME, IPP_TAG_JOB },
{ 1, "job-sheets-default", IPP_TAG_NAME, IPP_TAG_PRINTER },
{ 0, "job-state", IPP_TAG_ENUM, IPP_TAG_ZERO }, /* never send as option */
{ 0, "job-state-message", IPP_TAG_TEXT, IPP_TAG_ZERO }, /* never send as option */
{ 0, "job-state-reasons", IPP_TAG_KEYWORD, IPP_TAG_ZERO }, /* never send as option */
{ 0, "job-uuid", IPP_TAG_URI, IPP_TAG_JOB },
{ 0, "landscape", IPP_TAG_BOOLEAN, IPP_TAG_JOB },
{ 1, "marker-change-time", IPP_TAG_INTEGER, IPP_TAG_PRINTER },
@@ -140,7 +261,33 @@ static const _ipp_option_t ipp_options[] =
{ 0, "penwidth", IPP_TAG_INTEGER, IPP_TAG_JOB },
{ 0, "penwidth-default", IPP_TAG_INTEGER, IPP_TAG_PRINTER },
{ 0, "port-monitor", IPP_TAG_NAME, IPP_TAG_PRINTER },
{ 0, "ppd-name", IPP_TAG_NAME, IPP_TAG_PRINTER },
{ 0, "ppd-device-id", IPP_TAG_TEXT, IPP_TAG_OPERATION,
IPP_TAG_ZERO,
cups_get_ppds },
{ 0, "ppd-make", IPP_TAG_TEXT, IPP_TAG_OPERATION,
IPP_TAG_ZERO,
cups_get_ppds },
{ 0, "ppd-make-and-model", IPP_TAG_TEXT, IPP_TAG_OPERATION,
IPP_TAG_ZERO,
cups_get_ppds },
{ 0, "ppd-model-number", IPP_TAG_INTEGER, IPP_TAG_OPERATION,
IPP_TAG_ZERO,
cups_get_ppds },
{ 0, "ppd-name", IPP_TAG_NAME, IPP_TAG_OPERATION,
IPP_TAG_ZERO,
cups_ppd_name },
{ 0, "ppd-natural-language", IPP_TAG_LANGUAGE, IPP_TAG_OPERATION,
IPP_TAG_ZERO,
cups_get_ppds },
{ 0, "ppd-product", IPP_TAG_TEXT, IPP_TAG_OPERATION,
IPP_TAG_ZERO,
cups_get_ppds },
{ 0, "ppd-psversion", IPP_TAG_TEXT, IPP_TAG_OPERATION,
IPP_TAG_ZERO,
cups_get_ppds },
{ 0, "ppd-type", IPP_TAG_KEYWORD, IPP_TAG_OPERATION,
IPP_TAG_ZERO,
cups_get_ppds },
{ 0, "ppi", IPP_TAG_INTEGER, IPP_TAG_JOB },
{ 0, "ppi-default", IPP_TAG_INTEGER, IPP_TAG_PRINTER },
{ 0, "prettyprint", IPP_TAG_BOOLEAN, IPP_TAG_JOB },
@@ -179,6 +326,9 @@ static const _ipp_option_t ipp_options[] =
{ 0, "sides", IPP_TAG_KEYWORD, IPP_TAG_JOB,
IPP_TAG_DOCUMENT },
{ 0, "sides-default", IPP_TAG_KEYWORD, IPP_TAG_PRINTER },
{ 0, "time-at-completed", IPP_TAG_INTEGER, IPP_TAG_ZERO }, /* never send as option */
{ 0, "time-at-creation", IPP_TAG_INTEGER, IPP_TAG_ZERO }, /* never send as option */
{ 0, "time-at-processing", IPP_TAG_INTEGER, IPP_TAG_ZERO }, /* never send as option */
{ 0, "wrap", IPP_TAG_BOOLEAN, IPP_TAG_JOB },
{ 0, "wrap-default", IPP_TAG_BOOLEAN, IPP_TAG_PRINTER },
{ 0, "x-dimension", IPP_TAG_INTEGER, IPP_TAG_JOB,
@@ -237,23 +387,27 @@ cupsEncodeOptions2(
cups_option_t *options, /* I - Options */
ipp_tag_t group_tag) /* I - Group to encode */
{
int i, j; /* Looping vars */
int count; /* Number of values */
char *s, /* Pointer into option value */
*val, /* Pointer to option value */
*copy, /* Copy of option value */
*sep, /* Option separator */
quote; /* Quote character */
ipp_attribute_t *attr; /* IPP attribute */
ipp_tag_t value_tag; /* IPP value tag */
cups_option_t *option; /* Current option */
ipp_t *collection; /* Collection value */
int num_cols; /* Number of collection values */
cups_option_t *cols; /* Collection values */
int i, j; /* Looping vars */
int count; /* Number of values */
char *s, /* Pointer into option value */
*val, /* Pointer to option value */
*copy, /* Copy of option value */
*sep, /* Option separator */
quote; /* Quote character */
ipp_attribute_t *attr; /* IPP attribute */
ipp_tag_t value_tag; /* IPP value tag */
cups_option_t *option; /* Current option */
ipp_t *collection; /* Collection value */
int num_cols; /* Number of collection values */
cups_option_t *cols; /* Collection values */
ipp_op_t op; /* Operation for this request */
const ipp_op_t *ops; /* List of allowed operations */
DEBUG_printf(("cupsEncodeOptions2(ipp=%p, num_options=%d, options=%p, "
"group_tag=%x)", ipp, num_options, options, group_tag));
DEBUG_printf(("cupsEncodeOptions2(ipp=%p(%s), num_options=%d, options=%p, "
"group_tag=%x)", ipp,
ipp ? ippOpString(ippGetOperation(ipp)) : "", num_options,
options, group_tag));
/*
* Range check input...
@@ -266,13 +420,18 @@ cupsEncodeOptions2(
* Do special handling for the document-format/raw options...
*/
if (group_tag == IPP_TAG_OPERATION)
op = ippGetOperation(ipp);
if (group_tag == IPP_TAG_OPERATION &&
(op == IPP_OP_PRINT_JOB || op == IPP_OP_PRINT_URI ||
op == IPP_OP_SEND_DOCUMENT || op == IPP_OP_SEND_URI))
{
/*
* Handle the document format stuff first...
*/
if ((val = (char *)cupsGetOption("document-format", num_options, options)) != NULL)
if ((val = (char *)cupsGetOption("document-format", num_options,
options)) != NULL)
ippAddString(ipp, IPP_TAG_OPERATION, IPP_TAG_MIMETYPE, "document-format",
NULL, val);
else if (cupsGetOption("raw", num_options, options))
@@ -311,6 +470,22 @@ cupsEncodeOptions2(
continue;
value_tag = match->value_tag;
if (match->operations)
ops = match->operations;
else if (group_tag == IPP_TAG_JOB)
ops = ipp_job_creation;
else if (group_tag == IPP_TAG_DOCUMENT)
ops = ipp_doc_creation;
else if (group_tag == IPP_TAG_SUBSCRIPTION)
ops = ipp_sub_creation;
else if (group_tag == IPP_TAG_PRINTER)
ops = ipp_set_printer;
else
{
DEBUG_printf(("2cupsEncodeOptions2: Skipping \"%s\".", option->name));
continue;
}
}
else
{
@@ -324,10 +499,23 @@ cupsEncodeOptions2(
strcmp(option->name + namelen - 10, "-supported")))
{
if (group_tag != IPP_TAG_JOB && group_tag != IPP_TAG_DOCUMENT)
{
DEBUG_printf(("2cupsEncodeOptions2: Skipping \"%s\".", option->name));
continue;
}
}
else if (group_tag != IPP_TAG_PRINTER)
{
DEBUG_printf(("2cupsEncodeOptions2: Skipping \"%s\".", option->name));
continue;
}
if (group_tag == IPP_TAG_JOB)
ops = ipp_job_creation;
else if (group_tag == IPP_TAG_DOCUMENT)
ops = ipp_doc_creation;
else
ops = ipp_set_printer;
if (!_cups_strcasecmp(option->value, "true") ||
!_cups_strcasecmp(option->value, "false"))
@@ -336,6 +524,22 @@ cupsEncodeOptions2(
value_tag = IPP_TAG_NAME;
}
/*
* Verify that we send this attribute for this operation...
*/
while (*ops != IPP_OP_CUPS_NONE)
if (op == *ops)
break;
else
ops ++;
if (*ops == IPP_OP_CUPS_NONE && op != IPP_OP_CUPS_NONE)
{
DEBUG_printf(("2cupsEncodeOptions2: Skipping \"%s\".", option->name));
continue;
}
/*
* Count the number of values...
*/
@@ -611,6 +815,26 @@ cupsEncodeOptions2(
}
#ifdef DEBUG
/*
* '_ippCheckOptions()' - Validate that the option array is sorted properly.
*/
const char * /* O - First out-of-order option or NULL */
_ippCheckOptions(void)
{
int i; /* Looping var */
for (i = 0; i < (int)(sizeof(ipp_options) / sizeof(ipp_options[0]) - 1); i ++)
if (strcmp(ipp_options[i].name, ipp_options[i + 1].name) >= 0)
return (ipp_options[i + 1].name);
return (NULL);
}
#endif /* DEBUG */
/*
* '_ippFindOption()' - Find the attribute information for an option.
*/
+19 -18
Ver Arquivo
@@ -3,7 +3,7 @@
*
* cupsGetDevices implementation for CUPS.
*
* Copyright 2008-2012 by Apple Inc.
* Copyright 2008-2013 by Apple Inc.
*
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
@@ -71,19 +71,19 @@ cupsGetDevices(
user_data));
if (!callback)
return (IPP_INTERNAL_ERROR);
return (IPP_STATUS_ERROR_INTERNAL);
if (!http)
http = _cupsConnect();
if (!http)
return (IPP_SERVICE_UNAVAILABLE);
return (IPP_STATUS_ERROR_SERVICE_UNAVAILABLE);
/*
* Create a CUPS-Get-Devices request...
*/
request = ippNewRequest(CUPS_GET_DEVICES);
request = ippNewRequest(IPP_OP_CUPS_GET_DEVICES);
if (timeout > 0)
ippAddInteger(request, IPP_TAG_OPERATION, IPP_TAG_INTEGER, "timeout",
@@ -115,14 +115,14 @@ cupsGetDevices(
status = cupsSendRequest(http, request, "/", ippLength(request));
DEBUG_puts("2cupsGetDevices: Waiting for response status...");
while (status == HTTP_CONTINUE)
while (status == HTTP_STATUS_CONTINUE)
status = httpUpdate(http);
if (status != HTTP_OK)
if (status != HTTP_STATUS_OK)
{
httpFlush(http);
if (status == HTTP_UNAUTHORIZED)
if (status == HTTP_STATUS_UNAUTHORIZED)
{
/*
* See if we can do authentication...
@@ -131,16 +131,16 @@ cupsGetDevices(
DEBUG_puts("2cupsGetDevices: Need authorization...");
if (!cupsDoAuthentication(http, "POST", "/"))
httpReconnect(http);
httpReconnect2(http, 30000, NULL);
else
{
status = HTTP_AUTHORIZATION_CANCELED;
status = HTTP_STATUS_CUPS_AUTHORIZATION_CANCELED;
break;
}
}
#ifdef HAVE_SSL
else if (status == HTTP_UPGRADE_REQUIRED)
else if (status == HTTP_STATUS_UPGRADE_REQUIRED)
{
/*
* Force a reconnect with encryption...
@@ -148,19 +148,20 @@ cupsGetDevices(
DEBUG_puts("2cupsGetDevices: Need encryption...");
if (!httpReconnect(http))
httpEncryption(http, HTTP_ENCRYPT_REQUIRED);
if (!httpReconnect2(http, 30000, NULL))
httpEncryption(http, HTTP_ENCRYPTION_REQUIRED);
}
#endif /* HAVE_SSL */
}
}
while (status == HTTP_UNAUTHORIZED || status == HTTP_UPGRADE_REQUIRED);
while (status == HTTP_STATUS_UNAUTHORIZED ||
status == HTTP_STATUS_UPGRADE_REQUIRED);
DEBUG_printf(("2cupsGetDevices: status=%d", status));
ippDelete(request);
if (status != HTTP_OK)
if (status != HTTP_STATUS_OK)
{
_cupsSetHTTPError(status);
return (cupsLastError());
@@ -186,7 +187,7 @@ cupsGetDevices(
do
{
if ((state = ippRead(http, response)) == IPP_ERROR)
if ((state = ippRead(http, response)) == IPP_STATE_ERROR)
break;
DEBUG_printf(("2cupsGetDevices: state=%d, response->last=%p", state,
@@ -240,7 +241,7 @@ cupsGetDevices(
device_uri = attr->values[0].string.text;
}
}
while (state != IPP_DATA);
while (state != IPP_STATE_DATA);
DEBUG_printf(("2cupsGetDevices: state=%d, response->last=%p", state,
response->last));
@@ -257,8 +258,8 @@ cupsGetDevices(
httpBlocking(http, blocking);
httpFlush(http);
if (status == HTTP_ERROR)
_cupsSetError(IPP_INTERNAL_ERROR, strerror(http->error), 0);
if (status == HTTP_STATUS_ERROR)
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(http->error), 0);
else
{
attr = ippFindAttribute(response, "status-message", IPP_TAG_TEXT);
+70 -50
Ver Arquivo
@@ -3,7 +3,7 @@
*
* Get/put file functions for CUPS.
*
* Copyright 2007-2012 by Apple Inc.
* Copyright 2007-2013 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -39,7 +39,7 @@
/*
* 'cupsGetFd()' - Get a file from the server.
*
* This function returns @code HTTP_OK@ when the file is successfully retrieved.
* This function returns @code HTTP_STATUS_OK@ when the file is successfully retrieved.
*
* @since CUPS 1.1.20/OS X 10.4@
*/
@@ -68,12 +68,12 @@ cupsGetFd(http_t *http, /* I - Connection to server or @code CUPS_HTTP_DEFA
if (http)
http->error = EINVAL;
return (HTTP_ERROR);
return (HTTP_STATUS_ERROR);
}
if (!http)
if ((http = _cupsConnect()) == NULL)
return (HTTP_SERVICE_UNAVAILABLE);
return (HTTP_STATUS_SERVICE_UNAVAILABLE);
/*
* Then send GET requests to the HTTP server...
@@ -84,27 +84,37 @@ cupsGetFd(http_t *http, /* I - Connection to server or @code CUPS_HTTP_DEFA
do
{
if (!_cups_strcasecmp(httpGetField(http, HTTP_FIELD_CONNECTION), "close"))
{
httpClearFields(http);
if (httpReconnect2(http, 30000, NULL))
{
status = HTTP_STATUS_ERROR;
break;
}
}
httpClearFields(http);
httpSetField(http, HTTP_FIELD_AUTHORIZATION, http->authstring);
httpSetField(http, HTTP_FIELD_IF_MODIFIED_SINCE, if_modified_since);
if (httpGet(http, resource))
{
if (httpReconnect(http))
if (httpReconnect2(http, 30000, NULL))
{
status = HTTP_ERROR;
status = HTTP_STATUS_ERROR;
break;
}
else
{
status = HTTP_UNAUTHORIZED;
status = HTTP_STATUS_UNAUTHORIZED;
continue;
}
}
while ((status = httpUpdate(http)) == HTTP_CONTINUE);
while ((status = httpUpdate(http)) == HTTP_STATUS_CONTINUE);
if (status == HTTP_UNAUTHORIZED)
if (status == HTTP_STATUS_UNAUTHORIZED)
{
/*
* Flush any error message...
@@ -118,46 +128,46 @@ cupsGetFd(http_t *http, /* I - Connection to server or @code CUPS_HTTP_DEFA
if (cupsDoAuthentication(http, "GET", resource))
{
status = HTTP_AUTHORIZATION_CANCELED;
status = HTTP_STATUS_CUPS_AUTHORIZATION_CANCELED;
break;
}
if (httpReconnect(http))
if (httpReconnect2(http, 30000, NULL))
{
status = HTTP_ERROR;
status = HTTP_STATUS_ERROR;
break;
}
continue;
}
#ifdef HAVE_SSL
else if (status == HTTP_UPGRADE_REQUIRED)
else if (status == HTTP_STATUS_UPGRADE_REQUIRED)
{
/* Flush any error message... */
httpFlush(http);
/* Reconnect... */
if (httpReconnect(http))
if (httpReconnect2(http, 30000, NULL))
{
status = HTTP_ERROR;
status = HTTP_STATUS_ERROR;
break;
}
/* Upgrade with encryption... */
httpEncryption(http, HTTP_ENCRYPT_REQUIRED);
httpEncryption(http, HTTP_ENCRYPTION_REQUIRED);
/* Try again, this time with encryption enabled... */
continue;
}
#endif /* HAVE_SSL */
}
while (status == HTTP_UNAUTHORIZED || status == HTTP_UPGRADE_REQUIRED);
while (status == HTTP_STATUS_UNAUTHORIZED || status == HTTP_STATUS_UPGRADE_REQUIRED);
/*
* See if we actually got the file or an error...
*/
if (status == HTTP_OK)
if (status == HTTP_STATUS_OK)
{
/*
* Yes, copy the file...
@@ -185,7 +195,7 @@ cupsGetFd(http_t *http, /* I - Connection to server or @code CUPS_HTTP_DEFA
/*
* 'cupsGetFile()' - Get a file from the server.
*
* This function returns @code HTTP_OK@ when the file is successfully retrieved.
* This function returns @code HTTP_STATUS_OK@ when the file is successfully retrieved.
*
* @since CUPS 1.1.20/OS X 10.4@
*/
@@ -208,7 +218,7 @@ cupsGetFile(http_t *http, /* I - Connection to server or @code CUPS_HTTP_DE
if (http)
http->error = EINVAL;
return (HTTP_ERROR);
return (HTTP_STATUS_ERROR);
}
/*
@@ -223,7 +233,7 @@ cupsGetFile(http_t *http, /* I - Connection to server or @code CUPS_HTTP_DE
http->error = errno;
return (HTTP_ERROR);
return (HTTP_STATUS_ERROR);
}
/*
@@ -238,7 +248,7 @@ cupsGetFile(http_t *http, /* I - Connection to server or @code CUPS_HTTP_DE
close(fd);
if (status != HTTP_OK)
if (status != HTTP_STATUS_OK)
unlink(filename);
/*
@@ -252,7 +262,7 @@ cupsGetFile(http_t *http, /* I - Connection to server or @code CUPS_HTTP_DE
/*
* 'cupsPutFd()' - Put a file on the server.
*
* This function returns @code HTTP_CREATED@ when the file is stored
* This function returns @code HTTP_STATUS_CREATED@ when the file is stored
* successfully.
*
* @since CUPS 1.1.20/OS X 10.4@
@@ -281,12 +291,12 @@ cupsPutFd(http_t *http, /* I - Connection to server or @code CUPS_HTTP_DEFA
if (http)
http->error = EINVAL;
return (HTTP_ERROR);
return (HTTP_STATUS_ERROR);
}
if (!http)
if ((http = _cupsConnect()) == NULL)
return (HTTP_SERVICE_UNAVAILABLE);
return (HTTP_STATUS_SERVICE_UNAVAILABLE);
/*
* Then send PUT requests to the HTTP server...
@@ -296,24 +306,34 @@ cupsPutFd(http_t *http, /* I - Connection to server or @code CUPS_HTTP_DEFA
do
{
if (!_cups_strcasecmp(httpGetField(http, HTTP_FIELD_CONNECTION), "close"))
{
httpClearFields(http);
if (httpReconnect2(http, 30000, NULL))
{
status = HTTP_STATUS_ERROR;
break;
}
}
DEBUG_printf(("2cupsPutFd: starting attempt, authstring=\"%s\"...",
http->authstring));
httpClearFields(http);
httpSetField(http, HTTP_FIELD_AUTHORIZATION, http->authstring);
httpSetField(http, HTTP_FIELD_TRANSFER_ENCODING, "chunked");
httpSetExpect(http, HTTP_CONTINUE);
httpSetExpect(http, HTTP_STATUS_CONTINUE);
if (httpPut(http, resource))
{
if (httpReconnect(http))
if (httpReconnect2(http, 30000, NULL))
{
status = HTTP_ERROR;
status = HTTP_STATUS_ERROR;
break;
}
else
{
status = HTTP_UNAUTHORIZED;
status = HTTP_STATUS_UNAUTHORIZED;
continue;
}
}
@@ -325,9 +345,9 @@ cupsPutFd(http_t *http, /* I - Connection to server or @code CUPS_HTTP_DEFA
if (httpWait(http, 1000))
status = httpUpdate(http);
else
status = HTTP_CONTINUE;
status = HTTP_STATUS_CONTINUE;
if (status == HTTP_CONTINUE)
if (status == HTTP_STATUS_CONTINUE)
{
/*
* Copy the file...
@@ -338,21 +358,21 @@ cupsPutFd(http_t *http, /* I - Connection to server or @code CUPS_HTTP_DEFA
while ((bytes = read(fd, buffer, sizeof(buffer))) > 0)
if (httpCheck(http))
{
if ((status = httpUpdate(http)) != HTTP_CONTINUE)
if ((status = httpUpdate(http)) != HTTP_STATUS_CONTINUE)
break;
}
else
httpWrite2(http, buffer, bytes);
}
if (status == HTTP_CONTINUE)
if (status == HTTP_STATUS_CONTINUE)
{
httpWrite2(http, buffer, 0);
while ((status = httpUpdate(http)) == HTTP_CONTINUE);
while ((status = httpUpdate(http)) == HTTP_STATUS_CONTINUE);
}
if (status == HTTP_ERROR && !retries)
if (status == HTTP_STATUS_ERROR && !retries)
{
DEBUG_printf(("2cupsPutFd: retry on status %d", status));
@@ -362,9 +382,9 @@ cupsPutFd(http_t *http, /* I - Connection to server or @code CUPS_HTTP_DEFA
httpFlush(http);
/* Reconnect... */
if (httpReconnect(http))
if (httpReconnect2(http, 30000, NULL))
{
status = HTTP_ERROR;
status = HTTP_STATUS_ERROR;
break;
}
@@ -374,7 +394,7 @@ cupsPutFd(http_t *http, /* I - Connection to server or @code CUPS_HTTP_DEFA
DEBUG_printf(("2cupsPutFd: status=%d", status));
if (status == HTTP_UNAUTHORIZED)
if (status == HTTP_STATUS_UNAUTHORIZED)
{
/*
* Flush any error message...
@@ -388,47 +408,47 @@ cupsPutFd(http_t *http, /* I - Connection to server or @code CUPS_HTTP_DEFA
if (cupsDoAuthentication(http, "PUT", resource))
{
status = HTTP_AUTHORIZATION_CANCELED;
status = HTTP_STATUS_CUPS_AUTHORIZATION_CANCELED;
break;
}
if (httpReconnect(http))
if (httpReconnect2(http, 30000, NULL))
{
status = HTTP_ERROR;
status = HTTP_STATUS_ERROR;
break;
}
continue;
}
#ifdef HAVE_SSL
else if (status == HTTP_UPGRADE_REQUIRED)
else if (status == HTTP_STATUS_UPGRADE_REQUIRED)
{
/* Flush any error message... */
httpFlush(http);
/* Reconnect... */
if (httpReconnect(http))
if (httpReconnect2(http, 30000, NULL))
{
status = HTTP_ERROR;
status = HTTP_STATUS_ERROR;
break;
}
/* Upgrade with encryption... */
httpEncryption(http, HTTP_ENCRYPT_REQUIRED);
httpEncryption(http, HTTP_ENCRYPTION_REQUIRED);
/* Try again, this time with encryption enabled... */
continue;
}
#endif /* HAVE_SSL */
}
while (status == HTTP_UNAUTHORIZED || status == HTTP_UPGRADE_REQUIRED ||
(status == HTTP_ERROR && retries < 2));
while (status == HTTP_STATUS_UNAUTHORIZED || status == HTTP_STATUS_UPGRADE_REQUIRED ||
(status == HTTP_STATUS_ERROR && retries < 2));
/*
* See if we actually put the file or an error...
*/
if (status != HTTP_CREATED)
if (status != HTTP_STATUS_CREATED)
{
_cupsSetHTTPError(status);
httpFlush(http);
@@ -467,7 +487,7 @@ cupsPutFile(http_t *http, /* I - Connection to server or @code CUPS_HTTP_DE
if (http)
http->error = EINVAL;
return (HTTP_ERROR);
return (HTTP_STATUS_ERROR);
}
/*
@@ -482,7 +502,7 @@ cupsPutFile(http_t *http, /* I - Connection to server or @code CUPS_HTTP_DE
http->error = errno;
return (HTTP_ERROR);
return (HTTP_STATUS_ERROR);
}
/*
+19 -7
Ver Arquivo
@@ -3,7 +3,7 @@
*
* Global variable access routines for CUPS.
*
* Copyright 2007-2012 by Apple Inc.
* Copyright 2007-2013 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
@@ -38,6 +38,10 @@
*/
#ifdef DEBUG
static int cups_global_index = 0;
/* Next thread number */
#endif /* DEBUG */
static _cups_threadkey_t cups_globals_key = _CUPS_THREADKEY_INITIALIZER;
/* Thread local storage key */
#ifdef HAVE_PTHREAD_H
@@ -210,11 +214,19 @@ cups_globals_alloc(void)
*/
memset(cg, 0, sizeof(_cups_globals_t));
cg->encryption = (http_encryption_t)-1;
cg->password_cb = (cups_password_cb2_t)_cupsGetPassword;
cg->any_root = 1;
cg->expired_certs = 1;
cg->expired_root = 1;
cg->encryption = (http_encryption_t)-1;
cg->password_cb = (cups_password_cb2_t)_cupsGetPassword;
cg->any_root = 1;
cg->expired_certs = 1;
cg->expired_root = 1;
#ifdef DEBUG
/*
* Friendly thread ID for debugging...
*/
cg->thread_id = ++ cups_global_index;
#endif /* DEBUG */
/*
* Then set directories as appropriate...
@@ -227,7 +239,7 @@ cups_globals_alloc(void)
* Open the registry...
*/
strcpy(installdir, "C:/Program Files/cups.org");
strlcpy(installdir, "C:/Program Files/cups.org", sizeof(installdir));
if (!RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\cups.org", 0, KEY_READ,
&key))
+90 -20
Ver Arquivo
@@ -3,7 +3,7 @@
*
* HTTP address routines for CUPS.
*
* Copyright 2007-2012 by Apple Inc.
* Copyright 2007-2013 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
@@ -14,16 +14,19 @@
*
* Contents:
*
* httpAddrAny() - Check for the "any" address.
* httpAddrEqual() - Compare two addresses.
* httpAddrAny() - Check for the "any" address.
* httpAddrEqual() - Compare two addresses.
* httpAddrLength() - Return the length of the address in bytes.
* httpAddrListen() - Create a listening socket bound to the specified
* address and port.
* httpAddrLocalhost() - Check for the local loopback address.
* httpAddrLookup() - Lookup the hostname associated with the address.
* _httpAddrPort() - Get the port number associated with an address.
* httpAddrLookup() - Lookup the hostname associated with the address.
* httpAddrPort() - Get the port number associated with an address.
* _httpAddrSetPort() - Set the port number associated with an address.
* httpAddrString() - Convert an IP address to a dotted string.
* httpGetHostByName() - Lookup a hostname or IP address, and return
* address records for the specified name.
* httpGetHostname() - Get the FQDN for the local system.
* httpAddrString() - Convert an address to a numeric string.
* httpGetHostByName() - Lookup a hostname or IPv4 address, and return
* address records for the specified name.
* httpGetHostname() - Get the FQDN for the connection or local system.
*/
/*
@@ -130,6 +133,75 @@ httpAddrLength(const http_addr_t *addr) /* I - Address */
}
/*
* 'httpAddrListen()' - Create a listening socket bound to the specified
* address and port.
*
* @since CUPS 1.7/OS X 10.9@
*/
int /* O - Socket or -1 on error */
httpAddrListen(http_addr_t *addr, /* I - Address to bind to */
int port) /* I - Port number to bind to */
{
int fd = -1, /* Socket */
val; /* Socket value */
/*
* Range check input...
*/
if (!addr || port <= 0)
return (-1);
if ((fd = socket(addr->addr.sa_family, SOCK_STREAM, 0)) < 0)
{
_cupsSetHTTPError(HTTP_STATUS_ERROR);
return (-1);
}
val = 1;
setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, CUPS_SOCAST &val, sizeof(val));
#ifdef IPV6_V6ONLY
if (addr->addr.sa_family == AF_INET6)
setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, CUPS_SOCAST &val, sizeof(val));
#endif /* IPV6_V6ONLY */
_httpAddrSetPort(addr, port);
if (bind(fd, (struct sockaddr *)addr, httpAddrLength(addr)))
{
_cupsSetHTTPError(HTTP_STATUS_ERROR);
close(fd);
return (-1);
}
if (listen(fd, 5))
{
_cupsSetHTTPError(HTTP_STATUS_ERROR);
close(fd);
return (-1);
}
#ifdef SO_NOSIGPIPE
/*
* Disable SIGPIPE for this socket.
*/
val = 1;
setsockopt(fd, SOL_SOCKET, SO_NOSIGPIPE, CUPS_SOCAST &val, sizeof(val));
#endif /* SO_NOSIGPIPE */
return (fd);
}
/*
* 'httpAddrLocalhost()' - Check for the local loopback address.
*
@@ -162,13 +234,6 @@ httpAddrLocalhost(
}
#ifdef __sgi
# define ADDR_CAST (struct sockaddr *)
#else
# define ADDR_CAST (char *)
#endif /* __sgi */
/*
* 'httpAddrLookup()' - Lookup the hostname associated with the address.
*
@@ -267,11 +332,11 @@ httpAddrLookup(
# ifdef AF_INET6
if (addr->addr.sa_family == AF_INET6)
host = gethostbyaddr(ADDR_CAST &(addr->ipv6.sin6_addr),
host = gethostbyaddr((char *)&(addr->ipv6.sin6_addr),
sizeof(struct in_addr), AF_INET6);
else
# endif /* AF_INET6 */
host = gethostbyaddr(ADDR_CAST &(addr->ipv4.sin_addr),
host = gethostbyaddr((char *)&(addr->ipv4.sin_addr),
sizeof(struct in_addr), AF_INET);
if (host == NULL)
@@ -297,11 +362,13 @@ httpAddrLookup(
/*
* '_httpAddrPort()' - Get the port number associated with an address.
* 'httpAddrPort()' - Get the port number associated with an address.
*
* @since CUPS 1.7/OS X 10.9@
*/
int /* O - Port number */
_httpAddrPort(http_addr_t *addr) /* I - Address */
httpAddrPort(http_addr_t *addr) /* I - Address */
{
if (!addr)
return (ippPort());
@@ -315,6 +382,9 @@ _httpAddrPort(http_addr_t *addr) /* I - Address */
return (ippPort());
}
/* For OS X 10.8 and earlier */
int _httpAddrPort(http_addr_t *addr) { return (httpAddrPort(addr)); }
/*
* '_httpAddrSetPort()' - Set the port number associated with an address.
+76 -35
Ver Arquivo
@@ -3,7 +3,7 @@
*
* HTTP address list routines for CUPS.
*
* Copyright 2007-2012 by Apple Inc.
* Copyright 2007-2013 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
@@ -14,11 +14,12 @@
*
* Contents:
*
* httpAddrConnect() - Connect to any of the addresses in the list.
* httpAddrConnect() - Connect to any of the addresses in the list.
* httpAddrConnect2() - Connect to any of the addresses in the list with a
* timeout and optional cancel.
* timeout and optional cancel.
* httpAddrCopyList() - Copy an address list.
* httpAddrFreeList() - Free an address list.
* httpAddrGetList() - Get a list of addresses for a hostname.
* httpAddrGetList() - Get a list of addresses for a hostname.
*/
/*
@@ -33,7 +34,7 @@
# include <poll.h>
#endif /* HAVE_POLL */
#ifndef WIN32
# include <sys/fcntl.h>
# include <fcntl.h>
#endif /* WIN32 */
@@ -58,7 +59,7 @@ httpAddrConnect(
* 'httpAddrConnect2()' - Connect to any of the addresses in the list with a
* timeout and optional cancel.
*
* @since CUPS 1.6/OS X 10.8@
* @since CUPS 1.7/OS X 10.9@
*/
http_addrlist_t * /* O - Connected address or NULL on failure */
@@ -94,7 +95,7 @@ httpAddrConnect2(
if (!sock)
{
errno = EINVAL;
_cupsSetError(IPP_INTERNAL_ERROR, strerror(errno), 0);
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(errno), 0);
return (NULL);
}
@@ -119,7 +120,7 @@ httpAddrConnect2(
DEBUG_printf(("2httpAddrConnect2: Trying %s:%d...",
httpAddrString(&(addrlist->addr), temp, sizeof(temp)),
_httpAddrPort(&(addrlist->addr))));
httpAddrPort(&(addrlist->addr))));
if ((*sock = (int)socket(_httpAddrFamily(&(addrlist->addr)), SOCK_STREAM,
0)) < 0)
@@ -138,21 +139,16 @@ httpAddrConnect2(
*/
val = 1;
#ifdef WIN32
setsockopt(*sock, SOL_SOCKET, SO_REUSEADDR, (const char *)&val,
sizeof(val));
#else
setsockopt(*sock, SOL_SOCKET, SO_REUSEADDR, &val, sizeof(val));
#endif /* WIN32 */
setsockopt(*sock, SOL_SOCKET, SO_REUSEADDR, CUPS_SOCAST &val, sizeof(val));
#ifdef SO_REUSEPORT
val = 1;
setsockopt(*sock, SOL_SOCKET, SO_REUSEPORT, &val, sizeof(val));
setsockopt(*sock, SOL_SOCKET, SO_REUSEPORT, CUPS_SOCAST &val, sizeof(val));
#endif /* SO_REUSEPORT */
#ifdef SO_NOSIGPIPE
val = 1;
setsockopt(*sock, SOL_SOCKET, SO_NOSIGPIPE, &val, sizeof(val));
setsockopt(*sock, SOL_SOCKET, SO_NOSIGPIPE, CUPS_SOCAST &val, sizeof(val));
#endif /* SO_NOSIGPIPE */
/*
@@ -161,12 +157,7 @@ httpAddrConnect2(
*/
val = 1;
#ifdef WIN32
setsockopt(*sock, IPPROTO_TCP, TCP_NODELAY, (const char *)&val,
sizeof(val));
#else
setsockopt(*sock, IPPROTO_TCP, TCP_NODELAY, &val, sizeof(val));
#endif /* WIN32 */
setsockopt(*sock, IPPROTO_TCP, TCP_NODELAY, CUPS_SOCAST &val, sizeof(val));
#ifdef FD_CLOEXEC
/*
@@ -201,7 +192,7 @@ httpAddrConnect2(
{
DEBUG_printf(("1httpAddrConnect2: Connected to %s:%d...",
httpAddrString(&(addrlist->addr), temp, sizeof(temp)),
_httpAddrPort(&(addrlist->addr))));
httpAddrPort(&(addrlist->addr))));
#ifdef O_NONBLOCK
fcntl(*sock, F_SETFL, flags);
@@ -282,7 +273,7 @@ httpAddrConnect2(
{
DEBUG_printf(("1httpAddrConnect2: Connected to %s:%d...",
httpAddrString(&peer, temp, sizeof(temp)),
_httpAddrPort(&peer)));
httpAddrPort(&peer)));
return (addrlist);
}
@@ -295,7 +286,7 @@ httpAddrConnect2(
DEBUG_printf(("1httpAddrConnect2: Unable to connect to %s:%d: %s",
httpAddrString(&(addrlist->addr), temp, sizeof(temp)),
_httpAddrPort(&(addrlist->addr)), strerror(errno)));
httpAddrPort(&(addrlist->addr)), strerror(errno)));
#ifndef WIN32
if (errno == EINPROGRESS)
@@ -318,15 +309,65 @@ httpAddrConnect2(
if (!addrlist)
#ifdef WIN32
_cupsSetError(IPP_SERVICE_UNAVAILABLE, "Connection failed", 0);
_cupsSetError(IPP_STATUS_ERROR_SERVICE_UNAVAILABLE, "Connection failed", 0);
#else
_cupsSetError(IPP_SERVICE_UNAVAILABLE, strerror(errno), 0);
_cupsSetError(IPP_STATUS_ERROR_SERVICE_UNAVAILABLE, strerror(errno), 0);
#endif /* WIN32 */
return (addrlist);
}
/*
* 'httpAddrCopyList()' - Copy an address list.
*
* @since CUPS 1.7/OS X 10.9@
*/
http_addrlist_t * /* O - New address list or @code NULL@ on error */
httpAddrCopyList(
http_addrlist_t *src) /* I - Source address list */
{
http_addrlist_t *dst = NULL, /* First list entry */
*prev = NULL, /* Previous list entry */
*current = NULL;/* Current list entry */
while (src)
{
if ((current = malloc(sizeof(http_addrlist_t))) == NULL)
{
current = dst;
while (current)
{
prev = current;
current = current->next;
free(prev);
}
return (NULL);
}
memcpy(current, src, sizeof(http_addrlist_t));
current->next = NULL;
if (prev)
prev->next = current;
else
dst = current;
prev = current;
src = src->next;
}
return (dst);
}
/*
* 'httpAddrFreeList()' - Free an address list.
*
@@ -508,7 +549,7 @@ httpAddrGetList(const char *hostname, /* I - Hostname, IP address, or NULL for p
if (!temp)
{
httpAddrFreeList(first);
_cupsSetError(IPP_INTERNAL_ERROR, strerror(errno), 0);
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(errno), 0);
return (NULL);
}
@@ -543,7 +584,7 @@ httpAddrGetList(const char *hostname, /* I - Hostname, IP address, or NULL for p
if (error == EAI_FAIL)
cg->need_res_init = 1;
_cupsSetError(IPP_INTERNAL_ERROR, gai_strerror(error), 0);
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, gai_strerror(error), 0);
}
#else
@@ -667,7 +708,7 @@ httpAddrGetList(const char *hostname, /* I - Hostname, IP address, or NULL for p
if (h_errno == NO_RECOVERY)
cg->need_res_init = 1;
_cupsSetError(IPP_INTERNAL_ERROR, hstrerror(h_errno), 0);
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, hstrerror(h_errno), 0);
}
}
#endif /* HAVE_GETADDRINFO */
@@ -707,7 +748,7 @@ httpAddrGetList(const char *hostname, /* I - Hostname, IP address, or NULL for p
{
httpAddrFreeList(first);
_cupsSetError(IPP_INTERNAL_ERROR, _("Unknown service name."), 1);
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Unknown service name."), 1);
return (NULL);
}
@@ -730,7 +771,7 @@ httpAddrGetList(const char *hostname, /* I - Hostname, IP address, or NULL for p
temp = (http_addrlist_t *)calloc(1, sizeof(http_addrlist_t));
if (!temp)
{
_cupsSetError(IPP_INTERNAL_ERROR, strerror(errno), 0);
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(errno), 0);
httpAddrFreeList(first);
return (NULL);
}
@@ -759,7 +800,7 @@ httpAddrGetList(const char *hostname, /* I - Hostname, IP address, or NULL for p
temp = (http_addrlist_t *)calloc(1, sizeof(http_addrlist_t));
if (!temp)
{
_cupsSetError(IPP_INTERNAL_ERROR, strerror(errno), 0);
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(errno), 0);
httpAddrFreeList(first);
return (NULL);
}
@@ -791,7 +832,7 @@ httpAddrGetList(const char *hostname, /* I - Hostname, IP address, or NULL for p
temp = (http_addrlist_t *)calloc(1, sizeof(http_addrlist_t));
if (!temp)
{
_cupsSetError(IPP_INTERNAL_ERROR, strerror(errno), 0);
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(errno), 0);
httpAddrFreeList(first);
return (NULL);
}
@@ -815,7 +856,7 @@ httpAddrGetList(const char *hostname, /* I - Hostname, IP address, or NULL for p
temp = (http_addrlist_t *)calloc(1, sizeof(http_addrlist_t));
if (!temp)
{
_cupsSetError(IPP_INTERNAL_ERROR, strerror(errno), 0);
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(errno), 0);
httpAddrFreeList(first);
return (NULL);
}
+60 -28
Ver Arquivo
@@ -3,7 +3,7 @@
*
* Private HTTP definitions for CUPS.
*
* Copyright 2007-2012 by Apple Inc.
* Copyright 2007-2013 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
@@ -34,53 +34,40 @@
# ifdef WIN32
# include <io.h>
# include <winsock2.h>
# define CUPS_SOCAST (const char *)
# else
# include <unistd.h>
# include <fcntl.h>
# include <sys/socket.h>
# define closesocket(f) close(f)
# define CUPS_SOCAST
# endif /* WIN32 */
# ifdef HAVE_GSSAPI
# ifdef HAVE_GSS_GSSAPI_H
# include <GSS/gssapi.h>
# ifdef HAVE_GSSAPI_GENERIC_H
# include <GSS/gssapi_generic.h>
# endif /* HAVE_GSSAPI_GENERIC_H */
# ifdef HAVE_GSSAPI_KRB5_H
# include <GSS/gssapi_krb5.h>
# endif /* HAVE_GSSAPI_KRB5_H */
# elif defined(HAVE_GSSAPI_GSSAPI_H)
# include <gssapi/gssapi.h>
# ifdef HAVE_GSSAPI_GENERIC_H
# include <gssapi/gssapi_generic.h>
# endif /* HAVE_GSSAPI_GENERIC_H */
# ifdef HAVE_GSSAPI_KRB5_H
# include <gssapi/gssapi_krb5.h>
# endif /* HAVE_GSSAPI_KRB5_H */
# elif defined(HAVE_GSSAPI_H)
# include <gssapi.h>
# endif /* HAVE_GSS_GSSAPI_H */
# ifndef HAVE_GSS_C_NT_HOSTBASED_SERVICE
# define GSS_C_NT_HOSTBASED_SERVICE gss_nt_service_name
# endif /* !HAVE_GSS_C_NT_HOSTBASED_SERVICE */
# ifdef HAVE_KRB5_H
# include <krb5.h>
# endif /* HAVE_KRB5_H */
# endif /* HAVE_GSSAPI */
# ifdef HAVE_AUTHORIZATION_H
# include <Security/Authorization.h>
# endif /* HAVE_AUTHORIZATION_H */
# if defined(__sgi) || (defined(__APPLE__) && !defined(_SOCKLEN_T))
# if defined(__APPLE__) && !defined(_SOCKLEN_T)
/*
* IRIX and MacOS X 10.2.x do not define socklen_t, and in fact use an int instead of
* MacOS X 10.2.x does not define socklen_t, and in fact uses an int instead of
* unsigned type for length values...
*/
typedef int socklen_t;
# endif /* __sgi || (__APPLE__ && !_SOCKLEN_T) */
# endif /* __APPLE__ && !_SOCKLEN_T */
# include <cups/http.h>
# include "md5-private.h"
@@ -136,6 +123,10 @@ typedef int socklen_t;
# endif /* HAVE_GETIFADDRS */
# endif /* !WIN32 */
# ifdef HAVE_LIBZ
# include <zlib.h>
# endif /* HAVE_LIBZ */
/*
* C++ magic...
@@ -236,7 +227,22 @@ typedef void *http_tls_t;
typedef void *http_tls_credentials_t;
# endif /* HAVE_LIBSSL */
struct _http_s /**** HTTP connection structure. ****/
typedef enum _http_coding_e /**** HTTP content coding enumeration ****/
{
_HTTP_CODING_IDENTITY, /* No content coding */
_HTTP_CODING_GZIP, /* LZ77+gzip decompression */
_HTTP_CODING_DEFLATE, /* LZ77+zlib compression */
_HTTP_CODING_GUNZIP, /* LZ77+gzip decompression */
_HTTP_CODING_INFLATE /* LZ77+zlib decompression */
} _http_coding_t;
typedef enum _http_mode_e /**** HTTP mode enumeration ****/
{
_HTTP_MODE_CLIENT, /* Client connected to server */
_HTTP_MODE_SERVER /* Server connected (accepted) from client */
} _http_mode_t;
struct _http_s /**** HTTP connection structure ****/
{
int fd; /* File descriptor for this socket */
int blocking; /* To block or not to block */
@@ -249,8 +255,8 @@ struct _http_s /**** HTTP connection structure. ****/
struct sockaddr_in _hostaddr; /* Address of connected host (deprecated) */
char hostname[HTTP_MAX_HOST],
/* Name of connected host */
fields[HTTP_FIELD_MAX][HTTP_MAX_VALUE];
/* Field values */
fields[HTTP_FIELD_ACCEPT_ENCODING][HTTP_MAX_VALUE];
/* Field values up to Accept-Encoding */
char *data; /* Pointer to data buffer */
http_encoding_t data_encoding; /* Chunked or not */
int _data_remaining;/* Number of bytes left (deprecated) */
@@ -264,16 +270,19 @@ struct _http_s /**** HTTP connection structure. ****/
int nonce_count; /* Nonce count */
http_tls_t tls; /* TLS state information */
http_encryption_t encryption; /* Encryption requirements */
/**** New in CUPS 1.1.19 ****/
fd_set *input_set; /* select() set for httpWait() (deprecated) */
http_status_t expect; /* Expect: header */
char *cookie; /* Cookie value(s) */
/**** New in CUPS 1.1.20 ****/
char _authstring[HTTP_MAX_VALUE],
/* Current Authentication value (deprecated) */
/* Current Authorization value (deprecated) */
userpass[HTTP_MAX_VALUE];
/* Username:password string */
int digest_tries; /* Number of tries for digest auth */
/**** New in CUPS 1.2 ****/
off_t data_remaining; /* Number of bytes left */
http_addr_t *hostaddr; /* Current host address and port */
@@ -281,10 +290,11 @@ struct _http_s /**** HTTP connection structure. ****/
char wbuffer[HTTP_MAX_BUFFER];
/* Buffer for outgoing data */
int wused; /* Write buffer bytes used */
/**** New in CUPS 1.3 ****/
char *field_authorization;
/* Authorization field */
char *authstring; /* Current authorization field */
char *authstring; /* Current Authorization field */
# ifdef HAVE_GSSAPI
gss_OID gssmech; /* Authentication mechanism */
gss_ctx_id_t gssctx; /* Authentication context */
@@ -293,6 +303,7 @@ struct _http_s /**** HTTP connection structure. ****/
# ifdef HAVE_AUTHORIZATION_H
AuthorizationRef auth_ref; /* Authorization ref */
# endif /* HAVE_AUTHORIZATION_H */
/**** New in CUPS 1.5 ****/
http_tls_credentials_t tls_credentials;
/* TLS credentials */
@@ -303,6 +314,23 @@ struct _http_s /**** HTTP connection structure. ****/
# ifdef HAVE_GSSAPI
char gsshost[256]; /* Hostname for Kerberos */
# endif /* HAVE_GSSAPI */
/**** New in CUPS 1.7 ****/
int tls_upgrade; /* Non-zero if we are doing an upgrade */
_http_mode_t mode; /* _HTTP_MODE_CLIENT or _HTTP_MODE_SERVER */
char *accept_encoding,
/* Accept-Encoding field */
*allow, /* Allow field */
*server, /* Server field */
*default_accept_encoding,
*default_server,
*default_user_agent;
/* Default field values */
# ifdef HAVE_LIBZ
_http_coding_t coding; /* _HTTP_CODING_xxx */
z_stream stream; /* (De)compression stream */
Bytef *dbuffer; /* Decompression buffer */
# endif /* HAVE_LIBZ */
};
@@ -368,15 +396,18 @@ extern void _cups_freeifaddrs(struct ifaddrs *addrs);
*/
#define _httpAddrFamily(addrp) (addrp)->addr.sa_family
extern int _httpAddrPort(http_addr_t *addr);
extern int _httpAddrPort(http_addr_t *addr)
_CUPS_INTERNAL_MSG("Use httpAddrPort instead.");
extern void _httpAddrSetPort(http_addr_t *addr, int port);
extern char *_httpAssembleUUID(const char *server, int port,
const char *name, int number,
char *buffer, size_t bufsize);
char *buffer, size_t bufsize)
_CUPS_INTERNAL_MSG("Use httpAssembleUUID instead.");
extern http_t *_httpCreate(const char *host, int port,
http_addrlist_t *addrlist,
http_encryption_t encryption,
int family);
int family)
_CUPS_INTERNAL_MSG("Use httpConnect2 or httpAccept instead.");
extern http_tls_credentials_t
_httpCreateCredentials(cups_array_t *credentials);
extern char *_httpDecodeURI(char *dst, const char *src,
@@ -385,7 +416,8 @@ extern void _httpDisconnect(http_t *http);
extern char *_httpEncodeURI(char *dst, const char *src,
size_t dstsize);
extern void _httpFreeCredentials(http_tls_credentials_t credentials);
extern ssize_t _httpPeek(http_t *http, char *buffer, size_t length);
extern ssize_t _httpPeek(http_t *http, char *buffer, size_t length)
_CUPS_INTERNAL_MSG("Use httpPeek instead.");
extern const char *_httpResolveURI(const char *uri, char *resolved_uri,
size_t resolved_size, int options,
int (*cb)(void *context),
+182 -83
Ver Arquivo
@@ -3,7 +3,7 @@
*
* HTTP support routines for CUPS.
*
* Copyright 2007-2012 by Apple Inc.
* Copyright 2007-2013 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
@@ -20,7 +20,8 @@
* components.
* httpAssembleURIf() - Assemble a uniform resource identifier from its
* components with a formatted resource.
* _httpAssembleUUID() - Make a UUID URI conforming to RFC 4122.
* httpAssembleUUID() - Assemble a name-based UUID URN conforming to RFC
* 4122.
* httpDecode64() - Base64-decode a string.
* httpDecode64_2() - Base64-decode a string.
* httpEncode64() - Base64-encode a string.
@@ -82,6 +83,7 @@ typedef struct _http_uribuf_s /* URI buffer */
char *buffer; /* Pointer to buffer */
size_t bufsize; /* Size of buffer */
int options; /* Options passed to _httpResolveURI */
const char *resource; /* Resource from URI */
} _http_uribuf_t;
@@ -191,7 +193,7 @@ httpAssembleURI(
if (uri)
*uri = '\0';
return (HTTP_URI_BAD_ARGUMENTS);
return (HTTP_URI_STATUS_BAD_ARGUMENTS);
}
/*
@@ -237,6 +239,9 @@ httpAssembleURI(
if (host)
{
const char *hostptr; /* Pointer into hostname */
int have_ipv6; /* Do we have an IPv6 address? */
if (username && *username)
{
/*
@@ -264,13 +269,23 @@ httpAssembleURI(
* too...
*/
if (host[0] != '[' && strchr(host, ':') && !strstr(host, "._tcp"))
for (hostptr = host,
have_ipv6 = strchr(host, ':') && !strstr(host, "._tcp");
*hostptr && have_ipv6;
hostptr ++)
if (*hostptr != ':' && !isxdigit(*hostptr & 255))
{
have_ipv6 = *hostptr == '%';
break;
}
if (have_ipv6)
{
/*
* We have a raw IPv6 address...
*/
if (strchr(host, '%'))
if (strchr(host, '%') && !(encoding & HTTP_URI_CODING_RFC6874))
{
/*
* We have a link-local address, add "[v1." prefix...
@@ -289,7 +304,7 @@ httpAssembleURI(
else
{
/*
* We have a normal address, add "[" prefix...
* We have a normal (or RFC 6874 link-local) address, add "[" prefix...
*/
if (ptr < end)
@@ -305,8 +320,23 @@ httpAssembleURI(
while (ptr < end && *host)
{
if (*host == '%')
{
*ptr++ = '+'; /* Convert zone separator */
{
/*
* Convert/encode zone separator
*/
if (encoding & HTTP_URI_CODING_RFC6874)
{
if (ptr >= (end - 2))
goto assemble_overflow;
*ptr++ = '%';
*ptr++ = '2';
*ptr++ = '5';
}
else
*ptr++ = '+';
host ++;
}
else
@@ -324,10 +354,12 @@ httpAssembleURI(
else
{
/*
* Otherwise, just copy the host string...
* Otherwise, just copy the host string (the extra chars are not in the
* "reg-name" ABNF rule; anything <= SP or >= DEL plus % gets automatically
* percent-encoded.
*/
ptr = http_copy_encode(ptr, host, end, ":/?#[]@\\\"", NULL,
ptr = http_copy_encode(ptr, host, end, "\"#/:<>?@[\\]^`{|}", NULL,
encoding & HTTP_URI_CODING_HOSTNAME);
if (!ptr)
@@ -390,7 +422,7 @@ httpAssembleURI(
*ptr = '\0';
return (HTTP_URI_OK);
return (HTTP_URI_STATUS_OK);
/*
* Clear the URI string and return an overflow error; I don't usually
@@ -400,7 +432,7 @@ httpAssembleURI(
assemble_overflow:
*uri = '\0';
return (HTTP_URI_OVERFLOW);
return (HTTP_URI_STATUS_OVERFLOW);
}
@@ -443,7 +475,7 @@ httpAssembleURIf(
if (uri)
*uri = '\0';
return (HTTP_URI_BAD_ARGUMENTS);
return (HTTP_URI_STATUS_BAD_ARGUMENTS);
}
/*
@@ -457,7 +489,7 @@ httpAssembleURIf(
if (bytes >= sizeof(resource))
{
*uri = '\0';
return (HTTP_URI_OVERFLOW);
return (HTTP_URI_STATUS_OVERFLOW);
}
else
return (httpAssembleURI(encoding, uri, urilen, scheme, username, host,
@@ -466,18 +498,24 @@ httpAssembleURIf(
/*
* '_httpAssembleUUID()' - Make a UUID URI conforming to RFC 4122.
* 'httpAssembleUUID()' - Assemble a name-based UUID URN conforming to RFC 4122.
*
* This function creates a unique 128-bit identifying number using the server
* name, port number, random data, and optionally an object name and/or object
* number. The result is formatted as a UUID URN as defined in RFC 4122.
*
* The buffer needs to be at least 46 bytes in size.
*
* @since CUPS 1.7/OS X 10.9@
*/
char * /* I - UUID string */
_httpAssembleUUID(const char *server, /* I - Server name */
int port, /* I - Port number */
const char *name, /* I - Object name or NULL */
int number, /* I - Object number or 0 */
char *buffer, /* I - String buffer */
size_t bufsize) /* I - Size of buffer */
httpAssembleUUID(const char *server, /* I - Server name */
int port, /* I - Port number */
const char *name, /* I - Object name or NULL */
int number, /* I - Object number or 0 */
char *buffer, /* I - String buffer */
size_t bufsize) /* I - Size of buffer */
{
char data[1024]; /* Source string for MD5 */
_cups_md5_state_t md5state; /* MD5 state */
@@ -514,6 +552,13 @@ _httpAssembleUUID(const char *server, /* I - Server name */
return (buffer);
}
/* For OS X 10.8 and earlier */
char *_httpAssembleUUID(const char *server, int port, const char *name,
int number, char *buffer, size_t bufsize)
{
return (httpAssembleUUID(server, port, name, number, buffer, bufsize));
}
/*
* 'httpDecode64()' - Base64-decode a string.
@@ -966,16 +1011,16 @@ httpSeparateURI(
if (!uri || !port || !scheme || schemelen <= 0 || !username ||
usernamelen <= 0 || !host || hostlen <= 0 || !resource ||
resourcelen <= 0)
return (HTTP_URI_BAD_ARGUMENTS);
return (HTTP_URI_STATUS_BAD_ARGUMENTS);
if (!*uri)
return (HTTP_URI_BAD_URI);
return (HTTP_URI_STATUS_BAD_URI);
/*
* Grab the scheme portion of the URI...
*/
status = HTTP_URI_OK;
status = HTTP_URI_STATUS_OK;
if (!strncmp(uri, "//", 2))
{
@@ -984,7 +1029,7 @@ httpSeparateURI(
*/
strlcpy(scheme, "ipp", schemelen);
status = HTTP_URI_MISSING_SCHEME;
status = HTTP_URI_STATUS_MISSING_SCHEME;
}
else if (*uri == '/')
{
@@ -993,7 +1038,7 @@ httpSeparateURI(
*/
strlcpy(scheme, "file", schemelen);
status = HTTP_URI_MISSING_SCHEME;
status = HTTP_URI_STATUS_MISSING_SCHEME;
}
else
{
@@ -1015,7 +1060,7 @@ httpSeparateURI(
if (*uri != ':')
{
*scheme = '\0';
return (HTTP_URI_BAD_SCHEME);
return (HTTP_URI_STATUS_BAD_SCHEME);
}
uri ++;
@@ -1036,7 +1081,7 @@ httpSeparateURI(
else if (!strcmp(scheme, "socket")) /* Not yet registered with IANA... */
*port = 9100;
else if (strcmp(scheme, "file") && strcmp(scheme, "mailto"))
status = HTTP_URI_UNKNOWN_SCHEME;
status = HTTP_URI_STATUS_UNKNOWN_SCHEME;
/*
* Now see if we have a hostname...
@@ -1066,7 +1111,7 @@ httpSeparateURI(
if (!uri)
{
*username = '\0';
return (HTTP_URI_BAD_USERNAME);
return (HTTP_URI_STATUS_BAD_USERNAME);
}
uri ++;
@@ -1083,8 +1128,25 @@ httpSeparateURI(
*/
uri ++;
if (!strncmp(uri, "v1.", 3))
uri += 3; /* Skip IPvN leader... */
if (*uri == 'v')
{
/*
* Skip IPvFuture ("vXXXX.") prefix...
*/
uri ++;
while (isxdigit(*uri & 255))
uri ++;
if (*uri != '.')
{
*host = '\0';
return (HTTP_URI_STATUS_BAD_HOSTNAME);
}
uri ++;
}
uri = http_copy_decode(host, uri, hostlen, "]",
decoding & HTTP_URI_CODING_HOSTNAME);
@@ -1092,7 +1154,7 @@ httpSeparateURI(
if (!uri)
{
*host = '\0';
return (HTTP_URI_BAD_HOSTNAME);
return (HTTP_URI_STATUS_BAD_HOSTNAME);
}
/*
@@ -1102,7 +1164,7 @@ httpSeparateURI(
if (*uri != ']')
{
*host = '\0';
return (HTTP_URI_BAD_HOSTNAME);
return (HTTP_URI_STATUS_BAD_HOSTNAME);
}
uri ++;
@@ -1117,10 +1179,18 @@ httpSeparateURI(
*ptr = '%';
break;
}
else if (*ptr == '%')
{
/*
* Stop at zone separator (RFC 6874)
*/
break;
}
else if (*ptr != ':' && *ptr != '.' && !isxdigit(*ptr & 255))
{
*host = '\0';
return (HTTP_URI_BAD_HOSTNAME);
return (HTTP_URI_STATUS_BAD_HOSTNAME);
}
}
else
@@ -1132,15 +1202,16 @@ httpSeparateURI(
for (ptr = (char *)uri; *ptr; ptr ++)
if (strchr(":?/", *ptr))
break;
else if (!strchr("abcdefghijklmnopqrstuvwxyz"
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"0123456789"
"-._~"
"%"
"!$&'()*+,;=\\", *ptr))
else if (!strchr("abcdefghijklmnopqrstuvwxyz" /* unreserved */
"ABCDEFGHIJKLMNOPQRSTUVWXYZ" /* unreserved */
"0123456789" /* unreserved */
"-._~" /* unreserved */
"%" /* pct-encoded */
"!$&'()*+,;=" /* sub-delims */
"\\", *ptr)) /* SMB domain */
{
*host = '\0';
return (HTTP_URI_BAD_HOSTNAME);
return (HTTP_URI_STATUS_BAD_HOSTNAME);
}
/*
@@ -1153,7 +1224,7 @@ httpSeparateURI(
if (!uri)
{
*host = '\0';
return (HTTP_URI_BAD_HOSTNAME);
return (HTTP_URI_STATUS_BAD_HOSTNAME);
}
}
@@ -1165,7 +1236,7 @@ httpSeparateURI(
if (!strcmp(scheme, "file") && strcmp(host, "localhost") && host[0])
{
*host = '\0';
return (HTTP_URI_BAD_HOSTNAME);
return (HTTP_URI_STATUS_BAD_HOSTNAME);
}
/*
@@ -1181,7 +1252,7 @@ httpSeparateURI(
if (!isdigit(uri[1] & 255))
{
*port = 0;
return (HTTP_URI_BAD_PORT);
return (HTTP_URI_STATUS_BAD_PORT);
}
*port = strtol(uri + 1, (char **)&uri, 10);
@@ -1189,7 +1260,7 @@ httpSeparateURI(
if (*uri != '/' && *uri)
{
*port = 0;
return (HTTP_URI_BAD_PORT);
return (HTTP_URI_STATUS_BAD_PORT);
}
}
}
@@ -1204,7 +1275,7 @@ httpSeparateURI(
* Hostname but no path...
*/
status = HTTP_URI_MISSING_RESOURCE;
status = HTTP_URI_STATUS_MISSING_RESOURCE;
*resource = '/';
/*
@@ -1230,15 +1301,16 @@ httpSeparateURI(
char *resptr = resource + strlen(resource);
uri = http_copy_decode(resptr, uri, resourcelen - (int)(resptr - resource),
NULL, decoding & HTTP_URI_CODING_QUERY);
uri = http_copy_decode(resptr, uri,
resourcelen - (int)(resptr - resource), NULL,
decoding & HTTP_URI_CODING_QUERY);
}
}
if (!uri)
{
*resource = '\0';
return (HTTP_URI_BAD_RESOURCE);
return (HTTP_URI_STATUS_BAD_RESOURCE);
}
/*
@@ -1268,74 +1340,77 @@ httpStatus(http_status_t status) /* I - HTTP status code */
switch (status)
{
case HTTP_CONTINUE :
case HTTP_STATUS_ERROR :
s = strerror(errno);
break;
case HTTP_STATUS_CONTINUE :
s = _("Continue");
break;
case HTTP_SWITCHING_PROTOCOLS :
case HTTP_STATUS_SWITCHING_PROTOCOLS :
s = _("Switching Protocols");
break;
case HTTP_OK :
case HTTP_STATUS_OK :
s = _("OK");
break;
case HTTP_CREATED :
case HTTP_STATUS_CREATED :
s = _("Created");
break;
case HTTP_ACCEPTED :
case HTTP_STATUS_ACCEPTED :
s = _("Accepted");
break;
case HTTP_NO_CONTENT :
case HTTP_STATUS_NO_CONTENT :
s = _("No Content");
break;
case HTTP_MOVED_PERMANENTLY :
case HTTP_STATUS_MOVED_PERMANENTLY :
s = _("Moved Permanently");
break;
case HTTP_SEE_OTHER :
case HTTP_STATUS_SEE_OTHER :
s = _("See Other");
break;
case HTTP_NOT_MODIFIED :
case HTTP_STATUS_NOT_MODIFIED :
s = _("Not Modified");
break;
case HTTP_BAD_REQUEST :
case HTTP_STATUS_BAD_REQUEST :
s = _("Bad Request");
break;
case HTTP_UNAUTHORIZED :
case HTTP_AUTHORIZATION_CANCELED :
case HTTP_STATUS_UNAUTHORIZED :
case HTTP_STATUS_CUPS_AUTHORIZATION_CANCELED :
s = _("Unauthorized");
break;
case HTTP_FORBIDDEN :
case HTTP_STATUS_FORBIDDEN :
s = _("Forbidden");
break;
case HTTP_NOT_FOUND :
case HTTP_STATUS_NOT_FOUND :
s = _("Not Found");
break;
case HTTP_REQUEST_TOO_LARGE :
case HTTP_STATUS_REQUEST_TOO_LARGE :
s = _("Request Entity Too Large");
break;
case HTTP_URI_TOO_LONG :
case HTTP_STATUS_URI_TOO_LONG :
s = _("URI Too Long");
break;
case HTTP_UPGRADE_REQUIRED :
case HTTP_STATUS_UPGRADE_REQUIRED :
s = _("Upgrade Required");
break;
case HTTP_NOT_IMPLEMENTED :
case HTTP_STATUS_NOT_IMPLEMENTED :
s = _("Not Implemented");
break;
case HTTP_NOT_SUPPORTED :
case HTTP_STATUS_NOT_SUPPORTED :
s = _("Not Supported");
break;
case HTTP_EXPECTATION_FAILED :
case HTTP_STATUS_EXPECTATION_FAILED :
s = _("Expectation Failed");
break;
case HTTP_SERVICE_UNAVAILABLE :
case HTTP_STATUS_SERVICE_UNAVAILABLE :
s = _("Service Unavailable");
break;
case HTTP_SERVER_ERROR :
case HTTP_STATUS_SERVER_ERROR :
s = _("Internal Server Error");
break;
case HTTP_PKI_ERROR :
case HTTP_STATUS_CUPS_PKI_ERROR :
s = _("SSL/TLS Negotiation Error");
break;
case HTTP_WEBIF_DISABLED :
case HTTP_STATUS_CUPS_WEBIF_DISABLED :
s = _("Web Interface is Disabled");
break;
@@ -1439,12 +1514,12 @@ _httpResolveURI(
if ((status = httpSeparateURI(HTTP_URI_CODING_ALL, uri, scheme,
sizeof(scheme), userpass, sizeof(userpass),
hostname, sizeof(hostname), &port, resource,
sizeof(resource))) < HTTP_URI_OK)
sizeof(resource))) < HTTP_URI_STATUS_OK)
#else
if (httpSeparateURI(HTTP_URI_CODING_ALL, uri, scheme,
sizeof(scheme), userpass, sizeof(userpass),
hostname, sizeof(hostname), &port, resource,
sizeof(resource)) < HTTP_URI_OK)
sizeof(resource)) < HTTP_URI_STATUS_OK)
#endif /* DEBUG */
{
if (options & _HTTP_RESOLVE_STDERR)
@@ -1523,6 +1598,7 @@ _httpResolveURI(
uribuf.buffer = resolved_uri;
uribuf.bufsize = resolved_size;
uribuf.options = options;
uribuf.resource = resource;
resolved_uri[0] = '\0';
@@ -1540,10 +1616,16 @@ _httpResolveURI(
# ifdef HAVE_DNSSD
if (DNSServiceCreateConnection(&ref) == kDNSServiceErr_NoError)
{
int myinterface = kDNSServiceInterfaceIndexAny;
/* Lookup on any interface */
if (!strcmp(scheme, "ippusb"))
myinterface = kDNSServiceInterfaceIndexLocalOnly;
localref = ref;
if (DNSServiceResolve(&localref,
kDNSServiceFlagsShareConnection, 0, hostname, regtype,
"local.", http_resolve_cb,
kDNSServiceFlagsShareConnection, myinterface,
hostname, regtype, "local.", http_resolve_cb,
&uribuf) == kDNSServiceErr_NoError)
{
int fds; /* Number of ready descriptors */
@@ -1617,7 +1699,7 @@ _httpResolveURI(
domainref = ref;
if (DNSServiceResolve(&domainref,
kDNSServiceFlagsShareConnection,
0, hostname, regtype, domain,
myinterface, hostname, regtype, domain,
http_resolve_cb,
&uribuf) == kDNSServiceErr_NoError)
domainsent = 1;
@@ -1745,7 +1827,7 @@ _httpResolveURI(
#endif /* HAVE_DNSSD || HAVE_AVAHI */
if ((options & _HTTP_RESOLVE_STDERR) && !uri)
_cupsLangPrintFilter(stderr, "ERROR", _("Unable to find printer."));
_cupsLangPrintFilter(stderr, "INFO", _("Unable to find printer."));
}
else
{
@@ -1850,6 +1932,11 @@ http_copy_decode(char *dst, /* O - Destination buffer */
return (NULL);
}
}
else if ((*src & 255) <= 0x20 || (*src & 255) >= 0x7f)
{
*ptr = '\0';
return (NULL);
}
else
*ptr++ = *src;
}
@@ -1969,7 +2056,8 @@ http_resolve_cb(
*/
if ((uribuf->options & _HTTP_RESOLVE_FAXOUT) &&
(!strcmp(scheme, "ipp") || !strcmp(scheme, "ipps")))
(!strcmp(scheme, "ipp") || !strcmp(scheme, "ipps")) &&
!TXTRecordGetValuePtr(txtLen, txtRecord, "printer-type", &valueLen))
{
reskey = "rfo";
resdefault = "/ipp/faxout";
@@ -2057,6 +2145,8 @@ http_resolve_cb(
error));
#endif /* DEBUG */
}
httpAddrFreeList(addrlist);
}
}
@@ -2064,8 +2154,14 @@ http_resolve_cb(
* Assemble the final device URI...
*/
httpAssembleURI(HTTP_URI_CODING_ALL, uribuf->buffer, uribuf->bufsize, scheme,
NULL, hostTarget, ntohs(port), resource);
if ((!strcmp(scheme, "ipp") || !strcmp(scheme, "ipps")) &&
!strcmp(uribuf->resource, "/cups"))
httpAssembleURIf(HTTP_URI_CODING_ALL, uribuf->buffer, uribuf->bufsize,
scheme, NULL, hostTarget, ntohs(port), "%s?snmp=false",
resource);
else
httpAssembleURI(HTTP_URI_CODING_ALL, uribuf->buffer, uribuf->bufsize,
scheme, NULL, hostTarget, ntohs(port), resource);
DEBUG_printf(("8http_resolve_cb: Resolved URI is \"%s\"...", uribuf->buffer));
}
@@ -2177,7 +2273,8 @@ http_resolve_cb(
*/
if ((uribuf->options & _HTTP_RESOLVE_FAXOUT) &&
(!strcmp(scheme, "ipp") || !strcmp(scheme, "ipps")))
(!strcmp(scheme, "ipp") || !strcmp(scheme, "ipps")) &&
!avahi_string_list_find(txt, "printer-type"))
{
reskey = "rfo";
resdefault = "/ipp/faxout";
@@ -2266,6 +2363,8 @@ http_resolve_cb(
error));
#endif /* DEBUG */
}
httpAddrFreeList(addrlist);
}
}
+2141 -896
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+236 -95
Ver Arquivo
@@ -3,7 +3,7 @@
*
* Hyper-Text Transport Protocol definitions for CUPS.
*
* Copyright 2007-2012 by Apple Inc.
* Copyright 2007-2013 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
@@ -36,9 +36,6 @@ typedef off_t ssize_t; /* @private@ */
# include <winsock2.h>
# include <ws2tcpip.h>
# else
# ifdef __sgi
# define INET6 /* IRIX IPv6 support... */
# endif /* __sgi */
# include <unistd.h>
# include <sys/time.h>
# include <sys/socket.h>
@@ -129,17 +126,30 @@ typedef enum http_auth_e /**** HTTP authentication types ****/
typedef enum http_encoding_e /**** HTTP transfer encoding values ****/
{
HTTP_ENCODE_LENGTH, /* Data is sent with Content-Length */
HTTP_ENCODE_CHUNKED, /* Data is chunked */
HTTP_ENCODE_FIELDS /* Sending HTTP fields */
HTTP_ENCODING_LENGTH, /* Data is sent with Content-Length */
HTTP_ENCODING_CHUNKED, /* Data is chunked */
HTTP_ENCODING_FIELDS /* Sending HTTP fields */
# ifndef _CUPS_NO_DEPRECATED
# define HTTP_ENCODE_LENGTH HTTP_ENCODING_LENGTH
# define HTTP_ENCODE_CHUNKED HTTP_ENCODING_CHUNKED
# define HTTP_ENCODE_FIELDS HTTP_ENCODING_FIELDS
# endif /* !_CUPS_NO_DEPRECATED */
} http_encoding_t;
typedef enum http_encryption_e /**** HTTP encryption values ****/
{
HTTP_ENCRYPT_IF_REQUESTED, /* Encrypt if requested (TLS upgrade) */
HTTP_ENCRYPT_NEVER, /* Never encrypt */
HTTP_ENCRYPT_REQUIRED, /* Encryption is required (TLS upgrade) */
HTTP_ENCRYPT_ALWAYS /* Always encrypt (SSL) */
HTTP_ENCRYPTION_IF_REQUESTED, /* Encrypt if requested (TLS upgrade) */
HTTP_ENCRYPTION_NEVER, /* Never encrypt */
HTTP_ENCRYPTION_REQUIRED, /* Encryption is required (TLS upgrade) */
HTTP_ENCRYPTION_ALWAYS /* Always encrypt (SSL) */
# ifndef _CUPS_NO_DEPRECATED
# define HTTP_ENCRYPT_IF_REQUESTED HTTP_ENCRYPTION_IF_REQUESTED
# define HTTP_ENCRYPT_NEVER HTTP_ENCRYPTION_NEVER
# define HTTP_ENCRYPT_REQUIRED HTTP_ENCRYPTION_REQUIRED
# define HTTP_ENCRYPT_ALWAYS HTTP_ENCRYPTION_ALWAYS
# endif /* !_CUPS_NO_DEPRECATED */
} http_encryption_t;
typedef enum http_field_e /**** HTTP field names ****/
@@ -172,6 +182,9 @@ typedef enum http_field_e /**** HTTP field names ****/
HTTP_FIELD_UPGRADE, /* Upgrade field */
HTTP_FIELD_USER_AGENT, /* User-Agent field */
HTTP_FIELD_WWW_AUTHENTICATE, /* WWW-Authenticate field */
HTTP_FIELD_ACCEPT_ENCODING, /* Accepting-Encoding field @since CUPS 1.7/OS X 10.9@ */
HTTP_FIELD_ALLOW, /* Allow field @since CUPS 1.7/OS X 10.9@ */
HTTP_FIELD_SERVER, /* Server field @since CUPS 1.7/OS X 10.9@ */
HTTP_FIELD_MAX /* Maximum field index */
} http_field_t;
@@ -185,90 +198,181 @@ typedef enum http_state_e /**** HTTP state values; states
**** are server-oriented...
****/
{
HTTP_WAITING, /* Waiting for command */
HTTP_OPTIONS, /* OPTIONS command, waiting for blank line */
HTTP_GET, /* GET command, waiting for blank line */
HTTP_GET_SEND, /* GET command, sending data */
HTTP_HEAD, /* HEAD command, waiting for blank line */
HTTP_POST, /* POST command, waiting for blank line */
HTTP_POST_RECV, /* POST command, receiving data */
HTTP_POST_SEND, /* POST command, sending data */
HTTP_PUT, /* PUT command, waiting for blank line */
HTTP_PUT_RECV, /* PUT command, receiving data */
HTTP_DELETE, /* DELETE command, waiting for blank line */
HTTP_TRACE, /* TRACE command, waiting for blank line */
HTTP_CLOSE, /* CLOSE command, waiting for blank line */
HTTP_STATUS /* Command complete, sending status */
HTTP_STATE_ERROR = -1, /* Error on socket */
HTTP_STATE_WAITING, /* Waiting for command */
HTTP_STATE_OPTIONS, /* OPTIONS command, waiting for blank line */
HTTP_STATE_GET, /* GET command, waiting for blank line */
HTTP_STATE_GET_SEND, /* GET command, sending data */
HTTP_STATE_HEAD, /* HEAD command, waiting for blank line */
HTTP_STATE_POST, /* POST command, waiting for blank line */
HTTP_STATE_POST_RECV, /* POST command, receiving data */
HTTP_STATE_POST_SEND, /* POST command, sending data */
HTTP_STATE_PUT, /* PUT command, waiting for blank line */
HTTP_STATE_PUT_RECV, /* PUT command, receiving data */
HTTP_STATE_DELETE, /* DELETE command, waiting for blank line */
HTTP_STATE_TRACE, /* TRACE command, waiting for blank line */
HTTP_STATE_CONNECT, /* CONNECT command, waiting for blank line */
HTTP_STATE_STATUS, /* Command complete, sending status */
HTTP_STATE_UNKNOWN_METHOD, /* Unknown request method, waiting for blank line @since CUPS 1.7/OS X 10.9@ */
HTTP_STATE_UNKNOWN_VERSION /* Unknown request method, waiting for blank line @since CUPS 1.7/OS X 10.9@ */
# ifndef _CUPS_NO_DEPRECATED
# define HTTP_WAITING HTTP_STATE_WAITING
# define HTTP_OPTIONS HTTP_STATE_OPTIONS
# define HTTP_GET HTTP_STATE_GET
# define HTTP_GET_SEND HTTP_STATE_GET_SEND
# define HTTP_HEAD HTTP_STATE_HEAD
# define HTTP_POST HTTP_STATE_POST
# define HTTP_POST_RECV HTTP_STATE_POST_RECV
# define HTTP_POST_SEND HTTP_STATE_POST_SEND
# define HTTP_PUT HTTP_STATE_PUT
# define HTTP_PUT_RECV HTTP_STATE_PUT_RECV
# define HTTP_DELETE HTTP_STATE_DELETE
# define HTTP_TRACE HTTP_STATE_TRACE
# define HTTP_CLOSE HTTP_STATE_CONNECT
# define HTTP_STATUS HTTP_STATE_STATUS
# endif /* !_CUPS_NO_DEPRECATED */
} http_state_t;
typedef enum http_status_e /**** HTTP status codes ****/
{
HTTP_ERROR = -1, /* An error response from httpXxxx() */
HTTP_STATUS_ERROR = -1, /* An error response from httpXxxx() */
HTTP_STATUS_NONE = 0, /* No Expect value @since CUPS 1.7/OS X 10.9@ */
HTTP_CONTINUE = 100, /* Everything OK, keep going... */
HTTP_SWITCHING_PROTOCOLS, /* HTTP upgrade to TLS/SSL */
HTTP_STATUS_CONTINUE = 100, /* Everything OK, keep going... */
HTTP_STATUS_SWITCHING_PROTOCOLS, /* HTTP upgrade to TLS/SSL */
HTTP_OK = 200, /* OPTIONS/GET/HEAD/POST/TRACE command was successful */
HTTP_CREATED, /* PUT command was successful */
HTTP_ACCEPTED, /* DELETE command was successful */
HTTP_NOT_AUTHORITATIVE, /* Information isn't authoritative */
HTTP_NO_CONTENT, /* Successful command, no new data */
HTTP_RESET_CONTENT, /* Content was reset/recreated */
HTTP_PARTIAL_CONTENT, /* Only a partial file was recieved/sent */
HTTP_STATUS_OK = 200, /* OPTIONS/GET/HEAD/POST/TRACE command was successful */
HTTP_STATUS_CREATED, /* PUT command was successful */
HTTP_STATUS_ACCEPTED, /* DELETE command was successful */
HTTP_STATUS_NOT_AUTHORITATIVE, /* Information isn't authoritative */
HTTP_STATUS_NO_CONTENT, /* Successful command, no new data */
HTTP_STATUS_RESET_CONTENT, /* Content was reset/recreated */
HTTP_STATUS_PARTIAL_CONTENT, /* Only a partial file was recieved/sent */
HTTP_MULTIPLE_CHOICES = 300, /* Multiple files match request */
HTTP_MOVED_PERMANENTLY, /* Document has moved permanently */
HTTP_MOVED_TEMPORARILY, /* Document has moved temporarily */
HTTP_SEE_OTHER, /* See this other link... */
HTTP_NOT_MODIFIED, /* File not modified */
HTTP_USE_PROXY, /* Must use a proxy to access this URI */
HTTP_STATUS_MULTIPLE_CHOICES = 300, /* Multiple files match request */
HTTP_STATUS_MOVED_PERMANENTLY, /* Document has moved permanently */
HTTP_STATUS_MOVED_TEMPORARILY, /* Document has moved temporarily */
HTTP_STATUS_SEE_OTHER, /* See this other link... */
HTTP_STATUS_NOT_MODIFIED, /* File not modified */
HTTP_STATUS_USE_PROXY, /* Must use a proxy to access this URI */
HTTP_BAD_REQUEST = 400, /* Bad request */
HTTP_UNAUTHORIZED, /* Unauthorized to access host */
HTTP_PAYMENT_REQUIRED, /* Payment required */
HTTP_FORBIDDEN, /* Forbidden to access this URI */
HTTP_NOT_FOUND, /* URI was not found */
HTTP_METHOD_NOT_ALLOWED, /* Method is not allowed */
HTTP_NOT_ACCEPTABLE, /* Not Acceptable */
HTTP_PROXY_AUTHENTICATION, /* Proxy Authentication is Required */
HTTP_REQUEST_TIMEOUT, /* Request timed out */
HTTP_CONFLICT, /* Request is self-conflicting */
HTTP_GONE, /* Server has gone away */
HTTP_LENGTH_REQUIRED, /* A content length or encoding is required */
HTTP_PRECONDITION, /* Precondition failed */
HTTP_REQUEST_TOO_LARGE, /* Request entity too large */
HTTP_URI_TOO_LONG, /* URI too long */
HTTP_UNSUPPORTED_MEDIATYPE, /* The requested media type is unsupported */
HTTP_REQUESTED_RANGE, /* The requested range is not satisfiable */
HTTP_EXPECTATION_FAILED, /* The expectation given in an Expect header field was not met */
HTTP_UPGRADE_REQUIRED = 426, /* Upgrade to SSL/TLS required */
HTTP_STATUS_BAD_REQUEST = 400, /* Bad request */
HTTP_STATUS_UNAUTHORIZED, /* Unauthorized to access host */
HTTP_STATUS_PAYMENT_REQUIRED, /* Payment required */
HTTP_STATUS_FORBIDDEN, /* Forbidden to access this URI */
HTTP_STATUS_NOT_FOUND, /* URI was not found */
HTTP_STATUS_METHOD_NOT_ALLOWED, /* Method is not allowed */
HTTP_STATUS_NOT_ACCEPTABLE, /* Not Acceptable */
HTTP_STATUS_PROXY_AUTHENTICATION, /* Proxy Authentication is Required */
HTTP_STATUS_REQUEST_TIMEOUT, /* Request timed out */
HTTP_STATUS_CONFLICT, /* Request is self-conflicting */
HTTP_STATUS_GONE, /* Server has gone away */
HTTP_STATUS_LENGTH_REQUIRED, /* A content length or encoding is required */
HTTP_STATUS_PRECONDITION, /* Precondition failed */
HTTP_STATUS_REQUEST_TOO_LARGE, /* Request entity too large */
HTTP_STATUS_URI_TOO_LONG, /* URI too long */
HTTP_STATUS_UNSUPPORTED_MEDIATYPE, /* The requested media type is unsupported */
HTTP_STATUS_REQUESTED_RANGE, /* The requested range is not satisfiable */
HTTP_STATUS_EXPECTATION_FAILED, /* The expectation given in an Expect header field was not met */
HTTP_STATUS_UPGRADE_REQUIRED = 426, /* Upgrade to SSL/TLS required */
HTTP_SERVER_ERROR = 500, /* Internal server error */
HTTP_NOT_IMPLEMENTED, /* Feature not implemented */
HTTP_BAD_GATEWAY, /* Bad gateway */
HTTP_SERVICE_UNAVAILABLE, /* Service is unavailable */
HTTP_GATEWAY_TIMEOUT, /* Gateway connection timed out */
HTTP_NOT_SUPPORTED, /* HTTP version not supported */
HTTP_STATUS_SERVER_ERROR = 500, /* Internal server error */
HTTP_STATUS_NOT_IMPLEMENTED, /* Feature not implemented */
HTTP_STATUS_BAD_GATEWAY, /* Bad gateway */
HTTP_STATUS_SERVICE_UNAVAILABLE, /* Service is unavailable */
HTTP_STATUS_GATEWAY_TIMEOUT, /* Gateway connection timed out */
HTTP_STATUS_NOT_SUPPORTED, /* HTTP version not supported */
HTTP_AUTHORIZATION_CANCELED = 1000, /* User canceled authorization @since CUPS 1.4@ */
HTTP_PKI_ERROR, /* Error negotiating a secure connection @since CUPS 1.5/OS X 10.7@ */
HTTP_WEBIF_DISABLED /* Web interface is disabled @private@ */
HTTP_STATUS_CUPS_AUTHORIZATION_CANCELED = 1000,
/* User canceled authorization @since CUPS 1.4@ */
HTTP_STATUS_CUPS_PKI_ERROR, /* Error negotiating a secure connection @since CUPS 1.5/OS X 10.7@ */
HTTP_STATUS_CUPS_WEBIF_DISABLED /* Web interface is disabled @private@ */
# ifndef _CUPS_NO_DEPRECATED
/* Old names for this enumeration */
# define HTTP_ERROR HTTP_STATUS_ERROR
# define HTTP_CONTINUE HTTP_STATUS_CONTINUE
# define HTTP_SWITCHING_PROTOCOLS HTTP_STATUS_SWITCHING_PROTOCOLS
# define HTTP_OK HTTP_STATUS_OK
# define HTTP_CREATED HTTP_STATUS_CREATED
# define HTTP_ACCEPTED HTTP_STATUS_ACCEPTED
# define HTTP_NOT_AUTHORITATIVE HTTP_STATUS_NOT_AUTHORITATIVE
# define HTTP_NO_CONTENT HTTP_STATUS_NO_CONTENT
# define HTTP_RESET_CONTENT HTTP_STATUS_RESET_CONTENT
# define HTTP_PARTIAL_CONTENT HTTP_STATUS_PARTIAL_CONTENT
# define HTTP_MULTIPLE_CHOICES HTTP_STATUS_MULTIPLE_CHOICES
# define HTTP_MOVED_PERMANENTLY HTTP_STATUS_MOVED_PERMANENTLY
# define HTTP_MOVED_TEMPORARILY HTTP_STATUS_MOVED_TEMPORARILY
# define HTTP_SEE_OTHER HTTP_STATUS_SEE_OTHER
# define HTTP_NOT_MODIFIED HTTP_STATUS_NOT_MODIFIED
# define HTTP_USE_PROXY HTTP_STATUS_USE_PROXY
# define HTTP_BAD_REQUEST HTTP_STATUS_BAD_REQUEST
# define HTTP_UNAUTHORIZED HTTP_STATUS_UNAUTHORIZED
# define HTTP_PAYMENT_REQUIRED HTTP_STATUS_PAYMENT_REQUIRED
# define HTTP_FORBIDDEN HTTP_STATUS_FORBIDDEN
# define HTTP_NOT_FOUND HTTP_STATUS_NOT_FOUND
# define HTTP_METHOD_NOT_ALLOWED HTTP_STATUS_METHOD_NOT_ALLOWED
# define HTTP_NOT_ACCEPTABLE HTTP_STATUS_NOT_ACCEPTABLE
# define HTTP_PROXY_AUTHENTICATION HTTP_STATUS_PROXY_AUTHENTICATION
# define HTTP_REQUEST_TIMEOUT HTTP_STATUS_REQUEST_TIMEOUT
# define HTTP_CONFLICT HTTP_STATUS_CONFLICT
# define HTTP_GONE HTTP_STATUS_GONE
# define HTTP_LENGTH_REQUIRED HTTP_STATUS_LENGTH_REQUIRED
# define HTTP_PRECONDITION HTTP_STATUS_PRECONDITION
# define HTTP_REQUEST_TOO_LARGE HTTP_STATUS_REQUEST_TOO_LARGE
# define HTTP_URI_TOO_LONG HTTP_STATUS_URI_TOO_LONG
# define HTTP_UNSUPPORTED_MEDIATYPE HTTP_STATUS_UNSUPPORTED_MEDIATYPE
# define HTTP_REQUESTED_RANGE HTTP_STATUS_REQUESTED_RANGE
# define HTTP_EXPECTATION_FAILED HTTP_STATUS_EXPECTATION_FAILED
# define HTTP_UPGRADE_REQUIRED HTTP_STATUS_UPGRADE_REQUIRED
# define HTTP_SERVER_ERROR HTTP_STATUS_SERVER_ERROR
# define HTTP_NOT_IMPLEMENTED HTTP_STATUS_NOT_IMPLEMENTED
# define HTTP_BAD_GATEWAY HTTP_STATUS_BAD_GATEWAY
# define HTTP_SERVICE_UNAVAILABLE HTTP_STATUS_SERVICE_UNAVAILABLE
# define HTTP_GATEWAY_TIMEOUT HTTP_STATUS_GATEWAY_TIMEOUT
# define HTTP_NOT_SUPPORTED HTTP_STATUS_NOT_SUPPORTED
# define HTTP_AUTHORIZATION_CANCELED HTTP_STATUS_CUPS_AUTHORIZATION_CANCELED
# define HTTP_PKI_ERROR HTTP_STATUS_CUPS_PKI_ERROR
# define HTTP_WEBIF_DISABLED HTTP_STATUS_CUPS_WEBIF_DISABLED
# endif /* !_CUPS_NO_DEPRECATED */
} http_status_t;
typedef enum http_uri_status_e /**** URI separation status @since CUPS 1.2@ ****/
{
HTTP_URI_OVERFLOW = -8, /* URI buffer for httpAssembleURI is too small */
HTTP_URI_BAD_ARGUMENTS = -7, /* Bad arguments to function (error) */
HTTP_URI_BAD_RESOURCE = -6, /* Bad resource in URI (error) */
HTTP_URI_BAD_PORT = -5, /* Bad port number in URI (error) */
HTTP_URI_BAD_HOSTNAME = -4, /* Bad hostname in URI (error) */
HTTP_URI_BAD_USERNAME = -3, /* Bad username in URI (error) */
HTTP_URI_BAD_SCHEME = -2, /* Bad scheme in URI (error) */
HTTP_URI_BAD_URI = -1, /* Bad/empty URI (error) */
HTTP_URI_OK = 0, /* URI decoded OK */
HTTP_URI_MISSING_SCHEME, /* Missing scheme in URI (warning) */
HTTP_URI_UNKNOWN_SCHEME, /* Unknown scheme in URI (warning) */
HTTP_URI_MISSING_RESOURCE /* Missing resource in URI (warning) */
HTTP_URI_STATUS_OVERFLOW = -8, /* URI buffer for httpAssembleURI is too small */
HTTP_URI_STATUS_BAD_ARGUMENTS = -7, /* Bad arguments to function (error) */
HTTP_URI_STATUS_BAD_RESOURCE = -6, /* Bad resource in URI (error) */
HTTP_URI_STATUS_BAD_PORT = -5, /* Bad port number in URI (error) */
HTTP_URI_STATUS_BAD_HOSTNAME = -4, /* Bad hostname in URI (error) */
HTTP_URI_STATUS_BAD_USERNAME = -3, /* Bad username in URI (error) */
HTTP_URI_STATUS_BAD_SCHEME = -2, /* Bad scheme in URI (error) */
HTTP_URI_STATUS_BAD_URI = -1, /* Bad/empty URI (error) */
HTTP_URI_STATUS_OK = 0, /* URI decoded OK */
HTTP_URI_STATUS_MISSING_SCHEME, /* Missing scheme in URI (warning) */
HTTP_URI_STATUS_UNKNOWN_SCHEME, /* Unknown scheme in URI (warning) */
HTTP_URI_STATUS_MISSING_RESOURCE /* Missing resource in URI (warning) */
# ifndef _CUPS_NO_DEPRECATED
# define HTTP_URI_OVERFLOW HTTP_URI_STATUS_OVERFLOW
# define HTTP_URI_BAD_ARGUMENTS HTTP_URI_STATUS_BAD_ARGUMENTS
# define HTTP_URI_BAD_RESOURCE HTTP_URI_STATUS_BAD_RESOURCE
# define HTTP_URI_BAD_PORT HTTP_URI_STATUS_BAD_PORT
# define HTTP_URI_BAD_HOSTNAME HTTP_URI_STATUS_BAD_HOSTNAME
# define HTTP_URI_BAD_USERNAME HTTP_URI_STATUS_BAD_USERNAME
# define HTTP_URI_BAD_SCHEME HTTP_URI_STATUS_BAD_SCHEME
# define HTTP_URI_BAD_URI HTTP_URI_STATUS_BAD_URI
# define HTTP_URI_OK HTTP_URI_STATUS_OK
# define HTTP_URI_MISSING_SCHEME HTTP_URI_STATUS_MISSING_SCHEME
# define HTTP_URI_UNKNOWN_SCHEME HTTP_URI_STATUS_UNKNOWN_SCHEME
# define HTTP_URI_MISSING_RESOURCE HTTP_URI_STATUS_MISSING_RESOURCE
# endif /* !_CUPS_NO_DEPRECATED */
} http_uri_status_t;
typedef enum http_uri_coding_e /**** URI en/decode flags ****/
@@ -279,14 +383,21 @@ typedef enum http_uri_coding_e /**** URI en/decode flags ****/
HTTP_URI_CODING_RESOURCE = 4, /* En/decode the resource portion */
HTTP_URI_CODING_MOST = 7, /* En/decode all but the query */
HTTP_URI_CODING_QUERY = 8, /* En/decode the query portion */
HTTP_URI_CODING_ALL = 15 /* En/decode everything */
HTTP_URI_CODING_ALL = 15, /* En/decode everything */
HTTP_URI_CODING_RFC6874 = 16 /* Use RFC 6874 address format */
} http_uri_coding_t;
typedef enum http_version_e /**** HTTP version numbers ****/
{
HTTP_0_9 = 9, /* HTTP/0.9 */
HTTP_1_0 = 100, /* HTTP/1.0 */
HTTP_1_1 = 101 /* HTTP/1.1 */
HTTP_VERSION_0_9 = 9, /* HTTP/0.9 */
HTTP_VERSION_1_0 = 100, /* HTTP/1.0 */
HTTP_VERSION_1_1 = 101 /* HTTP/1.1 */
# ifndef _CUPS_NO_DEPRECATED
# define HTTP_0_9 HTTP_VERSION_0_9
# define HTTP_1_0 HTTP_VERSION_1_0
# define HTTP_1_1 HTTP_VERSION_1_1
# endif /* !_CUPS_NO_DEPRECATED */
} http_version_t;
typedef union _http_addr_u /**** Socket address union, which
@@ -337,9 +448,11 @@ extern void httpBlocking(http_t *http, int b);
extern int httpCheck(http_t *http);
extern void httpClearFields(http_t *http);
extern void httpClose(http_t *http);
extern http_t *httpConnect(const char *host, int port);
extern http_t *httpConnect(const char *host, int port)
_CUPS_DEPRECATED_1_7_MSG("Use httpConnect2 instead.");
extern http_t *httpConnectEncrypt(const char *host, int port,
http_encryption_t encryption);
http_encryption_t encryption)
_CUPS_DEPRECATED_1_7_MSG("Use httpConnect2 instead.");
extern int httpDelete(http_t *http, const char *uri);
extern int httpEncryption(http_t *http, http_encryption_t e);
extern int httpError(http_t *http);
@@ -359,20 +472,20 @@ extern int httpPost(http_t *http, const char *uri);
extern int httpPrintf(http_t *http, const char *format, ...)
__attribute__ ((__format__ (__printf__, 2, 3)));
extern int httpPut(http_t *http, const char *uri);
extern int httpRead(http_t *http, char *buffer, int length) _CUPS_DEPRECATED;
extern int httpReconnect(http_t *http);
extern int httpRead(http_t *http, char *buffer, int length) _CUPS_DEPRECATED_MSG("Use httpRead2 instead.");
extern int httpReconnect(http_t *http) _CUPS_DEPRECATED_1_6_MSG("Use httpReconnect2 instead.");
extern void httpSeparate(const char *uri, char *method,
char *username, char *host, int *port,
char *resource) _CUPS_DEPRECATED;
char *resource) _CUPS_DEPRECATED_MSG("Use httpSeparateURI instead.");
extern void httpSetField(http_t *http, http_field_t field,
const char *value);
extern const char *httpStatus(http_status_t status);
extern int httpTrace(http_t *http, const char *uri);
extern http_status_t httpUpdate(http_t *http);
extern int httpWrite(http_t *http, const char *buffer, int length) _CUPS_DEPRECATED;
extern char *httpEncode64(char *out, const char *in) _CUPS_DEPRECATED;
extern char *httpDecode64(char *out, const char *in) _CUPS_DEPRECATED;
extern int httpGetLength(http_t *http) _CUPS_DEPRECATED;
extern int httpWrite(http_t *http, const char *buffer, int length) _CUPS_DEPRECATED_MSG("Use httpWrite2 instead.");
extern char *httpEncode64(char *out, const char *in) _CUPS_DEPRECATED_MSG("Use httpEncode64_2 instead.");
extern char *httpDecode64(char *out, const char *in) _CUPS_DEPRECATED_MSG("Use httpDecode64_2 instead.");
extern int httpGetLength(http_t *http) _CUPS_DEPRECATED_MSG("Use httpGetLength2 instead.");
extern char *httpMD5(const char *, const char *, const char *,
char [33]);
extern char *httpMD5Final(const char *, const char *, const char *,
@@ -393,7 +506,7 @@ extern void httpSeparate2(const char *uri,
char *method, int methodlen,
char *username, int usernamelen,
char *host, int hostlen, int *port,
char *resource, int resourcelen) _CUPS_DEPRECATED;
char *resource, int resourcelen) _CUPS_DEPRECATED_MSG("Use httpSeparateURI instead.");
/**** New in CUPS 1.2/OS X 10.5 ****/
extern int httpAddrAny(const http_addr_t *addr) _CUPS_API_1_2;
@@ -472,6 +585,34 @@ extern int httpReconnect2(http_t *http, int msec, int *cancel)
_CUPS_API_1_6;
/**** New in CUPS 1.7 ****/
extern http_t *httpAcceptConnection(int fd, int blocking)
_CUPS_API_1_7;
extern http_addrlist_t *httpAddrCopyList(http_addrlist_t *src) _CUPS_API_1_7;
extern int httpAddrListen(http_addr_t *addr, int port)
_CUPS_API_1_7;
extern int httpAddrPort(http_addr_t *addr) _CUPS_API_1_7;
extern char *httpAssembleUUID(const char *server, int port,
const char *name, int number,
char *buffer, size_t bufsize)
_CUPS_API_1_7;
extern http_t *httpConnect2(const char *host, int port,
http_addrlist_t *addrlist,
int family, http_encryption_t encryption,
int blocking, int msec, int *cancel)
_CUPS_API_1_7;
extern const char *httpGetContentEncoding(http_t *http) _CUPS_API_1_7;
extern http_status_t httpGetExpect(http_t *http) _CUPS_API_1_7;
extern ssize_t httpPeek(http_t *http, char *buffer, size_t length)
_CUPS_API_1_7;
extern http_state_t httpReadRequest(http_t *http, char *resource,
size_t resourcelen) _CUPS_API_1_7;
extern void httpSetDefaultField(http_t *http, http_field_t field,
const char *value) _CUPS_API_1_7;
extern http_state_t httpWriteResponse(http_t *http,
http_status_t status) _CUPS_API_1_7;
/*
* C++ magic...
*/
+5 -2
Ver Arquivo
@@ -3,7 +3,7 @@
*
* Private IPP definitions for CUPS.
*
* Copyright 2007-2011 by Apple Inc.
* Copyright 2007-2012 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -54,6 +54,7 @@ typedef struct /**** Attribute mapping data ****/
ipp_tag_t group_tag; /* Group tag for this attribute */
ipp_tag_t alt_group_tag; /* Alternate group tag for this
* attribute */
const ipp_op_t *operations; /* Allowed operations for this attr */
} _ipp_option_t;
@@ -61,9 +62,11 @@ typedef struct /**** Attribute mapping data ****/
* Prototypes for private functions...
*/
#ifdef DEBUG
extern const char *_ippCheckOptions(void);
#endif /* DEBUG */
extern _ipp_option_t *_ippFindOption(const char *name);
/*
* C++ magic...
*/
+1228 -66
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+1845 -314
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+498 -173
Ver Arquivo
@@ -3,7 +3,7 @@
*
* Internet Printing Protocol definitions for CUPS.
*
* Copyright 2007-2012 by Apple Inc.
* Copyright 2007-2013 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -23,6 +23,7 @@
*/
# include "http.h"
# include <stdarg.h>
/*
@@ -54,8 +55,16 @@ extern "C" {
* Common limits...
*/
# define IPP_MAX_CHARSET 64 /* Maximum length of charset values w/nul */
# define IPP_MAX_KEYWORD 256 /* Maximum length of keyword values w/nul */
# define IPP_MAX_LANGUAGE 64 /* Maximum length of naturalLanguage values w/nul */
# define IPP_MAX_LENGTH 32767 /* Maximum size of any single value */
# define IPP_MAX_NAME 256 /* Maximum length of common name values */
# define IPP_MAX_MIMETYPE 256 /* Maximum length of mimeMediaType values w/nul */
# define IPP_MAX_NAME 256 /* Maximum length of common name values w/nul */
# define IPP_MAX_OCTETSTRING 1023 /* Maximum length of octetString values w/o nul */
# define IPP_MAX_TEXT 1024 /* Maximum length of text values w/nul */
# define IPP_MAX_URI 1024 /* Maximum length of uri values w/nul */
# define IPP_MAX_URISCHEME 64 /* Maximum length of uriScheme values w/nul */
# define IPP_MAX_VALUES 8 /* Power-of-2 allocation increment */
@@ -65,14 +74,22 @@ extern "C" {
typedef enum ipp_dstate_e /**** Document states ****/
{
IPP_DOCUMENT_PENDING = 3,
IPP_DOCUMENT_PROCESSING = 5,
IPP_DOCUMENT_CANCELED = 7,
IPP_DOCUMENT_ABORTED,
IPP_DOCUMENT_COMPLETED
IPP_DOCUMENT_PENDING = 3, /* Document is pending */
IPP_DOCUMENT_PROCESSING = 5, /* Document is processing */
IPP_DOCUMENT_CANCELED = 7, /* Document is canceled */
IPP_DOCUMENT_ABORTED, /* Document is aborted */
IPP_DOCUMENT_COMPLETED /* Document is completed */
# ifndef _CUPS_NO_DEPRECATED
# define IPP_DOCUMENT_PENDING IPP_DSTATE_PENDING
# define IPP_DOCUMENT_PROCESSING IPP_DSTATE_PROCESSING
# define IPP_DOCUMENT_CANCELED IPP_DSTATE_CANCELED
# define IPP_DOCUMENT_ABORTED IPP_DSTATE_ABORTED
# define IPP_DOCUMENT_COMPLETED IPP_DSTATE_COMPLETED
# endif /* !_CUPS_NO_DEPRECATED */
} ipp_dstate_t;
typedef enum ipp_finish_e /**** Finishings ****/
typedef enum ipp_finishings_e /**** Finishings ****/
{
IPP_FINISHINGS_NONE = 3, /* No finishing */
IPP_FINISHINGS_STAPLE, /* Staple (any location) */
@@ -85,7 +102,7 @@ typedef enum ipp_finish_e /**** Finishings ****/
IPP_FINISHINGS_TRIM, /* Trim (any type) */
IPP_FINISHINGS_BALE, /* Bale (any type) */
IPP_FINISHINGS_BOOKLET_MAKER, /* Fold to make booklet */
IPP_FINISHINGS_JOB_OFFSET, /* Offset for binding (any type) */
IPP_FINISHINGS_JOG_OFFSET, /* Offset for binding (any type) */
IPP_FINISHINGS_STAPLE_TOP_LEFT = 20, /* Staple top left corner */
IPP_FINISHINGS_STAPLE_BOTTOM_LEFT, /* Staple bottom left corner */
IPP_FINISHINGS_STAPLE_TOP_RIGHT, /* Staple top right corner */
@@ -105,126 +122,303 @@ typedef enum ipp_finish_e /**** Finishings ****/
IPP_FINISHINGS_TRIM_AFTER_PAGES = 60, /* Trim output after each page */
IPP_FINISHINGS_TRIM_AFTER_DOCUMENTS, /* Trim output after each document */
IPP_FINISHINGS_TRIM_AFTER_COPIES, /* Trim output after each copy */
IPP_FINISHINGS_TRIM_AFTER_JOB /* Trim output after job */
} ipp_finish_t;
IPP_FINISHINGS_TRIM_AFTER_JOB, /* Trim output after job */
IPP_FINISHINGS_PUNCH_TOP_LEFT = 70, /* Punch 1 hole top left */
IPP_FINISHINGS_PUNCH_BOTTOM_LEFT, /* Punch 1 hole bottom left */
IPP_FINISHINGS_PUNCH_TOP_RIGHT, /* Punch 1 hole top right */
IPP_FINISHINGS_PUNCH_BOTTOM_RIGHT, /* Punch 1 hole bottom right */
IPP_FINISHINGS_PUNCH_DUAL_LEFT, /* Punch 2 holes left side */
IPP_FINISHINGS_PUNCH_DUAL_TOP, /* Punch 2 holes top edge */
IPP_FINISHINGS_PUNCH_DUAL_RIGHT, /* Punch 2 holes right side */
IPP_FINISHINGS_PUNCH_DUAL_BOTTOM, /* Punch 2 holes bottom edge */
IPP_FINISHINGS_PUNCH_TRIPLE_LEFT, /* Punch 3 holes left side */
IPP_FINISHINGS_PUNCH_TRIPLE_TOP, /* Punch 3 holes top edge */
IPP_FINISHINGS_PUNCH_TRIPLE_RIGHT, /* Punch 3 holes right side */
IPP_FINISHINGS_PUNCH_TRIPLE_BOTTOM, /* Punch 3 holes bottom edge */
IPP_FINISHINGS_PUNCH_QUAD_LEFT, /* Punch 4 holes left side */
IPP_FINISHINGS_PUNCH_QUAD_TOP, /* Punch 4 holes top edge */
IPP_FINISHINGS_PUNCH_QUAD_RIGHT, /* Punch 4 holes right side */
IPP_FINISHINGS_PUNCH_QUAD_BOTTOM, /* Punch 4 holes bottom edge */
IPP_FINISHINGS_FOLD_ACCORDIAN = 90, /* Accordian-fold the paper vertically into four sections */
IPP_FINISHINGS_FOLD_DOUBLE_GATE, /* Fold the top and bottom quarters of the paper towards the midline, then fold in half vertically */
IPP_FINISHINGS_FOLD_GATE, /* Fold the top and bottom quarters of the paper towards the midline */
IPP_FINISHINGS_FOLD_HALF, /* Fold the paper in half vertically */
IPP_FINISHINGS_FOLD_HALF_Z, /* Fold the paper in half horizontally, then Z-fold the paper vertically */
IPP_FINISHINGS_FOLD_LEFT_GATE, /* Fold the top quarter of the paper towards the midline */
IPP_FINISHINGS_FOLD_LETTER, /* Fold the paper into three sections vertically; sometimes also known as a C fold*/
IPP_FINISHINGS_FOLD_PARALLEL, /* Fold the paper in half vertically two times, yielding four sections */
IPP_FINISHINGS_FOLD_POSTER, /* Fold the paper in half horizontally and vertically; sometimes also called a cross fold */
IPP_FINISHINGS_FOLD_RIGHT_GATE, /* Fold the bottom quarter of the paper towards the midline */
IPP_FINISHINGS_FOLD_Z, /* Fold the paper vertically into three sections, forming a Z */
/* CUPS extensions for finishings (pre-standard versions of values above) */
IPP_FINISHINGS_CUPS_PUNCH_TOP_LEFT = 0x40000046,
/* Punch 1 hole top left */
IPP_FINISHINGS_CUPS_PUNCH_BOTTOM_LEFT,/* Punch 1 hole bottom left */
IPP_FINISHINGS_CUPS_PUNCH_TOP_RIGHT, /* Punch 1 hole top right */
IPP_FINISHINGS_CUPS_PUNCH_BOTTOM_RIGHT,
/* Punch 1 hole bottom right */
IPP_FINISHINGS_CUPS_PUNCH_DUAL_LEFT, /* Punch 2 holes left side */
IPP_FINISHINGS_CUPS_PUNCH_DUAL_TOP, /* Punch 2 holes top edge */
IPP_FINISHINGS_CUPS_PUNCH_DUAL_RIGHT, /* Punch 2 holes right side */
IPP_FINISHINGS_CUPS_PUNCH_DUAL_BOTTOM,/* Punch 2 holes bottom edge */
IPP_FINISHINGS_CUPS_PUNCH_TRIPLE_LEFT,/* Punch 3 holes left side */
IPP_FINISHINGS_CUPS_PUNCH_TRIPLE_TOP, /* Punch 3 holes top edge */
IPP_FINISHINGS_CUPS_PUNCH_TRIPLE_RIGHT,
/* Punch 3 holes right side */
IPP_FINISHINGS_CUPS_PUNCH_TRIPLE_BOTTOM,
/* Punch 3 holes bottom edge */
IPP_FINISHINGS_CUPS_PUNCH_QUAD_LEFT, /* Punch 4 holes left side */
IPP_FINISHINGS_CUPS_PUNCH_QUAD_TOP, /* Punch 4 holes top edge */
IPP_FINISHINGS_CUPS_PUNCH_QUAD_RIGHT, /* Punch 4 holes right side */
IPP_FINISHINGS_CUPS_PUNCH_QUAD_BOTTOM,/* Punch 4 holes bottom edge */
IPP_FINISHINGS_CUPS_FOLD_ACCORDIAN = 0x4000005A,
/* Accordian-fold the paper vertically into four sections */
IPP_FINISHINGS_CUPS_FOLD_DOUBLE_GATE, /* Fold the top and bottom quarters of the paper towards the midline, then fold in half vertically */
IPP_FINISHINGS_CUPS_FOLD_GATE, /* Fold the top and bottom quarters of the paper towards the midline */
IPP_FINISHINGS_CUPS_FOLD_HALF, /* Fold the paper in half vertically */
IPP_FINISHINGS_CUPS_FOLD_HALF_Z, /* Fold the paper in half horizontally, then Z-fold the paper vertically */
IPP_FINISHINGS_CUPS_FOLD_LEFT_GATE, /* Fold the top quarter of the paper towards the midline */
IPP_FINISHINGS_CUPS_FOLD_LETTER, /* Fold the paper into three sections vertically; sometimes also known as a C fold*/
IPP_FINISHINGS_CUPS_FOLD_PARALLEL, /* Fold the paper in half vertically two times, yielding four sections */
IPP_FINISHINGS_CUPS_FOLD_POSTER, /* Fold the paper in half horizontally and vertically; sometimes also called a cross fold */
IPP_FINISHINGS_CUPS_FOLD_RIGHT_GATE, /* Fold the bottom quarter of the paper towards the midline */
IPP_FINISHINGS_CUPS_FOLD_Z /* Fold the paper vertically into three sections, forming a Z */
} ipp_finishings_t;
# ifndef _CUPS_NO_DEPRECATED
# define IPP_FINISHINGS_JOB_OFFSET IPP_FINISHINGS_JOG_OFFSET
/* Long-time misspelling... */
typedef enum ipp_finishings_e ipp_finish_t;
# endif /* !_CUPS_NO_DEPRECATED */
typedef enum ipp_jcollate_e /**** Job collation types ****/
{
IPP_JOB_UNCOLLATED_SHEETS = 3,
IPP_JOB_COLLATED_DOCUMENTS,
IPP_JOB_UNCOLLATED_DOCUMENTS
IPP_JCOLLATE_UNCOLLATED_SHEETS = 3,
IPP_JCOLLATE_COLLATED_DOCUMENTS,
IPP_JCOLLATE_UNCOLLATED_DOCUMENTS
# ifndef _CUPS_NO_DEPRECATED
# define IPP_JOB_UNCOLLATED_SHEETS IPP_JCOLLATE_UNCOLLATED_SHEETS
# define IPP_JOB_COLLATED_DOCUMENTS IPP_JCOLLATE_COLLATED_DOCUMENTS
# define IPP_JOB_UNCOLLATED_DOCUMENTS IPP_JCOLLATE_UNCOLLATED_DOCUMENTS
# endif /* !_CUPS_NO_DEPRECATED */
} ipp_jcollate_t;
typedef enum ipp_jstate_e /**** Job states ****/
{
IPP_JOB_PENDING = 3, /* Job is waiting to be printed */
IPP_JOB_HELD, /* Job is held for printing */
IPP_JOB_PROCESSING, /* Job is currently printing */
IPP_JOB_STOPPED, /* Job has been stopped */
IPP_JOB_CANCELED, /* Job has been canceled */
IPP_JOB_ABORTED, /* Job has aborted due to error */
IPP_JOB_COMPLETED /* Job has completed successfully */
IPP_JSTATE_PENDING = 3, /* Job is waiting to be printed */
IPP_JSTATE_HELD, /* Job is held for printing */
IPP_JSTATE_PROCESSING, /* Job is currently printing */
IPP_JSTATE_STOPPED, /* Job has been stopped */
IPP_JSTATE_CANCELED, /* Job has been canceled */
IPP_JSTATE_ABORTED, /* Job has aborted due to error */
IPP_JSTATE_COMPLETED /* Job has completed successfully */
# ifndef _CUPS_NO_DEPRECATED
# define IPP_JOB_PENDING IPP_JSTATE_PENDING
# define IPP_JOB_HELD IPP_JSTATE_HELD
# define IPP_JOB_PROCESSING IPP_JSTATE_PROCESSING
# define IPP_JOB_STOPPED IPP_JSTATE_STOPPED
# define IPP_JOB_CANCELED IPP_JSTATE_CANCELED
# define IPP_JOB_ABORTED IPP_JSTATE_ABORTED
# define IPP_JOB_COMPLETED IPP_JSTATE_COMPLETED
/* Legacy name for canceled state */
#define IPP_JOB_CANCELLED IPP_JOB_CANCELED
# define IPP_JOB_CANCELLED IPP_JSTATE_CANCELED
# endif /* !_CUPS_NO_DEPRECATED */
} ipp_jstate_t;
typedef enum ipp_op_e /**** IPP operations ****/
{
IPP_OP_CUPS_INVALID = -1, /* Invalid operation name for @link ippOpValue@ */
IPP_PRINT_JOB = 0x0002, /* Print a single file */
IPP_PRINT_URI, /* Print a single URL @private@ */
IPP_VALIDATE_JOB, /* Validate job options */
IPP_CREATE_JOB, /* Create an empty print job */
IPP_SEND_DOCUMENT, /* Add a file to a job */
IPP_SEND_URI, /* Add a URL to a job @private@ */
IPP_CANCEL_JOB, /* Cancel a job */
IPP_GET_JOB_ATTRIBUTES, /* Get job attributes */
IPP_GET_JOBS, /* Get a list of jobs */
IPP_GET_PRINTER_ATTRIBUTES, /* Get printer attributes */
IPP_HOLD_JOB, /* Hold a job for printing */
IPP_RELEASE_JOB, /* Release a job for printing */
IPP_RESTART_JOB, /* Reprint a job */
IPP_PAUSE_PRINTER = 0x0010, /* Stop a printer */
IPP_RESUME_PRINTER, /* Start a printer */
IPP_PURGE_JOBS, /* Cancel all jobs */
IPP_SET_PRINTER_ATTRIBUTES, /* Set printer attributes @private@ */
IPP_SET_JOB_ATTRIBUTES, /* Set job attributes */
IPP_GET_PRINTER_SUPPORTED_VALUES, /* Get supported attribute values */
IPP_CREATE_PRINTER_SUBSCRIPTION, /* Create a printer subscription @since CUPS 1.2/OS X 10.5@ */
IPP_CREATE_JOB_SUBSCRIPTION, /* Create a job subscription @since CUPS 1.2/OS X 10.5@ */
IPP_GET_SUBSCRIPTION_ATTRIBUTES, /* Get subscription attributes @since CUPS 1.2/OS X 10.5@ */
IPP_GET_SUBSCRIPTIONS, /* Get list of subscriptions @since CUPS 1.2/OS X 10.5@ */
IPP_RENEW_SUBSCRIPTION, /* Renew a printer subscription @since CUPS 1.2/OS X 10.5@ */
IPP_CANCEL_SUBSCRIPTION, /* Cancel a subscription @since CUPS 1.2/OS X 10.5@ */
IPP_GET_NOTIFICATIONS, /* Get notification events @since CUPS 1.2/OS X 10.5@ */
IPP_SEND_NOTIFICATIONS, /* Send notification events @private@ */
IPP_GET_RESOURCE_ATTRIBUTES, /* Get resource attributes @private@ */
IPP_GET_RESOURCE_DATA, /* Get resource data @private@ */
IPP_GET_RESOURCES, /* Get list of resources @private@ */
IPP_GET_PRINT_SUPPORT_FILES, /* Get printer support files @private@ */
IPP_ENABLE_PRINTER, /* Start a printer */
IPP_DISABLE_PRINTER, /* Stop a printer */
IPP_PAUSE_PRINTER_AFTER_CURRENT_JOB, /* Stop printer after the current job @private@ */
IPP_HOLD_NEW_JOBS, /* Hold new jobs @private@ */
IPP_RELEASE_HELD_NEW_JOBS, /* Release new jobs @private@ */
IPP_DEACTIVATE_PRINTER, /* Stop a printer @private@ */
IPP_ACTIVATE_PRINTER, /* Start a printer @private@ */
IPP_RESTART_PRINTER, /* Restart a printer @private@ */
IPP_SHUTDOWN_PRINTER, /* Turn a printer off @private@ */
IPP_STARTUP_PRINTER, /* Turn a printer on @private@ */
IPP_REPROCESS_JOB, /* Reprint a job @private@ */
IPP_CANCEL_CURRENT_JOB, /* Cancel the current job @private@ */
IPP_SUSPEND_CURRENT_JOB, /* Suspend the current job @private@ */
IPP_RESUME_JOB, /* Resume the current job @private@ */
IPP_PROMOTE_JOB, /* Promote a job to print sooner @private@ */
IPP_SCHEDULE_JOB_AFTER, /* Schedule a job to print after another @private@ */
IPP_CANCEL_DOCUMENT = 0x0033, /* Cancel-Document @private@ */
IPP_GET_DOCUMENT_ATTRIBUTES, /* Get-Document-Attributes @private@ */
IPP_GET_DOCUMENTS, /* Get-Documents @private@ */
IPP_DELETE_DOCUMENT, /* Delete-Document @private@ */
IPP_SET_DOCUMENT_ATTRIBUTES, /* Set-Document-Attributes @private@ */
IPP_CANCEL_JOBS, /* Cancel-Jobs */
IPP_CANCEL_MY_JOBS, /* Cancel-My-Jobs */
IPP_RESUBMIT_JOB, /* Resubmit-Job */
IPP_CLOSE_JOB, /* Close-Job */
IPP_IDENTIFY_PRINTER, /* Identify-Printer (proposed IPP JPS3) */
IPP_VALIDATE_DOCUMENT, /* Validate-Document (proposed IPP JPS3) */
IPP_PRIVATE = 0x4000, /* Reserved @private@ */
CUPS_GET_DEFAULT, /* Get the default printer */
CUPS_GET_PRINTERS, /* Get a list of printers and/or classes */
CUPS_ADD_MODIFY_PRINTER, /* Add or modify a printer */
CUPS_DELETE_PRINTER, /* Delete a printer */
CUPS_GET_CLASSES, /* Get a list of classes @deprecated@ */
CUPS_ADD_MODIFY_CLASS, /* Add or modify a class */
CUPS_DELETE_CLASS, /* Delete a class */
CUPS_ACCEPT_JOBS, /* Accept new jobs on a printer */
CUPS_REJECT_JOBS, /* Reject new jobs on a printer */
CUPS_SET_DEFAULT, /* Set the default printer */
CUPS_GET_DEVICES, /* Get a list of supported devices */
CUPS_GET_PPDS, /* Get a list of supported drivers */
CUPS_MOVE_JOB, /* Move a job to a different printer */
CUPS_AUTHENTICATE_JOB, /* Authenticate a job @since CUPS 1.2/OS X 10.5@ */
CUPS_GET_PPD, /* Get a PPD file @since CUPS 1.3/OS X 10.5@ */
CUPS_GET_DOCUMENT = 0x4027 /* Get a document file @since CUPS 1.4/OS X 10.6@ */
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_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_CANCEL_JOB, /* Cancel a job */
IPP_OP_GET_JOB_ATTRIBUTES, /* Get job attributes */
IPP_OP_GET_JOBS, /* Get a list of jobs */
IPP_OP_GET_PRINTER_ATTRIBUTES, /* Get printer attributes */
IPP_OP_HOLD_JOB, /* Hold a job for printing */
IPP_OP_RELEASE_JOB, /* Release a job for printing */
IPP_OP_RESTART_JOB, /* Reprint a job */
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_JOB_ATTRIBUTES, /* Set job attributes */
IPP_OP_GET_PRINTER_SUPPORTED_VALUES, /* Get supported attribute values */
IPP_OP_CREATE_PRINTER_SUBSCRIPTION, /* Create a printer subscription @since CUPS 1.2/OS X 10.5@ */
IPP_OP_CREATE_JOB_SUBSCRIPTION, /* Create a job subscription @since CUPS 1.2/OS X 10.5@ */
IPP_OP_GET_SUBSCRIPTION_ATTRIBUTES, /* Get subscription attributes @since CUPS 1.2/OS X 10.5@ */
IPP_OP_GET_SUBSCRIPTIONS, /* Get list of subscriptions @since CUPS 1.2/OS X 10.5@ */
IPP_OP_RENEW_SUBSCRIPTION, /* Renew a printer subscription @since CUPS 1.2/OS X 10.5@ */
IPP_OP_CANCEL_SUBSCRIPTION, /* Cancel a subscription @since CUPS 1.2/OS X 10.5@ */
IPP_OP_GET_NOTIFICATIONS, /* Get notification events @since CUPS 1.2/OS X 10.5@ */
IPP_OP_SEND_NOTIFICATIONS, /* Send notification events @private@ */
IPP_OP_GET_RESOURCE_ATTRIBUTES, /* Get resource attributes @private@ */
IPP_OP_GET_RESOURCE_DATA, /* Get resource data @private@ */
IPP_OP_GET_RESOURCES, /* Get list of resources @private@ */
IPP_OP_GET_PRINT_SUPPORT_FILES, /* Get printer support files @private@ */
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@ */
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@ */
/* Legacy names for the add operations */
#define CUPS_ADD_PRINTER CUPS_ADD_MODIFY_PRINTER
#define CUPS_ADD_CLASS CUPS_ADD_MODIFY_CLASS
IPP_OP_PRIVATE = 0x4000, /* Reserved @private@ */
IPP_OP_CUPS_GET_DEFAULT, /* Get the default printer */
IPP_OP_CUPS_GET_PRINTERS, /* Get a list of printers and/or classes */
IPP_OP_CUPS_ADD_MODIFY_PRINTER, /* Add or modify a printer */
IPP_OP_CUPS_DELETE_PRINTER, /* Delete a printer */
IPP_OP_CUPS_GET_CLASSES, /* Get a list of classes @deprecated@ */
IPP_OP_CUPS_ADD_MODIFY_CLASS, /* Add or modify a class */
IPP_OP_CUPS_DELETE_CLASS, /* Delete a class */
IPP_OP_CUPS_ACCEPT_JOBS, /* Accept new jobs on a printer */
IPP_OP_CUPS_REJECT_JOBS, /* Reject new jobs on a printer */
IPP_OP_CUPS_SET_DEFAULT, /* Set the default printer */
IPP_OP_CUPS_GET_DEVICES, /* Get a list of supported devices */
IPP_OP_CUPS_GET_PPDS, /* Get a list of supported drivers */
IPP_OP_CUPS_MOVE_JOB, /* Move a job to a different printer */
IPP_OP_CUPS_AUTHENTICATE_JOB, /* Authenticate a job @since CUPS 1.2/OS X 10.5@ */
IPP_OP_CUPS_GET_PPD, /* Get a PPD file @since CUPS 1.3/OS X 10.5@ */
IPP_OP_CUPS_GET_DOCUMENT = 0x4027 /* Get a document file @since CUPS 1.4/OS X 10.6@ */
# ifndef _CUPS_NO_DEPRECATED
# define IPP_PRINT_JOB IPP_OP_PRINT_JOB
# define IPP_PRINT_URI IPP_OP_PRINT_URI
# define IPP_VALIDATE_JOB IPP_OP_VALIDATE_JOB
# define IPP_CREATE_JOB IPP_OP_CREATE_JOB
# define IPP_SEND_DOCUMENT IPP_OP_SEND_DOCUMENT
# define IPP_SEND_URI IPP_OP_SEND_URI
# define IPP_CANCEL_JOB IPP_OP_CANCEL_JOB
# define IPP_GET_JOB_ATTRIBUTES IPP_OP_GET_JOB_ATTRIBUTES
# define IPP_GET_JOBS IPP_OP_GET_JOBS
# define IPP_GET_PRINTER_ATTRIBUTES IPP_OP_GET_PRINTER_ATTRIBUTES
# define IPP_HOLD_JOB IPP_OP_HOLD_JOB
# define IPP_RELEASE_JOB IPP_OP_RELEASE_JOB
# define IPP_RESTART_JOB IPP_OP_RESTART_JOB
# define IPP_PAUSE_PRINTER IPP_OP_PAUSE_PRINTER
# define IPP_RESUME_PRINTER IPP_OP_RESUME_PRINTER
# define IPP_PURGE_JOBS IPP_OP_PURGE_JOBS
# define IPP_SET_PRINTER_ATTRIBUTES IPP_OP_SET_PRINTER_ATTRIBUTES
# define IPP_SET_JOB_ATTRIBUTES IPP_OP_SET_JOB_ATTRIBUTES
# define IPP_GET_PRINTER_SUPPORTED_VALUES IPP_OP_GET_PRINTER_SUPPORTED_VALUES
# define IPP_CREATE_PRINTER_SUBSCRIPTION IPP_OP_CREATE_PRINTER_SUBSCRIPTION
# define IPP_CREATE_JOB_SUBSCRIPTION IPP_OP_CREATE_JOB_SUBSCRIPTION
# define IPP_GET_SUBSCRIPTION_ATTRIBUTES IPP_OP_GET_SUBSCRIPTION_ATTRIBUTES
# define IPP_GET_SUBSCRIPTIONS IPP_OP_GET_SUBSCRIPTIONS
# define IPP_RENEW_SUBSCRIPTION IPP_OP_RENEW_SUBSCRIPTION
# define IPP_CANCEL_SUBSCRIPTION IPP_OP_CANCEL_SUBSCRIPTION
# define IPP_GET_NOTIFICATIONS IPP_OP_GET_NOTIFICATIONS
# define IPP_SEND_NOTIFICATIONS IPP_OP_SEND_NOTIFICATIONS
# define IPP_GET_RESOURCE_ATTRIBUTES IPP_OP_GET_RESOURCE_ATTRIBUTES
# define IPP_GET_RESOURCE_DATA IPP_OP_GET_RESOURCE_DATA
# define IPP_GET_RESOURCES IPP_OP_GET_RESOURCES
# define IPP_GET_PRINT_SUPPORT_FILES IPP_OP_GET_PRINT_SUPPORT_FILES
# define IPP_ENABLE_PRINTER IPP_OP_ENABLE_PRINTER
# define IPP_DISABLE_PRINTER IPP_OP_DISABLE_PRINTER
# define IPP_PAUSE_PRINTER_AFTER_CURRENT_JOB IPP_OP_PAUSE_PRINTER_AFTER_CURRENT_JOB
# define IPP_HOLD_NEW_JOBS IPP_OP_HOLD_NEW_JOBS
# define IPP_RELEASE_HELD_NEW_JOBS IPP_OP_RELEASE_HELD_NEW_JOBS
# define IPP_DEACTIVATE_PRINTER IPP_OP_DEACTIVATE_PRINTER
# define IPP_ACTIVATE_PRINTER IPP_OP_ACTIVATE_PRINTER
# define IPP_RESTART_PRINTER IPP_OP_RESTART_PRINTER
# define IPP_SHUTDOWN_PRINTER IPP_OP_SHUTDOWN_PRINTER
# define IPP_STARTUP_PRINTER IPP_OP_STARTUP_PRINTER
# define IPP_REPROCESS_JOB IPP_OP_REPROCESS_JOB
# define IPP_CANCEL_CURRENT_JOB IPP_OP_CANCEL_CURRENT_JOB
# define IPP_SUSPEND_CURRENT_JOB IPP_OP_SUSPEND_CURRENT_JOB
# define IPP_RESUME_JOB IPP_OP_RESUME_JOB
# define IPP_PROMOTE_JOB IPP_OP_PROMOTE_JOB
# define IPP_SCHEDULE_JOB_AFTER IPP_OP_SCHEDULE_JOB_AFTER
# define IPP_CANCEL_DOCUMENT IPP_OP_CANCEL_DOCUMENT
# define IPP_GET_DOCUMENT_ATTRIBUTES IPP_OP_GET_DOCUMENT_ATTRIBUTES
# define IPP_GET_DOCUMENTS IPP_OP_GET_DOCUMENTS
# define IPP_DELETE_DOCUMENT IPP_OP_DELETE_DOCUMENT
# define IPP_SET_DOCUMENT_ATTRIBUTES IPP_OP_SET_DOCUMENT_ATTRIBUTES
# define IPP_CANCEL_JOBS IPP_OP_CANCEL_JOBS
# define IPP_CANCEL_MY_JOBS IPP_OP_CANCEL_MY_JOBS
# define IPP_RESUBMIT_JOB IPP_OP_RESUBMIT_JOB
# define IPP_CLOSE_JOB IPP_OP_CLOSE_JOB
# define IPP_IDENTIFY_PRINTER IPP_OP_IDENTIFY_PRINTER
# define IPP_VALIDATE_DOCUMENT IPP_OP_VALIDATE_DOCUMENT
# define IPP_PRIVATE IPP_OP_PRIVATE
# define CUPS_GET_DEFAULT IPP_OP_CUPS_GET_DEFAULT
# define CUPS_GET_PRINTERS IPP_OP_CUPS_GET_PRINTERS
# define CUPS_ADD_MODIFY_PRINTER IPP_OP_CUPS_ADD_MODIFY_PRINTER
# define CUPS_DELETE_PRINTER IPP_OP_CUPS_DELETE_PRINTER
# define CUPS_GET_CLASSES IPP_OP_CUPS_GET_CLASSES
# define CUPS_ADD_MODIFY_CLASS IPP_OP_CUPS_ADD_MODIFY_CLASS
# define CUPS_DELETE_CLASS IPP_OP_CUPS_DELETE_CLASS
# define CUPS_ACCEPT_JOBS IPP_OP_CUPS_ACCEPT_JOBS
# define CUPS_REJECT_JOBS IPP_OP_CUPS_REJECT_JOBS
# define CUPS_SET_DEFAULT IPP_OP_CUPS_SET_DEFAULT
# define CUPS_GET_DEVICES IPP_OP_CUPS_GET_DEVICES
# define CUPS_GET_PPDS IPP_OP_CUPS_GET_PPDS
# define CUPS_MOVE_JOB IPP_OP_CUPS_MOVE_JOB
# define CUPS_AUTHENTICATE_JOB IPP_OP_CUPS_AUTHENTICATE_JOB
# define CUPS_GET_PPD IPP_OP_CUPS_GET_PPD
# define CUPS_GET_DOCUMENT IPP_OP_CUPS_GET_DOCUMENT
/* Legacy names */
# define CUPS_ADD_PRINTER IPP_OP_CUPS_ADD_MODIFY_PRINTER
# define CUPS_ADD_CLASS IPP_OP_CUPS_ADD_MODIFY_CLASS
# endif /* !_CUPS_NO_DEPRECATED */
} ipp_op_t;
typedef enum ipp_orient_e /**** Orientation values ****/
{
IPP_PORTRAIT = 3, /* No rotation */
IPP_LANDSCAPE, /* 90 degrees counter-clockwise */
IPP_REVERSE_LANDSCAPE, /* 90 degrees clockwise */
IPP_REVERSE_PORTRAIT /* 180 degrees */
IPP_ORIENT_PORTRAIT = 3, /* No rotation */
IPP_ORIENT_LANDSCAPE, /* 90 degrees counter-clockwise */
IPP_ORIENT_REVERSE_LANDSCAPE, /* 90 degrees clockwise */
IPP_ORIENT_REVERSE_PORTRAIT /* 180 degrees */
# ifndef _CUPS_NO_DEPRECATED
# define IPP_PORTRAIT IPP_ORIENT_PORTRAIT
# define IPP_LANDSCAPE IPP_ORIENT_LANDSCAPE
# define IPP_REVERSE_LANDSCAPE IPP_ORIENT_REVERSE_LANDSCAPE
# define IPP_REVERSE_PORTRAIT IPP_ORIENT_REVERSE_PORTRAIT
# endif /* !_CUPS_NO_DEPRECATED */
} ipp_orient_t;
typedef enum ipp_pstate_e /**** Printer states ****/
{
IPP_PRINTER_IDLE = 3, /* Printer is idle */
IPP_PRINTER_PROCESSING, /* Printer is working */
IPP_PRINTER_STOPPED /* Printer is stopped */
IPP_PSTATE_IDLE = 3, /* Printer is idle */
IPP_PSTATE_PROCESSING, /* Printer is working */
IPP_PSTATE_STOPPED /* Printer is stopped */
# ifndef _CUPS_NO_DEPRECATED
# define IPP_PRINTER_IDLE IPP_PSTATE_IDLE
# define IPP_PRINTER_PROCESSING IPP_PSTATE_PROCESSING
# define IPP_PRINTER_STOPPED IPP_PSTATE_STOPPED
# endif /* _CUPS_NO_DEPRECATED */
} ipp_pstate_t;
typedef enum ipp_quality_e /**** Qualities ****/
@@ -242,76 +436,163 @@ typedef enum ipp_res_e /**** Resolution units ****/
typedef enum ipp_state_e /**** IPP states ****/
{
IPP_ERROR = -1, /* An error occurred */
IPP_IDLE, /* Nothing is happening/request completed */
IPP_HEADER, /* The request header needs to be sent/received */
IPP_ATTRIBUTE, /* One or more attributes need to be sent/received */
IPP_DATA /* IPP request data needs to be sent/received */
IPP_STATE_ERROR = -1, /* An error occurred */
IPP_STATE_IDLE, /* Nothing is happening/request completed */
IPP_STATE_HEADER, /* The request header needs to be sent/received */
IPP_STATE_ATTRIBUTE, /* One or more attributes need to be sent/received */
IPP_STATE_DATA /* IPP request data needs to be sent/received */
# ifndef _CUPS_NO_DEPRECATED
# define IPP_ERROR IPP_STATE_ERROR
# define IPP_IDLE IPP_STATE_IDLE
# define IPP_HEADER IPP_STATE_HEADER
# define IPP_ATTRIBUTE IPP_STATE_ATTRIBUTE
# define IPP_DATA IPP_STATE_DATA
# endif /* !_CUPS_NO_DEPRECATED */
} ipp_state_t;
typedef enum ipp_status_e /**** IPP status codes ****/
{
IPP_STATUS_CUPS_INVALID = -1, /* Invalid status name for @link ippErrorValue@ */
IPP_OK = 0x0000, /* successful-ok */
IPP_OK_SUBST, /* successful-ok-ignored-or-substituted-attributes */
IPP_OK_CONFLICT, /* successful-ok-conflicting-attributes */
IPP_OK_IGNORED_SUBSCRIPTIONS, /* successful-ok-ignored-subscriptions */
IPP_OK_IGNORED_NOTIFICATIONS, /* successful-ok-ignored-notifications @private@ */
IPP_OK_TOO_MANY_EVENTS, /* successful-ok-too-many-events */
IPP_OK_BUT_CANCEL_SUBSCRIPTION, /* successful-ok-but-cancel-subscription @private@ */
IPP_OK_EVENTS_COMPLETE, /* successful-ok-events-complete */
IPP_REDIRECTION_OTHER_SITE = 0x200, /* redirection-other-site @private@ */
CUPS_SEE_OTHER = 0x280, /* cups-see-other */
IPP_BAD_REQUEST = 0x0400, /* client-error-bad-request */
IPP_FORBIDDEN, /* client-error-forbidden */
IPP_NOT_AUTHENTICATED, /* client-error-not-authenticated */
IPP_NOT_AUTHORIZED, /* client-error-not-authorized */
IPP_NOT_POSSIBLE, /* client-error-not-possible */
IPP_TIMEOUT, /* client-error-timeout */
IPP_NOT_FOUND, /* client-error-not-found */
IPP_GONE, /* client-error-gone */
IPP_REQUEST_ENTITY, /* client-error-request-entity-too-large */
IPP_REQUEST_VALUE, /* client-error-request-value-too-long */
IPP_DOCUMENT_FORMAT, /* client-error-document-format-not-supported */
IPP_ATTRIBUTES, /* client-error-attributes-or-values-not-supported */
IPP_URI_SCHEME, /* client-error-uri-scheme-not-supported */
IPP_CHARSET, /* client-error-charset-not-supported */
IPP_CONFLICT, /* client-error-conflicting-attributes */
IPP_COMPRESSION_NOT_SUPPORTED, /* client-error-compression-not-supported */
IPP_COMPRESSION_ERROR, /* client-error-compression-error */
IPP_DOCUMENT_FORMAT_ERROR, /* client-error-document-format-error */
IPP_DOCUMENT_ACCESS_ERROR, /* client-error-document-access-error */
IPP_ATTRIBUTES_NOT_SETTABLE, /* client-error-attributes-not-settable */
IPP_IGNORED_ALL_SUBSCRIPTIONS, /* client-error-ignored-all-subscriptions */
IPP_TOO_MANY_SUBSCRIPTIONS, /* client-error-too-many-subscriptions */
IPP_IGNORED_ALL_NOTIFICATIONS, /* client-error-ignored-all-notifications @private@ */
IPP_PRINT_SUPPORT_FILE_NOT_FOUND, /* client-error-print-support-file-not-found @private@ */
IPP_DOCUMENT_PASSWORD_ERROR, /* client-error-document-password-error */
IPP_DOCUMENT_PERMISSION_ERROR, /* client-error-document-permission-error */
IPP_DOCUMENT_SECURITY_ERROR, /* client-error-document-security-error */
IPP_DOCUMENT_UNPRINTABLE_ERROR, /* client-error-document-unprintable-error */
IPP_STATUS_OK = 0x0000, /* successful-ok */
IPP_STATUS_OK_IGNORED_OR_SUBSTITUTED, /* successful-ok-ignored-or-substituted-attributes */
IPP_STATUS_OK_CONFLICTING, /* successful-ok-conflicting-attributes */
IPP_STATUS_OK_IGNORED_SUBSCRIPTIONS, /* successful-ok-ignored-subscriptions */
IPP_STATUS_OK_IGNORED_NOTIFICATIONS, /* successful-ok-ignored-notifications @private@ */
IPP_STATUS_OK_TOO_MANY_EVENTS, /* successful-ok-too-many-events */
IPP_STATUS_OK_BUT_CANCEL_SUBSCRIPTION,/* successful-ok-but-cancel-subscription @private@ */
IPP_STATUS_OK_EVENTS_COMPLETE, /* successful-ok-events-complete */
IPP_STATUS_REDIRECTION_OTHER_SITE = 0x0200,
/* redirection-other-site @private@ */
IPP_STATUS_CUPS_SEE_OTHER = 0x0280, /* cups-see-other */
IPP_STATUS_ERROR_BAD_REQUEST = 0x0400,/* client-error-bad-request */
IPP_STATUS_ERROR_FORBIDDEN, /* client-error-forbidden */
IPP_STATUS_ERROR_NOT_AUTHENTICATED, /* client-error-not-authenticated */
IPP_STATUS_ERROR_NOT_AUTHORIZED, /* client-error-not-authorized */
IPP_STATUS_ERROR_NOT_POSSIBLE, /* client-error-not-possible */
IPP_STATUS_ERROR_TIMEOUT, /* client-error-timeout */
IPP_STATUS_ERROR_NOT_FOUND, /* client-error-not-found */
IPP_STATUS_ERROR_GONE, /* client-error-gone */
IPP_STATUS_ERROR_REQUEST_ENTITY, /* client-error-request-entity-too-large */
IPP_STATUS_ERROR_REQUEST_VALUE, /* client-error-request-value-too-long */
IPP_STATUS_ERROR_DOCUMENT_FORMAT_NOT_SUPPORTED,
/* client-error-document-format-not-supported */
IPP_STATUS_ERROR_ATTRIBUTES_OR_VALUES,/* client-error-attributes-or-values-not-supported */
IPP_STATUS_ERROR_URI_SCHEME, /* client-error-uri-scheme-not-supported */
IPP_STATUS_ERROR_CHARSET, /* client-error-charset-not-supported */
IPP_STATUS_ERROR_CONFLICTING, /* client-error-conflicting-attributes */
IPP_STATUS_ERROR_COMPRESSION_NOT_SUPPORTED,
/* client-error-compression-not-supported */
IPP_STATUS_ERROR_COMPRESSION_ERROR, /* client-error-compression-error */
IPP_STATUS_ERROR_DOCUMENT_FORMAT_ERROR,
/* client-error-document-format-error */
IPP_STATUS_ERROR_DOCUMENT_ACCESS, /* client-error-document-access-error */
IPP_STATUS_ERROR_ATTRIBUTES_NOT_SETTABLE,
/* client-error-attributes-not-settable */
IPP_STATUS_ERROR_IGNORED_ALL_SUBSCRIPTIONS,
/* client-error-ignored-all-subscriptions */
IPP_STATUS_ERROR_TOO_MANY_SUBSCRIPTIONS,
/* client-error-too-many-subscriptions */
IPP_STATUS_ERROR_IGNORED_ALL_NOTIFICATIONS,
/* client-error-ignored-all-notifications @private@ */
IPP_STATUS_ERROR_PRINT_SUPPORT_FILE_NOT_FOUND,
/* client-error-print-support-file-not-found @private@ */
IPP_STATUS_ERROR_DOCUMENT_PASSWORD, /* client-error-document-password-error */
IPP_STATUS_ERROR_DOCUMENT_PERMISSION, /* client-error-document-permission-error */
IPP_STATUS_ERROR_DOCUMENT_SECURITY, /* client-error-document-security-error */
IPP_STATUS_ERROR_DOCUMENT_UNPRINTABLE,/* client-error-document-unprintable-error */
IPP_INTERNAL_ERROR = 0x0500, /* server-error-internal-error */
IPP_OPERATION_NOT_SUPPORTED, /* server-error-operation-not-supported */
IPP_SERVICE_UNAVAILABLE, /* server-error-service-unavailable */
IPP_VERSION_NOT_SUPPORTED, /* server-error-version-not-supported */
IPP_DEVICE_ERROR, /* server-error-device-error */
IPP_TEMPORARY_ERROR, /* server-error-temporary-error */
IPP_NOT_ACCEPTING, /* server-error-not-accepting-jobs */
IPP_PRINTER_BUSY, /* server-error-busy */
IPP_ERROR_JOB_CANCELED, /* server-error-job-canceled */
IPP_MULTIPLE_JOBS_NOT_SUPPORTED, /* server-error-multiple-document-jobs-not-supported */
IPP_PRINTER_IS_DEACTIVATED, /* server-error-printer-is-deactivated */
IPP_TOO_MANY_JOBS, /* server-error-too-many-jobs */
IPP_TOO_MANY_DOCUMENTS, /* server-error-too-many-documents */
/* Proposed extensions for paid printing */
IPP_STATUS_ERROR_CUPS_ACCOUNT_INFO_NEEDED = 0x049C,
/* cups-error-account-info-needed @since CUPS 1.7/OS X 10.9@ */
IPP_STATUS_ERROR_CUPS_ACCOUNT_CLOSED, /* cups-error-account-closed @since CUPS 1.7/OS X 10.9@ */
IPP_STATUS_ERROR_CUPS_ACCOUNT_LIMIT_REACHED,
/* cups-error-account-limit-reached @since CUPS 1.7/OS X 10.9@ */
IPP_STATUS_ERROR_CUPS_ACCOUNT_AUTHORIZATION_FAILED,
/* cups-error-account-authorization-failed @since CUPS 1.7/OS X 10.9@ */
IPP_AUTHENTICATION_CANCELED = 0x1000, /* Authentication canceled by user @since CUPS 1.5/OS X 10.7@ */
IPP_PKI_ERROR, /* Error negotiating a secure connection @since CUPS 1.5/OS X 10.7@ */
IPP_UPGRADE_REQUIRED /* TLS upgrade required */
IPP_STATUS_ERROR_INTERNAL = 0x0500, /* server-error-internal-error */
IPP_STATUS_ERROR_OPERATION_NOT_SUPPORTED,
/* server-error-operation-not-supported */
IPP_STATUS_ERROR_SERVICE_UNAVAILABLE, /* server-error-service-unavailable */
IPP_STATUS_ERROR_VERSION_NOT_SUPPORTED,
/* server-error-version-not-supported */
IPP_STATUS_ERROR_DEVICE, /* server-error-device-error */
IPP_STATUS_ERROR_TEMPORARY, /* server-error-temporary-error */
IPP_STATUS_ERROR_NOT_ACCEPTING_JOBS, /* server-error-not-accepting-jobs */
IPP_STATUS_ERROR_BUSY, /* server-error-busy */
IPP_STATUS_ERROR_JOB_CANCELED, /* server-error-job-canceled */
IPP_STATUS_ERROR_MULTIPLE_JOBS_NOT_SUPPORTED,
/* server-error-multiple-document-jobs-not-supported */
IPP_STATUS_ERROR_PRINTER_IS_DEACTIVATED,
/* server-error-printer-is-deactivated */
IPP_STATUS_ERROR_TOO_MANY_JOBS, /* server-error-too-many-jobs */
IPP_STATUS_ERROR_TOO_MANY_DOCUMENTS, /* server-error-too-many-documents */
/* Legacy name for canceled status */
#define IPP_ERROR_JOB_CANCELLED IPP_ERROR_JOB_CANCELED
/* These are internal and never sent over the wire... */
IPP_STATUS_ERROR_CUPS_AUTHENTICATION_CANCELED = 0x1000,
/* cups-authentication-canceled - Authentication canceled by user @since CUPS 1.5/OS X 10.7@ */
IPP_STATUS_ERROR_CUPS_PKI, /* cups-pki-error - Error negotiating a secure connection @since CUPS 1.5/OS X 10.7@ */
IPP_STATUS_ERROR_CUPS_UPGRADE_REQUIRED/* cups-upgrade-required - TLS upgrade required */
# ifndef _CUPS_NO_DEPRECATED
# define IPP_OK IPP_STATUS_OK
# define IPP_OK_SUBST IPP_STATUS_OK_IGNORED_OR_SUBSTITUTED
# define IPP_OK_CONFLICT IPP_STATUS_OK_CONFLICTING
# define IPP_OK_IGNORED_SUBSCRIPTIONS IPP_STATUS_OK_IGNORED_SUBSCRIPTIONS
# define IPP_OK_IGNORED_NOTIFICATIONS IPP_STATUS_OK_IGNORED_NOTIFICATIONS
# define IPP_OK_TOO_MANY_EVENTS IPP_STATUS_OK_TOO_MANY_EVENTS
# define IPP_OK_BUT_CANCEL_SUBSCRIPTION IPP_STATUS_OK_BUT_CANCEL_SUBSCRIPTION
# define IPP_OK_EVENTS_COMPLETE IPP_STATUS_OK_EVENTS_COMPLETE
# define IPP_REDIRECTION_OTHER_SITE IPP_STATUS_REDIRECTION_OTHER_SITE
# define CUPS_SEE_OTHER IPP_STATUS_CUPS_SEE_OTHER
# define IPP_BAD_REQUEST IPP_STATUS_ERROR_BAD_REQUEST
# define IPP_FORBIDDEN IPP_STATUS_ERROR_FORBIDDEN
# define IPP_NOT_AUTHENTICATED IPP_STATUS_ERROR_NOT_AUTHENTICATED
# define IPP_NOT_AUTHORIZED IPP_STATUS_ERROR_NOT_AUTHORIZED
# define IPP_NOT_POSSIBLE IPP_STATUS_ERROR_NOT_POSSIBLE
# define IPP_TIMEOUT IPP_STATUS_ERROR_TIMEOUT
# define IPP_NOT_FOUND IPP_STATUS_ERROR_NOT_FOUND
# define IPP_GONE IPP_STATUS_ERROR_GONE
# define IPP_REQUEST_ENTITY IPP_STATUS_ERROR_REQUEST_ENTITY
# define IPP_REQUEST_VALUE IPP_STATUS_ERROR_REQUEST_VALUE
# define IPP_DOCUMENT_FORMAT IPP_STATUS_ERROR_DOCUMENT_FORMAT_NOT_SUPPORTED
# define IPP_ATTRIBUTES IPP_STATUS_ERROR_ATTRIBUTES_OR_VALUES
# define IPP_URI_SCHEME IPP_STATUS_ERROR_URI_SCHEME
# define IPP_CHARSET IPP_STATUS_ERROR_CHARSET
# define IPP_CONFLICT IPP_STATUS_ERROR_CONFLICTING
# define IPP_COMPRESSION_NOT_SUPPORTED IPP_STATUS_ERROR_COMPRESSION_NOT_SUPPORTED
# define IPP_COMPRESSION_ERROR IPP_STATUS_ERROR_COMPRESSION_ERROR
# define IPP_DOCUMENT_FORMAT_ERROR IPP_STATUS_ERROR_DOCUMENT_FORMAT_ERROR
# define IPP_DOCUMENT_ACCESS_ERROR IPP_STATUS_ERROR_DOCUMENT_ACCESS
# define IPP_ATTRIBUTES_NOT_SETTABLE IPP_STATUS_ERROR_ATTRIBUTES_NOT_SETTABLE
# define IPP_IGNORED_ALL_SUBSCRIPTIONS IPP_STATUS_ERROR_IGNORED_ALL_SUBSCRIPTIONS
# define IPP_TOO_MANY_SUBSCRIPTIONS IPP_STATUS_ERROR_TOO_MANY_SUBSCRIPTIONS
# define IPP_IGNORED_ALL_NOTIFICATIONS IPP_STATUS_ERROR_IGNORED_ALL_NOTIFICATIONS
# define IPP_PRINT_SUPPORT_FILE_NOT_FOUND IPP_STATUS_ERROR_PRINT_SUPPORT_FILE_NOT_FOUND
# define IPP_DOCUMENT_PASSWORD_ERROR IPP_STATUS_ERROR_DOCUMENT_PASSWORD
# define IPP_DOCUMENT_PERMISSION_ERROR IPP_STATUS_ERROR_DOCUMENT_PERMISSION
# define IPP_DOCUMENT_SECURITY_ERROR IPP_STATUS_ERROR_DOCUMENT_SECURITY
# define IPP_DOCUMENT_UNPRINTABLE_ERROR IPP_STATUS_ERROR_DOCUMENT_UNPRINTABLE
# define IPP_INTERNAL_ERROR IPP_STATUS_ERROR_INTERNAL
# define IPP_OPERATION_NOT_SUPPORTED IPP_STATUS_ERROR_OPERATION_NOT_SUPPORTED
# define IPP_SERVICE_UNAVAILABLE IPP_STATUS_ERROR_SERVICE_UNAVAILABLE
# define IPP_VERSION_NOT_SUPPORTED IPP_STATUS_ERROR_VERSION_NOT_SUPPORTED
# define IPP_DEVICE_ERROR IPP_STATUS_ERROR_DEVICE
# define IPP_TEMPORARY_ERROR IPP_STATUS_ERROR_TEMPORARY
# define IPP_NOT_ACCEPTING IPP_STATUS_ERROR_NOT_ACCEPTING_JOBS
# define IPP_PRINTER_BUSY IPP_STATUS_ERROR_BUSY
# define IPP_ERROR_JOB_CANCELED IPP_STATUS_ERROR_JOB_CANCELED
# define IPP_MULTIPLE_JOBS_NOT_SUPPORTED IPP_STATUS_ERROR_MULTIPLE_JOBS_NOT_SUPPORTED
# define IPP_PRINTER_IS_DEACTIVATED IPP_STATUS_ERROR_PRINTER_IS_DEACTIVATED
# define IPP_TOO_MANY_JOBS IPP_STATUS_ERROR_TOO_MANY_JOBS
# define IPP_TOO_MANY_DOCUMENTS IPP_STATUS_ERROR_TOO_MANY_DOCUMENTS
# define IPP_AUTHENTICATION_CANCELED IPP_STATUS_ERROR_CUPS_AUTHENTICATION_CANCELED
# define IPP_PKI_ERROR IPP_STATUS_ERROR_CUPS_PKI
# define IPP_UPGRADE_REQUIRED IPP_STATUS_ERROR_CUPS_UPGRADE_REQUIRED
/* Legacy name for canceled status */
# define IPP_ERROR_JOB_CANCELLED IPP_STATUS_ERROR_JOB_CANCELED
# endif /* _CUPS_NO_DEPRECATED */
} ipp_status_t;
typedef enum ipp_tag_e /**** Format tags for attributes ****/
@@ -356,9 +637,14 @@ typedef enum ipp_tag_e /**** Format tags for attributes ****/
IPP_TAG_MIMETYPE, /* MIME media type value */
IPP_TAG_MEMBERNAME, /* Collection member name value */
IPP_TAG_EXTENSION = 0x7f, /* Extension point for 32-bit tags */
IPP_TAG_MASK = 0x7fffffff, /* Mask for copied attribute values @private@ */
IPP_TAG_CUPS_MASK = 0x7fffffff, /* Mask for copied attribute values @private@ */
/* The following expression is used to avoid compiler warnings with +/-0x80000000 */
IPP_TAG_COPY = -0x7fffffff-1 /* Bitflag for copied attribute values @private@ */
IPP_TAG_CUPS_CONST = -0x7fffffff-1 /* Bitflag for copied/const attribute values @private@ */
# ifndef _CUPS_NO_DEPRECATED
# define IPP_TAG_MASK IPP_TAG_CUPS_MASK
# define IPP_TAG_COPY IPP_TAG_CUPS_CONST
# endif /* !_CUPS_NO_DEPRECATED */
} ipp_tag_t;
typedef unsigned char ipp_uchar_t; /**** Unsigned 8-bit integer/character ****/
@@ -379,12 +665,18 @@ typedef int (*ipp_copycb_t)(void *context, ipp_t *dst, ipp_attribute_t *attr);
* Please use the new accessor functions available in CUPS 1.6 and later, as
* these definitions will be moved to a private header file in a future release.
*
* Define _IPP_PRIVATE_STRUCTURES to cause the private IPP structures to be
* Define _IPP_PRIVATE_STRUCTURES to 1 to cause the private IPP structures to be
* exposed in CUPS 1.6. This happens automatically on OS X when compiling for
* a deployment target of 10.7 or earlier.
*
* Define _IPP_PRIVATE_STRUCTURES to 0 to prevent the private IPP structures
* from being exposed. This is useful when migrating existing code to the new
* accessors.
*/
# if defined(_CUPS_SOURCE) || defined(_CUPS_IPP_PRIVATE_H_)
# ifdef _IPP_PRIVATE_STRUCTURES
/* Somebody has overridden the value */
# elif defined(_CUPS_SOURCE) || defined(_CUPS_IPP_PRIVATE_H_)
/* Building CUPS */
# define _IPP_PRIVATE_STRUCTURES 1
# elif defined(__APPLE__)
@@ -395,9 +687,11 @@ typedef int (*ipp_copycb_t)(void *context, ipp_t *dst, ipp_attribute_t *attr);
/* Building for 10.7 and earlier */
# define _IPP_PRIVATE_STRUCTURES 1
# endif /* MAC_OS_X_VERSION_10_8 && MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_8 */
# else
# define _IPP_PRIVATE_STRUCTURES 0
# endif /* _CUPS_SOURCE || _CUPS_IPP_PRIVATE_H_ */
# ifdef _IPP_PRIVATE_STRUCTURES
# if _IPP_PRIVATE_STRUCTURES
typedef union _ipp_request_u /**** Request Header ****/
{
struct /* Any Header */
@@ -656,6 +950,37 @@ extern int ippSetValueTag(ipp_t *ipp, ipp_attribute_t **attr,
extern int ippSetVersion(ipp_t *ipp, int major, int minor)
_CUPS_API_1_6;
/**** New in CUPS 1.7 ****/
extern ipp_attribute_t *ippAddStringf(ipp_t *ipp, ipp_tag_t group,
ipp_tag_t value_tag, const char *name,
const char *language, const char *format,
...) _CUPS_API_1_7;
extern ipp_attribute_t *ippAddStringfv(ipp_t *ipp, ipp_tag_t group,
ipp_tag_t value_tag, const char *name,
const char *language,
const char *format, va_list ap)
_CUPS_API_1_7;
extern int ippContainsInteger(ipp_attribute_t *attr, int value)
_CUPS_API_1_7;
extern int ippContainsString(ipp_attribute_t *attr,
const char *value) _CUPS_API_1_7;
extern cups_array_t *ippCreateRequestedArray(ipp_t *request) _CUPS_API_1_7;
extern void *ippGetOctetString(ipp_attribute_t *attr, int element,
int *datalen) _CUPS_API_1_7;
extern ipp_t *ippNewResponse(ipp_t *request) _CUPS_API_1_7;
extern int ippSetOctetString(ipp_t *ipp, ipp_attribute_t **attr,
int element, const void *data,
int datalen) _CUPS_API_1_7;
extern int ippSetStringf(ipp_t *ipp, ipp_attribute_t **attr,
int element, const char *format,
...) _CUPS_API_1_7;
extern int ippSetStringfv(ipp_t *ipp, ipp_attribute_t **attr,
int element, const char *format,
va_list ap) _CUPS_API_1_7;
extern int ippValidateAttribute(ipp_attribute_t *attr)
_CUPS_API_1_7;
extern int ippValidateAttributes(ipp_t *ipp) _CUPS_API_1_7;
/*
* C++ magic...
+2 -2
Ver Arquivo
@@ -3,7 +3,7 @@
*
* Localized printf/puts functions for CUPS.
*
* Copyright 2007-2011 by Apple Inc.
* Copyright 2007-2012 by Apple Inc.
* Copyright 2002-2007 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -304,7 +304,7 @@ _cupsSetLocale(char *argv[]) /* IO - Command-line arguments */
strlcpy(charset, ".UTF-8", sizeof(new_lc_time) - (charset - new_lc_time));
}
else
strcpy(new_lc_time, "C");
strlcpy(new_lc_time, "C", sizeof(new_lc_time));
setlocale(LC_TIME, new_lc_time);
#endif /* LC_TIME */

Alguns arquivos não foram exibidos porque demasiados arquivos foram alterados neste diff Mostrar Mais