Comparar commits

..

1 Commits

Autor SHA1 Mensagem Data
msweet 45a6252b81 Import cups.org releases
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/tags/release-1.6.2@4306 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-05-10 18:56:23 +00:00
421 arquivos alterados com 9309 adições e 35169 exclusões
-207
Ver Arquivo
@@ -1,207 +0,0 @@
CHANGES-1.6.txt
---------------
CHANGES IN CUPS V1.6.3
- The configure script now prefers Clang over GCC.
- Fixed a compile problem on AIX (STR #4307)
- Fixed several ipptool test files that used old STATUS names.
- Kerberos credentials could get truncated when printing to a shared
printer.
- Printing using "ipps" URIs was not encrypted.
- Insecure ICC profiles prevented installation of user profiles for a
printer on OS X.
- Added more USB quirks for the libusb-based backend (STR #4311,
<rdar://problem/13736470>)
- The Russian web interface templates were broken (STR #4310)
- The scheduler no longer tries to do Kerberos authentication over the
loopback interface.
- The IPP backend could fail to pause a job for authentication
(STR #4298)
- Fixed a regression on the handling of auth keys on OS X if the
cups-files.conf was not present or did not contain a SystemAuthKey
value.
- The scheduler incorrectly did a reverse lookup of the server address
when HostNameLookups was turned off (STR #4302)
- The scheduler incorrectly computed the final content type value when
null filters were present.
CHANGES IN CUPS V1.6.2
- Documentation fixes (STR #4229, STR #4239, STR #4234, STR #4248,
STR #4259)
- Security: All file, directory, user, and group settings are now stored
in a separate cups-files.conf configuration file that cannot be set
through the CUPS web interface or APIs (STR #4223)
- Added a Czech localization (STR #4201)
- Added a French localization (STR #4247)
- Added a Russian localization (STR #4228, STR #4285)
- Updated the Catalan localization (STR #4202)
- Local certificate authentication did not guard against an empty
certification file (STR #4293)
- The scheduler did not reject device URIs with spaces.
- Added USB quirk rule for Epson Stylus Photo 750 (STR #4286)
- The IPP backend could crash if the printer disconnects early
(STR #4284)
- cupsGetPPD did not work with statically-configured CUPS shared
queues (STR #4178)
- The scheduler did not support long MIME media types (STR #4270)
- The cupsfilter command did not set the CHARSET environment variable
for the text filters (STR #4273)
- The lp command did not show errors for unknown "--foo" (STR #4261)
- Bad IPP responses could crash ipptool (STR #4262)
- Updated USB quirk rules for Canon and Xerox printers (STR #4217,
STR #4263)
- Added USB blacklisting for printers that require a custom backend
(STR #4218)
- The PPD compiler did not correctly JCL options (STR #4115, STR #4203)
- The ipptool program now supports DEFINE-MATCH and DEFINE-NO-MATCH
predicates for STATUS directives.
- Fixed a problem with local Kerberos authentication (STR #4140)
- Coverity scan: fixed some minor issues (STR #4242)
- The scheduler did not remove color profiles after deleting a printer
(STR #4232, STR #4276)
- The CUPS library did not always detect a timed out connection to the
server which could cause temporary loss of printing from applications
(STR #4187)
- The ipptool program now supports variable substitution in OPERATION
and DELAY directives (STR #4175)
- The IPP backend now stops queues when the server configuration
prevents successful job submission (STR #4125)
- The XML output of ipptool contained empty dictionaries (STR #4136)
- The scheduler did not delete job control backup files (STR #4244)
- cupsGetPPD3 could return a local PPD instead of the correct remote
PPD.
- The scheduler incorrectly advertised auth-info-required for local
queues needing local authentication (STR #4205)
- CUPS 1.6 clients using the ServerName directive in client.conf did not
work with CUPS 1.3.x or older servers (STR #4231, STR #4291)
- The SNMP backend now tries to work around broken printers that use a
newline to separate key/value pairs.
- The IPP backend did not send a cancel request to printers when a job
was canceled and the printer did not support Create-Job.
- Fixed EPM packaging files (STR #4199)
- OpenBSD build fix (STR #4195, STR #4196, STR #4197)
- The scheduler could crash when using Avahi (STR #4183, STR #4192,
STR #4200, STR #4213)
- The IPP backend could get stuck in an endless loop on certain network
errors (STR #4194)
- 32-bit builds failed on Debian (STR #4133)
- The scheduler no longer accepts or sends job description attributes.
- The IPP backend now works around some conformance issues for broken
printers (STR #4190)
- cupsBackendReport() now filters out all control characters from the
reported 1284 device IDs (STR #4124)
- The scheduler no longer allows job-name values that are not valid
network Unicode strings (STR #4072)
- The web interface did not preserve the order of classes, jobs, or
printers (STR #4170)
- The network backends now support disabling of SNMP supply level
queries via the "snmp" URI option (STR #4106)
- The IPP backend did not specify the compression used (STR #4181)
- ipptool did not support octetString values.
- The scheduler did not recognize dnssd: or ipps: URIs as Bonjour shared
queues (STR #4158)
- Applications could not get the PPD file for statically-configured
Bonjour-shared print queues (STR #4159)
- The cupsd.conf file included obsolete browsing directives (STR #4157)
- Fixed a USB backend compatibility issue on systems using libusb
(STR #4155, STR #4191)
- Some Bonjour features were not available on systems with Avahi
(STR #4156)
- CUPS now includes the port number in the Host: header for HTTP
requests.
- Fixed REPEAT-MATCH for STATUS and EXPECT - was incorrectly erroring
out.
CHANGES IN CUPS V1.6.1
- Documentation fix (STR #4149)
- RPM packaging fixes (STR #4129, #4145)
- The Japanese and English web interface headers were swapped
(STR #4148)
CHANGES IN CUPS V1.6.0
- Document changes (STR #4131)
- Added new Catalan (STR #4107) and Spanish (STR #4137) localizations.
CHANGES IN CUPS V1.6rc1
- Added a new Japanese localization (STR #4122)
- The SNMP backend no longer exits if it is unable to obtain an IPv6
socket (STR #4109)
- The LPD backend incorrectly used "localhost" in the control file
instead of the current hostname.
CHANGES IN CUPS V1.6b1
- Documentation updates (STR #3927, STR #3980, STR #4010, STR #4068)
- The scheduler now consolidates all PPD updates from filters at the
end of the job (STR #4075)
- CUPS now supports color management using colord (STR #3808)
- CUPS now supports Bonjour using Avahi (STR #3066)
- The PreserveJobFiles and PreserveJobHistory directives now support
specification of a time interval (STR #3143)
- PPD files can now be archived in (gzip'd) tar files to further reduce
the disk space used by PPD files (STR #3772)
- The network backends now deal with printers that report their levels
in percent but do not specify a maximum capacity of 100 (STR #3551)
- The network backends now report full/almost-full waste bins in
printers along with end-of-life for cleaning pads (STR #4017)
- Added a configure option to set the permissions of the installed
cupsd (STR #3459)
- Added a new WITH-ALL-VALUES directive to ipptool EXPECT predicates
(STR #3949)
- CUPS now supports a User directive in client.conf and the CUPS_USER
environment variable for overriding the default username (STR #3114)
- Now set the PJL USERNAME variable as needed (STR #3100)
- Added support for usernames and passwords longer than 32 characters
(STR #2856)
- Added a new MaxHoldTime directive to automatically cancel jobs that
have been held indefinitely after a specific number of seconds
(STR #2291)
- The LPD backend now uses the originating host name when it is not the
local system (STR #2053)
- CUPS now prefers the suffix "dpcm" when reporting resolution in dots-
per-centimeter (STR #4006)
- The configure script and build system no longer support building of
separate 32-bit and 64-bit libraries.
- The "brightness", "columns", "fitplot", "gamma", "hue",
"natural-scaling", "penwidth", "position", "ppi", "saturation", and
"scaling" options are not longer supported (STR #4010)
- The "page-bottom", "page-left", "page-right", "page-top",
"prettyprint", and "wrap" options have been deprecated (STR #4010)
- The scheduler now reports the standard "number-of-documents" attribute
instead of the CUPS-specific "document-count" attribute in
job objects.
- Added new destination connection and enumeration functions (STR #3924)
- Added new option, localization, and job submission functions that do
not depend on PPD files (STR #3925)
- Added a new MaxJobTime directive for cupsd that specifies the maximum
amount of time allowed for a job to complete before it is canceled.
- The default password callback now supports passwords up to 127
characters.
- The scheduler now supports a DefaultAuthType of "auto" to
automatically choose between Basic (username/password) and Negotiate
(Kerberos) authentication.
- cupsSideChannelSNMPGet/Walk now support OIDs and values up to 64k in
length.
- CUPS no longer supports automatic remote printers or implicit classes
via the CUPS, LDAP, or SLP protocols (STR #3922, STR #3923)
- The PPD APIs are now deprecated and will be removed in a future
version of CUPS (STR #3927)
- The default IPP version for requests is now 2.0 (STR #3929)
- The IPP APIs no longer expose the ipp_t or ipp_attribute_t structures
and instead provide accessor functions (STR #3928)
- The scheduler will no longer run programs with group write permission.
- The PHP module has been removed (STR #3932)
- The bannertops, commandtoescpx, commandtopclx, imagetops,
imagetoraster, pdftops, rastertoescpx, rastertopclx, and texttops
filters have been removed (STR #3930)
- The serial and parallel backends have been removed (STR 3935)
-158
Ver Arquivo
@@ -1,158 +0,0 @@
CHANGES-IPPTOOL.txt - 2013-05-02
--------------------------------
This file provides a list of changes to the ipptool binary distribution posted
on cups.org.
2013-05-02
- Fixed several ipptool test files that used old STATUS names.
2013-04-18
- Fixed some HTTP issues with authentication and compression.
- The IPP/1.1 test file did not allow for sufficient retries when
printing.
- The IPP/1.1 test file did not allow for empty printer-name values.
- The IPP Everywhere test file contained numerous errors.
- The color.jpg test file used a progressive mode instead of the
baseline JPEG mode.
- The IPP/1.1 test file referenced "color.jpeg" instead of "color.jpg".
2013-01-31
- Added support for DEFINE-MATCH and DEFINE-NO-MATCH as STATUS
predicates.
- Added support for WITH-VALUE and resolution values.
- Added support for SKIP-IF-MISSING (skip test if file is missing)
- Added support for octetString values.
- Added support for document compression in Print-Job and Send-Document
requests.
- Fixed REPEAT-MATCH for STATUS and EXPECT - was incorrectly erroring
out.
- Fixed a bug where bad IPP responses would cause ipptool to crash.
2012-02-28
- Changed behavior of WITH-VALUES "/regex/" to not require all values to
match.
- Added WITH-ALL-VALUES directive for EXPECT predicates that require all
values to match.
- Updated test files to use WITH-ALL-VALUES where necessary.
- Updated test files to use new ABNF for media names from PWG Media
Names 2.0.
2012-02-06
- Fixed the packaging of ipptool on Windows (removed unnecessary DLLs)
- Fixed an crash in ipptool when mixing DISPLAY with -I and a failed
request.
- Added a Print-Job test file.
- Added a "setdebug" batch file for Windows
- Added support for a CUPS_DISABLE_ASYNC_CONNECT environment variable.
2012-01-10
- Fixed an issue with the IPP/1.1 test file where the "waiting for job
completion" test did not work.
- The attribute groups out of order error was not shown for the
operation-attributes-tag group.
2011-12-02
- Fixed a truncated XML output bug that would happen for certain errors.
- Fixed the order-of-groups tests.
- Fixed "WITH-VALUE >N" for rangeOfInteger attributes.
- The Windows installer was missing the get-printer-attributes.test
file.
- The Linux binaries are now compiled for all LSB 4.x-compliant Linux
distributions.
- The Linux binaries no longer support SSL or TLS.
2011-10-05
- Fixed a crasher bug that showed up on Windows.
- The IPP/1.1 test would hang if the initial Print-Job test failed.
- Fixed a typo in the IPP/2.0 test.
2011-10-03
- Using OF-TYPE with the "no-value" or "unknown" out-of-band value tags
now works without special WITH-VALUE strings.
- ipptool now shows an error when an attribute appears more than once
within the same attribute group.
- ipptool did not display attributes as specified by the DISPLAY
directive when a test error failed.
- Fixed one spot where DEFINE-VALUE was still treated as an error when
the EXPECT test failed.
- uriScheme values were not displayed properly.
- Updated the IPP/1.1 tests to properly validate support for
job-hold-until-default and job-hold-until-supported when the Hold-Job
operation is supported.
- Updated the IPP/1.1 tests to properly check for the various standard
media sizes for the printing tests.
- Updated the IPP/1.1 tests to accept "no-value" for media-default an
orientation-requested-default.
- Updated the IPP/1.1 tests to accept "unknown" for job-state.
- Updated the IPP/1.1 tests to not perform the bogus URI printing tests
unless the "document-uri" variable is defined.
- Updated the IPP/2.0 tests to properly validate media-col
"media-xxx-supported" attributes.
- Updated the IPP/2.2 tests to properly validate media-ready and
media-col-ready.
2011-09-28
- Test output now includes a summary and overall score at the end.
- The MATCH-VALUE predicate now correctly deals with a failed EXPECT
condition.
- The IPP/1.1 test suite now looks for legacy media names and uses them
if the corresponding PWG standard names are not present.
- The IPP/1.1 test suite now tests the Print-Job+Release-Job when the
printer supports the job-hold-until attribute, Hold-Job operation, and
Release-Job operation.
2011-09-21
- Fixes for HTTP chunking, timeout, and encryption issues reported by
various users.
- Greatly improved IPP tests with added IPP/2.2 tests.
- New test documents - 1-page and 4-page mixed A4/Letter PDF/PS and a
couple JPEGs.
- New REPEAT directives to programmatically repeat tests as needed.
2011-08-16
- The Windows version no longer requires Visual Studio to be installed.
- The Windows version now supports SSL.
- Added "ipps" URI support.
- Added a new "-T" option.
- Added support for fractional seconds for the -i option and DELAY
directive.
- Added support for authentication.
- Added DEFINE-MATCH, DEFINE-NO-MATCH, DEFINE-VALUE, IF-NOT-DEFINED,
IGNORE-ERRORS, SKIP-IF-DEFINED, SKIP-IF-NOT-DEFINED,
SKIP-PREVIOUS-ERROR directives.
- WITH-VALUE now supports variable expansion.
- Updated the IPP/1.1 conformance test to skip the "my-jobs different
user" test if the printer URI contains a username.
- Updated the IPP conformance tests to validate media, media-default,
and media-supported values.
- No longer error out if a Printer returns a different version number in
the response when the request contains the version 0.0.
2010-10-16
- Initial release of standalone binary.
+179 -34
Ver Arquivo
@@ -1,37 +1,182 @@
CHANGES.txt - 1.7b1 - 2013-04-18
CHANGES.txt - 1.6.2 - 2013-03-18
--------------------------------
CHANGES IN CUPS V1.7b1
- The configure script now supports a --with-rundir option to change
the transient run-time state directory from the default to other
locations like /run/cups (STR #4306)
- The scheduler now supports PPD lookups for classes (STR #4296)
- The cupsfilter program did not set the FINAL_CONTENT_TYPE
environment variable for filters.
- Added a new "-x" option to the cancel command (STR #4103)
- Made the PWG media handling APIs public (STR #4267)
- Implemented ready media support for the cupsGetDestMediaXxx APIs
(STR #4289)
- Added new cupsFindDestDefault, cupsFindDestReady, and
cupsFindDestSupported APIs (STR #4289)
- Added new cupsGetDestMediaByIndex, cupsGetDestMediaCount, and
cupsGetDestMediaDefault APIs (STR #4289)
- Added new ippGet/SetOctetString APIs for getting and setting an
octetString value (STR #4289)
- Added new ippCreateRequestedArray API for generating a array of
attributes from the requested-attributes attribute.
- The ipptool utility now supports compression, conditional tests based
on the presence of files, and new DEFINE predicates for STATUS.
- Added new IPP APIs for checking values (STR #4167)
- Added new IPP APis for adding and setting formatted strings.
- Added new HTTP APIs to support basic server functionality via libcups.
- The dnssd backend now generates a 1284 device ID as needed (STR #3702)
- CUPS now supports compressing and decompressing streamed data
(STR #4168)
- CUPS now supports higher-level PIN printing, external accounting
systems, and "print here" printing environments (STR #4169)
- IRIX is no longer a supported operating system (STR #4092)
- The PPD compiler now supports JCL options properly (STR #4115)
- The web interface now checks whether the web browser has cookies
enabled and displays a suitable error message (STR #4141)
CHANGES IN CUPS V1.6.2
- Documentation fixes (STR #4229, STR #4239, STR #4234, STR #4248,
STR #4259)
- Security: All file, directory, user, and group settings are now stored
in a separate cups-files.conf configuration file that cannot be set
through the CUPS web interface or APIs (STR #4223)
- Added a Czech localization (STR #4201)
- Added a French localization (STR #4247)
- Added a Russian localization (STR #4228, STR #4285)
- Updated the Catalan localization (STR #4202)
- Local certificate authentication did not guard against an empty
certification file (STR #4293)
- The scheduler did not reject device URIs with spaces.
- Added USB quirk rule for Epson Stylus Photo 750 (STR #4286)
- The IPP backend could crash if the printer disconnects early
(STR #4284)
- cupsGetPPD did not work with statically-configured CUPS shared
queues (STR #4178)
- The scheduler did not support long MIME media types (STR #4270)
- The cupsfilter command did not set the CHARSET environment variable
for the text filters (STR #4273)
- The lp command did not show errors for unknown "--foo" (STR #4261)
- Bad IPP responses could crash ipptool (STR #4262)
- Updated USB quirk rules for Canon and Xerox printers (STR #4217,
STR #4263)
- Added USB blacklisting for printers that require a custom backend
(STR #4218)
- The PPD compiler did not correctly JCL options (STR #4115, STR #4203)
- The ipptool program now supports DEFINE-MATCH and DEFINE-NO-MATCH
predicates for STATUS directives.
- Fixed a problem with local Kerberos authentication (STR #4140)
- Coverity scan: fixed some minor issues (STR #4242)
- The scheduler did not remove color profiles after deleting a printer
(STR #4232, STR #4276)
- The CUPS library did not always detect a timed out connection to the
server which could cause temporary loss of printing from applications
(STR #4187)
- The ipptool program now supports variable substitution in OPERATION
and DELAY directives (STR #4175)
- The IPP backend now stops queues when the server configuration
prevents successful job submission (STR #4125)
- The XML output of ipptool contained empty dictionaries (STR #4136)
- The scheduler did not delete job control backup files (STR #4244)
- cupsGetPPD3 could return a local PPD instead of the correct remote
PPD.
- The scheduler incorrectly advertised auth-info-required for local
queues needing local authentication (STR #4205)
- CUPS 1.6 clients using the ServerName directive in client.conf did not
work with CUPS 1.3.x or older servers (STR #4231, STR #4291)
- The SNMP backend now tries to work around broken printers that use a
newline to separate key/value pairs.
- The IPP backend did not send a cancel request to printers when a job
was canceled and the printer did not support Create-Job.
- Fixed EPM packaging files (STR #4199)
- OpenBSD build fix (STR #4195, STR #4196, STR #4197)
- The scheduler could crash when using Avahi (STR #4183, STR #4192,
STR #4200, STR #4213)
- The IPP backend could get stuck in an endless loop on certain network
errors (STR #4194)
- 32-bit builds failed on Debian (STR #4133)
- The scheduler no longer accepts or sends job description attributes.
- The IPP backend now works around some conformance issues for broken
printers (STR #4190)
- cupsBackendReport() now filters out all control characters from the
reported 1284 device IDs (STR #4124)
- The scheduler no longer allows job-name values that are not valid
network Unicode strings (STR #4072)
- The web interface did not preserve the order of classes, jobs, or
printers (STR #4170)
- The network backends now support disabling of SNMP supply level
queries via the "snmp" URI option (STR #4106)
- The IPP backend did not specify the compression used (STR #4181)
- ipptool did not support octetString values.
- The scheduler did not recognize dnssd: or ipps: URIs as Bonjour shared
queues (STR #4158)
- Applications could not get the PPD file for statically-configured
Bonjour-shared print queues (STR #4159)
- The cupsd.conf file included obsolete browsing directives (STR #4157)
- Fixed a USB backend compatibility issue on systems using libusb
(STR #4155, STR #4191)
- Some Bonjour features were not available on systems with Avahi
(STR #4156)
- CUPS now includes the port number in the Host: header for HTTP
requests.
- Fixed REPEAT-MATCH for STATUS and EXPECT - was incorrectly erroring
out.
CHANGES IN CUPS V1.6.1
- Documentation fix (STR #4149)
- RPM packaging fixes (STR #4129, #4145)
- The Japanese and English web interface headers were swapped
(STR #4148)
CHANGES IN CUPS V1.6.0
- Document changes (STR #4131)
- Added new Catalan (STR #4107) and Spanish (STR #4137) localizations.
CHANGES IN CUPS V1.6rc1
- Added a new Japanese localization (STR #4122)
- The SNMP backend no longer exits if it is unable to obtain an IPv6
socket (STR #4109)
- The LPD backend incorrectly used "localhost" in the control file
instead of the current hostname.
CHANGES IN CUPS V1.6b1
- Documentation updates (STR #3927, STR #3980, STR #4010, STR #4068)
- The scheduler now consolidates all PPD updates from filters at the
end of the job (STR #4075)
- CUPS now supports color management using colord (STR #3808)
- CUPS now supports Bonjour using Avahi (STR #3066)
- The PreserveJobFiles and PreserveJobHistory directives now support
specification of a time interval (STR #3143)
- PPD files can now be archived in (gzip'd) tar files to further reduce
the disk space used by PPD files (STR #3772)
- The network backends now deal with printers that report their levels
in percent but do not specify a maximum capacity of 100 (STR #3551)
- The network backends now report full/almost-full waste bins in
printers along with end-of-life for cleaning pads (STR #4017)
- Added a configure option to set the permissions of the installed
cupsd (STR #3459)
- Added a new WITH-ALL-VALUES directive to ipptool EXPECT predicates
(STR #3949)
- CUPS now supports a User directive in client.conf and the CUPS_USER
environment variable for overriding the default username (STR #3114)
- Now set the PJL USERNAME variable as needed (STR #3100)
- Added support for usernames and passwords longer than 32 characters
(STR #2856)
- Added a new MaxHoldTime directive to automatically cancel jobs that
have been held indefinitely after a specific number of seconds
(STR #2291)
- The LPD backend now uses the originating host name when it is not the
local system (STR #2053)
- CUPS now prefers the suffix "dpcm" when reporting resolution in dots-
per-centimeter (STR #4006)
- The configure script and build system no longer support building of
separate 32-bit and 64-bit libraries.
- The "brightness", "columns", "fitplot", "gamma", "hue",
"natural-scaling", "penwidth", "position", "ppi", "saturation", and
"scaling" options are not longer supported (STR #4010)
- The "page-bottom", "page-left", "page-right", "page-top",
"prettyprint", and "wrap" options have been deprecated (STR #4010)
- The scheduler now reports the standard "number-of-documents" attribute
instead of the CUPS-specific "document-count" attribute in
job objects.
- Added new destination connection and enumeration functions (STR #3924)
- Added new option, localization, and job submission functions that do
not depend on PPD files (STR #3925)
- Added a new MaxJobTime directive for cupsd that specifies the maximum
amount of time allowed for a job to complete before it is canceled.
- The default password callback now supports passwords up to 127
characters.
- The scheduler now supports a DefaultAuthType of "auto" to
automatically choose between Basic (username/password) and Negotiate
(Kerberos) authentication.
- cupsSideChannelSNMPGet/Walk now support OIDs and values up to 64k in
length.
- CUPS no longer supports automatic remote printers or implicit classes
via the CUPS, LDAP, or SLP protocols (STR #3922, STR #3923)
- The PPD APIs are now deprecated and will be removed in a future
version of CUPS (STR #3927)
- The default IPP version for requests is now 2.0 (STR #3929)
- The IPP APIs no longer expose the ipp_t or ipp_attribute_t structures
and instead provide accessor functions (STR #3928)
- The scheduler will no longer run programs with group write permission.
- The PHP module has been removed (STR #3932)
- The bannertops, commandtoescpx, commandtopclx, imagetops,
imagetoraster, pdftops, rastertoescpx, rastertopclx, and texttops
filters have been removed (STR #3930)
- The serial and parallel backends have been removed (STR 3935)
+12 -10
Ver Arquivo
@@ -1,4 +1,4 @@
INSTALL - CUPS v1.7b1 - 2013-04-18
INSTALL - CUPS v1.6.2 - 2013-03-18
----------------------------------
This file describes how to compile and install CUPS from source code. For more
@@ -29,16 +29,18 @@ BEFORE YOU BEGIN
Compaq, HP, SGI, and Sun. BSD users should use GNU make (gmake) since BSD
make does not support "include".
Besides these tools you'll want ZLIB library for compression support, the
CDSA, GNU TLS, or OpenSSL libraries for encryption support, and either MIT
(1.6.3 or higher) or Heimdal Kerberos for Kerberos support. CUPS will
compile and run without these, however you'll miss out on many of the
features provided by CUPS.
Besides these tools you'll want the JPEG, PNG, TIFF, and ZLIB libraries for
image support, the CDSA, GNU TLS, or OpenSSL libraries for encryption
support, the OpenLDAP and OpenSLP libraries for directory services support,
and either MIT (1.6.3 or higher) or Heimdal Kerberos for Kerberos support.
CUPS will compile and run without these, however you'll miss out on many of
the features provided by CUPS.
Also, please note that CUPS does not include print filters to support PDF
or raster printing. You *must* download GPL Ghostscript and/or the Open
Printing CUPS filters package separately to print on operating systems
other than OS X.
Also, please note that CUPS does not include the Ghostscript-based
PostScript filter needed by non-PostScript printers. You *must* download
GPL Ghostscript separately from the CUPS web site if you want to print
PostScript files to non-PostScript printers on operating systems other than
OS X.
COMPILING THE SUBVERSION REPOSITORY CODE
+6 -29
Ver Arquivo
@@ -1,4 +1,4 @@
IPPTOOL.txt - 2013-05-02
IPPTOOL.txt - 2012-02-06
------------------------
See the file CHANGES-IPPTOOL.txt for a list of changes to this software.
@@ -54,29 +54,19 @@ STANDARD TEST FILES
state change notifications
get-completed-jobs.test Shows a list of completed jobs
get-jobs.test Shows a list of pending jobs
get-notifications.test Shows events for an ippget
subscription.
get-printer-attributes.test Shows printer attributes
get-subscriptions.test Shows a list of subscriptions
ipp-1.1.test IPP/1.1 conformance test suite
ipp-2.0.test IPP/2.0 conformance test suite
ipp-2.1.test IPP/2.1 conformance test suite
ipp-2.2.test IPP/2.2 conformance test suite
ipp-everywhere.test IPP Everywhere conformance test
suite
print-job.test Prints a file
print-job-deflate.test Prints a file, compressing with
deflate.
print-job-gzip.test Prints a file, compressing with gzip
validate-job.test Validates attributes for a job
submission.
CONFORMANCE TESTS
We provide basic IPP conformance tests for IPP/1.1, IPP/2.0, IPP/2.1,
IPP/2.2, and IPP Everywhere. For a given printer URI, the following
commands perform tests at each level:
We provide basic IPP conformance tests for IPP/1.1, IPP/2.0, IPP/2.1, and
IPP/2.2. For a given printer URI, the following commands perform tests at
each level:
ipptool -tf filename [options] -I printer-uri ipp-1.1.test
ipptool -tf filename [options] -I -V 2.0 printer-uri ipp-2.0.test
@@ -114,7 +104,6 @@ CONFORMANCE TESTS
-S Test IPP over HTTPS (default for ipps: URIs)
-T seconds Set a timeout for responses in seconds
-v Be verbose, showing all attributes sent and received
-X Produce XML (Apple plist) output
The printer-uri must be a URI supported by the printer using the "ipp" or
"ipps" scheme, for example:
@@ -123,7 +112,7 @@ CONFORMANCE TESTS
ipps://192.168.0.1/ipp/print
Print-by-reference (URL) printing can be tested by defining the document-uri
variable as a URL, for example:
variable to a URL, for example:
ipptool -tf filename -d document-uri=url -I printer-uri ipp-1.1.test
@@ -139,18 +128,6 @@ CONFORMANCE TESTS
printer.
IPP EVERYWHERE TESTING
The IPP Everywhere tests use sample PWG raster files available from:
ftp://ftp.pwg.org/pub/pwg/ipp/examples
Extract the corresponding ZIP archives into the current directory before
running the ipp-everywhere.test file. The test file will attempt to print
each PWG Raster file that is supported by the printer being tested - up to
372 pages including the 90 pages produced by the regular IPP test suite.
READING THE DOCUMENTATION
The command usage is described in the ipptest(1) man page, while the file
@@ -197,7 +174,7 @@ REPORTING BUGS
LEGAL STUFF
CUPS is Copyright 2007-2013 by Apple Inc. CUPS and the CUPS logo are
CUPS is Copyright 2007-2012 by Apple Inc. CUPS and the CUPS logo are
trademarks of Apple Inc.
The MD5 Digest code is Copyright 1999 Aladdin Enterprises.
+1
Ver Arquivo
@@ -316,6 +316,7 @@ dist: all
case `uname` in \
*BSD*) $(MAKE) $(MFLAGS) bsd;; \
Darwin*) $(MAKE) $(MFLAGS) osx;; \
IRIX*) $(MAKE) $(MFLAGS) tardist;; \
Linux*) test ! -x /usr/bin/rpm || $(MAKE) $(MFLAGS) rpm;; \
SunOS*) $(MAKE) $(MFLAGS) pkg;; \
esac
+1 -9
Ver Arquivo
@@ -1,14 +1,6 @@
README - CUPS v1.7b1 - 2013-04-18
README - CUPS v1.6.2 - 2013-03-18
---------------------------------
************************************************
************************************************
**** ****
**** BETA SOFTWARE - USE AT YOUR OWN RISK ****
**** ****
************************************************
************************************************
Looking for compile instructions? Read the file "INSTALL.txt" instead...
+1 -2
Ver Arquivo
@@ -134,9 +134,8 @@ install-exec: $(INSTALLXPC)
fi
if test "x$(SYMROOT)" != "x"; then \
$(INSTALL_DIR) $(SYMROOT); \
for file in $(RBACKENDS) $(UBACKENDS); do \
for file in $(TARGETS); do \
cp $$file $(SYMROOT); \
dsymutil $(SYMROOT)/$$file; \
done \
fi
+6 -50
Ver Arquivo
@@ -1031,7 +1031,6 @@ query_callback(
value[256], /* Value string */
make_and_model[512], /* Manufacturer and model */
model[256], /* Model */
pdl[256], /* PDL */
device_id[2048]; /* 1284 device ID */
@@ -1080,9 +1079,8 @@ query_callback(
device_id[0] = '\0';
make_and_model[0] = '\0';
pdl[0] = '\0';
strlcpy(model, "Unknown", sizeof(model));
strcpy(model, "Unknown");
for (data = rdata, dataend = data + rdlen;
data < dataend;
@@ -1136,9 +1134,9 @@ query_callback(
if (!_cups_strcasecmp(key, "usb_MFG") || !_cups_strcasecmp(key, "usb_MANU") ||
!_cups_strcasecmp(key, "usb_MANUFACTURER"))
strlcpy(make_and_model, value, sizeof(make_and_model));
strcpy(make_and_model, value);
else if (!_cups_strcasecmp(key, "usb_MDL") || !_cups_strcasecmp(key, "usb_MODEL"))
strlcpy(model, value, sizeof(model));
strcpy(model, value);
else if (!_cups_strcasecmp(key, "product") && !strstr(value, "Ghostscript"))
{
if (value[0] == '(')
@@ -1150,20 +1148,18 @@ query_callback(
if ((ptr = value + strlen(value) - 1) > value && *ptr == ')')
*ptr = '\0';
strlcpy(model, value + 1, sizeof(model));
strcpy(model, value + 1);
}
else
strlcpy(model, value, sizeof(model));
strcpy(model, value);
}
else if (!_cups_strcasecmp(key, "ty"))
{
strlcpy(model, value, sizeof(model));
strcpy(model, value);
if ((ptr = strchr(model, ',')) != NULL)
*ptr = '\0';
}
else if (!_cups_strcasecmp(key, "pdl"))
strlcpy(pdl, value, sizeof(pdl));
else if (!_cups_strcasecmp(key, "priority"))
device->priority = atoi(value);
else if ((device->type == CUPS_DEVICE_IPP ||
@@ -1208,46 +1204,6 @@ query_callback(
}
}
if (device_id[0] &&
!strstr(device_id, "CMD:") &&
!strstr(device_id, "COMMAND SET:") &&
(strstr(pdl, "application/pdf") ||
strstr(pdl, "application/postscript") ||
strstr(pdl, "application/vnd.hp-PCL") ||
strstr(pdl, "image/")))
{
value[0] = '\0';
if (strstr(pdl, "application/pdf"))
strlcat(value, ",PDF", sizeof(value));
if (strstr(pdl, "application/postscript"))
strlcat(value, ",PS", sizeof(value));
if (strstr(pdl, "application/vnd.hp-PCL"))
strlcat(value, ",PCL", sizeof(value));
for (ptr = strstr(pdl, "image/"); ptr; ptr = strstr(ptr, "image/"))
{
char *valptr = value + strlen(value);
/* Pointer into value */
if (valptr < (value + sizeof(value) - 1))
*valptr++ = ',';
ptr += 6;
while (isalnum(*ptr & 255) || *ptr == '-' || *ptr == '.')
{
if (isalnum(*ptr & 255) && valptr < (value + sizeof(value) - 1))
*valptr++ = toupper(*ptr++ & 255);
else
break;
}
*valptr = '\0';
}
ptr = device_id + strlen(device_id);
snprintf(ptr, sizeof(device_id) - (ptr - device_id), "CMD:%s;",
value + 1);
}
if (device_id[0])
device->device_id = strdup(device_id);
else
+202 -495
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+2 -2
Ver Arquivo
@@ -707,7 +707,7 @@ lpd_queue(const char *hostname, /* I - Host to connect to */
*/
fprintf(stderr, "DEBUG: Connecting to %s:%d for printer %s\n", hostname,
httpAddrPort(&(addrlist->addr)), printer);
_httpAddrPort(&(addrlist->addr)), printer);
_cupsLangPrintFilter(stderr, "INFO", _("Connecting to printer."));
for (lport = reserve == RESERVE_RFC1179 ? 732 : 1024, addr = addrlist,
@@ -889,7 +889,7 @@ lpd_queue(const char *hostname, /* I - Host to connect to */
fprintf(stderr, "DEBUG: Connected to %s:%d (local port %d)...\n",
httpAddrString(&(addr->addr), addrname, sizeof(addrname)),
httpAddrPort(&(addr->addr)), lport);
_httpAddrPort(&(addr->addr)), lport);
/*
* See if the printer supports SNMP...
+32 -32
Ver Arquivo
@@ -163,7 +163,7 @@ static const int prtMarkerSuppliesSupplyUnit[] =
sizeof(prtMarkerSuppliesSupplyUnit[0]));
/* Offset to supply index */
static const backend_state_t printer_states[] =
static const backend_state_t const printer_states[] =
{
/* { CUPS_TC_lowPaper, "media-low-report" }, */
{ CUPS_TC_noPaper | CUPS_TC_inputTrayEmpty, "media-empty-warning" },
@@ -180,7 +180,7 @@ static const backend_state_t printer_states[] =
{ CUPS_TC_outputFull, "output-area-full-warning" }
};
static const backend_state_t supply_states[] =
static const backend_state_t const supply_states[] =
{
{ CUPS_DEVELOPER_LOW, "developer-low-report" },
{ CUPS_DEVELOPER_EMPTY, "developer-empty-warning" },
@@ -318,9 +318,9 @@ backendSNMPSupplies(
if ((supplies[i].max_capacity > 0 || (quirks & CUPS_SNMP_CAPACITY)) &&
supplies[i].level >= 0)
snprintf(ptr, sizeof(value) - (ptr - value), "%d", percent);
sprintf(ptr, "%d", percent);
else
strlcpy(ptr, "-1", sizeof(value) - (ptr - value));
strcpy(ptr, "-1");
}
fprintf(stderr, "ATTR: marker-levels=%s\n", value);
@@ -458,34 +458,34 @@ backend_init_supplies(
"other",
"unknown",
"toner",
"waste-toner",
"wasteToner",
"ink",
"ink-cartridge",
"ink-ribbon",
"waste-ink",
"inkCartridge",
"inkRibbon",
"wasteInk",
"opc",
"developer",
"fuser-oil",
"solid-wax",
"ribbon-wax",
"waste-wax",
"fuserOil",
"solidWax",
"ribbonWax",
"wasteWax",
"fuser",
"corona-wire",
"fuser-oil-wick",
"cleaner-unit",
"fuser-cleaning-pad",
"transfer-unit",
"toner-cartridge",
"fuser-oiler",
"coronaWire",
"fuserOilWick",
"cleanerUnit",
"fuserCleaningPad",
"transferUnit",
"tonerCartridge",
"fuserOiler",
"water",
"waste-water",
"glue-water-additive",
"waste-paper",
"binding-supply",
"banding-supply",
"stitching-wire",
"shrink-wrap",
"paper-wrap",
"wasteWater",
"glueWaterAdditive",
"wastePaper",
"bindingSupply",
"bandingSupply",
"stitchingWire",
"shrinkWrap",
"paperWrap",
"staples",
"inserts",
"covers"
@@ -682,7 +682,7 @@ backend_init_supplies(
*/
for (i = 0; i < num_supplies; i ++)
strlcpy(supplies[i].color, "none", sizeof(supplies[i].color));
strcpy(supplies[i].color, "none");
_cupsSNMPWalk(snmp_fd, &current_addr, CUPS_SNMP_VERSION_1,
_cupsSNMPDefaultCommunity(), prtMarkerColorantValue,
@@ -697,7 +697,7 @@ backend_init_supplies(
if (i)
*ptr++ = ',';
strlcpy(ptr, supplies[i].color, sizeof(value) - (ptr - value));
strcpy(ptr, supplies[i].color);
}
fprintf(stderr, "ATTR: marker-colors=%s\n", value);
@@ -745,9 +745,9 @@ backend_init_supplies(
type = supplies[i].type;
if (type < CUPS_TC_other || type > CUPS_TC_covers)
strlcpy(ptr, "unknown", sizeof(value) - (ptr - value));
strcpy(ptr, "unknown");
else
strlcpy(ptr, types[type - CUPS_TC_other], sizeof(value) - (ptr - value));
strcpy(ptr, types[type - CUPS_TC_other]);
}
fprintf(stderr, "ATTR: marker-types=%s\n", value);
@@ -814,7 +814,7 @@ backend_walk_cb(cups_snmp_t *packet, /* I - SNMP packet */
if (!_cups_strcasecmp(colors[k][0],
(char *)packet->object_value.string.bytes))
{
strlcpy(supplies[j].color, colors[k][1], sizeof(supplies[j].color));
strcpy(supplies[j].color, colors[k][1]);
break;
}
}
+16 -1
Ver Arquivo
@@ -73,6 +73,10 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
int print_fd; /* Print file */
int copies; /* Number of copies to print */
time_t start_time; /* Time of first connect */
#ifdef __APPLE__
time_t current_time, /* Current time */
wait_time; /* Time to wait before shutting down socket */
#endif /* __APPLE__ */
int contimeout; /* Connection timeout */
int waiteof; /* Wait for end-of-file? */
int port; /* Port number */
@@ -406,7 +410,7 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
fprintf(stderr, "DEBUG: Connected to %s:%d...\n",
httpAddrString(&(addr->addr), addrname, sizeof(addrname)),
httpAddrPort(&(addr->addr)));
_httpAddrPort(&(addr->addr)));
/*
* Print everything...
@@ -434,6 +438,17 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
_cupsLangPrintFilter(stderr, "INFO", _("Print file sent."));
}
#ifdef __APPLE__
/*
* Wait up to 5 seconds to get any pending back-channel data...
*/
wait_time = time(NULL) + 5;
while (wait_time >= time(&current_time))
if (wait_bc(device_fd, wait_time - current_time) <= 0)
break;
#endif /* __APPLE__ */
if (waiteof)
{
/*
+1 -13
Ver Arquivo
@@ -667,19 +667,7 @@ walk_cb(const char *oid, /* I - OID */
int datalen, /* I - Length of data */
void *context) /* I - Context (unused) */
{
char temp[80];
if (datalen > (sizeof(temp) - 1))
{
memcpy(temp, data, sizeof(temp) - 1);
temp[sizeof(temp) - 1] = '\0';
}
else
{
memcpy(temp, data, datalen);
temp[datalen] = '\0';
}
printf("CUPS_SC_CMD_SNMP_WALK %s, %d bytes (%s)\n", oid, datalen, temp);
printf("CUPS_SC_CMD_SNMP_WALK %s, %d bytes (%s)\n", oid, datalen, data);
}
+24 -98
Ver Arquivo
@@ -1,7 +1,7 @@
/*
* "$Id$"
*
* Copyright 2005-2013 Apple Inc. All rights reserved.
* Copyright 2005-2012 Apple Inc. All rights reserved.
*
* IMPORTANT: This Apple software is supplied to you by Apple Computer,
* Inc. ("Apple") in consideration of your agreement to the following
@@ -96,7 +96,6 @@
#include <CoreFoundation/CoreFoundation.h>
#include <IOKit/usb/IOUSBLib.h>
#include <IOKit/IOCFPlugIn.h>
#include <libproc.h>
#include <spawn.h>
#include <pthread.h>
@@ -135,26 +134,6 @@ extern char **environ;
#define kUSBGenericTOPrinterClassDriver CFSTR("/System/Library/Printers/Libraries/USBGenericPrintingClass.plugin")
#define kUSBPrinterClassDeviceNotOpen -9664 /*kPMInvalidIOMContext*/
#define CRSetCrashLogMessage(m) _crc_make_setter(message, m)
#define _crc_make_setter(attr, arg) (gCRAnnotations.attr = (uint64_t)(unsigned long)(arg))
#define CRASH_REPORTER_CLIENT_HIDDEN __attribute__((visibility("hidden")))
#define CRASHREPORTER_ANNOTATIONS_VERSION 4
#define CRASHREPORTER_ANNOTATIONS_SECTION "__crash_info"
struct crashreporter_annotations_t {
uint64_t version; // unsigned long
uint64_t message; // char *
uint64_t signature_string; // char *
uint64_t backtrace; // char *
uint64_t message2; // char *
uint64_t thread; // uint64_t
uint64_t dialog_mode; // unsigned int
};
CRASH_REPORTER_CLIENT_HIDDEN
struct crashreporter_annotations_t gCRAnnotations
__attribute__((section("__DATA," CRASHREPORTER_ANNOTATIONS_SECTION)))
= { CRASHREPORTER_ANNOTATIONS_VERSION, 0, 0, 0, 0, 0, 0 };
/*
* Section 5.3 USB Printing Class spec
@@ -200,7 +179,7 @@ typedef struct classdriver_s /**** g.classdriver context ****/
UInt16 vendorID; /* Vendor id */
UInt16 productID; /* Product id */
printer_interface_t interface; /* identify the device to IOKit */
UInt8 outpipe; /* mandatory bulkOut pipe */
UInt8 outpipe; /* mandatory bulkOut pipe */
UInt8 inpipe; /* optional bulkIn pipe */
/* general class requests */
@@ -280,7 +259,6 @@ typedef struct globals_s
*/
globals_t g = { 0 }; /* Globals */
int Iterating = 0; /* Are we iterating the bus? */
/*
@@ -315,7 +293,6 @@ static pid_t child_pid; /* Child PID */
static void run_legacy_backend(int argc, char *argv[], int fd); /* Starts child backend process running as a ppc executable */
#endif /* __i386__ || __x86_64__ */
static void sigterm_handler(int sig); /* SIGTERM handler */
static void sigquit_handler(int sig, siginfo_t *si, void *unused);
#ifdef PARSE_PS_ERRORS
static const char *next_line (const char *buffer);
@@ -367,20 +344,10 @@ print_device(const char *uri, /* I - Device URI */
struct timeval *timeout, /* Timeout pointer */
tv; /* Time value */
struct timespec cond_timeout; /* pthread condition timeout */
struct sigaction action; /* Actions for POSIX signals */
(void)uri;
/*
* Catch SIGQUIT to determine who is sending it...
*/
memset(&action, 0, sizeof(action));
action.sa_sigaction = sigquit_handler;
action.sa_flags = SA_SIGINFO;
sigaction(SIGQUIT, &action, NULL);
/*
* See if the side-channel descriptor is valid...
*/
@@ -505,6 +472,9 @@ print_device(const char *uri, /* I - Device URI */
if (!print_fd)
{
struct sigaction action; /* POSIX signal action */
memset(&action, 0, sizeof(action));
sigemptyset(&action.sa_mask);
@@ -714,7 +684,7 @@ print_device(const char *uri, /* I - Device URI */
/*
* Ignore timeout errors, but retain the number of bytes written to
* avoid sending duplicate data...
* avoid sending duplicate data (<rdar://problem/6254911>)...
*/
if (iostatus == kIOUSBTransactionTimeout)
@@ -737,7 +707,7 @@ print_device(const char *uri, /* I - Device URI */
/*
* Retry a write after an aborted write since we probably just got
* SIGTERM...
* SIGTERM (<rdar://problem/6860126>)...
*/
else if (iostatus == kIOReturnAborted)
@@ -1107,8 +1077,6 @@ sidechannel_thread(void *reference)
static void iterate_printers(iterator_callback_t callBack,
void *userdata)
{
Iterating = 1;
mach_port_t masterPort = 0x0;
kern_return_t kr = IOMasterPort (bootstrap_port, &masterPort);
@@ -1132,7 +1100,7 @@ static void iterate_printers(iterator_callback_t callBack,
CFRelease(usb_klass);
CFRelease(usb_subklass);
IOServiceAddMatchingNotification(addNotification, kIOMatchedNotification, usbPrinterMatchDictionary, &device_added, &reference, &addIterator);
kr = IOServiceAddMatchingNotification(addNotification, kIOMatchedNotification, usbPrinterMatchDictionary, &device_added, &reference, &addIterator);
if (addIterator != 0x0)
{
device_added (&reference, addIterator);
@@ -1146,8 +1114,6 @@ static void iterate_printers(iterator_callback_t callBack,
}
mach_port_deallocate(mach_task_self(), masterPort);
}
Iterating = 0;
}
@@ -1171,7 +1137,7 @@ static void device_added(void *userdata,
/* One last call to the call back now that we are not longer have printers left to iterate...
*/
if (reference->keepRunning && reference->callback)
if (reference->keepRunning)
reference->keepRunning = reference->callback(reference->userdata, 0x0);
if (!reference->keepRunning)
@@ -1214,12 +1180,12 @@ static Boolean list_device_cb(void *refcon,
if (!make ||
!CFStringGetCString(make, makestr, sizeof(makestr),
kCFStringEncodingUTF8))
strlcpy(makestr, "Unknown", sizeof(makestr));
strcpy(makestr, "Unknown");
if (!model ||
!CFStringGetCString(model, &modelstr[1], sizeof(modelstr)-1,
kCFStringEncodingUTF8))
strlcpy(modelstr + 1, "Printer", sizeof(modelstr) - 1);
strcpy(modelstr + 1, "Printer");
optionsstr[0] = '\0';
if (serial != NULL)
@@ -1436,7 +1402,7 @@ static kern_return_t load_classdriver(CFStringRef driverPath,
_cups_fc_result_t result = _cupsFileCheck(bundlestr,
_CUPS_FILE_CHECK_DIRECTORY, 1,
Iterating ? NULL : _cupsFileCheckFilter, NULL);
_cupsFileCheckFilter, NULL);
if (result && driverPath)
return (load_classdriver(NULL, interface, printerDriver));
@@ -1603,12 +1569,11 @@ static kern_return_t registry_close(void)
static OSStatus copy_deviceid(classdriver_t **classdriver,
CFStringRef *deviceID)
{
CFStringRef devID = NULL;
CFStringRef deviceMake = NULL;
CFStringRef deviceModel = NULL;
CFStringRef deviceSerial = NULL;
*deviceID = NULL;
CFStringRef devID = NULL,
deviceMake = NULL,
deviceModel = NULL,
deviceSerial = NULL;
OSStatus err = (*classdriver)->GetDeviceID(classdriver, &devID, DEFAULT_TIMEOUT);
@@ -1654,10 +1619,12 @@ static OSStatus copy_deviceid(classdriver_t **classdriver,
if (deviceSerial == NULL && desc.iSerialNumber != 0)
{
err = (*classdriver)->GetString(classdriver, desc.iSerialNumber, kUSBLanguageEnglish, DEFAULT_TIMEOUT, &deviceSerial);
if (deviceSerial != NULL)
CFStringRef data = NULL;
err = (*classdriver)->GetString(classdriver, desc.iSerialNumber, kUSBLanguageEnglish, DEFAULT_TIMEOUT, &data);
if (data != NULL)
{
CFStringAppendFormat(newDevID, NULL, CFSTR("SERN:%@;"), deviceSerial);
CFStringAppendFormat(newDevID, NULL, CFSTR("SERN:%@;"), data);
CFRelease(data);
}
}
@@ -1674,21 +1641,6 @@ static OSStatus copy_deviceid(classdriver_t **classdriver,
{
*deviceID = devID;
}
if (*deviceID == NULL)
return err;
/* Remove special characters from the serial number */
CFRange range = (deviceSerial != NULL ? CFStringFind(deviceSerial, CFSTR("+"), 0) : CFRangeMake(0, 0));
if (range.length == 1) {
range = CFStringFind(*deviceID, deviceSerial, 0);
CFMutableStringRef deviceIDString = CFStringCreateMutableCopy(NULL, 0, *deviceID);
CFStringFindAndReplace(deviceIDString, CFSTR("+"), CFSTR(""), range, 0);
CFRelease(*deviceID);
*deviceID = deviceIDString;
}
release_deviceinfo(&deviceMake, &deviceModel, &deviceSerial);
return err;
@@ -1733,7 +1685,7 @@ static void copy_devicestring(io_service_t usbInterface,
kr = load_classdriver(NULL, interface, &klassDriver);
if (kr == kIOReturnSuccess && klassDriver != NULL)
copy_deviceid(klassDriver, deviceID);
kr = copy_deviceid(klassDriver, deviceID);
unload_classdriver(&klassDriver);
@@ -2142,32 +2094,6 @@ sigterm_handler(int sig) /* I - Signal */
}
/*
* 'sigquit_handler()' - SIGQUIT handler.
*/
static void sigquit_handler(int sig, siginfo_t *si, void *unused)
{
char *path;
char pathbuf[PROC_PIDPATHINFO_MAXSIZE];
static char msgbuf[256] = "";
(void)sig;
(void)unused;
if (proc_pidpath(si->si_pid, pathbuf, sizeof(pathbuf)) > 0 &&
(path = basename(pathbuf)) != NULL)
snprintf(msgbuf, sizeof(msgbuf), "SIGQUIT sent by %s(%d)", path, (int)si->si_pid);
else
snprintf(msgbuf, sizeof(msgbuf), "SIGQUIT sent by PID %d", (int)si->si_pid);
CRSetCrashLogMessage(msgbuf);
abort();
}
#ifdef PARSE_PS_ERRORS
/*
* 'next_line()' - Find the next line in a buffer.
@@ -2238,7 +2164,7 @@ static void parse_pserror(char *sockBuffer,
}
/* move everything over... */
strlcpy(gErrorBuffer, pLineEnd, sizeof(gErrorBuffer));
strcpy(gErrorBuffer, pLineEnd);
gErrorBufferPtr = gErrorBuffer;
pLineEnd = (char *)next_line((const char *)gErrorBuffer);
}
+3 -19
Ver Arquivo
@@ -142,12 +142,8 @@ static const struct quirk_printer_struct quirk_printers[] = {
{ 0x0409, 0xbef4, USBLP_QUIRK_BIDIR }, /* NEC Picty760 (HP OEM) */
{ 0x0409, 0xf0be, USBLP_QUIRK_BIDIR }, /* NEC Picty920 (HP OEM) */
{ 0x0409, 0xf1be, USBLP_QUIRK_BIDIR }, /* NEC Picty800 (HP OEM) */
{ 0x043d, 0x00f3, USBLP_QUIRK_NO_REATTACH }, /* Lexmark International,
Inc. (e250d), https://bugs.launchpad.net/bugs/1084164 */
{ 0x0482, 0x0010, USBLP_QUIRK_BIDIR }, /* Kyocera Mita FS 820,
by zut <kernel@zut.de> */
{ 0x04a9, 0x1095, USBLP_QUIRK_BIDIR }, /* Canon, Inc. PIXMA iP6000D
Printer, https://bugs.launchpad.net/bugs/1160638 */
{ 0x04a9, 0x10a2, USBLP_QUIRK_BIDIR }, /* Canon, Inc. PIXMA iP4200
Printer, http://www.cups.org/str.php?L4155 */
{ 0x04a9, 0x10b6, USBLP_QUIRK_BIDIR }, /* Canon, Inc. PIXMA iP4300
@@ -162,8 +158,6 @@ static const struct quirk_printer_struct quirk_printers[] = {
Printer, http://www.cups.org/str.php?L4155 */
{ 0x04a9, 0x173e, USBLP_QUIRK_BIDIR }, /* Canon, Inc. MP560
Printer, http://www.cups.org/str.php?L4155 */
{ 0x04a9, 0x26a3, USBLP_QUIRK_NO_REATTACH }, /* Canon, Inc. MF4150
Printer, https://bugs.launchpad.net/bugs/1160638 */
{ 0x04f9, 0x001a, USBLP_QUIRK_NO_REATTACH }, /* Brother Industries, Ltd
HL-1430 Laser Printer,
https://bugs.launchpad.net/bugs/1038695 */
@@ -171,33 +165,24 @@ static const struct quirk_printer_struct quirk_printers[] = {
USBLP_QUIRK_NO_REATTACH }, /* Brother Industries, Ltd
HL-1440 Laser Printer,
https://bugs.launchpad.net/bugs/1000253 */
{ 0x04f9, 0x000e, USBLP_QUIRK_BIDIR |
USBLP_QUIRK_NO_REATTACH }, /* Brother Industries, Ltd
HL-1450 Laser Printer,
https://bugs.launchpad.net/bugs/1000253 */
{ 0x06bc, 0x000b, USBLP_QUIRK_NO_REATTACH }, /* Oki Data Corp.
Okipage 14ex Printer,
https://bugs.launchpad.net/bugs/872483 */
{ 0x06bc, 0x01c7, USBLP_QUIRK_NO_REATTACH }, /* Oki Data Corp. B410d,
https://bugs.launchpad.net/bugs/872483 */
{ 0x04b8, 0x0001, USBLP_QUIRK_BIDIR |
USBLP_QUIRK_NO_REATTACH }, /* Seiko Epson Corp. Stylus Color 740 / Photo 750,
{ 0x04b8, 0x0001, USBLP_QUIRK_BIDIR }, /* Seiko Epson Corp. Stylus Color 740 / Photo 750,
http://bugs.debian.org/697970 */
{ 0x04b8, 0x0005, USBLP_QUIRK_NO_REATTACH }, /* Seiko Epson Corp. Stylus Color 670,
https://bugs.launchpad.net/bugs/872483 */
{ 0x04b8, 0x0202, USBLP_QUIRK_BAD_CLASS }, /* Seiko Epson Receipt
Printer M129C */
{ 0x067b, 0x2305, USBLP_QUIRK_BIDIR |
USBLP_QUIRK_NO_REATTACH |
USBLP_QUIRK_RESET },
/* Prolific Technology, Inc. PL2305 Parallel Port
(USB -> Parallel adapter), https://bugs.launchpad.net/bugs/987485 */
{ 0x0924, 0x3ce9, USBLP_QUIRK_NO_REATTACH }, /* Xerox Phaser 3124
https://bugzilla.redhat.com/show_bug.cgi?id=867392 */
{ 0x0924, 0x4293, USBLP_QUIRK_NO_REATTACH }, /* Xerox WorkCentre 3210
https://bugs.launchpad.net/bugs/1102470 */
{ 0x1a86, 0x7584, USBLP_QUIRK_NO_REATTACH }, /* QinHeng Electronics
CH340S (USB -> Parallel adapter), https://bugs.launchpad.net/bugs/1000253 */
/* Prolific Technology, Inc. PL2305 Parallel Port
(USB -> Parallel adapter), https://bugs.launchpad.net/bugs/987485 */
{ 0x04e8, 0x0000, USBLP_QUIRK_RESET }, /* All Samsung devices,
https://bugs.launchpad.net/bugs/1032456 */
{ 0x0a5f, 0x0000, USBLP_QUIRK_BIDIR }, /* All Zebra devices,
@@ -230,7 +215,6 @@ static const struct quirk_printer_struct quirk_printers[] = {
{ 0x04a9, 0x3256, USBLP_QUIRK_BLACKLIST }, /* Canon SELPHY CP810 */
{ 0x04a9, 0x30F5, USBLP_QUIRK_BLACKLIST }, /* Canon SELPHY CP500 */
{ 0x04a9, 0x31AF, USBLP_QUIRK_BLACKLIST }, /* Canon SELPHY ES3 */
{ 0x04a9, 0x31DD, USBLP_QUIRK_BLACKLIST }, /* Canon SELPHY CP780 */
/* MISSING PIDs: CP520, CP530, CP790 */
{ 0, 0 }
};
+1
Ver Arquivo
@@ -257,6 +257,7 @@ list_devices(void)
close(fd);
}
#elif defined(__sgi)
#elif defined(__sun) && defined(ECPPIOC_GETDEVID)
int i; /* Looping var */
int fd; /* File descriptor */
-1
Ver Arquivo
@@ -88,7 +88,6 @@ install-exec:
$(INSTALL_DIR) $(SYMROOT); \
for file in $(TARGETS); do \
cp $$file $(SYMROOT); \
dsymutil $(SYMROOT)/$$file; \
done \
fi
+1 -1
Ver Arquivo
@@ -527,7 +527,7 @@ show_jobs(const char *command, /* I - Command name */
*/
if (jobstate == IPP_JOB_PROCESSING)
strlcpy(rankstr, "active", sizeof(rankstr));
strcpy(rankstr, "active");
else
{
/*
-2
Ver Arquivo
@@ -120,7 +120,6 @@ install-exec:
$(INSTALL_DIR) $(SYMROOT); \
for file in $(CGIS); do \
cp $$file $(SYMROOT); \
dsymutil $(SYMROOT)/$$file; \
done \
fi
@@ -155,7 +154,6 @@ install-libs: $(INSTALLSTATIC)
if test "x$(SYMROOT)" != "x"; then \
$(INSTALL_DIR) $(SYMROOT); \
cp $(LIBCUPSCGI) $(SYMROOT); \
dsymutil $(SYMROOT)/$(LIBCUPSCGI); \
fi
installstatic:
+5 -5
Ver Arquivo
@@ -962,13 +962,13 @@ do_am_printer(http_t *http, /* I - HTTP connection */
else if (!_cups_strncasecmp(make, "laserjet", 8) ||
!_cups_strncasecmp(make, "deskjet", 7) ||
!_cups_strncasecmp(make, "designjet", 9))
strlcpy(make, "HP", sizeof(make));
strcpy(make, "HP");
else if (!_cups_strncasecmp(make, "phaser", 6))
strlcpy(make, "Xerox", sizeof(make));
strcpy(make, "Xerox");
else if (!_cups_strncasecmp(make, "stylus", 6))
strlcpy(make, "Epson", sizeof(make));
strcpy(make, "Epson");
else
strlcpy(make, "Generic", sizeof(make));
strcpy(make, "Generic");
if (!cgiGetVariable("CURRENT_MAKE"))
cgiSetVariable("CURRENT_MAKE", make);
@@ -4187,7 +4187,7 @@ get_option_value(
if (bufptr == buffer || (bufend - bufptr) < 2)
return (NULL);
memcpy(bufptr, "}", 2);
strcpy(bufptr, "}");
}
return (buffer);
+2 -2
Ver Arquivo
@@ -3,7 +3,7 @@
*
* Online help index routines for CUPS.
*
* Copyright 2007-2012 by Apple Inc.
* Copyright 2007-2011 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -910,7 +910,7 @@ help_load_file(
node = NULL;
offset = 0;
strlcpy(section, "Other", sizeof(section));
strcpy(section, "Other");
while (cupsFileGets(fp, line, sizeof(line)))
{
+2 -2
Ver Arquivo
@@ -129,7 +129,7 @@ cgiGetAttributes(ipp_t *request, /* I - IPP request */
*nameptr = '\0';
if (!strncmp(name, "printer_state_history", 21))
strlcpy(name, "printer_state_history", sizeof(name));
strcpy(name, "printer_state_history");
/*
* Possibly add it to the list of attributes...
@@ -554,7 +554,7 @@ cgiPrintCommand(http_t *http, /* I - Connection to server */
ipp_t *request, /* Get-Job-Attributes request */
*response; /* Get-Job-Attributes response */
ipp_attribute_t *attr; /* Current job attribute */
static const char * const job_attrs[] =/* Job attributes we want */
static const char const *job_attrs[] =/* Job attributes we want */
{
"job-state",
"job-printer-state-message"
+1 -1
Ver Arquivo
@@ -182,7 +182,7 @@ do_job_op(http_t *http, /* I - HTTP connection */
char url[1024]; /* Encoded URL */
strlcpy(url, "5;URL=", sizeof(url));
strcpy(url, "5;URL=");
cgiFormEncode(url + 6, getenv("HTTP_REFERER"), sizeof(url) - 6);
cgiSetVariable("refresh_page", url);
}
+7 -7
Ver Arquivo
@@ -3,7 +3,7 @@
*
* Search routines for CUPS.
*
* Copyright 2007-2012 by Apple Inc.
* Copyright 2007-2011 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -208,7 +208,7 @@ cgiCompileSearch(const char *query) /* I - Query string */
* Add the prefix string...
*/
memcpy(sptr, prefix, strlen(prefix) + 1);
strcpy(sptr, prefix);
sptr += strlen(sptr);
/*
@@ -249,16 +249,16 @@ cgiCompileSearch(const char *query) /* I - Query string */
return (NULL);
}
memcpy(sptr, ".*|.*", 6);
strcpy(sptr, ".*|.*");
sptr += 5;
memcpy(sptr, lword2, strlen(lword2) + 1);
strcpy(sptr, lword2);
sptr += strlen(sptr);
memcpy(sptr, ".*", 3);
strcpy(sptr, ".*");
sptr += 2;
memcpy(sptr, lword, strlen(lword) + 1);
strcpy(sptr, lword);
sptr += strlen(sptr);
free(lword);
@@ -287,7 +287,7 @@ cgiCompileSearch(const char *query) /* I - Query string */
free(lword);
if (sptr > s)
memcpy(sptr, ".*", 3);
strcpy(sptr, ".*");
else
{
/*
+1 -1
Ver Arquivo
@@ -3,7 +3,7 @@
#
# Configuration file makefile for CUPS.
#
# Copyright 2007-2012 by Apple Inc.
# Copyright 2007-2011 by Apple Inc.
# Copyright 1993-2006 by Easy Software Products.
#
# These coded instructions, statements, and computer programs are the
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
#
# "$Id$"
# "$Id: mime.types 9871 2011-08-06 06:34:46Z mike $"
#
# Base MIME types file for CUPS.
#
@@ -170,5 +170,5 @@ application/vnd.cups-raw (string(0,<1B>E) + !string(2,<1B>%0B)) \
application/octet-stream
#
# End of "$Id$".
# End of "$Id: mime.types 9871 2011-08-06 06:34:46Z mike $".
#
+7 -13
Ver Arquivo
@@ -1,9 +1,9 @@
dnl
dnl "$Id$"
dnl "$Id: cups-common.m4 10785 2013-01-08 16:29:26Z mike $"
dnl
dnl Common configuration stuff for CUPS.
dnl
dnl Copyright 2007-2013 by Apple Inc.
dnl Copyright 2007-2012 by Apple Inc.
dnl Copyright 1997-2007 by Easy Software Products, all rights reserved.
dnl
dnl These coded instructions, statements, and computer programs are the
@@ -20,7 +20,7 @@ dnl Set the name of the config header file...
AC_CONFIG_HEADER(config.h)
dnl Version number information...
CUPS_VERSION="1.7b1"
CUPS_VERSION="1.6.2"
CUPS_REVISION=""
#if test -z "$CUPS_REVISION" -a -d .svn; then
# CUPS_REVISION="-r`svnversion . | awk -F: '{print $NF}' | sed -e '1,$s/[[a-zA-Z]]*//g'`"
@@ -44,9 +44,9 @@ LDFLAGS="${LDFLAGS:=}"
dnl Checks for programs...
AC_PROG_AWK
AC_PROG_CC(clang cc gcc)
AC_PROG_CC
AC_PROG_CPP
AC_PROG_CXX(clang++ c++ g++)
AC_PROG_CXX
AC_PROG_RANLIB
AC_PATH_PROG(AR,ar)
AC_PATH_PROG(CHMOD,chmod)
@@ -264,7 +264,6 @@ AC_CHECK_HEADER(zlib.h,
AC_DEFINE(HAVE_LIBZ)
LIBZ="-lz"
LIBS="$LIBS -lz"
AC_CHECK_LIB(z, inflateCopy, AC_DEFINE(HAVE_INFLATECOPY))
if test "x$GZIP" != z; then
INSTALL_GZIP="-z"
fi))
@@ -306,7 +305,7 @@ else
DBUSDIR=""
fi
AC_ARG_ENABLE(dbus, [ --disable-dbus build without DBUS support])
AC_ARG_ENABLE(dbus, [ --enable-dbus build with DBUS support])
AC_ARG_WITH(dbusdir, [ --with-dbusdir set DBUS configuration directory ],
DBUSDIR="$withval")
@@ -338,7 +337,6 @@ AC_SUBST(DBUS_NOTIFIERLIBS)
dnl Extra platform-specific libraries...
CUPS_DEFAULT_PRINTOPERATOR_AUTH="@SYSTEM"
CUPS_DEFAULT_SYSTEM_AUTHKEY=""
CUPS_SYSTEM_AUTHKEY=""
INSTALLXPC=""
@@ -386,13 +384,10 @@ case $uname in
if test "x$default_adminkey" != xdefault; then
CUPS_SYSTEM_AUTHKEY="SystemGroupAuthKey $default_adminkey"
CUPS_DEFAULT_SYSTEM_AUTHKEY="$default_adminkey"
elif grep -q system.print.operator /etc/authorization; then
CUPS_SYSTEM_AUTHKEY="SystemGroupAuthKey system.print.admin"
CUPS_DEFAULT_SYSTEM_AUTHKEY="system.print.admin"
else
CUPS_SYSTEM_AUTHKEY="SystemGroupAuthKey system.preferences"
CUPS_DEFAULT_SYSTEM_AUTHKEY="system.preferences"
fi
if test "x$default_operkey" != xdefault; then
@@ -430,7 +425,6 @@ esac
AC_SUBST(CUPS_DEFAULT_PRINTOPERATOR_AUTH)
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_PRINTOPERATOR_AUTH, "$CUPS_DEFAULT_PRINTOPERATOR_AUTH")
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_SYSTEM_AUTHKEY, "$CUPS_DEFAULT_SYSTEM_AUTHKEY")
AC_SUBST(CUPS_SYSTEM_AUTHKEY)
AC_SUBST(INSTALLXPC)
@@ -459,5 +453,5 @@ esac
AC_SUBST(BUILDDIRS)
dnl
dnl End of "$Id$".
dnl End of "$Id: cups-common.m4 10785 2013-01-08 16:29:26Z mike $".
dnl
+35 -31
Ver Arquivo
@@ -1,9 +1,9 @@
dnl
dnl "$Id$"
dnl "$Id: cups-compiler.m4 10190 2012-01-20 16:22:58Z mike $"
dnl
dnl Compiler stuff for CUPS.
dnl
dnl Copyright 2007-2013 by Apple Inc.
dnl Copyright 2007-2012 by Apple Inc.
dnl Copyright 1997-2007 by Easy Software Products, all rights reserved.
dnl
dnl These coded instructions, statements, and computer programs are the
@@ -114,38 +114,29 @@ if test -n "$GCC"; then
OLDCFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -fstack-protector"
AC_TRY_LINK(,,
if test "x$LSB_BUILD" = xy; then
# Can't use stack-protector with LSB binaries...
OPTIM="$OPTIM -fno-stack-protector"
else
OPTIM="$OPTIM -fstack-protector"
fi
OPTIM="$OPTIM -fstack-protector"
AC_MSG_RESULT(yes),
AC_MSG_RESULT(no))
CFLAGS="$OLDCFLAGS"
if test "x$LSB_BUILD" != xy; then
# The -fPIE option is available with some versions of GCC and
# adds randomization of addresses, which avoids another class of
# exploits that depend on a fixed address for common functions.
#
# Not available to LSB binaries...
AC_MSG_CHECKING(if GCC supports -fPIE)
OLDCFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -fPIE"
AC_TRY_COMPILE(,,
[case "$CC" in
*clang)
PIEFLAGS="-fPIE -Wl,-pie"
;;
*)
PIEFLAGS="-fPIE -pie"
;;
esac
AC_MSG_RESULT(yes)],
AC_MSG_RESULT(no))
CFLAGS="$OLDCFLAGS"
fi
# The -fPIE option is available with some versions of GCC and adds
# randomization of addresses, which avoids another class of exploits
# that depend on a fixed address for common functions.
AC_MSG_CHECKING(if GCC supports -fPIE)
OLDCFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -fPIE"
AC_TRY_COMPILE(,,
[case "$CC" in
*clang)
PIEFLAGS="-fPIE -Wl,-pie"
;;
*)
PIEFLAGS="-fPIE -pie"
;;
esac
AC_MSG_RESULT(yes)],
AC_MSG_RESULT(no))
CFLAGS="$OLDCFLAGS"
if test "x$with_optim" = x; then
# Add useful warning options for tracking down problems...
@@ -211,6 +202,19 @@ else
OPTIM="+z $OPTIM"
fi
;;
IRIX)
if test -z "$OPTIM"; then
if test "x$with_optim" = x; then
OPTIM="-O2"
else
OPTIM="$with_optim $OPTIM"
fi
fi
if test "x$with_optim" = x; then
OPTIM="-fullwarn -woff 1183,1209,1349,1506,3201 $OPTIM"
fi
;;
OSF*)
# Tru64 UNIX aka Digital UNIX aka OSF/1
if test -z "$OPTIM"; then
@@ -291,5 +295,5 @@ case $uname in
esac
dnl
dnl End of "$Id$".
dnl End of "$Id: cups-compiler.m4 10190 2012-01-20 16:22:58Z mike $".
dnl
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
dnl
dnl "$Id$"
dnl "$Id: cups-defaults.m4 10710 2012-11-26 18:26:01Z mike $"
dnl
dnl Default cupsd configuration settings for CUPS.
dnl
@@ -400,5 +400,5 @@ AC_SUBST(CUPS_WEBIF)
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_WEBIF, $CUPS_DEFAULT_WEBIF)
dnl
dnl End of "$Id$".
dnl End of "$Id: cups-defaults.m4 10710 2012-11-26 18:26:01Z mike $".
dnl
+23 -14
Ver Arquivo
@@ -1,9 +1,9 @@
dnl
dnl "$Id$"
dnl "$Id: cups-directories.m4 10622 2012-10-01 01:55:23Z mike $"
dnl
dnl Directory stuff for CUPS.
dnl
dnl Copyright 2007-2013 by Apple Inc.
dnl Copyright 2007-2012 by Apple Inc.
dnl Copyright 1997-2007 by Easy Software Products, all rights reserved.
dnl
dnl These coded instructions, statements, and computer programs are the
@@ -102,6 +102,9 @@ fi
dnl Fix "libdir" variable...
if test "$libdir" = "\${exec_prefix}/lib"; then
case "$uname" in
IRIX*)
libdir="$exec_prefix/lib32"
;;
Linux*)
if test -d /usr/lib64 -a ! -d /usr/lib64/fakeroot; then
libdir="$exec_prefix/lib64"
@@ -166,6 +169,13 @@ if test x$rcdir = x; then
RCSTOP="620"
;;
IRIX*)
# IRIX
INITDIR="/etc"
RCSTART="60"
RCSTOP="25"
;;
Linux | GNU | GNU/k*BSD*)
# Linux/HURD seems to choose an init.d directory at random...
if test -d /sbin/init.d; then
@@ -412,20 +422,19 @@ AC_DEFINE_UNQUOTED(CUPS_SERVERROOT, "$sysconfdir/cups")
AC_SUBST(CUPS_SERVERROOT)
# Transient run-time state
AC_ARG_WITH(rundir, [ --with-rundir set transient run-time state directory],CUPS_STATEDIR="$withval",[
case "$uname" in
Darwin*)
# Darwin (OS X)
CUPS_STATEDIR="$CUPS_SERVERROOT"
;;
*)
# All others
CUPS_STATEDIR="$localstatedir/run/cups"
;;
esac])
case "$uname" in
Darwin*)
# Darwin (OS X)
CUPS_STATEDIR="$CUPS_SERVERROOT"
;;
*)
# All others
CUPS_STATEDIR="$localstatedir/run/cups"
;;
esac
AC_DEFINE_UNQUOTED(CUPS_STATEDIR, "$CUPS_STATEDIR")
AC_SUBST(CUPS_STATEDIR)
dnl
dnl End of "$Id$".
dnl End of "$Id: cups-directories.m4 10622 2012-10-01 01:55:23Z mike $".
dnl
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
dnl
dnl "$Id$"
dnl "$Id: cups-dnssd.m4 10471 2012-05-16 22:57:03Z mike $"
dnl
dnl DNS Service Discovery (aka Bonjour) stuff for CUPS.
dnl
@@ -72,5 +72,5 @@ AC_SUBST(DNSSDLIBS)
AC_SUBST(DNSSD_BACKEND)
dnl
dnl End of "$Id$".
dnl End of "$Id: cups-dnssd.m4 10471 2012-05-16 22:57:03Z mike $".
dnl
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
dnl
dnl "$Id$"
dnl "$Id: cups-gssapi.m4 10785 2013-01-08 16:29:26Z mike $"
dnl
dnl GSSAPI/Kerberos library detection for CUPS.
dnl
@@ -158,5 +158,5 @@ AC_SUBST(CUPS_DEFAULT_GSSSERVICENAME)
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_GSSSERVICENAME, "$CUPS_DEFAULT_GSSSERVICENAME")
dnl
dnl End of "$Id$".
dnl End of "$Id: cups-gssapi.m4 10785 2013-01-08 16:29:26Z mike $".
dnl
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
dnl
dnl "$Id$"
dnl "$Id: cups-largefile.m4 9771 2011-05-12 05:21:56Z mike $"
dnl
dnl Large file support stuff for CUPS.
dnl
@@ -48,5 +48,5 @@ fi
AC_CHECK_FUNC(strtoll, AC_DEFINE(HAVE_STRTOLL))
dnl
dnl End of "$Id$".
dnl End of "$Id: cups-largefile.m4 9771 2011-05-12 05:21:56Z mike $".
dnl
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
dnl
dnl "$Id$"
dnl "$Id: cups-launchd.m4 8983 2010-02-13 02:20:23Z mike $"
dnl
dnl launchd stuff for CUPS.
dnl
@@ -39,5 +39,5 @@ AC_SUBST(DEFAULT_LAUNCHD_CONF)
AC_SUBST(LAUNCHDLIBS)
dnl
dnl End of "$Id$".
dnl End of "$Id: cups-launchd.m4 8983 2010-02-13 02:20:23Z mike $".
dnl
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
dnl
dnl "$Id$"
dnl "$Id: cups-libtool.m4 9771 2011-05-12 05:21:56Z mike $"
dnl
dnl Libtool stuff for CUPS.
dnl
@@ -35,5 +35,5 @@ if test x$LIBTOOL != x; then
fi
dnl
dnl End of "$Id$".
dnl End of "$Id: cups-libtool.m4 9771 2011-05-12 05:21:56Z mike $".
dnl
+16 -2
Ver Arquivo
@@ -1,5 +1,5 @@
dnl
dnl "$Id$"
dnl "$Id: cups-manpages.m4 10424 2012-04-23 17:26:57Z mike $"
dnl
dnl Manpage stuff for CUPS.
dnl
@@ -28,6 +28,12 @@ if test "$mandir" = "\${prefix}/man" -a "$prefix" = "/"; then
AMANDIR="/usr/share/man"
PMANDIR="/usr/share/man"
;;
IRIX)
# SGI IRIX
mandir="/usr/share/catman/u_man"
AMANDIR="/usr/share/catman/a_man"
PMANDIR="/usr/share/catman/p_man"
;;
*)
# All others
mandir="/usr/man"
@@ -45,6 +51,14 @@ AC_SUBST(PMANDIR)
dnl Setup manpage extensions...
case "$uname" in
IRIX*)
# SGI IRIX
MAN1EXT=1
MAN5EXT=5
MAN7EXT=7
MAN8EXT=1m
MAN8DIR=1
;;
SunOS* | HP-UX*)
# Solaris and HP-UX
MAN1EXT=1
@@ -78,5 +92,5 @@ AC_SUBST(MAN8EXT)
AC_SUBST(MAN8DIR)
dnl
dnl End of "$Id$".
dnl End of "$Id: cups-manpages.m4 10424 2012-04-23 17:26:57Z mike $".
dnl
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
dnl
dnl "$Id$"
dnl "$Id: cups-network.m4 9771 2011-05-12 05:21:56Z mike $"
dnl
dnl Networking stuff for CUPS.
dnl
@@ -70,5 +70,5 @@ AC_CHECK_HEADERS(AppleTalk/at_proto.h,AC_DEFINE(HAVE_APPLETALK_AT_PROTO_H),,
[#include <netat/appletalk.h>])
dnl
dnl End of "$Id$".
dnl End of "$Id: cups-network.m4 9771 2011-05-12 05:21:56Z mike $".
dnl
+6 -10
Ver Arquivo
@@ -1,9 +1,9 @@
dnl
dnl "$Id$"
dnl "$Id: cups-opsys.m4 9771 2011-05-12 05:21:56Z mike $"
dnl
dnl Operating system stuff for CUPS.
dnl
dnl Copyright 2007-2012 by Apple Inc.
dnl Copyright 2007-2011 by Apple Inc.
dnl Copyright 1997-2006 by Easy Software Products, all rights reserved.
dnl
dnl These coded instructions, statements, and computer programs are the
@@ -19,21 +19,17 @@ uversion=`uname -r | sed -e '1,$s/^[[^0-9]]*\([[0-9]]*\)\.\([[0-9]]*\).*/\1\2/'`
uarch=`uname -m`
case "$uname" in
Darwin*)
uname="Darwin"
if test $uversion -lt 120; then
AC_MSG_ERROR([Sorry, this version of CUPS requires OS X 10.8 or higher.])
fi
;;
GNU* | GNU/*)
uname="GNU"
;;
IRIX*)
uname="IRIX"
;;
Linux*)
uname="Linux"
;;
esac
dnl
dnl "$Id$"
dnl "$Id: cups-opsys.m4 9771 2011-05-12 05:21:56Z mike $"
dnl
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
dnl
dnl "$Id$"
dnl "$Id: cups-pam.m4 10424 2012-04-23 17:26:57Z mike $"
dnl
dnl PAM stuff for CUPS.
dnl
@@ -98,5 +98,5 @@ AC_SUBST(PAMMOD)
AC_SUBST(PAMMODAUTH)
dnl
dnl End of "$Id$".
dnl End of "$Id: cups-pam.m4 10424 2012-04-23 17:26:57Z mike $".
dnl
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
dnl
dnl "$Id$"
dnl "$Id: cups-poll.m4 9771 2011-05-12 05:21:56Z mike $"
dnl
dnl Select/poll stuff for CUPS.
dnl
@@ -18,5 +18,5 @@ AC_CHECK_FUNC(epoll_create, AC_DEFINE(HAVE_EPOLL))
AC_CHECK_FUNC(kqueue, AC_DEFINE(HAVE_KQUEUE))
dnl
dnl End of "$Id$".
dnl End of "$Id: cups-poll.m4 9771 2011-05-12 05:21:56Z mike $".
dnl
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
dnl
dnl "$Id$"
dnl "$Id: cups-scripting.m4 9927 2011-08-27 09:28:30Z mike $"
dnl
dnl Scripting configuration stuff for CUPS.
dnl
@@ -85,5 +85,5 @@ if test "x$CUPS_PYTHON" != x; then
fi
dnl
dnl End of "$Id$".
dnl End of "$Id: cups-scripting.m4 9927 2011-08-27 09:28:30Z mike $".
dnl
+4 -4
Ver Arquivo
@@ -1,5 +1,5 @@
dnl
dnl "$Id$"
dnl "$Id: cups-sharedlibs.m4 10190 2012-01-20 16:22:58Z mike $"
dnl
dnl Shared library support for CUPS.
dnl
@@ -215,8 +215,8 @@ if test "$DSO" != ":"; then
EXPORT_LDFLAGS="-Wl,-R$libdir"
fi
;;
Linux | GNU)
# Linux, and HURD...
IRIX | Linux | GNU)
# IRIX, Linux, and HURD...
if test $exec_prefix != /usr; then
DSOFLAGS="-Wl,-rpath,$libdir $DSOFLAGS"
LDFLAGS="$LDFLAGS -Wl,-rpath,$libdir"
@@ -234,5 +234,5 @@ AC_SUBST(IMGLIBS)
AC_SUBST(EXPORT_LDFLAGS)
dnl
dnl End of "$Id$".
dnl End of "$Id: cups-sharedlibs.m4 10190 2012-01-20 16:22:58Z mike $".
dnl
+30 -3
Ver Arquivo
@@ -1,5 +1,5 @@
dnl
dnl "$Id$"
dnl "$Id: cups-ssl.m4 10710 2012-11-26 18:26:01Z mike $"
dnl
dnl OpenSSL/GNUTLS stuff for CUPS.
dnl
@@ -59,7 +59,34 @@ if test x$enable_ssl != xno; then
AC_CHECK_HEADER(Security/SecIdentitySearchPriv.h,
AC_DEFINE(HAVE_SECIDENTITYSEARCHPRIV_H))
AC_DEFINE(HAVE_CSSMERRORSTRING)])
dnl Check for SecCertificateCopyData..
AC_MSG_CHECKING(for SecCertificateCopyData)
if test $uversion -ge 100; then
AC_DEFINE(HAVE_SECCERTIFICATECOPYDATA)
AC_MSG_RESULT(yes)
else
AC_MSG_RESULT(no)
fi
dnl Check for SecIdentitySearchCreateWithPolicy...
AC_MSG_CHECKING(for SecIdentitySearchCreateWithPolicy)
if test $uversion -ge 80; then
AC_DEFINE(HAVE_SECIDENTITYSEARCHCREATEWITHPOLICY)
AC_MSG_RESULT(yes)
else
AC_MSG_RESULT(no)
fi
dnl Check for SecPolicyCreateSSL...
AC_MSG_CHECKING(for SecPolicyCreateSSL)
if test $uversion -ge 110; then
AC_DEFINE(HAVE_SECPOLICYCREATESSL)
AC_MSG_RESULT(yes)
else
AC_MSG_RESULT(no)
fi])
AC_DEFINE(HAVE_CSSMERRORSTRING)
fi
fi
@@ -157,5 +184,5 @@ EXPORT_SSLLIBS="$SSLLIBS"
AC_SUBST(EXPORT_SSLLIBS)
dnl
dnl End of "$Id$".
dnl End of "$Id: cups-ssl.m4 10710 2012-11-26 18:26:01Z mike $".
dnl
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
dnl
dnl "$Id$"
dnl "$Id: cups-threads.m4 9771 2011-05-12 05:21:56Z mike $"
dnl
dnl Threading stuff for CUPS.
dnl
@@ -50,5 +50,5 @@ fi
AC_SUBST(PTHREAD_FLAGS)
dnl
dnl End of "$Id$".
dnl End of "$Id: cups-threads.m4 9771 2011-05-12 05:21:56Z mike $".
dnl
+40 -4
Ver Arquivo
@@ -3,7 +3,7 @@
*
* Configuration file for CUPS.
*
* Copyright 2007-2013 by Apple Inc.
* Copyright 2007-2012 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -32,7 +32,6 @@
#define CUPS_DEFAULT_GROUP "sys"
#define CUPS_DEFAULT_SYSTEM_GROUPS "sys root system"
#define CUPS_DEFAULT_PRINTOPERATOR_AUTH "@SYSTEM"
#define CUPS_DEFAULT_SYSTEM_AUTHKEY "system.print.admin"
/*
@@ -132,11 +131,13 @@
/*
* Do we have ZLIB?
* Do we have various image libraries?
*/
#undef HAVE_LIBPNG
#undef HAVE_LIBZ
#undef HAVE_INFLATECOPY
#undef HAVE_LIBJPEG
#undef HAVE_LIBTIFF
/*
@@ -166,6 +167,13 @@
#undef HAVE_CRYPT_H
/*
* Do we have <scsi/sg.h>?
*/
#undef HAVE_SCSI_SG_H
/*
* Use <stdint.h>?
*/
@@ -316,6 +324,34 @@
#undef HAVE_SECURETRANSPORTPRIV_H
/*
* Do we have the SecCertificateCopyData function?
*/
#undef HAVE_SECCERTIFICATECOPYDATA
/*
* Do we have the SecIdentitySearchCreateWithPolicy function?
*/
#undef HAVE_SECIDENTITYSEARCHCREATEWITHPOLICY
/*
* Do we have the SecPolicyCreateSSL function?
*/
#undef HAVE_SECPOLICYCREATESSL
/*
* Do we have the SecPolicyCreateSSL function?
*/
#undef HAVE_SECPOLICYCREATESSL
/*
* Do we have the cssmErrorString function?
*/
+1 -1
Ver Arquivo
@@ -3,7 +3,7 @@ dnl "$Id$"
dnl
dnl Configuration script for CUPS.
dnl
dnl Copyright 2007-2012 by Apple Inc.
dnl Copyright 2007-2013 by Apple Inc.
dnl Copyright 1997-2007 by Easy Software Products, all rights reserved.
dnl
dnl These coded instructions, statements, and computer programs are the
+3 -21
Ver Arquivo
@@ -3,7 +3,7 @@
#
# API library Makefile for CUPS.
#
# Copyright 2007-2013 by Apple Inc.
# Copyright 2007-2012 by Apple Inc.
# Copyright 1997-2006 by Easy Software Products, all rights reserved.
#
# These coded instructions, statements, and computer programs are the
@@ -17,14 +17,6 @@
include ../Makedefs
#
# Options to build libcups without the use of deprecated APIs...
#
OPTIONS = -D_CUPS_NO_DEPRECATED=1 -D_PPD_DEPRECATED=""
#
# Object files...
#
@@ -113,7 +105,6 @@ HEADERS = \
ipp.h \
language.h \
ppd.h \
pwg.h \
raster.h \
sidechannel.h \
transcode.h \
@@ -201,14 +192,6 @@ depend:
$(CC) -MM $(ALL_CFLAGS) $(OBJS:.o=.c) >Dependencies
#
# Run oclint to check code coverage...
#
oclint:
oclint -o=oclint.html -html $(LIBOBJS:.o=.c) -- $(ALL_CFLAGS)
#
# Install all targets...
#
@@ -268,7 +251,6 @@ install-libs: $(INSTALLSTATIC)
if test "x$(SYMROOT)" != "x"; then \
$(INSTALL_DIR) $(SYMROOT); \
cp $(LIBCUPS) $(SYMROOT); \
dsymutil $(SYMROOT)/$(LIBCUPS); \
fi
installstatic:
@@ -536,8 +518,8 @@ apihelp:
--css ../doc/cups-printable.css \
--header api-cups.header --intro api-cups.shtml \
api-cups.xml \
cups.h pwg.h adminutil.c dest*.c language.c notify.c \
options.c pwg-media.c tempfile.c usersys.c \
cups.h adminutil.c dest*.c language.c notify.c \
options.c tempfile.c usersys.c \
util.c >../doc/help/api-cups.html
mxmldoc --tokens help/api-cups.html api-cups.xml >../doc/help/api-cups.tokens
$(RM) api-cups.xml
+43 -43
Ver Arquivo
@@ -3,7 +3,7 @@
*
* Administration utility API definitions for CUPS.
*
* Copyright 2007-2013 by Apple Inc.
* Copyright 2007-2012 by Apple Inc.
* Copyright 2001-2007 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -129,7 +129,7 @@ cupsAdminCreateWindowsPPD(
* Get the supported banner pages, etc. for the printer...
*/
request = ippNewRequest(IPP_OP_GET_PRINTER_ATTRIBUTES);
request = ippNewRequest(IPP_GET_PRINTER_ATTRIBUTES);
httpAssembleURIf(HTTP_URI_CODING_ALL, uri, sizeof(uri), "ipp", NULL,
"localhost", 0, "/printers/%s", dest);
@@ -145,7 +145,7 @@ cupsAdminCreateWindowsPPD(
*/
response = cupsDoRequest(http, request, "/");
if (!response || cupsLastError() > IPP_STATUS_OK_CONFLICTING)
if (!response || cupsLastError() > IPP_OK_CONFLICT)
{
unlink(src);
return (NULL);
@@ -253,7 +253,7 @@ cupsAdminCreateWindowsPPD(
snprintf(line, sizeof(line),
_cupsLangString(language, _("Missing value on line %d.")),
linenum);
_cupsSetError(IPP_STATUS_ERROR_DOCUMENT_FORMAT_ERROR, line, 0);
_cupsSetError(IPP_DOCUMENT_FORMAT_ERROR, line, 0);
cupsFileClose(srcfp);
cupsFileClose(dstfp);
@@ -272,7 +272,7 @@ cupsAdminCreateWindowsPPD(
_cupsLangString(language,
_("Missing double quote on line %d.")),
linenum);
_cupsSetError(IPP_STATUS_ERROR_DOCUMENT_FORMAT_ERROR, line, 0);
_cupsSetError(IPP_DOCUMENT_FORMAT_ERROR, line, 0);
cupsFileClose(srcfp);
cupsFileClose(dstfp);
@@ -291,7 +291,7 @@ cupsAdminCreateWindowsPPD(
_cupsLangString(language,
_("Bad option + choice on line %d.")),
linenum);
_cupsSetError(IPP_STATUS_ERROR_DOCUMENT_FORMAT_ERROR, line, 0);
_cupsSetError(IPP_DOCUMENT_FORMAT_ERROR, line, 0);
cupsFileClose(srcfp);
cupsFileClose(dstfp);
@@ -334,7 +334,7 @@ cupsAdminCreateWindowsPPD(
if (linenum == 0)
{
_cupsSetError(IPP_STATUS_ERROR_DOCUMENT_FORMAT_ERROR, _("Empty PPD file."), 1);
_cupsSetError(IPP_DOCUMENT_FORMAT_ERROR, _("Empty PPD file."), 1);
cupsFileClose(dstfp);
unlink(buffer);
@@ -424,7 +424,7 @@ cupsAdminExportSamba(
if (!dest || !ppd || !samba_server || !samba_user || !samba_password)
{
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(EINVAL), 0);
_cupsSetError(IPP_INTERNAL_ERROR, strerror(EINVAL), 0);
return (0);
}
@@ -434,7 +434,7 @@ cupsAdminExportSamba(
if ((fp = cupsTempFile2(authfile, sizeof(authfile))) == NULL)
{
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, NULL, 0);
_cupsSetError(IPP_INTERNAL_ERROR, NULL, 0);
return (0);
}
@@ -487,7 +487,7 @@ cupsAdminExportSamba(
_("Unable to copy Windows 2000 printer "
"driver files (%d).")), status);
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, message, 0);
_cupsSetError(IPP_INTERNAL_ERROR, message, 0);
if (logfile)
_cupsLangPuts(logfile, message);
@@ -522,7 +522,7 @@ cupsAdminExportSamba(
_("Unable to copy CUPS printer driver "
"files (%d).")), status);
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, message, 0);
_cupsSetError(IPP_INTERNAL_ERROR, message, 0);
if (logfile)
_cupsLangPuts(logfile, message);
@@ -565,7 +565,7 @@ cupsAdminExportSamba(
_("Unable to install Windows 2000 printer "
"driver files (%d).")), status);
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, message, 0);
_cupsSetError(IPP_INTERNAL_ERROR, message, 0);
if (logfile)
_cupsLangPuts(logfile, message);
@@ -610,7 +610,7 @@ cupsAdminExportSamba(
_("Unable to copy Windows 9x printer "
"driver files (%d).")), status);
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, message, 0);
_cupsSetError(IPP_INTERNAL_ERROR, message, 0);
if (logfile)
_cupsLangPuts(logfile, message);
@@ -639,7 +639,7 @@ cupsAdminExportSamba(
_("Unable to install Windows 9x printer "
"driver files (%d).")), status);
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, message, 0);
_cupsSetError(IPP_INTERNAL_ERROR, message, 0);
if (logfile)
_cupsLangPuts(logfile, message);
@@ -691,7 +691,7 @@ cupsAdminExportSamba(
_("Unable to copy 64-bit Windows printer "
"driver files (%d).")), status);
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, message, 0);
_cupsSetError(IPP_INTERNAL_ERROR, message, 0);
if (logfile)
_cupsLangPuts(logfile, message);
@@ -726,7 +726,7 @@ cupsAdminExportSamba(
_("Unable to copy 64-bit CUPS printer driver "
"files (%d).")), status);
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, message, 0);
_cupsSetError(IPP_INTERNAL_ERROR, message, 0);
if (logfile)
_cupsLangPuts(logfile, message);
@@ -769,7 +769,7 @@ cupsAdminExportSamba(
_("Unable to install Windows 2000 printer "
"driver files (%d).")), status);
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, message, 0);
_cupsSetError(IPP_INTERNAL_ERROR, message, 0);
if (logfile)
_cupsLangPuts(logfile, message);
@@ -794,13 +794,13 @@ cupsAdminExportSamba(
"are installed.")),
sizeof(message));
_cupsSetError(IPP_STATUS_ERROR_NOT_FOUND, message, 0);
_cupsSetError(IPP_NOT_FOUND, message, 0);
_cupsLangPuts(logfile, message);
}
if (have_drivers == 0)
{
_cupsSetError(IPP_STATUS_ERROR_NOT_FOUND, message, 0);
_cupsSetError(IPP_NOT_FOUND, message, 0);
unlink(authfile);
@@ -821,7 +821,7 @@ cupsAdminExportSamba(
_("Unable to set Windows printer driver (%d).")),
status);
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, message, 0);
_cupsSetError(IPP_INTERNAL_ERROR, message, 0);
if (logfile)
_cupsLangPuts(logfile, message);
@@ -882,9 +882,9 @@ cupsAdminGetServerSettings(
*/
if (strcmp(cg->http->hostname, cg->server) ||
cg->ipp_port != httpAddrPort(cg->http->hostaddr) ||
cg->ipp_port != _httpAddrPort(cg->http->hostaddr) ||
(cg->http->encryption != cg->encryption &&
cg->http->encryption == HTTP_ENCRYPTION_NEVER))
cg->http->encryption == HTTP_ENCRYPT_NEVER))
{
/*
* Need to close the current connection because something has changed...
@@ -901,13 +901,13 @@ cupsAdminGetServerSettings(
if (!cg->http)
{
if ((cg->http = httpConnect2(cupsServer(), ippPort(), NULL, AF_UNSPEC,
cupsEncryption(), 1, 0, NULL)) == NULL)
if ((cg->http = _httpCreate(cupsServer(), ippPort(), NULL,
cupsEncryption(), AF_UNSPEC)) == NULL)
{
if (errno)
_cupsSetError(IPP_STATUS_ERROR_SERVICE_UNAVAILABLE, NULL, 0);
_cupsSetError(IPP_SERVICE_UNAVAILABLE, NULL, 0);
else
_cupsSetError(IPP_STATUS_ERROR_SERVICE_UNAVAILABLE,
_cupsSetError(IPP_SERVICE_UNAVAILABLE,
_("Unable to connect to host."), 1);
if (num_settings)
@@ -925,7 +925,7 @@ cupsAdminGetServerSettings(
if (!http || !num_settings || !settings)
{
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(EINVAL), 0);
_cupsSetError(IPP_INTERNAL_ERROR, strerror(EINVAL), 0);
if (num_settings)
*num_settings = 0;
@@ -944,7 +944,7 @@ cupsAdminGetServerSettings(
*/
if ((status = get_cupsd_conf(http, cg, cg->cupsd_update, cupsdconf,
sizeof(cupsdconf), &remote)) == HTTP_STATUS_OK)
sizeof(cupsdconf), &remote)) == HTTP_OK)
{
if ((cupsd = cupsFileOpen(cupsdconf, "r")) == NULL)
{
@@ -954,7 +954,7 @@ cupsAdminGetServerSettings(
snprintf(message, sizeof(message),
_cupsLangString(cupsLangDefault(), _("Open of %s failed: %s")),
cupsdconf, strerror(errno));
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, message, 0);
_cupsSetError(IPP_INTERNAL_ERROR, message, 0);
}
}
else
@@ -1136,7 +1136,7 @@ cupsAdminGetServerSettings(
cg->cupsd_num_settings,
&(cg->cupsd_settings));
}
else if (status != HTTP_STATUS_NOT_MODIFIED)
else if (status != HTTP_NOT_MODIFIED)
invalidate_cupsd_cache(cg);
/*
@@ -1220,7 +1220,7 @@ cupsAdminSetServerSettings(
if (!http || !num_settings || !settings)
{
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(EINVAL), 0);
_cupsSetError(IPP_INTERNAL_ERROR, strerror(EINVAL), 0);
return (0);
}
@@ -1230,11 +1230,11 @@ cupsAdminSetServerSettings(
*/
if (get_cupsd_conf(http, cg, 0, cupsdconf, sizeof(cupsdconf),
&remote) == HTTP_STATUS_OK)
&remote) == HTTP_OK)
{
if ((cupsd = cupsFileOpen(cupsdconf, "r")) == NULL)
{
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, NULL, 0);
_cupsSetError(IPP_INTERNAL_ERROR, NULL, 0);
return (0);
}
}
@@ -1398,7 +1398,7 @@ cupsAdminSetServerSettings(
if (remote)
unlink(cupsdconf);
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, NULL, 0);
_cupsSetError(IPP_INTERNAL_ERROR, NULL, 0);
return (0);
}
@@ -1954,7 +1954,7 @@ cupsAdminSetServerSettings(
status = cupsPutFile(http, "/admin/conf/cupsd.conf", tempfile);
if (status == HTTP_STATUS_CREATED)
if (status == HTTP_CREATED)
{
/*
* Updated OK, add the basic settings...
@@ -2024,7 +2024,7 @@ cupsAdminSetServerSettings(
unlink(tempfile);
return (status == HTTP_STATUS_CREATED);
return (status == HTTP_CREATED);
}
@@ -2158,16 +2158,16 @@ get_cupsd_conf(
snprintf(message, sizeof(message),
_cupsLangString(cupsLangDefault(), _("stat of %s failed: %s")),
name, strerror(errno));
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, message, 0);
_cupsSetError(IPP_INTERNAL_ERROR, message, 0);
*name = '\0';
return (HTTP_STATUS_SERVER_ERROR);
return (HTTP_SERVER_ERROR);
}
else if (last_update && info.st_mtime <= last_update)
status = HTTP_STATUS_NOT_MODIFIED;
status = HTTP_NOT_MODIFIED;
else
status = HTTP_STATUS_OK;
status = HTTP_OK;
}
else
#endif /* !WIN32 */
@@ -2180,11 +2180,11 @@ get_cupsd_conf(
{
*name = '\0';
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, NULL, 0);
_cupsSetError(IPP_INTERNAL_ERROR, NULL, 0);
invalidate_cupsd_cache(cg);
return (HTTP_STATUS_SERVER_ERROR);
return (HTTP_SERVER_ERROR);
}
*remote = 1;
@@ -2199,7 +2199,7 @@ get_cupsd_conf(
close(fd);
if (status != HTTP_STATUS_OK)
if (status != HTTP_OK)
{
unlink(name);
*name = '\0';
+1 -1
Ver Arquivo
@@ -1,5 +1,5 @@
<!--
"$Id$"
"$Id: api-array.header 9771 2011-05-12 05:21:56Z mike $"
Array API header for CUPS.
+1 -1
Ver Arquivo
@@ -1,5 +1,5 @@
<!--
"$Id$"
"$Id: api-array.shtml 9727 2011-04-28 21:20:12Z mike $"
Array API introduction for CUPS.
+1 -1
Ver Arquivo
@@ -1,5 +1,5 @@
<!--
"$Id$"
"$Id: api-cups.header 9771 2011-05-12 05:21:56Z mike $"
CUPS API header for CUPS.
+1 -1
Ver Arquivo
@@ -1,5 +1,5 @@
<!--
"$Id$"
"$Id: api-cups.shtml 9727 2011-04-28 21:20:12Z mike $"
API introduction for CUPS.
+1 -1
Ver Arquivo
@@ -1,5 +1,5 @@
<!--
"$Id$"
"$Id: api-filedir.header 9771 2011-05-12 05:21:56Z mike $"
File and Directory API header for CUPS.
+1 -1
Ver Arquivo
@@ -1,5 +1,5 @@
<!--
"$Id$"
"$Id: api-filedir.shtml 9727 2011-04-28 21:20:12Z mike $"
File and directory API introduction for CUPS.
+1 -1
Ver Arquivo
@@ -1,5 +1,5 @@
<!--
"$Id$"
"$Id: api-filter.header 9771 2011-05-12 05:21:56Z mike $"
Filter and backend programming header for CUPS.
+1 -1
Ver Arquivo
@@ -1,5 +1,5 @@
<!--
"$Id$"
"$Id: api-filter.shtml 10424 2012-04-23 17:26:57Z mike $"
Filter and backend programming introduction for CUPS.
+1 -1
Ver Arquivo
@@ -1,5 +1,5 @@
<!--
"$Id$"
"$Id: api-httpipp.header 9771 2011-05-12 05:21:56Z mike $"
HTTP and IPP API header for CUPS.
+1 -1
Ver Arquivo
@@ -1,5 +1,5 @@
<!--
"$Id$"
"$Id: api-httpipp.shtml 10388 2012-03-26 21:15:41Z mike $"
HTTP and IPP API introduction for CUPS.
+1 -1
Ver Arquivo
@@ -1,5 +1,5 @@
<!--
"$Id$"
"$Id: api-ppd.header 10424 2012-04-23 17:26:57Z mike $"
PPD API header for CUPS.
+1 -1
Ver Arquivo
@@ -1,5 +1,5 @@
<!--
"$Id$"
"$Id: api-ppd.shtml 10424 2012-04-23 17:26:57Z mike $"
PPD API introduction for CUPS.
+4 -5
Ver Arquivo
@@ -3,7 +3,7 @@
*
* Private array definitions for CUPS.
*
* Copyright 2011-2012 by Apple Inc.
* Copyright 2011 by Apple Inc.
*
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
@@ -37,10 +37,9 @@ extern "C" {
* Functions...
*/
extern int _cupsArrayAddStrings(cups_array_t *a, const char *s,
char delim) _CUPS_API_1_5;
extern cups_array_t *_cupsArrayNewStrings(const char *s, char delim)
_CUPS_API_1_5;
extern int _cupsArrayAddStrings(cups_array_t *a, const char *s)
_CUPS_API_1_5;
extern cups_array_t *_cupsArrayNewStrings(const char *s) _CUPS_API_1_5;
# ifdef __cplusplus
}
+8 -48
Ver Arquivo
@@ -138,7 +138,8 @@ cupsArrayAdd(cups_array_t *a, /* I - Array */
/*
* '_cupsArrayAddStrings()' - Add zero or more delimited strings to an array.
* '_cupsArrayAddStrings()' - Add zero or more comma-delimited strings to an
* array.
*
* Note: The array MUST be created using the @link _cupsArrayNewStrings@
* function. Duplicate strings are NOT added. If the string pointer "s" is NULL
@@ -147,8 +148,7 @@ cupsArrayAdd(cups_array_t *a, /* I - Array */
int /* O - 1 on success, 0 on failure */
_cupsArrayAddStrings(cups_array_t *a, /* I - Array */
const char *s, /* I - Delimited strings or NULL */
char delim)/* I - Delimiter character */
const char *s) /* I - Comma-delimited strings or NULL */
{
char *buffer, /* Copy of string */
*start, /* Start of string */
@@ -156,47 +156,20 @@ _cupsArrayAddStrings(cups_array_t *a, /* I - Array */
int status = 1; /* Status of add */
DEBUG_printf(("_cupsArrayAddStrings(a=%p, s=\"%s\", delim='%c')", a, s,
delim));
if (!a || !s || !*s)
{
DEBUG_puts("1_cupsArrayAddStrings: Returning 0");
return (0);
}
if (delim == ' ')
if (!strchr(s, ','))
{
/*
* Skip leading whitespace...
* String doesn't contain a comma, so add it as a single value...
*/
DEBUG_puts("1_cupsArrayAddStrings: Skipping leading whitespace.");
while (*s && isspace(*s & 255))
s ++;
DEBUG_printf(("1_cupsArrayAddStrings: Remaining string \"%s\".", s));
}
if (!strchr(s, delim) &&
(delim != ' ' || (!strchr(s, '\t') && !strchr(s, '\n'))))
{
/*
* String doesn't contain a delimiter, so add it as a single value...
*/
DEBUG_puts("1_cupsArrayAddStrings: No delimiter seen, adding a single "
"value.");
if (!cupsArrayFind(a, (void *)s))
status = cupsArrayAdd(a, (void *)s);
}
else if ((buffer = strdup(s)) == NULL)
{
DEBUG_puts("1_cupsArrayAddStrings: Unable to duplicate string.");
status = 0;
}
else
{
for (start = end = buffer; *end; start = end)
@@ -206,21 +179,11 @@ _cupsArrayAddStrings(cups_array_t *a, /* I - Array */
* it...
*/
if (delim == ' ')
{
while (*end && !isspace(*end & 255))
end ++;
while (*end && isspace(*end & 255))
*end++ = '\0';
}
else if ((end = strchr(start, delim)) != NULL)
if ((end = strchr(start, ',')) != NULL)
*end++ = '\0';
else
end = start + strlen(start);
DEBUG_printf(("1_cupsArrayAddStrings: Adding \"%s\", end=\"%s\"", start,
end));
if (!cupsArrayFind(a, start))
status &= cupsArrayAdd(a, start);
}
@@ -228,8 +191,6 @@ _cupsArrayAddStrings(cups_array_t *a, /* I - Array */
free(buffer);
}
DEBUG_printf(("1_cupsArrayAddStrings: Returning %d.", status));
return (status);
}
@@ -821,8 +782,7 @@ cupsArrayNew3(cups_array_func_t f, /* I - Comparison function or @code NULL@ fo
*/
cups_array_t * /* O - Array */
_cupsArrayNewStrings(const char *s, /* I - Delimited strings or NULL */
char delim) /* I - Delimiter character */
_cupsArrayNewStrings(const char *s) /* I - Comma-delimited strings or NULL */
{
cups_array_t *a; /* Array */
@@ -830,7 +790,7 @@ _cupsArrayNewStrings(const char *s, /* I - Delimited strings or NULL */
if ((a = cupsArrayNew3((cups_array_func_t)strcmp, NULL, NULL, 0,
(cups_acopy_func_t)_cupsStrAlloc,
(cups_afree_func_t)_cupsStrFree)) != NULL)
_cupsArrayAddStrings(a, s, delim);
_cupsArrayAddStrings(a, s);
return (a);
}
+10 -17
Ver Arquivo
@@ -112,7 +112,7 @@ static int cups_local_auth(http_t *http);
/*
* 'cupsDoAuthentication()' - Authenticate a request.
*
* This function should be called in response to a @code HTTP_STATUS_UNAUTHORIZED@
* This function should be called in response to a @code HTTP_UNAUTHORIZED@
* status, prior to resubmitting your request.
*
* @since CUPS 1.1.20/OS X 10.4@
@@ -164,14 +164,14 @@ cupsDoAuthentication(
DEBUG_printf(("2cupsDoAuthentication: authstring=\"%s\"",
http->authstring));
if (http->status == HTTP_STATUS_UNAUTHORIZED)
if (http->status == HTTP_UNAUTHORIZED)
http->digest_tries ++;
return (0);
}
else if (localauth == -1)
{
http->status = HTTP_STATUS_CUPS_AUTHORIZATION_CANCELED;
http->status = HTTP_AUTHORIZATION_CANCELED;
return (-1); /* Error or canceled */
}
}
@@ -190,18 +190,11 @@ cupsDoAuthentication(
* Nope - get a new password from the user...
*/
char default_username[HTTP_MAX_VALUE];
/* Default username */
cg = _cupsGlobals();
if (!cg->lang_default)
cg->lang_default = cupsLangDefault();
if (httpGetSubField(http, HTTP_FIELD_WWW_AUTHENTICATE, "username",
default_username))
cupsSetUser(default_username);
snprintf(prompt, sizeof(prompt),
_cupsLangString(cg->lang_default, _("Password for %s on %s? ")),
cupsUser(),
@@ -212,22 +205,22 @@ cupsDoAuthentication(
if ((password = cupsGetPassword2(prompt, http, method, resource)) == NULL)
{
http->status = HTTP_STATUS_CUPS_AUTHORIZATION_CANCELED;
http->status = HTTP_AUTHORIZATION_CANCELED;
return (-1);
}
snprintf(http->userpass, sizeof(http->userpass), "%s:%s", cupsUser(),
password);
}
else if (http->status == HTTP_STATUS_UNAUTHORIZED)
else if (http->status == HTTP_UNAUTHORIZED)
http->digest_tries ++;
if (http->status == HTTP_STATUS_UNAUTHORIZED && http->digest_tries >= 3)
if (http->status == HTTP_UNAUTHORIZED && http->digest_tries >= 3)
{
DEBUG_printf(("1cupsDoAuthentication: Too many authentication tries (%d)",
http->digest_tries));
http->status = HTTP_STATUS_CUPS_AUTHORIZATION_CANCELED;
http->status = HTTP_AUTHORIZATION_CANCELED;
return (-1);
}
@@ -244,7 +237,7 @@ cupsDoAuthentication(
if (_cupsSetNegotiateAuthString(http, method, resource))
{
http->status = HTTP_STATUS_CUPS_AUTHORIZATION_CANCELED;
http->status = HTTP_AUTHORIZATION_CANCELED;
return (-1);
}
}
@@ -287,7 +280,7 @@ cupsDoAuthentication(
{
DEBUG_printf(("1cupsDoAuthentication: Unknown auth type: \"%s\"",
www_auth));
http->status = HTTP_STATUS_CUPS_AUTHORIZATION_CANCELED;
http->status = HTTP_AUTHORIZATION_CANCELED;
return (-1);
}
@@ -465,7 +458,7 @@ _cupsSetNegotiateAuthString(
authsize = sizeof(http->_authstring);
}
strlcpy(http->authstring, "Negotiate ", authsize);
strcpy(http->authstring, "Negotiate ");
httpEncode64_2(http->authstring + 10, authsize - 10, output_token.value,
output_token.length);
+1 -1
Ver Arquivo
@@ -930,7 +930,7 @@ ppd_load_constraints(ppd_file_t *ppd) /* I - PPD file */
if (!_cups_strncasecmp(option, "Custom", 6) && !_cups_strcasecmp(choice, "True"))
{
_cups_strcpy(option, option + 6);
strlcpy(choice, "Custom", sizeof(choice));
strcpy(choice, "Custom");
}
constptr->option = ppdFindOption(ppd, option);
+1 -14
Ver Arquivo
@@ -24,7 +24,6 @@
# include "string-private.h"
# include "debug-private.h"
# include "array-private.h"
# include "ipp-private.h"
# include "http-private.h"
# include "language-private.h"
@@ -87,11 +86,6 @@ typedef struct _cups_globals_s /**** CUPS global state data ****/
char resolved_uri[1024];
/* Buffer for cupsBackendDeviceURI */
/* debug.c */
# ifdef DEBUG
int thread_id; /* Friendly thread ID */
# endif /* DEBUG */
/* file.c */
cups_file_t *stdio_files[3];/* stdin, stdout, stderr */
@@ -131,7 +125,7 @@ typedef struct _cups_globals_s /**** CUPS global state data ****/
cups_array_t *leg_size_lut, /* Lookup table for legacy names */
*ppd_size_lut, /* Lookup table for PPD names */
*pwg_size_lut; /* Lookup table for PWG names */
pwg_media_t pwg_media; /* PWG media data for custom size */
_pwg_media_t pwg_media; /* PWG media data for custom size */
char pwg_name[65]; /* PWG media name for custom size */
/* request.c */
@@ -151,7 +145,6 @@ typedef struct _cups_globals_s /**** CUPS global state data ****/
/* usersys.c */
http_encryption_t encryption; /* Encryption setting */
char user[65], /* User name */
user_agent[256],/* User-Agent string */
server[256], /* Server address */
servername[256],/* Server hostname */
password[128]; /* Password for default callback */
@@ -207,7 +200,6 @@ typedef struct _cups_dconstres_s /* Constraint/resolver */
struct _cups_dinfo_s /* Destination capability and status
* information */
{
int version; /* IPP version */
const char *uri; /* Printer URI */
char *resource; /* Resource path */
ipp_t *attrs; /* Printer attributes */
@@ -219,11 +211,6 @@ struct _cups_dinfo_s /* Destination capability and status
cups_array_t *media_db; /* Media database */
_cups_media_db_t min_size, /* Minimum size */
max_size; /* Maximum size */
unsigned cached_flags; /* Flags used for cached media */
cups_array_t *cached_db; /* Cache of media from last index/default */
time_t ready_time; /* When xxx-ready attributes were last queried */
ipp_t *ready_attrs; /* xxx-ready attributes */
cups_array_t *ready_db; /* media[-col]-ready media database */
};
+7 -36
Ver Arquivo
@@ -3,7 +3,7 @@
*
* API definitions for CUPS.
*
* Copyright 2007-2013 by Apple Inc.
* Copyright 2007-2012 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -37,7 +37,6 @@ typedef off_t ssize_t; /* @private@ */
# include "file.h"
# include "ipp.h"
# include "language.h"
# include "pwg.h"
/*
@@ -53,10 +52,10 @@ extern "C" {
* Constants...
*/
# define CUPS_VERSION 1.0700
# define CUPS_VERSION 1.0602
# define CUPS_VERSION_MAJOR 1
# define CUPS_VERSION_MINOR 7
# define CUPS_VERSION_PATCH 0
# define CUPS_VERSION_MINOR 6
# define CUPS_VERSION_PATCH 2
# define CUPS_BC_FD 3
/* Back-channel file descriptor for
@@ -354,12 +353,12 @@ extern ipp_t *cupsDoRequest(http_t *http, ipp_t *request,
const char *resource);
extern http_encryption_t cupsEncryption(void);
extern void cupsFreeJobs(int num_jobs, cups_job_t *jobs);
extern int cupsGetClasses(char ***classes) _CUPS_DEPRECATED_MSG("Use cupsGetDests instead.");
extern int cupsGetClasses(char ***classes) _CUPS_DEPRECATED;
extern const char *cupsGetDefault(void);
extern int cupsGetJobs(cups_job_t **jobs, const char *name,
int myjobs, int whichjobs);
extern const char *cupsGetPPD(const char *name);
extern int cupsGetPrinters(char ***printers) _CUPS_DEPRECATED_MSG("Use cupsGetDests instead.");
extern int cupsGetPrinters(char ***printers) _CUPS_DEPRECATED;
extern ipp_status_t cupsLastError(void);
extern int cupsPrintFile(const char *name, const char *filename,
const char *title, int num_options,
@@ -367,7 +366,7 @@ extern int cupsPrintFile(const char *name, const char *filename,
extern int cupsPrintFiles(const char *name, int num_files,
const char **files, const char *title,
int num_options, cups_option_t *options);
extern char *cupsTempFile(char *filename, int len) _CUPS_DEPRECATED_MSG("Use cupsTempFd or cupsTempFile2 instead.");
extern char *cupsTempFile(char *filename, int len) _CUPS_DEPRECATED;
extern int cupsTempFd(char *filename, int len);
extern int cupsAddDest(const char *name, const char *instance,
@@ -591,34 +590,6 @@ extern http_status_t cupsStartDestDocument(http_t *http, cups_dest_t *dest,
cups_option_t *options,
int last_document) _CUPS_API_1_6;
/* New in CUPS 1.7 */
extern ipp_attribute_t *cupsFindDestDefault(http_t *http, cups_dest_t *dest,
cups_dinfo_t *dinfo,
const char *option) _CUPS_API_1_7;
extern ipp_attribute_t *cupsFindDestReady(http_t *http, cups_dest_t *dest,
cups_dinfo_t *dinfo,
const char *option) _CUPS_API_1_7;
extern ipp_attribute_t *cupsFindDestSupported(http_t *http, cups_dest_t *dest,
cups_dinfo_t *dinfo,
const char *option)
_CUPS_API_1_7;
extern int cupsGetDestMediaByIndex(http_t *http, cups_dest_t *dest,
cups_dinfo_t *dinfo, int n,
unsigned flags,
cups_size_t *size)
_CUPS_API_1_7;
extern int cupsGetDestMediaCount(http_t *http, cups_dest_t *dest,
cups_dinfo_t *dinfo,
unsigned flags) _CUPS_API_1_7;
extern int cupsGetDestMediaDefault(http_t *http, cups_dest_t *dest,
cups_dinfo_t *dinfo,
unsigned flags,
cups_size_t *size)
_CUPS_API_1_7;
extern void cupsSetUserAgent(const char *user_agent) _CUPS_API_1_7;
extern const char *cupsUserAgent(void) _CUPS_API_1_7;
# ifdef __cplusplus
}
# endif /* __cplusplus */
+42 -38
Ver Arquivo
@@ -68,24 +68,8 @@ int _cups_debug_level = 1;
static regex_t *debug_filter = NULL;
/* Filter expression for messages */
static int debug_init = 0; /* Did we initialize debugging? */
static _cups_mutex_t debug_init_mutex = _CUPS_MUTEX_INITIALIZER,
static _cups_mutex_t debug_mutex = _CUPS_MUTEX_INITIALIZER;
/* Mutex to control initialization */
debug_log_mutex = _CUPS_MUTEX_INITIALIZER;
/* Mutex to serialize log entries */
/*
* 'debug_thread_id()' - Return an integer representing the current thread.
*/
static int /* O - Local thread ID */
debug_thread_id(void)
{
_cups_globals_t *cg = _cupsGlobals(); /* Global data */
return (cg->thread_id);
}
/*
@@ -245,8 +229,16 @@ debug_vsnprintf(char *buffer, /* O - Output buffer */
if (bufptr)
{
strlcpy(bufptr, temp, (size_t)(bufend - bufptr));
bufptr += strlen(bufptr);
if ((bufptr + strlen(temp)) > bufend)
{
strncpy(bufptr, temp, (size_t)(bufend - bufptr));
bufptr = bufend;
}
else
{
strcpy(bufptr, temp);
bufptr += strlen(temp);
}
}
break;
@@ -275,8 +267,16 @@ debug_vsnprintf(char *buffer, /* O - Output buffer */
if (bufptr)
{
strlcpy(bufptr, temp, (size_t)(bufend - bufptr));
bufptr += strlen(bufptr);
if ((bufptr + strlen(temp)) > bufend)
{
strncpy(bufptr, temp, (size_t)(bufend - bufptr));
bufptr = bufend;
}
else
{
strcpy(bufptr, temp);
bufptr += strlen(temp);
}
}
break;
@@ -290,8 +290,16 @@ debug_vsnprintf(char *buffer, /* O - Output buffer */
if (bufptr)
{
strlcpy(bufptr, temp, (size_t)(bufend - bufptr));
bufptr += strlen(bufptr);
if ((bufptr + strlen(temp)) > bufend)
{
strncpy(bufptr, temp, (size_t)(bufend - bufptr));
bufptr = bufend;
}
else
{
strcpy(bufptr, temp);
bufptr += strlen(temp);
}
}
break;
@@ -449,9 +457,9 @@ _cups_debug_printf(const char *format, /* I - Printf-style format string */
{
int result; /* Filter result */
_cupsMutexLock(&debug_init_mutex);
_cupsMutexLock(&debug_mutex);
result = regexec(debug_filter, format, 0, NULL, 0);
_cupsMutexUnlock(&debug_init_mutex);
_cupsMutexUnlock(&debug_mutex);
if (result)
return;
@@ -462,13 +470,13 @@ _cups_debug_printf(const char *format, /* I - Printf-style format string */
*/
gettimeofday(&curtime, NULL);
snprintf(buffer, sizeof(buffer), "T%03d %02d:%02d:%02d.%03d ",
debug_thread_id(), (int)((curtime.tv_sec / 3600) % 24),
snprintf(buffer, sizeof(buffer), "%02d:%02d:%02d.%03d ",
(int)((curtime.tv_sec / 3600) % 24),
(int)((curtime.tv_sec / 60) % 60),
(int)(curtime.tv_sec % 60), (int)(curtime.tv_usec / 1000));
va_start(ap, format);
bytes = debug_vsnprintf(buffer + 19, sizeof(buffer) - 20, format, ap) + 19;
bytes = debug_vsnprintf(buffer + 13, sizeof(buffer) - 14, format, ap) + 13;
va_end(ap);
if (bytes >= (sizeof(buffer) - 1))
@@ -486,9 +494,7 @@ _cups_debug_printf(const char *format, /* I - Printf-style format string */
* Write it out...
*/
_cupsMutexLock(&debug_log_mutex);
write(_cups_debug_fd, buffer, bytes);
_cupsMutexUnlock(&debug_log_mutex);
}
@@ -532,9 +538,9 @@ _cups_debug_puts(const char *s) /* I - String to output */
{
int result; /* Filter result */
_cupsMutexLock(&debug_init_mutex);
_cupsMutexLock(&debug_mutex);
result = regexec(debug_filter, s, 0, NULL, 0);
_cupsMutexUnlock(&debug_init_mutex);
_cupsMutexUnlock(&debug_mutex);
if (result)
return;
@@ -545,8 +551,8 @@ _cups_debug_puts(const char *s) /* I - String to output */
*/
gettimeofday(&curtime, NULL);
bytes = snprintf(buffer, sizeof(buffer), "T%03d %02d:%02d:%02d.%03d %s",
debug_thread_id(), (int)((curtime.tv_sec / 3600) % 24),
bytes = snprintf(buffer, sizeof(buffer), "%02d:%02d:%02d.%03d %s",
(int)((curtime.tv_sec / 3600) % 24),
(int)((curtime.tv_sec / 60) % 60),
(int)(curtime.tv_sec % 60), (int)(curtime.tv_usec / 1000),
s);
@@ -566,9 +572,7 @@ _cups_debug_puts(const char *s) /* I - String to output */
* Write it out...
*/
_cupsMutexLock(&debug_log_mutex);
write(_cups_debug_fd, buffer, bytes);
_cupsMutexUnlock(&debug_log_mutex);
}
@@ -582,7 +586,7 @@ _cups_debug_set(const char *logfile, /* I - Log file or NULL */
const char *filter, /* I - Filter string or NULL */
int force) /* I - Force initialization */
{
_cupsMutexLock(&debug_init_mutex);
_cupsMutexLock(&debug_mutex);
if (!debug_init || force)
{
@@ -644,7 +648,7 @@ _cups_debug_set(const char *logfile, /* I - Log file or NULL */
debug_init = 1;
}
_cupsMutexUnlock(&debug_init_mutex);
_cupsMutexUnlock(&debug_mutex);
}
#endif /* DEBUG */
+27 -35
Ver Arquivo
@@ -3,7 +3,7 @@
*
* Destination job support for CUPS.
*
* Copyright 2012-2013 by Apple Inc.
* Copyright 2012 by Apple Inc.
*
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
@@ -15,7 +15,7 @@
*
* Contents:
*
* cupsCancelDestJob() - Cancel a job on a destination.
 * cupsCancelDestJob() - Cancel a job on a destination.
* cupsCloseDestJob() - Close a job and start printing.
* cupsCreateDestJob() - Create a job on a destination.
* cupsFinishDestDocument() - Finish the current document.
@@ -34,7 +34,7 @@
*
* The "job_id" is the number returned by cupsCreateDestJob.
*
* Returns IPP_STATUS_OK on success and IPP_NOT_AUTHORIZED or IPP_FORBIDDEN on
* Returns IPP_OK on success and IPP_NOT_AUTHORIZED or IPP_FORBIDDEN on
* failure.
*
* @since CUPS 1.6/OS X 10.8@
@@ -45,7 +45,7 @@ cupsCancelDestJob(http_t *http, /* I - Connection to destination */
cups_dest_t *dest, /* I - Destination */
int job_id) /* I - Job ID */
{
return (IPP_STATUS_ERROR_NOT_FOUND);
return (IPP_NOT_FOUND);
}
@@ -53,7 +53,7 @@ cupsCancelDestJob(http_t *http, /* I - Connection to destination */
* 'cupsCloseDestJob()' - Close a job and start printing.
*
* Use when the last call to cupsStartDocument passed 0 for "last_document".
* "job_id" is the job ID returned by cupsCreateDestJob. Returns @code IPP_STATUS_OK@
* "job_id" is the job ID returned by cupsCreateDestJob. Returns @code IPP_OK@
* on success.
*
* @since CUPS 1.6/OS X 10.8@
@@ -81,9 +81,9 @@ cupsCloseDestJob(
if (!http || !dest || !info || job_id <= 0)
{
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(EINVAL), 0);
_cupsSetError(IPP_INTERNAL_ERROR, strerror(EINVAL), 0);
DEBUG_puts("1cupsCloseDestJob: Bad arguments.");
return (IPP_STATUS_ERROR_INTERNAL);
return (IPP_INTERNAL_ERROR);
}
/*
@@ -94,33 +94,31 @@ cupsCloseDestJob(
IPP_TAG_ENUM)) != NULL)
{
for (i = 0; i < attr->num_values; i ++)
if (attr->values[i].integer == IPP_OP_CLOSE_JOB)
if (attr->values[i].integer == IPP_CLOSE_JOB)
{
request = ippNewRequest(IPP_OP_CLOSE_JOB);
request = ippNewRequest(IPP_CLOSE_JOB);
break;
}
}
if (!request)
request = ippNewRequest(IPP_OP_SEND_DOCUMENT);
request = ippNewRequest(IPP_SEND_DOCUMENT);
if (!request)
{
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(ENOMEM), 0);
_cupsSetError(IPP_INTERNAL_ERROR, strerror(ENOMEM), 0);
DEBUG_puts("1cupsCloseDestJob: Unable to create Close-Job/Send-Document "
"request.");
return (IPP_STATUS_ERROR_INTERNAL);
return (IPP_INTERNAL_ERROR);
}
ippSetVersion(request, info->version / 10, info->version % 10);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
NULL, info->uri);
ippAddInteger(request, IPP_TAG_OPERATION, IPP_TAG_INTEGER, "job-id",
job_id);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "requesting-user-name",
NULL, cupsUser());
if (ippGetOperation(request) == IPP_OP_SEND_DOCUMENT)
if (ippGetOperation(request) == IPP_SEND_DOCUMENT)
ippAddBoolean(request, IPP_TAG_OPERATION, "last-document", 1);
/*
@@ -139,7 +137,7 @@ cupsCloseDestJob(
/*
* 'cupsCreateDestJob()' - Create a job on a destination.
*
* Returns @code IPP_STATUS_OK@ or @code IPP_STATUS_OK_SUBST@ on success, saving the job ID
* Returns @code IPP_OK@ or @code IPP_OK_SUBST@ on success, saving the job ID
* in the variable pointed to by "job_id".
*
* @since CUPS 1.6/OS X 10.8@
@@ -175,24 +173,22 @@ cupsCreateDestJob(
if (!http || !dest || !info || !job_id)
{
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(EINVAL), 0);
_cupsSetError(IPP_INTERNAL_ERROR, strerror(EINVAL), 0);
DEBUG_puts("1cupsCreateDestJob: Bad arguments.");
return (IPP_STATUS_ERROR_INTERNAL);
return (IPP_INTERNAL_ERROR);
}
/*
* Build a Create-Job request...
*/
if ((request = ippNewRequest(IPP_OP_CREATE_JOB)) == NULL)
if ((request = ippNewRequest(IPP_CREATE_JOB)) == NULL)
{
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(ENOMEM), 0);
_cupsSetError(IPP_INTERNAL_ERROR, strerror(ENOMEM), 0);
DEBUG_puts("1cupsCreateDestJob: Unable to create Create-Job request.");
return (IPP_STATUS_ERROR_INTERNAL);
return (IPP_INTERNAL_ERROR);
}
ippSetVersion(request, info->version / 10, info->version % 10);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
NULL, info->uri);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "requesting-user-name",
@@ -201,7 +197,6 @@ cupsCreateDestJob(
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "job-name", NULL,
title);
cupsEncodeOptions2(request, num_options, options, IPP_TAG_OPERATION);
cupsEncodeOptions2(request, num_options, options, IPP_TAG_JOB);
cupsEncodeOptions2(request, num_options, options, IPP_TAG_SUBSCRIPTION);
@@ -233,7 +228,7 @@ cupsCreateDestJob(
/*
* 'cupsFinishDestDocument()' - Finish the current document.
*
* Returns @code IPP_STATUS_OK@ or @code IPP_STATUS_OK_SUBST@ on success.
* Returns @code IPP_OK@ or @code IPP_OK_SUBST@ on success.
*
* @since CUPS 1.6/OS X 10.8@
*/
@@ -254,9 +249,9 @@ cupsFinishDestDocument(
if (!http || !dest || !info)
{
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(EINVAL), 0);
_cupsSetError(IPP_INTERNAL_ERROR, strerror(EINVAL), 0);
DEBUG_puts("1cupsFinishDestDocument: Bad arguments.");
return (IPP_STATUS_ERROR_INTERNAL);
return (IPP_INTERNAL_ERROR);
}
/*
@@ -314,25 +309,23 @@ cupsStartDestDocument(
if (!http || !dest || !info || job_id <= 0)
{
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(EINVAL), 0);
_cupsSetError(IPP_INTERNAL_ERROR, strerror(EINVAL), 0);
DEBUG_puts("1cupsStartDestDocument: Bad arguments.");
return (HTTP_STATUS_ERROR);
return (HTTP_ERROR);
}
/*
* Create a Send-Document request...
*/
if ((request = ippNewRequest(IPP_OP_SEND_DOCUMENT)) == NULL)
if ((request = ippNewRequest(IPP_SEND_DOCUMENT)) == NULL)
{
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(ENOMEM), 0);
_cupsSetError(IPP_INTERNAL_ERROR, strerror(ENOMEM), 0);
DEBUG_puts("1cupsStartDestDocument: Unable to create Send-Document "
"request.");
return (HTTP_STATUS_ERROR);
return (HTTP_ERROR);
}
ippSetVersion(request, info->version / 10, info->version % 10);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
NULL, info->uri);
ippAddInteger(request, IPP_TAG_OPERATION, IPP_TAG_INTEGER, "job-id", job_id);
@@ -346,7 +339,6 @@ cupsStartDestDocument(
"document-format", NULL, format);
ippAddBoolean(request, IPP_TAG_OPERATION, "last-document", last_document);
cupsEncodeOptions2(request, num_options, options, IPP_TAG_OPERATION);
cupsEncodeOptions2(request, num_options, options, IPP_TAG_DOCUMENT);
/*
+7 -8
Ver Arquivo
@@ -3,7 +3,7 @@
*
* Destination localization support for CUPS.
*
* Copyright 2012-2013 by Apple Inc.
* Copyright 2012 by Apple Inc.
*
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
@@ -178,7 +178,7 @@ cups_create_localizations(
if (httpSeparateURI(HTTP_URI_CODING_ALL, attr->values[0].string.text,
scheme, sizeof(scheme), userpass, sizeof(userpass),
hostname, sizeof(hostname), &port, resource,
sizeof(resource)) < HTTP_URI_STATUS_OK)
sizeof(resource)) < HTTP_URI_OK)
{
DEBUG_printf(("4cups_create_localizations: Bad printer-strings-uri value "
"\"%s\".", attr->values[0].string.text));
@@ -188,7 +188,7 @@ cups_create_localizations(
httpGetHostname(http, http_hostname, sizeof(http_hostname));
if (!_cups_strcasecmp(http_hostname, hostname) &&
port == httpAddrPort(http->hostaddr))
port == _httpAddrPort(http->hostaddr))
{
/*
* Use the same connection...
@@ -203,12 +203,11 @@ cups_create_localizations(
*/
if (!strcmp(scheme, "https"))
encryption = HTTP_ENCRYPTION_ALWAYS;
encryption = HTTP_ENCRYPT_ALWAYS;
else
encryption = HTTP_ENCRYPTION_IF_REQUESTED;
encryption = HTTP_ENCRYPT_IF_REQUESTED;
if ((http2 = httpConnect2(hostname, port, NULL, AF_UNSPEC, encryption, 1,
30000, NULL)) == NULL)
if ((http2 = httpConnectEncrypt(hostname, port, encryption)) == NULL)
{
DEBUG_printf(("4cups_create_localizations: Unable to connect to "
"%s:%d: %s", hostname, port, cupsLastErrorString()));
@@ -234,7 +233,7 @@ cups_create_localizations(
DEBUG_printf(("4cups_create_localizations: GET %s = %s", resource,
httpStatus(status)));
if (status == HTTP_STATUS_OK)
if (status == HTTP_OK)
{
/*
* Got the file, read it...
+70 -578
Ver Arquivo
@@ -3,7 +3,7 @@
*
* Destination option/media support for CUPS.
*
* Copyright 2012-2013 by Apple Inc.
* Copyright 2012 by Apple Inc.
*
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
@@ -21,26 +21,14 @@
* option/value pair.
* cupsCopyDestInfo() - Get the supported values/capabilities for the
* destination.
* cupsFindDestDefault() - Find the default value(s) for the given
* option.
* cupsFindDestReady() - Find the default value(s) for the given
* option.
* cupsFindDestSupported() - Find the default value(s) for the given
* option.
* cupsFreeDestInfo() - Free destination information obtained using
* @link cupsCopyDestInfo@.
* cupsGetDestMediaByIndex() - Get a media name, dimension, and margins for a
* specific size.
* cupsGetDestMediaByName() - Get media names, dimensions, and margins.
* cupsGetDestMediaBySize() - Get media names, dimensions, and margins.
* cupsGetDestMediaCount() - Get the number of sizes supported by a
* destination.
* cupsGetDestMediaDefault() - Get the default size for a destination.
* cups_add_dconstres() - Add a constraint or resolver to an array.
* cups_compare_dconstres() - Compare to resolver entries.
* cups_compare_media_db() - Compare two media entries.
* cups_copy_media_db() - Copy a media entry.
* cups_create_cached() - Create the media selection cache.
* cups_create_constraints() - Create the constraints and resolvers arrays.
* cups_create_defaults() - Create the -default option array.
* cups_create_media_db() - Create the media database.
@@ -49,7 +37,6 @@
* cups_is_close_media_db() - Compare two media entries to see if they are
* close to the same size.
* cups_test_constraints() - Test constraints.
* cups_update_ready() - Update xxx-ready attributes for the printer.
*/
/*
@@ -59,13 +46,6 @@
#include "cups-private.h"
/*
* Local constants...
*/
#define _CUPS_MEDIA_READY_TTL 30 /* Life of xxx-ready values */
/*
* Local functions...
*/
@@ -76,15 +56,12 @@ static int cups_compare_dconstres(_cups_dconstres_t *a,
static int cups_compare_media_db(_cups_media_db_t *a,
_cups_media_db_t *b);
static _cups_media_db_t *cups_copy_media_db(_cups_media_db_t *mdb);
static void cups_create_cached(http_t *http, cups_dinfo_t *dinfo,
unsigned flags);
static void cups_create_constraints(cups_dinfo_t *dinfo);
static void cups_create_defaults(cups_dinfo_t *dinfo);
static void cups_create_media_db(cups_dinfo_t *dinfo,
unsigned flags);
static void cups_create_media_db(cups_dinfo_t *dinfo);
static void cups_free_media_db(_cups_media_db_t *mdb);
static int cups_get_media_db(http_t *http, cups_dinfo_t *dinfo,
pwg_media_t *pwg, unsigned flags,
static int cups_get_media_db(cups_dinfo_t *dinfo,
_pwg_media_t *pwg, unsigned flags,
cups_size_t *size);
static int cups_is_close_media_db(_cups_media_db_t *a,
_cups_media_db_t *b);
@@ -95,7 +72,6 @@ static cups_array_t *cups_test_constraints(cups_dinfo_t *dinfo,
cups_option_t *options,
int *num_conflicts,
cups_option_t **conflicts);
static void cups_update_ready(http_t *http, cups_dinfo_t *dinfo);
/*
@@ -157,7 +133,7 @@ cupsCheckDestSupported(
* Check range of custom media sizes...
*/
pwg_media_t *pwg; /* Current PWG media size info */
_pwg_media_t *pwg; /* Current PWG media size info */
int min_width, /* Minimum width */
min_length, /* Minimum length */
max_width, /* Maximum width */
@@ -175,13 +151,13 @@ cupsCheckDestSupported(
i --, attrval ++)
{
if (!strncmp(attrval->string.text, "custom_min_", 11) &&
(pwg = pwgMediaForPWG(attrval->string.text)) != NULL)
(pwg = _pwgMediaForPWG(attrval->string.text)) != NULL)
{
min_width = pwg->width;
min_length = pwg->length;
}
else if (!strncmp(attrval->string.text, "custom_max_", 11) &&
(pwg = pwgMediaForPWG(attrval->string.text)) != NULL)
(pwg = _pwgMediaForPWG(attrval->string.text)) != NULL)
{
max_width = pwg->width;
max_length = pwg->length;
@@ -193,7 +169,7 @@ cupsCheckDestSupported(
*/
if (min_width < INT_MAX && max_width > 0 &&
(pwg = pwgMediaForPWG(value)) != NULL &&
(pwg = _pwgMediaForPWG(value)) != NULL &&
pwg->width >= min_width && pwg->width <= max_width &&
pwg->length >= min_length && pwg->length <= max_length)
return (1);
@@ -644,11 +620,11 @@ cupsCopyDestInfo(
* Send a Get-Printer-Attributes request...
*/
request = ippNewRequest(IPP_OP_GET_PRINTER_ATTRIBUTES);
request = ippNewRequest(IPP_GET_PRINTER_ATTRIBUTES);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri", NULL,
uri);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME,
"requesting-user-name", NULL, cupsUser());
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "requesting-user-name",
NULL, cupsUser());
ippAddStrings(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD,
"requested-attributes",
(int)(sizeof(requested_attrs) / sizeof(requested_attrs[0])),
@@ -656,7 +632,7 @@ cupsCopyDestInfo(
response = cupsDoRequest(http, request, resource);
status = cupsLastError();
if (status > IPP_STATUS_OK_IGNORED_OR_SUBSTITUTED)
if (status > IPP_OK_SUBST)
{
DEBUG_printf(("cupsCopyDestSupported: Get-Printer-Attributes for '%s' "
"returned %s (%s)", dest->name, ippErrorString(status),
@@ -665,9 +641,9 @@ cupsCopyDestInfo(
ippDelete(response);
response = NULL;
if (status == IPP_STATUS_ERROR_VERSION_NOT_SUPPORTED && version > 11)
if (status == IPP_VERSION_NOT_SUPPORTED && version > 11)
version = 11;
else if (status == IPP_STATUS_ERROR_BUSY)
else if (status == IPP_PRINTER_BUSY)
{
sleep(delay);
@@ -690,12 +666,11 @@ cupsCopyDestInfo(
if ((dinfo = calloc(1, sizeof(cups_dinfo_t))) == NULL)
{
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(errno), 0);
_cupsSetError(IPP_INTERNAL_ERROR, strerror(errno), 0);
ippDelete(response);
return (NULL);
}
dinfo->version = version;
dinfo->uri = uri;
dinfo->resource = _cupsStrAlloc(resource);
dinfo->attrs = response;
@@ -704,129 +679,6 @@ cupsCopyDestInfo(
}
/*
* 'cupsFindDestDefault()' - Find the default value(s) for the given option.
*
* The returned value is an IPP attribute. Use the @code ippGetBoolean@,
* @code ippGetCollection@, @code ippGetCount@, @code ippGetDate@,
* @code ippGetInteger@, @code ippGetOctetString@, @code ippGetRange@,
* @code ippGetResolution@, @code ippGetString@, and @code ippGetValueTag@
* functions to inspect the default value(s) as needed.
*
* @since CUPS 1.7@
*/
ipp_attribute_t * /* O - Default attribute or @code NULL@ for none */
cupsFindDestDefault(
http_t *http, /* I - Connection to destination */
cups_dest_t *dest, /* I - Destination */
cups_dinfo_t *dinfo, /* I - Destination information */
const char *option) /* I - Option/attribute name */
{
char name[IPP_MAX_NAME]; /* Attribute name */
/*
* Range check input...
*/
if (!http || !dest || !dinfo || !option)
{
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(EINVAL), 0);
return (NULL);
}
/*
* Find and return the attribute...
*/
snprintf(name, sizeof(name), "%s-default", option);
return (ippFindAttribute(dinfo->attrs, name, IPP_TAG_ZERO));
}
/*
* 'cupsFindDestReady()' - Find the default value(s) for the given option.
*
* The returned value is an IPP attribute. Use the @code ippGetBoolean@,
* @code ippGetCollection@, @code ippGetCount@, @code ippGetDate@,
* @code ippGetInteger@, @code ippGetOctetString@, @code ippGetRange@,
* @code ippGetResolution@, @code ippGetString@, and @code ippGetValueTag@
* functions to inspect the default value(s) as needed.
*
* @since CUPS 1.7@
*/
ipp_attribute_t * /* O - Default attribute or @code NULL@ for none */
cupsFindDestReady(
http_t *http, /* I - Connection to destination */
cups_dest_t *dest, /* I - Destination */
cups_dinfo_t *dinfo, /* I - Destination information */
const char *option) /* I - Option/attribute name */
{
char name[IPP_MAX_NAME]; /* Attribute name */
/*
* Range check input...
*/
if (!http || !dest || !dinfo || !option)
{
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(EINVAL), 0);
return (NULL);
}
/*
* Find and return the attribute...
*/
cups_update_ready(http, dinfo);
snprintf(name, sizeof(name), "%s-ready", option);
return (ippFindAttribute(dinfo->ready_attrs, name, IPP_TAG_ZERO));
}
/*
* 'cupsFindDestSupported()' - Find the default value(s) for the given option.
*
* The returned value is an IPP attribute. Use the @code ippGetBoolean@,
* @code ippGetCollection@, @code ippGetCount@, @code ippGetDate@,
* @code ippGetInteger@, @code ippGetOctetString@, @code ippGetRange@,
* @code ippGetResolution@, @code ippGetString@, and @code ippGetValueTag@
* functions to inspect the default value(s) as needed.
*
* @since CUPS 1.7@
*/
ipp_attribute_t * /* O - Default attribute or @code NULL@ for none */
cupsFindDestSupported(
http_t *http, /* I - Connection to destination */
cups_dest_t *dest, /* I - Destination */
cups_dinfo_t *dinfo, /* I - Destination information */
const char *option) /* I - Option/attribute name */
{
char name[IPP_MAX_NAME]; /* Attribute name */
/*
* Range check input...
*/
if (!http || !dest || !dinfo || !option)
{
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(EINVAL), 0);
return (NULL);
}
/*
* Find and return the attribute...
*/
snprintf(name, sizeof(name), "%s-supported", option);
return (ippFindAttribute(dinfo->attrs, name, IPP_TAG_ZERO));
}
/*
* 'cupsFreeDestInfo()' - Free destination information obtained using
* @link cupsCopyDestInfo@.
@@ -855,79 +707,12 @@ cupsFreeDestInfo(cups_dinfo_t *dinfo) /* I - Destination information */
cupsArrayDelete(dinfo->media_db);
cupsArrayDelete(dinfo->cached_db);
ippDelete(dinfo->ready_attrs);
cupsArrayDelete(dinfo->ready_db);
ippDelete(dinfo->attrs);
free(dinfo);
}
/*
* 'cupsGetDestMediaByIndex()' - Get a media name, dimension, and margins for a
* specific size.
*
* The @code flags@ parameter determines which set of media are indexed. For
* example, passing @code CUPS_MEDIA_FLAGS_BORDERLESS@ will get the Nth
* borderless size supported by the printer.
*
* @since CUPS 1.7@
*/
int /* O - 1 on success, 0 on failure */
cupsGetDestMediaByIndex(
http_t *http, /* I - Connection to destination */
cups_dest_t *dest, /* I - Destination */
cups_dinfo_t *dinfo, /* I - Destination information */
int n, /* I - Media size number (0-based) */
unsigned flags, /* I - Media flags */
cups_size_t *size) /* O - Media size information */
{
cups_size_t *nsize; /* Size for N */
/*
* Range check input...
*/
if (size)
memset(size, 0, sizeof(cups_size_t));
if (!http || !dest || !dinfo || n < 0 || !size)
{
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(EINVAL), 0);
return (0);
}
/*
* Load media list as needed...
*/
if (flags & CUPS_MEDIA_FLAGS_READY)
cups_update_ready(http, dinfo);
if (!dinfo->cached_db || dinfo->cached_flags != flags)
cups_create_cached(http, dinfo, flags);
/*
* Copy the size over and return...
*/
if ((nsize = (cups_size_t *)cupsArrayIndex(dinfo->cached_db, n)) == NULL)
{
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(EINVAL), 0);
return (0);
}
memcpy(size, nsize, sizeof(cups_size_t));
return (1);
}
/*
* 'cupsGetDestMediaByName()' - Get media names, dimensions, and margins.
*
@@ -957,7 +742,7 @@ cupsGetDestMediaByName(
unsigned flags, /* I - Media matching flags */
cups_size_t *size) /* O - Media size information */
{
pwg_media_t *pwg; /* PWG media info */
_pwg_media_t *pwg; /* PWG media info */
/*
@@ -969,7 +754,7 @@ cupsGetDestMediaByName(
if (!http || !dest || !dinfo || !media || !size)
{
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(EINVAL), 0);
_cupsSetError(IPP_INTERNAL_ERROR, strerror(EINVAL), 0);
return (0);
}
@@ -977,11 +762,11 @@ cupsGetDestMediaByName(
* Lookup the media size name...
*/
if ((pwg = pwgMediaForPWG(media)) == NULL)
if ((pwg = pwgMediaForLegacy(media)) == NULL)
if ((pwg = _pwgMediaForPWG(media)) == NULL)
if ((pwg = _pwgMediaForLegacy(media)) == NULL)
{
DEBUG_printf(("1cupsGetDestMediaByName: Unknown size '%s'.", media));
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Unknown media size name."), 1);
_cupsSetError(IPP_INTERNAL_ERROR, _("Unknown media size name."), 1);
return (0);
}
@@ -989,7 +774,7 @@ cupsGetDestMediaByName(
* Lookup the size...
*/
return (cups_get_media_db(http, dinfo, pwg, flags, size));
return (cups_get_media_db(dinfo, pwg, flags, size));
}
@@ -1025,7 +810,7 @@ cupsGetDestMediaBySize(
unsigned flags, /* I - Media matching flags */
cups_size_t *size) /* O - Media size information */
{
pwg_media_t *pwg; /* PWG media info */
_pwg_media_t *pwg; /* PWG media info */
/*
@@ -1037,7 +822,7 @@ cupsGetDestMediaBySize(
if (!http || !dest || !dinfo || width <= 0 || length <= 0 || !size)
{
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(EINVAL), 0);
_cupsSetError(IPP_INTERNAL_ERROR, strerror(EINVAL), 0);
return (0);
}
@@ -1045,11 +830,11 @@ cupsGetDestMediaBySize(
* Lookup the media size name...
*/
if ((pwg = pwgMediaForSize(width, length)) == NULL)
if ((pwg = _pwgMediaForSize(width, length)) == NULL)
{
DEBUG_printf(("1cupsGetDestMediaBySize: Invalid size %dx%d.", width,
length));
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Invalid media size."), 1);
_cupsSetError(IPP_INTERNAL_ERROR, _("Invalid media size."), 1);
return (0);
}
@@ -1057,116 +842,7 @@ cupsGetDestMediaBySize(
* Lookup the size...
*/
return (cups_get_media_db(http, dinfo, pwg, flags, size));
}
/*
* 'cupsGetDestMediaCount()' - Get the number of sizes supported by a
* destination.
*
* The @code flags@ parameter determines the set of media sizes that are
* counted. For example, passing @code CUPS_MEDIA_FLAGS_BORDERLESS@ will return
* the number of borderless sizes.
*
* @since CUPS 1.7@
*/
int /* O - Number of sizes */
cupsGetDestMediaCount(
http_t *http, /* I - Connection to destination */
cups_dest_t *dest, /* I - Destination */
cups_dinfo_t *dinfo, /* I - Destination information */
unsigned flags) /* I - Media flags */
{
/*
* Range check input...
*/
if (!http || !dest || !dinfo)
{
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(EINVAL), 0);
return (0);
}
/*
* Load media list as needed...
*/
if (flags & CUPS_MEDIA_FLAGS_READY)
cups_update_ready(http, dinfo);
if (!dinfo->cached_db || dinfo->cached_flags != flags)
cups_create_cached(http, dinfo, flags);
return (cupsArrayCount(dinfo->cached_db));
}
/*
* 'cupsGetDestMediaDefault()' - Get the default size for a destination.
*
* The @code flags@ parameter determines which default size is returned. For
* example, passing @code CUPS_MEDIA_FLAGS_BORDERLESS@ will return the default
* borderless size, typically US Letter or A4, but sometimes 4x6 photo media.
*
* @since CUPS 1.7@
*/
int /* O - 1 on success, 0 on failure */
cupsGetDestMediaDefault(
http_t *http, /* I - Connection to destination */
cups_dest_t *dest, /* I - Destination */
cups_dinfo_t *dinfo, /* I - Destination information */
unsigned flags, /* I - Media flags */
cups_size_t *size) /* O - Media size information */
{
const char *media; /* Default media size */
/*
* Range check input...
*/
if (size)
memset(size, 0, sizeof(cups_size_t));
if (!http || !dest || !dinfo || !size)
{
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(EINVAL), 0);
return (0);
}
/*
* Get the default media size, if any...
*/
if ((media = cupsGetOption("media", dest->num_options,
dest->options)) == NULL)
media = "na_letter_8.5x11in";
if (cupsGetDestMediaByName(http, dest, dinfo, media, flags, size))
return (1);
if (strcmp(media, "na_letter_8.5x11in") &&
cupsGetDestMediaByName(http, dest, dinfo, "iso_a4_210x297mm", flags,
size))
return (1);
if (strcmp(media, "iso_a4_210x297mm") &&
cupsGetDestMediaByName(http, dest, dinfo, "na_letter_8.5x11in", flags,
size))
return (1);
if ((flags & CUPS_MEDIA_FLAGS_BORDERLESS) &&
cupsGetDestMediaByName(http, dest, dinfo, "na_index_4x6in", flags, size))
return (1);
/*
* Fall back to the first matching media size...
*/
return (cupsGetDestMediaByIndex(http, dest, dinfo, flags, 0, size));
return (cups_get_media_db(dinfo, pwg, flags, size));
}
@@ -1267,66 +943,6 @@ cups_copy_media_db(
}
/*
* 'cups_create_cached()' - Create the media selection cache.
*/
static void
cups_create_cached(http_t *http, /* I - Connection to destination */
cups_dinfo_t *dinfo, /* I - Destination information */
unsigned flags) /* I - Media selection flags */
{
cups_array_t *db; /* Media database array to use */
_cups_media_db_t *mdb, /* Media database entry */
*first; /* First entry this size */
if (dinfo->cached_db)
cupsArrayDelete(dinfo->cached_db);
dinfo->cached_db = cupsArrayNew(NULL, NULL);
dinfo->cached_flags = flags;
if (flags & CUPS_MEDIA_FLAGS_READY)
{
cups_update_ready(http, dinfo);
db = dinfo->ready_db;
}
else
{
if (!dinfo->media_db)
cups_create_media_db(dinfo, CUPS_MEDIA_FLAGS_DEFAULT);
db = dinfo->media_db;
}
for (mdb = (_cups_media_db_t *)cupsArrayFirst(db), first = mdb;
mdb;
mdb = (_cups_media_db_t *)cupsArrayNext(db))
{
if (flags & CUPS_MEDIA_FLAGS_BORDERLESS)
{
if (!mdb->left && !mdb->right && !mdb->top && !mdb->bottom)
cupsArrayAdd(dinfo->cached_db, mdb);
}
else if (flags & CUPS_MEDIA_FLAGS_DUPLEX)
{
if (first->width != mdb->width || first->length != mdb->length)
{
cupsArrayAdd(dinfo->cached_db, first);
first = mdb;
}
else if (mdb->left >= first->left && mdb->right >= first->right &&
mdb->top >= first->top && mdb->bottom >= first->bottom)
first = mdb;
}
}
if (flags & CUPS_MEDIA_FLAGS_DUPLEX)
cupsArrayAdd(dinfo->cached_db, first);
}
/*
* 'cups_create_constraints()' - Create the constraints and resolvers arrays.
*/
@@ -1420,8 +1036,7 @@ cups_create_defaults(
static void
cups_create_media_db(
cups_dinfo_t *dinfo, /* I - Destination information */
unsigned flags) /* I - Media flags */
cups_dinfo_t *dinfo) /* I - Destination information */
{
int i; /* Looping var */
_ipp_value_t *val; /* Current value */
@@ -1429,40 +1044,21 @@ cups_create_media_db(
*media_attr, /* media-xxx */
*x_dimension, /* x-dimension */
*y_dimension; /* y-dimension */
pwg_media_t *pwg; /* PWG media info */
cups_array_t *db; /* New media database array */
_pwg_media_t *pwg; /* PWG media info */
_cups_media_db_t mdb; /* Media entry */
db = cupsArrayNew3((cups_array_func_t)cups_compare_media_db,
NULL, NULL, 0,
(cups_acopy_func_t)cups_copy_media_db,
(cups_afree_func_t)cups_free_media_db);
dinfo->media_db = cupsArrayNew3((cups_array_func_t)cups_compare_media_db,
NULL, NULL, 0,
(cups_acopy_func_t)cups_copy_media_db,
(cups_afree_func_t)cups_free_media_db);
dinfo->min_size.width = INT_MAX;
dinfo->min_size.length = INT_MAX;
dinfo->max_size.width = 0;
dinfo->max_size.length = 0;
if (flags == CUPS_MEDIA_FLAGS_READY)
{
dinfo->ready_db = db;
media_col_db = ippFindAttribute(dinfo->ready_attrs, "media-col-ready",
IPP_TAG_BEGIN_COLLECTION);
media_attr = ippFindAttribute(dinfo->ready_attrs, "media-ready",
IPP_TAG_ZERO);
}
else
{
dinfo->media_db = db;
dinfo->min_size.width = INT_MAX;
dinfo->min_size.length = INT_MAX;
dinfo->max_size.width = 0;
dinfo->max_size.length = 0;
media_col_db = ippFindAttribute(dinfo->attrs, "media-col-database",
IPP_TAG_BEGIN_COLLECTION);
media_attr = ippFindAttribute(dinfo->attrs, "media-supported",
IPP_TAG_ZERO);
}
if (media_col_db)
if ((media_col_db = ippFindAttribute(dinfo->attrs, "media-col-database",
IPP_TAG_BEGIN_COLLECTION)) != NULL)
{
_ipp_value_t *custom = NULL; /* Custom size range value */
@@ -1479,32 +1075,15 @@ cups_create_media_db(
/* media-size collection value */
if ((x_dimension = ippFindAttribute(media_size, "x-dimension",
IPP_TAG_INTEGER)) != NULL &&
IPP_TAG_INTEGER)) != NULL &&
(y_dimension = ippFindAttribute(media_size, "y-dimension",
IPP_TAG_INTEGER)) != NULL)
{
/*
* Fixed size...
*/
mdb.width = x_dimension->values[0].integer;
mdb.length = y_dimension->values[0].integer;
}
else if ((x_dimension = ippFindAttribute(media_size, "x-dimension",
IPP_TAG_INTEGER)) != NULL &&
(y_dimension = ippFindAttribute(media_size, "y-dimension",
IPP_TAG_RANGE)) != NULL)
{
/*
* Roll limits...
*/
mdb.width = x_dimension->values[0].integer;
mdb.length = y_dimension->values[0].range.upper;
}
else if (flags != CUPS_MEDIA_FLAGS_READY &&
(x_dimension = ippFindAttribute(media_size, "x-dimension",
IPP_TAG_RANGE)) != NULL &&
else if ((x_dimension = ippFindAttribute(media_size, "x-dimension",
IPP_TAG_RANGE)) != NULL &&
(y_dimension = ippFindAttribute(media_size, "y-dimension",
IPP_TAG_RANGE)) != NULL)
{
@@ -1528,6 +1107,7 @@ cups_create_media_db(
dinfo->max_size.right = 635; /* Default 1/4" side margins */
dinfo->max_size.top =
dinfo->max_size.bottom = 1270; /* Default 1/2" top/bottom margins */
continue;
}
}
@@ -1587,7 +1167,7 @@ cups_create_media_db(
IPP_TAG_INTEGER)) != NULL)
mdb.top = media_attr->values[0].integer;
cupsArrayAdd(db, &mdb);
cupsArrayAdd(dinfo->media_db, &mdb);
}
if (custom)
@@ -1625,7 +1205,8 @@ cups_create_media_db(
}
}
}
else if (media_attr &&
else if ((media_attr = ippFindAttribute(dinfo->attrs, "media-supported",
IPP_TAG_ZERO)) != NULL &&
(media_attr->value_tag == IPP_TAG_NAME ||
media_attr->value_tag == IPP_TAG_NAMELANG ||
media_attr->value_tag == IPP_TAG_KEYWORD))
@@ -1641,8 +1222,8 @@ cups_create_media_db(
i > 0;
i --, val ++)
{
if ((pwg = pwgMediaForPWG(val->string.text)) == NULL)
if ((pwg = pwgMediaForLegacy(val->string.text)) == NULL)
if ((pwg = _pwgMediaForPWG(val->string.text)) == NULL)
if ((pwg = _pwgMediaForLegacy(val->string.text)) == NULL)
{
DEBUG_printf(("3cups_create_media_db: Ignoring unknown size '%s'.",
val->string.text));
@@ -1652,14 +1233,12 @@ cups_create_media_db(
mdb.width = pwg->width;
mdb.length = pwg->length;
if (flags != CUPS_MEDIA_FLAGS_READY &&
!strncmp(val->string.text, "custom_min_", 11))
if (!strncmp(val->string.text, "custom_min_", 11))
{
mdb.size_name = NULL;
dinfo->min_size = mdb;
}
else if (flags != CUPS_MEDIA_FLAGS_READY &&
!strncmp(val->string.text, "custom_max_", 11))
else if (!strncmp(val->string.text, "custom_max_", 11))
{
mdb.size_name = NULL;
dinfo->max_size = mdb;
@@ -1668,7 +1247,7 @@ cups_create_media_db(
{
mdb.size_name = val->string.text;
cupsArrayAdd(db, &mdb);
cupsArrayAdd(dinfo->media_db, &mdb);
}
}
}
@@ -1705,13 +1284,11 @@ cups_free_media_db(
*/
static int /* O - 1 on match, 0 on failure */
cups_get_media_db(http_t *http, /* I - Connection to destination */
cups_dinfo_t *dinfo, /* I - Destination information */
pwg_media_t *pwg, /* I - PWG media info */
cups_get_media_db(cups_dinfo_t *dinfo, /* I - Destination information */
_pwg_media_t *pwg, /* I - PWG media info */
unsigned flags, /* I - Media matching flags */
cups_size_t *size) /* O - Media size/margin/name info */
cups_size_t *size) /* O - Media size/margin/name info */
{
cups_array_t *db; /* Which media database to query */
_cups_media_db_t *mdb, /* Current media database entry */
*best = NULL, /* Best matching entry */
key; /* Search key */
@@ -1721,18 +1298,8 @@ cups_get_media_db(http_t *http, /* I - Connection to destination */
* Create the media database as needed...
*/
if (flags & CUPS_MEDIA_FLAGS_READY)
{
cups_update_ready(http, dinfo);
db = dinfo->ready_db;
}
else
{
if (!dinfo->media_db)
cups_create_media_db(dinfo, CUPS_MEDIA_FLAGS_DEFAULT);
db = dinfo->media_db;
}
if (!dinfo->media_db)
cups_create_media_db(dinfo);
/*
* Find a match...
@@ -1742,7 +1309,7 @@ cups_get_media_db(http_t *http, /* I - Connection to destination */
key.width = pwg->width;
key.length = pwg->length;
if ((mdb = cupsArrayFind(db, &key)) != NULL)
if ((mdb = cupsArrayFind(dinfo->media_db, &key)) != NULL)
{
/*
* Found an exact match, let's figure out the best margins for the flags
@@ -1760,9 +1327,9 @@ cups_get_media_db(http_t *http, /* I - Connection to destination */
if (best->left != 0 || best->right != 0 || best->top != 0 ||
best->bottom != 0)
{
for (mdb = (_cups_media_db_t *)cupsArrayNext(db);
for (mdb = (_cups_media_db_t *)cupsArrayNext(dinfo->media_db);
mdb && !cups_compare_media_db(mdb, &key);
mdb = (_cups_media_db_t *)cupsArrayNext(db))
mdb = (_cups_media_db_t *)cupsArrayNext(dinfo->media_db))
{
if (mdb->left <= best->left && mdb->right <= best->right &&
mdb->top <= best->top && mdb->bottom <= best->bottom)
@@ -1790,9 +1357,9 @@ cups_get_media_db(http_t *http, /* I - Connection to destination */
* Look for the largest margins...
*/
for (mdb = (_cups_media_db_t *)cupsArrayNext(db);
for (mdb = (_cups_media_db_t *)cupsArrayNext(dinfo->media_db);
mdb && !cups_compare_media_db(mdb, &key);
mdb = (_cups_media_db_t *)cupsArrayNext(db))
mdb = (_cups_media_db_t *)cupsArrayNext(dinfo->media_db))
{
if (mdb->left >= best->left && mdb->right >= best->right &&
mdb->top >= best->top && mdb->bottom >= best->bottom)
@@ -1805,9 +1372,9 @@ cups_get_media_db(http_t *http, /* I - Connection to destination */
* Look for the smallest non-zero margins...
*/
for (mdb = (_cups_media_db_t *)cupsArrayNext(db);
for (mdb = (_cups_media_db_t *)cupsArrayNext(dinfo->media_db);
mdb && !cups_compare_media_db(mdb, &key);
mdb = (_cups_media_db_t *)cupsArrayNext(db))
mdb = (_cups_media_db_t *)cupsArrayNext(dinfo->media_db))
{
if (((mdb->left > 0 && mdb->left <= best->left) || best->left == 0) &&
((mdb->right > 0 && mdb->right <= best->right) ||
@@ -1867,9 +1434,9 @@ cups_get_media_db(http_t *http, /* I - Connection to destination */
* Find a close size...
*/
for (mdb = (_cups_media_db_t *)cupsArrayFirst(db);
for (mdb = (_cups_media_db_t *)cupsArrayFirst(dinfo->media_db);
mdb;
mdb = (_cups_media_db_t *)cupsArrayNext(db))
mdb = (_cups_media_db_t *)cupsArrayNext(dinfo->media_db))
if (cups_is_close_media_db(mdb, &key))
break;
@@ -1887,9 +1454,9 @@ cups_get_media_db(http_t *http, /* I - Connection to destination */
if (best->left != 0 || best->right != 0 || best->top != 0 ||
best->bottom != 0)
{
for (mdb = (_cups_media_db_t *)cupsArrayNext(db);
for (mdb = (_cups_media_db_t *)cupsArrayNext(dinfo->media_db);
mdb && cups_is_close_media_db(mdb, &key);
mdb = (_cups_media_db_t *)cupsArrayNext(db))
mdb = (_cups_media_db_t *)cupsArrayNext(dinfo->media_db))
{
if (mdb->left <= best->left && mdb->right <= best->right &&
mdb->top <= best->top && mdb->bottom <= best->bottom)
@@ -1908,9 +1475,9 @@ cups_get_media_db(http_t *http, /* I - Connection to destination */
* Look for the largest margins...
*/
for (mdb = (_cups_media_db_t *)cupsArrayNext(db);
for (mdb = (_cups_media_db_t *)cupsArrayNext(dinfo->media_db);
mdb && cups_is_close_media_db(mdb, &key);
mdb = (_cups_media_db_t *)cupsArrayNext(db))
mdb = (_cups_media_db_t *)cupsArrayNext(dinfo->media_db))
{
if (mdb->left >= best->left && mdb->right >= best->right &&
mdb->top >= best->top && mdb->bottom >= best->bottom)
@@ -1923,9 +1490,9 @@ cups_get_media_db(http_t *http, /* I - Connection to destination */
* Look for the smallest non-zero margins...
*/
for (mdb = (_cups_media_db_t *)cupsArrayNext(db);
for (mdb = (_cups_media_db_t *)cupsArrayNext(dinfo->media_db);
mdb && cups_is_close_media_db(mdb, &key);
mdb = (_cups_media_db_t *)cupsArrayNext(db))
mdb = (_cups_media_db_t *)cupsArrayNext(dinfo->media_db))
{
if (((mdb->left > 0 && mdb->left <= best->left) || best->left == 0) &&
((mdb->right > 0 && mdb->right <= best->right) ||
@@ -2191,81 +1758,6 @@ cups_test_constraints(
}
/*
* 'cups_update_ready()' - Update xxx-ready attributes for the printer.
*/
static void
cups_update_ready(http_t *http, /* I - Connection to destination */
cups_dinfo_t *dinfo) /* I - Destination information */
{
ipp_t *request; /* Get-Printer-Attributes request */
static const char * const pattrs[] = /* Printer attributes we want */
{
"finishings-col-ready",
"finishings-ready",
"job-finishings-col-ready",
"job-finishings-ready",
"media-col-ready",
"media-ready"
};
/*
* Don't update more than once every 30 seconds...
*/
if ((time(NULL) - dinfo->ready_time) < _CUPS_MEDIA_READY_TTL)
return;
/*
* Free any previous results...
*/
if (dinfo->cached_flags & CUPS_MEDIA_FLAGS_READY)
{
cupsArrayDelete(dinfo->cached_db);
dinfo->cached_db = NULL;
dinfo->cached_flags = CUPS_MEDIA_FLAGS_DEFAULT;
}
ippDelete(dinfo->ready_attrs);
dinfo->ready_attrs = NULL;
cupsArrayDelete(dinfo->ready_db);
dinfo->ready_db = NULL;
/*
* Query the xxx-ready values...
*/
request = ippNewRequest(IPP_OP_GET_PRINTER_ATTRIBUTES);
ippSetVersion(request, dinfo->version / 10, dinfo->version % 10);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri", NULL,
dinfo->uri);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "requesting-user-name",
NULL, cupsUser());
ippAddStrings(request, IPP_TAG_OPERATION,
IPP_TAG_KEYWORD | IPP_TAG_CUPS_CONST, "requested-attributes",
(int)(sizeof(pattrs) / sizeof(pattrs[0])), NULL, pattrs);
dinfo->ready_attrs = cupsDoRequest(http, request, dinfo->resource);
/*
* Update the ready media database...
*/
cups_create_media_db(dinfo, CUPS_MEDIA_FLAGS_READY);
/*
* Update last lookup time and return...
*/
dinfo->ready_time = time(NULL);
}
/*
* End of "$Id$".
*/
+39 -43
Ver Arquivo
@@ -3,7 +3,7 @@
*
* User-defined destination (and option) support for CUPS.
*
* Copyright 2007-2013 by Apple Inc.
* Copyright 2007-2012 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -319,8 +319,7 @@ cupsAddDest(const char *name, /* I - Destination name */
if (instance && !cupsGetDest(name, NULL, num_dests, *dests))
return (num_dests);
if ((dest = cups_add_dest(name, instance, &num_dests, dests)) == NULL)
return (num_dests);
dest = cups_add_dest(name, instance, &num_dests, dests);
/*
* Find the base dest again now the array has been realloc'd.
@@ -635,7 +634,7 @@ cupsConnectDest(
if (resource)
*resource = '\0';
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(EINVAL), 0);
_cupsSetError(IPP_INTERNAL_ERROR, strerror(EINVAL), 0);
return (NULL);
}
@@ -652,7 +651,7 @@ cupsConnectDest(
if ((uri = cupsGetOption("printer-uri-supported", dest->num_options,
dest->options)) == NULL)
{
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(ENOENT), 0);
_cupsSetError(IPP_INTERNAL_ERROR, strerror(ENOENT), 0);
if (cb)
(*cb)(user_data, CUPS_DEST_FLAGS_UNCONNECTED | CUPS_DEST_FLAGS_ERROR,
@@ -672,9 +671,9 @@ cupsConnectDest(
if (httpSeparateURI(HTTP_URI_CODING_ALL, uri, scheme, sizeof(scheme),
userpass, sizeof(userpass), hostname, sizeof(hostname),
&port, resource, resourcesize) < HTTP_URI_STATUS_OK)
&port, resource, resourcesize) < HTTP_URI_OK)
{
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad printer URI."), 1);
_cupsSetError(IPP_INTERNAL_ERROR, _("Bad printer URI."), 1);
if (cb)
(*cb)(user_data, CUPS_DEST_FLAGS_UNCONNECTED | CUPS_DEST_FLAGS_ERROR,
@@ -718,12 +717,11 @@ cupsConnectDest(
*/
if (!strcmp(scheme, "ipps") || port == 443)
encryption = HTTP_ENCRYPTION_ALWAYS;
encryption = HTTP_ENCRYPT_ALWAYS;
else
encryption = HTTP_ENCRYPTION_IF_REQUESTED;
encryption = HTTP_ENCRYPT_IF_REQUESTED;
http = httpConnect2(hostname, port, addrlist, AF_UNSPEC, encryption, 1, 0,
NULL);
http = _httpCreate(hostname, port, addrlist, encryption, AF_UNSPEC);
/*
* Connect if requested...
@@ -933,7 +931,7 @@ cupsEnumDests(
* Get the list of local printers and pass them to the callback function...
*/
num_dests = _cupsGetDests(CUPS_HTTP_DEFAULT, IPP_OP_CUPS_GET_PRINTERS, NULL, &dests,
num_dests = _cupsGetDests(CUPS_HTTP_DEFAULT, CUPS_GET_PRINTERS, NULL, &dests,
type, mask);
for (i = num_dests, dest = dests;
@@ -1301,7 +1299,7 @@ _cupsGetDestResource(
if (resource)
*resource = '\0';
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(EINVAL), 0);
_cupsSetError(IPP_INTERNAL_ERROR, strerror(EINVAL), 0);
return (NULL);
}
@@ -1315,7 +1313,7 @@ _cupsGetDestResource(
if (resource)
*resource = '\0';
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(ENOENT), 0);
_cupsSetError(IPP_INTERNAL_ERROR, strerror(ENOENT), 0);
return (NULL);
}
@@ -1330,9 +1328,9 @@ _cupsGetDestResource(
if (httpSeparateURI(HTTP_URI_CODING_ALL, uri, scheme, sizeof(scheme),
userpass, sizeof(userpass), hostname, sizeof(hostname),
&port, resource, resourcesize) < HTTP_URI_STATUS_OK)
&port, resource, resourcesize) < HTTP_URI_OK)
{
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad printer URI."), 1);
_cupsSetError(IPP_INTERNAL_ERROR, _("Bad printer URI."), 1);
return (NULL);
}
@@ -1344,12 +1342,12 @@ _cupsGetDestResource(
/*
* '_cupsGetDests()' - Get destinations from a server.
*
* "op" is IPP_OP_CUPS_GET_PRINTERS to get a full list, IPP_OP_CUPS_GET_DEFAULT to get the
* system-wide default printer, or IPP_OP_GET_PRINTER_ATTRIBUTES for a known
* "op" is CUPS_GET_PRINTERS to get a full list, CUPS_GET_DEFAULT to get the
* system-wide default printer, or IPP_GET_PRINTER_ATTRIBUTES for a known
* printer.
*
* "name" is the name of an existing printer and is only used when "op" is
* IPP_OP_GET_PRINTER_ATTRIBUTES.
* IPP_GET_PRINTER_ATTRIBUTES.
*
* "dest" is initialized to point to the array of destinations.
*
@@ -1411,7 +1409,6 @@ _cupsGetDests(http_t *http, /* I - Connection to server or
"printer-is-shared",
"printer-location",
"printer-make-and-model",
"printer-mandatory-job-attributes",
"printer-name",
"printer-state",
"printer-state-change-time",
@@ -1430,13 +1427,13 @@ _cupsGetDests(http_t *http, /* I - Connection to server or
#endif /* __APPLE__ */
/*
* Build a IPP_OP_CUPS_GET_PRINTERS or IPP_OP_GET_PRINTER_ATTRIBUTES request, which
* Build a CUPS_GET_PRINTERS or IPP_GET_PRINTER_ATTRIBUTES request, which
* require the following attributes:
*
* attributes-charset
* attributes-natural-language
* requesting-user-name
* printer-uri [for IPP_OP_GET_PRINTER_ATTRIBUTES]
* printer-uri [for IPP_GET_PRINTER_ATTRIBUTES]
*/
request = ippNewRequest(op);
@@ -1448,7 +1445,7 @@ _cupsGetDests(http_t *http, /* I - Connection to server or
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME,
"requesting-user-name", NULL, cupsUser());
if (name && op != IPP_OP_CUPS_GET_DEFAULT)
if (name && op != CUPS_GET_DEFAULT)
{
httpAssembleURIf(HTTP_URI_CODING_ALL, uri, sizeof(uri), "ipp", NULL,
"localhost", ippPort(), "/printers/%s", name);
@@ -1517,7 +1514,6 @@ _cupsGetDests(http_t *http, /* I - Connection to server or
!strcmp(attr->name, "printer-info") ||
!strcmp(attr->name, "printer-is-shared") ||
!strcmp(attr->name, "printer-make-and-model") ||
!strcmp(attr->name, "printer-mandatory-job-attributes") ||
!strcmp(attr->name, "printer-state") ||
!strcmp(attr->name, "printer-state-change-time") ||
!strcmp(attr->name, "printer-type") ||
@@ -1681,7 +1677,7 @@ cupsGetDests2(http_t *http, /* I - Connection to server or @code CUPS_HTTP_
if (!dests)
{
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad NULL dests pointer"), 1);
_cupsSetError(IPP_INTERNAL_ERROR, _("Bad NULL dests pointer"), 1);
return (0);
}
@@ -1690,9 +1686,9 @@ cupsGetDests2(http_t *http, /* I - Connection to server or @code CUPS_HTTP_
*/
*dests = (cups_dest_t *)0;
num_dests = _cupsGetDests(http, IPP_OP_CUPS_GET_PRINTERS, NULL, dests, 0, 0);
num_dests = _cupsGetDests(http, CUPS_GET_PRINTERS, NULL, dests, 0, 0);
if (cupsLastError() >= IPP_STATUS_REDIRECTION_OTHER_SITE)
if (cupsLastError() >= IPP_REDIRECTION_OTHER_SITE)
{
cupsFreeDests(num_dests, *dests);
*dests = (cups_dest_t *)0;
@@ -1813,7 +1809,7 @@ cupsGetDests2(http_t *http, /* I - Connection to server or @code CUPS_HTTP_
*/
if (num_dests > 0)
_cupsSetError(IPP_STATUS_OK, NULL, 0);
_cupsSetError(IPP_OK, NULL, 0);
return (num_dests);
}
@@ -1850,7 +1846,7 @@ cupsGetNamedDest(http_t *http, /* I - Connection to server or @code CUPS_HTT
defname[256]; /* Default printer name */
const char *home = getenv("HOME"); /* Home directory */
int set_as_default = 0; /* Set returned destination as default */
ipp_op_t op = IPP_OP_GET_PRINTER_ATTRIBUTES;
ipp_op_t op = IPP_GET_PRINTER_ATTRIBUTES;
/* IPP operation to get server ops */
_cups_globals_t *cg = _cupsGlobals(); /* Pointer to library globals */
@@ -1904,7 +1900,7 @@ cupsGetNamedDest(http_t *http, /* I - Connection to server or @code CUPS_HTT
* No locally-set default destination, ask the server...
*/
op = IPP_OP_CUPS_GET_DEFAULT;
op = CUPS_GET_DEFAULT;
}
}
@@ -1914,7 +1910,7 @@ cupsGetNamedDest(http_t *http, /* I - Connection to server or @code CUPS_HTT
if (!_cupsGetDests(http, op, name, &dest, 0, 0))
{
if (op == IPP_OP_CUPS_GET_DEFAULT || (name && !set_as_default))
if (op == CUPS_GET_DEFAULT || (name && !set_as_default))
return (NULL);
/*
@@ -1922,7 +1918,7 @@ cupsGetNamedDest(http_t *http, /* I - Connection to server or @code CUPS_HTT
* configuration file does not exist. Find out the real default.
*/
if (!_cupsGetDests(http, IPP_OP_CUPS_GET_DEFAULT, NULL, &dest, 0, 0))
if (!_cupsGetDests(http, CUPS_GET_DEFAULT, NULL, &dest, 0, 0))
return (NULL);
}
@@ -2099,9 +2095,9 @@ cupsSetDests2(http_t *http, /* I - Connection to server or @code CUPS_HTTP_
* Get the server destinations...
*/
num_temps = _cupsGetDests(http, IPP_OP_CUPS_GET_PRINTERS, NULL, &temps, 0, 0);
num_temps = _cupsGetDests(http, CUPS_GET_PRINTERS, NULL, &temps, 0, 0);
if (cupsLastError() >= IPP_STATUS_REDIRECTION_OTHER_SITE)
if (cupsLastError() >= IPP_REDIRECTION_OTHER_SITE)
{
cupsFreeDests(num_temps, temps);
return (-1);
@@ -2458,7 +2454,7 @@ appleGetPaperSize(char *name, /* I - Paper size name buffer */
int namesize) /* I - Size of buffer */
{
CFStringRef defaultPaperID; /* Default paper ID */
pwg_media_t *pwgmedia; /* PWG media size */
_pwg_media_t *pwgmedia; /* PWG media size */
defaultPaperID = _cupsAppleCopyDefaultPaperID();
@@ -2467,7 +2463,7 @@ appleGetPaperSize(char *name, /* I - Paper size name buffer */
!CFStringGetCString(defaultPaperID, name, namesize,
kCFStringEncodingUTF8))
name[0] = '\0';
else if ((pwgmedia = pwgMediaForLegacy(name)) != NULL)
else if ((pwgmedia = _pwgMediaForLegacy(name)) != NULL)
strlcpy(name, pwgmedia->pwg, namesize);
if (defaultPaperID)
@@ -3154,7 +3150,7 @@ cups_dnssd_query_cb(
device->state = _CUPS_DNSSD_PENDING;
make_and_model[0] = '\0';
strlcpy(model, "Unknown", sizeof(model));
strcpy(model, "Unknown");
for (txt = rdata, txtend = txt + rdlen;
txt < txtend;
@@ -3196,10 +3192,10 @@ cups_dnssd_query_cb(
if (!_cups_strcasecmp(key, "usb_MFG") ||
!_cups_strcasecmp(key, "usb_MANU") ||
!_cups_strcasecmp(key, "usb_MANUFACTURER"))
strlcpy(make_and_model, value, sizeof(make_and_model));
strcpy(make_and_model, value);
else if (!_cups_strcasecmp(key, "usb_MDL") ||
!_cups_strcasecmp(key, "usb_MODEL"))
strlcpy(model, value, sizeof(model));
strcpy(model, value);
else if (!_cups_strcasecmp(key, "product") && !strstr(value, "Ghostscript"))
{
if (value[0] == '(')
@@ -3211,14 +3207,14 @@ cups_dnssd_query_cb(
if ((ptr = value + strlen(value) - 1) > value && *ptr == ')')
*ptr = '\0';
strlcpy(model, value + 1, sizeof(model));
strcpy(model, value + 1);
}
else
strlcpy(model, value, sizeof(model));
strcpy(model, value);
}
else if (!_cups_strcasecmp(key, "ty"))
{
strlcpy(model, value, sizeof(model));
strcpy(model, value);
if ((ptr = strchr(model, ',')) != NULL)
*ptr = '\0';
@@ -3407,7 +3403,7 @@ cups_dnssd_resolve(
_HTTP_RESOLVE_FQDN, cups_dnssd_resolve_cb,
&resolve)) == NULL)
{
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Unable to resolve printer URI."), 1);
_cupsSetError(IPP_INTERNAL_ERROR, _("Unable to resolve printer URI."), 1);
if (cb)
(*cb)(user_data, CUPS_DEST_FLAGS_UNCONNECTED | CUPS_DEST_FLAGS_ERROR,
+27 -239
Ver Arquivo
@@ -3,7 +3,7 @@
*
* Option encoding routines for CUPS.
*
* Copyright 2007-2013 by Apple Inc.
* Copyright 2007-2012 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -31,104 +31,14 @@
/*
* Local list of option names, the value tags they should use, and the list of
* supported operations...
* Local list of option names and the value tags they should use...
*
* **** THIS LIST MUST BE SORTED BY ATTRIBUTE NAME ****
* **** THIS LIST MUST BE SORTED ****
*/
static const ipp_op_t ipp_job_creation[] =
{
IPP_OP_PRINT_JOB,
IPP_OP_PRINT_URI,
IPP_OP_CREATE_JOB,
IPP_OP_CUPS_NONE
};
static const ipp_op_t ipp_doc_creation[] =
{
IPP_OP_PRINT_JOB,
IPP_OP_PRINT_URI,
IPP_OP_SEND_DOCUMENT,
IPP_OP_SEND_URI,
IPP_OP_CUPS_NONE
};
static const ipp_op_t ipp_sub_creation[] =
{
IPP_OP_PRINT_JOB,
IPP_OP_PRINT_URI,
IPP_OP_CREATE_JOB,
IPP_OP_CREATE_PRINTER_SUBSCRIPTION,
IPP_OP_CREATE_JOB_SUBSCRIPTION,
IPP_OP_CUPS_NONE
};
static const ipp_op_t ipp_all_print[] =
{
IPP_OP_PRINT_JOB,
IPP_OP_PRINT_URI,
IPP_OP_CREATE_JOB,
IPP_OP_SEND_DOCUMENT,
IPP_OP_SEND_URI,
IPP_OP_CUPS_NONE
};
static const ipp_op_t ipp_all_limit[] =
{
IPP_OP_GET_JOBS,
IPP_OP_GET_PRINTER_ATTRIBUTES,
IPP_OP_CUPS_GET_PRINTERS,
IPP_OP_CUPS_GET_CLASSES,
IPP_OP_CUPS_GET_DEVICES,
IPP_OP_CUPS_GET_PPDS,
IPP_OP_CUPS_NONE
};
static const ipp_op_t ipp_set_printer[] =
{
IPP_OP_SET_PRINTER_ATTRIBUTES,
IPP_OP_CUPS_ADD_MODIFY_PRINTER,
IPP_OP_CUPS_ADD_MODIFY_CLASS,
IPP_OP_CUPS_NONE
};
static const ipp_op_t cups_am_class[] =
{
IPP_OP_CUPS_ADD_MODIFY_CLASS,
IPP_OP_CUPS_NONE
};
static const ipp_op_t cups_am_printer[] =
{
IPP_OP_CUPS_ADD_MODIFY_PRINTER,
IPP_OP_CUPS_NONE
};
static const ipp_op_t cups_schemes[] =
{
IPP_OP_CUPS_GET_DEVICES,
IPP_OP_CUPS_GET_PPDS,
IPP_OP_CUPS_NONE
};
static const ipp_op_t cups_get_ppds[] =
{
IPP_OP_CUPS_GET_PPDS,
IPP_OP_CUPS_NONE
};
static const ipp_op_t cups_ppd_name[] =
{
IPP_OP_CUPS_ADD_MODIFY_PRINTER,
IPP_OP_CUPS_GET_PPD,
IPP_OP_CUPS_NONE
};
static const _ipp_option_t ipp_options[] =
{
{ 1, "auth-info", IPP_TAG_TEXT, IPP_TAG_JOB },
{ 1, "auth-info-default", IPP_TAG_TEXT, IPP_TAG_PRINTER },
{ 1, "auth-info-required", IPP_TAG_KEYWORD, IPP_TAG_PRINTER },
{ 0, "blackplot", IPP_TAG_BOOLEAN, IPP_TAG_JOB },
{ 0, "blackplot-default", IPP_TAG_BOOLEAN, IPP_TAG_PRINTER },
@@ -136,26 +46,18 @@ static const _ipp_option_t ipp_options[] =
{ 0, "brightness-default", IPP_TAG_INTEGER, IPP_TAG_PRINTER },
{ 0, "columns", IPP_TAG_INTEGER, IPP_TAG_JOB },
{ 0, "columns-default", IPP_TAG_INTEGER, IPP_TAG_PRINTER },
{ 0, "compression", IPP_TAG_KEYWORD, IPP_TAG_OPERATION,
IPP_TAG_ZERO,
ipp_doc_creation },
{ 0, "compression", IPP_TAG_KEYWORD, IPP_TAG_OPERATION },
{ 0, "copies", IPP_TAG_INTEGER, IPP_TAG_JOB,
IPP_TAG_DOCUMENT },
{ 0, "copies-default", IPP_TAG_INTEGER, IPP_TAG_PRINTER },
{ 0, "device-uri", IPP_TAG_URI, IPP_TAG_PRINTER },
{ 1, "document-copies", IPP_TAG_RANGE, IPP_TAG_JOB,
IPP_TAG_DOCUMENT,
ipp_doc_creation },
{ 0, "document-format", IPP_TAG_MIMETYPE, IPP_TAG_OPERATION,
IPP_TAG_ZERO,
ipp_doc_creation },
IPP_TAG_DOCUMENT },
{ 0, "document-format", IPP_TAG_MIMETYPE, IPP_TAG_OPERATION },
{ 0, "document-format-default", IPP_TAG_MIMETYPE, IPP_TAG_PRINTER },
{ 1, "document-numbers", IPP_TAG_RANGE, IPP_TAG_JOB,
IPP_TAG_DOCUMENT,
ipp_all_print },
{ 1, "exclude-schemes", IPP_TAG_NAME, IPP_TAG_OPERATION,
IPP_TAG_ZERO,
cups_schemes },
IPP_TAG_DOCUMENT },
{ 1, "exclude-schemes", IPP_TAG_NAME, IPP_TAG_OPERATION },
{ 1, "finishings", IPP_TAG_ENUM, IPP_TAG_JOB,
IPP_TAG_DOCUMENT },
{ 1, "finishings-default", IPP_TAG_ENUM, IPP_TAG_PRINTER },
@@ -168,15 +70,7 @@ static const _ipp_option_t ipp_options[] =
{ 0, "gamma-default", IPP_TAG_INTEGER, IPP_TAG_PRINTER },
{ 0, "hue", IPP_TAG_INTEGER, IPP_TAG_JOB },
{ 0, "hue-default", IPP_TAG_INTEGER, IPP_TAG_PRINTER },
{ 1, "include-schemes", IPP_TAG_NAME, IPP_TAG_OPERATION,
IPP_TAG_ZERO,
cups_schemes },
{ 0, "job-account-id", IPP_TAG_NAME, IPP_TAG_JOB },
{ 0, "job-account-id-default",IPP_TAG_NAME, IPP_TAG_PRINTER },
{ 0, "job-accounting-user-id", IPP_TAG_NAME, IPP_TAG_JOB },
{ 0, "job-accounting-user-id-default", IPP_TAG_NAME, IPP_TAG_PRINTER },
{ 0, "job-authorization-uri", IPP_TAG_URI, IPP_TAG_OPERATION },
{ 0, "job-hold-until", IPP_TAG_KEYWORD, IPP_TAG_JOB },
{ 1, "include-schemes", IPP_TAG_NAME, IPP_TAG_OPERATION },
{ 0, "job-id", IPP_TAG_INTEGER, IPP_TAG_ZERO }, /* never send as option */
{ 0, "job-impressions", IPP_TAG_INTEGER, IPP_TAG_ZERO }, /* never send as option */
{ 0, "job-impressions-completed", IPP_TAG_INTEGER, IPP_TAG_ZERO }, /* never send as option */
@@ -186,12 +80,6 @@ static const _ipp_option_t ipp_options[] =
{ 0, "job-media-sheets", IPP_TAG_INTEGER, IPP_TAG_ZERO }, /* never send as option */
{ 0, "job-media-sheets-completed", IPP_TAG_INTEGER, IPP_TAG_ZERO }, /* never send as option */
{ 0, "job-page-limit", IPP_TAG_INTEGER, IPP_TAG_PRINTER },
{ 0, "job-password", IPP_TAG_STRING, IPP_TAG_OPERATION,
IPP_TAG_ZERO,
ipp_job_creation },
{ 0, "job-password-encryption", IPP_TAG_KEYWORD, IPP_TAG_OPERATION,
IPP_TAG_ZERO,
ipp_job_creation },
{ 0, "job-priority", IPP_TAG_INTEGER, IPP_TAG_JOB },
{ 0, "job-quota-period", IPP_TAG_INTEGER, IPP_TAG_PRINTER },
{ 1, "job-sheets", IPP_TAG_NAME, IPP_TAG_JOB },
@@ -261,33 +149,7 @@ static const _ipp_option_t ipp_options[] =
{ 0, "penwidth", IPP_TAG_INTEGER, IPP_TAG_JOB },
{ 0, "penwidth-default", IPP_TAG_INTEGER, IPP_TAG_PRINTER },
{ 0, "port-monitor", IPP_TAG_NAME, IPP_TAG_PRINTER },
{ 0, "ppd-device-id", IPP_TAG_TEXT, IPP_TAG_OPERATION,
IPP_TAG_ZERO,
cups_get_ppds },
{ 0, "ppd-make", IPP_TAG_TEXT, IPP_TAG_OPERATION,
IPP_TAG_ZERO,
cups_get_ppds },
{ 0, "ppd-make-and-model", IPP_TAG_TEXT, IPP_TAG_OPERATION,
IPP_TAG_ZERO,
cups_get_ppds },
{ 0, "ppd-model-number", IPP_TAG_INTEGER, IPP_TAG_OPERATION,
IPP_TAG_ZERO,
cups_get_ppds },
{ 0, "ppd-name", IPP_TAG_NAME, IPP_TAG_OPERATION,
IPP_TAG_ZERO,
cups_ppd_name },
{ 0, "ppd-natural-language", IPP_TAG_LANGUAGE, IPP_TAG_OPERATION,
IPP_TAG_ZERO,
cups_get_ppds },
{ 0, "ppd-product", IPP_TAG_TEXT, IPP_TAG_OPERATION,
IPP_TAG_ZERO,
cups_get_ppds },
{ 0, "ppd-psversion", IPP_TAG_TEXT, IPP_TAG_OPERATION,
IPP_TAG_ZERO,
cups_get_ppds },
{ 0, "ppd-type", IPP_TAG_KEYWORD, IPP_TAG_OPERATION,
IPP_TAG_ZERO,
cups_get_ppds },
{ 0, "ppd-name", IPP_TAG_NAME, IPP_TAG_PRINTER },
{ 0, "ppi", IPP_TAG_INTEGER, IPP_TAG_JOB },
{ 0, "ppi-default", IPP_TAG_INTEGER, IPP_TAG_PRINTER },
{ 0, "prettyprint", IPP_TAG_BOOLEAN, IPP_TAG_JOB },
@@ -387,27 +249,23 @@ cupsEncodeOptions2(
cups_option_t *options, /* I - Options */
ipp_tag_t group_tag) /* I - Group to encode */
{
int i, j; /* Looping vars */
int count; /* Number of values */
char *s, /* Pointer into option value */
*val, /* Pointer to option value */
*copy, /* Copy of option value */
*sep, /* Option separator */
quote; /* Quote character */
ipp_attribute_t *attr; /* IPP attribute */
ipp_tag_t value_tag; /* IPP value tag */
cups_option_t *option; /* Current option */
ipp_t *collection; /* Collection value */
int num_cols; /* Number of collection values */
cups_option_t *cols; /* Collection values */
ipp_op_t op; /* Operation for this request */
const ipp_op_t *ops; /* List of allowed operations */
int i, j; /* Looping vars */
int count; /* Number of values */
char *s, /* Pointer into option value */
*val, /* Pointer to option value */
*copy, /* Copy of option value */
*sep, /* Option separator */
quote; /* Quote character */
ipp_attribute_t *attr; /* IPP attribute */
ipp_tag_t value_tag; /* IPP value tag */
cups_option_t *option; /* Current option */
ipp_t *collection; /* Collection value */
int num_cols; /* Number of collection values */
cups_option_t *cols; /* Collection values */
DEBUG_printf(("cupsEncodeOptions2(ipp=%p(%s), num_options=%d, options=%p, "
"group_tag=%x)", ipp,
ipp ? ippOpString(ippGetOperation(ipp)) : "", num_options,
options, group_tag));
DEBUG_printf(("cupsEncodeOptions2(ipp=%p, num_options=%d, options=%p, "
"group_tag=%x)", ipp, num_options, options, group_tag));
/*
* Range check input...
@@ -420,18 +278,13 @@ cupsEncodeOptions2(
* Do special handling for the document-format/raw options...
*/
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)
{
/*
* Handle the document format stuff first...
*/
if ((val = (char *)cupsGetOption("document-format", num_options,
options)) != NULL)
if ((val = (char *)cupsGetOption("document-format", num_options, options)) != NULL)
ippAddString(ipp, IPP_TAG_OPERATION, IPP_TAG_MIMETYPE, "document-format",
NULL, val);
else if (cupsGetOption("raw", num_options, options))
@@ -470,22 +323,6 @@ cupsEncodeOptions2(
continue;
value_tag = match->value_tag;
if (match->operations)
ops = match->operations;
else if (group_tag == IPP_TAG_JOB)
ops = ipp_job_creation;
else if (group_tag == IPP_TAG_DOCUMENT)
ops = ipp_doc_creation;
else if (group_tag == IPP_TAG_SUBSCRIPTION)
ops = ipp_sub_creation;
else if (group_tag == IPP_TAG_PRINTER)
ops = ipp_set_printer;
else
{
DEBUG_printf(("2cupsEncodeOptions2: Skipping \"%s\".", option->name));
continue;
}
}
else
{
@@ -499,23 +336,10 @@ cupsEncodeOptions2(
strcmp(option->name + namelen - 10, "-supported")))
{
if (group_tag != IPP_TAG_JOB && group_tag != IPP_TAG_DOCUMENT)
{
DEBUG_printf(("2cupsEncodeOptions2: Skipping \"%s\".", option->name));
continue;
}
}
else if (group_tag != IPP_TAG_PRINTER)
{
DEBUG_printf(("2cupsEncodeOptions2: Skipping \"%s\".", option->name));
continue;
}
if (group_tag == IPP_TAG_JOB)
ops = ipp_job_creation;
else if (group_tag == IPP_TAG_DOCUMENT)
ops = ipp_doc_creation;
else
ops = ipp_set_printer;
if (!_cups_strcasecmp(option->value, "true") ||
!_cups_strcasecmp(option->value, "false"))
@@ -524,22 +348,6 @@ cupsEncodeOptions2(
value_tag = IPP_TAG_NAME;
}
/*
* Verify that we send this attribute for this operation...
*/
while (*ops != IPP_OP_CUPS_NONE)
if (op == *ops)
break;
else
ops ++;
if (*ops == IPP_OP_CUPS_NONE)
{
DEBUG_printf(("2cupsEncodeOptions2: Skipping \"%s\".", option->name));
continue;
}
/*
* Count the number of values...
*/
@@ -815,26 +623,6 @@ cupsEncodeOptions2(
}
#ifdef DEBUG
/*
* '_ippCheckOptions()' - Validate that the option array is sorted properly.
*/
const char * /* O - First out-of-order option or NULL */
_ippCheckOptions(void)
{
int i; /* Looping var */
for (i = 0; i < (int)(sizeof(ipp_options) / sizeof(ipp_options[0]) - 1); i ++)
if (strcmp(ipp_options[i].name, ipp_options[i + 1].name) >= 0)
return (ipp_options[i + 1].name);
return (NULL);
}
#endif /* DEBUG */
/*
* '_ippFindOption()' - Find the attribute information for an option.
*/
+18 -19
Ver Arquivo
@@ -3,7 +3,7 @@
*
* cupsGetDevices implementation for CUPS.
*
* Copyright 2008-2013 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
@@ -71,19 +71,19 @@ cupsGetDevices(
user_data));
if (!callback)
return (IPP_STATUS_ERROR_INTERNAL);
return (IPP_INTERNAL_ERROR);
if (!http)
http = _cupsConnect();
if (!http)
return (IPP_STATUS_ERROR_SERVICE_UNAVAILABLE);
return (IPP_SERVICE_UNAVAILABLE);
/*
* Create a CUPS-Get-Devices request...
*/
request = ippNewRequest(IPP_OP_CUPS_GET_DEVICES);
request = ippNewRequest(CUPS_GET_DEVICES);
if (timeout > 0)
ippAddInteger(request, IPP_TAG_OPERATION, IPP_TAG_INTEGER, "timeout",
@@ -115,14 +115,14 @@ cupsGetDevices(
status = cupsSendRequest(http, request, "/", ippLength(request));
DEBUG_puts("2cupsGetDevices: Waiting for response status...");
while (status == HTTP_STATUS_CONTINUE)
while (status == HTTP_CONTINUE)
status = httpUpdate(http);
if (status != HTTP_STATUS_OK)
if (status != HTTP_OK)
{
httpFlush(http);
if (status == HTTP_STATUS_UNAUTHORIZED)
if (status == HTTP_UNAUTHORIZED)
{
/*
* See if we can do authentication...
@@ -131,16 +131,16 @@ cupsGetDevices(
DEBUG_puts("2cupsGetDevices: Need authorization...");
if (!cupsDoAuthentication(http, "POST", "/"))
httpReconnect2(http, 30000, NULL);
httpReconnect(http);
else
{
status = HTTP_STATUS_CUPS_AUTHORIZATION_CANCELED;
status = HTTP_AUTHORIZATION_CANCELED;
break;
}
}
#ifdef HAVE_SSL
else if (status == HTTP_STATUS_UPGRADE_REQUIRED)
else if (status == HTTP_UPGRADE_REQUIRED)
{
/*
* Force a reconnect with encryption...
@@ -148,20 +148,19 @@ cupsGetDevices(
DEBUG_puts("2cupsGetDevices: Need encryption...");
if (!httpReconnect2(http, 30000, NULL))
httpEncryption(http, HTTP_ENCRYPTION_REQUIRED);
if (!httpReconnect(http))
httpEncryption(http, HTTP_ENCRYPT_REQUIRED);
}
#endif /* HAVE_SSL */
}
}
while (status == HTTP_STATUS_UNAUTHORIZED ||
status == HTTP_STATUS_UPGRADE_REQUIRED);
while (status == HTTP_UNAUTHORIZED || status == HTTP_UPGRADE_REQUIRED);
DEBUG_printf(("2cupsGetDevices: status=%d", status));
ippDelete(request);
if (status != HTTP_STATUS_OK)
if (status != HTTP_OK)
{
_cupsSetHTTPError(status);
return (cupsLastError());
@@ -187,7 +186,7 @@ cupsGetDevices(
do
{
if ((state = ippRead(http, response)) == IPP_STATE_ERROR)
if ((state = ippRead(http, response)) == IPP_ERROR)
break;
DEBUG_printf(("2cupsGetDevices: state=%d, response->last=%p", state,
@@ -241,7 +240,7 @@ cupsGetDevices(
device_uri = attr->values[0].string.text;
}
}
while (state != IPP_STATE_DATA);
while (state != IPP_DATA);
DEBUG_printf(("2cupsGetDevices: state=%d, response->last=%p", state,
response->last));
@@ -258,8 +257,8 @@ cupsGetDevices(
httpBlocking(http, blocking);
httpFlush(http);
if (status == HTTP_STATUS_ERROR)
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(http->error), 0);
if (status == HTTP_ERROR)
_cupsSetError(IPP_INTERNAL_ERROR, strerror(http->error), 0);
else
{
attr = ippFindAttribute(response, "status-message", IPP_TAG_TEXT);
+50 -50
Ver Arquivo
@@ -3,7 +3,7 @@
*
* Get/put file functions for CUPS.
*
* Copyright 2007-2013 by Apple Inc.
* Copyright 2007-2012 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -39,7 +39,7 @@
/*
* 'cupsGetFd()' - Get a file from the server.
*
* This function returns @code HTTP_STATUS_OK@ when the file is successfully retrieved.
* This function returns @code HTTP_OK@ when the file is successfully retrieved.
*
* @since CUPS 1.1.20/OS X 10.4@
*/
@@ -68,12 +68,12 @@ cupsGetFd(http_t *http, /* I - Connection to server or @code CUPS_HTTP_DEFA
if (http)
http->error = EINVAL;
return (HTTP_STATUS_ERROR);
return (HTTP_ERROR);
}
if (!http)
if ((http = _cupsConnect()) == NULL)
return (HTTP_STATUS_SERVICE_UNAVAILABLE);
return (HTTP_SERVICE_UNAVAILABLE);
/*
* Then send GET requests to the HTTP server...
@@ -90,21 +90,21 @@ cupsGetFd(http_t *http, /* I - Connection to server or @code CUPS_HTTP_DEFA
if (httpGet(http, resource))
{
if (httpReconnect2(http, 30000, NULL))
if (httpReconnect(http))
{
status = HTTP_STATUS_ERROR;
status = HTTP_ERROR;
break;
}
else
{
status = HTTP_STATUS_UNAUTHORIZED;
status = HTTP_UNAUTHORIZED;
continue;
}
}
while ((status = httpUpdate(http)) == HTTP_STATUS_CONTINUE);
while ((status = httpUpdate(http)) == HTTP_CONTINUE);
if (status == HTTP_STATUS_UNAUTHORIZED)
if (status == HTTP_UNAUTHORIZED)
{
/*
* Flush any error message...
@@ -118,46 +118,46 @@ cupsGetFd(http_t *http, /* I - Connection to server or @code CUPS_HTTP_DEFA
if (cupsDoAuthentication(http, "GET", resource))
{
status = HTTP_STATUS_CUPS_AUTHORIZATION_CANCELED;
status = HTTP_AUTHORIZATION_CANCELED;
break;
}
if (httpReconnect2(http, 30000, NULL))
if (httpReconnect(http))
{
status = HTTP_STATUS_ERROR;
status = HTTP_ERROR;
break;
}
continue;
}
#ifdef HAVE_SSL
else if (status == HTTP_STATUS_UPGRADE_REQUIRED)
else if (status == HTTP_UPGRADE_REQUIRED)
{
/* Flush any error message... */
httpFlush(http);
/* Reconnect... */
if (httpReconnect2(http, 30000, NULL))
if (httpReconnect(http))
{
status = HTTP_STATUS_ERROR;
status = HTTP_ERROR;
break;
}
/* Upgrade with encryption... */
httpEncryption(http, HTTP_ENCRYPTION_REQUIRED);
httpEncryption(http, HTTP_ENCRYPT_REQUIRED);
/* Try again, this time with encryption enabled... */
continue;
}
#endif /* HAVE_SSL */
}
while (status == HTTP_STATUS_UNAUTHORIZED || status == HTTP_STATUS_UPGRADE_REQUIRED);
while (status == HTTP_UNAUTHORIZED || status == HTTP_UPGRADE_REQUIRED);
/*
* See if we actually got the file or an error...
*/
if (status == HTTP_STATUS_OK)
if (status == HTTP_OK)
{
/*
* Yes, copy the file...
@@ -185,7 +185,7 @@ cupsGetFd(http_t *http, /* I - Connection to server or @code CUPS_HTTP_DEFA
/*
* 'cupsGetFile()' - Get a file from the server.
*
* This function returns @code HTTP_STATUS_OK@ when the file is successfully retrieved.
* This function returns @code HTTP_OK@ when the file is successfully retrieved.
*
* @since CUPS 1.1.20/OS X 10.4@
*/
@@ -208,7 +208,7 @@ cupsGetFile(http_t *http, /* I - Connection to server or @code CUPS_HTTP_DE
if (http)
http->error = EINVAL;
return (HTTP_STATUS_ERROR);
return (HTTP_ERROR);
}
/*
@@ -223,7 +223,7 @@ cupsGetFile(http_t *http, /* I - Connection to server or @code CUPS_HTTP_DE
http->error = errno;
return (HTTP_STATUS_ERROR);
return (HTTP_ERROR);
}
/*
@@ -238,7 +238,7 @@ cupsGetFile(http_t *http, /* I - Connection to server or @code CUPS_HTTP_DE
close(fd);
if (status != HTTP_STATUS_OK)
if (status != HTTP_OK)
unlink(filename);
/*
@@ -252,7 +252,7 @@ cupsGetFile(http_t *http, /* I - Connection to server or @code CUPS_HTTP_DE
/*
* 'cupsPutFd()' - Put a file on the server.
*
* This function returns @code HTTP_STATUS_CREATED@ when the file is stored
* This function returns @code HTTP_CREATED@ when the file is stored
* successfully.
*
* @since CUPS 1.1.20/OS X 10.4@
@@ -281,12 +281,12 @@ cupsPutFd(http_t *http, /* I - Connection to server or @code CUPS_HTTP_DEFA
if (http)
http->error = EINVAL;
return (HTTP_STATUS_ERROR);
return (HTTP_ERROR);
}
if (!http)
if ((http = _cupsConnect()) == NULL)
return (HTTP_STATUS_SERVICE_UNAVAILABLE);
return (HTTP_SERVICE_UNAVAILABLE);
/*
* Then send PUT requests to the HTTP server...
@@ -302,18 +302,18 @@ cupsPutFd(http_t *http, /* I - Connection to server or @code CUPS_HTTP_DEFA
httpClearFields(http);
httpSetField(http, HTTP_FIELD_AUTHORIZATION, http->authstring);
httpSetField(http, HTTP_FIELD_TRANSFER_ENCODING, "chunked");
httpSetExpect(http, HTTP_STATUS_CONTINUE);
httpSetExpect(http, HTTP_CONTINUE);
if (httpPut(http, resource))
{
if (httpReconnect2(http, 30000, NULL))
if (httpReconnect(http))
{
status = HTTP_STATUS_ERROR;
status = HTTP_ERROR;
break;
}
else
{
status = HTTP_STATUS_UNAUTHORIZED;
status = HTTP_UNAUTHORIZED;
continue;
}
}
@@ -325,9 +325,9 @@ cupsPutFd(http_t *http, /* I - Connection to server or @code CUPS_HTTP_DEFA
if (httpWait(http, 1000))
status = httpUpdate(http);
else
status = HTTP_STATUS_CONTINUE;
status = HTTP_CONTINUE;
if (status == HTTP_STATUS_CONTINUE)
if (status == HTTP_CONTINUE)
{
/*
* Copy the file...
@@ -338,21 +338,21 @@ cupsPutFd(http_t *http, /* I - Connection to server or @code CUPS_HTTP_DEFA
while ((bytes = read(fd, buffer, sizeof(buffer))) > 0)
if (httpCheck(http))
{
if ((status = httpUpdate(http)) != HTTP_STATUS_CONTINUE)
if ((status = httpUpdate(http)) != HTTP_CONTINUE)
break;
}
else
httpWrite2(http, buffer, bytes);
}
if (status == HTTP_STATUS_CONTINUE)
if (status == HTTP_CONTINUE)
{
httpWrite2(http, buffer, 0);
while ((status = httpUpdate(http)) == HTTP_STATUS_CONTINUE);
while ((status = httpUpdate(http)) == HTTP_CONTINUE);
}
if (status == HTTP_STATUS_ERROR && !retries)
if (status == HTTP_ERROR && !retries)
{
DEBUG_printf(("2cupsPutFd: retry on status %d", status));
@@ -362,9 +362,9 @@ cupsPutFd(http_t *http, /* I - Connection to server or @code CUPS_HTTP_DEFA
httpFlush(http);
/* Reconnect... */
if (httpReconnect2(http, 30000, NULL))
if (httpReconnect(http))
{
status = HTTP_STATUS_ERROR;
status = HTTP_ERROR;
break;
}
@@ -374,7 +374,7 @@ cupsPutFd(http_t *http, /* I - Connection to server or @code CUPS_HTTP_DEFA
DEBUG_printf(("2cupsPutFd: status=%d", status));
if (status == HTTP_STATUS_UNAUTHORIZED)
if (status == HTTP_UNAUTHORIZED)
{
/*
* Flush any error message...
@@ -388,47 +388,47 @@ cupsPutFd(http_t *http, /* I - Connection to server or @code CUPS_HTTP_DEFA
if (cupsDoAuthentication(http, "PUT", resource))
{
status = HTTP_STATUS_CUPS_AUTHORIZATION_CANCELED;
status = HTTP_AUTHORIZATION_CANCELED;
break;
}
if (httpReconnect2(http, 30000, NULL))
if (httpReconnect(http))
{
status = HTTP_STATUS_ERROR;
status = HTTP_ERROR;
break;
}
continue;
}
#ifdef HAVE_SSL
else if (status == HTTP_STATUS_UPGRADE_REQUIRED)
else if (status == HTTP_UPGRADE_REQUIRED)
{
/* Flush any error message... */
httpFlush(http);
/* Reconnect... */
if (httpReconnect2(http, 30000, NULL))
if (httpReconnect(http))
{
status = HTTP_STATUS_ERROR;
status = HTTP_ERROR;
break;
}
/* Upgrade with encryption... */
httpEncryption(http, HTTP_ENCRYPTION_REQUIRED);
httpEncryption(http, HTTP_ENCRYPT_REQUIRED);
/* Try again, this time with encryption enabled... */
continue;
}
#endif /* HAVE_SSL */
}
while (status == HTTP_STATUS_UNAUTHORIZED || status == HTTP_STATUS_UPGRADE_REQUIRED ||
(status == HTTP_STATUS_ERROR && retries < 2));
while (status == HTTP_UNAUTHORIZED || status == HTTP_UPGRADE_REQUIRED ||
(status == HTTP_ERROR && retries < 2));
/*
* See if we actually put the file or an error...
*/
if (status != HTTP_STATUS_CREATED)
if (status != HTTP_CREATED)
{
_cupsSetHTTPError(status);
httpFlush(http);
@@ -467,7 +467,7 @@ cupsPutFile(http_t *http, /* I - Connection to server or @code CUPS_HTTP_DE
if (http)
http->error = EINVAL;
return (HTTP_STATUS_ERROR);
return (HTTP_ERROR);
}
/*
@@ -482,7 +482,7 @@ cupsPutFile(http_t *http, /* I - Connection to server or @code CUPS_HTTP_DE
http->error = errno;
return (HTTP_STATUS_ERROR);
return (HTTP_ERROR);
}
/*
+1 -13
Ver Arquivo
@@ -38,10 +38,6 @@
*/
#ifdef DEBUG
static int cups_global_index = 0;
/* Next thread number */
#endif /* DEBUG */
static _cups_threadkey_t cups_globals_key = _CUPS_THREADKEY_INITIALIZER;
/* Thread local storage key */
#ifdef HAVE_PTHREAD_H
@@ -221,14 +217,6 @@ cups_globals_alloc(void)
cg->expired_root = 1;
cg->server_version = 20;
#ifdef DEBUG
/*
* Friendly thread ID for debugging...
*/
cg->thread_id = ++ cups_global_index;
#endif /* DEBUG */
/*
* Then set directories as appropriate...
*/
@@ -240,7 +228,7 @@ cups_globals_alloc(void)
* Open the registry...
*/
strlcpy(installdir, "C:/Program Files/cups.org", sizeof(installdir));
strcpy(installdir, "C:/Program Files/cups.org");
if (!RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\cups.org", 0, KEY_READ,
&key))
+20 -90
Ver Arquivo
@@ -3,7 +3,7 @@
*
* HTTP address routines for CUPS.
*
* Copyright 2007-2013 by Apple Inc.
* Copyright 2007-2012 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
@@ -14,19 +14,16 @@
*
* Contents:
*
* httpAddrAny() - Check for the "any" address.
* httpAddrEqual() - Compare two addresses.
* httpAddrLength() - Return the length of the address in bytes.
* httpAddrListen() - Create a listening socket bound to the specified
* address and port.
* httpAddrAny() - Check for the "any" address.
* httpAddrEqual() - Compare two addresses.
* httpAddrLocalhost() - Check for the local loopback address.
* httpAddrLookup() - Lookup the hostname associated with the address.
* httpAddrPort() - Get the port number associated with an address.
* httpAddrLookup() - Lookup the hostname associated with the address.
* _httpAddrPort() - Get the port number associated with an address.
* _httpAddrSetPort() - Set the port number associated with an address.
* httpAddrString() - Convert an address to a numeric string.
* httpGetHostByName() - Lookup a hostname or IPv4 address, and return
* address records for the specified name.
* httpGetHostname() - Get the FQDN for the connection or local system.
* httpAddrString() - Convert an IP address to a dotted string.
* httpGetHostByName() - Lookup a hostname or IP address, and return
* address records for the specified name.
* httpGetHostname() - Get the FQDN for the local system.
*/
/*
@@ -133,75 +130,6 @@ httpAddrLength(const http_addr_t *addr) /* I - Address */
}
/*
* 'httpAddrListen()' - Create a listening socket bound to the specified
* address and port.
*
* @since CUPS 1.7@
*/
int /* O - Socket or -1 on error */
httpAddrListen(http_addr_t *addr, /* I - Address to bind to */
int port) /* I - Port number to bind to */
{
int fd = -1, /* Socket */
val; /* Socket value */
/*
* Range check input...
*/
if (!addr || port <= 0)
return (-1);
if ((fd = socket(addr->addr.sa_family, SOCK_STREAM, 0)) < 0)
{
_cupsSetHTTPError(HTTP_STATUS_ERROR);
return (-1);
}
val = 1;
setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, CUPS_SOCAST &val, sizeof(val));
#ifdef IPV6_V6ONLY
if (addr->addr.sa_family == AF_INET6)
setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, CUPS_SOCAST &val, sizeof(val));
#endif /* IPV6_V6ONLY */
_httpAddrSetPort(addr, port);
if (bind(fd, (struct sockaddr *)addr, httpAddrLength(addr)))
{
_cupsSetHTTPError(HTTP_STATUS_ERROR);
close(fd);
return (-1);
}
if (listen(fd, 5))
{
_cupsSetHTTPError(HTTP_STATUS_ERROR);
close(fd);
return (-1);
}
#ifdef SO_NOSIGPIPE
/*
* Disable SIGPIPE for this socket.
*/
val = 1;
setsockopt(fd, SOL_SOCKET, SO_NOSIGPIPE, CUPS_SOCAST &val, sizeof(val));
#endif /* SO_NOSIGPIPE */
return (fd);
}
/*
* 'httpAddrLocalhost()' - Check for the local loopback address.
*
@@ -234,6 +162,13 @@ httpAddrLocalhost(
}
#ifdef __sgi
# define ADDR_CAST (struct sockaddr *)
#else
# define ADDR_CAST (char *)
#endif /* __sgi */
/*
* 'httpAddrLookup()' - Lookup the hostname associated with the address.
*
@@ -332,11 +267,11 @@ httpAddrLookup(
# ifdef AF_INET6
if (addr->addr.sa_family == AF_INET6)
host = gethostbyaddr((char *)&(addr->ipv6.sin6_addr),
host = gethostbyaddr(ADDR_CAST &(addr->ipv6.sin6_addr),
sizeof(struct in_addr), AF_INET6);
else
# endif /* AF_INET6 */
host = gethostbyaddr((char *)&(addr->ipv4.sin_addr),
host = gethostbyaddr(ADDR_CAST &(addr->ipv4.sin_addr),
sizeof(struct in_addr), AF_INET);
if (host == NULL)
@@ -362,13 +297,11 @@ httpAddrLookup(
/*
* 'httpAddrPort()' - Get the port number associated with an address.
*
* @since CUPS 1.7@
* '_httpAddrPort()' - Get the port number associated with an address.
*/
int /* O - Port number */
httpAddrPort(http_addr_t *addr) /* I - Address */
_httpAddrPort(http_addr_t *addr) /* I - Address */
{
if (!addr)
return (ippPort());
@@ -382,9 +315,6 @@ httpAddrPort(http_addr_t *addr) /* I - Address */
return (ippPort());
}
/* For OS X 10.8 and earlier */
int _httpAddrPort(http_addr_t *addr) { return (httpAddrPort(addr)); }
/*
* '_httpAddrSetPort()' - Set the port number associated with an address.
+35 -76
Ver Arquivo
@@ -3,7 +3,7 @@
*
* HTTP address list routines for CUPS.
*
* Copyright 2007-2013 by Apple Inc.
* 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
@@ -14,12 +14,11 @@
*
* Contents:
*
* httpAddrConnect() - Connect to any of the addresses in the list.
* httpAddrConnect() - Connect to any of the addresses in the list.
* httpAddrConnect2() - Connect to any of the addresses in the list with a
* timeout and optional cancel.
* httpAddrCopyList() - Copy an address list.
* timeout and optional cancel.
* httpAddrFreeList() - Free an address list.
* httpAddrGetList() - Get a list of addresses for a hostname.
* httpAddrGetList() - Get a list of addresses for a hostname.
*/
/*
@@ -34,7 +33,7 @@
# include <poll.h>
#endif /* HAVE_POLL */
#ifndef WIN32
# include <fcntl.h>
# include <sys/fcntl.h>
#endif /* WIN32 */
@@ -59,7 +58,7 @@ httpAddrConnect(
* 'httpAddrConnect2()' - Connect to any of the addresses in the list with a
* timeout and optional cancel.
*
* @since CUPS 1.7@
* @since CUPS 1.6/OS X 10.8@
*/
http_addrlist_t * /* O - Connected address or NULL on failure */
@@ -95,7 +94,7 @@ httpAddrConnect2(
if (!sock)
{
errno = EINVAL;
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(errno), 0);
_cupsSetError(IPP_INTERNAL_ERROR, strerror(errno), 0);
return (NULL);
}
@@ -120,7 +119,7 @@ httpAddrConnect2(
DEBUG_printf(("2httpAddrConnect2: Trying %s:%d...",
httpAddrString(&(addrlist->addr), temp, sizeof(temp)),
httpAddrPort(&(addrlist->addr))));
_httpAddrPort(&(addrlist->addr))));
if ((*sock = (int)socket(_httpAddrFamily(&(addrlist->addr)), SOCK_STREAM,
0)) < 0)
@@ -139,16 +138,21 @@ httpAddrConnect2(
*/
val = 1;
setsockopt(*sock, SOL_SOCKET, SO_REUSEADDR, CUPS_SOCAST &val, sizeof(val));
#ifdef WIN32
setsockopt(*sock, SOL_SOCKET, SO_REUSEADDR, (const char *)&val,
sizeof(val));
#else
setsockopt(*sock, SOL_SOCKET, SO_REUSEADDR, &val, sizeof(val));
#endif /* WIN32 */
#ifdef SO_REUSEPORT
val = 1;
setsockopt(*sock, SOL_SOCKET, SO_REUSEPORT, CUPS_SOCAST &val, sizeof(val));
setsockopt(*sock, SOL_SOCKET, SO_REUSEPORT, &val, sizeof(val));
#endif /* SO_REUSEPORT */
#ifdef SO_NOSIGPIPE
val = 1;
setsockopt(*sock, SOL_SOCKET, SO_NOSIGPIPE, CUPS_SOCAST &val, sizeof(val));
setsockopt(*sock, SOL_SOCKET, SO_NOSIGPIPE, &val, sizeof(val));
#endif /* SO_NOSIGPIPE */
/*
@@ -157,7 +161,12 @@ httpAddrConnect2(
*/
val = 1;
setsockopt(*sock, IPPROTO_TCP, TCP_NODELAY, CUPS_SOCAST &val, sizeof(val));
#ifdef WIN32
setsockopt(*sock, IPPROTO_TCP, TCP_NODELAY, (const char *)&val,
sizeof(val));
#else
setsockopt(*sock, IPPROTO_TCP, TCP_NODELAY, &val, sizeof(val));
#endif /* WIN32 */
#ifdef FD_CLOEXEC
/*
@@ -192,7 +201,7 @@ httpAddrConnect2(
{
DEBUG_printf(("1httpAddrConnect2: Connected to %s:%d...",
httpAddrString(&(addrlist->addr), temp, sizeof(temp)),
httpAddrPort(&(addrlist->addr))));
_httpAddrPort(&(addrlist->addr))));
#ifdef O_NONBLOCK
fcntl(*sock, F_SETFL, flags);
@@ -273,7 +282,7 @@ httpAddrConnect2(
{
DEBUG_printf(("1httpAddrConnect2: Connected to %s:%d...",
httpAddrString(&peer, temp, sizeof(temp)),
httpAddrPort(&peer)));
_httpAddrPort(&peer)));
return (addrlist);
}
@@ -286,7 +295,7 @@ httpAddrConnect2(
DEBUG_printf(("1httpAddrConnect2: Unable to connect to %s:%d: %s",
httpAddrString(&(addrlist->addr), temp, sizeof(temp)),
httpAddrPort(&(addrlist->addr)), strerror(errno)));
_httpAddrPort(&(addrlist->addr)), strerror(errno)));
#ifndef WIN32
if (errno == EINPROGRESS)
@@ -309,65 +318,15 @@ httpAddrConnect2(
if (!addrlist)
#ifdef WIN32
_cupsSetError(IPP_STATUS_ERROR_SERVICE_UNAVAILABLE, "Connection failed", 0);
_cupsSetError(IPP_SERVICE_UNAVAILABLE, "Connection failed", 0);
#else
_cupsSetError(IPP_STATUS_ERROR_SERVICE_UNAVAILABLE, strerror(errno), 0);
_cupsSetError(IPP_SERVICE_UNAVAILABLE, strerror(errno), 0);
#endif /* WIN32 */
return (addrlist);
}
/*
* 'httpAddrCopyList()' - Copy an address list.
*
* @since CUPS 1.7@
*/
http_addrlist_t * /* O - New address list or @code NULL@ on error */
httpAddrCopyList(
http_addrlist_t *src) /* I - Source address list */
{
http_addrlist_t *dst = NULL, /* First list entry */
*prev = NULL, /* Previous list entry */
*current = NULL;/* Current list entry */
while (src)
{
if ((current = malloc(sizeof(http_addrlist_t))) == NULL)
{
current = dst;
while (current)
{
prev = current;
current = current->next;
free(prev);
}
return (NULL);
}
memcpy(current, src, sizeof(http_addrlist_t));
current->next = NULL;
if (prev)
prev->next = current;
else
dst = current;
prev = current;
src = src->next;
}
return (dst);
}
/*
* 'httpAddrFreeList()' - Free an address list.
*
@@ -549,7 +508,7 @@ httpAddrGetList(const char *hostname, /* I - Hostname, IP address, or NULL for p
if (!temp)
{
httpAddrFreeList(first);
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(errno), 0);
_cupsSetError(IPP_INTERNAL_ERROR, strerror(errno), 0);
return (NULL);
}
@@ -584,7 +543,7 @@ httpAddrGetList(const char *hostname, /* I - Hostname, IP address, or NULL for p
if (error == EAI_FAIL)
cg->need_res_init = 1;
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, gai_strerror(error), 0);
_cupsSetError(IPP_INTERNAL_ERROR, gai_strerror(error), 0);
}
#else
@@ -708,7 +667,7 @@ httpAddrGetList(const char *hostname, /* I - Hostname, IP address, or NULL for p
if (h_errno == NO_RECOVERY)
cg->need_res_init = 1;
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, hstrerror(h_errno), 0);
_cupsSetError(IPP_INTERNAL_ERROR, hstrerror(h_errno), 0);
}
}
#endif /* HAVE_GETADDRINFO */
@@ -748,7 +707,7 @@ httpAddrGetList(const char *hostname, /* I - Hostname, IP address, or NULL for p
{
httpAddrFreeList(first);
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Unknown service name."), 1);
_cupsSetError(IPP_INTERNAL_ERROR, _("Unknown service name."), 1);
return (NULL);
}
@@ -771,7 +730,7 @@ httpAddrGetList(const char *hostname, /* I - Hostname, IP address, or NULL for p
temp = (http_addrlist_t *)calloc(1, sizeof(http_addrlist_t));
if (!temp)
{
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(errno), 0);
_cupsSetError(IPP_INTERNAL_ERROR, strerror(errno), 0);
httpAddrFreeList(first);
return (NULL);
}
@@ -800,7 +759,7 @@ httpAddrGetList(const char *hostname, /* I - Hostname, IP address, or NULL for p
temp = (http_addrlist_t *)calloc(1, sizeof(http_addrlist_t));
if (!temp)
{
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(errno), 0);
_cupsSetError(IPP_INTERNAL_ERROR, strerror(errno), 0);
httpAddrFreeList(first);
return (NULL);
}
@@ -832,7 +791,7 @@ httpAddrGetList(const char *hostname, /* I - Hostname, IP address, or NULL for p
temp = (http_addrlist_t *)calloc(1, sizeof(http_addrlist_t));
if (!temp)
{
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(errno), 0);
_cupsSetError(IPP_INTERNAL_ERROR, strerror(errno), 0);
httpAddrFreeList(first);
return (NULL);
}
@@ -856,7 +815,7 @@ httpAddrGetList(const char *hostname, /* I - Hostname, IP address, or NULL for p
temp = (http_addrlist_t *)calloc(1, sizeof(http_addrlist_t));
if (!temp)
{
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(errno), 0);
_cupsSetError(IPP_INTERNAL_ERROR, strerror(errno), 0);
httpAddrFreeList(first);
return (NULL);
}
+13 -60
Ver Arquivo
@@ -3,7 +3,7 @@
*
* Private HTTP definitions for CUPS.
*
* Copyright 2007-2013 by Apple Inc.
* 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
@@ -34,13 +34,11 @@
# ifdef WIN32
# include <io.h>
# include <winsock2.h>
# define CUPS_SOCAST (const char *)
# else
# include <unistd.h>
# include <fcntl.h>
# include <sys/socket.h>
# define closesocket(f) close(f)
# define CUPS_SOCAST
# endif /* WIN32 */
# ifdef HAVE_GSSAPI
@@ -60,14 +58,14 @@
# include <Security/Authorization.h>
# endif /* HAVE_AUTHORIZATION_H */
# if defined(__APPLE__) && !defined(_SOCKLEN_T)
# if defined(__sgi) || (defined(__APPLE__) && !defined(_SOCKLEN_T))
/*
* MacOS X 10.2.x does not define socklen_t, and in fact uses an int instead of
* IRIX and MacOS X 10.2.x do not define socklen_t, and in fact use an int instead of
* unsigned type for length values...
*/
typedef int socklen_t;
# endif /* __APPLE__ && !_SOCKLEN_T */
# endif /* __sgi || (__APPLE__ && !_SOCKLEN_T) */
# include <cups/http.h>
# include "md5-private.h"
@@ -123,10 +121,6 @@ typedef int socklen_t;
# endif /* HAVE_GETIFADDRS */
# endif /* !WIN32 */
# ifdef HAVE_LIBZ
# include <zlib.h>
# endif /* HAVE_LIBZ */
/*
* C++ magic...
@@ -227,22 +221,7 @@ typedef void *http_tls_t;
typedef void *http_tls_credentials_t;
# endif /* HAVE_LIBSSL */
typedef enum _http_coding_e /**** HTTP content coding enumeration ****/
{
_HTTP_CODING_IDENTITY, /* No content coding */
_HTTP_CODING_GZIP, /* LZ77+gzip decompression */
_HTTP_CODING_DEFLATE, /* LZ77+zlib compression */
_HTTP_CODING_GUNZIP, /* LZ77+gzip decompression */
_HTTP_CODING_INFLATE /* LZ77+zlib decompression */
} _http_coding_t;
typedef enum _http_mode_e /**** HTTP mode enumeration ****/
{
_HTTP_MODE_CLIENT, /* Client connected to server */
_HTTP_MODE_SERVER /* Server connected (accepted) from client */
} _http_mode_t;
struct _http_s /**** HTTP connection structure ****/
struct _http_s /**** HTTP connection structure. ****/
{
int fd; /* File descriptor for this socket */
int blocking; /* To block or not to block */
@@ -255,8 +234,8 @@ struct _http_s /**** HTTP connection structure ****/
struct sockaddr_in _hostaddr; /* Address of connected host (deprecated) */
char hostname[HTTP_MAX_HOST],
/* Name of connected host */
fields[HTTP_FIELD_ACCEPT_ENCODING][HTTP_MAX_VALUE];
/* Field values up to Accept-Encoding */
fields[HTTP_FIELD_MAX][HTTP_MAX_VALUE];
/* Field values */
char *data; /* Pointer to data buffer */
http_encoding_t data_encoding; /* Chunked or not */
int _data_remaining;/* Number of bytes left (deprecated) */
@@ -270,19 +249,16 @@ struct _http_s /**** HTTP connection structure ****/
int nonce_count; /* Nonce count */
http_tls_t tls; /* TLS state information */
http_encryption_t encryption; /* Encryption requirements */
/**** New in CUPS 1.1.19 ****/
fd_set *input_set; /* select() set for httpWait() (deprecated) */
http_status_t expect; /* Expect: header */
char *cookie; /* Cookie value(s) */
/**** New in CUPS 1.1.20 ****/
char _authstring[HTTP_MAX_VALUE],
/* Current Authorization value (deprecated) */
/* Current Authentication value (deprecated) */
userpass[HTTP_MAX_VALUE];
/* Username:password string */
int digest_tries; /* Number of tries for digest auth */
/**** New in CUPS 1.2 ****/
off_t data_remaining; /* Number of bytes left */
http_addr_t *hostaddr; /* Current host address and port */
@@ -290,11 +266,10 @@ struct _http_s /**** HTTP connection structure ****/
char wbuffer[HTTP_MAX_BUFFER];
/* Buffer for outgoing data */
int wused; /* Write buffer bytes used */
/**** New in CUPS 1.3 ****/
char *field_authorization;
/* Authorization field */
char *authstring; /* Current Authorization field */
char *authstring; /* Current authorization field */
# ifdef HAVE_GSSAPI
gss_OID gssmech; /* Authentication mechanism */
gss_ctx_id_t gssctx; /* Authentication context */
@@ -303,7 +278,6 @@ struct _http_s /**** HTTP connection structure ****/
# ifdef HAVE_AUTHORIZATION_H
AuthorizationRef auth_ref; /* Authorization ref */
# endif /* HAVE_AUTHORIZATION_H */
/**** New in CUPS 1.5 ****/
http_tls_credentials_t tls_credentials;
/* TLS credentials */
@@ -314,23 +288,6 @@ struct _http_s /**** HTTP connection structure ****/
# ifdef HAVE_GSSAPI
char gsshost[256]; /* Hostname for Kerberos */
# endif /* HAVE_GSSAPI */
/**** New in CUPS 1.7 ****/
int tls_upgrade; /* Non-zero if we are doing an upgrade */
_http_mode_t mode; /* _HTTP_MODE_CLIENT or _HTTP_MODE_SERVER */
char *accept_encoding,
/* Accept-Encoding field */
*allow, /* Allow field */
*server, /* Server field */
*default_accept_encoding,
*default_server,
*default_user_agent;
/* Default field values */
# ifdef HAVE_LIBZ
_http_coding_t coding; /* _HTTP_CODING_xxx */
z_stream stream; /* (De)compression stream */
Bytef *dbuffer; /* Decompression buffer */
# endif /* HAVE_LIBZ */
};
@@ -396,18 +353,15 @@ extern void _cups_freeifaddrs(struct ifaddrs *addrs);
*/
#define _httpAddrFamily(addrp) (addrp)->addr.sa_family
extern int _httpAddrPort(http_addr_t *addr)
_CUPS_INTERNAL_MSG("Use httpAddrPort instead.");
extern int _httpAddrPort(http_addr_t *addr);
extern void _httpAddrSetPort(http_addr_t *addr, int port);
extern char *_httpAssembleUUID(const char *server, int port,
const char *name, int number,
char *buffer, size_t bufsize)
_CUPS_INTERNAL_MSG("Use httpAssembleUUID instead.");
char *buffer, size_t bufsize);
extern http_t *_httpCreate(const char *host, int port,
http_addrlist_t *addrlist,
http_encryption_t encryption,
int family)
_CUPS_INTERNAL_MSG("Use httpConnect2 or httpAccept instead.");
int family);
extern http_tls_credentials_t
_httpCreateCredentials(cups_array_t *credentials);
extern char *_httpDecodeURI(char *dst, const char *src,
@@ -416,8 +370,7 @@ extern void _httpDisconnect(http_t *http);
extern char *_httpEncodeURI(char *dst, const char *src,
size_t dstsize);
extern void _httpFreeCredentials(http_tls_credentials_t credentials);
extern ssize_t _httpPeek(http_t *http, char *buffer, size_t length)
_CUPS_INTERNAL_MSG("Use httpPeek instead.");
extern ssize_t _httpPeek(http_t *http, char *buffer, size_t length);
extern const char *_httpResolveURI(const char *uri, char *resolved_uri,
size_t resolved_size, int options,
int (*cb)(void *context),
+62 -82
Ver Arquivo
@@ -3,7 +3,7 @@
*
* HTTP support routines for CUPS.
*
* Copyright 2007-2013 by Apple Inc.
* 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
@@ -20,8 +20,7 @@
* components.
* httpAssembleURIf() - Assemble a uniform resource identifier from its
* components with a formatted resource.
* httpAssembleUUID() - Assemble a name-based UUID URN conforming to RFC
* 4122.
* _httpAssembleUUID() - Make a UUID URI conforming to RFC 4122.
* httpDecode64() - Base64-decode a string.
* httpDecode64_2() - Base64-decode a string.
* httpEncode64() - Base64-encode a string.
@@ -193,7 +192,7 @@ httpAssembleURI(
if (uri)
*uri = '\0';
return (HTTP_URI_STATUS_BAD_ARGUMENTS);
return (HTTP_URI_BAD_ARGUMENTS);
}
/*
@@ -391,7 +390,7 @@ httpAssembleURI(
*ptr = '\0';
return (HTTP_URI_STATUS_OK);
return (HTTP_URI_OK);
/*
* Clear the URI string and return an overflow error; I don't usually
@@ -401,7 +400,7 @@ httpAssembleURI(
assemble_overflow:
*uri = '\0';
return (HTTP_URI_STATUS_OVERFLOW);
return (HTTP_URI_OVERFLOW);
}
@@ -444,7 +443,7 @@ httpAssembleURIf(
if (uri)
*uri = '\0';
return (HTTP_URI_STATUS_BAD_ARGUMENTS);
return (HTTP_URI_BAD_ARGUMENTS);
}
/*
@@ -458,7 +457,7 @@ httpAssembleURIf(
if (bytes >= sizeof(resource))
{
*uri = '\0';
return (HTTP_URI_STATUS_OVERFLOW);
return (HTTP_URI_OVERFLOW);
}
else
return (httpAssembleURI(encoding, uri, urilen, scheme, username, host,
@@ -467,24 +466,18 @@ httpAssembleURIf(
/*
* 'httpAssembleUUID()' - Assemble a name-based UUID URN conforming to RFC 4122.
*
* This function creates a unique 128-bit identifying number using the server
* name, port number, random data, and optionally an object name and/or object
* number. The result is formatted as a UUID URN as defined in RFC 4122.
* '_httpAssembleUUID()' - Make a UUID URI conforming to RFC 4122.
*
* The buffer needs to be at least 46 bytes in size.
*
* @since CUPS 1.7@
*/
char * /* I - UUID string */
httpAssembleUUID(const char *server, /* I - Server name */
int port, /* I - Port number */
const char *name, /* I - Object name or NULL */
int number, /* I - Object number or 0 */
char *buffer, /* I - String buffer */
size_t bufsize) /* I - Size of buffer */
_httpAssembleUUID(const char *server, /* I - Server name */
int port, /* I - Port number */
const char *name, /* I - Object name or NULL */
int number, /* I - Object number or 0 */
char *buffer, /* I - String buffer */
size_t bufsize) /* I - Size of buffer */
{
char data[1024]; /* Source string for MD5 */
_cups_md5_state_t md5state; /* MD5 state */
@@ -521,13 +514,6 @@ httpAssembleUUID(const char *server, /* I - Server name */
return (buffer);
}
/* For OS X 10.8 and earlier */
char *_httpAssembleUUID(const char *server, int port, const char *name,
int number, char *buffer, size_t bufsize)
{
return (httpAssembleUUID(server, port, name, number, buffer, bufsize));
}
/*
* 'httpDecode64()' - Base64-decode a string.
@@ -980,16 +966,16 @@ httpSeparateURI(
if (!uri || !port || !scheme || schemelen <= 0 || !username ||
usernamelen <= 0 || !host || hostlen <= 0 || !resource ||
resourcelen <= 0)
return (HTTP_URI_STATUS_BAD_ARGUMENTS);
return (HTTP_URI_BAD_ARGUMENTS);
if (!*uri)
return (HTTP_URI_STATUS_BAD_URI);
return (HTTP_URI_BAD_URI);
/*
* Grab the scheme portion of the URI...
*/
status = HTTP_URI_STATUS_OK;
status = HTTP_URI_OK;
if (!strncmp(uri, "//", 2))
{
@@ -998,7 +984,7 @@ httpSeparateURI(
*/
strlcpy(scheme, "ipp", schemelen);
status = HTTP_URI_STATUS_MISSING_SCHEME;
status = HTTP_URI_MISSING_SCHEME;
}
else if (*uri == '/')
{
@@ -1007,7 +993,7 @@ httpSeparateURI(
*/
strlcpy(scheme, "file", schemelen);
status = HTTP_URI_STATUS_MISSING_SCHEME;
status = HTTP_URI_MISSING_SCHEME;
}
else
{
@@ -1029,7 +1015,7 @@ httpSeparateURI(
if (*uri != ':')
{
*scheme = '\0';
return (HTTP_URI_STATUS_BAD_SCHEME);
return (HTTP_URI_BAD_SCHEME);
}
uri ++;
@@ -1050,7 +1036,7 @@ httpSeparateURI(
else if (!strcmp(scheme, "socket")) /* Not yet registered with IANA... */
*port = 9100;
else if (strcmp(scheme, "file") && strcmp(scheme, "mailto"))
status = HTTP_URI_STATUS_UNKNOWN_SCHEME;
status = HTTP_URI_UNKNOWN_SCHEME;
/*
* Now see if we have a hostname...
@@ -1080,7 +1066,7 @@ httpSeparateURI(
if (!uri)
{
*username = '\0';
return (HTTP_URI_STATUS_BAD_USERNAME);
return (HTTP_URI_BAD_USERNAME);
}
uri ++;
@@ -1106,7 +1092,7 @@ httpSeparateURI(
if (!uri)
{
*host = '\0';
return (HTTP_URI_STATUS_BAD_HOSTNAME);
return (HTTP_URI_BAD_HOSTNAME);
}
/*
@@ -1116,7 +1102,7 @@ httpSeparateURI(
if (*uri != ']')
{
*host = '\0';
return (HTTP_URI_STATUS_BAD_HOSTNAME);
return (HTTP_URI_BAD_HOSTNAME);
}
uri ++;
@@ -1134,7 +1120,7 @@ httpSeparateURI(
else if (*ptr != ':' && *ptr != '.' && !isxdigit(*ptr & 255))
{
*host = '\0';
return (HTTP_URI_STATUS_BAD_HOSTNAME);
return (HTTP_URI_BAD_HOSTNAME);
}
}
else
@@ -1154,7 +1140,7 @@ httpSeparateURI(
"!$&'()*+,;=\\", *ptr))
{
*host = '\0';
return (HTTP_URI_STATUS_BAD_HOSTNAME);
return (HTTP_URI_BAD_HOSTNAME);
}
/*
@@ -1167,7 +1153,7 @@ httpSeparateURI(
if (!uri)
{
*host = '\0';
return (HTTP_URI_STATUS_BAD_HOSTNAME);
return (HTTP_URI_BAD_HOSTNAME);
}
}
@@ -1179,7 +1165,7 @@ httpSeparateURI(
if (!strcmp(scheme, "file") && strcmp(host, "localhost") && host[0])
{
*host = '\0';
return (HTTP_URI_STATUS_BAD_HOSTNAME);
return (HTTP_URI_BAD_HOSTNAME);
}
/*
@@ -1195,7 +1181,7 @@ httpSeparateURI(
if (!isdigit(uri[1] & 255))
{
*port = 0;
return (HTTP_URI_STATUS_BAD_PORT);
return (HTTP_URI_BAD_PORT);
}
*port = strtol(uri + 1, (char **)&uri, 10);
@@ -1203,7 +1189,7 @@ httpSeparateURI(
if (*uri != '/' && *uri)
{
*port = 0;
return (HTTP_URI_STATUS_BAD_PORT);
return (HTTP_URI_BAD_PORT);
}
}
}
@@ -1218,7 +1204,7 @@ httpSeparateURI(
* Hostname but no path...
*/
status = HTTP_URI_STATUS_MISSING_RESOURCE;
status = HTTP_URI_MISSING_RESOURCE;
*resource = '/';
/*
@@ -1252,7 +1238,7 @@ httpSeparateURI(
if (!uri)
{
*resource = '\0';
return (HTTP_URI_STATUS_BAD_RESOURCE);
return (HTTP_URI_BAD_RESOURCE);
}
/*
@@ -1282,74 +1268,74 @@ httpStatus(http_status_t status) /* I - HTTP status code */
switch (status)
{
case HTTP_STATUS_CONTINUE :
case HTTP_CONTINUE :
s = _("Continue");
break;
case HTTP_STATUS_SWITCHING_PROTOCOLS :
case HTTP_SWITCHING_PROTOCOLS :
s = _("Switching Protocols");
break;
case HTTP_STATUS_OK :
case HTTP_OK :
s = _("OK");
break;
case HTTP_STATUS_CREATED :
case HTTP_CREATED :
s = _("Created");
break;
case HTTP_STATUS_ACCEPTED :
case HTTP_ACCEPTED :
s = _("Accepted");
break;
case HTTP_STATUS_NO_CONTENT :
case HTTP_NO_CONTENT :
s = _("No Content");
break;
case HTTP_STATUS_MOVED_PERMANENTLY :
case HTTP_MOVED_PERMANENTLY :
s = _("Moved Permanently");
break;
case HTTP_STATUS_SEE_OTHER :
case HTTP_SEE_OTHER :
s = _("See Other");
break;
case HTTP_STATUS_NOT_MODIFIED :
case HTTP_NOT_MODIFIED :
s = _("Not Modified");
break;
case HTTP_STATUS_BAD_REQUEST :
case HTTP_BAD_REQUEST :
s = _("Bad Request");
break;
case HTTP_STATUS_UNAUTHORIZED :
case HTTP_STATUS_CUPS_AUTHORIZATION_CANCELED :
case HTTP_UNAUTHORIZED :
case HTTP_AUTHORIZATION_CANCELED :
s = _("Unauthorized");
break;
case HTTP_STATUS_FORBIDDEN :
case HTTP_FORBIDDEN :
s = _("Forbidden");
break;
case HTTP_STATUS_NOT_FOUND :
case HTTP_NOT_FOUND :
s = _("Not Found");
break;
case HTTP_STATUS_REQUEST_TOO_LARGE :
case HTTP_REQUEST_TOO_LARGE :
s = _("Request Entity Too Large");
break;
case HTTP_STATUS_URI_TOO_LONG :
case HTTP_URI_TOO_LONG :
s = _("URI Too Long");
break;
case HTTP_STATUS_UPGRADE_REQUIRED :
case HTTP_UPGRADE_REQUIRED :
s = _("Upgrade Required");
break;
case HTTP_STATUS_NOT_IMPLEMENTED :
case HTTP_NOT_IMPLEMENTED :
s = _("Not Implemented");
break;
case HTTP_STATUS_NOT_SUPPORTED :
case HTTP_NOT_SUPPORTED :
s = _("Not Supported");
break;
case HTTP_STATUS_EXPECTATION_FAILED :
case HTTP_EXPECTATION_FAILED :
s = _("Expectation Failed");
break;
case HTTP_STATUS_SERVICE_UNAVAILABLE :
case HTTP_SERVICE_UNAVAILABLE :
s = _("Service Unavailable");
break;
case HTTP_STATUS_SERVER_ERROR :
case HTTP_SERVER_ERROR :
s = _("Internal Server Error");
break;
case HTTP_STATUS_CUPS_PKI_ERROR :
case HTTP_PKI_ERROR :
s = _("SSL/TLS Negotiation Error");
break;
case HTTP_STATUS_CUPS_WEBIF_DISABLED :
case HTTP_WEBIF_DISABLED :
s = _("Web Interface is Disabled");
break;
@@ -1453,12 +1439,12 @@ _httpResolveURI(
if ((status = httpSeparateURI(HTTP_URI_CODING_ALL, uri, scheme,
sizeof(scheme), userpass, sizeof(userpass),
hostname, sizeof(hostname), &port, resource,
sizeof(resource))) < HTTP_URI_STATUS_OK)
sizeof(resource))) < HTTP_URI_OK)
#else
if (httpSeparateURI(HTTP_URI_CODING_ALL, uri, scheme,
sizeof(scheme), userpass, sizeof(userpass),
hostname, sizeof(hostname), &port, resource,
sizeof(resource)) < HTTP_URI_STATUS_OK)
sizeof(resource)) < HTTP_URI_OK)
#endif /* DEBUG */
{
if (options & _HTTP_RESOLVE_STDERR)
@@ -1555,16 +1541,10 @@ _httpResolveURI(
# ifdef HAVE_DNSSD
if (DNSServiceCreateConnection(&ref) == kDNSServiceErr_NoError)
{
int myinterface = kDNSServiceInterfaceIndexAny;
/* Lookup on any interface */
if (!strcmp(scheme, "ippusb"))
myinterface = kDNSServiceInterfaceIndexLocalOnly;
localref = ref;
if (DNSServiceResolve(&localref,
kDNSServiceFlagsShareConnection, myinterface,
hostname, regtype, "local.", http_resolve_cb,
kDNSServiceFlagsShareConnection, 0, hostname, regtype,
"local.", http_resolve_cb,
&uribuf) == kDNSServiceErr_NoError)
{
int fds; /* Number of ready descriptors */
@@ -1638,7 +1618,7 @@ _httpResolveURI(
domainref = ref;
if (DNSServiceResolve(&domainref,
kDNSServiceFlagsShareConnection,
myinterface, hostname, regtype, domain,
0, hostname, regtype, domain,
http_resolve_cb,
&uribuf) == kDNSServiceErr_NoError)
domainsent = 1;
@@ -1766,7 +1746,7 @@ _httpResolveURI(
#endif /* HAVE_DNSSD || HAVE_AVAHI */
if ((options & _HTTP_RESOLVE_STDERR) && !uri)
_cupsLangPrintFilter(stderr, "INFO", _("Unable to find printer."));
_cupsLangPrintFilter(stderr, "ERROR", _("Unable to find printer."));
}
else
{
+860 -2124
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+94 -234
Ver Arquivo
@@ -3,7 +3,7 @@
*
* Hyper-Text Transport Protocol definitions for CUPS.
*
* Copyright 2007-2013 by Apple Inc.
* 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
@@ -36,6 +36,9 @@ typedef off_t ssize_t; /* @private@ */
# include <winsock2.h>
# include <ws2tcpip.h>
# else
# ifdef __sgi
# define INET6 /* IRIX IPv6 support... */
# endif /* __sgi */
# include <unistd.h>
# include <sys/time.h>
# include <sys/socket.h>
@@ -126,30 +129,17 @@ typedef enum http_auth_e /**** HTTP authentication types ****/
typedef enum http_encoding_e /**** HTTP transfer encoding values ****/
{
HTTP_ENCODING_LENGTH, /* Data is sent with Content-Length */
HTTP_ENCODING_CHUNKED, /* Data is chunked */
HTTP_ENCODING_FIELDS /* Sending HTTP fields */
# ifndef _CUPS_NO_DEPRECATED
# define HTTP_ENCODE_LENGTH HTTP_ENCODING_LENGTH
# define HTTP_ENCODE_CHUNKED HTTP_ENCODING_CHUNKED
# define HTTP_ENCODE_FIELDS HTTP_ENCODING_FIELDS
# endif /* !_CUPS_NO_DEPRECATED */
HTTP_ENCODE_LENGTH, /* Data is sent with Content-Length */
HTTP_ENCODE_CHUNKED, /* Data is chunked */
HTTP_ENCODE_FIELDS /* Sending HTTP fields */
} http_encoding_t;
typedef enum http_encryption_e /**** HTTP encryption values ****/
{
HTTP_ENCRYPTION_IF_REQUESTED, /* Encrypt if requested (TLS upgrade) */
HTTP_ENCRYPTION_NEVER, /* Never encrypt */
HTTP_ENCRYPTION_REQUIRED, /* Encryption is required (TLS upgrade) */
HTTP_ENCRYPTION_ALWAYS /* Always encrypt (SSL) */
# ifndef _CUPS_NO_DEPRECATED
# define HTTP_ENCRYPT_IF_REQUESTED HTTP_ENCRYPTION_IF_REQUESTED
# define HTTP_ENCRYPT_NEVER HTTP_ENCRYPTION_NEVER
# define HTTP_ENCRYPT_REQUIRED HTTP_ENCRYPTION_REQUIRED
# define HTTP_ENCRYPT_ALWAYS HTTP_ENCRYPTION_ALWAYS
# endif /* !_CUPS_NO_DEPRECATED */
HTTP_ENCRYPT_IF_REQUESTED, /* Encrypt if requested (TLS upgrade) */
HTTP_ENCRYPT_NEVER, /* Never encrypt */
HTTP_ENCRYPT_REQUIRED, /* Encryption is required (TLS upgrade) */
HTTP_ENCRYPT_ALWAYS /* Always encrypt (SSL) */
} http_encryption_t;
typedef enum http_field_e /**** HTTP field names ****/
@@ -182,9 +172,6 @@ typedef enum http_field_e /**** HTTP field names ****/
HTTP_FIELD_UPGRADE, /* Upgrade field */
HTTP_FIELD_USER_AGENT, /* User-Agent field */
HTTP_FIELD_WWW_AUTHENTICATE, /* WWW-Authenticate field */
HTTP_FIELD_ACCEPT_ENCODING, /* Accepting-Encoding field @since CUPS 1.7@ */
HTTP_FIELD_ALLOW, /* Allow field @since CUPS 1.7@ */
HTTP_FIELD_SERVER, /* Server field @since CUPS 1.7@ */
HTTP_FIELD_MAX /* Maximum field index */
} http_field_t;
@@ -198,181 +185,90 @@ typedef enum http_state_e /**** HTTP state values; states
**** are server-oriented...
****/
{
HTTP_STATE_ERROR = -1, /* Error on socket */
HTTP_STATE_WAITING, /* Waiting for command */
HTTP_STATE_OPTIONS, /* OPTIONS command, waiting for blank line */
HTTP_STATE_GET, /* GET command, waiting for blank line */
HTTP_STATE_GET_SEND, /* GET command, sending data */
HTTP_STATE_HEAD, /* HEAD command, waiting for blank line */
HTTP_STATE_POST, /* POST command, waiting for blank line */
HTTP_STATE_POST_RECV, /* POST command, receiving data */
HTTP_STATE_POST_SEND, /* POST command, sending data */
HTTP_STATE_PUT, /* PUT command, waiting for blank line */
HTTP_STATE_PUT_RECV, /* PUT command, receiving data */
HTTP_STATE_DELETE, /* DELETE command, waiting for blank line */
HTTP_STATE_TRACE, /* TRACE command, waiting for blank line */
HTTP_STATE_CONNECT, /* CONNECT command, waiting for blank line */
HTTP_STATE_STATUS, /* Command complete, sending status */
HTTP_STATE_UNKNOWN_METHOD, /* Unknown request method, waiting for blank line @since CUPS 1.7@ */
HTTP_STATE_UNKNOWN_VERSION /* Unknown request method, waiting for blank line @since CUPS 1.7@ */
# ifndef _CUPS_NO_DEPRECATED
# define HTTP_WAITING HTTP_STATE_WAITING
# define HTTP_OPTIONS HTTP_STATE_OPTIONS
# define HTTP_GET HTTP_STATE_GET
# define HTTP_GET_SEND HTTP_STATE_GET_SEND
# define HTTP_HEAD HTTP_STATE_HEAD
# define HTTP_POST HTTP_STATE_POST
# define HTTP_POST_RECV HTTP_STATE_POST_RECV
# define HTTP_POST_SEND HTTP_STATE_POST_SEND
# define HTTP_PUT HTTP_STATE_PUT
# define HTTP_PUT_RECV HTTP_STATE_PUT_RECV
# define HTTP_DELETE HTTP_STATE_DELETE
# define HTTP_TRACE HTTP_STATE_TRACE
# define HTTP_CLOSE HTTP_STATE_CONNECT
# define HTTP_STATUS HTTP_STATE_STATUS
# endif /* !_CUPS_NO_DEPRECATED */
HTTP_WAITING, /* Waiting for command */
HTTP_OPTIONS, /* OPTIONS command, waiting for blank line */
HTTP_GET, /* GET command, waiting for blank line */
HTTP_GET_SEND, /* GET command, sending data */
HTTP_HEAD, /* HEAD command, waiting for blank line */
HTTP_POST, /* POST command, waiting for blank line */
HTTP_POST_RECV, /* POST command, receiving data */
HTTP_POST_SEND, /* POST command, sending data */
HTTP_PUT, /* PUT command, waiting for blank line */
HTTP_PUT_RECV, /* PUT command, receiving data */
HTTP_DELETE, /* DELETE command, waiting for blank line */
HTTP_TRACE, /* TRACE command, waiting for blank line */
HTTP_CLOSE, /* CLOSE command, waiting for blank line */
HTTP_STATUS /* Command complete, sending status */
} http_state_t;
typedef enum http_status_e /**** HTTP status codes ****/
{
HTTP_STATUS_ERROR = -1, /* An error response from httpXxxx() */
HTTP_STATUS_NONE = 0, /* No Expect value @since CUPS 1.7@ */
HTTP_ERROR = -1, /* An error response from httpXxxx() */
HTTP_STATUS_CONTINUE = 100, /* Everything OK, keep going... */
HTTP_STATUS_SWITCHING_PROTOCOLS, /* HTTP upgrade to TLS/SSL */
HTTP_CONTINUE = 100, /* Everything OK, keep going... */
HTTP_SWITCHING_PROTOCOLS, /* HTTP upgrade to TLS/SSL */
HTTP_STATUS_OK = 200, /* OPTIONS/GET/HEAD/POST/TRACE command was successful */
HTTP_STATUS_CREATED, /* PUT command was successful */
HTTP_STATUS_ACCEPTED, /* DELETE command was successful */
HTTP_STATUS_NOT_AUTHORITATIVE, /* Information isn't authoritative */
HTTP_STATUS_NO_CONTENT, /* Successful command, no new data */
HTTP_STATUS_RESET_CONTENT, /* Content was reset/recreated */
HTTP_STATUS_PARTIAL_CONTENT, /* Only a partial file was recieved/sent */
HTTP_OK = 200, /* OPTIONS/GET/HEAD/POST/TRACE command was successful */
HTTP_CREATED, /* PUT command was successful */
HTTP_ACCEPTED, /* DELETE command was successful */
HTTP_NOT_AUTHORITATIVE, /* Information isn't authoritative */
HTTP_NO_CONTENT, /* Successful command, no new data */
HTTP_RESET_CONTENT, /* Content was reset/recreated */
HTTP_PARTIAL_CONTENT, /* Only a partial file was recieved/sent */
HTTP_STATUS_MULTIPLE_CHOICES = 300, /* Multiple files match request */
HTTP_STATUS_MOVED_PERMANENTLY, /* Document has moved permanently */
HTTP_STATUS_MOVED_TEMPORARILY, /* Document has moved temporarily */
HTTP_STATUS_SEE_OTHER, /* See this other link... */
HTTP_STATUS_NOT_MODIFIED, /* File not modified */
HTTP_STATUS_USE_PROXY, /* Must use a proxy to access this URI */
HTTP_MULTIPLE_CHOICES = 300, /* Multiple files match request */
HTTP_MOVED_PERMANENTLY, /* Document has moved permanently */
HTTP_MOVED_TEMPORARILY, /* Document has moved temporarily */
HTTP_SEE_OTHER, /* See this other link... */
HTTP_NOT_MODIFIED, /* File not modified */
HTTP_USE_PROXY, /* Must use a proxy to access this URI */
HTTP_STATUS_BAD_REQUEST = 400, /* Bad request */
HTTP_STATUS_UNAUTHORIZED, /* Unauthorized to access host */
HTTP_STATUS_PAYMENT_REQUIRED, /* Payment required */
HTTP_STATUS_FORBIDDEN, /* Forbidden to access this URI */
HTTP_STATUS_NOT_FOUND, /* URI was not found */
HTTP_STATUS_METHOD_NOT_ALLOWED, /* Method is not allowed */
HTTP_STATUS_NOT_ACCEPTABLE, /* Not Acceptable */
HTTP_STATUS_PROXY_AUTHENTICATION, /* Proxy Authentication is Required */
HTTP_STATUS_REQUEST_TIMEOUT, /* Request timed out */
HTTP_STATUS_CONFLICT, /* Request is self-conflicting */
HTTP_STATUS_GONE, /* Server has gone away */
HTTP_STATUS_LENGTH_REQUIRED, /* A content length or encoding is required */
HTTP_STATUS_PRECONDITION, /* Precondition failed */
HTTP_STATUS_REQUEST_TOO_LARGE, /* Request entity too large */
HTTP_STATUS_URI_TOO_LONG, /* URI too long */
HTTP_STATUS_UNSUPPORTED_MEDIATYPE, /* The requested media type is unsupported */
HTTP_STATUS_REQUESTED_RANGE, /* The requested range is not satisfiable */
HTTP_STATUS_EXPECTATION_FAILED, /* The expectation given in an Expect header field was not met */
HTTP_STATUS_UPGRADE_REQUIRED = 426, /* Upgrade to SSL/TLS required */
HTTP_BAD_REQUEST = 400, /* Bad request */
HTTP_UNAUTHORIZED, /* Unauthorized to access host */
HTTP_PAYMENT_REQUIRED, /* Payment required */
HTTP_FORBIDDEN, /* Forbidden to access this URI */
HTTP_NOT_FOUND, /* URI was not found */
HTTP_METHOD_NOT_ALLOWED, /* Method is not allowed */
HTTP_NOT_ACCEPTABLE, /* Not Acceptable */
HTTP_PROXY_AUTHENTICATION, /* Proxy Authentication is Required */
HTTP_REQUEST_TIMEOUT, /* Request timed out */
HTTP_CONFLICT, /* Request is self-conflicting */
HTTP_GONE, /* Server has gone away */
HTTP_LENGTH_REQUIRED, /* A content length or encoding is required */
HTTP_PRECONDITION, /* Precondition failed */
HTTP_REQUEST_TOO_LARGE, /* Request entity too large */
HTTP_URI_TOO_LONG, /* URI too long */
HTTP_UNSUPPORTED_MEDIATYPE, /* The requested media type is unsupported */
HTTP_REQUESTED_RANGE, /* The requested range is not satisfiable */
HTTP_EXPECTATION_FAILED, /* The expectation given in an Expect header field was not met */
HTTP_UPGRADE_REQUIRED = 426, /* Upgrade to SSL/TLS required */
HTTP_STATUS_SERVER_ERROR = 500, /* Internal server error */
HTTP_STATUS_NOT_IMPLEMENTED, /* Feature not implemented */
HTTP_STATUS_BAD_GATEWAY, /* Bad gateway */
HTTP_STATUS_SERVICE_UNAVAILABLE, /* Service is unavailable */
HTTP_STATUS_GATEWAY_TIMEOUT, /* Gateway connection timed out */
HTTP_STATUS_NOT_SUPPORTED, /* HTTP version not supported */
HTTP_SERVER_ERROR = 500, /* Internal server error */
HTTP_NOT_IMPLEMENTED, /* Feature not implemented */
HTTP_BAD_GATEWAY, /* Bad gateway */
HTTP_SERVICE_UNAVAILABLE, /* Service is unavailable */
HTTP_GATEWAY_TIMEOUT, /* Gateway connection timed out */
HTTP_NOT_SUPPORTED, /* HTTP version not supported */
HTTP_STATUS_CUPS_AUTHORIZATION_CANCELED = 1000,
/* User canceled authorization @since CUPS 1.4@ */
HTTP_STATUS_CUPS_PKI_ERROR, /* Error negotiating a secure connection @since CUPS 1.5/OS X 10.7@ */
HTTP_STATUS_CUPS_WEBIF_DISABLED /* Web interface is disabled @private@ */
# ifndef _CUPS_NO_DEPRECATED
/* Old names for this enumeration */
# define HTTP_ERROR HTTP_STATUS_ERROR
# define HTTP_CONTINUE HTTP_STATUS_CONTINUE
# define HTTP_SWITCHING_PROTOCOLS HTTP_STATUS_SWITCHING_PROTOCOLS
# define HTTP_OK HTTP_STATUS_OK
# define HTTP_CREATED HTTP_STATUS_CREATED
# define HTTP_ACCEPTED HTTP_STATUS_ACCEPTED
# define HTTP_NOT_AUTHORITATIVE HTTP_STATUS_NOT_AUTHORITATIVE
# define HTTP_NO_CONTENT HTTP_STATUS_NO_CONTENT
# define HTTP_RESET_CONTENT HTTP_STATUS_RESET_CONTENT
# define HTTP_PARTIAL_CONTENT HTTP_STATUS_PARTIAL_CONTENT
# define HTTP_MULTIPLE_CHOICES HTTP_STATUS_MULTIPLE_CHOICES
# define HTTP_MOVED_PERMANENTLY HTTP_STATUS_MOVED_PERMANENTLY
# define HTTP_MOVED_TEMPORARILY HTTP_STATUS_MOVED_TEMPORARILY
# define HTTP_SEE_OTHER HTTP_STATUS_SEE_OTHER
# define HTTP_NOT_MODIFIED HTTP_STATUS_NOT_MODIFIED
# define HTTP_USE_PROXY HTTP_STATUS_USE_PROXY
# define HTTP_BAD_REQUEST HTTP_STATUS_BAD_REQUEST
# define HTTP_UNAUTHORIZED HTTP_STATUS_UNAUTHORIZED
# define HTTP_PAYMENT_REQUIRED HTTP_STATUS_PAYMENT_REQUIRED
# define HTTP_FORBIDDEN HTTP_STATUS_FORBIDDEN
# define HTTP_NOT_FOUND HTTP_STATUS_NOT_FOUND
# define HTTP_METHOD_NOT_ALLOWED HTTP_STATUS_METHOD_NOT_ALLOWED
# define HTTP_NOT_ACCEPTABLE HTTP_STATUS_NOT_ACCEPTABLE
# define HTTP_PROXY_AUTHENTICATION HTTP_STATUS_PROXY_AUTHENTICATION
# define HTTP_REQUEST_TIMEOUT HTTP_STATUS_REQUEST_TIMEOUT
# define HTTP_CONFLICT HTTP_STATUS_CONFLICT
# define HTTP_GONE HTTP_STATUS_GONE
# define HTTP_LENGTH_REQUIRED HTTP_STATUS_LENGTH_REQUIRED
# define HTTP_PRECONDITION HTTP_STATUS_PRECONDITION
# define HTTP_REQUEST_TOO_LARGE HTTP_STATUS_REQUEST_TOO_LARGE
# define HTTP_URI_TOO_LONG HTTP_STATUS_URI_TOO_LONG
# define HTTP_UNSUPPORTED_MEDIATYPE HTTP_STATUS_UNSUPPORTED_MEDIATYPE
# define HTTP_REQUESTED_RANGE HTTP_STATUS_REQUESTED_RANGE
# define HTTP_EXPECTATION_FAILED HTTP_STATUS_EXPECTATION_FAILED
# define HTTP_UPGRADE_REQUIRED HTTP_STATUS_UPGRADE_REQUIRED
# define HTTP_SERVER_ERROR HTTP_STATUS_SERVER_ERROR
# define HTTP_NOT_IMPLEMENTED HTTP_STATUS_NOT_IMPLEMENTED
# define HTTP_BAD_GATEWAY HTTP_STATUS_BAD_GATEWAY
# define HTTP_SERVICE_UNAVAILABLE HTTP_STATUS_SERVICE_UNAVAILABLE
# define HTTP_GATEWAY_TIMEOUT HTTP_STATUS_GATEWAY_TIMEOUT
# define HTTP_NOT_SUPPORTED HTTP_STATUS_NOT_SUPPORTED
# define HTTP_AUTHORIZATION_CANCELED HTTP_STATUS_CUPS_AUTHORIZATION_CANCELED
# define HTTP_PKI_ERROR HTTP_STATUS_CUPS_PKI_ERROR
# define HTTP_WEBIF_DISABLED HTTP_STATUS_CUPS_WEBIF_DISABLED
# endif /* !_CUPS_NO_DEPRECATED */
HTTP_AUTHORIZATION_CANCELED = 1000, /* User canceled authorization @since CUPS 1.4@ */
HTTP_PKI_ERROR, /* Error negotiating a secure connection @since CUPS 1.5/OS X 10.7@ */
HTTP_WEBIF_DISABLED /* Web interface is disabled @private@ */
} http_status_t;
typedef enum http_uri_status_e /**** URI separation status @since CUPS 1.2@ ****/
{
HTTP_URI_STATUS_OVERFLOW = -8, /* URI buffer for httpAssembleURI is too small */
HTTP_URI_STATUS_BAD_ARGUMENTS = -7, /* Bad arguments to function (error) */
HTTP_URI_STATUS_BAD_RESOURCE = -6, /* Bad resource in URI (error) */
HTTP_URI_STATUS_BAD_PORT = -5, /* Bad port number in URI (error) */
HTTP_URI_STATUS_BAD_HOSTNAME = -4, /* Bad hostname in URI (error) */
HTTP_URI_STATUS_BAD_USERNAME = -3, /* Bad username in URI (error) */
HTTP_URI_STATUS_BAD_SCHEME = -2, /* Bad scheme in URI (error) */
HTTP_URI_STATUS_BAD_URI = -1, /* Bad/empty URI (error) */
HTTP_URI_STATUS_OK = 0, /* URI decoded OK */
HTTP_URI_STATUS_MISSING_SCHEME, /* Missing scheme in URI (warning) */
HTTP_URI_STATUS_UNKNOWN_SCHEME, /* Unknown scheme in URI (warning) */
HTTP_URI_STATUS_MISSING_RESOURCE /* Missing resource in URI (warning) */
# ifndef _CUPS_NO_DEPRECATED
# define HTTP_URI_OVERFLOW HTTP_URI_STATUS_OVERFLOW
# define HTTP_URI_BAD_ARGUMENTS HTTP_URI_STATUS_BAD_ARGUMENTS
# define HTTP_URI_BAD_RESOURCE HTTP_URI_STATUS_BAD_RESOURCE
# define HTTP_URI_BAD_PORT HTTP_URI_STATUS_BAD_PORT
# define HTTP_URI_BAD_HOSTNAME HTTP_URI_STATUS_BAD_HOSTNAME
# define HTTP_URI_BAD_USERNAME HTTP_URI_STATUS_BAD_USERNAME
# define HTTP_URI_BAD_SCHEME HTTP_URI_STATUS_BAD_SCHEME
# define HTTP_URI_BAD_URI HTTP_URI_STATUS_BAD_URI
# define HTTP_URI_OK HTTP_URI_STATUS_OK
# define HTTP_URI_MISSING_SCHEME HTTP_URI_STATUS_MISSING_SCHEME
# define HTTP_URI_UNKNOWN_SCHEME HTTP_URI_STATUS_UNKNOWN_SCHEME
# define HTTP_URI_MISSING_RESOURCE HTTP_URI_STATUS_MISSING_RESOURCE
# endif /* !_CUPS_NO_DEPRECATED */
HTTP_URI_OVERFLOW = -8, /* URI buffer for httpAssembleURI is too small */
HTTP_URI_BAD_ARGUMENTS = -7, /* Bad arguments to function (error) */
HTTP_URI_BAD_RESOURCE = -6, /* Bad resource in URI (error) */
HTTP_URI_BAD_PORT = -5, /* Bad port number in URI (error) */
HTTP_URI_BAD_HOSTNAME = -4, /* Bad hostname in URI (error) */
HTTP_URI_BAD_USERNAME = -3, /* Bad username in URI (error) */
HTTP_URI_BAD_SCHEME = -2, /* Bad scheme in URI (error) */
HTTP_URI_BAD_URI = -1, /* Bad/empty URI (error) */
HTTP_URI_OK = 0, /* URI decoded OK */
HTTP_URI_MISSING_SCHEME, /* Missing scheme in URI (warning) */
HTTP_URI_UNKNOWN_SCHEME, /* Unknown scheme in URI (warning) */
HTTP_URI_MISSING_RESOURCE /* Missing resource in URI (warning) */
} http_uri_status_t;
typedef enum http_uri_coding_e /**** URI en/decode flags ****/
@@ -388,15 +284,9 @@ typedef enum http_uri_coding_e /**** URI en/decode flags ****/
typedef enum http_version_e /**** HTTP version numbers ****/
{
HTTP_VERSION_0_9 = 9, /* HTTP/0.9 */
HTTP_VERSION_1_0 = 100, /* HTTP/1.0 */
HTTP_VERSION_1_1 = 101 /* HTTP/1.1 */
# ifndef _CUPS_NO_DEPRECATED
# define HTTP_0_9 HTTP_VERSION_0_9
# define HTTP_1_0 HTTP_VERSION_1_0
# define HTTP_1_1 HTTP_VERSION_1_1
# endif /* !_CUPS_NO_DEPRECATED */
HTTP_0_9 = 9, /* HTTP/0.9 */
HTTP_1_0 = 100, /* HTTP/1.0 */
HTTP_1_1 = 101 /* HTTP/1.1 */
} http_version_t;
typedef union _http_addr_u /**** Socket address union, which
@@ -447,11 +337,9 @@ extern void httpBlocking(http_t *http, int b);
extern int httpCheck(http_t *http);
extern void httpClearFields(http_t *http);
extern void httpClose(http_t *http);
extern http_t *httpConnect(const char *host, int port)
_CUPS_DEPRECATED_MSG("Use httpConnect2 instead.");
extern http_t *httpConnect(const char *host, int port);
extern http_t *httpConnectEncrypt(const char *host, int port,
http_encryption_t encryption)
_CUPS_DEPRECATED_MSG("Use httpConnect2 instead.");
http_encryption_t encryption);
extern int httpDelete(http_t *http, const char *uri);
extern int httpEncryption(http_t *http, http_encryption_t e);
extern int httpError(http_t *http);
@@ -471,20 +359,20 @@ extern int httpPost(http_t *http, const char *uri);
extern int httpPrintf(http_t *http, const char *format, ...)
__attribute__ ((__format__ (__printf__, 2, 3)));
extern int httpPut(http_t *http, const char *uri);
extern int httpRead(http_t *http, char *buffer, int length) _CUPS_DEPRECATED_MSG("Use httpRead2 instead.");
extern int httpReconnect(http_t *http) _CUPS_DEPRECATED_MSG("Use httpReconnect2 instead.");
extern int httpRead(http_t *http, char *buffer, int length) _CUPS_DEPRECATED;
extern int httpReconnect(http_t *http);
extern void httpSeparate(const char *uri, char *method,
char *username, char *host, int *port,
char *resource) _CUPS_DEPRECATED_MSG("Use httpSeparateURI instead.");
char *resource) _CUPS_DEPRECATED;
extern void httpSetField(http_t *http, http_field_t field,
const char *value);
extern const char *httpStatus(http_status_t status);
extern int httpTrace(http_t *http, const char *uri);
extern http_status_t httpUpdate(http_t *http);
extern int httpWrite(http_t *http, const char *buffer, int length) _CUPS_DEPRECATED_MSG("Use httpWrite2 instead.");
extern char *httpEncode64(char *out, const char *in) _CUPS_DEPRECATED_MSG("Use httpEncode64_2 instead.");
extern char *httpDecode64(char *out, const char *in) _CUPS_DEPRECATED_MSG("Use httpDecode64_2 instead.");
extern int httpGetLength(http_t *http) _CUPS_DEPRECATED_MSG("Use httpGetLength2 instead.");
extern int httpWrite(http_t *http, const char *buffer, int length) _CUPS_DEPRECATED;
extern char *httpEncode64(char *out, const char *in) _CUPS_DEPRECATED;
extern char *httpDecode64(char *out, const char *in) _CUPS_DEPRECATED;
extern int httpGetLength(http_t *http) _CUPS_DEPRECATED;
extern char *httpMD5(const char *, const char *, const char *,
char [33]);
extern char *httpMD5Final(const char *, const char *, const char *,
@@ -505,7 +393,7 @@ extern void httpSeparate2(const char *uri,
char *method, int methodlen,
char *username, int usernamelen,
char *host, int hostlen, int *port,
char *resource, int resourcelen) _CUPS_DEPRECATED_MSG("Use httpSeparateURI instead.");
char *resource, int resourcelen) _CUPS_DEPRECATED;
/**** New in CUPS 1.2/OS X 10.5 ****/
extern int httpAddrAny(const http_addr_t *addr) _CUPS_API_1_2;
@@ -584,34 +472,6 @@ extern int httpReconnect2(http_t *http, int msec, int *cancel)
_CUPS_API_1_6;
/**** New in CUPS 1.7 ****/
extern http_t *httpAcceptConnection(int fd, int blocking)
_CUPS_API_1_7;
extern http_addrlist_t *httpAddrCopyList(http_addrlist_t *src) _CUPS_API_1_7;
extern int httpAddrListen(http_addr_t *addr, int port)
_CUPS_API_1_7;
extern int httpAddrPort(http_addr_t *addr) _CUPS_API_1_7;
extern char *httpAssembleUUID(const char *server, int port,
const char *name, int number,
char *buffer, size_t bufsize)
_CUPS_API_1_7;
extern http_t *httpConnect2(const char *host, int port,
http_addrlist_t *addrlist,
int family, http_encryption_t encryption,
int blocking, int msec, int *cancel)
_CUPS_API_1_7;
extern const char *httpGetContentEncoding(http_t *http) _CUPS_API_1_7;
extern http_status_t httpGetExpect(http_t *http) _CUPS_API_1_7;
extern ssize_t httpPeek(http_t *http, char *buffer, size_t length)
_CUPS_API_1_7;
extern http_state_t httpReadRequest(http_t *http, char *resource,
size_t resourcelen) _CUPS_API_1_7;
extern void httpSetDefaultField(http_t *http, http_field_t field,
const char *value) _CUPS_API_1_7;
extern http_state_t httpWriteResponse(http_t *http,
http_status_t status) _CUPS_API_1_7;
/*
* C++ magic...
*/
+2 -5
Ver Arquivo
@@ -3,7 +3,7 @@
*
* Private IPP definitions for CUPS.
*
* Copyright 2007-2012 by Apple Inc.
* Copyright 2007-2011 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -54,7 +54,6 @@ typedef struct /**** Attribute mapping data ****/
ipp_tag_t group_tag; /* Group tag for this attribute */
ipp_tag_t alt_group_tag; /* Alternate group tag for this
* attribute */
const ipp_op_t *operations; /* Allowed operations for this attr */
} _ipp_option_t;
@@ -62,11 +61,9 @@ typedef struct /**** Attribute mapping data ****/
* Prototypes for private functions...
*/
#ifdef DEBUG
extern const char *_ippCheckOptions(void);
#endif /* DEBUG */
extern _ipp_option_t *_ippFindOption(const char *name);
/*
* C++ magic...
*/
+55 -1179
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+308 -1801
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+173 -469
Ver Arquivo
@@ -3,7 +3,7 @@
*
* Internet Printing Protocol definitions for CUPS.
*
* Copyright 2007-2013 by Apple Inc.
* Copyright 2007-2012 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -23,7 +23,6 @@
*/
# include "http.h"
# include <stdarg.h>
/*
@@ -55,16 +54,8 @@ extern "C" {
* Common limits...
*/
# define IPP_MAX_CHARSET 64 /* Maximum length of charset values w/nul */
# define IPP_MAX_KEYWORD 256 /* Maximum length of keyword values w/nul */
# define IPP_MAX_LANGUAGE 64 /* Maximum length of naturalLanguage values w/nul */
# define IPP_MAX_LENGTH 32767 /* Maximum size of any single value */
# define IPP_MAX_MIMETYPE 256 /* Maximum length of mimeMediaType values w/nul */
# define IPP_MAX_NAME 256 /* Maximum length of common name values w/nul */
# define IPP_MAX_OCTETSTRING 1023 /* Maximum length of octetString values w/o nul */
# define IPP_MAX_TEXT 1024 /* Maximum length of text values w/nul */
# define IPP_MAX_URI 1024 /* Maximum length of uri values w/nul */
# define IPP_MAX_URISCHEME 64 /* Maximum length of uriScheme values w/nul */
# define IPP_MAX_NAME 256 /* Maximum length of common name values */
# define IPP_MAX_VALUES 8 /* Power-of-2 allocation increment */
@@ -74,22 +65,14 @@ extern "C" {
typedef enum ipp_dstate_e /**** Document states ****/
{
IPP_DOCUMENT_PENDING = 3, /* Document is pending */
IPP_DOCUMENT_PROCESSING = 5, /* Document is processing */
IPP_DOCUMENT_CANCELED = 7, /* Document is canceled */
IPP_DOCUMENT_ABORTED, /* Document is aborted */
IPP_DOCUMENT_COMPLETED /* Document is completed */
# ifndef _CUPS_NO_DEPRECATED
# define IPP_DOCUMENT_PENDING IPP_DSTATE_PENDING
# define IPP_DOCUMENT_PROCESSING IPP_DSTATE_PROCESSING
# define IPP_DOCUMENT_CANCELED IPP_DSTATE_CANCELED
# define IPP_DOCUMENT_ABORTED IPP_DSTATE_ABORTED
# define IPP_DOCUMENT_COMPLETED IPP_DSTATE_COMPLETED
# endif /* !_CUPS_NO_DEPRECATED */
IPP_DOCUMENT_PENDING = 3,
IPP_DOCUMENT_PROCESSING = 5,
IPP_DOCUMENT_CANCELED = 7,
IPP_DOCUMENT_ABORTED,
IPP_DOCUMENT_COMPLETED
} ipp_dstate_t;
typedef enum ipp_finishings_e /**** Finishings ****/
typedef enum ipp_finish_e /**** Finishings ****/
{
IPP_FINISHINGS_NONE = 3, /* No finishing */
IPP_FINISHINGS_STAPLE, /* Staple (any location) */
@@ -102,7 +85,7 @@ typedef enum ipp_finishings_e /**** Finishings ****/
IPP_FINISHINGS_TRIM, /* Trim (any type) */
IPP_FINISHINGS_BALE, /* Bale (any type) */
IPP_FINISHINGS_BOOKLET_MAKER, /* Fold to make booklet */
IPP_FINISHINGS_JOG_OFFSET, /* Offset for binding (any type) */
IPP_FINISHINGS_JOB_OFFSET, /* Offset for binding (any type) */
IPP_FINISHINGS_STAPLE_TOP_LEFT = 20, /* Staple top left corner */
IPP_FINISHINGS_STAPLE_BOTTOM_LEFT, /* Staple bottom left corner */
IPP_FINISHINGS_STAPLE_TOP_RIGHT, /* Staple top right corner */
@@ -122,274 +105,126 @@ typedef enum ipp_finishings_e /**** Finishings ****/
IPP_FINISHINGS_TRIM_AFTER_PAGES = 60, /* Trim output after each page */
IPP_FINISHINGS_TRIM_AFTER_DOCUMENTS, /* Trim output after each document */
IPP_FINISHINGS_TRIM_AFTER_COPIES, /* Trim output after each copy */
IPP_FINISHINGS_TRIM_AFTER_JOB, /* Trim output after job */
/* Proposed extensions for finishings */
IPP_FINISHINGS_CUPS_PUNCH_TOP_LEFT = 0x40000046,
/* Punch 1 hole top left */
IPP_FINISHINGS_CUPS_PUNCH_BOTTOM_LEFT,/* Punch 1 hole bottom left */
IPP_FINISHINGS_CUPS_PUNCH_TOP_RIGHT, /* Punch 1 hole top right */
IPP_FINISHINGS_CUPS_PUNCH_BOTTOM_RIGHT,
/* Punch 1 hole bottom right */
IPP_FINISHINGS_CUPS_PUNCH_DUAL_LEFT, /* Punch 2 holes left side */
IPP_FINISHINGS_CUPS_PUNCH_DUAL_TOP, /* Punch 2 holes top edge */
IPP_FINISHINGS_CUPS_PUNCH_DUAL_RIGHT, /* Punch 2 holes right side */
IPP_FINISHINGS_CUPS_PUNCH_DUAL_BOTTOM,/* Punch 2 holes bottom edge */
IPP_FINISHINGS_CUPS_PUNCH_TRIPLE_LEFT,/* Punch 3 holes left side */
IPP_FINISHINGS_CUPS_PUNCH_TRIPLE_TOP, /* Punch 3 holes top edge */
IPP_FINISHINGS_CUPS_PUNCH_TRIPLE_RIGHT,
/* Punch 3 holes right side */
IPP_FINISHINGS_CUPS_PUNCH_TRIPLE_BOTTOM,
/* Punch 3 holes bottom edge */
IPP_FINISHINGS_CUPS_PUNCH_QUAD_LEFT, /* Punch 4 holes left side */
IPP_FINISHINGS_CUPS_PUNCH_QUAD_TOP, /* Punch 4 holes top edge */
IPP_FINISHINGS_CUPS_PUNCH_QUAD_RIGHT, /* Punch 4 holes right side */
IPP_FINISHINGS_CUPS_PUNCH_QUAD_BOTTOM,/* Punch 4 holes bottom edge */
IPP_FINISHINGS_CUPS_FOLD_ACCORDIAN = 0x4000005A,
/* Accordian-fold the paper vertically into four sections */
IPP_FINISHINGS_CUPS_FOLD_DOUBLE_GATE, /* Fold the top and bottom quarters of the paper towards the midline, then fold in half vertically */
IPP_FINISHINGS_CUPS_FOLD_GATE, /* Fold the top and bottom quarters of the paper towards the midline */
IPP_FINISHINGS_CUPS_FOLD_HALF, /* Fold the paper in half vertically */
IPP_FINISHINGS_CUPS_FOLD_HALF_Z, /* Fold the paper in half horizontally, then Z-fold the paper vertically */
IPP_FINISHINGS_CUPS_FOLD_LEFT_GATE, /* Fold the top quarter of the paper towards the midline */
IPP_FINISHINGS_CUPS_FOLD_LETTER, /* Fold the paper into three sections vertically; sometimes also known as a C fold*/
IPP_FINISHINGS_CUPS_FOLD_PARALLEL, /* Fold the paper in half vertically two times, yielding four sections */
IPP_FINISHINGS_CUPS_FOLD_POSTER, /* Fold the paper in half horizontally and vertically; sometimes also called a cross fold */
IPP_FINISHINGS_CUPS_FOLD_RIGHT_GATE, /* Fold the bottom quarter of the paper towards the midline */
IPP_FINISHINGS_CUPS_FOLD_Z /* Fold the paper vertically into three sections, forming a Z */
} ipp_finishings_t;
# ifndef _CUPS_NO_DEPRECATED
# define IPP_FINISHINGS_JOB_OFFSET IPP_FINISHINGS_JOG_OFFSET
/* Long-time misspelling... */
typedef enum ipp_finishings_e ipp_finish_t;
# endif /* !_CUPS_NO_DEPRECATED */
IPP_FINISHINGS_TRIM_AFTER_JOB /* Trim output after job */
} ipp_finish_t;
typedef enum ipp_jcollate_e /**** Job collation types ****/
{
IPP_JCOLLATE_UNCOLLATED_SHEETS = 3,
IPP_JCOLLATE_COLLATED_DOCUMENTS,
IPP_JCOLLATE_UNCOLLATED_DOCUMENTS
# ifndef _CUPS_NO_DEPRECATED
# define IPP_JOB_UNCOLLATED_SHEETS IPP_JCOLLATE_UNCOLLATED_SHEETS
# define IPP_JOB_COLLATED_DOCUMENTS IPP_JCOLLATE_COLLATED_DOCUMENTS
# define IPP_JOB_UNCOLLATED_DOCUMENTS IPP_JCOLLATE_UNCOLLATED_DOCUMENTS
# endif /* !_CUPS_NO_DEPRECATED */
IPP_JOB_UNCOLLATED_SHEETS = 3,
IPP_JOB_COLLATED_DOCUMENTS,
IPP_JOB_UNCOLLATED_DOCUMENTS
} ipp_jcollate_t;
typedef enum ipp_jstate_e /**** Job states ****/
{
IPP_JSTATE_PENDING = 3, /* Job is waiting to be printed */
IPP_JSTATE_HELD, /* Job is held for printing */
IPP_JSTATE_PROCESSING, /* Job is currently printing */
IPP_JSTATE_STOPPED, /* Job has been stopped */
IPP_JSTATE_CANCELED, /* Job has been canceled */
IPP_JSTATE_ABORTED, /* Job has aborted due to error */
IPP_JSTATE_COMPLETED /* Job has completed successfully */
# ifndef _CUPS_NO_DEPRECATED
# define IPP_JOB_PENDING IPP_JSTATE_PENDING
# define IPP_JOB_HELD IPP_JSTATE_HELD
# define IPP_JOB_PROCESSING IPP_JSTATE_PROCESSING
# define IPP_JOB_STOPPED IPP_JSTATE_STOPPED
# define IPP_JOB_CANCELED IPP_JSTATE_CANCELED
# define IPP_JOB_ABORTED IPP_JSTATE_ABORTED
# define IPP_JOB_COMPLETED IPP_JSTATE_COMPLETED
IPP_JOB_PENDING = 3, /* Job is waiting to be printed */
IPP_JOB_HELD, /* Job is held for printing */
IPP_JOB_PROCESSING, /* Job is currently printing */
IPP_JOB_STOPPED, /* Job has been stopped */
IPP_JOB_CANCELED, /* Job has been canceled */
IPP_JOB_ABORTED, /* Job has aborted due to error */
IPP_JOB_COMPLETED /* Job has completed successfully */
/* Legacy name for canceled state */
# define IPP_JOB_CANCELLED IPP_JSTATE_CANCELED
# endif /* !_CUPS_NO_DEPRECATED */
#define IPP_JOB_CANCELLED IPP_JOB_CANCELED
} ipp_jstate_t;
typedef enum ipp_op_e /**** IPP operations ****/
{
IPP_OP_CUPS_INVALID = -1, /* Invalid operation name for @link ippOpValue@ */
IPP_OP_CUPS_NONE = 0, /* No operation @private@ */
IPP_OP_PRINT_JOB = 0x0002, /* Print a single file */
IPP_OP_PRINT_URI, /* Print a single URL @private@ */
IPP_OP_VALIDATE_JOB, /* Validate job options */
IPP_OP_CREATE_JOB, /* Create an empty print job */
IPP_OP_SEND_DOCUMENT, /* Add a file to a job */
IPP_OP_SEND_URI, /* Add a URL to a job @private@ */
IPP_OP_CANCEL_JOB, /* Cancel a job */
IPP_OP_GET_JOB_ATTRIBUTES, /* Get job attributes */
IPP_OP_GET_JOBS, /* Get a list of jobs */
IPP_OP_GET_PRINTER_ATTRIBUTES, /* Get printer attributes */
IPP_OP_HOLD_JOB, /* Hold a job for printing */
IPP_OP_RELEASE_JOB, /* Release a job for printing */
IPP_OP_RESTART_JOB, /* Reprint a job */
IPP_OP_PAUSE_PRINTER = 0x0010, /* Stop a printer */
IPP_OP_RESUME_PRINTER, /* Start a printer */
IPP_OP_PURGE_JOBS, /* Cancel all jobs */
IPP_OP_SET_PRINTER_ATTRIBUTES, /* Set printer attributes @private@ */
IPP_OP_SET_JOB_ATTRIBUTES, /* Set job attributes */
IPP_OP_GET_PRINTER_SUPPORTED_VALUES, /* Get supported attribute values */
IPP_OP_CREATE_PRINTER_SUBSCRIPTION, /* Create a printer subscription @since CUPS 1.2/OS X 10.5@ */
IPP_OP_CREATE_JOB_SUBSCRIPTION, /* Create a job subscription @since CUPS 1.2/OS X 10.5@ */
IPP_OP_GET_SUBSCRIPTION_ATTRIBUTES, /* Get subscription attributes @since CUPS 1.2/OS X 10.5@ */
IPP_OP_GET_SUBSCRIPTIONS, /* Get list of subscriptions @since CUPS 1.2/OS X 10.5@ */
IPP_OP_RENEW_SUBSCRIPTION, /* Renew a printer subscription @since CUPS 1.2/OS X 10.5@ */
IPP_OP_CANCEL_SUBSCRIPTION, /* Cancel a subscription @since CUPS 1.2/OS X 10.5@ */
IPP_OP_GET_NOTIFICATIONS, /* Get notification events @since CUPS 1.2/OS X 10.5@ */
IPP_OP_SEND_NOTIFICATIONS, /* Send notification events @private@ */
IPP_OP_GET_RESOURCE_ATTRIBUTES, /* Get resource attributes @private@ */
IPP_OP_GET_RESOURCE_DATA, /* Get resource data @private@ */
IPP_OP_GET_RESOURCES, /* Get list of resources @private@ */
IPP_OP_GET_PRINT_SUPPORT_FILES, /* Get printer support files @private@ */
IPP_OP_ENABLE_PRINTER, /* Start a printer */
IPP_OP_DISABLE_PRINTER, /* Stop a printer */
IPP_OP_PAUSE_PRINTER_AFTER_CURRENT_JOB,
/* Stop printer after the current job @private@ */
IPP_OP_HOLD_NEW_JOBS, /* Hold new jobs @private@ */
IPP_OP_RELEASE_HELD_NEW_JOBS, /* Release new jobs @private@ */
IPP_OP_DEACTIVATE_PRINTER, /* Stop a printer @private@ */
IPP_OP_ACTIVATE_PRINTER, /* Start a printer @private@ */
IPP_OP_RESTART_PRINTER, /* Restart a printer @private@ */
IPP_OP_SHUTDOWN_PRINTER, /* Turn a printer off @private@ */
IPP_OP_STARTUP_PRINTER, /* Turn a printer on @private@ */
IPP_OP_REPROCESS_JOB, /* Reprint a job @private@ */
IPP_OP_CANCEL_CURRENT_JOB, /* Cancel the current job @private@ */
IPP_OP_SUSPEND_CURRENT_JOB, /* Suspend the current job @private@ */
IPP_OP_RESUME_JOB, /* Resume the current job @private@ */
IPP_OP_PROMOTE_JOB, /* Promote a job to print sooner @private@ */
IPP_OP_SCHEDULE_JOB_AFTER, /* Schedule a job to print after another @private@ */
IPP_OP_CANCEL_DOCUMENT = 0x0033, /* Cancel-Document @private@ */
IPP_OP_GET_DOCUMENT_ATTRIBUTES, /* Get-Document-Attributes @private@ */
IPP_OP_GET_DOCUMENTS, /* Get-Documents @private@ */
IPP_OP_DELETE_DOCUMENT, /* Delete-Document @private@ */
IPP_OP_SET_DOCUMENT_ATTRIBUTES, /* Set-Document-Attributes @private@ */
IPP_OP_CANCEL_JOBS, /* Cancel-Jobs */
IPP_OP_CANCEL_MY_JOBS, /* Cancel-My-Jobs */
IPP_OP_RESUBMIT_JOB, /* Resubmit-Job */
IPP_OP_CLOSE_JOB, /* Close-Job */
IPP_OP_IDENTIFY_PRINTER, /* Identify-Printer (proposed IPP JPS3) */
IPP_OP_VALIDATE_DOCUMENT, /* Validate-Document (proposed IPP JPS3) */
IPP_OP_PRIVATE = 0x4000, /* Reserved @private@ */
IPP_OP_CUPS_GET_DEFAULT, /* Get the default printer */
IPP_OP_CUPS_GET_PRINTERS, /* Get a list of printers and/or classes */
IPP_OP_CUPS_ADD_MODIFY_PRINTER, /* Add or modify a printer */
IPP_OP_CUPS_DELETE_PRINTER, /* Delete a printer */
IPP_OP_CUPS_GET_CLASSES, /* Get a list of classes @deprecated@ */
IPP_OP_CUPS_ADD_MODIFY_CLASS, /* Add or modify a class */
IPP_OP_CUPS_DELETE_CLASS, /* Delete a class */
IPP_OP_CUPS_ACCEPT_JOBS, /* Accept new jobs on a printer */
IPP_OP_CUPS_REJECT_JOBS, /* Reject new jobs on a printer */
IPP_OP_CUPS_SET_DEFAULT, /* Set the default printer */
IPP_OP_CUPS_GET_DEVICES, /* Get a list of supported devices */
IPP_OP_CUPS_GET_PPDS, /* Get a list of supported drivers */
IPP_OP_CUPS_MOVE_JOB, /* Move a job to a different printer */
IPP_OP_CUPS_AUTHENTICATE_JOB, /* Authenticate a job @since CUPS 1.2/OS X 10.5@ */
IPP_OP_CUPS_GET_PPD, /* Get a PPD file @since CUPS 1.3/OS X 10.5@ */
IPP_OP_CUPS_GET_DOCUMENT = 0x4027 /* Get a document file @since CUPS 1.4/OS X 10.6@ */
IPP_PRINT_JOB = 0x0002, /* Print a single file */
IPP_PRINT_URI, /* Print a single URL @private@ */
IPP_VALIDATE_JOB, /* Validate job options */
IPP_CREATE_JOB, /* Create an empty print job */
IPP_SEND_DOCUMENT, /* Add a file to a job */
IPP_SEND_URI, /* Add a URL to a job @private@ */
IPP_CANCEL_JOB, /* Cancel a job */
IPP_GET_JOB_ATTRIBUTES, /* Get job attributes */
IPP_GET_JOBS, /* Get a list of jobs */
IPP_GET_PRINTER_ATTRIBUTES, /* Get printer attributes */
IPP_HOLD_JOB, /* Hold a job for printing */
IPP_RELEASE_JOB, /* Release a job for printing */
IPP_RESTART_JOB, /* Reprint a job */
IPP_PAUSE_PRINTER = 0x0010, /* Stop a printer */
IPP_RESUME_PRINTER, /* Start a printer */
IPP_PURGE_JOBS, /* Cancel all jobs */
IPP_SET_PRINTER_ATTRIBUTES, /* Set printer attributes @private@ */
IPP_SET_JOB_ATTRIBUTES, /* Set job attributes */
IPP_GET_PRINTER_SUPPORTED_VALUES, /* Get supported attribute values */
IPP_CREATE_PRINTER_SUBSCRIPTION, /* Create a printer subscription @since CUPS 1.2/OS X 10.5@ */
IPP_CREATE_JOB_SUBSCRIPTION, /* Create a job subscription @since CUPS 1.2/OS X 10.5@ */
IPP_GET_SUBSCRIPTION_ATTRIBUTES, /* Get subscription attributes @since CUPS 1.2/OS X 10.5@ */
IPP_GET_SUBSCRIPTIONS, /* Get list of subscriptions @since CUPS 1.2/OS X 10.5@ */
IPP_RENEW_SUBSCRIPTION, /* Renew a printer subscription @since CUPS 1.2/OS X 10.5@ */
IPP_CANCEL_SUBSCRIPTION, /* Cancel a subscription @since CUPS 1.2/OS X 10.5@ */
IPP_GET_NOTIFICATIONS, /* Get notification events @since CUPS 1.2/OS X 10.5@ */
IPP_SEND_NOTIFICATIONS, /* Send notification events @private@ */
IPP_GET_RESOURCE_ATTRIBUTES, /* Get resource attributes @private@ */
IPP_GET_RESOURCE_DATA, /* Get resource data @private@ */
IPP_GET_RESOURCES, /* Get list of resources @private@ */
IPP_GET_PRINT_SUPPORT_FILES, /* Get printer support files @private@ */
IPP_ENABLE_PRINTER, /* Start a printer */
IPP_DISABLE_PRINTER, /* Stop a printer */
IPP_PAUSE_PRINTER_AFTER_CURRENT_JOB, /* Stop printer after the current job @private@ */
IPP_HOLD_NEW_JOBS, /* Hold new jobs @private@ */
IPP_RELEASE_HELD_NEW_JOBS, /* Release new jobs @private@ */
IPP_DEACTIVATE_PRINTER, /* Stop a printer @private@ */
IPP_ACTIVATE_PRINTER, /* Start a printer @private@ */
IPP_RESTART_PRINTER, /* Restart a printer @private@ */
IPP_SHUTDOWN_PRINTER, /* Turn a printer off @private@ */
IPP_STARTUP_PRINTER, /* Turn a printer on @private@ */
IPP_REPROCESS_JOB, /* Reprint a job @private@ */
IPP_CANCEL_CURRENT_JOB, /* Cancel the current job @private@ */
IPP_SUSPEND_CURRENT_JOB, /* Suspend the current job @private@ */
IPP_RESUME_JOB, /* Resume the current job @private@ */
IPP_PROMOTE_JOB, /* Promote a job to print sooner @private@ */
IPP_SCHEDULE_JOB_AFTER, /* Schedule a job to print after another @private@ */
IPP_CANCEL_DOCUMENT = 0x0033, /* Cancel-Document @private@ */
IPP_GET_DOCUMENT_ATTRIBUTES, /* Get-Document-Attributes @private@ */
IPP_GET_DOCUMENTS, /* Get-Documents @private@ */
IPP_DELETE_DOCUMENT, /* Delete-Document @private@ */
IPP_SET_DOCUMENT_ATTRIBUTES, /* Set-Document-Attributes @private@ */
IPP_CANCEL_JOBS, /* Cancel-Jobs */
IPP_CANCEL_MY_JOBS, /* Cancel-My-Jobs */
IPP_RESUBMIT_JOB, /* Resubmit-Job */
IPP_CLOSE_JOB, /* Close-Job */
IPP_IDENTIFY_PRINTER, /* Identify-Printer (proposed IPP JPS3) */
IPP_VALIDATE_DOCUMENT, /* Validate-Document (proposed IPP JPS3) */
IPP_PRIVATE = 0x4000, /* Reserved @private@ */
CUPS_GET_DEFAULT, /* Get the default printer */
CUPS_GET_PRINTERS, /* Get a list of printers and/or classes */
CUPS_ADD_MODIFY_PRINTER, /* Add or modify a printer */
CUPS_DELETE_PRINTER, /* Delete a printer */
CUPS_GET_CLASSES, /* Get a list of classes @deprecated@ */
CUPS_ADD_MODIFY_CLASS, /* Add or modify a class */
CUPS_DELETE_CLASS, /* Delete a class */
CUPS_ACCEPT_JOBS, /* Accept new jobs on a printer */
CUPS_REJECT_JOBS, /* Reject new jobs on a printer */
CUPS_SET_DEFAULT, /* Set the default printer */
CUPS_GET_DEVICES, /* Get a list of supported devices */
CUPS_GET_PPDS, /* Get a list of supported drivers */
CUPS_MOVE_JOB, /* Move a job to a different printer */
CUPS_AUTHENTICATE_JOB, /* Authenticate a job @since CUPS 1.2/OS X 10.5@ */
CUPS_GET_PPD, /* Get a PPD file @since CUPS 1.3/OS X 10.5@ */
CUPS_GET_DOCUMENT = 0x4027 /* Get a document file @since CUPS 1.4/OS X 10.6@ */
# ifndef _CUPS_NO_DEPRECATED
# define IPP_PRINT_JOB IPP_OP_PRINT_JOB
# define IPP_PRINT_URI IPP_OP_PRINT_URI
# define IPP_VALIDATE_JOB IPP_OP_VALIDATE_JOB
# define IPP_CREATE_JOB IPP_OP_CREATE_JOB
# define IPP_SEND_DOCUMENT IPP_OP_SEND_DOCUMENT
# define IPP_SEND_URI IPP_OP_SEND_URI
# define IPP_CANCEL_JOB IPP_OP_CANCEL_JOB
# define IPP_GET_JOB_ATTRIBUTES IPP_OP_GET_JOB_ATTRIBUTES
# define IPP_GET_JOBS IPP_OP_GET_JOBS
# define IPP_GET_PRINTER_ATTRIBUTES IPP_OP_GET_PRINTER_ATTRIBUTES
# define IPP_HOLD_JOB IPP_OP_HOLD_JOB
# define IPP_RELEASE_JOB IPP_OP_RELEASE_JOB
# define IPP_RESTART_JOB IPP_OP_RESTART_JOB
# define IPP_PAUSE_PRINTER IPP_OP_PAUSE_PRINTER
# define IPP_RESUME_PRINTER IPP_OP_RESUME_PRINTER
# define IPP_PURGE_JOBS IPP_OP_PURGE_JOBS
# define IPP_SET_PRINTER_ATTRIBUTES IPP_OP_SET_PRINTER_ATTRIBUTES
# define IPP_SET_JOB_ATTRIBUTES IPP_OP_SET_JOB_ATTRIBUTES
# define IPP_GET_PRINTER_SUPPORTED_VALUES IPP_OP_GET_PRINTER_SUPPORTED_VALUES
# define IPP_CREATE_PRINTER_SUBSCRIPTION IPP_OP_CREATE_PRINTER_SUBSCRIPTION
# define IPP_CREATE_JOB_SUBSCRIPTION IPP_OP_CREATE_JOB_SUBSCRIPTION
# define IPP_GET_SUBSCRIPTION_ATTRIBUTES IPP_OP_GET_SUBSCRIPTION_ATTRIBUTES
# define IPP_GET_SUBSCRIPTIONS IPP_OP_GET_SUBSCRIPTIONS
# define IPP_RENEW_SUBSCRIPTION IPP_OP_RENEW_SUBSCRIPTION
# define IPP_CANCEL_SUBSCRIPTION IPP_OP_CANCEL_SUBSCRIPTION
# define IPP_GET_NOTIFICATIONS IPP_OP_GET_NOTIFICATIONS
# define IPP_SEND_NOTIFICATIONS IPP_OP_SEND_NOTIFICATIONS
# define IPP_GET_RESOURCE_ATTRIBUTES IPP_OP_GET_RESOURCE_ATTRIBUTES
# define IPP_GET_RESOURCE_DATA IPP_OP_GET_RESOURCE_DATA
# define IPP_GET_RESOURCES IPP_OP_GET_RESOURCES
# define IPP_GET_PRINT_SUPPORT_FILES IPP_OP_GET_PRINT_SUPPORT_FILES
# define IPP_ENABLE_PRINTER IPP_OP_ENABLE_PRINTER
# define IPP_DISABLE_PRINTER IPP_OP_DISABLE_PRINTER
# define IPP_PAUSE_PRINTER_AFTER_CURRENT_JOB IPP_OP_PAUSE_PRINTER_AFTER_CURRENT_JOB
# define IPP_HOLD_NEW_JOBS IPP_OP_HOLD_NEW_JOBS
# define IPP_RELEASE_HELD_NEW_JOBS IPP_OP_RELEASE_HELD_NEW_JOBS
# define IPP_DEACTIVATE_PRINTER IPP_OP_DEACTIVATE_PRINTER
# define IPP_ACTIVATE_PRINTER IPP_OP_ACTIVATE_PRINTER
# define IPP_RESTART_PRINTER IPP_OP_RESTART_PRINTER
# define IPP_SHUTDOWN_PRINTER IPP_OP_SHUTDOWN_PRINTER
# define IPP_STARTUP_PRINTER IPP_OP_STARTUP_PRINTER
# define IPP_REPROCESS_JOB IPP_OP_REPROCESS_JOB
# define IPP_CANCEL_CURRENT_JOB IPP_OP_CANCEL_CURRENT_JOB
# define IPP_SUSPEND_CURRENT_JOB IPP_OP_SUSPEND_CURRENT_JOB
# define IPP_RESUME_JOB IPP_OP_RESUME_JOB
# define IPP_PROMOTE_JOB IPP_OP_PROMOTE_JOB
# define IPP_SCHEDULE_JOB_AFTER IPP_OP_SCHEDULE_JOB_AFTER
# define IPP_CANCEL_DOCUMENT IPP_OP_CANCEL_DOCUMENT
# define IPP_GET_DOCUMENT_ATTRIBUTES IPP_OP_GET_DOCUMENT_ATTRIBUTES
# define IPP_GET_DOCUMENTS IPP_OP_GET_DOCUMENTS
# define IPP_DELETE_DOCUMENT IPP_OP_DELETE_DOCUMENT
# define IPP_SET_DOCUMENT_ATTRIBUTES IPP_OP_SET_DOCUMENT_ATTRIBUTES
# define IPP_CANCEL_JOBS IPP_OP_CANCEL_JOBS
# define IPP_CANCEL_MY_JOBS IPP_OP_CANCEL_MY_JOBS
# define IPP_RESUBMIT_JOB IPP_OP_RESUBMIT_JOB
# define IPP_CLOSE_JOB IPP_OP_CLOSE_JOB
# define IPP_IDENTIFY_PRINTER IPP_OP_IDENTIFY_PRINTER
# define IPP_VALIDATE_DOCUMENT IPP_OP_VALIDATE_DOCUMENT
# define IPP_PRIVATE IPP_OP_PRIVATE
# define CUPS_GET_DEFAULT IPP_OP_CUPS_GET_DEFAULT
# define CUPS_GET_PRINTERS IPP_OP_CUPS_GET_PRINTERS
# define CUPS_ADD_MODIFY_PRINTER IPP_OP_CUPS_ADD_MODIFY_PRINTER
# define CUPS_DELETE_PRINTER IPP_OP_CUPS_DELETE_PRINTER
# define CUPS_GET_CLASSES IPP_OP_CUPS_GET_CLASSES
# define CUPS_ADD_MODIFY_CLASS IPP_OP_CUPS_ADD_MODIFY_CLASS
# define CUPS_DELETE_CLASS IPP_OP_CUPS_DELETE_CLASS
# define CUPS_ACCEPT_JOBS IPP_OP_CUPS_ACCEPT_JOBS
# define CUPS_REJECT_JOBS IPP_OP_CUPS_REJECT_JOBS
# define CUPS_SET_DEFAULT IPP_OP_CUPS_SET_DEFAULT
# define CUPS_GET_DEVICES IPP_OP_CUPS_GET_DEVICES
# define CUPS_GET_PPDS IPP_OP_CUPS_GET_PPDS
# define CUPS_MOVE_JOB IPP_OP_CUPS_MOVE_JOB
# define CUPS_AUTHENTICATE_JOB IPP_OP_CUPS_AUTHENTICATE_JOB
# define CUPS_GET_PPD IPP_OP_CUPS_GET_PPD
# define CUPS_GET_DOCUMENT IPP_OP_CUPS_GET_DOCUMENT
/* Legacy names */
# define CUPS_ADD_PRINTER IPP_OP_CUPS_ADD_MODIFY_PRINTER
# define CUPS_ADD_CLASS IPP_OP_CUPS_ADD_MODIFY_CLASS
# endif /* !_CUPS_NO_DEPRECATED */
/* Legacy names for the add operations */
#define CUPS_ADD_PRINTER CUPS_ADD_MODIFY_PRINTER
#define CUPS_ADD_CLASS CUPS_ADD_MODIFY_CLASS
} ipp_op_t;
typedef enum ipp_orient_e /**** Orientation values ****/
{
IPP_ORIENT_PORTRAIT = 3, /* No rotation */
IPP_ORIENT_LANDSCAPE, /* 90 degrees counter-clockwise */
IPP_ORIENT_REVERSE_LANDSCAPE, /* 90 degrees clockwise */
IPP_ORIENT_REVERSE_PORTRAIT /* 180 degrees */
# ifndef _CUPS_NO_DEPRECATED
# define IPP_PORTRAIT IPP_ORIENT_PORTRAIT
# define IPP_LANDSCAPE IPP_ORIENT_LANDSCAPE
# define IPP_REVERSE_LANDSCAPE IPP_ORIENT_REVERSE_LANDSCAPE
# define IPP_REVERSE_PORTRAIT IPP_ORIENT_REVERSE_PORTRAIT
# endif /* !_CUPS_NO_DEPRECATED */
IPP_PORTRAIT = 3, /* No rotation */
IPP_LANDSCAPE, /* 90 degrees counter-clockwise */
IPP_REVERSE_LANDSCAPE, /* 90 degrees clockwise */
IPP_REVERSE_PORTRAIT /* 180 degrees */
} ipp_orient_t;
typedef enum ipp_pstate_e /**** Printer states ****/
{
IPP_PSTATE_IDLE = 3, /* Printer is idle */
IPP_PSTATE_PROCESSING, /* Printer is working */
IPP_PSTATE_STOPPED /* Printer is stopped */
# ifndef _CUPS_NO_DEPRECATED
# define IPP_PRINTER_IDLE IPP_PSTATE_IDLE
# define IPP_PRINTER_PROCESSING IPP_PSTATE_PROCESSING
# define IPP_PRINTER_STOPPED IPP_PSTATE_STOPPED
# endif /* _CUPS_NO_DEPRECATED */
IPP_PRINTER_IDLE = 3, /* Printer is idle */
IPP_PRINTER_PROCESSING, /* Printer is working */
IPP_PRINTER_STOPPED /* Printer is stopped */
} ipp_pstate_t;
typedef enum ipp_quality_e /**** Qualities ****/
@@ -407,163 +242,76 @@ typedef enum ipp_res_e /**** Resolution units ****/
typedef enum ipp_state_e /**** IPP states ****/
{
IPP_STATE_ERROR = -1, /* An error occurred */
IPP_STATE_IDLE, /* Nothing is happening/request completed */
IPP_STATE_HEADER, /* The request header needs to be sent/received */
IPP_STATE_ATTRIBUTE, /* One or more attributes need to be sent/received */
IPP_STATE_DATA /* IPP request data needs to be sent/received */
# ifndef _CUPS_NO_DEPRECATED
# define IPP_ERROR IPP_STATE_ERROR
# define IPP_IDLE IPP_STATE_IDLE
# define IPP_HEADER IPP_STATE_HEADER
# define IPP_ATTRIBUTE IPP_STATE_ATTRIBUTE
# define IPP_DATA IPP_STATE_DATA
# endif /* !_CUPS_NO_DEPRECATED */
IPP_ERROR = -1, /* An error occurred */
IPP_IDLE, /* Nothing is happening/request completed */
IPP_HEADER, /* The request header needs to be sent/received */
IPP_ATTRIBUTE, /* One or more attributes need to be sent/received */
IPP_DATA /* IPP request data needs to be sent/received */
} ipp_state_t;
typedef enum ipp_status_e /**** IPP status codes ****/
{
IPP_STATUS_CUPS_INVALID = -1, /* Invalid status name for @link ippErrorValue@ */
IPP_STATUS_OK = 0x0000, /* successful-ok */
IPP_STATUS_OK_IGNORED_OR_SUBSTITUTED, /* successful-ok-ignored-or-substituted-attributes */
IPP_STATUS_OK_CONFLICTING, /* successful-ok-conflicting-attributes */
IPP_STATUS_OK_IGNORED_SUBSCRIPTIONS, /* successful-ok-ignored-subscriptions */
IPP_STATUS_OK_IGNORED_NOTIFICATIONS, /* successful-ok-ignored-notifications @private@ */
IPP_STATUS_OK_TOO_MANY_EVENTS, /* successful-ok-too-many-events */
IPP_STATUS_OK_BUT_CANCEL_SUBSCRIPTION,/* successful-ok-but-cancel-subscription @private@ */
IPP_STATUS_OK_EVENTS_COMPLETE, /* successful-ok-events-complete */
IPP_STATUS_REDIRECTION_OTHER_SITE = 0x0200,
/* redirection-other-site @private@ */
IPP_STATUS_CUPS_SEE_OTHER = 0x0280, /* cups-see-other */
IPP_STATUS_ERROR_BAD_REQUEST = 0x0400,/* client-error-bad-request */
IPP_STATUS_ERROR_FORBIDDEN, /* client-error-forbidden */
IPP_STATUS_ERROR_NOT_AUTHENTICATED, /* client-error-not-authenticated */
IPP_STATUS_ERROR_NOT_AUTHORIZED, /* client-error-not-authorized */
IPP_STATUS_ERROR_NOT_POSSIBLE, /* client-error-not-possible */
IPP_STATUS_ERROR_TIMEOUT, /* client-error-timeout */
IPP_STATUS_ERROR_NOT_FOUND, /* client-error-not-found */
IPP_STATUS_ERROR_GONE, /* client-error-gone */
IPP_STATUS_ERROR_REQUEST_ENTITY, /* client-error-request-entity-too-large */
IPP_STATUS_ERROR_REQUEST_VALUE, /* client-error-request-value-too-long */
IPP_STATUS_ERROR_DOCUMENT_FORMAT_NOT_SUPPORTED,
/* client-error-document-format-not-supported */
IPP_STATUS_ERROR_ATTRIBUTES_OR_VALUES,/* client-error-attributes-or-values-not-supported */
IPP_STATUS_ERROR_URI_SCHEME, /* client-error-uri-scheme-not-supported */
IPP_STATUS_ERROR_CHARSET, /* client-error-charset-not-supported */
IPP_STATUS_ERROR_CONFLICTING, /* client-error-conflicting-attributes */
IPP_STATUS_ERROR_COMPRESSION_NOT_SUPPORTED,
/* client-error-compression-not-supported */
IPP_STATUS_ERROR_COMPRESSION_ERROR, /* client-error-compression-error */
IPP_STATUS_ERROR_DOCUMENT_FORMAT_ERROR,
/* client-error-document-format-error */
IPP_STATUS_ERROR_DOCUMENT_ACCESS, /* client-error-document-access-error */
IPP_STATUS_ERROR_ATTRIBUTES_NOT_SETTABLE,
/* client-error-attributes-not-settable */
IPP_STATUS_ERROR_IGNORED_ALL_SUBSCRIPTIONS,
/* client-error-ignored-all-subscriptions */
IPP_STATUS_ERROR_TOO_MANY_SUBSCRIPTIONS,
/* client-error-too-many-subscriptions */
IPP_STATUS_ERROR_IGNORED_ALL_NOTIFICATIONS,
/* client-error-ignored-all-notifications @private@ */
IPP_STATUS_ERROR_PRINT_SUPPORT_FILE_NOT_FOUND,
/* client-error-print-support-file-not-found @private@ */
IPP_STATUS_ERROR_DOCUMENT_PASSWORD, /* client-error-document-password-error */
IPP_STATUS_ERROR_DOCUMENT_PERMISSION, /* client-error-document-permission-error */
IPP_STATUS_ERROR_DOCUMENT_SECURITY, /* client-error-document-security-error */
IPP_STATUS_ERROR_DOCUMENT_UNPRINTABLE,/* client-error-document-unprintable-error */
IPP_OK = 0x0000, /* successful-ok */
IPP_OK_SUBST, /* successful-ok-ignored-or-substituted-attributes */
IPP_OK_CONFLICT, /* successful-ok-conflicting-attributes */
IPP_OK_IGNORED_SUBSCRIPTIONS, /* successful-ok-ignored-subscriptions */
IPP_OK_IGNORED_NOTIFICATIONS, /* successful-ok-ignored-notifications @private@ */
IPP_OK_TOO_MANY_EVENTS, /* successful-ok-too-many-events */
IPP_OK_BUT_CANCEL_SUBSCRIPTION, /* successful-ok-but-cancel-subscription @private@ */
IPP_OK_EVENTS_COMPLETE, /* successful-ok-events-complete */
IPP_REDIRECTION_OTHER_SITE = 0x200, /* redirection-other-site @private@ */
CUPS_SEE_OTHER = 0x280, /* cups-see-other */
IPP_BAD_REQUEST = 0x0400, /* client-error-bad-request */
IPP_FORBIDDEN, /* client-error-forbidden */
IPP_NOT_AUTHENTICATED, /* client-error-not-authenticated */
IPP_NOT_AUTHORIZED, /* client-error-not-authorized */
IPP_NOT_POSSIBLE, /* client-error-not-possible */
IPP_TIMEOUT, /* client-error-timeout */
IPP_NOT_FOUND, /* client-error-not-found */
IPP_GONE, /* client-error-gone */
IPP_REQUEST_ENTITY, /* client-error-request-entity-too-large */
IPP_REQUEST_VALUE, /* client-error-request-value-too-long */
IPP_DOCUMENT_FORMAT, /* client-error-document-format-not-supported */
IPP_ATTRIBUTES, /* client-error-attributes-or-values-not-supported */
IPP_URI_SCHEME, /* client-error-uri-scheme-not-supported */
IPP_CHARSET, /* client-error-charset-not-supported */
IPP_CONFLICT, /* client-error-conflicting-attributes */
IPP_COMPRESSION_NOT_SUPPORTED, /* client-error-compression-not-supported */
IPP_COMPRESSION_ERROR, /* client-error-compression-error */
IPP_DOCUMENT_FORMAT_ERROR, /* client-error-document-format-error */
IPP_DOCUMENT_ACCESS_ERROR, /* client-error-document-access-error */
IPP_ATTRIBUTES_NOT_SETTABLE, /* client-error-attributes-not-settable */
IPP_IGNORED_ALL_SUBSCRIPTIONS, /* client-error-ignored-all-subscriptions */
IPP_TOO_MANY_SUBSCRIPTIONS, /* client-error-too-many-subscriptions */
IPP_IGNORED_ALL_NOTIFICATIONS, /* client-error-ignored-all-notifications @private@ */
IPP_PRINT_SUPPORT_FILE_NOT_FOUND, /* client-error-print-support-file-not-found @private@ */
IPP_DOCUMENT_PASSWORD_ERROR, /* client-error-document-password-error */
IPP_DOCUMENT_PERMISSION_ERROR, /* client-error-document-permission-error */
IPP_DOCUMENT_SECURITY_ERROR, /* client-error-document-security-error */
IPP_DOCUMENT_UNPRINTABLE_ERROR, /* client-error-document-unprintable-error */
/* Proposed extensions for paid printing */
IPP_STATUS_ERROR_CUPS_ACCOUNT_INFO_NEEDED = 0x049C,
/* cups-error-account-info-needed @since CUPS 1.7@ */
IPP_STATUS_ERROR_CUPS_ACCOUNT_CLOSED, /* cups-error-account-closed @since CUPS 1.7@ */
IPP_STATUS_ERROR_CUPS_ACCOUNT_LIMIT_REACHED,
/* cups-error-account-limit-reached @since CUPS 1.7@ */
IPP_STATUS_ERROR_CUPS_ACCOUNT_AUTHORIZATION_FAILED,
/* cups-error-account-authorization-failed @since CUPS 1.7@ */
IPP_INTERNAL_ERROR = 0x0500, /* server-error-internal-error */
IPP_OPERATION_NOT_SUPPORTED, /* server-error-operation-not-supported */
IPP_SERVICE_UNAVAILABLE, /* server-error-service-unavailable */
IPP_VERSION_NOT_SUPPORTED, /* server-error-version-not-supported */
IPP_DEVICE_ERROR, /* server-error-device-error */
IPP_TEMPORARY_ERROR, /* server-error-temporary-error */
IPP_NOT_ACCEPTING, /* server-error-not-accepting-jobs */
IPP_PRINTER_BUSY, /* server-error-busy */
IPP_ERROR_JOB_CANCELED, /* server-error-job-canceled */
IPP_MULTIPLE_JOBS_NOT_SUPPORTED, /* server-error-multiple-document-jobs-not-supported */
IPP_PRINTER_IS_DEACTIVATED, /* server-error-printer-is-deactivated */
IPP_TOO_MANY_JOBS, /* server-error-too-many-jobs */
IPP_TOO_MANY_DOCUMENTS, /* server-error-too-many-documents */
IPP_STATUS_ERROR_INTERNAL = 0x0500, /* server-error-internal-error */
IPP_STATUS_ERROR_OPERATION_NOT_SUPPORTED,
/* server-error-operation-not-supported */
IPP_STATUS_ERROR_SERVICE_UNAVAILABLE, /* server-error-service-unavailable */
IPP_STATUS_ERROR_VERSION_NOT_SUPPORTED,
/* server-error-version-not-supported */
IPP_STATUS_ERROR_DEVICE, /* server-error-device-error */
IPP_STATUS_ERROR_TEMPORARY, /* server-error-temporary-error */
IPP_STATUS_ERROR_NOT_ACCEPTING_JOBS, /* server-error-not-accepting-jobs */
IPP_STATUS_ERROR_BUSY, /* server-error-busy */
IPP_STATUS_ERROR_JOB_CANCELED, /* server-error-job-canceled */
IPP_STATUS_ERROR_MULTIPLE_JOBS_NOT_SUPPORTED,
/* server-error-multiple-document-jobs-not-supported */
IPP_STATUS_ERROR_PRINTER_IS_DEACTIVATED,
/* server-error-printer-is-deactivated */
IPP_STATUS_ERROR_TOO_MANY_JOBS, /* server-error-too-many-jobs */
IPP_STATUS_ERROR_TOO_MANY_DOCUMENTS, /* server-error-too-many-documents */
IPP_AUTHENTICATION_CANCELED = 0x1000, /* Authentication canceled by user @since CUPS 1.5/OS X 10.7@ */
IPP_PKI_ERROR, /* Error negotiating a secure connection @since CUPS 1.5/OS X 10.7@ */
IPP_UPGRADE_REQUIRED /* TLS upgrade required */
/* These are internal and never sent over the wire... */
IPP_STATUS_ERROR_CUPS_AUTHENTICATION_CANCELED = 0x1000,
/* cups-authentication-canceled - Authentication canceled by user @since CUPS 1.5/OS X 10.7@ */
IPP_STATUS_ERROR_CUPS_PKI, /* cups-pki-error - Error negotiating a secure connection @since CUPS 1.5/OS X 10.7@ */
IPP_STATUS_ERROR_CUPS_UPGRADE_REQUIRED/* cups-upgrade-required - TLS upgrade required */
/* Legacy name for canceled status */
#define IPP_ERROR_JOB_CANCELLED IPP_ERROR_JOB_CANCELED
# ifndef _CUPS_NO_DEPRECATED
# define IPP_OK IPP_STATUS_OK
# define IPP_OK_SUBST IPP_STATUS_OK_IGNORED_OR_SUBSTITUTED
# define IPP_OK_CONFLICT IPP_STATUS_OK_CONFLICTING
# define IPP_OK_IGNORED_SUBSCRIPTIONS IPP_STATUS_OK_IGNORED_SUBSCRIPTIONS
# define IPP_OK_IGNORED_NOTIFICATIONS IPP_STATUS_OK_IGNORED_NOTIFICATIONS
# define IPP_OK_TOO_MANY_EVENTS IPP_STATUS_OK_TOO_MANY_EVENTS
# define IPP_OK_BUT_CANCEL_SUBSCRIPTION IPP_STATUS_OK_BUT_CANCEL_SUBSCRIPTION
# define IPP_OK_EVENTS_COMPLETE IPP_STATUS_OK_EVENTS_COMPLETE
# define IPP_REDIRECTION_OTHER_SITE IPP_STATUS_REDIRECTION_OTHER_SITE
# define CUPS_SEE_OTHER IPP_STATUS_CUPS_SEE_OTHER
# define IPP_BAD_REQUEST IPP_STATUS_ERROR_BAD_REQUEST
# define IPP_FORBIDDEN IPP_STATUS_ERROR_FORBIDDEN
# define IPP_NOT_AUTHENTICATED IPP_STATUS_ERROR_NOT_AUTHENTICATED
# define IPP_NOT_AUTHORIZED IPP_STATUS_ERROR_NOT_AUTHORIZED
# define IPP_NOT_POSSIBLE IPP_STATUS_ERROR_NOT_POSSIBLE
# define IPP_TIMEOUT IPP_STATUS_ERROR_TIMEOUT
# define IPP_NOT_FOUND IPP_STATUS_ERROR_NOT_FOUND
# define IPP_GONE IPP_STATUS_ERROR_GONE
# define IPP_REQUEST_ENTITY IPP_STATUS_ERROR_REQUEST_ENTITY
# define IPP_REQUEST_VALUE IPP_STATUS_ERROR_REQUEST_VALUE
# define IPP_DOCUMENT_FORMAT IPP_STATUS_ERROR_DOCUMENT_FORMAT_NOT_SUPPORTED
# define IPP_ATTRIBUTES IPP_STATUS_ERROR_ATTRIBUTES_OR_VALUES
# define IPP_URI_SCHEME IPP_STATUS_ERROR_URI_SCHEME
# define IPP_CHARSET IPP_STATUS_ERROR_CHARSET
# define IPP_CONFLICT IPP_STATUS_ERROR_CONFLICTING
# define IPP_COMPRESSION_NOT_SUPPORTED IPP_STATUS_ERROR_COMPRESSION_NOT_SUPPORTED
# define IPP_COMPRESSION_ERROR IPP_STATUS_ERROR_COMPRESSION_ERROR
# define IPP_DOCUMENT_FORMAT_ERROR IPP_STATUS_ERROR_DOCUMENT_FORMAT_ERROR
# define IPP_DOCUMENT_ACCESS_ERROR IPP_STATUS_ERROR_DOCUMENT_ACCESS
# define IPP_ATTRIBUTES_NOT_SETTABLE IPP_STATUS_ERROR_ATTRIBUTES_NOT_SETTABLE
# define IPP_IGNORED_ALL_SUBSCRIPTIONS IPP_STATUS_ERROR_IGNORED_ALL_SUBSCRIPTIONS
# define IPP_TOO_MANY_SUBSCRIPTIONS IPP_STATUS_ERROR_TOO_MANY_SUBSCRIPTIONS
# define IPP_IGNORED_ALL_NOTIFICATIONS IPP_STATUS_ERROR_IGNORED_ALL_NOTIFICATIONS
# define IPP_PRINT_SUPPORT_FILE_NOT_FOUND IPP_STATUS_ERROR_PRINT_SUPPORT_FILE_NOT_FOUND
# define IPP_DOCUMENT_PASSWORD_ERROR IPP_STATUS_ERROR_DOCUMENT_PASSWORD
# define IPP_DOCUMENT_PERMISSION_ERROR IPP_STATUS_ERROR_DOCUMENT_PERMISSION
# define IPP_DOCUMENT_SECURITY_ERROR IPP_STATUS_ERROR_DOCUMENT_SECURITY
# define IPP_DOCUMENT_UNPRINTABLE_ERROR IPP_STATUS_ERROR_DOCUMENT_UNPRINTABLE
# define IPP_INTERNAL_ERROR IPP_STATUS_ERROR_INTERNAL
# define IPP_OPERATION_NOT_SUPPORTED IPP_STATUS_ERROR_OPERATION_NOT_SUPPORTED
# define IPP_SERVICE_UNAVAILABLE IPP_STATUS_ERROR_SERVICE_UNAVAILABLE
# define IPP_VERSION_NOT_SUPPORTED IPP_STATUS_ERROR_VERSION_NOT_SUPPORTED
# define IPP_DEVICE_ERROR IPP_STATUS_ERROR_DEVICE
# define IPP_TEMPORARY_ERROR IPP_STATUS_ERROR_TEMPORARY
# define IPP_NOT_ACCEPTING IPP_STATUS_ERROR_NOT_ACCEPTING_JOBS
# define IPP_PRINTER_BUSY IPP_STATUS_ERROR_BUSY
# define IPP_ERROR_JOB_CANCELED IPP_STATUS_ERROR_JOB_CANCELED
# define IPP_MULTIPLE_JOBS_NOT_SUPPORTED IPP_STATUS_ERROR_MULTIPLE_JOBS_NOT_SUPPORTED
# define IPP_PRINTER_IS_DEACTIVATED IPP_STATUS_ERROR_PRINTER_IS_DEACTIVATED
# define IPP_TOO_MANY_JOBS IPP_STATUS_ERROR_TOO_MANY_JOBS
# define IPP_TOO_MANY_DOCUMENTS IPP_STATUS_ERROR_TOO_MANY_DOCUMENTS
# define IPP_AUTHENTICATION_CANCELED IPP_STATUS_ERROR_CUPS_AUTHENTICATION_CANCELED
# define IPP_PKI_ERROR IPP_STATUS_ERROR_CUPS_PKI
# define IPP_UPGRADE_REQUIRED IPP_STATUS_ERROR_CUPS_UPGRADE_REQUIRED
/* Legacy name for canceled status */
# define IPP_ERROR_JOB_CANCELLED IPP_STATUS_ERROR_JOB_CANCELED
# endif /* _CUPS_NO_DEPRECATED */
} ipp_status_t;
typedef enum ipp_tag_e /**** Format tags for attributes ****/
@@ -608,14 +356,9 @@ typedef enum ipp_tag_e /**** Format tags for attributes ****/
IPP_TAG_MIMETYPE, /* MIME media type value */
IPP_TAG_MEMBERNAME, /* Collection member name value */
IPP_TAG_EXTENSION = 0x7f, /* Extension point for 32-bit tags */
IPP_TAG_CUPS_MASK = 0x7fffffff, /* Mask for copied attribute values @private@ */
IPP_TAG_MASK = 0x7fffffff, /* Mask for copied attribute values @private@ */
/* The following expression is used to avoid compiler warnings with +/-0x80000000 */
IPP_TAG_CUPS_CONST = -0x7fffffff-1 /* Bitflag for copied/const attribute values @private@ */
# ifndef _CUPS_NO_DEPRECATED
# define IPP_TAG_MASK IPP_TAG_CUPS_MASK
# define IPP_TAG_COPY IPP_TAG_CUPS_CONST
# endif /* !_CUPS_NO_DEPRECATED */
IPP_TAG_COPY = -0x7fffffff-1 /* Bitflag for copied attribute values @private@ */
} ipp_tag_t;
typedef unsigned char ipp_uchar_t; /**** Unsigned 8-bit integer/character ****/
@@ -636,18 +379,12 @@ typedef int (*ipp_copycb_t)(void *context, ipp_t *dst, ipp_attribute_t *attr);
* Please use the new accessor functions available in CUPS 1.6 and later, as
* these definitions will be moved to a private header file in a future release.
*
* Define _IPP_PRIVATE_STRUCTURES to 1 to cause the private IPP structures to be
* Define _IPP_PRIVATE_STRUCTURES to cause the private IPP structures to be
* exposed in CUPS 1.6. This happens automatically on OS X when compiling for
* a deployment target of 10.7 or earlier.
*
* Define _IPP_PRIVATE_STRUCTURES to 0 to prevent the private IPP structures
* from being exposed. This is useful when migrating existing code to the new
* accessors.
*/
# ifdef _IPP_PRIVATE_STRUCTURES
/* Somebody has overridden the value */
# elif defined(_CUPS_SOURCE) || defined(_CUPS_IPP_PRIVATE_H_)
# if defined(_CUPS_SOURCE) || defined(_CUPS_IPP_PRIVATE_H_)
/* Building CUPS */
# define _IPP_PRIVATE_STRUCTURES 1
# elif defined(__APPLE__)
@@ -658,11 +395,9 @@ typedef int (*ipp_copycb_t)(void *context, ipp_t *dst, ipp_attribute_t *attr);
/* Building for 10.7 and earlier */
# define _IPP_PRIVATE_STRUCTURES 1
# endif /* MAC_OS_X_VERSION_10_8 && MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_8 */
# else
# define _IPP_PRIVATE_STRUCTURES 0
# endif /* _CUPS_SOURCE || _CUPS_IPP_PRIVATE_H_ */
# if _IPP_PRIVATE_STRUCTURES
# ifdef _IPP_PRIVATE_STRUCTURES
typedef union _ipp_request_u /**** Request Header ****/
{
struct /* Any Header */
@@ -921,37 +656,6 @@ extern int ippSetValueTag(ipp_t *ipp, ipp_attribute_t **attr,
extern int ippSetVersion(ipp_t *ipp, int major, int minor)
_CUPS_API_1_6;
/**** New in CUPS 1.7 ****/
extern ipp_attribute_t *ippAddStringf(ipp_t *ipp, ipp_tag_t group,
ipp_tag_t value_tag, const char *name,
const char *language, const char *format,
...) _CUPS_API_1_7;
extern ipp_attribute_t *ippAddStringfv(ipp_t *ipp, ipp_tag_t group,
ipp_tag_t value_tag, const char *name,
const char *language,
const char *format, va_list ap)
_CUPS_API_1_7;
extern int ippContainsInteger(ipp_attribute_t *attr, int value)
_CUPS_API_1_7;
extern int ippContainsString(ipp_attribute_t *attr,
const char *value) _CUPS_API_1_7;
extern cups_array_t *ippCreateRequestedArray(ipp_t *request) _CUPS_API_1_7;
extern void *ippGetOctetString(ipp_attribute_t *attr, int element,
int *datalen) _CUPS_API_1_7;
extern ipp_t *ippNewResponse(ipp_t *request) _CUPS_API_1_7;
extern int ippSetOctetString(ipp_t *ipp, ipp_attribute_t **attr,
int element, const void *data,
int datalen) _CUPS_API_1_7;
extern int ippSetStringf(ipp_t *ipp, ipp_attribute_t **attr,
int element, const char *format,
...) _CUPS_API_1_7;
extern int ippSetStringfv(ipp_t *ipp, ipp_attribute_t **attr,
int element, const char *format,
va_list ap) _CUPS_API_1_7;
extern int ippValidateAttribute(ipp_attribute_t *attr)
_CUPS_API_1_7;
extern int ippValidateAttributes(ipp_t *ipp) _CUPS_API_1_7;
/*
* C++ magic...
+2 -2
Ver Arquivo
@@ -3,7 +3,7 @@
*
* Localized printf/puts functions for CUPS.
*
* Copyright 2007-2012 by Apple Inc.
* Copyright 2007-2011 by Apple Inc.
* Copyright 2002-2007 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -304,7 +304,7 @@ _cupsSetLocale(char *argv[]) /* IO - Command-line arguments */
strlcpy(charset, ".UTF-8", sizeof(new_lc_time) - (charset - new_lc_time));
}
else
strlcpy(new_lc_time, "C", sizeof(new_lc_time));
strcpy(new_lc_time, "C");
setlocale(LC_TIME, new_lc_time);
#endif /* LC_TIME */
+12 -35
Ver Arquivo
@@ -446,7 +446,7 @@ cupsLangGet(const char *language) /* I - Language or locale */
* Set the character set to UTF-8...
*/
strlcpy(charset, "UTF8", sizeof(charset));
strcpy(charset, "UTF8");
/*
* Apple's setlocale doesn't give us the user's localization
@@ -582,7 +582,7 @@ cupsLangGet(const char *language) /* I - Language or locale */
*/
if (!charset[0])
strlcpy(charset, "UTF8", sizeof(charset));
strcpy(charset, "UTF8");
/*
* Parse the language string passed in to a locale string. "C" is the
@@ -597,7 +597,7 @@ cupsLangGet(const char *language) /* I - Language or locale */
if (language == NULL || !language[0] ||
!strcmp(language, "POSIX"))
strlcpy(langname, "C", sizeof(langname));
strcpy(langname, "C");
else
{
/*
@@ -646,7 +646,7 @@ cupsLangGet(const char *language) /* I - Language or locale */
if (strlen(langname) != 2)
{
strlcpy(langname, "C", sizeof(langname));
strcpy(langname, "C");
country[0] = '\0';
charset[0] = '\0';
}
@@ -701,7 +701,7 @@ cupsLangGet(const char *language) /* I - Language or locale */
if (country[0])
snprintf(real, sizeof(real), "%s_%s", langname, country);
else
strlcpy(real, langname, sizeof(real));
strcpy(real, langname);
_cupsMutexLock(&lang_mutex);
@@ -847,7 +847,6 @@ _cupsMessageLoad(const char *filename, /* I - Message catalog to load */
*ptr, /* Pointer into buffer */
*temp; /* New string */
int length; /* Length of combined strings */
size_t ptrlen; /* Length of string */
DEBUG_printf(("4_cupsMessageLoad(filename=\"%s\")", filename));
@@ -979,10 +978,9 @@ _cupsMessageLoad(const char *filename, /* I - Message catalog to load */
*/
length = (int)strlen(m->str ? m->str : m->id);
ptrlen = strlen(ptr);
if ((temp = realloc(m->str ? m->str : m->id,
length + ptrlen + 1)) == NULL)
length + strlen(ptr) + 1)) == NULL)
{
if (m->str)
free(m->str);
@@ -997,25 +995,25 @@ _cupsMessageLoad(const char *filename, /* I - Message catalog to load */
{
/*
* Copy the new portion to the end of the msgstr string - safe
* to use memcpy because the buffer is allocated to the correct
* to use strcpy because the buffer is allocated to the correct
* size...
*/
m->str = temp;
memcpy(m->str + length, ptr, ptrlen + 1);
strcpy(m->str + length, ptr);
}
else
{
/*
* Copy the new portion to the end of the msgid string - safe
* to use memcpy because the buffer is allocated to the correct
* to use strcpy because the buffer is allocated to the correct
* size...
*/
m->id = temp;
memcpy(m->id + length, ptr, ptrlen + 1);
strcpy(m->id + length, ptr);
}
}
else if (!strncmp(s, "msgstr", 6) && m)
@@ -1184,40 +1182,24 @@ appleLangDefault(void)
{
if (getenv("SOFTWARE") != NULL && (lang = getenv("LANG")) != NULL)
{
DEBUG_printf(("3appleLangDefault: Using LANG=%s", lang));
strlcpy(cg->language, lang, sizeof(cg->language));
return (cg->language);
}
else if ((bundle = CFBundleGetMainBundle()) != NULL &&
(bundleList = CFBundleCopyBundleLocalizations(bundle)) != NULL)
{
DEBUG_puts("3appleLangDefault: Getting localizationList from bundle.");
localizationList =
CFBundleCopyPreferredLocalizationsFromArray(bundleList);
CFRelease(bundleList);
}
else
{
DEBUG_puts("3appleLangDefault: Getting localizationList from preferences.");
localizationList =
CFPreferencesCopyAppValue(CFSTR("AppleLanguages"),
kCFPreferencesCurrentApplication);
}
if (localizationList)
{
#ifdef DEBUG
if (CFGetTypeID(localizationList) == CFArrayGetTypeID())
DEBUG_printf(("3appleLangDefault: Got localizationList, %d entries.",
(int)CFArrayGetCount(localizationList)));
else
DEBUG_puts("3appleLangDefault: Got localizationList but not an array.");
#endif /* DEBUG */
if (CFGetTypeID(localizationList) == CFArrayGetTypeID() &&
CFArrayGetCount(localizationList) > 0)
{
@@ -1235,7 +1217,7 @@ appleLangDefault(void)
kCFStringEncodingASCII);
CFRelease(localeName);
DEBUG_printf(("3appleLangDefault: cg->language=\"%s\"",
DEBUG_printf(("9appleLangDefault: cg->language=\"%s\"",
cg->language));
/*
@@ -1249,7 +1231,7 @@ appleLangDefault(void)
{
if (!strcmp(cg->language, apple_language_locale[i].language))
{
DEBUG_printf(("3appleLangDefault: mapping \"%s\" to \"%s\"...",
DEBUG_printf(("9appleLangDefault: mapping \"%s\" to \"%s\"...",
cg->language, apple_language_locale[i].locale));
strlcpy(cg->language, apple_language_locale[i].locale,
sizeof(cg->language));
@@ -1267,8 +1249,6 @@ appleLangDefault(void)
if (!strchr(cg->language, '.'))
strlcat(cg->language, ".UTF-8", sizeof(cg->language));
}
else
DEBUG_puts("3appleLangDefault: Unable to get localeName.");
}
}
@@ -1280,10 +1260,7 @@ appleLangDefault(void)
*/
if (!cg->language[0])
{
DEBUG_puts("3appleLangDefault: Defaulting to en_US.");
strlcpy(cg->language, "en_US.UTF-8", sizeof(cg->language));
}
}
/*
+12 -39
Ver Arquivo
@@ -1,5 +1,5 @@
LIBRARY libcups2
VERSION 2.10
VERSION 2.9
EXPORTS
_cupsBufferGet
_cupsBufferRelease
@@ -34,9 +34,12 @@ _cups_strncasecmp
_cups_strcpy
_cups_strlcat
_cups_strlcpy
_httpAddrPort
_httpAddrSetPort
_httpAssembleUUID
_httpCreate
_httpEncodeURI
_httpPeek
_httpResolveURI
_httpWait
_ippFindOption
@@ -61,6 +64,14 @@ _ppdNormalizeMakeAndModel
_ppdOpen
_ppdOpenFile
_ppdParseOptions
_pwgGenerateSize
_pwgInitSize
_pwgMediaForLegacy
_pwgMediaForPPD
_pwgMediaForPWG
_pwgMediaForSize
_pwgMediaTypeForType
_pwgPageSizeForMedia
cupsAddDest
cupsAddOption
cupsAdminCreateWindowsPPD
@@ -126,9 +137,6 @@ cupsFileStdout
cupsFileTell
cupsFileUnlock
cupsFileWrite
cupsFindDestDefault
cupsFindDestReady
cupsFindDestSupported
cupsFreeDests
cupsFreeJobs
cupsFreeOptions
@@ -136,9 +144,6 @@ cupsGetClasses
cupsGetDefault
cupsGetDefault2
cupsGetDest
cupsGetDestMediaByIndex
cupsGetDestMediaCount
cupsGetDestMediaDefault
cupsGetDests
cupsGetDests2
cupsGetFd
@@ -181,40 +186,32 @@ cupsSetPasswordCB
cupsSetServer
cupsSetServerCertCB
cupsSetUser
cupsSetUserAgent
cupsTempFd
cupsTempFile
cupsTempFile2
cupsUserAgent
cupsUTF32ToUTF8
cupsUTF8ToCharset
cupsUTF8ToUTF32
cupsUser
cupsWriteRequestData
httpAcceptConnection
httpAddCredential
httpAddrAny
httpAddrConnect
httpAddrCopyList
httpAddrEqual
httpAddrFreeList
httpAddrGetList
httpAddrLength
httpAddrListen
httpAddrLocalhost
httpAddrLookup
httpAddrPort
httpAddrString
httpAssembleURI
httpAssembleURIf
httpAssembleUUID
httpBlocking
httpCheck
httpClearCookie
httpClearFields
httpClose
httpConnect
httpConnect2
httpConnectEncrypt
httpCopyCredentials
httpDecode64
@@ -229,12 +226,10 @@ httpFlushWrite
httpFreeCredentials
httpGet
httpGetBlocking
httpGetContentEncoding
httpGetCookie
httpGetDateString
httpGetDateString2
httpGetDateTime
httpGetExpect
httpGetFd
httpGetField
httpGetHostByName
@@ -251,20 +246,17 @@ httpMD5
httpMD5Final
httpMD5String
httpOptions
httpPeek
httpPost
httpPrintf
httpPut
httpRead
httpRead2
httpReadRequest
httpReconnect
httpSeparate
httpSeparate2
httpSeparateURI
httpSetCookie
httpSetCredentials
httpSetDefaultField
httpSetExpect
httpSetField
httpSetLength
@@ -275,7 +267,6 @@ httpUpdate
httpWait
httpWrite
httpWrite2
httpWriteResponse
ippAddBoolean
ippAddBooleans
ippAddCollection
@@ -291,15 +282,10 @@ ippAddResolution
ippAddResolutions
ippAddSeparator
ippAddString
ippAddStringf
ippAddStringfv
ippAddStrings
ippAttributeString
ippContainsInteger
ippContainsString
ippCopyAttribute
ippCopyAttributes
ippCreateRequestedArray
ippDateToTime
ippDelete
ippDeleteAttribute
@@ -318,7 +304,6 @@ ippGetDate
ippGetGroupTag
ippGetInteger
ippGetName
ippGetOctetString
ippGetOperation
ippGetRange
ippGetRequestId
@@ -331,7 +316,6 @@ ippGetVersion
ippLength
ippNew
ippNewRequest
ippNewResponse
ippNextAttribute
ippOpString
ippOpValue
@@ -346,7 +330,6 @@ ippSetDate
ippSetGroupTag
ippSetInteger
ippSetName
ippSetOctetString
ippSetOperation
ippSetRange
ippSetRequestId
@@ -354,15 +337,11 @@ ippSetResolution
ippSetState
ippSetStatusCode
ippSetString
ippSetStringf
ippSetStringfv
ippSetValueTag
ippSetVersion
ippTagString
ippTagValue
ippTimeToDate
ippValidateAttribute
ippValidateAttributes
ippWrite
ippWriteFile
ippWriteIO
@@ -401,9 +380,3 @@ ppdPageLength
ppdPageSize
ppdPageWidth
ppdSetConformance
pwgFormatSizeName
pwgInitSize
pwgMediaForLegacy
pwgMediaForPPD
pwgMediaForPWG
pwgMediaForSize
+11 -11
Ver Arquivo
@@ -3,7 +3,7 @@
*
* Notification routines for CUPS.
*
* Copyright 2007-2013 by Apple Inc.
* Copyright 2007-2012 by Apple Inc.
* Copyright 2005-2006 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -83,25 +83,25 @@ cupsNotifySubject(cups_lang_t *lang, /* I - Language data */
switch (job_state->values[0].integer)
{
case IPP_JSTATE_PENDING :
case IPP_JOB_PENDING :
state = _cupsLangString(lang, _("pending"));
break;
case IPP_JSTATE_HELD :
case IPP_JOB_HELD :
state = _cupsLangString(lang, _("held"));
break;
case IPP_JSTATE_PROCESSING :
case IPP_JOB_PROCESSING :
state = _cupsLangString(lang, _("processing"));
break;
case IPP_JSTATE_STOPPED :
case IPP_JOB_STOPPED :
state = _cupsLangString(lang, _("stopped"));
break;
case IPP_JSTATE_CANCELED :
case IPP_JOB_CANCELED :
state = _cupsLangString(lang, _("canceled"));
break;
case IPP_JSTATE_ABORTED :
case IPP_JOB_ABORTED :
state = _cupsLangString(lang, _("aborted"));
break;
case IPP_JSTATE_COMPLETED :
case IPP_JOB_COMPLETED :
state = _cupsLangString(lang, _("completed"));
break;
default :
@@ -127,13 +127,13 @@ cupsNotifySubject(cups_lang_t *lang, /* I - Language data */
switch (printer_state->values[0].integer)
{
case IPP_PSTATE_IDLE :
case IPP_PRINTER_IDLE :
state = _cupsLangString(lang, _("idle"));
break;
case IPP_PSTATE_PROCESSING :
case IPP_PRINTER_PROCESSING :
state = _cupsLangString(lang, _("processing"));
break;
case IPP_PSTATE_STOPPED :
case IPP_PRINTER_STOPPED :
state = _cupsLangString(lang, _("stopped"));
break;
default :
+119 -214
Ver Arquivo
@@ -3,7 +3,7 @@
*
* PPD cache implementation for CUPS.
*
* Copyright 2010-2013 by Apple Inc.
* Copyright 2010-2012 by Apple Inc.
*
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
@@ -88,8 +88,8 @@ _ppdCacheCreateWithFile(
{
cups_file_t *fp; /* File */
_ppd_cache_t *pc; /* PWG mapping data */
pwg_size_t *size; /* Current size */
pwg_map_t *map; /* Current map */
_pwg_size_t *size; /* Current size */
_pwg_map_t *map; /* Current map */
_pwg_finishings_t *finishings; /* Current finishings option */
int linenum, /* Current line number */
num_bins, /* Number of bins in file */
@@ -118,7 +118,7 @@ _ppdCacheCreateWithFile(
if (!filename)
{
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(EINVAL), 0);
_cupsSetError(IPP_INTERNAL_ERROR, strerror(EINVAL), 0);
return (NULL);
}
@@ -128,7 +128,7 @@ _ppdCacheCreateWithFile(
if ((fp = cupsFileOpen(filename, "r")) == NULL)
{
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(errno), 0);
_cupsSetError(IPP_INTERNAL_ERROR, strerror(errno), 0);
return (NULL);
}
@@ -138,7 +138,7 @@ _ppdCacheCreateWithFile(
if (!cupsFileGets(fp, line, sizeof(line)))
{
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(errno), 0);
_cupsSetError(IPP_INTERNAL_ERROR, strerror(errno), 0);
DEBUG_puts("_ppdCacheCreateWithFile: Unable to read first line.");
cupsFileClose(fp);
return (NULL);
@@ -146,7 +146,7 @@ _ppdCacheCreateWithFile(
if (strncmp(line, "#CUPS-PPD-CACHE-", 16))
{
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad PPD cache file."), 1);
_cupsSetError(IPP_INTERNAL_ERROR, _("Bad PPD cache file."), 1);
DEBUG_printf(("_ppdCacheCreateWithFile: Wrong first line \"%s\".", line));
cupsFileClose(fp);
return (NULL);
@@ -154,7 +154,7 @@ _ppdCacheCreateWithFile(
if (atoi(line + 16) != _PPD_CACHE_VERSION)
{
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Out of date PPD cache file."), 1);
_cupsSetError(IPP_INTERNAL_ERROR, _("Out of date PPD cache file."), 1);
DEBUG_printf(("_ppdCacheCreateWithFile: Cache file has version %s, "
"expected %d.", line + 16, _PPD_CACHE_VERSION));
cupsFileClose(fp);
@@ -167,7 +167,7 @@ _ppdCacheCreateWithFile(
if ((pc = calloc(1, sizeof(_ppd_cache_t))) == NULL)
{
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(errno), 0);
_cupsSetError(IPP_INTERNAL_ERROR, strerror(errno), 0);
DEBUG_puts("_ppdCacheCreateWithFile: Unable to allocate _ppd_cache_t.");
goto create_error;
}
@@ -193,7 +193,7 @@ _ppdCacheCreateWithFile(
{
DEBUG_printf(("_ppdCacheCreateWithFile: Missing value on line %d.",
linenum));
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad PPD cache file."), 1);
_cupsSetError(IPP_INTERNAL_ERROR, _("Bad PPD cache file."), 1);
goto create_error;
}
else if (!_cups_strcasecmp(line, "Filter"))
@@ -231,13 +231,13 @@ _ppdCacheCreateWithFile(
if (attrs && *attrs)
{
DEBUG_puts("_ppdCacheCreateWithFile: IPP listed multiple times.");
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad PPD cache file."), 1);
_cupsSetError(IPP_INTERNAL_ERROR, _("Bad PPD cache file."), 1);
goto create_error;
}
else if (length <= 0)
{
DEBUG_puts("_ppdCacheCreateWithFile: Bad IPP length.");
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad PPD cache file."), 1);
_cupsSetError(IPP_INTERNAL_ERROR, _("Bad PPD cache file."), 1);
goto create_error;
}
@@ -250,10 +250,10 @@ _ppdCacheCreateWithFile(
*attrs = ippNew();
if (ippReadIO(fp, (ipp_iocb_t)cupsFileRead, 1, NULL,
*attrs) != IPP_STATE_DATA)
*attrs) != IPP_DATA)
{
DEBUG_puts("_ppdCacheCreateWithFile: Bad IPP data.");
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad PPD cache file."), 1);
_cupsSetError(IPP_INTERNAL_ERROR, _("Bad PPD cache file."), 1);
goto create_error;
}
}
@@ -269,7 +269,7 @@ _ppdCacheCreateWithFile(
if (cupsFileTell(fp) != (pos + length))
{
DEBUG_puts("_ppdCacheCreateWithFile: Bad IPP data.");
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad PPD cache file."), 1);
_cupsSetError(IPP_INTERNAL_ERROR, _("Bad PPD cache file."), 1);
goto create_error;
}
}
@@ -278,7 +278,7 @@ _ppdCacheCreateWithFile(
if (num_bins > 0)
{
DEBUG_puts("_ppdCacheCreateWithFile: NumBins listed multiple times.");
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad PPD cache file."), 1);
_cupsSetError(IPP_INTERNAL_ERROR, _("Bad PPD cache file."), 1);
goto create_error;
}
@@ -286,15 +286,15 @@ _ppdCacheCreateWithFile(
{
DEBUG_printf(("_ppdCacheCreateWithFile: Bad NumBins value %d on line "
"%d.", num_sizes, linenum));
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad PPD cache file."), 1);
_cupsSetError(IPP_INTERNAL_ERROR, _("Bad PPD cache file."), 1);
goto create_error;
}
if ((pc->bins = calloc(num_bins, sizeof(pwg_map_t))) == NULL)
if ((pc->bins = calloc(num_bins, sizeof(_pwg_map_t))) == NULL)
{
DEBUG_printf(("_ppdCacheCreateWithFile: Unable to allocate %d bins.",
num_sizes));
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(errno), 0);
_cupsSetError(IPP_INTERNAL_ERROR, strerror(errno), 0);
goto create_error;
}
}
@@ -303,7 +303,7 @@ _ppdCacheCreateWithFile(
if (sscanf(value, "%127s%40s", pwg_keyword, ppd_keyword) != 2)
{
DEBUG_printf(("_ppdCacheCreateWithFile: Bad Bin on line %d.", linenum));
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad PPD cache file."), 1);
_cupsSetError(IPP_INTERNAL_ERROR, _("Bad PPD cache file."), 1);
goto create_error;
}
@@ -311,7 +311,7 @@ _ppdCacheCreateWithFile(
{
DEBUG_printf(("_ppdCacheCreateWithFile: Too many Bin's on line %d.",
linenum));
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad PPD cache file."), 1);
_cupsSetError(IPP_INTERNAL_ERROR, _("Bad PPD cache file."), 1);
goto create_error;
}
@@ -326,7 +326,7 @@ _ppdCacheCreateWithFile(
if (num_sizes > 0)
{
DEBUG_puts("_ppdCacheCreateWithFile: NumSizes listed multiple times.");
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad PPD cache file."), 1);
_cupsSetError(IPP_INTERNAL_ERROR, _("Bad PPD cache file."), 1);
goto create_error;
}
@@ -334,17 +334,17 @@ _ppdCacheCreateWithFile(
{
DEBUG_printf(("_ppdCacheCreateWithFile: Bad NumSizes value %d on line "
"%d.", num_sizes, linenum));
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad PPD cache file."), 1);
_cupsSetError(IPP_INTERNAL_ERROR, _("Bad PPD cache file."), 1);
goto create_error;
}
if (num_sizes > 0)
{
if ((pc->sizes = calloc(num_sizes, sizeof(pwg_size_t))) == NULL)
if ((pc->sizes = calloc(num_sizes, sizeof(_pwg_size_t))) == NULL)
{
DEBUG_printf(("_ppdCacheCreateWithFile: Unable to allocate %d sizes.",
num_sizes));
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(errno), 0);
_cupsSetError(IPP_INTERNAL_ERROR, strerror(errno), 0);
goto create_error;
}
}
@@ -355,7 +355,7 @@ _ppdCacheCreateWithFile(
{
DEBUG_printf(("_ppdCacheCreateWithFile: Too many Size's on line %d.",
linenum));
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad PPD cache file."), 1);
_cupsSetError(IPP_INTERNAL_ERROR, _("Bad PPD cache file."), 1);
goto create_error;
}
@@ -367,7 +367,7 @@ _ppdCacheCreateWithFile(
{
DEBUG_printf(("_ppdCacheCreateWithFile: Bad Size on line %d.",
linenum));
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad PPD cache file."), 1);
_cupsSetError(IPP_INTERNAL_ERROR, _("Bad PPD cache file."), 1);
goto create_error;
}
@@ -382,7 +382,7 @@ _ppdCacheCreateWithFile(
{
DEBUG_printf(("_ppdCacheCreateWithFile: Too many CustomSize's on line "
"%d.", linenum));
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad PPD cache file."), 1);
_cupsSetError(IPP_INTERNAL_ERROR, _("Bad PPD cache file."), 1);
goto create_error;
}
@@ -394,16 +394,16 @@ _ppdCacheCreateWithFile(
{
DEBUG_printf(("_ppdCacheCreateWithFile: Bad CustomSize on line %d.",
linenum));
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad PPD cache file."), 1);
_cupsSetError(IPP_INTERNAL_ERROR, _("Bad PPD cache file."), 1);
goto create_error;
}
pwgFormatSizeName(pwg_keyword, sizeof(pwg_keyword), "custom", "max",
pc->custom_max_width, pc->custom_max_length, NULL);
_pwgGenerateSize(pwg_keyword, sizeof(pwg_keyword), "custom", "max",
pc->custom_max_width, pc->custom_max_length);
pc->custom_max_keyword = _cupsStrAlloc(pwg_keyword);
pwgFormatSizeName(pwg_keyword, sizeof(pwg_keyword), "custom", "min",
pc->custom_min_width, pc->custom_min_length, NULL);
_pwgGenerateSize(pwg_keyword, sizeof(pwg_keyword), "custom", "min",
pc->custom_min_width, pc->custom_min_length);
pc->custom_min_keyword = _cupsStrAlloc(pwg_keyword);
}
else if (!_cups_strcasecmp(line, "SourceOption"))
@@ -416,7 +416,7 @@ _ppdCacheCreateWithFile(
{
DEBUG_puts("_ppdCacheCreateWithFile: NumSources listed multiple "
"times.");
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad PPD cache file."), 1);
_cupsSetError(IPP_INTERNAL_ERROR, _("Bad PPD cache file."), 1);
goto create_error;
}
@@ -424,15 +424,15 @@ _ppdCacheCreateWithFile(
{
DEBUG_printf(("_ppdCacheCreateWithFile: Bad NumSources value %d on "
"line %d.", num_sources, linenum));
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad PPD cache file."), 1);
_cupsSetError(IPP_INTERNAL_ERROR, _("Bad PPD cache file."), 1);
goto create_error;
}
if ((pc->sources = calloc(num_sources, sizeof(pwg_map_t))) == NULL)
if ((pc->sources = calloc(num_sources, sizeof(_pwg_map_t))) == NULL)
{
DEBUG_printf(("_ppdCacheCreateWithFile: Unable to allocate %d sources.",
num_sources));
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(errno), 0);
_cupsSetError(IPP_INTERNAL_ERROR, strerror(errno), 0);
goto create_error;
}
}
@@ -442,7 +442,7 @@ _ppdCacheCreateWithFile(
{
DEBUG_printf(("_ppdCacheCreateWithFile: Bad Source on line %d.",
linenum));
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad PPD cache file."), 1);
_cupsSetError(IPP_INTERNAL_ERROR, _("Bad PPD cache file."), 1);
goto create_error;
}
@@ -450,7 +450,7 @@ _ppdCacheCreateWithFile(
{
DEBUG_printf(("_ppdCacheCreateWithFile: Too many Source's on line %d.",
linenum));
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad PPD cache file."), 1);
_cupsSetError(IPP_INTERNAL_ERROR, _("Bad PPD cache file."), 1);
goto create_error;
}
@@ -465,7 +465,7 @@ _ppdCacheCreateWithFile(
if (num_types > 0)
{
DEBUG_puts("_ppdCacheCreateWithFile: NumTypes listed multiple times.");
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad PPD cache file."), 1);
_cupsSetError(IPP_INTERNAL_ERROR, _("Bad PPD cache file."), 1);
goto create_error;
}
@@ -473,15 +473,15 @@ _ppdCacheCreateWithFile(
{
DEBUG_printf(("_ppdCacheCreateWithFile: Bad NumTypes value %d on "
"line %d.", num_types, linenum));
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad PPD cache file."), 1);
_cupsSetError(IPP_INTERNAL_ERROR, _("Bad PPD cache file."), 1);
goto create_error;
}
if ((pc->types = calloc(num_types, sizeof(pwg_map_t))) == NULL)
if ((pc->types = calloc(num_types, sizeof(_pwg_map_t))) == NULL)
{
DEBUG_printf(("_ppdCacheCreateWithFile: Unable to allocate %d types.",
num_types));
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(errno), 0);
_cupsSetError(IPP_INTERNAL_ERROR, strerror(errno), 0);
goto create_error;
}
}
@@ -491,7 +491,7 @@ _ppdCacheCreateWithFile(
{
DEBUG_printf(("_ppdCacheCreateWithFile: Bad Type on line %d.",
linenum));
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad PPD cache file."), 1);
_cupsSetError(IPP_INTERNAL_ERROR, _("Bad PPD cache file."), 1);
goto create_error;
}
@@ -499,7 +499,7 @@ _ppdCacheCreateWithFile(
{
DEBUG_printf(("_ppdCacheCreateWithFile: Too many Type's on line %d.",
linenum));
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad PPD cache file."), 1);
_cupsSetError(IPP_INTERNAL_ERROR, _("Bad PPD cache file."), 1);
goto create_error;
}
@@ -526,7 +526,7 @@ _ppdCacheCreateWithFile(
{
DEBUG_printf(("_ppdCacheCreateWithFile: Bad Preset on line %d.",
linenum));
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad PPD cache file."), 1);
_cupsSetError(IPP_INTERNAL_ERROR, _("Bad PPD cache file."), 1);
goto create_error;
}
@@ -561,30 +561,6 @@ _ppdCacheCreateWithFile(
}
else if (!_cups_strcasecmp(line, "MaxCopies"))
pc->max_copies = atoi(value);
else if (!_cups_strcasecmp(line, "ChargeInfoURI"))
pc->charge_info_uri = _cupsStrAlloc(value);
else if (!_cups_strcasecmp(line, "JobAccountId"))
pc->account_id = !_cups_strcasecmp(value, "true");
else if (!_cups_strcasecmp(line, "JobAccountingUserId"))
pc->accounting_user_id = !_cups_strcasecmp(value, "true");
else if (!_cups_strcasecmp(line, "JobPassword"))
pc->password = _cupsStrAlloc(value);
else if (!_cups_strcasecmp(line, "Mandatory"))
{
if (pc->mandatory)
_cupsArrayAddStrings(pc->mandatory, value, ' ');
else
pc->mandatory = _cupsArrayNewStrings(value, ' ');
}
else if (!_cups_strcasecmp(line, "SupportFile"))
{
if (!pc->support_files)
pc->support_files = cupsArrayNew3(NULL, NULL, NULL, 0,
(cups_acopy_func_t)_cupsStrAlloc,
(cups_afree_func_t)_cupsStrFree);
cupsArrayAdd(pc->support_files, value);
}
else
{
DEBUG_printf(("_ppdCacheCreateWithFile: Unknown %s on line %d.", line,
@@ -596,7 +572,7 @@ _ppdCacheCreateWithFile(
{
DEBUG_printf(("_ppdCacheCreateWithFile: Not enough sizes (%d < %d).",
pc->num_sizes, num_sizes));
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad PPD cache file."), 1);
_cupsSetError(IPP_INTERNAL_ERROR, _("Bad PPD cache file."), 1);
goto create_error;
}
@@ -604,7 +580,7 @@ _ppdCacheCreateWithFile(
{
DEBUG_printf(("_ppdCacheCreateWithFile: Not enough sources (%d < %d).",
pc->num_sources, num_sources));
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad PPD cache file."), 1);
_cupsSetError(IPP_INTERNAL_ERROR, _("Bad PPD cache file."), 1);
goto create_error;
}
@@ -612,7 +588,7 @@ _ppdCacheCreateWithFile(
{
DEBUG_printf(("_ppdCacheCreateWithFile: Not enough types (%d < %d).",
pc->num_types, num_types));
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad PPD cache file."), 1);
_cupsSetError(IPP_INTERNAL_ERROR, _("Bad PPD cache file."), 1);
goto create_error;
}
@@ -654,24 +630,24 @@ _ppdCacheCreateWithPPD(ppd_file_t *ppd) /* I - PPD file */
*color_model, /* ColorModel option */
*duplex; /* Duplex option */
ppd_choice_t *choice; /* Current InputSlot/MediaType */
pwg_map_t *map; /* Current source/type map */
_pwg_map_t *map; /* Current source/type map */
ppd_attr_t *ppd_attr; /* Current PPD preset attribute */
int num_options; /* Number of preset options and props */
cups_option_t *options; /* Preset options and properties */
ppd_size_t *ppd_size; /* Current PPD size */
pwg_size_t *pwg_size; /* Current PWG size */
_pwg_size_t *pwg_size; /* Current PWG size */
char pwg_keyword[3 + PPD_MAX_NAME + 1 + 12 + 1 + 12 + 3],
/* PWG keyword string */
ppd_name[PPD_MAX_NAME];
/* Normalized PPD name */
const char *pwg_name; /* Standard PWG media name */
pwg_media_t *pwg_media; /* PWG media data */
_pwg_media_t *pwg_media; /* PWG media data */
_pwg_print_color_mode_t pwg_print_color_mode;
/* print-color-mode index */
_pwg_print_quality_t pwg_print_quality;
/* print-quality index */
int similar; /* Are the old and new size similar? */
pwg_size_t *old_size; /* Current old size */
_pwg_size_t *old_size; /* Current old size */
int old_imageable, /* Old imageable length in 2540ths */
old_borderless, /* Old borderless state */
old_known_pwg; /* Old PWG name is well-known */
@@ -684,7 +660,7 @@ _ppdCacheCreateWithPPD(ppd_file_t *ppd) /* I - PPD file */
new_imageable, /* New imageable length in 2540ths */
new_borderless, /* New borderless state */
new_known_pwg; /* New PWG name is well-known */
pwg_size_t *new_size; /* New size to add, if any */
_pwg_size_t *new_size; /* New size to add, if any */
const char *filter; /* Current filter */
_pwg_finishings_t *finishings; /* Current finishings value */
@@ -714,10 +690,10 @@ _ppdCacheCreateWithPPD(ppd_file_t *ppd) /* I - PPD file */
if (ppd->num_sizes > 0)
{
if ((pc->sizes = calloc(ppd->num_sizes, sizeof(pwg_size_t))) == NULL)
if ((pc->sizes = calloc(ppd->num_sizes, sizeof(_pwg_size_t))) == NULL)
{
DEBUG_printf(("_ppdCacheCreateWithPPD: Unable to allocate %d "
"pwg_size_t's.", ppd->num_sizes));
"_pwg_size_t's.", ppd->num_sizes));
goto create_error;
}
@@ -736,7 +712,7 @@ _ppdCacheCreateWithPPD(ppd_file_t *ppd) /* I - PPD file */
* Convert the PPD size name to the corresponding PWG keyword name.
*/
if ((pwg_media = pwgMediaForPPD(ppd_size->name)) != NULL)
if ((pwg_media = _pwgMediaForPPD(ppd_size->name)) != NULL)
{
/*
* Standard name, do we have conflicts?
@@ -771,9 +747,9 @@ _ppdCacheCreateWithPPD(ppd_file_t *ppd) /* I - PPD file */
new_known_pwg = 0;
pwg_unppdize_name(ppd_size->name, ppd_name, sizeof(ppd_name), "_.");
pwgFormatSizeName(pwg_keyword, sizeof(pwg_keyword), NULL, ppd_name,
PWG_FROM_POINTS(ppd_size->width),
PWG_FROM_POINTS(ppd_size->length), NULL);
_pwgGenerateSize(pwg_keyword, sizeof(pwg_keyword), NULL, ppd_name,
_PWG_FROMPTS(ppd_size->width),
_PWG_FROMPTS(ppd_size->length));
}
/*
@@ -782,16 +758,16 @@ _ppdCacheCreateWithPPD(ppd_file_t *ppd) /* I - PPD file */
* dimensions that are <= 0...
*/
if ((pwg_media = pwgMediaForSize(PWG_FROM_POINTS(ppd_size->width),
PWG_FROM_POINTS(ppd_size->length))) == NULL)
if ((pwg_media = _pwgMediaForSize(_PWG_FROMPTS(ppd_size->width),
_PWG_FROMPTS(ppd_size->length))) == NULL)
continue;
new_width = pwg_media->width;
new_length = pwg_media->length;
new_left = PWG_FROM_POINTS(ppd_size->left);
new_bottom = PWG_FROM_POINTS(ppd_size->bottom);
new_right = PWG_FROM_POINTS(ppd_size->width - ppd_size->right);
new_top = PWG_FROM_POINTS(ppd_size->length - ppd_size->top);
new_left = _PWG_FROMPTS(ppd_size->left);
new_bottom = _PWG_FROMPTS(ppd_size->bottom);
new_right = _PWG_FROMPTS(ppd_size->width - ppd_size->right);
new_top = _PWG_FROMPTS(ppd_size->length - ppd_size->top);
new_imageable = new_length - new_top - new_bottom;
new_borderless = new_bottom == 0 && new_top == 0 &&
new_left == 0 && new_right == 0;
@@ -860,24 +836,24 @@ _ppdCacheCreateWithPPD(ppd_file_t *ppd) /* I - PPD file */
* Generate custom size data...
*/
pwgFormatSizeName(pwg_keyword, sizeof(pwg_keyword), "custom", "max",
PWG_FROM_POINTS(ppd->custom_max[0]),
PWG_FROM_POINTS(ppd->custom_max[1]), NULL);
_pwgGenerateSize(pwg_keyword, sizeof(pwg_keyword), "custom", "max",
_PWG_FROMPTS(ppd->custom_max[0]),
_PWG_FROMPTS(ppd->custom_max[1]));
pc->custom_max_keyword = _cupsStrAlloc(pwg_keyword);
pc->custom_max_width = PWG_FROM_POINTS(ppd->custom_max[0]);
pc->custom_max_length = PWG_FROM_POINTS(ppd->custom_max[1]);
pc->custom_max_width = _PWG_FROMPTS(ppd->custom_max[0]);
pc->custom_max_length = _PWG_FROMPTS(ppd->custom_max[1]);
pwgFormatSizeName(pwg_keyword, sizeof(pwg_keyword), "custom", "min",
PWG_FROM_POINTS(ppd->custom_min[0]),
PWG_FROM_POINTS(ppd->custom_min[1]), NULL);
_pwgGenerateSize(pwg_keyword, sizeof(pwg_keyword), "custom", "min",
_PWG_FROMPTS(ppd->custom_min[0]),
_PWG_FROMPTS(ppd->custom_min[1]));
pc->custom_min_keyword = _cupsStrAlloc(pwg_keyword);
pc->custom_min_width = PWG_FROM_POINTS(ppd->custom_min[0]);
pc->custom_min_length = PWG_FROM_POINTS(ppd->custom_min[1]);
pc->custom_min_width = _PWG_FROMPTS(ppd->custom_min[0]);
pc->custom_min_length = _PWG_FROMPTS(ppd->custom_min[1]);
pc->custom_size.left = PWG_FROM_POINTS(ppd->custom_margins[0]);
pc->custom_size.bottom = PWG_FROM_POINTS(ppd->custom_margins[1]);
pc->custom_size.right = PWG_FROM_POINTS(ppd->custom_margins[2]);
pc->custom_size.top = PWG_FROM_POINTS(ppd->custom_margins[3]);
pc->custom_size.left = _PWG_FROMPTS(ppd->custom_margins[0]);
pc->custom_size.bottom = _PWG_FROMPTS(ppd->custom_margins[1]);
pc->custom_size.right = _PWG_FROMPTS(ppd->custom_margins[2]);
pc->custom_size.top = _PWG_FROMPTS(ppd->custom_margins[3]);
}
/*
@@ -892,10 +868,10 @@ _ppdCacheCreateWithPPD(ppd_file_t *ppd) /* I - PPD file */
pc->source_option = _cupsStrAlloc(input_slot->keyword);
if ((pc->sources = calloc(input_slot->num_choices,
sizeof(pwg_map_t))) == NULL)
sizeof(_pwg_map_t))) == NULL)
{
DEBUG_printf(("_ppdCacheCreateWithPPD: Unable to allocate %d "
"pwg_map_t's for InputSlot.", input_slot->num_choices));
"_pwg_map_t's for InputSlot.", input_slot->num_choices));
goto create_error;
}
@@ -954,10 +930,10 @@ _ppdCacheCreateWithPPD(ppd_file_t *ppd) /* I - PPD file */
if ((media_type = ppdFindOption(ppd, "MediaType")) != NULL)
{
if ((pc->types = calloc(media_type->num_choices,
sizeof(pwg_map_t))) == NULL)
sizeof(_pwg_map_t))) == NULL)
{
DEBUG_printf(("_ppdCacheCreateWithPPD: Unable to allocate %d "
"pwg_map_t's for MediaType.", media_type->num_choices));
"_pwg_map_t's for MediaType.", media_type->num_choices));
goto create_error;
}
@@ -1019,10 +995,10 @@ _ppdCacheCreateWithPPD(ppd_file_t *ppd) /* I - PPD file */
if ((output_bin = ppdFindOption(ppd, "OutputBin")) != NULL)
{
if ((pc->bins = calloc(output_bin->num_choices,
sizeof(pwg_map_t))) == NULL)
sizeof(_pwg_map_t))) == NULL)
{
DEBUG_printf(("_ppdCacheCreateWithPPD: Unable to allocate %d "
"pwg_map_t's for OutputBin.", output_bin->num_choices));
"_pwg_map_t's for OutputBin.", output_bin->num_choices));
goto create_error;
}
@@ -1393,42 +1369,6 @@ _ppdCacheCreateWithPPD(ppd_file_t *ppd) /* I - PPD file */
else
pc->max_copies = 9999;
/*
* cupsChargeInfoURI, cupsJobAccountId, cupsJobAccountingUserId,
* cupsJobPassword, and cupsMandatory.
*/
if ((ppd_attr = ppdFindAttr(ppd, "cupsChargeInfoURI", NULL)) != NULL)
pc->charge_info_uri = _cupsStrAlloc(ppd_attr->value);
if ((ppd_attr = ppdFindAttr(ppd, "cupsJobAccountId", NULL)) != NULL)
pc->account_id = !_cups_strcasecmp(ppd_attr->value, "true");
if ((ppd_attr = ppdFindAttr(ppd, "cupsJobAccountingUserId", NULL)) != NULL)
pc->accounting_user_id = !_cups_strcasecmp(ppd_attr->value, "true");
if ((ppd_attr = ppdFindAttr(ppd, "cupsJobPassword", NULL)) != NULL)
pc->password = _cupsStrAlloc(ppd_attr->value);
if ((ppd_attr = ppdFindAttr(ppd, "cupsMandatory", NULL)) != NULL)
pc->mandatory = _cupsArrayNewStrings(ppd_attr->value, ' ');
/*
* Support files...
*/
pc->support_files = cupsArrayNew3(NULL, NULL, NULL, 0,
(cups_acopy_func_t)_cupsStrAlloc,
(cups_afree_func_t)_cupsStrFree);
for (ppd_attr = ppdFindAttr(ppd, "cupsICCProfile", NULL);
ppd_attr;
ppd_attr = ppdFindNextAttr(ppd, "cupsICCProfile", NULL))
cupsArrayAdd(pc->support_files, ppd_attr->value);
if ((ppd_attr = ppdFindAttr(ppd, "APPrinterIconPath", NULL)) != NULL)
cupsArrayAdd(pc->support_files, ppd_attr->value);
/*
* Return the cache data...
*/
@@ -1441,7 +1381,7 @@ _ppdCacheCreateWithPPD(ppd_file_t *ppd) /* I - PPD file */
create_error:
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Out of memory."), 1);
_cupsSetError(IPP_INTERNAL_ERROR, _("Out of memory."), 1);
_ppdCacheDestroy(pc);
return (NULL);
@@ -1456,8 +1396,8 @@ void
_ppdCacheDestroy(_ppd_cache_t *pc) /* I - PPD cache and mapping data */
{
int i; /* Looping var */
pwg_map_t *map; /* Current map */
pwg_size_t *size; /* Current size */
_pwg_map_t *map; /* Current map */
_pwg_size_t *size; /* Current size */
/*
@@ -1529,13 +1469,6 @@ _ppdCacheDestroy(_ppd_cache_t *pc) /* I - PPD cache and mapping data */
cupsArrayDelete(pc->prefilters);
cupsArrayDelete(pc->finishings);
_cupsStrFree(pc->charge_info_uri);
_cupsStrFree(pc->password);
cupsArrayDelete(pc->mandatory);
cupsArrayDelete(pc->support_files);
free(pc);
}
@@ -1580,11 +1513,11 @@ _ppdCacheGetBin(
int /* O - New number of options */
_ppdCacheGetFinishingOptions(
_ppd_cache_t *pc, /* I - PPD cache and mapping data */
ipp_t *job, /* I - Job attributes or NULL */
ipp_finishings_t value, /* I - IPP finishings value of IPP_FINISHINGS_NONE */
int num_options, /* I - Number of options */
cups_option_t **options) /* IO - Options */
_ppd_cache_t *pc, /* I - PPD cache and mapping data */
ipp_t *job, /* I - Job attributes or NULL */
ipp_finish_t value, /* I - IPP finishings value of IPP_FINISHINGS_NONE */
int num_options, /* I - Number of options */
cups_option_t **options) /* IO - Options */
{
int i; /* Looping var */
_pwg_finishings_t *f, /* PWG finishings options */
@@ -1720,7 +1653,7 @@ _ppdCacheGetInputSlot(
ipp_attribute_t *media_col, /* media-col attribute */
*media_source; /* media-source attribute */
pwg_size_t size; /* Dimensional size */
_pwg_size_t size; /* Dimensional size */
int margins_set; /* Were the margins set? */
media_col = ippFindAttribute(job, "media-col", IPP_TAG_BEGIN_COLLECTION);
@@ -1735,7 +1668,7 @@ _ppdCacheGetInputSlot(
keyword = ippGetString(media_source, 0, NULL);
}
else if (pwgInitSize(&size, job, &margins_set))
else if (_pwgInitSize(&size, job, &margins_set))
{
/*
* For media <= 5x7, look for a photo tray...
@@ -1859,7 +1792,7 @@ _ppdCacheGetPageSize(
int *exact) /* O - 1 if exact match, 0 otherwise */
{
int i; /* Looping var */
pwg_size_t *size, /* Current size */
_pwg_size_t *size, /* Current size */
*closest, /* Closest size */
jobsize; /* Size data from job */
int margins_set, /* Were the margins set? */
@@ -1947,7 +1880,7 @@ _ppdCacheGetPageSize(
* media-col.
*/
if (!pwgInitSize(&jobsize, job, &margins_set))
if (!_pwgInitSize(&jobsize, job, &margins_set))
return (NULL);
}
else
@@ -1956,12 +1889,12 @@ _ppdCacheGetPageSize(
* Get the size using a media keyword...
*/
pwg_media_t *media; /* Media definition */
_pwg_media_t *media; /* Media definition */
if ((media = pwgMediaForPWG(keyword)) == NULL)
if ((media = pwgMediaForLegacy(keyword)) == NULL)
if ((media = pwgMediaForPPD(keyword)) == NULL)
if ((media = _pwgMediaForPWG(keyword)) == NULL)
if ((media = _pwgMediaForLegacy(keyword)) == NULL)
if ((media = _pwgMediaForPPD(keyword)) == NULL)
return (NULL);
jobsize.width = media->width;
@@ -2054,7 +1987,7 @@ _ppdCacheGetPageSize(
*/
snprintf(pc->custom_ppd_size, sizeof(pc->custom_ppd_size), "Custom.%dx%d",
(int)PWG_TO_POINTS(jobsize.width), (int)PWG_TO_POINTS(jobsize.length));
(int)_PWG_TOPTS(jobsize.width), (int)_PWG_TOPTS(jobsize.length));
if (margins_set && exact)
{
@@ -2090,14 +2023,14 @@ _ppdCacheGetPageSize(
* '_ppdCacheGetSize()' - Get the PWG size associated with a PPD PageSize.
*/
pwg_size_t * /* O - PWG size or NULL */
_pwg_size_t * /* O - PWG size or NULL */
_ppdCacheGetSize(
_ppd_cache_t *pc, /* I - PPD cache and mapping data */
const char *page_size) /* I - PPD PageSize */
{
int i; /* Looping var */
pwg_media_t *media; /* Media */
pwg_size_t *size; /* Current size */
_pwg_media_t *media; /* Media */
_pwg_size_t *size; /* Current size */
/*
@@ -2183,9 +2116,9 @@ _ppdCacheGetSize(
* Look up standard sizes...
*/
if ((media = pwgMediaForPPD(page_size)) == NULL)
if ((media = pwgMediaForLegacy(page_size)) == NULL)
media = pwgMediaForPWG(page_size);
if ((media = _pwgMediaForPPD(page_size)) == NULL)
if ((media = _pwgMediaForLegacy(page_size)) == NULL)
media = _pwgMediaForPWG(page_size);
if (media)
{
@@ -2210,7 +2143,7 @@ _ppdCacheGetSource(
const char *input_slot) /* I - PPD InputSlot */
{
int i; /* Looping var */
pwg_map_t *source; /* Current source */
_pwg_map_t *source; /* Current source */
/*
@@ -2239,7 +2172,7 @@ _ppdCacheGetType(
const char *media_type) /* I - PPD MediaType */
{
int i; /* Looping var */
pwg_map_t *type; /* Current type */
_pwg_map_t *type; /* Current type */
/*
@@ -2269,8 +2202,8 @@ _ppdCacheWriteFile(
{
int i, j, k; /* Looping vars */
cups_file_t *fp; /* Output file */
pwg_size_t *size; /* Current size */
pwg_map_t *map; /* Current map */
_pwg_size_t *size; /* Current size */
_pwg_map_t *map; /* Current map */
_pwg_finishings_t *f; /* Current finishing option */
cups_option_t *option; /* Current option */
const char *value; /* Filter/pre-filter value */
@@ -2283,7 +2216,7 @@ _ppdCacheWriteFile(
if (!pc || !filename)
{
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(EINVAL), 0);
_cupsSetError(IPP_INTERNAL_ERROR, strerror(EINVAL), 0);
return (0);
}
@@ -2294,7 +2227,7 @@ _ppdCacheWriteFile(
snprintf(newfile, sizeof(newfile), "%s.N", filename);
if ((fp = cupsFileOpen(newfile, "w9")) == NULL)
{
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(errno), 0);
_cupsSetError(IPP_INTERNAL_ERROR, strerror(errno), 0);
return (0);
}
@@ -2427,34 +2360,6 @@ _ppdCacheWriteFile(
cupsFilePrintf(fp, "MaxCopies %d\n", pc->max_copies);
/*
* Accounting/quota/PIN/managed printing values...
*/
if (pc->charge_info_uri)
cupsFilePutConf(fp, "ChargeInfoURI", pc->charge_info_uri);
cupsFilePrintf(fp, "AccountId %s\n", pc->account_id ? "true" : "false");
cupsFilePrintf(fp, "AccountingUserId %s\n",
pc->accounting_user_id ? "true" : "false");
if (pc->password)
cupsFilePutConf(fp, "Password", pc->password);
for (value = (char *)cupsArrayFirst(pc->mandatory);
value;
value = (char *)cupsArrayNext(pc->mandatory))
cupsFilePutConf(fp, "Mandatory", value);
/*
* Support files...
*/
for (value = (char *)cupsArrayFirst(pc->support_files);
value;
value = (char *)cupsArrayNext(pc->support_files))
cupsFilePutConf(fp, "SupportFile", value);
/*
* IPP attributes, if any...
*/
@@ -2463,7 +2368,7 @@ _ppdCacheWriteFile(
{
cupsFilePrintf(fp, "IPP " CUPS_LLFMT "\n", CUPS_LLCAST ippLength(attrs));
attrs->state = IPP_STATE_IDLE;
attrs->state = IPP_IDLE;
ippWriteIO(fp, (ipp_iocb_t)cupsFileWrite, 1, NULL, attrs);
}
@@ -2584,7 +2489,7 @@ _pwgMediaTypeForType(
const char * /* O - PageSize name */
_pwgPageSizeForMedia(
pwg_media_t *media, /* I - Media */
_pwg_media_t *media, /* I - Media */
char *name, /* I - PageSize name buffer */
size_t namesize) /* I - Size of name buffer */
{
@@ -2620,8 +2525,8 @@ _pwgPageSizeForMedia(
* Use a name of the form "wNNNhNNN"...
*/
snprintf(name, namesize, "w%dh%d", (int)PWG_TO_POINTS(media->width),
(int)PWG_TO_POINTS(media->length));
snprintf(name, namesize, "w%dh%d", (int)_PWG_TOPTS(media->width),
(int)_PWG_TOPTS(media->length));
}
else
{
+17 -27
Ver Arquivo
@@ -3,7 +3,7 @@
*
* Private PPD definitions for CUPS.
*
* Copyright 2007-2013 by Apple Inc.
* Copyright 2007-2011 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
@@ -49,7 +49,7 @@ extern "C" {
* Constants...
*/
# define _PPD_CACHE_VERSION 6 /* Version number in cache file */
# define _PPD_CACHE_VERSION 3 /* Version number in cache file */
/*
@@ -104,17 +104,17 @@ typedef enum _pwg_print_quality_e /**** PWG print-quality values ****/
typedef struct _pwg_finishings_s /**** PWG finishings mapping data ****/
{
ipp_finishings_t value; /* finishings value */
int num_options; /* Number of options to apply */
cups_option_t *options; /* Options to apply */
ipp_finish_t value; /* finishings value */
int num_options; /* Number of options to apply */
cups_option_t *options; /* Options to apply */
} _pwg_finishings_t;
struct _ppd_cache_s /**** PPD cache and PWG conversion data ****/
{
int num_bins; /* Number of output bins */
pwg_map_t *bins; /* Output bins */
_pwg_map_t *bins; /* Output bins */
int num_sizes; /* Number of media sizes */
pwg_size_t *sizes; /* Media sizes */
_pwg_size_t *sizes; /* Media sizes */
int custom_max_width, /* Maximum custom width in 2540ths */
custom_max_length, /* Maximum custom length in 2540ths */
custom_min_width, /* Minimum custom width in 2540ths */
@@ -122,12 +122,12 @@ struct _ppd_cache_s /**** PPD cache and PWG conversion data ****/
char *custom_max_keyword, /* Maximum custom size PWG keyword */
*custom_min_keyword, /* Minimum custom size PWG keyword */
custom_ppd_size[41]; /* Custom PPD size name */
pwg_size_t custom_size; /* Custom size record */
_pwg_size_t custom_size; /* Custom size record */
char *source_option; /* PPD option for media source */
int num_sources; /* Number of media sources */
pwg_map_t *sources; /* Media sources */
_pwg_map_t *sources; /* Media sources */
int num_types; /* Number of media types */
pwg_map_t *types; /* Media types */
_pwg_map_t *types; /* Media types */
int num_presets[_PWG_PRINT_COLOR_MODE_MAX][_PWG_PRINT_QUALITY_MAX];
/* Number of print-color-mode/print-quality options */
cups_option_t *presets[_PWG_PRINT_COLOR_MODE_MAX][_PWG_PRINT_QUALITY_MAX];
@@ -141,13 +141,7 @@ struct _ppd_cache_s /**** PPD cache and PWG conversion data ****/
*prefilters; /* cupsPreFilter values */
int single_file; /* cupsSingleFile value */
cups_array_t *finishings; /* cupsIPPFinishings values */
int max_copies, /* cupsMaxCopies value */
account_id, /* cupsJobAccountId value */
accounting_user_id; /* cupsJobAccountingUserId value */
char *password; /* cupsJobPassword value */
cups_array_t *mandatory; /* cupsMandatory value */
char *charge_info_uri; /* cupsChargeInfoURI value */
cups_array_t *support_files; /* Support files - ICC profiles, etc. */
int max_copies; /* cupsMaxCopies value */
};
@@ -161,16 +155,12 @@ extern _ppd_cache_t *_ppdCacheCreateWithPPD(ppd_file_t *ppd);
extern void _ppdCacheDestroy(_ppd_cache_t *pc);
extern const char *_ppdCacheGetBin(_ppd_cache_t *pc,
const char *output_bin);
extern int _ppdCacheGetFinishingOptions(_ppd_cache_t *pc,
ipp_t *job,
ipp_finishings_t value,
int num_options,
extern int _ppdCacheGetFinishingOptions(_ppd_cache_t *pc, ipp_t *job,
ipp_finish_t value, int num_options,
cups_option_t **options);
extern int _ppdCacheGetFinishingValues(_ppd_cache_t *pc,
int num_options,
extern int _ppdCacheGetFinishingValues(_ppd_cache_t *pc, int num_options,
cups_option_t *options,
int max_values,
int *values);
int max_values, int *values);
extern const char *_ppdCacheGetInputSlot(_ppd_cache_t *pc, ipp_t *job,
const char *keyword);
extern const char *_ppdCacheGetMediaType(_ppd_cache_t *pc, ipp_t *job,
@@ -179,7 +169,7 @@ extern const char *_ppdCacheGetOutputBin(_ppd_cache_t *pc,
const char *keyword);
extern const char *_ppdCacheGetPageSize(_ppd_cache_t *pc, ipp_t *job,
const char *keyword, int *exact);
extern pwg_size_t *_ppdCacheGetSize(_ppd_cache_t *pc,
extern _pwg_size_t *_ppdCacheGetSize(_ppd_cache_t *pc,
const char *page_size);
extern const char *_ppdCacheGetSource(_ppd_cache_t *pc,
const char *input_slot);
@@ -207,7 +197,7 @@ extern const char *_pwgInputSlotForSource(const char *media_source,
char *name, size_t namesize);
extern const char *_pwgMediaTypeForType(const char *media_type,
char *name, size_t namesize);
extern const char *_pwgPageSizeForMedia(pwg_media_t *media,
extern const char *_pwgPageSizeForMedia(_pwg_media_t *media,
char *name, size_t namesize);
+4 -4
Ver Arquivo
@@ -1264,7 +1264,7 @@ _ppdOpen(
ppd->patches = temp;
memcpy(ppd->patches + strlen(ppd->patches), string, strlen(string) + 1);
strcpy(ppd->patches + strlen(ppd->patches), string);
}
}
else if (!strcmp(keyword, "OpenUI"))
@@ -1378,7 +1378,7 @@ _ppdOpen(
*/
if (!_cups_strcasecmp(name, "PageRegion"))
strlcpy(custom_name, "CustomPageSize", sizeof(custom_name));
strcpy(custom_name, "CustomPageSize");
else
snprintf(custom_name, sizeof(custom_name), "Custom%s", name);
@@ -1944,9 +1944,9 @@ _ppdOpen(
cupsCharsetToUTF8((cups_utf8_t *)choice->text, text,
sizeof(choice->text), encoding);
else if (!strcmp(name, "True"))
strlcpy(choice->text, _("Yes"), sizeof(choice->text));
strcpy(choice->text, _("Yes"));
else if (!strcmp(name, "False"))
strlcpy(choice->text, _("No"), sizeof(choice->text));
strcpy(choice->text, _("No"));
else
strlcpy(choice->text, name, sizeof(choice->text));
+164 -332
Ver Arquivo
@@ -3,7 +3,7 @@
*
* PWG media name API implementation for CUPS.
*
* Copyright 2009-2013 by Apple Inc.
* Copyright 2009-2012 by Apple Inc.
*
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
@@ -15,20 +15,6 @@
*
* Contents:
*
* pwgFormatSizeName() - Generate a PWG self-describing media size name.
* pwgInitSize() - Initialize a pwg_size_t structure using IPP Job
* Template attributes.
* pwgMediaForLegacy() - Find a PWG media size by ISO/IPP legacy name.
* pwgMediaForPPD() - Find a PWG media size by Adobe PPD name.
* pwgMediaForPWG() - Find a PWG media size by 5101.1 self-describing
* name.
* pwgMediaForSize() - Get the PWG media size for the given
* dimensions.
* pwg_compare_legacy() - Compare two sizes using the legacy names.
* pwg_compare_ppd() - Compare two sizes using the PPD names.
* pwg_compare_pwg() - Compare two sizes using the PWG names.
* pwg_format_inches() - Convert and format PWG units as inches.
* pwg_format_millimeters() - Convert and format PWG units as millimeters.
*/
/*
@@ -51,18 +37,16 @@
* Local functions...
*/
static int pwg_compare_legacy(pwg_media_t *a, pwg_media_t *b);
static int pwg_compare_pwg(pwg_media_t *a, pwg_media_t *b);
static int pwg_compare_ppd(pwg_media_t *a, pwg_media_t *b);
static char *pwg_format_inches(char *buf, size_t bufsize, int val);
static char *pwg_format_millimeters(char *buf, size_t bufsize, int val);
static int pwg_compare_legacy(_pwg_media_t *a, _pwg_media_t *b);
static int pwg_compare_pwg(_pwg_media_t *a, _pwg_media_t *b);
static int pwg_compare_ppd(_pwg_media_t *a, _pwg_media_t *b);
/*
* Local globals...
*/
static pwg_media_t const cups_pwg_media[] =
static _pwg_media_t const cups_pwg_media[] =
{ /* Media size lookup table */
/* North American Standard Sheet Media Sizes */
_PWG_MEDIA_IN("na_index-3x5_3x5in", NULL, "3x5", 3, 5),
@@ -90,7 +74,6 @@ static pwg_media_t const cups_pwg_media[] =
_PWG_MEDIA_IN("na_fanfold-eur_8.5x12in", NULL, "FanFoldGerman", 8.5, 12),
_PWG_MEDIA_IN("na_letter-plus_8.5x12.69in", NULL, "LetterPlus", 8.5, 12.69),
_PWG_MEDIA_IN("na_foolscap_8.5x13in", NULL, "FanFoldGermanLegal", 8.5, 13),
_PWG_MEDIA_IN("na_oficio_8.5x13.4in", NULL, "Oficio", 8.5, 13.4),
_PWG_MEDIA_IN("na_legal_8.5x14in", "na-legal", "Legal", 8.5, 14),
_PWG_MEDIA_IN("na_super-a_8.94x14in", NULL, "SuperA", 8.94, 14),
_PWG_MEDIA_IN("na_9x11_9x11in", "na-9x11-envelope", "9x11", 9, 11),
@@ -121,6 +104,10 @@ static pwg_media_t const cups_pwg_media[] =
_PWG_MEDIA_IN("na_arch-e_36x48in", "arch-e", "ARCHE", 36, 48),
_PWG_MEDIA_IN("na_f_44x68in", NULL, "AnsiF", 44, 68),
/* Chinese Standard Sheet Media Inch Sizes */
_PWG_MEDIA_IN("roc_16k_7.75x10.75in", NULL, "roc16k", 7.75, 10.75),
_PWG_MEDIA_IN("roc_8k_10.75x15.5in", NULL, "roc8k", 10.75, 15.5),
/* ISO Standard Sheet Media Sizes */
_PWG_MEDIA_MM("iso_a10_26x37mm", "iso-a10", "A10", 26, 37),
_PWG_MEDIA_MM("iso_a9_37x52mm", "iso-a9", "A9", 37, 52),
@@ -183,10 +170,6 @@ static pwg_media_t const cups_pwg_media[] =
_PWG_MEDIA_MM("iso_c1_648x917mm", "iso-c1", "EnvC1", 648, 917),
_PWG_MEDIA_MM("iso_c0_917x1297mm", "iso-c0", "EnvC0", 917, 1297),
_PWG_MEDIA_MM("iso_dl_110x220mm", "iso-designated", "EnvDL", 110, 220),
_PWG_MEDIA_MM("iso_ra4_215x305mm", "iso-ra4", NULL, 215, 305),
_PWG_MEDIA_MM("iso_sra4_225x320mm", "iso-sra4", NULL, 225, 320),
_PWG_MEDIA_MM("iso_ra3_305x430mm", "iso-ra3", NULL, 305, 430),
_PWG_MEDIA_MM("iso_sra3_320x450mm", "iso-sra3", NULL, 320, 450),
_PWG_MEDIA_MM("iso_ra2_430x610mm", "iso-ra2", NULL, 430, 610),
_PWG_MEDIA_MM("iso_sra2_450x640mm", "iso-sra2", NULL, 450, 640),
_PWG_MEDIA_MM("iso_ra1_610x860mm", "iso-ra1", NULL, 610, 860),
@@ -207,27 +190,22 @@ static pwg_media_t const cups_pwg_media[] =
_PWG_MEDIA_MM("jis_b1_728x1030mm", "jis-b1", "B1", 728, 1030),
_PWG_MEDIA_MM("jis_b0_1030x1456mm", "jis-b0", "B0", 1030, 1456),
_PWG_MEDIA_MM("jis_exec_216x330mm", NULL, NULL, 216, 330),
_PWG_MEDIA_MM("jpn_kaku2_240x332mm", NULL, "EnvKaku2", 240, 332),
_PWG_MEDIA_MM("jpn_kaku3_216x277mm", NULL, "EnvKaku3", 216, 277),
_PWG_MEDIA_MM("jpn_kaku4_197x267mm", NULL, "EnvKaku4", 197, 267),
_PWG_MEDIA_MM("jpn_kaku5_190x240mm", NULL, "EnvKaku5", 190, 240),
_PWG_MEDIA_MM("jpn_kaku7_142x205mm", NULL, "EnvKaku7", 142, 205),
_PWG_MEDIA_MM("jpn_kaku8_119x197mm", NULL, "EnvKaku8", 119, 197),
_PWG_MEDIA_MM("jpn_chou4_90x205mm", NULL, "EnvChou4", 90, 205),
_PWG_MEDIA_MM("jpn_hagaki_100x148mm", NULL, "Postcard", 100, 148),
_PWG_MEDIA_MM("jpn_you4_105x235mm", NULL, "EnvYou4", 105, 235),
_PWG_MEDIA_MM("jpn_you6_98x190mm", NULL, "EnvYou6", 98, 190),
_PWG_MEDIA_MM("jpn_chou2_111.1x146mm", NULL, NULL, 111.1, 146),
_PWG_MEDIA_MM("jpn_chou3_120x235mm", NULL, "EnvChou3", 120, 235),
_PWG_MEDIA_MM("jpn_chou40_90x225mm", NULL, "EnvChou40", 90, 225),
_PWG_MEDIA_MM("jpn_oufuku_148x200mm", NULL, "DoublePostcardRotated", 148, 200),
_PWG_MEDIA_MM("jpn_kahu_240x322.1mm", NULL, NULL, 240, 322.1),
_PWG_MEDIA_MM("jpn_kaku2_240x332mm", NULL, "EnvKaku2", 240, 332),
/* Chinese Standard Sheet Media Sizes */
_PWG_MEDIA_MM("prc_32k_97x151mm", NULL, "PRC32K", 97, 151),
_PWG_MEDIA_MM("prc_1_102x165mm", NULL, "EnvPRC1", 102, 165),
_PWG_MEDIA_MM("prc_2_102x176mm", NULL, "EnvPRC2", 102, 176),
_PWG_MEDIA_MM("prc_4_110x208mm", NULL, "EnvPRC4", 110, 208),
_PWG_MEDIA_MM("prc_5_110x220mm", NULL, "EnvPRC5", 110, 220),
_PWG_MEDIA_MM("prc_8_120x309mm", NULL, "EnvPRC8", 120, 309),
_PWG_MEDIA_MM("prc_6_120x320mm", NULL, NULL, 120, 320),
_PWG_MEDIA_MM("prc_3_125x176mm", NULL, "EnvPRC3", 125, 176),
@@ -238,10 +216,6 @@ static pwg_media_t const cups_pwg_media[] =
_PWG_MEDIA_MM("om_dai-pa-kai_275x395mm", NULL, NULL, 275, 395),
_PWG_MEDIA_MM("prc_10_324x458mm", NULL, "EnvPRC10", 324, 458),
/* Chinese Standard Sheet Media Inch Sizes */
_PWG_MEDIA_IN("roc_16k_7.75x10.75in", NULL, "roc16k", 7.75, 10.75),
_PWG_MEDIA_IN("roc_8k_10.75x15.5in", NULL, "roc8k", 10.75, 15.5),
/* Other English Standard Sheet Media Sizes */
_PWG_MEDIA_IN("oe_photo-l_3.5x5in", NULL, "3.5x5", 3.5, 5),
@@ -252,128 +226,131 @@ static pwg_media_t const cups_pwg_media[] =
_PWG_MEDIA_MM("om_large-photo_200x300", NULL, "om_large-photo", 200, 300),
_PWG_MEDIA_MM("om_folio_210x330mm", "folio", "Folio", 210, 330),
_PWG_MEDIA_MM("om_folio-sp_215x315mm", NULL, "FolioSP", 215, 315),
_PWG_MEDIA_MM("om_invite_220x220mm", NULL, "EnvInvite", 220, 220),
_PWG_MEDIA_MM("om_small-photo_100x200mm", NULL, "om_wide-photo", 100, 200)
_PWG_MEDIA_MM("om_invite_220x220mm", NULL, "EnvInvite", 220, 220)
};
/*
* 'pwgFormatSizeName()' - Generate a PWG self-describing media size name.
*
* This function generates a PWG self-describing media size name of the form
* "prefix_name_WIDTHxLENGTHunits". The prefix is typically "custom" or "roll"
* for user-supplied sizes but can also be "disc", "iso", "jis", "jpn", "na",
* "oe", "om", "prc", or "roc". A value of @code NULL@ automatically chooses
* "oe" or "om" depending on the units.
*
* The size name may only contain lowercase letters, numbers, "-", and ".". If
* @code NULL@ is passed, the size name will contain the formatted dimensions.
*
* The width and length are specified in hundredths of millimeters, equivalent
* to 1/100000th of a meter or 1/2540th of an inch. The width, length, and
* units used for the generated size name are calculated automatically if the
* units string is @code NULL@, otherwise inches ("in") or millimeters ("mm")
* are used.
*
* @since CUPS 1.7@
* '_pwgFormatInches()' - Convert and format PWG units as inches.
*/
int /* O - 1 on success, 0 on failure */
pwgFormatSizeName(char *keyword, /* I - Keyword buffer */
size_t keysize, /* I - Size of keyword buffer */
const char *prefix, /* I - Prefix for PWG size or @code NULL@ for automatic */
const char *name, /* I - Size name or @code NULL@ */
int width, /* I - Width of page in 2540ths */
int length, /* I - Length of page in 2540ths */
const char *units) /* I - Units - "in", "mm", or @code NULL@ for automatic */
char * /* O - String */
_pwgFormatInches(char *buf, /* I - Buffer */
size_t bufsize, /* I - Size of buffer */
int val) /* I - Value in hundredths of millimeters */
{
int thousandths, /* Thousandths of inches */
integer, /* Integer portion */
fraction; /* Fractional portion */
/*
* Convert hundredths of millimeters to thousandths of inches and round to
* the nearest thousandth.
*/
thousandths = (val * 1000 + 1270) / 2540;
integer = thousandths / 1000;
fraction = thousandths % 1000;
/*
* Format as a pair of integers (avoids locale stuff), avoiding trailing
* zeros...
*/
if (fraction == 0)
snprintf(buf, bufsize, "%d", integer);
else if (fraction % 10)
snprintf(buf, bufsize, "%d.%03d", integer, fraction);
else if (fraction % 100)
snprintf(buf, bufsize, "%d.%02d", integer, fraction / 10);
else
snprintf(buf, bufsize, "%d.%01d", integer, fraction / 100);
return (buf);
}
/*
* '_pwgFormatMillimeters()' - Convert and format PWG units as millimeters.
*/
char * /* O - String */
_pwgFormatMillimeters(char *buf, /* I - Buffer */
size_t bufsize, /* I - Size of buffer */
int val) /* I - Value in hundredths of millimeters */
{
int integer, /* Integer portion */
fraction; /* Fractional portion */
/*
* Convert hundredths of millimeters to integer and fractional portions.
*/
integer = val / 100;
fraction = val % 100;
/*
* Format as a pair of integers (avoids locale stuff), avoiding trailing
* zeros...
*/
if (fraction == 0)
snprintf(buf, bufsize, "%d", integer);
else if (fraction % 10)
snprintf(buf, bufsize, "%d.%02d", integer, fraction);
else
snprintf(buf, bufsize, "%d.%01d", integer, fraction / 10);
return (buf);
}
/*
* '_pwgGenerateSize()' - Generate a PWG size keyword.
*/
void
_pwgGenerateSize(char *keyword, /* I - Keyword buffer */
size_t keysize, /* I - Size of keyword buffer */
const char *prefix, /* I - Prefix for PWG size or NULL */
const char *name, /* I - Size name or NULL */
int width, /* I - Width of page in 2540ths */
int length) /* I - Length of page in 2540ths */
{
const char *units; /* Units to report */
char usize[12 + 1 + 12 + 3], /* Unit size: NNNNNNNNNNNNxNNNNNNNNNNNNuu */
*uptr; /* Pointer into unit size */
char *(*format)(char *, size_t, int);
/* Formatting function */
/*
* Range check input...
*/
DEBUG_printf(("pwgFormatSize(keyword=%p, keysize=" CUPS_LLFMT
", prefix=\"%s\", name=\"%s\", width=%d, length=%d, "
"units=\"%s\")", keyword, CUPS_LLCAST keysize, prefix, name,
width, length, units));
if (keyword)
*keyword = '\0';
if (!keyword || keysize < 32 || width < 0 || length < 0 ||
(units && strcmp(units, "in") && strcmp(units, "mm")))
{
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Invalid media name arguments."),
1);
return (0);
}
if (name)
if ((width % 635) == 0 && (length % 635) == 0)
{
/*
* Validate name...
* Use inches since the size is a multiple of 1/4 inch.
*/
const char *nameptr; /* Pointer into name */
for (nameptr = name; *nameptr; nameptr ++)
if (!(*nameptr >= 'a' && *nameptr <= 'z') &&
!(*nameptr >= '0' && *nameptr <= '9') &&
*nameptr != '.' && *nameptr != '-')
{
_cupsSetError(IPP_STATUS_ERROR_INTERNAL,
_("Invalid media name arguments."), 1);
return (0);
}
}
else
name = usize;
if (!units)
{
if ((width % 635) == 0 && (length % 635) == 0)
{
/*
* Use inches since the size is a multiple of 1/4 inch.
*/
units = "in";
}
else
{
/*
* Use millimeters since the size is not a multiple of 1/4 inch.
*/
units = "mm";
}
}
if (!strcmp(units, "in"))
{
format = pwg_format_inches;
units = "in";
format = _pwgFormatInches;
if (!prefix)
prefix = "oe";
}
else
{
format = pwg_format_millimeters;
/*
* Use millimeters since the size is not a multiple of 1/4 inch.
*/
units = "mm";
format = _pwgFormatMillimeters;
if (!prefix)
prefix = "om";
}
/*
* Format the size string...
*/
uptr = usize;
(*format)(uptr, sizeof(usize) - (uptr - usize), width);
uptr += strlen(uptr);
@@ -387,40 +364,25 @@ pwgFormatSizeName(char *keyword, /* I - Keyword buffer */
memcpy(uptr, units, 3);
if (!name)
name = usize;
/*
* Format the name...
*/
snprintf(keyword, keysize, "%s_%s_%s", prefix, name, usize);
return (1);
}
/* For OS X 10.8 and earlier... */
void _pwgGenerateSize(char *keyword, size_t keysize, const char *prefix,
const char *name, int width, int length)
{ pwgFormatSizeName(keyword, keysize, prefix, name, width, length, NULL); }
/*
* 'pwgInitSize()' - Initialize a pwg_size_t structure using IPP Job Template
* attributes.
*
* This function initializes a pwg_size_t structure from an IPP "media" or
* "media-col" attribute in the specified IPP message. 0 is returned if neither
* attribute is found in the message or the values are not valid.
*
* The "margins_set" variable is initialized to 1 if any "media-xxx-margin"
* member attribute was specified in the "media-col" Job Template attribute,
* otherwise it is initialized to 0.
*
* @since CUPS 1.7@
* '_pwgInitSize()' - Initialize a PWG size using IPP job template attributes.
*/
int /* O - 1 if size was initialized, 0 otherwise */
pwgInitSize(pwg_size_t *size, /* I - Size to initialize */
ipp_t *job, /* I - Job template attributes */
int *margins_set) /* O - 1 if margins were set, 0 otherwise */
int /* O - 1 if size was initialize, 0 otherwise */
_pwgInitSize(_pwg_size_t *size, /* I - Size to initialize */
ipp_t *job, /* I - Job template attributes */
int *margins_set) /* O - 1 if margins were set, 0 otherwise */
{
ipp_attribute_t *media, /* media attribute */
*media_bottom_margin, /* media-bottom-margin member attribute */
@@ -431,7 +393,7 @@ pwgInitSize(pwg_size_t *size, /* I - Size to initialize */
*media_top_margin, /* media-top-margin member attribute */
*x_dimension, /* x-dimension member attribute */
*y_dimension; /* y-dimension member attribute */
pwg_media_t *pwg; /* PWG media value */
_pwg_media_t *pwg; /* PWG media value */
/*
@@ -445,7 +407,7 @@ pwgInitSize(pwg_size_t *size, /* I - Size to initialize */
* Look for media-col and then media...
*/
memset(size, 0, sizeof(pwg_size_t));
memset(size, 0, sizeof(_pwg_size_t));
*margins_set = 0;
if ((media_col = ippFindAttribute(job, "media-col",
@@ -476,20 +438,20 @@ pwgInitSize(pwg_size_t *size, /* I - Size to initialize */
}
else if (!x_dimension)
{
_cupsSetError(IPP_STATUS_ERROR_INTERNAL,
_cupsSetError(IPP_INTERNAL_ERROR,
_("Missing x-dimension in media-size."), 1);
return (0);
}
else if (!y_dimension)
{
_cupsSetError(IPP_STATUS_ERROR_INTERNAL,
_cupsSetError(IPP_INTERNAL_ERROR,
_("Missing y-dimension in media-size."), 1);
return (0);
}
}
else
{
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Missing media-size in media-col."),
_cupsSetError(IPP_INTERNAL_ERROR, _("Missing media-size in media-col."),
1);
return (0);
}
@@ -524,18 +486,18 @@ pwgInitSize(pwg_size_t *size, /* I - Size to initialize */
if ((media = ippFindAttribute(job, "PageSize", IPP_TAG_NAME)) == NULL)
media = ippFindAttribute(job, "PageRegion", IPP_TAG_NAME);
if (media && media->values[0].string.text)
if (media)
{
const char *name = media->values[0].string.text;
/* Name string */
if ((pwg = pwgMediaForPWG(name)) == NULL)
if ((pwg = _pwgMediaForPWG(name)) == NULL)
{
/*
* Not a PWG name, try a legacy name...
*/
if ((pwg = pwgMediaForLegacy(name)) == NULL)
if ((pwg = _pwgMediaForLegacy(name)) == NULL)
{
/*
* Not a legacy name, try a PPD name...
@@ -543,7 +505,7 @@ pwgInitSize(pwg_size_t *size, /* I - Size to initialize */
const char *suffix; /* Suffix on media string */
pwg = pwgMediaForPPD(name);
pwg = _pwgMediaForPPD(name);
if (pwg &&
(suffix = name + strlen(name) - 10 /* .FullBleed */) > name &&
!_cups_strcasecmp(suffix, ".FullBleed"))
@@ -564,13 +526,13 @@ pwgInitSize(pwg_size_t *size, /* I - Size to initialize */
}
else
{
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Unsupported media value."), 1);
_cupsSetError(IPP_INTERNAL_ERROR, _("Unsupported media value."), 1);
return (0);
}
}
else
{
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Missing media or media-col."), 1);
_cupsSetError(IPP_INTERNAL_ERROR, _("Missing media or media-col."), 1);
return (0);
}
}
@@ -578,24 +540,16 @@ pwgInitSize(pwg_size_t *size, /* I - Size to initialize */
return (1);
}
/* For OS X 10.8 and earlier */
int _pwgInitSize(pwg_size_t *size, ipp_t *job, int *margins_set)
{ return (pwgInitSize(size, job, margins_set)); }
/*
* 'pwgMediaForLegacy()' - Find a PWG media size by ISO/IPP legacy name.
*
* The "name" argument specifies the legacy ISO media size name, for example
* "iso-a4" or "na-letter".
*
* @since CUPS 1.7@
* '_pwgMediaForLegacy()' - Find a PWG media size by ISO/IPP legacy name.
*/
pwg_media_t * /* O - Matching size or NULL */
pwgMediaForLegacy(const char *legacy) /* I - Legacy size name */
_pwg_media_t * /* O - Matching size or NULL */
_pwgMediaForLegacy(
const char *legacy) /* I - Legacy size name */
{
pwg_media_t key; /* Search key */
_pwg_media_t key; /* Search key */
_cups_globals_t *cg = _cupsGlobals(); /* Global data */
@@ -613,13 +567,13 @@ pwgMediaForLegacy(const char *legacy) /* I - Legacy size name */
if (!cg->leg_size_lut)
{
int i; /* Looping var */
pwg_media_t *size; /* Current size */
_pwg_media_t *size; /* Current size */
cg->leg_size_lut = cupsArrayNew((cups_array_func_t)pwg_compare_legacy,
NULL);
for (i = (int)(sizeof(cups_pwg_media) / sizeof(cups_pwg_media[0])),
size = (pwg_media_t *)cups_pwg_media;
size = (_pwg_media_t *)cups_pwg_media;
i > 0;
i --, size ++)
if (size->legacy)
@@ -631,33 +585,18 @@ pwgMediaForLegacy(const char *legacy) /* I - Legacy size name */
*/
key.legacy = legacy;
return ((pwg_media_t *)cupsArrayFind(cg->leg_size_lut, &key));
return ((_pwg_media_t *)cupsArrayFind(cg->leg_size_lut, &key));
}
/* For OS X 10.8 and earlier */
pwg_media_t *_pwgMediaForLegacy(const char *legacy)
{ return (pwgMediaForLegacy(legacy)); }
/*
* 'pwgMediaForPPD()' - Find a PWG media size by Adobe PPD name.
*
* The "ppd" argument specifies an Adobe page size name as defined in Table B.1
* of the Adobe PostScript Printer Description File Format Specification Version
* 4.3.
*
* If the name is non-standard, the returned PWG media size is stored in
* thread-local storage and is overwritten by each call to the function in the
* thread. Custom names can be of the form "Custom.WIDTHxLENGTH[units]" or
* "WIDTHxLENGTH[units]".
*
* @since CUPS 1.7@
* '_pwgMediaForPPD()' - Find a PWG media size by Adobe PPD name.
*/
pwg_media_t * /* O - Matching size or NULL */
pwgMediaForPPD(const char *ppd) /* I - PPD size name */
_pwg_media_t * /* O - Matching size or NULL */
_pwgMediaForPPD(const char *ppd) /* I - PPD size name */
{
pwg_media_t key, /* Search key */
_pwg_media_t key, /* Search key */
*size; /* Matching size */
_cups_globals_t *cg = _cupsGlobals(); /* Global data */
@@ -680,7 +619,7 @@ pwgMediaForPPD(const char *ppd) /* I - PPD size name */
cg->ppd_size_lut = cupsArrayNew((cups_array_func_t)pwg_compare_ppd, NULL);
for (i = (int)(sizeof(cups_pwg_media) / sizeof(cups_pwg_media[0])),
size = (pwg_media_t *)cups_pwg_media;
size = (_pwg_media_t *)cups_pwg_media;
i > 0;
i --, size ++)
if (size->ppd)
@@ -692,7 +631,7 @@ pwgMediaForPPD(const char *ppd) /* I - PPD size name */
*/
key.ppd = ppd;
if ((size = (pwg_media_t *)cupsArrayFind(cg->ppd_size_lut, &key)) == NULL)
if ((size = (_pwg_media_t *)cupsArrayFind(cg->ppd_size_lut, &key)) == NULL)
{
/*
* See if the name is of the form:
@@ -774,9 +713,9 @@ pwgMediaForPPD(const char *ppd) /* I - PPD size name */
size->length = (int)(l * factor);
size->pwg = cg->pwg_name;
pwgFormatSizeName(cg->pwg_name, sizeof(cg->pwg_name),
custom ? "custom" : NULL, custom ? ppd + 7 : NULL,
size->width, size->length, NULL);
_pwgGenerateSize(cg->pwg_name, sizeof(cg->pwg_name),
custom ? "custom" : NULL, custom ? ppd + 7 : NULL,
size->width, size->length);
}
}
}
@@ -784,29 +723,16 @@ pwgMediaForPPD(const char *ppd) /* I - PPD size name */
return (size);
}
/* For OS X 10.8 and earlier */
pwg_media_t *_pwgMediaForPPD(const char *ppd)
{ return (pwgMediaForPPD(ppd)); }
/*
* 'pwgMediaForPWG()' - Find a PWG media size by 5101.1 self-describing name.
*
* The "pwg" argument specifies a self-describing media size name of the form
* "prefix_name_WIDTHxLENGTHunits" as defined in PWG 5101.1.
*
* If the name is non-standard, the returned PWG media size is stored in
* thread-local storage and is overwritten by each call to the function in the
* thread.
*
* @since CUPS 1.7@
* '_pwgMediaForPWG()' - Find a PWG media size by 5101.1 self-describing name.
*/
pwg_media_t * /* O - Matching size or NULL */
pwgMediaForPWG(const char *pwg) /* I - PWG size name */
_pwg_media_t * /* O - Matching size or NULL */
_pwgMediaForPWG(const char *pwg) /* I - PWG size name */
{
char *ptr; /* Pointer into name */
pwg_media_t key, /* Search key */
_pwg_media_t key, /* Search key */
*size; /* Matching size */
_cups_globals_t *cg = _cupsGlobals(); /* Global data */
@@ -829,7 +755,7 @@ pwgMediaForPWG(const char *pwg) /* I - PWG size name */
cg->pwg_size_lut = cupsArrayNew((cups_array_func_t)pwg_compare_pwg, NULL);
for (i = (int)(sizeof(cups_pwg_media) / sizeof(cups_pwg_media[0])),
size = (pwg_media_t *)cups_pwg_media;
size = (_pwg_media_t *)cups_pwg_media;
i > 0;
i --, size ++)
cupsArrayAdd(cg->pwg_size_lut, size);
@@ -840,7 +766,7 @@ pwgMediaForPWG(const char *pwg) /* I - PWG size name */
*/
key.pwg = pwg;
if ((size = (pwg_media_t *)cupsArrayFind(cg->pwg_size_lut, &key)) == NULL &&
if ((size = (_pwg_media_t *)cupsArrayFind(cg->pwg_size_lut, &key)) == NULL &&
(ptr = (char *)strchr(pwg, '_')) != NULL &&
(ptr = (char *)strchr(ptr + 1, '_')) != NULL)
{
@@ -886,30 +812,17 @@ pwgMediaForPWG(const char *pwg) /* I - PWG size name */
return (size);
}
/* For OS X 10.8 and earlier */
pwg_media_t *_pwgMediaForPWG(const char *pwg)
{ return (pwgMediaForPWG(pwg)); }
/*
* 'pwgMediaForSize()' - Get the PWG media size for the given dimensions.
*
* The "width" and "length" are in hundredths of millimeters, equivalent to
* 1/100000th of a meter or 1/2540th of an inch.
*
* If the dimensions are non-standard, the returned PWG media size is stored in
* thread-local storage and is overwritten by each call to the function in the
* thread.
*
* @since CUPS 1.7@
* '_pwgMediaForSize()' - Get the PWG media name for a given size.
*/
pwg_media_t * /* O - PWG media name */
pwgMediaForSize(int width, /* I - Width in hundredths of millimeters */
int length) /* I - Length in hundredths of millimeters */
_pwg_media_t * /* O - PWG media name */
_pwgMediaForSize(int width, /* I - Width in 2540ths */
int length) /* I - Length in 2540ths */
{
int i; /* Looping var */
pwg_media_t *media, /* Current media */
_pwg_media_t *media, /* Current media */
*best_media = NULL; /* Best match */
int dw, dl, /* Difference in width and length */
best_dw = 999, /* Best difference in width and length */
@@ -929,7 +842,7 @@ pwgMediaForSize(int width, /* I - Width in hundredths of millimeters */
*/
for (i = (int)(sizeof(cups_pwg_media) / sizeof(cups_pwg_media[0])),
media = (pwg_media_t *)cups_pwg_media;
media = (_pwg_media_t *)cups_pwg_media;
i > 0;
i --, media ++)
{
@@ -963,8 +876,8 @@ pwgMediaForSize(int width, /* I - Width in hundredths of millimeters */
* custom_WIDTHxHEIGHTuu_WIDTHxHEIGHTuu
*/
pwgFormatSizeName(cg->pwg_name, sizeof(cg->pwg_name), "custom", NULL, width,
length, NULL);
_pwgGenerateSize(cg->pwg_name, sizeof(cg->pwg_name), "custom", NULL, width,
length);
cg->pwg_media.pwg = cg->pwg_name;
cg->pwg_media.width = width;
@@ -973,18 +886,14 @@ pwgMediaForSize(int width, /* I - Width in hundredths of millimeters */
return (&(cg->pwg_media));
}
/* For OS X 10.8 and earlier */
pwg_media_t *_pwgMediaForSize(int width, int length)
{ return (pwgMediaForSize(width, length)); }
/*
* 'pwg_compare_legacy()' - Compare two sizes using the legacy names.
*/
static int /* O - Result of comparison */
pwg_compare_legacy(pwg_media_t *a, /* I - First size */
pwg_media_t *b) /* I - Second size */
pwg_compare_legacy(_pwg_media_t *a, /* I - First size */
_pwg_media_t *b) /* I - Second size */
{
return (strcmp(a->legacy, b->legacy));
}
@@ -995,8 +904,8 @@ pwg_compare_legacy(pwg_media_t *a, /* I - First size */
*/
static int /* O - Result of comparison */
pwg_compare_ppd(pwg_media_t *a, /* I - First size */
pwg_media_t *b) /* I - Second size */
pwg_compare_ppd(_pwg_media_t *a, /* I - First size */
_pwg_media_t *b) /* I - Second size */
{
return (strcmp(a->ppd, b->ppd));
}
@@ -1007,90 +916,13 @@ pwg_compare_ppd(pwg_media_t *a, /* I - First size */
*/
static int /* O - Result of comparison */
pwg_compare_pwg(pwg_media_t *a, /* I - First size */
pwg_media_t *b) /* I - Second size */
pwg_compare_pwg(_pwg_media_t *a, /* I - First size */
_pwg_media_t *b) /* I - Second size */
{
return (strcmp(a->pwg, b->pwg));
}
/*
* 'pwg_format_inches()' - Convert and format PWG units as inches.
*/
static char * /* O - String */
pwg_format_inches(char *buf, /* I - Buffer */
size_t bufsize, /* I - Size of buffer */
int val) /* I - Value in hundredths of millimeters */
{
int thousandths, /* Thousandths of inches */
integer, /* Integer portion */
fraction; /* Fractional portion */
/*
* Convert hundredths of millimeters to thousandths of inches and round to
* the nearest thousandth.
*/
thousandths = (val * 1000 + 1270) / 2540;
integer = thousandths / 1000;
fraction = thousandths % 1000;
/*
* Format as a pair of integers (avoids locale stuff), avoiding trailing
* zeros...
*/
if (fraction == 0)
snprintf(buf, bufsize, "%d", integer);
else if (fraction % 10)
snprintf(buf, bufsize, "%d.%03d", integer, fraction);
else if (fraction % 100)
snprintf(buf, bufsize, "%d.%02d", integer, fraction / 10);
else
snprintf(buf, bufsize, "%d.%01d", integer, fraction / 100);
return (buf);
}
/*
* 'pwg_format_millimeters()' - Convert and format PWG units as millimeters.
*/
static char * /* O - String */
pwg_format_millimeters(char *buf, /* I - Buffer */
size_t bufsize, /* I - Size of buffer */
int val) /* I - Value in hundredths of millimeters */
{
int integer, /* Integer portion */
fraction; /* Fractional portion */
/*
* Convert hundredths of millimeters to integer and fractional portions.
*/
integer = val / 100;
fraction = val % 100;
/*
* Format as a pair of integers (avoids locale stuff), avoiding trailing
* zeros...
*/
if (fraction == 0)
snprintf(buf, bufsize, "%d", integer);
else if (fraction % 10)
snprintf(buf, bufsize, "%d.%02d", integer, fraction);
else
snprintf(buf, bufsize, "%d.%01d", integer, fraction / 10);
return (buf);
}
/*
* End of "$Id$".
*/
+47 -20
Ver Arquivo
@@ -3,7 +3,7 @@
*
* Private PWG media API definitions for CUPS.
*
* Copyright 2009-2013 by Apple Inc.
* Copyright 2009-2012 by Apple Inc.
*
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
@@ -35,36 +35,63 @@ extern "C" {
/*
* Deprecated stuff for prior users of the private PWG media API...
* Macros...
*/
# ifndef _CUPS_NO_DEPRECATED
typedef struct pwg_map_s _pwg_map_t;
typedef struct pwg_media_s _pwg_media_t;
typedef struct pwg_size_s _pwg_size_t;
# endif /* _CUPS_NO_DEPRECATED */
/* Convert from points to 2540ths */
# define _PWG_FROMPTS(n) (int)(((n) * 2540 + 36) / 72)
/* Convert from 2540ths to points */
# define _PWG_TOPTS(n) ((n) * 72.0 / 2540.0)
/*
* Types and structures...
*/
typedef struct _pwg_map_s /**** Map element - PPD to/from PWG */
{
char *pwg, /* PWG media keyword */
*ppd; /* PPD option keyword */
} _pwg_map_t;
typedef struct _pwg_media_s /**** Common media size data ****/
{
const char *pwg, /* PWG 5101.1 "self describing" name */
*legacy, /* IPP/ISO legacy name */
*ppd; /* Standard Adobe PPD name */
int width, /* Width in 2540ths */
length; /* Length in 2540ths */
} _pwg_media_t;
typedef struct _pwg_size_s /**** Size element - PPD to/from PWG */
{
_pwg_map_t map; /* Map element */
int width, /* Width in 2540ths */
length, /* Length in 2540ths */
left, /* Left margin in 2540ths */
bottom, /* Bottom margin in 2540ths */
right, /* Right margin in 2540ths */
top; /* Top margin in 2540ths */
} _pwg_size_t;
/*
* Functions...
*/
extern char *_pwgFormatInches(char *buf, size_t bufsize, int val);
extern char *_pwgFormatMillimeters(char *buf, size_t bufsize,
int val);
extern void _pwgGenerateSize(char *keyword, size_t keysize,
const char *prefix,
const char *name,
int width, int length)
_CUPS_INTERNAL_MSG("Use pwgFormatSizeName instead.");
extern int _pwgInitSize(pwg_size_t *size, ipp_t *job,
int *margins_set)
_CUPS_INTERNAL_MSG("Use pwgInitSize instead.");
extern pwg_media_t *_pwgMediaForLegacy(const char *legacy)
_CUPS_INTERNAL_MSG("Use pwgMediaForLegacy instead.");
extern pwg_media_t *_pwgMediaForPPD(const char *ppd)
_CUPS_INTERNAL_MSG("Use pwgMediaForPPD instead.");
extern pwg_media_t *_pwgMediaForPWG(const char *pwg)
_CUPS_INTERNAL_MSG("Use pwgMediaForPWG instead.");
extern pwg_media_t *_pwgMediaForSize(int width, int length)
_CUPS_INTERNAL_MSG("Use pwgMediaForSize instead.");
int width, int length);
extern int _pwgInitSize(_pwg_size_t *size, ipp_t *job,
int *margins_set);
extern _pwg_media_t *_pwgMediaForLegacy(const char *legacy);
extern _pwg_media_t *_pwgMediaForPPD(const char *ppd);
extern _pwg_media_t *_pwgMediaForPWG(const char *pwg);
extern _pwg_media_t *_pwgMediaForSize(int width, int length);
# ifdef __cplusplus
}
-94
Ver Arquivo
@@ -1,94 +0,0 @@
/*
* "$Id$"
*
* PWG media API definitions for CUPS.
*
* Copyright 2009-2013 by Apple Inc.
*
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
* which should have been included with this file. If this file is
* file is missing or damaged, see the license at "http://www.cups.org/".
*
* This file is subject to the Apple OS-Developed Software exception.
*/
#ifndef _CUPS_PWG_H_
# define _CUPS_PWG_H_
/*
* C++ magic...
*/
# ifdef __cplusplus
extern "C" {
# endif /* __cplusplus */
/*
* Macros...
*/
/* Convert from points to hundredths of millimeters */
# define PWG_FROM_POINTS(n) (int)(((n) * 2540 + 36) / 72)
/* Convert from hundredths of millimeters to points */
# define PWG_TO_POINTS(n) ((n) * 72.0 / 2540.0)
/*
* Types and structures...
*/
typedef struct pwg_map_s /**** Map element - PPD to/from PWG */
{
char *pwg, /* PWG media keyword */
*ppd; /* PPD option keyword */
} pwg_map_t;
typedef struct pwg_media_s /**** Common media size data ****/
{
const char *pwg, /* PWG 5101.1 "self describing" name */
*legacy, /* IPP/ISO legacy name */
*ppd; /* Standard Adobe PPD name */
int width, /* Width in 2540ths */
length; /* Length in 2540ths */
} pwg_media_t;
typedef struct pwg_size_s /**** Size element - PPD to/from PWG */
{
pwg_map_t map; /* Map element */
int width, /* Width in 2540ths */
length, /* Length in 2540ths */
left, /* Left margin in 2540ths */
bottom, /* Bottom margin in 2540ths */
right, /* Right margin in 2540ths */
top; /* Top margin in 2540ths */
} pwg_size_t;
/*
* Functions...
*/
extern int pwgFormatSizeName(char *keyword, size_t keysize,
const char *prefix, const char *name,
int width, int length,
const char *units) _CUPS_API_1_7;
extern int pwgInitSize(pwg_size_t *size, ipp_t *job,
int *margins_set) _CUPS_API_1_7;
extern pwg_media_t *pwgMediaForLegacy(const char *legacy) _CUPS_API_1_7;
extern pwg_media_t *pwgMediaForPPD(const char *ppd) _CUPS_API_1_7;
extern pwg_media_t *pwgMediaForPWG(const char *pwg) _CUPS_API_1_7;
extern pwg_media_t *pwgMediaForSize(int width, int length) _CUPS_API_1_7;
# ifdef __cplusplus
}
# endif /* __cplusplus */
#endif /* !_CUPS_PWG_H_ */
/*
* End of "$Id$".
*/
+2 -2
Ver Arquivo
@@ -368,11 +368,11 @@ typedef ssize_t (*cups_raster_iocb_t)(void *ctx, unsigned char *buffer, size_t l
extern void cupsRasterClose(cups_raster_t *r);
extern cups_raster_t *cupsRasterOpen(int fd, cups_mode_t mode);
extern unsigned cupsRasterReadHeader(cups_raster_t *r,
cups_page_header_t *h) _CUPS_DEPRECATED_MSG("Use cupsRasterReadHeader2 instead.");
cups_page_header_t *h) _CUPS_DEPRECATED;
extern unsigned cupsRasterReadPixels(cups_raster_t *r,
unsigned char *p, unsigned len);
extern unsigned cupsRasterWriteHeader(cups_raster_t *r,
cups_page_header_t *h) _CUPS_DEPRECATED_MSG("Use cupsRasterWriteHeader2 instead.");
cups_page_header_t *h) _CUPS_DEPRECATED;
extern unsigned cupsRasterWritePixels(cups_raster_t *r,
unsigned char *p, unsigned len);
+120 -132
Ver Arquivo
@@ -3,7 +3,7 @@
*
* IPP utilities for CUPS.
*
* Copyright 2007-2013 by Apple Inc.
* Copyright 2007-2012 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -46,9 +46,6 @@
#ifndef O_BINARY
# define O_BINARY 0
#endif /* O_BINARY */
#ifndef MSG_DONTWAIT
# define MSG_DONTWAIT 0
#endif /* !MSG_DONTWAIT */
/*
@@ -82,7 +79,7 @@ cupsDoFileRequest(http_t *http, /* I - Connection to server or @code CUPS_HT
* Can't get file information!
*/
_cupsSetError(errno == ENOENT ? IPP_STATUS_ERROR_NOT_FOUND : IPP_STATUS_ERROR_NOT_AUTHORIZED,
_cupsSetError(errno == ENOENT ? IPP_NOT_FOUND : IPP_NOT_AUTHORIZED,
NULL, 0);
ippDelete(request);
@@ -146,7 +143,7 @@ cupsDoIORequest(http_t *http, /* I - Connection to server or @code CUPS_HTTP
{
ippDelete(request);
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(EINVAL), 0);
_cupsSetError(IPP_INTERNAL_ERROR, strerror(EINVAL), 0);
return (NULL);
}
@@ -175,7 +172,7 @@ cupsDoIORequest(http_t *http, /* I - Connection to server or @code CUPS_HTTP
* Can't get file information!
*/
_cupsSetError(errno == EBADF ? IPP_STATUS_ERROR_NOT_FOUND : IPP_STATUS_ERROR_NOT_AUTHORIZED,
_cupsSetError(errno == EBADF ? IPP_NOT_FOUND : IPP_NOT_AUTHORIZED,
NULL, 0);
ippDelete(request);
@@ -195,7 +192,7 @@ cupsDoIORequest(http_t *http, /* I - Connection to server or @code CUPS_HTTP
ippDelete(request);
_cupsSetError(IPP_STATUS_ERROR_NOT_POSSIBLE, strerror(EISDIR), 0);
_cupsSetError(IPP_NOT_POSSIBLE, strerror(EISDIR), 0);
return (NULL);
}
@@ -236,7 +233,7 @@ cupsDoIORequest(http_t *http, /* I - Connection to server or @code CUPS_HTTP
DEBUG_printf(("2cupsDoIORequest: status=%d", status));
if (status == HTTP_STATUS_CONTINUE && request->state == IPP_STATE_DATA && infile >= 0)
if (status == HTTP_CONTINUE && request->state == IPP_DATA && infile >= 0)
{
DEBUG_puts("2cupsDoIORequest: file write...");
@@ -252,7 +249,7 @@ cupsDoIORequest(http_t *http, /* I - Connection to server or @code CUPS_HTTP
while ((bytes = (int)read(infile, buffer, sizeof(buffer))) > 0)
{
if ((status = cupsWriteRequestData(http, buffer, bytes))
!= HTTP_STATUS_CONTINUE)
!= HTTP_CONTINUE)
break;
}
}
@@ -261,7 +258,7 @@ cupsDoIORequest(http_t *http, /* I - Connection to server or @code CUPS_HTTP
* Get the server's response...
*/
if (status != HTTP_STATUS_ERROR)
if (status != HTTP_ERROR)
{
response = cupsGetResponse(http, resource);
status = httpGetStatus(http);
@@ -269,9 +266,9 @@ cupsDoIORequest(http_t *http, /* I - Connection to server or @code CUPS_HTTP
DEBUG_printf(("2cupsDoIORequest: status=%d", status));
if (status == HTTP_STATUS_ERROR ||
(status >= HTTP_STATUS_BAD_REQUEST && status != HTTP_STATUS_UNAUTHORIZED &&
status != HTTP_STATUS_UPGRADE_REQUIRED))
if (status == HTTP_ERROR ||
(status >= HTTP_BAD_REQUEST && status != HTTP_UNAUTHORIZED &&
status != HTTP_UPGRADE_REQUIRED))
{
_cupsSetHTTPError(status);
break;
@@ -288,7 +285,7 @@ cupsDoIORequest(http_t *http, /* I - Connection to server or @code CUPS_HTTP
break;
}
if (http->state != HTTP_STATE_WAITING)
if (http->state != HTTP_WAITING)
{
/*
* Flush any remaining data...
@@ -358,15 +355,14 @@ cupsGetResponse(http_t *http, /* I - Connection to server or @code CUPS_HTTP
if (!http)
http = _cupsConnect();
if (!http || (http->state != HTTP_STATE_POST_RECV &&
http->state != HTTP_STATE_POST_SEND))
if (!http || (http->state != HTTP_POST_RECV && http->state != HTTP_POST_SEND))
return (NULL);
/*
* Check for an unfinished chunked request...
*/
if (http->data_encoding == HTTP_ENCODING_CHUNKED)
if (http->data_encoding == HTTP_ENCODE_CHUNKED)
{
/*
* Send a 0-length chunk to finish off the request...
@@ -389,11 +385,11 @@ cupsGetResponse(http_t *http, /* I - Connection to server or @code CUPS_HTTP
{
status = httpUpdate(http);
}
while (status == HTTP_STATUS_CONTINUE);
while (status != HTTP_ERROR && http->state == HTTP_POST_RECV);
DEBUG_printf(("2cupsGetResponse: status=%d", status));
if (status == HTTP_STATUS_OK)
if (status == HTTP_OK)
{
/*
* Get the IPP response...
@@ -401,11 +397,11 @@ cupsGetResponse(http_t *http, /* I - Connection to server or @code CUPS_HTTP
response = ippNew();
while ((state = ippRead(http, response)) != IPP_STATE_DATA)
if (state == IPP_STATE_ERROR)
while ((state = ippRead(http, response)) != IPP_DATA)
if (state == IPP_ERROR)
break;
if (state == IPP_STATE_ERROR)
if (state == IPP_ERROR)
{
/*
* Flush remaining data and delete the response...
@@ -418,11 +414,11 @@ cupsGetResponse(http_t *http, /* I - Connection to server or @code CUPS_HTTP
ippDelete(response);
response = NULL;
http->status = status = HTTP_STATUS_ERROR;
http->status = status = HTTP_ERROR;
http->error = EINVAL;
}
}
else if (status != HTTP_STATUS_ERROR)
else if (status != HTTP_ERROR)
{
/*
* Flush any error message...
@@ -434,7 +430,7 @@ cupsGetResponse(http_t *http, /* I - Connection to server or @code CUPS_HTTP
* Then handle encryption and authentication...
*/
if (status == HTTP_STATUS_UNAUTHORIZED)
if (status == HTTP_UNAUTHORIZED)
{
/*
* See if we can do authentication...
@@ -443,13 +439,13 @@ cupsGetResponse(http_t *http, /* I - Connection to server or @code CUPS_HTTP
DEBUG_puts("2cupsGetResponse: Need authorization...");
if (!cupsDoAuthentication(http, "POST", resource))
httpReconnect2(http, 30000, NULL);
httpReconnect(http);
else
http->status = status = HTTP_STATUS_CUPS_AUTHORIZATION_CANCELED;
http->status = status = HTTP_AUTHORIZATION_CANCELED;
}
#ifdef HAVE_SSL
else if (status == HTTP_STATUS_UPGRADE_REQUIRED)
else if (status == HTTP_UPGRADE_REQUIRED)
{
/*
* Force a reconnect with encryption...
@@ -457,8 +453,8 @@ cupsGetResponse(http_t *http, /* I - Connection to server or @code CUPS_HTTP
DEBUG_puts("2cupsGetResponse: Need encryption...");
if (!httpReconnect2(http, 30000, NULL))
httpEncryption(http, HTTP_ENCRYPTION_REQUIRED);
if (!httpReconnect(http))
httpEncryption(http, HTTP_ENCRYPT_REQUIRED);
}
#endif /* HAVE_SSL */
}
@@ -569,7 +565,7 @@ cupsReadResponseData(
if ((http = cg->http) == NULL)
{
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("No active connection"), 1);
_cupsSetError(IPP_INTERNAL_ERROR, _("No active connection"), 1);
return (-1);
}
}
@@ -591,7 +587,7 @@ cupsReadResponseData(
* response. Only one request can be sent/queued at a time per @code http_t@
* connection.
*
* Returns the initial HTTP status code, which will be @code HTTP_STATUS_CONTINUE@
* Returns the initial HTTP status code, which will be @code HTTP_CONTINUE@
* on a successful send of the request.
*
* Note: Unlike @link cupsDoFileRequest@, @link cupsDoIORequest@, and
@@ -606,10 +602,10 @@ cupsSendRequest(http_t *http, /* I - Connection to server or @code CUPS_HTTP
const char *resource, /* I - Resource path */
size_t length) /* I - Length of data to follow or @code CUPS_LENGTH_VARIABLE@ */
{
http_status_t status; /* Status of HTTP request */
int got_status; /* Did we get the status? */
ipp_state_t state; /* State of IPP processing */
http_status_t expect; /* Expect: header to use */
http_status_t status; /* Status of HTTP request */
int got_status; /* Did we get the status? */
ipp_state_t state; /* State of IPP processing */
http_status_t expect; /* Expect: header to use */
DEBUG_printf(("cupsSendRequest(http=%p, request=%p(%s), resource=\"%s\", "
@@ -623,9 +619,9 @@ cupsSendRequest(http_t *http, /* I - Connection to server or @code CUPS_HTTP
if (!request || !resource)
{
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(EINVAL), 0);
_cupsSetError(IPP_INTERNAL_ERROR, strerror(EINVAL), 0);
return (HTTP_STATUS_ERROR);
return (HTTP_ERROR);
}
/*
@@ -634,24 +630,24 @@ cupsSendRequest(http_t *http, /* I - Connection to server or @code CUPS_HTTP
if (!http)
if ((http = _cupsConnect()) == NULL)
return (HTTP_STATUS_SERVICE_UNAVAILABLE);
return (HTTP_SERVICE_UNAVAILABLE);
/*
* If the prior request was not flushed out, do so now...
*/
if (http->state == HTTP_STATE_GET_SEND ||
http->state == HTTP_STATE_POST_SEND)
if (http->state == HTTP_GET_SEND ||
http->state == HTTP_POST_SEND)
{
DEBUG_puts("2cupsSendRequest: Flush prior response.");
httpFlush(http);
}
else if (http->state != HTTP_STATE_WAITING)
else if (http->state != HTTP_WAITING)
{
DEBUG_printf(("1cupsSendRequest: Unknown HTTP state (%d), "
"reconnecting.", http->state));
if (httpReconnect2(http, 30000, NULL))
return (HTTP_STATUS_ERROR);
if (httpReconnect(http))
return (HTTP_ERROR);
}
#ifdef HAVE_SSL
@@ -663,10 +659,10 @@ cupsSendRequest(http_t *http, /* I - Connection to server or @code CUPS_HTTP
if (ippFindAttribute(request, "auth-info", IPP_TAG_TEXT) &&
!httpAddrLocalhost(http->hostaddr) && !http->tls &&
httpEncryption(http, HTTP_ENCRYPTION_REQUIRED))
httpEncryption(http, HTTP_ENCRYPT_REQUIRED))
{
DEBUG_puts("1cupsSendRequest: Unable to encrypt connection.");
return (HTTP_STATUS_SERVICE_UNAVAILABLE);
return (HTTP_SERVICE_UNAVAILABLE);
}
#endif /* HAVE_SSL */
@@ -678,10 +674,10 @@ cupsSendRequest(http_t *http, /* I - Connection to server or @code CUPS_HTTP
{
DEBUG_puts("2cupsSendRequest: Connection: close");
httpClearFields(http);
if (httpReconnect2(http, 30000, NULL))
if (httpReconnect(http))
{
DEBUG_puts("1cupsSendRequest: Unable to reconnect.");
return (HTTP_STATUS_SERVICE_UNAVAILABLE);
return (HTTP_SERVICE_UNAVAILABLE);
}
}
@@ -689,7 +685,7 @@ cupsSendRequest(http_t *http, /* I - Connection to server or @code CUPS_HTTP
* Loop until we can send the request without authorization problems.
*/
expect = HTTP_STATUS_CONTINUE;
expect = HTTP_CONTINUE;
for (;;)
{
@@ -729,10 +725,10 @@ cupsSendRequest(http_t *http, /* I - Connection to server or @code CUPS_HTTP
if (httpPost(http, resource))
{
DEBUG_puts("2cupsSendRequest: POST failed, reconnecting.");
if (httpReconnect2(http, 30000, NULL))
if (httpReconnect(http))
{
DEBUG_puts("1cupsSendRequest: Unable to reconnect.");
return (HTTP_STATUS_SERVICE_UNAVAILABLE);
return (HTTP_SERVICE_UNAVAILABLE);
}
else
continue;
@@ -744,30 +740,30 @@ cupsSendRequest(http_t *http, /* I - Connection to server or @code CUPS_HTTP
DEBUG_puts("2cupsSendRequest: Writing IPP request...");
request->state = IPP_STATE_IDLE;
status = HTTP_STATUS_CONTINUE;
request->state = IPP_IDLE;
status = HTTP_CONTINUE;
got_status = 0;
while ((state = ippWrite(http, request)) != IPP_STATE_DATA)
if (state == IPP_STATE_ERROR)
while ((state = ippWrite(http, request)) != IPP_DATA)
if (state == IPP_ERROR)
break;
else if (httpCheck(http))
{
got_status = 1;
_httpUpdate(http, &status);
if (status >= HTTP_STATUS_MULTIPLE_CHOICES)
if (status >= HTTP_MULTIPLE_CHOICES)
break;
}
if (state == IPP_STATE_ERROR)
if (state == IPP_ERROR)
{
DEBUG_puts("1cupsSendRequest: Unable to send IPP request.");
http->status = HTTP_STATUS_ERROR;
http->state = HTTP_STATE_WAITING;
http->status = HTTP_ERROR;
http->state = HTTP_WAITING;
return (HTTP_STATUS_ERROR);
return (HTTP_ERROR);
}
/*
@@ -776,7 +772,7 @@ cupsSendRequest(http_t *http, /* I - Connection to server or @code CUPS_HTTP
if (!got_status)
{
if (expect == HTTP_STATUS_CONTINUE)
if (expect == HTTP_CONTINUE)
{
DEBUG_puts("2cupsSendRequest: Waiting for 100-continue...");
@@ -793,72 +789,69 @@ cupsSendRequest(http_t *http, /* I - Connection to server or @code CUPS_HTTP
* Process the current HTTP status...
*/
if (status >= HTTP_STATUS_MULTIPLE_CHOICES)
if (status >= HTTP_MULTIPLE_CHOICES)
{
int temp_status; /* Temporary status */
_cupsSetHTTPError(status);
do
{
temp_status = httpUpdate(http);
status = httpUpdate(http);
}
while (temp_status != HTTP_STATUS_ERROR &&
http->state == HTTP_STATE_POST_RECV);
while (status != HTTP_ERROR && http->state == HTTP_POST_RECV);
httpFlush(http);
}
switch (status)
{
case HTTP_STATUS_CONTINUE :
case HTTP_STATUS_OK :
case HTTP_STATUS_ERROR :
case HTTP_ERROR :
case HTTP_CONTINUE :
case HTTP_OK :
DEBUG_printf(("1cupsSendRequest: Returning %d.", status));
return (status);
case HTTP_STATUS_UNAUTHORIZED :
case HTTP_UNAUTHORIZED :
if (cupsDoAuthentication(http, "POST", resource))
{
DEBUG_puts("1cupsSendRequest: Returning HTTP_STATUS_CUPS_AUTHORIZATION_CANCELED.");
return (HTTP_STATUS_CUPS_AUTHORIZATION_CANCELED);
DEBUG_puts("1cupsSendRequest: Returning HTTP_AUTHORIZATION_CANCELED.");
return (HTTP_AUTHORIZATION_CANCELED);
}
DEBUG_puts("2cupsSendRequest: Reconnecting after HTTP_STATUS_UNAUTHORIZED.");
DEBUG_puts("2cupsSendRequest: Reconnecting after HTTP_UNAUTHORIZED.");
if (httpReconnect2(http, 30000, NULL))
if (httpReconnect(http))
{
DEBUG_puts("1cupsSendRequest: Unable to reconnect.");
return (HTTP_STATUS_SERVICE_UNAVAILABLE);
return (HTTP_SERVICE_UNAVAILABLE);
}
break;
#ifdef HAVE_SSL
case HTTP_STATUS_UPGRADE_REQUIRED :
case HTTP_UPGRADE_REQUIRED :
/*
* Flush any error message, reconnect, and then upgrade with
* encryption...
*/
DEBUG_puts("2cupsSendRequest: Reconnecting after "
"HTTP_STATUS_UPGRADE_REQUIRED.");
"HTTP_UPGRADE_REQUIRED.");
if (httpReconnect2(http, 30000, NULL))
if (httpReconnect(http))
{
DEBUG_puts("1cupsSendRequest: Unable to reconnect.");
return (HTTP_STATUS_SERVICE_UNAVAILABLE);
return (HTTP_SERVICE_UNAVAILABLE);
}
DEBUG_puts("2cupsSendRequest: Upgrading to TLS.");
if (httpEncryption(http, HTTP_ENCRYPTION_REQUIRED))
if (httpEncryption(http, HTTP_ENCRYPT_REQUIRED))
{
DEBUG_puts("1cupsSendRequest: Unable to encrypt connection.");
return (HTTP_STATUS_SERVICE_UNAVAILABLE);
return (HTTP_SERVICE_UNAVAILABLE);
}
break;
#endif /* HAVE_SSL */
case HTTP_STATUS_EXPECTATION_FAILED :
case HTTP_EXPECTATION_FAILED :
/*
* Don't try using the Expect: header the next time around...
*/
@@ -868,10 +861,10 @@ cupsSendRequest(http_t *http, /* I - Connection to server or @code CUPS_HTTP
DEBUG_puts("2cupsSendRequest: Reconnecting after "
"HTTP_EXPECTATION_FAILED.");
if (httpReconnect2(http, 30000, NULL))
if (httpReconnect(http))
{
DEBUG_puts("1cupsSendRequest: Unable to reconnect.");
return (HTTP_STATUS_SERVICE_UNAVAILABLE);
return (HTTP_SERVICE_UNAVAILABLE);
}
break;
@@ -895,7 +888,7 @@ cupsSendRequest(http_t *http, /* I - Connection to server or @code CUPS_HTTP
* @since CUPS 1.4/OS X 10.6@
*/
http_status_t /* O - @code HTTP_STATUS_CONTINUE@ if OK or HTTP status on error */
http_status_t /* O - @code HTTP_CONTINUE@ if OK or HTTP status on error */
cupsWriteRequestData(
http_t *http, /* I - Connection to server or @code CUPS_HTTP_DEFAULT@ */
const char *buffer, /* I - Bytes to write */
@@ -918,9 +911,9 @@ cupsWriteRequestData(
if ((http = cg->http) == NULL)
{
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("No active connection"), 1);
DEBUG_puts("1cupsWriteRequestData: Returning HTTP_STATUS_ERROR.");
return (HTTP_STATUS_ERROR);
_cupsSetError(IPP_INTERNAL_ERROR, _("No active connection"), 1);
DEBUG_puts("1cupsWriteRequestData: Returning HTTP_ERROR.");
return (HTTP_ERROR);
}
}
@@ -932,9 +925,9 @@ cupsWriteRequestData(
if (httpWrite2(http, buffer, length) < 0)
{
DEBUG_puts("1cupsWriteRequestData: Returning HTTP_STATUS_ERROR.");
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(http->error), 0);
return (HTTP_STATUS_ERROR);
DEBUG_puts("1cupsWriteRequestData: Returning HTTP_ERROR.");
_cupsSetError(IPP_INTERNAL_ERROR, strerror(http->error), 0);
return (HTTP_ERROR);
}
/*
@@ -954,7 +947,7 @@ cupsWriteRequestData(
http_status_t status; /* Status from _httpUpdate */
_httpUpdate(http, &status);
if (status >= HTTP_STATUS_MULTIPLE_CHOICES)
if (status >= HTTP_MULTIPLE_CHOICES)
{
_cupsSetHTTPError(status);
@@ -962,7 +955,7 @@ cupsWriteRequestData(
{
status = httpUpdate(http);
}
while (status != HTTP_STATUS_ERROR && http->state == HTTP_STATE_POST_RECV);
while (status != HTTP_ERROR && http->state == HTTP_POST_RECV);
httpFlush(http);
}
@@ -972,8 +965,8 @@ cupsWriteRequestData(
}
}
DEBUG_puts("1cupsWriteRequestData: Returning HTTP_STATUS_CONTINUE.");
return (HTTP_STATUS_CONTINUE);
DEBUG_puts("1cupsWriteRequestData: Returning HTTP_CONTINUE.");
return (HTTP_CONTINUE);
}
@@ -1000,9 +993,9 @@ _cupsConnect(void)
*/
if (strcmp(cg->http->hostname, cg->server) ||
cg->ipp_port != httpAddrPort(cg->http->hostaddr) ||
cg->ipp_port != _httpAddrPort(cg->http->hostaddr) ||
(cg->http->encryption != cg->encryption &&
cg->http->encryption == HTTP_ENCRYPTION_NEVER))
cg->http->encryption == HTTP_ENCRYPT_NEVER))
{
/*
* Need to close the current connection because something has changed...
@@ -1019,13 +1012,8 @@ _cupsConnect(void)
char ch; /* Connection check byte */
#ifdef WIN32
if (recv(cg->http->fd, &ch, 1, MSG_PEEK) < 0 &&
WSAGetLastError() != WSAEWOULDBLOCK)
#else
if (recv(cg->http->fd, &ch, 1, MSG_PEEK | MSG_DONTWAIT) < 0 &&
errno != EWOULDBLOCK)
#endif /* WIN32 */
{
/*
* Nope, close the connection...
@@ -1043,13 +1031,13 @@ _cupsConnect(void)
if (!cg->http)
{
if ((cg->http = httpConnect2(cupsServer(), ippPort(), NULL, AF_UNSPEC,
cupsEncryption(), 1, 30000, NULL)) == NULL)
if ((cg->http = httpConnectEncrypt(cupsServer(), ippPort(),
cupsEncryption())) == NULL)
{
if (errno)
_cupsSetError(IPP_STATUS_ERROR_SERVICE_UNAVAILABLE, NULL, 0);
_cupsSetError(IPP_SERVICE_UNAVAILABLE, NULL, 0);
else
_cupsSetError(IPP_STATUS_ERROR_SERVICE_UNAVAILABLE,
_cupsSetError(IPP_SERVICE_UNAVAILABLE,
_("Unable to connect to host."), 1);
}
}
@@ -1122,54 +1110,54 @@ _cupsSetHTTPError(http_status_t status) /* I - HTTP status code */
{
switch (status)
{
case HTTP_STATUS_NOT_FOUND :
_cupsSetError(IPP_STATUS_ERROR_NOT_FOUND, httpStatus(status), 0);
case HTTP_NOT_FOUND :
_cupsSetError(IPP_NOT_FOUND, httpStatus(status), 0);
break;
case HTTP_STATUS_UNAUTHORIZED :
_cupsSetError(IPP_STATUS_ERROR_NOT_AUTHENTICATED, httpStatus(status), 0);
case HTTP_UNAUTHORIZED :
_cupsSetError(IPP_NOT_AUTHENTICATED, httpStatus(status), 0);
break;
case HTTP_STATUS_CUPS_AUTHORIZATION_CANCELED :
_cupsSetError(IPP_STATUS_ERROR_CUPS_AUTHENTICATION_CANCELED, httpStatus(status), 0);
case HTTP_AUTHORIZATION_CANCELED :
_cupsSetError(IPP_AUTHENTICATION_CANCELED, httpStatus(status), 0);
break;
case HTTP_STATUS_FORBIDDEN :
_cupsSetError(IPP_STATUS_ERROR_FORBIDDEN, httpStatus(status), 0);
case HTTP_FORBIDDEN :
_cupsSetError(IPP_FORBIDDEN, httpStatus(status), 0);
break;
case HTTP_STATUS_BAD_REQUEST :
_cupsSetError(IPP_STATUS_ERROR_BAD_REQUEST, httpStatus(status), 0);
case HTTP_BAD_REQUEST :
_cupsSetError(IPP_BAD_REQUEST, httpStatus(status), 0);
break;
case HTTP_STATUS_REQUEST_TOO_LARGE :
_cupsSetError(IPP_STATUS_ERROR_REQUEST_VALUE, httpStatus(status), 0);
case HTTP_REQUEST_TOO_LARGE :
_cupsSetError(IPP_REQUEST_VALUE, httpStatus(status), 0);
break;
case HTTP_STATUS_NOT_IMPLEMENTED :
_cupsSetError(IPP_STATUS_ERROR_OPERATION_NOT_SUPPORTED, httpStatus(status), 0);
case HTTP_NOT_IMPLEMENTED :
_cupsSetError(IPP_OPERATION_NOT_SUPPORTED, httpStatus(status), 0);
break;
case HTTP_STATUS_NOT_SUPPORTED :
_cupsSetError(IPP_STATUS_ERROR_VERSION_NOT_SUPPORTED, httpStatus(status), 0);
case HTTP_NOT_SUPPORTED :
_cupsSetError(IPP_VERSION_NOT_SUPPORTED, httpStatus(status), 0);
break;
case HTTP_STATUS_UPGRADE_REQUIRED :
_cupsSetError(IPP_STATUS_ERROR_CUPS_UPGRADE_REQUIRED, httpStatus(status), 0);
case HTTP_UPGRADE_REQUIRED :
_cupsSetError(IPP_UPGRADE_REQUIRED, httpStatus(status), 0);
break;
case HTTP_STATUS_CUPS_PKI_ERROR :
_cupsSetError(IPP_STATUS_ERROR_CUPS_PKI, httpStatus(status), 0);
case HTTP_PKI_ERROR :
_cupsSetError(IPP_PKI_ERROR, httpStatus(status), 0);
break;
case HTTP_STATUS_ERROR :
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(errno), 0);
case HTTP_ERROR :
_cupsSetError(IPP_INTERNAL_ERROR, strerror(errno), 0);
break;
default :
DEBUG_printf(("4_cupsSetHTTPError: HTTP error %d mapped to "
"IPP_STATUS_ERROR_SERVICE_UNAVAILABLE!", status));
_cupsSetError(IPP_STATUS_ERROR_SERVICE_UNAVAILABLE, httpStatus(status), 0);
"IPP_SERVICE_UNAVAILABLE!", status));
_cupsSetError(IPP_SERVICE_UNAVAILABLE, httpStatus(status), 0);
break;
}
}
+5 -1
Ver Arquivo
@@ -362,7 +362,11 @@ _cupsSNMPOpen(int family) /* I - Address family - @code AF_INET@ or @code AF_IN
val = 1;
if (setsockopt(fd, SOL_SOCKET, SO_BROADCAST, CUPS_SOCAST &val, sizeof(val)))
#ifdef WIN32
if (setsockopt(fd, SOL_SOCKET, SO_BROADCAST, (char *)&val, sizeof(val)))
#else
if (setsockopt(fd, SOL_SOCKET, SO_BROADCAST, &val, sizeof(val)))
#endif /* WIN32 */
{
DEBUG_printf(("5_cupsSNMPOpen: Returning -1 (%s)", strerror(errno)));
+18 -22
Ver Arquivo
@@ -3,7 +3,7 @@
*
* snprintf functions for CUPS.
*
* Copyright 2007-2013 by Apple Inc.
* Copyright 2007-2010 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -48,7 +48,6 @@ _cups_vsnprintf(char *buffer, /* O - Output buffer */
char tformat[100], /* Temporary format string for sprintf() */
*tptr, /* Pointer into temporary format */
temp[1024]; /* Buffer for formatted numbers */
size_t templen; /* Length of "temp" */
char *s; /* Pointer to string */
int slen; /* Length of string */
int bytes; /* Total number of bytes needed */
@@ -184,21 +183,20 @@ _cups_vsnprintf(char *buffer, /* O - Output buffer */
break;
sprintf(temp, tformat, va_arg(ap, double));
templen = strlen(temp):
bytes += (int)templen;
bytes += (int)strlen(temp);
if (bufptr)
{
if ((bufptr + templen) > bufend)
if ((bufptr + strlen(temp)) > bufend)
{
strlcpy(bufptr, temp, (size_t)(bufend - bufptr));
strncpy(bufptr, temp, (size_t)(bufend - bufptr));
bufptr = bufend;
}
else
{
memcpy(bufptr, temp, templen + 1);
bufptr += templen;
strcpy(bufptr, temp);
bufptr += strlen(temp);
}
}
break;
@@ -215,21 +213,20 @@ _cups_vsnprintf(char *buffer, /* O - Output buffer */
break;
sprintf(temp, tformat, va_arg(ap, int));
templen = strlen(temp):
bytes += (int)templen;
bytes += (int)strlen(temp);
if (bufptr)
{
if ((bufptr + templen) > bufend)
if ((bufptr + strlen(temp)) > bufend)
{
strlcpy(bufptr, temp, (size_t)(bufend - bufptr));
strncpy(bufptr, temp, (size_t)(bufend - bufptr));
bufptr = bufend;
}
else
{
memcpy(bufptr, temp, templen + 1);
bufptr += templen;
strcpy(bufptr, temp);
bufptr += strlen(temp);
}
}
break;
@@ -239,21 +236,20 @@ _cups_vsnprintf(char *buffer, /* O - Output buffer */
break;
sprintf(temp, tformat, va_arg(ap, void *));
templen = strlen(temp):
bytes += (int)templen;
bytes += (int)strlen(temp);
if (bufptr)
{
if ((bufptr + templen) > bufend)
if ((bufptr + strlen(temp)) > bufend)
{
strlcpy(bufptr, temp, (size_t)(bufend - bufptr));
strncpy(bufptr, temp, (size_t)(bufend - bufptr));
bufptr = bufend;
}
else
{
memcpy(bufptr, temp, templen + 1);
bufptr += templen;
strcpy(bufptr, temp);
bufptr += strlen(temp);
}
}
break;
@@ -296,13 +292,13 @@ _cups_vsnprintf(char *buffer, /* O - Output buffer */
if (sign == '-')
{
memcpy(bufptr, s, (size_t)slen);
strncpy(bufptr, s, (size_t)slen);
memset(bufptr + slen, ' ', (size_t)(width - slen));
}
else
{
memset(bufptr, ' ', (size_t)(width - slen));
memcpy(bufptr + width - slen, s, (size_t)slen);
strncpy(bufptr + width - slen, s, (size_t)slen);
}
bufptr += width;

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