Comparar commits

...

130 Commits

Autor SHA1 Mensagem Data
Michael R Sweet 1539283f98 Bump version to 2.3b6, changelog. 2018-06-05 14:46:51 -04:00
Michael R Sweet a6dd739c02 Make sure all incoming value tags are treated the same as freed values. 2018-06-05 14:46:50 -04:00
Michael R Sweet 929486aa64 Fix link to CUPS Programming Manual. 2018-06-05 14:46:50 -04:00
Michael R Sweet 579a5525e8 Update versions in README and INSTALL 2018-06-05 14:46:50 -04:00
Michael R Sweet f66b1d85f8 Update documentation and localization files for 2.3b5 release. 2018-06-05 14:46:50 -04:00
Michael R Sweet 2c4c9ada65 Changelog. 2018-06-05 14:46:50 -04:00
Michael R Sweet e1ac3f36d0 Fix a parsing bug in the pstops filter (Issue #5321) 2018-06-05 14:46:49 -04:00
Michael R Sweet c95282ef08 Changelog. 2018-06-05 14:46:49 -04:00
Michael R Sweet 9e838da3db Add a USB quirks rule for the HP LaserJet P1102 (Issue #5310) 2018-06-05 14:46:49 -04:00
Michael R Sweet 0d92ec1c6f Fix local privilege escalation to root and sandbox bypasses in scheduler
(rdar://37836779, rdar://37836995, rdar://37837252, rdar://37837581)
2018-06-05 14:46:49 -04:00
Michael R Sweet beb37da67b Validate notify-recipient-uri values. 2018-06-05 14:46:49 -04:00
Michael R Sweet fd32084d40 Block invalid group tags when parsing IPP messages. 2018-06-05 14:46:49 -04:00
Nils Van Zuijlen ac9e295f23 Correct typos for French_France 2018-06-05 14:46:48 -04:00
Michael R Sweet 778759a48f Add smb test URI. 2018-06-05 14:46:48 -04:00
Michael R Sweet ac79576a7f Add more URI validation for scheme. 2018-06-05 14:46:48 -04:00
Michael R Sweet 76d2c4481f Save work. 2018-05-18 17:10:36 -07:00
Michael R Sweet 1660d61202 Update xform_setup. 2018-05-18 14:46:34 -07:00
Michael R Sweet 3eb5ec664f Fix compile errors. 2018-05-18 12:53:46 -07:00
Michael R Sweet a17ce1d474 Save work. 2018-05-18 08:36:39 -07:00
Michael R Sweet 1e01455aeb Save initial work on private xform API. 2018-05-14 17:03:24 -07:00
Michael R Sweet 5c2c2ab6a3 Fix cupsJobPassword documentation. 2018-05-14 10:26:55 -07:00
Michael R Sweet 06a5a4d332 Mark cupsGetDevices as deprecated.
Update CUPS Programming Manual.

Update CUPS Admin API documentation.

Update CUPS PPD documentation.
2018-05-14 10:21:51 -07:00
Michael R Sweet 4cadd6202f Mirror validation changes from 2.2 branch. 2018-05-11 12:10:32 -07:00
Michael R Sweet 2de7c5f81c Update changelog, copyright... 2018-05-11 10:25:39 -07:00
Michael R Sweet 8127ebd190 Merge pull request #5312 from hansmi/mailtowait1
mailto: Wait for server opening message
2018-05-11 10:19:47 -07:00
Michael R Sweet e5fee178d9 Always use Negotiate or PeerCred for Kerberized printing. 2018-05-10 16:35:37 -04:00
Michael Hanselmann 077bd665bd mailto: Wait for server opening message
A subset of all mailserver configurations reject SMTP sessions where the
client sends anything before the server sent its opening message. This
is the case with Exim on Ubuntu Artful, for example:

  SMTP protocol synchronization error (input sent without waiting for
  greeting)

Not waiting for the opening message is a violation of the session
initiation described in RFC5321 (section 3.1). Update the mailto
notifier to wait for a non-error status code from the server before
proceeding to start the mail transaction.
2018-05-09 01:26:21 +02:00
Michael R Sweet dfe5f3b95c Changelog. 2018-05-01 08:38:41 -04:00
Michael R Sweet 616f3f56dd Merge pull request #5306 from speachy/master
Fix typo in example (cupsCommand -> cupsCommands)
2018-05-01 08:36:28 -04:00
Solomon Peachy f594a3db6d Fix typo in example (cupsCommand -> cupsCommands) 2018-04-30 19:09:41 -04:00
Michael R Sweet d3ab37abea Use -m everywhere for manual sharing. 2018-04-24 20:44:54 -04:00
Michael R Sweet 619d6d95eb Fix 360dpi typo (Issue #5300) 2018-04-24 20:34:10 -04:00
Michael R Sweet b95156db4c Update ErrorPolicy in cupsd.conf man page (Issue #5301) 2018-04-24 20:28:36 -04:00
Michael R Sweet ff82ce17bf Fix GNU TLS httpCertString changes. 2018-04-24 18:22:41 -04:00
Michael R Sweet af62b316e7 Extend GNU TLS certificate string. 2018-04-24 18:04:52 -04:00
Michael R Sweet 073b3929a1 Add issuer and signature algorithm to certificate string, show it in tlscheck output. 2018-04-24 17:46:58 -04:00
Michael R Sweet 17cc92f131 Add resource and system object/state values. 2018-04-24 16:17:21 -04:00
Michael R Sweet bd4b5b3ee1 Changelog. 2018-04-18 08:51:07 -04:00
Michael R Sweet c77dede2ed Merge pull request #5297 from FedericoYundt/patch-1
Allow cupsd daemon to exit on idle (restart=on-failure instead of always)
2018-04-18 08:48:46 -04:00
FedericoYundt 4e02be68c1 Allow cupsd daemon to exit on idle
When using socket activation cups daemon can safely exit on idle and be automatically started when it's needed. Using Restart=always prevent this behavior and causes cups daemon constantly restarting itself instead of exiting. Users reported[1] that Restart=on-failure was enough to fix issues[2] so Restart=always may be unnecessary and harmful.

[1] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=861470
[2] https://github.com/apple/cups/issues/5263
2018-04-18 08:40:59 +01:00
Michael R Sweet 0873f681e4 Fix policy limits using All (Issue #5296) 2018-04-17 16:54:24 -04:00
Michael R Sweet c1de912d13 Map , to p in phone numbers. 2018-04-17 14:22:16 -04:00
Michael R Sweet fbcc927ded Add support for pause and wait characters in fax numbers (rdar://39212256) 2018-04-17 12:47:00 -04:00
Michael R Sweet 4feb1fe2e5 - Added a workaround for certain web browsers that do not support multiple
authentication schemes in a single response header (Issue #5289)
2018-04-16 17:16:31 -04:00
Michael R Sweet c944b62ba8 Fix cups_auth_find for schemes without parameters. 2018-04-11 22:03:47 -04:00
Michael R Sweet 44cb0dd233 Fix a parsing bug in the new authentication code. 2018-04-11 13:10:24 -04:00
Michael R Sweet 3581e03de5 Update lpoptions man page (Issue #5286) 2018-04-10 15:43:24 -04:00
Michael R Sweet 56f0cbeb27 Merge pull request #5286 from Kohlrabi/master
Remove mentions of non-implemented -U option from lpoptions manpage (still need to update date)
2018-04-10 15:36:58 -04:00
Michael R Sweet 656c109a1c Fix another CUPS-Create-Local-Printer crash (Issue #5290) 2018-04-09 15:31:56 -04:00
Michael R Sweet 159e027902 Changelog. 2018-04-09 09:52:07 -04:00
Michael R Sweet 7271db11d2 Use cupsGetNamedDest for legacy printing APIs (Issue #5288) 2018-04-09 09:50:50 -04:00
Michael R Sweet d07cb8d5dc The ipptool program no longer checks for duplicate attributes when running in
list or CSV mode (Issue #5278)
2018-04-05 20:12:39 -04:00
Michael R Sweet 15fe2ddc7f Fix ippfind _regtype 2018-04-05 17:25:31 -04:00
Christoph Terasa df59b110ad Remove mentions of non-implemented -U option from lpoptions manpage 2018-04-03 16:30:16 +02:00
Michael R Sweet b056061b24 Add cups_en.po file (Issue #5276) 2018-03-23 16:39:17 -04:00
Michael R Sweet 86d93a7539 Update Windows DLL exports file. 2018-03-22 21:48:44 -04:00
Michael R Sweet 4b4895dfe7 Also support /ipp/print/queuename. 2018-03-22 21:47:56 -04:00
Michael R Sweet b25f3cf080 Changelog 2018-03-22 11:43:47 -04:00
Michael R Sweet 63f8dcbd47 Next release is 2.3b4 2018-03-22 09:32:09 -04:00
Michael R Sweet 6a76f435d8 Changelog 2018-03-22 09:02:38 -04:00
Michael R Sweet d0bfbc98b6 Try another fix for Avahi crash (Issue #5268) 2018-03-21 18:00:02 -04:00
Michael R Sweet 561e0647a8 Try another fix for Avahi crash (Issue #5268) 2018-03-21 17:58:01 -04:00
Michael R Sweet 0fb02fb9ce Remove support for _IPP_PRIVATE_STRUCTURES developer cheat. 2018-03-19 23:08:59 -04:00
Michael R Sweet 187b9322c8 Fully deprecate PPD API - no more _PPD_DEPRECATED cheat. 2018-03-19 22:58:49 -04:00
Michael R Sweet 5192eac3e6 Remove redundant check of srv value. 2018-03-19 19:52:48 -04:00
Michael R Sweet 34646e298e Update localizations. 2018-03-19 18:43:43 -04:00
Michael R Sweet 3f72eb0187 Changelog. 2018-03-19 18:43:05 -04:00
Michael R Sweet ada35e599c Deprecate printer drivers (Issue #5270)
Cleanup man page updates.
2018-03-19 18:41:59 -04:00
Michael R Sweet 003c1790e9 Deprecate raw print queues. 2018-03-19 18:35:22 -04:00
Michael R Sweet 73c6236f2c Fix typo 2018-03-19 18:11:25 -04:00
Michael R Sweet 8aecb2299e Changelog. 2018-03-19 13:19:44 -04:00
Michael R Sweet 658c64bf2e Include cupsJobPassword keyword in generated PPDs (Issue #5265) 2018-03-19 13:15:56 -04:00
Michael R Sweet 84047a015c Fix _cupsCondWait again. 2018-03-14 18:06:38 -04:00
Michael R Sweet 739ad3f3ea Typo changes after review (Issue #5264) 2018-03-14 15:13:47 -04:00
Michael R Sweet afd96090b5 Merge pull request #5264 from jschwender/master
some new translations completed
2018-03-13 13:26:43 -04:00
jschwender a0fccd8044 some new translations completed 2018-03-13 16:07:08 +01:00
Michael R Sweet 95f319b9dd Fix definition of IPP_DSTATE_ enums. 2018-03-12 21:57:49 -04:00
Michael R Sweet 13ceaad273 Fix implementation of _cupsCondWait with timeout. 2018-03-12 21:56:12 -04:00
Michael R Sweet 32987439c3 Use setuid for Kerberized IPP printing (Issue #5233) 2018-03-12 21:51:15 -04:00
Michael R Sweet e6062e8e9c Fix printing to some IPP Everywhere printers (Issue #5238) 2018-03-12 21:47:00 -04:00
Michael R Sweet 0dfe699052 Fix systemd integration with cupsd (Issue #5263) 2018-03-12 13:33:03 -04:00
Michael R Sweet 367068f32a Fix DEFINE-DEFAULT support in IPP data files.
Add privacy attributes to requested-attributes support.
2018-03-10 01:06:41 -05:00
Michael R Sweet 0c7f533afd Bump shared library version. 2018-03-09 18:49:33 -05:00
Michael R Sweet 0fea18126c Fix Kerberized IPP printing (Issue #5233) 2018-03-09 15:39:25 -05:00
Michael R Sweet ca75cc1354 The scheduler could crash while adding an IPP Everywhere printer (Issue #5258) 2018-03-08 11:48:12 -05:00
Michael R Sweet c6dbbca1f5 Disable SNMP supplies for all label printers (Issue #5256) 2018-03-08 11:09:27 -05:00
Michael R Sweet ea95f7fe1a Add USB quirk rule for Lexmark Optra E310 printers (Issue #5259) 2018-03-08 11:04:21 -05:00
Michael R Sweet b0bb6caa3a Fix formatting. 2018-03-07 09:01:25 -05:00
Michael R Sweet cff3f79fb2 Update documentation. 2018-03-07 08:57:44 -05:00
Michael R Sweet f1b7e5634d Move cupsHashString to 2.2.7 and add a 2.2.7 API versioning tag. 2018-03-07 08:56:05 -05:00
Michael R Sweet 516dacf7d3 Fix requested attributes lists - missing -col versions of counters and the
notify-subscription-uuid was "subscriptions-uuid".
2018-03-01 14:00:22 -05:00
Michael R Sweet a9e8acf53d Add missing cups-lpd service file (needs to be present for Xcode project to be
complete)
2018-02-28 11:42:27 -05:00
Michael R Sweet 18dfe3cbe7 Use a writability test for TMPDIR on macOS... 2018-02-27 17:03:19 -05:00
Michael R Sweet 30df0a0309 Fix compile error. 2018-02-27 16:01:13 -05:00
Michael R Sweet 818bbe7af2 cupsGetPPD* still used the old TMPDIR code.
Also fix the check to look for /Users/... since /var/folders is OK.
2018-02-27 15:32:20 -05:00
Michael R Sweet 9b440f8a5c Simplify tempfile fix for macOS. 2018-02-26 17:14:11 -05:00
Michael R Sweet 3cd7b5e053 Fix builds without PAM (Issue #5253) 2018-02-23 13:21:56 -05:00
Michael R Sweet 449f30b03d Fix list of printer attributes. 2018-02-22 18:06:11 -05:00
Michael R Sweet c2532688fb Fix "make clean" - wasn't cleaning cups-driverd.o. 2018-02-22 15:19:49 -05:00
Michael R Sweet 08e8f007f4 Bump version number on PostScript test file. 2018-02-22 15:15:59 -05:00
Michael R Sweet ead626d781 Update Windows DLL exports file. 2018-02-22 14:22:34 -05:00
Michael R Sweet 60bb47475a Update localization files. 2018-02-22 14:21:02 -05:00
Michael R Sweet ddf2ec7348 Update API documentation. 2018-02-22 14:19:21 -05:00
Michael R Sweet 706a0485c5 Fix annotation of cupsHashString API 2018-02-22 14:18:10 -05:00
Michael R Sweet c65e1c4ffd Add public cupsEncodeOption API 2018-02-22 14:16:46 -05:00
Michael R Sweet bb54b17e78 _cupsEncodeOption should return the attribute that has been encoded. 2018-02-22 14:07:21 -05:00
Michael R Sweet c64170e5f6 Fix encoding of out-of-band values in ippserver output files. 2018-02-22 13:32:50 -05:00
Michael R Sweet 0bb02bfa09 Temp files could not be created in some sandboxed applications (rdar://37789645)
cups/tempfile.c:
- Use confstr to get the user temp dir when TMPDIR isn't set or we are not
  being run from cupsd.
2018-02-22 13:14:31 -05:00
Michael R Sweet 66d471becb Fix speling mistak. 2018-02-21 15:54:51 -05:00
Michael R Sweet fe1a430545 The IPP backend did not properly detect failed PDF prints (rdar://34055474)
Look for document-format-error and document-unprintable job state reasons
strings and log either that state or the CUPS "retry" state.
2018-02-20 21:46:59 -05:00
Michael R Sweet 53f8d64f84 Update copyrights and license text on files that were missed. 2018-02-20 21:28:13 -05:00
Michael R Sweet eb61cb5bf0 Changelog. 2018-02-20 20:22:23 -05:00
Michael R Sweet a7aabde8fe Setting the timeout should also timeout the TLS negotiation
(rdar://34938533)
2018-02-20 20:18:05 -05:00
Michael R Sweet 699fe02075 Update documentation (Issue #5252) 2018-02-20 18:12:05 -05:00
Michael R Sweet 19186c8bae Changelog and dependencies updates. 2018-02-20 10:46:05 -05:00
Michael R Sweet 7d26bf7d6c Support IPP/1.1 printers with CUPS-Create-Local-Printer operation (Issue #5241) 2018-02-20 10:44:08 -05:00
Michael R Sweet d6ddd199f4 Bump version to 2.3rc1. 2018-02-20 10:03:40 -05:00
Michael R Sweet a468069a20 Use unidirectional mode for Star Micronics printers (Issue #5251) 2018-02-20 09:58:32 -05:00
Michael R Sweet ab89234de2 Fix installation of filters (Issue #5247) 2018-02-20 09:46:07 -05:00
Michael R Sweet afad2da22d Update ippfind to support -N/--literal-name.
Update man pages.
2018-02-14 17:10:06 -05:00
Michael R Sweet 191be31cf1 Update copyright/license info on test files, and remove old SVN keywords. 2018-02-14 16:34:51 -05:00
Michael R Sweet f28728ee32 Fix missing printer-config-change-[time,date-time] attributes.
Fix old IPP Everywhere test file to use newer test files.
2018-02-14 16:27:53 -05:00
Michael R Sweet c5b7774cb8 Fix handling of "EXPECT foo/bar IN-GROUP group". 2018-02-14 16:00:21 -05:00
Michael R Sweet e22f464e37 Sync up fixes from IPP sample code repo. 2018-02-13 14:37:22 -05:00
Michael R Sweet e28345e78d Fix clean target in "cups" subdirectory. 2018-02-11 21:59:31 -05:00
Michael R Sweet f17549fbb4 Fix timezone offset code. 2018-02-06 15:29:55 -05:00
Michael R Sweet 06e1afc39b Fix dateTime value parsing. 2018-02-06 15:23:26 -05:00
Michael R Sweet a166e9337a Move file callbacks to _ipp_vars_t and add attribute filter callback. 2018-02-06 14:25:37 -05:00
Michael R Sweet 7f4d7b8a51 Fix unused store - actually use the count we saved. 2018-02-06 13:36:02 -05:00
Michael R Sweet 564cd57de8 Fix compiler warning. 2018-02-06 13:32:09 -05:00
259 arquivos alterados com 11243 adições e 15171 exclusões
-1
Ver Arquivo
@@ -117,7 +117,6 @@ scheduler/cups.sh
scheduler/cups.xml
scheduler/cupsd
scheduler/cupsfilter
scheduler/org.cups.cups-lpd.plist
scheduler/org.cups.cups-lpdAT.service
scheduler/org.cups.cupsd.path
scheduler/org.cups.cupsd.service
+75 -1
Ver Arquivo
@@ -1,6 +1,80 @@
CHANGES - 2.3b3 - 2018-02-01
CHANGES - 2.3b6 - 2018-06-05
============================
Changes in CUPS v2.3b6
----------------------
- Fixed a memory leak for some IPP (extension) syntaxes.
Changes in CUPS v2.3b5
----------------------
- The `ipptool` program no longer checks for duplicate attributes when running
in list or CSV mode (Issue #5278)
- The `cupsCreateJob`, `cupsPrintFile2`, and `cupsPrintFiles2` APIs did not use
the supplied HTTP connection (Issue #5288)
- Fixed another crash in the scheduler when adding an IPP Everywhere printer
(Issue #5290)
- Added a workaround for certain web browsers that do not support multiple
authentication schemes in a single response header (Issue #5289)
- Fixed policy limits containing the `All` operation (Issue #5296)
- The scheduler was always restarted after idle-exit with systemd (Issue #5297)
- Added a USB quirks rule for the HP LaserJet P1102 (Issue #5310)
- The mailto notifier did not wait for the welcome message (Issue #5312)
- Fixed a parsing bug in the pstops filter (Issue #5321)
- Documentation updates (Issue #5299, Issue #5301, Issue #5306)
- Localization updates (Issue #5317)
- The scheduler allowed environment variables to be specified in the
`cupsd.conf` file (rdar://37836779, rdar://37836995, rdar://37837252,
rdar://37837581)
- Fax queues did not support pause (p) or wait-for-dialtone (w) characters
(rdar://39212256)
- The scheduler did not validate notify-recipient-uri values properly
(rdar://40068936)
- The IPP parser allowed invalid group tags (rdar://40442124)
- Fixed a parsing bug in the new authentication code.
Changes in CUPS v2.3b4
----------------------
- NOTICE: Printer drivers are now deprecated (Issue #5270)
- Kerberized printing to another CUPS server did not work correctly
(Issue #5233)
- Fixed printing to some IPP Everywhere printers (Issue #5238)
- Fixed installation of filters (Issue #5247)
- The scheduler now supports using temporary print queues for older IPP/1.1
print queues like those shared by CUPS 1.3 and earlier (Issue #5241)
- Star Micronics printers need the "unidir" USB quirk rule (Issue #5251)
- Documentation fixes (Issue #5252)
- Fixed a compile issue when PAM is not available (Issue #5253)
- Label printers supported by the rastertolabel driver don't support SNMP, so
don't delay printing to test it (Issue #5256)
- The scheduler could crash while adding an IPP Everywhere printer (Issue #5258)
- The Lexmark Optra E310 printer needs the "no-reattach" USB quirk rule
(Issue #5259)
- Systemd did not restart cupsd when configuration changes were made that
required a restart (Issue #5263)
- The IPP Everywhere PPD generator did not include the `cupsJobPassword`
keyword, when supported (Issue #5265)
- Fixed an Avahi crash bug in the scheduler (Issue #5268)
- Raw print queues are now deprecated (Issue #5269)
- Fixed an RPM packaging problem (Issue #5276)
- The IPP backend did not properly detect failed PDF prints (rdar://34055474)
- TLS connections now properly timeout (rdar://34938533)
- Temp files could not be created in some sandboxed applications
(rdar://37789645)
- The ipptool `--ippserver` option did not encode out-of-band attributes
correctly.
- Added public `cupsEncodeOption` API for encoding a single option as an IPP
attribute.
- Removed support for the `-D_PPD_DEPRECATED=""` developer cheat - the PPD API
should no longer be used.
- Removed support for `-D_IPP_PRIVATE_STRUCTURES=1` developer cheat - the IPP
accessor functions should be used instead.
Changes in CUPS v2.3b3
----------------------
+1 -1
Ver Arquivo
@@ -1,4 +1,4 @@
INSTALL - CUPS v2.3b3 - 2018-02-01
INSTALL - CUPS v2.3b5 - 2018-06-05
==================================
This file describes how to compile and install CUPS from source code. For more
+1 -1
Ver Arquivo
@@ -1,4 +1,4 @@
README - CUPS v2.3b3 - 2018-02-01
README - CUPS v2.3b5 - 2018-06-05
=================================
Looking for compile instructions? Read the file `INSTALL.md` instead...
+45 -46
Ver Arquivo
@@ -1,53 +1,53 @@
ipp.o: ipp.c backend-private.h ../cups/cups-private.h \
../cups/string-private.h ../config.h ../cups/debug-private.h \
../cups/versioning.h ../cups/array-private.h ../cups/array.h \
../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
../cups/http-private.h ../cups/language.h ../cups/language-private.h \
../cups/transcode.h ../cups/pwg-private.h ../cups/cups.h \
../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
../cups/snmp-private.h ../cups/backend.h ../cups/sidechannel.h \
../cups/ppd-private.h ../cups/ppd.h ../cups/raster.h
../cups/ipp-private.h ../cups/cups.h ../cups/file.h ../cups/ipp.h \
../cups/http.h ../cups/language.h ../cups/pwg.h ../cups/http-private.h \
../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
../cups/thread-private.h ../cups/snmp-private.h ../cups/backend.h \
../cups/sidechannel.h ../cups/ppd-private.h ../cups/ppd.h \
../cups/raster.h
lpd.o: lpd.c ../cups/http-private.h ../config.h ../cups/language.h \
../cups/array.h ../cups/versioning.h ../cups/http.h \
../cups/ipp-private.h ../cups/ipp.h backend-private.h \
../cups/cups-private.h ../cups/string-private.h \
../cups/debug-private.h ../cups/array-private.h \
../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
../cups/snmp-private.h ../cups/backend.h ../cups/sidechannel.h
../cups/ipp-private.h ../cups/cups.h ../cups/file.h ../cups/ipp.h \
../cups/pwg.h backend-private.h ../cups/cups-private.h \
../cups/string-private.h ../cups/debug-private.h \
../cups/array-private.h ../cups/language-private.h ../cups/transcode.h \
../cups/pwg-private.h ../cups/thread-private.h ../cups/snmp-private.h \
../cups/backend.h ../cups/sidechannel.h
dnssd.o: dnssd.c backend-private.h ../cups/cups-private.h \
../cups/string-private.h ../config.h ../cups/debug-private.h \
../cups/versioning.h ../cups/array-private.h ../cups/array.h \
../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
../cups/http-private.h ../cups/language.h ../cups/language-private.h \
../cups/transcode.h ../cups/pwg-private.h ../cups/cups.h \
../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
../cups/snmp-private.h ../cups/backend.h ../cups/sidechannel.h
../cups/ipp-private.h ../cups/cups.h ../cups/file.h ../cups/ipp.h \
../cups/http.h ../cups/language.h ../cups/pwg.h ../cups/http-private.h \
../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
../cups/thread-private.h ../cups/snmp-private.h ../cups/backend.h \
../cups/sidechannel.h
snmp.o: snmp.c backend-private.h ../cups/cups-private.h \
../cups/string-private.h ../config.h ../cups/debug-private.h \
../cups/versioning.h ../cups/array-private.h ../cups/array.h \
../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
../cups/http-private.h ../cups/language.h ../cups/language-private.h \
../cups/transcode.h ../cups/pwg-private.h ../cups/cups.h \
../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
../cups/snmp-private.h ../cups/backend.h ../cups/sidechannel.h
../cups/ipp-private.h ../cups/cups.h ../cups/file.h ../cups/ipp.h \
../cups/http.h ../cups/language.h ../cups/pwg.h ../cups/http-private.h \
../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
../cups/thread-private.h ../cups/snmp-private.h ../cups/backend.h \
../cups/sidechannel.h
socket.o: socket.c ../cups/http-private.h ../config.h ../cups/language.h \
../cups/array.h ../cups/versioning.h ../cups/http.h \
../cups/ipp-private.h ../cups/ipp.h backend-private.h \
../cups/cups-private.h ../cups/string-private.h \
../cups/debug-private.h ../cups/array-private.h \
../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
../cups/snmp-private.h ../cups/backend.h ../cups/sidechannel.h
../cups/ipp-private.h ../cups/cups.h ../cups/file.h ../cups/ipp.h \
../cups/pwg.h backend-private.h ../cups/cups-private.h \
../cups/string-private.h ../cups/debug-private.h \
../cups/array-private.h ../cups/language-private.h ../cups/transcode.h \
../cups/pwg-private.h ../cups/thread-private.h ../cups/snmp-private.h \
../cups/backend.h ../cups/sidechannel.h
test1284.o: test1284.c ../cups/string-private.h ../config.h ieee1284.c \
backend-private.h ../cups/cups-private.h ../cups/debug-private.h \
../cups/versioning.h ../cups/array-private.h ../cups/array.h \
../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
../cups/http-private.h ../cups/language.h ../cups/language-private.h \
../cups/transcode.h ../cups/pwg-private.h ../cups/cups.h \
../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
../cups/snmp-private.h ../cups/backend.h ../cups/sidechannel.h \
../cups/ppd-private.h ../cups/ppd.h ../cups/raster.h
../cups/ipp-private.h ../cups/cups.h ../cups/file.h ../cups/ipp.h \
../cups/http.h ../cups/language.h ../cups/pwg.h ../cups/http-private.h \
../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
../cups/thread-private.h ../cups/snmp-private.h ../cups/backend.h \
../cups/sidechannel.h ../cups/ppd-private.h ../cups/ppd.h \
../cups/raster.h
testbackend.o: testbackend.c ../cups/string-private.h ../config.h \
../cups/cups.h ../cups/file.h ../cups/versioning.h ../cups/ipp.h \
../cups/http.h ../cups/array.h ../cups/language.h ../cups/pwg.h \
@@ -55,18 +55,17 @@ testbackend.o: testbackend.c ../cups/string-private.h ../config.h \
testsupplies.o: testsupplies.c backend-private.h ../cups/cups-private.h \
../cups/string-private.h ../config.h ../cups/debug-private.h \
../cups/versioning.h ../cups/array-private.h ../cups/array.h \
../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
../cups/http-private.h ../cups/language.h ../cups/language-private.h \
../cups/transcode.h ../cups/pwg-private.h ../cups/cups.h \
../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
../cups/snmp-private.h ../cups/backend.h ../cups/sidechannel.h
../cups/ipp-private.h ../cups/cups.h ../cups/file.h ../cups/ipp.h \
../cups/http.h ../cups/language.h ../cups/pwg.h ../cups/http-private.h \
../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
../cups/thread-private.h ../cups/snmp-private.h ../cups/backend.h \
../cups/sidechannel.h
usb.o: usb.c backend-private.h ../cups/cups-private.h \
../cups/string-private.h ../config.h ../cups/debug-private.h \
../cups/versioning.h ../cups/array-private.h ../cups/array.h \
../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
../cups/http-private.h ../cups/language.h ../cups/language-private.h \
../cups/transcode.h ../cups/pwg-private.h ../cups/cups.h \
../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
../cups/snmp-private.h ../cups/backend.h ../cups/sidechannel.h \
usb-darwin.c ../cups/file-private.h ../cups/ppd-private.h \
../cups/ppd.h ../cups/raster.h
../cups/ipp-private.h ../cups/cups.h ../cups/file.h ../cups/ipp.h \
../cups/http.h ../cups/language.h ../cups/pwg.h ../cups/http-private.h \
../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
../cups/thread-private.h ../cups/snmp-private.h ../cups/backend.h \
../cups/sidechannel.h usb-darwin.c ../cups/file-private.h \
../cups/ppd-private.h ../cups/ppd.h ../cups/raster.h
+4 -7
Ver Arquivo
@@ -1,14 +1,11 @@
/*
* Backend support definitions for CUPS.
*
* Copyright 2007-2014 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
* Copyright © 2007-2014 by Apple Inc.
* Copyright © 1997-2007 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
* "LICENSE" which should have been included with this file. If this
* file is missing or damaged, see the license at "http://www.cups.org/".
* Licensed under Apache License v2.0. See the file "LICENSE" for more
* information.
*/
#ifndef _CUPS_BACKEND_PRIVATE_H_
+3 -6
Ver Arquivo
@@ -1,13 +1,10 @@
/*
* DNS-SD discovery backend for CUPS.
*
* Copyright 2008-2017 by Apple Inc.
* Copyright © 2008-2017 by Apple Inc.
*
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
* "LICENSE" which should have been included with this file. If this
* file is missing or damaged, see the license at "http://www.cups.org/".
* Licensed under Apache License v2.0. See the file "LICENSE" for more
* information.
*/
/*
+4 -7
Ver Arquivo
@@ -1,14 +1,11 @@
/*
* IEEE-1284 support functions for CUPS.
*
* Copyright 2007-2015 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
* Copyright © 2007-2015 by Apple Inc.
* Copyright © 1997-2007 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
* "LICENSE" which should have been included with this file. If this
* file is missing or damaged, see the license at "http://www.cups.org/".
* Licensed under Apache License v2.0. See the file "LICENSE" for more
* information.
*/
/*
+42 -18
Ver Arquivo
@@ -1,14 +1,11 @@
/*
* IPP backend for CUPS.
*
* Copyright 2007-2017 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
* Copyright © 2007-2018 by Apple Inc.
* Copyright © 1997-2007 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
* "LICENSE" which should have been included with this file. If this
* file is missing or damaged, see the license at "http://www.cups.org/".
* Licensed under Apache License v2.0. See the file "LICENSE" for more
* information.
*/
/*
@@ -45,6 +42,8 @@ extern void xpc_connection_set_target_uid(xpc_connection_t connection,
#define _CUPS_JSR_ACCOUNT_LIMIT_REACHED 0x08
#define _CUPS_JSR_JOB_PASSWORD_WAIT 0x10
#define _CUPS_JSR_JOB_RELEASE_WAIT 0x20
#define _CUPS_JSR_DOCUMENT_FORMAT_ERROR 0x40
#define _CUPS_JSR_DOCUMENT_UNPRINTABLE 0x80
/*
@@ -67,6 +66,7 @@ typedef struct _cups_monitor_s /**** Monitoring data ****/
http_encryption_t encryption; /* Use encryption? */
ipp_jstate_t job_state; /* Current job state */
ipp_pstate_t printer_state; /* Current printer state */
int retryable; /* Is this a job that should be retried? */
} _cups_monitor_t;
@@ -355,8 +355,7 @@ main(int argc, /* I - Number of command-line args */
* that way.
*/
if (!getuid() && (value = getenv("AUTH_UID")) != NULL &&
!getenv("AUTH_PASSWORD"))
if (!getuid() && (value = getenv("AUTH_UID")) != NULL)
{
uid_t uid = (uid_t)atoi(value);
/* User ID */
@@ -390,7 +389,7 @@ main(int argc, /* I - Number of command-line args */
# else /* No XPC, just try to run as the user ID */
if (uid > 0)
seteuid(uid);
setuid(uid);
# endif /* HAVE_XPC */
}
#endif /* HAVE_GSSAPI */
@@ -1446,6 +1445,7 @@ main(int argc, /* I - Number of command-line args */
monitor.encryption = cupsEncryption();
monitor.job_state = IPP_JOB_PENDING;
monitor.printer_state = IPP_PRINTER_IDLE;
monitor.retryable = argc == 6 && document_format && strcmp(document_format, "image/pwg-raster") && strcmp(document_format, "image/urf");
if (create_job)
{
@@ -2566,22 +2566,24 @@ monitor_printer(
for (i = 0; i < attr->num_values; i ++)
{
if (!strcmp(attr->values[i].string.text,
"account-authorization-failed"))
if (!strcmp(attr->values[i].string.text, "account-authorization-failed"))
new_reasons |= _CUPS_JSR_ACCOUNT_AUTHORIZATION_FAILED;
else if (!strcmp(attr->values[i].string.text, "account-closed"))
new_reasons |= _CUPS_JSR_ACCOUNT_CLOSED;
else if (!strcmp(attr->values[i].string.text, "account-info-needed"))
new_reasons |= _CUPS_JSR_ACCOUNT_INFO_NEEDED;
else if (!strcmp(attr->values[i].string.text,
"account-limit-reached"))
else if (!strcmp(attr->values[i].string.text, "account-limit-reached"))
new_reasons |= _CUPS_JSR_ACCOUNT_LIMIT_REACHED;
else if (!strcmp(attr->values[i].string.text, "job-password-wait"))
new_reasons |= _CUPS_JSR_JOB_PASSWORD_WAIT;
else if (!strcmp(attr->values[i].string.text, "job-release-wait"))
new_reasons |= _CUPS_JSR_JOB_RELEASE_WAIT;
if (!job_canceled &&
(!strncmp(attr->values[i].string.text, "job-canceled-", 13) || !strcmp(attr->values[i].string.text, "aborted-by-system")))
else if (!strcmp(attr->values[i].string.text, "document-format-error"))
new_reasons |= _CUPS_JSR_DOCUMENT_FORMAT_ERROR;
else if (!strcmp(attr->values[i].string.text, "document-unprintable"))
new_reasons |= _CUPS_JSR_DOCUMENT_UNPRINTABLE;
if (!job_canceled && (!strncmp(attr->values[i].string.text, "job-canceled-", 13) || !strcmp(attr->values[i].string.text, "aborted-by-system")))
job_canceled = 1;
}
@@ -2599,6 +2601,26 @@ monitor_printer(
fputs("JOBSTATE: job-password-wait\n", stderr);
else if (new_reasons & _CUPS_JSR_JOB_RELEASE_WAIT)
fputs("JOBSTATE: job-release-wait\n", stderr);
else if (new_reasons & (_CUPS_JSR_DOCUMENT_FORMAT_ERROR | _CUPS_JSR_DOCUMENT_UNPRINTABLE))
{
if (monitor->retryable)
{
/*
* Can't print this, so retry as raster...
*/
job_canceled = 1;
fputs("JOBSTATE: cups-retry-as-raster\n", stderr);
}
else if (new_reasons & _CUPS_JSR_DOCUMENT_FORMAT_ERROR)
{
fputs("JOBSTATE: document-format-error\n", stderr);
}
else
{
fputs("JOBSTATE: document-unprintable\n", stderr);
}
}
else
fputs("JOBSTATE: job-printing\n", stderr);
@@ -2758,7 +2780,7 @@ new_request(
char phone[1024], /* Phone number string */
*ptr, /* Pointer into string */
tel_uri[1024]; /* tel: URI */
static const char * const allowed = "0123456789#*-+.()";
static const char * const allowed = "0123456789#*-+.()pw";
/* Allowed characters */
destination = ippNew();
@@ -2771,7 +2793,9 @@ new_request(
_httpDecodeURI(phone, keyword, sizeof(phone));
for (ptr = phone; *ptr;)
{
if (!strchr(allowed, *ptr))
if (*ptr == ',')
*ptr = 'p';
else if (!strchr(allowed, *ptr))
_cups_strcpy(ptr, ptr + 1);
else
ptr ++;
+4 -7
Ver Arquivo
@@ -1,14 +1,11 @@
/*
* Line Printer Daemon backend for CUPS.
*
* Copyright 2007-2016 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
* Copyright © 2007-2016 by Apple Inc.
* Copyright © 1997-2007 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
* "LICENSE" which should have been included with this file. If this
* file is missing or damaged, see the license at "http://www.cups.org/".
* Licensed under Apache License v2.0. See the file "LICENSE" for more
* information.
*/
/*
+4 -7
Ver Arquivo
@@ -1,14 +1,11 @@
/*
* Common backend network APIs for CUPS.
*
* Copyright 2007-2016 by Apple Inc.
* Copyright 2006-2007 by Easy Software Products, all rights reserved.
* Copyright © 2007-2016 by Apple Inc.
* Copyright © 2006-2007 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
* "LICENSE" which should have been included with this file. If this
* file is missing or damaged, see the license at "http://www.cups.org/".
* Licensed under Apache License v2.0. See the file "LICENSE" for more
* information.
*/
/*
+17 -1
Ver Arquivo
@@ -8,10 +8,17 @@
# delay-close Delay close/reset of selected interface
# 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
# unidir Only supports 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.
#
# To get the USB vendor and product IDs for a given printer, run the "lsusb"
# command, which will show something like the following:
#
# Bus 002 Device 003: ID ab21:34dc Acme Example Printer
#
# The "ab21:34dc" is the vendor and product ID, separated by a colon.
# HP DeskJet 895C
0x03f0 0x0004 unidir
@@ -268,3 +275,12 @@
# Canon, Inc. MP280 series (Issue #5221)
0x04a9 0x1746 unidir
# Star Micronics printers (Issue #5251)
0x0519 unidir
# Lexmark Optra E310 (Issue #5259)
0x043d 0x000c no-reattach
# HP LaserJet P1102 (Issue #5310)
0x03F0 0x002A no-reattach
+4 -7
Ver Arquivo
@@ -1,14 +1,11 @@
/*
* Common run loop APIs for CUPS backends.
*
* Copyright 2007-2014 by Apple Inc.
* Copyright 2006-2007 by Easy Software Products, all rights reserved.
* Copyright © 2007-2014 by Apple Inc.
* Copyright © 2006-2007 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
* "LICENSE" which should have been included with this file. If this
* file is missing or damaged, see the license at "http://www.cups.org/".
* Licensed under Apache License v2.0. See the file "LICENSE" for more
* information.
*/
/*
+3 -6
Ver Arquivo
@@ -1,13 +1,10 @@
/*
* SNMP supplies functions for CUPS.
*
* Copyright 2008-2015 by Apple Inc.
* Copyright © 2008-2015 by Apple Inc.
*
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
* "LICENSE" which should have been included with this file. If this
* file is missing or damaged, see the license at "http://www.cups.org/".
* Licensed under Apache License v2.0. See the file "LICENSE" for more
* information.
*/
/*
+4 -7
Ver Arquivo
@@ -1,14 +1,11 @@
/*
* SNMP discovery backend for CUPS.
*
* Copyright 2007-2014 by Apple Inc.
* Copyright 2006-2007 by Easy Software Products, all rights reserved.
* Copyright © 2007-2014 by Apple Inc.
* Copyright © 2006-2007 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
* "LICENSE" which should have been included with this file. If this
* file is missing or damaged, see the license at "http://www.cups.org/".
* Licensed under Apache License v2.0. See the file "LICENSE" for more
* information.
*/
/*
+4 -7
Ver Arquivo
@@ -1,14 +1,11 @@
/*
* AppSocket backend for CUPS.
*
* Copyright 2007-2016 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
* Copyright © 2007-2016 by Apple Inc.
* Copyright © 1997-2007 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
* "LICENSE" which should have been included with this file. If this
* file is missing or damaged, see the license at "http://www.cups.org/".
* Licensed under Apache License v2.0. See the file "LICENSE" for more
* information.
*/
/*
+4 -7
Ver Arquivo
@@ -1,14 +1,11 @@
/*
* IEEE-1284 support functions test program for CUPS.
*
* Copyright 2007-2010 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products, all rights reserved.
* Copyright © 2007-2010 by Apple Inc.
* Copyright © 1997-2006 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
* "LICENSE" which should have been included with this file. If this
* file is missing or damaged, see the license at "http://www.cups.org/".
* Licensed under Apache License v2.0. See the file "LICENSE" for more
* information.
*/
/*
+4 -7
Ver Arquivo
@@ -1,14 +1,11 @@
/*
* Backend test program for CUPS.
*
* Copyright 2007-2014 by Apple Inc.
* Copyright 1997-2005 by Easy Software Products, all rights reserved.
* Copyright © 2007-2014 by Apple Inc.
* Copyright © 1997-2005 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
* "LICENSE" which should have been included with this file. If this
* file is missing or damaged, see the license at "http://www.cups.org/".
* Licensed under Apache License v2.0. See the file "LICENSE" for more
* information.
*/
/*
+3 -6
Ver Arquivo
@@ -1,13 +1,10 @@
/*
* SNMP supplies test program for CUPS.
*
* Copyright 2008-2011 by Apple Inc.
* Copyright © 2008-2011 by Apple Inc.
*
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
* "LICENSE" which should have been included with this file. If this
* file is missing or damaged, see the license at "http://www.cups.org/".
* Licensed under Apache License v2.0. See the file "LICENSE" for more
* information.
*/
/*
+4 -7
Ver Arquivo
@@ -3,14 +3,11 @@
*
* This file is included from "usb.c" when compiled on UNIX/Linux.
*
* Copyright 2007-2013 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
* Copyright © 2007-2013 by Apple Inc.
* Copyright © 1997-2007 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
* "LICENSE" which should have been included with this file. If this
* file is missing or damaged, see the license at "http://www.cups.org/".
* Licensed under Apache License v2.0. See the file "LICENSE" for more
* information.
*/
/*
+4 -7
Ver Arquivo
@@ -1,14 +1,11 @@
/*
* USB printer backend for CUPS.
*
* Copyright 2007-2012 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
* Copyright © 2007-2012 by Apple Inc.
* Copyright © 1997-2007 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
* "LICENSE" which should have been included with this file. If this
* file is missing or damaged, see the license at "http://www.cups.org/".
* Licensed under Apache License v2.0. See the file "LICENSE" for more
* information.
*/
/*
+15 -14
Ver Arquivo
@@ -1,24 +1,25 @@
lpc.o: lpc.c ../cups/cups-private.h ../cups/string-private.h ../config.h \
../cups/debug-private.h ../cups/versioning.h ../cups/array-private.h \
../cups/array.h ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
../cups/http-private.h ../cups/language.h ../cups/language-private.h \
../cups/transcode.h ../cups/pwg-private.h ../cups/cups.h \
../cups/file.h ../cups/pwg.h ../cups/thread-private.h
../cups/array.h ../cups/ipp-private.h ../cups/cups.h ../cups/file.h \
../cups/ipp.h ../cups/http.h ../cups/language.h ../cups/pwg.h \
../cups/http-private.h ../cups/language-private.h ../cups/transcode.h \
../cups/pwg-private.h ../cups/thread-private.h
lpq.o: lpq.c ../cups/cups-private.h ../cups/string-private.h ../config.h \
../cups/debug-private.h ../cups/versioning.h ../cups/array-private.h \
../cups/array.h ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
../cups/http-private.h ../cups/language.h ../cups/language-private.h \
../cups/transcode.h ../cups/pwg-private.h ../cups/cups.h \
../cups/file.h ../cups/pwg.h ../cups/thread-private.h
../cups/array.h ../cups/ipp-private.h ../cups/cups.h ../cups/file.h \
../cups/ipp.h ../cups/http.h ../cups/language.h ../cups/pwg.h \
../cups/http-private.h ../cups/language-private.h ../cups/transcode.h \
../cups/pwg-private.h ../cups/thread-private.h
lpr.o: lpr.c ../cups/cups-private.h ../cups/string-private.h ../config.h \
../cups/debug-private.h ../cups/versioning.h ../cups/array-private.h \
../cups/array.h ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
../cups/http-private.h ../cups/language.h ../cups/language-private.h \
../cups/transcode.h ../cups/pwg-private.h ../cups/cups.h \
../cups/file.h ../cups/pwg.h ../cups/thread-private.h
../cups/array.h ../cups/ipp-private.h ../cups/cups.h ../cups/file.h \
../cups/ipp.h ../cups/http.h ../cups/language.h ../cups/pwg.h \
../cups/http-private.h ../cups/language-private.h ../cups/transcode.h \
../cups/pwg-private.h ../cups/thread-private.h
lprm.o: lprm.c ../cups/cups-private.h ../cups/string-private.h \
../config.h ../cups/debug-private.h ../cups/versioning.h \
../cups/array-private.h ../cups/array.h ../cups/ipp-private.h \
../cups/ipp.h ../cups/http.h ../cups/http-private.h ../cups/language.h \
../cups/cups.h ../cups/file.h ../cups/ipp.h ../cups/http.h \
../cups/language.h ../cups/pwg.h ../cups/http-private.h \
../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h
../cups/thread-private.h
+4 -7
Ver Arquivo
@@ -5,14 +5,11 @@
#
# Base MIME conversions file for CUPS.
#
# Copyright 2007-2016 by Apple Inc.
# Copyright 1997-2007 by Easy Software Products.
# Copyright © 2007-2016 by Apple Inc.
# Copyright © 1997-2007 by Easy Software Products.
#
# These coded instructions, statements, and computer programs are the
# property of Apple Inc. and are protected by Federal copyright
# law. Distribution and use rights are outlined in the file "LICENSE.txt"
# which should have been included with this file. If this file is
# file is missing or damaged, see the license at "http://www.cups.org/".
# Licensed under Apache License v2.0. See the file "LICENSE" for more
# information.
#
########################################################################
+4 -7
Ver Arquivo
@@ -5,14 +5,11 @@
# VERSIONS OF CUPS. Instead, create a "local.types" file that
# reflects your local configuration changes.
#
# Copyright 2007-2017 by Apple Inc.
# Copyright 1997-2007 by Easy Software Products.
# Copyright © 2007-2017 by Apple Inc.
# Copyright © 1997-2007 by Easy Software Products.
#
# These coded instructions, statements, and computer programs are the
# property of Apple Inc. and are protected by Federal copyright
# law. Distribution and use rights are outlined in the file "LICENSE.txt"
# which should have been included with this file. If this file is
# file is missing or damaged, see the license at "http://www.cups.org/".
# Licensed under Apache License v2.0. See the file "LICENSE" for more
# information.
#
########################################################################
externo
+10 -10
Ver Arquivo
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.68 for CUPS 2.3b3.
# Generated by GNU Autoconf 2.68 for CUPS 2.3b6.
#
# Report bugs to <https://github.com/apple/cups/issues>.
#
@@ -560,8 +560,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='CUPS'
PACKAGE_TARNAME='cups'
PACKAGE_VERSION='2.3b3'
PACKAGE_STRING='CUPS 2.3b3'
PACKAGE_VERSION='2.3b6'
PACKAGE_STRING='CUPS 2.3b6'
PACKAGE_BUGREPORT='https://github.com/apple/cups/issues'
PACKAGE_URL='https://www.cups.org/'
@@ -1455,7 +1455,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
\`configure' configures CUPS 2.3b3 to adapt to many kinds of systems.
\`configure' configures CUPS 2.3b6 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1520,7 +1520,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
short | recursive ) echo "Configuration of CUPS 2.3b3:";;
short | recursive ) echo "Configuration of CUPS 2.3b6:";;
esac
cat <<\_ACEOF
@@ -1697,7 +1697,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
CUPS configure 2.3b3
CUPS configure 2.3b6
generated by GNU Autoconf 2.68
Copyright (C) 2010 Free Software Foundation, Inc.
@@ -2161,7 +2161,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by CUPS $as_me 2.3b3, which was
It was created by CUPS $as_me 2.3b6, which was
generated by GNU Autoconf 2.68. Invocation command line was
$ $0 $@
@@ -2636,7 +2636,7 @@ fi
ac_config_headers="$ac_config_headers config.h"
CUPS_VERSION="2.3b3"
CUPS_VERSION="2.3b6"
CUPS_REVISION=""
CUPS_BUILD="cups-$CUPS_VERSION"
@@ -10586,7 +10586,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
This file was extended by CUPS $as_me 2.3b3, which was
This file was extended by CUPS $as_me 2.3b6, which was
generated by GNU Autoconf 2.68. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -10649,7 +10649,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
CUPS config.status 2.3b3
CUPS config.status 2.3b6
configured by $0, generated by GNU Autoconf 2.68,
with options \\"\$ac_cs_config\\"
+1 -1
Ver Arquivo
@@ -12,7 +12,7 @@ dnl We need at least autoconf 2.60...
AC_PREREQ(2.60)
dnl Package name and version...
AC_INIT([CUPS], [2.3b3], [https://github.com/apple/cups/issues], [cups], [https://www.cups.org/])
AC_INIT([CUPS], [2.3b6], [https://github.com/apple/cups/issues], [cups], [https://www.cups.org/])
sinclude(config-scripts/cups-opsys.m4)
sinclude(config-scripts/cups-common.m4)
+5 -8
Ver Arquivo
@@ -2,18 +2,15 @@
#
# CUPS configuration utility.
#
# Copyright 2007-2016 by Apple Inc.
# Copyright 2001-2006 by Easy Software Products, all rights reserved.
# Copyright © 2007-2018 by Apple Inc.
# Copyright © 2001-2006 by Easy Software Products, all rights reserved.
#
# These coded instructions, statements, and computer programs are the
# property of Apple Inc. and are protected by Federal copyright
# law. Distribution and use rights are outlined in the file "LICENSE.txt"
# which should have been included with this file. If this file is
# file is missing or damaged, see the license at "http://www.cups.org/".
# Licensed under Apache License v2.0. See the file "LICENSE" for more
# information.
#
VERSION="@CUPS_VERSION@"
APIVERSION="2.2"
APIVERSION="2.3"
BUILD="@CUPS_BUILD@"
prefix=@prefix@
+165 -159
Ver Arquivo
@@ -1,242 +1,245 @@
adminutil.o: adminutil.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
language-private.h ../cups/transcode.h pwg-private.h ../cups/cups.h \
file.h pwg.h thread-private.h ppd.h raster.h adminutil.h
ipp-private.h ../cups/cups.h file.h ipp.h http.h language.h pwg.h \
http-private.h language-private.h ../cups/transcode.h pwg-private.h \
thread-private.h ppd.h raster.h adminutil.h
array.o: array.c ../cups/cups.h file.h versioning.h ipp.h http.h array.h \
language.h pwg.h string-private.h ../config.h debug-private.h \
array-private.h
auth.o: auth.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
language-private.h ../cups/transcode.h pwg-private.h ../cups/cups.h \
file.h pwg.h thread-private.h
ipp-private.h ../cups/cups.h file.h ipp.h http.h language.h pwg.h \
http-private.h language-private.h ../cups/transcode.h pwg-private.h \
thread-private.h
backchannel.o: backchannel.c cups.h file.h versioning.h ipp.h http.h \
array.h language.h pwg.h
backend.o: backend.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
language-private.h ../cups/transcode.h pwg-private.h ../cups/cups.h \
file.h pwg.h thread-private.h backend.h ppd.h raster.h
ipp-private.h ../cups/cups.h file.h ipp.h http.h language.h pwg.h \
http-private.h language-private.h ../cups/transcode.h pwg-private.h \
thread-private.h backend.h ppd.h raster.h
debug.o: debug.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
language-private.h ../cups/transcode.h pwg-private.h ../cups/cups.h \
file.h pwg.h thread-private.h
ipp-private.h ../cups/cups.h file.h ipp.h http.h language.h pwg.h \
http-private.h language-private.h ../cups/transcode.h pwg-private.h \
thread-private.h
dest.o: dest.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
language-private.h ../cups/transcode.h pwg-private.h ../cups/cups.h \
file.h pwg.h thread-private.h
ipp-private.h ../cups/cups.h file.h ipp.h http.h language.h pwg.h \
http-private.h language-private.h ../cups/transcode.h pwg-private.h \
thread-private.h
dest-job.o: dest-job.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
language-private.h ../cups/transcode.h pwg-private.h ../cups/cups.h \
file.h pwg.h thread-private.h
ipp-private.h ../cups/cups.h file.h ipp.h http.h language.h pwg.h \
http-private.h language-private.h ../cups/transcode.h pwg-private.h \
thread-private.h
dest-localization.o: dest-localization.c cups-private.h string-private.h \
../config.h debug-private.h ../cups/versioning.h array-private.h \
../cups/array.h ipp-private.h ../cups/ipp.h http.h http-private.h \
../cups/language.h language-private.h ../cups/transcode.h \
pwg-private.h ../cups/cups.h file.h pwg.h thread-private.h
../cups/array.h ipp-private.h ../cups/cups.h file.h ipp.h http.h \
language.h pwg.h http-private.h language-private.h ../cups/transcode.h \
pwg-private.h thread-private.h
dest-options.o: dest-options.c cups-private.h string-private.h \
../config.h debug-private.h ../cups/versioning.h array-private.h \
../cups/array.h ipp-private.h ../cups/ipp.h http.h http-private.h \
../cups/language.h language-private.h ../cups/transcode.h \
pwg-private.h ../cups/cups.h file.h pwg.h thread-private.h
../cups/array.h ipp-private.h ../cups/cups.h file.h ipp.h http.h \
language.h pwg.h http-private.h language-private.h ../cups/transcode.h \
pwg-private.h thread-private.h
dir.o: dir.c string-private.h ../config.h debug-private.h \
../cups/versioning.h dir.h
encode.o: encode.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
language-private.h ../cups/transcode.h pwg-private.h ../cups/cups.h \
file.h pwg.h thread-private.h
ipp-private.h ../cups/cups.h file.h ipp.h http.h language.h pwg.h \
http-private.h language-private.h ../cups/transcode.h pwg-private.h \
thread-private.h
file.o: file.c file-private.h cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
language-private.h ../cups/transcode.h pwg-private.h ../cups/cups.h \
file.h pwg.h thread-private.h
ipp-private.h ../cups/cups.h file.h ipp.h http.h language.h pwg.h \
http-private.h language-private.h ../cups/transcode.h pwg-private.h \
thread-private.h
getdevices.o: getdevices.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
language-private.h ../cups/transcode.h pwg-private.h ../cups/cups.h \
file.h pwg.h thread-private.h adminutil.h
ipp-private.h ../cups/cups.h file.h ipp.h http.h language.h pwg.h \
http-private.h language-private.h ../cups/transcode.h pwg-private.h \
thread-private.h adminutil.h
getifaddrs.o: getifaddrs.c http-private.h ../config.h ../cups/language.h \
array.h versioning.h ../cups/http.h ipp-private.h ../cups/ipp.h
array.h versioning.h ../cups/http.h ipp-private.h ../cups/cups.h \
file.h ipp.h pwg.h
getputfile.o: getputfile.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
language-private.h ../cups/transcode.h pwg-private.h ../cups/cups.h \
file.h pwg.h thread-private.h
ipp-private.h ../cups/cups.h file.h ipp.h http.h language.h pwg.h \
http-private.h language-private.h ../cups/transcode.h pwg-private.h \
thread-private.h
globals.o: globals.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
language-private.h ../cups/transcode.h pwg-private.h ../cups/cups.h \
file.h pwg.h thread-private.h
ipp-private.h ../cups/cups.h file.h ipp.h http.h language.h pwg.h \
http-private.h language-private.h ../cups/transcode.h pwg-private.h \
thread-private.h
hash.o: hash.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
language-private.h ../cups/transcode.h pwg-private.h ../cups/cups.h \
file.h pwg.h thread-private.h
ipp-private.h ../cups/cups.h file.h ipp.h http.h language.h pwg.h \
http-private.h language-private.h ../cups/transcode.h pwg-private.h \
thread-private.h
http.o: http.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
language-private.h ../cups/transcode.h pwg-private.h ../cups/cups.h \
file.h pwg.h thread-private.h
ipp-private.h ../cups/cups.h file.h ipp.h http.h language.h pwg.h \
http-private.h language-private.h ../cups/transcode.h pwg-private.h \
thread-private.h
http-addr.o: http-addr.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
language-private.h ../cups/transcode.h pwg-private.h ../cups/cups.h \
file.h pwg.h thread-private.h
ipp-private.h ../cups/cups.h file.h ipp.h http.h language.h pwg.h \
http-private.h language-private.h ../cups/transcode.h pwg-private.h \
thread-private.h
http-addrlist.o: http-addrlist.c cups-private.h string-private.h \
../config.h debug-private.h ../cups/versioning.h array-private.h \
../cups/array.h ipp-private.h ../cups/ipp.h http.h http-private.h \
../cups/language.h language-private.h ../cups/transcode.h \
pwg-private.h ../cups/cups.h file.h pwg.h thread-private.h
../cups/array.h ipp-private.h ../cups/cups.h file.h ipp.h http.h \
language.h pwg.h http-private.h language-private.h ../cups/transcode.h \
pwg-private.h thread-private.h
http-support.o: http-support.c cups-private.h string-private.h \
../config.h debug-private.h ../cups/versioning.h array-private.h \
../cups/array.h ipp-private.h ../cups/ipp.h http.h http-private.h \
../cups/language.h language-private.h ../cups/transcode.h \
pwg-private.h ../cups/cups.h file.h pwg.h thread-private.h
../cups/array.h ipp-private.h ../cups/cups.h file.h ipp.h http.h \
language.h pwg.h http-private.h language-private.h ../cups/transcode.h \
pwg-private.h thread-private.h
ipp.o: ipp.c cups-private.h string-private.h ../config.h debug-private.h \
../cups/versioning.h array-private.h ../cups/array.h ipp-private.h \
../cups/ipp.h http.h http-private.h ../cups/language.h \
language-private.h ../cups/transcode.h pwg-private.h ../cups/cups.h \
file.h pwg.h thread-private.h
../cups/cups.h file.h ipp.h http.h language.h pwg.h http-private.h \
language-private.h ../cups/transcode.h pwg-private.h thread-private.h
ipp-file.o: ipp-file.c ipp-private.h ../cups/cups.h file.h versioning.h \
ipp.h http.h array.h language.h pwg.h string-private.h ../config.h \
debug-private.h
ipp-vars.o: ipp-vars.c ../cups/cups.h file.h versioning.h ipp.h http.h \
array.h language.h pwg.h ipp-private.h string-private.h ../config.h
ipp-support.o: ipp-support.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
language-private.h ../cups/transcode.h pwg-private.h ../cups/cups.h \
file.h pwg.h thread-private.h
ipp-private.h ../cups/cups.h file.h ipp.h http.h language.h pwg.h \
http-private.h language-private.h ../cups/transcode.h pwg-private.h \
thread-private.h
langprintf.o: langprintf.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
language-private.h ../cups/transcode.h pwg-private.h ../cups/cups.h \
file.h pwg.h thread-private.h
ipp-private.h ../cups/cups.h file.h ipp.h http.h language.h pwg.h \
http-private.h language-private.h ../cups/transcode.h pwg-private.h \
thread-private.h
language.o: language.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
language-private.h ../cups/transcode.h pwg-private.h ../cups/cups.h \
file.h pwg.h thread-private.h
ipp-private.h ../cups/cups.h file.h ipp.h http.h language.h pwg.h \
http-private.h language-private.h ../cups/transcode.h pwg-private.h \
thread-private.h
md5.o: md5.c md5-private.h string-private.h ../config.h
md5passwd.o: md5passwd.c ../cups/cups.h file.h versioning.h ipp.h http.h \
array.h language.h pwg.h http-private.h ../config.h ipp-private.h \
string-private.h
notify.o: notify.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
language-private.h ../cups/transcode.h pwg-private.h ../cups/cups.h \
file.h pwg.h thread-private.h
ipp-private.h ../cups/cups.h file.h ipp.h http.h language.h pwg.h \
http-private.h language-private.h ../cups/transcode.h pwg-private.h \
thread-private.h
options.o: options.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
language-private.h ../cups/transcode.h pwg-private.h ../cups/cups.h \
file.h pwg.h thread-private.h
ipp-private.h ../cups/cups.h file.h ipp.h http.h language.h pwg.h \
http-private.h language-private.h ../cups/transcode.h pwg-private.h \
thread-private.h
ppd.o: ppd.c cups-private.h string-private.h ../config.h debug-private.h \
../cups/versioning.h array-private.h ../cups/array.h ipp-private.h \
../cups/ipp.h http.h http-private.h ../cups/language.h \
language-private.h ../cups/transcode.h pwg-private.h ../cups/cups.h \
file.h pwg.h thread-private.h ppd-private.h ../cups/ppd.h raster.h
../cups/cups.h file.h ipp.h http.h language.h pwg.h http-private.h \
language-private.h ../cups/transcode.h pwg-private.h thread-private.h \
ppd-private.h ../cups/ppd.h raster.h
ppd-attr.o: ppd-attr.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
language-private.h ../cups/transcode.h pwg-private.h ../cups/cups.h \
file.h pwg.h thread-private.h ppd-private.h ../cups/ppd.h raster.h
ipp-private.h ../cups/cups.h file.h ipp.h http.h language.h pwg.h \
http-private.h language-private.h ../cups/transcode.h pwg-private.h \
thread-private.h ppd-private.h ../cups/ppd.h raster.h
ppd-cache.o: ppd-cache.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
language-private.h ../cups/transcode.h pwg-private.h ../cups/cups.h \
file.h pwg.h thread-private.h ppd-private.h ../cups/ppd.h raster.h
ipp-private.h ../cups/cups.h file.h ipp.h http.h language.h pwg.h \
http-private.h language-private.h ../cups/transcode.h pwg-private.h \
thread-private.h ppd-private.h ../cups/ppd.h raster.h
ppd-conflicts.o: ppd-conflicts.c cups-private.h string-private.h \
../config.h debug-private.h ../cups/versioning.h array-private.h \
../cups/array.h ipp-private.h ../cups/ipp.h http.h http-private.h \
../cups/language.h language-private.h ../cups/transcode.h \
pwg-private.h ../cups/cups.h file.h pwg.h thread-private.h \
ppd-private.h ../cups/ppd.h raster.h
../cups/array.h ipp-private.h ../cups/cups.h file.h ipp.h http.h \
language.h pwg.h http-private.h language-private.h ../cups/transcode.h \
pwg-private.h thread-private.h ppd-private.h ../cups/ppd.h raster.h
ppd-custom.o: ppd-custom.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
language-private.h ../cups/transcode.h pwg-private.h ../cups/cups.h \
file.h pwg.h thread-private.h ppd-private.h ../cups/ppd.h raster.h
ipp-private.h ../cups/cups.h file.h ipp.h http.h language.h pwg.h \
http-private.h language-private.h ../cups/transcode.h pwg-private.h \
thread-private.h ppd-private.h ../cups/ppd.h raster.h
ppd-emit.o: ppd-emit.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
language-private.h ../cups/transcode.h pwg-private.h ../cups/cups.h \
file.h pwg.h thread-private.h ppd.h raster.h
ipp-private.h ../cups/cups.h file.h ipp.h http.h language.h pwg.h \
http-private.h language-private.h ../cups/transcode.h pwg-private.h \
thread-private.h ppd.h raster.h
ppd-localize.o: ppd-localize.c cups-private.h string-private.h \
../config.h debug-private.h ../cups/versioning.h array-private.h \
../cups/array.h ipp-private.h ../cups/ipp.h http.h http-private.h \
../cups/language.h language-private.h ../cups/transcode.h \
pwg-private.h ../cups/cups.h file.h pwg.h thread-private.h \
ppd-private.h ../cups/ppd.h raster.h
../cups/array.h ipp-private.h ../cups/cups.h file.h ipp.h http.h \
language.h pwg.h http-private.h language-private.h ../cups/transcode.h \
pwg-private.h thread-private.h ppd-private.h ../cups/ppd.h raster.h
ppd-mark.o: ppd-mark.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
language-private.h ../cups/transcode.h pwg-private.h ../cups/cups.h \
file.h pwg.h thread-private.h ppd-private.h ../cups/ppd.h raster.h
ipp-private.h ../cups/cups.h file.h ipp.h http.h language.h pwg.h \
http-private.h language-private.h ../cups/transcode.h pwg-private.h \
thread-private.h ppd-private.h ../cups/ppd.h raster.h
ppd-page.o: ppd-page.c string-private.h ../config.h debug-private.h \
../cups/versioning.h ppd.h cups.h file.h ipp.h http.h array.h \
language.h pwg.h raster.h
ppd-util.o: ppd-util.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
language-private.h ../cups/transcode.h pwg-private.h ../cups/cups.h \
file.h pwg.h thread-private.h ppd-private.h ../cups/ppd.h raster.h
ipp-private.h ../cups/cups.h file.h ipp.h http.h language.h pwg.h \
http-private.h language-private.h ../cups/transcode.h pwg-private.h \
thread-private.h ppd-private.h ../cups/ppd.h raster.h
pwg-media.o: pwg-media.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
language-private.h ../cups/transcode.h pwg-private.h ../cups/cups.h \
file.h pwg.h thread-private.h
ipp-private.h ../cups/cups.h file.h ipp.h http.h language.h pwg.h \
http-private.h language-private.h ../cups/transcode.h pwg-private.h \
thread-private.h
request.o: request.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
language-private.h ../cups/transcode.h pwg-private.h ../cups/cups.h \
file.h pwg.h thread-private.h
ipp-private.h ../cups/cups.h file.h ipp.h http.h language.h pwg.h \
http-private.h language-private.h ../cups/transcode.h pwg-private.h \
thread-private.h
sidechannel.o: sidechannel.c sidechannel.h versioning.h cups-private.h \
string-private.h ../config.h debug-private.h array-private.h \
../cups/array.h ipp-private.h ../cups/ipp.h http.h http-private.h \
../cups/language.h language-private.h ../cups/transcode.h \
pwg-private.h ../cups/cups.h file.h pwg.h thread-private.h
../cups/array.h ipp-private.h ../cups/cups.h file.h ipp.h http.h \
language.h pwg.h http-private.h language-private.h ../cups/transcode.h \
pwg-private.h thread-private.h
snmp.o: snmp.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
language-private.h ../cups/transcode.h pwg-private.h ../cups/cups.h \
file.h pwg.h thread-private.h snmp-private.h
ipp-private.h ../cups/cups.h file.h ipp.h http.h language.h pwg.h \
http-private.h language-private.h ../cups/transcode.h pwg-private.h \
thread-private.h snmp-private.h
snprintf.o: snprintf.c string-private.h ../config.h
string.o: string.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
language-private.h ../cups/transcode.h pwg-private.h ../cups/cups.h \
file.h pwg.h thread-private.h
ipp-private.h ../cups/cups.h file.h ipp.h http.h language.h pwg.h \
http-private.h language-private.h ../cups/transcode.h pwg-private.h \
thread-private.h
tempfile.o: tempfile.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
language-private.h ../cups/transcode.h pwg-private.h ../cups/cups.h \
file.h pwg.h thread-private.h
ipp-private.h ../cups/cups.h file.h ipp.h http.h language.h pwg.h \
http-private.h language-private.h ../cups/transcode.h pwg-private.h \
thread-private.h
thread.o: thread.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
language-private.h ../cups/transcode.h pwg-private.h ../cups/cups.h \
file.h pwg.h thread-private.h
ipp-private.h ../cups/cups.h file.h ipp.h http.h language.h pwg.h \
http-private.h language-private.h ../cups/transcode.h pwg-private.h \
thread-private.h
tls.o: tls.c cups-private.h string-private.h ../config.h debug-private.h \
../cups/versioning.h array-private.h ../cups/array.h ipp-private.h \
../cups/ipp.h http.h http-private.h ../cups/language.h \
language-private.h ../cups/transcode.h pwg-private.h ../cups/cups.h \
file.h pwg.h thread-private.h tls-darwin.c
../cups/cups.h file.h ipp.h http.h language.h pwg.h http-private.h \
language-private.h ../cups/transcode.h pwg-private.h thread-private.h \
tls-darwin.c
transcode.o: transcode.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
language-private.h ../cups/transcode.h pwg-private.h ../cups/cups.h \
file.h pwg.h thread-private.h
ipp-private.h ../cups/cups.h file.h ipp.h http.h language.h pwg.h \
http-private.h language-private.h ../cups/transcode.h pwg-private.h \
thread-private.h
usersys.o: usersys.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
language-private.h ../cups/transcode.h pwg-private.h ../cups/cups.h \
file.h pwg.h thread-private.h
ipp-private.h ../cups/cups.h file.h ipp.h http.h language.h pwg.h \
http-private.h language-private.h ../cups/transcode.h pwg-private.h \
thread-private.h
util.o: util.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
language-private.h ../cups/transcode.h pwg-private.h ../cups/cups.h \
file.h pwg.h thread-private.h
ipp-private.h ../cups/cups.h file.h ipp.h http.h language.h pwg.h \
http-private.h language-private.h ../cups/transcode.h pwg-private.h \
thread-private.h
error.o: error.c ../cups/raster-private.h raster.h cups.h file.h \
versioning.h ipp.h http.h array.h language.h pwg.h \
../cups/debug-private.h ../cups/string-private.h ../config.h
@@ -265,11 +268,14 @@ testconflicts.o: testconflicts.c cups.h file.h versioning.h ipp.h http.h \
array.h language.h pwg.h ppd.h raster.h string-private.h ../config.h
testcreds.o: testcreds.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
language-private.h ../cups/transcode.h pwg-private.h ../cups/cups.h \
file.h pwg.h thread-private.h
testcups.o: testcups.c string-private.h ../config.h cups.h file.h \
versioning.h ipp.h http.h array.h language.h pwg.h ppd.h raster.h
ipp-private.h ../cups/cups.h file.h ipp.h http.h language.h pwg.h \
http-private.h language-private.h ../cups/transcode.h pwg-private.h \
thread-private.h
testcups.o: testcups.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/cups.h file.h ipp.h http.h language.h pwg.h \
http-private.h language-private.h ../cups/transcode.h pwg-private.h \
thread-private.h ppd.h raster.h
testdest.o: testdest.c cups.h file.h versioning.h ipp.h http.h array.h \
language.h pwg.h
testfile.o: testfile.c string-private.h ../config.h debug-private.h \
@@ -278,28 +284,28 @@ testgetdests.o: testgetdests.c cups.h file.h versioning.h ipp.h http.h \
array.h language.h pwg.h
testhttp.o: testhttp.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
language-private.h ../cups/transcode.h pwg-private.h ../cups/cups.h \
file.h pwg.h thread-private.h
ipp-private.h ../cups/cups.h file.h ipp.h http.h language.h pwg.h \
http-private.h language-private.h ../cups/transcode.h pwg-private.h \
thread-private.h
testi18n.o: testi18n.c string-private.h ../config.h language-private.h \
../cups/transcode.h language.h array.h versioning.h
testipp.o: testipp.c file.h versioning.h string-private.h ../config.h \
ipp-private.h ../cups/ipp.h http.h array.h
ipp-private.h ../cups/cups.h ipp.h http.h array.h language.h pwg.h
testoptions.o: testoptions.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
language-private.h ../cups/transcode.h pwg-private.h ../cups/cups.h \
file.h pwg.h thread-private.h
ipp-private.h ../cups/cups.h file.h ipp.h http.h language.h pwg.h \
http-private.h language-private.h ../cups/transcode.h pwg-private.h \
thread-private.h
testlang.o: testlang.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
language-private.h ../cups/transcode.h pwg-private.h ../cups/cups.h \
file.h pwg.h thread-private.h ppd-private.h ../cups/ppd.h raster.h
ipp-private.h ../cups/cups.h file.h ipp.h http.h language.h pwg.h \
http-private.h language-private.h ../cups/transcode.h pwg-private.h \
thread-private.h ppd-private.h ../cups/ppd.h raster.h
testppd.o: testppd.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
language-private.h ../cups/transcode.h pwg-private.h ../cups/cups.h \
file.h pwg.h thread-private.h ppd-private.h ../cups/ppd.h raster.h
ipp-private.h ../cups/cups.h file.h ipp.h http.h language.h pwg.h \
http-private.h language-private.h ../cups/transcode.h pwg-private.h \
thread-private.h ppd-private.h ../cups/ppd.h raster.h
testpwg.o: testpwg.c ppd-private.h ../cups/cups.h file.h versioning.h \
ipp.h http.h array.h language.h pwg.h ../cups/ppd.h raster.h \
pwg-private.h file-private.h cups-private.h string-private.h \
@@ -311,11 +317,11 @@ testraster.o: testraster.c ../cups/raster-private.h raster.h cups.h \
../cups/ppd.h
testsnmp.o: testsnmp.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
language-private.h ../cups/transcode.h pwg-private.h ../cups/cups.h \
file.h pwg.h thread-private.h snmp-private.h
ipp-private.h ../cups/cups.h file.h ipp.h http.h language.h pwg.h \
http-private.h language-private.h ../cups/transcode.h pwg-private.h \
thread-private.h snmp-private.h
tlscheck.o: tlscheck.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
language-private.h ../cups/transcode.h pwg-private.h ../cups/cups.h \
file.h pwg.h thread-private.h
ipp-private.h ../cups/cups.h file.h ipp.h http.h language.h pwg.h \
http-private.h language-private.h ../cups/transcode.h pwg-private.h \
thread-private.h
+20 -11
Ver Arquivo
@@ -11,13 +11,6 @@
include ../Makedefs
#
# Options to build libcups without the use of deprecated APIs...
#
OPTIONS = -D_CUPS_NO_DEPRECATED=1 -D_PPD_DEPRECATED=""
#
# Object files...
#
@@ -81,6 +74,8 @@ IMAGEOBJS = \
error.o \
interpret.o \
raster.o
XFORMOBJS = \
xform.o
TESTOBJS = \
rasterbench.o \
testadmin.o \
@@ -106,6 +101,7 @@ TESTOBJS = \
OBJS = \
$(LIBOBJS) \
$(IMAGEOBJS) \
$(XFORMOBJS) \
$(TESTOBJS)
@@ -155,7 +151,8 @@ LIBTARGETS = \
$(LIBCUPSIMAGE) \
$(LIBCUPSSTATIC) \
$(LIBCUPS) \
libcupsimage.a
libcupsimage.a \
libcupsxform.a
UNITTARGETS = \
rasterbench \
@@ -212,6 +209,7 @@ unittests: $(UNITTARGETS)
clean:
$(RM) $(OBJS) $(TARGETS) $(UNITTARGETS)
$(RM) libcups.so libcups.dylib
$(RM) libcupsimage.so libcupsimage.dylib
#
@@ -362,7 +360,7 @@ libcups.2.dylib: $(LIBOBJS) $(LIBCUPSORDER)
echo Linking $@...
$(DSO) $(ARCHFLAGS) $(DSOFLAGS) -o $@ \
-install_name $(libdir)/$@ \
-current_version 2.13.0 \
-current_version 2.14.0 \
-compatibility_version 2.0.0 \
-exported_symbols_list t.exp \
$(LIBOBJS) $(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) \
@@ -378,7 +376,7 @@ libcups.2.dylib: $(LIBOBJS) $(LIBCUPSORDER)
libcups.la: $(LIBOBJS)
echo Linking $@...
$(LD_CC) $(ARCHFLAGS) $(DSOFLAGS) -o $@ $(LIBOBJS:.o=.lo) \
-rpath $(LIBDIR) -version-info 2:13 $(LIBGSSAPI) $(SSLLIBS) \
-rpath $(LIBDIR) -version-info 2:14 $(LIBGSSAPI) $(SSLLIBS) \
$(DNSSDLIBS) $(COMMONLIBS) $(LIBZ)
@@ -400,7 +398,7 @@ libcups.a: $(LIBOBJS)
libcups2.def: $(LIBOBJS) $(IMAGEOBJS) Makefile
echo Generating $@...
echo "LIBRARY libcups2" >libcups2.def
echo "VERSION 2.13" >>libcups2.def
echo "VERSION 2.14" >>libcups2.def
echo "EXPORTS" >>libcups2.def
(nm $(LIBOBJS) $(IMAGEOBJS) 2>/dev/null | grep "T _" | awk '{print $$3}'; \
echo __cups_strcpy; echo __cups_strlcat; echo __cups_strlcpy) | \
@@ -459,6 +457,17 @@ libcupsimage.a: $(IMAGEOBJS)
$(RANLIB) $@
#
# libcupsxform.a
#
libcupsxform.a: $(XFORMOBJS)
echo Archiving $@...
$(RM) $@
$(AR) $(ARFLAGS) $@ $(XFORMOBJS)
$(RANLIB) $@
#
# rasterbench
#
+1 -1
Ver Arquivo
@@ -77,7 +77,7 @@ extern ipp_status_t cupsGetDevices(http_t *http, int timeout,
const char *include_schemes,
const char *exclude_schemes,
cups_device_cb_t callback,
void *user_data) _CUPS_API_1_4;
void *user_data) _CUPS_DEPRECATED;
# ifdef __cplusplus
+3 -6
Ver Arquivo
@@ -1,13 +1,10 @@
<!--
Administrative API header for CUPS.
Copyright 2016 by Apple Inc.
Copyright © 2016 by Apple Inc.
These coded instructions, statements, and computer programs are the
property of Apple Inc. and are protected by Federal copyright
law. Distribution and use rights are outlined in the file "LICENSE.txt"
which should have been included with this file. If this file is
file is missing or damaged, see the license at "http://www.cups.org/".
Licensed under Apache License v2.0. See the file "LICENSE" for more
information.
-->
<h1 class='title'>Administrative APIs</h1>
+3 -6
Ver Arquivo
@@ -1,13 +1,10 @@
<!--
Administrative API documentation for CUPS.
Copyright 2016 by Apple Inc.
Copyright © 2016 by Apple Inc.
These coded instructions, statements, and computer programs are the
property of Apple Inc. and are protected by Federal copyright
law. Distribution and use rights are outlined in the file "LICENSE.txt"
which should have been included with this file. If this file is
file is missing or damaged, see the license at "http://www.cups.org/".
Licensed under Apache License v2.0. See the file "LICENSE" for more
information.
-->
<h2 class="title"><a name="OVERVIEW">Overview</a></h2>
+3 -6
Ver Arquivo
@@ -1,13 +1,10 @@
<!--
Filter and backend programming header for CUPS.
Copyright 2008-2016 by Apple Inc.
Copyright © 2008-2016 by Apple Inc.
These coded instructions, statements, and computer programs are the
property of Apple Inc. and are protected by Federal copyright
law. Distribution and use rights are outlined in the file "LICENSE.txt"
which should have been included with this file. If this file is
file is missing or damaged, see the license at "http://www.cups.org/".
Licensed under Apache License v2.0. See the file "LICENSE" for more
information.
-->
<h1 class='title'>Filter and Backend Programming</h1>
+4 -7
Ver Arquivo
@@ -1,14 +1,11 @@
<!--
Filter and backend programming introduction for CUPS.
Copyright 2007-2016 by Apple Inc.
Copyright 1997-2006 by Easy Software Products, all rights reserved.
Copyright © 2007-2016 by Apple Inc.
Copyright © 1997-2006 by Easy Software Products, all rights reserved.
These coded instructions, statements, and computer programs are the
property of Apple Inc. and are protected by Federal copyright
law. Distribution and use rights are outlined in the file "LICENSE.txt"
which should have been included with this file. If this file is
file is missing or damaged, see the license at "http://www.cups.org/".
Licensed under Apache License v2.0. See the file "LICENSE" for more
information.
-->
<h2 class='title'><a name="OVERVIEW">Overview</a></h2>
-54
Ver Arquivo
@@ -1,54 +0,0 @@
<!--
Introduction to CUPS programming header for CUPS.
Copyright 2008-2016 by Apple Inc.
These coded instructions, statements, and computer programs are the
property of Apple Inc. and are protected by Federal copyright
law. Distribution and use rights are outlined in the file "LICENSE.txt"
which should have been included with this file. If this file is
file is missing or damaged, see the license at "http://www.cups.org/".
-->
<h1 class='title'>Introduction to CUPS Programming</h1>
<div class='summary'><table summary='General Information'>
<thead>
<tr>
<th>Headers</th>
<th>cups/cups.h<br>
cups/adminutil.h<br>
cups/array.h<br>
cups/dir.h<br>
cups/file.h<br>
cups/http.h<br>
cups/ipp.h<br>
cups/language.h<br>
cups/ppd.h<br>
cups/pwg.h<br>
cups/raster.h</th>
</tr>
</thead>
<tbody>
<tr>
<th>Libraries</th>
<td>-lcups</td>
</tr>
<tr>
<th>See Also</th>
<td>Programming: <a href='raster-driver.html' target='_top'>Developing Raster Printer Drivers</a><br>
Programming: <a href='postscript-driver.html' target='_top'>Developing PostScript Printer Drivers</a><br>
Programming: <a href='api-filter.html' target='_top'>Filter and Backend Programming</a><br>
Programming: <a href='ppd-compiler.html' target='_top'>Introduction to the PPD Compiler</a><br>
Programming: <a href='api-admin.html' target='_top'>Administrative APIs</a><br>
Programming: <a href='api-array.html' target='_top'>Array API</a><br>
Programming: <a href='api-cups.html' target='_top'>CUPS API</a><br>
Programming: <a href='api-filedir.html' target='_top'>File and Directory APIs</a><br>
Programming: <a href='api-httpipp.html' target='_top'>HTTP and IPP APIs</a><br>
Programming: <a href='api-ppd.html' target='_top'>PPD API (DEPRECATED)</a><br>
Programming: <a href='api-raster.html' target='_top'>Raster API</a><br>
References: <a href='ref-ppdcfile.html' target='_top'>PPD Compiler Driver Information File Reference</a><br>
Specifications: <a href='spec-ppd.html' target='_top'>CUPS PPD Extensions</a></td>
</tr>
</tbody>
</table></div>
-92
Ver Arquivo
@@ -1,92 +0,0 @@
<!--
Introduction to CUPS programming content for CUPS.
Copyright 2008-2011 by Apple Inc.
These coded instructions, statements, and computer programs are the
property of Apple Inc. and are protected by Federal copyright
law. Distribution and use rights are outlined in the file "LICENSE.txt"
which should have been included with this file. If this file is
file is missing or damaged, see the license at "http://www.cups.org/".
-->
<h2 class="title"><a name="OVERVIEW">Overview</a></h2>
<p>CUPS provides two libraries that interface with the different parts of the
printing system. The "cups" library provides all of the common application and
filter functions while the "cupsimage" library provides all of the imaging
functions used in raster printer drivers. The "cups" library functions are
accessed by including the <var>&lt;cups/cups.h&gt;</var> header, while
"cupsimage" functions are found in the <var>&lt;cups/raster.h&gt;</var>
header.</p>
<h2 class="title"><a name="COMPILING">Compiling Programs</a></h2>
<p>The CUPS libraries can be used from any C, C++, or Objective C program.
The method of compiling against the libraries varies depending on the
operating system and installation of CUPS. The following sections show how
to compile a simple program (shown below) in two common environments.</p>
<p>The following simple program lists the available printers on the system:</p>
<pre class="example">
#include &lt;stdio.h&gt;
#include &lt;cups/cups.h&gt;
int main(void)
{
int i;
cups_dest_t *dests, *dest;
int num_dests = cupsGetDests(&amp;dests);
for (i = num_dests, dest = dests; i &gt; 0; i --, dest ++)
{
if (dest->instance)
printf("%s/%s\n", dest->name, dest->instance);
else
puts(dest->name);
}
return (0);
}
</pre>
<h3><a name="XCODE">Compiling with Xcode</a></h3>
<p>In Xcode, choose <var>New Project...</var> from the <var>File</var> menu,
then select the <var>Standard Tool</var> project type under <var>Command Line
Utility</var>. Click <var>Next</var> and choose a project directory. Click
<var>Next</var> to create the project.</p>
<p>In the project window, double-click on the <var>Targets</var> group and
control-click on the simple target to show the context menu. Choose
<var>Existing Framework...</var> from the <var>Add</var> submenu. When the file
chooser sheet appears, press the <kbd>/</kbd> key and enter "/usr/lib". Scroll
down the file list and select the <var>libcups.dylib</var> file. Click the
<var>Add</var> button in the file chooser and attributes sheets.</p>
<p>In the project window, double-click on the <var>main.c</var> source file.
Replace the template source code with the listing above and save it. Click the
<var>Build and Go</var> button to build the sample program and run it.</p>
<h3><a name="COMMANDLINE">Compiling with GCC</a></h3>
<p>From the command-line, create a file called <var>sample.c</var> using your
favorite editor and then run the following command to compile it with GCC and
run it:</p>
<pre class="command">
gcc -o simple `cups-config --cflags` simple.c `cups-config --libs`
./simple
</pre>
<p>The <code>cups-config</code> command provides the compiler flags
("cups-config --cflags") and libraries ("cups-config --libs") needed for the
local system.</p>
<h2 class="title"><a name="WHERETOGO">Where to Go Next</a></h2>
<p>If you are developing a print filter, driver, or backend, see the
<a href="api-filter.html" target="_top">Filter and Backend Programming</a>
guide. Raster printer driver developers should also read the
<a href="api-raster.html" target="_top">Raster API</a> reference.</p>
+3 -6
Ver Arquivo
@@ -1,13 +1,10 @@
<!--
PPD API header for CUPS.
Copyright 2008-2012 by Apple Inc.
Copyright © 2008-2012 by Apple Inc.
These coded instructions, statements, and computer programs are the
property of Apple Inc. and are protected by Federal copyright
law. Distribution and use rights are outlined in the file "LICENSE.txt"
which should have been included with this file. If this file is
file is missing or damaged, see the license at "http://www.cups.org/".
Licensed under Apache License v2.0. See the file "LICENSE" for more
information.
-->
<h1 class='title'>PPD API (DEPRECATED)</h1>
+5 -8
Ver Arquivo
@@ -1,19 +1,16 @@
<!--
PPD API introduction for CUPS.
Copyright 2007-2012 by Apple Inc.
Copyright 1997-2006 by Easy Software Products, all rights reserved.
Copyright © 2007-2018 by Apple Inc.
Copyright © 1997-2006 by Easy Software Products, all rights reserved.
These coded instructions, statements, and computer programs are the
property of Apple Inc. and are protected by Federal copyright
law. Distribution and use rights are outlined in the file "LICENSE.txt"
which should have been included with this file. If this file is
file is missing or damaged, see the license at "http://www.cups.org/".
Licensed under Apache License v2.0. See the file "LICENSE" for more
information.
-->
<h2 class='title'><a name='OVERVIEW'>Overview</a></h2>
<blockquote>The PPD API is deprecated starting in CUPS 1.6/macOS 10.8. Please use the new Job Ticket APIs in the <a href="api-cups.html">CUPS API</a> documentation. These functions will be removed in a future release of CUPS.</blockquote>
<blockquote>The PPD API is deprecated starting in CUPS 1.6/macOS 10.8. Please use the new Job Ticket APIs in the <a href="cupspm.html">CUPS API</a> documentation. These functions will be removed in a future release of CUPS.</blockquote>
<p>The CUPS PPD API provides read-only access the data in PostScript Printer
Description ("PPD") files which are used for all printers with a driver. With
+3 -6
Ver Arquivo
@@ -1,13 +1,10 @@
<!--
Raster API documentation for CUPS.
Copyright 2008-2010 by Apple Inc.
Copyright © 2008-2010 by Apple Inc.
These coded instructions, statements, and computer programs are the
property of Apple Inc. and are protected by Federal copyright
law. Distribution and use rights are outlined in the file "LICENSE.txt"
which should have been included with this file. If this file is
file is missing or damaged, see the license at "http://www.cups.org/".
Licensed under Apache License v2.0. See the file "LICENSE" for more
information.
-->
<h1 class='title'>Raster API</h1>
+4 -7
Ver Arquivo
@@ -1,14 +1,11 @@
<!--
Raster API introduction for CUPS.
Copyright 2007-2013 by Apple Inc.
Copyright 1997-2006 by Easy Software Products, all rights reserved.
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
property of Apple Inc. and are protected by Federal copyright
law. Distribution and use rights are outlined in the file "LICENSE.txt"
which should have been included with this file. If this file is
file is missing or damaged, see the license at "http://www.cups.org/".
Licensed under Apache License v2.0. See the file "LICENSE" for more
information.
-->
<h2 class='title'><a name="OVERVIEW">Overview</a></h2>
+3 -3
Ver Arquivo
@@ -212,7 +212,7 @@ cupsDoAuthentication(
if (!cg->lang_default)
cg->lang_default = cupsLangDefault();
if (cups_auth_param(scheme, "username", default_username, sizeof(default_username)))
if (cups_auth_param(schemedata, "username", default_username, sizeof(default_username)))
cupsSetUser(default_username);
snprintf(prompt, sizeof(prompt), _cupsLangString(cg->lang_default, _("Password for %s on %s? ")), cupsUser(), http->hostname[0] == '/' ? "localhost" : http->hostname);
@@ -614,7 +614,7 @@ cups_auth_find(const char *www_authenticate, /* I - Pointer into WWW-Authenticat
* See if this is "Scheme" followed by whitespace or the end of the string.
*/
if (!strncmp(www_authenticate, scheme, schemelen) && (isspace(www_authenticate[schemelen] & 255) || !www_authenticate[schemelen]))
if (!strncmp(www_authenticate, scheme, schemelen) && (isspace(www_authenticate[schemelen] & 255) || www_authenticate[schemelen] == ',' || !www_authenticate[schemelen]))
{
/*
* Yes, this is the start of the scheme-specific information...
@@ -795,7 +795,7 @@ cups_auth_scheme(const char *www_authenticate, /* I - Pointer into WWW-Authentic
* Parse the scheme name or param="value" string...
*/
for (sptr = scheme, start = www_authenticate, param = 0; *www_authenticate && !isspace(*www_authenticate & 255); www_authenticate ++)
for (sptr = scheme, start = www_authenticate, param = 0; *www_authenticate && *www_authenticate != ',' && !isspace(*www_authenticate & 255); www_authenticate ++)
{
if (*www_authenticate == '=')
param = 1;
+1 -1
Ver Arquivo
@@ -232,7 +232,7 @@ extern void _cupsBufferRelease(char *b);
extern http_t *_cupsConnect(void);
extern char *_cupsCreateDest(const char *name, const char *info, const char *device_id, const char *device_uri, char *uri, size_t urisize);
extern void _cupsEncodeOption(ipp_t *ipp, ipp_tag_t group_tag, _ipp_option_t *map, const char *name, const char *value);
extern ipp_attribute_t *_cupsEncodeOption(ipp_t *ipp, ipp_tag_t group_tag, _ipp_option_t *map, const char *name, const char *value);
extern int _cupsGet1284Values(const char *device_id, cups_option_t **values);
extern const char *_cupsGetDestResource(cups_dest_t *dest, unsigned flags, char *resource, size_t resourcesize);
extern int _cupsGetDests(http_t *http, ipp_op_t op, const char *name, cups_dest_t **dests, cups_ptype_t type, cups_ptype_t mask);
+5 -2
Ver Arquivo
@@ -600,9 +600,12 @@ extern ssize_t cupsHashData(const char *algorithm, const void *data, size_t dat
extern int cupsAddIntegerOption(const char *name, int value, int num_options, cups_option_t **options) _CUPS_API_2_2_4;
extern int cupsGetIntegerOption(const char *name, int num_options, cups_option_t *options) _CUPS_API_2_2_4;
/* New in CUPS 2.2.7 */
extern const char *cupsHashString(const unsigned char *hash, size_t hashsize, char *buffer, size_t bufsize) _CUPS_API_2_2_7;
/* New in CUPS 2.3 */
extern int cupsAddDestMediaOptions(http_t *http, cups_dest_t *dest, cups_dinfo_t *dinfo, unsigned flags, cups_size_t *size, int num_options, cups_option_t **options);
extern const char *cupsHashString(const unsigned char *hash, size_t hashsize, char *buffer, size_t bufsize) _CUPS_API_2_3;
extern int cupsAddDestMediaOptions(http_t *http, cups_dest_t *dest, cups_dinfo_t *dinfo, unsigned flags, cups_size_t *size, int num_options, cups_option_t **options) _CUPS_API_2_3;
extern ipp_attribute_t *cupsEncodeOption(ipp_t *ipp, ipp_tag_t group_tag, const char *name, const char *value) _CUPS_API_2_3;
# ifdef __cplusplus
}
+2 -2
Ver Arquivo
@@ -1,8 +1,8 @@
---
title: CUPS Programming Manual
author: Michael R Sweet
copyright: Copyright © 2007-2017 by Apple Inc. All Rights Reserved.
version: 2.2.5
copyright: Copyright © 2007-2018 by Apple Inc. All Rights Reserved.
version: 2.3.0
...
> Please [file issues on Github](https://github.com/apple/cups/issues) to
+4 -4
Ver Arquivo
@@ -1526,18 +1526,18 @@ cups_collection_string(
if (!ippGetBoolean(member, 0))
{
if (bufptr < bufend)
strlcpy(bufptr, "no", bufend - bufptr + 1);
strlcpy(bufptr, "no", (size_t)(bufend - bufptr + 1));
bufptr += 2;
}
if (bufptr < bufend)
strlcpy(bufptr, mname, bufend - bufptr + 1);
strlcpy(bufptr, mname, (size_t)(bufend - bufptr + 1));
bufptr += strlen(mname);
continue;
}
if (bufptr < bufend)
strlcpy(bufptr, mname, bufend - bufptr + 1);
strlcpy(bufptr, mname, (size_t)(bufend - bufptr + 1));
bufptr += strlen(mname);
if (bufptr < bufend)
@@ -1573,7 +1573,7 @@ cups_collection_string(
{
case IPP_TAG_INTEGER :
case IPP_TAG_ENUM :
bufptr += snprintf(bufptr, bufptr < bufend ? (bufend - bufptr + 1) : 0, "%d", ippGetInteger(member, j));
bufptr += snprintf(bufptr, bufptr < bufend ? (size_t)(bufend - bufptr + 1) : 0, "%d", ippGetInteger(member, j));
break;
case IPP_TAG_STRING :
+8 -2
Ver Arquivo
@@ -564,7 +564,7 @@ _cupsAppleSetUseLastPrinter(
/*
* 'cupsConnectDest()' - Open a conection to the destination.
* 'cupsConnectDest()' - Open a connection to the destination.
*
* Connect to the destination, returning a new @code http_t@ connection object
* and optionally the resource path to use for the destination. These calls
@@ -573,7 +573,7 @@ _cupsAppleSetUseLastPrinter(
* returns 0. The caller is responsible for calling @link httpClose@ on the
* returned connection.
*
* Starting with CUPS 2.2.4, the caller can pass @code CUPS_DEST_FLAGS_DEVICE@
* Starting with CUPS 2.2.4, the caller can pass @code CUPS_DEST_FLAGS_DEVICE@
* for the "flags" argument to connect directly to the device associated with
* the destination. Otherwise, the connection is made to the CUPS scheduler
* associated with the destination.
@@ -1281,6 +1281,12 @@ cupsGetDestWithURI(const char *name, /* I - Desired printer name or @code NULL@
name = resource + 10;
info = temp;
}
else if (!strncmp(resource, "/ipp/print/", 11))
{
snprintf(temp, sizeof(temp), "%s @ %s", resource + 11, hostname);
name = resource + 11;
info = temp;
}
else
{
name = hostname;
+39 -10
Ver Arquivo
@@ -1,10 +1,11 @@
/*
* Option encoding routines for CUPS.
*
* Copyright 2007-2017 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products.
* Copyright © 2007-2018 by Apple Inc.
* Copyright © 1997-2007 by Easy Software Products.
*
* Licensed under Apache License v2.0. See the file "LICENSE" for more information.
* Licensed under Apache License v2.0. See the file "LICENSE" for more
* information.
*/
/*
@@ -281,10 +282,17 @@ static const _ipp_option_t ipp_options[] =
{ 0, "print-quality", IPP_TAG_ENUM, IPP_TAG_JOB,
IPP_TAG_DOCUMENT },
{ 0, "print-quality-default", IPP_TAG_ENUM, IPP_TAG_PRINTER },
{ 1, "printer-alert", IPP_TAG_STRING, IPP_TAG_PRINTER },
{ 1, "printer-alert-description", IPP_TAG_TEXT, IPP_TAG_PRINTER },
{ 1, "printer-commands", IPP_TAG_KEYWORD, IPP_TAG_PRINTER },
{ 0, "printer-error-policy", IPP_TAG_NAME, IPP_TAG_PRINTER },
{ 1, "printer-finisher", IPP_TAG_STRING, IPP_TAG_PRINTER },
{ 1, "printer-finisher-description", IPP_TAG_TEXT, IPP_TAG_PRINTER },
{ 1, "printer-finisher-supplies", IPP_TAG_STRING, IPP_TAG_PRINTER },
{ 1, "printer-finisher-supplies-description", IPP_TAG_TEXT, IPP_TAG_PRINTER },
{ 0, "printer-geo-location", IPP_TAG_URI, IPP_TAG_PRINTER },
{ 0, "printer-info", IPP_TAG_TEXT, IPP_TAG_PRINTER },
{ 1, "printer-input-tray", IPP_TAG_STRING, IPP_TAG_PRINTER },
{ 0, "printer-is-accepting-jobs", IPP_TAG_BOOLEAN, IPP_TAG_PRINTER },
{ 0, "printer-is-shared", IPP_TAG_BOOLEAN, IPP_TAG_PRINTER },
{ 0, "printer-is-temporary", IPP_TAG_BOOLEAN, IPP_TAG_PRINTER },
@@ -292,11 +300,14 @@ static const _ipp_option_t ipp_options[] =
{ 0, "printer-make-and-model", IPP_TAG_TEXT, IPP_TAG_PRINTER },
{ 0, "printer-more-info", IPP_TAG_URI, IPP_TAG_PRINTER },
{ 0, "printer-op-policy", IPP_TAG_NAME, IPP_TAG_PRINTER },
{ 1, "printer-output-tray", IPP_TAG_STRING, IPP_TAG_PRINTER },
{ 0, "printer-resolution", IPP_TAG_RESOLUTION, IPP_TAG_JOB,
IPP_TAG_DOCUMENT },
{ 0, "printer-state", IPP_TAG_ENUM, IPP_TAG_PRINTER },
{ 0, "printer-state-change-time", IPP_TAG_INTEGER, IPP_TAG_PRINTER },
{ 1, "printer-state-reasons", IPP_TAG_KEYWORD, IPP_TAG_PRINTER },
{ 1, "printer-supply", IPP_TAG_STRING, IPP_TAG_PRINTER },
{ 1, "printer-supply-description", IPP_TAG_TEXT, IPP_TAG_PRINTER },
{ 0, "printer-type", IPP_TAG_ENUM, IPP_TAG_PRINTER },
{ 0, "printer-uri", IPP_TAG_URI, IPP_TAG_OPERATION },
{ 1, "printer-uri-supported", IPP_TAG_URI, IPP_TAG_PRINTER },
@@ -337,7 +348,7 @@ static int compare_ipp_options(_ipp_option_t *a, _ipp_option_t *b);
* '_cupsEncodeOption()' - Encode a single option as an IPP attribute.
*/
void
ipp_attribute_t * /* O - New attribute or @code NULL@ on error */
_cupsEncodeOption(
ipp_t *ipp, /* I - IPP request/response/collection */
ipp_tag_t group_tag, /* I - Group tag */
@@ -417,7 +428,7 @@ _cupsEncodeOption(
*/
DEBUG_puts("1_cupsEncodeOption: Ran out of memory for attributes.");
return;
return (NULL);
}
if (count > 1)
@@ -434,7 +445,7 @@ _cupsEncodeOption(
DEBUG_puts("1_cupsEncodeOption: Ran out of memory for value copy.");
ippDeleteAttribute(ipp, attr);
return;
return (NULL);
}
val = copy;
@@ -605,7 +616,7 @@ _cupsEncodeOption(
free(copy);
ippDeleteAttribute(ipp, attr);
return;
return (NULL);
}
ippSetCollection(ipp, &attr, i, collection);
@@ -621,6 +632,24 @@ _cupsEncodeOption(
if (copy)
free(copy);
return (attr);
}
/*
* 'cupsEncodeOption()' - Encode a single option into an IPP attribute.
*
* @since CUPS 2.3@
*/
ipp_attribute_t * /* O - New attribute or @code NULL@ on error */
cupsEncodeOption(ipp_t *ipp, /* I - IPP request/response */
ipp_tag_t group_tag, /* I - Attribute group */
const char *name, /* I - Option name */
const char *value) /* I - Option string value */
{
return (_cupsEncodeOption(ipp, group_tag, _ippFindOption(name), name, value));
}
@@ -633,7 +662,7 @@ _cupsEncodeOption(
*/
void
cupsEncodeOptions(ipp_t *ipp, /* I - Request to add to */
cupsEncodeOptions(ipp_t *ipp, /* I - IPP request/response */
int num_options, /* I - Number of options */
cups_option_t *options) /* I - Options */
{
@@ -661,7 +690,7 @@ cupsEncodeOptions(ipp_t *ipp, /* I - Request to add to */
void
cupsEncodeOptions2(
ipp_t *ipp, /* I - Request to add to */
ipp_t *ipp, /* I - IPP request/response */
int num_options, /* I - Number of options */
cups_option_t *options, /* I - Options */
ipp_tag_t group_tag) /* I - Group to encode */
@@ -688,7 +717,7 @@ cupsEncodeOptions2(
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))
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...
+4 -1
Ver Arquivo
@@ -23,7 +23,10 @@
* parameters provide comma-delimited lists of backends to include or omit from
* the request respectively.
*
* @since CUPS 1.4/macOS 10.6@
* This function is deprecated with the IPP printer discovery functionality
* being provided by the @link cupsEnumDests@ and @cupsGetDests@ functions.
*
* @deprecated@
*/
ipp_status_t /* O - Request status - @code IPP_OK@ on success. */
+4 -7
Ver Arquivo
@@ -1,14 +1,11 @@
/*
* Network interface functions for CUPS.
*
* Copyright 2007-2010 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products, all rights reserved.
* Copyright © 2007-2010 by Apple Inc.
* Copyright © 1997-2006 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
* "LICENSE" which should have been included with this file. If this
* file is missing or damaged, see the license at "http://www.cups.org/".
* Licensed under Apache License v2.0. See the file "LICENSE" for more
* information.
*/
/*
+5 -2
Ver Arquivo
@@ -1,9 +1,10 @@
/*
* Hashing function for CUPS.
*
* Copyright 2015-2017 by Apple Inc.
* Copyright © 2015-2018 by Apple Inc.
*
* Licensed under Apache License v2.0. See the file "LICENSE" for more information.
* Licensed under Apache License v2.0. See the file "LICENSE" for more
* information.
*/
/*
@@ -274,6 +275,8 @@ cupsHashData(const char *algorithm, /* I - Algorithm name */
* 'cupsHashString()' - Format a hash value as a hexadecimal string.
*
* The passed buffer must be at least 2 * hashsize + 1 characters in length.
*
* @since CUPS 2.2.7@
*/
const char * /* O - Formatted string */
+4 -3
Ver Arquivo
@@ -1,10 +1,11 @@
/*
* HTTP support routines for CUPS.
*
* Copyright 2007-2017 by Apple Inc.
* Copyright 2007-2018 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
*
* Licensed under Apache License v2.0. See the file "LICENSE" for more information.
* Licensed under Apache License v2.0. See the file "LICENSE" for more
* information.
*/
/*
@@ -1026,7 +1027,7 @@ httpSeparateURI(
*ptr = '\0';
if (*uri != ':')
if (*uri != ':' || *scheme == '.' || !*scheme)
{
*scheme = '\0';
return (HTTP_URI_STATUS_BAD_SCHEME);
+4 -4
Ver Arquivo
@@ -283,7 +283,7 @@ httpClearCookie(http_t *http) /* I - HTTP connection */
void
httpClearFields(http_t *http) /* I - HTTP connection */
{
http_field_t field; /* Curent field */
http_field_t field; /* Current field */
DEBUG_printf(("httpClearFields(http=%p)", (void *)http));
@@ -4027,7 +4027,7 @@ http_read(http_t *http, /* I - HTTP connection */
DEBUG_printf(("http_read(http=%p, buffer=%p, length=" CUPS_LLFMT ")", (void *)http, (void *)buffer, CUPS_LLCAST length));
if (!http->blocking)
if (!http->blocking || http->timeout_value > 0.0)
{
while (!httpWait(http, http->wait_value))
{
@@ -4626,7 +4626,7 @@ http_write(http_t *http, /* I - HTTP connection */
{
DEBUG_printf(("3http_write: About to write %d bytes.", (int)length));
if (http->timeout_cb)
if (http->timeout_value > 0.0)
{
#ifdef HAVE_POLL
struct pollfd pfd; /* Polled file descriptor */
@@ -4670,7 +4670,7 @@ http_write(http_t *http, /* I - HTTP connection */
http->error = errno;
return (-1);
}
else if (nfds == 0 && !(*http->timeout_cb)(http, http->timeout_data))
else if (nfds == 0 && (!http->timeout_cb || !(*http->timeout_cb)(http, http->timeout_data)))
{
#ifdef WIN32
http->error = WSAEWOULDBLOCK;
+107 -41
Ver Arquivo
@@ -21,9 +21,9 @@
* Local functions...
*/
static ipp_t *parse_collection(_ipp_file_t *f, _ipp_vars_t *v, _ipp_ferror_cb_t errorcb, void *user_data);
static int parse_value(_ipp_file_t *f, _ipp_vars_t *v, _ipp_ferror_cb_t errorcb, void *user_data, ipp_t *ipp, ipp_attribute_t **attr, int element);
static void report_error(_ipp_file_t *f, _ipp_ferror_cb_t errorcb, void *user_data, const char *message, ...) __attribute((__format__ (__printf__, 4, 5)));
static ipp_t *parse_collection(_ipp_file_t *f, _ipp_vars_t *v, void *user_data);
static int parse_value(_ipp_file_t *f, _ipp_vars_t *v, void *user_data, ipp_t *ipp, ipp_attribute_t **attr, int element);
static void report_error(_ipp_file_t *f, _ipp_vars_t *v, void *user_data, const char *message, ...) __attribute((__format__ (__printf__, 4, 5)));
/*
@@ -34,16 +34,16 @@ ipp_t * /* O - IPP attributes or @code NULL@ on failure */
_ippFileParse(
_ipp_vars_t *v, /* I - Variables */
const char *filename, /* I - Name of file to parse */
_ipp_ftoken_cb_t tokencb, /* I - Callback for unknown tokens */
_ipp_ferror_cb_t errorcb, /* I - Callback for errors */
void *user_data) /* I - User data pointer */
{
_ipp_file_t f; /* IPP data file information */
ipp_t *attrs = NULL; /* Active IPP message */
ipp_attribute_t *attr = NULL; /* Current attribute */
char token[1024]; /* Token string */
ipp_t *ignored = NULL; /* Ignored attributes */
DEBUG_printf(("_ippFileParse(v=%p, filename=\"%s\", tokencb=%p, errorcb=%p, user_data=%p)", (void *)v, filename, (void *)tokencb, (void *)errorcb, user_data));
DEBUG_printf(("_ippFileParse(v=%p, filename=\"%s\", user_data=%p)", (void *)v, filename, user_data));
/*
* Initialize file info...
@@ -63,7 +63,7 @@ _ippFileParse(
* Do the callback with a NULL token to setup any initial state...
*/
(*tokencb)(&f, v, user_data, NULL);
(*v->tokencb)(&f, v, user_data, NULL);
/*
* Read data file, using the callback function as needed...
@@ -81,12 +81,15 @@ _ippFileParse(
if (_ippFileReadToken(&f, name, sizeof(name)) && _ippFileReadToken(&f, temp, sizeof(temp)))
{
_ippVarsExpand(v, value, temp, sizeof(value));
_ippVarsSet(v, name, value);
if (_cups_strcasecmp(token, "DEFINE-DEFAULT") || !_ippVarsGet(v, name))
{
_ippVarsExpand(v, value, temp, sizeof(value));
_ippVarsSet(v, name, value);
}
}
else
{
report_error(&f, errorcb, user_data, "Missing %s name and/or value on line %d of \"%s\".", token, f.linenum, f.filename);
report_error(&f, v, user_data, "Missing %s name and/or value on line %d of \"%s\".", token, f.linenum, f.filename);
break;
}
}
@@ -104,28 +107,48 @@ _ippFileParse(
if (!_ippFileReadToken(&f, syntax, sizeof(syntax)))
{
report_error(&f, errorcb, user_data, "Missing ATTR syntax on line %d of \"%s\".", f.linenum, f.filename);
report_error(&f, v, user_data, "Missing ATTR syntax on line %d of \"%s\".", f.linenum, f.filename);
break;
}
else if ((value_tag = ippTagValue(syntax)) < IPP_TAG_UNSUPPORTED_VALUE)
{
report_error(&f, errorcb, user_data, "Bad ATTR syntax \"%s\" on line %d of \"%s\".", syntax, f.linenum, f.filename);
report_error(&f, v, user_data, "Bad ATTR syntax \"%s\" on line %d of \"%s\".", syntax, f.linenum, f.filename);
break;
}
if (!_ippFileReadToken(&f, name, sizeof(name)) || !name[0])
{
report_error(&f, errorcb, user_data, "Missing ATTR name on line %d of \"%s\".", f.linenum, f.filename);
report_error(&f, v, user_data, "Missing ATTR name on line %d of \"%s\".", f.linenum, f.filename);
break;
}
if (!v->attrcb || (*v->attrcb)(&f, user_data, name))
{
/*
* Add this attribute...
*/
attrs = f.attrs;
}
else
{
/*
* Ignore this attribute...
*/
if (!ignored)
ignored = ippNew();
attrs = ignored;
}
if (value_tag < IPP_TAG_INTEGER)
{
/*
* Add out-of-band attribute - no value string needed...
*/
ippAddOutOfBand(f.attrs, f.group_tag, value_tag, name);
ippAddOutOfBand(attrs, f.group_tag, value_tag, name);
}
else
{
@@ -133,9 +156,9 @@ _ippFileParse(
* Add attribute with one or more values...
*/
attr = ippAddString(f.attrs, f.group_tag, value_tag, name, NULL, NULL);
attr = ippAddString(attrs, f.group_tag, value_tag, name, NULL, NULL);
if (!parse_value(&f, v, errorcb, user_data, f.attrs, &attr, 0))
if (!parse_value(&f, v, user_data, attrs, &attr, 0))
break;
}
@@ -146,7 +169,7 @@ _ippFileParse(
* Additional value...
*/
if (!parse_value(&f, v, errorcb, user_data, f.attrs, &attr, ippGetCount(attr)))
if (!parse_value(&f, v, user_data, attrs, &attr, ippGetCount(attr)))
break;
}
else
@@ -155,18 +178,21 @@ _ippFileParse(
* Something else...
*/
attr = NULL;
attr = NULL;
attrs = NULL;
if (!(*tokencb)(&f, v, user_data, token))
if (!(*v->tokencb)(&f, v, user_data, token))
break;
}
}
/*
* Close the file and free attributes, then return...
* Close the file and free ignored attributes, then return any attributes we
* kept...
*/
cupsFileClose(f.fp);
ippDelete(ignored);
return (f.attrs);
}
@@ -364,7 +390,6 @@ static ipp_t * /* O - Collection value or @code NULL@ on error */
parse_collection(
_ipp_file_t *f, /* I - IPP data file */
_ipp_vars_t *v, /* I - IPP variables */
_ipp_ferror_cb_t errorcb, /* I - Error callback */
void *user_data) /* I - User data pointer */
{
ipp_t *col = ippNew(); /* Collection value */
@@ -400,14 +425,14 @@ parse_collection(
if (!_ippFileReadToken(f, syntax, sizeof(syntax)))
{
report_error(f, errorcb, user_data, "Missing ATTR syntax on line %d of \"%s\".", f->linenum, f->filename);
report_error(f, v, user_data, "Missing ATTR syntax on line %d of \"%s\".", f->linenum, f->filename);
ippDelete(col);
col = NULL;
break;
}
else if ((value_tag = ippTagValue(syntax)) < IPP_TAG_UNSUPPORTED_VALUE)
{
report_error(f, errorcb, user_data, "Bad ATTR syntax \"%s\" on line %d of \"%s\".", syntax, f->linenum, f->filename);
report_error(f, v, user_data, "Bad ATTR syntax \"%s\" on line %d of \"%s\".", syntax, f->linenum, f->filename);
ippDelete(col);
col = NULL;
break;
@@ -415,7 +440,7 @@ parse_collection(
if (!_ippFileReadToken(f, name, sizeof(name)) || !name[0])
{
report_error(f, errorcb, user_data, "Missing ATTR name on line %d of \"%s\".", f->linenum, f->filename);
report_error(f, v, user_data, "Missing ATTR name on line %d of \"%s\".", f->linenum, f->filename);
ippDelete(col);
col = NULL;
break;
@@ -437,7 +462,7 @@ parse_collection(
attr = ippAddString(col, IPP_TAG_ZERO, value_tag, name, NULL, NULL);
if (!parse_value(f, v, errorcb, user_data, col, &attr, 0))
if (!parse_value(f, v, user_data, col, &attr, 0))
{
ippDelete(col);
col = NULL;
@@ -452,7 +477,7 @@ parse_collection(
* Additional value...
*/
if (!parse_value(f, v, errorcb, user_data, col, &attr, ippGetCount(attr)))
if (!parse_value(f, v, user_data, col, &attr, ippGetCount(attr)))
{
ippDelete(col);
col = NULL;
@@ -465,7 +490,7 @@ parse_collection(
* Something else...
*/
report_error(f, errorcb, user_data, "Unknown directive \"%s\" on line %d of \"%s\".", token, f->linenum, f->filename);
report_error(f, v, user_data, "Unknown directive \"%s\" on line %d of \"%s\".", token, f->linenum, f->filename);
ippDelete(col);
col = NULL;
attr = NULL;
@@ -485,7 +510,6 @@ parse_collection(
static int /* O - 1 on success or 0 on error */
parse_value(_ipp_file_t *f, /* I - IPP data file */
_ipp_vars_t *v, /* I - IPP variables */
_ipp_ferror_cb_t errorcb, /* I - Error callback */
void *user_data,/* I - User data pointer */
ipp_t *ipp, /* I - IPP message */
ipp_attribute_t **attr, /* IO - IPP attribute */
@@ -497,7 +521,7 @@ parse_value(_ipp_file_t *f, /* I - IPP data file */
if (!_ippFileReadToken(f, temp, sizeof(temp)))
{
report_error(f, errorcb, user_data, "Missing value on line %d of \"%s\".", f->linenum, f->filename);
report_error(f, v, user_data, "Missing value on line %d of \"%s\".", f->linenum, f->filename);
return (0);
}
@@ -511,7 +535,49 @@ parse_value(_ipp_file_t *f, /* I - IPP data file */
case IPP_TAG_ENUM :
case IPP_TAG_INTEGER :
return (ippSetInteger(ipp, attr, element, strtol(value, NULL, 0)));
return (ippSetInteger(ipp, attr, element, (int)strtol(value, NULL, 0)));
break;
case IPP_TAG_DATE :
{
int year, /* Year */
month, /* Month */
day, /* Day of month */
hour, /* Hour */
minute, /* Minute */
second, /* Second */
utc_offset = 0; /* Timezone offset from UTC */
ipp_uchar_t date[11]; /* dateTime value */
if (sscanf(value, "%d-%d-%dT%d:%d:%d%d", &year, &month, &day, &hour, &minute, &second, &utc_offset) < 6)
{
report_error(f, v, user_data, "Bad dateTime value \"%s\" on line %d of \"%s\".", value, f->linenum, f->filename);
return (0);
}
date[0] = (ipp_uchar_t)(year >> 8);
date[1] = (ipp_uchar_t)(year & 255);
date[2] = (ipp_uchar_t)month;
date[3] = (ipp_uchar_t)day;
date[4] = (ipp_uchar_t)hour;
date[5] = (ipp_uchar_t)minute;
date[6] = (ipp_uchar_t)second;
date[7] = 0;
if (utc_offset < 0)
{
utc_offset = -utc_offset;
date[8] = (ipp_uchar_t)'-';
}
else
{
date[8] = (ipp_uchar_t)'+';
}
date[9] = (ipp_uchar_t)(utc_offset / 100);
date[10] = (ipp_uchar_t)(utc_offset % 100);
return (ippSetDate(ipp, attr, element, date));
}
break;
case IPP_TAG_RESOLUTION :
@@ -529,7 +595,7 @@ parse_value(_ipp_file_t *f, /* I - IPP data file */
if (ptr <= value || xres <= 0 || yres <= 0 || !ptr || (_cups_strcasecmp(ptr, "dpi") && _cups_strcasecmp(ptr, "dpc") && _cups_strcasecmp(ptr, "dpcm") && _cups_strcasecmp(ptr, "other")))
{
report_error(f, errorcb, user_data, "Bad resolution value \"%s\" on line %d of \"%s\".", value, f->linenum, f->filename);
report_error(f, v, user_data, "Bad resolution value \"%s\" on line %d of \"%s\".", value, f->linenum, f->filename);
return (0);
}
@@ -549,7 +615,7 @@ parse_value(_ipp_file_t *f, /* I - IPP data file */
if (sscanf(value, "%d-%d", &lower, &upper) != 2)
{
report_error(f, errorcb, user_data, "Bad rangeOfInteger value \"%s\" on line %d of \"%s\".", value, f->linenum, f->filename);
report_error(f, v, user_data, "Bad rangeOfInteger value \"%s\" on line %d of \"%s\".", value, f->linenum, f->filename);
return (0);
}
@@ -581,11 +647,11 @@ parse_value(_ipp_file_t *f, /* I - IPP data file */
if (strcmp(value, "{"))
{
report_error(f, errorcb, user_data, "Bad ATTR collection value on line %d of \"%s\".", f->linenum, f->filename);
report_error(f, v, user_data, "Bad ATTR collection value on line %d of \"%s\".", f->linenum, f->filename);
return (0);
}
if ((col = parse_collection(f, v, errorcb, user_data)) == NULL)
if ((col = parse_collection(f, v, user_data)) == NULL)
return (0);
status = ippSetCollection(ipp, attr, element, col);
@@ -596,7 +662,7 @@ parse_value(_ipp_file_t *f, /* I - IPP data file */
break;
default :
report_error(f, errorcb, user_data, "Unsupported ATTR value on line %d of \"%s\".", f->linenum, f->filename);
report_error(f, v, user_data, "Unsupported ATTR value on line %d of \"%s\".", f->linenum, f->filename);
return (0);
}
@@ -610,10 +676,10 @@ parse_value(_ipp_file_t *f, /* I - IPP data file */
static void
report_error(
_ipp_file_t *f, /* I - IPP data file */
_ipp_ferror_cb_t errorcb, /* I - Error callback function, if any */
void *user_data, /* I - User data pointer */
const char *message, /* I - Printf-style message */
_ipp_file_t *f, /* I - IPP data file */
_ipp_vars_t *v, /* I - Error callback function, if any */
void *user_data, /* I - User data pointer */
const char *message, /* I - Printf-style message */
...) /* I - Additional arguments as needed */
{
char buffer[8192]; /* Formatted string */
@@ -624,8 +690,8 @@ report_error(
vsnprintf(buffer, sizeof(buffer), message, ap);
va_end(ap);
if (errorcb)
(*errorcb)(f, user_data, buffer);
if (v->errorcb)
(*v->errorcb)(f, user_data, buffer);
else
fprintf(stderr, "%s\n", buffer);
}
+106 -3
Ver Arquivo
@@ -39,7 +39,105 @@ extern "C" {
* Structures...
*/
typedef struct /**** Attribute mapping data ****/
typedef union _ipp_request_u /**** Request Header ****/
{
struct /* Any Header */
{
ipp_uchar_t version[2]; /* Protocol version number */
int op_status; /* Operation ID or status code*/
int request_id; /* Request ID */
} any;
struct /* Operation Header */
{
ipp_uchar_t version[2]; /* Protocol version number */
ipp_op_t operation_id; /* Operation ID */
int request_id; /* Request ID */
} op;
struct /* Status Header */
{
ipp_uchar_t version[2]; /* Protocol version number */
ipp_status_t status_code; /* Status code */
int request_id; /* Request ID */
} status;
/**** New in CUPS 1.1.19 ****/
struct /* Event Header @since CUPS 1.1.19/macOS 10.3@ */
{
ipp_uchar_t version[2]; /* Protocol version number */
ipp_status_t status_code; /* Status code */
int request_id; /* Request ID */
} event;
} _ipp_request_t;
typedef union _ipp_value_u /**** Attribute Value ****/
{
int integer; /* Integer/enumerated value */
char boolean; /* Boolean value */
ipp_uchar_t date[11]; /* Date/time value */
struct
{
int xres, /* Horizontal resolution */
yres; /* Vertical resolution */
ipp_res_t units; /* Resolution units */
} resolution; /* Resolution value */
struct
{
int lower, /* Lower value */
upper; /* Upper value */
} range; /* Range of integers value */
struct
{
char *language; /* Language code */
char *text; /* String */
} string; /* String with language value */
struct
{
int length; /* Length of attribute */
void *data; /* Data in attribute */
} unknown; /* Unknown attribute type */
/**** New in CUPS 1.1.19 ****/
ipp_t *collection; /* Collection value @since CUPS 1.1.19/macOS 10.3@ */
} _ipp_value_t;
struct _ipp_attribute_s /**** IPP attribute ****/
{
ipp_attribute_t *next; /* Next attribute in list */
ipp_tag_t group_tag, /* Job/Printer/Operation group tag */
value_tag; /* What type of value is it? */
char *name; /* Name of attribute */
int num_values; /* Number of values */
_ipp_value_t values[1]; /* Values */
};
struct _ipp_s /**** IPP Request/Response/Notification ****/
{
ipp_state_t state; /* State of request */
_ipp_request_t request; /* Request header */
ipp_attribute_t *attrs; /* Attributes */
ipp_attribute_t *last; /* Last attribute in list */
ipp_attribute_t *current; /* Current attribute (for read/write) */
ipp_tag_t curtag; /* Current attribute group tag */
/**** New in CUPS 1.2 ****/
ipp_attribute_t *prev; /* Previous attribute (for read) @since CUPS 1.2/macOS 10.5@ */
/**** New in CUPS 1.4.4 ****/
int use; /* Use count @since CUPS 1.4.4/macOS 10.6.?@ */
/**** New in CUPS 2.0 ****/
int atend, /* At end of list? */
curindex; /* Current attribute index for hierarchical search */
};
typedef struct _ipp_option_s /**** Attribute mapping data ****/
{
int multivalue; /* Option has multiple values? */
const char *name; /* Option/attribute name */
@@ -53,6 +151,8 @@ typedef struct /**** Attribute mapping data ****/
typedef struct _ipp_file_s _ipp_file_t;/**** File Parser ****/
typedef struct _ipp_vars_s _ipp_vars_t;/**** Variables ****/
typedef int (*_ipp_fattr_cb_t)(_ipp_file_t *f, void *user_data, const char *attr);
/**** File Attribute (Filter) Callback ****/
typedef int (*_ipp_ferror_cb_t)(_ipp_file_t *f, void *user_data, const char *error);
/**** File Parser Error Callback ****/
typedef int (*_ipp_ftoken_cb_t)(_ipp_file_t *f, _ipp_vars_t *v, void *user_data, const char *token);
@@ -71,6 +171,9 @@ struct _ipp_vars_s /**** Variables ****/
int num_vars; /* Number of variables */
cups_option_t *vars; /* Array of variables */
int password_tries; /* Number of retries for password */
_ipp_fattr_cb_t attrcb; /* Attribute (filter) callback */
_ipp_ferror_cb_t errorcb; /* Error callback */
_ipp_ftoken_cb_t tokencb; /* Token callback */
};
struct _ipp_file_s /**** File Parser */
@@ -94,14 +197,14 @@ extern const char *_ippCheckOptions(void);
extern _ipp_option_t *_ippFindOption(const char *name);
/* ipp-file.c */
extern ipp_t *_ippFileParse(_ipp_vars_t *v, const char *filename, _ipp_ftoken_cb_t tokencb, _ipp_ferror_cb_t errorcb, void *user_data);
extern ipp_t *_ippFileParse(_ipp_vars_t *v, const char *filename, void *user_data);
extern int _ippFileReadToken(_ipp_file_t *f, char *token, size_t tokensize);
/* ipp-vars.c */
extern void _ippVarsDeinit(_ipp_vars_t *v);
extern void _ippVarsExpand(_ipp_vars_t *v, char *dst, const char *src, size_t dstsize) __attribute__((nonnull(1,2,3)));
extern const char *_ippVarsGet(_ipp_vars_t *v, const char *name);
extern void _ippVarsInit(_ipp_vars_t *v);
extern void _ippVarsInit(_ipp_vars_t *v, _ipp_fattr_cb_t attrcb, _ipp_ferror_cb_t errorcb, _ipp_ftoken_cb_t tokencb);
extern const char *_ippVarsPasswordCB(const char *prompt, http_t *http, const char *method, const char *resource, void *user_data);
extern int _ippVarsSet(_ipp_vars_t *v, const char *name, const char *value);
+63 -46
Ver Arquivo
@@ -1,10 +1,11 @@
/*
* Internet Printing Protocol support functions for CUPS.
*
* Copyright 2007-2017 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
* Copyright © 2007-2018 by Apple Inc.
* Copyright © 1997-2007 by Easy Software Products, all rights reserved.
*
* Licensed under Apache License v2.0. See the file "LICENSE" for more information.
* Licensed under Apache License v2.0. See the file "LICENSE" for more
* information.
*/
/*
@@ -615,7 +616,21 @@ static const char * const ipp_document_states[] =
{ /* printer-state enums */
"idle",
"processing",
"stopped",
"stopped"
},
* const ipp_resource_states[] =
{ /* resource-state enums */
"pending",
"available",
"installed",
"canceled",
"aborted"
},
* const ipp_system_states[] =
{ /* system-state enums */
"idle",
"processing",
"stopped"
};
@@ -915,7 +930,9 @@ ippCreateRequestedArray(ipp_t *request) /* I - IPP request */
"force-front-side-actual",
"imposition-template-actual",
"impressions",
"impressions-col",
"impressions-completed",
"impressions-completed-col",
"impressions-completed-current-copy",
"insert-sheet-actual",
"k-octets",
@@ -926,7 +943,9 @@ ippCreateRequestedArray(ipp_t *request) /* I - IPP request */
"media-col-actual",
"media-input-tray-check-actual",
"media-sheets",
"media-sheets-col",
"media-sheets-completed",
"media-sheets-completed-col",
"more-info",
"multiple-object-handling-actual", /* IPP 3D */
"number-up-actual",
@@ -938,7 +957,9 @@ ippCreateRequestedArray(ipp_t *request) /* I - IPP request */
"page-order-received-actual",
"page-ranges-actual",
"pages",
"pages-col",
"pages-completed",
"pages-completed-col",
"pages-completed-current-copy",
"platform-temperature-actual", /* IPP 3D */
"presentation-direction-number-up-actual",
@@ -1204,13 +1225,17 @@ ippCreateRequestedArray(ipp_t *request) /* I - IPP request */
"job-hold-until-actual",
"job-id",
"job-impressions",
"job-impressions-col",
"job-impressions-completed",
"job-impressions-completed-col",
"job-k-octets",
"job-k-octets-processed",
"job-mandatory-attributes",
"job-media-progress", /* CUPS extension */
"job-media-sheets",
"job-media-sheets-col",
"job-media-sheets-completed",
"job-media-sheets-completed-col",
"job-message-from-operator",
"job-more-info",
"job-name",
@@ -1218,7 +1243,9 @@ ippCreateRequestedArray(ipp_t *request) /* I - IPP request */
"job-originating-user-name",
"job-originating-user-uri",
"job-pages",
"job-pages-col",
"job-pages-completed",
"job-pages-completed-col",
"job-pages-completed-current-copy",
"job-printer-state-message", /* CUPS extension */
"job-printer-state-reasons", /* CUPS extension */
@@ -1596,6 +1623,8 @@ ippCreateRequestedArray(ipp_t *request) /* I - IPP request */
"document-natural-language-default",
"document-natural-language-supported",
"document-password-supported",
"document-privacy-attributes", /* IPP Privacy Attributes */
"document-privacy-scope", /* IPP Privacy Attributes */
"generated-natural-language-supported",
"identify-actions-default",
"identify-actions-supported",
@@ -1617,6 +1646,8 @@ ippCreateRequestedArray(ipp_t *request) /* I - IPP request */
"job-password-encryption-supported",
"job-password-supported",
"job-presets-supported", /* IPP Presets */
"job-privacy-attributes", /* IPP Privacy Attributes */
"job-privacy-scope", /* IPP Privacy Attributes */
"job-quota-period", /* CUPS extension */
"job-resolvers-supported",
"job-settable-attributes-supported",
@@ -1657,6 +1688,8 @@ ippCreateRequestedArray(ipp_t *request) /* I - IPP request */
"printer-charge-info",
"printer-charge-info-uri",
"printer-commands", /* CUPS extension */
"printer-config-change-date-time",
"printer-config-change-time",
"printer-current-time",
"printer-detailed-status-messages",
"printer-device-id",
@@ -1719,6 +1752,8 @@ ippCreateRequestedArray(ipp_t *request) /* I - IPP request */
"requesting-user-name-denied", /* CUPS extension */
"requesting-user-uri-supported",
"subordinate-printers-supported",
"subscription-privacy-attributes", /* IPP Privacy Attributes */
"subscription-privacy-scope", /* IPP Privacy Attributes */
"urf-supported", /* CUPS extension */
"uri-authentication-supported",
"uri-security-supported",
@@ -1738,7 +1773,7 @@ ippCreateRequestedArray(ipp_t *request) /* I - IPP request */
"notify-subscriber-user-name",
"notify-subscriber-user-uri",
"notify-subscription-id",
"subscriptions-uuid"
"notify-subscription-uuid"
};
static const char * const subscription_template[] =
{ /* subscription-template group */
@@ -1902,59 +1937,31 @@ ippEnumString(const char *attrname, /* I - Attribute name */
* Check for standard enum values...
*/
if (!strcmp(attrname, "document-state") &&
enumvalue >= 3 &&
enumvalue < (3 + (int)(sizeof(ipp_document_states) /
sizeof(ipp_document_states[0]))))
if (!strcmp(attrname, "document-state") && enumvalue >= 3 && enumvalue < (3 + (int)(sizeof(ipp_document_states) / sizeof(ipp_document_states[0]))))
return (ipp_document_states[enumvalue - 3]);
else if (!strcmp(attrname, "finishings") ||
!strcmp(attrname, "finishings-actual") ||
!strcmp(attrname, "finishings-default") ||
!strcmp(attrname, "finishings-ready") ||
!strcmp(attrname, "finishings-supported") ||
!strcmp(attrname, "job-finishings") ||
!strcmp(attrname, "job-finishings-default") ||
!strcmp(attrname, "job-finishings-supported"))
else if (!strcmp(attrname, "finishings") || !strcmp(attrname, "finishings-actual") || !strcmp(attrname, "finishings-default") || !strcmp(attrname, "finishings-ready") || !strcmp(attrname, "finishings-supported") || !strcmp(attrname, "job-finishings") || !strcmp(attrname, "job-finishings-default") || !strcmp(attrname, "job-finishings-supported"))
{
if (enumvalue >= 3 &&
enumvalue < (3 + (int)(sizeof(ipp_finishings) /
sizeof(ipp_finishings[0]))))
if (enumvalue >= 3 && enumvalue < (3 + (int)(sizeof(ipp_finishings) / sizeof(ipp_finishings[0]))))
return (ipp_finishings[enumvalue - 3]);
else if (enumvalue >= 0x40000000 &&
enumvalue <= (0x40000000 + (int)(sizeof(ipp_finishings_vendor) /
sizeof(ipp_finishings_vendor[0]))))
else if (enumvalue >= 0x40000000 && enumvalue <= (0x40000000 + (int)(sizeof(ipp_finishings_vendor) / sizeof(ipp_finishings_vendor[0]))))
return (ipp_finishings_vendor[enumvalue - 0x40000000]);
}
else if ((!strcmp(attrname, "job-collation-type") ||
!strcmp(attrname, "job-collation-type-actual")) &&
enumvalue >= 3 &&
enumvalue < (3 + (int)(sizeof(ipp_job_collation_types) /
sizeof(ipp_job_collation_types[0]))))
else if ((!strcmp(attrname, "job-collation-type") || !strcmp(attrname, "job-collation-type-actual")) && enumvalue >= 3 && enumvalue < (3 + (int)(sizeof(ipp_job_collation_types) / sizeof(ipp_job_collation_types[0]))))
return (ipp_job_collation_types[enumvalue - 3]);
else if (!strcmp(attrname, "job-state") &&
enumvalue >= IPP_JSTATE_PENDING && enumvalue <= IPP_JSTATE_COMPLETED)
else if (!strcmp(attrname, "job-state") && enumvalue >= IPP_JSTATE_PENDING && enumvalue <= IPP_JSTATE_COMPLETED)
return (ipp_job_states[enumvalue - IPP_JSTATE_PENDING]);
else if (!strcmp(attrname, "operations-supported"))
return (ippOpString((ipp_op_t)enumvalue));
else if ((!strcmp(attrname, "orientation-requested") ||
!strcmp(attrname, "orientation-requested-actual") ||
!strcmp(attrname, "orientation-requested-default") ||
!strcmp(attrname, "orientation-requested-supported")) &&
enumvalue >= 3 &&
enumvalue < (3 + (int)(sizeof(ipp_orientation_requesteds) /
sizeof(ipp_orientation_requesteds[0]))))
else if ((!strcmp(attrname, "orientation-requested") || !strcmp(attrname, "orientation-requested-actual") || !strcmp(attrname, "orientation-requested-default") || !strcmp(attrname, "orientation-requested-supported")) && enumvalue >= 3 && enumvalue < (3 + (int)(sizeof(ipp_orientation_requesteds) / sizeof(ipp_orientation_requesteds[0]))))
return (ipp_orientation_requesteds[enumvalue - 3]);
else if ((!strcmp(attrname, "print-quality") ||
!strcmp(attrname, "print-quality-actual") ||
!strcmp(attrname, "print-quality-default") ||
!strcmp(attrname, "print-quality-supported")) &&
enumvalue >= 3 &&
enumvalue < (3 + (int)(sizeof(ipp_print_qualities) /
sizeof(ipp_print_qualities[0]))))
else if ((!strcmp(attrname, "print-quality") || !strcmp(attrname, "print-quality-actual") || !strcmp(attrname, "print-quality-default") || !strcmp(attrname, "print-quality-supported")) && enumvalue >= 3 && enumvalue < (3 + (int)(sizeof(ipp_print_qualities) / sizeof(ipp_print_qualities[0]))))
return (ipp_print_qualities[enumvalue - 3]);
else if (!strcmp(attrname, "printer-state") &&
enumvalue >= IPP_PSTATE_IDLE && enumvalue <= IPP_PSTATE_STOPPED)
else if (!strcmp(attrname, "printer-state") && enumvalue >= IPP_PSTATE_IDLE && enumvalue <= IPP_PSTATE_STOPPED)
return (ipp_printer_states[enumvalue - IPP_PSTATE_IDLE]);
else if (!strcmp(attrname, "resource-state") && enumvalue >= IPP_RSTATE_PENDING && enumvalue <= IPP_RSTATE_ABORTED)
return (ipp_resource_states[enumvalue - IPP_RSTATE_PENDING]);
else if (!strcmp(attrname, "system-state") && enumvalue >= IPP_SSTATE_IDLE && enumvalue <= IPP_SSTATE_STOPPED)
return (ipp_system_states[enumvalue - IPP_SSTATE_IDLE]);
/*
* Not a standard enum value, just return the decimal equivalent...
@@ -2046,6 +2053,16 @@ ippEnumValue(const char *attrname, /* I - Attribute name */
num_strings = (int)(sizeof(ipp_printer_states) / sizeof(ipp_printer_states[0]));
strings = ipp_printer_states;
}
else if (!strcmp(attrname, "resource-state"))
{
num_strings = (int)(sizeof(ipp_resource_states) / sizeof(ipp_resource_states[0]));
strings = ipp_resource_states;
}
else if (!strcmp(attrname, "system-state"))
{
num_strings = (int)(sizeof(ipp_system_states) / sizeof(ipp_system_states[0]));
strings = ipp_system_states;
}
else
return (-1);
+8 -1
Ver Arquivo
@@ -157,9 +157,16 @@ _ippVarsGet(_ipp_vars_t *v, /* I - IPP variables */
*/
void
_ippVarsInit(_ipp_vars_t *v) /* I - IPP variables */
_ippVarsInit(_ipp_vars_t *v, /* I - IPP variables */
_ipp_fattr_cb_t attrcb, /* I - Attribute (filter) callback */
_ipp_ferror_cb_t errorcb, /* I - Error callback */
_ipp_ftoken_cb_t tokencb) /* I - Token callback */
{
memset(v, 0, sizeof(_ipp_vars_t));
v->attrcb = attrcb;
v->errorcb = errorcb;
v->tokencb = tokencb;
}
+42 -11
Ver Arquivo
@@ -1,10 +1,11 @@
/*
* Internet Printing Protocol functions for CUPS.
*
* Copyright 2007-2017 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
* Copyright © 2007-2018 by Apple Inc.
* Copyright © 1997-2007 by Easy Software Products, all rights reserved.
*
* Licensed under Apache License v2.0. See the file "LICENSE" for more information.
* Licensed under Apache License v2.0. See the file "LICENSE" for more
* information.
*/
/*
@@ -3083,6 +3084,13 @@ ippReadIO(void *src, /* I - Data source */
ipp->state = IPP_STATE_DATA;
break;
}
else if (tag == IPP_TAG_ZERO || (tag == IPP_TAG_OPERATION && ipp->curtag != IPP_TAG_ZERO))
{
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Invalid group tag."), 1);
DEBUG_printf(("1ippReadIO: bad tag 0x%02x.", tag));
_cupsBufferRelease((char *)buffer);
return (IPP_STATE_ERROR);
}
else if (tag < IPP_TAG_UNSUPPORTED_VALUE)
{
/*
@@ -3380,7 +3388,10 @@ ippReadIO(void *src, /* I - Data source */
value->boolean = (char)buffer[0];
break;
case IPP_TAG_NOVALUE :
case IPP_TAG_UNSUPPORTED_VALUE :
case IPP_TAG_DEFAULT :
case IPP_TAG_UNKNOWN :
case IPP_TAG_NOVALUE :
case IPP_TAG_NOTSETTABLE :
case IPP_TAG_DELETEATTR :
case IPP_TAG_ADMINDEFINE :
@@ -3400,6 +3411,7 @@ ippReadIO(void *src, /* I - Data source */
case IPP_TAG_TEXT :
case IPP_TAG_NAME :
case IPP_TAG_RESERVED_STRING :
case IPP_TAG_KEYWORD :
case IPP_TAG_URI :
case IPP_TAG_URISCHEME :
@@ -4300,18 +4312,22 @@ ippSetString(ipp_t *ipp, /* I - IPP message */
{
char *temp; /* Temporary string */
_ipp_value_t *value; /* Current value */
ipp_tag_t value_tag; /* Value tag */
/*
* Range check input...
*/
if (attr && *attr)
value_tag = (*attr)->value_tag & IPP_TAG_CUPS_MASK;
else
value_tag = IPP_TAG_ZERO;
if (!ipp || !attr || !*attr ||
((*attr)->value_tag != IPP_TAG_TEXTLANG &&
(*attr)->value_tag != IPP_TAG_NAMELANG &&
((*attr)->value_tag < IPP_TAG_TEXT ||
(*attr)->value_tag > IPP_TAG_MIMETYPE)) ||
element < 0 || element > (*attr)->num_values || !strvalue)
(value_tag < IPP_TAG_TEXT && value_tag != IPP_TAG_TEXTLANG &&
value_tag != IPP_TAG_NAMELANG) || value_tag > IPP_TAG_MIMETYPE ||
!strvalue)
return (0);
/*
@@ -5013,9 +5029,16 @@ ippValidateAttribute(
}
else if (*ptr & 0x80)
break;
else if ((*ptr < ' ' && *ptr != '\n' && *ptr != '\r' && *ptr != '\t') || *ptr == 0x7f)
break;
}
if (*ptr)
if (*ptr < ' ' || *ptr == 0x7f)
{
ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST, _("\"%s\": Bad text value \"%s\" - bad control character (PWG 5100.14 section 8.3)."), attr->name, attr->values[i].string.text);
return (0);
}
else if (*ptr)
{
ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST, _("\"%s\": Bad text value \"%s\" - bad UTF-8 sequence (RFC 8011 section 5.1.2)."), attr->name, attr->values[i].string.text);
return (0);
@@ -5064,9 +5087,16 @@ ippValidateAttribute(
}
else if (*ptr & 0x80)
break;
else if (*ptr < ' ' || *ptr == 0x7f)
break;
}
if (*ptr)
if (*ptr < ' ' || *ptr == 0x7f)
{
ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST, _("\"%s\": Bad name value \"%s\" - bad control character (PWG 5100.14 section 8.1)."), attr->name, attr->values[i].string.text);
return (0);
}
else if (*ptr)
{
ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST, _("\"%s\": Bad name value \"%s\" - bad UTF-8 sequence (RFC 8011 section 5.1.3)."), attr->name, attr->values[i].string.text);
return (0);
@@ -6357,6 +6387,7 @@ ipp_free_values(ipp_attribute_t *attr, /* I - Attribute to free values from */
}
break;
case IPP_TAG_UNSUPPORTED_VALUE :
case IPP_TAG_DEFAULT :
case IPP_TAG_UNKNOWN :
case IPP_TAG_NOVALUE :
+25 -143
Ver Arquivo
@@ -1,10 +1,11 @@
/*
* Internet Printing Protocol definitions for CUPS.
*
* Copyright 2007-2017 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products.
* Copyright © 2007-2018 by Apple Inc.
* Copyright © 1997-2006 by Easy Software Products.
*
* Licensed under Apache License v2.0. See the file "LICENSE" for more information.
* Licensed under Apache License v2.0. See the file "LICENSE" for more
* information.
*/
#ifndef _CUPS_IPP_H_
@@ -73,11 +74,11 @@ extern "C" {
typedef enum ipp_dstate_e /**** Document states @exclude all@ ****/
{
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 */
IPP_DSTATE_PENDING = 3, /* Document is pending */
IPP_DSTATE_PROCESSING = 5, /* Document is processing */
IPP_DSTATE_CANCELED = 7, /* Document is canceled */
IPP_DSTATE_ABORTED, /* Document is aborted */
IPP_DSTATE_COMPLETED /* Document is completed */
# ifndef _CUPS_NO_DEPRECATED
# define IPP_DOCUMENT_PENDING IPP_DSTATE_PENDING
@@ -489,6 +490,22 @@ typedef enum ipp_res_e /**** Resolution units ****/
IPP_RES_PER_CM /* Pixels per centimeter */
} ipp_res_t;
typedef enum ipp_rstate_e /**** resource-state values ****/
{
IPP_RSTATE_PENDING = 3, /* Resource is created but has no data yet. */
IPP_RSTATE_AVAILABLE, /* Resource is available for installation. */
IPP_RSTATE_INSTALLED, /* Resource is installed. */
IPP_RSTATE_CANCELED, /* Resource has been canceled and is pending deletion. */
IPP_RSTATE_ABORTED /* Resource has been aborted and is pending deletion. */
} ipp_rstate_t;
typedef enum ipp_sstate_e /**** system-state values ****/
{
IPP_SSTATE_IDLE = 3, /* At least one printer is idle and none are processing a job. */
IPP_SSTATE_PROCESSING, /* At least one printer is processing a job. */
IPP_SSTATE_STOPPED /* All printers are stopped. */
} ipp_sstate_t;
typedef enum ipp_state_e /**** ipp_t state values ****/
{
IPP_STATE_ERROR = -1, /* An error occurred */
@@ -724,141 +741,6 @@ typedef int (*ipp_copycb_t)(void *context, ipp_t *dst, ipp_attribute_t *attr);
/**** ippCopyAttributes callback function @since CUPS 1.6/macOS 10.8 ****/
/*
* The following structures are PRIVATE starting with CUPS 1.6/macOS 10.8.
* 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 1 to cause the private IPP structures to be
* exposed in CUPS 1.6. This happens automatically on macOS 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.
*/
# 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__)
# if defined(MAC_OS_X_VERSION_10_8) && MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_8
/* Building for 10.7 and earlier */
# define _IPP_PRIVATE_STRUCTURES 1
# elif !defined(MAC_OS_X_VERSION_10_8)
/* 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_ */
# if _IPP_PRIVATE_STRUCTURES
typedef union _ipp_request_u /**** Request Header ****/
{
struct /* Any Header */
{
ipp_uchar_t version[2]; /* Protocol version number */
int op_status; /* Operation ID or status code*/
int request_id; /* Request ID */
} any;
struct /* Operation Header */
{
ipp_uchar_t version[2]; /* Protocol version number */
ipp_op_t operation_id; /* Operation ID */
int request_id; /* Request ID */
} op;
struct /* Status Header */
{
ipp_uchar_t version[2]; /* Protocol version number */
ipp_status_t status_code; /* Status code */
int request_id; /* Request ID */
} status;
/**** New in CUPS 1.1.19 ****/
struct /* Event Header @since CUPS 1.1.19/macOS 10.3@ */
{
ipp_uchar_t version[2]; /* Protocol version number */
ipp_status_t status_code; /* Status code */
int request_id; /* Request ID */
} event;
} _ipp_request_t;
/**** New in CUPS 1.1.19 ****/
typedef union _ipp_value_u /**** Attribute Value ****/
{
int integer; /* Integer/enumerated value */
char boolean; /* Boolean value */
ipp_uchar_t date[11]; /* Date/time value */
struct
{
int xres, /* Horizontal resolution */
yres; /* Vertical resolution */
ipp_res_t units; /* Resolution units */
} resolution; /* Resolution value */
struct
{
int lower, /* Lower value */
upper; /* Upper value */
} range; /* Range of integers value */
struct
{
char *language; /* Language code */
char *text; /* String */
} string; /* String with language value */
struct
{
int length; /* Length of attribute */
void *data; /* Data in attribute */
} unknown; /* Unknown attribute type */
/**** New in CUPS 1.1.19 ****/
ipp_t *collection; /* Collection value @since CUPS 1.1.19/macOS 10.3@ */
} _ipp_value_t;
typedef _ipp_value_t ipp_value_t; /**** Convenience typedef that will be removed @private@ ****/
struct _ipp_attribute_s /**** IPP attribute ****/
{
ipp_attribute_t *next; /* Next attribute in list */
ipp_tag_t group_tag, /* Job/Printer/Operation group tag */
value_tag; /* What type of value is it? */
char *name; /* Name of attribute */
int num_values; /* Number of values */
_ipp_value_t values[1]; /* Values */
};
struct _ipp_s /**** IPP Request/Response/Notification ****/
{
ipp_state_t state; /* State of request */
_ipp_request_t request; /* Request header */
ipp_attribute_t *attrs; /* Attributes */
ipp_attribute_t *last; /* Last attribute in list */
ipp_attribute_t *current; /* Current attribute (for read/write) */
ipp_tag_t curtag; /* Current attribute group tag */
/**** New in CUPS 1.2 ****/
ipp_attribute_t *prev; /* Previous attribute (for read) @since CUPS 1.2/macOS 10.5@ */
/**** New in CUPS 1.4.4 ****/
int use; /* Use count @since CUPS 1.4.4/macOS 10.6.?@ */
/**** New in CUPS 2.0 ****/
int atend, /* At end of list? */
curindex; /* Current attribute index for hierarchical search */
};
# endif /* _IPP_PRIVATE_STRUCTURES */
/*
* Prototypes...
*/
+10 -1
Ver Arquivo
@@ -1,5 +1,5 @@
LIBRARY libcups2
VERSION 2.13
VERSION 2.14
EXPORTS
_cupsArrayAddStrings
_cupsArrayNewStrings
@@ -95,7 +95,15 @@ _httpTLSWrite
_httpUpdate
_httpWait
_ippCheckOptions
_ippFileParse
_ippFileReadToken
_ippFindOption
_ippVarsDeinit
_ippVarsExpand
_ippVarsGet
_ippVarsInit
_ippVarsPasswordCB
_ippVarsSet
_ppdCacheCreateWithFile
_ppdCacheCreateWithPPD
_ppdCacheDestroy
@@ -176,6 +184,7 @@ cupsDoAuthentication
cupsDoFileRequest
cupsDoIORequest
cupsDoRequest
cupsEncodeOption
cupsEncodeOptions
cupsEncodeOptions2
cupsEncryption
+1 -1
Ver Arquivo
@@ -72,7 +72,7 @@ httpMD5Final(const char *nonce, /* I - Server nonce value */
snprintf(line, sizeof(line), "%s:%s", method, resource);
cupsHashData("md5", (unsigned char *)line, strlen(line), sum, sizeof(sum));
httpMD5String(sum, a2);
cupsHashString(sum, sizeof(sum), a2, sizeof(a2));
/*
* Then combine A1 (MD5 of username, realm, and password) with the nonce
+49 -19
Ver Arquivo
@@ -1,9 +1,10 @@
/*
* PPD cache implementation for CUPS.
*
* Copyright 2010-2017 by Apple Inc.
* Copyright © 2010-2018 by Apple Inc.
*
* Licensed under Apache License v2.0. See the file "LICENSE" for more information.
* Licensed under Apache License v2.0. See the file "LICENSE" for more
* information.
*/
/*
@@ -3170,6 +3171,41 @@ _ppdCreateFromIPP(char *buffer, /* I - Filename buffer */
httpClose(http);
}
/*
* Password/PIN printing...
*/
if ((attr = ippFindAttribute(response, "job-password-supported", IPP_TAG_INTEGER)) != NULL)
{
char pattern[33]; /* Password pattern */
int maxlen = ippGetInteger(attr, 0);
/* Maximum length */
const char *repertoire = ippGetString(ippFindAttribute(response, "job-password-repertoire-configured", IPP_TAG_KEYWORD), 0, NULL);
/* Type of password */
if (maxlen > (int)(sizeof(pattern) - 1))
maxlen = sizeof(pattern) - 1;
if (!repertoire || !strcmp(repertoire, "iana_us-ascii_digits"))
memset(pattern, '1', maxlen);
else if (!strcmp(repertoire, "iana_us-ascii_letters"))
memset(pattern, 'A', maxlen);
else if (!strcmp(repertoire, "iana_us-ascii_complex"))
memset(pattern, 'C', maxlen);
else if (!strcmp(repertoire, "iana_us-ascii_any"))
memset(pattern, '.', maxlen);
else if (!strcmp(repertoire, "iana_utf-8_digits"))
memset(pattern, 'N', maxlen);
else if (!strcmp(repertoire, "iana_utf-8_letters"))
memset(pattern, 'U', maxlen);
else
memset(pattern, '*', maxlen);
pattern[maxlen] = '\0';
cupsFilePrintf(fp, "*cupsPassword: \"%s\"\n", pattern);
}
/*
* Filters...
*/
@@ -3178,24 +3214,18 @@ _ppdCreateFromIPP(char *buffer, /* I - Filename buffer */
{
is_apple = ippContainsString(attr, "image/urf");
is_pdf = ippContainsString(attr, "application/pdf");
is_pwg = ippContainsString(attr, "image/pwg-raster");
is_pwg = ippContainsString(attr, "image/pwg-raster") && !is_apple;
for (i = 0, count = ippGetCount(attr); i < count; i ++)
{
const char *format = ippGetString(attr, i, NULL);
/* PDL */
/*
* Write cupsFilter2 lines for supported formats...
*/
if (!_cups_strcasecmp(format, "application/pdf"))
cupsFilePuts(fp, "*cupsFilter2: \"application/vnd.cups-pdf application/pdf 10 -\"\n");
else if (!_cups_strcasecmp(format, "image/jpeg") || !_cups_strcasecmp(format, "image/png"))
cupsFilePrintf(fp, "*cupsFilter2: \"%s %s 0 -\"\n", format, format);
else if (!_cups_strcasecmp(format, "image/pwg-raster") || !_cups_strcasecmp(format, "image/urf"))
cupsFilePrintf(fp, "*cupsFilter2: \"%s %s 100 -\"\n", format, format);
}
if (ippContainsString(attr, "image/jpeg"))
cupsFilePuts(fp, "*cupsFilter2: \"image/jpeg image/jpeg 0 -\"\n");
if (ippContainsString(attr, "image/png"))
cupsFilePuts(fp, "*cupsFilter2: \"image/png image/png 0 -\"\n");
if (is_pdf)
cupsFilePuts(fp, "*cupsFilter2: \"application/vnd.cups-pdf application/pdf 10 -\"\n");
if (is_apple)
cupsFilePuts(fp, "*cupsFilter2: \"image/urf image/urf 100 -\"\n");
if (is_pwg)
cupsFilePuts(fp, "*cupsFilter2: \"image/pwg-raster image/pwg-raster 100 -\"\n");
}
if (!is_apple && !is_pdf && !is_pwg)
+58 -105
Ver Arquivo
@@ -1,8 +1,8 @@
/*
* PPD utilities for CUPS.
*
* Copyright 2007-2015 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products.
* Copyright © 2007-2018 by Apple Inc.
* Copyright © 1997-2006 by Easy Software Products.
*
* Licensed under Apache License v2.0. See the file "LICENSE" for more
* information.
@@ -150,18 +150,21 @@ cupsGetPPD3(http_t *http, /* I - HTTP connection or @code CUPS_HTTP_DEFAUL
if (!name)
{
DEBUG_puts("2cupsGetPPD3: No printer name, returning NULL.");
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("No printer name"), 1);
return (HTTP_STATUS_NOT_ACCEPTABLE);
}
if (!modtime)
{
DEBUG_puts("2cupsGetPPD3: No modtime, returning NULL.");
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("No modification time"), 1);
return (HTTP_STATUS_NOT_ACCEPTABLE);
}
if (!buffer || bufsize <= 1)
{
DEBUG_puts("2cupsGetPPD3: No filename buffer, returning NULL.");
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad filename buffer"), 1);
return (HTTP_STATUS_NOT_ACCEPTABLE);
}
@@ -196,6 +199,8 @@ cupsGetPPD3(http_t *http, /* I - HTTP connection or @code CUPS_HTTP_DEFAUL
if (buffer[0])
{
DEBUG_printf(("2cupsGetPPD3: Using filename \"%s\".", buffer));
unlink(buffer);
if (symlink(ppdname, buffer) && errno != EEXIST)
@@ -211,6 +216,28 @@ cupsGetPPD3(http_t *http, /* I - HTTP connection or @code CUPS_HTTP_DEFAUL
const char *tmpdir; /* TMPDIR environment variable */
struct timeval curtime; /* Current time */
#ifdef __APPLE__
/*
* On macOS and iOS, the TMPDIR environment variable is not always the
* best location to place temporary files due to sandboxing. Instead,
* the confstr function should be called to get the proper per-user,
* per-process TMPDIR value.
*/
char tmppath[1024]; /* Temporary directory */
if ((tmpdir = getenv("TMPDIR")) != NULL && access(tmpdir, W_OK))
tmpdir = NULL;
if (!tmpdir)
{
if (confstr(_CS_DARWIN_USER_TEMP_DIR, tmppath, sizeof(tmppath)))
tmpdir = tmppath;
else
tmpdir = "/private/tmp"; /* This should never happen */
}
#else
/*
* Previously we put root temporary files in the default CUPS temporary
* directory under /var/spool/cups. However, since the scheduler cleans
@@ -219,11 +246,10 @@ cupsGetPPD3(http_t *http, /* I - HTTP connection or @code CUPS_HTTP_DEFAUL
*/
if ((tmpdir = getenv("TMPDIR")) == NULL)
# ifdef __APPLE__
tmpdir = "/private/tmp"; /* /tmp is a symlink to /private/tmp */
# else
tmpdir = "/tmp";
# endif /* __APPLE__ */
tmpdir = "/tmp";
#endif /* __APPLE__ */
DEBUG_printf(("2cupsGetPPD3: tmpdir=\"%s\".", tmpdir));
/*
* Make the temporary name using the specified directory...
@@ -254,12 +280,16 @@ cupsGetPPD3(http_t *http, /* I - HTTP connection or @code CUPS_HTTP_DEFAUL
if (!symlink(ppdname, buffer))
break;
DEBUG_printf(("2cupsGetPPD3: Symlink \"%s\" to \"%s\" failed: %s", ppdname, buffer, strerror(errno)));
tries ++;
}
while (tries < 1000);
if (tries >= 1000)
{
DEBUG_puts("2cupsGetPPD3: Unable to symlink after 1000 tries, returning error.");
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, NULL, 0);
return (HTTP_STATUS_SERVER_ERROR);
@@ -267,9 +297,13 @@ cupsGetPPD3(http_t *http, /* I - HTTP connection or @code CUPS_HTTP_DEFAUL
}
if (*modtime >= ppdinfo.st_mtime)
{
DEBUG_printf(("2cupsGetPPD3: Returning not-modified, filename=\"%s\".", buffer));
return (HTTP_STATUS_NOT_MODIFIED);
}
else
{
DEBUG_printf(("2cupsGetPPD3: Returning ok, filename=\"%s\", modtime=%ld.", buffer, (long)ppdinfo.st_mtime));
*modtime = ppdinfo.st_mtime;
return (HTTP_STATUS_OK);
}
@@ -281,16 +315,24 @@ cupsGetPPD3(http_t *http, /* I - HTTP connection or @code CUPS_HTTP_DEFAUL
* Try finding a printer URI for this printer...
*/
DEBUG_puts("2cupsGetPPD3: Unable to access local file, copying...");
if (!http)
{
if ((http = _cupsConnect()) == NULL)
{
DEBUG_puts("2cupsGetPPD3: Unable to connect to scheduler.");
return (HTTP_STATUS_SERVICE_UNAVAILABLE);
}
}
if (!cups_get_printer_uri(http, name, hostname, sizeof(hostname), &port,
resource, sizeof(resource), 0))
if (!cups_get_printer_uri(http, name, hostname, sizeof(hostname), &port, resource, sizeof(resource), 0))
{
DEBUG_puts("2cupsGetPPD3: Unable to get printer URI.");
return (HTTP_STATUS_NOT_FOUND);
}
DEBUG_printf(("2cupsGetPPD3: Printer hostname=\"%s\", port=%d", hostname,
port));
DEBUG_printf(("2cupsGetPPD3: Printer hostname=\"%s\", port=%d", hostname, port));
if (cupsServer()[0] == '/' && !_cups_strcasecmp(hostname, "localhost") && port == ippPort())
{
@@ -334,7 +376,7 @@ cupsGetPPD3(http_t *http, /* I - HTTP connection or @code CUPS_HTTP_DEFAUL
else if ((http2 = httpConnect2(hostname, port, NULL, AF_UNSPEC,
cupsEncryption(), 1, 30000, NULL)) == NULL)
{
DEBUG_puts("1cupsGetPPD3: Unable to connect to server");
DEBUG_puts("2cupsGetPPD3: Unable to connect to server");
return (HTTP_STATUS_SERVICE_UNAVAILABLE);
}
@@ -406,7 +448,7 @@ cupsGetPPD3(http_t *http, /* I - HTTP connection or @code CUPS_HTTP_DEFAUL
* Return the PPD file...
*/
DEBUG_printf(("1cupsGetPPD3: Returning status %d", status));
DEBUG_printf(("2cupsGetPPD3: Returning status %d", status));
return (status);
}
@@ -506,23 +548,16 @@ cups_get_printer_uri(
int depth) /* I - Depth of query */
{
int i; /* Looping var */
int http_port; /* Port number */
http_t *http2; /* Alternate HTTP connection */
ipp_t *request, /* IPP request */
*response; /* IPP response */
ipp_attribute_t *attr; /* Current attribute */
char uri[HTTP_MAX_URI], /* printer-uri attribute */
scheme[HTTP_MAX_URI], /* Scheme name */
username[HTTP_MAX_URI], /* Username:password */
classname[255], /* Temporary class name */
http_hostname[HTTP_MAX_HOST];
/* Hostname associated with connection */
username[HTTP_MAX_URI]; /* Username:password */
static const char * const requested_attrs[] =
{ /* Requested attributes */
"device-uri",
"member-uris",
"printer-uri-supported",
"printer-type"
"printer-uri-supported"
};
@@ -544,15 +579,6 @@ cups_get_printer_uri(
DEBUG_printf(("5cups_get_printer_uri: printer-uri=\"%s\"", uri));
/*
* Get the hostname and port number we are connected to...
*/
httpGetHostname(http, http_hostname, sizeof(http_hostname));
http_port = httpAddrPort(http->hostaddr);
DEBUG_printf(("5cups_get_printer_uri: http_hostname=\"%s\"", http_hostname));
/*
* Build an IPP_GET_PRINTER_ATTRIBUTES request, which requires the following
* attributes:
@@ -577,31 +603,7 @@ cups_get_printer_uri(
if ((response = cupsDoRequest(http, request, resource)) != NULL)
{
const char *device_uri = NULL; /* device-uri value */
if ((attr = ippFindAttribute(response, "device-uri", IPP_TAG_URI)) != NULL)
{
device_uri = attr->values[0].string.text;
DEBUG_printf(("5cups_get_printer_uri: device-uri=\"%s\"", device_uri));
}
if (device_uri &&
(((!strncmp(device_uri, "ipp://", 6) || !strncmp(device_uri, "ipps://", 7)) &&
(strstr(device_uri, "/printers/") != NULL || strstr(device_uri, "/classes/") != NULL)) ||
((strstr(device_uri, "._ipp.") != NULL || strstr(device_uri, "._ipps.") != NULL) &&
!strcmp(device_uri + strlen(device_uri) - 5, "/cups"))))
{
/*
* Statically-configured shared printer.
*/
httpSeparateURI(HTTP_URI_CODING_ALL, _httpResolveURI(device_uri, uri, sizeof(uri), _HTTP_RESOLVE_DEFAULT, NULL, NULL), scheme, sizeof(scheme), username, sizeof(username), host, hostsize, port, resource, resourcesize);
ippDelete(response);
DEBUG_printf(("5cups_get_printer_uri: Resolved to host=\"%s\", port=%d, resource=\"%s\"", host, *port, resource));
return (1);
}
else if ((attr = ippFindAttribute(response, "member-uris", IPP_TAG_URI)) != NULL)
if ((attr = ippFindAttribute(response, "member-uris", IPP_TAG_URI)) != NULL)
{
/*
* Get the first actual printer name in the class...
@@ -626,55 +628,6 @@ cups_get_printer_uri(
return (1);
}
}
/*
* No printers in this class - try recursively looking for a printer,
* but not more than 3 levels deep...
*/
if (depth < 3)
{
for (i = 0; i < attr->num_values; i ++)
{
httpSeparateURI(HTTP_URI_CODING_ALL, attr->values[i].string.text,
scheme, sizeof(scheme), username, sizeof(username),
host, hostsize, port, resource, resourcesize);
if (!strncmp(resource, "/classes/", 9))
{
/*
* Found a class! Connect to the right server...
*/
if (!_cups_strcasecmp(http_hostname, host) && *port == http_port)
http2 = http;
else if ((http2 = httpConnect2(host, *port, NULL, AF_UNSPEC, cupsEncryption(), 1, 30000, NULL)) == NULL)
{
DEBUG_puts("8cups_get_printer_uri: Unable to connect to server");
continue;
}
/*
* Look up printers on that server...
*/
strlcpy(classname, resource + 9, sizeof(classname));
cups_get_printer_uri(http2, classname, host, hostsize, port,
resource, resourcesize, depth + 1);
/*
* Close the connection as needed...
*/
if (http2 != http)
httpClose(http2);
if (*host)
return (1);
}
}
}
}
else if ((attr = ippFindAttribute(response, "printer-uri-supported", IPP_TAG_URI)) != NULL)
{
+74 -85
Ver Arquivo
@@ -1,12 +1,11 @@
/*
* PostScript Printer Description definitions for CUPS.
*
* THESE APIS ARE DEPRECATED. TO COMPILE WITHOUT WARNINGS ADD
* -D_PPD_DEPRECATED="" TO YOUR COMPILE OPTIONS. THIS HEADER AND THESE
* FUNCTIONS WILL BE REMOVED IN A FUTURE RELEASE OF CUPS.
* THESE APIS ARE DEPRECATED. THIS HEADER AND THESE FUNCTIONS WILL BE REMOVED
* IN A FUTURE RELEASE OF CUPS.
*
* Copyright 2007-2015 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
* Copyright © 2007-2018 by Apple Inc.
* Copyright © 1997-2007 by Easy Software Products, all rights reserved.
*
* Licensed under Apache License v2.0. See the file "LICENSE" for more
* information.
@@ -37,16 +36,6 @@ extern "C" {
# endif /* __cplusplus */
/*
* Define _PPD_DEPRECATED to silence the warnings about PPD functions being
* deprecated...
*/
# ifndef _PPD_DEPRECATED
# define _PPD_DEPRECATED _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.")
# endif /* !_PPD_DEPRECATED */
/*
* PPD version...
*/
@@ -67,14 +56,14 @@ extern "C" {
* Types and structures...
*/
typedef enum ppd_ui_e /**** UI Types ****/
typedef enum ppd_ui_e /**** UI Types @deprecated@ ****/
{
PPD_UI_BOOLEAN, /* True or False option */
PPD_UI_PICKONE, /* Pick one from a list */
PPD_UI_PICKMANY /* Pick zero or more from a list */
} ppd_ui_t;
typedef enum ppd_section_e /**** Order dependency sections ****/
typedef enum ppd_section_e /**** Order dependency sections @deprecated@ ****/
{
PPD_ORDER_ANY, /* Option code can be anywhere in the file */
PPD_ORDER_DOCUMENT, /* ... must be in the DocumentSetup section */
@@ -84,7 +73,7 @@ typedef enum ppd_section_e /**** Order dependency sections ****/
PPD_ORDER_PROLOG /* ... must be in the Prolog section */
} ppd_section_t;
typedef enum ppd_cs_e /**** Colorspaces ****/
typedef enum ppd_cs_e /**** Colorspaces @deprecated@ ****/
{
PPD_CS_CMYK = -4, /* CMYK colorspace */
PPD_CS_CMY, /* CMY colorspace */
@@ -94,7 +83,7 @@ typedef enum ppd_cs_e /**** Colorspaces ****/
PPD_CS_N /* DeviceN colorspace */
} ppd_cs_t;
typedef enum ppd_status_e /**** Status Codes @since CUPS 1.1.19/macOS 10.3@ ****/
typedef enum ppd_status_e /**** Status Codes @deprecated@ ****/
{
PPD_OK = 0, /* OK */
PPD_FILE_OPEN_ERROR, /* Unable to open PPD file */
@@ -123,16 +112,16 @@ typedef enum ppd_status_e /**** Status Codes @since CUPS 1.1.19/macOS 10.3@ ***
PPD_MAX_STATUS /* @private@ */
} ppd_status_t;
enum ppd_conform_e /**** Conformance Levels @since CUPS 1.1.19/macOS 10.3@ ****/
enum ppd_conform_e /**** Conformance Levels @deprecated@ ****/
{
PPD_CONFORM_RELAXED, /* Relax whitespace and control char */
PPD_CONFORM_STRICT /* Require strict conformance */
};
typedef enum ppd_conform_e ppd_conform_t;
/**** Conformance Levels @since CUPS 1.1.19/macOS 10.3@ ****/
/**** Conformance Levels @deprecated@ ****/
typedef struct ppd_attr_s /**** PPD Attribute Structure @since CUPS 1.1.19/macOS 10.3@ ****/
typedef struct ppd_attr_s /**** PPD Attribute Structure @deprecated@ ****/
{
char name[PPD_MAX_NAME]; /* Name of attribute (cupsXYZ) */
char spec[PPD_MAX_NAME]; /* Specifier string, if any */
@@ -141,9 +130,9 @@ typedef struct ppd_attr_s /**** PPD Attribute Structure @since CUPS 1.1.19/macO
} ppd_attr_t;
typedef struct ppd_option_s ppd_option_t;
/**** Options ****/
/**** Options @deprecated@ ****/
typedef struct ppd_choice_s /**** Option choices ****/
typedef struct ppd_choice_s /**** Option choices @deprecated@ ****/
{
char marked; /* 0 if not selected, 1 otherwise */
char choice[PPD_MAX_NAME]; /* Computer-readable option name */
@@ -152,7 +141,7 @@ typedef struct ppd_choice_s /**** Option choices ****/
ppd_option_t *option; /* Pointer to parent option structure */
} ppd_choice_t;
struct ppd_option_s /**** Options ****/
struct ppd_option_s /**** Options @deprecated@ ****/
{
char conflicted; /* 0 if no conflicts exist, 1 otherwise */
char keyword[PPD_MAX_NAME]; /* Option keyword name ("PageSize", etc.) */
@@ -165,7 +154,7 @@ struct ppd_option_s /**** Options ****/
ppd_choice_t *choices; /* Option choices */
};
typedef struct ppd_group_s /**** Groups ****/
typedef struct ppd_group_s /**** Groups @deprecated@ ****/
{
/**** Group text strings are limited to 39 chars + nul in order to
**** preserve binary compatibility and allow applications to get
@@ -180,7 +169,7 @@ typedef struct ppd_group_s /**** Groups ****/
struct ppd_group_s *subgroups; /* Sub-groups (max depth = 1) */
} ppd_group_t;
typedef struct ppd_const_s /**** Constraints ****/
typedef struct ppd_const_s /**** Constraints @deprecated@ ****/
{
char option1[PPD_MAX_NAME]; /* First keyword */
char choice1[PPD_MAX_NAME]; /* First option/choice (blank for all) */
@@ -188,7 +177,7 @@ typedef struct ppd_const_s /**** Constraints ****/
char choice2[PPD_MAX_NAME]; /* Second option/choice (blank for all) */
} ppd_const_t;
typedef struct ppd_size_s /**** Page Sizes ****/
typedef struct ppd_size_s /**** Page Sizes @deprecated@ ****/
{
int marked; /* Page size selected? */
char name[PPD_MAX_NAME]; /* Media size option */
@@ -200,14 +189,14 @@ typedef struct ppd_size_s /**** Page Sizes ****/
float top; /* Top printable margin in points */
} ppd_size_t;
typedef struct ppd_emul_s /**** Emulators ****/
typedef struct ppd_emul_s /**** Emulators @deprecated@ ****/
{
char name[PPD_MAX_NAME]; /* Emulator name */
char *start; /* Code to switch to this emulation */
char *stop; /* Code to stop this emulation */
} ppd_emul_t;
typedef struct ppd_profile_s /**** sRGB Color Profiles ****/
typedef struct ppd_profile_s /**** sRGB Color Profiles @deprecated@ ****/
{
char resolution[PPD_MAX_NAME];
/* Resolution or "-" */
@@ -219,7 +208,7 @@ typedef struct ppd_profile_s /**** sRGB Color Profiles ****/
} ppd_profile_t;
/**** New in CUPS 1.2/macOS 10.5 ****/
typedef enum ppd_cptype_e /**** Custom Parameter Type @since CUPS 1.2/macOS 10.5@ ****/
typedef enum ppd_cptype_e /**** Custom Parameter Type @deprecated@ ****/
{
PPD_CUSTOM_CURVE, /* Curve value for f(x) = x^value */
PPD_CUSTOM_INT, /* Integer number value */
@@ -231,7 +220,7 @@ typedef enum ppd_cptype_e /**** Custom Parameter Type @since CUPS 1.2/macOS 10.
PPD_CUSTOM_STRING /* String of characters */
} ppd_cptype_t;
typedef union ppd_cplimit_u /**** Custom Parameter Limit @since CUPS 1.2/macOS 10.5@ ****/
typedef union ppd_cplimit_u /**** Custom Parameter Limit @deprecated@ ****/
{
float custom_curve; /* Gamma value */
int custom_int; /* Integer value */
@@ -243,7 +232,7 @@ typedef union ppd_cplimit_u /**** Custom Parameter Limit @since CUPS 1.2/macOS
int custom_string; /* String length */
} ppd_cplimit_t;
typedef union ppd_cpvalue_u /**** Custom Parameter Value @since CUPS 1.2/macOS 10.5@ ****/
typedef union ppd_cpvalue_u /**** Custom Parameter Value @deprecated@ ****/
{
float custom_curve; /* Gamma value */
int custom_int; /* Integer value */
@@ -255,7 +244,7 @@ typedef union ppd_cpvalue_u /**** Custom Parameter Value @since CUPS 1.2/macOS
char *custom_string; /* String value */
} ppd_cpvalue_t;
typedef struct ppd_cparam_s /**** Custom Parameter @since CUPS 1.2/macOS 10.5@ ****/
typedef struct ppd_cparam_s /**** Custom Parameter @deprecated@ ****/
{
char name[PPD_MAX_NAME]; /* Parameter name */
char text[PPD_MAX_TEXT]; /* Human-readable text */
@@ -266,7 +255,7 @@ typedef struct ppd_cparam_s /**** Custom Parameter @since CUPS 1.2/macOS 10.5@
ppd_cpvalue_t current; /* Current value */
} ppd_cparam_t;
typedef struct ppd_coption_s /**** Custom Option @since CUPS 1.2/macOS 10.5@ ****/
typedef struct ppd_coption_s /**** Custom Option @deprecated@ ****/
{
char keyword[PPD_MAX_NAME]; /* Name of option that is being extended... */
ppd_option_t *option; /* Option that is being extended... */
@@ -275,9 +264,9 @@ typedef struct ppd_coption_s /**** Custom Option @since CUPS 1.2/macOS 10.5@ **
} ppd_coption_t;
typedef struct _ppd_cache_s _ppd_cache_t;
/**** PPD cache and mapping data @since CUPS 1.5/macOS 10.7@ @private@ ****/
/**** PPD cache and mapping data @deprecated@ ****/
typedef struct ppd_file_s /**** PPD File ****/
typedef struct ppd_file_s /**** PPD File @deprecated@ ****/
{
int language_level; /* Language level of device */
int color_device; /* 1 = color device, 0 = grayscale */
@@ -349,115 +338,115 @@ typedef struct ppd_file_s /**** PPD File ****/
* Prototypes...
*/
extern const char *cupsGetPPD(const char *name) _PPD_DEPRECATED;
extern const char *cupsGetPPD2(http_t *http, const char *name) _PPD_DEPRECATED;
extern http_status_t cupsGetPPD3(http_t *http, const char *name, time_t *modtime, char *buffer, size_t bufsize) _PPD_DEPRECATED;
extern char *cupsGetServerPPD(http_t *http, const char *name) _PPD_DEPRECATED;
extern int cupsMarkOptions(ppd_file_t *ppd, int num_options, cups_option_t *options) _PPD_DEPRECATED;
extern const char *cupsGetPPD(const char *name) _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
extern const char *cupsGetPPD2(http_t *http, const char *name) _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
extern http_status_t cupsGetPPD3(http_t *http, const char *name, time_t *modtime, char *buffer, size_t bufsize) _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
extern char *cupsGetServerPPD(http_t *http, const char *name) _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
extern int cupsMarkOptions(ppd_file_t *ppd, int num_options, cups_option_t *options) _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
extern void ppdClose(ppd_file_t *ppd) _PPD_DEPRECATED;
extern void ppdClose(ppd_file_t *ppd) _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
extern int ppdCollect(ppd_file_t *ppd, ppd_section_t section,
ppd_choice_t ***choices) _PPD_DEPRECATED;
extern int ppdConflicts(ppd_file_t *ppd) _PPD_DEPRECATED;
ppd_choice_t ***choices) _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
extern int ppdConflicts(ppd_file_t *ppd) _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
extern int ppdEmit(ppd_file_t *ppd, FILE *fp,
ppd_section_t section) _PPD_DEPRECATED;
ppd_section_t section) _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
extern int ppdEmitFd(ppd_file_t *ppd, int fd,
ppd_section_t section) _PPD_DEPRECATED;
ppd_section_t section) _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
extern int ppdEmitJCL(ppd_file_t *ppd, FILE *fp, int job_id,
const char *user, const char *title)
_PPD_DEPRECATED;
_CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
extern ppd_choice_t *ppdFindChoice(ppd_option_t *o, const char *option)
_PPD_DEPRECATED;
_CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
extern ppd_choice_t *ppdFindMarkedChoice(ppd_file_t *ppd,
const char *keyword)
_PPD_DEPRECATED;
_CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
extern ppd_option_t *ppdFindOption(ppd_file_t *ppd, const char *keyword)
_PPD_DEPRECATED;
_CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
extern int ppdIsMarked(ppd_file_t *ppd, const char *keyword,
const char *option) _PPD_DEPRECATED;
extern void ppdMarkDefaults(ppd_file_t *ppd) _PPD_DEPRECATED;
const char *option) _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
extern void ppdMarkDefaults(ppd_file_t *ppd) _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
extern int ppdMarkOption(ppd_file_t *ppd, const char *keyword,
const char *option) _PPD_DEPRECATED;
extern ppd_file_t *ppdOpen(FILE *fp) _PPD_DEPRECATED;
extern ppd_file_t *ppdOpenFd(int fd) _PPD_DEPRECATED;
extern ppd_file_t *ppdOpenFile(const char *filename) _PPD_DEPRECATED;
const char *option) _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
extern ppd_file_t *ppdOpen(FILE *fp) _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
extern ppd_file_t *ppdOpenFd(int fd) _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
extern ppd_file_t *ppdOpenFile(const char *filename) _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
extern float ppdPageLength(ppd_file_t *ppd, const char *name)
_PPD_DEPRECATED;
_CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
extern ppd_size_t *ppdPageSize(ppd_file_t *ppd, const char *name)
_PPD_DEPRECATED;
_CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
extern float ppdPageWidth(ppd_file_t *ppd, const char *name)
_PPD_DEPRECATED;
_CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
/**** New in CUPS 1.1.19 ****/
extern const char *ppdErrorString(ppd_status_t status) _PPD_DEPRECATED;
extern const char *ppdErrorString(ppd_status_t status) _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
extern ppd_attr_t *ppdFindAttr(ppd_file_t *ppd, const char *name,
const char *spec) _PPD_DEPRECATED;
const char *spec) _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
extern ppd_attr_t *ppdFindNextAttr(ppd_file_t *ppd, const char *name,
const char *spec) _PPD_DEPRECATED;
extern ppd_status_t ppdLastError(int *line) _PPD_DEPRECATED;
const char *spec) _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
extern ppd_status_t ppdLastError(int *line) _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
/**** New in CUPS 1.1.20 ****/
extern void ppdSetConformance(ppd_conform_t c) _PPD_DEPRECATED;
extern void ppdSetConformance(ppd_conform_t c) _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
/**** New in CUPS 1.2 ****/
extern int cupsRasterInterpretPPD(cups_page_header2_t *h,
ppd_file_t *ppd,
int num_options,
cups_option_t *options,
cups_interpret_cb_t func) _PPD_DEPRECATED;
cups_interpret_cb_t func) _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
extern int ppdCollect2(ppd_file_t *ppd, ppd_section_t section,
float min_order, ppd_choice_t ***choices)
_PPD_DEPRECATED;
_CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
extern int ppdEmitAfterOrder(ppd_file_t *ppd, FILE *fp,
ppd_section_t section, int limit,
float min_order) _PPD_DEPRECATED;
float min_order) _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
extern int ppdEmitJCLEnd(ppd_file_t *ppd, FILE *fp)
_PPD_DEPRECATED;
_CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
extern char *ppdEmitString(ppd_file_t *ppd, ppd_section_t section,
float min_order) _PPD_DEPRECATED;
float min_order) _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
extern ppd_coption_t *ppdFindCustomOption(ppd_file_t *ppd,
const char *keyword)
_PPD_DEPRECATED;
_CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
extern ppd_cparam_t *ppdFindCustomParam(ppd_coption_t *opt,
const char *name) _PPD_DEPRECATED;
const char *name) _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
extern ppd_cparam_t *ppdFirstCustomParam(ppd_coption_t *opt)
_PPD_DEPRECATED;
extern ppd_option_t *ppdFirstOption(ppd_file_t *ppd) _PPD_DEPRECATED;
extern ppd_cparam_t *ppdNextCustomParam(ppd_coption_t *opt) _PPD_DEPRECATED;
extern ppd_option_t *ppdNextOption(ppd_file_t *ppd) _PPD_DEPRECATED;
extern int ppdLocalize(ppd_file_t *ppd) _PPD_DEPRECATED;
extern ppd_file_t *ppdOpen2(cups_file_t *fp) _PPD_DEPRECATED;
_CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
extern ppd_option_t *ppdFirstOption(ppd_file_t *ppd) _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
extern ppd_cparam_t *ppdNextCustomParam(ppd_coption_t *opt) _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
extern ppd_option_t *ppdNextOption(ppd_file_t *ppd) _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
extern int ppdLocalize(ppd_file_t *ppd) _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
extern ppd_file_t *ppdOpen2(cups_file_t *fp) _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
/**** New in CUPS 1.3/macOS 10.5 ****/
extern const char *ppdLocalizeIPPReason(ppd_file_t *ppd,
const char *reason,
const char *scheme,
char *buffer,
size_t bufsize) _PPD_DEPRECATED;
size_t bufsize) _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
/**** New in CUPS 1.4/macOS 10.6 ****/
extern int cupsGetConflicts(ppd_file_t *ppd, const char *option,
const char *choice,
cups_option_t **options)
_PPD_DEPRECATED;
_CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
extern int cupsResolveConflicts(ppd_file_t *ppd,
const char *option,
const char *choice,
int *num_options,
cups_option_t **options)
_PPD_DEPRECATED;
_CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
extern int ppdInstallableConflict(ppd_file_t *ppd,
const char *option,
const char *choice)
_PPD_DEPRECATED;
_CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
extern ppd_attr_t *ppdLocalizeAttr(ppd_file_t *ppd, const char *keyword,
const char *spec) _PPD_DEPRECATED;
const char *spec) _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
extern const char *ppdLocalizeMarkerName(ppd_file_t *ppd,
const char *name)
_PPD_DEPRECATED;
_CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
extern int ppdPageSizeLimits(ppd_file_t *ppd,
ppd_size_t *minimum,
ppd_size_t *maximum) _PPD_DEPRECATED;
ppd_size_t *maximum) _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.");
/*
+4 -7
Ver Arquivo
@@ -1,14 +1,11 @@
/*
* Private SNMP definitions for CUPS.
*
* Copyright 2007-2014 by Apple Inc.
* Copyright 2006-2007 by Easy Software Products, all rights reserved.
* Copyright © 2007-2014 by Apple Inc.
* Copyright © 2006-2007 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
* "LICENSE" which should have been included with this file. If this
* file is missing or damaged, see the license at "http://www.cups.org/".
* Licensed under Apache License v2.0. See the file "LICENSE" for more
* information.
*/
#ifndef _CUPS_SNMP_PRIVATE_H_
+4 -7
Ver Arquivo
@@ -1,14 +1,11 @@
/*
* SNMP functions for CUPS.
*
* Copyright 2007-2014 by Apple Inc.
* Copyright 2006-2007 by Easy Software Products, all rights reserved.
* Copyright © 2007-2014 by Apple Inc.
* Copyright © 2006-2007 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
* "LICENSE" which should have been included with this file. If this
* file is missing or damaged, see the license at "http://www.cups.org/".
* Licensed under Apache License v2.0. See the file "LICENSE" for more
* information.
*/
/*
+27 -8
Ver Arquivo
@@ -1,10 +1,11 @@
/*
* Temp file utilities for CUPS.
*
* Copyright 2007-2014 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products.
* Copyright © 2007-2018 by Apple Inc.
* Copyright © 1997-2006 by Easy Software Products.
*
* Licensed under Apache License v2.0. See the file "LICENSE" for more information.
* Licensed under Apache License v2.0. See the file "LICENSE" for more
* information.
*/
/*
@@ -36,8 +37,10 @@ cupsTempFd(char *filename, /* I - Pointer to buffer */
int fd; /* File descriptor for temp file */
int tries; /* Number of tries */
const char *tmpdir; /* TMPDIR environment var */
#if defined(__APPLE__) || defined(WIN32)
char tmppath[1024]; /* Temporary directory */
#endif /* __APPLE__ || WIN32 */
#ifdef WIN32
char tmppath[1024]; /* Windows temporary directory */
DWORD curtime; /* Current time */
#else
struct timeval curtime; /* Current time */
@@ -54,6 +57,26 @@ cupsTempFd(char *filename, /* I - Pointer to buffer */
GetTempPath(sizeof(tmppath), tmppath);
tmpdir = tmppath;
}
#elif defined(__APPLE__)
/*
* On macOS and iOS, the TMPDIR environment variable is not always the best
* location to place temporary files due to sandboxing. Instead, the confstr
* function should be called to get the proper per-user, per-process TMPDIR
* value.
*/
if ((tmpdir = getenv("TMPDIR")) != NULL && access(tmpdir, W_OK))
tmpdir = NULL;
if (!tmpdir)
{
if (confstr(_CS_DARWIN_USER_TEMP_DIR, tmppath, sizeof(tmppath)))
tmpdir = tmppath;
else
tmpdir = "/private/tmp"; /* This should never happen */
}
#else
/*
* Previously we put root temporary files in the default CUPS temporary
@@ -63,11 +86,7 @@ cupsTempFd(char *filename, /* I - Pointer to buffer */
*/
if ((tmpdir = getenv("TMPDIR")) == NULL)
# if defined(__APPLE__) && !TARGET_OS_IOS
tmpdir = "/private/tmp"; /* /tmp is a symlink to /private/tmp */
# else
tmpdir = "/tmp";
# endif /* __APPLE__ && !TARGET_OS_IOS */
#endif /* WIN32 */
/*
+7 -15
Ver Arquivo
@@ -1,7 +1,5 @@
*PPD-Adobe: "4.3"
*%
*% "$Id: test.ppd 7819 2008-08-01 00:27:24Z mike $"
*%
*% Test PPD file for CUPS.
*%
*% This file is used to test the CUPS PPD API functions and cannot be
@@ -12,22 +10,19 @@
*% to create your PPD files - not only will it save you time, it produces
*% consistently high-quality files.
*%
*% Copyright 2007-2010 by Apple Inc.
*% Copyright 2002-2006 by Easy Software Products.
*% Copyright (c) 2007-2018 by Apple Inc.
*% Copyright (c) 2002-2006 by Easy Software Products.
*%
*% These coded instructions, statements, and computer programs are the
*% property of Apple Inc. and are protected by Federal copyright
*% law. Distribution and use rights are outlined in the file "LICENSE.txt"
*% which should have been included with this file. If this file is
*% file is missing or damaged, see the license at "http://www.cups.org/".
*% Licensed under Apache License v2.0. See the file "LICENSE" for more
*% information.
*FormatVersion: "4.3"
*FileVersion: "1.3"
*FileVersion: "2.3"
*LanguageVersion: English
*LanguageEncoding: ISOLatin1
*PCFileName: "TEST.PPD"
*Manufacturer: "ESP"
*Manufacturer: "Apple"
*Product: "(Test)"
*cupsVersion: 1.4
*cupsVersion: 2.3
*ModelName: "Test"
*ShortNickName: "Test"
*NickName: "Test for CUPS"
@@ -266,6 +261,3 @@ help:anchor='foo'%20bookID=Vendor%20Help
*Font Times-Roman: Standard "(001.007S)" Standard ROM
*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM
*Font ZapfDingbats: Special "(001.004S)" Standard ROM
*%
*% End of "$Id: test.ppd 7819 2008-08-01 00:27:24Z mike $".
*%
+7 -15
Ver Arquivo
@@ -1,7 +1,5 @@
*PPD-Adobe: "4.3"
*%
*% "$Id: test2.ppd 7791 2008-07-24 00:55:30Z mike $"
*%
*% Test PPD file #2 for CUPS.
*%
*% This file is used to test the CUPS PPD API functions and cannot be
@@ -12,22 +10,19 @@
*% to create your PPD files - not only will it save you time, it produces
*% consistently high-quality files.
*%
*% Copyright 2007-2011 by Apple Inc.
*% Copyright 2002-2006 by Easy Software Products.
*% Copyright (c) 2007-2018 by Apple Inc.
*% Copyright (c) 2002-2006 by Easy Software Products.
*%
*% These coded instructions, statements, and computer programs are the
*% property of Apple Inc. and are protected by Federal copyright
*% law. Distribution and use rights are outlined in the file "LICENSE.txt"
*% which should have been included with this file. If this file is
*% file is missing or damaged, see the license at "http://www.cups.org/".
*% Licensed under Apache License v2.0. See the file "LICENSE" for more
*% information.
*FormatVersion: "4.3"
*FileVersion: "1.3"
*FileVersion: "2.3"
*LanguageVersion: English
*LanguageEncoding: ISOLatin1
*PCFileName: "TEST.PPD"
*Manufacturer: "ESP"
*Manufacturer: "Apple"
*Product: "(Test2)"
*cupsVersion: 1.4
*cupsVersion: 2.3
*ModelName: "Test2"
*ShortNickName: "Test2"
*NickName: "Test2 for CUPS"
@@ -247,6 +242,3 @@ help:anchor='foo'%20bookID=Vendor%20Help
*Font Times-Roman: Standard "(001.007S)" Standard ROM
*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM
*Font ZapfDingbats: Special "(001.004S)" Standard ROM
*%
*% End of "$Id: test2.ppd 7791 2008-07-24 00:55:30Z mike $".
*%
+1 -2
Ver Arquivo
@@ -228,8 +228,7 @@ main(void)
puts("PASS");
else
{
printf("FAIL (returned %p with %d elements, expected pointer with 4 elements)\n",
dup_array, cupsArrayCount(dup_array));
printf("FAIL (returned %p with %d elements, expected pointer with 4 elements)\n", (void *)dup_array, cupsArrayCount(dup_array));
status ++;
}
+8 -2
Ver Arquivo
@@ -1,9 +1,10 @@
/*
* Simulated client test program for CUPS.
*
* Copyright 2017 by Apple Inc.
* Copyright © 2017-2018 by Apple Inc.
*
* Licensed under Apache License v2.0. See the file "LICENSE" for more information.
* Licensed under Apache License v2.0. See the file "LICENSE" for more
* information.
*/
/*
@@ -96,6 +97,9 @@ main(int argc, /* I - Number of command-line arguments */
* Parse command-line options...
*/
if (argc == 1)
return (0);
for (i = 1; i < argc; i ++)
{
if (argv[i][0] == '-')
@@ -617,6 +621,7 @@ make_raster_file(ipp_t *response, /* I - Printer attributes */
if ((fd = cupsTempFd(tempname, (int)tempsize)) < 0)
{
printf("Unable to create temporary print file: %s\n", strerror(errno));
free(line);
return (NULL);
}
@@ -624,6 +629,7 @@ make_raster_file(ipp_t *response, /* I - Printer attributes */
{
printf("Unable to open raster stream: %s\n", cupsRasterErrorString());
close(fd);
free(line);
return (NULL);
}
+5 -5
Ver Arquivo
@@ -1,7 +1,7 @@
/*
* CUPS destination API test program for CUPS.
*
* Copyright 2012-2017 by Apple Inc.
* Copyright © 2012-2018 by Apple Inc.
*
* Licensed under Apache License v2.0. See the file "LICENSE" for more information.
*/
@@ -46,11 +46,10 @@ main(int argc, /* I - Number of command-line arguments */
if (argc < 2)
usage(NULL);
return (0);
if (!strcmp(argv[1], "--get"))
{
int i; /* Looping var */
cups_dest_t *dests; /* Destinations */
int num_dests = cupsGetDests2(CUPS_HTTP_DEFAULT, &dests);
/* Number of destinations */
@@ -63,7 +62,6 @@ main(int argc, /* I - Number of command-line arguments */
}
else if (!strcmp(argv[1], "--enum"))
{
int i; /* Looping var */
cups_ptype_t type = 0, /* Printer type filter */
mask = 0; /* Printer type mask */
@@ -128,8 +126,10 @@ main(int argc, /* I - Number of command-line arguments */
dest = cupsGetNamedDest(CUPS_HTTP_DEFAULT, NULL, NULL);
if (dest && dest->instance)
printf("default is \"%s/%s\".\n", dest->name, dest->instance);
else
else if (dest)
printf("default is \"%s\".\n", dest->name);
else
puts("no default destination.");
}
else
dest = cupsGetNamedDest(CUPS_HTTP_DEFAULT, argv[i], NULL);
+7 -7
Ver Arquivo
@@ -115,12 +115,12 @@ main(int argc, /* I - Number of command-line arguments */
#endif /* !WIN32 */
/*
* Count lines in psglyphs, rewind, then count again.
* Count lines in test file, rewind, then count again.
*/
fputs("\ncupsFileOpen(\"../data/media.defs\", \"r\"): ", stdout);
fputs("\ncupsFileOpen(\"testfile.txt\", \"r\"): ", stdout);
if ((fp = cupsFileOpen("../data/media.defs", "r")) == NULL)
if ((fp = cupsFileOpen("testfile.txt", "r")) == NULL)
{
puts("FAIL");
status ++;
@@ -130,9 +130,9 @@ main(int argc, /* I - Number of command-line arguments */
puts("PASS");
fputs("cupsFileGets: ", stdout);
if ((count = count_lines(fp)) != 201)
if ((count = count_lines(fp)) != 477)
{
printf("FAIL (got %d lines, expected 201)\n", count);
printf("FAIL (got %d lines, expected 477)\n", count);
status ++;
}
else
@@ -150,9 +150,9 @@ main(int argc, /* I - Number of command-line arguments */
puts("PASS");
fputs("cupsFileGets: ", stdout);
if ((count = count_lines(fp)) != 201)
if ((count = count_lines(fp)) != 477)
{
printf("FAIL (got %d lines, expected 201)\n", count);
printf("FAIL (got %d lines, expected 477)\n", count);
status ++;
}
else
+477
Ver Arquivo
@@ -0,0 +1,477 @@
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi faucibus viverra
nibh ut molestie. Sed aliquet vestibulum dignissim. Praesent dignissim mauris
arcu. Donec porta velit quis nibh rutrum sollicitudin. Aliquam vel tellus
vulputate, sollicitudin turpis in, luctus quam. Donec hendrerit enim dignissim
varius tincidunt. Phasellus mi felis, ultrices nec magna in, ultrices interdum
justo. Nulla aliquam sem ac porta tincidunt. Praesent nec fermentum mauris.
Suspendisse ullamcorper mauris orci, eu ornare dui mollis quis.
In vitae lorem id nulla pellentesque sagittis. Duis aliquet ligula nisl, sed
mollis sapien commodo nec. Etiam placerat arcu turpis, eget viverra magna
ultrices sed. Nullam dapibus urna et tristique consectetur. Curabitur iaculis
nisl lobortis condimentum accumsan. Praesent sagittis purus nunc, vitae bibendum
leo ornare a. Maecenas neque mauris, mollis a sem ut, rhoncus posuere orci.
Aliquam luctus suscipit erat ut semper. In neque augue, vulputate ornare massa
fermentum, sodales faucibus mauris. Vestibulum ante ipsum primis in faucibus
orci luctus et ultrices posuere cubilia Curae;
Pellentesque mattis ante nunc, sit amet blandit felis cursus sed. Quisque
pellentesque ipsum ac mauris fringilla, a rhoncus nunc lacinia. Vestibulum
tempor orci ut nisl cursus, at euismod sem sodales. Integer ornare tellus at
sapien tincidunt ultrices. Interdum et malesuada fames ac ante ipsum primis in
faucibus. Integer placerat eleifend magna, eget volutpat nibh vulputate eget.
Donec cursus orci nisl, eget malesuada sem porta at.
Sed maximus eleifend leo, posuere pellentesque urna viverra id. Aenean pharetra
nunc ut suscipit aliquam. Sed dolor massa, ultrices sed sollicitudin nec,
dapibus vitae tortor. Cras in scelerisque tellus. Sed eu felis vitae neque
tempor eleifend vitae ac augue. Nunc felis ex, fringilla quis sapien vel, tempor
congue nibh. Nullam placerat sit amet lacus quis facilisis.
Sed semper nisi eget auctor semper. Phasellus sodales tempus massa ut suscipit.
Integer malesuada convallis neque, sed pretium leo rhoncus ac. In hac habitasse
platea dictumst. Nullam efficitur mollis lorem. Integer convallis lobortis
dictum. Suspendisse euismod in mauris vel pharetra. Sed vitae magna ut turpis
viverra rhoncus ut sit amet mauris. Nam vel lacinia metus. Proin ut elementum
felis. Nullam massa velit, euismod vel metus eget, feugiat aliquet odio. Fusce
venenatis lorem ut lectus ultricies, vitae accumsan nibh dictum. Maecenas porta
euismod cursus. Nunc at ligula congue, lobortis quam id, volutpat felis.
Proin blandit pulvinar ligula, at dapibus dui rutrum dictum. Etiam non finibus
urna. Pellentesque semper pharetra arcu non dapibus. Vestibulum gravida dictum
libero, quis dictum odio hendrerit sit amet. Aenean a venenatis ante, tincidunt
convallis orci. Morbi tincidunt, orci vitae suscipit lacinia, nisl nunc rutrum
ex, vitae convallis nulla libero ut mauris. Donec ac pellentesque sapien.
Phasellus elementum orci a nisl feugiat tempus. Quisque id justo sed tellus
ultricies porttitor. Fusce elementum mauris nunc. Nullam vel elit ultrices,
rhoncus elit id, scelerisque erat.
Pellentesque molestie efficitur purus, at malesuada orci efficitur et. Curabitur
blandit nisi a ante viverra, vel ornare turpis molestie. Class aptent taciti
sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Cras
scelerisque est non velit placerat, eu volutpat sem fermentum. Cras vitae
gravida nisi, non vestibulum velit. Interdum et malesuada fames ac ante ipsum
primis in faucibus. Cras sollicitudin rutrum tincidunt. Pellentesque non nisl
condimentum, commodo turpis non, fringilla ante. Nunc non ante vel est porttitor
tempor sed vitae nunc. Donec bibendum orci justo, lobortis laoreet purus
accumsan vel. Phasellus non posuere orci. In hac habitasse platea dictumst.
Praesent nec mi sit amet urna ornare pulvinar faucibus at sem. Vestibulum vel
cursus nisl, vel ultricies justo. Proin sed consequat odio, eget dignissim
dolor. Fusce mattis porttitor nulla rutrum aliquet.
Duis vehicula enim nec condimentum dignissim. Phasellus viverra ex at erat
lacinia varius. Nullam rutrum felis ac lacus dignissim elementum quis sit amet
felis. Phasellus eget sapien sit amet sapien maximus tincidunt elementum ut
ante. Mauris dictum pulvinar diam ac lobortis. Duis vitae dui metus. Donec
imperdiet risus vitae augue placerat ultrices. Integer euismod, sapien sit amet
faucibus venenatis, nisl lacus rhoncus lacus, a auctor justo ante sed turpis.
Integer facilisis est non venenatis hendrerit. Vivamus quis ante sodales, mollis
turpis in, bibendum turpis. In hac habitasse platea dictumst. Phasellus nisl
est, porta feugiat eros ut, scelerisque efficitur diam. Suspendisse sit amet
magna libero. Quisque eu arcu vel orci iaculis sagittis nec id orci. Mauris
mattis nunc id quam tristique pellentesque.
Vestibulum vehicula, mauris ac venenatis lobortis, ex risus bibendum nunc, eu
bibendum dolor metus vitae purus. Ut bibendum sed ante viverra tincidunt.
Vestibulum id semper lacus. Fusce lacinia dignissim semper. Proin diam enim,
pellentesque vel dui eu, maximus tincidunt mauris. Cras lorem lectus, malesuada
non dui ac, iaculis elementum justo. Fusce fringilla tempor arcu. Proin vel
turpis vitae purus facilisis dapibus condimentum sed ipsum. Duis mollis justo at
ante convallis ornare. Suspendisse accumsan eleifend mauris, ut aliquet eros
scelerisque eget. Proin ornare elit eu felis dapibus, sit amet posuere est
porttitor. Vivamus tincidunt metus ac nisl pharetra, vel mollis neque egestas.
Quisque turpis ligula, lacinia id suscipit eget, cursus eget mauris. Class
aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos
himenaeos. Curabitur sodales, urna eget luctus congue, metus magna viverra nisl,
ut eleifend nulla urna eu arcu. Pellentesque interdum interdum erat, et
hendrerit arcu rhoncus ut. Nulla congue tortor nec egestas aliquam. Nulla
elementum augue eu est imperdiet, nec maximus sapien ornare. Donec aliquam
blandit felis, sed vulputate orci ultrices non. Vivamus rutrum dapibus ligula,
non ullamcorper ante eleifend vel. Pellentesque habitant morbi tristique
senectus et netus et malesuada fames ac turpis egestas. Aliquam sed lacus
condimentum odio commodo tristique.
Proin ultrices non tellus sit amet condimentum. Ut aliquam nulla eget viverra
aliquet. Fusce aliquet orci nec finibus tempor. Etiam luctus eleifend diam vitae
tempor. Fusce sagittis porttitor dignissim. Morbi euismod pellentesque mi vel
malesuada. Praesent cursus rutrum diam sit amet auctor. Praesent non leo
consequat, dapibus massa pellentesque, egestas nulla. Nulla efficitur luctus
purus eu aliquet. Phasellus sed enim pharetra, molestie felis eget, tempor
neque. Proin efficitur vestibulum libero ut hendrerit. Mauris vitae vestibulum
augue, in pellentesque ligula. Phasellus at libero dictum, pretium mauris vitae,
elementum ex. Pellentesque ut euismod orci. In ac elit vel nisl bibendum
fermentum eget in dui. Donec fringilla, nisl vitae tincidunt varius, tellus
sapien accumsan lectus, ac tincidunt eros ipsum nec libero.
Sed mollis purus nec magna tempus, vitae laoreet purus luctus. Morbi accumsan,
urna eget placerat volutpat, nunc magna mattis mi, vitae efficitur eros quam
quis lacus. Etiam eros ligula, tempus vel consectetur non, consectetur quis
risus. Phasellus venenatis lectus arcu, quis bibendum diam dignissim a. Donec
tristique, felis quis dignissim tempor, justo sapien faucibus odio, at venenatis
arcu purus et justo. Nunc vel ex a augue luctus pharetra ac ac turpis. Proin
auctor turpis lobortis, scelerisque mi sit amet, elementum dui. Duis blandit
arcu eros, eu dapibus enim imperdiet sed. Sed auctor urna sed lectus condimentum
rhoncus. Mauris luctus dolor rhoncus suscipit semper. Sed molestie felis ut
laoreet porta. Duis at purus viverra, faucibus elit eu, fringilla odio.
Suspendisse sit amet sodales urna. In hac habitasse platea dictumst. Integer a
sem sed augue sodales dictum. Quisque ut nisi pellentesque, lobortis lectus et,
hendrerit eros.
Phasellus posuere metus sit amet orci viverra vehicula. Nulla urna est,
pellentesque in placerat ut, congue a ligula. Maecenas non viverra arcu. Vivamus
fermentum odio tincidunt tellus tempus, ut suscipit justo hendrerit. Nunc quis
sapien eget turpis mollis porta. Curabitur ultrices est molestie lacus finibus,
vel sodales leo aliquam. Quisque ultrices semper porta. Nulla facilisi. Aenean
nunc leo, ultrices quis augue non, hendrerit semper lectus.
Nulla facilisi. In in volutpat tellus. Sed tincidunt efficitur sem, vel bibendum
ex pharetra eleifend. Class aptent taciti sociosqu ad litora torquent per
conubia nostra, per inceptos himenaeos. Sed nec erat at ipsum fringilla commodo
eget eu est. Donec suscipit ligula eu ipsum lobortis tristique. Nulla dignissim
nisi quis dignissim faucibus. Nunc finibus lacus eget est laoreet ultrices.
Fusce molestie mattis facilisis. Fusce dictum blandit sem ac tincidunt.
Suspendisse aliquam, dolor ac tincidunt scelerisque, lacus leo luctus quam, ac
auctor ligula neque quis dolor. Maecenas laoreet viverra lectus, eget hendrerit
urna congue ac. Donec convallis, erat ut consectetur ornare, diam diam accumsan
lacus, at consectetur mauris nisi vitae massa. Vestibulum vestibulum dictum
volutpat. Quisque et commodo velit. Praesent in odio nunc.
Vivamus consectetur leo sem, sit amet auctor arcu blandit vitae. Donec non
auctor mauris. Pellentesque habitant morbi tristique senectus et netus et
malesuada fames ac turpis egestas. Proin nibh tellus, fermentum quis erat in,
vulputate faucibus nunc. Vestibulum imperdiet ipsum purus, eget efficitur mi
hendrerit vel. Aenean iaculis elementum metus nec consectetur. Suspendisse felis
turpis, maximus sit amet diam at, elementum vestibulum nulla. Quisque et lacinia
elit. Pellentesque tincidunt bibendum neque, non molestie massa ultrices eget.
Duis scelerisque magna in blandit dictum. Pellentesque lacinia augue vitae
fermentum mollis. Etiam mi velit, tempor at risus vel, luctus vestibulum odio.
Phasellus vel ipsum sit amet velit malesuada hendrerit. Donec consequat laoreet
enim. Aliquam sed justo eget ex rhoncus laoreet. Duis maximus tortor at odio
suscipit, non accumsan arcu efficitur. Nunc pharetra id neque nec dignissim. Sed
condimentum magna ut viverra porttitor. Pellentesque rutrum magna et pretium
semper. Fusce tincidunt ipsum at auctor commodo. Duis et ipsum nec turpis
pharetra pulvinar a nec risus. Praesent in enim et ligula maximus consectetur.
Aenean nec turpis turpis.
Quisque mollis dignissim elit, sit amet interdum urna venenatis sit amet.
Quisque interdum, diam eu ullamcorper suscipit, augue purus fermentum purus, nec
consequat purus nibh laoreet lectus. Ut nisi mauris, ultrices non euismod ac,
mollis id libero. Vestibulum ante ipsum primis in faucibus orci luctus et
ultrices posuere cubilia Curae; Cras vitae tristique mi. Mauris ut bibendum
dolor. Suspendisse potenti. Ut tempus ultricies erat, a molestie sapien aliquet
non. Aliquam sagittis nisi vel enim rhoncus eleifend. Proin aliquam eros ut
metus consectetur suscipit. Curabitur ornare mi eget faucibus aliquam. Praesent
ultricies libero est, eget porttitor risus ornare nec. Curabitur pharetra ex ut
eleifend lacinia. Nam nec finibus nunc. Sed hendrerit risus nisi, eu
sollicitudin tellus sollicitudin nec. Proin vel est leo.
Fusce et orci finibus, auctor purus eu, varius magna. Sed sollicitudin elit
vitae turpis tincidunt, at suscipit lacus ultricies. Mauris pretium, nisi sed
cursus ullamcorper, sem sem vulputate neque, a pellentesque lectus massa vel
metus. Sed tincidunt iaculis lectus, non facilisis elit finibus at. Nunc odio
purus, eleifend ac pretium nec, malesuada condimentum eros. Aenean interdum
dolor et malesuada auctor. Donec placerat velit ex, vel cursus metus posuere
sed. Phasellus rutrum nisl vel imperdiet egestas. Interdum et malesuada fames ac
ante ipsum primis in faucibus. Etiam volutpat quam ut risus ultricies blandit.
Mauris commodo ullamcorper pretium. Nam interdum lobortis eleifend. Fusce quam
nisl, feugiat vitae dui non, egestas eleifend erat. Mauris in ligula purus.
Morbi vel mollis diam. Praesent leo felis, luctus ac blandit sit amet, aliquam
at enim.
Duis sit amet augue enim. Donec feugiat ultricies neque, ut porttitor lectus
sagittis ut. Sed ante sem, mollis ut dui quis, finibus rutrum justo. Phasellus
ornare nibh ac scelerisque fringilla. Donec rhoncus luctus elit sed accumsan.
Maecenas fermentum quam nec eros consequat, vitae sollicitudin elit facilisis.
Phasellus urna metus, viverra at nibh ac, euismod fringilla mi. Aliquam nec odio
neque. Duis pulvinar congue aliquam. Suspendisse laoreet bibendum sapien, non
ultricies velit porta id. Vivamus dignissim rhoncus mi, sit amet mollis arcu
cursus nec. Maecenas sagittis cursus dictum. Nam fermentum tincidunt
pellentesque. Vivamus tempus tincidunt rutrum. Mauris semper orci non
scelerisque accumsan.
Nulla fermentum in lacus at aliquet. Proin ut ligula venenatis, maximus elit a,
finibus felis. Nam euismod arcu vel diam laoreet, sed hendrerit urna pharetra.
Phasellus non hendrerit tortor. Donec ut congue odio. Nunc pellentesque ipsum et
est venenatis, sed vehicula magna convallis. Quisque eget euismod orci. In ut
nulla ac augue auctor dapibus a vel arcu. Duis elementum, libero at ullamcorper
consequat, libero nulla vestibulum elit, vel congue lacus nulla quis nulla.
Nulla vel dolor vulputate, dictum nunc nec, pellentesque lacus. Nulla nibh mi,
gravida vel velit vel, tempus dapibus magna. Mauris ornare elementum feugiat.
Vestibulum non finibus lorem, a ullamcorper quam.
Duis eget velit sodales, rhoncus odio nec, laoreet lorem. Donec fermentum est eu
ornare placerat. Sed interdum metus ac metus hendrerit rhoncus. In molestie diam
sem, et faucibus purus lacinia eu. Donec quam arcu, tempus ac commodo sit amet,
porttitor sit amet urna. Suspendisse pellentesque placerat mi, at semper orci
tincidunt non. Fusce ut mattis nisi. Pellentesque vel nisi quis massa volutpat
aliquam vel nec tortor. Maecenas vitae risus quis nibh vestibulum rutrum.
Vestibulum egestas dolor ullamcorper lorem placerat tincidunt. Curabitur massa
urna, pharetra sed gravida vitae, venenatis a tellus. Duis condimentum lectus
tellus, ut sodales ipsum hendrerit ac. Nullam sed accumsan arcu, ut sollicitudin
diam. Integer eu ligula vitae purus vehicula vulputate nec et metus. Aenean
mollis tempor lectus eu elementum. Integer in dui tempus, porttitor erat sed,
malesuada magna.
Cras nec orci sed tellus porta tristique a ac dui. Nam eu faucibus mi. Praesent
condimentum laoreet augue id pellentesque. In malesuada ex sed turpis
consectetur, non sodales mi cursus. Nunc id sem luctus, mattis lorem vel, tempus
ipsum. Nunc efficitur augue et nunc hendrerit, non tincidunt magna commodo.
Aenean sodales porta mi. Sed semper accumsan turpis vitae aliquam. Phasellus
vitae ex faucibus, suscipit ante non, commodo ligula. Aliquam erat volutpat.
Etiam odio sem, fringilla in sem eu, bibendum ornare est. Pellentesque habitant
morbi tristique senectus et netus et malesuada fames ac turpis egestas. Lorem
ipsum dolor sit amet, consectetur adipiscing elit.
Nulla nec fringilla magna. Morbi eu cursus sem. Fusce euismod eget turpis et
bibendum. Donec vel tincidunt neque. Suspendisse commodo euismod sodales.
Integer pretium congue tortor nec ullamcorper. Nam imperdiet, urna auctor
pretium facilisis, sem arcu malesuada turpis, sit amet sodales nisi lectus
sollicitudin tellus. Praesent consequat leo in dui congue, euismod ornare risus
malesuada. Nunc id tincidunt tortor. Vestibulum sit amet sapien urna. Donec quis
tristique elit, non facilisis neque. Donec gravida molestie tellus, sagittis
accumsan metus varius eu.
Duis nec est vitae augue laoreet rhoncus non nec mi. Phasellus pretium pharetra
magna, et congue urna posuere eget. Sed finibus arcu magna, sed luctus ante
suscipit quis. Pellentesque habitant morbi tristique senectus et netus et
malesuada fames ac turpis egestas. Fusce at accumsan quam. Mauris dolor lectus,
tempus auctor ante ut, auctor maximus turpis. Proin pulvinar dolor in
consectetur aliquam. Fusce sagittis elementum fermentum.
Aliquam nec posuere ipsum. Nulla commodo est at magna fringilla lobortis. Etiam
diam orci, venenatis non erat iaculis, commodo hendrerit diam. Nam imperdiet
justo vitae massa consectetur, ornare feugiat ipsum molestie. Curabitur
dignissim vitae augue et euismod. Interdum et malesuada fames ac ante ipsum
primis in faucibus. Praesent justo nunc, pellentesque vel ante vitae, dignissim
maximus felis. Proin vel congue nisl. Quisque ac tempus libero. In at placerat
tellus. Integer lobortis ligula vel dolor ornare finibus.
Donec semper nisl mauris, eu consectetur lacus sollicitudin a. Integer sem enim,
consectetur sed tincidunt id, dignissim at mauris. In a justo non erat cursus
tincidunt et sed sapien. Aenean vulputate placerat ornare. Etiam id lectus
lacus. Donec a sodales sapien. Duis in suscipit est, ultrices mollis magna.
Etiam blandit diam vitae sollicitudin sodales. Proin vel diam nec neque
ullamcorper ullamcorper ut at sapien. Sed quis sollicitudin libero. Nulla sed
arcu consequat, egestas libero viverra, dignissim magna.
Nullam semper turpis a sem tincidunt, ut molestie ante tincidunt. Curabitur
efficitur nisl quis aliquam tristique. Proin a auctor lectus. Donec dictum
mauris a leo consequat, eu bibendum neque efficitur. Donec euismod, mi nec
faucibus ornare, elit est tincidunt ligula, at molestie neque augue non justo.
Vestibulum condimentum varius felis non pretium. Praesent maximus ex sed justo
tristique elementum. Phasellus nec feugiat dolor. Nulla sed odio quam. Nulla nec
massa sit amet tellus efficitur accumsan sed et orci. Nullam sed mollis augue,
eget dictum metus. Etiam ut velit elit. Nullam nibh eros, commodo vitae maximus
sit amet, convallis sit amet elit. Nullam faucibus arcu tortor, vitae tincidunt
augue ullamcorper in.
Praesent quis metus et purus volutpat pulvinar. Sed commodo vehicula sodales.
Phasellus fringilla vehicula placerat. Vestibulum sit amet ante in ante
condimentum laoreet. Sed id purus diam. Suspendisse in libero in risus eleifend
fringilla. Cras non sapien vel sapien condimentum tristique.
Integer non semper mi, a aliquet enim. Phasellus congue erat sed lorem molestie
consectetur. Integer iaculis nisi et nisi blandit auctor. Nullam magna diam,
hendrerit sollicitudin urna vel, gravida congue diam. Curabitur finibus ipsum
ex, ac feugiat massa posuere at. Pellentesque in molestie lorem. Fusce rhoncus
velit at magna accumsan convallis. Aliquam posuere elementum turpis, eget
eleifend quam auctor et. Mauris a diam vitae magna malesuada fermentum sit amet
ut justo. Quisque in purus et erat rhoncus accumsan. Donec feugiat, ipsum vel
pulvinar suscipit, nibh nisi volutpat felis, nec rutrum nisi turpis at diam.
Suspendisse posuere, ante ut imperdiet tempor, tortor magna maximus risus, id
fermentum urna mauris hendrerit magna. Interdum et malesuada fames ac ante ipsum
primis in faucibus.
Ut eu faucibus neque. Fusce tempus luctus dui ut ullamcorper. Suspendisse in
velit a turpis facilisis scelerisque. Nullam ultricies sodales convallis. Proin
viverra vulputate justo sit amet interdum. Donec mi neque, dapibus ac ex at,
dignissim tincidunt lacus. Praesent ultricies, erat ac sagittis tempor, justo
turpis porta tortor, eget consectetur turpis odio sed nibh. Vestibulum vitae
porta lorem, efficitur viverra enim.
Nullam sodales sagittis tristique. Duis ac velit ultrices, efficitur tortor sit
amet, varius lacus. Praesent blandit et arcu sit amet tempus. Quisque neque
lectus, congue at rutrum at, commodo eu velit. Aliquam sed mi a ante condimentum
consectetur. Morbi feugiat risus dolor, ac auctor massa ultrices in. Praesent
laoreet metus non urna rhoncus, vel lacinia ex dapibus. Class aptent taciti
sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.
Curabitur vitae arcu vel enim feugiat rhoncus. Nullam nec neque sed nulla
hendrerit iaculis sed non erat. Pellentesque orci lacus, ullamcorper posuere
odio vel, efficitur elementum ipsum. Morbi justo risus, faucibus sit amet urna
eu, facilisis consequat ipsum. Quisque et congue ipsum, at ornare lacus.
Nunc laoreet elit nec arcu lobortis consectetur. Sed consectetur ultrices risus,
quis tincidunt lectus fermentum at. Nunc libero sem, dignissim pharetra lacinia
eu, posuere quis libero. Sed at lacus consectetur, molestie nisi quis,
scelerisque tortor. Etiam accumsan placerat nulla, vel consectetur felis aliquam
et. Cras pellentesque massa a ex commodo condimentum. Integer nec nulla sed
metus dignissim placerat. Ut vel urna augue. Donec pharetra justo ac ex pretium,
ut condimentum erat lacinia. Nunc id porta nunc, ac dapibus massa. Suspendisse
accumsan justo quis felis pharetra tempus. Donec rutrum nulla in consectetur
tincidunt.
Sed eu orci eu ligula maximus aliquet eget sed ex. Donec rhoncus fringilla
tellus, a bibendum mi placerat eu. Pellentesque luctus finibus neque blandit
pharetra. Aenean nec elit pretium, sodales lacus sed, mollis felis. Duis commodo
pellentesque risus et semper. Praesent pretium, libero pharetra fringilla
faucibus, ipsum urna porta nunc, nec euismod dolor risus eget lacus. Curabitur
malesuada dapibus tellus ut luctus. Aliquam gravida mauris tellus, ut vestibulum
massa dignissim vestibulum. Sed pulvinar, ex et consequat malesuada, erat tellus
bibendum mi, nec auctor nulla massa eu justo. Suspendisse imperdiet interdum
ligula. Donec at pretium urna. Donec quis diam leo. Aenean ac lectus non justo
aliquam consequat vitae mattis ipsum. Integer at consectetur felis, et volutpat
sapien. Suspendisse efficitur libero eu pulvinar cursus.
Suspendisse interdum enim id nibh imperdiet, et pulvinar lectus aliquet. Donec
ultricies mattis lorem eget malesuada. Sed hendrerit massa in rutrum auctor.
Suspendisse interdum mauris in sem vestibulum volutpat. Maecenas interdum
facilisis dui, posuere volutpat eros suscipit eget. Curabitur blandit odio
turpis, non dignissim magna varius sit amet. Suspendisse cursus ipsum id metus
venenatis, eu malesuada arcu congue.
Nulla vitae mi ut nibh pretium cursus in vitae turpis. In hac habitasse platea
dictumst. Phasellus consectetur, metus at tempus sollicitudin, nibh est molestie
nunc, sed imperdiet purus sapien in lorem. Etiam eget leo nec sem efficitur
luctus. Vestibulum mattis a odio ut volutpat. Duis consequat magna eget luctus
vulputate. Nam viverra posuere ultricies.
Duis sagittis nunc et sem sagittis venenatis. Sed massa lacus, vestibulum eget
convallis ac, facilisis nec turpis. Morbi ac ornare ex. Quisque non laoreet
lectus, sed tempus libero. Sed non neque risus. Sed gravida, mauris ac aliquam
porttitor, dolor massa faucibus est, eget vestibulum eros eros et risus. Morbi
sit amet tincidunt eros, ut cursus mauris. Integer a lectus pharetra, molestie
massa vel, laoreet sem. Suspendisse et enim libero. Nam molestie risus nec ex
laoreet, a faucibus massa rhoncus. Vivamus faucibus sapien eget lorem efficitur
auctor.
Curabitur sit amet leo non massa tempor bibendum. Nunc in tristique est. Donec
id mollis mauris, vel porta magna. Nulla vulputate eleifend lacus sed tincidunt.
Maecenas vitae sapien eu neque hendrerit venenatis sit amet nec nulla. Morbi
vestibulum dui lectus, id commodo dui vehicula eget. Nulla laoreet turpis vitae
lacus vehicula lacinia. Integer rhoncus tellus mi, vitae gravida metus convallis
quis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per
inceptos himenaeos. Mauris et accumsan sem. Sed elementum egestas tellus eget
eleifend. Sed finibus luctus felis.
Maecenas ultrices sodales orci non dapibus. Phasellus vitae lacus at diam
ultrices mattis porta non ipsum. Aliquam erat volutpat. Vestibulum auctor diam
vehicula gravida volutpat. In rhoncus, dui sit amet consequat convallis, odio
mauris tincidunt mi, vestibulum imperdiet lacus erat sed metus. Aenean in augue
eu tortor dictum tempor a ac magna. Mauris aliquet justo eget sem sollicitudin,
congue facilisis velit mollis. Proin dignissim, nulla a efficitur fringilla,
orci nulla malesuada velit, eget cursus dolor metus vitae nisl. Phasellus non
neque ipsum. Pellentesque porta vehicula ipsum, nec posuere urna bibendum et.
Etiam nec nisl eu nulla tempus placerat. Pellentesque risus magna, accumsan
vitae sem vitae, cursus fermentum elit. Ut varius efficitur turpis, et
pellentesque libero rutrum hendrerit. Maecenas condimentum lobortis eros, a
euismod metus.
Ut risus sapien, pulvinar quis euismod id, vestibulum ac erat. Donec feugiat
tempor commodo. Donec ligula est, aliquet eu sagittis eu, posuere vel eros.
Nullam sollicitudin diam eget libero malesuada, vel tempus lectus congue.
Praesent a odio risus. Nullam maximus tellus sed ligula eleifend, sed mollis
nunc consequat. Quisque eros mi, imperdiet nec ipsum in, pretium feugiat nibh.
Pellentesque cursus justo at metus condimentum consectetur. Nulla facilisi. Ut
tincidunt sem eget diam rhoncus, vitae gravida ipsum facilisis. Integer et
condimentum purus.
Sed faucibus tempus orci, id cursus eros volutpat non. Nam pulvinar ex nec enim
egestas ultricies. Suspendisse at eros ac metus sodales varius eu in ante. Cras
sed est quis magna tempus mollis id faucibus nibh. Curabitur convallis nisi
dolor, in imperdiet ante tempor eu. Quisque placerat leo et leo cursus, nec
eleifend urna scelerisque. Duis consequat ex a sapien facilisis consectetur.
Vivamus et aliquam lacus.
Praesent consequat lacus in aliquam ultricies. Sed consectetur vehicula aliquet.
Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos
himenaeos. Vivamus tellus neque, eleifend sed purus quis, elementum luctus mi.
Nullam elit lacus, finibus a sollicitudin in, suscipit non nunc. Nulla vulputate
odio vitae mauris tristique, ac interdum urna interdum. Phasellus nec tortor
hendrerit, mattis ante non, pharetra tortor.
Pellentesque vitae tempor urna, ut gravida enim. Sed eget sem purus. Nunc semper
quam mi, sed mollis ligula feugiat at. Pellentesque finibus augue risus, et
ultricies lacus scelerisque vel. Proin euismod tortor quam, et cursus ipsum
dictum ac. Suspendisse laoreet velit consequat ullamcorper cursus. Nam ultricies
gravida viverra. Vivamus non sodales quam, eget rutrum quam. Suspendisse
venenatis lorem sodales lectus eleifend, ac consequat odio finibus. Morbi id
maximus metus, a molestie neque. Integer eget felis sit amet sem tempor
placerat. Suspendisse lobortis congue justo eu accumsan. Nullam accumsan laoreet
purus. Nulla quis efficitur risus.
Ut ac leo libero. Nam nec nisi iaculis, ornare nunc fringilla, sodales lectus.
Nulla laoreet mauris sodales, sagittis enim non, vestibulum orci. Fusce orci
dui, dapibus nec ligula vitae, vulputate maximus ante. Mauris vitae felis
tincidunt, ullamcorper neque quis, pulvinar nisl. Fusce ut augue ac nisl posuere
tristique ac sed leo. Nunc pellentesque pretium turpis. Integer maximus rutrum
felis, ut molestie mauris mattis non. Morbi ac risus ut mauris porta pharetra.
Fusce mollis pharetra turpis nec consequat. Aenean tincidunt felis vel nulla
porta, faucibus egestas ligula efficitur. Morbi et dictum velit.
Proin scelerisque justo in tristique congue. Maecenas consequat ante dapibus
justo vehicula pretium. Sed consequat turpis ac orci suscipit malesuada non a
risus. In id leo molestie, venenatis risus quis, dignissim nulla. Nulla aliquet
risus nulla, a convallis sem tincidunt ac. Pellentesque scelerisque, elit eu
finibus eleifend, orci lectus egestas lorem, nec bibendum libero est non leo.
Nullam nisl ante, ullamcorper in efficitur a, consectetur sit amet tellus. Ut et
pellentesque eros. Etiam mattis nulla justo, sed ultricies dui commodo vel. Ut
tristique posuere leo, ac facilisis massa lobortis nec. Quisque leo ligula,
venenatis vel facilisis vel, volutpat ac sapien. Fusce sed porttitor urna.
Phasellus tempus semper condimentum. Aliquam sit amet felis vel nulla porta
luctus id vel leo.
Ut ut odio tincidunt, ultrices enim at, pellentesque sem. Proin bibendum ligula
lacus, ut tempus mauris tincidunt id. Praesent sollicitudin interdum tellus, vel
tincidunt nisi ultrices a. Aliquam cursus faucibus elit, quis lacinia erat
elementum eu. Duis sollicitudin lectus lectus, ut ultrices elit malesuada quis.
Phasellus viverra turpis sit amet erat iaculis dapibus. Donec semper turpis sed
risus pharetra pharetra. Donec ut ante ac orci blandit interdum. Pellentesque
facilisis id purus egestas placerat. Suspendisse sit amet euismod velit, et
rutrum ipsum. Maecenas at mi pulvinar, dignissim erat quis, blandit libero.
Praesent quam tortor, tempus et laoreet nec, aliquet sed libero. Duis vestibulum
est sed risus venenatis rhoncus. Phasellus arcu libero, commodo eget tincidunt
non, aliquam in velit. Phasellus imperdiet ante a laoreet gravida. Cras faucibus
semper nulla eu facilisis.
Praesent non sem sem. Nulla tempus ullamcorper sollicitudin. Ut eget nisi eget
augue fermentum consequat. Proin congue a nisi eget ullamcorper. Pellentesque
luctus diam felis, a pharetra nunc cursus in. Vivamus a quam dolor. Curabitur
fermentum elit sit amet purus ultricies, ut placerat nisl finibus. Nunc sed
ligula diam. Ut efficitur risus tortor. Suspendisse sem elit, posuere sit amet
nisi et, placerat tristique ipsum. Ut nunc ex, fermentum sed tempor vitae,
scelerisque quis nulla.
Duis ac aliquam lectus. Curabitur consequat maximus leo sed cursus. Maecenas
cursus lectus non porttitor consectetur. Vivamus ultricies, lectus non tempor
porttitor, turpis velit auctor leo, at auctor nibh justo ut mi. Vivamus interdum
massa at fermentum cursus. Nulla suscipit purus nulla, vel condimentum eros
rhoncus eget. Nulla malesuada aliquet maximus. Nulla blandit ipsum finibus leo
rhoncus, non lobortis felis scelerisque. Duis blandit massa quis velit efficitur
cursus. Aliquam nibh arcu, dictum et feugiat eget, iaculis ac risus. Nunc
facilisis pellentesque mauris, a aliquet libero eleifend eu. Pellentesque a
turpis et justo blandit maximus. Phasellus imperdiet dui odio, eu facilisis quam
porttitor id. Morbi accumsan, mauris eget fermentum porta, mi risus sagittis
nisi, in semper odio orci a magna. Praesent maximus accumsan odio, vitae
bibendum ipsum ultrices eu. Vestibulum laoreet purus nec neque fringilla
dignissim.
Morbi interdum diam eget ornare vestibulum. Etiam egestas at ipsum eget dapibus.
Nullam feugiat mi ex, et varius odio ornare id. Sed sagittis augue quam, in
maximus orci tincidunt vel. Duis molestie felis nunc, et feugiat risus
vestibulum et. Integer efficitur augue elit, id commodo lorem volutpat sed.
Fusce quam velit, suscipit a posuere sit amet, pulvinar sed nisi. Fusce lacinia
accumsan nunc vitae lobortis. Vivamus eu fringilla velit. Cras hendrerit
efficitur faucibus. Praesent facilisis a nulla non efficitur. Etiam quis est ac
neque pharetra bibendum a vitae neque.
Phasellus dui dui, pellentesque in facilisis quis, vulputate non nibh. Integer
in lobortis velit. Curabitur efficitur imperdiet dolor, vel tempus dui fermentum
quis. Maecenas porttitor nibh at nibh cursus mattis. In dolor neque, efficitur
at ligula nec, lobortis aliquam ipsum. Phasellus quam magna, imperdiet at nunc
a, suscipit aliquam metus. Cras consequat, enim vitae feugiat venenatis, enim
urna venenatis ligula, vel cursus odio lectus id purus. Integer sit amet finibus
diam. Fusce aliquet vehicula mauris, a varius metus semper in. Cras sodales
malesuada consectetur.
+13 -3
Ver Arquivo
@@ -1,10 +1,11 @@
/*
* HTTP test program for CUPS.
*
* Copyright 2007-2014 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products.
* Copyright © 2007-2018 by Apple Inc.
* Copyright © 1997-2006 by Easy Software Products.
*
* Licensed under Apache License v2.0. See the file "LICENSE" for more information.
* Licensed under Apache License v2.0. See the file "LICENSE" for more
* information.
*/
/*
@@ -114,6 +115,9 @@ static uri_test_t uri_tests[] = /* URI test data */
{ HTTP_URI_STATUS_OK, "ipp://%22%23%2F%3A%3C%3E%3F%40%5B%5C%5D%5E%60%7B%7C%7D/",
"ipp", "", "\"#/:<>?@[\\]^`{|}", "/", 631, 0,
HTTP_URI_CODING_MOST },
{ HTTP_URI_STATUS_UNKNOWN_SCHEME, "smb://server/Some%20Printer",
"smb", "", "server", "/Some Printer", 0, 0,
HTTP_URI_CODING_ALL },
/* Missing scheme */
{ HTTP_URI_STATUS_MISSING_SCHEME, "/path/to/file/index.html",
@@ -142,6 +146,9 @@ static uri_test_t uri_tests[] = /* URI test data */
HTTP_URI_CODING_MOST },
/* Bad scheme */
{ HTTP_URI_STATUS_BAD_SCHEME, "://server/ipp",
"", "", "", "", 0, 0,
HTTP_URI_CODING_MOST },
{ HTTP_URI_STATUS_BAD_SCHEME, "bad_scheme://server/resource",
"", "", "", "", 0, 0,
HTTP_URI_CODING_MOST },
@@ -174,6 +181,9 @@ static uri_test_t uri_tests[] = /* URI test data */
HTTP_URI_CODING_MOST },
/* Bad resource */
{ HTTP_URI_STATUS_BAD_RESOURCE, "mailto:\r\nbla",
"mailto", "", "", "", 0, 0,
HTTP_URI_CODING_MOST },
{ HTTP_URI_STATUS_BAD_RESOURCE, "http://server/index.html%",
"http", "", "server", "", 80, 0,
HTTP_URI_CODING_MOST },
+3 -3
Ver Arquivo
@@ -715,8 +715,8 @@ main(int argc, /* I - Number of command-line arguments */
_ipp_vars_t v; /* IPP variables */
_ippVarsInit(&v);
request = _ippFileParse(&v, argv[i], token_cb, NULL, NULL);
_ippVarsInit(&v, NULL, NULL, token_cb);
request = _ippFileParse(&v, argv[i], NULL);
_ippVarsDeinit(&v);
}
else
@@ -738,7 +738,7 @@ main(int argc, /* I - Number of command-line arguments */
if (state != IPP_STATE_DATA)
{
printf("Error reading IPP message from \"%s\".\n", argv[i]);
printf("Error reading IPP message from \"%s\": %s\n", argv[i], cupsLastErrorString());
status = 1;
ippDelete(request);
+13 -4
Ver Arquivo
@@ -1,9 +1,10 @@
/*
* Threading primitives for CUPS.
*
* Copyright 2009-2017 by Apple Inc.
* Copyright © 2009-2018 by Apple Inc.
*
* Licensed under Apache License v2.0. See the file "LICENSE" for more information.
* Licensed under Apache License v2.0. See the file "LICENSE" for more
* information.
*/
/*
@@ -50,8 +51,16 @@ _cupsCondWait(_cups_cond_t *cond, /* I - Condition */
{
struct timespec abstime; /* Timeout */
abstime.tv_sec = (long)timeout;
abstime.tv_nsec = (long)(1000000000 * (timeout - (long)timeout));
clock_gettime(CLOCK_REALTIME, &abstime);
abstime.tv_sec += (long)timeout;
abstime.tv_nsec += (long)(1000000000 * (timeout - (long)timeout));
while (abstime.tv_nsec >= 1000000000)
{
abstime.tv_nsec -= 1000000000;
abstime.tv_sec ++;
};
pthread_cond_timedwait(cond, mutex, &abstime);
}
+99 -11
Ver Arquivo
@@ -1,8 +1,8 @@
/*
* TLS support code for CUPS on macOS.
*
* Copyright 2007-2018 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
* Copyright © 2007-2018 by Apple Inc.
* Copyright © 1997-2007 by Easy Software Products, all rights reserved.
*
* Licensed under Apache License v2.0. See the file "LICENSE" for more information.
*/
@@ -800,24 +800,85 @@ httpCredentialsString(
if ((first = (http_credential_t *)cupsArrayFirst(credentials)) != NULL &&
(secCert = http_cdsa_create_credential(first)) != NULL)
{
CFStringRef cf_name; /* CF common name string */
char name[256]; /* Common name associated with cert */
/*
* Copy certificate (string) values from the SecCertificateRef and produce
* a one-line summary. The API for accessing certificate values like the
* issuer name is, um, "interesting"...
*/
CFStringRef cf_string; /* CF string */
CFDictionaryRef cf_dict; /* Dictionary for certificate */
char commonName[256],/* Common name associated with cert */
issuer[256], /* Issuer name */
sigalg[256]; /* Signature algorithm */
time_t expiration; /* Expiration date of cert */
unsigned char md5_digest[16]; /* MD5 result */
if ((cf_name = SecCertificateCopySubjectSummary(secCert)) != NULL)
if (SecCertificateCopyCommonName(secCert, &cf_string) == noErr)
{
CFStringGetCString(cf_name, name, (CFIndex)sizeof(name), kCFStringEncodingUTF8);
CFRelease(cf_name);
CFStringGetCString(cf_string, commonName, (CFIndex)sizeof(commonName), kCFStringEncodingUTF8);
CFRelease(cf_string);
}
else
strlcpy(name, "unknown", sizeof(name));
{
strlcpy(commonName, "unknown", sizeof(commonName));
}
strlcpy(issuer, "unknown", sizeof(issuer));
strlcpy(sigalg, "UnknownSignature", sizeof(sigalg));
if ((cf_dict = SecCertificateCopyValues(secCert, NULL, NULL)) != NULL)
{
CFDictionaryRef cf_issuer = CFDictionaryGetValue(cf_dict, kSecOIDX509V1IssuerName);
CFDictionaryRef cf_sigalg = CFDictionaryGetValue(cf_dict, kSecOIDX509V1SignatureAlgorithm);
if (cf_issuer)
{
CFArrayRef cf_values = CFDictionaryGetValue(cf_issuer, kSecPropertyKeyValue);
CFIndex i, count = CFArrayGetCount(cf_values);
CFDictionaryRef cf_value;
for (i = 0; i < count; i ++)
{
cf_value = CFArrayGetValueAtIndex(cf_values, i);
if (!CFStringCompare(CFDictionaryGetValue(cf_value, kSecPropertyKeyLabel), kSecOIDOrganizationName, kCFCompareCaseInsensitive))
CFStringGetCString(CFDictionaryGetValue(cf_value, kSecPropertyKeyValue), issuer, (CFIndex)sizeof(issuer), kCFStringEncodingUTF8);
}
}
if (cf_sigalg)
{
CFArrayRef cf_values = CFDictionaryGetValue(cf_sigalg, kSecPropertyKeyValue);
CFIndex i, count = CFArrayGetCount(cf_values);
CFDictionaryRef cf_value;
for (i = 0; i < count; i ++)
{
cf_value = CFArrayGetValueAtIndex(cf_values, i);
if (!CFStringCompare(CFDictionaryGetValue(cf_value, kSecPropertyKeyLabel), CFSTR("Algorithm"), kCFCompareCaseInsensitive))
{
CFStringRef cf_algorithm = CFDictionaryGetValue(cf_value, kSecPropertyKeyValue);
if (!CFStringCompare(cf_algorithm, CFSTR("1.2.840.113549.1.1.5"), kCFCompareCaseInsensitive))
strlcpy(sigalg, "SHA1WithRSAEncryption", sizeof(sigalg));
else if (!CFStringCompare(cf_algorithm, CFSTR("1.2.840.113549.1.1.11"), kCFCompareCaseInsensitive))
strlcpy(sigalg, "SHA256WithRSAEncryption", sizeof(sigalg));
else if (!CFStringCompare(cf_algorithm, CFSTR("1.2.840.113549.1.1.4"), kCFCompareCaseInsensitive))
strlcpy(sigalg, "MD5WithRSAEncryption", sizeof(sigalg));
}
}
}
CFRelease(cf_dict);
}
expiration = (time_t)(SecCertificateNotValidAfter(secCert) + kCFAbsoluteTimeIntervalSince1970);
cupsHashData("md5", first->data, first->datalen, md5_digest, sizeof(md5_digest));
snprintf(buffer, bufsize, "%s / %s / %02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X", name, httpGetDateString(expiration), md5_digest[0], md5_digest[1], md5_digest[2], md5_digest[3], md5_digest[4], md5_digest[5], md5_digest[6], md5_digest[7], md5_digest[8], md5_digest[9], md5_digest[10], md5_digest[11], md5_digest[12], md5_digest[13], md5_digest[14], md5_digest[15]);
snprintf(buffer, bufsize, "%s (issued by %s) / %s / %s / %02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X", commonName, issuer, httpGetDateString(expiration), sigalg, md5_digest[0], md5_digest[1], md5_digest[2], md5_digest[3], md5_digest[4], md5_digest[5], md5_digest[6], md5_digest[7], md5_digest[8], md5_digest[9], md5_digest[10], md5_digest[11], md5_digest[12], md5_digest[13], md5_digest[14], md5_digest[15]);
CFRelease(secCert);
}
@@ -1532,7 +1593,28 @@ _httpTLSStart(http_t *http) /* I - HTTP connection */
if (!error)
{
int done = 0; /* Are we done yet? */
int done = 0; /* Are we done yet? */
double old_timeout; /* Old timeout value */
http_timeout_cb_t old_cb; /* Old timeout callback */
void *old_data; /* Old timeout data */
/*
* Enforce a minimum timeout of 10 seconds for the TLS handshake...
*/
old_timeout = http->timeout_value;
old_cb = http->timeout_cb;
old_data = http->timeout_data;
if (!old_cb || old_timeout < 10.0)
{
DEBUG_puts("4_httpTLSStart: Setting timeout to 10 seconds.");
httpSetTimeout(http, 10.0, NULL, NULL);
}
/*
* Do the TLS handshake...
*/
while (!error && !done)
{
@@ -1653,6 +1735,12 @@ _httpTLSStart(http_t *http) /* I - HTTP connection */
break;
}
}
/*
* Restore the previous timeout settings...
*/
httpSetTimeout(http, old_timeout, old_cb, old_data);
}
if (error)
@@ -2085,7 +2173,7 @@ http_cdsa_read(
http = (http_t *)connection;
if (!http->blocking)
if (!http->blocking || http->timeout_value > 0.0)
{
/*
* Make sure we have data before we read...
+50 -11
Ver Arquivo
@@ -1,10 +1,11 @@
/*
* TLS support code for CUPS using GNU TLS.
*
* Copyright 2007-2018 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
* Copyright © 2007-2018 by Apple Inc.
* Copyright © 1997-2007 by Easy Software Products, all rights reserved.
*
* Licensed under Apache License v2.0. See the file "LICENSE" for more information.
* Licensed under Apache License v2.0. See the file "LICENSE" for more
* information.
*/
/**** This file is included from tls.c ****/
@@ -393,7 +394,7 @@ httpCredentialsAreValidForName(
for (i = 0; i < count; i ++)
{
rserial_size = sizeof(rserial);
if (!gnutls_x509_crl_get_crt_serial(tls_crl, (unsigned)i, rserial, &rserial_size, NULL) && cserial_size == rserial_size && !memcmp(cserial, rserial, rserial_size))
if (!gnutls_x509_crl_get_crt_serial(tls_crl, (unsigned)i, rserial, &rserial_size, NULL) && cserial_size == rserial_size && !memcmp(cserial, rserial, (int)rserial_size))
{
result = 0;
break;
@@ -639,22 +640,31 @@ httpCredentialsString(
if ((first = (http_credential_t *)cupsArrayFirst(credentials)) != NULL &&
(cert = http_gnutls_create_credential(first)) != NULL)
{
char name[256]; /* Common name associated with cert */
size_t namelen; /* Length of name */
char name[256], /* Common name associated with cert */
issuer[256]; /* Issuer associated with cert */
size_t len; /* Length of string */
time_t expiration; /* Expiration date of cert */
int sigalg; /* Signature algorithm */
unsigned char md5_digest[16]; /* MD5 result */
namelen = sizeof(name) - 1;
if (gnutls_x509_crt_get_dn_by_oid(cert, GNUTLS_OID_X520_COMMON_NAME, 0, 0, name, &namelen) >= 0)
name[namelen] = '\0';
len = sizeof(name) - 1;
if (gnutls_x509_crt_get_dn_by_oid(cert, GNUTLS_OID_X520_COMMON_NAME, 0, 0, name, &len) >= 0)
name[len] = '\0';
else
strlcpy(name, "unknown", sizeof(name));
len = sizeof(issuer) - 1;
if (gnutls_x509_crt_get_issuer_dn_by_oid(cert, GNUTLS_OID_X520_ORGANIZATION_NAME, 0, 0, issuer, &len) >= 0)
issuer[len] = '\0';
else
strlcpy(issuer, "unknown", sizeof(issuer));
expiration = gnutls_x509_crt_get_expiration_time(cert);
sigalg = gnutls_x509_crt_get_signature_algorithm(cert);
cupsHashData("md5", first->data, first->datalen, md5_digest, sizeof(md5_digest));
snprintf(buffer, bufsize, "%s / %s / %02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X", name, httpGetDateString(expiration), md5_digest[0], md5_digest[1], md5_digest[2], md5_digest[3], md5_digest[4], md5_digest[5], md5_digest[6], md5_digest[7], md5_digest[8], md5_digest[9], md5_digest[10], md5_digest[11], md5_digest[12], md5_digest[13], md5_digest[14], md5_digest[15]);
snprintf(buffer, bufsize, "%s (issued by %s) / %s / %s / %02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X", name, issuer, httpGetDateString(expiration), gnutls_sign_get_name(sigalg), md5_digest[0], md5_digest[1], md5_digest[2], md5_digest[3], md5_digest[4], md5_digest[5], md5_digest[6], md5_digest[7], md5_digest[8], md5_digest[9], md5_digest[10], md5_digest[11], md5_digest[12], md5_digest[13], md5_digest[14], md5_digest[15]);
gnutls_x509_crt_deinit(cert);
}
@@ -1087,7 +1097,7 @@ http_gnutls_read(
http = (http_t *)ptr;
if (!http->blocking)
if (!http->blocking || http->timeout_value > 0.0)
{
/*
* Make sure we have data before we read...
@@ -1245,6 +1255,9 @@ _httpTLSStart(http_t *http) /* I - Connection to server */
char priority_string[2048];
/* Priority string */
int version; /* Current version */
double old_timeout; /* Old timeout value */
http_timeout_cb_t old_cb; /* Old timeout callback */
void *old_data; /* Old timeout data */
static const char * const versions[] =/* SSL/TLS versions */
{
"VERS-SSL3.0",
@@ -1578,6 +1591,24 @@ _httpTLSStart(http_t *http) /* I - Connection to server */
#endif /* HAVE_GNUTLS_TRANSPORT_SET_PULL_TIMEOUT_FUNCTION */
gnutls_transport_set_push_function(http->tls, http_gnutls_write);
/*
* Enforce a minimum timeout of 10 seconds for the TLS handshake...
*/
old_timeout = http->timeout_value;
old_cb = http->timeout_cb;
old_data = http->timeout_data;
if (!old_cb || old_timeout < 10.0)
{
DEBUG_puts("4_httpTLSStart: Setting timeout to 10 seconds.");
httpSetTimeout(http, 10.0, NULL, NULL);
}
/*
* Do the TLS handshake...
*/
while ((status = gnutls_handshake(http->tls)) != GNUTLS_E_SUCCESS)
{
DEBUG_printf(("5_httpStartTLS: gnutls_handshake returned %d (%s)",
@@ -1595,10 +1626,18 @@ _httpTLSStart(http_t *http) /* I - Connection to server */
free(credentials);
http->tls = NULL;
httpSetTimeout(http, old_timeout, old_cb, old_data);
return (-1);
}
}
/*
* Restore the previous timeout settings...
*/
httpSetTimeout(http, old_timeout, old_cb, old_data);
http->tls_credentials = credentials;
return (0);
+1 -1
Ver Arquivo
@@ -30,7 +30,7 @@
/*
* Local functions...
* Include platform-specific TLS code...
*/
#ifdef HAVE_SSL
+15
Ver Arquivo
@@ -37,6 +37,8 @@ main(int argc, /* I - Number of command-line arguments */
http_t *http; /* HTTP connection */
const char *server = NULL; /* Hostname from command-line */
int port = 0; /* Port number */
cups_array_t *creds; /* Server credentials */
char creds_str[2048]; /* Credentials string */
const char *cipherName = "UNKNOWN";/* Cipher suite name */
int dhBits = 0; /* Diffie-Hellman bits */
int tlsVersion = 0; /* TLS version number */
@@ -154,6 +156,16 @@ main(int argc, /* I - Number of command-line arguments */
return (1);
}
if (httpCopyCredentials(http, &creds))
{
strlcpy(creds_str, "Unable to get server X.509 credentials.", sizeof(creds_str));
}
else
{
httpCredentialsString(creds, creds_str, sizeof(creds_str));
httpFreeCredentials(creds);
}
#ifdef __APPLE__
SSLProtocol protocol;
SSLCipherSuite cipher;
@@ -691,6 +703,8 @@ main(int argc, /* I - Number of command-line arguments */
else
printf("%s: OK (TLS: %d.%d, %s)\n", server, tlsVersion / 10, tlsVersion % 10, cipherName);
printf(" %s\n", creds_str);
if (verbose)
{
httpAssembleURI(HTTP_URI_CODING_ALL, uri, sizeof(uri), "ipps", NULL, host, port, resource);
@@ -714,6 +728,7 @@ main(int argc, /* I - Number of command-line arguments */
}
ippDelete(response);
puts("");
}
httpClose(http);
+10 -49
Ver Arquivo
@@ -1,10 +1,11 @@
/*
* Printing utilities for CUPS.
*
* Copyright 2007-2017 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products.
* Copyright © 2007-2018 by Apple Inc.
* Copyright © 1997-2006 by Easy Software Products.
*
* Licensed under Apache License v2.0. See the file "LICENSE" for more information.
* Licensed under Apache License v2.0. See the file "LICENSE" for more
* information.
*/
/*
@@ -21,19 +22,6 @@
#endif /* WIN32 || __EMX__ */
/*
* Enumeration data and callback...
*/
typedef struct _cups_createdata_s
{
const char *name; /* Destination name */
cups_dest_t *dest; /* Matching destination */
} _cups_createdata_t;
static int cups_create_cb(_cups_createdata_t *data, unsigned flags, cups_dest_t *dest);
/*
* 'cupsCancelJob()' - Cancel a print job on the default server.
*
@@ -168,7 +156,7 @@ cupsCreateJob(
{
int job_id = 0; /* job-id value */
ipp_status_t status; /* Create-Job status */
_cups_createdata_t data; /* Enumeration data */
cups_dest_t *dest; /* Destination */
cups_dinfo_t *info; /* Destination information */
@@ -188,12 +176,7 @@ cupsCreateJob(
* Lookup the destination...
*/
data.name = name;
data.dest = NULL;
cupsEnumDests(0, 1000, NULL, 0, 0, (cups_dest_cb_t)cups_create_cb, &data);
if (!data.dest)
if ((dest = cupsGetNamedDest(http, name, NULL)) == NULL)
{
DEBUG_puts("1cupsCreateJob: Destination not found.");
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(ENOENT), 0);
@@ -205,18 +188,18 @@ cupsCreateJob(
*/
DEBUG_puts("1cupsCreateJob: Querying destination info.");
if ((info = cupsCopyDestInfo(http, data.dest)) == NULL)
if ((info = cupsCopyDestInfo(http, dest)) == NULL)
{
DEBUG_puts("1cupsCreateJob: Query failed.");
cupsFreeDests(1, data.dest);
cupsFreeDests(1, dest);
return (0);
}
status = cupsCreateDestJob(http, data.dest, info, &job_id, title, num_options, options);
status = cupsCreateDestJob(http, dest, info, &job_id, title, num_options, options);
DEBUG_printf(("1cupsCreateJob: cupsCreateDestJob returned %04x (%s)", status, ippErrorString(status)));
cupsFreeDestInfo(info);
cupsFreeDests(1, data.dest);
cupsFreeDests(1, dest);
/*
* Return the job...
@@ -968,25 +951,3 @@ cupsStartDocument(
return (status);
}
/*
* 'cups_create_cb()' - Find the destination for printing.
*/
static int /* O - 0 on match */
cups_create_cb(
_cups_createdata_t *data, /* I - Data from cupsCreateJob call */
unsigned flags, /* I - Enumeration flags */
cups_dest_t *dest) /* I - Destination */
{
DEBUG_printf(("2cups_create_cb(data=%p(%s), flags=%08x, dest=%p(%s))", (void *)data, data->name, flags, (void *)dest, dest->name));
(void)flags;
if (dest->instance || strcasecmp(data->name, dest->name))
return (1);
cupsCopyDest(dest, 0, &data->dest);
return (0);
}
+5 -2
Ver Arquivo
@@ -1,9 +1,10 @@
/*
* API versioning definitions for CUPS.
*
* Copyright 2007-2017 by Apple Inc.
* Copyright © 2007-2018 by Apple Inc.
*
* Licensed under Apache License v2.0. See the file "LICENSE" for more information.
* Licensed under Apache License v2.0. See the file "LICENSE" for more
* information.
*/
#ifndef _CUPS_VERSIONING_H_
@@ -65,6 +66,7 @@
# define _CUPS_API_2_0 AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER
# define _CUPS_API_2_2 AVAILABLE_MAC_OS_X_VERSION_10_12_AND_LATER
# define _CUPS_API_2_2_4 AVAILABLE_MAC_OS_X_VERSION_10_13_AND_LATER
# define _CUPS_API_2_2_7
# define _CUPS_API_2_3
# else
# define _CUPS_API_1_1_19
@@ -79,6 +81,7 @@
# define _CUPS_API_2_0
# define _CUPS_API_2_2
# define _CUPS_API_2_2_4
# define _CUPS_API_2_2_7
# define _CUPS_API_2_3
# endif /* __APPLE__ && !_CUPS_SOURCE */
+68
Ver Arquivo
@@ -0,0 +1,68 @@
/* Simple ordered dither threshold matrix */
const unsigned char threshold[64][64] =
{
{ 0, 235, 138, 22, 45, 98, 217, 2, 45, 98, 7, 185, 45, 97, 6, 192, 110, 37, 110, 37, 97, 45, 18, 148, 109, 37, 97, 45, 7, 185, 45, 97, 6, 192, 109, 37, 57, 82, 165, 12, 26, 130, 190, 6, 119, 31, 97, 45, 179, 8, 109, 37, 97, 45, 140, 22, 109, 37, 57, 82, 9, 177, 24, 135 },
{ 109, 37, 57, 82, 20, 143, 57, 82, 146, 19, 57, 82, 15, 158, 87, 53, 20, 144, 13, 162, 138, 22, 53, 87, 162, 13, 138, 22, 57, 82, 22, 140, 57, 82, 153, 16, 119, 31, 109, 37, 109, 37, 57, 81, 19, 147, 213, 2, 53, 87, 21, 142, 13, 164, 53, 87, 187, 6, 152, 17, 119, 32, 110, 37 },
{ 24, 135, 12, 167, 97, 45, 17, 151, 45, 97, 32, 119, 26, 130, 119, 32, 81, 58, 30, 121, 81, 58, 181, 8, 119, 32, 97, 45, 17, 151, 45, 97, 161, 14, 45, 97, 213, 2, 135, 24, 7, 183, 138, 22, 109, 37, 58, 81, 121, 30, 109, 37, 58, 81, 30, 121, 58, 81, 127, 27, 58, 81, 165, 12 },
{ 58, 81, 31, 119, 5, 197, 58, 81, 9, 175, 206, 3, 58, 81, 10, 174, 222, 1, 45, 97, 206, 3, 124, 29, 58, 81, 4, 200, 58, 81, 2, 217, 58, 81, 27, 127, 108, 37, 58, 81, 30, 121, 58, 81, 167, 12, 25, 132, 15, 158, 5, 197, 135, 24, 206, 3, 142, 21, 45, 97, 203, 3, 119, 32 },
{ 6, 190, 108, 38, 97, 45, 143, 20, 108, 38, 97, 45, 148, 18, 108, 38, 58, 81, 148, 18, 119, 32, 97, 45, 16, 153, 97, 45, 143, 20, 46, 97, 32, 119, 6, 187, 25, 132, 13, 164, 46, 97, 1, 222, 119, 32, 108, 38, 108, 38, 108, 38, 108, 38, 108, 38, 58, 81, 8, 179, 123, 29, 97, 46 },
{ 58, 81, 161, 14, 147, 19, 53, 87, 22, 138, 14, 159, 87, 53, 22, 138, 14, 159, 108, 38, 87, 53, 177, 9, 53, 87, 14, 161, 58, 81, 22, 137, 12, 167, 108, 38, 108, 38, 81, 58, 153, 16, 123, 29, 53, 87, 187, 6, 162, 13, 132, 25, 11, 168, 25, 132, 12, 165, 119, 32, 81, 58, 14, 161 },
{ 140, 22, 108, 38, 81, 58, 8, 181, 108, 38, 97, 46, 8, 181, 58, 81, 31, 119, 7, 185, 147, 19, 58, 81, 127, 27, 97, 46, 8, 179, 108, 38, 58, 81, 21, 142, 13, 162, 5, 194, 108, 38, 58, 81, 15, 156, 87, 53, 30, 121, 108, 38, 108, 38, 58, 81, 127, 27, 97, 46, 16, 153, 97, 46 },
{ 58, 81, 2, 217, 123, 29, 36, 111, 1, 227, 138, 22, 97, 46, 4, 203, 108, 38, 108, 38, 97, 46, 23, 137, 222, 1, 112, 36, 58, 81, 6, 192, 137, 23, 53, 87, 30, 121, 58, 80, 23, 137, 183, 7, 36, 111, 26, 130, 59, 80, 0, 235, 130, 26, 192, 6, 46, 97, 222, 1, 53, 87, 194, 5 },
{ 17, 151, 46, 97, 172, 10, 59, 80, 27, 127, 59, 80, 18, 148, 59, 80, 172, 10, 24, 135, 4, 200, 80, 59, 36, 112, 167, 12, 137, 23, 108, 38, 97, 46, 0, 235, 46, 97, 144, 20, 46, 97, 127, 27, 53, 87, 3, 206, 147, 19, 108, 38, 108, 38, 80, 59, 151, 17, 80, 59, 27, 127, 96, 46 },
{ 58, 81, 126, 27, 96, 46, 15, 156, 46, 97, 172, 10, 46, 96, 14, 159, 119, 32, 59, 80, 32, 119, 156, 15, 53, 87, 27, 127, 59, 80, 21, 142, 10, 172, 80, 59, 177, 9, 80, 59, 2, 213, 59, 80, 14, 161, 108, 38, 59, 79, 23, 137, 11, 168, 137, 23, 46, 96, 32, 119, 13, 164, 140, 22 },
{ 6, 190, 152, 17, 112, 36, 59, 79, 6, 187, 59, 79, 30, 121, 108, 38, 96, 46, 15, 156, 46, 96, 29, 123, 183, 7, 46, 96, 209, 3, 46, 96, 32, 118, 26, 130, 96, 46, 15, 158, 46, 96, 16, 153, 46, 96, 32, 118, 10, 172, 108, 38, 108, 38, 59, 79, 179, 8, 141, 21, 59, 79, 32, 119 },
{ 87, 53, 36, 112, 203, 4, 137, 23, 96, 46, 23, 137, 4, 200, 24, 135, 235, 0, 87, 53, 8, 179, 108, 38, 87, 53, 15, 156, 53, 87, 156, 15, 59, 79, 156, 15, 119, 32, 59, 79, 30, 121, 59, 79, 6, 190, 151, 17, 59, 79, 187, 6, 26, 130, 3, 206, 108, 38, 96, 46, 206, 3, 110, 37 },
{ 142, 21, 59, 79, 28, 126, 59, 79, 144, 20, 59, 79, 119, 32, 60, 79, 32, 118, 27, 129, 87, 53, 3, 209, 118, 32, 60, 79, 126, 28, 96, 46, 5, 194, 46, 96, 197, 5, 134, 24, 7, 183, 137, 23, 46, 96, 36, 112, 28, 126, 108, 38, 108, 38, 60, 79, 148, 18, 118, 32, 60, 79, 167, 12 },
{ 37, 109, 174, 10, 46, 95, 10, 174, 47, 95, 170, 11, 47, 95, 9, 177, 47, 95, 14, 159, 118, 32, 60, 79, 170, 11, 134, 24, 183, 7, 112, 36, 79, 60, 140, 22, 108, 38, 107, 38, 107, 39, 79, 60, 17, 149, 60, 79, 213, 2, 24, 135, 177, 9, 159, 14, 47, 95, 9, 175, 137, 23, 47, 95 },
{ 0, 235, 60, 79, 18, 149, 87, 53, 217, 2, 53, 87, 156, 15, 86, 53, 16, 153, 54, 86, 167, 12, 137, 23, 107, 39, 60, 79, 36, 112, 172, 10, 147, 19, 47, 95, 19, 147, 9, 175, 132, 25, 1, 227, 36, 110, 9, 175, 112, 36, 60, 79, 30, 121, 60, 79, 126, 28, 112, 36, 60, 79, 19, 147 },
{ 37, 109, 140, 22, 47, 95, 30, 121, 60, 78, 30, 121, 61, 78, 32, 118, 61, 78, 200, 4, 112, 36, 61, 78, 19, 147, 227, 1, 47, 95, 27, 129, 86, 54, 2, 217, 54, 86, 28, 126, 61, 78, 126, 28, 61, 78, 129, 26, 95, 47, 15, 158, 47, 95, 20, 144, 1, 222, 95, 47, 6, 190, 47, 95 },
{ 13, 164, 61, 78, 4, 200, 162, 13, 24, 134, 183, 7, 24, 134, 213, 2, 142, 21, 123, 29, 95, 47, 192, 6, 107, 39, 86, 54, 153, 16, 54, 86, 30, 121, 61, 78, 30, 121, 95, 47, 170, 11, 47, 95, 10, 172, 47, 94, 179, 8, 61, 78, 4, 200, 107, 39, 61, 78, 22, 140, 61, 78, 23, 137 },
{ 37, 109, 31, 120, 107, 39, 107, 39, 107, 39, 107, 39, 61, 78, 121, 30, 107, 39, 61, 78, 19, 146, 86, 54, 23, 137, 13, 164, 61, 77, 200, 4, 159, 14, 131, 25, 13, 164, 4, 200, 86, 54, 18, 148, 54, 86, 203, 4, 94, 47, 19, 146, 47, 94, 23, 137, 13, 161, 47, 94, 17, 151, 47, 94 },
{ 26, 131, 6, 187, 158, 15, 26, 131, 4, 203, 26, 131, 177, 9, 47, 94, 14, 159, 10, 174, 94, 47, 151, 17, 61, 77, 32, 118, 27, 129, 118, 32, 107, 39, 107, 39, 86, 54, 126, 28, 118, 32, 61, 77, 31, 120, 77, 61, 126, 28, 86, 54, 14, 161, 107, 39, 77, 61, 6, 190, 61, 77, 3, 206 },
{ 107, 39, 61, 77, 121, 30, 86, 54, 121, 30, 107, 39, 61, 77, 16, 153, 107, 39, 86, 54, 1, 222, 94, 47, 8, 179, 47, 94, 174, 10, 54, 86, 11, 168, 5, 194, 144, 20, 86, 54, 17, 152, 3, 209, 162, 13, 134, 24, 12, 167, 123, 29, 61, 77, 7, 185, 136, 23, 47, 94, 32, 118, 27, 127 },
{ 164, 13, 144, 20, 94, 47, 174, 10, 61, 77, 11, 170, 123, 29, 37, 110, 5, 194, 123, 29, 86, 54, 20, 143, 61, 77, 3, 206, 61, 77, 18, 148, 118, 32, 85, 54, 32, 118, 177, 9, 85, 55, 28, 126, 106, 39, 106, 39, 61, 77, 0, 235, 118, 32, 106, 39, 61, 77, 19, 147, 177, 9, 81, 58 },
{ 106, 39, 77, 61, 222, 1, 94, 47, 18, 149, 48, 93, 227, 1, 85, 55, 29, 123, 168, 11, 112, 36, 85, 55, 33, 117, 27, 129, 117, 33, 106, 39, 94, 47, 149, 18, 77, 61, 27, 129, 117, 33, 61, 77, 20, 144, 6, 190, 117, 33, 55, 85, 159, 14, 26, 131, 3, 209, 117, 32, 94, 47, 16, 153 },
{ 5, 194, 123, 29, 55, 85, 19, 146, 62, 77, 126, 28, 37, 110, 156, 15, 62, 77, 36, 112, 17, 151, 194, 5, 151, 17, 77, 62, 17, 152, 2, 217, 175, 9, 93, 47, 227, 0, 48, 93, 6, 192, 168, 11, 117, 33, 77, 62, 161, 14, 140, 22, 106, 39, 106, 39, 106, 39, 62, 77, 28, 126, 81, 58 },
{ 47, 94, 153, 16, 123, 29, 85, 55, 5, 197, 152, 17, 62, 77, 29, 123, 10, 174, 48, 93, 28, 126, 106, 39, 93, 48, 8, 181, 106, 39, 62, 77, 33, 117, 144, 20, 62, 77, 18, 148, 106, 39, 106, 39, 93, 48, 18, 147, 48, 93, 33, 117, 192, 6, 164, 13, 131, 26, 14, 158, 227, 1, 140, 22 },
{ 13, 164, 85, 55, 10, 174, 117, 33, 106, 39, 93, 48, 10, 172, 106, 39, 62, 77, 2, 209, 62, 77, 161, 14, 142, 21, 62, 77, 33, 117, 143, 20, 106, 39, 93, 48, 22, 138, 48, 93, 158, 15, 131, 26, 1, 217, 85, 55, 200, 4, 106, 39, 105, 39, 105, 40, 105, 40, 105, 40, 105, 40, 87, 53 },
{ 85, 55, 120, 31, 62, 77, 6, 187, 142, 21, 123, 29, 85, 55, 5, 194, 123, 29, 37, 110, 179, 8, 117, 33, 85, 55, 23, 136, 6, 192, 62, 77, 10, 174, 5, 197, 62, 77, 8, 179, 105, 40, 105, 40, 85, 55, 120, 31, 62, 77, 167, 12, 26, 131, 15, 158, 5, 194, 168, 11, 147, 19, 118, 32 },
{ 135, 24, 3, 209, 136, 23, 105, 40, 62, 76, 209, 3, 123, 29, 63, 76, 15, 155, 63, 76, 27, 129, 93, 48, 0, 235, 105, 40, 93, 48, 17, 151, 48, 93, 33, 116, 16, 155, 37, 110, 4, 203, 162, 13, 24, 134, 11, 168, 136, 23, 105, 40, 105, 40, 105, 40, 63, 76, 126, 28, 85, 55, 6, 190 },
{ 37, 109, 33, 117, 63, 76, 21, 142, 12, 165, 48, 93, 16, 155, 123, 29, 93, 48, 11, 170, 48, 93, 16, 155, 55, 85, 170, 11, 136, 23, 63, 76, 146, 19, 63, 76, 27, 129, 76, 63, 27, 129, 116, 33, 76, 63, 33, 117, 63, 76, 19, 147, 217, 2, 168, 11, 142, 21, 48, 93, 120, 31, 80, 59 },
{ 175, 9, 93, 49, 10, 172, 105, 40, 63, 76, 125, 28, 85, 55, 8, 179, 117, 33, 84, 55, 197, 5, 55, 84, 27, 129, 116, 33, 93, 49, 213, 2, 49, 93, 11, 170, 49, 93, 172, 10, 105, 40, 93, 49, 5, 194, 49, 93, 192, 6, 116, 33, 63, 76, 120, 31, 63, 76, 3, 206, 162, 13, 26, 131 },
{ 37, 109, 18, 149, 63, 76, 0, 235, 131, 26, 187, 6, 116, 33, 84, 55, 1, 222, 140, 22, 63, 76, 33, 116, 8, 179, 84, 55, 158, 15, 55, 84, 27, 129, 84, 55, 217, 2, 55, 84, 20, 144, 10, 174, 55, 84, 149, 18, 122, 29, 93, 49, 20, 143, 49, 93, 15, 158, 116, 33, 105, 40, 80, 59 },
{ 138, 22, 93, 49, 22, 138, 105, 40, 105, 40, 63, 76, 159, 14, 136, 23, 63, 75, 33, 116, 164, 13, 144, 20, 93, 49, 5, 194, 63, 75, 33, 116, 185, 7, 116, 33, 75, 63, 31, 120, 104, 40, 75, 63, 31, 120, 104, 41, 75, 63, 181, 8, 84, 55, 6, 192, 104, 41, 84, 55, 21, 142, 217, 2 },
{ 84, 55, 197, 5, 55, 84, 19, 146, 13, 164, 140, 22, 104, 41, 93, 49, 18, 149, 49, 93, 28, 125, 63, 75, 125, 28, 93, 49, 21, 141, 11, 168, 63, 75, 165, 12, 24, 134, 15, 158, 209, 3, 26, 131, 15, 158, 1, 227, 144, 20, 49, 93, 16, 153, 63, 75, 23, 136, 10, 172, 63, 75, 120, 30 },
{ 14, 161, 75, 63, 177, 8, 116, 33, 75, 63, 33, 116, 2, 213, 175, 9, 63, 75, 190, 6, 92, 49, 2, 213, 152, 17, 111, 36, 63, 75, 36, 112, 27, 129, 111, 36, 104, 41, 104, 41, 104, 41, 104, 41, 104, 41, 104, 41, 75, 63, 125, 28, 92, 49, 14, 161, 104, 41, 92, 49, 7, 185, 49, 92 },
{ 47, 94, 144, 20, 122, 30, 92, 49, 5, 197, 49, 92, 28, 125, 92, 49, 143, 20, 49, 92, 18, 149, 75, 63, 36, 112, 11, 168, 222, 1, 49, 92, 203, 4, 55, 84, 190, 6, 162, 13, 26, 130, 190, 6, 164, 13, 26, 130, 13, 162, 206, 3, 122, 30, 84, 55, 0, 235, 122, 30, 84, 55, 16, 152 },
{ 6, 192, 116, 33, 75, 63, 16, 155, 63, 74, 15, 156, 64, 74, 20, 143, 84, 55, 22, 138, 92, 49, 143, 20, 49, 92, 27, 129, 55, 84, 156, 15, 56, 84, 16, 155, 116, 33, 104, 41, 104, 41, 104, 41, 104, 41, 104, 41, 103, 41, 64, 74, 181, 8, 115, 33, 64, 74, 152, 17, 122, 30, 80, 59 },
{ 103, 41, 92, 49, 213, 2, 49, 92, 28, 125, 92, 49, 6, 185, 92, 49, 3, 206, 64, 74, 7, 185, 64, 74, 190, 6, 64, 74, 31, 120, 64, 74, 33, 117, 103, 41, 64, 74, 20, 144, 8, 181, 24, 134, 15, 158, 5, 197, 141, 21, 122, 30, 56, 84, 19, 146, 13, 164, 50, 91, 203, 4, 112, 36 },
{ 24, 134, 12, 167, 56, 84, 34, 115, 172, 10, 136, 23, 64, 74, 18, 149, 92, 49, 18, 149, 91, 49, 15, 156, 50, 91, 20, 144, 7, 183, 24, 134, 183, 7, 24, 134, 235, 0, 50, 91, 31, 120, 64, 74, 125, 28, 115, 34, 64, 74, 161, 14, 115, 34, 103, 41, 64, 74, 125, 28, 37, 110, 165, 12 },
{ 103, 41, 64, 74, 23, 136, 185, 7, 103, 41, 91, 50, 20, 143, 50, 91, 22, 138, 56, 84, 31, 120, 64, 74, 31, 120, 103, 41, 103, 41, 64, 74, 31, 120, 103, 41, 64, 74, 125, 28, 91, 50, 217, 2, 103, 41, 91, 50, 10, 174, 50, 91, 22, 140, 200, 4, 134, 24, 7, 183, 65, 74, 28, 126 },
{ 227, 1, 146, 19, 103, 41, 65, 74, 21, 142, 227, 1, 65, 74, 6, 190, 65, 74, 9, 175, 0, 235, 24, 134, 206, 3, 162, 13, 130, 26, 213, 2, 50, 91, 13, 162, 131, 26, 185, 7, 152, 17, 65, 74, 170, 11, 144, 20, 56, 84, 1, 222, 103, 41, 103, 41, 103, 41, 91, 50, 175, 9, 50, 91 },
{ 49, 93, 33, 116, 6, 187, 136, 23, 50, 91, 33, 116, 18, 149, 50, 91, 19, 147, 103, 41, 103, 41, 102, 41, 102, 42, 102, 42, 102, 42, 65, 74, 21, 141, 102, 42, 102, 42, 65, 74, 125, 28, 115, 34, 102, 42, 65, 74, 31, 119, 65, 74, 167, 12, 26, 130, 12, 165, 115, 34, 84, 56, 151, 17 },
{ 148, 18, 102, 42, 102, 42, 84, 56, 174, 10, 102, 42, 65, 74, 22, 140, 65, 74, 159, 14, 131, 26, 11, 168, 26, 131, 15, 158, 7, 185, 159, 14, 50, 91, 5, 197, 168, 11, 141, 21, 50, 91, 179, 8, 24, 134, 4, 203, 162, 13, 142, 21, 102, 42, 102, 42, 65, 74, 2, 217, 140, 22, 80, 59 },
{ 49, 92, 9, 175, 24, 133, 3, 209, 65, 74, 19, 146, 185, 7, 90, 50, 3, 209, 102, 42, 65, 74, 31, 120, 102, 42, 65, 74, 31, 120, 65, 73, 34, 115, 27, 129, 115, 34, 56, 84, 203, 4, 111, 36, 65, 73, 125, 28, 102, 42, 65, 73, 23, 136, 192, 6, 136, 23, 102, 42, 90, 50, 6, 187 },
{ 31, 119, 102, 42, 102, 42, 90, 50, 138, 22, 102, 42, 65, 73, 125, 28, 65, 73, 21, 141, 194, 5, 50, 90, 192, 6, 141, 21, 50, 90, 21, 141, 6, 187, 102, 42, 65, 73, 16, 155, 122, 30, 90, 50, 14, 161, 50, 90, 34, 115, 200, 4, 102, 42, 102, 42, 84, 56, 18, 149, 115, 34, 79, 59 },
{ 209, 3, 25, 133, 6, 187, 146, 19, 65, 73, 203, 4, 134, 24, 11, 168, 111, 36, 102, 42, 65, 73, 19, 147, 102, 42, 65, 73, 1, 227, 102, 42, 65, 73, 19, 146, 217, 2, 115, 34, 56, 84, 17, 152, 73, 65, 177, 9, 151, 17, 73, 65, 165, 12, 131, 26, 175, 9, 73, 65, 9, 174, 24, 134 },
{ 33, 117, 102, 42, 65, 73, 34, 115, 11, 170, 115, 34, 65, 73, 36, 111, 181, 7, 168, 11, 136, 23, 50, 90, 161, 14, 146, 19, 50, 90, 159, 14, 136, 23, 102, 42, 102, 42, 73, 65, 7, 183, 90, 50, 1, 227, 50, 90, 36, 111, 27, 129, 115, 34, 72, 65, 34, 115, 27, 127, 111, 36, 79, 59 },
{ 50, 90, 164, 13, 141, 21, 102, 42, 102, 42, 90, 50, 15, 156, 50, 90, 27, 127, 115, 34, 66, 72, 2, 217, 102, 42, 66, 72, 22, 138, 102, 42, 66, 72, 167, 12, 133, 25, 12, 165, 37, 110, 28, 125, 72, 66, 143, 20, 72, 66, 179, 8, 90, 50, 235, 0, 51, 90, 203, 4, 90, 50, 7, 183 },
{ 17, 152, 101, 42, 66, 72, 235, 0, 25, 133, 8, 181, 66, 72, 222, 1, 101, 43, 90, 50, 17, 152, 51, 90, 23, 136, 185, 7, 51, 90, 9, 175, 203, 4, 114, 34, 72, 66, 125, 28, 72, 66, 172, 10, 146, 19, 90, 51, 209, 3, 51, 90, 153, 16, 56, 84, 16, 155, 56, 84, 16, 155, 87, 53 },
{ 84, 56, 6, 192, 151, 17, 114, 35, 72, 66, 35, 114, 27, 127, 37, 110, 17, 152, 197, 5, 84, 56, 14, 161, 101, 43, 72, 66, 18, 149, 72, 66, 125, 28, 90, 51, 190, 6, 51, 90, 3, 206, 51, 90, 35, 114, 11, 170, 66, 72, 159, 14, 66, 72, 28, 125, 66, 72, 31, 119, 66, 72, 127, 27 },
{ 111, 36, 66, 72, 124, 28, 90, 51, 16, 155, 51, 90, 16, 155, 66, 72, 29, 124, 66, 72, 124, 29, 66, 72, 5, 192, 136, 23, 51, 90, 144, 19, 51, 90, 149, 18, 56, 83, 18, 149, 66, 72, 142, 20, 101, 43, 84, 56, 31, 119, 83, 56, 35, 114, 170, 10, 25, 133, 183, 7, 133, 25, 1, 222 },
{ 172, 10, 141, 21, 51, 90, 170, 11, 83, 56, 4, 200, 89, 51, 11, 170, 52, 89, 21, 141, 183, 7, 114, 35, 101, 43, 66, 72, 2, 213, 66, 72, 8, 179, 66, 72, 22, 140, 52, 89, 147, 19, 52, 89, 203, 4, 133, 25, 8, 181, 25, 133, 4, 200, 101, 43, 66, 72, 114, 35, 83, 56, 36, 111 },
{ 28, 126, 66, 72, 3, 206, 37, 110, 29, 124, 72, 66, 31, 119, 71, 66, 4, 203, 101, 43, 67, 71, 167, 12, 25, 133, 12, 165, 52, 89, 29, 124, 89, 52, 0, 235, 52, 89, 177, 9, 56, 83, 11, 170, 114, 35, 67, 71, 35, 114, 101, 43, 67, 71, 35, 114, 2, 213, 52, 89, 177, 9, 79, 59 },
{ 51, 90, 15, 156, 122, 30, 67, 71, 8, 181, 133, 25, 185, 7, 141, 21, 52, 89, 16, 155, 114, 35, 101, 43, 101, 43, 67, 71, 36, 111, 165, 12, 136, 23, 56, 83, 31, 119, 67, 71, 35, 114, 127, 27, 89, 52, 15, 156, 52, 89, 167, 12, 133, 25, 12, 165, 83, 56, 16, 155, 89, 52, 15, 156 },
{ 6, 192, 101, 43, 89, 52, 148, 18, 101, 43, 101, 43, 101, 43, 67, 71, 124, 29, 67, 71, 0, 235, 25, 133, 200, 4, 133, 25, 183, 7, 101, 43, 67, 71, 19, 146, 187, 6, 133, 25, 217, 2, 67, 71, 8, 181, 67, 71, 1, 222, 114, 35, 101, 43, 67, 71, 31, 119, 67, 71, 31, 119, 79, 59 },
{ 51, 90, 23, 135, 10, 172, 67, 71, 24, 135, 222, 1, 26, 130, 15, 158, 10, 174, 114, 35, 100, 43, 67, 71, 31, 119, 67, 70, 35, 114, 21, 141, 5, 194, 114, 35, 100, 43, 100, 43, 89, 52, 16, 155, 52, 89, 27, 127, 122, 30, 56, 83, 197, 5, 132, 25, 8, 181, 25, 133, 206, 3, 137, 23 },
{ 18, 149, 100, 43, 89, 52, 194, 5, 100, 43, 100, 43, 100, 43, 100, 43, 68, 70, 7, 185, 26, 131, 175, 9, 52, 88, 11, 170, 100, 43, 100, 43, 100, 43, 68, 70, 21, 141, 12, 165, 111, 36, 68, 70, 35, 113, 16, 155, 56, 83, 16, 155, 113, 35, 68, 70, 35, 113, 68, 70, 113, 35, 79, 59 },
{ 52, 88, 227, 1, 135, 24, 68, 70, 167, 12, 26, 130, 13, 162, 209, 3, 135, 24, 100, 43, 100, 43, 83, 56, 18, 148, 56, 83, 1, 222, 162, 13, 132, 25, 12, 167, 52, 88, 35, 113, 7, 183, 25, 133, 4, 203, 56, 83, 175, 9, 122, 30, 88, 52, 15, 156, 52, 88, 168, 11, 52, 88, 181, 8 },
{ 27, 129, 113, 35, 88, 52, 20, 143, 100, 43, 100, 43, 100, 43, 99, 43, 68, 70, 19, 146, 5, 194, 113, 35, 68, 70, 35, 113, 29, 124, 99, 44, 99, 44, 68, 70, 2, 213, 68, 70, 29, 124, 99, 44, 68, 70, 31, 119, 99, 44, 70, 68, 177, 9, 70, 68, 227, 1, 83, 56, 16, 153, 56, 83 },
{ 170, 11, 70, 68, 10, 174, 68, 70, 19, 146, 197, 5, 158, 15, 130, 26, 175, 9, 113, 35, 56, 83, 21, 140, 3, 209, 152, 17, 56, 83, 21, 141, 4, 197, 122, 30, 88, 52, 16, 153, 52, 88, 165, 12, 132, 25, 183, 7, 25, 132, 213, 2, 88, 52, 143, 20, 52, 88, 119, 31, 68, 70, 32, 118 },
{ 88, 52, 19, 147, 88, 52, 213, 2, 99, 44, 99, 44, 99, 44, 99, 44, 99, 44, 68, 70, 161, 14, 111, 36, 99, 44, 68, 70, 7, 183, 99, 44, 70, 68, 16, 153, 122, 30, 70, 68, 5, 197, 113, 35, 68, 70, 35, 113, 68, 70, 35, 113, 29, 124, 68, 70, 24, 135, 187, 6, 25, 132, 3, 209 },
{ 31, 119, 70, 68, 124, 29, 82, 57, 21, 141, 13, 164, 132, 25, 187, 6, 25, 132, 217, 2, 122, 30, 70, 68, 18, 148, 122, 30, 37, 110, 16, 153, 122, 30, 56, 82, 10, 172, 113, 35, 99, 44, 88, 52, 0, 235, 52, 88, 14, 159, 52, 88, 17, 152, 5, 194, 99, 44, 99, 44, 99, 44, 79, 60 },
{ 13, 162, 200, 4, 167, 11, 111, 36, 68, 70, 119, 31, 68, 70, 119, 31, 98, 44, 98, 45, 87, 52, 6, 190, 53, 87, 9, 177, 57, 82, 30, 122, 8, 179, 113, 35, 69, 68, 7, 185, 132, 25, 12, 164, 57, 82, 17, 152, 69, 69, 177, 9, 69, 69, 35, 113, 165, 12, 26, 130, 11, 168, 132, 25 },
{ 37, 109, 69, 69, 36, 111, 17, 151, 190, 6, 53, 87, 1, 227, 53, 87, 10, 174, 130, 26, 14, 159, 69, 69, 20, 143, 69, 69, 206, 3, 98, 45, 69, 69, 1, 227, 142, 21, 98, 45, 98, 45, 69, 69, 124, 29, 37, 110, 5, 197, 87, 53, 20, 143, 53, 87, 29, 124, 98, 45, 98, 45, 79, 60 },
{ 26, 130, 14, 159, 53, 87, 29, 124, 82, 57, 18, 148, 82, 57, 18, 148, 98, 45, 98, 45, 87, 53, 138, 22, 53, 87, 124, 29, 37, 110, 165, 12, 142, 21, 98, 45, 69, 69, 24, 135, 3, 209, 132, 25, 181, 8, 82, 57, 27, 127, 113, 35, 82, 57, 177, 9, 57, 82, 213, 2, 25, 132, 6, 187 },
{ 37, 109, 61, 78, 8, 179, 61, 78, 20, 143, 66, 72, 22, 138, 66, 72, 24, 135, 4, 200, 175, 9, 72, 66, 1, 227, 151, 17, 72, 66, 29, 124, 68, 70, 24, 135, 181, 8, 98, 45, 98, 45, 98, 45, 68, 70, 18, 148, 70, 68, 17, 151, 222, 1, 70, 68, 18, 148, 112, 35, 98, 45, 78, 61 }
};
+127
Ver Arquivo
@@ -0,0 +1,127 @@
/*
* Private transform API definitions for CUPS.
*
* Copyright © 2016-2018 by Apple Inc.
*
* Licensed under Apache License v2.0. See the file "LICENSE" for more
* information.
*/
#ifndef _CUPS_XFORM_PRIVATE_H_
# define _CUPS_XFORM_PRIVATE_H_
/*
* Include necessary headers...
*/
# include <cups/cups.h>
# include <cups/raster.h>
/*
* C++ magic...
*/
# ifdef __cplusplus
extern "C" {
# endif /* __cplusplus */
/*
* Constants...
*/
/**** Input/Output MIME media types ****/
# define XFORM_FORMAT_APPLE_RASTER "image/urf"
# define XFORM_FORMAT_JPEG "image/jpeg"
# define XFORM_FORMAT_PCL "application/vnd.hp-pcl"
# define XFORM_FORMAT_PDF "application/pdf"
# define XFORM_FORMAT_PNG "image/png"
# define XFORM_FORMAT_POSTSCRIPT "application/postscript"
# define XFORM_FORMAT_PWG_RASTER "image/pwg-raster"
# define XFORM_FORMAT_TEXT "text/plain"
typedef enum xform_duplex_e /**** 2-Sided Capabilities ****/
{
XFORM_DUPLEX_NONE, /* No 2-sided support */
XFORM_DUPLEX_NORMAL, /* 2-sided support, normal back side orientation ('normal') */
XFORM_DUPLEX_LONG_TUMBLE, /* 2-sided support, rotate back side 180 degrees for long edge ('manual-tumble') */
XFORM_DUPLEX_SHORT_TUMBLE, /* 2-sided support, rotate back side 180 degrees for short edge ('rotated') */
XFORM_DUPLEX_MIRRORED /* 2-sided support, mirror back side ('flippped') */
} xform_duplex_t;
typedef enum xform_loglevel_e /**** Logging Levels ****/
{
XFORM_LOGLEVEL_DEBUG, /* Debugging message */
XFORM_LOGLEVEL_INFO, /* Informational message */
XFORM_LOGLEVEL_ERROR, /* Error message */
XFORM_LOGLEVEL_ATTR /* Attribute message */
} xform_loglevel_t;
/*
* Local types...
*/
typedef struct xform_margins_s /**** Output margins ****/
{
int bottom, /* Bottom margin in hundredths of millimeters */
left, /* Left margin in hundredths of millimeters */
right, /* Right margin in hundredths of millimeters */
top; /* Top margin in hundredths of millimeters */
} xform_margins_t;
typedef struct xform_size_s /**** Output size ****/
{
int width, /* Width in hundredths of millimeters */
length; /* Length in hundredths of millimeters */
} xform_size_t;
typedef struct xform_capabilities_s /**** Output Capabilities ****/
{
int mixed; /* Supports pages with different colorspaces and sizes? */
cups_cspace_t color, /* Colorspace for printing color documents */
monochrome, /* Colorspace for printing B&W documents */
photo; /* Colorspace for printing photos */
unsigned draft_bits, /* Bits per color for printing draft quality */
normal_bits, /* Bits per color for printing normal quality */
high_bits; /* Bits per color for printing high/best/photo quality */
unsigned draft_resolution[2], /* Draft resolution */
normal_resolution[2], /* Normal resolution */
high_resolution[2]; /* High/best/photo resolution */
xform_duplex_t duplex; /* 2-sided capabilities */
xform_margins_t margins; /* Default margins */
xform_size_t size; /* Default size */
xform_margins_t max_margins; /* Maximum margins */
xform_size_t max_size; /* Maximum size */
xform_margins_t min_margins; /* Minimum margins */
xform_size_t min_size; /* Minimum size */
} xform_caps_t;
typedef struct _xform_ctx_s xform_ctx_t;/**** Transform context ****/
typedef void (*xform_logcb_t)(void *user_data, xform_loglevel_t level, const char *message);
/**** Logging callback ****/
typedef ssize_t (*xform_writecb_t)(void *user_data, const unsigned char *buffer, size_t length);
/**** Output callback ****/
/*
* Functions...
*/
extern void xformDelete(xform_ctx_t *ctx);
extern int xformInitCapabilities(xform_caps_t *caps, ipp_t *supported);
extern xform_ctx_t *xformNew(const char *outformat, xform_caps_t *outcaps);
extern int xformRun(xform_ctx_t *ctx, const char *infile, const char *informat);
extern void xformSetLogCallback(xform_ctx_t *ctx, xform_logcb_t logcb, void *logdata);
extern void xformSetOptions(xform_ctx_t *ctx, int num_options, cups_option_t *options);
extern void xformSetWriteCallback(xform_ctx_t *ctx, xform_writecb_t writecb, void *writedata);
# ifdef __cplusplus
}
# endif /* __cplusplus */
#endif /* !_CUPS_XFORM_PRIVATE_H_ */
+3526
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+5 -15
Ver Arquivo
@@ -1,17 +1,11 @@
/*
* "$Id: font.defs 343 2007-07-13 19:52:48Z mike $"
* Standard font definitions for the CUPS PPD file compiler.
*
* Standard ESP Ghostscript font definitions for the CUPS PPD file
* compiler.
* Copyright © 2007 by Apple Inc.
* Copyright © 1997-2005 by Easy Software Products.
*
* Copyright 2007 by Apple Inc.
* Copyright 1997-2005 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
* which should have been included with this file. If this file is
* file is missing or damaged, see the license at "http://www.cups.org/".
* Licensed under Apache License v2.0. See the file "LICENSE" for more
* information.
*/
#font AvantGarde-Book Standard "(1.05)" Standard ROM
@@ -49,7 +43,3 @@
#font Times-Roman Standard "(1.05)" Standard ROM
#font ZapfChancery-MediumItalic Standard "(1.05)" Standard ROM
#font ZapfDingbats Special "(001.005)" Special ROM
/*
* End of "$Id: font.defs 343 2007-07-13 19:52:48Z mike $".
*/
+4 -7
Ver Arquivo
@@ -1,14 +1,11 @@
/*
* Adobe standard media size definitions for the CUPS PPD file compiler.
*
* Copyright 2007-2016 by Apple Inc.
* Copyright 1997-2005 by Easy Software Products.
* Copyright © 2007-2016 by Apple Inc.
* Copyright © 1997-2005 by Easy Software Products.
*
* These codedinstructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
* copyright law. Distribution and use rights are outlinedin the file
* "LICENSE.txt" which should have beenincluded with this file. If this
* file is missing or damaged, see the license at "http://www.cups.org/".
* Licensed under Apache License v2.0. See the file "LICENSE" for more
* information.
*/
#media "3x5/3 x 5" 216 360
+6 -16
Ver Arquivo
@@ -1,17 +1,12 @@
/*
* "$Id: raster.defs 343 2007-07-13 19:52:48Z mike $"
* This file contains the standard definitions for enumerated attributes
* in the CUPS raster page device dictionary.
*
* This file contains the standard definitions for enumerated attributes
* in the CUPS raster page device dictionary.
* Copyright © 2007-2018 by Apple Inc.
* Copyright © 1997-2005 by Easy Software Products.
*
* Copyright 2007 by Apple Inc.
* Copyright 1997-2005 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
* which should have been included with this file. If this file is
* file is missing or damaged, see the license at "http://www.cups.org/".
* Licensed under Apache License v2.0. See the file "LICENSE" for more
* information.
*/
/* Jog values */
@@ -87,8 +82,3 @@
#define CUPS_CSPACE_ICCD 44 /* ICC-based, 13 colors */
#define CUPS_CSPACE_ICCE 45 /* ICC-based, 14 colors */
#define CUPS_CSPACE_ICCF 46 /* ICC-based, 15 colors */
/*
* End of "$Id: raster.defs 343 2007-07-13 19:52:48Z mike $".
*/
+146 -64
Ver Arquivo
@@ -27,9 +27,19 @@ PRE {
font-family: monaco, courier, monospace;
}
PRE.command {
border: dotted thin #7f7f7f;
margin-left: 36pt;
BLOCKQUOTE {
border-left: solid 2px #777;
margin: 1em 0;
padding: 10px;
}
BLOCKQUOTE OL LI {
margin-left: -1em;
}
PRE.command, PRE.example {
background: #eee;
margin: 0 36pt;
padding: 10px;
}
@@ -54,13 +64,6 @@ PRE.man {
margin: 0;
}
PRE.example {
background: #eeeeee;
border: dotted thin #999999;
margin-left: 36pt;
padding: 10pt;
}
PRE.command EM, PRE.example EM {
font-family: lucida grande, geneva, helvetica, arial, sans-serif;
}
@@ -75,12 +78,6 @@ P.formula {
margin-left: 36pt;
}
BLOCKQUOTE {
background: #eeeeee;
border: solid thin #999999;
padding: 10pt;
}
A IMG {
border: none;
}
@@ -136,7 +133,7 @@ DIV.table CAPTION {
DIV.table TABLE TD {
border: solid thin #cccccc;
padding-top: 5pt;
padding: 5pt 10pt 0;
}
DIV.table TABLE TH {
@@ -284,26 +281,120 @@ DIV.summary TABLE THEAD TH {
/* API documentation styles... */
div.body h1 {
font-size: 250%;
font-weight: bold;
margin: 0;
}
div.body h2 {
font-size: 250%;
margin-top: 1.5em;
}
div.body h3, div.body h4, div.body h5 {
div.body h3 {
font-size: 150%;
margin-bottom: 0.5em;
margin-top: 1.5em;
}
.class, .enumeration, .function, .struct, .typedef, .union {
border-bottom: solid thin #999999;
margin-bottom: 0;
margin-top: 2em;
div.body h4 {
font-size: 110%;
margin-bottom: 0.5em;
margin-top: 1.5em;
}
div.body h5 {
font-size: 100%;
margin-bottom: 0.5em;
margin-top: 1.5em;
}
div.contents {
background: #e8e8e8;
border: solid thin black;
padding: 10px;
}
div.contents h1 {
font-size: 110%;
}
div.contents h2 {
font-size: 100%;
}
div.contents ul.contents {
font-size: 80%;
}
.class {
border-bottom: solid 2px gray;
}
.constants {
}
.description {
margin-top: 0.5em;
}
code, p.code, pre, ul.code li {
font-family: monaco, courier, monospace;
.discussion {
}
.enumeration {
border-bottom: solid 2px gray;
}
.function {
border-bottom: solid 2px gray;
margin-bottom: 0;
}
.members {
}
.method {
}
.parameters {
}
.returnvalue {
}
.struct {
border-bottom: solid 2px gray;
}
.typedef {
border-bottom: solid 2px gray;
}
.union {
border-bottom: solid 2px gray;
}
.variable {
}
h1, h2, h3, h4, h5, h6 {
page-break-inside: avoid;
}
blockquote {
border: solid thin gray;
box-shadow: 3px 3px 5px rgba(0,0,0,0.5);
padding: 0px 10px;
page-break-inside: avoid;
}
p code, li code, p.code, pre, ul.code li {
background: rgba(127,127,127,0.1);
border: thin dotted gray;
font-family: monospace;
font-size: 90%;
hyphens: manual;
-webkit-hyphens: manual;
page-break-inside: avoid;
}
p.code, pre, ul.code li {
padding: 10px;
}
p code, li code {
padding: 2px 5px;
}
a:link, a:visited {
text-decoration: none;
}
span.info {
background: black;
border: solid thin black;
color: white;
font-size: 80%;
font-style: italic;
font-weight: bold;
white-space: nowrap;
}
h3 span.info, h4 span.info {
border-top-left-radius: 10px;
border-top-right-radius: 10px;
float: right;
padding: 3px 6px;
}
ul.code, ul.contents, ul.subcontents {
list-style-type: none;
@@ -319,37 +410,31 @@ ul.contents > li {
ul.contents li ul.code, ul.contents li ul.subcontents {
padding-left: 2em;
}
div.body dl {
margin-left: 0;
margin-top: 0;
table.list {
border-collapse: collapse;
width: 100%;
}
div.body dt {
font-style: italic;
margin-left: 0;
margin-top: 0;
table.list tr:nth-child(even) {
background: rgba(127,127,127,0.1);]n}
table.list th {
border-right: 2px solid gray;
font-family: monospace;
padding: 5px 10px 5px 2px;
text-align: right;
vertical-align: top;
}
div.body dd {
margin-bottom: 0.5em;
table.list td {
padding: 5px 2px 5px 10px;
text-align: left;
vertical-align: top;
}
/* This is just for the HTML files generated with the framedhelp target */
div.contents {
background: #e8e8e8;
border: solid thin black;
padding: 10px;
h1.title {
}
div.contents h1 {
font-size: 110%;
h2.title {
border-bottom: solid 2px black;
}
div.contents h2 {
font-size: 100%;
}
div.contents ul.contents {
font-size: 80%;
}
div.contents ul.subcontents li {
margin-left: 1em;
text-indent: -1em;
h3.title {
border-bottom: solid 2px black;
}
--></style>
</head>
@@ -357,13 +442,10 @@ div.contents ul.subcontents li {
<!--
Administrative API header for CUPS.
Copyright 2016 by Apple Inc.
Copyright © 2016 by Apple Inc.
These coded instructions, statements, and computer programs are the
property of Apple Inc. and are protected by Federal copyright
law. Distribution and use rights are outlined in the file "LICENSE.txt"
which should have been included with this file. If this file is
file is missing or damaged, see the license at "http://www.cups.org/".
Licensed under Apache License v2.0. See the file "LICENSE" for more
information.
-->
<h1 class='title'>Administrative APIs</h1>
@@ -411,13 +493,10 @@ div.contents ul.subcontents li {
<!--
Administrative API documentation for CUPS.
Copyright 2016 by Apple Inc.
Copyright © 2016 by Apple Inc.
These coded instructions, statements, and computer programs are the
property of Apple Inc. and are protected by Federal copyright
law. Distribution and use rights are outlined in the file "LICENSE.txt"
which should have been included with this file. If this file is
file is missing or damaged, see the license at "http://www.cups.org/".
Licensed under Apache License v2.0. See the file "LICENSE" for more
information.
-->
<h2 class="title"><a name="OVERVIEW">Overview</a></h2>
@@ -578,7 +657,7 @@ int cupsAdminSetServerSettings(http_t *http, int num_settings, cups_option_t *se
</tbody></table>
<h4 class="returnvalue">Return Value</h4>
<p class="description">1 on success, 0 on failure</p>
<h3 class="function"><span class="info">&#160;CUPS 1.4/macOS 10.6&#160;</span><a id="cupsGetDevices">cupsGetDevices</a></h3>
<h3 class="function"><span class="info">&#160;DEPRECATED&#160;</span><a id="cupsGetDevices">cupsGetDevices</a></h3>
<p class="description">Get available printer devices.</p>
<p class="code">
ipp_status_t cupsGetDevices(http_t *http, int timeout, const char *include_schemes, const char *exclude_schemes, <a href="#cups_device_cb_t">cups_device_cb_t</a> callback, void *user_data);</p>
@@ -604,7 +683,10 @@ ipp_status_t cupsGetDevices(http_t *http, int timeout, const char *include_schem
devices to the specified callback function. The &quot;timeout&quot; parameter controls
how long the request lasts, while the &quot;include_schemes&quot; and &quot;exclude_schemes&quot;
parameters provide comma-delimited lists of backends to include or omit from
the request respectively.
the request respectively.<br>
<br>
This function is deprecated with the IPP printer discovery functionality
being provided by the <a href="#cupsEnumDests"><code>cupsEnumDests</code></a> and @cupsGetDests@ functions.
</p>
<h2 class="title"><a id="TYPES">Data Types</a></h2>
+142 -63
Ver Arquivo
@@ -27,9 +27,19 @@ PRE {
font-family: monaco, courier, monospace;
}
PRE.command {
border: dotted thin #7f7f7f;
margin-left: 36pt;
BLOCKQUOTE {
border-left: solid 2px #777;
margin: 1em 0;
padding: 10px;
}
BLOCKQUOTE OL LI {
margin-left: -1em;
}
PRE.command, PRE.example {
background: #eee;
margin: 0 36pt;
padding: 10px;
}
@@ -54,13 +64,6 @@ PRE.man {
margin: 0;
}
PRE.example {
background: #eeeeee;
border: dotted thin #999999;
margin-left: 36pt;
padding: 10pt;
}
PRE.command EM, PRE.example EM {
font-family: lucida grande, geneva, helvetica, arial, sans-serif;
}
@@ -75,12 +78,6 @@ P.formula {
margin-left: 36pt;
}
BLOCKQUOTE {
background: #eeeeee;
border: solid thin #999999;
padding: 10pt;
}
A IMG {
border: none;
}
@@ -136,7 +133,7 @@ DIV.table CAPTION {
DIV.table TABLE TD {
border: solid thin #cccccc;
padding-top: 5pt;
padding: 5pt 10pt 0;
}
DIV.table TABLE TH {
@@ -284,26 +281,120 @@ DIV.summary TABLE THEAD TH {
/* API documentation styles... */
div.body h1 {
font-size: 250%;
font-weight: bold;
margin: 0;
}
div.body h2 {
font-size: 250%;
margin-top: 1.5em;
}
div.body h3, div.body h4, div.body h5 {
div.body h3 {
font-size: 150%;
margin-bottom: 0.5em;
margin-top: 1.5em;
}
.class, .enumeration, .function, .struct, .typedef, .union {
border-bottom: solid thin #999999;
margin-bottom: 0;
margin-top: 2em;
div.body h4 {
font-size: 110%;
margin-bottom: 0.5em;
margin-top: 1.5em;
}
div.body h5 {
font-size: 100%;
margin-bottom: 0.5em;
margin-top: 1.5em;
}
div.contents {
background: #e8e8e8;
border: solid thin black;
padding: 10px;
}
div.contents h1 {
font-size: 110%;
}
div.contents h2 {
font-size: 100%;
}
div.contents ul.contents {
font-size: 80%;
}
.class {
border-bottom: solid 2px gray;
}
.constants {
}
.description {
margin-top: 0.5em;
}
code, p.code, pre, ul.code li {
font-family: monaco, courier, monospace;
.discussion {
}
.enumeration {
border-bottom: solid 2px gray;
}
.function {
border-bottom: solid 2px gray;
margin-bottom: 0;
}
.members {
}
.method {
}
.parameters {
}
.returnvalue {
}
.struct {
border-bottom: solid 2px gray;
}
.typedef {
border-bottom: solid 2px gray;
}
.union {
border-bottom: solid 2px gray;
}
.variable {
}
h1, h2, h3, h4, h5, h6 {
page-break-inside: avoid;
}
blockquote {
border: solid thin gray;
box-shadow: 3px 3px 5px rgba(0,0,0,0.5);
padding: 0px 10px;
page-break-inside: avoid;
}
p code, li code, p.code, pre, ul.code li {
background: rgba(127,127,127,0.1);
border: thin dotted gray;
font-family: monospace;
font-size: 90%;
hyphens: manual;
-webkit-hyphens: manual;
page-break-inside: avoid;
}
p.code, pre, ul.code li {
padding: 10px;
}
p code, li code {
padding: 2px 5px;
}
a:link, a:visited {
text-decoration: none;
}
span.info {
background: black;
border: solid thin black;
color: white;
font-size: 80%;
font-style: italic;
font-weight: bold;
white-space: nowrap;
}
h3 span.info, h4 span.info {
border-top-left-radius: 10px;
border-top-right-radius: 10px;
float: right;
padding: 3px 6px;
}
ul.code, ul.contents, ul.subcontents {
list-style-type: none;
@@ -319,37 +410,31 @@ ul.contents > li {
ul.contents li ul.code, ul.contents li ul.subcontents {
padding-left: 2em;
}
div.body dl {
margin-left: 0;
margin-top: 0;
table.list {
border-collapse: collapse;
width: 100%;
}
div.body dt {
font-style: italic;
margin-left: 0;
margin-top: 0;
table.list tr:nth-child(even) {
background: rgba(127,127,127,0.1);]n}
table.list th {
border-right: 2px solid gray;
font-family: monospace;
padding: 5px 10px 5px 2px;
text-align: right;
vertical-align: top;
}
div.body dd {
margin-bottom: 0.5em;
table.list td {
padding: 5px 2px 5px 10px;
text-align: left;
vertical-align: top;
}
/* This is just for the HTML files generated with the framedhelp target */
div.contents {
background: #e8e8e8;
border: solid thin black;
padding: 10px;
h1.title {
}
div.contents h1 {
font-size: 110%;
h2.title {
border-bottom: solid 2px black;
}
div.contents h2 {
font-size: 100%;
}
div.contents ul.contents {
font-size: 80%;
}
div.contents ul.subcontents li {
margin-left: 1em;
text-indent: -1em;
h3.title {
border-bottom: solid 2px black;
}
--></style>
</head>
@@ -357,13 +442,10 @@ div.contents ul.subcontents li {
<!--
Filter and backend programming header for CUPS.
Copyright 2008-2016 by Apple Inc.
Copyright © 2008-2016 by Apple Inc.
These coded instructions, statements, and computer programs are the
property of Apple Inc. and are protected by Federal copyright
law. Distribution and use rights are outlined in the file "LICENSE.txt"
which should have been included with this file. If this file is
file is missing or damaged, see the license at "http://www.cups.org/".
Licensed under Apache License v2.0. See the file "LICENSE" for more
information.
-->
<h1 class='title'>Filter and Backend Programming</h1>
@@ -445,14 +527,11 @@ div.contents ul.subcontents li {
<!--
Filter and backend programming introduction for CUPS.
Copyright 2007-2016 by Apple Inc.
Copyright 1997-2006 by Easy Software Products, all rights reserved.
Copyright © 2007-2016 by Apple Inc.
Copyright © 1997-2006 by Easy Software Products, all rights reserved.
These coded instructions, statements, and computer programs are the
property of Apple Inc. and are protected by Federal copyright
law. Distribution and use rights are outlined in the file "LICENSE.txt"
which should have been included with this file. If this file is
file is missing or damaged, see the license at "http://www.cups.org/".
Licensed under Apache License v2.0. See the file "LICENSE" for more
information.
-->
<h2 class='title'><a name="OVERVIEW">Overview</a></h2>
+217 -124
Ver Arquivo
@@ -27,9 +27,19 @@ PRE {
font-family: monaco, courier, monospace;
}
PRE.command {
border: dotted thin #7f7f7f;
margin-left: 36pt;
BLOCKQUOTE {
border-left: solid 2px #777;
margin: 1em 0;
padding: 10px;
}
BLOCKQUOTE OL LI {
margin-left: -1em;
}
PRE.command, PRE.example {
background: #eee;
margin: 0 36pt;
padding: 10px;
}
@@ -54,13 +64,6 @@ PRE.man {
margin: 0;
}
PRE.example {
background: #eeeeee;
border: dotted thin #999999;
margin-left: 36pt;
padding: 10pt;
}
PRE.command EM, PRE.example EM {
font-family: lucida grande, geneva, helvetica, arial, sans-serif;
}
@@ -75,12 +78,6 @@ P.formula {
margin-left: 36pt;
}
BLOCKQUOTE {
background: #eeeeee;
border: solid thin #999999;
padding: 10pt;
}
A IMG {
border: none;
}
@@ -136,7 +133,7 @@ DIV.table CAPTION {
DIV.table TABLE TD {
border: solid thin #cccccc;
padding-top: 5pt;
padding: 5pt 10pt 0;
}
DIV.table TABLE TH {
@@ -284,26 +281,120 @@ DIV.summary TABLE THEAD TH {
/* API documentation styles... */
div.body h1 {
font-size: 250%;
font-weight: bold;
margin: 0;
}
div.body h2 {
font-size: 250%;
margin-top: 1.5em;
}
div.body h3, div.body h4, div.body h5 {
div.body h3 {
font-size: 150%;
margin-bottom: 0.5em;
margin-top: 1.5em;
}
.class, .enumeration, .function, .struct, .typedef, .union {
border-bottom: solid thin #999999;
margin-bottom: 0;
margin-top: 2em;
div.body h4 {
font-size: 110%;
margin-bottom: 0.5em;
margin-top: 1.5em;
}
div.body h5 {
font-size: 100%;
margin-bottom: 0.5em;
margin-top: 1.5em;
}
div.contents {
background: #e8e8e8;
border: solid thin black;
padding: 10px;
}
div.contents h1 {
font-size: 110%;
}
div.contents h2 {
font-size: 100%;
}
div.contents ul.contents {
font-size: 80%;
}
.class {
border-bottom: solid 2px gray;
}
.constants {
}
.description {
margin-top: 0.5em;
}
code, p.code, pre, ul.code li {
font-family: monaco, courier, monospace;
.discussion {
}
.enumeration {
border-bottom: solid 2px gray;
}
.function {
border-bottom: solid 2px gray;
margin-bottom: 0;
}
.members {
}
.method {
}
.parameters {
}
.returnvalue {
}
.struct {
border-bottom: solid 2px gray;
}
.typedef {
border-bottom: solid 2px gray;
}
.union {
border-bottom: solid 2px gray;
}
.variable {
}
h1, h2, h3, h4, h5, h6 {
page-break-inside: avoid;
}
blockquote {
border: solid thin gray;
box-shadow: 3px 3px 5px rgba(0,0,0,0.5);
padding: 0px 10px;
page-break-inside: avoid;
}
p code, li code, p.code, pre, ul.code li {
background: rgba(127,127,127,0.1);
border: thin dotted gray;
font-family: monospace;
font-size: 90%;
hyphens: manual;
-webkit-hyphens: manual;
page-break-inside: avoid;
}
p.code, pre, ul.code li {
padding: 10px;
}
p code, li code {
padding: 2px 5px;
}
a:link, a:visited {
text-decoration: none;
}
span.info {
background: black;
border: solid thin black;
color: white;
font-size: 80%;
font-style: italic;
font-weight: bold;
white-space: nowrap;
}
h3 span.info, h4 span.info {
border-top-left-radius: 10px;
border-top-right-radius: 10px;
float: right;
padding: 3px 6px;
}
ul.code, ul.contents, ul.subcontents {
list-style-type: none;
@@ -319,37 +410,31 @@ ul.contents > li {
ul.contents li ul.code, ul.contents li ul.subcontents {
padding-left: 2em;
}
div.body dl {
margin-left: 0;
margin-top: 0;
table.list {
border-collapse: collapse;
width: 100%;
}
div.body dt {
font-style: italic;
margin-left: 0;
margin-top: 0;
table.list tr:nth-child(even) {
background: rgba(127,127,127,0.1);]n}
table.list th {
border-right: 2px solid gray;
font-family: monospace;
padding: 5px 10px 5px 2px;
text-align: right;
vertical-align: top;
}
div.body dd {
margin-bottom: 0.5em;
table.list td {
padding: 5px 2px 5px 10px;
text-align: left;
vertical-align: top;
}
/* This is just for the HTML files generated with the framedhelp target */
div.contents {
background: #e8e8e8;
border: solid thin black;
padding: 10px;
h1.title {
}
div.contents h1 {
font-size: 110%;
h2.title {
border-bottom: solid 2px black;
}
div.contents h2 {
font-size: 100%;
}
div.contents ul.contents {
font-size: 80%;
}
div.contents ul.subcontents li {
margin-left: 1em;
text-indent: -1em;
h3.title {
border-bottom: solid 2px black;
}
--></style>
</head>
@@ -357,13 +442,10 @@ div.contents ul.subcontents li {
<!--
PPD API header for CUPS.
Copyright 2008-2012 by Apple Inc.
Copyright © 2008-2012 by Apple Inc.
These coded instructions, statements, and computer programs are the
property of Apple Inc. and are protected by Federal copyright
law. Distribution and use rights are outlined in the file "LICENSE.txt"
which should have been included with this file. If this file is
file is missing or damaged, see the license at "http://www.cups.org/".
Licensed under Apache License v2.0. See the file "LICENSE" for more
information.
-->
<h1 class='title'>PPD API (DEPRECATED)</h1>
@@ -481,6 +563,7 @@ div.contents ul.subcontents li {
</ul></li>
<li><a href="#ENUMERATIONS">Enumerations</a><ul class="subcontents">
<li><a href="#ppd_conform_e">ppd_conform_e</a></li>
<li><a href="#ppd_cptype_e">ppd_cptype_e</a></li>
<li><a href="#ppd_cs_e">ppd_cs_e</a></li>
<li><a href="#ppd_section_e">ppd_section_e</a></li>
<li><a href="#ppd_status_e">ppd_status_e</a></li>
@@ -492,19 +575,16 @@ div.contents ul.subcontents li {
<!--
PPD API introduction for CUPS.
Copyright 2007-2012 by Apple Inc.
Copyright 1997-2006 by Easy Software Products, all rights reserved.
Copyright © 2007-2018 by Apple Inc.
Copyright © 1997-2006 by Easy Software Products, all rights reserved.
These coded instructions, statements, and computer programs are the
property of Apple Inc. and are protected by Federal copyright
law. Distribution and use rights are outlined in the file "LICENSE.txt"
which should have been included with this file. If this file is
file is missing or damaged, see the license at "http://www.cups.org/".
Licensed under Apache License v2.0. See the file "LICENSE" for more
information.
-->
<h2 class='title'><a name='OVERVIEW'>Overview</a></h2>
<blockquote>The PPD API is deprecated starting in CUPS 1.6/macOS 10.8. Please use the new Job Ticket APIs in the <a href="api-cups.html">CUPS API</a> documentation. These functions will be removed in a future release of CUPS.</blockquote>
<blockquote>The PPD API is deprecated starting in CUPS 1.6/macOS 10.8. Please use the new Job Ticket APIs in the <a href="cupspm.html">CUPS API</a> documentation. These functions will be removed in a future release of CUPS.</blockquote>
<p>The CUPS PPD API provides read-only access the data in PostScript Printer
Description ("PPD") files which are used for all printers with a driver. With
@@ -1434,103 +1514,103 @@ float ppdPageWidth(<a href="#ppd_file_t">ppd_file_t</a> *ppd, const char *name);
<h4 class="returnvalue">Return Value</h4>
<p class="description">Width of page in points or 0.0</p>
<h2 class="title"><a id="TYPES">Data Types</a></h2>
<h3 class="typedef"><a id="ppd_attr_t"><span class="info">&#160;CUPS 1.1.19/macOS 10.3&#160;</span>ppd_attr_t</a></h3>
<h3 class="typedef"><a id="ppd_attr_t"><span class="info">&#160;DEPRECATED&#160;</span>ppd_attr_t</a></h3>
<p class="description">PPD Attribute Structure </p>
<p class="code">
typedef struct <a href="#ppd_attr_s">ppd_attr_s</a> ppd_attr_t;
</p>
<h3 class="typedef"><a id="ppd_choice_t">ppd_choice_t</a></h3>
<p class="description">Option choices</p>
<h3 class="typedef"><a id="ppd_choice_t"><span class="info">&#160;DEPRECATED&#160;</span>ppd_choice_t</a></h3>
<p class="description">Option choices </p>
<p class="code">
typedef struct <a href="#ppd_choice_s">ppd_choice_s</a> ppd_choice_t;
</p>
<h3 class="typedef"><a id="ppd_conform_t"><span class="info">&#160;CUPS 1.1.19/macOS 10.3&#160;</span>ppd_conform_t</a></h3>
<h3 class="typedef"><a id="ppd_conform_t"><span class="info">&#160;DEPRECATED&#160;</span>ppd_conform_t</a></h3>
<p class="description">Conformance Levels </p>
<p class="code">
typedef enum <a href="#ppd_conform_e">ppd_conform_e</a> ppd_conform_t;
</p>
<h3 class="typedef"><a id="ppd_const_t">ppd_const_t</a></h3>
<p class="description">Constraints</p>
<h3 class="typedef"><a id="ppd_const_t"><span class="info">&#160;DEPRECATED&#160;</span>ppd_const_t</a></h3>
<p class="description">Constraints </p>
<p class="code">
typedef struct <a href="#ppd_const_s">ppd_const_s</a> ppd_const_t;
</p>
<h3 class="typedef"><a id="ppd_coption_t"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span>ppd_coption_t</a></h3>
<h3 class="typedef"><a id="ppd_coption_t"><span class="info">&#160;DEPRECATED&#160;</span>ppd_coption_t</a></h3>
<p class="description">Custom Option </p>
<p class="code">
typedef struct <a href="#ppd_coption_s">ppd_coption_s</a> ppd_coption_t;
</p>
<h3 class="typedef"><a id="ppd_cparam_t"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span>ppd_cparam_t</a></h3>
<h3 class="typedef"><a id="ppd_cparam_t"><span class="info">&#160;DEPRECATED&#160;</span>ppd_cparam_t</a></h3>
<p class="description">Custom Parameter </p>
<p class="code">
typedef struct <a href="#ppd_cparam_s">ppd_cparam_s</a> ppd_cparam_t;
</p>
<h3 class="typedef"><a id="ppd_cplimit_t"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span>ppd_cplimit_t</a></h3>
<h3 class="typedef"><a id="ppd_cplimit_t"><span class="info">&#160;DEPRECATED&#160;</span>ppd_cplimit_t</a></h3>
<p class="description">Custom Parameter Limit </p>
<p class="code">
typedef union <a href="#ppd_cplimit_u">ppd_cplimit_u</a> ppd_cplimit_t;
</p>
<h3 class="typedef"><a id="ppd_cptype_t"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span>ppd_cptype_t</a></h3>
<h3 class="typedef"><a id="ppd_cptype_t"><span class="info">&#160;DEPRECATED&#160;</span>ppd_cptype_t</a></h3>
<p class="description">Custom Parameter Type </p>
<p class="code">
typedef enum ppd_cptype_e ppd_cptype_t;
typedef enum <a href="#ppd_cptype_e">ppd_cptype_e</a> ppd_cptype_t;
</p>
<h3 class="typedef"><a id="ppd_cpvalue_t"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span>ppd_cpvalue_t</a></h3>
<h3 class="typedef"><a id="ppd_cpvalue_t"><span class="info">&#160;DEPRECATED&#160;</span>ppd_cpvalue_t</a></h3>
<p class="description">Custom Parameter Value </p>
<p class="code">
typedef union <a href="#ppd_cpvalue_u">ppd_cpvalue_u</a> ppd_cpvalue_t;
</p>
<h3 class="typedef"><a id="ppd_cs_t">ppd_cs_t</a></h3>
<p class="description">Colorspaces</p>
<h3 class="typedef"><a id="ppd_cs_t"><span class="info">&#160;DEPRECATED&#160;</span>ppd_cs_t</a></h3>
<p class="description">Colorspaces </p>
<p class="code">
typedef enum <a href="#ppd_cs_e">ppd_cs_e</a> ppd_cs_t;
</p>
<h3 class="typedef"><a id="ppd_emul_t">ppd_emul_t</a></h3>
<p class="description">Emulators</p>
<h3 class="typedef"><a id="ppd_emul_t"><span class="info">&#160;DEPRECATED&#160;</span>ppd_emul_t</a></h3>
<p class="description">Emulators </p>
<p class="code">
typedef struct <a href="#ppd_emul_s">ppd_emul_s</a> ppd_emul_t;
</p>
<h3 class="typedef"><a id="ppd_file_t">ppd_file_t</a></h3>
<p class="description">PPD File</p>
<h3 class="typedef"><a id="ppd_file_t"><span class="info">&#160;DEPRECATED&#160;</span>ppd_file_t</a></h3>
<p class="description">PPD File </p>
<p class="code">
typedef struct <a href="#ppd_file_s">ppd_file_s</a> ppd_file_t;
</p>
<h3 class="typedef"><a id="ppd_group_t">ppd_group_t</a></h3>
<p class="description">Groups</p>
<h3 class="typedef"><a id="ppd_group_t"><span class="info">&#160;DEPRECATED&#160;</span>ppd_group_t</a></h3>
<p class="description">Groups </p>
<p class="code">
typedef struct <a href="#ppd_group_s">ppd_group_s</a> ppd_group_t;
</p>
<h3 class="typedef"><a id="ppd_option_t">ppd_option_t</a></h3>
<p class="description">Options</p>
<h3 class="typedef"><a id="ppd_option_t"><span class="info">&#160;DEPRECATED&#160;</span>ppd_option_t</a></h3>
<p class="description">Options </p>
<p class="code">
typedef struct <a href="#ppd_option_s">ppd_option_s</a> ppd_option_t;
</p>
<h3 class="typedef"><a id="ppd_profile_t">ppd_profile_t</a></h3>
<p class="description">sRGB Color Profiles</p>
<h3 class="typedef"><a id="ppd_profile_t"><span class="info">&#160;DEPRECATED&#160;</span>ppd_profile_t</a></h3>
<p class="description">sRGB Color Profiles </p>
<p class="code">
typedef struct <a href="#ppd_profile_s">ppd_profile_s</a> ppd_profile_t;
</p>
<h3 class="typedef"><a id="ppd_section_t">ppd_section_t</a></h3>
<p class="description">Order dependency sections</p>
<h3 class="typedef"><a id="ppd_section_t"><span class="info">&#160;DEPRECATED&#160;</span>ppd_section_t</a></h3>
<p class="description">Order dependency sections </p>
<p class="code">
typedef enum <a href="#ppd_section_e">ppd_section_e</a> ppd_section_t;
</p>
<h3 class="typedef"><a id="ppd_size_t">ppd_size_t</a></h3>
<p class="description">Page Sizes</p>
<h3 class="typedef"><a id="ppd_size_t"><span class="info">&#160;DEPRECATED&#160;</span>ppd_size_t</a></h3>
<p class="description">Page Sizes </p>
<p class="code">
typedef struct <a href="#ppd_size_s">ppd_size_s</a> ppd_size_t;
</p>
<h3 class="typedef"><a id="ppd_status_t"><span class="info">&#160;CUPS 1.1.19/macOS 10.3&#160;</span>ppd_status_t</a></h3>
<h3 class="typedef"><a id="ppd_status_t"><span class="info">&#160;DEPRECATED&#160;</span>ppd_status_t</a></h3>
<p class="description">Status Codes </p>
<p class="code">
typedef enum <a href="#ppd_status_e">ppd_status_e</a> ppd_status_t;
</p>
<h3 class="typedef"><a id="ppd_ui_t">ppd_ui_t</a></h3>
<p class="description">UI Types</p>
<h3 class="typedef"><a id="ppd_ui_t"><span class="info">&#160;DEPRECATED&#160;</span>ppd_ui_t</a></h3>
<p class="description">UI Types </p>
<p class="code">
typedef enum <a href="#ppd_ui_e">ppd_ui_e</a> ppd_ui_t;
</p>
<h2 class="title"><a id="STRUCTURES">Structures</a></h2>
<h3 class="struct"><span class="info">&#160;CUPS 1.1.19/macOS 10.3&#160;</span><a id="ppd_attr_s">ppd_attr_s</a></h3>
<h3 class="struct"><span class="info">&#160;DEPRECATED&#160;</span><a id="ppd_attr_s">ppd_attr_s</a></h3>
<p class="description">PPD Attribute Structure </p>
<p class="code">struct ppd_attr_s {<br>
&#160;&#160;&#160;&#160;char name[PPD_MAX_NAME];<br>
@@ -1549,8 +1629,8 @@ typedef enum <a href="#ppd_ui_e">ppd_ui_e</a> ppd_ui_t;
<tr><th>value </th>
<td class="description">Value string</td></tr>
</tbody></table>
<h3 class="struct"><a id="ppd_choice_s">ppd_choice_s</a></h3>
<p class="description">Option choices</p>
<h3 class="struct"><span class="info">&#160;DEPRECATED&#160;</span><a id="ppd_choice_s">ppd_choice_s</a></h3>
<p class="description">Option choices </p>
<p class="code">struct ppd_choice_s {<br>
&#160;&#160;&#160;&#160;char choice[PPD_MAX_NAME];<br>
&#160;&#160;&#160;&#160;char *code;<br>
@@ -1571,8 +1651,8 @@ typedef enum <a href="#ppd_ui_e">ppd_ui_e</a> ppd_ui_t;
<tr><th>text[PPD_MAX_TEXT] </th>
<td class="description">Human-readable option name</td></tr>
</tbody></table>
<h3 class="struct"><a id="ppd_const_s">ppd_const_s</a></h3>
<p class="description">Constraints</p>
<h3 class="struct"><span class="info">&#160;DEPRECATED&#160;</span><a id="ppd_const_s">ppd_const_s</a></h3>
<p class="description">Constraints </p>
<p class="code">struct ppd_const_s {<br>
&#160;&#160;&#160;&#160;char choice1[PPD_MAX_NAME];<br>
&#160;&#160;&#160;&#160;char choice2[PPD_MAX_NAME];<br>
@@ -1590,7 +1670,7 @@ typedef enum <a href="#ppd_ui_e">ppd_ui_e</a> ppd_ui_t;
<tr><th>option2[PPD_MAX_NAME] </th>
<td class="description">Second keyword</td></tr>
</tbody></table>
<h3 class="struct"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="ppd_coption_s">ppd_coption_s</a></h3>
<h3 class="struct"><span class="info">&#160;DEPRECATED&#160;</span><a id="ppd_coption_s">ppd_coption_s</a></h3>
<p class="description">Custom Option </p>
<p class="code">struct ppd_coption_s {<br>
&#160;&#160;&#160;&#160;char keyword[PPD_MAX_NAME];<br>
@@ -1609,7 +1689,7 @@ typedef enum <a href="#ppd_ui_e">ppd_ui_e</a> ppd_ui_t;
<tr><th>params </th>
<td class="description">Parameters</td></tr>
</tbody></table>
<h3 class="struct"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="ppd_cparam_s">ppd_cparam_s</a></h3>
<h3 class="struct"><span class="info">&#160;DEPRECATED&#160;</span><a id="ppd_cparam_s">ppd_cparam_s</a></h3>
<p class="description">Custom Parameter </p>
<p class="code">struct ppd_cparam_s {<br>
&#160;&#160;&#160;&#160;<a href="#ppd_cpvalue_t">ppd_cpvalue_t</a> current;<br>
@@ -1634,8 +1714,8 @@ typedef enum <a href="#ppd_ui_e">ppd_ui_e</a> ppd_ui_t;
<tr><th>type </th>
<td class="description">Parameter type</td></tr>
</tbody></table>
<h3 class="struct"><a id="ppd_emul_s">ppd_emul_s</a></h3>
<p class="description">Emulators</p>
<h3 class="struct"><span class="info">&#160;DEPRECATED&#160;</span><a id="ppd_emul_s">ppd_emul_s</a></h3>
<p class="description">Emulators </p>
<p class="code">struct ppd_emul_s {<br>
&#160;&#160;&#160;&#160;char name[PPD_MAX_NAME];<br>
&#160;&#160;&#160;&#160;char *start;<br>
@@ -1650,8 +1730,8 @@ typedef enum <a href="#ppd_ui_e">ppd_ui_e</a> ppd_ui_t;
<tr><th>stop </th>
<td class="description">Code to stop this emulation</td></tr>
</tbody></table>
<h3 class="struct"><a id="ppd_file_s">ppd_file_s</a></h3>
<p class="description">PPD File</p>
<h3 class="struct"><span class="info">&#160;DEPRECATED&#160;</span><a id="ppd_file_s">ppd_file_s</a></h3>
<p class="description">PPD File </p>
<p class="code">struct ppd_file_s {<br>
&#160;&#160;&#160;&#160;int accurate_screens;<br>
&#160;&#160;&#160;&#160;int color_device;<br>
@@ -1783,8 +1863,8 @@ typedef enum <a href="#ppd_ui_e">ppd_ui_e</a> ppd_ui_t;
<tr><th>variable_sizes </th>
<td class="description">1 = supports variable sizes, 0 = doesn't</td></tr>
</tbody></table>
<h3 class="struct"><a id="ppd_group_s">ppd_group_s</a></h3>
<p class="description">Groups</p>
<h3 class="struct"><span class="info">&#160;DEPRECATED&#160;</span><a id="ppd_group_s">ppd_group_s</a></h3>
<p class="description">Groups </p>
<p class="code">struct ppd_group_s {<br>
&#160;&#160;&#160;&#160;char text[PPD_MAX_TEXT - PPD_MAX_NAME];<br>
&#160;&#160;&#160;&#160;char name[PPD_MAX_NAME];<br>
@@ -1808,8 +1888,8 @@ typedef enum <a href="#ppd_ui_e">ppd_ui_e</a> ppd_ui_t;
<tr><th>subgroups </th>
<td class="description">Sub-groups (max depth = 1)</td></tr>
</tbody></table>
<h3 class="struct"><a id="ppd_option_s">ppd_option_s</a></h3>
<p class="description">Options</p>
<h3 class="struct"><span class="info">&#160;DEPRECATED&#160;</span><a id="ppd_option_s">ppd_option_s</a></h3>
<p class="description">Options </p>
<p class="code">struct ppd_option_s {<br>
&#160;&#160;&#160;&#160;<a href="#ppd_choice_t">ppd_choice_t</a> *choices;<br>
&#160;&#160;&#160;&#160;char conflicted;<br>
@@ -1842,8 +1922,8 @@ typedef enum <a href="#ppd_ui_e">ppd_ui_e</a> ppd_ui_t;
<tr><th>ui </th>
<td class="description">Type of UI option</td></tr>
</tbody></table>
<h3 class="struct"><a id="ppd_profile_s">ppd_profile_s</a></h3>
<p class="description">sRGB Color Profiles</p>
<h3 class="struct"><span class="info">&#160;DEPRECATED&#160;</span><a id="ppd_profile_s">ppd_profile_s</a></h3>
<p class="description">sRGB Color Profiles </p>
<p class="code">struct ppd_profile_s {<br>
&#160;&#160;&#160;&#160;float density;<br>
&#160;&#160;&#160;&#160;float gamma;<br>
@@ -1864,8 +1944,8 @@ typedef enum <a href="#ppd_ui_e">ppd_ui_e</a> ppd_ui_t;
<tr><th>resolution[PPD_MAX_NAME] </th>
<td class="description">Resolution or &quot;-&quot;</td></tr>
</tbody></table>
<h3 class="struct"><a id="ppd_size_s">ppd_size_s</a></h3>
<p class="description">Page Sizes</p>
<h3 class="struct"><span class="info">&#160;DEPRECATED&#160;</span><a id="ppd_size_s">ppd_size_s</a></h3>
<p class="description">Page Sizes </p>
<p class="code">struct ppd_size_s {<br>
&#160;&#160;&#160;&#160;float bottom;<br>
&#160;&#160;&#160;&#160;float left;<br>
@@ -1896,7 +1976,7 @@ typedef enum <a href="#ppd_ui_e">ppd_ui_e</a> ppd_ui_t;
<td class="description">Width of media in points</td></tr>
</tbody></table>
<h2 class="title"><a id="UNIONS">Unions</a></h2>
<h3 class="union"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="ppd_cplimit_u">ppd_cplimit_u</a></h3>
<h3 class="union"><span class="info">&#160;DEPRECATED&#160;</span><a id="ppd_cplimit_u">ppd_cplimit_u</a></h3>
<p class="description">Custom Parameter Limit </p>
<p class="code">union ppd_cplimit_u {<br>
&#160;&#160;&#160;&#160;float custom_curve;<br>
@@ -1927,7 +2007,7 @@ typedef enum <a href="#ppd_ui_e">ppd_ui_e</a> ppd_ui_t;
<tr><th>custom_string </th>
<td class="description">String length</td></tr>
</tbody></table>
<h3 class="union"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="ppd_cpvalue_u">ppd_cpvalue_u</a></h3>
<h3 class="union"><span class="info">&#160;DEPRECATED&#160;</span><a id="ppd_cpvalue_u">ppd_cpvalue_u</a></h3>
<p class="description">Custom Parameter Value </p>
<p class="code">union ppd_cpvalue_u {<br>
&#160;&#160;&#160;&#160;float custom_curve;<br>
@@ -1959,15 +2039,28 @@ typedef enum <a href="#ppd_ui_e">ppd_ui_e</a> ppd_ui_t;
<td class="description">String value</td></tr>
</tbody></table>
<h2 class="title"><a id="ENUMERATIONS">Constants</a></h2>
<h3 class="enumeration"><a id="ppd_conform_e"><span class="info">&#160;CUPS 1.1.19/macOS 10.3&#160;</span>ppd_conform_e</a></h3>
<h3 class="enumeration"><a id="ppd_conform_e"><span class="info">&#160;DEPRECATED&#160;</span>ppd_conform_e</a></h3>
<p class="description">Conformance Levels </p>
<h4 class="constants">Constants</h4>
<table class="list"><tbody>
<tr><th>PPD_CONFORM_RELAXED </th> <td class="description">Relax whitespace and control char</td></tr>
<tr><th>PPD_CONFORM_STRICT </th> <td class="description">Require strict conformance</td></tr>
</tbody></table>
<h3 class="enumeration"><a id="ppd_cs_e">ppd_cs_e</a></h3>
<p class="description">Colorspaces</p>
<h3 class="enumeration"><a id="ppd_cptype_e"><span class="info">&#160;DEPRECATED&#160;</span>ppd_cptype_e</a></h3>
<p class="description">Custom Parameter Type </p>
<h4 class="constants">Constants</h4>
<table class="list"><tbody>
<tr><th>PPD_CUSTOM_CURVE </th> <td class="description">Curve value for f(x) = x^value</td></tr>
<tr><th>PPD_CUSTOM_INT </th> <td class="description">Integer number value</td></tr>
<tr><th>PPD_CUSTOM_INVCURVE </th> <td class="description">Curve value for f(x) = x^(1/value)</td></tr>
<tr><th>PPD_CUSTOM_PASSCODE </th> <td class="description">String of (hidden) numbers</td></tr>
<tr><th>PPD_CUSTOM_PASSWORD </th> <td class="description">String of (hidden) characters</td></tr>
<tr><th>PPD_CUSTOM_POINTS </th> <td class="description">Measurement value in points</td></tr>
<tr><th>PPD_CUSTOM_REAL </th> <td class="description">Real number value</td></tr>
<tr><th>PPD_CUSTOM_STRING </th> <td class="description">String of characters</td></tr>
</tbody></table>
<h3 class="enumeration"><a id="ppd_cs_e"><span class="info">&#160;DEPRECATED&#160;</span>ppd_cs_e</a></h3>
<p class="description">Colorspaces </p>
<h4 class="constants">Constants</h4>
<table class="list"><tbody>
<tr><th>PPD_CS_CMY </th> <td class="description">CMY colorspace</td></tr>
@@ -1977,8 +2070,8 @@ typedef enum <a href="#ppd_ui_e">ppd_ui_e</a> ppd_ui_t;
<tr><th>PPD_CS_RGB </th> <td class="description">RGB colorspace</td></tr>
<tr><th>PPD_CS_RGBK </th> <td class="description">RGBK (K = gray) colorspace</td></tr>
</tbody></table>
<h3 class="enumeration"><a id="ppd_section_e">ppd_section_e</a></h3>
<p class="description">Order dependency sections</p>
<h3 class="enumeration"><a id="ppd_section_e"><span class="info">&#160;DEPRECATED&#160;</span>ppd_section_e</a></h3>
<p class="description">Order dependency sections </p>
<h4 class="constants">Constants</h4>
<table class="list"><tbody>
<tr><th>PPD_ORDER_ANY </th> <td class="description">Option code can be anywhere in the file</td></tr>
@@ -1988,7 +2081,7 @@ typedef enum <a href="#ppd_ui_e">ppd_ui_e</a> ppd_ui_t;
<tr><th>PPD_ORDER_PAGE </th> <td class="description">... must be in the PageSetup section</td></tr>
<tr><th>PPD_ORDER_PROLOG </th> <td class="description">... must be in the Prolog section</td></tr>
</tbody></table>
<h3 class="enumeration"><a id="ppd_status_e"><span class="info">&#160;CUPS 1.1.19/macOS 10.3&#160;</span>ppd_status_e</a></h3>
<h3 class="enumeration"><a id="ppd_status_e"><span class="info">&#160;DEPRECATED&#160;</span>ppd_status_e</a></h3>
<p class="description">Status Codes </p>
<h4 class="constants">Constants</h4>
<table class="list"><tbody>
@@ -2017,8 +2110,8 @@ typedef enum <a href="#ppd_ui_e">ppd_ui_e</a> ppd_ui_t;
<tr><th>PPD_NULL_FILE </th> <td class="description">NULL PPD file pointer</td></tr>
<tr><th>PPD_OK </th> <td class="description">OK</td></tr>
</tbody></table>
<h3 class="enumeration"><a id="ppd_ui_e">ppd_ui_e</a></h3>
<p class="description">UI Types</p>
<h3 class="enumeration"><a id="ppd_ui_e"><span class="info">&#160;DEPRECATED&#160;</span>ppd_ui_e</a></h3>
<p class="description">UI Types </p>
<h4 class="constants">Constants</h4>
<table class="list"><tbody>
<tr><th>PPD_UI_BOOLEAN </th> <td class="description">True or False option</td></tr>
+142 -63
Ver Arquivo
@@ -27,9 +27,19 @@ PRE {
font-family: monaco, courier, monospace;
}
PRE.command {
border: dotted thin #7f7f7f;
margin-left: 36pt;
BLOCKQUOTE {
border-left: solid 2px #777;
margin: 1em 0;
padding: 10px;
}
BLOCKQUOTE OL LI {
margin-left: -1em;
}
PRE.command, PRE.example {
background: #eee;
margin: 0 36pt;
padding: 10px;
}
@@ -54,13 +64,6 @@ PRE.man {
margin: 0;
}
PRE.example {
background: #eeeeee;
border: dotted thin #999999;
margin-left: 36pt;
padding: 10pt;
}
PRE.command EM, PRE.example EM {
font-family: lucida grande, geneva, helvetica, arial, sans-serif;
}
@@ -75,12 +78,6 @@ P.formula {
margin-left: 36pt;
}
BLOCKQUOTE {
background: #eeeeee;
border: solid thin #999999;
padding: 10pt;
}
A IMG {
border: none;
}
@@ -136,7 +133,7 @@ DIV.table CAPTION {
DIV.table TABLE TD {
border: solid thin #cccccc;
padding-top: 5pt;
padding: 5pt 10pt 0;
}
DIV.table TABLE TH {
@@ -284,26 +281,120 @@ DIV.summary TABLE THEAD TH {
/* API documentation styles... */
div.body h1 {
font-size: 250%;
font-weight: bold;
margin: 0;
}
div.body h2 {
font-size: 250%;
margin-top: 1.5em;
}
div.body h3, div.body h4, div.body h5 {
div.body h3 {
font-size: 150%;
margin-bottom: 0.5em;
margin-top: 1.5em;
}
.class, .enumeration, .function, .struct, .typedef, .union {
border-bottom: solid thin #999999;
margin-bottom: 0;
margin-top: 2em;
div.body h4 {
font-size: 110%;
margin-bottom: 0.5em;
margin-top: 1.5em;
}
div.body h5 {
font-size: 100%;
margin-bottom: 0.5em;
margin-top: 1.5em;
}
div.contents {
background: #e8e8e8;
border: solid thin black;
padding: 10px;
}
div.contents h1 {
font-size: 110%;
}
div.contents h2 {
font-size: 100%;
}
div.contents ul.contents {
font-size: 80%;
}
.class {
border-bottom: solid 2px gray;
}
.constants {
}
.description {
margin-top: 0.5em;
}
code, p.code, pre, ul.code li {
font-family: monaco, courier, monospace;
.discussion {
}
.enumeration {
border-bottom: solid 2px gray;
}
.function {
border-bottom: solid 2px gray;
margin-bottom: 0;
}
.members {
}
.method {
}
.parameters {
}
.returnvalue {
}
.struct {
border-bottom: solid 2px gray;
}
.typedef {
border-bottom: solid 2px gray;
}
.union {
border-bottom: solid 2px gray;
}
.variable {
}
h1, h2, h3, h4, h5, h6 {
page-break-inside: avoid;
}
blockquote {
border: solid thin gray;
box-shadow: 3px 3px 5px rgba(0,0,0,0.5);
padding: 0px 10px;
page-break-inside: avoid;
}
p code, li code, p.code, pre, ul.code li {
background: rgba(127,127,127,0.1);
border: thin dotted gray;
font-family: monospace;
font-size: 90%;
hyphens: manual;
-webkit-hyphens: manual;
page-break-inside: avoid;
}
p.code, pre, ul.code li {
padding: 10px;
}
p code, li code {
padding: 2px 5px;
}
a:link, a:visited {
text-decoration: none;
}
span.info {
background: black;
border: solid thin black;
color: white;
font-size: 80%;
font-style: italic;
font-weight: bold;
white-space: nowrap;
}
h3 span.info, h4 span.info {
border-top-left-radius: 10px;
border-top-right-radius: 10px;
float: right;
padding: 3px 6px;
}
ul.code, ul.contents, ul.subcontents {
list-style-type: none;
@@ -319,37 +410,31 @@ ul.contents > li {
ul.contents li ul.code, ul.contents li ul.subcontents {
padding-left: 2em;
}
div.body dl {
margin-left: 0;
margin-top: 0;
table.list {
border-collapse: collapse;
width: 100%;
}
div.body dt {
font-style: italic;
margin-left: 0;
margin-top: 0;
table.list tr:nth-child(even) {
background: rgba(127,127,127,0.1);]n}
table.list th {
border-right: 2px solid gray;
font-family: monospace;
padding: 5px 10px 5px 2px;
text-align: right;
vertical-align: top;
}
div.body dd {
margin-bottom: 0.5em;
table.list td {
padding: 5px 2px 5px 10px;
text-align: left;
vertical-align: top;
}
/* This is just for the HTML files generated with the framedhelp target */
div.contents {
background: #e8e8e8;
border: solid thin black;
padding: 10px;
h1.title {
}
div.contents h1 {
font-size: 110%;
h2.title {
border-bottom: solid 2px black;
}
div.contents h2 {
font-size: 100%;
}
div.contents ul.contents {
font-size: 80%;
}
div.contents ul.subcontents li {
margin-left: 1em;
text-indent: -1em;
h3.title {
border-bottom: solid 2px black;
}
--></style>
</head>
@@ -357,13 +442,10 @@ div.contents ul.subcontents li {
<!--
Raster API documentation for CUPS.
Copyright 2008-2010 by Apple Inc.
Copyright © 2008-2010 by Apple Inc.
These coded instructions, statements, and computer programs are the
property of Apple Inc. and are protected by Federal copyright
law. Distribution and use rights are outlined in the file "LICENSE.txt"
which should have been included with this file. If this file is
file is missing or damaged, see the license at "http://www.cups.org/".
Licensed under Apache License v2.0. See the file "LICENSE" for more
information.
-->
<h1 class='title'>Raster API</h1>
@@ -448,14 +530,11 @@ div.contents ul.subcontents li {
<!--
Raster API introduction for CUPS.
Copyright 2007-2013 by Apple Inc.
Copyright 1997-2006 by Easy Software Products, all rights reserved.
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
property of Apple Inc. and are protected by Federal copyright
law. Distribution and use rights are outlined in the file "LICENSE.txt"
which should have been included with this file. If this file is
file is missing or damaged, see the license at "http://www.cups.org/".
Licensed under Apache License v2.0. See the file "LICENSE" for more
information.
-->
<h2 class='title'><a name="OVERVIEW">Overview</a></h2>
Arquivo binário não exibido.
+60 -9
Ver Arquivo
@@ -7,8 +7,8 @@
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<meta name="creator" content="Mini-XML v2.11">
<meta name="author" content="Michael R Sweet">
<meta name="copyright" content="Copyright &#xa9; 2007-2017 by Apple Inc. All Rights Reserved.">
<meta name="version" content="2.2.5">
<meta name="copyright" content="Copyright &#xa9; 2007-2018 by Apple Inc. All Rights Reserved.">
<meta name="version" content="2.3.0">
<style type="text/css"><!--
body, p, h1, h2, h3, h4 {
font-family: sans-serif;
@@ -174,7 +174,7 @@ h3.title {
<body>
<h1 class="title">CUPS Programming Manual</h1>
<p>Michael R Sweet</p>
<p>Copyright &#xa9; 2007-2017 by Apple Inc. All Rights Reserved.</p>
<p>Copyright &#xa9; 2007-2018 by Apple Inc. All Rights Reserved.</p>
<div class="contents">
<h2 class="title">Contents</h2>
<ul class="contents">
@@ -210,6 +210,7 @@ h3.title {
<li><a href="#cupsCopyDestInfo">cupsCopyDestInfo</a></li>
<li><a href="#cupsCreateDestJob">cupsCreateDestJob</a></li>
<li><a href="#cupsDoAuthentication">cupsDoAuthentication</a></li>
<li><a href="#cupsEncodeOption">cupsEncodeOption</a></li>
<li><a href="#cupsEncodeOptions">cupsEncodeOptions</a></li>
<li><a href="#cupsEncodeOptions2">cupsEncodeOptions2</a></li>
<li><a href="#cupsEncryption">cupsEncryption</a></li>
@@ -474,6 +475,8 @@ h3.title {
<li><a href="#ipp_pstate_t">ipp_pstate_t</a></li>
<li><a href="#ipp_quality_t">ipp_quality_t</a></li>
<li><a href="#ipp_res_t">ipp_res_t</a></li>
<li><a href="#ipp_rstate_t">ipp_rstate_t</a></li>
<li><a href="#ipp_sstate_t">ipp_sstate_t</a></li>
<li><a href="#ipp_state_t">ipp_state_t</a></li>
<li><a href="#ipp_t">ipp_t</a></li>
</ul></li>
@@ -501,6 +504,8 @@ h3.title {
<li><a href="#ipp_pstate_e">ipp_pstate_e</a></li>
<li><a href="#ipp_quality_e">ipp_quality_e</a></li>
<li><a href="#ipp_res_e">ipp_res_e</a></li>
<li><a href="#ipp_rstate_e">ipp_rstate_e</a></li>
<li><a href="#ipp_sstate_e">ipp_sstate_e</a></li>
<li><a href="#ipp_state_e">ipp_state_e</a></li>
<li><a href="#ipp_status_e">ipp_status_e</a></li>
<li><a href="#ipp_tag_e">ipp_tag_e</a></li>
@@ -1308,7 +1313,7 @@ on success.
</p>
<h3 class="function"><span class="info">&#160;CUPS 1.6/macOS 10.8&#160;</span><a id="cupsConnectDest">cupsConnectDest</a></h3>
<p class="description">Open a conection to the destination.</p>
<p class="description">Open a connection to the destination.</p>
<p class="code">
<a href="#http_t">http_t</a> *cupsConnectDest(<a href="#cups_dest_t">cups_dest_t</a> *dest, unsigned flags, int msec, int *cancel, char *resource, size_t resourcesize, <a href="#cups_dest_cb_t">cups_dest_cb_t</a> cb, void *user_data);</p>
<h4 class="parameters">Parameters</h4>
@@ -1340,7 +1345,7 @@ pointed to by &quot;cancel&quot; is non-zero, or the callback function (or block
returns 0. The caller is responsible for calling <a href="#httpClose"><code>httpClose</code></a> on the
returned connection.<br>
<br>
Starting with CUPS 2.2.4, the caller can pass <code>CUPS_DEST_FLAGS_DEVICE</code>
Starting with CUPS 2.2.4, the caller can pass <code>CUPS_DEST_FLAGS_DEVICE</code>
for the &quot;flags&quot; argument to connect directly to the device associated with
the destination. Otherwise, the connection is made to the CUPS scheduler
associated with the destination.
@@ -1483,6 +1488,23 @@ int cupsDoAuthentication(<a href="#http_t">http_t</a> *http, const char *method,
status, prior to resubmitting your request.
</p>
<h3 class="function"><span class="info">&#160;CUPS 2.3&#160;</span><a id="cupsEncodeOption">cupsEncodeOption</a></h3>
<p class="description">Encode a single option into an IPP attribute.</p>
<p class="code">
<a href="#ipp_attribute_t">ipp_attribute_t</a> *cupsEncodeOption(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group_tag, const char *name, const char *value);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>ipp</th>
<td class="description">IPP request/response</td></tr>
<tr><th>group_tag</th>
<td class="description">Attribute group</td></tr>
<tr><th>name</th>
<td class="description">Option name</td></tr>
<tr><th>value</th>
<td class="description">Option string value</td></tr>
</tbody></table>
<h4 class="returnvalue">Return Value</h4>
<p class="description">New attribute or <code>NULL</code> on error</p>
<h3 class="function"><a id="cupsEncodeOptions">cupsEncodeOptions</a></h3>
<p class="description">Encode printer options into IPP attributes.</p>
<p class="code">
@@ -1490,7 +1512,7 @@ void cupsEncodeOptions(<a href="#ipp_t">ipp_t</a> *ipp, int num_options, <a href
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>ipp</th>
<td class="description">Request to add to</td></tr>
<td class="description">IPP request/response</td></tr>
<tr><th>num_options</th>
<td class="description">Number of options</td></tr>
<tr><th>options</th>
@@ -1507,7 +1529,7 @@ void cupsEncodeOptions2(<a href="#ipp_t">ipp_t</a> *ipp, int num_options, <a hre
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>ipp</th>
<td class="description">Request to add to</td></tr>
<td class="description">IPP request/response</td></tr>
<tr><th>num_options</th>
<td class="description">Number of options</td></tr>
<tr><th>options</th>
@@ -5918,6 +5940,16 @@ typedef enum <a href="#ipp_quality_e">ipp_quality_e</a> ipp_quality_t;
<p class="description">Resolution units</p>
<p class="code">
typedef enum <a href="#ipp_res_e">ipp_res_e</a> ipp_res_t;
</p>
<h3 class="typedef"><a id="ipp_rstate_t">ipp_rstate_t</a></h3>
<p class="description">resource-state values</p>
<p class="code">
typedef enum <a href="#ipp_rstate_e">ipp_rstate_e</a> ipp_rstate_t;
</p>
<h3 class="typedef"><a id="ipp_sstate_t">ipp_sstate_t</a></h3>
<p class="description">system-state values</p>
<p class="code">
typedef enum <a href="#ipp_sstate_e">ipp_sstate_e</a> ipp_sstate_t;
</p>
<h3 class="typedef"><a id="ipp_state_t">ipp_state_t</a></h3>
<p class="description">ipp_t state values</p>
@@ -6149,12 +6181,12 @@ are server-oriented...</p>
<tr><th>HTTP_STATUS_ERROR </th> <td class="description">An error response from httpXxxx()</td></tr>
<tr><th>HTTP_STATUS_EXPECTATION_FAILED </th> <td class="description">The expectation given in an Expect header field was not met</td></tr>
<tr><th>HTTP_STATUS_FORBIDDEN </th> <td class="description">Forbidden to access this URI</td></tr>
<tr><th>HTTP_STATUS_FOUND </th> <td class="description">Document was found at a different URI</td></tr>
<tr><th>HTTP_STATUS_GATEWAY_TIMEOUT </th> <td class="description">Gateway connection timed out</td></tr>
<tr><th>HTTP_STATUS_GONE </th> <td class="description">Server has gone away</td></tr>
<tr><th>HTTP_STATUS_LENGTH_REQUIRED </th> <td class="description">A content length or encoding is required</td></tr>
<tr><th>HTTP_STATUS_METHOD_NOT_ALLOWED </th> <td class="description">Method is not allowed</td></tr>
<tr><th>HTTP_STATUS_MOVED_PERMANENTLY </th> <td class="description">Document has moved permanently</td></tr>
<tr><th>HTTP_STATUS_MOVED_TEMPORARILY </th> <td class="description">Document has moved temporarily</td></tr>
<tr><th>HTTP_STATUS_MULTIPLE_CHOICES </th> <td class="description">Multiple files match request</td></tr>
<tr><th>HTTP_STATUS_NONE <span class="info">&#160;CUPS 1.7/macOS 10.9&#160;</span></th> <td class="description">No Expect value </td></tr>
<tr><th>HTTP_STATUS_NOT_ACCEPTABLE </th> <td class="description">Not Acceptable</td></tr>
@@ -6173,10 +6205,11 @@ are server-oriented...</p>
<tr><th>HTTP_STATUS_REQUEST_TIMEOUT </th> <td class="description">Request timed out</td></tr>
<tr><th>HTTP_STATUS_REQUEST_TOO_LARGE </th> <td class="description">Request entity too large</td></tr>
<tr><th>HTTP_STATUS_RESET_CONTENT </th> <td class="description">Content was reset/recreated</td></tr>
<tr><th>HTTP_STATUS_SEE_OTHER </th> <td class="description">See this other link...</td></tr>
<tr><th>HTTP_STATUS_SEE_OTHER </th> <td class="description">See this other link</td></tr>
<tr><th>HTTP_STATUS_SERVER_ERROR </th> <td class="description">Internal server error</td></tr>
<tr><th>HTTP_STATUS_SERVICE_UNAVAILABLE </th> <td class="description">Service is unavailable</td></tr>
<tr><th>HTTP_STATUS_SWITCHING_PROTOCOLS </th> <td class="description">HTTP upgrade to TLS/SSL</td></tr>
<tr><th>HTTP_STATUS_TEMPORARY_REDIRECT </th> <td class="description">Temporary redirection</td></tr>
<tr><th>HTTP_STATUS_UNAUTHORIZED </th> <td class="description">Unauthorized to access host</td></tr>
<tr><th>HTTP_STATUS_UNSUPPORTED_MEDIATYPE </th> <td class="description">The requested media type is unsupported</td></tr>
<tr><th>HTTP_STATUS_UPGRADE_REQUIRED </th> <td class="description">Upgrade to SSL/TLS required</td></tr>
@@ -6426,6 +6459,24 @@ are server-oriented...</p>
<table class="list"><tbody>
<tr><th>IPP_RES_PER_CM </th> <td class="description">Pixels per centimeter</td></tr>
<tr><th>IPP_RES_PER_INCH </th> <td class="description">Pixels per inch</td></tr>
</tbody></table>
<h3 class="enumeration"><a id="ipp_rstate_e">ipp_rstate_e</a></h3>
<p class="description">resource-state values</p>
<h4 class="constants">Constants</h4>
<table class="list"><tbody>
<tr><th>IPP_RSTATE_ABORTED </th> <td class="description">Resource has been aborted and is pending deletion.</td></tr>
<tr><th>IPP_RSTATE_AVAILABLE </th> <td class="description">Resource is available for installation.</td></tr>
<tr><th>IPP_RSTATE_CANCELED </th> <td class="description">Resource has been canceled and is pending deletion.</td></tr>
<tr><th>IPP_RSTATE_INSTALLED </th> <td class="description">Resource is installed.</td></tr>
<tr><th>IPP_RSTATE_PENDING </th> <td class="description">Resource is created but has no data yet.</td></tr>
</tbody></table>
<h3 class="enumeration"><a id="ipp_sstate_e">ipp_sstate_e</a></h3>
<p class="description">system-state values</p>
<h4 class="constants">Constants</h4>
<table class="list"><tbody>
<tr><th>IPP_SSTATE_IDLE </th> <td class="description">At least one printer is idle and none are processing a job.</td></tr>
<tr><th>IPP_SSTATE_PROCESSING </th> <td class="description">At least one printer is processing a job.</td></tr>
<tr><th>IPP_SSTATE_STOPPED </th> <td class="description">All printers are stopped.</td></tr>
</tbody></table>
<h3 class="enumeration"><a id="ipp_state_e">ipp_state_e</a></h3>
<p class="description">ipp_t state values</p>
+1 -1
Ver Arquivo
@@ -173,7 +173,7 @@ for more information.
<br>
CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
Copyright &copy; 2007-2017 by Apple Inc.
Copyright &copy; 2007-2018 by Apple Inc.
</body>
</html>
+1 -1
Ver Arquivo
@@ -83,7 +83,7 @@ Administrators wishing to prevent unauthorized cancellation of jobs via the <i>-
<a href="man-lpstat.html?TOPIC=Man+Pages"><b>lpstat</b>(1),</a>
CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
Copyright &copy; 2007-2017 by Apple Inc.
Copyright &copy; 2007-2018 by Apple Inc.
</body>
</html>
+1 -1
Ver Arquivo
@@ -24,7 +24,7 @@ The name, location, and format of this file are an implementation detail that wi
<a href="man-subscriptions.conf.html?TOPIC=Man+Pages"><b>subscriptions.conf</b>(5),</a>
CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
Copyright &copy; 2007-2017 by Apple Inc.
Copyright &copy; 2007-2018 by Apple Inc.
</body>
</html>
+1 -1
Ver Arquivo
@@ -82,7 +82,7 @@ On Linux and other systems using GNU TLS, the <i>/etc/cups/ssl/site.crl</i> file
<b>default</b>(1),
CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
Copyright &copy; 2007-2017 by Apple Inc.
Copyright &copy; 2007-2018 by Apple Inc.
</body>
</html>
+1 -1
Ver Arquivo
@@ -94,7 +94,7 @@ Compile a simple one-file CUPS filter:
<a href="man-cups.html?TOPIC=Man+Pages"><b>cups</b>(1),</a>
CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
Copyright &copy; 2007-2017 by Apple Inc.
Copyright &copy; 2007-2018 by Apple Inc.
</body>
</html>
+1 -1
Ver Arquivo
@@ -196,7 +196,7 @@ On macOS the Font Book application manages system-installed fonts.
<a href="man-subscriptions.conf.html?TOPIC=Man+Pages"><b>subscriptions.conf</b>(5),</a>
CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
Copyright &copy; 2007-2017 by Apple Inc.
Copyright &copy; 2007-2018 by Apple Inc.
</body>
</html>

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