Comparar commits
130 Commits
| Autor | SHA1 | Data | |
|---|---|---|---|
| 1539283f98 | |||
| a6dd739c02 | |||
| 929486aa64 | |||
| 579a5525e8 | |||
| f66b1d85f8 | |||
| 2c4c9ada65 | |||
| e1ac3f36d0 | |||
| c95282ef08 | |||
| 9e838da3db | |||
| 0d92ec1c6f | |||
| beb37da67b | |||
| fd32084d40 | |||
| ac9e295f23 | |||
| 778759a48f | |||
| ac79576a7f | |||
| 76d2c4481f | |||
| 1660d61202 | |||
| 3eb5ec664f | |||
| a17ce1d474 | |||
| 1e01455aeb | |||
| 5c2c2ab6a3 | |||
| 06a5a4d332 | |||
| 4cadd6202f | |||
| 2de7c5f81c | |||
| 8127ebd190 | |||
| e5fee178d9 | |||
| 077bd665bd | |||
| dfe5f3b95c | |||
| 616f3f56dd | |||
| f594a3db6d | |||
| d3ab37abea | |||
| 619d6d95eb | |||
| b95156db4c | |||
| ff82ce17bf | |||
| af62b316e7 | |||
| 073b3929a1 | |||
| 17cc92f131 | |||
| bd4b5b3ee1 | |||
| c77dede2ed | |||
| 4e02be68c1 | |||
| 0873f681e4 | |||
| c1de912d13 | |||
| fbcc927ded | |||
| 4feb1fe2e5 | |||
| c944b62ba8 | |||
| 44cb0dd233 | |||
| 3581e03de5 | |||
| 56f0cbeb27 | |||
| 656c109a1c | |||
| 159e027902 | |||
| 7271db11d2 | |||
| d07cb8d5dc | |||
| 15fe2ddc7f | |||
| df59b110ad | |||
| b056061b24 | |||
| 86d93a7539 | |||
| 4b4895dfe7 | |||
| b25f3cf080 | |||
| 63f8dcbd47 | |||
| 6a76f435d8 | |||
| d0bfbc98b6 | |||
| 561e0647a8 | |||
| 0fb02fb9ce | |||
| 187b9322c8 | |||
| 5192eac3e6 | |||
| 34646e298e | |||
| 3f72eb0187 | |||
| ada35e599c | |||
| 003c1790e9 | |||
| 73c6236f2c | |||
| 8aecb2299e | |||
| 658c64bf2e | |||
| 84047a015c | |||
| 739ad3f3ea | |||
| afd96090b5 | |||
| a0fccd8044 | |||
| 95f319b9dd | |||
| 13ceaad273 | |||
| 32987439c3 | |||
| e6062e8e9c | |||
| 0dfe699052 | |||
| 367068f32a | |||
| 0c7f533afd | |||
| 0fea18126c | |||
| ca75cc1354 | |||
| c6dbbca1f5 | |||
| ea95f7fe1a | |||
| b0bb6caa3a | |||
| cff3f79fb2 | |||
| f1b7e5634d | |||
| 516dacf7d3 | |||
| a9e8acf53d | |||
| 18dfe3cbe7 | |||
| 30df0a0309 | |||
| 818bbe7af2 | |||
| 9b440f8a5c | |||
| 3cd7b5e053 | |||
| 449f30b03d | |||
| c2532688fb | |||
| 08e8f007f4 | |||
| ead626d781 | |||
| 60bb47475a | |||
| ddf2ec7348 | |||
| 706a0485c5 | |||
| c65e1c4ffd | |||
| bb54b17e78 | |||
| c64170e5f6 | |||
| 0bb02bfa09 | |||
| 66d471becb | |||
| fe1a430545 | |||
| 53f8d64f84 | |||
| eb61cb5bf0 | |||
| a7aabde8fe | |||
| 699fe02075 | |||
| 19186c8bae | |||
| 7d26bf7d6c | |||
| d6ddd199f4 | |||
| a468069a20 | |||
| ab89234de2 | |||
| afad2da22d | |||
| 191be31cf1 | |||
| f28728ee32 | |||
| c5b7774cb8 | |||
| e22f464e37 | |||
| e28345e78d | |||
| f17549fbb4 | |||
| 06e1afc39b | |||
| a166e9337a | |||
| 7f4d7b8a51 | |||
| 564cd57de8 |
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
|
||||
|
||||
@@ -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
@@ -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.
|
||||
*/
|
||||
|
||||
/*
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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.
|
||||
*/
|
||||
|
||||
/*
|
||||
|
||||
@@ -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
@@ -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.
|
||||
*/
|
||||
|
||||
/*
|
||||
|
||||
@@ -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
@@ -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
@@ -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.
|
||||
*/
|
||||
|
||||
/*
|
||||
|
||||
@@ -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.
|
||||
*/
|
||||
|
||||
/*
|
||||
|
||||
@@ -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.
|
||||
*/
|
||||
|
||||
/*
|
||||
|
||||
@@ -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.
|
||||
*/
|
||||
|
||||
/*
|
||||
|
||||
@@ -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
@@ -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
@@ -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
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
@@ -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><cups/cups.h></var> header, while
|
||||
"cupsimage" functions are found in the <var><cups/raster.h></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 <stdio.h>
|
||||
#include <cups/cups.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
int i;
|
||||
cups_dest_t *dests, *dest;
|
||||
int num_dests = cupsGetDests(&dests);
|
||||
|
||||
for (i = num_dests, dest = dests; i > 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>
|
||||
@@ -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>
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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
@@ -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;
|
||||
|
||||
@@ -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
@@ -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
@@ -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
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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 */
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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.");
|
||||
|
||||
|
||||
/*
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -30,7 +30,7 @@
|
||||
|
||||
|
||||
/*
|
||||
* Local functions...
|
||||
* Include platform-specific TLS code...
|
||||
*/
|
||||
|
||||
#ifdef HAVE_SSL
|
||||
|
||||
@@ -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
@@ -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
@@ -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 */
|
||||
|
||||
|
||||
@@ -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 }
|
||||
};
|
||||
@@ -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
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
+5
-15
@@ -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
@@ -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
@@ -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
@@ -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"> CUPS 1.4/macOS 10.6 </span><a id="cupsGetDevices">cupsGetDevices</a></h3>
|
||||
<h3 class="function"><span class="info"> DEPRECATED </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 "timeout" parameter controls
|
||||
how long the request lasts, while the "include_schemes" and "exclude_schemes"
|
||||
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
@@ -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
@@ -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"> CUPS 1.1.19/macOS 10.3 </span>ppd_attr_t</a></h3>
|
||||
<h3 class="typedef"><a id="ppd_attr_t"><span class="info"> DEPRECATED </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"> DEPRECATED </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"> CUPS 1.1.19/macOS 10.3 </span>ppd_conform_t</a></h3>
|
||||
<h3 class="typedef"><a id="ppd_conform_t"><span class="info"> DEPRECATED </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"> DEPRECATED </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"> CUPS 1.2/macOS 10.5 </span>ppd_coption_t</a></h3>
|
||||
<h3 class="typedef"><a id="ppd_coption_t"><span class="info"> DEPRECATED </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"> CUPS 1.2/macOS 10.5 </span>ppd_cparam_t</a></h3>
|
||||
<h3 class="typedef"><a id="ppd_cparam_t"><span class="info"> DEPRECATED </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"> CUPS 1.2/macOS 10.5 </span>ppd_cplimit_t</a></h3>
|
||||
<h3 class="typedef"><a id="ppd_cplimit_t"><span class="info"> DEPRECATED </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"> CUPS 1.2/macOS 10.5 </span>ppd_cptype_t</a></h3>
|
||||
<h3 class="typedef"><a id="ppd_cptype_t"><span class="info"> DEPRECATED </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"> CUPS 1.2/macOS 10.5 </span>ppd_cpvalue_t</a></h3>
|
||||
<h3 class="typedef"><a id="ppd_cpvalue_t"><span class="info"> DEPRECATED </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"> DEPRECATED </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"> DEPRECATED </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"> DEPRECATED </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"> DEPRECATED </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"> DEPRECATED </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"> DEPRECATED </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"> DEPRECATED </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"> DEPRECATED </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"> CUPS 1.1.19/macOS 10.3 </span>ppd_status_t</a></h3>
|
||||
<h3 class="typedef"><a id="ppd_status_t"><span class="info"> DEPRECATED </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"> DEPRECATED </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"> CUPS 1.1.19/macOS 10.3 </span><a id="ppd_attr_s">ppd_attr_s</a></h3>
|
||||
<h3 class="struct"><span class="info"> DEPRECATED </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>
|
||||
    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"> DEPRECATED </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>
|
||||
    char choice[PPD_MAX_NAME];<br>
|
||||
    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"> DEPRECATED </span><a id="ppd_const_s">ppd_const_s</a></h3>
|
||||
<p class="description">Constraints </p>
|
||||
<p class="code">struct ppd_const_s {<br>
|
||||
    char choice1[PPD_MAX_NAME];<br>
|
||||
    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"> CUPS 1.2/macOS 10.5 </span><a id="ppd_coption_s">ppd_coption_s</a></h3>
|
||||
<h3 class="struct"><span class="info"> DEPRECATED </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>
|
||||
    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"> CUPS 1.2/macOS 10.5 </span><a id="ppd_cparam_s">ppd_cparam_s</a></h3>
|
||||
<h3 class="struct"><span class="info"> DEPRECATED </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>
|
||||
    <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"> DEPRECATED </span><a id="ppd_emul_s">ppd_emul_s</a></h3>
|
||||
<p class="description">Emulators </p>
|
||||
<p class="code">struct ppd_emul_s {<br>
|
||||
    char name[PPD_MAX_NAME];<br>
|
||||
    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"> DEPRECATED </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>
|
||||
    int accurate_screens;<br>
|
||||
    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"> DEPRECATED </span><a id="ppd_group_s">ppd_group_s</a></h3>
|
||||
<p class="description">Groups </p>
|
||||
<p class="code">struct ppd_group_s {<br>
|
||||
    char text[PPD_MAX_TEXT - PPD_MAX_NAME];<br>
|
||||
    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"> DEPRECATED </span><a id="ppd_option_s">ppd_option_s</a></h3>
|
||||
<p class="description">Options </p>
|
||||
<p class="code">struct ppd_option_s {<br>
|
||||
    <a href="#ppd_choice_t">ppd_choice_t</a> *choices;<br>
|
||||
    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"> DEPRECATED </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>
|
||||
    float density;<br>
|
||||
    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 "-"</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"> DEPRECATED </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>
|
||||
    float bottom;<br>
|
||||
    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"> CUPS 1.2/macOS 10.5 </span><a id="ppd_cplimit_u">ppd_cplimit_u</a></h3>
|
||||
<h3 class="union"><span class="info"> DEPRECATED </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>
|
||||
    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"> CUPS 1.2/macOS 10.5 </span><a id="ppd_cpvalue_u">ppd_cpvalue_u</a></h3>
|
||||
<h3 class="union"><span class="info"> DEPRECATED </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>
|
||||
    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"> CUPS 1.1.19/macOS 10.3 </span>ppd_conform_e</a></h3>
|
||||
<h3 class="enumeration"><a id="ppd_conform_e"><span class="info"> DEPRECATED </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"> DEPRECATED </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"> DEPRECATED </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"> DEPRECATED </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"> CUPS 1.1.19/macOS 10.3 </span>ppd_status_e</a></h3>
|
||||
<h3 class="enumeration"><a id="ppd_status_e"><span class="info"> DEPRECATED </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"> DEPRECATED </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
@@ -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
@@ -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 © 2007-2017 by Apple Inc. All Rights Reserved.">
|
||||
<meta name="version" content="2.2.5">
|
||||
<meta name="copyright" content="Copyright © 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 © 2007-2017 by Apple Inc. All Rights Reserved.</p>
|
||||
<p>Copyright © 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"> CUPS 1.6/macOS 10.8 </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 "cancel" 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 "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.
|
||||
@@ -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"> CUPS 2.3 </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"> CUPS 1.7/macOS 10.9 </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>
|
||||
|
||||
@@ -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 © 2007-2017 by Apple Inc.
|
||||
Copyright © 2007-2018 by Apple Inc.
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -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 © 2007-2017 by Apple Inc.
|
||||
Copyright © 2007-2018 by Apple Inc.
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -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 © 2007-2017 by Apple Inc.
|
||||
Copyright © 2007-2018 by Apple Inc.
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -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 © 2007-2017 by Apple Inc.
|
||||
Copyright © 2007-2018 by Apple Inc.
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -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 © 2007-2017 by Apple Inc.
|
||||
Copyright © 2007-2018 by Apple Inc.
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -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 © 2007-2017 by Apple Inc.
|
||||
Copyright © 2007-2018 by Apple Inc.
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Alguns arquivos não foram exibidos porque demasiados arquivos foram alterados neste diff Mostrar Mais
Referência em uma Nova Issue
Bloquear um usuário