Comparar commits
1 Commits
| Autor | SHA1 | Data | |
|---|---|---|---|
| 75c4e7f14f |
@@ -1,13 +1,6 @@
|
||||
CHANGES-1.4.txt
|
||||
---------------
|
||||
|
||||
CHANGES IN CUPS V1.4.8
|
||||
|
||||
- The scheduler would delete job data files when restarted (STR #3880)
|
||||
- The network backends could crash if a printer returned a value of 0
|
||||
for the maximum capacity for a supply (STR #3875)
|
||||
|
||||
|
||||
CHANGES IN CUPS V1.4.7
|
||||
|
||||
- Documentation changes (STR #3710, STR #3720, STR #3745, STR #3750,
|
||||
@@ -16,7 +9,6 @@ CHANGES IN CUPS V1.4.7
|
||||
STR #3755, STR #3769, STR #3783)
|
||||
- Configure script fixes (STR #3659, STR #3691)
|
||||
- Compilation fixes (STR #3718, STR #3771, STR #3774)
|
||||
- The imageto* filters could crash with bad GIF files (STR #3867)
|
||||
- The scheduler might leave old job data files in the spool directory
|
||||
(STR #3795)
|
||||
- CUPS did not work with locales using the ASCII character set
|
||||
|
||||
@@ -1,228 +0,0 @@
|
||||
CHANGES-1.5.txt
|
||||
---------------
|
||||
|
||||
CHANGES IN CUPS V1.5.1
|
||||
|
||||
- Documentation updates (STR #3885, STR #3886, STR #3946, STR #3969)
|
||||
- Localization updates (STR #3840, STR #3989, STR #3997)
|
||||
- Build fixes (STR #3956, STR #3999)
|
||||
- The SNMP backend did not validate the device URIs reported by printers
|
||||
(STR #4004)
|
||||
- cupsBackendReport() did not handle newlines in 1284 Device IDs
|
||||
(STR #4005)
|
||||
- USB backend fixes for libusb (STR #3965, STR #3978)
|
||||
- The DBUS notifier did not validate string parameters (STR #3984)
|
||||
- Group quota ACLs did not work with Kerberos (STR #3972)
|
||||
- The IPP backend did not retry when a printer responded with
|
||||
client-error-not-possible (STR #3963)
|
||||
- PostScript PPDs with filters used the wrong command filter (STR #3973)
|
||||
- The scheduler incorrectly used free() on a POSIX ACL value, which
|
||||
could cause a crash (STR #3970)
|
||||
- PPD files using the MacStandard encoding did not work.
|
||||
- The web interface did not work on some platforms (STR #3902)
|
||||
- The lpstat command would crash when then "-u" option was used by a
|
||||
non-administrator (STR #3953)
|
||||
- Japanese supply level reporting did not always work.
|
||||
- The DBUS notifier could crash (STR #3947)
|
||||
- Relaxed some of the page size checks in cupstestppd.
|
||||
- The ipptool program now reports attributes that are repeated within
|
||||
the same attribute group.
|
||||
- Updated the PWG raster support to match the current draft
|
||||
specification.
|
||||
- Fixed some IPP conformance issues in the scheduler.
|
||||
- Added ipptool support for repeating requests.
|
||||
- Added IPP/2.2 conformance tests and greatly improved the IPP/1.1,
|
||||
IPP/2.0, and IPP/2.1 conformance testing.
|
||||
- IPP messages containing mixed integer/rangeOfInteger values did not
|
||||
work (STR #3942)
|
||||
- The ipptool program now provides additional diagnostics for badly-
|
||||
formatted responses (STR #3857)
|
||||
- When possible, the IPP backend now stops sending job data early on a
|
||||
cancel.
|
||||
- cupsSendRequest and cupsWriteRequestData did not properly read all
|
||||
HTTP headers, preventing authentication and encryption upgrades from
|
||||
working in all cases.
|
||||
- The client.conf Server directive is no longer supported on Mac OS X
|
||||
10.7 and later.
|
||||
- The IPP backend sent the wrong margins in media-col.
|
||||
- The scheduler did not save or restore large Kerberos credentials for
|
||||
jobs.
|
||||
- The dnssd backend did not properly browse for secure IPP printers.
|
||||
- httpAssembleURI* did not properly escape all special characters in the
|
||||
username/password field.
|
||||
- The scheduler now logs config file errors to stderr (STR #3936)
|
||||
- The configure script incorrectly used bundle-based localizations on
|
||||
Linux (STR #3938)
|
||||
- The cups-driverd helper program did not cache .drv files properly,
|
||||
sometimes leading to a crash (STR #3921)
|
||||
- CUPS did not build on stock Mac OS X installations.
|
||||
- Encryption was broken with OpenSSL.
|
||||
- ipptool's XML output used date/time values with timezone offsets,
|
||||
which are not supported by Mac OS X's NSDate class.
|
||||
- Several programs did not support the cupsFilter2 keyword in PPD files.
|
||||
- The IPP backend incorrectly reported spool-area-full states.
|
||||
- cupsMarkOptions() did not protect against a bad PPD that was missing
|
||||
one or more standard Duplex options.
|
||||
- The PostScript filter did not mirror N-up output properly.
|
||||
- The ipptool program did not validate UTF-8 strings in XML output.
|
||||
- Fixed supply level reporting for some printers.
|
||||
- The scheduler no longer automatically logs debug messages for jobs
|
||||
that were held or canceled.
|
||||
- The cupsSendRequest function did not flush remaining response data
|
||||
from a previous request, leading to apparent chunking issues.
|
||||
- The scheduler did not report the correct version in the Server: header
|
||||
(STR #3903)
|
||||
- The scheduler did not support 1284 device IDs reported by driver
|
||||
interface programs longer than 127 characters (STR #3871)
|
||||
- The image filters did not support loading images larger than the
|
||||
RIPCache setting (STR #3901)
|
||||
- "PAGE: total NNN" messages did not get logged properly (STR #3887)
|
||||
- Updated the PWG Raster support to conform to the current draft of the
|
||||
PWG Raster Format specification.
|
||||
- The PWG Raster filter did not always write the correct number of
|
||||
padding lines on the bottom of the page (STR #3904)
|
||||
- When reporting a denial-of-service attack from the domain socket, the
|
||||
address reported does not always contain the correct path (STR #3888)
|
||||
- Badly formed GIF files could cause the image filters to crash
|
||||
(STR #3914)
|
||||
- Jobs canceled at the printer were retried by the IPP backend.
|
||||
- "cupsfilter -u" deleted the input file instead of the PPD file.
|
||||
- The scheduler did not compute the cost of PPD filters defined using
|
||||
the cupsFilter2 keyword properly.
|
||||
- The scheduler did not correctly support the maxsize() attribute for
|
||||
PPD filters.
|
||||
|
||||
|
||||
CHANGES IN CUPS V1.5.0
|
||||
|
||||
- Documentation updates.
|
||||
- Localization update (STR #3865)
|
||||
- Needed to limit TLS to v1.0 on some versions of Mac OS X.
|
||||
- The snmp backend did not work with some printers.
|
||||
|
||||
|
||||
CHANGES IN CUPS V1.5rc1
|
||||
|
||||
- Compile fixes (STR #3849, STR #3850)
|
||||
- The scheduler didn't check for empty values for several configuration
|
||||
directives (STR #3861)
|
||||
- ipptool didn't generate valid XML when a test was skipped.
|
||||
- Added additional error checking to the 1284 device ID code (STR #3858)
|
||||
- Fixed some compatibility issues migrating from the old usblp backend
|
||||
to the libusb backend (STR #3860)
|
||||
- Fixed the wake-from-sleep printing behavior on Mac OS X.
|
||||
- The scheduler incorrectly allowed jobs to be held from a terminating
|
||||
state.
|
||||
- The cups-driverd program could crash when a PPD was renamed.
|
||||
- The dnssd backend took too long to discover printers on large or busy
|
||||
networks with the new default timeout used by lpinfo and the web
|
||||
interface. This resulted in "lost" printers.
|
||||
|
||||
|
||||
CHANGES IN CUPS V1.5b2
|
||||
|
||||
- Documentation updates.
|
||||
- Localization updates (STR #3845)
|
||||
- Compiler warning cleanup.
|
||||
- Fixed PIE support for Linux (STR #3846)
|
||||
- Made httpSetTimeout API public and use it in the IPP backend to avoid
|
||||
timeout errors.
|
||||
- The scheduler incorrectly set the "authenticated" printer-type bit for
|
||||
remote queues using authentication.
|
||||
|
||||
|
||||
CHANGES IN CUPS V1.5b1
|
||||
|
||||
- The CUPS library now supports per-connection HTTP timeouts and
|
||||
callbacks.
|
||||
- The CUPS library now supports (limited) SSL/TLS X.509 certificate
|
||||
validation and revocation (STR #1616)
|
||||
- Updated the PostScript filter to support IncludeFeature in more
|
||||
circumstances (STR #3417)
|
||||
- The schedule did not correctly parse some IPv6 addresses and masks in
|
||||
the cupsd.conf file (STR #3533)
|
||||
- Fixed a case-insensitive string comparison issue for locales that do
|
||||
not treat "I" and "i" as equivalent (STR #3800)
|
||||
- The scheduler reported an incorrect job-printer-uri value when sharing
|
||||
was not enabled (STR #3639)
|
||||
- The scheduler now allows the ServerAlias directive to contain multiple
|
||||
hostnames separated by spaces or commas (STR #3813)
|
||||
- The scheduler now sets the process group for child processes and
|
||||
manages the group (STR #2829)
|
||||
- Fixed some minor issues discovered by a Coverity scan (STR #3838)
|
||||
- The scheduler now more carefully creates and removes configuration,
|
||||
cache, and state files (STR #3715)
|
||||
- The lpadmin command now allows default option values to be deleted
|
||||
(STR #2959)
|
||||
- The lpadmin command now allows the cupsIPPSupplies and
|
||||
cupsSNMPSupplies keywords to be set in a PPD file (STR #3825)
|
||||
- Moving a held job no longer releases it (STR #3839)
|
||||
- Restored support for GNU TLS and OpenSSL with threading enabled
|
||||
(STR #3605)
|
||||
- Fixed a confusing error message from cups-polld (STR #3806)
|
||||
- Increased the default RIPCache value to 128MB (STR #3535)
|
||||
- MIME errors are now routed to the error_log file (STR #2410)
|
||||
- Updated PDF filter to support new Ghostscript ps2write device
|
||||
(STR #3766)
|
||||
- Updated PDF filter to support new Poppler option to preserve page
|
||||
sizes in PDF files when the user has not selected a particular media
|
||||
size (STR #3689)
|
||||
- Added new PWG Raster filter for IPP Everywhere printer support.
|
||||
- Added job-uuid, printer-uuid, and subscription-uuid attributes.
|
||||
- Added support for the cupsSingleFile PPD keyword.
|
||||
- Dropped support for the printer-state-history attribute (STR #3654)
|
||||
- Added support for a new cupsIPPSupplies keyword in PPD files to allow
|
||||
drivers to disable IPP supply level reporting.
|
||||
- Added support for a new cupsFilter2 keyword in PPD files to allow for
|
||||
the propagation of the actual MIME media type produced by a filter.
|
||||
- The scheduler did not always get the correct Kerberos username when
|
||||
authenticating (STR #3670)
|
||||
- Added new cupsRasterOpenIO function and CUPS_RASTER_WRITE_PWG to the
|
||||
CUPS imaging library to support printing to IPP Everywhere raster
|
||||
printers.
|
||||
- The scheduler now provides default values for the pages-per-minute and
|
||||
pages-per-minute-color attributes for PPD files that lack a
|
||||
Throughput keyword.
|
||||
- Email notifications did not work on Mac OS X.
|
||||
- The cupstestppd program now shows an error for files missing a
|
||||
CloseGroup keyword (STR #3668)
|
||||
- Name resolution errors no longer cause queues to stop (STR #3719,
|
||||
STR #3753)
|
||||
- Added a new cups-exec helper program that applies security profiles
|
||||
to filters, port monitors, backends, CGI programs, and mini-daemons.
|
||||
- The web interface can now be disabled using the WebInterface directive
|
||||
in cupsd.conf (STR #2625)
|
||||
- The scheduler now provides privacy controls for jobs and subscriptions
|
||||
(STR #2969)
|
||||
- Added new cupsArrayNew3 API which offers memory management of array
|
||||
elements.
|
||||
- Added several new color spaces to the CUPS raster format (STR #3419)
|
||||
- The Validate-Job operation now uses the same policy as Print-Job by
|
||||
default.
|
||||
- CUPS now uses iconv to implement all of its character encoding
|
||||
support (STR #3097)
|
||||
- The scheduler now implements the Cancel-Jobs, Cancel-My-Jobs, and
|
||||
Close-Job operations along with the job-ids operation attribute from
|
||||
PWG 5100.11.
|
||||
- The main CUPS header (<cups/cups.h>) no longer includes the PPD header
|
||||
(<cups/ppd.h>).
|
||||
- The scheduler and CUPS API now support the print-quality job template
|
||||
attribute.
|
||||
- The scheduler no longer supports the old Mac OS X Server quota
|
||||
plugin.
|
||||
- The scheduler now allows writing to /Users/Shared from print filters
|
||||
on Mac OS X.
|
||||
- CUPS no longer supports the old ~/.cupsrc or ~/.lpoptions files from
|
||||
CUPS 1.1.x. The ~/.cups/client.conf and ~/.cups/lpoptions files that
|
||||
were introduced in CUPS 1.2 must now be used.
|
||||
- The ipptest tool is now a first-class user program and has several
|
||||
improvements along with new documentation (STR #3484)
|
||||
- The cupstestppd tool now warns about non-unique filenames and
|
||||
provides a way to ignore all filename warnings.
|
||||
- Dropped support for the recoverable: and recovered: message prefixes.
|
||||
- The scheduler now requires that filters and backends have group write
|
||||
permissions disabled.
|
||||
- The PPD compiler now checks for overlapping filenames when writing
|
||||
PPD files.
|
||||
- The HP-GL/2 filter is no longer included with CUPS (STR #3322)
|
||||
- The SCSI backend is no longer included with CUPS (STR #3500)
|
||||
@@ -1,107 +0,0 @@
|
||||
CHANGES-IPPTOOL.txt - 2012-01-10
|
||||
--------------------------------
|
||||
|
||||
This file provides a list of changes to the ipptool binary distribution posted
|
||||
on cups.org.
|
||||
|
||||
|
||||
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.
|
||||
+108
-38
@@ -1,40 +1,110 @@
|
||||
CHANGES.txt - 1.6b1 - 2012-01-30
|
||||
--------------------------------
|
||||
CHANGES.txt - 2011-05-26
|
||||
------------------------
|
||||
|
||||
CHANGES IN CUPS V1.6b1
|
||||
CHANGES IN CUPS V1.5b2
|
||||
|
||||
- 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)
|
||||
- Documentation updates.
|
||||
- Localization updates (STR #3845)
|
||||
- Compiler warning cleanup.
|
||||
- Fixed PIE support for Linux (STR #3846)
|
||||
- Made httpSetTimeout API public and use it in the IPP backend to avoid
|
||||
timeout errors.
|
||||
- The scheduler incorrectly set the "authenticated" printer-type bit for
|
||||
remote queues using authentication.
|
||||
|
||||
|
||||
CHANGES IN CUPS V1.5b1
|
||||
|
||||
- The CUPS library now supports per-connection HTTP timeouts and
|
||||
callbacks.
|
||||
- The CUPS library now supports (limited) SSL/TLS X.509 certificate
|
||||
validation and revocation (STR #1616)
|
||||
- Updated the PostScript filter to support IncludeFeature in more
|
||||
circumstances (STR #3417)
|
||||
- The schedule did not correctly parse some IPv6 addresses and masks in
|
||||
the cupsd.conf file (STR #3533)
|
||||
- Fixed a case-insensitive string comparison issue for locales that do
|
||||
not treat "I" and "i" as equivalent (STR #3800)
|
||||
- The scheduler reported an incorrect job-printer-uri value when sharing
|
||||
was not enabled (STR #3639)
|
||||
- The scheduler now allows the ServerAlias directive to contain multiple
|
||||
hostnames separated by spaces or commas (STR #3813)
|
||||
- The scheduler now sets the process group for child processes and
|
||||
manages the group (STR #2829)
|
||||
- Fixed some minor issues discovered by a Coverity scan (STR #3838)
|
||||
- The scheduler now more carefully creates and removes configuration,
|
||||
cache, and state files (STR #3715)
|
||||
- The lpadmin command now allows default option values to be deleted
|
||||
(STR #2959)
|
||||
- The lpadmin command now allows the cupsIPPSupplies and
|
||||
cupsSNMPSupplies keywords to be set in a PPD file (STR #3825)
|
||||
- Moving a held job no longer releases it (STR #3839)
|
||||
- Restored support for GNU TLS and OpenSSL with threading enabled
|
||||
(STR #3605)
|
||||
- Fixed a confusing error message from cups-polld (STR #3806)
|
||||
- Increased the default RIPCache value to 128MB (STR #3535)
|
||||
- MIME errors are now routed to the error_log file (STR #2410)
|
||||
- Updated PDF filter to support new Ghostscript ps2write device
|
||||
(STR #3766)
|
||||
- Updated PDF filter to support new Poppler option to preserve page
|
||||
sizes in PDF files when the user has not selected a particular media
|
||||
size (STR #3689)
|
||||
- Added new PWG Raster filter for IPP Everywhere printer support.
|
||||
- Added job-uuid, printer-uuid, and subscription-uuid attributes.
|
||||
- Added support for the cupsSingleFile PPD keyword.
|
||||
- Dropped support for the printer-state-history attribute (STR #3654)
|
||||
- Added support for a new cupsIPPSupplies keyword in PPD files to allow
|
||||
drivers to disable IPP supply level reporting.
|
||||
- Added support for a new cupsFilter2 keyword in PPD files to allow for
|
||||
the propagation of the actual MIME media type produced by a filter.
|
||||
- The scheduler did not always get the correct Kerberos username when
|
||||
authenticating (STR #3670)
|
||||
- Added new cupsRasterOpenIO function and CUPS_RASTER_WRITE_PWG to the
|
||||
CUPS imaging library to support printing to IPP Everywhere raster
|
||||
printers.
|
||||
- The scheduler now provides default values for the pages-per-minute and
|
||||
pages-per-minute-color attributes for PPD files that lack a
|
||||
Throughput keyword.
|
||||
- Email notifications did not work on Mac OS X.
|
||||
- The cupstestppd program now shows an error for files missing a
|
||||
CloseGroup keyword (STR #3668)
|
||||
- Name resolution errors no longer cause queues to stop (STR #3719,
|
||||
STR #3753)
|
||||
- Added a new cups-exec helper program that applies security profiles
|
||||
to filters, port monitors, backends, CGI programs, and mini-daemons.
|
||||
- The web interface can now be disabled using the WebInterface directive
|
||||
in cupsd.conf (STR #2625)
|
||||
- The scheduler now provides privacy controls for jobs and subscriptions
|
||||
(STR #2969)
|
||||
- Added new cupsArrayNew3 API which offers memory management of array
|
||||
elements.
|
||||
- Added several new color spaces to the CUPS raster format (STR #3419)
|
||||
- The Validate-Job operation now uses the same policy as Print-Job by
|
||||
default.
|
||||
- CUPS now uses iconv to implement all of its character encoding
|
||||
support (STR #3097)
|
||||
- The scheduler now implements the Cancel-Jobs, Cancel-My-Jobs, and
|
||||
Close-Job operations along with the job-ids operation attribute from
|
||||
PWG 5100.11.
|
||||
- The main CUPS header (<cups/cups.h>) no longer includes the PPD header
|
||||
(<cups/ppd.h>).
|
||||
- The scheduler and CUPS API now support the print-quality job template
|
||||
attribute.
|
||||
- The scheduler no longer supports the old Mac OS X Server quota
|
||||
plugin.
|
||||
- The scheduler now allows writing to /Users/Shared from print filters
|
||||
on Mac OS X.
|
||||
- CUPS no longer supports the old ~/.cupsrc or ~/.lpoptions files from
|
||||
CUPS 1.1.x. The ~/.cups/client.conf and ~/.cups/lpoptions files that
|
||||
were introduced in CUPS 1.2 must now be used.
|
||||
- The ipptest tool is now a first-class user program and has several
|
||||
improvements along with new documentation (STR #3484)
|
||||
- The cupstestppd tool now warns about non-unique filenames and
|
||||
provides a way to ignore all filename warnings.
|
||||
- Dropped support for the recoverable: and recovered: message prefixes.
|
||||
- The scheduler now requires that filters and backends have group write
|
||||
permissions disabled.
|
||||
- The PPD compiler now checks for overlapping filenames when writing
|
||||
PPD files.
|
||||
- The HP-GL/2 filter is no longer included with CUPS (STR #3322)
|
||||
- The SCSI backend is no longer included with CUPS (STR #3500)
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
INSTALL - CUPS v1.5.0 - 2011-07-25
|
||||
INSTALL - CUPS v1.5b2 - 2011-05-26
|
||||
----------------------------------
|
||||
|
||||
This file describes how to compile and install CUPS from source code. For more
|
||||
|
||||
+9
-68
@@ -1,8 +1,6 @@
|
||||
IPPTOOL.txt - 2011-12-02
|
||||
IPPTOOL.txt - 2011-05-20
|
||||
------------------------
|
||||
|
||||
See the file CHANGES-IPPTOOL.txt for a list of changes to this software.
|
||||
|
||||
|
||||
INTRODUCTION
|
||||
|
||||
@@ -37,7 +35,7 @@ BASIC USAGE
|
||||
|
||||
ipptool -c ipp://localhost/printers/myprinter get-jobs.test
|
||||
|
||||
which will produce something like this:
|
||||
which would produce something like this:
|
||||
|
||||
job-id,job-state,job-name,job-originating-user-name
|
||||
72,pending,testfile.pdf,msweet
|
||||
@@ -48,43 +46,12 @@ BASIC USAGE
|
||||
|
||||
CONFORMANCE TESTS
|
||||
|
||||
We provide basic IPP conformance tests for IPP/1.1, IPP/2.0, IPP/2.1, and
|
||||
IPP/2.2. For a given printer URI, the following commands perform tests at
|
||||
each level:
|
||||
We provide basic IPP conformance tests for IPP/1.1, IPP/2.0, and IPP/2.1.
|
||||
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
|
||||
ipptool -tf filename [options] -I -V 2.1 printer-uri ipp-2.1.test
|
||||
ipptool -tf filename [options] -I -V 2.2 printer-uri ipp-2.2.test
|
||||
|
||||
The filename must use a format supported by the printer; ipptool will guess
|
||||
the MIME media type using the extension, otherwise application/octet stream
|
||||
will be used. The following standard test files are included:
|
||||
|
||||
color.jpg
|
||||
document-a4.pdf
|
||||
document-a4.ps
|
||||
document-letter.pdf
|
||||
document-letter.ps
|
||||
gray.jpg
|
||||
onepage-a4.pdf
|
||||
onepage-a4.ps
|
||||
onepage-letter.pdf
|
||||
onepage-letter.ps
|
||||
|
||||
Print-by-reference (URL) printing can be tested by defining the document-uri
|
||||
variable to a URL, for example:
|
||||
|
||||
ipptool -tf filename -d document-uri=url -I printer-uri ipp-1.1.test
|
||||
|
||||
The standard test files are available on cups.org under the "test"
|
||||
directory, for example:
|
||||
|
||||
http://www.cups.org/test/document-a4.pdf
|
||||
|
||||
The "document" test files contain 4 pages each. Doing the IPP conformance
|
||||
tests will will produce up to 90 pages on various media, depending on the
|
||||
printer.
|
||||
ipptool -t printer-uri ipp-1.1.test
|
||||
ipptool -t -V 2.0 printer-uri ipp-2.0.test
|
||||
ipptool -t -V 2.1 printer-uri ipp-2.1.test
|
||||
|
||||
|
||||
READING THE DOCUMENTATION
|
||||
@@ -103,34 +70,6 @@ GETTING SUPPORT AND OTHER RESOURCES
|
||||
See the CUPS web site at "http://www.cups.org/" for other resources.
|
||||
|
||||
|
||||
REPORTING BUGS
|
||||
|
||||
If you believe you have discovered a bug in ipptool, please fill out the
|
||||
bug form at:
|
||||
|
||||
http://www.cups.org/str.php
|
||||
|
||||
Be sure to identify the version of CUPS and ipptool (if you downloaded the
|
||||
standalone version) you are using, the printer (if any) and firmware
|
||||
version, and include any files that apply.
|
||||
|
||||
If you downloaded the standalone version of ipptool, please also re-run the
|
||||
test with debug logging enabled. Run the following commands on Windows to
|
||||
enable debug logging:
|
||||
|
||||
set CUPS_DEBUG_LOG=ipptool.log
|
||||
set CUPS_DEBUG_LEVEL=6
|
||||
|
||||
For Linux and Mac OS X use:
|
||||
|
||||
CUPS_DEBUG_LOG=ipptool.log; export CUPS_DEBUG_LOG
|
||||
CUPS_DEBUG_LEVEL=6; export CUPS_DEBUG_LEVEL
|
||||
|
||||
Then when you run the ipptool command a new "ipptool.log" file will be
|
||||
created with detailed information - attach this file to the bug you file
|
||||
as well.
|
||||
|
||||
|
||||
LEGAL STUFF
|
||||
|
||||
CUPS is Copyright 2007-2011 by Apple Inc. CUPS and the CUPS logo are
|
||||
@@ -138,6 +77,8 @@ LEGAL STUFF
|
||||
|
||||
The MD5 Digest code is Copyright 1999 Aladdin Enterprises.
|
||||
|
||||
This software is based in part on the work of the Independent JPEG Group.
|
||||
|
||||
CUPS is provided under the terms of version 2 of the GNU General Public
|
||||
License and GNU Library General Public License. This program is distributed
|
||||
in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
|
||||
|
||||
+52
-4
@@ -3,7 +3,7 @@
|
||||
#
|
||||
# Common makefile definitions for CUPS.
|
||||
#
|
||||
# Copyright 2007-2012 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
|
||||
@@ -30,6 +30,7 @@ LD = @LD@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
LN = @LN@ -sf
|
||||
MV = @MV@
|
||||
PHPCONFIG = @PHPCONFIG@
|
||||
RANLIB = @RANLIB@
|
||||
RM = @RM@ -f
|
||||
RMDIR = @RMDIR@
|
||||
@@ -78,14 +79,19 @@ UNINSTALL_LANGUAGES = @UNINSTALL_LANGUAGES@
|
||||
|
||||
LIBCUPS = @LIBCUPS@
|
||||
LIBCUPSCGI = @LIBCUPSCGI@
|
||||
LIBCUPSDRIVER = @LIBCUPSDRIVER@
|
||||
LIBCUPSIMAGE = @LIBCUPSIMAGE@
|
||||
LIBCUPSMIME = @LIBCUPSMIME@
|
||||
LIBCUPSPPDC = @LIBCUPSPPDC@
|
||||
LIBCUPSSTATIC = @LIBCUPSSTATIC@
|
||||
LIBGSSAPI = @LIBGSSAPI@
|
||||
LIBJPEG = @LIBJPEG@
|
||||
LIBLDAP = @LIBLDAP@
|
||||
LIBMALLOC = @LIBMALLOC@
|
||||
LIBMXML = @LIBMXML@
|
||||
LIBPAPER = @LIBPAPER@
|
||||
LIBPNG = @LIBPNG@
|
||||
LIBSLP = @LIBSLP@
|
||||
LIBGSSAPI = @LIBGSSAPI@
|
||||
LIBTIFF = @LIBTIFF@
|
||||
LIBUSB = @LIBUSB@
|
||||
LIBWRAP = @LIBWRAP@
|
||||
LIBZ = @LIBZ@
|
||||
@@ -112,6 +118,10 @@ INSTALLXPC = @INSTALLXPC@
|
||||
# Program options...
|
||||
#
|
||||
# ARCHFLAGS Defines the default architecture build options.
|
||||
# ARCH32FLAGS Defines the 32-bit architecture build options, used
|
||||
# when compiling separate 32/64-bit libraries.
|
||||
# ARCH64FLAGS Defines the 64-bit architecture build options, used
|
||||
# when compiling separate 32/64-bit libraries.
|
||||
# OPTIM Defines the common compiler optimization/debugging options
|
||||
# for all architectures.
|
||||
# OPTIONS Defines other compile-time options (currently only -DDEBUG
|
||||
@@ -125,6 +135,7 @@ ALL_CXXFLAGS = -I.. -D_CUPS_SOURCE $(CXXFLAGS) $(SSLFLAGS) \
|
||||
ARCHFLAGS = @ARCHFLAGS@
|
||||
ARFLAGS = @ARFLAGS@
|
||||
BACKLIBS = @BACKLIBS@
|
||||
BANNERTOPS = @BANNERTOPS@
|
||||
BUILDDIRS = @BUILDDIRS@
|
||||
CFLAGS = @CPPFLAGS@ @CFLAGS@
|
||||
COMMONLIBS = @LIBS@
|
||||
@@ -136,22 +147,51 @@ DNSSD_BACKEND = @DNSSD_BACKEND@
|
||||
DSOFLAGS = -L../cups @DSOFLAGS@
|
||||
DSOLIBS = @DSOLIBS@ $(COMMONLIBS)
|
||||
DNSSDLIBS = @DNSSDLIBS@
|
||||
FONTS = @FONTS@
|
||||
IMGLIBS = @IMGLIBS@
|
||||
IMGFILTERS = @IMGFILTERS@
|
||||
LAUNCHDLIBS = @LAUNCHDLIBS@
|
||||
LDFLAGS = -L../cgi-bin -L../cups -L../filter -L../ppdc \
|
||||
-L../scheduler @LDARCHFLAGS@ \
|
||||
@LDFLAGS@ @RELROFLAGS@ @PIEFLAGS@ $(OPTIM)
|
||||
LEGACY_BACKENDS = @LEGACY_BACKENDS@
|
||||
LINKCUPS = @LINKCUPS@ $(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) $(LIBZ)
|
||||
LINKCUPSIMAGE = @LINKCUPSIMAGE@
|
||||
LIBS = $(LINKCUPS) $(COMMONLIBS)
|
||||
OPTIM = @OPTIM@
|
||||
OPTIONS =
|
||||
PAMLIBS = @PAMLIBS@
|
||||
PAP = @PAP@
|
||||
PDFTOPS = @PDFTOPS@
|
||||
PHPDIR = @PHPDIR@
|
||||
PHPOPTIONS = @PHPOPTIONS@ -I../.. `$(PHPCONFIG) --includes`
|
||||
SERVERLIBS = @SERVERLIBS@
|
||||
SSLFLAGS = @SSLFLAGS@
|
||||
SSLLIBS = @SSLLIBS@
|
||||
TEXTTOPS = @TEXTTOPS@
|
||||
UNITTESTS = @UNITTESTS@
|
||||
|
||||
|
||||
#
|
||||
# Separate 32/64-bit library support...
|
||||
#
|
||||
|
||||
ARCH32FLAGS = @ARCH32FLAGS@
|
||||
DSO32FLAGS = @DSO32FLAGS@
|
||||
INSTALL32 = @INSTALL32@
|
||||
LIB32CUPS = @LIB32CUPS@
|
||||
LIB32CUPSIMAGE = @LIB32CUPSIMAGE@
|
||||
LIB32DIR = $(BUILDROOT)@LIB32DIR@
|
||||
UNINSTALL32 = @UNINSTALL32@
|
||||
|
||||
ARCH64FLAGS = @ARCH64FLAGS@
|
||||
DSO64FLAGS = @DSO64FLAGS@
|
||||
INSTALL64 = @INSTALL64@
|
||||
LIB64CUPS = @LIB64CUPS@
|
||||
LIB64CUPSIMAGE = @LIB64CUPSIMAGE@
|
||||
LIB64DIR = $(BUILDROOT)@LIB64DIR@
|
||||
UNINSTALL64 = @UNINSTALL64@
|
||||
|
||||
#
|
||||
# Directories...
|
||||
#
|
||||
@@ -234,12 +274,20 @@ DBUSDIR = @DBUSDIR@
|
||||
#
|
||||
|
||||
.SILENT:
|
||||
.SUFFIXES: .1 .1.gz .1m .1m.gz .3 .3.gz .5 .5.gz .7 .7.gz .8 .8.gz .a .c .cxx .h .man .o .gz
|
||||
.SUFFIXES: .1 .1.gz .1m .1m.gz .3 .3.gz .5 .5.gz .7 .7.gz .8 .8.gz .a .c .cxx .h .man .o .32.o .64.o .gz
|
||||
|
||||
.c.o:
|
||||
echo Compiling $<...
|
||||
$(CC) $(ARCHFLAGS) $(OPTIM) $(ALL_CFLAGS) -c -o $@ $<
|
||||
|
||||
.c.32.o:
|
||||
echo Compiling 32-bit $<...
|
||||
$(CC) $(ARCH32FLAGS) $(OPTIM) $(ALL_CFLAGS) -c -o $@ $<
|
||||
|
||||
.c.64.o:
|
||||
echo Compiling 64-bit $<...
|
||||
$(CC) $(ARCH64FLAGS) $(OPTIM) $(ALL_CFLAGS) -c -o $@ $<
|
||||
|
||||
.cxx.o:
|
||||
echo Compiling $<...
|
||||
$(CXX) $(ARCHFLAGS) $(OPTIM) $(ALL_CXXFLAGS) -c -o $@ $<
|
||||
|
||||
+5
-9
@@ -20,7 +20,7 @@ include Makedefs
|
||||
# Directories to make...
|
||||
#
|
||||
|
||||
DIRS = cups test $(BUILDDIRS)
|
||||
DIRS = cups test $(BUILDDIRS) $(PHPDIR) $(FONTS)
|
||||
|
||||
|
||||
#
|
||||
@@ -234,11 +234,7 @@ test: all unittests
|
||||
|
||||
check: all unittests
|
||||
echo Running CUPS test suite with defaults...
|
||||
cd test; ./run-stp-tests.sh 1 0 n n
|
||||
|
||||
debugcheck: all unittests
|
||||
echo Running CUPS test suite with debug printfs...
|
||||
cd test; ./run-stp-tests.sh 1 0 n y
|
||||
cd test; ./run-stp-tests.sh 1 0 n
|
||||
|
||||
|
||||
#
|
||||
@@ -246,13 +242,13 @@ debugcheck: all unittests
|
||||
#
|
||||
|
||||
apihelp:
|
||||
for dir in cgi-bin cups filter ppdc scheduler; do\
|
||||
for dir in cgi-bin cups filter driver ppdc scheduler; do\
|
||||
echo Generating API help in $$dir... ;\
|
||||
(cd $$dir; $(MAKE) $(MFLAGS) apihelp) || exit 1;\
|
||||
done
|
||||
|
||||
framedhelp:
|
||||
for dir in cgi-bin cups filter ppdc scheduler; do\
|
||||
for dir in cgi-bin cups filter driver ppdc scheduler; do\
|
||||
echo Generating framed API help in $$dir... ;\
|
||||
(cd $$dir; $(MAKE) $(MFLAGS) framedhelp) || exit 1;\
|
||||
done
|
||||
@@ -289,7 +285,7 @@ docset: apihelp
|
||||
#
|
||||
|
||||
sloc:
|
||||
for dir in cups scheduler; do \
|
||||
for dir in cups cupslite scheduler; do \
|
||||
(cd $$dir; $(MAKE) $(MFLAGS) sloc) || exit 1;\
|
||||
done
|
||||
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
README - CUPS v1.5.0 - 2011-07-25
|
||||
----------------------------------
|
||||
README - CUPS v1.5b2 - 2011-05-26
|
||||
---------------------------------
|
||||
|
||||
Looking for compile instructions? Read the file "INSTALL.txt"
|
||||
instead...
|
||||
|
||||
+101
-72
@@ -1,72 +1,101 @@
|
||||
ipp.o: ipp.c backend-private.h ../cups/cups-private.h ../cups/cups.h \
|
||||
../cups/file.h ../cups/versioning.h ../cups/ipp.h ../cups/http.h \
|
||||
../cups/array.h ../cups/language.h ../cups/string-private.h \
|
||||
../config.h ../cups/debug-private.h ../cups/ppd-private.h \
|
||||
../cups/ppd.h ../cups/pwg-private.h ../cups/http-private.h \
|
||||
../cups/md5-private.h ../cups/ipp-private.h ../cups/language-private.h \
|
||||
../cups/transcode.h ../cups/thread-private.h ../cups/snmp-private.h \
|
||||
../cups/backend.h ../cups/sidechannel.h ../cups/array-private.h
|
||||
lpd.o: lpd.c ../cups/http-private.h ../config.h ../cups/http.h \
|
||||
../cups/versioning.h ../cups/array.h ../cups/md5-private.h \
|
||||
../cups/ipp-private.h ../cups/ipp.h backend-private.h \
|
||||
../cups/cups-private.h ../cups/cups.h ../cups/file.h \
|
||||
../cups/language.h ../cups/string-private.h ../cups/debug-private.h \
|
||||
../cups/ppd-private.h ../cups/ppd.h ../cups/pwg-private.h \
|
||||
../cups/language-private.h ../cups/transcode.h \
|
||||
../cups/thread-private.h ../cups/snmp-private.h ../cups/backend.h \
|
||||
../cups/sidechannel.h
|
||||
dnssd.o: dnssd.c backend-private.h ../cups/cups-private.h ../cups/cups.h \
|
||||
../cups/file.h ../cups/versioning.h ../cups/ipp.h ../cups/http.h \
|
||||
../cups/array.h ../cups/language.h ../cups/string-private.h \
|
||||
../config.h ../cups/debug-private.h ../cups/ppd-private.h \
|
||||
../cups/ppd.h ../cups/pwg-private.h ../cups/http-private.h \
|
||||
../cups/md5-private.h ../cups/ipp-private.h ../cups/language-private.h \
|
||||
../cups/transcode.h ../cups/thread-private.h ../cups/snmp-private.h \
|
||||
../cups/backend.h ../cups/sidechannel.h
|
||||
snmp.o: snmp.c backend-private.h ../cups/cups-private.h ../cups/cups.h \
|
||||
../cups/file.h ../cups/versioning.h ../cups/ipp.h ../cups/http.h \
|
||||
../cups/array.h ../cups/language.h ../cups/string-private.h \
|
||||
../config.h ../cups/debug-private.h ../cups/ppd-private.h \
|
||||
../cups/ppd.h ../cups/pwg-private.h ../cups/http-private.h \
|
||||
../cups/md5-private.h ../cups/ipp-private.h ../cups/language-private.h \
|
||||
../cups/transcode.h ../cups/thread-private.h ../cups/snmp-private.h \
|
||||
../cups/backend.h ../cups/sidechannel.h
|
||||
socket.o: socket.c ../cups/http-private.h ../config.h ../cups/http.h \
|
||||
../cups/versioning.h ../cups/array.h ../cups/md5-private.h \
|
||||
../cups/ipp-private.h ../cups/ipp.h backend-private.h \
|
||||
../cups/cups-private.h ../cups/cups.h ../cups/file.h \
|
||||
../cups/language.h ../cups/string-private.h ../cups/debug-private.h \
|
||||
../cups/ppd-private.h ../cups/ppd.h ../cups/pwg-private.h \
|
||||
../cups/language-private.h ../cups/transcode.h \
|
||||
../cups/thread-private.h ../cups/snmp-private.h ../cups/backend.h \
|
||||
../cups/sidechannel.h
|
||||
test1284.o: test1284.c ../cups/string-private.h ../config.h ieee1284.c \
|
||||
backend-private.h ../cups/cups-private.h ../cups/cups.h ../cups/file.h \
|
||||
../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
|
||||
../cups/language.h ../cups/debug-private.h ../cups/ppd-private.h \
|
||||
../cups/ppd.h ../cups/pwg-private.h ../cups/http-private.h \
|
||||
../cups/md5-private.h ../cups/ipp-private.h ../cups/language-private.h \
|
||||
../cups/transcode.h ../cups/thread-private.h ../cups/snmp-private.h \
|
||||
../cups/backend.h ../cups/sidechannel.h
|
||||
testbackend.o: testbackend.c ../cups/string-private.h ../config.h \
|
||||
../cups/cups.h ../cups/file.h ../cups/versioning.h ../cups/ipp.h \
|
||||
../cups/http.h ../cups/array.h ../cups/language.h \
|
||||
../cups/sidechannel.h
|
||||
testsupplies.o: testsupplies.c backend-private.h ../cups/cups-private.h \
|
||||
../cups/cups.h ../cups/file.h ../cups/versioning.h ../cups/ipp.h \
|
||||
../cups/http.h ../cups/array.h ../cups/language.h \
|
||||
../cups/string-private.h ../config.h ../cups/debug-private.h \
|
||||
../cups/ppd-private.h ../cups/ppd.h ../cups/pwg-private.h \
|
||||
../cups/http-private.h ../cups/md5-private.h ../cups/ipp-private.h \
|
||||
../cups/language-private.h ../cups/transcode.h \
|
||||
../cups/thread-private.h ../cups/snmp-private.h ../cups/backend.h \
|
||||
../cups/sidechannel.h
|
||||
usb.o: usb.c backend-private.h ../cups/cups-private.h ../cups/cups.h \
|
||||
../cups/file.h ../cups/versioning.h ../cups/ipp.h ../cups/http.h \
|
||||
../cups/array.h ../cups/language.h ../cups/string-private.h \
|
||||
../config.h ../cups/debug-private.h ../cups/ppd-private.h \
|
||||
../cups/ppd.h ../cups/pwg-private.h ../cups/http-private.h \
|
||||
../cups/md5-private.h ../cups/ipp-private.h ../cups/language-private.h \
|
||||
../cups/transcode.h ../cups/thread-private.h ../cups/snmp-private.h \
|
||||
../cups/backend.h ../cups/sidechannel.h usb-darwin.c \
|
||||
../cups/file-private.h
|
||||
# DO NOT DELETE THIS LINE -- make depend depends on it.
|
||||
|
||||
ipp.o: backend-private.h ../cups/cups-private.h ../cups/cups.h ../cups/file.h
|
||||
ipp.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
|
||||
ipp.o: ../cups/language.h ../cups/string-private.h ../config.h
|
||||
ipp.o: ../cups/debug-private.h ../cups/ppd-private.h ../cups/ppd.h
|
||||
ipp.o: ../cups/cups.h ../cups/pwg-private.h ../cups/http-private.h
|
||||
ipp.o: ../cups/http.h ../cups/md5-private.h ../cups/ipp-private.h
|
||||
ipp.o: ../cups/ipp.h ../cups/language-private.h ../cups/transcode.h
|
||||
ipp.o: ../cups/thread-private.h ../cups/snmp-private.h ../cups/backend.h
|
||||
ipp.o: ../cups/sidechannel.h ../cups/array-private.h
|
||||
lpd.o: ../cups/http-private.h ../config.h ../cups/http.h
|
||||
lpd.o: ../cups/md5-private.h ../cups/ipp-private.h ../cups/ipp.h
|
||||
lpd.o: backend-private.h ../cups/cups-private.h ../cups/cups.h ../cups/file.h
|
||||
lpd.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
|
||||
lpd.o: ../cups/language.h ../cups/string-private.h ../cups/debug-private.h
|
||||
lpd.o: ../cups/ppd-private.h ../cups/ppd.h ../cups/cups.h
|
||||
lpd.o: ../cups/pwg-private.h ../cups/http-private.h
|
||||
lpd.o: ../cups/language-private.h ../cups/transcode.h
|
||||
lpd.o: ../cups/thread-private.h ../cups/snmp-private.h ../cups/backend.h
|
||||
lpd.o: ../cups/sidechannel.h
|
||||
dnssd.o: backend-private.h ../cups/cups-private.h ../cups/cups.h
|
||||
dnssd.o: ../cups/file.h ../cups/versioning.h ../cups/ipp.h ../cups/http.h
|
||||
dnssd.o: ../cups/array.h ../cups/language.h ../cups/string-private.h
|
||||
dnssd.o: ../config.h ../cups/debug-private.h ../cups/ppd-private.h
|
||||
dnssd.o: ../cups/ppd.h ../cups/cups.h ../cups/pwg-private.h
|
||||
dnssd.o: ../cups/http-private.h ../cups/http.h ../cups/md5-private.h
|
||||
dnssd.o: ../cups/ipp-private.h ../cups/ipp.h ../cups/language-private.h
|
||||
dnssd.o: ../cups/transcode.h ../cups/thread-private.h ../cups/snmp-private.h
|
||||
dnssd.o: ../cups/backend.h ../cups/sidechannel.h ../cups/array.h
|
||||
parallel.o: backend-private.h ../cups/cups-private.h ../cups/cups.h
|
||||
parallel.o: ../cups/file.h ../cups/versioning.h ../cups/ipp.h ../cups/http.h
|
||||
parallel.o: ../cups/array.h ../cups/language.h ../cups/string-private.h
|
||||
parallel.o: ../config.h ../cups/debug-private.h ../cups/ppd-private.h
|
||||
parallel.o: ../cups/ppd.h ../cups/cups.h ../cups/pwg-private.h
|
||||
parallel.o: ../cups/http-private.h ../cups/http.h ../cups/md5-private.h
|
||||
parallel.o: ../cups/ipp-private.h ../cups/ipp.h ../cups/language-private.h
|
||||
parallel.o: ../cups/transcode.h ../cups/thread-private.h
|
||||
parallel.o: ../cups/snmp-private.h ../cups/backend.h ../cups/sidechannel.h
|
||||
serial.o: backend-private.h ../cups/cups-private.h ../cups/cups.h
|
||||
serial.o: ../cups/file.h ../cups/versioning.h ../cups/ipp.h ../cups/http.h
|
||||
serial.o: ../cups/array.h ../cups/language.h ../cups/string-private.h
|
||||
serial.o: ../config.h ../cups/debug-private.h ../cups/ppd-private.h
|
||||
serial.o: ../cups/ppd.h ../cups/cups.h ../cups/pwg-private.h
|
||||
serial.o: ../cups/http-private.h ../cups/http.h ../cups/md5-private.h
|
||||
serial.o: ../cups/ipp-private.h ../cups/ipp.h ../cups/language-private.h
|
||||
serial.o: ../cups/transcode.h ../cups/thread-private.h ../cups/snmp-private.h
|
||||
serial.o: ../cups/backend.h ../cups/sidechannel.h
|
||||
snmp.o: backend-private.h ../cups/cups-private.h ../cups/cups.h
|
||||
snmp.o: ../cups/file.h ../cups/versioning.h ../cups/ipp.h ../cups/http.h
|
||||
snmp.o: ../cups/array.h ../cups/language.h ../cups/string-private.h
|
||||
snmp.o: ../config.h ../cups/debug-private.h ../cups/ppd-private.h
|
||||
snmp.o: ../cups/ppd.h ../cups/cups.h ../cups/pwg-private.h
|
||||
snmp.o: ../cups/http-private.h ../cups/http.h ../cups/md5-private.h
|
||||
snmp.o: ../cups/ipp-private.h ../cups/ipp.h ../cups/language-private.h
|
||||
snmp.o: ../cups/transcode.h ../cups/thread-private.h ../cups/snmp-private.h
|
||||
snmp.o: ../cups/backend.h ../cups/sidechannel.h ../cups/array.h
|
||||
snmp.o: ../cups/file.h ../cups/http-private.h
|
||||
socket.o: ../cups/http-private.h ../config.h ../cups/http.h
|
||||
socket.o: ../cups/md5-private.h ../cups/ipp-private.h ../cups/ipp.h
|
||||
socket.o: backend-private.h ../cups/cups-private.h ../cups/cups.h
|
||||
socket.o: ../cups/file.h ../cups/versioning.h ../cups/ipp.h ../cups/http.h
|
||||
socket.o: ../cups/array.h ../cups/language.h ../cups/string-private.h
|
||||
socket.o: ../cups/debug-private.h ../cups/ppd-private.h ../cups/ppd.h
|
||||
socket.o: ../cups/cups.h ../cups/pwg-private.h ../cups/http-private.h
|
||||
socket.o: ../cups/language-private.h ../cups/transcode.h
|
||||
socket.o: ../cups/thread-private.h ../cups/snmp-private.h ../cups/backend.h
|
||||
socket.o: ../cups/sidechannel.h
|
||||
test1284.o: ../cups/string-private.h ../config.h ieee1284.c backend-private.h
|
||||
test1284.o: ../cups/cups-private.h ../cups/cups.h ../cups/file.h
|
||||
test1284.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
|
||||
test1284.o: ../cups/language.h ../cups/string-private.h
|
||||
test1284.o: ../cups/debug-private.h ../cups/ppd-private.h ../cups/ppd.h
|
||||
test1284.o: ../cups/cups.h ../cups/pwg-private.h ../cups/http-private.h
|
||||
test1284.o: ../cups/http.h ../cups/md5-private.h ../cups/ipp-private.h
|
||||
test1284.o: ../cups/ipp.h ../cups/language-private.h ../cups/transcode.h
|
||||
test1284.o: ../cups/thread-private.h ../cups/snmp-private.h ../cups/backend.h
|
||||
test1284.o: ../cups/sidechannel.h
|
||||
testbackend.o: ../cups/string-private.h ../config.h ../cups/cups.h
|
||||
testbackend.o: ../cups/file.h ../cups/versioning.h ../cups/ipp.h
|
||||
testbackend.o: ../cups/http.h ../cups/array.h ../cups/language.h
|
||||
testbackend.o: ../cups/sidechannel.h
|
||||
testsupplies.o: backend-private.h ../cups/cups-private.h ../cups/cups.h
|
||||
testsupplies.o: ../cups/file.h ../cups/versioning.h ../cups/ipp.h
|
||||
testsupplies.o: ../cups/http.h ../cups/array.h ../cups/language.h
|
||||
testsupplies.o: ../cups/string-private.h ../config.h ../cups/debug-private.h
|
||||
testsupplies.o: ../cups/ppd-private.h ../cups/ppd.h ../cups/cups.h
|
||||
testsupplies.o: ../cups/pwg-private.h ../cups/http-private.h ../cups/http.h
|
||||
testsupplies.o: ../cups/md5-private.h ../cups/ipp-private.h ../cups/ipp.h
|
||||
testsupplies.o: ../cups/language-private.h ../cups/transcode.h
|
||||
testsupplies.o: ../cups/thread-private.h ../cups/snmp-private.h
|
||||
testsupplies.o: ../cups/backend.h ../cups/sidechannel.h
|
||||
usb.o: backend-private.h ../cups/cups-private.h ../cups/cups.h ../cups/file.h
|
||||
usb.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
|
||||
usb.o: ../cups/language.h ../cups/string-private.h ../config.h
|
||||
usb.o: ../cups/debug-private.h ../cups/ppd-private.h ../cups/ppd.h
|
||||
usb.o: ../cups/cups.h ../cups/pwg-private.h ../cups/http-private.h
|
||||
usb.o: ../cups/http.h ../cups/md5-private.h ../cups/ipp-private.h
|
||||
usb.o: ../cups/ipp.h ../cups/language-private.h ../cups/transcode.h
|
||||
usb.o: ../cups/thread-private.h ../cups/snmp-private.h ../cups/backend.h
|
||||
usb.o: ../cups/sidechannel.h
|
||||
|
||||
+28
-34
@@ -3,7 +3,7 @@
|
||||
#
|
||||
# Backend makefile for CUPS.
|
||||
#
|
||||
# Copyright 2007-2012 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
|
||||
@@ -21,37 +21,13 @@ include ../Makedefs
|
||||
# Object files...
|
||||
#
|
||||
|
||||
RBACKENDS = \
|
||||
ipp \
|
||||
lpd \
|
||||
$(DNSSD_BACKEND)
|
||||
UBACKENDS = \
|
||||
snmp \
|
||||
socket \
|
||||
usb
|
||||
UNITTESTS = \
|
||||
test1284 \
|
||||
testbackend \
|
||||
testsupplies
|
||||
TARGETS = \
|
||||
libbackend.a \
|
||||
$(RBACKENDS) \
|
||||
$(UBACKENDS)
|
||||
LIBOBJS = \
|
||||
ieee1284.o \
|
||||
network.o \
|
||||
runloop.o \
|
||||
snmp-supplies.o
|
||||
OBJS = \
|
||||
ipp.o \
|
||||
lpd.o \
|
||||
dnssd.o \
|
||||
snmp.o \
|
||||
socket.o \
|
||||
test1284.o \
|
||||
testbackend.o \
|
||||
testsupplies.o \
|
||||
usb.o
|
||||
RBACKENDS = ipp lpd $(DNSSD_BACKEND)
|
||||
UBACKENDS = $(LEGACY_BACKENDS) serial snmp socket usb
|
||||
UNITTESTS = test1284 testbackend testsupplies
|
||||
TARGETS = libbackend.a $(RBACKENDS) $(UBACKENDS)
|
||||
LIBOBJS = ieee1284.o network.o runloop.o snmp-supplies.o
|
||||
OBJS = ipp.o lpd.o dnssd.o parallel.o serial.o snmp.o \
|
||||
socket.o test1284.o testbackend.o testsupplies.o usb.o
|
||||
|
||||
|
||||
#
|
||||
@@ -80,7 +56,7 @@ unittests: $(UNITTESTS)
|
||||
#
|
||||
|
||||
clean:
|
||||
$(RM) $(OBJS) $(TARGETS) $(UNITTESTS) $(LIBOBJS) http https ipps mdns
|
||||
$(RM) $(OBJS) $(TARGETS) $(UNITTESTS) $(LIBOBJS) http mdns
|
||||
|
||||
|
||||
#
|
||||
@@ -88,7 +64,7 @@ clean:
|
||||
#
|
||||
|
||||
depend:
|
||||
$(CC) -MM $(ALL_CFLAGS) $(OBJS:.o=.c) >Dependencies
|
||||
makedepend -Y -I.. -fDependencies $(OBJS:.o=.c) >/dev/null 2>&1
|
||||
|
||||
|
||||
#
|
||||
@@ -250,6 +226,24 @@ lpd: lpd.o ../cups/$(LIBCUPS) libbackend.a
|
||||
$(CC) $(LDFLAGS) -o lpd lpd.o libbackend.a $(LIBS)
|
||||
|
||||
|
||||
#
|
||||
# parallel
|
||||
#
|
||||
|
||||
parallel: parallel.o ../cups/$(LIBCUPS) libbackend.a
|
||||
echo Linking $@...
|
||||
$(CC) $(LDFLAGS) -o parallel parallel.o libbackend.a $(LIBS)
|
||||
|
||||
|
||||
#
|
||||
# serial
|
||||
#
|
||||
|
||||
serial: serial.o ../cups/$(LIBCUPS) libbackend.a
|
||||
echo Linking $@...
|
||||
$(CC) $(LDFLAGS) -o serial serial.o libbackend.a $(BACKLIBS) $(LIBS)
|
||||
|
||||
|
||||
#
|
||||
# snmp
|
||||
#
|
||||
|
||||
@@ -274,7 +274,6 @@ extern "C" {
|
||||
#define CUPS_TC_csUTF32 1017
|
||||
#define CUPS_TC_csUTF32BE 1018
|
||||
#define CUPS_TC_csUTF32LE 1019
|
||||
#define CUPS_TC_csWindows31J 2024
|
||||
|
||||
|
||||
/*
|
||||
|
||||
+10
-54
@@ -44,7 +44,6 @@ typedef enum
|
||||
{
|
||||
CUPS_DEVICE_PRINTER = 0, /* lpd://... */
|
||||
CUPS_DEVICE_IPP, /* ipp://... */
|
||||
CUPS_DEVICE_IPPS, /* ipps://... */
|
||||
CUPS_DEVICE_FAX_IPP, /* ipp://... */
|
||||
CUPS_DEVICE_PDL_DATASTREAM, /* socket://... */
|
||||
CUPS_DEVICE_RIOUSBPRINT /* riousbprint://... */
|
||||
@@ -124,11 +123,9 @@ main(int argc, /* I - Number of command-line args */
|
||||
fax_ipp_ref, /* IPP fax service reference */
|
||||
ipp_ref, /* IPP service reference */
|
||||
ipp_tls_ref, /* IPP w/TLS service reference */
|
||||
ipps_ref, /* IPP service reference */
|
||||
local_fax_ipp_ref, /* Local IPP fax service reference */
|
||||
local_ipp_ref, /* Local IPP service reference */
|
||||
local_ipp_tls_ref, /* Local IPP w/TLS service reference */
|
||||
local_ipps_ref, /* Local IPP service reference */
|
||||
local_printer_ref, /* Local LPD service reference */
|
||||
pdl_datastream_ref, /* AppSocket service reference */
|
||||
printer_ref, /* LPD service reference */
|
||||
@@ -218,10 +215,6 @@ main(int argc, /* I - Number of command-line args */
|
||||
DNSServiceBrowse(&ipp_tls_ref, kDNSServiceFlagsShareConnection, 0,
|
||||
"_ipp-tls._tcp", NULL, browse_callback, devices);
|
||||
|
||||
ipps_ref = main_ref;
|
||||
DNSServiceBrowse(&ipps_ref, kDNSServiceFlagsShareConnection, 0,
|
||||
"_ipps._tcp", NULL, browse_callback, devices);
|
||||
|
||||
local_fax_ipp_ref = main_ref;
|
||||
DNSServiceBrowse(&local_fax_ipp_ref, kDNSServiceFlagsShareConnection,
|
||||
kDNSServiceInterfaceIndexLocalOnly,
|
||||
@@ -237,11 +230,6 @@ main(int argc, /* I - Number of command-line args */
|
||||
kDNSServiceInterfaceIndexLocalOnly,
|
||||
"_ipp-tls._tcp", NULL, browse_local_callback, devices);
|
||||
|
||||
local_ipps_ref = main_ref;
|
||||
DNSServiceBrowse(&local_ipps_ref, kDNSServiceFlagsShareConnection,
|
||||
kDNSServiceInterfaceIndexLocalOnly,
|
||||
"_ipps._tcp", NULL, browse_local_callback, devices);
|
||||
|
||||
local_printer_ref = main_ref;
|
||||
DNSServiceBrowse(&local_printer_ref, kDNSServiceFlagsShareConnection,
|
||||
kDNSServiceInterfaceIndexLocalOnly,
|
||||
@@ -268,8 +256,8 @@ main(int argc, /* I - Number of command-line args */
|
||||
FD_ZERO(&input);
|
||||
FD_SET(fd, &input);
|
||||
|
||||
timeout.tv_sec = 0;
|
||||
timeout.tv_usec = 250000;
|
||||
timeout.tv_sec = 1;
|
||||
timeout.tv_usec = 0;
|
||||
|
||||
if (select(fd + 1, &input, NULL, NULL, &timeout) < 0)
|
||||
continue;
|
||||
@@ -292,26 +280,19 @@ main(int argc, /* I - Number of command-line args */
|
||||
cups_device_t *best; /* Best matching device */
|
||||
char device_uri[1024]; /* Device URI */
|
||||
int count; /* Number of queries */
|
||||
int sent; /* Number of sent */
|
||||
|
||||
|
||||
for (device = (cups_device_t *)cupsArrayFirst(devices),
|
||||
best = NULL, count = 0, sent = 0;
|
||||
best = NULL, count = 0;
|
||||
device;
|
||||
device = (cups_device_t *)cupsArrayNext(devices))
|
||||
{
|
||||
if (device->sent)
|
||||
sent ++;
|
||||
|
||||
if (device->ref)
|
||||
count ++;
|
||||
|
||||
if (!device->ref && !device->sent)
|
||||
{
|
||||
/*
|
||||
* Found the device, now get the TXT record(s) for it...
|
||||
*/
|
||||
|
||||
if (count < 20)
|
||||
if (count < 10)
|
||||
{
|
||||
device->ref = main_ref;
|
||||
|
||||
@@ -357,8 +338,6 @@ main(int argc, /* I - Number of command-line args */
|
||||
best->name, best->device_id, NULL);
|
||||
best->sent = 1;
|
||||
best = device;
|
||||
|
||||
sent ++;
|
||||
}
|
||||
else if (best->priority > device->priority ||
|
||||
(best->priority == device->priority &&
|
||||
@@ -366,17 +345,10 @@ main(int argc, /* I - Number of command-line args */
|
||||
{
|
||||
best->sent = 1;
|
||||
best = device;
|
||||
|
||||
sent ++;
|
||||
}
|
||||
else
|
||||
{
|
||||
device->sent = 1;
|
||||
|
||||
sent ++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (best)
|
||||
{
|
||||
@@ -389,11 +361,7 @@ main(int argc, /* I - Number of command-line args */
|
||||
cupsBackendReport("network", device_uri, best->make_and_model,
|
||||
best->name, best->device_id, NULL);
|
||||
best->sent = 1;
|
||||
sent ++;
|
||||
}
|
||||
|
||||
if (sent == cupsArrayCount(devices))
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -590,11 +558,9 @@ get_device(cups_array_t *devices, /* I - Device array */
|
||||
|
||||
key.name = (char *)serviceName;
|
||||
|
||||
if (!strcmp(regtype, "_ipp._tcp."))
|
||||
if (!strcmp(regtype, "_ipp._tcp.") ||
|
||||
!strcmp(regtype, "_ipp-tls._tcp."))
|
||||
key.type = CUPS_DEVICE_IPP;
|
||||
else if (!strcmp(regtype, "_ipps._tcp.") ||
|
||||
!strcmp(regtype, "_ipp-tls._tcp."))
|
||||
key.type = CUPS_DEVICE_IPPS;
|
||||
else if (!strcmp(regtype, "_fax-ipp._tcp."))
|
||||
key.type = CUPS_DEVICE_FAX_IPP;
|
||||
else if (!strcmp(regtype, "_printer._tcp."))
|
||||
@@ -714,11 +680,9 @@ query_callback(
|
||||
if ((ptr = strstr(name, "._")) != NULL)
|
||||
*ptr = '\0';
|
||||
|
||||
if (strstr(fullName, "_ipp._tcp."))
|
||||
if (strstr(fullName, "_ipp._tcp.") ||
|
||||
strstr(fullName, "_ipp-tls._tcp."))
|
||||
dkey.type = CUPS_DEVICE_IPP;
|
||||
else if (strstr(fullName, "_ipps._tcp.") ||
|
||||
strstr(fullName, "_ipp-tls._tcp."))
|
||||
dkey.type = CUPS_DEVICE_IPPS;
|
||||
else if (strstr(fullName, "_fax-ipp._tcp."))
|
||||
dkey.type = CUPS_DEVICE_FAX_IPP;
|
||||
else if (strstr(fullName, "_printer._tcp."))
|
||||
@@ -774,7 +738,7 @@ query_callback(
|
||||
|
||||
datalen = *data++;
|
||||
|
||||
if (!datalen || (data + datalen) > dataend)
|
||||
if (!datalen || (data + datalen) >= dataend)
|
||||
break;
|
||||
|
||||
datanext = data + datalen;
|
||||
@@ -790,16 +754,9 @@ query_callback(
|
||||
if (data < datanext)
|
||||
memcpy(value, data, datanext - data);
|
||||
value[datanext - data] = '\0';
|
||||
|
||||
fprintf(stderr, "DEBUG2: query_callback: \"%s=%s\".\n",
|
||||
key, value);
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(stderr, "DEBUG2: query_callback: \"%s\" with no value.\n",
|
||||
key);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!_cups_strncasecmp(key, "usb_", 4))
|
||||
{
|
||||
@@ -843,7 +800,6 @@ query_callback(
|
||||
else if (!_cups_strcasecmp(key, "priority"))
|
||||
device->priority = atoi(value);
|
||||
else if ((device->type == CUPS_DEVICE_IPP ||
|
||||
device->type == CUPS_DEVICE_IPPS ||
|
||||
device->type == CUPS_DEVICE_PRINTER) &&
|
||||
!_cups_strcasecmp(key, "printer-type"))
|
||||
{
|
||||
|
||||
+3
-21
@@ -65,7 +65,6 @@ backendGetDeviceID(
|
||||
# if defined(__sun) && defined(ECPPIOC_GETDEVID)
|
||||
struct ecpp_device_id did; /* Device ID buffer */
|
||||
# endif /* __sun && ECPPIOC_GETDEVID */
|
||||
char *ptr; /* Pointer into device ID */
|
||||
|
||||
|
||||
DEBUG_printf(("backendGetDeviceID(fd=%d, device_id=%p, device_id_size=%d, "
|
||||
@@ -187,7 +186,7 @@ backendGetDeviceID(
|
||||
* and then limit the length to the size of our buffer...
|
||||
*/
|
||||
|
||||
if (length > device_id_size || length < 14)
|
||||
if (length > device_id_size)
|
||||
length = (((unsigned)device_id[1] & 255) << 8) +
|
||||
((unsigned)device_id[0] & 255);
|
||||
|
||||
@@ -225,12 +224,11 @@ backendGetDeviceID(
|
||||
device_id[length] = '\0';
|
||||
}
|
||||
}
|
||||
# ifdef DEBUG
|
||||
else
|
||||
{
|
||||
DEBUG_printf(("backendGetDeviceID: ioctl failed - %s\n",
|
||||
strerror(errno)));
|
||||
*device_id = '\0';
|
||||
}
|
||||
# endif /* DEBUG */
|
||||
# endif /* __linux */
|
||||
|
||||
# if defined(__sun) && defined(ECPPIOC_GETDEVID)
|
||||
@@ -258,22 +256,6 @@ backendGetDeviceID(
|
||||
# endif /* __sun && ECPPIOC_GETDEVID */
|
||||
}
|
||||
|
||||
/*
|
||||
* Check whether device ID is valid. Turn line breaks and tabs to spaces and
|
||||
* reject device IDs with non-printable characters.
|
||||
*/
|
||||
|
||||
for (ptr = device_id; *ptr; ptr ++)
|
||||
if (_cups_isspace(*ptr))
|
||||
*ptr = ' ';
|
||||
else if ((*ptr & 255) < ' ' || *ptr == 127)
|
||||
{
|
||||
DEBUG_printf(("backendGetDeviceID: Bad device_id character %d.",
|
||||
*ptr & 255));
|
||||
*device_id = '\0';
|
||||
break;
|
||||
}
|
||||
|
||||
DEBUG_printf(("backendGetDeviceID: device_id=\"%s\"\n", device_id));
|
||||
|
||||
if (scheme && uri)
|
||||
|
||||
+65
-235
@@ -3,7 +3,7 @@
|
||||
*
|
||||
* IPP backend for CUPS.
|
||||
*
|
||||
* Copyright 2007-2012 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
|
||||
@@ -63,7 +63,6 @@ typedef struct _cups_monitor_s /**** Monitoring data ****/
|
||||
int port, /* Port number */
|
||||
version, /* IPP version */
|
||||
job_id; /* Job ID for submitted job */
|
||||
const char *job_name; /* Job name for submitted job */
|
||||
http_encryption_t encryption; /* Use encryption? */
|
||||
ipp_jstate_t job_state; /* Current job state */
|
||||
ipp_pstate_t printer_state; /* Current printer state */
|
||||
@@ -83,8 +82,6 @@ static const char * const jattrs[] = /* Job attributes we want */
|
||||
{
|
||||
"job-impressions-completed",
|
||||
"job-media-sheets-completed",
|
||||
"job-name",
|
||||
"job-originating-user-name",
|
||||
"job-state",
|
||||
"job-state-reasons"
|
||||
};
|
||||
@@ -114,7 +111,7 @@ static const char * const pattrs[] = /* Printer attributes we want */
|
||||
"printer-is-accepting-jobs",
|
||||
"printer-state",
|
||||
"printer-state-message",
|
||||
"printer-state-reasons"
|
||||
"printer-state-reasons",
|
||||
};
|
||||
static const char * const remote_job_states[] =
|
||||
{ /* Remote job state keywords */
|
||||
@@ -208,7 +205,6 @@ main(int argc, /* I - Number of command-line args */
|
||||
int port; /* Port number (not used) */
|
||||
char portname[255]; /* Port name */
|
||||
char uri[HTTP_MAX_URI]; /* Updated URI without user/pass */
|
||||
char print_job_name[1024]; /* Update job-name for Print-Job */
|
||||
http_status_t http_status; /* Status of HTTP request */
|
||||
ipp_status_t ipp_status; /* Status of IPP request */
|
||||
http_t *http; /* HTTP connection */
|
||||
@@ -235,9 +231,7 @@ main(int argc, /* I - Number of command-line args */
|
||||
ipp_attribute_t *doc_handling_sup; /* multiple-document-handling-supported */
|
||||
ipp_attribute_t *printer_state; /* printer-state attribute */
|
||||
ipp_attribute_t *printer_accepting; /* printer-is-accepting-jobs */
|
||||
int create_job = 0, /* Does printer support Create-Job? */
|
||||
send_document = 0, /* Does printer support Send-Document? */
|
||||
validate_job = 0; /* Does printer support Validate-Job? */
|
||||
int validate_job; /* Does printer support Validate-Job? */
|
||||
int copies, /* Number of copies for job */
|
||||
copies_remaining; /* Number of copies remaining */
|
||||
const char *content_type, /* CONTENT_TYPE environment variable */
|
||||
@@ -795,6 +789,7 @@ main(int argc, /* I - Number of command-line args */
|
||||
supported = NULL;
|
||||
operations_sup = NULL;
|
||||
doc_handling_sup = NULL;
|
||||
validate_job = 0;
|
||||
|
||||
do
|
||||
{
|
||||
@@ -1047,21 +1042,11 @@ main(int argc, /* I - Number of command-line args */
|
||||
"cups-ipp-missing-get-printer-attributes");
|
||||
|
||||
for (i = 0; i < operations_sup->num_values; i ++)
|
||||
{
|
||||
if (operations_sup->values[i].integer == IPP_VALIDATE_JOB)
|
||||
{
|
||||
validate_job = 1;
|
||||
else if (operations_sup->values[i].integer == IPP_CREATE_JOB)
|
||||
create_job = 1;
|
||||
else if (operations_sup->values[i].integer == IPP_SEND_DOCUMENT)
|
||||
send_document = 1;
|
||||
}
|
||||
|
||||
if (!send_document)
|
||||
{
|
||||
fputs("DEBUG: Printer supports Create-Job but not Send-Document.\n",
|
||||
stderr);
|
||||
create_job = 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if (!validate_job)
|
||||
update_reasons(NULL, "+cups-ipp-conformance-failure-report,"
|
||||
@@ -1131,7 +1116,7 @@ main(int argc, /* I - Number of command-line args */
|
||||
{
|
||||
copies_remaining = 1;
|
||||
|
||||
if (argc < 7 && !_cups_strncasecmp(final_content_type, "image/", 6))
|
||||
if (argc < 7 && !send_options)
|
||||
copies = 1;
|
||||
}
|
||||
else
|
||||
@@ -1235,17 +1220,6 @@ main(int argc, /* I - Number of command-line args */
|
||||
monitor.job_state = IPP_JOB_PENDING;
|
||||
monitor.printer_state = IPP_PRINTER_IDLE;
|
||||
|
||||
if (create_job)
|
||||
{
|
||||
monitor.job_name = argv[3];
|
||||
}
|
||||
else
|
||||
{
|
||||
snprintf(print_job_name, sizeof(print_job_name), "%s - %s", argv[1],
|
||||
argv[3]);
|
||||
monitor.job_name = print_job_name;
|
||||
}
|
||||
|
||||
_cupsThreadCreate((_cups_thread_func_t)monitor_printer, &monitor);
|
||||
|
||||
/*
|
||||
@@ -1254,8 +1228,8 @@ main(int argc, /* I - Number of command-line args */
|
||||
|
||||
while (!job_canceled && validate_job)
|
||||
{
|
||||
request = new_request(IPP_VALIDATE_JOB, version, uri, argv[2],
|
||||
monitor.job_name, num_options, options, compression,
|
||||
request = new_request(IPP_VALIDATE_JOB, version, uri, argv[2], argv[3],
|
||||
num_options, options, compression,
|
||||
copies_sup ? copies : 1, document_format, pc,
|
||||
media_col_sup, doc_handling_sup);
|
||||
|
||||
@@ -1332,17 +1306,16 @@ main(int argc, /* I - Number of command-line args */
|
||||
if (job_canceled)
|
||||
break;
|
||||
|
||||
request = new_request((num_files > 1 || create_job) ? IPP_CREATE_JOB :
|
||||
IPP_PRINT_JOB,
|
||||
version, uri, argv[2], monitor.job_name, num_options,
|
||||
options, compression, copies_sup ? copies : 1,
|
||||
document_format, pc, media_col_sup, doc_handling_sup);
|
||||
request = new_request(num_files > 1 ? IPP_CREATE_JOB : IPP_PRINT_JOB,
|
||||
version, uri, argv[2], argv[3], num_options, options,
|
||||
compression, copies_sup ? copies : 1, document_format,
|
||||
pc, media_col_sup, doc_handling_sup);
|
||||
|
||||
/*
|
||||
* Do the request...
|
||||
*/
|
||||
|
||||
if (num_files > 1 || create_job)
|
||||
if (num_files > 1)
|
||||
response = cupsDoRequest(http, request, resource);
|
||||
else
|
||||
{
|
||||
@@ -1360,21 +1333,14 @@ main(int argc, /* I - Number of command-line args */
|
||||
if (http_status == HTTP_CONTINUE && request->state == IPP_DATA)
|
||||
{
|
||||
if (num_files == 1)
|
||||
{
|
||||
if ((fd = open(files[0], O_RDONLY)) < 0)
|
||||
{
|
||||
_cupsLangPrintError("ERROR", _("Unable to open print file"));
|
||||
return (CUPS_BACKEND_FAILED);
|
||||
}
|
||||
}
|
||||
fd = open(files[0], O_RDONLY);
|
||||
else
|
||||
{
|
||||
fd = 0;
|
||||
http_status = cupsWriteRequestData(http, buffer, bytes);
|
||||
}
|
||||
|
||||
while (http_status == HTTP_CONTINUE &&
|
||||
(!job_canceled || compatsize > 0))
|
||||
while (http_status == HTTP_CONTINUE)
|
||||
{
|
||||
/*
|
||||
* Check for side-channel requests and more print data...
|
||||
@@ -1415,7 +1381,7 @@ main(int argc, /* I - Number of command-line args */
|
||||
ipp_status = cupsLastError();
|
||||
|
||||
fprintf(stderr, "DEBUG: %s: %s (%s)\n",
|
||||
(num_files > 1 || create_job) ? "Create-Job" : "Print-Job",
|
||||
num_files > 1 ? "Create-Job" : "Print-Job",
|
||||
ippErrorString(ipp_status), cupsLastErrorString());
|
||||
|
||||
if (ipp_status > IPP_OK_CONFLICT)
|
||||
@@ -1426,7 +1392,6 @@ main(int argc, /* I - Number of command-line args */
|
||||
break;
|
||||
|
||||
if (ipp_status == IPP_SERVICE_UNAVAILABLE ||
|
||||
ipp_status == IPP_NOT_POSSIBLE ||
|
||||
ipp_status == IPP_PRINTER_BUSY)
|
||||
{
|
||||
_cupsLangPrintFilter(stderr, "INFO", _("The printer is busy."));
|
||||
@@ -1442,8 +1407,6 @@ main(int argc, /* I - Number of command-line args */
|
||||
goto cleanup;
|
||||
}
|
||||
}
|
||||
else if (ipp_status == IPP_ERROR_JOB_CANCELED)
|
||||
goto cleanup;
|
||||
else
|
||||
{
|
||||
/*
|
||||
@@ -1499,15 +1462,14 @@ main(int argc, /* I - Number of command-line args */
|
||||
_("Print file accepted - job ID %d."), job_id);
|
||||
}
|
||||
|
||||
fprintf(stderr, "DEBUG: job-id=%d\n", job_id);
|
||||
ippDelete(response);
|
||||
|
||||
if (job_canceled)
|
||||
break;
|
||||
|
||||
if (job_id && (num_files > 1 || create_job))
|
||||
if (job_id && num_files > 1)
|
||||
{
|
||||
for (i = 0; num_files == 0 || i < num_files; i ++)
|
||||
for (i = 0; i < num_files; i ++)
|
||||
{
|
||||
/*
|
||||
* Check for side-channel requests...
|
||||
@@ -1533,37 +1495,18 @@ main(int argc, /* I - Number of command-line args */
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME,
|
||||
"requesting-user-name", NULL, argv[2]);
|
||||
|
||||
if ((i + 1) >= num_files)
|
||||
if ((i + 1) == num_files)
|
||||
ippAddBoolean(request, IPP_TAG_OPERATION, "last-document", 1);
|
||||
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_MIMETYPE,
|
||||
"document-format", NULL, document_format);
|
||||
"document-format", NULL, content_type);
|
||||
|
||||
fprintf(stderr, "DEBUG: Sending file %d using chunking...\n", i + 1);
|
||||
http_status = cupsSendRequest(http, request, resource, 0);
|
||||
if (http_status == HTTP_CONTINUE && request->state == IPP_DATA)
|
||||
if (http_status == HTTP_CONTINUE && request->state == IPP_DATA &&
|
||||
(fd = open(files[i], O_RDONLY)) >= 0)
|
||||
{
|
||||
if (num_files == 0)
|
||||
{
|
||||
fd = 0;
|
||||
http_status = cupsWriteRequestData(http, buffer, bytes);
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((fd = open(files[i], O_RDONLY)) < 0)
|
||||
{
|
||||
_cupsLangPrintError("ERROR", _("Unable to open print file"));
|
||||
return (CUPS_BACKEND_FAILED);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
fd = -1;
|
||||
|
||||
if (fd >= 0)
|
||||
{
|
||||
while (!job_canceled &&
|
||||
(bytes = read(fd, buffer, sizeof(buffer))) > 0)
|
||||
while ((bytes = read(fd, buffer, sizeof(buffer))) > 0)
|
||||
{
|
||||
if (cupsWriteRequestData(http, buffer, bytes) != HTTP_CONTINUE)
|
||||
break;
|
||||
@@ -1577,8 +1520,7 @@ main(int argc, /* I - Number of command-line args */
|
||||
}
|
||||
}
|
||||
|
||||
if (fd > 0)
|
||||
close(fd);
|
||||
close(fd);
|
||||
}
|
||||
|
||||
ippDelete(cupsGetResponse(http, resource));
|
||||
@@ -1595,8 +1537,6 @@ main(int argc, /* I - Number of command-line args */
|
||||
_("Unable to add document to print job."));
|
||||
break;
|
||||
}
|
||||
else if (num_files == 0 || fd < 0)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1606,7 +1546,6 @@ main(int argc, /* I - Number of command-line args */
|
||||
copies_remaining --;
|
||||
}
|
||||
else if (ipp_status == IPP_SERVICE_UNAVAILABLE ||
|
||||
ipp_status == IPP_NOT_POSSIBLE ||
|
||||
ipp_status == IPP_PRINTER_BUSY)
|
||||
continue;
|
||||
else
|
||||
@@ -1679,14 +1618,12 @@ main(int argc, /* I - Number of command-line args */
|
||||
if (ipp_status > IPP_OK_CONFLICT)
|
||||
{
|
||||
if (ipp_status != IPP_SERVICE_UNAVAILABLE &&
|
||||
ipp_status != IPP_NOT_POSSIBLE &&
|
||||
ipp_status != IPP_PRINTER_BUSY)
|
||||
{
|
||||
ippDelete(response);
|
||||
|
||||
_cupsLangPrintFilter(stderr, "ERROR",
|
||||
_("Unable to get print job status."));
|
||||
ipp_status = IPP_OK;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -1728,9 +1665,7 @@ main(int argc, /* I - Number of command-line args */
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if (ipp_status != IPP_SERVICE_UNAVAILABLE &&
|
||||
ipp_status != IPP_NOT_POSSIBLE &&
|
||||
ipp_status != IPP_PRINTER_BUSY)
|
||||
else
|
||||
{
|
||||
/*
|
||||
* If the printer does not return a job-state attribute, it does not
|
||||
@@ -1833,7 +1768,7 @@ main(int argc, /* I - Number of command-line args */
|
||||
else if (ipp_status == IPP_DOCUMENT_FORMAT ||
|
||||
ipp_status == IPP_CONFLICT)
|
||||
return (CUPS_BACKEND_FAILED);
|
||||
else if (ipp_status > IPP_OK_CONFLICT && ipp_status != IPP_ERROR_JOB_CANCELED)
|
||||
else if (ipp_status > IPP_OK_CONFLICT)
|
||||
return (CUPS_BACKEND_RETRY_CURRENT);
|
||||
else
|
||||
{
|
||||
@@ -2028,11 +1963,6 @@ monitor_printer(
|
||||
ipp_attribute_t *attr; /* Attribute in response */
|
||||
int delay, /* Current delay */
|
||||
prev_delay; /* Previous delay */
|
||||
ipp_op_t job_op; /* Operation to use */
|
||||
int job_id; /* Job ID */
|
||||
const char *job_name; /* Job name */
|
||||
ipp_jstate_t job_state; /* Job state */
|
||||
const char *job_user; /* Job originating user name */
|
||||
|
||||
|
||||
/*
|
||||
@@ -2067,95 +1997,46 @@ monitor_printer(
|
||||
monitor->user,
|
||||
monitor->version);
|
||||
|
||||
/*
|
||||
* Check the status of the job itself...
|
||||
*/
|
||||
|
||||
job_op = monitor->job_id > 0 ? IPP_GET_JOB_ATTRIBUTES : IPP_GET_JOBS;
|
||||
request = ippNewRequest(job_op);
|
||||
request->request.op.version[0] = monitor->version / 10;
|
||||
request->request.op.version[1] = monitor->version % 10;
|
||||
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
|
||||
NULL, monitor->uri);
|
||||
if (job_op == IPP_GET_JOB_ATTRIBUTES)
|
||||
ippAddInteger(request, IPP_TAG_OPERATION, IPP_TAG_INTEGER, "job-id",
|
||||
monitor->job_id);
|
||||
|
||||
if (monitor->user && monitor->user[0])
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME,
|
||||
"requesting-user-name", NULL, monitor->user);
|
||||
|
||||
ippAddStrings(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD,
|
||||
"requested-attributes",
|
||||
(int)(sizeof(jattrs) / sizeof(jattrs[0])), NULL, jattrs);
|
||||
|
||||
/*
|
||||
* Do the request...
|
||||
*/
|
||||
|
||||
response = cupsDoRequest(http, request, monitor->resource);
|
||||
|
||||
fprintf(stderr, "DEBUG: %s: %s (%s)\n", ippOpString(job_op),
|
||||
ippErrorString(cupsLastError()), cupsLastErrorString());
|
||||
|
||||
if (job_op == IPP_GET_JOB_ATTRIBUTES)
|
||||
if (monitor->job_id > 0)
|
||||
{
|
||||
/*
|
||||
* Check the status of the job itself...
|
||||
*/
|
||||
|
||||
request = ippNewRequest(IPP_GET_JOB_ATTRIBUTES);
|
||||
request->request.op.version[0] = monitor->version / 10;
|
||||
request->request.op.version[1] = monitor->version % 10;
|
||||
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
|
||||
NULL, monitor->uri);
|
||||
ippAddInteger(request, IPP_TAG_OPERATION, IPP_TAG_INTEGER, "job-id",
|
||||
monitor->job_id);
|
||||
|
||||
if (monitor->user && monitor->user[0])
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME,
|
||||
"requesting-user-name", NULL, monitor->user);
|
||||
|
||||
ippAddStrings(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD,
|
||||
"requested-attributes",
|
||||
(int)(sizeof(jattrs) / sizeof(jattrs[0])), NULL, jattrs);
|
||||
|
||||
/*
|
||||
* Do the request...
|
||||
*/
|
||||
|
||||
response = cupsDoRequest(http, request, monitor->resource);
|
||||
|
||||
fprintf(stderr, "DEBUG: Get-Job-Attributes: %s (%s)\n",
|
||||
ippErrorString(cupsLastError()), cupsLastErrorString());
|
||||
|
||||
if ((attr = ippFindAttribute(response, "job-state",
|
||||
IPP_TAG_ENUM)) != NULL)
|
||||
monitor->job_state = (ipp_jstate_t)attr->values[0].integer;
|
||||
else
|
||||
monitor->job_state = IPP_JOB_COMPLETED;
|
||||
|
||||
ippDelete(response);
|
||||
}
|
||||
else if (response)
|
||||
{
|
||||
for (attr = response->attrs; attr; attr = attr->next)
|
||||
{
|
||||
job_id = 0;
|
||||
job_name = NULL;
|
||||
job_state = IPP_JOB_PENDING;
|
||||
job_user = NULL;
|
||||
|
||||
while (attr && attr->group_tag != IPP_TAG_JOB)
|
||||
attr = attr->next;
|
||||
|
||||
if (!attr)
|
||||
break;
|
||||
|
||||
while (attr && attr->group_tag == IPP_TAG_JOB)
|
||||
{
|
||||
if (!strcmp(attr->name, "job-id") &&
|
||||
attr->value_tag == IPP_TAG_INTEGER)
|
||||
job_id = attr->values[0].integer;
|
||||
else if (!strcmp(attr->name, "job-name") &&
|
||||
(attr->value_tag == IPP_TAG_NAME ||
|
||||
attr->value_tag == IPP_TAG_NAMELANG))
|
||||
job_name = attr->values[0].string.text;
|
||||
else if (!strcmp(attr->name, "job-state") &&
|
||||
attr->value_tag == IPP_TAG_ENUM)
|
||||
job_state = attr->values[0].integer;
|
||||
else if (!strcmp(attr->name, "job-originating-user-name") &&
|
||||
(attr->value_tag == IPP_TAG_NAME ||
|
||||
attr->value_tag == IPP_TAG_NAMELANG))
|
||||
job_user = attr->values[0].string.text;
|
||||
|
||||
attr = attr->next;
|
||||
}
|
||||
|
||||
if (job_id > 0 && job_name && !strcmp(job_name, monitor->job_name) &&
|
||||
job_user && monitor->user && !strcmp(job_user, monitor->user))
|
||||
{
|
||||
monitor->job_id = job_id;
|
||||
monitor->job_state = job_state;
|
||||
break;
|
||||
}
|
||||
|
||||
if (!attr)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
ippDelete(response);
|
||||
|
||||
/*
|
||||
* Disconnect from the printer - we'll reconnect on the next poll...
|
||||
@@ -2173,15 +2054,6 @@ monitor_printer(
|
||||
delay = _cupsNextDelay(delay, &prev_delay);
|
||||
}
|
||||
|
||||
/*
|
||||
* Cancel the job if necessary...
|
||||
*/
|
||||
|
||||
if (job_canceled && monitor->job_id > 0)
|
||||
if (!httpReconnect(http))
|
||||
cancel_job(http, monitor->uri, monitor->job_id, monitor->resource,
|
||||
monitor->user, monitor->version);
|
||||
|
||||
/*
|
||||
* Cleanup and return...
|
||||
*/
|
||||
@@ -2207,7 +2079,7 @@ new_request(
|
||||
cups_option_t *options, /* I - Options to send */
|
||||
const char *compression, /* I - compression value or NULL */
|
||||
int copies, /* I - copies value or 0 */
|
||||
const char *format, /* I - document-format value or NULL */
|
||||
const char *format, /* I - documet-format value or NULL */
|
||||
_ppd_cache_t *pc, /* I - PPD cache and mapping data */
|
||||
ipp_attribute_t *media_col_sup, /* I - media-col-supported values */
|
||||
ipp_attribute_t *doc_handling_sup) /* I - multiple-document-handling-supported values */
|
||||
@@ -2282,9 +2154,6 @@ new_request(
|
||||
{
|
||||
if (pc)
|
||||
{
|
||||
int num_finishings = 0, /* Number of finishing values */
|
||||
finishings[10]; /* Finishing enum values */
|
||||
|
||||
/*
|
||||
* Send standard IPP attributes...
|
||||
*/
|
||||
@@ -2323,15 +2192,15 @@ new_request(
|
||||
else if (!strcmp(media_col_sup->values[i].string.text,
|
||||
"media-bottom-margin"))
|
||||
ippAddInteger(media_col, IPP_TAG_ZERO, IPP_TAG_INTEGER,
|
||||
"media-bottom-margin", size->bottom);
|
||||
"media-bottom-margin", size->left);
|
||||
else if (!strcmp(media_col_sup->values[i].string.text,
|
||||
"media-right-margin"))
|
||||
ippAddInteger(media_col, IPP_TAG_ZERO, IPP_TAG_INTEGER,
|
||||
"media-right-margin", size->right);
|
||||
"media-right-margin", size->left);
|
||||
else if (!strcmp(media_col_sup->values[i].string.text,
|
||||
"media-top-margin"))
|
||||
ippAddInteger(media_col, IPP_TAG_ZERO, IPP_TAG_INTEGER,
|
||||
"media-top-margin", size->top);
|
||||
"media-top-margin", size->left);
|
||||
else if (!strcmp(media_col_sup->values[i].string.text,
|
||||
"media-source") && media_source)
|
||||
ippAddString(media_col, IPP_TAG_ZERO, IPP_TAG_KEYWORD,
|
||||
@@ -2406,7 +2275,6 @@ new_request(
|
||||
}
|
||||
|
||||
if (doc_handling_sup &&
|
||||
(!format || _cups_strncasecmp(format, "image/", 6)) &&
|
||||
(keyword = cupsGetOption("collate", num_options, options)) != NULL)
|
||||
{
|
||||
if (!_cups_strcasecmp(keyword, "true"))
|
||||
@@ -2422,43 +2290,6 @@ new_request(
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Map finishing options...
|
||||
*/
|
||||
|
||||
num_finishings = _ppdCacheGetFinishingValues(pc, num_options, options,
|
||||
(int)(sizeof(finishings) /
|
||||
sizeof(finishings[0])),
|
||||
finishings);
|
||||
if (num_finishings > 0)
|
||||
ippAddIntegers(request, IPP_TAG_JOB, IPP_TAG_ENUM, "finishings",
|
||||
num_finishings, finishings);
|
||||
|
||||
/*
|
||||
* Map FaxOut options...
|
||||
*/
|
||||
|
||||
if ((keyword = cupsGetOption("phone", num_options, options)) != NULL)
|
||||
{
|
||||
ipp_t *destination; /* destination collection */
|
||||
char tel_uri[1024]; /* tel: URI */
|
||||
|
||||
destination = ippNew();
|
||||
|
||||
httpAssembleURI(HTTP_URI_CODING_ALL, tel_uri, sizeof(tel_uri), "tel",
|
||||
NULL, NULL, 0, keyword);
|
||||
ippAddString(destination, IPP_TAG_JOB, IPP_TAG_URI, "destination-uri",
|
||||
NULL, tel_uri);
|
||||
|
||||
if ((keyword = cupsGetOption("faxPrefix", num_options,
|
||||
options)) != NULL && *keyword)
|
||||
ippAddString(destination, IPP_TAG_JOB, IPP_TAG_TEXT,
|
||||
"pre-dial-string", NULL, keyword);
|
||||
|
||||
ippAddCollection(request, IPP_TAG_JOB, "destination-uris", destination);
|
||||
ippDelete(destination);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -2991,7 +2822,6 @@ update_reasons(ipp_attribute_t *attr, /* I - printer-state-reasons or NULL */
|
||||
if (strcmp(reason, "none") &&
|
||||
strcmp(reason, "none-report") &&
|
||||
strcmp(reason, "paused") &&
|
||||
strncmp(reason, "spool-area-full", 15) &&
|
||||
strcmp(reason, "com.apple.print.recoverable-warning") &&
|
||||
strncmp(reason, "cups-", 5))
|
||||
cupsArrayAdd(new_reasons, reason);
|
||||
|
||||
+1
-1
@@ -71,7 +71,7 @@ backendNetworkSideCB(
|
||||
{
|
||||
cups_sc_command_t command; /* Request command */
|
||||
cups_sc_status_t status; /* Request/response status */
|
||||
char data[65536]; /* Request/response data */
|
||||
char data[2048]; /* Request/response data */
|
||||
int datalen; /* Request/response data size */
|
||||
const char *device_id; /* 1284DEVICEID env var */
|
||||
|
||||
|
||||
@@ -0,0 +1,676 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
*
|
||||
* Parallel port backend for CUPS.
|
||||
*
|
||||
* 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
|
||||
* property of Apple Inc. and are protected by Federal copyright
|
||||
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
* "LICENSE" which should have been included with this file. If this
|
||||
* file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
*
|
||||
* This file is subject to the Apple OS-Developed Software exception.
|
||||
*
|
||||
* Contents:
|
||||
*
|
||||
* main() - Send a file to the specified parallel port.
|
||||
* list_devices() - List all parallel devices.
|
||||
* side_cb() - Handle side-channel requests...
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include necessary headers.
|
||||
*/
|
||||
|
||||
#include "backend-private.h"
|
||||
|
||||
#ifdef __hpux
|
||||
# include <sys/time.h>
|
||||
#else
|
||||
# include <sys/select.h>
|
||||
#endif /* __hpux */
|
||||
|
||||
#ifdef WIN32
|
||||
# include <io.h>
|
||||
#else
|
||||
# include <unistd.h>
|
||||
# include <fcntl.h>
|
||||
# include <termios.h>
|
||||
# include <sys/socket.h>
|
||||
#endif /* WIN32 */
|
||||
|
||||
#ifdef __sgi
|
||||
# include <invent.h>
|
||||
# ifndef INV_EPP_ECP_PLP
|
||||
# define INV_EPP_ECP_PLP 6 /* From 6.3/6.4/6.5 sys/invent.h */
|
||||
# define INV_ASO_SERIAL 14 /* serial portion of SGI ASO board */
|
||||
# define INV_IOC3_DMA 16 /* DMA mode IOC3 serial */
|
||||
# define INV_IOC3_PIO 17 /* PIO mode IOC3 serial */
|
||||
# define INV_ISA_DMA 19 /* DMA mode ISA serial -- O2 */
|
||||
# endif /* !INV_EPP_ECP_PLP */
|
||||
#endif /* __sgi */
|
||||
|
||||
|
||||
/*
|
||||
* Local functions...
|
||||
*/
|
||||
|
||||
static void list_devices(void);
|
||||
static int side_cb(int print_fd, int device_fd, int snmp_fd,
|
||||
http_addr_t *addr, int use_bc);
|
||||
|
||||
|
||||
/*
|
||||
* 'main()' - Send a file to the specified parallel port.
|
||||
*
|
||||
* Usage:
|
||||
*
|
||||
* printer-uri job-id user title copies options [file]
|
||||
*/
|
||||
|
||||
int /* O - Exit status */
|
||||
main(int argc, /* I - Number of command-line arguments (6 or 7) */
|
||||
char *argv[]) /* I - Command-line arguments */
|
||||
{
|
||||
char method[255], /* Method in URI */
|
||||
hostname[1024], /* Hostname */
|
||||
username[255], /* Username info (not used) */
|
||||
resource[1024], /* Resource info (device and options) */
|
||||
*options; /* Pointer to options */
|
||||
int port; /* Port number (not used) */
|
||||
int print_fd, /* Print file */
|
||||
device_fd, /* Parallel device */
|
||||
use_bc; /* Read back-channel data? */
|
||||
int copies; /* Number of copies to print */
|
||||
ssize_t tbytes; /* Total number of bytes written */
|
||||
struct termios opts; /* Parallel port options */
|
||||
#if defined(HAVE_SIGACTION) && !defined(HAVE_SIGSET)
|
||||
struct sigaction action; /* Actions for POSIX signals */
|
||||
#endif /* HAVE_SIGACTION && !HAVE_SIGSET */
|
||||
|
||||
|
||||
/*
|
||||
* Make sure status messages are not buffered...
|
||||
*/
|
||||
|
||||
setbuf(stderr, NULL);
|
||||
|
||||
/*
|
||||
* Ignore SIGPIPE signals...
|
||||
*/
|
||||
|
||||
#ifdef HAVE_SIGSET
|
||||
sigset(SIGPIPE, SIG_IGN);
|
||||
#elif defined(HAVE_SIGACTION)
|
||||
memset(&action, 0, sizeof(action));
|
||||
action.sa_handler = SIG_IGN;
|
||||
sigaction(SIGPIPE, &action, NULL);
|
||||
#else
|
||||
signal(SIGPIPE, SIG_IGN);
|
||||
#endif /* HAVE_SIGSET */
|
||||
|
||||
/*
|
||||
* Check command-line...
|
||||
*/
|
||||
|
||||
if (argc == 1)
|
||||
{
|
||||
list_devices();
|
||||
return (CUPS_BACKEND_OK);
|
||||
}
|
||||
else if (argc < 6 || argc > 7)
|
||||
{
|
||||
_cupsLangPrintf(stderr,
|
||||
_("Usage: %s job-id user title copies options [file]"),
|
||||
argv[0]);
|
||||
return (CUPS_BACKEND_FAILED);
|
||||
}
|
||||
|
||||
/*
|
||||
* If we have 7 arguments, print the file named on the command-line.
|
||||
* Otherwise, send stdin instead...
|
||||
*/
|
||||
|
||||
if (argc == 6)
|
||||
{
|
||||
print_fd = 0;
|
||||
copies = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
/*
|
||||
* Try to open the print file...
|
||||
*/
|
||||
|
||||
if ((print_fd = open(argv[6], O_RDONLY)) < 0)
|
||||
{
|
||||
_cupsLangPrintError("ERROR", _("Unable to open print file"));
|
||||
return (CUPS_BACKEND_FAILED);
|
||||
}
|
||||
|
||||
copies = atoi(argv[4]);
|
||||
}
|
||||
|
||||
/*
|
||||
* Extract the device name and options from the URI...
|
||||
*/
|
||||
|
||||
httpSeparateURI(HTTP_URI_CODING_ALL, cupsBackendDeviceURI(argv),
|
||||
method, sizeof(method), username, sizeof(username),
|
||||
hostname, sizeof(hostname), &port,
|
||||
resource, sizeof(resource));
|
||||
|
||||
/*
|
||||
* See if there are any options...
|
||||
*/
|
||||
|
||||
if ((options = strchr(resource, '?')) != NULL)
|
||||
{
|
||||
/*
|
||||
* Yup, terminate the device name string and move to the first
|
||||
* character of the options...
|
||||
*/
|
||||
|
||||
*options++ = '\0';
|
||||
}
|
||||
|
||||
/*
|
||||
* Open the parallel port device...
|
||||
*/
|
||||
|
||||
fputs("STATE: +connecting-to-device\n", stderr);
|
||||
|
||||
do
|
||||
{
|
||||
#if defined(__linux) || defined(__FreeBSD__)
|
||||
/*
|
||||
* The Linux and FreeBSD parallel port drivers currently are broken WRT
|
||||
* select() and bidirection I/O...
|
||||
*/
|
||||
|
||||
device_fd = open(resource, O_WRONLY | O_EXCL);
|
||||
use_bc = 0;
|
||||
|
||||
#else
|
||||
if ((device_fd = open(resource, O_RDWR | O_EXCL)) < 0)
|
||||
{
|
||||
device_fd = open(resource, O_WRONLY | O_EXCL);
|
||||
use_bc = 0;
|
||||
}
|
||||
else
|
||||
use_bc = 1;
|
||||
#endif /* __linux || __FreeBSD__ */
|
||||
|
||||
if (device_fd == -1)
|
||||
{
|
||||
if (getenv("CLASS") != NULL)
|
||||
{
|
||||
/*
|
||||
* If the CLASS environment variable is set, the job was submitted
|
||||
* to a class and not to a specific queue. In this case, we want
|
||||
* to abort immediately so that the job can be requeued on the next
|
||||
* available printer in the class.
|
||||
*/
|
||||
|
||||
_cupsLangPrintFilter(stderr, "INFO",
|
||||
_("Unable to contact printer, queuing on next "
|
||||
"printer in class."));
|
||||
|
||||
/*
|
||||
* Sleep 5 seconds to keep the job from requeuing too rapidly...
|
||||
*/
|
||||
|
||||
sleep(5);
|
||||
|
||||
return (CUPS_BACKEND_FAILED);
|
||||
}
|
||||
|
||||
if (errno == EBUSY)
|
||||
{
|
||||
_cupsLangPrintFilter(stderr, "INFO",
|
||||
_("Printer busy; will retry in 30 seconds."));
|
||||
sleep(30);
|
||||
}
|
||||
else if (errno == ENXIO || errno == EIO || errno == ENOENT)
|
||||
{
|
||||
_cupsLangPrintFilter(stderr, "INFO",
|
||||
_("Printer not connected; will retry in 30 "
|
||||
"seconds."));
|
||||
sleep(30);
|
||||
}
|
||||
else
|
||||
{
|
||||
_cupsLangPrintError("ERROR", _("Unable to open device file"));
|
||||
return (CUPS_BACKEND_FAILED);
|
||||
}
|
||||
}
|
||||
}
|
||||
while (device_fd < 0);
|
||||
|
||||
fputs("STATE: -connecting-to-device\n", stderr);
|
||||
|
||||
/*
|
||||
* Set any options provided...
|
||||
*/
|
||||
|
||||
tcgetattr(device_fd, &opts);
|
||||
|
||||
opts.c_lflag &= ~(ICANON | ECHO | ISIG); /* Raw mode */
|
||||
|
||||
/**** No options supported yet ****/
|
||||
|
||||
tcsetattr(device_fd, TCSANOW, &opts);
|
||||
|
||||
/*
|
||||
* Finally, send the print file...
|
||||
*/
|
||||
|
||||
tbytes = 0;
|
||||
|
||||
while (copies > 0 && tbytes >= 0)
|
||||
{
|
||||
copies --;
|
||||
|
||||
if (print_fd != 0)
|
||||
{
|
||||
fputs("PAGE: 1 1\n", stderr);
|
||||
lseek(print_fd, 0, SEEK_SET);
|
||||
}
|
||||
|
||||
tbytes = backendRunLoop(print_fd, device_fd, -1, NULL, use_bc, 1, side_cb);
|
||||
|
||||
if (print_fd != 0 && tbytes >= 0)
|
||||
_cupsLangPrintFilter(stderr, "INFO", _("Print file sent."));
|
||||
}
|
||||
|
||||
/*
|
||||
* Close the socket connection and input file and return...
|
||||
*/
|
||||
|
||||
close(device_fd);
|
||||
|
||||
if (print_fd != 0)
|
||||
close(print_fd);
|
||||
|
||||
return (CUPS_BACKEND_OK);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'list_devices()' - List all parallel devices.
|
||||
*/
|
||||
|
||||
static void
|
||||
list_devices(void)
|
||||
{
|
||||
#if defined(__hpux) || defined(__sgi) || defined(__sun)
|
||||
static char *funky_hex = "0123456789abcdefghijklmnopqrstuvwxyz";
|
||||
/* Funky hex numbering used for some devices */
|
||||
#endif /* __hpux || __sgi || __sun */
|
||||
|
||||
#ifdef __linux
|
||||
int i; /* Looping var */
|
||||
int fd; /* File descriptor */
|
||||
char device[255], /* Device filename */
|
||||
basedevice[255], /* Base device filename for ports */
|
||||
device_id[1024], /* Device ID string */
|
||||
make_model[1024], /* Make and model */
|
||||
info[1024], /* Info string */
|
||||
uri[1024]; /* Device URI */
|
||||
|
||||
|
||||
if (!access("/dev/parallel/", 0))
|
||||
strcpy(basedevice, "/dev/parallel/");
|
||||
else if (!access("/dev/printers/", 0))
|
||||
strcpy(basedevice, "/dev/printers/");
|
||||
else
|
||||
strcpy(basedevice, "/dev/lp");
|
||||
|
||||
for (i = 0; i < 4; i ++)
|
||||
{
|
||||
/*
|
||||
* Open the port, if available...
|
||||
*/
|
||||
|
||||
sprintf(device, "%s%d", basedevice, i);
|
||||
if ((fd = open(device, O_RDWR | O_EXCL)) < 0)
|
||||
fd = open(device, O_WRONLY);
|
||||
|
||||
if (fd >= 0)
|
||||
{
|
||||
/*
|
||||
* Now grab the IEEE 1284 device ID string...
|
||||
*/
|
||||
|
||||
snprintf(uri, sizeof(uri), "parallel:%s", device);
|
||||
|
||||
if (!backendGetDeviceID(fd, device_id, sizeof(device_id),
|
||||
make_model, sizeof(make_model),
|
||||
NULL, uri, sizeof(uri)))
|
||||
{
|
||||
snprintf(info, sizeof(info), "%s LPT #%d", make_model, i + 1);
|
||||
cupsBackendReport("direct", uri, make_model, info, device_id, NULL);
|
||||
}
|
||||
else
|
||||
{
|
||||
snprintf(info, sizeof(info), "LPT #%d", i + 1);
|
||||
cupsBackendReport("direct", uri, NULL, info, NULL, NULL);
|
||||
}
|
||||
|
||||
close(fd);
|
||||
}
|
||||
}
|
||||
#elif defined(__sgi)
|
||||
int i, j, n; /* Looping vars */
|
||||
char device[255]; /* Device filename */
|
||||
inventory_t *inv; /* Hardware inventory info */
|
||||
|
||||
|
||||
/*
|
||||
* IRIX maintains a hardware inventory of most devices...
|
||||
*/
|
||||
|
||||
setinvent();
|
||||
|
||||
while ((inv = getinvent()) != NULL)
|
||||
{
|
||||
if (inv->inv_class == INV_PARALLEL &&
|
||||
(inv->inv_type == INV_ONBOARD_PLP ||
|
||||
inv->inv_type == INV_EPP_ECP_PLP))
|
||||
{
|
||||
/*
|
||||
* Standard parallel port...
|
||||
*/
|
||||
|
||||
puts("direct parallel:/dev/plp \"Unknown\" \"Onboard Parallel Port\"");
|
||||
}
|
||||
else if (inv->inv_class == INV_PARALLEL &&
|
||||
inv->inv_type == INV_EPC_PLP)
|
||||
{
|
||||
/*
|
||||
* EPC parallel port...
|
||||
*/
|
||||
|
||||
printf("direct parallel:/dev/plp%d \"Unknown\" \"Integral EPC parallel port, Ebus slot %d\"\n",
|
||||
inv->inv_controller, inv->inv_controller);
|
||||
}
|
||||
}
|
||||
|
||||
endinvent();
|
||||
|
||||
/*
|
||||
* Central Data makes serial and parallel "servers" that can be
|
||||
* connected in a number of ways. Look for ports...
|
||||
*/
|
||||
|
||||
for (i = 0; i < 10; i ++)
|
||||
for (j = 0; j < 8; j ++)
|
||||
for (n = 0; n < 32; n ++)
|
||||
{
|
||||
if (i == 8) /* EtherLite */
|
||||
sprintf(device, "/dev/lpn%d%c", j, funky_hex[n]);
|
||||
else if (i == 9) /* PCI */
|
||||
sprintf(device, "/dev/lpp%d%c", j, funky_hex[n]);
|
||||
else /* SCSI */
|
||||
sprintf(device, "/dev/lp%d%d%c", i, j, funky_hex[n]);
|
||||
|
||||
if (access(device, 0) == 0)
|
||||
{
|
||||
if (i == 8)
|
||||
printf("direct parallel:%s \"Unknown\" \"Central Data EtherLite Parallel Port, ID %d, port %d\"\n",
|
||||
device, j, n);
|
||||
else if (i == 9)
|
||||
printf("direct parallel:%s \"Unknown\" \"Central Data PCI Parallel Port, ID %d, port %d\"\n",
|
||||
device, j, n);
|
||||
else
|
||||
printf("direct parallel:%s \"Unknown\" \"Central Data SCSI Parallel Port, logical bus %d, ID %d, port %d\"\n",
|
||||
device, i, j, n);
|
||||
}
|
||||
}
|
||||
#elif defined(__sun)
|
||||
int i, j, n; /* Looping vars */
|
||||
char device[255]; /* Device filename */
|
||||
|
||||
|
||||
/*
|
||||
* Standard parallel ports...
|
||||
*/
|
||||
|
||||
for (i = 0; i < 10; i ++)
|
||||
{
|
||||
sprintf(device, "/dev/ecpp%d", i);
|
||||
if (access(device, 0) == 0)
|
||||
printf("direct parallel:%s \"Unknown\" \"Sun IEEE-1284 Parallel Port #%d\"\n",
|
||||
device, i + 1);
|
||||
}
|
||||
|
||||
for (i = 0; i < 10; i ++)
|
||||
{
|
||||
sprintf(device, "/dev/bpp%d", i);
|
||||
if (access(device, 0) == 0)
|
||||
printf("direct parallel:%s \"Unknown\" \"Sun Standard Parallel Port #%d\"\n",
|
||||
device, i + 1);
|
||||
}
|
||||
|
||||
for (i = 0; i < 3; i ++)
|
||||
{
|
||||
sprintf(device, "/dev/lp%d", i);
|
||||
|
||||
if (access(device, 0) == 0)
|
||||
printf("direct parallel:%s \"Unknown\" \"PC Parallel Port #%d\"\n",
|
||||
device, i + 1);
|
||||
}
|
||||
|
||||
/*
|
||||
* MAGMA parallel ports...
|
||||
*/
|
||||
|
||||
for (i = 0; i < 40; i ++)
|
||||
{
|
||||
sprintf(device, "/dev/pm%02d", i);
|
||||
if (access(device, 0) == 0)
|
||||
printf("direct parallel:%s \"Unknown\" \"MAGMA Parallel Board #%d Port #%d\"\n",
|
||||
device, (i / 10) + 1, (i % 10) + 1);
|
||||
}
|
||||
|
||||
/*
|
||||
* Central Data parallel ports...
|
||||
*/
|
||||
|
||||
for (i = 0; i < 9; i ++)
|
||||
for (j = 0; j < 8; j ++)
|
||||
for (n = 0; n < 32; n ++)
|
||||
{
|
||||
if (i == 8) /* EtherLite */
|
||||
sprintf(device, "/dev/sts/lpN%d%c", j, funky_hex[n]);
|
||||
else
|
||||
sprintf(device, "/dev/sts/lp%c%d%c", i + 'C', j,
|
||||
funky_hex[n]);
|
||||
|
||||
if (access(device, 0) == 0)
|
||||
{
|
||||
if (i == 8)
|
||||
printf("direct parallel:%s \"Unknown\" \"Central Data EtherLite Parallel Port, ID %d, port %d\"\n",
|
||||
device, j, n);
|
||||
else
|
||||
printf("direct parallel:%s \"Unknown\" \"Central Data SCSI Parallel Port, logical bus %d, ID %d, port %d\"\n",
|
||||
device, i, j, n);
|
||||
}
|
||||
}
|
||||
#elif defined(__hpux)
|
||||
int i, j, n; /* Looping vars */
|
||||
char device[255]; /* Device filename */
|
||||
|
||||
|
||||
/*
|
||||
* Standard parallel ports...
|
||||
*/
|
||||
|
||||
if (access("/dev/rlp", 0) == 0)
|
||||
puts("direct parallel:/dev/rlp \"Unknown\" \"Standard Parallel Port (/dev/rlp)\"");
|
||||
|
||||
for (i = 0; i < 7; i ++)
|
||||
for (j = 0; j < 7; j ++)
|
||||
{
|
||||
sprintf(device, "/dev/c%dt%dd0_lp", i, j);
|
||||
if (access(device, 0) == 0)
|
||||
printf("direct parallel:%s \"Unknown\" \"Parallel Port #%d,%d\"\n",
|
||||
device, i, j);
|
||||
}
|
||||
|
||||
/*
|
||||
* Central Data parallel ports...
|
||||
*/
|
||||
|
||||
for (i = 0; i < 9; i ++)
|
||||
for (j = 0; j < 8; j ++)
|
||||
for (n = 0; n < 32; n ++)
|
||||
{
|
||||
if (i == 8) /* EtherLite */
|
||||
sprintf(device, "/dev/lpN%d%c", j, funky_hex[n]);
|
||||
else
|
||||
sprintf(device, "/dev/lp%c%d%c", i + 'C', j,
|
||||
funky_hex[n]);
|
||||
|
||||
if (access(device, 0) == 0)
|
||||
{
|
||||
if (i == 8)
|
||||
printf("direct parallel:%s \"Unknown\" \"Central Data EtherLite Parallel Port, ID %d, port %d\"\n",
|
||||
device, j, n);
|
||||
else
|
||||
printf("direct parallel:%s \"Unknown\" \"Central Data SCSI Parallel Port, logical bus %d, ID %d, port %d\"\n",
|
||||
device, i, j, n);
|
||||
}
|
||||
}
|
||||
#elif defined(__osf__)
|
||||
int i; /* Looping var */
|
||||
int fd; /* File descriptor */
|
||||
char device[255]; /* Device filename */
|
||||
|
||||
|
||||
for (i = 0; i < 3; i ++)
|
||||
{
|
||||
sprintf(device, "/dev/lp%d", i);
|
||||
if ((fd = open(device, O_WRONLY)) >= 0)
|
||||
{
|
||||
close(fd);
|
||||
printf("direct parallel:%s \"Unknown\" \"Parallel Port #%d\"\n", device, i + 1);
|
||||
}
|
||||
}
|
||||
#elif defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__) || defined(__DragonFly__) || defined(__FreeBSD_kernel__)
|
||||
int i; /* Looping var */
|
||||
int fd; /* File descriptor */
|
||||
char device[255]; /* Device filename */
|
||||
|
||||
|
||||
for (i = 0; i < 3; i ++)
|
||||
{
|
||||
sprintf(device, "/dev/lpt%d", i);
|
||||
if ((fd = open(device, O_WRONLY)) >= 0)
|
||||
{
|
||||
close(fd);
|
||||
printf("direct parallel:%s \"Unknown\" \"Parallel Port #%d (interrupt-driven)\"\n", device, i + 1);
|
||||
}
|
||||
|
||||
sprintf(device, "/dev/lpa%d", i);
|
||||
if ((fd = open(device, O_WRONLY)) >= 0)
|
||||
{
|
||||
close(fd);
|
||||
printf("direct parallel:%s \"Unknown\" \"Parallel Port #%d (polled)\"\n", device, i + 1);
|
||||
}
|
||||
}
|
||||
#elif defined(_AIX)
|
||||
int i; /* Looping var */
|
||||
int fd; /* File descriptor */
|
||||
char device[255]; /* Device filename */
|
||||
|
||||
|
||||
for (i = 0; i < 8; i ++)
|
||||
{
|
||||
sprintf(device, "/dev/lp%d", i);
|
||||
if ((fd = open(device, O_WRONLY)) >= 0)
|
||||
{
|
||||
close(fd);
|
||||
printf("direct parallel:%s \"Unknown\" \"Parallel Port #%d\"\n", device, i + 1);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'side_cb()' - Handle side-channel requests...
|
||||
*/
|
||||
|
||||
static int /* O - 0 on success, -1 on error */
|
||||
side_cb(int print_fd, /* I - Print file */
|
||||
int device_fd, /* I - Device file */
|
||||
int snmp_fd, /* I - SNMP socket (unused) */
|
||||
http_addr_t *addr, /* I - Device address (unused) */
|
||||
int use_bc) /* I - Using back-channel? */
|
||||
{
|
||||
cups_sc_command_t command; /* Request command */
|
||||
cups_sc_status_t status; /* Request/response status */
|
||||
char data[2048]; /* Request/response data */
|
||||
int datalen; /* Request/response data size */
|
||||
|
||||
|
||||
(void)snmp_fd;
|
||||
(void)addr;
|
||||
|
||||
datalen = sizeof(data);
|
||||
|
||||
if (cupsSideChannelRead(&command, &status, data, &datalen, 1.0))
|
||||
return (-1);
|
||||
|
||||
switch (command)
|
||||
{
|
||||
case CUPS_SC_CMD_DRAIN_OUTPUT :
|
||||
if (backendDrainOutput(print_fd, device_fd))
|
||||
status = CUPS_SC_STATUS_IO_ERROR;
|
||||
else if (tcdrain(device_fd))
|
||||
status = CUPS_SC_STATUS_IO_ERROR;
|
||||
else
|
||||
status = CUPS_SC_STATUS_OK;
|
||||
|
||||
datalen = 0;
|
||||
break;
|
||||
|
||||
case CUPS_SC_CMD_GET_BIDI :
|
||||
status = CUPS_SC_STATUS_OK;
|
||||
data[0] = use_bc;
|
||||
datalen = 1;
|
||||
break;
|
||||
|
||||
case CUPS_SC_CMD_GET_DEVICE_ID :
|
||||
memset(data, 0, sizeof(data));
|
||||
|
||||
if (backendGetDeviceID(device_fd, data, sizeof(data) - 1,
|
||||
NULL, 0, NULL, NULL, 0))
|
||||
{
|
||||
status = CUPS_SC_STATUS_NOT_IMPLEMENTED;
|
||||
datalen = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
status = CUPS_SC_STATUS_OK;
|
||||
datalen = strlen(data);
|
||||
}
|
||||
break;
|
||||
|
||||
default :
|
||||
status = CUPS_SC_STATUS_NOT_IMPLEMENTED;
|
||||
datalen = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
return (cupsSideChannelWrite(command, status, data, datalen, 1.0));
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
*/
|
||||
+4
-1
@@ -436,7 +436,10 @@ backendWaitLoop(
|
||||
{
|
||||
fd_set input; /* Input set for reading */
|
||||
time_t curtime, /* Current time */
|
||||
snmp_update = 0; /* Last SNMP status update */
|
||||
snmp_update = 0;
|
||||
#if defined(HAVE_SIGACTION) && !defined(HAVE_SIGSET)
|
||||
struct sigaction action; /* Actions for POSIX signals */
|
||||
#endif /* HAVE_SIGACTION && !HAVE_SIGSET */
|
||||
|
||||
|
||||
fprintf(stderr, "DEBUG: backendWaitLoop(snmp_fd=%d, addr=%p, side_cb=%p)\n",
|
||||
|
||||
+1327
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
@@ -229,12 +229,12 @@ backendSNMPSupplies(
|
||||
|
||||
for (i = 0, ptr = value; i < num_supplies; i ++, ptr += strlen(ptr))
|
||||
{
|
||||
if (supplies[i].max_capacity > 0 && supplies[i].level >= 0)
|
||||
if (supplies[i].max_capacity > 0)
|
||||
percent = 100 * supplies[i].level / supplies[i].max_capacity;
|
||||
else
|
||||
percent = 50;
|
||||
|
||||
if (percent <= 5)
|
||||
if (percent <= 10)
|
||||
{
|
||||
switch (supplies[i].type)
|
||||
{
|
||||
@@ -279,7 +279,7 @@ backendSNMPSupplies(
|
||||
if (i)
|
||||
*ptr++ = ',';
|
||||
|
||||
if (supplies[i].max_capacity > 0 && supplies[i].level >= 0)
|
||||
if (supplies[i].max_capacity > 0)
|
||||
sprintf(ptr, "%d", percent);
|
||||
else
|
||||
strcpy(ptr, "-1");
|
||||
@@ -801,7 +801,6 @@ backend_walk_cb(cups_snmp_t *packet, /* I - SNMP packet */
|
||||
break;
|
||||
|
||||
case CUPS_TC_csShiftJIS :
|
||||
case CUPS_TC_csWindows31J : /* Close enough for our purposes */
|
||||
cupsCharsetToUTF8((cups_utf8_t *)supplies[i - 1].name,
|
||||
(char *)packet->object_value.string.bytes,
|
||||
sizeof(supplies[0].name), CUPS_JIS_X0213);
|
||||
|
||||
+4
-16
@@ -3,7 +3,7 @@
|
||||
*
|
||||
* SNMP discovery backend for CUPS.
|
||||
*
|
||||
* Copyright 2007-2012 by Apple Inc.
|
||||
* Copyright 2007-2011 by Apple Inc.
|
||||
* Copyright 2006-2007 by Easy Software Products, all rights reserved.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
@@ -948,7 +948,7 @@ read_snmp_response(int fd) /* I - SNMP socket file descriptor */
|
||||
debug_printf("DEBUG: request-id=%d\n", packet.request_id);
|
||||
debug_printf("DEBUG: error-status=%d\n", packet.error_status);
|
||||
|
||||
if (packet.error_status && packet.request_id != DEVICE_TYPE)
|
||||
if (packet.error_status)
|
||||
return;
|
||||
|
||||
/*
|
||||
@@ -1112,18 +1112,12 @@ read_snmp_response(int fd) /* I - SNMP socket file descriptor */
|
||||
|
||||
case DEVICE_URI :
|
||||
if (device && packet.object_type == CUPS_ASN1_OCTET_STRING &&
|
||||
!device->uri && packet.object_value.string.num_bytes > 3)
|
||||
!device->uri && packet.object_value.string.num_bytes > 0)
|
||||
{
|
||||
/*
|
||||
* Update an existing cache entry...
|
||||
*/
|
||||
|
||||
char scheme[32], /* URI scheme */
|
||||
userpass[256], /* Username:password in URI */
|
||||
hostname[256], /* Hostname in URI */
|
||||
resource[1024]; /* Resource path in URI */
|
||||
int port; /* Port number in URI */
|
||||
|
||||
if (!strncmp((char *)packet.object_value.string.bytes, "lpr:", 4))
|
||||
{
|
||||
/*
|
||||
@@ -1133,13 +1127,7 @@ read_snmp_response(int fd) /* I - SNMP socket file descriptor */
|
||||
packet.object_value.string.bytes[2] = 'd';
|
||||
}
|
||||
|
||||
if (httpSeparateURI(HTTP_URI_CODING_ALL,
|
||||
(char *)packet.object_value.string.bytes,
|
||||
scheme, sizeof(scheme),
|
||||
userpass, sizeof(userpass),
|
||||
hostname, sizeof(hostname), &port,
|
||||
resource, sizeof(resource)) >= HTTP_URI_OK)
|
||||
device->uri = strdup((char *)packet.object_value.string.bytes);
|
||||
device->uri = strdup((char *)packet.object_value.string.bytes);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
+5
-24
@@ -3,7 +3,7 @@
|
||||
*
|
||||
* Backend test program for CUPS.
|
||||
*
|
||||
* Copyright 2007-2012 by Apple Inc.
|
||||
* Copyright 2007-2010 by Apple Inc.
|
||||
* Copyright 1997-2005 by Easy Software Products, all rights reserved.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
@@ -47,7 +47,7 @@ static int job_canceled = 0;
|
||||
*/
|
||||
|
||||
static void sigterm_handler(int sig);
|
||||
static void usage(void) __attribute__((noreturn));
|
||||
static void usage(void);
|
||||
static void walk_cb(const char *oid, const char *data, int datalen,
|
||||
void *context);
|
||||
|
||||
@@ -57,7 +57,7 @@ static void walk_cb(const char *oid, const char *data, int datalen,
|
||||
*
|
||||
* Usage:
|
||||
*
|
||||
* testbackend [-s] [-t] device-uri job-id user title copies options [file]
|
||||
* betest [-s] [-t] device-uri job-id user title copies options [file]
|
||||
*/
|
||||
|
||||
int /* O - Exit status */
|
||||
@@ -75,9 +75,7 @@ main(int argc, /* I - Number of command-line args */
|
||||
const char *oid = ".1.3.6.1.2.1.43.10.2.1.4.1.1";
|
||||
/* OID to lookup or walk */
|
||||
char scheme[255], /* Scheme in URI == backend */
|
||||
backend[1024], /* Backend path */
|
||||
libpath[1024], /* Path for libcups */
|
||||
*ptr; /* Pointer into path */
|
||||
backend[1024]; /* Backend path */
|
||||
const char *serverbin; /* CUPS_SERVERBIN environment variable */
|
||||
int fd, /* Temporary file descriptor */
|
||||
back_fds[2], /* Back-channel pipe */
|
||||
@@ -89,23 +87,6 @@ main(int argc, /* I - Number of command-line args */
|
||||
status; /* Exit status */
|
||||
|
||||
|
||||
/*
|
||||
* Get the current directory and point the run-time linker at the "cups"
|
||||
* subdirectory...
|
||||
*/
|
||||
|
||||
if (getcwd(libpath, sizeof(libpath)) &&
|
||||
(ptr = strrchr(libpath, '/')) != NULL && !strcmp(ptr, "/backend"))
|
||||
{
|
||||
strlcpy(ptr, "/cups", sizeof(libpath) - (ptr - libpath));
|
||||
if (access(libpath, 0))
|
||||
#ifdef __APPLE__
|
||||
setenv("DYLD_LIBRARY_PATH", libpath, 1);
|
||||
#else
|
||||
setenv("LD_LIBRARY_PATH", libpath, 1);
|
||||
#endif /* __APPLE__ */
|
||||
}
|
||||
|
||||
/*
|
||||
* See if we have side-channel tests to do...
|
||||
*/
|
||||
@@ -588,7 +569,7 @@ main(int argc, /* I - Number of command-line args */
|
||||
kill(data_pid, SIGTERM);
|
||||
kill(back_pid, SIGTERM);
|
||||
}
|
||||
|
||||
|
||||
while ((pid = wait(&status)) > 0)
|
||||
{
|
||||
if (status)
|
||||
|
||||
+51
-23
@@ -761,8 +761,24 @@ print_device(const char *uri, /* I - Device URI */
|
||||
|
||||
fprintf(stderr, "DEBUG: Sent %lld bytes...\n", (off_t)total_bytes);
|
||||
|
||||
if (!print_fd)
|
||||
{
|
||||
/*
|
||||
* Re-enable the SIGTERM handler so pthread_kill() will work...
|
||||
*/
|
||||
|
||||
struct sigaction action; /* POSIX signal action */
|
||||
|
||||
memset(&action, 0, sizeof(action));
|
||||
|
||||
sigemptyset(&action.sa_mask);
|
||||
sigaddset(&action.sa_mask, SIGTERM);
|
||||
action.sa_handler = sigterm_handler;
|
||||
sigaction(SIGTERM, &action, NULL);
|
||||
}
|
||||
|
||||
/*
|
||||
* Signal the side channel thread to exit...
|
||||
* Wait for the side channel thread to exit...
|
||||
*/
|
||||
|
||||
if (have_sidechannel)
|
||||
@@ -789,23 +805,44 @@ print_device(const char *uri, /* I - Device URI */
|
||||
&cond_timeout) != 0)
|
||||
break;
|
||||
}
|
||||
|
||||
if (!g.sidechannel_thread_done)
|
||||
{
|
||||
/*
|
||||
* Force the side-channel thread to exit...
|
||||
*/
|
||||
|
||||
fputs("DEBUG: Force the side-channel thread to exit...\n", stderr);
|
||||
pthread_kill(sidechannel_thread_id, SIGTERM);
|
||||
}
|
||||
}
|
||||
|
||||
pthread_mutex_unlock(&g.sidechannel_thread_mutex);
|
||||
|
||||
pthread_join(sidechannel_thread_id, NULL);
|
||||
|
||||
pthread_cond_destroy(&g.sidechannel_thread_cond);
|
||||
pthread_mutex_destroy(&g.sidechannel_thread_mutex);
|
||||
}
|
||||
|
||||
pthread_cond_destroy(&g.readwrite_lock_cond);
|
||||
pthread_mutex_destroy(&g.readwrite_lock_mutex);
|
||||
|
||||
/*
|
||||
* Signal the read thread to exit then wait 7 seconds for it to complete...
|
||||
* Signal the read thread to stop...
|
||||
*/
|
||||
|
||||
g.read_thread_stop = 1;
|
||||
|
||||
/*
|
||||
* Give the read thread WAIT_EOF_DELAY seconds to complete all the data. If
|
||||
* we are not signaled in that time then force the thread to exit.
|
||||
*/
|
||||
|
||||
pthread_mutex_lock(&g.read_thread_mutex);
|
||||
|
||||
if (!g.read_thread_done)
|
||||
{
|
||||
fputs("DEBUG: Waiting for read thread to exit...\n", stderr);
|
||||
|
||||
gettimeofday(&tv, NULL);
|
||||
cond_timeout.tv_sec = tv.tv_sec + WAIT_EOF_DELAY;
|
||||
cond_timeout.tv_nsec = tv.tv_usec * 1000;
|
||||
@@ -817,34 +854,25 @@ print_device(const char *uri, /* I - Device URI */
|
||||
break;
|
||||
}
|
||||
|
||||
/*
|
||||
* If it didn't exit abort the pending read and wait an additional second...
|
||||
*/
|
||||
|
||||
if (!g.read_thread_done)
|
||||
{
|
||||
fputs("DEBUG: Read thread still active, aborting the pending read...\n",
|
||||
stderr);
|
||||
/*
|
||||
* Force the read thread to exit...
|
||||
*/
|
||||
|
||||
g.wait_eof = 0;
|
||||
|
||||
(*g.classdriver)->Abort(g.classdriver);
|
||||
|
||||
gettimeofday(&tv, NULL);
|
||||
cond_timeout.tv_sec = tv.tv_sec + 1;
|
||||
cond_timeout.tv_nsec = tv.tv_usec * 1000;
|
||||
|
||||
while (!g.read_thread_done)
|
||||
{
|
||||
if (pthread_cond_timedwait(&g.read_thread_cond, &g.read_thread_mutex,
|
||||
&cond_timeout) != 0)
|
||||
break;
|
||||
}
|
||||
fputs("DEBUG: Force the read thread to exit...\n", stderr);
|
||||
pthread_kill(read_thread_id, SIGTERM);
|
||||
}
|
||||
}
|
||||
|
||||
pthread_mutex_unlock(&g.read_thread_mutex);
|
||||
|
||||
pthread_join(read_thread_id, NULL); /* wait for the read thread to return */
|
||||
|
||||
pthread_cond_destroy(&g.read_thread_cond);
|
||||
pthread_mutex_destroy(&g.read_thread_mutex);
|
||||
|
||||
/*
|
||||
* Close the connection and input file and general clean up...
|
||||
*/
|
||||
|
||||
+48
-156
@@ -3,7 +3,7 @@
|
||||
*
|
||||
* Libusb interface code for CUPS.
|
||||
*
|
||||
* Copyright 2007-2012 by Apple Inc.
|
||||
* Copyright 2007-2011 by Apple Inc.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
* property of Apple Inc. and are protected by Federal copyright
|
||||
@@ -423,34 +423,22 @@ get_device_id(usb_printer_t *printer, /* I - Printer */
|
||||
* bytes. The 1284 spec says the length is stored MSB first...
|
||||
*/
|
||||
|
||||
length = (((unsigned)buffer[0] & 255) << 8) |
|
||||
length = (((unsigned)buffer[0] & 255) << 8) +
|
||||
((unsigned)buffer[1] & 255);
|
||||
|
||||
/*
|
||||
* Check to see if the length is larger than our buffer or less than 14 bytes
|
||||
* (the minimum valid device ID is "MFG:x;MDL:y;" with 2 bytes for the length).
|
||||
*
|
||||
* If the length is out-of-range, assume that the vendor incorrectly
|
||||
* implemented the 1284 spec and re-read the length as LSB first,..
|
||||
* Check to see if the length is larger than our buffer; first
|
||||
* assume that the vendor incorrectly implemented the 1284 spec,
|
||||
* and then limit the length to the size of our buffer...
|
||||
*/
|
||||
|
||||
if (length > bufsize || length < 14)
|
||||
length = (((unsigned)buffer[1] & 255) << 8) |
|
||||
if (length > bufsize)
|
||||
length = (((unsigned)buffer[1] & 255) << 8) +
|
||||
((unsigned)buffer[0] & 255);
|
||||
|
||||
if (length > bufsize)
|
||||
length = bufsize;
|
||||
|
||||
if (length < 14)
|
||||
{
|
||||
/*
|
||||
* Invalid device ID, clear it!
|
||||
*/
|
||||
|
||||
*buffer = '\0';
|
||||
return (-1);
|
||||
}
|
||||
|
||||
length -= 2;
|
||||
|
||||
/*
|
||||
@@ -517,7 +505,6 @@ make_device_uri(
|
||||
*mdl, /* Model */
|
||||
*des, /* Description */
|
||||
*sern; /* Serial number */
|
||||
size_t mfglen; /* Length of manufacturer string */
|
||||
char tempmfg[256], /* Temporary manufacturer string */
|
||||
tempsern[256], /* Temporary serial number string */
|
||||
*tempptr; /* Pointer into temp string */
|
||||
@@ -597,16 +584,6 @@ make_device_uri(
|
||||
mfg = tempmfg;
|
||||
}
|
||||
|
||||
mfglen = strlen(mfg);
|
||||
|
||||
if (!strncasecmp(mdl, mfg, mfglen) && _cups_isspace(mdl[mfglen]))
|
||||
{
|
||||
mdl += mfglen + 1;
|
||||
|
||||
while (_cups_isspace(*mdl))
|
||||
mdl ++;
|
||||
}
|
||||
|
||||
/*
|
||||
* Generate the device URI from the manufacturer, model, serial number,
|
||||
* and interface number...
|
||||
@@ -643,7 +620,6 @@ open_device(usb_printer_t *printer, /* I - Printer */
|
||||
int verbose) /* I - Update connecting-to-device state? */
|
||||
{
|
||||
int number; /* Configuration/interface/altset numbers */
|
||||
char current; /* Current configuration */
|
||||
|
||||
|
||||
/*
|
||||
@@ -660,37 +636,27 @@ open_device(usb_printer_t *printer, /* I - Printer */
|
||||
if ((printer->handle = usb_open(printer->device)) == NULL)
|
||||
return (-1);
|
||||
|
||||
/*
|
||||
* Then set the desired configuration...
|
||||
*/
|
||||
|
||||
if (verbose)
|
||||
fputs("STATE: +connecting-to-device\n", stderr);
|
||||
|
||||
/*
|
||||
* Set the desired configuration, but only if it needs changing. Some
|
||||
* printers (e.g., Samsung) don't like usb_set_configuration. It will succeed,
|
||||
* but the following print job is sometimes silently lost by the printer.
|
||||
*/
|
||||
|
||||
if (usb_control_msg(printer->handle,
|
||||
USB_TYPE_STANDARD | USB_ENDPOINT_IN | USB_RECIP_DEVICE,
|
||||
8, /* GET_CONFIGURATION */
|
||||
0, 0, ¤t, 1, 5000) != 1)
|
||||
current = 0; /* Assume not configured */
|
||||
|
||||
number = printer->device->config[printer->conf].bConfigurationValue;
|
||||
if (number != current)
|
||||
{
|
||||
if (usb_set_configuration(printer->handle, number) < 0)
|
||||
{
|
||||
/*
|
||||
* If the set fails, chances are that the printer only supports a
|
||||
* single configuration. Technically these printers don't conform to
|
||||
* the USB printer specification, but otherwise they'll work...
|
||||
*/
|
||||
|
||||
if (errno != EBUSY)
|
||||
fprintf(stderr, "DEBUG: Failed to set configuration %d for %04x:%04x\n",
|
||||
number, printer->device->descriptor.idVendor,
|
||||
printer->device->descriptor.idProduct);
|
||||
}
|
||||
if (usb_set_configuration(printer->handle, number) < 0)
|
||||
{
|
||||
/*
|
||||
* If the set fails, chances are that the printer only supports a
|
||||
* single configuration. Technically these printers don't conform to
|
||||
* the USB printer specification, but otherwise they'll work...
|
||||
*/
|
||||
|
||||
if (errno != EBUSY)
|
||||
fprintf(stderr, "DEBUG: Failed to set configuration %d for %04x:%04x\n",
|
||||
number, printer->device->descriptor.idVendor,
|
||||
printer->device->descriptor.idProduct);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -702,35 +668,41 @@ open_device(usb_printer_t *printer, /* I - Printer */
|
||||
while (usb_claim_interface(printer->handle, number) < 0)
|
||||
{
|
||||
if (errno != EBUSY)
|
||||
fprintf(stderr,
|
||||
"DEBUG: Failed to claim interface %d for %04x:%04x: %s\n",
|
||||
fprintf(stderr, "DEBUG: Failed to claim interface %d for %04x:%04x: %s\n",
|
||||
number, printer->device->descriptor.idVendor,
|
||||
printer->device->descriptor.idProduct, strerror(errno));
|
||||
|
||||
goto error;
|
||||
}
|
||||
|
||||
/*
|
||||
* Set alternate setting, but only if there is more than one option. Some
|
||||
* printers (e.g., Samsung) don't like usb_set_altinterface.
|
||||
*/
|
||||
|
||||
if (printer->device->config[printer->conf].interface[printer->iface].
|
||||
num_altsetting > 1)
|
||||
{
|
||||
number = printer->device->config[printer->conf].interface[printer->iface].
|
||||
altsetting[printer->altset].bAlternateSetting;
|
||||
|
||||
while (usb_set_altinterface(printer->handle, number) < 0)
|
||||
#if 0 /* STR #3801: Claiming interface 0 causes problems with some printers */
|
||||
if (number != 0)
|
||||
while (usb_claim_interface(printer->handle, 0) < 0)
|
||||
{
|
||||
if (errno != EBUSY)
|
||||
fprintf(stderr,
|
||||
"DEBUG: Failed to set alternate interface %d for %04x:%04x: "
|
||||
"%s\n", number, printer->device->descriptor.idVendor,
|
||||
printer->device->descriptor.idProduct, strerror(errno));
|
||||
fprintf(stderr, "DEBUG: Failed to claim interface 0 for %04x:%04x: %s\n",
|
||||
printer->device->descriptor.idVendor,
|
||||
printer->device->descriptor.idProduct, strerror(errno));
|
||||
|
||||
goto error;
|
||||
}
|
||||
#endif /* 0 */
|
||||
|
||||
/*
|
||||
* Set alternate setting...
|
||||
*/
|
||||
|
||||
number = printer->device->config[printer->conf].interface[printer->iface].
|
||||
altsetting[printer->altset].bAlternateSetting;
|
||||
while (usb_set_altinterface(printer->handle, number) < 0)
|
||||
{
|
||||
if (errno != EBUSY)
|
||||
fprintf(stderr,
|
||||
"DEBUG: Failed to set alternate interface %d for %04x:%04x: %s\n",
|
||||
number, printer->device->descriptor.idVendor,
|
||||
printer->device->descriptor.idProduct, strerror(errno));
|
||||
|
||||
goto error;
|
||||
}
|
||||
|
||||
if (verbose)
|
||||
@@ -764,87 +736,7 @@ print_cb(usb_printer_t *printer, /* I - Printer */
|
||||
const char *device_id, /* I - IEEE-1284 device ID */
|
||||
const void *data) /* I - User data (make, model, S/N) */
|
||||
{
|
||||
char requested_uri[1024], /* Requested URI */
|
||||
*requested_ptr, /* Pointer into requested URI */
|
||||
detected_uri[1024], /* Detected URI */
|
||||
*detected_ptr; /* Pointer into detected URI */
|
||||
|
||||
|
||||
/*
|
||||
* If we have an exact match, stop now...
|
||||
*/
|
||||
|
||||
if (!strcmp((char *)data, device_uri))
|
||||
return (1);
|
||||
|
||||
/*
|
||||
* Work on copies of the URIs...
|
||||
*/
|
||||
|
||||
strlcpy(requested_uri, (char *)data, sizeof(requested_uri));
|
||||
strlcpy(detected_uri, device_uri, sizeof(detected_uri));
|
||||
|
||||
/*
|
||||
* libusb-discovered URIs can have an "interface" specification and this
|
||||
* never happens for usblp-discovered URIs, so remove the "interface"
|
||||
* specification from the URI which we are checking currently. This way a
|
||||
* queue for a usblp-discovered printer can now be accessed via libusb.
|
||||
*
|
||||
* Similarly, strip "?serial=NNN...NNN" as needed.
|
||||
*/
|
||||
|
||||
if ((requested_ptr = strstr(requested_uri, "?interface=")) == NULL)
|
||||
requested_ptr = strstr(requested_uri, "&interface=");
|
||||
if ((detected_ptr = strstr(detected_uri, "?interface=")) == NULL)
|
||||
detected_ptr = strstr(detected_uri, "&interface=");
|
||||
|
||||
if (!requested_ptr && detected_ptr)
|
||||
{
|
||||
/*
|
||||
* Strip "[?&]interface=nnn" from the detected printer.
|
||||
*/
|
||||
|
||||
*detected_ptr = '\0';
|
||||
}
|
||||
else if (requested_ptr && !detected_ptr)
|
||||
{
|
||||
/*
|
||||
* Strip "[?&]interface=nnn" from the requested printer.
|
||||
*/
|
||||
|
||||
*requested_ptr = '\0';
|
||||
}
|
||||
|
||||
if ((requested_ptr = strstr(requested_uri, "?serial=?")) != NULL)
|
||||
{
|
||||
/*
|
||||
* Strip "?serial=?" from the requested printer. This is a special
|
||||
* case, as "?serial=?" means no serial number and not the serial
|
||||
* number '?'. This is not covered by the checks below...
|
||||
*/
|
||||
|
||||
*requested_ptr = '\0';
|
||||
}
|
||||
|
||||
if ((requested_ptr = strstr(requested_uri, "?serial=")) == NULL &&
|
||||
(detected_ptr = strstr(detected_uri, "?serial=")) != NULL)
|
||||
{
|
||||
/*
|
||||
* Strip "?serial=nnn" from the detected printer.
|
||||
*/
|
||||
|
||||
*detected_ptr = '\0';
|
||||
}
|
||||
else if (requested_ptr && !detected_ptr)
|
||||
{
|
||||
/*
|
||||
* Strip "?serial=nnn" from the requested printer.
|
||||
*/
|
||||
|
||||
*requested_ptr = '\0';
|
||||
}
|
||||
|
||||
return (!strcmp(requested_uri, detected_uri));
|
||||
return (!strcmp((char *)data, device_uri));
|
||||
}
|
||||
|
||||
|
||||
|
||||
+34
-28
@@ -1,28 +1,34 @@
|
||||
lpc.o: lpc.c ../cups/cups-private.h ../cups/cups.h ../cups/file.h \
|
||||
../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
|
||||
../cups/language.h ../cups/string-private.h ../config.h \
|
||||
../cups/debug-private.h ../cups/ppd-private.h ../cups/ppd.h \
|
||||
../cups/pwg-private.h ../cups/http-private.h ../cups/md5-private.h \
|
||||
../cups/ipp-private.h ../cups/language-private.h ../cups/transcode.h \
|
||||
../cups/thread-private.h
|
||||
lpq.o: lpq.c ../cups/cups-private.h ../cups/cups.h ../cups/file.h \
|
||||
../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
|
||||
../cups/language.h ../cups/string-private.h ../config.h \
|
||||
../cups/debug-private.h ../cups/ppd-private.h ../cups/ppd.h \
|
||||
../cups/pwg-private.h ../cups/http-private.h ../cups/md5-private.h \
|
||||
../cups/ipp-private.h ../cups/language-private.h ../cups/transcode.h \
|
||||
../cups/thread-private.h
|
||||
lpr.o: lpr.c ../cups/cups-private.h ../cups/cups.h ../cups/file.h \
|
||||
../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
|
||||
../cups/language.h ../cups/string-private.h ../config.h \
|
||||
../cups/debug-private.h ../cups/ppd-private.h ../cups/ppd.h \
|
||||
../cups/pwg-private.h ../cups/http-private.h ../cups/md5-private.h \
|
||||
../cups/ipp-private.h ../cups/language-private.h ../cups/transcode.h \
|
||||
../cups/thread-private.h
|
||||
lprm.o: lprm.c ../cups/cups-private.h ../cups/cups.h ../cups/file.h \
|
||||
../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
|
||||
../cups/language.h ../cups/string-private.h ../config.h \
|
||||
../cups/debug-private.h ../cups/ppd-private.h ../cups/ppd.h \
|
||||
../cups/pwg-private.h ../cups/http-private.h ../cups/md5-private.h \
|
||||
../cups/ipp-private.h ../cups/language-private.h ../cups/transcode.h \
|
||||
../cups/thread-private.h
|
||||
# DO NOT DELETE THIS LINE -- make depend depends on it.
|
||||
|
||||
lpc.o: ../cups/cups-private.h ../cups/cups.h ../cups/file.h
|
||||
lpc.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
|
||||
lpc.o: ../cups/language.h ../cups/string-private.h ../config.h
|
||||
lpc.o: ../cups/debug-private.h ../cups/ppd-private.h ../cups/ppd.h
|
||||
lpc.o: ../cups/cups.h ../cups/pwg-private.h ../cups/http-private.h
|
||||
lpc.o: ../cups/http.h ../cups/md5-private.h ../cups/ipp-private.h
|
||||
lpc.o: ../cups/ipp.h ../cups/language-private.h ../cups/transcode.h
|
||||
lpc.o: ../cups/thread-private.h
|
||||
lpq.o: ../cups/cups-private.h ../cups/cups.h ../cups/file.h
|
||||
lpq.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
|
||||
lpq.o: ../cups/language.h ../cups/string-private.h ../config.h
|
||||
lpq.o: ../cups/debug-private.h ../cups/ppd-private.h ../cups/ppd.h
|
||||
lpq.o: ../cups/cups.h ../cups/pwg-private.h ../cups/http-private.h
|
||||
lpq.o: ../cups/http.h ../cups/md5-private.h ../cups/ipp-private.h
|
||||
lpq.o: ../cups/ipp.h ../cups/language-private.h ../cups/transcode.h
|
||||
lpq.o: ../cups/thread-private.h
|
||||
lpr.o: ../cups/cups-private.h ../cups/cups.h ../cups/file.h
|
||||
lpr.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
|
||||
lpr.o: ../cups/language.h ../cups/string-private.h ../config.h
|
||||
lpr.o: ../cups/debug-private.h ../cups/ppd-private.h ../cups/ppd.h
|
||||
lpr.o: ../cups/cups.h ../cups/pwg-private.h ../cups/http-private.h
|
||||
lpr.o: ../cups/http.h ../cups/md5-private.h ../cups/ipp-private.h
|
||||
lpr.o: ../cups/ipp.h ../cups/language-private.h ../cups/transcode.h
|
||||
lpr.o: ../cups/thread-private.h
|
||||
lprm.o: ../cups/cups-private.h ../cups/cups.h ../cups/file.h
|
||||
lprm.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
|
||||
lprm.o: ../cups/language.h ../cups/string-private.h ../config.h
|
||||
lprm.o: ../cups/debug-private.h ../cups/ppd-private.h ../cups/ppd.h
|
||||
lprm.o: ../cups/cups.h ../cups/pwg-private.h ../cups/http-private.h
|
||||
lprm.o: ../cups/http.h ../cups/md5-private.h ../cups/ipp-private.h
|
||||
lprm.o: ../cups/ipp.h ../cups/language-private.h ../cups/transcode.h
|
||||
lprm.o: ../cups/thread-private.h
|
||||
|
||||
+2
-2
@@ -3,7 +3,7 @@
|
||||
#
|
||||
# Berkeley commands makefile for CUPS.
|
||||
#
|
||||
# Copyright 2007-2012 by Apple Inc.
|
||||
# Copyright 2007-2011 by Apple Inc.
|
||||
# Copyright 1997-2006 by Easy Software Products, all rights reserved.
|
||||
#
|
||||
# These coded instructions, statements, and computer programs are the
|
||||
@@ -54,7 +54,7 @@ clean:
|
||||
#
|
||||
|
||||
depend:
|
||||
$(CC) -MM $(ALL_CFLAGS) $(OBJS:.o=.c) >Dependencies
|
||||
makedepend -Y -I.. -fDependencies $(OBJS:.o=.c) >/dev/null 2>&1
|
||||
|
||||
|
||||
#
|
||||
|
||||
+1
-1
@@ -39,7 +39,7 @@ static http_t *connect_server(const char *, http_t *);
|
||||
static int show_jobs(const char *, http_t *, const char *,
|
||||
const char *, const int, const int);
|
||||
static void show_printer(const char *, http_t *, const char *);
|
||||
static void usage(void) __attribute__((noreturn));
|
||||
static void usage(void);
|
||||
|
||||
|
||||
/*
|
||||
|
||||
+75
-73
@@ -1,73 +1,75 @@
|
||||
help-index.o: help-index.c cgi-private.h cgi.h ../cups/cups.h \
|
||||
../cups/file.h ../cups/versioning.h ../cups/ipp.h ../cups/http.h \
|
||||
../cups/array.h ../cups/language.h help-index.h \
|
||||
../cups/debug-private.h ../cups/language-private.h ../cups/transcode.h \
|
||||
../cups/string-private.h ../config.h ../cups/ipp-private.h \
|
||||
../cups/dir.h
|
||||
html.o: html.c cgi-private.h cgi.h ../cups/cups.h ../cups/file.h \
|
||||
../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
|
||||
../cups/language.h help-index.h ../cups/debug-private.h \
|
||||
../cups/language-private.h ../cups/transcode.h \
|
||||
../cups/string-private.h ../config.h ../cups/ipp-private.h
|
||||
ipp-var.o: ipp-var.c cgi-private.h cgi.h ../cups/cups.h ../cups/file.h \
|
||||
../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
|
||||
../cups/language.h help-index.h ../cups/debug-private.h \
|
||||
../cups/language-private.h ../cups/transcode.h \
|
||||
../cups/string-private.h ../config.h ../cups/ipp-private.h
|
||||
search.o: search.c cgi-private.h cgi.h ../cups/cups.h ../cups/file.h \
|
||||
../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
|
||||
../cups/language.h help-index.h ../cups/debug-private.h \
|
||||
../cups/language-private.h ../cups/transcode.h \
|
||||
../cups/string-private.h ../config.h ../cups/ipp-private.h
|
||||
template.o: template.c cgi-private.h cgi.h ../cups/cups.h ../cups/file.h \
|
||||
../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
|
||||
../cups/language.h help-index.h ../cups/debug-private.h \
|
||||
../cups/language-private.h ../cups/transcode.h \
|
||||
../cups/string-private.h ../config.h ../cups/ipp-private.h
|
||||
var.o: var.c cgi-private.h cgi.h ../cups/cups.h ../cups/file.h \
|
||||
../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
|
||||
../cups/language.h help-index.h ../cups/debug-private.h \
|
||||
../cups/language-private.h ../cups/transcode.h \
|
||||
../cups/string-private.h ../config.h ../cups/ipp-private.h \
|
||||
../cups/md5-private.h
|
||||
admin.o: admin.c cgi-private.h cgi.h ../cups/cups.h ../cups/file.h \
|
||||
../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
|
||||
../cups/language.h help-index.h ../cups/debug-private.h \
|
||||
../cups/language-private.h ../cups/transcode.h \
|
||||
../cups/string-private.h ../config.h ../cups/ipp-private.h \
|
||||
../cups/adminutil.h ../cups/ppd.h
|
||||
classes.o: classes.c cgi-private.h cgi.h ../cups/cups.h ../cups/file.h \
|
||||
../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
|
||||
../cups/language.h help-index.h ../cups/debug-private.h \
|
||||
../cups/language-private.h ../cups/transcode.h \
|
||||
../cups/string-private.h ../config.h ../cups/ipp-private.h
|
||||
help.o: help.c cgi-private.h cgi.h ../cups/cups.h ../cups/file.h \
|
||||
../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
|
||||
../cups/language.h help-index.h ../cups/debug-private.h \
|
||||
../cups/language-private.h ../cups/transcode.h \
|
||||
../cups/string-private.h ../config.h ../cups/ipp-private.h
|
||||
jobs.o: jobs.c cgi-private.h cgi.h ../cups/cups.h ../cups/file.h \
|
||||
../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
|
||||
../cups/language.h help-index.h ../cups/debug-private.h \
|
||||
../cups/language-private.h ../cups/transcode.h \
|
||||
../cups/string-private.h ../config.h ../cups/ipp-private.h
|
||||
makedocset.o: makedocset.c cgi.h ../cups/cups.h ../cups/file.h \
|
||||
../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
|
||||
../cups/language.h help-index.h
|
||||
printers.o: printers.c cgi-private.h cgi.h ../cups/cups.h ../cups/file.h \
|
||||
../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
|
||||
../cups/language.h help-index.h ../cups/debug-private.h \
|
||||
../cups/language-private.h ../cups/transcode.h \
|
||||
../cups/string-private.h ../config.h ../cups/ipp-private.h
|
||||
testcgi.o: testcgi.c cgi.h ../cups/cups.h ../cups/file.h \
|
||||
../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
|
||||
../cups/language.h help-index.h
|
||||
testhi.o: testhi.c cgi.h ../cups/cups.h ../cups/file.h \
|
||||
../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
|
||||
../cups/language.h help-index.h
|
||||
testtemplate.o: testtemplate.c cgi.h ../cups/cups.h ../cups/file.h \
|
||||
../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
|
||||
../cups/language.h help-index.h
|
||||
websearch.o: websearch.c cgi.h ../cups/cups.h ../cups/file.h \
|
||||
../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
|
||||
../cups/language.h help-index.h
|
||||
# DO NOT DELETE
|
||||
|
||||
help-index.o: cgi-private.h cgi.h ../cups/cups.h ../cups/file.h
|
||||
help-index.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h
|
||||
help-index.o: ../cups/array.h ../cups/language.h ../cups/array.h help-index.h
|
||||
help-index.o: ../cups/debug-private.h ../cups/language-private.h
|
||||
help-index.o: ../cups/transcode.h ../cups/string-private.h ../config.h
|
||||
help-index.o: ../cups/dir.h
|
||||
html.o: cgi-private.h cgi.h ../cups/cups.h ../cups/file.h
|
||||
html.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
|
||||
html.o: ../cups/language.h ../cups/array.h help-index.h
|
||||
html.o: ../cups/debug-private.h ../cups/language-private.h
|
||||
html.o: ../cups/transcode.h ../cups/string-private.h ../config.h
|
||||
ipp-var.o: cgi-private.h cgi.h ../cups/cups.h ../cups/file.h
|
||||
ipp-var.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
|
||||
ipp-var.o: ../cups/language.h ../cups/array.h help-index.h
|
||||
ipp-var.o: ../cups/debug-private.h ../cups/language-private.h
|
||||
ipp-var.o: ../cups/transcode.h ../cups/string-private.h ../config.h
|
||||
search.o: cgi-private.h cgi.h ../cups/cups.h ../cups/file.h
|
||||
search.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
|
||||
search.o: ../cups/language.h ../cups/array.h help-index.h
|
||||
search.o: ../cups/debug-private.h ../cups/language-private.h
|
||||
search.o: ../cups/transcode.h ../cups/string-private.h ../config.h
|
||||
template.o: cgi-private.h cgi.h ../cups/cups.h ../cups/file.h
|
||||
template.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
|
||||
template.o: ../cups/language.h ../cups/array.h help-index.h
|
||||
template.o: ../cups/debug-private.h ../cups/language-private.h
|
||||
template.o: ../cups/transcode.h ../cups/string-private.h ../config.h
|
||||
var.o: cgi-private.h cgi.h ../cups/cups.h ../cups/file.h ../cups/versioning.h
|
||||
var.o: ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/language.h
|
||||
var.o: ../cups/array.h help-index.h ../cups/debug-private.h
|
||||
var.o: ../cups/language-private.h ../cups/transcode.h
|
||||
var.o: ../cups/string-private.h ../config.h ../cups/http.h
|
||||
var.o: ../cups/md5-private.h
|
||||
admin.o: cgi-private.h cgi.h ../cups/cups.h ../cups/file.h
|
||||
admin.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
|
||||
admin.o: ../cups/language.h ../cups/array.h help-index.h
|
||||
admin.o: ../cups/debug-private.h ../cups/language-private.h
|
||||
admin.o: ../cups/transcode.h ../cups/string-private.h ../config.h
|
||||
admin.o: ../cups/adminutil.h ../cups/cups.h ../cups/ppd.h
|
||||
classes.o: cgi-private.h cgi.h ../cups/cups.h ../cups/file.h
|
||||
classes.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
|
||||
classes.o: ../cups/language.h ../cups/array.h help-index.h
|
||||
classes.o: ../cups/debug-private.h ../cups/language-private.h
|
||||
classes.o: ../cups/transcode.h ../cups/string-private.h ../config.h
|
||||
help.o: cgi-private.h cgi.h ../cups/cups.h ../cups/file.h
|
||||
help.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
|
||||
help.o: ../cups/language.h ../cups/array.h help-index.h
|
||||
help.o: ../cups/debug-private.h ../cups/language-private.h
|
||||
help.o: ../cups/transcode.h ../cups/string-private.h ../config.h
|
||||
jobs.o: cgi-private.h cgi.h ../cups/cups.h ../cups/file.h
|
||||
jobs.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
|
||||
jobs.o: ../cups/language.h ../cups/array.h help-index.h
|
||||
jobs.o: ../cups/debug-private.h ../cups/language-private.h
|
||||
jobs.o: ../cups/transcode.h ../cups/string-private.h ../config.h
|
||||
makedocset.o: cgi.h ../cups/cups.h ../cups/file.h ../cups/versioning.h
|
||||
makedocset.o: ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/language.h
|
||||
makedocset.o: ../cups/array.h help-index.h
|
||||
printers.o: cgi-private.h cgi.h ../cups/cups.h ../cups/file.h
|
||||
printers.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
|
||||
printers.o: ../cups/language.h ../cups/array.h help-index.h
|
||||
printers.o: ../cups/debug-private.h ../cups/language-private.h
|
||||
printers.o: ../cups/transcode.h ../cups/string-private.h ../config.h
|
||||
testcgi.o: cgi.h ../cups/cups.h ../cups/file.h ../cups/versioning.h
|
||||
testcgi.o: ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/language.h
|
||||
testcgi.o: ../cups/array.h help-index.h
|
||||
testhi.o: cgi.h ../cups/cups.h ../cups/file.h ../cups/versioning.h
|
||||
testhi.o: ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/language.h
|
||||
testhi.o: ../cups/array.h help-index.h
|
||||
testtemplate.o: cgi.h ../cups/cups.h ../cups/file.h ../cups/versioning.h
|
||||
testtemplate.o: ../cups/ipp.h ../cups/http.h ../cups/array.h
|
||||
testtemplate.o: ../cups/language.h ../cups/array.h help-index.h
|
||||
websearch.o: cgi.h ../cups/cups.h ../cups/file.h ../cups/versioning.h
|
||||
websearch.o: ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/language.h
|
||||
websearch.o: ../cups/array.h help-index.h
|
||||
|
||||
+2
-2
@@ -3,7 +3,7 @@
|
||||
#
|
||||
# CGI makefile for CUPS.
|
||||
#
|
||||
# Copyright 2007-2012 by Apple Inc.
|
||||
# Copyright 2007-2010 by Apple Inc.
|
||||
# Copyright 1997-2006 by Easy Software Products.
|
||||
#
|
||||
# These coded instructions, statements, and computer programs are the
|
||||
@@ -90,7 +90,7 @@ clean:
|
||||
#
|
||||
|
||||
depend:
|
||||
$(CC) -MM $(ALL_CFLAGS) $(OBJS:.o=.c) >Dependencies
|
||||
makedepend -Y -I.. -fDependencies $(OBJS:.o=.c) >/dev/null 2>&1
|
||||
|
||||
|
||||
#
|
||||
|
||||
+147
-6
@@ -586,7 +586,8 @@ do_am_class(http_t *http, /* I - HTTP connection */
|
||||
ippAddInteger(request, IPP_TAG_OPERATION, IPP_TAG_ENUM, "printer-type",
|
||||
CUPS_PRINTER_LOCAL);
|
||||
ippAddInteger(request, IPP_TAG_OPERATION, IPP_TAG_ENUM, "printer-type-mask",
|
||||
CUPS_PRINTER_CLASS | CUPS_PRINTER_REMOTE);
|
||||
CUPS_PRINTER_CLASS | CUPS_PRINTER_REMOTE |
|
||||
CUPS_PRINTER_IMPLICIT);
|
||||
|
||||
/*
|
||||
* Do the request and get back a response...
|
||||
@@ -1559,6 +1560,8 @@ do_config_server(http_t *http) /* I - HTTP connection */
|
||||
const char *debug_logging, /* DEBUG_LOGGING value */
|
||||
*remote_admin, /* REMOTE_ADMIN value */
|
||||
*remote_any, /* REMOTE_ANY value */
|
||||
*remote_printers,
|
||||
/* REMOTE_PRINTERS value */
|
||||
*share_printers,/* SHARE_PRINTERS value */
|
||||
*user_cancel_any,
|
||||
/* USER_CANCEL_ANY value */
|
||||
@@ -1574,6 +1577,10 @@ do_config_server(http_t *http) /* I - HTTP connection */
|
||||
/* MaxJobs value */
|
||||
*max_log_size = NULL;
|
||||
/* MaxLogSize value */
|
||||
char local_protocols[255],
|
||||
/* BrowseLocalProtocols */
|
||||
remote_protocols[255];
|
||||
/* BrowseRemoteProtocols */
|
||||
const char *current_browse_web_if,
|
||||
/* BrowseWebIF value */
|
||||
*current_preserve_job_history,
|
||||
@@ -1584,8 +1591,12 @@ do_config_server(http_t *http) /* I - HTTP connection */
|
||||
/* MaxClients value */
|
||||
*current_max_jobs,
|
||||
/* MaxJobs value */
|
||||
*current_max_log_size;
|
||||
*current_max_log_size,
|
||||
/* MaxLogSize value */
|
||||
*current_local_protocols,
|
||||
/* BrowseLocalProtocols */
|
||||
*current_remote_protocols;
|
||||
/* BrowseRemoteProtocols */
|
||||
#ifdef HAVE_GSSAPI
|
||||
char default_auth_type[255];
|
||||
/* DefaultAuthType value */
|
||||
@@ -1600,6 +1611,7 @@ do_config_server(http_t *http) /* I - HTTP connection */
|
||||
debug_logging = cgiGetVariable("DEBUG_LOGGING") ? "1" : "0";
|
||||
remote_admin = cgiGetVariable("REMOTE_ADMIN") ? "1" : "0";
|
||||
remote_any = cgiGetVariable("REMOTE_ANY") ? "1" : "0";
|
||||
remote_printers = cgiGetVariable("REMOTE_PRINTERS") ? "1" : "0";
|
||||
share_printers = cgiGetVariable("SHARE_PRINTERS") ? "1" : "0";
|
||||
user_cancel_any = cgiGetVariable("USER_CANCEL_ANY") ? "1" : "0";
|
||||
|
||||
@@ -1625,6 +1637,66 @@ do_config_server(http_t *http) /* I - HTTP connection */
|
||||
|
||||
if (!max_log_size || atof(max_log_size) <= 0.0)
|
||||
max_log_size = "1m";
|
||||
|
||||
if (cgiGetVariable("BROWSE_LOCAL_CUPS"))
|
||||
strcpy(local_protocols, "cups");
|
||||
else
|
||||
local_protocols[0] = '\0';
|
||||
|
||||
#ifdef HAVE_DNSSD
|
||||
if (cgiGetVariable("BROWSE_LOCAL_DNSSD"))
|
||||
{
|
||||
if (local_protocols[0])
|
||||
strcat(local_protocols, " dnssd");
|
||||
else
|
||||
strcat(local_protocols, "dnssd");
|
||||
}
|
||||
#endif /* HAVE_DNSSD */
|
||||
|
||||
#ifdef HAVE_LDAP
|
||||
if (cgiGetVariable("BROWSE_LOCAL_LDAP"))
|
||||
{
|
||||
if (local_protocols[0])
|
||||
strcat(local_protocols, " ldap");
|
||||
else
|
||||
strcat(local_protocols, "ldap");
|
||||
}
|
||||
#endif /* HAVE_LDAP */
|
||||
|
||||
#ifdef HAVE_LIBSLP
|
||||
if (cgiGetVariable("BROWSE_LOCAL_SLP"))
|
||||
{
|
||||
if (local_protocols[0])
|
||||
strcat(local_protocols, " slp");
|
||||
else
|
||||
strcat(local_protocols, "slp");
|
||||
}
|
||||
#endif /* HAVE_SLP */
|
||||
|
||||
if (cgiGetVariable("BROWSE_REMOTE_CUPS"))
|
||||
strcpy(remote_protocols, "cups");
|
||||
else
|
||||
remote_protocols[0] = '\0';
|
||||
|
||||
#ifdef HAVE_LDAP
|
||||
if (cgiGetVariable("BROWSE_REMOTE_LDAP"))
|
||||
{
|
||||
if (remote_protocols[0])
|
||||
strcat(remote_protocols, " ldap");
|
||||
else
|
||||
strcat(remote_protocols, "ldap");
|
||||
}
|
||||
#endif /* HAVE_LDAP */
|
||||
|
||||
#ifdef HAVE_LIBSLP
|
||||
if (cgiGetVariable("BROWSE_REMOTE_SLP"))
|
||||
{
|
||||
if (remote_protocols[0])
|
||||
strcat(remote_protocols, " slp");
|
||||
else
|
||||
strcat(remote_protocols, "slp");
|
||||
}
|
||||
#endif /* HAVE_SLP */
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -1688,6 +1760,16 @@ do_config_server(http_t *http) /* I - HTTP connection */
|
||||
settings)) == NULL)
|
||||
current_max_log_size = "1m";
|
||||
|
||||
if ((current_local_protocols = cupsGetOption("BrowseLocalProtocols",
|
||||
num_settings,
|
||||
settings)) == NULL)
|
||||
current_local_protocols = CUPS_DEFAULT_BROWSE_LOCAL_PROTOCOLS;
|
||||
|
||||
if ((current_remote_protocols = cupsGetOption("BrowseRemoteProtocols",
|
||||
num_settings,
|
||||
settings)) == NULL)
|
||||
current_remote_protocols = CUPS_DEFAULT_BROWSE_REMOTE_PROTOCOLS;
|
||||
|
||||
/*
|
||||
* See if the settings have changed...
|
||||
*/
|
||||
@@ -1698,6 +1780,8 @@ do_config_server(http_t *http) /* I - HTTP connection */
|
||||
num_settings, settings)) ||
|
||||
strcmp(remote_any, cupsGetOption(CUPS_SERVER_REMOTE_ANY,
|
||||
num_settings, settings)) ||
|
||||
strcmp(remote_printers, cupsGetOption(CUPS_SERVER_REMOTE_PRINTERS,
|
||||
num_settings, settings)) ||
|
||||
strcmp(share_printers, cupsGetOption(CUPS_SERVER_SHARE_PRINTERS,
|
||||
num_settings, settings)) ||
|
||||
#ifdef HAVE_GSSAPI
|
||||
@@ -1709,7 +1793,9 @@ do_config_server(http_t *http) /* I - HTTP connection */
|
||||
num_settings, settings));
|
||||
|
||||
if (advanced && !changed)
|
||||
changed = _cups_strcasecmp(browse_web_if, current_browse_web_if) ||
|
||||
changed = _cups_strcasecmp(local_protocols, current_local_protocols) ||
|
||||
_cups_strcasecmp(remote_protocols, current_remote_protocols) ||
|
||||
_cups_strcasecmp(browse_web_if, current_browse_web_if) ||
|
||||
_cups_strcasecmp(preserve_job_history, current_preserve_job_history) ||
|
||||
_cups_strcasecmp(preserve_job_files, current_preserve_job_files) ||
|
||||
_cups_strcasecmp(max_clients, current_max_clients) ||
|
||||
@@ -1731,6 +1817,8 @@ do_config_server(http_t *http) /* I - HTTP connection */
|
||||
remote_admin, num_settings, &settings);
|
||||
num_settings = cupsAddOption(CUPS_SERVER_REMOTE_ANY,
|
||||
remote_any, num_settings, &settings);
|
||||
num_settings = cupsAddOption(CUPS_SERVER_REMOTE_PRINTERS,
|
||||
remote_printers, num_settings, &settings);
|
||||
num_settings = cupsAddOption(CUPS_SERVER_SHARE_PRINTERS,
|
||||
share_printers, num_settings, &settings);
|
||||
num_settings = cupsAddOption(CUPS_SERVER_USER_CANCEL_ANY,
|
||||
@@ -1746,6 +1834,12 @@ do_config_server(http_t *http) /* I - HTTP connection */
|
||||
* Add advanced settings...
|
||||
*/
|
||||
|
||||
if (_cups_strcasecmp(local_protocols, current_local_protocols))
|
||||
num_settings = cupsAddOption("BrowseLocalProtocols", local_protocols,
|
||||
num_settings, &settings);
|
||||
if (_cups_strcasecmp(remote_protocols, current_remote_protocols))
|
||||
num_settings = cupsAddOption("BrowseRemoteProtocols", remote_protocols,
|
||||
num_settings, &settings);
|
||||
if (_cups_strcasecmp(browse_web_if, current_browse_web_if))
|
||||
num_settings = cupsAddOption("BrowseWebIF", browse_web_if,
|
||||
num_settings, &settings);
|
||||
@@ -1784,8 +1878,7 @@ do_config_server(http_t *http) /* I - HTTP connection */
|
||||
else
|
||||
{
|
||||
if (advanced)
|
||||
cgiSetVariable("refresh_page", "5;URL=/admin/?OP=redirect&"
|
||||
"URL=/admin/?ADVANCEDSETTINGS=YES");
|
||||
cgiSetVariable("refresh_page", "5;URL=/admin/?OP=redirect&URL=/admin/?ADVANCEDSETTINGS=YES");
|
||||
else
|
||||
cgiSetVariable("refresh_page", "5;URL=/admin/?OP=redirect");
|
||||
cgiStartHTML(cgiText(_("Change Settings")));
|
||||
@@ -2266,7 +2359,8 @@ do_export(http_t *http) /* I - HTTP connection */
|
||||
"printer-type", 0);
|
||||
|
||||
ippAddInteger(request, IPP_TAG_OPERATION, IPP_TAG_ENUM,
|
||||
"printer-type-mask", CUPS_PRINTER_CLASS | CUPS_PRINTER_REMOTE);
|
||||
"printer-type-mask", CUPS_PRINTER_CLASS | CUPS_PRINTER_REMOTE |
|
||||
CUPS_PRINTER_IMPLICIT);
|
||||
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD,
|
||||
"requested-attributes", NULL, "printer-name");
|
||||
@@ -2602,6 +2696,10 @@ do_menu(http_t *http) /* I - HTTP connection */
|
||||
settings)) != NULL && atoi(val))
|
||||
cgiSetVariable("REMOTE_ANY", "CHECKED");
|
||||
|
||||
if ((val = cupsGetOption(CUPS_SERVER_REMOTE_PRINTERS, num_settings,
|
||||
settings)) != NULL && atoi(val))
|
||||
cgiSetVariable("REMOTE_PRINTERS", "CHECKED");
|
||||
|
||||
if ((val = cupsGetOption(CUPS_SERVER_SHARE_PRINTERS, num_settings,
|
||||
settings)) != NULL && atoi(val))
|
||||
cgiSetVariable("SHARE_PRINTERS", "CHECKED");
|
||||
@@ -2624,6 +2722,49 @@ do_menu(http_t *http) /* I - HTTP connection */
|
||||
cgiSetVariable("HAVE_DNSSD", "1");
|
||||
#endif /* HAVE_DNSSD */
|
||||
|
||||
#ifdef HAVE_LDAP
|
||||
cgiSetVariable("HAVE_LDAP", "1");
|
||||
#endif /* HAVE_LDAP */
|
||||
|
||||
#ifdef HAVE_LIBSLP
|
||||
cgiSetVariable("HAVE_LIBSLP", "1");
|
||||
#endif /* HAVE_LIBSLP */
|
||||
|
||||
if ((val = cupsGetOption("BrowseRemoteProtocols", num_settings,
|
||||
settings)) == NULL)
|
||||
if ((val = cupsGetOption("BrowseProtocols", num_settings,
|
||||
settings)) == NULL)
|
||||
val = CUPS_DEFAULT_BROWSE_REMOTE_PROTOCOLS;
|
||||
|
||||
if (strstr(val, "cups") || strstr(val, "CUPS"))
|
||||
cgiSetVariable("BROWSE_REMOTE_CUPS", "CHECKED");
|
||||
|
||||
if (strstr(val, "ldap") || strstr(val, "LDAP"))
|
||||
cgiSetVariable("BROWSE_REMOTE_LDAP", "CHECKED");
|
||||
|
||||
if (strstr(val, "slp") || strstr(val, "SLP"))
|
||||
cgiSetVariable("BROWSE_REMOTE_SLP", "CHECKED");
|
||||
|
||||
if ((val = cupsGetOption("BrowseLocalProtocols", num_settings,
|
||||
settings)) == NULL)
|
||||
if ((val = cupsGetOption("BrowseProtocols", num_settings,
|
||||
settings)) == NULL)
|
||||
val = CUPS_DEFAULT_BROWSE_LOCAL_PROTOCOLS;
|
||||
|
||||
if (strstr(val, "cups") || strstr(val, "CUPS"))
|
||||
cgiSetVariable("BROWSE_LOCAL_CUPS", "CHECKED");
|
||||
|
||||
if (strstr(val, "dnssd") || strstr(val, "DNSSD") ||
|
||||
strstr(val, "dns-sd") || strstr(val, "DNS-SD") ||
|
||||
strstr(val, "bonjour") || strstr(val, "BONJOUR"))
|
||||
cgiSetVariable("BROWSE_LOCAL_DNSSD", "CHECKED");
|
||||
|
||||
if (strstr(val, "ldap") || strstr(val, "LDAP"))
|
||||
cgiSetVariable("BROWSE_LOCAL_LDAP", "CHECKED");
|
||||
|
||||
if (strstr(val, "slp") || strstr(val, "SLP"))
|
||||
cgiSetVariable("BROWSE_LOCAL_SLP", "CHECKED");
|
||||
|
||||
if ((val = cupsGetOption("BrowseWebIF", num_settings,
|
||||
settings)) == NULL)
|
||||
val = "No";
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
*
|
||||
* Private CGI definitions for CUPS.
|
||||
*
|
||||
* Copyright 2007-2011 by Apple Inc.
|
||||
* Copyright 2007-2010 by Apple Inc.
|
||||
* Copyright 1997-2006 by Easy Software Products.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
@@ -21,7 +21,6 @@
|
||||
#include <cups/debug-private.h>
|
||||
#include <cups/language-private.h>
|
||||
#include <cups/string-private.h>
|
||||
#include <cups/ipp-private.h> /* TODO: Update so we don't need this */
|
||||
|
||||
|
||||
/*
|
||||
|
||||
+30
-27
@@ -161,8 +161,7 @@ static int help_load_file(help_index_t *hi,
|
||||
static help_node_t *help_new_node(const char *filename, const char *anchor,
|
||||
const char *section, const char *text,
|
||||
time_t mtime, off_t offset,
|
||||
size_t length)
|
||||
__attribute__((nonnull(1,3,4)));
|
||||
size_t length);
|
||||
static int help_sort_by_name(help_node_t *p1, help_node_t *p2);
|
||||
static int help_sort_by_score(help_node_t *p1, help_node_t *p2);
|
||||
static int help_sort_words(help_word_t *w1, help_word_t *w2);
|
||||
@@ -178,7 +177,7 @@ helpDeleteIndex(help_index_t *hi) /* I - Help index */
|
||||
help_node_t *node; /* Current node */
|
||||
|
||||
|
||||
DEBUG_printf(("helpDeleteIndex(hi=%p)", hi));
|
||||
DEBUG_printf(("helpDeleteIndex(hi=%p)\n", hi));
|
||||
|
||||
if (!hi)
|
||||
return;
|
||||
@@ -210,8 +209,8 @@ helpFindNode(help_index_t *hi, /* I - Index */
|
||||
help_node_t key; /* Search key */
|
||||
|
||||
|
||||
DEBUG_printf(("helpFindNode(hi=%p, filename=\"%s\", anchor=\"%s\")",
|
||||
hi, filename, anchor));
|
||||
DEBUG_printf(("helpFindNode(hi=%p, filename=\"%s\", anchor=\"%s\")\n",
|
||||
hi, filename ? filename : "(nil)", anchor ? anchor : "(nil)"));
|
||||
|
||||
/*
|
||||
* Range check input...
|
||||
@@ -260,7 +259,7 @@ helpLoadIndex(const char *hifile, /* I - Index filename */
|
||||
help_word_t *word; /* Current word */
|
||||
|
||||
|
||||
DEBUG_printf(("helpLoadIndex(hifile=\"%s\", directory=\"%s\")",
|
||||
DEBUG_printf(("helpLoadIndex(hifile=\"%s\", directory=\"%s\")\n",
|
||||
hifile, directory));
|
||||
|
||||
/*
|
||||
@@ -465,7 +464,7 @@ helpSaveIndex(help_index_t *hi, /* I - Index */
|
||||
help_word_t *word; /* Current word */
|
||||
|
||||
|
||||
DEBUG_printf(("helpSaveIndex(hi=%p, hifile=\"%s\")", hi, hifile));
|
||||
DEBUG_printf(("helpSaveIndex(hi=%p, hifile=\"%s\")\n", hi, hifile));
|
||||
|
||||
/*
|
||||
* Try creating a new index file...
|
||||
@@ -546,8 +545,9 @@ helpSearchIndex(help_index_t *hi, /* I - Index */
|
||||
int matches; /* Number of matches */
|
||||
|
||||
|
||||
DEBUG_printf(("helpSearchIndex(hi=%p, query=\"%s\", filename=\"%s\")",
|
||||
hi, query, filename));
|
||||
DEBUG_printf(("helpSearchIndex(hi=%p, query=\"%s\", filename=\"%s\")\n",
|
||||
hi, query ? query : "(nil)",
|
||||
filename ? filename : "(nil)"));
|
||||
|
||||
/*
|
||||
* Range check...
|
||||
@@ -670,7 +670,7 @@ help_add_word(help_node_t *n, /* I - Node */
|
||||
key; /* Search key */
|
||||
|
||||
|
||||
DEBUG_printf(("2help_add_word(n=%p, text=\"%s\")", n, text));
|
||||
DEBUG_printf(("help_add_word(n=%p, text=\"%s\")\n", n, text));
|
||||
|
||||
/*
|
||||
* Create the words array as needed...
|
||||
@@ -723,7 +723,7 @@ help_delete_node(help_node_t *n) /* I - Node */
|
||||
help_word_t *w; /* Current word */
|
||||
|
||||
|
||||
DEBUG_printf(("2help_delete_node(n=%p)", n));
|
||||
DEBUG_printf(("help_delete_node(n=%p)\n", n));
|
||||
|
||||
if (!n)
|
||||
return;
|
||||
@@ -758,7 +758,7 @@ help_delete_node(help_node_t *n) /* I - Node */
|
||||
static void
|
||||
help_delete_word(help_word_t *w) /* I - Word */
|
||||
{
|
||||
DEBUG_printf(("2help_delete_word(w=%p)", w));
|
||||
DEBUG_printf(("help_delete_word(w=%p)\n", w));
|
||||
|
||||
if (!w)
|
||||
return;
|
||||
@@ -789,8 +789,8 @@ help_load_directory(
|
||||
help_node_t *node; /* Current node */
|
||||
|
||||
|
||||
DEBUG_printf(("2help_load_directory(hi=%p, directory=\"%s\", relative=\"%s\")",
|
||||
hi, directory, relative));
|
||||
DEBUG_printf(("help_load_directory(hi=%p, directory=\"%s\", relative=\"%s\")\n",
|
||||
hi, directory ? directory : "(nil)", relative ? relative : "(nil)"));
|
||||
|
||||
/*
|
||||
* Open the directory and scan it...
|
||||
@@ -901,8 +901,9 @@ help_load_file(
|
||||
int wordlen; /* Length of word */
|
||||
|
||||
|
||||
DEBUG_printf(("2help_load_file(hi=%p, filename=\"%s\", relative=\"%s\", "
|
||||
"mtime=%ld)", hi, filename, relative, mtime));
|
||||
DEBUG_printf(("help_load_file(hi=%p, filename=\"%s\", relative=\"%s\", mtime=%ld)\n",
|
||||
hi, filename ? filename : "(nil)",
|
||||
relative ? relative : "(nil)", mtime));
|
||||
|
||||
if ((fp = cupsFileOpen(filename, "r")) == NULL)
|
||||
return (-1);
|
||||
@@ -1228,9 +1229,11 @@ help_new_node(const char *filename, /* I - Filename */
|
||||
help_node_t *n; /* Node */
|
||||
|
||||
|
||||
DEBUG_printf(("2help_new_node(filename=\"%s\", anchor=\"%s\", text=\"%s\", "
|
||||
"mtime=%ld, offset=%ld, length=%ld)", filename, anchor, text,
|
||||
(long)mtime, (long)offset, (long)length));
|
||||
DEBUG_printf(("help_new_node(filename=\"%s\", anchor=\"%s\", text=\"%s\", "
|
||||
"mtime=%ld, offset=%ld, length=%ld)\n",
|
||||
filename ? filename : "(nil)", anchor ? anchor : "(nil)",
|
||||
text ? text : "(nil)", (long)mtime, (long)offset,
|
||||
(long)length));
|
||||
|
||||
n = (help_node_t *)calloc(1, sizeof(help_node_t));
|
||||
if (!n)
|
||||
@@ -1259,9 +1262,9 @@ help_sort_by_name(help_node_t *n1, /* I - First node */
|
||||
int diff; /* Difference */
|
||||
|
||||
|
||||
DEBUG_printf(("2help_sort_by_name(n1=%p(%s#%s), n2=%p(%s#%s)",
|
||||
n1, n1->filename, n1->anchor,
|
||||
n2, n2->filename, n2->anchor));
|
||||
DEBUG_printf(("help_sort_by_name(n1=%p(%s#%s), n2=%p(%s#%s)\n",
|
||||
n1, n1->filename, n1->anchor ? n1->anchor : "",
|
||||
n2, n2->filename, n2->anchor ? n2->anchor : ""));
|
||||
|
||||
if ((diff = strcmp(n1->filename, n2->filename)) != 0)
|
||||
return (diff);
|
||||
@@ -1288,10 +1291,10 @@ help_sort_by_score(help_node_t *n1, /* I - First node */
|
||||
int diff; /* Difference */
|
||||
|
||||
|
||||
DEBUG_printf(("2help_sort_by_score(n1=%p(%d \"%s\" \"%s\"), "
|
||||
"n2=%p(%d \"%s\" \"%s\")",
|
||||
n1, n1->score, n1->section, n1->text,
|
||||
n2, n2->score, n2->section, n2->text));
|
||||
DEBUG_printf(("help_sort_by_score(n1=%p(%d \"%s\" \"%s\"), "
|
||||
"n2=%p(%d \"%s\" \"%s\")\n",
|
||||
n1, n1->score, n1->section ? n1->section : "", n1->text,
|
||||
n2, n2->score, n2->section ? n2->section : "", n2->text));
|
||||
|
||||
if (n1->score != n2->score)
|
||||
return (n2->score - n1->score);
|
||||
@@ -1316,7 +1319,7 @@ static int /* O - Difference */
|
||||
help_sort_words(help_word_t *w1, /* I - Second word */
|
||||
help_word_t *w2) /* I - Second word */
|
||||
{
|
||||
DEBUG_printf(("2help_sort_words(w1=%p(\"%s\"), w2=%p(\"%s\"))",
|
||||
DEBUG_printf(("help_sort_words(w1=%p(\"%s\"), w2=%p(\"%s\"))\n",
|
||||
w1, w1->text, w2, w2->text));
|
||||
|
||||
return (_cups_strcasecmp(w1->text, w2->text));
|
||||
|
||||
+5
-5
@@ -452,19 +452,19 @@ cgiSetCookie(const char *name, /* I - Name */
|
||||
|
||||
printf("Set-Cookie: %s=%s;", name, value);
|
||||
if (path)
|
||||
printf(" path=%s;", path);
|
||||
printf("; path=%s", path);
|
||||
if (domain)
|
||||
printf(" domain=%s;", domain);
|
||||
printf("; domain=%s", domain);
|
||||
if (expires)
|
||||
{
|
||||
char date[256]; /* Date string */
|
||||
|
||||
printf(" expires=%s;", httpGetDateString2(expires, date, sizeof(date)));
|
||||
printf("; expires=%s", httpGetDateString2(expires, date, sizeof(date)));
|
||||
}
|
||||
if (secure)
|
||||
puts(" secure;");
|
||||
puts("; secure;");
|
||||
else
|
||||
putchar('\n');
|
||||
puts(";");
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -38,13 +38,51 @@
|
||||
# PostScript filters
|
||||
#
|
||||
|
||||
@DEFAULT_PDFTOPS@application/pdf application/vnd.cups-postscript 66 pdftops
|
||||
application/postscript application/vnd.cups-postscript 66 pstops
|
||||
@DEFAULT_TEXTTOPS@application/x-cshell application/postscript 33 texttops
|
||||
@DEFAULT_TEXTTOPS@application/x-csource application/postscript 33 texttops
|
||||
@DEFAULT_TEXTTOPS@application/x-perl application/postscript 33 texttops
|
||||
@DEFAULT_TEXTTOPS@application/x-shell application/postscript 33 texttops
|
||||
@DEFAULT_TEXTTOPS@text/plain application/postscript 33 texttops
|
||||
@DEFAULT_TEXTTOPS@text/css application/postscript 33 texttops
|
||||
@DEFAULT_TEXTTOPS@text/html application/postscript 33 texttops
|
||||
@DEFAULT_IMAGEFILTERS@image/gif application/vnd.cups-postscript 66 imagetops
|
||||
@DEFAULT_IMAGEFILTERS@image/png application/vnd.cups-postscript 66 imagetops
|
||||
@DEFAULT_IMAGEFILTERS@image/jpeg application/vnd.cups-postscript 66 imagetops
|
||||
@DEFAULT_IMAGEFILTERS@image/tiff application/vnd.cups-postscript 66 imagetops
|
||||
@DEFAULT_IMAGEFILTERS@image/x-bitmap application/vnd.cups-postscript 66 imagetops
|
||||
@DEFAULT_IMAGEFILTERS@image/x-photocd application/vnd.cups-postscript 66 imagetops
|
||||
@DEFAULT_IMAGEFILTERS@image/x-portable-anymap application/vnd.cups-postscript 66 imagetops
|
||||
@DEFAULT_IMAGEFILTERS@image/x-portable-bitmap application/vnd.cups-postscript 66 imagetops
|
||||
@DEFAULT_IMAGEFILTERS@image/x-portable-graymap application/vnd.cups-postscript 66 imagetops
|
||||
@DEFAULT_IMAGEFILTERS@image/x-portable-pixmap application/vnd.cups-postscript 66 imagetops
|
||||
@DEFAULT_IMAGEFILTERS@image/x-sgi-rgb application/vnd.cups-postscript 66 imagetops
|
||||
@DEFAULT_IMAGEFILTERS@image/x-xbitmap application/vnd.cups-postscript 66 imagetops
|
||||
@DEFAULT_IMAGEFILTERS@image/x-xpixmap application/vnd.cups-postscript 66 imagetops
|
||||
@DEFAULT_IMAGEFILTERS@image/x-sun-raster application/vnd.cups-postscript 66 imagetops
|
||||
@DEFAULT_BANNERTOPS@application/vnd.cups-banner application/postscript 33 bannertops
|
||||
|
||||
########################################################################
|
||||
#
|
||||
# Raster filters...
|
||||
#
|
||||
|
||||
@DEFAULT_IMAGEFILTERS@image/gif application/vnd.cups-raster 100 imagetoraster
|
||||
@DEFAULT_IMAGEFILTERS@image/png application/vnd.cups-raster 100 imagetoraster
|
||||
@DEFAULT_IMAGEFILTERS@image/jpeg application/vnd.cups-raster 100 imagetoraster
|
||||
@DEFAULT_IMAGEFILTERS@image/tiff application/vnd.cups-raster 100 imagetoraster
|
||||
@DEFAULT_IMAGEFILTERS@image/x-bitmap application/vnd.cups-raster 100 imagetoraster
|
||||
@DEFAULT_IMAGEFILTERS@image/x-photocd application/vnd.cups-raster 100 imagetoraster
|
||||
@DEFAULT_IMAGEFILTERS@image/x-portable-anymap application/vnd.cups-raster 100 imagetoraster
|
||||
@DEFAULT_IMAGEFILTERS@image/x-portable-bitmap application/vnd.cups-raster 100 imagetoraster
|
||||
@DEFAULT_IMAGEFILTERS@image/x-portable-graymap application/vnd.cups-raster 100 imagetoraster
|
||||
@DEFAULT_IMAGEFILTERS@image/x-portable-pixmap application/vnd.cups-raster 100 imagetoraster
|
||||
@DEFAULT_IMAGEFILTERS@image/x-sgi-rgb application/vnd.cups-raster 100 imagetoraster
|
||||
@DEFAULT_IMAGEFILTERS@image/x-xbitmap application/vnd.cups-raster 100 imagetoraster
|
||||
@DEFAULT_IMAGEFILTERS@image/x-xpixmap application/vnd.cups-raster 100 imagetoraster
|
||||
@DEFAULT_IMAGEFILTERS@image/x-sun-raster application/vnd.cups-raster 100 imagetoraster
|
||||
|
||||
# PWG Raster filter for IPP Everywhere...
|
||||
application/vnd.cups-raster image/pwg-raster 100 rastertopwg
|
||||
|
||||
|
||||
+3
-3
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# "$Id: mime.types 9871 2011-08-06 06:34:46Z mike $"
|
||||
# "$Id: mime.types 9667 2011-04-01 04:48:21Z mike $"
|
||||
#
|
||||
# Base MIME types file for CUPS.
|
||||
#
|
||||
@@ -92,7 +92,7 @@ image/jpeg jpeg jpg jpe string(0,<FFD8FF>) +\
|
||||
char(3,0xe4) char(3,0xe5) char(3,0xe6) char(3,0xe7)\
|
||||
char(3,0xe8) char(3,0xe9) char(3,0xea) char(3,0xeb)\
|
||||
char(3,0xec) char(3,0xed) char(3,0xee) char(3,0xef))
|
||||
image/pwg-raster string(0,"RaS2") + string(4,PwgRaster<00>) priority(100)
|
||||
image/pwg-raster string(0,"RaS2") + string(356,<0000000000000000>) priority(100)
|
||||
image/tiff tiff tif string(0,MM<002A>) string(0,II<2A00>)
|
||||
image/x-photocd pcd string(2048,PCD_IPI)
|
||||
image/x-portable-anymap pnm
|
||||
@@ -170,5 +170,5 @@ application/vnd.cups-raw (string(0,<1B>E) + !string(2,<1B>%0B)) \
|
||||
application/octet-stream
|
||||
|
||||
#
|
||||
# End of "$Id: mime.types 9871 2011-08-06 06:34:46Z mike $".
|
||||
# End of "$Id: mime.types 9667 2011-04-01 04:48:21Z mike $".
|
||||
#
|
||||
|
||||
@@ -0,0 +1,140 @@
|
||||
dnl
|
||||
dnl "$Id: cups-3264.m4 9771 2011-05-12 05:21:56Z mike $"
|
||||
dnl
|
||||
dnl 32/64-bit library support stuff for CUPS.
|
||||
dnl
|
||||
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
|
||||
dnl property of Apple Inc. and are protected by Federal copyright
|
||||
dnl law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
dnl which should have been included with this file. If this file is
|
||||
dnl file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
dnl
|
||||
|
||||
dnl Setup support for separate 32/64-bit library generation...
|
||||
AC_ARG_ENABLE(32bit, [ --enable-32bit generate 32-bit libraries on 32/64-bit systems])
|
||||
|
||||
INSTALL32=""
|
||||
LIB32CUPS=""
|
||||
LIB32CUPSIMAGE=""
|
||||
LIB32DIR=""
|
||||
UNINSTALL32=""
|
||||
|
||||
AC_SUBST(INSTALL32)
|
||||
AC_SUBST(LIB32CUPS)
|
||||
AC_SUBST(LIB32CUPSIMAGE)
|
||||
AC_SUBST(LIB32DIR)
|
||||
AC_SUBST(UNINSTALL32)
|
||||
|
||||
AC_ARG_ENABLE(64bit, [ --enable-64bit generate 64-bit libraries on 32/64-bit systems])
|
||||
|
||||
INSTALL64=""
|
||||
LIB64CUPS=""
|
||||
LIB64CUPSIMAGE=""
|
||||
LIB64DIR=""
|
||||
UNINSTALL64=""
|
||||
|
||||
AC_SUBST(INSTALL64)
|
||||
AC_SUBST(LIB64CUPS)
|
||||
AC_SUBST(LIB64CUPSIMAGE)
|
||||
AC_SUBST(LIB64DIR)
|
||||
AC_SUBST(UNINSTALL64)
|
||||
|
||||
case "$uname" in
|
||||
HP-UX*)
|
||||
if test "x$enable_32bit" = xyes; then
|
||||
# Build 32-bit libraries, 64-bit base...
|
||||
INSTALL32="install32bit"
|
||||
LIB32CUPS="32bit/libcups.so.2"
|
||||
LIB32CUPSIMAGE="32bit/libcupsimage.so.2"
|
||||
LIB32DIR="$exec_prefix/lib"
|
||||
if test -d /usr/lib/hpux32; then
|
||||
LIB32DIR="${LIB32DIR}/hpux32"
|
||||
fi
|
||||
UNINSTALL32="uninstall32bit"
|
||||
fi
|
||||
|
||||
if test "x$enable_64bit" = xyes; then
|
||||
# Build 64-bit libraries, 32-bit base...
|
||||
INSTALL64="install64bit"
|
||||
LIB64CUPS="64bit/libcups.so.2"
|
||||
LIB64CUPSIMAGE="64bit/libcupsimage.so.2"
|
||||
LIB64DIR="$exec_prefix/lib"
|
||||
if test -d /usr/lib/hpux64; then
|
||||
LIB64DIR="${LIB64DIR}/hpux64"
|
||||
fi
|
||||
UNINSTALL64="uninstall64bit"
|
||||
fi
|
||||
;;
|
||||
|
||||
IRIX)
|
||||
if test "x$enable_32bit" = xyes; then
|
||||
INSTALL32="install32bit"
|
||||
LIB32CUPS="32bit/libcups.so.2"
|
||||
LIB32CUPSIMAGE="32bit/libcupsimage.so.2"
|
||||
LIB32DIR="$prefix/lib32"
|
||||
UNINSTALL32="uninstall32bit"
|
||||
fi
|
||||
|
||||
if test "x$enable_64bit" = xyes; then
|
||||
# Build 64-bit libraries, 32-bit base...
|
||||
INSTALL64="install64bit"
|
||||
LIB64CUPS="64bit/libcups.so.2"
|
||||
LIB64CUPSIMAGE="64bit/libcupsimage.so.2"
|
||||
LIB64DIR="$prefix/lib64"
|
||||
UNINSTALL64="uninstall64bit"
|
||||
fi
|
||||
;;
|
||||
|
||||
Linux*)
|
||||
if test "x$enable_32bit" = xyes; then
|
||||
# Build 32-bit libraries, 64-bit base...
|
||||
INSTALL32="install32bit"
|
||||
LIB32CUPS="32bit/libcups.so.2"
|
||||
LIB32CUPSIMAGE="32bit/libcupsimage.so.2"
|
||||
LIB32DIR="$exec_prefix/lib"
|
||||
if test -d /usr/lib32; then
|
||||
LIB32DIR="${LIB32DIR}32"
|
||||
fi
|
||||
UNINSTALL32="uninstall32bit"
|
||||
fi
|
||||
|
||||
if test "x$enable_64bit" = xyes; then
|
||||
# Build 64-bit libraries, 32-bit base...
|
||||
INSTALL64="install64bit"
|
||||
LIB64CUPS="64bit/libcups.so.2"
|
||||
LIB64CUPSIMAGE="64bit/libcupsimage.so.2"
|
||||
LIB64DIR="$exec_prefix/lib"
|
||||
if test -d /usr/lib64; then
|
||||
LIB64DIR="${LIB64DIR}64"
|
||||
fi
|
||||
UNINSTALL64="uninstall64bit"
|
||||
fi
|
||||
;;
|
||||
|
||||
SunOS*)
|
||||
if test "x$enable_32bit" = xyes; then
|
||||
# Build 32-bit libraries, 64-bit base...
|
||||
INSTALL32="install32bit"
|
||||
LIB32CUPS="32bit/libcups.so.2"
|
||||
LIB32CUPSIMAGE="32bit/libcupsimage.so.2"
|
||||
LIB32DIR="$exec_prefix/lib/32"
|
||||
UNINSTALL32="uninstall32bit"
|
||||
fi
|
||||
|
||||
if test "x$enable_64bit" = xyes; then
|
||||
# Build 64-bit libraries, 32-bit base...
|
||||
INSTALL64="install64bit"
|
||||
LIB64CUPS="64bit/libcups.so.2"
|
||||
LIB64CUPSIMAGE="64bit/libcupsimage.so.2"
|
||||
LIB64DIR="$exec_prefix/lib/64"
|
||||
UNINSTALL64="uninstall64bit"
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
dnl
|
||||
dnl End of "$Id: cups-3264.m4 9771 2011-05-12 05:21:56Z mike $".
|
||||
dnl
|
||||
@@ -1,5 +1,5 @@
|
||||
dnl
|
||||
dnl "$Id: cups-common.m4 10192 2012-01-20 21:49:02Z mike $"
|
||||
dnl "$Id: cups-common.m4 9810 2011-05-26 12:34:56Z mike $"
|
||||
dnl
|
||||
dnl Common configuration stuff for CUPS.
|
||||
dnl
|
||||
@@ -20,11 +20,11 @@ dnl Set the name of the config header file...
|
||||
AC_CONFIG_HEADER(config.h)
|
||||
|
||||
dnl Version number information...
|
||||
CUPS_VERSION="1.6svn"
|
||||
CUPS_VERSION="1.5b2"
|
||||
CUPS_REVISION=""
|
||||
if test -z "$CUPS_REVISION" -a -d .svn; then
|
||||
CUPS_REVISION="-r`svnversion . | awk -F: '{print $NF}' | sed -e '1,$s/[[a-zA-Z]]*//g'`"
|
||||
fi
|
||||
#if test -z "$CUPS_REVISION" -a -d .svn; then
|
||||
# CUPS_REVISION="-r`svnversion . | awk -F: '{print $NF}' | sed -e '1,$s/[[a-zA-Z]]*//g'`"
|
||||
#fi
|
||||
CUPS_BUILD="cups-$CUPS_VERSION"
|
||||
|
||||
AC_ARG_WITH(cups_build, [ --with-cups-build set "cups-config --build" string ],
|
||||
@@ -92,7 +92,6 @@ dnl Check for pkg-config, which is used for some other tests later on...
|
||||
AC_PATH_PROG(PKGCONFIG, pkg-config)
|
||||
|
||||
dnl Check for libraries...
|
||||
AC_SEARCH_LIBS(fmod, m)
|
||||
AC_SEARCH_LIBS(crypt, crypt)
|
||||
AC_SEARCH_LIBS(getspent, sec gen)
|
||||
|
||||
@@ -124,7 +123,6 @@ AC_SUBST(LIBPAPER)
|
||||
|
||||
dnl Checks for header files.
|
||||
AC_HEADER_STDC
|
||||
AC_CHECK_HEADER(stdlib.h,AC_DEFINE(HAVE_STDLIB_H))
|
||||
AC_CHECK_HEADER(crypt.h,AC_DEFINE(HAVE_CRYPT_H))
|
||||
AC_CHECK_HEADER(langinfo.h,AC_DEFINE(HAVE_LANGINFO_H))
|
||||
AC_CHECK_HEADER(malloc.h,AC_DEFINE(HAVE_MALLOC_H))
|
||||
@@ -147,16 +145,6 @@ AC_CHECK_HEADER(iconv.h,
|
||||
SAVELIBS="$SAVELIBS $LIBS")
|
||||
LIBS="$SAVELIBS")
|
||||
|
||||
dnl Checks for Mini-XML (www.minixml.org)...
|
||||
LIBMXML=""
|
||||
AC_CHECK_HEADER(mxml.h,
|
||||
SAVELIBS="$LIBS"
|
||||
AC_SEARCH_LIBS(mmxlNewElement,mxml,
|
||||
AC_DEFINE(HAVE_MXML_H)
|
||||
LIBMXML="-lmxml")
|
||||
LIBS="$SAVELIBS")
|
||||
AC_SUBST(LIBMXML)
|
||||
|
||||
dnl Checks for statfs and its many headers...
|
||||
AC_CHECK_HEADER(sys/mount.h,AC_DEFINE(HAVE_SYS_MOUNT_H))
|
||||
AC_CHECK_HEADER(sys/statfs.h,AC_DEFINE(HAVE_SYS_STATFS_H))
|
||||
@@ -253,15 +241,6 @@ if test x$enable_tcp_wrappers = xyes; then
|
||||
LIBWRAP="-lwrap")])
|
||||
fi
|
||||
|
||||
dnl ZLIB
|
||||
LIBZ=""
|
||||
AC_CHECK_HEADER(zlib.h,
|
||||
AC_CHECK_LIB(z, gzgets,
|
||||
AC_DEFINE(HAVE_LIBZ)
|
||||
LIBZ="-lz"
|
||||
LIBS="$LIBS -lz"))
|
||||
AC_SUBST(LIBZ)
|
||||
|
||||
dnl Flags for "ar" command...
|
||||
case $uname in
|
||||
Darwin* | *BSD*)
|
||||
@@ -331,9 +310,11 @@ dnl Extra platform-specific libraries...
|
||||
CUPS_DEFAULT_PRINTOPERATOR_AUTH="@SYSTEM"
|
||||
CUPS_SYSTEM_AUTHKEY=""
|
||||
INSTALLXPC=""
|
||||
LEGACY_BACKENDS="parallel"
|
||||
|
||||
case $uname in
|
||||
Darwin*)
|
||||
LEGACY_BACKENDS=""
|
||||
BACKLIBS="$BACKLIBS -framework IOKit"
|
||||
SERVERLIBS="$SERVERLIBS -framework IOKit -weak_framework ApplicationServices"
|
||||
LIBS="-framework SystemConfiguration -framework CoreFoundation -framework Security $LIBS"
|
||||
@@ -399,17 +380,7 @@ case $uname in
|
||||
|
||||
dnl Check for sandbox/Seatbelt support
|
||||
if test $uversion -ge 100; then
|
||||
AC_CHECK_HEADER(sandbox.h,AC_DEFINE(HAVE_SANDBOX_H))
|
||||
fi
|
||||
if test $uversion -ge 110; then
|
||||
# Broken public headers in 10.7...
|
||||
AC_MSG_CHECKING(for sandbox/private.h presence)
|
||||
if test -f /usr/local/include/sandbox/private.h; then
|
||||
AC_MSG_RESULT(yes)
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
AC_MSG_ERROR(Run 'sudo mkdir -p /usr/local/include/sandbox' and 'sudo touch /usr/local/include/sandbox/private.h' to build CUPS.)
|
||||
fi
|
||||
AC_CHECK_HEADER(sandbox.h,AC_DEFINE(HAVE_SANDBOX_H))
|
||||
fi
|
||||
|
||||
dnl Check for XPC support
|
||||
@@ -423,6 +394,7 @@ AC_SUBST(CUPS_DEFAULT_PRINTOPERATOR_AUTH)
|
||||
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_PRINTOPERATOR_AUTH, "$CUPS_DEFAULT_PRINTOPERATOR_AUTH")
|
||||
AC_SUBST(CUPS_SYSTEM_AUTHKEY)
|
||||
AC_SUBST(INSTALLXPC)
|
||||
AC_SUBST(LEGACY_BACKENDS)
|
||||
|
||||
dnl Check for build components
|
||||
COMPONENTS="all"
|
||||
@@ -434,7 +406,7 @@ AC_ARG_WITH(components, [ --with-components set components to build:
|
||||
|
||||
case "$COMPONENTS" in
|
||||
all)
|
||||
BUILDDIRS="filter backend berkeley cgi-bin monitor notifier ppdc scheduler systemv conf data desktop locale man doc examples templates"
|
||||
BUILDDIRS="filter backend berkeley cgi-bin driver monitor notifier ppdc scheduler systemv conf data locale man doc examples templates"
|
||||
;;
|
||||
|
||||
core)
|
||||
@@ -449,5 +421,5 @@ esac
|
||||
AC_SUBST(BUILDDIRS)
|
||||
|
||||
dnl
|
||||
dnl End of "$Id: cups-common.m4 10192 2012-01-20 21:49:02Z mike $".
|
||||
dnl End of "$Id: cups-common.m4 9810 2011-05-26 12:34:56Z mike $".
|
||||
dnl
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
dnl
|
||||
dnl "$Id: cups-compiler.m4 10190 2012-01-20 16:22:58Z mike $"
|
||||
dnl "$Id: cups-compiler.m4 9809 2011-05-26 12:24:20Z mike $"
|
||||
dnl
|
||||
dnl Compiler stuff for CUPS.
|
||||
dnl
|
||||
dnl Copyright 2007-2012 by Apple Inc.
|
||||
dnl Copyright 2007-2011 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
|
||||
@@ -66,8 +66,8 @@ fi
|
||||
|
||||
if test -z "$with_ldarchflags"; then
|
||||
if test "$uname" = Darwin; then
|
||||
# Only create Intel programs by default
|
||||
LDARCHFLAGS="`echo $ARCHFLAGS | sed -e '1,$s/-arch ppc64//'`"
|
||||
# Only create 32-bit programs by default
|
||||
LDARCHFLAGS="`echo $ARCHFLAGS | sed -e '1,$s/-arch x86_64//' -e '1,$s/-arch ppc64//'`"
|
||||
else
|
||||
LDARCHFLAGS="$ARCHFLAGS"
|
||||
fi
|
||||
@@ -78,6 +78,15 @@ fi
|
||||
AC_SUBST(ARCHFLAGS)
|
||||
AC_SUBST(LDARCHFLAGS)
|
||||
|
||||
dnl Setup support for separate 32/64-bit library generation...
|
||||
AC_ARG_WITH(arch32flags, [ --with-arch32flags set 32-bit architecture flags])
|
||||
ARCH32FLAGS=""
|
||||
AC_SUBST(ARCH32FLAGS)
|
||||
|
||||
AC_ARG_WITH(arch64flags, [ --with-arch64flags set 64-bit architecture flags])
|
||||
ARCH64FLAGS=""
|
||||
AC_SUBST(ARCH64FLAGS)
|
||||
|
||||
dnl Read-only data/program support on Linux...
|
||||
AC_ARG_ENABLE(relro, [ --enable-relro build with the GCC relro option])
|
||||
|
||||
@@ -91,6 +100,9 @@ AC_SUBST(PIEFLAGS)
|
||||
RELROFLAGS=""
|
||||
AC_SUBST(RELROFLAGS)
|
||||
|
||||
PHPOPTIONS=""
|
||||
AC_SUBST(PHPOPTIONS)
|
||||
|
||||
if test -n "$GCC"; then
|
||||
# Add GCC-specific compiler options...
|
||||
if test -z "$OPTIM"; then
|
||||
@@ -144,11 +156,13 @@ if test -n "$GCC"; then
|
||||
|
||||
# Additional warning options for development testing...
|
||||
if test -d .svn; then
|
||||
OPTIM="-Wshadow -Werror $OPTIM"
|
||||
OPTIM="-Wshadow $OPTIM"
|
||||
CFLAGS="-Werror-implicit-function-declaration $CFLAGS"
|
||||
PHPOPTIONS="-Wno-shadow"
|
||||
else
|
||||
AC_MSG_CHECKING(if GCC supports -Wno-tautological-compare)
|
||||
OLDCFLAGS="$CFLAGS"
|
||||
CFLAGS="$CFLAGS -Werror -Wno-tautological-compare"
|
||||
CFLAGS="$CFLAGS -Wno-tautological-compare"
|
||||
AC_TRY_COMPILE(,,
|
||||
[OPTIM="$OPTIM -Wno-tautological-compare"
|
||||
AC_MSG_RESULT(yes)],
|
||||
@@ -167,12 +181,154 @@ if test -n "$GCC"; then
|
||||
CFLAGS="$CFLAGS -D_FORTIFY_SOURCE=2"
|
||||
;;
|
||||
|
||||
HP-UX*)
|
||||
if test "x$enable_32bit" = xyes; then
|
||||
# Build 32-bit libraries, 64-bit base...
|
||||
if test -z "$with_arch32flags"; then
|
||||
ARCH32FLAGS="-milp32"
|
||||
else
|
||||
ARCH32FLAGS="$with_arch32flags"
|
||||
fi
|
||||
|
||||
if test -z "$with_archflags"; then
|
||||
if test -z "$with_arch64flags"; then
|
||||
ARCHFLAGS="-mlp64"
|
||||
else
|
||||
ARCHFLAGS="$with_arch64flags"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if test "x$enable_64bit" = xyes; then
|
||||
# Build 64-bit libraries, 32-bit base...
|
||||
if test -z "$with_arch64flags"; then
|
||||
ARCH64FLAGS="-mlp64"
|
||||
else
|
||||
ARCH64FLAGS="$with_arch64flags"
|
||||
fi
|
||||
|
||||
if test -z "$with_archflags"; then
|
||||
if test -z "$with_arch32flags"; then
|
||||
ARCHFLAGS="-milp32"
|
||||
else
|
||||
ARCHFLAGS="$with_arch32flags"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
|
||||
IRIX)
|
||||
if test "x$enable_32bit" = xyes; then
|
||||
# Build 32-bit libraries, 64-bit base...
|
||||
if test -z "$with_arch32flags"; then
|
||||
ARCH32FLAGS="-n32 -mips3"
|
||||
else
|
||||
ARCH32FLAGS="$with_arch32flags"
|
||||
fi
|
||||
|
||||
if test -z "$with_archflags"; then
|
||||
if test -z "$with_arch64flags"; then
|
||||
ARCHFLAGS="-64 -mips4"
|
||||
else
|
||||
ARCHFLAGS="$with_arch64flags"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if test "x$enable_64bit" = xyes; then
|
||||
# Build 64-bit libraries, 32-bit base...
|
||||
if test -z "$with_arch64flags"; then
|
||||
ARCH64FLAGS="-64 -mips4"
|
||||
else
|
||||
ARCH64FLAGS="$with_arch64flags"
|
||||
fi
|
||||
|
||||
if test -z "$with_archflags"; then
|
||||
if test -z "$with_arch32flags"; then
|
||||
ARCHFLAGS="-n32 -mips3"
|
||||
else
|
||||
ARCHFLAGS="$with_arch32flags"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
|
||||
Linux*)
|
||||
# The -z relro option is provided by the Linux linker command to
|
||||
# make relocatable data read-only.
|
||||
if test x$enable_relro = xyes; then
|
||||
RELROFLAGS="-Wl,-z,relro"
|
||||
fi
|
||||
|
||||
if test "x$enable_32bit" = xyes; then
|
||||
# Build 32-bit libraries, 64-bit base...
|
||||
if test -z "$with_arch32flags"; then
|
||||
ARCH32FLAGS="-m32"
|
||||
else
|
||||
ARCH32FLAGS="$with_arch32flags"
|
||||
fi
|
||||
|
||||
if test -z "$with_archflags"; then
|
||||
if test -z "$with_arch64flags"; then
|
||||
ARCHFLAGS="-m64"
|
||||
else
|
||||
ARCHFLAGS="$with_arch64flags"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if test "x$enable_64bit" = xyes; then
|
||||
# Build 64-bit libraries, 32-bit base...
|
||||
if test -z "$with_arch64flags"; then
|
||||
ARCH64FLAGS="-m64"
|
||||
else
|
||||
ARCH64FLAGS="$with_arch64flags"
|
||||
fi
|
||||
|
||||
if test -z "$with_archflags"; then
|
||||
if test -z "$with_arch32flags"; then
|
||||
ARCHFLAGS="-m32"
|
||||
else
|
||||
ARCHFLAGS="$with_arch32flags"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
|
||||
SunOS*)
|
||||
if test "x$enable_32bit" = xyes; then
|
||||
# Build 32-bit libraries, 64-bit base...
|
||||
if test -z "$with_arch32flags"; then
|
||||
ARCH32FLAGS="-m32"
|
||||
else
|
||||
ARCH32FLAGS="$with_arch32flags"
|
||||
fi
|
||||
|
||||
if test -z "$with_archflags"; then
|
||||
if test -z "$with_arch64flags"; then
|
||||
ARCHFLAGS="-m64"
|
||||
else
|
||||
ARCHFLAGS="$with_arch64flags"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if test "x$enable_64bit" = xyes; then
|
||||
# Build 64-bit libraries, 32-bit base...
|
||||
if test -z "$with_arch64flags"; then
|
||||
ARCH64FLAGS="-m64"
|
||||
else
|
||||
ARCH64FLAGS="$with_arch64flags"
|
||||
fi
|
||||
|
||||
if test -z "$with_archflags"; then
|
||||
if test -z "$with_arch32flags"; then
|
||||
ARCHFLAGS="-m32"
|
||||
else
|
||||
ARCHFLAGS="$with_arch32flags"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
else
|
||||
@@ -201,6 +357,40 @@ else
|
||||
if test $PICFLAG = 1; then
|
||||
OPTIM="+z $OPTIM"
|
||||
fi
|
||||
|
||||
if test "x$enable_32bit" = xyes; then
|
||||
# Build 32-bit libraries, 64-bit base...
|
||||
if test -z "$with_arch32flags"; then
|
||||
ARCH32FLAGS="+DD32"
|
||||
else
|
||||
ARCH32FLAGS="$with_arch32flags"
|
||||
fi
|
||||
|
||||
if test -z "$with_archflags"; then
|
||||
if test -z "$with_arch64flags"; then
|
||||
ARCHFLAGS="+DD64"
|
||||
else
|
||||
ARCHFLAGS="$with_arch64flags"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if test "x$enable_64bit" = xyes; then
|
||||
# Build 64-bit libraries, 32-bit base...
|
||||
if test -z "$with_arch64flags"; then
|
||||
ARCH64FLAGS="+DD64"
|
||||
else
|
||||
ARCH64FLAGS="$with_arch64flags"
|
||||
fi
|
||||
|
||||
if test -z "$with_archflags"; then
|
||||
if test -z "$with_arch32flags"; then
|
||||
ARCHFLAGS="+DD32"
|
||||
else
|
||||
ARCHFLAGS="$with_arch32flags"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
IRIX)
|
||||
if test -z "$OPTIM"; then
|
||||
@@ -214,6 +404,40 @@ else
|
||||
if test "x$with_optim" = x; then
|
||||
OPTIM="-fullwarn -woff 1183,1209,1349,1506,3201 $OPTIM"
|
||||
fi
|
||||
|
||||
if test "x$enable_32bit" = xyes; then
|
||||
# Build 32-bit libraries, 64-bit base...
|
||||
if test -z "$with_arch32flags"; then
|
||||
ARCH32FLAGS="-n32 -mips3"
|
||||
else
|
||||
ARCH32FLAGS="$with_arch32flags"
|
||||
fi
|
||||
|
||||
if test -z "$with_archflags"; then
|
||||
if test -z "$with_arch64flags"; then
|
||||
ARCHFLAGS="-64 -mips4"
|
||||
else
|
||||
ARCHFLAGS="$with_arch64flags"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if test "x$enable_64bit" = xyes; then
|
||||
# Build 64-bit libraries, 32-bit base...
|
||||
if test -z "$with_arch64flags"; then
|
||||
ARCH64FLAGS="-64 -mips4"
|
||||
else
|
||||
ARCH64FLAGS="$with_arch64flags"
|
||||
fi
|
||||
|
||||
if test -z "$with_archflags"; then
|
||||
if test -z "$with_arch32flags"; then
|
||||
ARCHFLAGS="-n32 -mips3"
|
||||
else
|
||||
ARCHFLAGS="$with_arch32flags"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
OSF*)
|
||||
# Tru64 UNIX aka Digital UNIX aka OSF/1
|
||||
@@ -238,6 +462,47 @@ else
|
||||
if test $PICFLAG = 1; then
|
||||
OPTIM="-KPIC $OPTIM"
|
||||
fi
|
||||
|
||||
if test "x$enable_32bit" = xyes; then
|
||||
# Compiling on a Solaris system, build 64-bit
|
||||
# binaries with separate 32-bit libraries...
|
||||
ARCH32FLAGS="-xarch=generic"
|
||||
|
||||
if test "x$with_optim" = x; then
|
||||
# Suppress all of Sun's questionable
|
||||
# warning messages, and default to
|
||||
# 64-bit compiles of everything else...
|
||||
OPTIM="-w $OPTIM"
|
||||
fi
|
||||
|
||||
if test -z "$with_archflags"; then
|
||||
if test -z "$with_arch64flags"; then
|
||||
ARCHFLAGS="-xarch=generic64"
|
||||
else
|
||||
ARCHFLAGS="$with_arch64flags"
|
||||
fi
|
||||
fi
|
||||
else
|
||||
if test "x$enable_64bit" = xyes; then
|
||||
# Build 64-bit libraries...
|
||||
ARCH64FLAGS="-xarch=generic64"
|
||||
fi
|
||||
|
||||
if test "x$with_optim" = x; then
|
||||
# Suppress all of Sun's questionable
|
||||
# warning messages, and default to
|
||||
# 32-bit compiles of everything else...
|
||||
OPTIM="-w $OPTIM"
|
||||
fi
|
||||
|
||||
if test -z "$with_archflags"; then
|
||||
if test -z "$with_arch32flags"; then
|
||||
ARCHFLAGS="-xarch=generic"
|
||||
else
|
||||
ARCHFLAGS="$with_arch32flags"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
UNIX_SVR*)
|
||||
# UnixWare
|
||||
@@ -295,5 +560,5 @@ case $uname in
|
||||
esac
|
||||
|
||||
dnl
|
||||
dnl End of "$Id: cups-compiler.m4 10190 2012-01-20 16:22:58Z mike $".
|
||||
dnl End of "$Id: cups-compiler.m4 9809 2011-05-26 12:24:20Z mike $".
|
||||
dnl
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
dnl
|
||||
dnl "$Id: cups-defaults.m4 10104 2011-11-04 06:37:03Z mike $"
|
||||
dnl "$Id: cups-defaults.m4 9750 2011-05-06 22:53:53Z mike $"
|
||||
dnl
|
||||
dnl Default cupsd configuration settings for CUPS.
|
||||
dnl
|
||||
@@ -64,6 +64,7 @@ AC_ARG_WITH(fatal_errors, [ --with-fatal-errors set default FatalErrors val
|
||||
AC_SUBST(CUPS_FATAL_ERRORS)
|
||||
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_FATAL_ERRORS, "$CUPS_FATAL_ERRORS")
|
||||
|
||||
|
||||
dnl Default LogLevel
|
||||
AC_ARG_WITH(log_level, [ --with-log-level set default LogLevel value, default=warn],
|
||||
CUPS_LOG_LEVEL="$withval",
|
||||
@@ -90,16 +91,16 @@ fi
|
||||
AC_SUBST(CUPS_BROWSING)
|
||||
|
||||
dnl Default BrowseLocalProtocols
|
||||
AC_ARG_WITH(local_protocols, [ --with-local-protocols set default BrowseLocalProtocols, default=""],
|
||||
AC_ARG_WITH(local_protocols, [ --with-local-protocols set default BrowseLocalProtocols, default="CUPS"],
|
||||
default_local_protocols="$withval",
|
||||
default_local_protocols="default")
|
||||
|
||||
if test x$with_local_protocols != xno; then
|
||||
if test "x$default_local_protocols" = "xdefault"; then
|
||||
if test "x$DNSSDLIBS" != "x"; then
|
||||
CUPS_BROWSE_LOCAL_PROTOCOLS="dnssd"
|
||||
else
|
||||
CUPS_BROWSE_LOCAL_PROTOCOLS=""
|
||||
CUPS_BROWSE_LOCAL_PROTOCOLS="CUPS dnssd"
|
||||
else
|
||||
CUPS_BROWSE_LOCAL_PROTOCOLS="CUPS"
|
||||
fi
|
||||
else
|
||||
CUPS_BROWSE_LOCAL_PROTOCOLS="$default_local_protocols"
|
||||
@@ -112,6 +113,41 @@ AC_SUBST(CUPS_BROWSE_LOCAL_PROTOCOLS)
|
||||
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_BROWSE_LOCAL_PROTOCOLS,
|
||||
"$CUPS_BROWSE_LOCAL_PROTOCOLS")
|
||||
|
||||
dnl Default BrowseRemoteProtocols
|
||||
AC_ARG_WITH(remote_protocols, [ --with-remote-protocols set default BrowseRemoteProtocols, default="CUPS"],
|
||||
default_remote_protocols="$withval",
|
||||
default_remote_protocols="default")
|
||||
|
||||
if test x$with_remote_protocols != xno; then
|
||||
if test "x$default_remote_protocols" = "xdefault"; then
|
||||
if test "$uname" = "Darwin" -a $uversion -ge 90; then
|
||||
CUPS_BROWSE_REMOTE_PROTOCOLS=""
|
||||
else
|
||||
CUPS_BROWSE_REMOTE_PROTOCOLS="CUPS"
|
||||
fi
|
||||
else
|
||||
CUPS_BROWSE_REMOTE_PROTOCOLS="$default_remote_protocols"
|
||||
fi
|
||||
else
|
||||
CUPS_BROWSE_REMOTE_PROTOCOLS=""
|
||||
fi
|
||||
|
||||
AC_SUBST(CUPS_BROWSE_REMOTE_PROTOCOLS)
|
||||
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_BROWSE_REMOTE_PROTOCOLS,
|
||||
"$CUPS_BROWSE_REMOTE_PROTOCOLS")
|
||||
|
||||
dnl Default BrowseShortNames
|
||||
AC_ARG_ENABLE(browse_short, [ --disable-browse-short-names
|
||||
disable BrowseShortNames by default])
|
||||
if test "x$enable_browse_short" = xno; then
|
||||
CUPS_BROWSE_SHORT_NAMES="No"
|
||||
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_BROWSE_SHORT_NAMES, 0)
|
||||
else
|
||||
CUPS_BROWSE_SHORT_NAMES="Yes"
|
||||
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_BROWSE_SHORT_NAMES, 1)
|
||||
fi
|
||||
AC_SUBST(CUPS_BROWSE_SHORT_NAMES)
|
||||
|
||||
dnl Default DefaultShared
|
||||
AC_ARG_ENABLE(default_shared, [ --disable-default-shared
|
||||
disable DefaultShared by default])
|
||||
@@ -124,6 +160,38 @@ else
|
||||
fi
|
||||
AC_SUBST(CUPS_DEFAULT_SHARED)
|
||||
|
||||
dnl Default ImplicitClasses
|
||||
AC_ARG_ENABLE(implicit, [ --disable-implicit-classes
|
||||
disable ImplicitClasses by default])
|
||||
if test "x$enable_implicit" = xno; then
|
||||
CUPS_IMPLICIT_CLASSES="No"
|
||||
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_IMPLICIT_CLASSES, 0)
|
||||
else
|
||||
CUPS_IMPLICIT_CLASSES="Yes"
|
||||
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_IMPLICIT_CLASSES, 1)
|
||||
fi
|
||||
AC_SUBST(CUPS_IMPLICIT_CLASSES)
|
||||
|
||||
dnl Default UseNetworkDefault
|
||||
AC_ARG_ENABLE(use_network_default, [ --enable-use-network-default
|
||||
set UseNetworkDefault to Yes by default])
|
||||
if test "x$enable_use_network_default" != xno; then
|
||||
AC_MSG_CHECKING(whether to use network default printers)
|
||||
if test "x$enable_use_network_default" = xyes -o $uname != Darwin; then
|
||||
CUPS_USE_NETWORK_DEFAULT="Yes"
|
||||
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_USE_NETWORK_DEFAULT, 1)
|
||||
AC_MSG_RESULT(yes)
|
||||
else
|
||||
CUPS_USE_NETWORK_DEFAULT="No"
|
||||
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_USE_NETWORK_DEFAULT, 0)
|
||||
AC_MSG_RESULT(no)
|
||||
fi
|
||||
else
|
||||
CUPS_USE_NETWORK_DEFAULT="No"
|
||||
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_USE_NETWORK_DEFAULT, 0)
|
||||
fi
|
||||
AC_SUBST(CUPS_USE_NETWORK_DEFAULT)
|
||||
|
||||
dnl Determine the correct username and group for this OS...
|
||||
AC_ARG_WITH(cups_user, [ --with-cups-user set default user for CUPS],
|
||||
CUPS_USER="$withval",
|
||||
@@ -366,6 +434,52 @@ AC_ARG_WITH(ipp-port, [ --with-ipp-port set port number for IPP, defaul
|
||||
AC_SUBST(DEFAULT_IPP_PORT)
|
||||
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_IPP_PORT,$DEFAULT_IPP_PORT)
|
||||
|
||||
dnl Filters
|
||||
AC_ARG_ENABLE(bannertops, [ --enable-bannertops always build the banner filter ])
|
||||
AC_ARG_ENABLE(texttops, [ --enable-texttops always build the text filter ])
|
||||
|
||||
if test "x$enable_bannertops" = xno; then
|
||||
BANNERTOPS=""
|
||||
DEFAULT_BANNERTOPS="#"
|
||||
elif test "x$enable_bannertops" = xyes; then
|
||||
BANNERTOPS="bannertops"
|
||||
DEFAULT_BANNERTOPS=""
|
||||
elif test $uname = Darwin; then
|
||||
BANNERTOPS=""
|
||||
DEFAULT_BANNERTOPS="#"
|
||||
else
|
||||
BANNERTOPS="bannertops"
|
||||
DEFAULT_BANNERTOPS=""
|
||||
fi
|
||||
|
||||
if test "x$enable_texttops" = xno; then
|
||||
TEXTTOPS=""
|
||||
DEFAULT_TEXTTOPS="#"
|
||||
elif test "x$enable_texttops" = xyes; then
|
||||
TEXTTOPS="texttops"
|
||||
DEFAULT_TEXTTOPS=""
|
||||
elif test $uname = Darwin; then
|
||||
TEXTTOPS=""
|
||||
DEFAULT_TEXTTOPS="#"
|
||||
else
|
||||
TEXTTOPS="texttops"
|
||||
DEFAULT_TEXTTOPS=""
|
||||
fi
|
||||
|
||||
AC_SUBST(BANNERTOPS)
|
||||
AC_SUBST(DEFAULT_BANNERTOPS)
|
||||
AC_SUBST(DEFAULT_TEXTTOPS)
|
||||
AC_SUBST(TEXTTOPS)
|
||||
|
||||
dnl Fonts
|
||||
if test "x$BANNERTOPS" = x -a "x$TEXTTOPS" = x; then
|
||||
FONTS=""
|
||||
else
|
||||
FONTS="fonts"
|
||||
fi
|
||||
|
||||
AC_SUBST(FONTS)
|
||||
|
||||
dnl Web interface...
|
||||
AC_ARG_ENABLE(webif, [ --enable-webif enable the web interface by default, default=no for Mac OS X])
|
||||
case "x$enable_webif" in
|
||||
@@ -392,5 +506,5 @@ AC_SUBST(CUPS_WEBIF)
|
||||
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_WEBIF, $CUPS_DEFAULT_WEBIF)
|
||||
|
||||
dnl
|
||||
dnl End of "$Id: cups-defaults.m4 10104 2011-11-04 06:37:03Z mike $".
|
||||
dnl End of "$Id: cups-defaults.m4 9750 2011-05-06 22:53:53Z mike $".
|
||||
dnl
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
dnl
|
||||
dnl "$Id: cups-gssapi.m4 10137 2011-12-02 04:04:49Z mike $"
|
||||
dnl "$Id: cups-gssapi.m4 9771 2011-05-12 05:21:56Z mike $"
|
||||
dnl
|
||||
dnl GSSAPI/Kerberos library detection for CUPS.
|
||||
dnl
|
||||
@@ -71,45 +71,10 @@ if test x$enable_gssapi != xno; then
|
||||
if test "x$LIBGSSAPI" != x; then
|
||||
AC_CHECK_HEADER(krb5.h, AC_DEFINE(HAVE_KRB5_H))
|
||||
if test -d /System/Library/Frameworks/GSS.framework; then
|
||||
gssdir="/System/Library/Frameworks/GSS.framework"
|
||||
AC_MSG_CHECKING(for GSS/gssapi.h presence)
|
||||
if test -f $gssdir/Headers/gssapi.h; then
|
||||
AC_DEFINE(HAVE_GSS_GSSAPI_H)
|
||||
AC_MSG_RESULT(yes)
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
fi
|
||||
AC_MSG_CHECKING(for GSS/gssapi_generic.h presence)
|
||||
if test -f $gssdir/Headers/gssapi_generic.h; then
|
||||
AC_DEFINE(HAVE_GSSAPI_GENERIC_H)
|
||||
AC_MSG_RESULT(yes)
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
fi
|
||||
AC_MSG_CHECKING(for GSS/gssapi_krb5.h presence)
|
||||
if test -f $gssdir/Headers/gssapi_krb5.h; then
|
||||
AC_DEFINE(HAVE_GSSAPI_KRB5_H)
|
||||
AC_MSG_RESULT(yes)
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
fi
|
||||
AC_MSG_CHECKING(for GSS/gssapi_spi.h presence)
|
||||
if test -f $gssdir/PrivateHeaders/gssapi_spi.h; then
|
||||
AC_MSG_RESULT(yes)
|
||||
AC_MSG_CHECKING(for GSS/gssapi_spi.h usability)
|
||||
if test -s $gssdir/PrivateHeaders/gssapi_spi.h; then
|
||||
AC_MSG_RESULT(yes)
|
||||
AC_DEFINE(HAVE_GSS_GSSAPI_SPI_H)
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
fi
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
if test $uversion -ge 110; then
|
||||
# Broken public headers in 10.7...
|
||||
AC_MSG_ERROR(Run 'sudo mkdir -p $gssdir/PrivateHeaders' and 'sudo touch $gssdir/PrivateHeaders/gssapi_spi.h' to build CUPS.)
|
||||
fi
|
||||
fi
|
||||
AC_CHECK_HEADER(GSS/gssapi.h, AC_DEFINE(HAVE_GSS_GSSAPI_H))
|
||||
AC_CHECK_HEADER(GSS/gssapi_generic.h, AC_DEFINE(HAVE_GSSAPI_GENERIC_H))
|
||||
AC_CHECK_HEADER(GSS/gssapi_krb5.h, AC_DEFINE(HAVE_GSSAPI_KRB5_H))
|
||||
AC_CHECK_HEADER(GSS/gssapi_spi.h, AC_DEFINE(HAVE_GSS_GSSAPI_SPI_H))
|
||||
else
|
||||
AC_CHECK_HEADER(gssapi.h, AC_DEFINE(HAVE_GSSAPI_H))
|
||||
AC_CHECK_HEADER(gssapi/gssapi.h, AC_DEFINE(HAVE_GSSAPI_GSSAPI_H))
|
||||
@@ -163,9 +128,8 @@ else
|
||||
CUPS_DEFAULT_GSSSERVICENAME=""
|
||||
fi
|
||||
|
||||
AC_SUBST(CUPS_DEFAULT_GSSSERVICENAME)
|
||||
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_GSSSERVICENAME, "$CUPS_DEFAULT_GSSSERVICENAME")
|
||||
|
||||
dnl
|
||||
dnl End of "$Id: cups-gssapi.m4 10137 2011-12-02 04:04:49Z mike $".
|
||||
dnl End of "$Id: cups-gssapi.m4 9771 2011-05-12 05:21:56Z mike $".
|
||||
dnl
|
||||
|
||||
@@ -0,0 +1,112 @@
|
||||
dnl
|
||||
dnl "$Id: cups-image.m4 9750 2011-05-06 22:53:53Z mike $"
|
||||
dnl
|
||||
dnl Image library/filter stuff for CUPS.
|
||||
dnl
|
||||
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
|
||||
dnl property of Apple Inc. and are protected by Federal copyright
|
||||
dnl law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
dnl which should have been included with this file. If this file is
|
||||
dnl file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
dnl
|
||||
|
||||
dnl See if we want the image filters included at all...
|
||||
AC_ARG_ENABLE(image, [ --enable-image always build the image filters])
|
||||
|
||||
DEFAULT_IMAGEFILTERS="#"
|
||||
IMGFILTERS=""
|
||||
if test "x$enable_image" != xno; then
|
||||
AC_MSG_CHECKING(whether to build image filters)
|
||||
if test "x$enable_image" = xyes -o $uname != Darwin; then
|
||||
IMGFILTERS="imagetops imagetoraster"
|
||||
DEFAULT_IMAGEFILTERS=""
|
||||
AC_MSG_RESULT(yes)
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
fi
|
||||
fi
|
||||
|
||||
AC_SUBST(DEFAULT_IMAGEFILTERS)
|
||||
AC_SUBST(IMGFILTERS)
|
||||
|
||||
dnl Check for image libraries...
|
||||
AC_ARG_ENABLE(jpeg, [ --disable-jpeg disable JPEG support])
|
||||
AC_ARG_ENABLE(png, [ --disable-png disable PNG support])
|
||||
AC_ARG_ENABLE(tiff, [ --disable-tiff disable TIFF support])
|
||||
|
||||
LIBJPEG=""
|
||||
LIBPNG=""
|
||||
LIBTIFF=""
|
||||
LIBZ=""
|
||||
|
||||
AC_SUBST(LIBJPEG)
|
||||
AC_SUBST(LIBPNG)
|
||||
AC_SUBST(LIBTIFF)
|
||||
AC_SUBST(LIBZ)
|
||||
|
||||
dnl Image libraries use math library functions...
|
||||
AC_SEARCH_LIBS(pow, m)
|
||||
|
||||
dnl Save the current libraries since we don't want the image libraries
|
||||
dnl included with every program...
|
||||
SAVELIBS="$LIBS"
|
||||
|
||||
dnl JPEG library...
|
||||
if test x$enable_jpeg != xno; then
|
||||
AC_CHECK_HEADER(jpeglib.h,
|
||||
AC_CHECK_LIB(jpeg, jpeg_destroy_decompress,
|
||||
AC_DEFINE(HAVE_LIBJPEG)
|
||||
LIBJPEG="-ljpeg"
|
||||
LIBS="$LIBS -ljpeg"))
|
||||
else
|
||||
AC_MSG_NOTICE([JPEG support disabled with --disable-jpeg.])
|
||||
fi
|
||||
|
||||
dnl ZLIB library...
|
||||
AC_CHECK_HEADER(zlib.h,
|
||||
AC_CHECK_LIB(z, gzgets,
|
||||
AC_DEFINE(HAVE_LIBZ)
|
||||
LIBZ="-lz"
|
||||
LIBS="$LIBS -lz"))
|
||||
|
||||
dnl PNG library...
|
||||
if test x$enable_png != xno; then
|
||||
AC_CHECK_HEADER(png.h,
|
||||
AC_CHECK_LIB(png, png_create_read_struct,
|
||||
AC_DEFINE(HAVE_LIBPNG)
|
||||
LIBPNG="-lpng"))
|
||||
else
|
||||
AC_MSG_NOTICE([PNG support disabled with --disable-png.])
|
||||
fi
|
||||
|
||||
dnl TIFF library...
|
||||
if test x$enable_tiff != xno; then
|
||||
AC_CHECK_HEADER(tiff.h,
|
||||
AC_CHECK_LIB(tiff, TIFFReadScanline,
|
||||
AC_DEFINE(HAVE_LIBTIFF)
|
||||
LIBTIFF="-ltiff"))
|
||||
else
|
||||
AC_MSG_NOTICE([TIFF support disabled with --disable-tiff.])
|
||||
fi
|
||||
|
||||
dnl Restore original LIBS settings...
|
||||
LIBS="$SAVELIBS"
|
||||
|
||||
EXPORT_LIBJPEG="$LIBJPEG"
|
||||
EXPORT_LIBPNG="$LIBPNG"
|
||||
EXPORT_LIBTIFF="$LIBTIFF"
|
||||
EXPORT_LIBZ="$LIBZ"
|
||||
|
||||
AC_SUBST(EXPORT_LIBJPEG)
|
||||
AC_SUBST(EXPORT_LIBPNG)
|
||||
AC_SUBST(EXPORT_LIBTIFF)
|
||||
AC_SUBST(EXPORT_LIBZ)
|
||||
|
||||
AC_CHECK_HEADER(stdlib.h,AC_DEFINE(HAVE_STDLIB_H))
|
||||
|
||||
dnl
|
||||
dnl End of "$Id: cups-image.m4 9750 2011-05-06 22:53:53Z mike $".
|
||||
dnl
|
||||
@@ -0,0 +1,52 @@
|
||||
dnl
|
||||
dnl "$Id: cups-ldap.m4 9771 2011-05-12 05:21:56Z mike $"
|
||||
dnl
|
||||
dnl LDAP configuration stuff for CUPS.
|
||||
dnl
|
||||
dnl Copyright 2007-2011 by Apple Inc.
|
||||
dnl Copyright 2003-2006 by Easy Software Products, all rights reserved.
|
||||
dnl
|
||||
dnl These coded instructions, statements, and computer programs are the
|
||||
dnl property of Apple Inc. and are protected by Federal copyright
|
||||
dnl law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
dnl which should have been included with this file. If this file is
|
||||
dnl file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
dnl
|
||||
|
||||
AC_ARG_ENABLE(ldap, [ --disable-ldap disable LDAP support])
|
||||
AC_ARG_WITH(ldap-libs, [ --with-ldap-libs set directory for LDAP library],
|
||||
LDFLAGS="-L$withval $LDFLAGS"
|
||||
DSOFLAGS="-L$withval $DSOFLAGS",)
|
||||
AC_ARG_WITH(ldap-includes, [ --with-ldap-includes set directory for LDAP includes],
|
||||
CFLAGS="-I$withval $CFLAGS"
|
||||
CPPFLAGS="-I$withval $CPPFLAGS",)
|
||||
|
||||
LIBLDAP=""
|
||||
|
||||
if test x$enable_ldap != xno; then
|
||||
AC_CHECK_HEADER(ldap.h, [
|
||||
AC_CHECK_LIB(ldap, ldap_initialize,
|
||||
AC_DEFINE(HAVE_LDAP)
|
||||
AC_DEFINE(HAVE_OPENLDAP)
|
||||
LIBLDAP="-lldap"
|
||||
AC_CHECK_LIB(ldap, ldap_start_tls,
|
||||
AC_DEFINE(HAVE_LDAP_SSL)),
|
||||
|
||||
AC_CHECK_LIB(ldap, ldap_init,
|
||||
AC_DEFINE(HAVE_LDAP)
|
||||
AC_DEFINE(HAVE_MOZILLA_LDAP)
|
||||
LIBLDAP="-lldap"
|
||||
AC_CHECK_HEADER(ldap_ssl.h, AC_DEFINE(HAVE_LDAP_SSL_H),,[#include <ldap.h>])
|
||||
AC_CHECK_LIB(ldap, ldapssl_init,
|
||||
AC_DEFINE(HAVE_LDAP_SSL)))
|
||||
)
|
||||
AC_CHECK_LIB(ldap, ldap_set_rebind_proc, AC_DEFINE(HAVE_LDAP_REBIND_PROC))
|
||||
])
|
||||
fi
|
||||
|
||||
AC_SUBST(LIBLDAP)
|
||||
|
||||
|
||||
dnl
|
||||
dnl End of "$Id: cups-ldap.m4 9771 2011-05-12 05:21:56Z mike $".
|
||||
dnl
|
||||
@@ -0,0 +1,113 @@
|
||||
dnl
|
||||
dnl "$Id: cups-pdf.m4 9750 2011-05-06 22:53:53Z mike $"
|
||||
dnl
|
||||
dnl PDF filter configuration stuff for CUPS.
|
||||
dnl
|
||||
dnl Copyright 2007-2011 by Apple Inc.
|
||||
dnl Copyright 2006 by Easy Software Products, all rights reserved.
|
||||
dnl
|
||||
dnl These coded instructions, statements, and computer programs are the
|
||||
dnl property of Apple Inc. and are protected by Federal copyright
|
||||
dnl law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
dnl which should have been included with this file. If this file is
|
||||
dnl file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
dnl
|
||||
|
||||
AC_ARG_WITH(pdftops, [ --with-pdftops set pdftops filter (gs,/path/to/gs,pdftops,/path/to/pdftops,none), default=pdftops ])
|
||||
|
||||
PDFTOPS=""
|
||||
CUPS_PDFTOPS=""
|
||||
CUPS_GHOSTSCRIPT=""
|
||||
|
||||
case "x$with_pdftops" in
|
||||
x) # Default/auto
|
||||
if test $uname != Darwin; then
|
||||
AC_PATH_PROG(CUPS_PDFTOPS, pdftops)
|
||||
if test "x$CUPS_PDFTOPS" != x; then
|
||||
AC_DEFINE(HAVE_PDFTOPS)
|
||||
PDFTOPS="pdftops"
|
||||
else
|
||||
AC_PATH_PROG(CUPS_GHOSTSCRIPT, gs)
|
||||
if test "x$CUPS_GHOSTSCRIPT" != x; then
|
||||
AC_DEFINE(HAVE_GHOSTSCRIPT)
|
||||
PDFTOPS="pdftops"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
|
||||
xgs)
|
||||
AC_PATH_PROG(CUPS_GHOSTSCRIPT, gs)
|
||||
if test "x$CUPS_GHOSTSCRIPT" != x; then
|
||||
AC_DEFINE(HAVE_GHOSTSCRIPT)
|
||||
PDFTOPS="pdftops"
|
||||
else
|
||||
AC_MSG_ERROR(Unable to find gs program!)
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
|
||||
x/*/gs) # Use /path/to/gs without any check:
|
||||
CUPS_GHOSTSCRIPT="$with_pdftops"
|
||||
AC_DEFINE(HAVE_GHOSTSCRIPT)
|
||||
PDFTOPS="pdftops"
|
||||
;;
|
||||
|
||||
xpdftops)
|
||||
AC_PATH_PROG(CUPS_PDFTOPS, pdftops)
|
||||
if test "x$CUPS_PDFTOPS" != x; then
|
||||
AC_DEFINE(HAVE_PDFTOPS)
|
||||
PDFTOPS="pdftops"
|
||||
else
|
||||
AC_MSG_ERROR(Unable to find pdftops program!)
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
|
||||
x/*/pdftops) # Use /path/to/pdftops without any check:
|
||||
CUPS_PDFTOPS="$with_pdftops"
|
||||
AC_DEFINE(HAVE_PDFTOPS)
|
||||
PDFTOPS="pdftops"
|
||||
;;
|
||||
|
||||
xnone) # Make no pdftops filter if with_pdftops=none:
|
||||
;;
|
||||
|
||||
*) # Invalid with_pdftops value:
|
||||
AC_MSG_ERROR(Invalid with_pdftops value!)
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
if test "x$CUPS_PDFTOPS" != x; then
|
||||
AC_MSG_CHECKING(whether pdftops supports -origpagesizes)
|
||||
if ($CUPS_PDFTOPS -h 2>&1 | grep -q -- -origpagesizes); then
|
||||
AC_MSG_RESULT(yes)
|
||||
AC_DEFINE(HAVE_PDFTOPS_WITH_ORIGPAGESIZES)
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
fi
|
||||
|
||||
DEFAULT_PDFTOPS=""
|
||||
elif test "x$CUPS_GHOSTSCRIPT" != x; then
|
||||
AC_MSG_CHECKING(whether gs supports the ps2write device)
|
||||
if ($CUPS_GHOSTSCRIPT -h 2>&1 | grep -q ps2write); then
|
||||
AC_MSG_RESULT(yes)
|
||||
AC_DEFINE(HAVE_GHOSTSCRIPT_PS2WRITE)
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
fi
|
||||
|
||||
DEFAULT_PDFTOPS=""
|
||||
else
|
||||
DEFAULT_PDFTOPS="#"
|
||||
fi
|
||||
|
||||
AC_DEFINE_UNQUOTED(CUPS_PDFTOPS, "$CUPS_PDFTOPS")
|
||||
AC_DEFINE_UNQUOTED(CUPS_GHOSTSCRIPT, "$CUPS_GHOSTSCRIPT")
|
||||
AC_SUBST(DEFAULT_PDFTOPS)
|
||||
AC_SUBST(PDFTOPS)
|
||||
|
||||
dnl
|
||||
dnl End of "$Id: cups-pdf.m4 9750 2011-05-06 22:53:53Z mike $".
|
||||
dnl
|
||||
@@ -1,5 +1,5 @@
|
||||
dnl
|
||||
dnl "$Id: cups-scripting.m4 9927 2011-08-27 09:28:30Z mike $"
|
||||
dnl "$Id: cups-scripting.m4 9099 2010-04-11 07:16:05Z mike $"
|
||||
dnl
|
||||
dnl Scripting configuration stuff for CUPS.
|
||||
dnl
|
||||
@@ -68,6 +68,17 @@ else
|
||||
AC_DEFINE(HAVE_PHP)
|
||||
fi
|
||||
|
||||
PHPDIR=""
|
||||
if test "x$CUPS_PHP" != xno; then
|
||||
AC_PATH_PROG(PHPCONFIG, php-config)
|
||||
|
||||
if test "x$PHPCONFIG" != x; then
|
||||
PHPDIR="scripting/php"
|
||||
fi
|
||||
fi
|
||||
|
||||
AC_SUBST(PHPDIR)
|
||||
|
||||
dnl Do we have Python?
|
||||
AC_ARG_WITH(python, [ --with-python set Python interpreter for web interfaces ],
|
||||
CUPS_PYTHON="$withval",
|
||||
@@ -85,5 +96,5 @@ if test "x$CUPS_PYTHON" != x; then
|
||||
fi
|
||||
|
||||
dnl
|
||||
dnl End of "$Id: cups-scripting.m4 9927 2011-08-27 09:28:30Z mike $".
|
||||
dnl End of "$Id: cups-scripting.m4 9099 2010-04-11 07:16:05Z mike $".
|
||||
dnl
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
dnl
|
||||
dnl "$Id: cups-sharedlibs.m4 10190 2012-01-20 16:22:58Z mike $"
|
||||
dnl "$Id: cups-sharedlibs.m4 9153 2010-06-16 00:48:25Z mike $"
|
||||
dnl
|
||||
dnl Shared library support for CUPS.
|
||||
dnl
|
||||
dnl Copyright 2007-2012 by Apple Inc.
|
||||
dnl Copyright 2007-2010 by Apple Inc.
|
||||
dnl Copyright 1997-2005 by Easy Software Products, all rights reserved.
|
||||
dnl
|
||||
dnl These coded instructions, statements, and computer programs are the
|
||||
@@ -27,6 +27,7 @@ if test x$enable_shared != xno; then
|
||||
SunOS*)
|
||||
LIBCUPS="lib$cupsbase.so.2"
|
||||
LIBCUPSCGI="libcupscgi.so.1"
|
||||
LIBCUPSDRIVER="libcupsdriver.so.1"
|
||||
LIBCUPSIMAGE="libcupsimage.so.2"
|
||||
LIBCUPSMIME="libcupsmime.so.1"
|
||||
LIBCUPSPPDC="libcupsppdc.so.1"
|
||||
@@ -37,6 +38,7 @@ if test x$enable_shared != xno; then
|
||||
UNIX_S*)
|
||||
LIBCUPS="lib$cupsbase.so.2"
|
||||
LIBCUPSCGI="libcupscgi.so.1"
|
||||
LIBCUPSDRIVER="libcupsdriver.so.1"
|
||||
LIBCUPSIMAGE="libcupsimage.so.2"
|
||||
LIBCUPSMIME="libcupsmime.so.1"
|
||||
LIBCUPSPPDC="libcupsppdc.so.1"
|
||||
@@ -49,6 +51,7 @@ if test x$enable_shared != xno; then
|
||||
ia64)
|
||||
LIBCUPS="lib$cupsbase.so.2"
|
||||
LIBCUPSCGI="libcupscgi.so.1"
|
||||
LIBCUPSDRIVER="libcupsdriver.so.1"
|
||||
LIBCUPSIMAGE="libcupsimage.so.2"
|
||||
LIBCUPSMIME="libcupsmime.so.1"
|
||||
LIBCUPSPPDC="libcupsppdc.so.1"
|
||||
@@ -59,6 +62,7 @@ if test x$enable_shared != xno; then
|
||||
*)
|
||||
LIBCUPS="lib$cupsbase.sl.2"
|
||||
LIBCUPSCGI="libcupscgi.sl.1"
|
||||
LIBCUPSDRIVER="libcupsdriver.sl.1"
|
||||
LIBCUPSIMAGE="libcupsimage.sl.2"
|
||||
LIBCUPSMIME="libcupsmime.sl.1"
|
||||
LIBCUPSPPDC="libcupsppdc.sl.1"
|
||||
@@ -71,6 +75,7 @@ if test x$enable_shared != xno; then
|
||||
IRIX)
|
||||
LIBCUPS="lib$cupsbase.so.2"
|
||||
LIBCUPSCGI="libcupscgi.so.1"
|
||||
LIBCUPSDRIVER="libcupsdriver.so.1"
|
||||
LIBCUPSIMAGE="libcupsimage.so.2"
|
||||
LIBCUPSMIME="libcupsmime.so.1"
|
||||
LIBCUPSPPDC="libcupsppdc.so.1"
|
||||
@@ -81,6 +86,7 @@ if test x$enable_shared != xno; then
|
||||
OSF1* | Linux | GNU | *BSD*)
|
||||
LIBCUPS="lib$cupsbase.so.2"
|
||||
LIBCUPSCGI="libcupscgi.so.1"
|
||||
LIBCUPSDRIVER="libcupsdriver.so.1"
|
||||
LIBCUPSIMAGE="libcupsimage.so.2"
|
||||
LIBCUPSMIME="libcupsmime.so.1"
|
||||
LIBCUPSPPDC="libcupsppdc.so.1"
|
||||
@@ -91,6 +97,7 @@ if test x$enable_shared != xno; then
|
||||
Darwin*)
|
||||
LIBCUPS="lib$cupsbase.2.dylib"
|
||||
LIBCUPSCGI="libcupscgi.1.dylib"
|
||||
LIBCUPSDRIVER="libcupsdriver.1.dylib"
|
||||
LIBCUPSIMAGE="libcupsimage.2.dylib"
|
||||
LIBCUPSMIME="libcupsmime.1.dylib"
|
||||
LIBCUPSPPDC="libcupsppdc.1.dylib"
|
||||
@@ -102,6 +109,7 @@ if test x$enable_shared != xno; then
|
||||
LIBCUPS="lib${cupsbase}_s.a"
|
||||
LIBCUPSBASE="${cupsbase}_s"
|
||||
LIBCUPSCGI="libcupscgi_s.a"
|
||||
LIBCUPSDRIVER="libcupsdriver_s.a"
|
||||
LIBCUPSIMAGE="libcupsimage_s.a"
|
||||
LIBCUPSMIME="libcupsmime_s.a"
|
||||
LIBCUPSPPDC="libcupsppdc_s.a"
|
||||
@@ -114,6 +122,7 @@ if test x$enable_shared != xno; then
|
||||
echo " option with compiler."
|
||||
LIBCUPS="lib$cupsbase.so.2"
|
||||
LIBCUPSCGI="libcupscgi.so.1"
|
||||
LIBCUPSDRIVER="libcupsdriver.so.1"
|
||||
LIBCUPSIMAGE="libcupsimage.so.2"
|
||||
LIBCUPSMIME="libcupsmime.so.1"
|
||||
LIBCUPSPPDC="libcupsppdc.so.1"
|
||||
@@ -126,6 +135,7 @@ else
|
||||
PICFLAG=0
|
||||
LIBCUPS="lib$cupsbase.a"
|
||||
LIBCUPSCGI="libcupscgi.a"
|
||||
LIBCUPSDRIVER="libcupsdriver.a"
|
||||
LIBCUPSIMAGE="libcupsimage.a"
|
||||
LIBCUPSMIME="libcupsmime.a"
|
||||
LIBCUPSPPDC="libcupsppdc.a"
|
||||
@@ -133,12 +143,20 @@ else
|
||||
DSOXX=":"
|
||||
fi
|
||||
|
||||
# 32-bit and 64-bit libraries need variations of the standard
|
||||
# DSOFLAGS...
|
||||
DSO32FLAGS="$DSOFLAGS"
|
||||
DSO64FLAGS="$DSOFLAGS"
|
||||
|
||||
AC_SUBST(DSO)
|
||||
AC_SUBST(DSOXX)
|
||||
AC_SUBST(DSOFLAGS)
|
||||
AC_SUBST(DSO32FLAGS)
|
||||
AC_SUBST(DSO64FLAGS)
|
||||
AC_SUBST(LIBCUPS)
|
||||
AC_SUBST(LIBCUPSBASE)
|
||||
AC_SUBST(LIBCUPSCGI)
|
||||
AC_SUBST(LIBCUPSDRIVER)
|
||||
AC_SUBST(LIBCUPSIMAGE)
|
||||
AC_SUBST(LIBCUPSMIME)
|
||||
AC_SUBST(LIBCUPSPPDC)
|
||||
@@ -149,6 +167,7 @@ if test x$enable_shared = xno; then
|
||||
LINKCUPSIMAGE="../filter/libcupsimage.a"
|
||||
|
||||
EXTLINKCUPS="-lcups"
|
||||
EXTLINKCUPSDRIVER="-lcupsdriver"
|
||||
EXTLINKCUPSIMAGE="-lcupsimage"
|
||||
else
|
||||
if test $uname = AIX; then
|
||||
@@ -156,17 +175,20 @@ else
|
||||
LINKCUPSIMAGE="-lcupsimage_s"
|
||||
|
||||
EXTLINKCUPS="-lcups_s"
|
||||
EXTLINKCUPSDRIVER="-lcupsdriver_s"
|
||||
EXTLINKCUPSIMAGE="-lcupsimage_s"
|
||||
else
|
||||
LINKCUPS="-l${cupsbase}"
|
||||
LINKCUPSIMAGE="-lcupsimage"
|
||||
|
||||
EXTLINKCUPS="-lcups"
|
||||
EXTLINKCUPSDRIVER="-lcupsdriver"
|
||||
EXTLINKCUPSIMAGE="-lcupsimage"
|
||||
fi
|
||||
fi
|
||||
|
||||
AC_SUBST(EXTLINKCUPS)
|
||||
AC_SUBST(EXTLINKCUPSDRIVER)
|
||||
AC_SUBST(EXTLINKCUPSIMAGE)
|
||||
AC_SUBST(LINKCUPS)
|
||||
AC_SUBST(LINKCUPSIMAGE)
|
||||
@@ -179,7 +201,7 @@ if test "$DSO" != ":"; then
|
||||
# rather than to the executables. This makes things smaller if you
|
||||
# are using any static libraries, and it also allows us to distribute
|
||||
# a single DSO rather than a bunch...
|
||||
DSOLIBS="\$(LIBZ)"
|
||||
DSOLIBS="\$(LIBTIFF) \$(LIBPNG) \$(LIBJPEG) \$(LIBZ)"
|
||||
IMGLIBS=""
|
||||
|
||||
# Tell the run-time linkers where to find a DSO. Some platforms
|
||||
@@ -191,9 +213,13 @@ if test "$DSO" != ":"; then
|
||||
case "$uarch" in
|
||||
ia64)
|
||||
DSOFLAGS="-Wl,+s,+b,$libdir $DSOFLAGS"
|
||||
DSO32FLAGS="-Wl,+s,+b,$LIB32DIR $DSO32FLAGS"
|
||||
DSO64FLAGS="-Wl,+s,+b,$LIB64DIR $DSO64FLAGS"
|
||||
;;
|
||||
*)
|
||||
DSOFLAGS="+s +b $libdir $DSOFLAGS"
|
||||
DSO32FLAGS="+s +b $LIB32DIR $DSO32FLAGS"
|
||||
DSO64FLAGS="+s +b $LIB64DIR $DSO64FLAGS"
|
||||
;;
|
||||
esac
|
||||
LDFLAGS="$LDFLAGS -Wl,+s,+b,$libdir"
|
||||
@@ -203,6 +229,8 @@ if test "$DSO" != ":"; then
|
||||
# Solaris...
|
||||
if test $exec_prefix != /usr; then
|
||||
DSOFLAGS="-R$libdir $DSOFLAGS"
|
||||
DSO32FLAGS="-R$LIB32DIR $DSO32FLAGS"
|
||||
DSO64FLAGS="-R$LIB64DIR $DSO64FLAGS"
|
||||
LDFLAGS="$LDFLAGS -R$libdir"
|
||||
EXPORT_LDFLAGS="-R$libdir"
|
||||
fi
|
||||
@@ -211,6 +239,8 @@ if test "$DSO" != ":"; then
|
||||
# *BSD...
|
||||
if test $exec_prefix != /usr; then
|
||||
DSOFLAGS="-Wl,-R$libdir $DSOFLAGS"
|
||||
DSO32FLAGS="-Wl,-R$LIB32DIR $DSO32FLAGS"
|
||||
DSO64FLAGS="-Wl,-R$LIB64DIR $DSO64FLAGS"
|
||||
LDFLAGS="$LDFLAGS -Wl,-R$libdir"
|
||||
EXPORT_LDFLAGS="-Wl,-R$libdir"
|
||||
fi
|
||||
@@ -219,6 +249,8 @@ if test "$DSO" != ":"; then
|
||||
# IRIX, Linux, and HURD...
|
||||
if test $exec_prefix != /usr; then
|
||||
DSOFLAGS="-Wl,-rpath,$libdir $DSOFLAGS"
|
||||
DSO32FLAGS="-Wl,-rpath,$LIB32DIR $DSO32FLAGS"
|
||||
DSO64FLAGS="-Wl,-rpath,$LIB64DIR $DSO64FLAGS"
|
||||
LDFLAGS="$LDFLAGS -Wl,-rpath,$libdir"
|
||||
EXPORT_LDFLAGS="-Wl,-rpath,$libdir"
|
||||
fi
|
||||
@@ -226,7 +258,7 @@ if test "$DSO" != ":"; then
|
||||
esac
|
||||
else
|
||||
DSOLIBS=""
|
||||
IMGLIBS="\$(LIBZ)"
|
||||
IMGLIBS="\$(LIBTIFF) \$(LIBPNG) \$(LIBJPEG) \$(LIBZ)"
|
||||
fi
|
||||
|
||||
AC_SUBST(DSOLIBS)
|
||||
@@ -234,5 +266,5 @@ AC_SUBST(IMGLIBS)
|
||||
AC_SUBST(EXPORT_LDFLAGS)
|
||||
|
||||
dnl
|
||||
dnl End of "$Id: cups-sharedlibs.m4 10190 2012-01-20 16:22:58Z mike $".
|
||||
dnl End of "$Id: cups-sharedlibs.m4 9153 2010-06-16 00:48:25Z mike $".
|
||||
dnl
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
dnl
|
||||
dnl "$Id: cups-slp.m4 9771 2011-05-12 05:21:56Z mike $"
|
||||
dnl
|
||||
dnl OpenSLP configuration stuff for CUPS.
|
||||
dnl
|
||||
dnl Copyright 2007-2011 by Apple Inc.
|
||||
dnl Copyright 1997-2005 by Easy Software Products, all rights reserved.
|
||||
dnl
|
||||
dnl These coded instructions, statements, and computer programs are the
|
||||
dnl property of Apple Inc. and are protected by Federal copyright
|
||||
dnl law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
dnl which should have been included with this file. If this file is
|
||||
dnl file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
dnl
|
||||
|
||||
AC_ARG_ENABLE(slp, [ --disable-slp disable SLP support])
|
||||
AC_ARG_WITH(openslp-libs, [ --with-openslp-libs set directory for OpenSLP library],
|
||||
LDFLAGS="-L$withval $LDFLAGS"
|
||||
DSOFLAGS="-L$withval $DSOFLAGS",)
|
||||
AC_ARG_WITH(openslp-includes, [ --with-openslp-includes set directory for OpenSLP includes],
|
||||
CFLAGS="-I$withval $CFLAGS"
|
||||
CPPFLAGS="-I$withval $CPPFLAGS",)
|
||||
|
||||
LIBSLP=""
|
||||
|
||||
if test x$enable_slp != xno; then
|
||||
AC_CHECK_HEADER(slp.h,
|
||||
AC_CHECK_LIB(slp, SLPOpen,
|
||||
AC_DEFINE(HAVE_LIBSLP)
|
||||
LIBSLP="-lslp"))
|
||||
fi
|
||||
|
||||
AC_SUBST(LIBSLP)
|
||||
|
||||
|
||||
dnl
|
||||
dnl End of "$Id: cups-slp.m4 9771 2011-05-12 05:21:56Z mike $".
|
||||
dnl
|
||||
@@ -1,5 +1,5 @@
|
||||
dnl
|
||||
dnl "$Id: cups-ssl.m4 9837 2011-06-16 20:12:16Z mike $"
|
||||
dnl "$Id: cups-ssl.m4 9756 2011-05-11 00:52:08Z mike $"
|
||||
dnl
|
||||
dnl OpenSSL/GNUTLS stuff for CUPS.
|
||||
dnl
|
||||
@@ -56,12 +56,6 @@ if test x$enable_ssl != xno; then
|
||||
AC_CHECK_HEADER(Security/SecIdentitySearchPriv.h,
|
||||
AC_DEFINE(HAVE_SECIDENTITYSEARCHPRIV_H))
|
||||
|
||||
dnl Check for SSLSetProtocolVersionMax...
|
||||
SAVELIBS="$LIBS"
|
||||
LIBS="$LIBS -framework Security"
|
||||
AC_CHECK_FUNC(SSLSetProtocolVersionMax)
|
||||
LIBS="$SAVELIBS"
|
||||
|
||||
dnl Check for SecCertificateCopyData..
|
||||
AC_MSG_CHECKING(for SecCertificateCopyData)
|
||||
if test $uversion -ge 100; then
|
||||
@@ -175,5 +169,5 @@ AC_SUBST(EXPORT_SSLLIBS)
|
||||
|
||||
|
||||
dnl
|
||||
dnl End of "$Id: cups-ssl.m4 9837 2011-06-16 20:12:16Z mike $".
|
||||
dnl End of "$Id: cups-ssl.m4 9756 2011-05-11 00:52:08Z mike $".
|
||||
dnl
|
||||
|
||||
+6
-16
@@ -3,7 +3,7 @@
|
||||
*
|
||||
* Configuration file 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
|
||||
@@ -62,8 +62,12 @@
|
||||
*/
|
||||
|
||||
#define CUPS_DEFAULT_BROWSING 1
|
||||
#define CUPS_DEFAULT_BROWSE_LOCAL_PROTOCOLS ""
|
||||
#define CUPS_DEFAULT_BROWSE_LOCAL_PROTOCOLS "CUPS"
|
||||
#define CUPS_DEFAULT_BROWSE_REMOTE_PROTOCOLS "CUPS"
|
||||
#define CUPS_DEFAULT_BROWSE_SHORT_NAMES 1
|
||||
#define CUPS_DEFAULT_DEFAULT_SHARED 1
|
||||
#define CUPS_DEFAULT_IMPLICIT_CLASSES 1
|
||||
#define CUPS_DEFAULT_USE_NETWORK_DEFAULT 1
|
||||
|
||||
|
||||
/*
|
||||
@@ -338,13 +342,6 @@
|
||||
#undef HAVE_SECPOLICYCREATESSL
|
||||
|
||||
|
||||
/*
|
||||
* Do we have the SSLSetProtocolVersionMax function?
|
||||
*/
|
||||
|
||||
#undef HAVE_SSLSETPROTOCOLVERSIONMAX
|
||||
|
||||
|
||||
/*
|
||||
* Do we have the cssmErrorString function?
|
||||
*/
|
||||
@@ -737,13 +734,6 @@
|
||||
#undef HAVE_XPC
|
||||
|
||||
|
||||
/*
|
||||
* Do we have Mini-XML?
|
||||
*/
|
||||
|
||||
#undef HAVE_MXML_H
|
||||
|
||||
|
||||
#endif /* !_CUPS_CONFIG_H_ */
|
||||
|
||||
/*
|
||||
|
||||
+7
-2
@@ -3,7 +3,7 @@ dnl "$Id$"
|
||||
dnl
|
||||
dnl Configuration script for CUPS.
|
||||
dnl
|
||||
dnl Copyright 2007-2012 by Apple Inc.
|
||||
dnl Copyright 2007-2010 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,13 +20,17 @@ sinclude(config-scripts/cups-common.m4)
|
||||
sinclude(config-scripts/cups-directories.m4)
|
||||
sinclude(config-scripts/cups-manpages.m4)
|
||||
|
||||
sinclude(config-scripts/cups-3264.m4)
|
||||
sinclude(config-scripts/cups-sharedlibs.m4)
|
||||
sinclude(config-scripts/cups-libtool.m4)
|
||||
sinclude(config-scripts/cups-compiler.m4)
|
||||
|
||||
sinclude(config-scripts/cups-image.m4)
|
||||
sinclude(config-scripts/cups-network.m4)
|
||||
sinclude(config-scripts/cups-poll.m4)
|
||||
sinclude(config-scripts/cups-slp.m4)
|
||||
sinclude(config-scripts/cups-gssapi.m4)
|
||||
sinclude(config-scripts/cups-ldap.m4)
|
||||
sinclude(config-scripts/cups-threads.m4)
|
||||
sinclude(config-scripts/cups-ssl.m4)
|
||||
sinclude(config-scripts/cups-pam.m4)
|
||||
@@ -34,6 +38,7 @@ sinclude(config-scripts/cups-largefile.m4)
|
||||
sinclude(config-scripts/cups-dnssd.m4)
|
||||
sinclude(config-scripts/cups-launchd.m4)
|
||||
sinclude(config-scripts/cups-defaults.m4)
|
||||
sinclude(config-scripts/cups-pdf.m4)
|
||||
sinclude(config-scripts/cups-scripting.m4)
|
||||
|
||||
INSTALL_LANGUAGES=""
|
||||
@@ -51,7 +56,7 @@ if test "x$LANGUAGES" != x; then
|
||||
LANGFILES="$LANGFILES templates/$lang/header.tmpl"
|
||||
fi
|
||||
done
|
||||
elif test "x$CUPS_BUNDLEDIR" != x; then
|
||||
elif test "x$CUPS_BUNDLEDIR" != ""; then
|
||||
INSTALL_LANGUAGES="install-langbundle"
|
||||
UNINSTALL_LANGUAGES="uninstall-langbundle"
|
||||
fi
|
||||
|
||||
+20
-6
@@ -1,10 +1,10 @@
|
||||
#! /bin/sh
|
||||
#
|
||||
# "$Id$"
|
||||
#
|
||||
#
|
||||
# CUPS configuration utility.
|
||||
#
|
||||
# Copyright 2007-2011 by Apple Inc.
|
||||
# Copyright 2007-2010 by Apple Inc.
|
||||
# Copyright 2001-2006 by Easy Software Products, all rights reserved.
|
||||
#
|
||||
# These coded instructions, statements, and computer programs are the
|
||||
@@ -15,7 +15,7 @@
|
||||
#
|
||||
|
||||
VERSION="@CUPS_VERSION@"
|
||||
APIVERSION="1.6"
|
||||
APIVERSION="1.5"
|
||||
BUILD="@CUPS_BUILD@"
|
||||
|
||||
prefix=@prefix@
|
||||
@@ -35,7 +35,8 @@ INSTALLSTATIC=@INSTALLSTATIC@
|
||||
# flags for C++ compiler:
|
||||
CFLAGS=""
|
||||
LDFLAGS="@EXPORT_LDFLAGS@"
|
||||
LIBS="@LIBGSSAPI@ @EXPORT_SSLLIBS@ @LIBZ@ @LIBS@"
|
||||
LIBS="@LIBGSSAPI@ @EXPORT_SSLLIBS@ @EXPORT_LIBZ@ @LIBS@"
|
||||
IMGLIBS="@EXPORT_LIBTIFF@ @EXPORT_LIBJPEG@ @EXPORT_LIBPNG@"
|
||||
|
||||
# Check for local invocation...
|
||||
selfdir=`dirname $0`
|
||||
@@ -45,6 +46,9 @@ if test -f "$selfdir/cups/cups.h"; then
|
||||
LDFLAGS="-L$selfdir/cups -L$selfdir/filter $LDFLAGS"
|
||||
libdir="$selfdir/cups"
|
||||
imagelibdir="$selfdir/filter"
|
||||
if test ! -f "$selfdir/cups/raster.h"; then
|
||||
ln -s ../filter/raster.h "$selfdir/cups"
|
||||
fi
|
||||
else
|
||||
if test $includedir != /usr/include; then
|
||||
CFLAGS="$CFLAGS -I$includedir"
|
||||
@@ -64,7 +68,7 @@ usage ()
|
||||
echo " cups-config --datadir"
|
||||
echo " cups-config --help"
|
||||
echo " cups-config --ldflags"
|
||||
echo " cups-config [--image] [--static] --libs"
|
||||
echo " cups-config [--driver] [--image] [--static] --libs"
|
||||
echo " cups-config --serverbin"
|
||||
echo " cups-config --serverroot"
|
||||
echo " cups-config --version"
|
||||
@@ -79,6 +83,7 @@ fi
|
||||
# Parse command line options
|
||||
static=no
|
||||
image=no
|
||||
driver=no
|
||||
|
||||
while test $# -gt 0; do
|
||||
case $1 in
|
||||
@@ -94,6 +99,9 @@ while test $# -gt 0; do
|
||||
--datadir)
|
||||
echo $cups_datadir
|
||||
;;
|
||||
--driver)
|
||||
driver=yes
|
||||
;;
|
||||
--help)
|
||||
usage 0
|
||||
;;
|
||||
@@ -109,10 +117,16 @@ while test $# -gt 0; do
|
||||
if test $image = yes; then
|
||||
libs="@EXTLINKCUPSIMAGE@ $libs"
|
||||
fi
|
||||
if test $driver = yes; then
|
||||
libs="@EXTLINKCUPSDRIVER@ $libs"
|
||||
fi
|
||||
else
|
||||
libs="$libdir/libcups.a $LIBS";
|
||||
if test $image = yes; then
|
||||
libs="$libdir/libcupsimage.a $libs"
|
||||
libs="$libdir/libcupsimage.a $IMGLIBS $libs"
|
||||
fi
|
||||
if test $driver = yes; then
|
||||
libs="$libdir/libcupsdriver.a $libs"
|
||||
fi
|
||||
fi
|
||||
echo $libs
|
||||
|
||||
+735
-250
@@ -1,250 +1,735 @@
|
||||
adminutil.o: adminutil.c cups-private.h ../cups/cups.h file.h \
|
||||
versioning.h ipp.h http.h array.h language.h string-private.h \
|
||||
../config.h debug-private.h ppd-private.h ../cups/ppd.h pwg-private.h \
|
||||
http-private.h md5-private.h ipp-private.h language-private.h \
|
||||
../cups/transcode.h thread-private.h adminutil.h
|
||||
array.o: array.c string-private.h ../config.h debug-private.h \
|
||||
../cups/versioning.h array-private.h ../cups/array.h
|
||||
attr.o: attr.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h \
|
||||
http.h array.h language.h string-private.h ../config.h debug-private.h \
|
||||
ppd-private.h ../cups/ppd.h pwg-private.h http-private.h md5-private.h \
|
||||
ipp-private.h language-private.h ../cups/transcode.h thread-private.h
|
||||
auth.o: auth.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h \
|
||||
http.h array.h language.h string-private.h ../config.h debug-private.h \
|
||||
ppd-private.h ../cups/ppd.h pwg-private.h http-private.h md5-private.h \
|
||||
ipp-private.h language-private.h ../cups/transcode.h thread-private.h
|
||||
backchannel.o: backchannel.c cups.h file.h versioning.h ipp.h http.h \
|
||||
array.h language.h
|
||||
backend.o: backend.c cups-private.h ../cups/cups.h file.h versioning.h \
|
||||
ipp.h http.h array.h language.h string-private.h ../config.h \
|
||||
debug-private.h ppd-private.h ../cups/ppd.h pwg-private.h \
|
||||
http-private.h md5-private.h ipp-private.h language-private.h \
|
||||
../cups/transcode.h thread-private.h backend.h
|
||||
conflicts.o: conflicts.c cups-private.h ../cups/cups.h file.h \
|
||||
versioning.h ipp.h http.h array.h language.h string-private.h \
|
||||
../config.h debug-private.h ppd-private.h ../cups/ppd.h pwg-private.h \
|
||||
http-private.h md5-private.h ipp-private.h language-private.h \
|
||||
../cups/transcode.h thread-private.h
|
||||
custom.o: custom.c cups-private.h ../cups/cups.h file.h versioning.h \
|
||||
ipp.h http.h array.h language.h string-private.h ../config.h \
|
||||
debug-private.h ppd-private.h ../cups/ppd.h pwg-private.h \
|
||||
http-private.h md5-private.h ipp-private.h language-private.h \
|
||||
../cups/transcode.h thread-private.h
|
||||
debug.o: debug.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h \
|
||||
http.h array.h language.h string-private.h ../config.h debug-private.h \
|
||||
ppd-private.h ../cups/ppd.h pwg-private.h http-private.h md5-private.h \
|
||||
ipp-private.h language-private.h ../cups/transcode.h thread-private.h
|
||||
dest.o: dest.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h \
|
||||
http.h array.h language.h string-private.h ../config.h debug-private.h \
|
||||
ppd-private.h ../cups/ppd.h pwg-private.h http-private.h md5-private.h \
|
||||
ipp-private.h language-private.h ../cups/transcode.h thread-private.h
|
||||
dest-job.o: dest-job.c cups-private.h ../cups/cups.h file.h versioning.h \
|
||||
ipp.h http.h array.h language.h string-private.h ../config.h \
|
||||
debug-private.h ppd-private.h ../cups/ppd.h pwg-private.h \
|
||||
http-private.h md5-private.h ipp-private.h language-private.h \
|
||||
../cups/transcode.h thread-private.h
|
||||
dest-localization.o: dest-localization.c cups-private.h ../cups/cups.h \
|
||||
file.h versioning.h ipp.h http.h array.h language.h string-private.h \
|
||||
../config.h debug-private.h ppd-private.h ../cups/ppd.h pwg-private.h \
|
||||
http-private.h md5-private.h ipp-private.h language-private.h \
|
||||
../cups/transcode.h thread-private.h
|
||||
dest-options.o: dest-options.c cups-private.h ../cups/cups.h file.h \
|
||||
versioning.h ipp.h http.h array.h language.h string-private.h \
|
||||
../config.h debug-private.h ppd-private.h ../cups/ppd.h pwg-private.h \
|
||||
http-private.h md5-private.h ipp-private.h language-private.h \
|
||||
../cups/transcode.h thread-private.h
|
||||
dir.o: dir.c string-private.h ../config.h debug-private.h \
|
||||
../cups/versioning.h dir.h
|
||||
emit.o: emit.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h \
|
||||
http.h array.h language.h string-private.h ../config.h debug-private.h \
|
||||
ppd-private.h ../cups/ppd.h pwg-private.h http-private.h md5-private.h \
|
||||
ipp-private.h language-private.h ../cups/transcode.h thread-private.h
|
||||
encode.o: encode.c cups-private.h ../cups/cups.h file.h versioning.h \
|
||||
ipp.h http.h array.h language.h string-private.h ../config.h \
|
||||
debug-private.h ppd-private.h ../cups/ppd.h pwg-private.h \
|
||||
http-private.h md5-private.h ipp-private.h language-private.h \
|
||||
../cups/transcode.h thread-private.h
|
||||
file.o: file.c file-private.h cups-private.h ../cups/cups.h file.h \
|
||||
versioning.h ipp.h http.h array.h language.h string-private.h \
|
||||
../config.h debug-private.h ppd-private.h ../cups/ppd.h pwg-private.h \
|
||||
http-private.h md5-private.h ipp-private.h language-private.h \
|
||||
../cups/transcode.h thread-private.h
|
||||
getdevices.o: getdevices.c cups-private.h ../cups/cups.h file.h \
|
||||
versioning.h ipp.h http.h array.h language.h string-private.h \
|
||||
../config.h debug-private.h ppd-private.h ../cups/ppd.h pwg-private.h \
|
||||
http-private.h md5-private.h ipp-private.h language-private.h \
|
||||
../cups/transcode.h thread-private.h
|
||||
getifaddrs.o: getifaddrs.c http-private.h ../config.h ../cups/http.h \
|
||||
versioning.h array.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
getputfile.o: getputfile.c cups-private.h ../cups/cups.h file.h \
|
||||
versioning.h ipp.h http.h array.h language.h string-private.h \
|
||||
../config.h debug-private.h ppd-private.h ../cups/ppd.h pwg-private.h \
|
||||
http-private.h md5-private.h ipp-private.h language-private.h \
|
||||
../cups/transcode.h thread-private.h
|
||||
globals.o: globals.c cups-private.h ../cups/cups.h file.h versioning.h \
|
||||
ipp.h http.h array.h language.h string-private.h ../config.h \
|
||||
debug-private.h ppd-private.h ../cups/ppd.h pwg-private.h \
|
||||
http-private.h md5-private.h ipp-private.h language-private.h \
|
||||
../cups/transcode.h thread-private.h
|
||||
http.o: http.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h \
|
||||
http.h array.h language.h string-private.h ../config.h debug-private.h \
|
||||
ppd-private.h ../cups/ppd.h pwg-private.h http-private.h md5-private.h \
|
||||
ipp-private.h language-private.h ../cups/transcode.h thread-private.h
|
||||
http-addr.o: http-addr.c cups-private.h ../cups/cups.h file.h \
|
||||
versioning.h ipp.h http.h array.h language.h string-private.h \
|
||||
../config.h debug-private.h ppd-private.h ../cups/ppd.h pwg-private.h \
|
||||
http-private.h md5-private.h ipp-private.h language-private.h \
|
||||
../cups/transcode.h thread-private.h
|
||||
http-addrlist.o: http-addrlist.c cups-private.h ../cups/cups.h file.h \
|
||||
versioning.h ipp.h http.h array.h language.h string-private.h \
|
||||
../config.h debug-private.h ppd-private.h ../cups/ppd.h pwg-private.h \
|
||||
http-private.h md5-private.h ipp-private.h language-private.h \
|
||||
../cups/transcode.h thread-private.h
|
||||
http-support.o: http-support.c cups-private.h ../cups/cups.h file.h \
|
||||
versioning.h ipp.h http.h array.h language.h string-private.h \
|
||||
../config.h debug-private.h ppd-private.h ../cups/ppd.h pwg-private.h \
|
||||
http-private.h md5-private.h ipp-private.h language-private.h \
|
||||
../cups/transcode.h thread-private.h
|
||||
ipp.o: ipp.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h \
|
||||
http.h array.h language.h string-private.h ../config.h debug-private.h \
|
||||
ppd-private.h ../cups/ppd.h pwg-private.h http-private.h md5-private.h \
|
||||
ipp-private.h language-private.h ../cups/transcode.h thread-private.h
|
||||
ipp-support.o: ipp-support.c cups-private.h ../cups/cups.h file.h \
|
||||
versioning.h ipp.h http.h array.h language.h string-private.h \
|
||||
../config.h debug-private.h ppd-private.h ../cups/ppd.h pwg-private.h \
|
||||
http-private.h md5-private.h ipp-private.h language-private.h \
|
||||
../cups/transcode.h thread-private.h
|
||||
langprintf.o: langprintf.c cups-private.h ../cups/cups.h file.h \
|
||||
versioning.h ipp.h http.h array.h language.h string-private.h \
|
||||
../config.h debug-private.h ppd-private.h ../cups/ppd.h pwg-private.h \
|
||||
http-private.h md5-private.h ipp-private.h language-private.h \
|
||||
../cups/transcode.h thread-private.h
|
||||
language.o: language.c cups-private.h ../cups/cups.h file.h versioning.h \
|
||||
ipp.h http.h array.h language.h string-private.h ../config.h \
|
||||
debug-private.h ppd-private.h ../cups/ppd.h pwg-private.h \
|
||||
http-private.h md5-private.h ipp-private.h language-private.h \
|
||||
../cups/transcode.h thread-private.h
|
||||
localize.o: localize.c cups-private.h ../cups/cups.h file.h versioning.h \
|
||||
ipp.h http.h array.h language.h string-private.h ../config.h \
|
||||
debug-private.h ppd-private.h ../cups/ppd.h pwg-private.h \
|
||||
http-private.h md5-private.h ipp-private.h language-private.h \
|
||||
../cups/transcode.h thread-private.h
|
||||
mark.o: mark.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h \
|
||||
http.h array.h language.h string-private.h ../config.h debug-private.h \
|
||||
ppd-private.h ../cups/ppd.h pwg-private.h http-private.h md5-private.h \
|
||||
ipp-private.h language-private.h ../cups/transcode.h thread-private.h
|
||||
md5.o: md5.c md5-private.h string-private.h ../config.h
|
||||
md5passwd.o: md5passwd.c http-private.h ../config.h ../cups/http.h \
|
||||
versioning.h array.h md5-private.h ipp-private.h ../cups/ipp.h \
|
||||
string-private.h
|
||||
notify.o: notify.c cups-private.h ../cups/cups.h file.h versioning.h \
|
||||
ipp.h http.h array.h language.h string-private.h ../config.h \
|
||||
debug-private.h ppd-private.h ../cups/ppd.h pwg-private.h \
|
||||
http-private.h md5-private.h ipp-private.h language-private.h \
|
||||
../cups/transcode.h thread-private.h
|
||||
options.o: options.c cups-private.h ../cups/cups.h file.h versioning.h \
|
||||
ipp.h http.h array.h language.h string-private.h ../config.h \
|
||||
debug-private.h ppd-private.h ../cups/ppd.h pwg-private.h \
|
||||
http-private.h md5-private.h ipp-private.h language-private.h \
|
||||
../cups/transcode.h thread-private.h
|
||||
page.o: page.c string-private.h ../config.h debug-private.h \
|
||||
../cups/versioning.h ppd.h cups.h file.h ipp.h http.h array.h \
|
||||
language.h
|
||||
ppd.o: ppd.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h \
|
||||
http.h array.h language.h string-private.h ../config.h debug-private.h \
|
||||
ppd-private.h ../cups/ppd.h pwg-private.h http-private.h md5-private.h \
|
||||
ipp-private.h language-private.h ../cups/transcode.h thread-private.h
|
||||
ppd-cache.o: ppd-cache.c cups-private.h ../cups/cups.h file.h \
|
||||
versioning.h ipp.h http.h array.h language.h string-private.h \
|
||||
../config.h debug-private.h ppd-private.h ../cups/ppd.h pwg-private.h \
|
||||
http-private.h md5-private.h ipp-private.h language-private.h \
|
||||
../cups/transcode.h thread-private.h
|
||||
pwg-media.o: pwg-media.c cups-private.h ../cups/cups.h file.h \
|
||||
versioning.h ipp.h http.h array.h language.h string-private.h \
|
||||
../config.h debug-private.h ppd-private.h ../cups/ppd.h pwg-private.h \
|
||||
http-private.h md5-private.h ipp-private.h language-private.h \
|
||||
../cups/transcode.h thread-private.h
|
||||
request.o: request.c cups-private.h ../cups/cups.h file.h versioning.h \
|
||||
ipp.h http.h array.h language.h string-private.h ../config.h \
|
||||
debug-private.h ppd-private.h ../cups/ppd.h pwg-private.h \
|
||||
http-private.h md5-private.h ipp-private.h language-private.h \
|
||||
../cups/transcode.h thread-private.h
|
||||
sidechannel.o: sidechannel.c sidechannel.h versioning.h cups-private.h \
|
||||
../cups/cups.h file.h ipp.h http.h array.h language.h string-private.h \
|
||||
../config.h debug-private.h ppd-private.h ../cups/ppd.h pwg-private.h \
|
||||
http-private.h md5-private.h ipp-private.h language-private.h \
|
||||
../cups/transcode.h thread-private.h
|
||||
snmp.o: snmp.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h \
|
||||
http.h array.h language.h string-private.h ../config.h debug-private.h \
|
||||
ppd-private.h ../cups/ppd.h pwg-private.h http-private.h md5-private.h \
|
||||
ipp-private.h language-private.h ../cups/transcode.h thread-private.h \
|
||||
snmp-private.h
|
||||
snprintf.o: snprintf.c string-private.h ../config.h
|
||||
string.o: string.c string-private.h ../config.h debug-private.h \
|
||||
../cups/versioning.h thread-private.h array.h
|
||||
tempfile.o: tempfile.c cups-private.h ../cups/cups.h file.h versioning.h \
|
||||
ipp.h http.h array.h language.h string-private.h ../config.h \
|
||||
debug-private.h ppd-private.h ../cups/ppd.h pwg-private.h \
|
||||
http-private.h md5-private.h ipp-private.h language-private.h \
|
||||
../cups/transcode.h thread-private.h
|
||||
thread.o: thread.c cups-private.h ../cups/cups.h file.h versioning.h \
|
||||
ipp.h http.h array.h language.h string-private.h ../config.h \
|
||||
debug-private.h ppd-private.h ../cups/ppd.h pwg-private.h \
|
||||
http-private.h md5-private.h ipp-private.h language-private.h \
|
||||
../cups/transcode.h thread-private.h
|
||||
transcode.o: transcode.c cups-private.h ../cups/cups.h file.h \
|
||||
versioning.h ipp.h http.h array.h language.h string-private.h \
|
||||
../config.h debug-private.h ppd-private.h ../cups/ppd.h pwg-private.h \
|
||||
http-private.h md5-private.h ipp-private.h language-private.h \
|
||||
../cups/transcode.h thread-private.h
|
||||
usersys.o: usersys.c cups-private.h ../cups/cups.h file.h versioning.h \
|
||||
ipp.h http.h array.h language.h string-private.h ../config.h \
|
||||
debug-private.h ppd-private.h ../cups/ppd.h pwg-private.h \
|
||||
http-private.h md5-private.h ipp-private.h language-private.h \
|
||||
../cups/transcode.h thread-private.h
|
||||
util.o: util.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h \
|
||||
http.h array.h language.h string-private.h ../config.h debug-private.h \
|
||||
ppd-private.h ../cups/ppd.h pwg-private.h http-private.h md5-private.h \
|
||||
ipp-private.h language-private.h ../cups/transcode.h thread-private.h
|
||||
testadmin.o: testadmin.c adminutil.h cups.h file.h versioning.h ipp.h \
|
||||
http.h array.h language.h string-private.h ../config.h
|
||||
testarray.o: testarray.c string-private.h ../config.h debug-private.h \
|
||||
../cups/versioning.h array.h dir.h
|
||||
testconflicts.o: testconflicts.c cups.h file.h versioning.h ipp.h http.h \
|
||||
array.h language.h ppd.h string-private.h ../config.h
|
||||
testcups.o: testcups.c string-private.h ../config.h cups.h file.h \
|
||||
versioning.h ipp.h http.h array.h language.h ppd.h
|
||||
testfile.o: testfile.c string-private.h ../config.h debug-private.h \
|
||||
../cups/versioning.h file.h
|
||||
testhttp.o: testhttp.c string-private.h ../config.h http-private.h \
|
||||
../cups/http.h versioning.h array.h md5-private.h ipp-private.h \
|
||||
../cups/ipp.h
|
||||
testi18n.o: testi18n.c string-private.h ../config.h language-private.h \
|
||||
../cups/transcode.h language.h array.h versioning.h
|
||||
testipp.o: testipp.c file.h versioning.h string-private.h ../config.h \
|
||||
ipp-private.h ../cups/ipp.h http.h array.h
|
||||
testoptions.o: testoptions.c cups-private.h ../cups/cups.h file.h \
|
||||
versioning.h ipp.h http.h array.h language.h string-private.h \
|
||||
../config.h debug-private.h ppd-private.h ../cups/ppd.h pwg-private.h \
|
||||
http-private.h md5-private.h ipp-private.h language-private.h \
|
||||
../cups/transcode.h thread-private.h
|
||||
testlang.o: testlang.c cups-private.h ../cups/cups.h file.h versioning.h \
|
||||
ipp.h http.h array.h language.h string-private.h ../config.h \
|
||||
debug-private.h ppd-private.h ../cups/ppd.h pwg-private.h \
|
||||
http-private.h md5-private.h ipp-private.h language-private.h \
|
||||
../cups/transcode.h thread-private.h
|
||||
testppd.o: testppd.c cups-private.h ../cups/cups.h file.h versioning.h \
|
||||
ipp.h http.h array.h language.h string-private.h ../config.h \
|
||||
debug-private.h ppd-private.h ../cups/ppd.h pwg-private.h \
|
||||
http-private.h md5-private.h ipp-private.h language-private.h \
|
||||
../cups/transcode.h thread-private.h
|
||||
testpwg.o: testpwg.c ppd-private.h ../cups/cups.h file.h versioning.h \
|
||||
ipp.h http.h array.h language.h ../cups/ppd.h pwg-private.h \
|
||||
file-private.h cups-private.h string-private.h ../config.h \
|
||||
debug-private.h http-private.h md5-private.h ipp-private.h \
|
||||
language-private.h ../cups/transcode.h thread-private.h
|
||||
testsnmp.o: testsnmp.c cups-private.h ../cups/cups.h file.h versioning.h \
|
||||
ipp.h http.h array.h language.h string-private.h ../config.h \
|
||||
debug-private.h ppd-private.h ../cups/ppd.h pwg-private.h \
|
||||
http-private.h md5-private.h ipp-private.h language-private.h \
|
||||
../cups/transcode.h thread-private.h snmp-private.h
|
||||
# DO NOT DELETE
|
||||
|
||||
adminutil.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
adminutil.o: array.h language.h string-private.h ../config.h debug-private.h
|
||||
adminutil.o: ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
adminutil.o: ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
adminutil.o: language-private.h ../cups/transcode.h thread-private.h
|
||||
adminutil.o: adminutil.h
|
||||
array.o: string-private.h ../config.h debug-private.h array-private.h array.h
|
||||
array.o: versioning.h
|
||||
attr.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
attr.o: array.h language.h string-private.h ../config.h debug-private.h
|
||||
attr.o: ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
attr.o: ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
attr.o: language-private.h ../cups/transcode.h thread-private.h
|
||||
auth.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
auth.o: array.h language.h string-private.h ../config.h debug-private.h
|
||||
auth.o: ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
auth.o: ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
auth.o: language-private.h ../cups/transcode.h thread-private.h
|
||||
backchannel.o: cups.h
|
||||
backend.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
backend.o: array.h language.h string-private.h ../config.h debug-private.h
|
||||
backend.o: ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
backend.o: ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
backend.o: language-private.h ../cups/transcode.h thread-private.h backend.h
|
||||
conflicts.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
conflicts.o: array.h language.h string-private.h ../config.h debug-private.h
|
||||
conflicts.o: ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
conflicts.o: ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
conflicts.o: language-private.h ../cups/transcode.h thread-private.h
|
||||
custom.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
custom.o: array.h language.h string-private.h ../config.h debug-private.h
|
||||
custom.o: ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
custom.o: ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
custom.o: language-private.h ../cups/transcode.h thread-private.h
|
||||
debug.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
debug.o: array.h language.h string-private.h ../config.h debug-private.h
|
||||
debug.o: ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
debug.o: ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
debug.o: language-private.h ../cups/transcode.h thread-private.h
|
||||
dest.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
dest.o: array.h language.h string-private.h ../config.h debug-private.h
|
||||
dest.o: ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
dest.o: ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
dest.o: language-private.h ../cups/transcode.h thread-private.h
|
||||
dir.o: string-private.h ../config.h debug-private.h dir.h versioning.h
|
||||
emit.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
emit.o: array.h language.h string-private.h ../config.h debug-private.h
|
||||
emit.o: ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
emit.o: ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
emit.o: language-private.h ../cups/transcode.h thread-private.h
|
||||
encode.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
encode.o: array.h language.h string-private.h ../config.h debug-private.h
|
||||
encode.o: ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
encode.o: ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
encode.o: language-private.h ../cups/transcode.h thread-private.h
|
||||
file.o: file-private.h cups-private.h ../cups/cups.h file.h versioning.h
|
||||
file.o: ipp.h http.h array.h language.h string-private.h ../config.h
|
||||
file.o: debug-private.h ppd-private.h ../cups/ppd.h cups.h pwg-private.h
|
||||
file.o: http-private.h ../cups/http.h md5-private.h ipp-private.h
|
||||
file.o: ../cups/ipp.h language-private.h ../cups/transcode.h thread-private.h
|
||||
getdevices.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
getdevices.o: array.h language.h string-private.h ../config.h debug-private.h
|
||||
getdevices.o: ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
getdevices.o: ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
getdevices.o: language-private.h ../cups/transcode.h thread-private.h
|
||||
getifaddrs.o: http-private.h ../config.h ../cups/http.h md5-private.h
|
||||
getifaddrs.o: ipp-private.h ../cups/ipp.h
|
||||
getputfile.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
getputfile.o: array.h language.h string-private.h ../config.h debug-private.h
|
||||
getputfile.o: ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
getputfile.o: ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
getputfile.o: language-private.h ../cups/transcode.h thread-private.h
|
||||
globals.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
globals.o: array.h language.h string-private.h ../config.h debug-private.h
|
||||
globals.o: ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
globals.o: ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
globals.o: language-private.h ../cups/transcode.h thread-private.h
|
||||
http.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
http.o: array.h language.h string-private.h ../config.h debug-private.h
|
||||
http.o: ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
http.o: ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
http.o: language-private.h ../cups/transcode.h thread-private.h
|
||||
http-addr.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
http-addr.o: array.h language.h string-private.h ../config.h debug-private.h
|
||||
http-addr.o: ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
http-addr.o: ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
http-addr.o: language-private.h ../cups/transcode.h thread-private.h
|
||||
http-addrlist.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h
|
||||
http-addrlist.o: http.h array.h language.h string-private.h ../config.h
|
||||
http-addrlist.o: debug-private.h ppd-private.h ../cups/ppd.h cups.h
|
||||
http-addrlist.o: pwg-private.h http-private.h ../cups/http.h md5-private.h
|
||||
http-addrlist.o: ipp-private.h ../cups/ipp.h language-private.h
|
||||
http-addrlist.o: ../cups/transcode.h thread-private.h
|
||||
http-support.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h
|
||||
http-support.o: http.h array.h language.h string-private.h ../config.h
|
||||
http-support.o: debug-private.h ppd-private.h ../cups/ppd.h cups.h
|
||||
http-support.o: pwg-private.h http-private.h ../cups/http.h md5-private.h
|
||||
http-support.o: ipp-private.h ../cups/ipp.h language-private.h
|
||||
http-support.o: ../cups/transcode.h thread-private.h
|
||||
ipp.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h array.h
|
||||
ipp.o: language.h string-private.h ../config.h debug-private.h ppd-private.h
|
||||
ipp.o: ../cups/ppd.h cups.h pwg-private.h http-private.h ../cups/http.h
|
||||
ipp.o: md5-private.h ipp-private.h ../cups/ipp.h language-private.h
|
||||
ipp.o: ../cups/transcode.h thread-private.h
|
||||
ipp-support.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
ipp-support.o: array.h language.h string-private.h ../config.h
|
||||
ipp-support.o: debug-private.h ppd-private.h ../cups/ppd.h cups.h
|
||||
ipp-support.o: pwg-private.h http-private.h ../cups/http.h md5-private.h
|
||||
ipp-support.o: ipp-private.h ../cups/ipp.h language-private.h
|
||||
ipp-support.o: ../cups/transcode.h thread-private.h
|
||||
langprintf.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
langprintf.o: array.h language.h string-private.h ../config.h debug-private.h
|
||||
langprintf.o: ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
langprintf.o: ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
langprintf.o: language-private.h ../cups/transcode.h thread-private.h
|
||||
language.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
language.o: array.h language.h string-private.h ../config.h debug-private.h
|
||||
language.o: ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
language.o: ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
language.o: language-private.h ../cups/transcode.h thread-private.h
|
||||
localize.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
localize.o: array.h language.h string-private.h ../config.h debug-private.h
|
||||
localize.o: ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
localize.o: ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
localize.o: language-private.h ../cups/transcode.h thread-private.h
|
||||
mark.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
mark.o: array.h language.h string-private.h ../config.h debug-private.h
|
||||
mark.o: ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
mark.o: ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
mark.o: language-private.h ../cups/transcode.h thread-private.h
|
||||
md5.o: md5-private.h string-private.h ../config.h
|
||||
md5passwd.o: http-private.h ../config.h ../cups/http.h md5-private.h
|
||||
md5passwd.o: ipp-private.h ../cups/ipp.h string-private.h
|
||||
notify.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
notify.o: array.h language.h string-private.h ../config.h debug-private.h
|
||||
notify.o: ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
notify.o: ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
notify.o: language-private.h ../cups/transcode.h thread-private.h
|
||||
options.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
options.o: array.h language.h string-private.h ../config.h debug-private.h
|
||||
options.o: ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
options.o: ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
options.o: language-private.h ../cups/transcode.h thread-private.h
|
||||
page.o: string-private.h ../config.h debug-private.h ppd.h cups.h array.h
|
||||
page.o: versioning.h file.h
|
||||
ppd.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h array.h
|
||||
ppd.o: language.h string-private.h ../config.h debug-private.h ppd-private.h
|
||||
ppd.o: ../cups/ppd.h cups.h pwg-private.h http-private.h ../cups/http.h
|
||||
ppd.o: md5-private.h ipp-private.h ../cups/ipp.h language-private.h
|
||||
ppd.o: ../cups/transcode.h thread-private.h
|
||||
ppd-cache.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
ppd-cache.o: array.h language.h string-private.h ../config.h debug-private.h
|
||||
ppd-cache.o: ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
ppd-cache.o: ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
ppd-cache.o: language-private.h ../cups/transcode.h thread-private.h
|
||||
pwg-media.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
pwg-media.o: array.h language.h string-private.h ../config.h debug-private.h
|
||||
pwg-media.o: ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
pwg-media.o: ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
pwg-media.o: language-private.h ../cups/transcode.h thread-private.h
|
||||
request.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
request.o: array.h language.h string-private.h ../config.h debug-private.h
|
||||
request.o: ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
request.o: ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
request.o: language-private.h ../cups/transcode.h thread-private.h
|
||||
sidechannel.o: sidechannel.h versioning.h string-private.h ../config.h
|
||||
sidechannel.o: debug-private.h
|
||||
snmp.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
snmp.o: array.h language.h string-private.h ../config.h debug-private.h
|
||||
snmp.o: ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
snmp.o: ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
snmp.o: language-private.h ../cups/transcode.h thread-private.h
|
||||
snmp.o: snmp-private.h
|
||||
snprintf.o: string-private.h ../config.h
|
||||
string.o: string-private.h ../config.h debug-private.h thread-private.h
|
||||
string.o: array.h versioning.h
|
||||
tempfile.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
tempfile.o: array.h language.h string-private.h ../config.h debug-private.h
|
||||
tempfile.o: ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
tempfile.o: ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
tempfile.o: language-private.h ../cups/transcode.h thread-private.h
|
||||
thread.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
thread.o: array.h language.h string-private.h ../config.h debug-private.h
|
||||
thread.o: ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
thread.o: ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
thread.o: language-private.h ../cups/transcode.h thread-private.h
|
||||
transcode.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
transcode.o: array.h language.h string-private.h ../config.h debug-private.h
|
||||
transcode.o: ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
transcode.o: ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
transcode.o: language-private.h ../cups/transcode.h thread-private.h
|
||||
usersys.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
usersys.o: array.h language.h string-private.h ../config.h debug-private.h
|
||||
usersys.o: ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
usersys.o: ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
usersys.o: language-private.h ../cups/transcode.h thread-private.h
|
||||
util.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
util.o: array.h language.h string-private.h ../config.h debug-private.h
|
||||
util.o: ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
util.o: ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
util.o: language-private.h ../cups/transcode.h thread-private.h
|
||||
testadmin.o: adminutil.h cups.h string-private.h ../config.h
|
||||
testarray.o: string-private.h ../config.h debug-private.h array.h
|
||||
testarray.o: versioning.h dir.h
|
||||
testconflicts.o: cups.h ppd.h array.h versioning.h file.h string-private.h
|
||||
testconflicts.o: ../config.h
|
||||
testcups.o: string-private.h ../config.h cups.h ppd.h array.h versioning.h
|
||||
testcups.o: file.h
|
||||
testfile.o: string-private.h ../config.h debug-private.h file.h versioning.h
|
||||
testhttp.o: string-private.h ../config.h http-private.h ../cups/http.h
|
||||
testhttp.o: md5-private.h ipp-private.h ../cups/ipp.h
|
||||
testi18n.o: string-private.h ../config.h language-private.h
|
||||
testi18n.o: ../cups/transcode.h language.h array.h versioning.h
|
||||
testipp.o: file.h versioning.h string-private.h ../config.h ipp-private.h
|
||||
testipp.o: ../cups/ipp.h
|
||||
testoptions.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
testoptions.o: array.h language.h string-private.h ../config.h
|
||||
testoptions.o: debug-private.h ppd-private.h ../cups/ppd.h cups.h
|
||||
testoptions.o: pwg-private.h http-private.h ../cups/http.h md5-private.h
|
||||
testoptions.o: ipp-private.h ../cups/ipp.h language-private.h
|
||||
testoptions.o: ../cups/transcode.h thread-private.h
|
||||
testlang.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
testlang.o: array.h language.h string-private.h ../config.h debug-private.h
|
||||
testlang.o: ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
testlang.o: ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
testlang.o: language-private.h ../cups/transcode.h thread-private.h
|
||||
testppd.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
testppd.o: array.h language.h string-private.h ../config.h debug-private.h
|
||||
testppd.o: ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
testppd.o: ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
testppd.o: language-private.h ../cups/transcode.h thread-private.h
|
||||
testpwg.o: ppd-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
testpwg.o: array.h language.h ../cups/ppd.h cups.h pwg-private.h
|
||||
testpwg.o: file-private.h cups-private.h string-private.h ../config.h
|
||||
testpwg.o: debug-private.h http-private.h ../cups/http.h md5-private.h
|
||||
testpwg.o: ipp-private.h ../cups/ipp.h language-private.h ../cups/transcode.h
|
||||
testpwg.o: thread-private.h
|
||||
testsnmp.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
testsnmp.o: array.h language.h string-private.h ../config.h debug-private.h
|
||||
testsnmp.o: ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
testsnmp.o: ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
testsnmp.o: language-private.h ../cups/transcode.h thread-private.h
|
||||
testsnmp.o: snmp-private.h
|
||||
# DO NOT DELETE
|
||||
|
||||
adminutil.32.o: adminutil.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
adminutil.32.o: adminutil.c array.h language.h string-private.h ../config.h debug-private.h
|
||||
adminutil.32.o: adminutil.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
adminutil.32.o: adminutil.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
adminutil.32.o: adminutil.c language-private.h ../cups/transcode.h thread-private.h
|
||||
adminutil.32.o: adminutil.c adminutil.h
|
||||
array.32.o: array.c string-private.h ../config.h debug-private.h array-private.h array.h
|
||||
array.32.o: array.c versioning.h
|
||||
attr.32.o: attr.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
attr.32.o: attr.c array.h language.h string-private.h ../config.h debug-private.h
|
||||
attr.32.o: attr.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
attr.32.o: attr.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
attr.32.o: attr.c language-private.h ../cups/transcode.h thread-private.h
|
||||
auth.32.o: auth.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
auth.32.o: auth.c array.h language.h string-private.h ../config.h debug-private.h
|
||||
auth.32.o: auth.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
auth.32.o: auth.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
auth.32.o: auth.c language-private.h ../cups/transcode.h thread-private.h
|
||||
backchannel.32.o: backchannel.c cups.h
|
||||
backend.32.o: backend.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
backend.32.o: backend.c array.h language.h string-private.h ../config.h debug-private.h
|
||||
backend.32.o: backend.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
backend.32.o: backend.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
backend.32.o: backend.c language-private.h ../cups/transcode.h thread-private.h backend.h
|
||||
conflicts.32.o: conflicts.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
conflicts.32.o: conflicts.c array.h language.h string-private.h ../config.h debug-private.h
|
||||
conflicts.32.o: conflicts.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
conflicts.32.o: conflicts.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
conflicts.32.o: conflicts.c language-private.h ../cups/transcode.h thread-private.h
|
||||
custom.32.o: custom.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
custom.32.o: custom.c array.h language.h string-private.h ../config.h debug-private.h
|
||||
custom.32.o: custom.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
custom.32.o: custom.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
custom.32.o: custom.c language-private.h ../cups/transcode.h thread-private.h
|
||||
debug.32.o: debug.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
debug.32.o: debug.c array.h language.h string-private.h ../config.h debug-private.h
|
||||
debug.32.o: debug.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
debug.32.o: debug.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
debug.32.o: debug.c language-private.h ../cups/transcode.h thread-private.h
|
||||
dest.32.o: dest.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
dest.32.o: dest.c array.h language.h string-private.h ../config.h debug-private.h
|
||||
dest.32.o: dest.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
dest.32.o: dest.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
dest.32.o: dest.c language-private.h ../cups/transcode.h thread-private.h
|
||||
dir.32.o: dir.c string-private.h ../config.h debug-private.h dir.h versioning.h
|
||||
emit.32.o: emit.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
emit.32.o: emit.c array.h language.h string-private.h ../config.h debug-private.h
|
||||
emit.32.o: emit.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
emit.32.o: emit.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
emit.32.o: emit.c language-private.h ../cups/transcode.h thread-private.h
|
||||
encode.32.o: encode.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
encode.32.o: encode.c array.h language.h string-private.h ../config.h debug-private.h
|
||||
encode.32.o: encode.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
encode.32.o: encode.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
encode.32.o: encode.c language-private.h ../cups/transcode.h thread-private.h
|
||||
file.32.o: file.c file-private.h cups-private.h ../cups/cups.h file.h versioning.h
|
||||
file.32.o: file.c ipp.h http.h array.h language.h string-private.h ../config.h
|
||||
file.32.o: file.c debug-private.h ppd-private.h ../cups/ppd.h cups.h pwg-private.h
|
||||
file.32.o: file.c http-private.h ../cups/http.h md5-private.h ipp-private.h
|
||||
file.32.o: file.c ../cups/ipp.h language-private.h ../cups/transcode.h thread-private.h
|
||||
getdevices.32.o: getdevices.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
getdevices.32.o: getdevices.c array.h language.h string-private.h ../config.h debug-private.h
|
||||
getdevices.32.o: getdevices.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
getdevices.32.o: getdevices.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
getdevices.32.o: getdevices.c language-private.h ../cups/transcode.h thread-private.h
|
||||
getifaddrs.32.o: getifaddrs.c http-private.h ../config.h ../cups/http.h md5-private.h
|
||||
getifaddrs.32.o: getifaddrs.c ipp-private.h ../cups/ipp.h
|
||||
getputfile.32.o: getputfile.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
getputfile.32.o: getputfile.c array.h language.h string-private.h ../config.h debug-private.h
|
||||
getputfile.32.o: getputfile.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
getputfile.32.o: getputfile.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
getputfile.32.o: getputfile.c language-private.h ../cups/transcode.h thread-private.h
|
||||
globals.32.o: globals.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
globals.32.o: globals.c array.h language.h string-private.h ../config.h debug-private.h
|
||||
globals.32.o: globals.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
globals.32.o: globals.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
globals.32.o: globals.c language-private.h ../cups/transcode.h thread-private.h
|
||||
http.32.o: http.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
http.32.o: http.c array.h language.h string-private.h ../config.h debug-private.h
|
||||
http.32.o: http.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
http.32.o: http.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
http.32.o: http.c language-private.h ../cups/transcode.h thread-private.h
|
||||
http-addr.32.o: http-addr.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
http-addr.32.o: http-addr.c array.h language.h string-private.h ../config.h debug-private.h
|
||||
http-addr.32.o: http-addr.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
http-addr.32.o: http-addr.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
http-addr.32.o: http-addr.c language-private.h ../cups/transcode.h thread-private.h
|
||||
http-addrlist.32.o: http-addrlist.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h
|
||||
http-addrlist.32.o: http-addrlist.c http.h array.h language.h string-private.h ../config.h
|
||||
http-addrlist.32.o: http-addrlist.c debug-private.h ppd-private.h ../cups/ppd.h cups.h
|
||||
http-addrlist.32.o: http-addrlist.c pwg-private.h http-private.h ../cups/http.h md5-private.h
|
||||
http-addrlist.32.o: http-addrlist.c ipp-private.h ../cups/ipp.h language-private.h
|
||||
http-addrlist.32.o: http-addrlist.c ../cups/transcode.h thread-private.h
|
||||
http-support.32.o: http-support.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h
|
||||
http-support.32.o: http-support.c http.h array.h language.h string-private.h ../config.h
|
||||
http-support.32.o: http-support.c debug-private.h ppd-private.h ../cups/ppd.h cups.h
|
||||
http-support.32.o: http-support.c pwg-private.h http-private.h ../cups/http.h md5-private.h
|
||||
http-support.32.o: http-support.c ipp-private.h ../cups/ipp.h language-private.h
|
||||
http-support.32.o: http-support.c ../cups/transcode.h thread-private.h
|
||||
ipp.32.o: ipp.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h array.h
|
||||
ipp.32.o: ipp.c language.h string-private.h ../config.h debug-private.h ppd-private.h
|
||||
ipp.32.o: ipp.c ../cups/ppd.h cups.h pwg-private.h http-private.h ../cups/http.h
|
||||
ipp.32.o: ipp.c md5-private.h ipp-private.h ../cups/ipp.h language-private.h
|
||||
ipp.32.o: ipp.c ../cups/transcode.h thread-private.h
|
||||
ipp-support.32.o: ipp-support.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
ipp-support.32.o: ipp-support.c array.h language.h string-private.h ../config.h
|
||||
ipp-support.32.o: ipp-support.c debug-private.h ppd-private.h ../cups/ppd.h cups.h
|
||||
ipp-support.32.o: ipp-support.c pwg-private.h http-private.h ../cups/http.h md5-private.h
|
||||
ipp-support.32.o: ipp-support.c ipp-private.h ../cups/ipp.h language-private.h
|
||||
ipp-support.32.o: ipp-support.c ../cups/transcode.h thread-private.h
|
||||
langprintf.32.o: langprintf.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
langprintf.32.o: langprintf.c array.h language.h string-private.h ../config.h debug-private.h
|
||||
langprintf.32.o: langprintf.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
langprintf.32.o: langprintf.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
langprintf.32.o: langprintf.c language-private.h ../cups/transcode.h thread-private.h
|
||||
language.32.o: language.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
language.32.o: language.c array.h language.h string-private.h ../config.h debug-private.h
|
||||
language.32.o: language.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
language.32.o: language.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
language.32.o: language.c language-private.h ../cups/transcode.h thread-private.h
|
||||
localize.32.o: localize.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
localize.32.o: localize.c array.h language.h string-private.h ../config.h debug-private.h
|
||||
localize.32.o: localize.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
localize.32.o: localize.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
localize.32.o: localize.c language-private.h ../cups/transcode.h thread-private.h
|
||||
mark.32.o: mark.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
mark.32.o: mark.c array.h language.h string-private.h ../config.h debug-private.h
|
||||
mark.32.o: mark.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
mark.32.o: mark.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
mark.32.o: mark.c language-private.h ../cups/transcode.h thread-private.h
|
||||
md5.32.o: md5.c md5-private.h string-private.h ../config.h
|
||||
md5passwd.32.o: md5passwd.c http-private.h ../config.h ../cups/http.h md5-private.h
|
||||
md5passwd.32.o: md5passwd.c ipp-private.h ../cups/ipp.h string-private.h
|
||||
notify.32.o: notify.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
notify.32.o: notify.c array.h language.h string-private.h ../config.h debug-private.h
|
||||
notify.32.o: notify.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
notify.32.o: notify.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
notify.32.o: notify.c language-private.h ../cups/transcode.h thread-private.h
|
||||
options.32.o: options.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
options.32.o: options.c array.h language.h string-private.h ../config.h debug-private.h
|
||||
options.32.o: options.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
options.32.o: options.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
options.32.o: options.c language-private.h ../cups/transcode.h thread-private.h
|
||||
page.32.o: page.c string-private.h ../config.h debug-private.h ppd.h cups.h array.h
|
||||
page.32.o: page.c versioning.h file.h
|
||||
ppd.32.o: ppd.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h array.h
|
||||
ppd.32.o: ppd.c language.h string-private.h ../config.h debug-private.h ppd-private.h
|
||||
ppd.32.o: ppd.c ../cups/ppd.h cups.h pwg-private.h http-private.h ../cups/http.h
|
||||
ppd.32.o: ppd.c md5-private.h ipp-private.h ../cups/ipp.h language-private.h
|
||||
ppd.32.o: ppd.c ../cups/transcode.h thread-private.h
|
||||
ppd-cache.32.o: ppd-cache.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
ppd-cache.32.o: ppd-cache.c array.h language.h string-private.h ../config.h debug-private.h
|
||||
ppd-cache.32.o: ppd-cache.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
ppd-cache.32.o: ppd-cache.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
ppd-cache.32.o: ppd-cache.c language-private.h ../cups/transcode.h thread-private.h
|
||||
pwg-media.32.o: pwg-media.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
pwg-media.32.o: pwg-media.c array.h language.h string-private.h ../config.h debug-private.h
|
||||
pwg-media.32.o: pwg-media.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
pwg-media.32.o: pwg-media.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
pwg-media.32.o: pwg-media.c language-private.h ../cups/transcode.h thread-private.h
|
||||
request.32.o: request.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
request.32.o: request.c array.h language.h string-private.h ../config.h debug-private.h
|
||||
request.32.o: request.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
request.32.o: request.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
request.32.o: request.c language-private.h ../cups/transcode.h thread-private.h
|
||||
sidechannel.32.o: sidechannel.c sidechannel.h versioning.h string-private.h ../config.h
|
||||
sidechannel.32.o: sidechannel.c debug-private.h
|
||||
snmp.32.o: snmp.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
snmp.32.o: snmp.c array.h language.h string-private.h ../config.h debug-private.h
|
||||
snmp.32.o: snmp.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
snmp.32.o: snmp.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
snmp.32.o: snmp.c language-private.h ../cups/transcode.h thread-private.h
|
||||
snmp.32.o: snmp.c snmp-private.h
|
||||
snprintf.32.o: snprintf.c string-private.h ../config.h
|
||||
string.32.o: string.c string-private.h ../config.h debug-private.h thread-private.h
|
||||
string.32.o: string.c array.h versioning.h
|
||||
tempfile.32.o: tempfile.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
tempfile.32.o: tempfile.c array.h language.h string-private.h ../config.h debug-private.h
|
||||
tempfile.32.o: tempfile.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
tempfile.32.o: tempfile.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
tempfile.32.o: tempfile.c language-private.h ../cups/transcode.h thread-private.h
|
||||
thread.32.o: thread.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
thread.32.o: thread.c array.h language.h string-private.h ../config.h debug-private.h
|
||||
thread.32.o: thread.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
thread.32.o: thread.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
thread.32.o: thread.c language-private.h ../cups/transcode.h thread-private.h
|
||||
transcode.32.o: transcode.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
transcode.32.o: transcode.c array.h language.h string-private.h ../config.h debug-private.h
|
||||
transcode.32.o: transcode.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
transcode.32.o: transcode.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
transcode.32.o: transcode.c language-private.h ../cups/transcode.h thread-private.h
|
||||
usersys.32.o: usersys.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
usersys.32.o: usersys.c array.h language.h string-private.h ../config.h debug-private.h
|
||||
usersys.32.o: usersys.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
usersys.32.o: usersys.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
usersys.32.o: usersys.c language-private.h ../cups/transcode.h thread-private.h
|
||||
util.32.o: util.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
util.32.o: util.c array.h language.h string-private.h ../config.h debug-private.h
|
||||
util.32.o: util.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
util.32.o: util.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
util.32.o: util.c language-private.h ../cups/transcode.h thread-private.h
|
||||
testadmin.32.o: testadmin.c adminutil.h cups.h string-private.h ../config.h
|
||||
testarray.32.o: testarray.c string-private.h ../config.h debug-private.h array.h
|
||||
testarray.32.o: testarray.c versioning.h dir.h
|
||||
testconflicts.32.o: testconflicts.c cups.h ppd.h array.h versioning.h file.h string-private.h
|
||||
testconflicts.32.o: testconflicts.c ../config.h
|
||||
testcups.32.o: testcups.c string-private.h ../config.h cups.h ppd.h array.h versioning.h
|
||||
testcups.32.o: testcups.c file.h
|
||||
testfile.32.o: testfile.c string-private.h ../config.h debug-private.h file.h versioning.h
|
||||
testhttp.32.o: testhttp.c string-private.h ../config.h http-private.h ../cups/http.h
|
||||
testhttp.32.o: testhttp.c md5-private.h ipp-private.h ../cups/ipp.h
|
||||
testi18n.32.o: testi18n.c string-private.h ../config.h language-private.h
|
||||
testi18n.32.o: testi18n.c ../cups/transcode.h language.h array.h versioning.h
|
||||
testipp.32.o: testipp.c file.h versioning.h string-private.h ../config.h ipp-private.h
|
||||
testipp.32.o: testipp.c ../cups/ipp.h
|
||||
testoptions.32.o: testoptions.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
testoptions.32.o: testoptions.c array.h language.h string-private.h ../config.h
|
||||
testoptions.32.o: testoptions.c debug-private.h ppd-private.h ../cups/ppd.h cups.h
|
||||
testoptions.32.o: testoptions.c pwg-private.h http-private.h ../cups/http.h md5-private.h
|
||||
testoptions.32.o: testoptions.c ipp-private.h ../cups/ipp.h language-private.h
|
||||
testoptions.32.o: testoptions.c ../cups/transcode.h thread-private.h
|
||||
testlang.32.o: testlang.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
testlang.32.o: testlang.c array.h language.h string-private.h ../config.h debug-private.h
|
||||
testlang.32.o: testlang.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
testlang.32.o: testlang.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
testlang.32.o: testlang.c language-private.h ../cups/transcode.h thread-private.h
|
||||
testppd.32.o: testppd.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
testppd.32.o: testppd.c array.h language.h string-private.h ../config.h debug-private.h
|
||||
testppd.32.o: testppd.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
testppd.32.o: testppd.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
testppd.32.o: testppd.c language-private.h ../cups/transcode.h thread-private.h
|
||||
testpwg.32.o: testpwg.c ppd-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
testpwg.32.o: testpwg.c array.h language.h ../cups/ppd.h cups.h pwg-private.h
|
||||
testpwg.32.o: testpwg.c file-private.h cups-private.h string-private.h ../config.h
|
||||
testpwg.32.o: testpwg.c debug-private.h http-private.h ../cups/http.h md5-private.h
|
||||
testpwg.32.o: testpwg.c ipp-private.h ../cups/ipp.h language-private.h ../cups/transcode.h
|
||||
testpwg.32.o: testpwg.c thread-private.h
|
||||
testsnmp.32.o: testsnmp.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
testsnmp.32.o: testsnmp.c array.h language.h string-private.h ../config.h debug-private.h
|
||||
testsnmp.32.o: testsnmp.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
testsnmp.32.o: testsnmp.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
testsnmp.32.o: testsnmp.c language-private.h ../cups/transcode.h thread-private.h
|
||||
testsnmp.32.o: testsnmp.c snmp-private.h
|
||||
# DO NOT DELETE
|
||||
|
||||
adminutil.64.o: adminutil.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
adminutil.64.o: adminutil.c array.h language.h string-private.h ../config.h debug-private.h
|
||||
adminutil.64.o: adminutil.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
adminutil.64.o: adminutil.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
adminutil.64.o: adminutil.c language-private.h ../cups/transcode.h thread-private.h
|
||||
adminutil.64.o: adminutil.c adminutil.h
|
||||
array.64.o: array.c string-private.h ../config.h debug-private.h array-private.h array.h
|
||||
array.64.o: array.c versioning.h
|
||||
attr.64.o: attr.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
attr.64.o: attr.c array.h language.h string-private.h ../config.h debug-private.h
|
||||
attr.64.o: attr.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
attr.64.o: attr.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
attr.64.o: attr.c language-private.h ../cups/transcode.h thread-private.h
|
||||
auth.64.o: auth.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
auth.64.o: auth.c array.h language.h string-private.h ../config.h debug-private.h
|
||||
auth.64.o: auth.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
auth.64.o: auth.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
auth.64.o: auth.c language-private.h ../cups/transcode.h thread-private.h
|
||||
backchannel.64.o: backchannel.c cups.h
|
||||
backend.64.o: backend.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
backend.64.o: backend.c array.h language.h string-private.h ../config.h debug-private.h
|
||||
backend.64.o: backend.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
backend.64.o: backend.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
backend.64.o: backend.c language-private.h ../cups/transcode.h thread-private.h backend.h
|
||||
conflicts.64.o: conflicts.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
conflicts.64.o: conflicts.c array.h language.h string-private.h ../config.h debug-private.h
|
||||
conflicts.64.o: conflicts.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
conflicts.64.o: conflicts.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
conflicts.64.o: conflicts.c language-private.h ../cups/transcode.h thread-private.h
|
||||
custom.64.o: custom.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
custom.64.o: custom.c array.h language.h string-private.h ../config.h debug-private.h
|
||||
custom.64.o: custom.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
custom.64.o: custom.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
custom.64.o: custom.c language-private.h ../cups/transcode.h thread-private.h
|
||||
debug.64.o: debug.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
debug.64.o: debug.c array.h language.h string-private.h ../config.h debug-private.h
|
||||
debug.64.o: debug.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
debug.64.o: debug.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
debug.64.o: debug.c language-private.h ../cups/transcode.h thread-private.h
|
||||
dest.64.o: dest.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
dest.64.o: dest.c array.h language.h string-private.h ../config.h debug-private.h
|
||||
dest.64.o: dest.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
dest.64.o: dest.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
dest.64.o: dest.c language-private.h ../cups/transcode.h thread-private.h
|
||||
dir.64.o: dir.c string-private.h ../config.h debug-private.h dir.h versioning.h
|
||||
emit.64.o: emit.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
emit.64.o: emit.c array.h language.h string-private.h ../config.h debug-private.h
|
||||
emit.64.o: emit.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
emit.64.o: emit.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
emit.64.o: emit.c language-private.h ../cups/transcode.h thread-private.h
|
||||
encode.64.o: encode.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
encode.64.o: encode.c array.h language.h string-private.h ../config.h debug-private.h
|
||||
encode.64.o: encode.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
encode.64.o: encode.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
encode.64.o: encode.c language-private.h ../cups/transcode.h thread-private.h
|
||||
file.64.o: file.c file-private.h cups-private.h ../cups/cups.h file.h versioning.h
|
||||
file.64.o: file.c ipp.h http.h array.h language.h string-private.h ../config.h
|
||||
file.64.o: file.c debug-private.h ppd-private.h ../cups/ppd.h cups.h pwg-private.h
|
||||
file.64.o: file.c http-private.h ../cups/http.h md5-private.h ipp-private.h
|
||||
file.64.o: file.c ../cups/ipp.h language-private.h ../cups/transcode.h thread-private.h
|
||||
getdevices.64.o: getdevices.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
getdevices.64.o: getdevices.c array.h language.h string-private.h ../config.h debug-private.h
|
||||
getdevices.64.o: getdevices.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
getdevices.64.o: getdevices.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
getdevices.64.o: getdevices.c language-private.h ../cups/transcode.h thread-private.h
|
||||
getifaddrs.64.o: getifaddrs.c http-private.h ../config.h ../cups/http.h md5-private.h
|
||||
getifaddrs.64.o: getifaddrs.c ipp-private.h ../cups/ipp.h
|
||||
getputfile.64.o: getputfile.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
getputfile.64.o: getputfile.c array.h language.h string-private.h ../config.h debug-private.h
|
||||
getputfile.64.o: getputfile.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
getputfile.64.o: getputfile.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
getputfile.64.o: getputfile.c language-private.h ../cups/transcode.h thread-private.h
|
||||
globals.64.o: globals.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
globals.64.o: globals.c array.h language.h string-private.h ../config.h debug-private.h
|
||||
globals.64.o: globals.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
globals.64.o: globals.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
globals.64.o: globals.c language-private.h ../cups/transcode.h thread-private.h
|
||||
http.64.o: http.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
http.64.o: http.c array.h language.h string-private.h ../config.h debug-private.h
|
||||
http.64.o: http.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
http.64.o: http.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
http.64.o: http.c language-private.h ../cups/transcode.h thread-private.h
|
||||
http-addr.64.o: http-addr.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
http-addr.64.o: http-addr.c array.h language.h string-private.h ../config.h debug-private.h
|
||||
http-addr.64.o: http-addr.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
http-addr.64.o: http-addr.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
http-addr.64.o: http-addr.c language-private.h ../cups/transcode.h thread-private.h
|
||||
http-addrlist.64.o: http-addrlist.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h
|
||||
http-addrlist.64.o: http-addrlist.c http.h array.h language.h string-private.h ../config.h
|
||||
http-addrlist.64.o: http-addrlist.c debug-private.h ppd-private.h ../cups/ppd.h cups.h
|
||||
http-addrlist.64.o: http-addrlist.c pwg-private.h http-private.h ../cups/http.h md5-private.h
|
||||
http-addrlist.64.o: http-addrlist.c ipp-private.h ../cups/ipp.h language-private.h
|
||||
http-addrlist.64.o: http-addrlist.c ../cups/transcode.h thread-private.h
|
||||
http-support.64.o: http-support.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h
|
||||
http-support.64.o: http-support.c http.h array.h language.h string-private.h ../config.h
|
||||
http-support.64.o: http-support.c debug-private.h ppd-private.h ../cups/ppd.h cups.h
|
||||
http-support.64.o: http-support.c pwg-private.h http-private.h ../cups/http.h md5-private.h
|
||||
http-support.64.o: http-support.c ipp-private.h ../cups/ipp.h language-private.h
|
||||
http-support.64.o: http-support.c ../cups/transcode.h thread-private.h
|
||||
ipp.64.o: ipp.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h array.h
|
||||
ipp.64.o: ipp.c language.h string-private.h ../config.h debug-private.h ppd-private.h
|
||||
ipp.64.o: ipp.c ../cups/ppd.h cups.h pwg-private.h http-private.h ../cups/http.h
|
||||
ipp.64.o: ipp.c md5-private.h ipp-private.h ../cups/ipp.h language-private.h
|
||||
ipp.64.o: ipp.c ../cups/transcode.h thread-private.h
|
||||
ipp-support.64.o: ipp-support.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
ipp-support.64.o: ipp-support.c array.h language.h string-private.h ../config.h
|
||||
ipp-support.64.o: ipp-support.c debug-private.h ppd-private.h ../cups/ppd.h cups.h
|
||||
ipp-support.64.o: ipp-support.c pwg-private.h http-private.h ../cups/http.h md5-private.h
|
||||
ipp-support.64.o: ipp-support.c ipp-private.h ../cups/ipp.h language-private.h
|
||||
ipp-support.64.o: ipp-support.c ../cups/transcode.h thread-private.h
|
||||
langprintf.64.o: langprintf.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
langprintf.64.o: langprintf.c array.h language.h string-private.h ../config.h debug-private.h
|
||||
langprintf.64.o: langprintf.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
langprintf.64.o: langprintf.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
langprintf.64.o: langprintf.c language-private.h ../cups/transcode.h thread-private.h
|
||||
language.64.o: language.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
language.64.o: language.c array.h language.h string-private.h ../config.h debug-private.h
|
||||
language.64.o: language.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
language.64.o: language.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
language.64.o: language.c language-private.h ../cups/transcode.h thread-private.h
|
||||
localize.64.o: localize.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
localize.64.o: localize.c array.h language.h string-private.h ../config.h debug-private.h
|
||||
localize.64.o: localize.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
localize.64.o: localize.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
localize.64.o: localize.c language-private.h ../cups/transcode.h thread-private.h
|
||||
mark.64.o: mark.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
mark.64.o: mark.c array.h language.h string-private.h ../config.h debug-private.h
|
||||
mark.64.o: mark.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
mark.64.o: mark.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
mark.64.o: mark.c language-private.h ../cups/transcode.h thread-private.h
|
||||
md5.64.o: md5.c md5-private.h string-private.h ../config.h
|
||||
md5passwd.64.o: md5passwd.c http-private.h ../config.h ../cups/http.h md5-private.h
|
||||
md5passwd.64.o: md5passwd.c ipp-private.h ../cups/ipp.h string-private.h
|
||||
notify.64.o: notify.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
notify.64.o: notify.c array.h language.h string-private.h ../config.h debug-private.h
|
||||
notify.64.o: notify.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
notify.64.o: notify.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
notify.64.o: notify.c language-private.h ../cups/transcode.h thread-private.h
|
||||
options.64.o: options.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
options.64.o: options.c array.h language.h string-private.h ../config.h debug-private.h
|
||||
options.64.o: options.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
options.64.o: options.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
options.64.o: options.c language-private.h ../cups/transcode.h thread-private.h
|
||||
page.64.o: page.c string-private.h ../config.h debug-private.h ppd.h cups.h array.h
|
||||
page.64.o: page.c versioning.h file.h
|
||||
ppd.64.o: ppd.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h array.h
|
||||
ppd.64.o: ppd.c language.h string-private.h ../config.h debug-private.h ppd-private.h
|
||||
ppd.64.o: ppd.c ../cups/ppd.h cups.h pwg-private.h http-private.h ../cups/http.h
|
||||
ppd.64.o: ppd.c md5-private.h ipp-private.h ../cups/ipp.h language-private.h
|
||||
ppd.64.o: ppd.c ../cups/transcode.h thread-private.h
|
||||
ppd-cache.64.o: ppd-cache.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
ppd-cache.64.o: ppd-cache.c array.h language.h string-private.h ../config.h debug-private.h
|
||||
ppd-cache.64.o: ppd-cache.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
ppd-cache.64.o: ppd-cache.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
ppd-cache.64.o: ppd-cache.c language-private.h ../cups/transcode.h thread-private.h
|
||||
pwg-media.64.o: pwg-media.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
pwg-media.64.o: pwg-media.c array.h language.h string-private.h ../config.h debug-private.h
|
||||
pwg-media.64.o: pwg-media.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
pwg-media.64.o: pwg-media.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
pwg-media.64.o: pwg-media.c language-private.h ../cups/transcode.h thread-private.h
|
||||
request.64.o: request.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
request.64.o: request.c array.h language.h string-private.h ../config.h debug-private.h
|
||||
request.64.o: request.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
request.64.o: request.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
request.64.o: request.c language-private.h ../cups/transcode.h thread-private.h
|
||||
sidechannel.64.o: sidechannel.c sidechannel.h versioning.h string-private.h ../config.h
|
||||
sidechannel.64.o: sidechannel.c debug-private.h
|
||||
snmp.64.o: snmp.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
snmp.64.o: snmp.c array.h language.h string-private.h ../config.h debug-private.h
|
||||
snmp.64.o: snmp.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
snmp.64.o: snmp.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
snmp.64.o: snmp.c language-private.h ../cups/transcode.h thread-private.h
|
||||
snmp.64.o: snmp.c snmp-private.h
|
||||
snprintf.64.o: snprintf.c string-private.h ../config.h
|
||||
string.64.o: string.c string-private.h ../config.h debug-private.h thread-private.h
|
||||
string.64.o: string.c array.h versioning.h
|
||||
tempfile.64.o: tempfile.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
tempfile.64.o: tempfile.c array.h language.h string-private.h ../config.h debug-private.h
|
||||
tempfile.64.o: tempfile.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
tempfile.64.o: tempfile.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
tempfile.64.o: tempfile.c language-private.h ../cups/transcode.h thread-private.h
|
||||
thread.64.o: thread.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
thread.64.o: thread.c array.h language.h string-private.h ../config.h debug-private.h
|
||||
thread.64.o: thread.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
thread.64.o: thread.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
thread.64.o: thread.c language-private.h ../cups/transcode.h thread-private.h
|
||||
transcode.64.o: transcode.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
transcode.64.o: transcode.c array.h language.h string-private.h ../config.h debug-private.h
|
||||
transcode.64.o: transcode.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
transcode.64.o: transcode.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
transcode.64.o: transcode.c language-private.h ../cups/transcode.h thread-private.h
|
||||
usersys.64.o: usersys.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
usersys.64.o: usersys.c array.h language.h string-private.h ../config.h debug-private.h
|
||||
usersys.64.o: usersys.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
usersys.64.o: usersys.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
usersys.64.o: usersys.c language-private.h ../cups/transcode.h thread-private.h
|
||||
util.64.o: util.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
util.64.o: util.c array.h language.h string-private.h ../config.h debug-private.h
|
||||
util.64.o: util.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
util.64.o: util.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
util.64.o: util.c language-private.h ../cups/transcode.h thread-private.h
|
||||
testadmin.64.o: testadmin.c adminutil.h cups.h string-private.h ../config.h
|
||||
testarray.64.o: testarray.c string-private.h ../config.h debug-private.h array.h
|
||||
testarray.64.o: testarray.c versioning.h dir.h
|
||||
testconflicts.64.o: testconflicts.c cups.h ppd.h array.h versioning.h file.h string-private.h
|
||||
testconflicts.64.o: testconflicts.c ../config.h
|
||||
testcups.64.o: testcups.c string-private.h ../config.h cups.h ppd.h array.h versioning.h
|
||||
testcups.64.o: testcups.c file.h
|
||||
testfile.64.o: testfile.c string-private.h ../config.h debug-private.h file.h versioning.h
|
||||
testhttp.64.o: testhttp.c string-private.h ../config.h http-private.h ../cups/http.h
|
||||
testhttp.64.o: testhttp.c md5-private.h ipp-private.h ../cups/ipp.h
|
||||
testi18n.64.o: testi18n.c string-private.h ../config.h language-private.h
|
||||
testi18n.64.o: testi18n.c ../cups/transcode.h language.h array.h versioning.h
|
||||
testipp.64.o: testipp.c file.h versioning.h string-private.h ../config.h ipp-private.h
|
||||
testipp.64.o: testipp.c ../cups/ipp.h
|
||||
testoptions.64.o: testoptions.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
testoptions.64.o: testoptions.c array.h language.h string-private.h ../config.h
|
||||
testoptions.64.o: testoptions.c debug-private.h ppd-private.h ../cups/ppd.h cups.h
|
||||
testoptions.64.o: testoptions.c pwg-private.h http-private.h ../cups/http.h md5-private.h
|
||||
testoptions.64.o: testoptions.c ipp-private.h ../cups/ipp.h language-private.h
|
||||
testoptions.64.o: testoptions.c ../cups/transcode.h thread-private.h
|
||||
testlang.64.o: testlang.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
testlang.64.o: testlang.c array.h language.h string-private.h ../config.h debug-private.h
|
||||
testlang.64.o: testlang.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
testlang.64.o: testlang.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
testlang.64.o: testlang.c language-private.h ../cups/transcode.h thread-private.h
|
||||
testppd.64.o: testppd.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
testppd.64.o: testppd.c array.h language.h string-private.h ../config.h debug-private.h
|
||||
testppd.64.o: testppd.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
testppd.64.o: testppd.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
testppd.64.o: testppd.c language-private.h ../cups/transcode.h thread-private.h
|
||||
testpwg.64.o: testpwg.c ppd-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
testpwg.64.o: testpwg.c array.h language.h ../cups/ppd.h cups.h pwg-private.h
|
||||
testpwg.64.o: testpwg.c file-private.h cups-private.h string-private.h ../config.h
|
||||
testpwg.64.o: testpwg.c debug-private.h http-private.h ../cups/http.h md5-private.h
|
||||
testpwg.64.o: testpwg.c ipp-private.h ../cups/ipp.h language-private.h ../cups/transcode.h
|
||||
testpwg.64.o: testpwg.c thread-private.h
|
||||
testsnmp.64.o: testsnmp.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
|
||||
testsnmp.64.o: testsnmp.c array.h language.h string-private.h ../config.h debug-private.h
|
||||
testsnmp.64.o: testsnmp.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
|
||||
testsnmp.64.o: testsnmp.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
|
||||
testsnmp.64.o: testsnmp.c language-private.h ../cups/transcode.h thread-private.h
|
||||
testsnmp.64.o: testsnmp.c snmp-private.h
|
||||
|
||||
+71
-16
@@ -3,7 +3,7 @@
|
||||
#
|
||||
# API library Makefile for CUPS.
|
||||
#
|
||||
# Copyright 2007-2012 by Apple Inc.
|
||||
# Copyright 2007-2011 by Apple Inc.
|
||||
# Copyright 1997-2006 by Easy Software Products, all rights reserved.
|
||||
#
|
||||
# These coded instructions, statements, and computer programs are the
|
||||
@@ -32,9 +32,6 @@ LIBOBJS = \
|
||||
custom.o \
|
||||
debug.o \
|
||||
dest.o \
|
||||
dest-job.o \
|
||||
dest-localization.o \
|
||||
dest-options.o \
|
||||
dir.o \
|
||||
emit.o \
|
||||
encode.o \
|
||||
@@ -71,7 +68,12 @@ LIBOBJS = \
|
||||
transcode.o \
|
||||
usersys.o \
|
||||
util.o
|
||||
TESTOBJS = \
|
||||
LIB32OBJS = $(LIBOBJS:.o=.32.o)
|
||||
LIB64OBJS = $(LIBOBJS:.o=.64.o)
|
||||
OBJS = \
|
||||
$(LIBOBJS) \
|
||||
$(LIB32OBJS) \
|
||||
$(LIB64OBJS) \
|
||||
testadmin.o \
|
||||
testarray.o \
|
||||
testconflicts.o \
|
||||
@@ -85,9 +87,6 @@ TESTOBJS = \
|
||||
testppd.o \
|
||||
testpwg.o \
|
||||
testsnmp.o
|
||||
OBJS = \
|
||||
$(LIBOBJS) \
|
||||
$(TESTOBJS)
|
||||
|
||||
|
||||
#
|
||||
@@ -121,7 +120,6 @@ HEADERSPRIV = \
|
||||
md5-private.h \
|
||||
ppd-private.h \
|
||||
pwg-private.h \
|
||||
raster-private.h \
|
||||
snmp-private.h \
|
||||
string-private.h \
|
||||
thread-private.h
|
||||
@@ -133,7 +131,9 @@ HEADERSPRIV = \
|
||||
|
||||
LIBTARGETS = \
|
||||
$(LIBCUPSSTATIC) \
|
||||
$(LIBCUPS)
|
||||
$(LIBCUPS) \
|
||||
$(LIB32CUPS) \
|
||||
$(LIB64CUPS)
|
||||
|
||||
UNITTARGETS = \
|
||||
testadmin \
|
||||
@@ -182,6 +182,7 @@ unittests: $(UNITTARGETS)
|
||||
clean:
|
||||
$(RM) $(OBJS) $(TARGETS) $(UNITTARGETS)
|
||||
$(RM) libcups.so libcups.sl libcups.dylib
|
||||
$(RM) -r 32bit 64bit
|
||||
|
||||
|
||||
#
|
||||
@@ -189,7 +190,13 @@ clean:
|
||||
#
|
||||
|
||||
depend:
|
||||
$(CC) -MM $(ALL_CFLAGS) $(OBJS:.o=.c) >Dependencies
|
||||
touch Dependencies.tmp
|
||||
makedepend -Y -I.. -fDependencies.tmp $(OBJS:.o=.c) >/dev/null 2>&1
|
||||
$(RM) Dependencies
|
||||
cp Dependencies.tmp Dependencies
|
||||
sed -E -e '1,$$s/^([^.]+)\.o:/\1\.32.o: \1\.c /' Dependencies.tmp >>Dependencies
|
||||
sed -E -e '1,$$s/^([^.]+)\.o:/\1\.64.o: \1\.c /' Dependencies.tmp >>Dependencies
|
||||
$(RM) Dependencies.tmp
|
||||
|
||||
|
||||
#
|
||||
@@ -236,7 +243,7 @@ install-headers:
|
||||
# Install libraries...
|
||||
#
|
||||
|
||||
install-libs: $(INSTALLSTATIC)
|
||||
install-libs: $(INSTALLSTATIC) $(INSTALL32) $(INSTALL64)
|
||||
echo Installing libraries in $(LIBDIR)...
|
||||
$(INSTALL_DIR) -m 755 $(LIBDIR)
|
||||
$(INSTALL_LIB) $(LIBCUPS) $(LIBDIR)
|
||||
@@ -259,12 +266,24 @@ installstatic:
|
||||
$(RANLIB) $(LIBDIR)/$(LIBCUPSSTATIC)
|
||||
$(CHMOD) 555 $(LIBDIR)/$(LIBCUPSSTATIC)
|
||||
|
||||
install32bit:
|
||||
echo Installing libraries in $(LIB32DIR)...
|
||||
$(INSTALL_DIR) -m 755 $(LIB32DIR)
|
||||
$(INSTALL_LIB) 32bit/libcups.so.2 $(LIB32DIR)/libcups.so.2
|
||||
$(LN) libcups.so.2 $(LIB32DIR)/libcups.so
|
||||
|
||||
install64bit:
|
||||
echo Installing libraries in $(LIB64DIR)...
|
||||
$(INSTALL_DIR) -m 755 $(LIB64DIR)
|
||||
$(INSTALL_LIB) 64bit/libcups.so.2 $(LIB64DIR)/libcups.so.2
|
||||
$(LN) libcups.so.2 $(LIB64DIR)/libcups.so
|
||||
|
||||
|
||||
#
|
||||
# Uninstall object and target files...
|
||||
#
|
||||
|
||||
uninstall:
|
||||
uninstall: $(UNINSTALL32) $(UNINSTALL64)
|
||||
$(RM) $(LIBDIR)/libcups.2.dylib
|
||||
$(RM) $(LIBDIR)/$(LIBCUPSSTATIC)
|
||||
$(RM) $(LIBDIR)/libcups.dylib
|
||||
@@ -279,6 +298,16 @@ uninstall:
|
||||
done
|
||||
-$(RMDIR) $(INCLUDEDIR)/cups
|
||||
|
||||
uninstall32bit:
|
||||
$(RM) $(LIB32DIR)/libcups.so
|
||||
$(RM) $(LIB32DIR)/libcups.so.2
|
||||
-$(RMDIR) $(LIB32DIR)
|
||||
|
||||
uninstall64bit:
|
||||
$(RM) $(LIB64DIR)/libcups.so
|
||||
$(RM) $(LIB64DIR)/libcups.so.2
|
||||
-$(RMDIR) $(LIB64DIR)
|
||||
|
||||
|
||||
#
|
||||
# libcups.so.2, libcups.sl.2
|
||||
@@ -292,6 +321,32 @@ libcups.so.2 libcups.sl.2: $(LIBOBJS)
|
||||
$(LN) $@ `basename $@ .2`
|
||||
|
||||
|
||||
#
|
||||
# 32bit/libcups.so.2
|
||||
#
|
||||
|
||||
32bit/libcups.so.2: $(LIB32OBJS)
|
||||
echo Linking 32-bit $@...
|
||||
-mkdir 32bit
|
||||
$(DSO) $(ARCH32FLAGS) $(DSO32FLAGS) -o $@ $(LIB32OBJS) $(LIBGSSAPI) \
|
||||
$(DNSSDLIBS) $(SSLLIBS) $(COMMONLIBS) $(LIBZ)
|
||||
$(RM) 32bit/libcups.so
|
||||
$(LN) libcups.so.2 32bit/libcups.so
|
||||
|
||||
|
||||
#
|
||||
# 64bit/libcups.so.2
|
||||
#
|
||||
|
||||
64bit/libcups.so.2: $(LIB64OBJS)
|
||||
echo Linking 64-bit $@...
|
||||
-mkdir 64bit
|
||||
$(DSO) $(ARCH64FLAGS) $(DSO64FLAGS) -o $@ $(LIB64OBJS) $(LIBGSSAPI) \
|
||||
$(DNSSDLIBS) $(SSLLIBS) $(COMMONLIBS) $(LIBZ)
|
||||
$(RM) 64bit/libcups.so
|
||||
$(LN) libcups.so.2 64bit/libcups.so
|
||||
|
||||
|
||||
#
|
||||
# libcups.2.dylib
|
||||
#
|
||||
@@ -321,7 +376,7 @@ libcups_s.a: $(LIBOBJS) libcups_s.exp
|
||||
echo Creating $@...
|
||||
$(DSO) $(DSOFLAGS) -Wl,-bexport:libcups_s.exp -o libcups_s.o \
|
||||
$(LIBOBJS) $(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) \
|
||||
$(COMMONLIBS) $(LIBZ)
|
||||
$(COMMONLIBS) $(LIBZ) -lm
|
||||
$(RM) $@
|
||||
$(AR) $(ARFLAGS) $@ libcups_s.o
|
||||
|
||||
@@ -530,7 +585,7 @@ apihelp:
|
||||
file.h file.c dir.h dir.c >../doc/help/api-filedir.html
|
||||
mxmldoc --tokens api-filedir.xml >../doc/help/api-filedir.tokens
|
||||
$(RM) api-filedir.xml
|
||||
mxmldoc --section "Programming" --title "PPD API (DEPRECATED)" \
|
||||
mxmldoc --section "Programming" --title "PPD API" \
|
||||
--css ../doc/cups-printable.css \
|
||||
--header api-ppd.header --intro api-ppd.shtml \
|
||||
api-ppd.xml \
|
||||
@@ -582,7 +637,7 @@ framedhelp:
|
||||
--header api-filedir.header --intro api-filedir.shtml \
|
||||
file.h file.c dir.h dir.c
|
||||
mxmldoc --framed api-ppd \
|
||||
--section "Programming" --title "PPD API (DEPRECATED)" \
|
||||
--section "Programming" --title "PPD API" \
|
||||
--css ../doc/cups-printable.css \
|
||||
--header api-ppd.header --intro api-ppd.shtml \
|
||||
ppd.h attr.c conflicts.c custom.c emit.c localize.c mark.c \
|
||||
|
||||
+140
-23
@@ -970,6 +970,8 @@ cupsAdminGetServerSettings(
|
||||
remote_admin = 0, /* Remote administration allowed? */
|
||||
remote_any = 0, /* Remote access from anywhere allowed? */
|
||||
browsing = 1, /* Browsing enabled? */
|
||||
browse_allow = 1, /* Browse address set? */
|
||||
browse_address = 0, /* Browse address set? */
|
||||
cancel_policy = 1, /* Cancel-job policy set? */
|
||||
debug_logging = 0; /* LogLevel debug set? */
|
||||
int linenum = 0, /* Line number in file */
|
||||
@@ -1018,16 +1020,26 @@ cupsAdminGetServerSettings(
|
||||
}
|
||||
else if (!_cups_strcasecmp(line, "Browsing"))
|
||||
{
|
||||
browsing = !_cups_strcasecmp(value, "yes") ||
|
||||
!_cups_strcasecmp(value, "on") ||
|
||||
browsing = !_cups_strcasecmp(value, "yes") || !_cups_strcasecmp(value, "on") ||
|
||||
!_cups_strcasecmp(value, "true");
|
||||
}
|
||||
else if (!_cups_strcasecmp(line, "BrowseAddress"))
|
||||
{
|
||||
browse_address = 1;
|
||||
}
|
||||
else if (!_cups_strcasecmp(line, "BrowseAllow"))
|
||||
{
|
||||
browse_allow = 1;
|
||||
}
|
||||
else if (!_cups_strcasecmp(line, "BrowseOrder"))
|
||||
{
|
||||
browse_allow = !_cups_strncasecmp(value, "deny,", 5);
|
||||
}
|
||||
else if (!_cups_strcasecmp(line, "LogLevel"))
|
||||
{
|
||||
debug_logging = !_cups_strncasecmp(value, "debug", 5);
|
||||
}
|
||||
else if (!_cups_strcasecmp(line, "<Policy") &&
|
||||
!_cups_strcasecmp(value, "default"))
|
||||
else if (!_cups_strcasecmp(line, "<Policy") && !_cups_strcasecmp(value, "default"))
|
||||
{
|
||||
in_policy = 1;
|
||||
}
|
||||
@@ -1051,8 +1063,7 @@ cupsAdminGetServerSettings(
|
||||
if (*valptr)
|
||||
*valptr++ = '\0';
|
||||
|
||||
if (!_cups_strcasecmp(value, "cancel-job") ||
|
||||
!_cups_strcasecmp(value, "all"))
|
||||
if (!_cups_strcasecmp(value, "cancel-job") || !_cups_strcasecmp(value, "all"))
|
||||
{
|
||||
in_cancel_job = 1;
|
||||
break;
|
||||
@@ -1080,8 +1091,7 @@ cupsAdminGetServerSettings(
|
||||
in_location = 0;
|
||||
}
|
||||
else if (!_cups_strcasecmp(line, "Allow") && value &&
|
||||
_cups_strcasecmp(value, "localhost") &&
|
||||
_cups_strcasecmp(value, "127.0.0.1")
|
||||
_cups_strcasecmp(value, "localhost") && _cups_strcasecmp(value, "127.0.0.1")
|
||||
#ifdef AF_LOCAL
|
||||
&& *value != '/'
|
||||
#endif /* AF_LOCAL */
|
||||
@@ -1125,9 +1135,15 @@ cupsAdminGetServerSettings(
|
||||
cg->cupsd_num_settings,
|
||||
&(cg->cupsd_settings));
|
||||
|
||||
cg->cupsd_num_settings = cupsAddOption(CUPS_SERVER_REMOTE_PRINTERS,
|
||||
(browsing && browse_allow) ?
|
||||
"1" : "0",
|
||||
cg->cupsd_num_settings,
|
||||
&(cg->cupsd_settings));
|
||||
|
||||
cg->cupsd_num_settings = cupsAddOption(CUPS_SERVER_SHARE_PRINTERS,
|
||||
(remote_access && browsing) ? "1" :
|
||||
"0",
|
||||
(remote_access && browsing &&
|
||||
browse_address) ? "1" : "0",
|
||||
cg->cupsd_num_settings,
|
||||
&(cg->cupsd_settings));
|
||||
|
||||
@@ -1188,7 +1204,8 @@ cupsAdminSetServerSettings(
|
||||
in_conf_location, /* In the /admin/conf location? */
|
||||
in_root_location; /* In the / location? */
|
||||
const char *val; /* Setting value */
|
||||
int share_printers, /* Share local printers */
|
||||
int remote_printers, /* Show remote printers */
|
||||
share_printers, /* Share local printers */
|
||||
remote_admin, /* Remote administration allowed? */
|
||||
remote_any, /* Remote access from anywhere? */
|
||||
user_cancel_any, /* Cancel-job policy set? */
|
||||
@@ -1202,7 +1219,8 @@ cupsAdminSetServerSettings(
|
||||
wrote_root_location; /* Wrote the / location? */
|
||||
int indent; /* Indentation */
|
||||
int cupsd_num_settings; /* New number of settings */
|
||||
int old_share_printers, /* Share local printers */
|
||||
int old_remote_printers, /* Show remote printers */
|
||||
old_share_printers, /* Share local printers */
|
||||
old_remote_admin, /* Remote administration allowed? */
|
||||
old_user_cancel_any, /* Cancel-job policy set? */
|
||||
old_debug_logging; /* LogLevel debug set? */
|
||||
@@ -1276,6 +1294,15 @@ cupsAdminSetServerSettings(
|
||||
DEBUG_printf(("1cupsAdminSetServerSettings: old remote_any=%d",
|
||||
remote_any));
|
||||
|
||||
if ((val = cupsGetOption(CUPS_SERVER_REMOTE_PRINTERS, cupsd_num_settings,
|
||||
cupsd_settings)) != NULL)
|
||||
old_remote_printers = atoi(val);
|
||||
else
|
||||
old_remote_printers = 1;
|
||||
|
||||
DEBUG_printf(("1cupsAdminSetServerSettings: old remote_printers=%d",
|
||||
old_remote_printers));
|
||||
|
||||
if ((val = cupsGetOption(CUPS_SERVER_SHARE_PRINTERS, cupsd_num_settings,
|
||||
cupsd_settings)) != NULL)
|
||||
old_share_printers = atoi(val);
|
||||
@@ -1347,6 +1374,26 @@ cupsAdminSetServerSettings(
|
||||
DEBUG_printf(("1cupsAdminSetServerSettings: remote_admin=%d",
|
||||
remote_admin));
|
||||
|
||||
if ((val = cupsGetOption(CUPS_SERVER_REMOTE_PRINTERS, num_settings,
|
||||
settings)) != NULL)
|
||||
{
|
||||
remote_printers = atoi(val);
|
||||
|
||||
if (remote_printers == old_remote_printers)
|
||||
{
|
||||
/*
|
||||
* No change to this setting...
|
||||
*/
|
||||
|
||||
remote_printers = -1;
|
||||
}
|
||||
}
|
||||
else
|
||||
remote_printers = -1;
|
||||
|
||||
DEBUG_printf(("1cupsAdminSetServerSettings: remote_printers=%d",
|
||||
remote_printers));
|
||||
|
||||
if ((val = cupsGetOption(CUPS_SERVER_SHARE_PRINTERS, num_settings,
|
||||
settings)) != NULL)
|
||||
{
|
||||
@@ -1470,33 +1517,80 @@ cupsAdminSetServerSettings(
|
||||
cupsFilePrintf(temp, "Listen %s\n", value);
|
||||
}
|
||||
else if ((!_cups_strcasecmp(line, "Browsing") ||
|
||||
!_cups_strcasecmp(line, "BrowseLocalProtocols")) &&
|
||||
share_printers >= 0)
|
||||
!_cups_strcasecmp(line, "BrowseAddress") ||
|
||||
!_cups_strcasecmp(line, "BrowseAllow") ||
|
||||
!_cups_strcasecmp(line, "BrowseDeny") ||
|
||||
!_cups_strcasecmp(line, "BrowseLocalProtocols") ||
|
||||
!_cups_strcasecmp(line, "BrowseRemoteProtocols") ||
|
||||
!_cups_strcasecmp(line, "BrowseOrder")) &&
|
||||
(remote_printers >= 0 || share_printers >= 0))
|
||||
{
|
||||
if (!wrote_browsing)
|
||||
{
|
||||
int new_remote_printers = (remote_printers > 0 ||
|
||||
(remote_printers == -1 &&
|
||||
old_remote_printers > 0));
|
||||
int new_share_printers = (share_printers > 0 ||
|
||||
(share_printers == -1 &&
|
||||
old_share_printers > 0));
|
||||
|
||||
wrote_browsing = 1;
|
||||
|
||||
if (new_share_printers)
|
||||
if (new_remote_printers || new_share_printers)
|
||||
{
|
||||
const char *localp = cupsGetOption("BrowseLocalProtocols",
|
||||
num_settings, settings);
|
||||
const char *remotep = cupsGetOption("BrowseRemoteProtocols",
|
||||
num_settings, settings);
|
||||
|
||||
if (!localp || !localp[0])
|
||||
localp = cupsGetOption("BrowseLocalProtocols", cupsd_num_settings,
|
||||
cupsd_settings);
|
||||
|
||||
cupsFilePuts(temp, "# Share local printers on the local network.\n");
|
||||
if (!remotep)
|
||||
remotep = cupsGetOption("BrowseRemoteProtocols", cupsd_num_settings,
|
||||
cupsd_settings);
|
||||
|
||||
if (new_remote_printers && new_share_printers)
|
||||
cupsFilePuts(temp,
|
||||
"# Enable printer sharing and shared printers.\n");
|
||||
else if (new_remote_printers)
|
||||
cupsFilePuts(temp,
|
||||
"# Show shared printers on the local network.\n");
|
||||
else
|
||||
cupsFilePuts(temp,
|
||||
"# Share local printers on the local network.\n");
|
||||
|
||||
cupsFilePuts(temp, "Browsing On\n");
|
||||
cupsFilePuts(temp, "BrowseOrder allow,deny\n");
|
||||
|
||||
if (!localp)
|
||||
localp = CUPS_DEFAULT_BROWSE_LOCAL_PROTOCOLS;
|
||||
if (new_remote_printers)
|
||||
{
|
||||
cupsFilePuts(temp, "BrowseAllow all\n");
|
||||
|
||||
cupsFilePrintf(temp, "BrowseLocalProtocols %s\n", localp);
|
||||
if (!remotep)
|
||||
remotep = CUPS_DEFAULT_BROWSE_REMOTE_PROTOCOLS;
|
||||
|
||||
cupsFilePrintf(temp, "BrowseRemoteProtocols %s\n", remotep);
|
||||
}
|
||||
else
|
||||
cupsFilePuts(temp, "BrowseRemoteProtocols\n");
|
||||
|
||||
cupsd_num_settings = cupsAddOption("BrowseRemoteProtocols", remotep,
|
||||
cupsd_num_settings,
|
||||
&cupsd_settings);
|
||||
|
||||
if (new_share_printers)
|
||||
{
|
||||
cupsFilePuts(temp, "BrowseAddress @LOCAL\n");
|
||||
|
||||
if (!localp)
|
||||
localp = CUPS_DEFAULT_BROWSE_LOCAL_PROTOCOLS;
|
||||
|
||||
cupsFilePrintf(temp, "BrowseLocalProtocols %s\n", localp);
|
||||
}
|
||||
else
|
||||
cupsFilePuts(temp, "BrowseLocalProtocols\n");
|
||||
|
||||
cupsd_num_settings = cupsAddOption("BrowseLocalProtocols", localp,
|
||||
cupsd_num_settings,
|
||||
@@ -1504,7 +1598,8 @@ cupsAdminSetServerSettings(
|
||||
}
|
||||
else
|
||||
{
|
||||
cupsFilePuts(temp, "# Disable printer sharing.\n");
|
||||
cupsFilePuts(temp,
|
||||
"# Disable printer sharing and shared printers.\n");
|
||||
cupsFilePuts(temp, "Browsing Off\n");
|
||||
}
|
||||
}
|
||||
@@ -1770,12 +1865,25 @@ cupsAdminSetServerSettings(
|
||||
* Write any missing info...
|
||||
*/
|
||||
|
||||
if (!wrote_browsing && share_printers >= 0)
|
||||
if (!wrote_browsing && (remote_printers >= 0 || share_printers >= 0))
|
||||
{
|
||||
if (share_printers > 0)
|
||||
if (remote_printers > 0 || share_printers > 0)
|
||||
{
|
||||
cupsFilePuts(temp, "# Share local printers on the local network.\n");
|
||||
if (remote_printers > 0 && share_printers > 0)
|
||||
cupsFilePuts(temp, "# Enable printer sharing and shared printers.\n");
|
||||
else if (remote_printers > 0)
|
||||
cupsFilePuts(temp, "# Show shared printers on the local network.\n");
|
||||
else
|
||||
cupsFilePuts(temp, "# Share local printers on the local network.\n");
|
||||
|
||||
cupsFilePuts(temp, "Browsing On\n");
|
||||
cupsFilePuts(temp, "BrowseOrder allow,deny\n");
|
||||
|
||||
if (remote_printers > 0)
|
||||
cupsFilePuts(temp, "BrowseAllow all\n");
|
||||
|
||||
if (share_printers > 0)
|
||||
cupsFilePuts(temp, "BrowseAddress @LOCAL\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1982,6 +2090,15 @@ cupsAdminSetServerSettings(
|
||||
remote_any ? "1" : "0",
|
||||
cupsd_num_settings, &cupsd_settings);
|
||||
|
||||
if (remote_printers >= 0)
|
||||
cupsd_num_settings = cupsAddOption(CUPS_SERVER_REMOTE_PRINTERS,
|
||||
remote_printers ? "1" : "0",
|
||||
cupsd_num_settings, &cupsd_settings);
|
||||
else
|
||||
cupsd_num_settings = cupsAddOption(CUPS_SERVER_REMOTE_PRINTERS,
|
||||
old_remote_printers ? "1" : "0",
|
||||
cupsd_num_settings, &cupsd_settings);
|
||||
|
||||
if (share_printers >= 0)
|
||||
cupsd_num_settings = cupsAddOption(CUPS_SERVER_SHARE_PRINTERS,
|
||||
share_printers ? "1" : "0",
|
||||
|
||||
+2
-2
@@ -3,7 +3,7 @@
|
||||
*
|
||||
* Administration utility API definitions for CUPS.
|
||||
*
|
||||
* Copyright 2007-2011 by Apple Inc.
|
||||
* Copyright 2007-2010 by Apple Inc.
|
||||
* Copyright 2001-2007 by Easy Software Products.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
@@ -42,7 +42,7 @@ extern "C" {
|
||||
# define CUPS_SERVER_DEBUG_LOGGING "_debug_logging"
|
||||
# define CUPS_SERVER_REMOTE_ADMIN "_remote_admin"
|
||||
# define CUPS_SERVER_REMOTE_ANY "_remote_any"
|
||||
/*# define CUPS_SERVER_REMOTE_PRINTERS "_remote_printers"*/
|
||||
# define CUPS_SERVER_REMOTE_PRINTERS "_remote_printers"
|
||||
# define CUPS_SERVER_SHARE_PRINTERS "_share_printers"
|
||||
# define CUPS_SERVER_USER_CANCEL_ANY "_user_cancel_any"
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!--
|
||||
"$Id: api-ppd.header 10103 2011-11-03 20:44:57Z mike $"
|
||||
"$Id: api-ppd.header 9771 2011-05-12 05:21:56Z mike $"
|
||||
|
||||
PPD API header for CUPS.
|
||||
|
||||
@@ -12,9 +12,7 @@
|
||||
file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
-->
|
||||
|
||||
<h1 class='title'>PPD API (DEPRECATED)</h1>
|
||||
|
||||
<blockquote>The PPD API is deprecated starting in CUPS 1.6. Please use the new Job Ticket APIs in the <a href="api-cups.html">CUPS API</a> documentation. These functions will be removed in a future release of CUPS.</blockquote>
|
||||
<h1 class='title'>PPD API</h1>
|
||||
|
||||
<div class='summary'><table summary='General Information'>
|
||||
<thead>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!--
|
||||
"$Id: api-ppd.shtml 10103 2011-11-03 20:44:57Z mike $"
|
||||
"$Id: api-ppd.shtml 9727 2011-04-28 21:20:12Z mike $"
|
||||
|
||||
PPD API introduction for CUPS.
|
||||
|
||||
@@ -15,8 +15,6 @@
|
||||
|
||||
<h2 class='title'><a name='OVERVIEW'>Overview</a></h2>
|
||||
|
||||
<blockquote>The PPD API is deprecated starting in CUPS 1.6. Please use the new Job Ticket APIs in the <a href="api-cups.html">CUPS API</a> documentation. These functions will be removed in a future release of CUPS.</blockquote>
|
||||
|
||||
<p>The CUPS PPD API provides read-only access the data in PostScript Printer
|
||||
Description ("PPD") files which are used for all printers with a driver. With
|
||||
it you can obtain the data necessary to display printer options to users, mark
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
* Include necessary headers...
|
||||
*/
|
||||
|
||||
# include <cups/array.h>
|
||||
# include "array.h"
|
||||
|
||||
|
||||
/*
|
||||
|
||||
+1
-2
@@ -65,8 +65,6 @@ extern const char *cssmErrorString(int error);
|
||||
# ifdef HAVE_GSS_GSSAPI_SPI_H
|
||||
# include <GSS/gssapi_spi.h>
|
||||
# else
|
||||
# define GSS_AUTH_IDENTITY_TYPE_1 1
|
||||
# define gss_acquire_cred_ex_f __ApplePrivate_gss_acquire_cred_ex_f
|
||||
typedef struct gss_auth_identity
|
||||
{
|
||||
uint32_t type;
|
||||
@@ -421,6 +419,7 @@ _cupsSetNegotiateAuthString(
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
#endif /* HAVE_GSS_ACQUIRED_CRED_EX_F */
|
||||
|
||||
if (GSS_ERROR(major_status))
|
||||
|
||||
+2
-5
@@ -3,7 +3,7 @@
|
||||
*
|
||||
* Backend functions for CUPS.
|
||||
*
|
||||
* Copyright 2007-2012 by Apple Inc.
|
||||
* Copyright 2007-2010 by Apple Inc.
|
||||
* Copyright 2006 by Easy Software Products.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
@@ -125,10 +125,7 @@ quote_string(const char *s) /* I - String to write */
|
||||
if (*s == '\\' || *s == '\"')
|
||||
putchar('\\');
|
||||
|
||||
if (*s == '\n')
|
||||
putchar(' ');
|
||||
else
|
||||
putchar(*s);
|
||||
putchar(*s);
|
||||
|
||||
s ++;
|
||||
}
|
||||
|
||||
+4
-4
@@ -270,7 +270,7 @@ cupsResolveConflicts(
|
||||
* Resolver loop!
|
||||
*/
|
||||
|
||||
DEBUG_printf(("1cupsResolveConflicts: Resolver loop with %s!",
|
||||
DEBUG_printf(("1ppdResolveConflicts: Resolver loop with %s!",
|
||||
consts->resolver));
|
||||
goto error;
|
||||
}
|
||||
@@ -278,14 +278,14 @@ cupsResolveConflicts(
|
||||
if ((resolver = ppdFindAttr(ppd, "cupsUIResolver",
|
||||
consts->resolver)) == NULL)
|
||||
{
|
||||
DEBUG_printf(("1cupsResolveConflicts: Resolver %s not found!",
|
||||
DEBUG_printf(("1ppdResolveConflicts: Resolver %s not found!",
|
||||
consts->resolver));
|
||||
goto error;
|
||||
}
|
||||
|
||||
if (!resolver->value)
|
||||
{
|
||||
DEBUG_printf(("1cupsResolveConflicts: Resolver %s has no value!",
|
||||
DEBUG_printf(("1ppdResolveConflicts: Resolver %s has no value!",
|
||||
consts->resolver));
|
||||
goto error;
|
||||
}
|
||||
@@ -507,7 +507,7 @@ cupsResolveConflicts(
|
||||
|
||||
if (!changed)
|
||||
{
|
||||
DEBUG_puts("1cupsResolveConflicts: Unable to automatically resolve "
|
||||
DEBUG_puts("1ppdResolveConflicts: Unable to automatically resolve "
|
||||
"constraint!");
|
||||
goto error;
|
||||
}
|
||||
|
||||
+4
-53
@@ -3,7 +3,7 @@
|
||||
*
|
||||
* Private definitions for CUPS.
|
||||
*
|
||||
* Copyright 2007-2012 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
|
||||
@@ -50,14 +50,6 @@ extern "C" {
|
||||
* Types...
|
||||
*/
|
||||
|
||||
typedef struct _cups_buffer_s /**** Read/write buffer ****/
|
||||
{
|
||||
struct _cups_buffer_s *next; /* Next buffer in list */
|
||||
size_t size; /* Size of buffer */
|
||||
char used, /* Is this buffer used? */
|
||||
d[1]; /* Data buffer */
|
||||
} _cups_buffer_t;
|
||||
|
||||
typedef struct _cups_globals_s /**** CUPS global state data ****/
|
||||
{
|
||||
/* Multiple places... */
|
||||
@@ -103,7 +95,7 @@ typedef struct _cups_globals_s /**** CUPS global state data ****/
|
||||
|
||||
/* ipp.c */
|
||||
ipp_uchar_t ipp_date[11]; /* RFC-1903 date/time data */
|
||||
_cups_buffer_t *cups_buffers; /* Buffer list */
|
||||
_ipp_buffer_t *ipp_buffers; /* Buffer list */
|
||||
|
||||
/* ipp-support.c */
|
||||
int ipp_port; /* IPP port number */
|
||||
@@ -146,8 +138,7 @@ typedef struct _cups_globals_s /**** CUPS global state data ****/
|
||||
http_encryption_t encryption; /* Encryption setting */
|
||||
char user[65], /* User name */
|
||||
server[256], /* Server address */
|
||||
servername[256],/* Server hostname */
|
||||
password[128]; /* Password for default callback */
|
||||
servername[256];/* Server hostname */
|
||||
cups_password_cb2_t password_cb; /* Password callback */
|
||||
void *password_data; /* Password user data */
|
||||
http_tls_credentials_t tls_credentials;
|
||||
@@ -169,40 +160,6 @@ typedef struct _cups_globals_s /**** CUPS global state data ****/
|
||||
/* PPD filename */
|
||||
} _cups_globals_t;
|
||||
|
||||
typedef struct _cups_media_db_s /* Media database */
|
||||
{
|
||||
char *color, /* Media color, if any */
|
||||
*key, /* Media key, if any */
|
||||
*info, /* Media human-readable name, if any */
|
||||
*size_name, /* Media PWG size name, if provided */
|
||||
*source, /* Media source, if any */
|
||||
*type; /* Media type, if any */
|
||||
int width, /* Width in hundredths of millimeters */
|
||||
length, /* Length in hundredths of
|
||||
* millimeters */
|
||||
bottom, /* Bottom margin in hundredths of
|
||||
* millimeters */
|
||||
left, /* Left margin in hundredths of
|
||||
* millimeters */
|
||||
right, /* Right margin in hundredths of
|
||||
* millimeters */
|
||||
top; /* Top margin in hundredths of
|
||||
* millimeters */
|
||||
} _cups_media_db_t;
|
||||
|
||||
struct _cups_dinfo_s /* Destination capability and status
|
||||
* information */
|
||||
{
|
||||
const char *uri; /* Printer URI */
|
||||
char *resource; /* Resource path */
|
||||
ipp_t *attrs; /* Printer attributes */
|
||||
cups_array_t *constraints; /* Job constraints */
|
||||
cups_array_t *localizations; /* Localization information */
|
||||
cups_array_t *media_db; /* Media database */
|
||||
_cups_media_db_t min_size, /* Minimum size */
|
||||
max_size; /* Maximum size */
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* Prototypes...
|
||||
@@ -217,17 +174,11 @@ extern void _cupsAppleSetDefaultPrinter(CFStringRef name);
|
||||
extern void _cupsAppleSetUseLastPrinter(int uselast);
|
||||
# endif /* __APPLE__ */
|
||||
|
||||
extern char *_cupsBufferGet(size_t size);
|
||||
extern void _cupsBufferRelease(char *b);
|
||||
|
||||
extern http_t *_cupsConnect(void);
|
||||
extern int _cupsGet1284Values(const char *device_id,
|
||||
cups_option_t **values);
|
||||
extern const char *_cupsGetDestResource(cups_dest_t *dest, char *resource,
|
||||
size_t resourcesize);
|
||||
extern int _cupsGetDests(http_t *http, ipp_op_t op,
|
||||
const char *name, cups_dest_t **dests,
|
||||
cups_ptype_t type, cups_ptype_t mask);
|
||||
const char *name, cups_dest_t **dests);
|
||||
extern const char *_cupsGetPassword(const char *prompt);
|
||||
extern void _cupsGlobalLock(void);
|
||||
extern _cups_globals_t *_cupsGlobals(void);
|
||||
|
||||
+74
-327
@@ -3,7 +3,7 @@
|
||||
*
|
||||
* API definitions 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
|
||||
@@ -30,15 +30,23 @@
|
||||
typedef off_t ssize_t; /* @private@ */
|
||||
# endif /* WIN32 && !__CUPS_SSIZE_T_DEFINED */
|
||||
|
||||
# ifdef __BLOCKS__
|
||||
# include <dispatch/dispatch.h>
|
||||
# endif /* __BLOCKS__ */
|
||||
|
||||
# include "file.h"
|
||||
# include "ipp.h"
|
||||
# include "language.h"
|
||||
|
||||
|
||||
/*
|
||||
* With GCC 3.0 and higher, we can mark old APIs "deprecated" so you get
|
||||
* a warning at compile-time.
|
||||
*/
|
||||
|
||||
# if defined(__GNUC__) && __GNUC__ > 2
|
||||
# define _CUPS_DEPRECATED __attribute__ ((__deprecated__))
|
||||
# else
|
||||
# define _CUPS_DEPRECATED
|
||||
# endif /* __GNUC__ && __GNUC__ > 2 */
|
||||
|
||||
|
||||
/*
|
||||
* C++ magic...
|
||||
*/
|
||||
@@ -52,160 +60,37 @@ extern "C" {
|
||||
* Constants...
|
||||
*/
|
||||
|
||||
# define CUPS_VERSION 1.0599
|
||||
# define CUPS_VERSION_MAJOR 1
|
||||
# define CUPS_VERSION_MINOR 6
|
||||
# define CUPS_VERSION_PATCH -1
|
||||
# define CUPS_VERSION 1.0499
|
||||
# define CUPS_VERSION_MAJOR 1
|
||||
# define CUPS_VERSION_MINOR 5
|
||||
# define CUPS_VERSION_PATCH -1
|
||||
|
||||
# define CUPS_BC_FD 3
|
||||
/* Back-channel file descriptor for
|
||||
* select/poll */
|
||||
# define CUPS_DATE_ANY (time_t)-1
|
||||
# define CUPS_EXCLUDE_NONE (const char *)0
|
||||
# define CUPS_FORMAT_AUTO "application/octet-stream"
|
||||
# define CUPS_FORMAT_COMMAND "application/vnd.cups-command"
|
||||
# define CUPS_FORMAT_JPEG "image/jpeg"
|
||||
# define CUPS_FORMAT_PDF "application/pdf"
|
||||
# define CUPS_FORMAT_POSTSCRIPT "application/postscript"
|
||||
# define CUPS_FORMAT_RAW "application/vnd.cups-raw"
|
||||
# define CUPS_FORMAT_TEXT "text/plain"
|
||||
# define CUPS_HTTP_DEFAULT (http_t *)0
|
||||
# define CUPS_INCLUDE_ALL (const char *)0
|
||||
# define CUPS_JOBID_ALL -1
|
||||
# define CUPS_JOBID_CURRENT 0
|
||||
# define CUPS_LENGTH_VARIABLE (ssize_t)0
|
||||
# define CUPS_TIMEOUT_DEFAULT 0
|
||||
# define CUPS_WHICHJOBS_ALL -1
|
||||
# define CUPS_WHICHJOBS_ACTIVE 0
|
||||
# define CUPS_WHICHJOBS_COMPLETED 1
|
||||
|
||||
/* Flags for cupsConnectDest and cupsEnumDests */
|
||||
# define CUPS_DEST_FLAGS_NONE 0x00
|
||||
/* No flags are set */
|
||||
# define CUPS_DEST_FLAGS_UNCONNECTED 0x01
|
||||
/* There is not connection */
|
||||
# define CUPS_DEST_FLAGS_MORE 0x02
|
||||
/* There are more destinations */
|
||||
# define CUPS_DEST_FLAGS_REMOVED 0x04
|
||||
/* The destination has gone away */
|
||||
# define CUPS_DEST_FLAGS_ERROR 0x08
|
||||
/* An error occurred */
|
||||
# define CUPS_DEST_FLAGS_RESOLVING 0x10
|
||||
/* The destination address is being
|
||||
* resolved */
|
||||
# define CUPS_DEST_FLAGS_CONNECTING 0x20
|
||||
/* A connection is being established */
|
||||
# define CUPS_DEST_FLAGS_CANCELED 0x40
|
||||
/* Operation was canceled */
|
||||
|
||||
/* Flags for cupsGetDestMediaByName/Size */
|
||||
# define CUPS_MEDIA_FLAGS_DEFAULT 0x00
|
||||
/* Find the closest size supported by
|
||||
* the printer */
|
||||
# define CUPS_MEDIA_FLAGS_BORDERLESS 0x01
|
||||
/* Find a borderless size */
|
||||
# define CUPS_MEDIA_FLAGS_DUPLEX 0x02
|
||||
/* Find a size compatible with 2-sided
|
||||
* printing */
|
||||
# define CUPS_MEDIA_FLAGS_EXACT 0x04
|
||||
/* Find an exact match for the size */
|
||||
# define CUPS_MEDIA_FLAGS_READY 0x08
|
||||
/* If the printer supports media
|
||||
* sensing, find the size amongst the
|
||||
* "ready" media. */
|
||||
|
||||
/* Options and values */
|
||||
# define CUPS_COPIES "copies"
|
||||
# define CUPS_COPIES_SUPPORTED "copies-supported"
|
||||
|
||||
# define CUPS_FINISHINGS "finishings"
|
||||
# define CUPS_FINISHINGS_SUPPORTED "finishings-supported"
|
||||
|
||||
# define CUPS_FINISHINGS_BIND "7"
|
||||
# define CUPS_FINISHINGS_COVER "6"
|
||||
# define CUPS_FINISHINGS_FOLD "10"
|
||||
# define CUPS_FINISHINGS_NONE "3"
|
||||
# define CUPS_FINISHINGS_PUNCH "5"
|
||||
# define CUPS_FINISHINGS_STAPLE "4"
|
||||
# define CUPS_FINISHINGS_TRIM "11"
|
||||
|
||||
# define CUPS_MEDIA "media"
|
||||
# define CUPS_MEDIA_READY "media-ready"
|
||||
# define CUPS_MEDIA_SUPPORTED "media-supported"
|
||||
|
||||
# define CUPS_MEDIA_3X5 "na_index-3x5_3x5in"
|
||||
# define CUPS_MEDIA_4X6 "na_index-4x6_4x6in"
|
||||
# define CUPS_MEDIA_5X7 "na_5x7_5x7in"
|
||||
# define CUPS_MEDIA_8X10 "na_govt-letter_8x10in"
|
||||
# define CUPS_MEDIA_A3 "iso_a3_297x420mm"
|
||||
# define CUPS_MEDIA_A4 "iso_a4_210x297mm"
|
||||
# define CUPS_MEDIA_A5 "iso_a5_148x210mm"
|
||||
# define CUPS_MEDIA_A6 "iso_a6_105x148mm"
|
||||
# define CUPS_MEDIA_ENV10 "na_number-10_4.125x9.5in"
|
||||
# define CUPS_MEDIA_ENVDL "iso_dl_110x220mm"
|
||||
# define CUPS_MEDIA_LEGAL "na_legal_8.5x14in"
|
||||
# define CUPS_MEDIA_LETTER "na_letter_8.5x11in"
|
||||
# define CUPS_MEDIA_PHOTO_L "oe_photo-l_3.5x5in"
|
||||
# define CUPS_MEDIA_SUPERBA3 "na_super-b_13x19in"
|
||||
# define CUPS_MEDIA_TABLOID "na_ledger_11x17in"
|
||||
|
||||
# define CUPS_MEDIA_SOURCE "media-source"
|
||||
# define CUPS_MEDIA_SOURCE_SUPPORTED "media-source-supported"
|
||||
|
||||
# define CUPS_MEDIA_SOURCE_AUTO "auto"
|
||||
# define CUPS_MEDIA_SOURCE_MANUAL "manual"
|
||||
|
||||
# define CUPS_MEDIA_TYPE "media-type"
|
||||
# define CUPS_MEDIA_TYPE_SUPPORTED "media-type-supported"
|
||||
|
||||
# define CUPS_MEDIA_TYPE_AUTO "auto"
|
||||
# define CUPS_MEDIA_TYPE_ENVELOPE "envelope"
|
||||
# define CUPS_MEDIA_TYPE_LABELS "labels"
|
||||
# define CUPS_MEDIA_TYPE_LETTERHEAD "stationery-letterhead"
|
||||
# define CUPS_MEDIA_TYPE_PHOTO "photographic"
|
||||
# define CUPS_MEDIA_TYPE_PHOTO_GLOSSY "photographic-glossy"
|
||||
# define CUPS_MEDIA_TYPE_PHOTO_MATTE "photographic-matte"
|
||||
# define CUPS_MEDIA_TYPE_PLAIN "stationery"
|
||||
# define CUPS_MEDIA_TYPE_TRANSPARENCY "transparency"
|
||||
|
||||
# define CUPS_NUMBER_UP "number-up"
|
||||
# define CUPS_NUMBER_UP_SUPPORTED "number-up-supported"
|
||||
|
||||
# define CUPS_ORIENTATION "orientation-requested"
|
||||
# define CUPS_ORIENTATION_SUPPORTED "orientation-requested-supported"
|
||||
|
||||
# define CUPS_ORIENTATION_PORTRAIT "3"
|
||||
# define CUPS_ORIENTATION_LANDSCAPE "4"
|
||||
|
||||
# define CUPS_PRINT_COLOR_MODE "print-color-mode"
|
||||
# define CUPS_PRINT_COLOR_MODE_SUPPORTED "print-color-mode-supported"
|
||||
|
||||
# define CUPS_PRINT_COLOR_MODE_AUTO "auto"
|
||||
# define CUPS_PRINT_COLOR_MODE_MONOCHROME "monochrome"
|
||||
# define CUPS_PRINT_COLOR_MODE_COLOR "color"
|
||||
|
||||
# define CUPS_PRINT_QUALITY "print-quality"
|
||||
# define CUPS_PRINT_QUALITY_SUPPORTED "print-quality-supported"
|
||||
|
||||
# define CUPS_PRINT_QUALITY_DRAFT "3"
|
||||
# define CUPS_PRINT_QUALITY_NORMAL "4"
|
||||
# define CUPS_PRINT_QUALITY_HIGH "5"
|
||||
|
||||
# define CUPS_SIDES "sides"
|
||||
# define CUPS_SIDES_SUPPORTED "sides-supported"
|
||||
|
||||
# define CUPS_SIDES_ONE_SIDED "one-sided"
|
||||
# define CUPS_SIDES_TWO_SIDED_PORTRAIT "two-sided-long-edge"
|
||||
# define CUPS_SIDES_TWO_SIDED_LANDSCAPE "two-sided-short-edge"
|
||||
# define CUPS_BC_FD 3 /* Back-channel file descriptor for select/poll */
|
||||
# define CUPS_DATE_ANY (time_t)-1
|
||||
# define CUPS_EXCLUDE_NONE (const char *)0
|
||||
# define CUPS_FORMAT_AUTO "application/octet-stream"
|
||||
# define CUPS_FORMAT_COMMAND "application/vnd.cups-command"
|
||||
# define CUPS_FORMAT_PDF "application/pdf"
|
||||
# define CUPS_FORMAT_POSTSCRIPT "application/postscript"
|
||||
# define CUPS_FORMAT_RAW "application/vnd.cups-raw"
|
||||
# define CUPS_FORMAT_TEXT "text/plain"
|
||||
# define CUPS_HTTP_DEFAULT (http_t *)0
|
||||
# define CUPS_INCLUDE_ALL (const char *)0
|
||||
# define CUPS_JOBID_ALL -1
|
||||
# define CUPS_JOBID_CURRENT 0
|
||||
# define CUPS_LENGTH_VARIABLE (ssize_t)0
|
||||
# define CUPS_TIMEOUT_DEFAULT 0
|
||||
# define CUPS_WHICHJOBS_ALL -1
|
||||
# define CUPS_WHICHJOBS_ACTIVE 0
|
||||
# define CUPS_WHICHJOBS_COMPLETED 1
|
||||
|
||||
|
||||
/*
|
||||
* Types and structures...
|
||||
*/
|
||||
|
||||
typedef unsigned cups_ptype_t; /* Printer type/capability bits */
|
||||
enum cups_ptype_e /* Printer type/capability bit
|
||||
* constants */
|
||||
typedef unsigned cups_ptype_t; /**** Printer type/capability bits ****/
|
||||
enum cups_ptype_e /**** Printer type/capability bit constants ****/
|
||||
{ /* Not a typedef'd enum so we can OR */
|
||||
CUPS_PRINTER_LOCAL = 0x0000, /* Local printer or class */
|
||||
CUPS_PRINTER_CLASS = 0x0001, /* Printer class */
|
||||
@@ -224,32 +109,36 @@ enum cups_ptype_e /* Printer type/capability bit
|
||||
CUPS_PRINTER_MEDIUM = 0x2000, /* Can do Tabloid/B/C/A3/A2 */
|
||||
CUPS_PRINTER_LARGE = 0x4000, /* Can do D/E/A1/A0 */
|
||||
CUPS_PRINTER_VARIABLE = 0x8000, /* Can do variable sizes */
|
||||
CUPS_PRINTER_IMPLICIT = 0x10000, /* Implicit class @private@
|
||||
* @since Deprecated@ */
|
||||
CUPS_PRINTER_IMPLICIT = 0x10000, /* Implicit class */
|
||||
CUPS_PRINTER_DEFAULT = 0x20000, /* Default printer on network */
|
||||
CUPS_PRINTER_FAX = 0x40000, /* Fax queue */
|
||||
CUPS_PRINTER_REJECTING = 0x80000, /* Printer is rejecting jobs */
|
||||
CUPS_PRINTER_DELETE = 0x100000, /* Delete printer
|
||||
* @since CUPS 1.2/Mac OS X 10.5@ */
|
||||
CUPS_PRINTER_NOT_SHARED = 0x200000, /* Printer is not shared
|
||||
* @since CUPS 1.2/Mac OS X 10.5@ */
|
||||
CUPS_PRINTER_AUTHENTICATED = 0x400000,/* Printer requires authentication
|
||||
* @since CUPS 1.2/Mac OS X 10.5@ */
|
||||
CUPS_PRINTER_COMMANDS = 0x800000, /* Printer supports maintenance commands
|
||||
* @since CUPS 1.2/Mac OS X 10.5@ */
|
||||
CUPS_PRINTER_DISCOVERED = 0x1000000, /* Printer was automatically discovered
|
||||
* and added @private@
|
||||
* @since Deprecated@ */
|
||||
CUPS_PRINTER_SCANNER = 0x2000000, /* Scanner-only device
|
||||
* @since CUPS 1.4/Mac OS X 10.6@ */
|
||||
CUPS_PRINTER_MFP = 0x4000000, /* Printer with scanning capabilities
|
||||
* @since CUPS 1.4/Mac OS X 10.6@ */
|
||||
CUPS_PRINTER_OPTIONS = 0x6fffc /* ~(CLASS | REMOTE | IMPLICIT |
|
||||
* DEFAULT | FAX | REJECTING | DELETE |
|
||||
* NOT_SHARED | AUTHENTICATED |
|
||||
* COMMANDS | DISCOVERED) @private@ */
|
||||
CUPS_PRINTER_DELETE = 0x100000, /* Delete printer @since CUPS 1.2/Mac OS X 10.5@ */
|
||||
CUPS_PRINTER_NOT_SHARED = 0x200000, /* Printer is not shared @since CUPS 1.2/Mac OS X 10.5@ */
|
||||
CUPS_PRINTER_AUTHENTICATED = 0x400000,/* Printer requires authentication @since CUPS 1.2/Mac OS X 10.5@ */
|
||||
CUPS_PRINTER_COMMANDS = 0x800000, /* Printer supports maintenance commands @since CUPS 1.2/Mac OS X 10.5@ */
|
||||
CUPS_PRINTER_DISCOVERED = 0x1000000, /* Printer was automatically discovered and added @since CUPS 1.3/Mac OS X 10.5@ */
|
||||
CUPS_PRINTER_SCANNER = 0x2000000, /* Scanner-only device @since CUPS 1.4/Mac OS X 10.6@ */
|
||||
CUPS_PRINTER_MFP = 0x4000000, /* Printer with scanning capabilities @since CUPS 1.4/Mac OS X 10.6@ */
|
||||
CUPS_PRINTER_OPTIONS = 0x6fffc /* ~(CLASS | REMOTE | IMPLICIT | DEFAULT | FAX | REJECTING | DELETE | NOT_SHARED | AUTHENTICATED | COMMANDS | DISCOVERED) @private@ */
|
||||
};
|
||||
|
||||
typedef const char *(*cups_password_cb_t)(const char *prompt);
|
||||
/**** Password callback ****/
|
||||
|
||||
typedef const char *(*cups_password_cb2_t)(const char *prompt, http_t *http,
|
||||
const char *method,
|
||||
const char *resource,
|
||||
void *user_data);
|
||||
/**** New password callback @since CUPS 1.4/Mac OS X 10.6@ ****/
|
||||
|
||||
typedef void (*cups_device_cb_t)(const char *device_class,
|
||||
const char *device_id, const char *device_info,
|
||||
const char *device_make_and_model,
|
||||
const char *device_uri,
|
||||
const char *device_location, void *user_data);
|
||||
/**** Device callback @since CUPS 1.4/Mac OS X 10.6@ ****/
|
||||
|
||||
typedef struct cups_option_s /**** Printer Options ****/
|
||||
{
|
||||
char *name; /* Name of option */
|
||||
@@ -265,10 +154,6 @@ typedef struct cups_dest_s /**** Destination ****/
|
||||
cups_option_t *options; /* Options */
|
||||
} cups_dest_t;
|
||||
|
||||
typedef struct _cups_dinfo_s cups_dinfo_t;
|
||||
/* Destination capability and status
|
||||
* information @since CUPS 1.6@ */
|
||||
|
||||
typedef struct cups_job_s /**** Job ****/
|
||||
{
|
||||
int id; /* The job ID */
|
||||
@@ -284,61 +169,14 @@ typedef struct cups_job_s /**** Job ****/
|
||||
time_t processing_time; /* Time the job was processed */
|
||||
} cups_job_t;
|
||||
|
||||
typedef struct cups_size_s /**** Media Size @since CUPS 1.6@ ****/
|
||||
{
|
||||
char media[128]; /* Media name to use */
|
||||
int width, /* Width in hundredths of millimeters */
|
||||
length, /* Length in hundredths of
|
||||
* millimeters */
|
||||
bottom, /* Bottom margin in hundredths of
|
||||
* millimeters */
|
||||
left, /* Left margin in hundredths of
|
||||
* millimeters */
|
||||
right, /* Right margin in hundredths of
|
||||
* millimeters */
|
||||
top; /* Top margin in hundredths of
|
||||
* millimeters */
|
||||
} cups_size_t;
|
||||
|
||||
typedef int (*cups_client_cert_cb_t)(http_t *http, void *tls,
|
||||
cups_array_t *distinguished_names,
|
||||
void *user_data);
|
||||
/* Client credentials callback
|
||||
* @since CUPS 1.5/Mac OS X 10.7@ */
|
||||
|
||||
typedef int (*cups_dest_cb_t)(void *user_data, unsigned flags,
|
||||
cups_dest_t *dest);
|
||||
/* Destination enumeration callback
|
||||
* @since CUPS 1.6@ */
|
||||
|
||||
# ifdef __BLOCKS__
|
||||
typedef int (^cups_dest_block_t)(unsigned flags, cups_dest_t *dest);
|
||||
/* Destination enumeration block
|
||||
* @since CUPS 1.6@ */
|
||||
# endif /* __BLOCKS__ */
|
||||
|
||||
typedef void (*cups_device_cb_t)(const char *device_class,
|
||||
const char *device_id, const char *device_info,
|
||||
const char *device_make_and_model,
|
||||
const char *device_uri,
|
||||
const char *device_location, void *user_data);
|
||||
/* Device callback
|
||||
* @since CUPS 1.4/Mac OS X 10.6@ */
|
||||
|
||||
typedef const char *(*cups_password_cb_t)(const char *prompt);
|
||||
/* Password callback */
|
||||
|
||||
typedef const char *(*cups_password_cb2_t)(const char *prompt, http_t *http,
|
||||
const char *method,
|
||||
const char *resource,
|
||||
void *user_data);
|
||||
/* New password callback
|
||||
* @since CUPS 1.4/Mac OS X 10.6@ */
|
||||
/**** Client credentials callback @since CUPS 1.5/Mac OS X 10.7@ ****/
|
||||
|
||||
typedef int (*cups_server_cert_cb_t)(http_t *http, void *tls,
|
||||
cups_array_t *certs, void *user_data);
|
||||
/* Server credentials callback
|
||||
* @since CUPS 1.5/Mac OS X 10.7@ */
|
||||
/**** Server credentials callback @since CUPS 1.5/Mac OS X 10.7@ ****/
|
||||
|
||||
|
||||
/*
|
||||
@@ -381,8 +219,7 @@ extern int cupsAddOption(const char *name, const char *value,
|
||||
int num_options, cups_option_t **options);
|
||||
extern void cupsEncodeOptions(ipp_t *ipp, int num_options,
|
||||
cups_option_t *options);
|
||||
extern void cupsFreeOptions(int num_options,
|
||||
cups_option_t *options);
|
||||
extern void cupsFreeOptions(int num_options, cups_option_t *options);
|
||||
extern const char *cupsGetOption(const char *name, int num_options,
|
||||
cups_option_t *options);
|
||||
extern int cupsParseOptions(const char *arg, int num_options,
|
||||
@@ -398,25 +235,21 @@ extern const char *cupsUser(void);
|
||||
|
||||
/**** New in CUPS 1.1.20 ****/
|
||||
extern int cupsDoAuthentication(http_t *http, const char *method,
|
||||
const char *resource)
|
||||
_CUPS_API_1_1_20;
|
||||
const char *resource) _CUPS_API_1_1_20;
|
||||
extern http_status_t cupsGetFile(http_t *http, const char *resource,
|
||||
const char *filename) _CUPS_API_1_1_20;
|
||||
extern http_status_t cupsGetFd(http_t *http, const char *resource, int fd);
|
||||
extern http_status_t cupsPutFile(http_t *http, const char *resource,
|
||||
const char *filename) _CUPS_API_1_1_20;
|
||||
extern http_status_t cupsPutFd(http_t *http, const char *resource, int fd)
|
||||
_CUPS_API_1_1_20;
|
||||
extern http_status_t cupsPutFd(http_t *http, const char *resource, int fd) _CUPS_API_1_1_20;
|
||||
|
||||
/**** New in CUPS 1.1.21 ****/
|
||||
extern const char *cupsGetDefault2(http_t *http) _CUPS_API_1_1_21;
|
||||
extern int cupsGetDests2(http_t *http, cups_dest_t **dests)
|
||||
_CUPS_API_1_1_21;
|
||||
extern int cupsGetDests2(http_t *http, cups_dest_t **dests) _CUPS_API_1_1_21;
|
||||
extern int cupsGetJobs2(http_t *http, cups_job_t **jobs,
|
||||
const char *name, int myjobs,
|
||||
int whichjobs) _CUPS_API_1_1_21;
|
||||
extern const char *cupsGetPPD2(http_t *http, const char *name)
|
||||
_CUPS_API_1_1_21;
|
||||
extern const char *cupsGetPPD2(http_t *http, const char *name) _CUPS_API_1_1_21;
|
||||
extern int cupsPrintFile2(http_t *http, const char *name,
|
||||
const char *filename,
|
||||
const char *title, int num_options,
|
||||
@@ -424,8 +257,7 @@ extern int cupsPrintFile2(http_t *http, const char *name,
|
||||
extern int cupsPrintFiles2(http_t *http, const char *name,
|
||||
int num_files, const char **files,
|
||||
const char *title, int num_options,
|
||||
cups_option_t *options)
|
||||
_CUPS_API_1_1_21;
|
||||
cups_option_t *options) _CUPS_API_1_1_21;
|
||||
extern int cupsSetDests2(http_t *http, int num_dests,
|
||||
cups_dest_t *dests) _CUPS_API_1_1_21;
|
||||
|
||||
@@ -438,10 +270,8 @@ extern void cupsEncodeOptions2(ipp_t *ipp, int num_options,
|
||||
cups_option_t *options,
|
||||
ipp_tag_t group_tag) _CUPS_API_1_2;
|
||||
extern const char *cupsLastErrorString(void) _CUPS_API_1_2;
|
||||
extern char *cupsNotifySubject(cups_lang_t *lang, ipp_t *event)
|
||||
_CUPS_API_1_2;
|
||||
extern char *cupsNotifyText(cups_lang_t *lang, ipp_t *event)
|
||||
_CUPS_API_1_2;
|
||||
extern char *cupsNotifySubject(cups_lang_t *lang, ipp_t *event) _CUPS_API_1_2;
|
||||
extern char *cupsNotifyText(cups_lang_t *lang, ipp_t *event) _CUPS_API_1_2;
|
||||
extern int cupsRemoveOption(const char *name, int num_options,
|
||||
cups_option_t **options) _CUPS_API_1_2;
|
||||
extern cups_file_t *cupsTempFile2(char *filename, int len) _CUPS_API_1_2;
|
||||
@@ -450,12 +280,10 @@ extern cups_file_t *cupsTempFile2(char *filename, int len) _CUPS_API_1_2;
|
||||
extern ipp_t *cupsDoIORequest(http_t *http, ipp_t *request,
|
||||
const char *resource, int infile,
|
||||
int outfile) _CUPS_API_1_3;
|
||||
extern char *cupsGetServerPPD(http_t *http, const char *name)
|
||||
_CUPS_API_1_3;
|
||||
extern char *cupsGetServerPPD(http_t *http, const char *name) _CUPS_API_1_3;
|
||||
extern int cupsRemoveDest(const char *name,
|
||||
const char *instance,
|
||||
int num_dests, cups_dest_t **dests)
|
||||
_CUPS_API_1_3;
|
||||
int num_dests, cups_dest_t **dests) _CUPS_API_1_3;
|
||||
extern void cupsSetDefaultDest(const char *name,
|
||||
const char *instance,
|
||||
int num_dests,
|
||||
@@ -505,87 +333,6 @@ extern int cupsSetCredentials(cups_array_t *certs) _CUPS_API_1_5;
|
||||
extern void cupsSetServerCertCB(cups_server_cert_cb_t cb,
|
||||
void *user_data) _CUPS_API_1_5;
|
||||
|
||||
/**** New in CUPS 1.6 ****/
|
||||
extern ipp_status_t cupsCancelDestJob(http_t *http, cups_dest_t *dest,
|
||||
int job_id) _CUPS_API_1_6;
|
||||
extern int cupsCheckDestSupported(http_t *http, cups_dest_t *dest,
|
||||
cups_dinfo_t *info,
|
||||
const char *option,
|
||||
const char *value) _CUPS_API_1_6;
|
||||
extern ipp_status_t cupsCloseDestJob(http_t *http, cups_dest_t *dest,
|
||||
int job_id) _CUPS_API_1_6;
|
||||
extern http_t *cupsConnectDest(cups_dest_t *dest, unsigned flags,
|
||||
int msec, int *cancel,
|
||||
char *resource, size_t resourcesize,
|
||||
cups_dest_cb_t cb, void *user_data)
|
||||
_CUPS_API_1_6;
|
||||
# ifdef __BLOCKS__
|
||||
extern http_t *cupsConnectDestBlock(cups_dest_t *dest,
|
||||
unsigned flags, int msec,
|
||||
int *cancel, char *resource,
|
||||
size_t resourcesize,
|
||||
cups_dest_block_t block)
|
||||
_CUPS_API_1_6;
|
||||
# endif /* __BLOCKS__ */
|
||||
extern int cupsCopyDest(cups_dest_t *dest, int num_dests,
|
||||
cups_dest_t **dests) _CUPS_API_1_6;
|
||||
extern cups_dinfo_t *cupsCopyDestInfo(http_t *http, cups_dest_t *dest)
|
||||
_CUPS_API_1_6;
|
||||
extern int cupsCopyDestConflicts(http_t *http, cups_dest_t *dest,
|
||||
cups_dinfo_t *info,
|
||||
int num_options,
|
||||
cups_option_t *options,
|
||||
const char *new_option,
|
||||
const char *new_value,
|
||||
int *num_conflicts,
|
||||
cups_option_t **conflicts,
|
||||
int *num_resolved,
|
||||
cups_option_t **resolved)
|
||||
_CUPS_API_1_6;
|
||||
extern ipp_status_t cupsCreateDestJob(http_t *http, cups_dest_t *dest,
|
||||
cups_dinfo_t *info, int *job_id,
|
||||
const char *title, int num_options,
|
||||
cups_option_t *options) _CUPS_API_1_6;
|
||||
extern int cupsEnumDests(unsigned flags, int msec, int *cancel,
|
||||
cups_ptype_t type, cups_ptype_t mask,
|
||||
cups_dest_cb_t cb, void *user_data)
|
||||
_CUPS_API_1_6;
|
||||
# ifdef __BLOCKS__
|
||||
extern int cupsEnumDestsBlock(unsigned flags, int msec,
|
||||
int *cancel, cups_ptype_t type,
|
||||
cups_ptype_t mask,
|
||||
cups_dest_block_t block)
|
||||
_CUPS_API_1_6;
|
||||
# endif /* __BLOCKS__ */
|
||||
extern ipp_status_t cupsFinishDestDocument(http_t *http,
|
||||
cups_dest_t *dest) _CUPS_API_1_6;
|
||||
extern void cupsFreeDestInfo(cups_dinfo_t *dinfo) _CUPS_API_1_6;
|
||||
extern int cupsGetDestMediaByName(http_t *http, cups_dest_t *dest,
|
||||
cups_dinfo_t *dinfo,
|
||||
const char *media,
|
||||
unsigned flags,
|
||||
cups_size_t *size) _CUPS_API_1_6;
|
||||
extern int cupsGetDestMediaBySize(http_t *http, cups_dest_t *dest,
|
||||
cups_dinfo_t *dinfo,
|
||||
int width, int length,
|
||||
unsigned flags,
|
||||
cups_size_t *size) _CUPS_API_1_6;
|
||||
extern const char *cupsLocalizeDestOption(http_t *http, cups_dest_t *dest,
|
||||
cups_dinfo_t *info,
|
||||
const char *option)
|
||||
_CUPS_API_1_6;
|
||||
extern const char *cupsLocalizeDestValue(http_t *http, cups_dest_t *dest,
|
||||
cups_dinfo_t *info,
|
||||
const char *option,
|
||||
const char *value)
|
||||
_CUPS_API_1_6;
|
||||
extern http_status_t cupsStartDestDocument(http_t *http, cups_dest_t *dest,
|
||||
cups_dinfo_t *info, int job_id,
|
||||
const char *docname,
|
||||
const char *format,
|
||||
int num_options,
|
||||
cups_option_t *options,
|
||||
int last_document) _CUPS_API_1_6;
|
||||
|
||||
# ifdef __cplusplus
|
||||
}
|
||||
|
||||
+5
-14
@@ -3,7 +3,7 @@
|
||||
*
|
||||
* Private debugging macros for CUPS.
|
||||
*
|
||||
* Copyright 2007-2012 by Apple Inc.
|
||||
* Copyright 2007-2010 by Apple Inc.
|
||||
* Copyright 1997-2005 by Easy Software Products.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
@@ -18,14 +18,6 @@
|
||||
#ifndef _CUPS_DEBUG_PRIVATE_H_
|
||||
# define _CUPS_DEBUG_PRIVATE_H_
|
||||
|
||||
|
||||
/*
|
||||
* Include necessary headers...
|
||||
*/
|
||||
|
||||
# include <cups/versioning.h>
|
||||
|
||||
|
||||
/*
|
||||
* C++ magic...
|
||||
*/
|
||||
@@ -96,15 +88,14 @@ extern "C" {
|
||||
extern int _cups_debug_fd;
|
||||
extern int _cups_debug_level;
|
||||
extern void DLLExport _cups_debug_printf(const char *format, ...)
|
||||
__attribute__ ((__format__ (__printf__, 1, 2)));
|
||||
#ifdef __GNUC__
|
||||
__attribute__ ((__format__ (__printf__, 1, 2)))
|
||||
#endif /* __GNUC__ */
|
||||
;
|
||||
extern void DLLExport _cups_debug_puts(const char *s);
|
||||
extern void DLLExport _cups_debug_set(const char *logfile,
|
||||
const char *level, const char *filter,
|
||||
int force);
|
||||
# ifdef WIN32
|
||||
extern int _cups_gettimeofday(struct timeval *tv, void *tz);
|
||||
# define gettimeofday(a,b) _cups_gettimeofday(a, b)
|
||||
# endif /* WIN32 */
|
||||
|
||||
# ifdef __cplusplus
|
||||
}
|
||||
|
||||
+19
-104
@@ -3,7 +3,7 @@
|
||||
*
|
||||
* Debugging functions for CUPS.
|
||||
*
|
||||
* Copyright 2008-2012 by Apple Inc.
|
||||
* Copyright 2008-2010 by Apple Inc.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
* property of Apple Inc. and are protected by Federal copyright
|
||||
@@ -32,22 +32,22 @@
|
||||
# include <time.h>
|
||||
# include <io.h>
|
||||
# define getpid (int)GetCurrentProcessId
|
||||
int /* O - 0 on success, -1 on failure */
|
||||
_cups_gettimeofday(struct timeval *tv, /* I - Timeval struct */
|
||||
void *tz) /* I - Timezone */
|
||||
{
|
||||
static int /* O - 0 on success, -1 on failure */
|
||||
gettimeofday(struct timeval *tv, /* I - Timeval struct */
|
||||
void *tz) /* I - Timezone */
|
||||
{
|
||||
struct _timeb timebuffer; /* Time buffer struct */
|
||||
_ftime(&timebuffer);
|
||||
tv->tv_sec = (long)timebuffer.time;
|
||||
tv->tv_usec = timebuffer.millitm * 1000;
|
||||
tv->tv_usec = timebuffer.millitm * 1000;
|
||||
return 0;
|
||||
}
|
||||
#else
|
||||
# include <sys/time.h>
|
||||
# include <unistd.h>
|
||||
# include <regex.h>
|
||||
#endif /* WIN32 */
|
||||
#include <fcntl.h>
|
||||
#include <regex.h>
|
||||
|
||||
|
||||
/*
|
||||
@@ -65,10 +65,8 @@ int _cups_debug_level = 1;
|
||||
* Local globals...
|
||||
*/
|
||||
|
||||
# ifndef WIN32
|
||||
static regex_t *debug_filter = NULL;
|
||||
/* Filter expression for messages */
|
||||
# endif /* !WIN32 */
|
||||
static int debug_init = 0; /* Did we initialize debugging? */
|
||||
static _cups_mutex_t debug_mutex = _CUPS_MUTEX_INITIALIZER;
|
||||
/* Mutex to control initialization */
|
||||
@@ -338,54 +336,41 @@ debug_vsnprintf(char *buffer, /* O - Output buffer */
|
||||
{
|
||||
*bufptr++ = '\\';
|
||||
*bufptr++ = 'n';
|
||||
bytes += 2;
|
||||
}
|
||||
else if (*s == '\r')
|
||||
{
|
||||
*bufptr++ = '\\';
|
||||
*bufptr++ = 'r';
|
||||
bytes += 2;
|
||||
}
|
||||
else if (*s == '\t')
|
||||
{
|
||||
*bufptr++ = '\\';
|
||||
*bufptr++ = 't';
|
||||
bytes += 2;
|
||||
}
|
||||
else if (*s == '\\')
|
||||
{
|
||||
*bufptr++ = '\\';
|
||||
*bufptr++ = '\\';
|
||||
bytes += 2;
|
||||
}
|
||||
else if (*s == '\'')
|
||||
{
|
||||
*bufptr++ = '\\';
|
||||
*bufptr++ = '\'';
|
||||
bytes += 2;
|
||||
}
|
||||
else if (*s == '\"')
|
||||
{
|
||||
*bufptr++ = '\\';
|
||||
*bufptr++ = '\"';
|
||||
bytes += 2;
|
||||
}
|
||||
else if ((*s & 255) < ' ')
|
||||
{
|
||||
if ((bufptr + 2) >= bufend)
|
||||
break;
|
||||
|
||||
*bufptr++ = '\\';
|
||||
*bufptr++ = '0';
|
||||
*bufptr++ = '0' + *s / 8;
|
||||
*bufptr++ = '0' + (*s & 7);
|
||||
bytes += 4;
|
||||
}
|
||||
else
|
||||
{
|
||||
*bufptr++ = *s;
|
||||
bytes ++;
|
||||
}
|
||||
}
|
||||
|
||||
bufend ++;
|
||||
@@ -455,7 +440,6 @@ _cups_debug_printf(const char *format, /* I - Printf-style format string */
|
||||
if (level > _cups_debug_level)
|
||||
return;
|
||||
|
||||
# ifndef WIN32
|
||||
if (debug_filter)
|
||||
{
|
||||
int result; /* Filter result */
|
||||
@@ -467,7 +451,6 @@ _cups_debug_printf(const char *format, /* I - Printf-style format string */
|
||||
if (result)
|
||||
return;
|
||||
}
|
||||
# endif /* !WIN32 */
|
||||
|
||||
/*
|
||||
* Format the message...
|
||||
@@ -480,18 +463,15 @@ _cups_debug_printf(const char *format, /* I - Printf-style format string */
|
||||
(int)(curtime.tv_sec % 60), (int)(curtime.tv_usec / 1000));
|
||||
|
||||
va_start(ap, format);
|
||||
bytes = debug_vsnprintf(buffer + 13, sizeof(buffer) - 14, format, ap) + 13;
|
||||
debug_vsnprintf(buffer + 13, sizeof(buffer) - 14, format, ap);
|
||||
va_end(ap);
|
||||
|
||||
if (bytes >= (sizeof(buffer) - 1))
|
||||
bytes = strlen(buffer);
|
||||
if (buffer[bytes - 1] != '\n')
|
||||
{
|
||||
buffer[sizeof(buffer) - 2] = '\n';
|
||||
bytes = sizeof(buffer) - 1;
|
||||
}
|
||||
else if (buffer[bytes - 1] != '\n')
|
||||
{
|
||||
buffer[bytes++] = '\n';
|
||||
buffer[bytes] = '\0';
|
||||
buffer[bytes] = '\n';
|
||||
bytes ++;
|
||||
buffer[bytes] = '\0';
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -509,76 +489,15 @@ _cups_debug_printf(const char *format, /* I - Printf-style format string */
|
||||
void DLLExport
|
||||
_cups_debug_puts(const char *s) /* I - String to output */
|
||||
{
|
||||
struct timeval curtime; /* Current time */
|
||||
char buffer[2048]; /* Output buffer */
|
||||
size_t bytes; /* Number of bytes in buffer */
|
||||
int level; /* Log level in message */
|
||||
char format[4]; /* C%s */
|
||||
|
||||
|
||||
/*
|
||||
* See if we need to do any logging...
|
||||
*/
|
||||
format[0] = *s++;
|
||||
format[1] = '%';
|
||||
format[2] = 's';
|
||||
format[3] = '\0';
|
||||
|
||||
if (!debug_init)
|
||||
_cups_debug_set(getenv("CUPS_DEBUG_LOG"), getenv("CUPS_DEBUG_LEVEL"),
|
||||
getenv("CUPS_DEBUG_FILTER"), 0);
|
||||
|
||||
if (_cups_debug_fd < 0)
|
||||
return;
|
||||
|
||||
/*
|
||||
* Filter as needed...
|
||||
*/
|
||||
|
||||
if (isdigit(s[0]))
|
||||
level = *s++ - '0';
|
||||
else
|
||||
level = 0;
|
||||
|
||||
if (level > _cups_debug_level)
|
||||
return;
|
||||
|
||||
# ifndef WIN32
|
||||
if (debug_filter)
|
||||
{
|
||||
int result; /* Filter result */
|
||||
|
||||
_cupsMutexLock(&debug_mutex);
|
||||
result = regexec(debug_filter, s, 0, NULL, 0);
|
||||
_cupsMutexUnlock(&debug_mutex);
|
||||
|
||||
if (result)
|
||||
return;
|
||||
}
|
||||
# endif /* !WIN32 */
|
||||
|
||||
/*
|
||||
* Format the message...
|
||||
*/
|
||||
|
||||
gettimeofday(&curtime, NULL);
|
||||
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);
|
||||
|
||||
if (bytes >= (sizeof(buffer) - 1))
|
||||
{
|
||||
buffer[sizeof(buffer) - 2] = '\n';
|
||||
bytes = sizeof(buffer) - 1;
|
||||
}
|
||||
else if (buffer[bytes - 1] != '\n')
|
||||
{
|
||||
buffer[bytes++] = '\n';
|
||||
buffer[bytes] = '\0';
|
||||
}
|
||||
|
||||
/*
|
||||
* Write it out...
|
||||
*/
|
||||
|
||||
write(_cups_debug_fd, buffer, bytes);
|
||||
_cups_debug_printf(format, s);
|
||||
}
|
||||
|
||||
|
||||
@@ -606,13 +525,11 @@ _cups_debug_set(const char *logfile, /* I - Log file or NULL */
|
||||
_cups_debug_fd = -1;
|
||||
}
|
||||
|
||||
# ifndef WIN32
|
||||
if (debug_filter)
|
||||
{
|
||||
regfree((regex_t *)debug_filter);
|
||||
debug_filter = NULL;
|
||||
}
|
||||
# endif /* !WIN32 */
|
||||
|
||||
_cups_debug_level = 1;
|
||||
|
||||
@@ -639,7 +556,6 @@ _cups_debug_set(const char *logfile, /* I - Log file or NULL */
|
||||
if (level)
|
||||
_cups_debug_level = atoi(level);
|
||||
|
||||
# ifndef WIN32
|
||||
if (filter)
|
||||
{
|
||||
if ((debug_filter = (regex_t *)calloc(1, sizeof(regex_t))) == NULL)
|
||||
@@ -653,7 +569,6 @@ _cups_debug_set(const char *logfile, /* I - Log file or NULL */
|
||||
debug_filter = NULL;
|
||||
}
|
||||
}
|
||||
# endif /* !WIN32 */
|
||||
|
||||
debug_init = 1;
|
||||
}
|
||||
|
||||
@@ -1,145 +0,0 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
*
|
||||
* Destination job support for CUPS.
|
||||
*
|
||||
* Copyright 2012 by Apple Inc.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
* property of Apple Inc. and are protected by Federal copyright
|
||||
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
* which should have been included with this file. If this file is
|
||||
* file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
*
|
||||
* This file is subject to the Apple OS-Developed Software exception.
|
||||
*
|
||||
* Contents:
|
||||
*
|
||||
* 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.
|
||||
* cupsStartDestDocument() - Start a new document.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include necessary headers...
|
||||
*/
|
||||
|
||||
#include "cups-private.h"
|
||||
|
||||
|
||||
/*
|
||||
* 'cupsCancelDestJob()' - Cancel a job on a destination.
|
||||
*
|
||||
* The "job_id" is the number returned by cupsCreateDestJob.
|
||||
*
|
||||
* Returns IPP_OK on success and IPP_NOT_AUTHORIZED or IPP_FORBIDDEN on
|
||||
* failure.
|
||||
*
|
||||
* @since CUPS 1.6@
|
||||
*/
|
||||
|
||||
ipp_status_t
|
||||
cupsCancelDestJob(http_t *http, /* I - Connection to destination */
|
||||
cups_dest_t *dest, /* I - Destination */
|
||||
int job_id) /* I - Job ID */
|
||||
{
|
||||
return (IPP_NOT_FOUND);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* '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 IPP_OK on
|
||||
* success.
|
||||
*
|
||||
* @since CUPS 1.6@
|
||||
*/
|
||||
|
||||
ipp_status_t
|
||||
cupsCloseDestJob(
|
||||
http_t *http, /* I - Connection to destination */
|
||||
cups_dest_t *dest, /* I - Destination */
|
||||
int job_id) /* I - Job ID */
|
||||
{
|
||||
return (IPP_NOT_FOUND);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'cupsCreateDestJob()' - Create a job on a destination.
|
||||
*
|
||||
* Returns IPP_OK or IPP_OK_SUBST on success, saving the job ID in the variable
|
||||
* pointed to by "job_id".
|
||||
*
|
||||
* @since CUPS 1.6@
|
||||
*/
|
||||
|
||||
ipp_status_t /* O - IPP status code */
|
||||
cupsCreateDestJob(
|
||||
http_t *http, /* I - Connection to destination */
|
||||
cups_dest_t *dest, /* I - Destination */
|
||||
cups_dinfo_t *info, /* I - Destination information */
|
||||
int *job_id, /* O - Job ID or 0 on error */
|
||||
const char *title, /* I - Job name */
|
||||
int num_options, /* I - Number of job options */
|
||||
cups_option_t *options) /* I - Job options */
|
||||
{
|
||||
*job_id = 0;
|
||||
|
||||
return (IPP_NOT_POSSIBLE);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'cupsFinishDestDocument()' - Finish the current document.
|
||||
*
|
||||
* Returns IPP_OK on success.
|
||||
*
|
||||
* @since CUPS 1.6@
|
||||
*/
|
||||
|
||||
ipp_status_t
|
||||
cupsFinishDestDocument(
|
||||
http_t *http, /* I - Connection to destination */
|
||||
cups_dest_t *dest) /* I - Destination */
|
||||
{
|
||||
return (IPP_NOT_FOUND);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'cupsStartDestDocument()' - Start a new document.
|
||||
*
|
||||
* "job_id" is the job ID returned by cupsCreateDestJob. "docname" is the name
|
||||
* of the document/file being printed, "format" is the MIME media type for the
|
||||
* document (see CUPS_FORMAT_xxx constants), and "num_options" and "options"
|
||||
* are the options do be applied to the document. "last_document" should be 1
|
||||
* if this is the last document to be submitted in the job. Returns
|
||||
* HTTP_CONTINUE on success.
|
||||
*
|
||||
* @since CUPS 1.6@
|
||||
*/
|
||||
|
||||
http_status_t
|
||||
cupsStartDestDocument(
|
||||
http_t *http, /* I - Connection to destination */
|
||||
cups_dest_t *dest, /* I - Destination */
|
||||
cups_dinfo_t *info, /* I - Destination information */
|
||||
int job_id, /* I - Job ID */
|
||||
const char *docname, /* I - Document name */
|
||||
const char *format, /* I - Document format */
|
||||
int num_options, /* I - Number of document options */
|
||||
cups_option_t *options, /* I - Document options */
|
||||
int last_document) /* I - 1 if this is the last document */
|
||||
{
|
||||
return (HTTP_CONTINUE);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
*/
|
||||
@@ -1,76 +0,0 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
*
|
||||
* Destination localization support for CUPS.
|
||||
*
|
||||
* Copyright 2012 by Apple Inc.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
* property of Apple Inc. and are protected by Federal copyright
|
||||
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
* which should have been included with this file. If this file is
|
||||
* file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
*
|
||||
* This file is subject to the Apple OS-Developed Software exception.
|
||||
*
|
||||
* Contents:
|
||||
*
|
||||
* cupsLocalizeDestOption() - Get the localized string for a destination
|
||||
* option.
|
||||
* cupsLocalizeDestValue() - Get the localized string for a destination
|
||||
* option+value pair.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include necessary headers...
|
||||
*/
|
||||
|
||||
#include "cups-private.h"
|
||||
|
||||
|
||||
/*
|
||||
* 'cupsLocalizeDestOption()' - Get the localized string for a destination
|
||||
* option.
|
||||
*
|
||||
* The returned string is stored in the localization array and will become
|
||||
* invalid if the localization array is deleted.
|
||||
*
|
||||
* @since CUPS 1.6@
|
||||
*/
|
||||
|
||||
const char * /* O - Localized string */
|
||||
cupsLocalizeDestOption(
|
||||
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 to localize */
|
||||
{
|
||||
return (option);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'cupsLocalizeDestValue()' - Get the localized string for a destination
|
||||
* option+value pair.
|
||||
*
|
||||
* The returned string is stored in the localization array and will become
|
||||
* invalid if the localization array is deleted.
|
||||
*
|
||||
* @since CUPS 1.6@
|
||||
*/
|
||||
|
||||
const char * /* O - Localized string */
|
||||
cupsLocalizeDestValue(
|
||||
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 to localize */
|
||||
const char *value) /* I - Value to localize */
|
||||
{
|
||||
return (value);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
*/
|
||||
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
+63
-1370
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
+1
-1
@@ -286,7 +286,7 @@ ppdEmitAfterOrder(
|
||||
* Get the string...
|
||||
*/
|
||||
|
||||
buffer = ppdEmitString(ppd, section, limit ? min_order : 0.0f);
|
||||
buffer = ppdEmitString(ppd, section, limit ? min_order : 0.0);
|
||||
|
||||
/*
|
||||
* Write it as needed and return...
|
||||
|
||||
+34
-49
@@ -47,22 +47,15 @@ static const _ipp_option_t ipp_options[] =
|
||||
{ 0, "columns", IPP_TAG_INTEGER, IPP_TAG_JOB },
|
||||
{ 0, "columns-default", IPP_TAG_INTEGER, IPP_TAG_PRINTER },
|
||||
{ 0, "compression", IPP_TAG_KEYWORD, IPP_TAG_OPERATION },
|
||||
{ 0, "copies", IPP_TAG_INTEGER, IPP_TAG_JOB,
|
||||
IPP_TAG_DOCUMENT },
|
||||
{ 0, "copies", IPP_TAG_INTEGER, IPP_TAG_JOB },
|
||||
{ 0, "copies-default", IPP_TAG_INTEGER, IPP_TAG_PRINTER },
|
||||
{ 0, "device-uri", IPP_TAG_URI, IPP_TAG_PRINTER },
|
||||
{ 1, "document-copies", IPP_TAG_RANGE, IPP_TAG_JOB,
|
||||
IPP_TAG_DOCUMENT },
|
||||
{ 0, "document-format", IPP_TAG_MIMETYPE, IPP_TAG_OPERATION },
|
||||
{ 0, "document-format-default", IPP_TAG_MIMETYPE, IPP_TAG_PRINTER },
|
||||
{ 1, "document-numbers", IPP_TAG_RANGE, IPP_TAG_JOB,
|
||||
IPP_TAG_DOCUMENT },
|
||||
{ 1, "exclude-schemes", IPP_TAG_NAME, IPP_TAG_OPERATION },
|
||||
{ 1, "finishings", IPP_TAG_ENUM, IPP_TAG_JOB,
|
||||
IPP_TAG_DOCUMENT },
|
||||
{ 1, "finishings", IPP_TAG_ENUM, IPP_TAG_JOB },
|
||||
{ 1, "finishings-default", IPP_TAG_ENUM, IPP_TAG_PRINTER },
|
||||
{ 0, "fit-to-page", IPP_TAG_BOOLEAN, IPP_TAG_JOB,
|
||||
IPP_TAG_DOCUMENT },
|
||||
{ 0, "fit-to-page", IPP_TAG_BOOLEAN, IPP_TAG_JOB },
|
||||
{ 0, "fit-to-page-default", IPP_TAG_BOOLEAN, IPP_TAG_PRINTER },
|
||||
{ 0, "fitplot", IPP_TAG_BOOLEAN, IPP_TAG_JOB },
|
||||
{ 0, "fitplot-default", IPP_TAG_BOOLEAN, IPP_TAG_PRINTER },
|
||||
@@ -88,20 +81,14 @@ static const _ipp_option_t ipp_options[] =
|
||||
{ 0, "marker-message", IPP_TAG_TEXT, IPP_TAG_PRINTER },
|
||||
{ 1, "marker-names", IPP_TAG_NAME, IPP_TAG_PRINTER },
|
||||
{ 1, "marker-types", IPP_TAG_KEYWORD, IPP_TAG_PRINTER },
|
||||
{ 1, "media", IPP_TAG_KEYWORD, IPP_TAG_JOB,
|
||||
IPP_TAG_DOCUMENT },
|
||||
{ 0, "media-col", IPP_TAG_BEGIN_COLLECTION, IPP_TAG_JOB,
|
||||
IPP_TAG_DOCUMENT },
|
||||
{ 1, "media", IPP_TAG_KEYWORD, IPP_TAG_JOB },
|
||||
{ 0, "media-col", IPP_TAG_BEGIN_COLLECTION, IPP_TAG_JOB },
|
||||
{ 0, "media-col-default", IPP_TAG_BEGIN_COLLECTION, IPP_TAG_PRINTER },
|
||||
{ 0, "media-color", IPP_TAG_KEYWORD, IPP_TAG_JOB,
|
||||
IPP_TAG_DOCUMENT },
|
||||
{ 0, "media-color", IPP_TAG_KEYWORD, IPP_TAG_JOB },
|
||||
{ 1, "media-default", IPP_TAG_KEYWORD, IPP_TAG_PRINTER },
|
||||
{ 0, "media-key", IPP_TAG_KEYWORD, IPP_TAG_JOB,
|
||||
IPP_TAG_DOCUMENT },
|
||||
{ 0, "media-size", IPP_TAG_BEGIN_COLLECTION, IPP_TAG_JOB,
|
||||
IPP_TAG_DOCUMENT },
|
||||
{ 0, "media-type", IPP_TAG_KEYWORD, IPP_TAG_JOB,
|
||||
IPP_TAG_DOCUMENT },
|
||||
{ 0, "media-key", IPP_TAG_KEYWORD, IPP_TAG_JOB },
|
||||
{ 0, "media-size", IPP_TAG_BEGIN_COLLECTION, IPP_TAG_JOB },
|
||||
{ 0, "media-type", IPP_TAG_KEYWORD, IPP_TAG_JOB },
|
||||
{ 0, "mirror", IPP_TAG_BOOLEAN, IPP_TAG_JOB },
|
||||
{ 0, "mirror-default", IPP_TAG_BOOLEAN, IPP_TAG_PRINTER },
|
||||
{ 0, "natural-scaling", IPP_TAG_INTEGER, IPP_TAG_JOB },
|
||||
@@ -116,27 +103,20 @@ static const _ipp_option_t ipp_options[] =
|
||||
{ 0, "notify-recipient-uri", IPP_TAG_URI, IPP_TAG_SUBSCRIPTION },
|
||||
{ 0, "notify-time-interval", IPP_TAG_INTEGER, IPP_TAG_SUBSCRIPTION },
|
||||
{ 0, "notify-user-data", IPP_TAG_STRING, IPP_TAG_SUBSCRIPTION },
|
||||
{ 0, "number-up", IPP_TAG_INTEGER, IPP_TAG_JOB,
|
||||
IPP_TAG_DOCUMENT },
|
||||
{ 0, "number-up", IPP_TAG_INTEGER, IPP_TAG_JOB },
|
||||
{ 0, "number-up-default", IPP_TAG_INTEGER, IPP_TAG_PRINTER },
|
||||
{ 0, "orientation-requested", IPP_TAG_ENUM, IPP_TAG_JOB,
|
||||
IPP_TAG_DOCUMENT },
|
||||
{ 0, "orientation-requested", IPP_TAG_ENUM, IPP_TAG_JOB },
|
||||
{ 0, "orientation-requested-default", IPP_TAG_ENUM, IPP_TAG_PRINTER },
|
||||
{ 1, "overrides", IPP_TAG_BEGIN_COLLECTION, IPP_TAG_JOB,
|
||||
IPP_TAG_DOCUMENT },
|
||||
{ 0, "page-bottom", IPP_TAG_INTEGER, IPP_TAG_JOB },
|
||||
{ 0, "page-bottom-default", IPP_TAG_INTEGER, IPP_TAG_PRINTER },
|
||||
{ 0, "page-left", IPP_TAG_INTEGER, IPP_TAG_JOB },
|
||||
{ 0, "page-left-default", IPP_TAG_INTEGER, IPP_TAG_PRINTER },
|
||||
{ 1, "page-ranges", IPP_TAG_RANGE, IPP_TAG_JOB,
|
||||
IPP_TAG_DOCUMENT },
|
||||
{ 1, "page-ranges", IPP_TAG_RANGE, IPP_TAG_JOB },
|
||||
{ 1, "page-ranges-default", IPP_TAG_RANGE, IPP_TAG_PRINTER },
|
||||
{ 0, "page-right", IPP_TAG_INTEGER, IPP_TAG_JOB },
|
||||
{ 0, "page-right-default", IPP_TAG_INTEGER, IPP_TAG_PRINTER },
|
||||
{ 0, "page-top", IPP_TAG_INTEGER, IPP_TAG_JOB },
|
||||
{ 0, "page-top-default", IPP_TAG_INTEGER, IPP_TAG_PRINTER },
|
||||
{ 1, "pages", IPP_TAG_RANGE, IPP_TAG_JOB,
|
||||
IPP_TAG_DOCUMENT },
|
||||
{ 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 },
|
||||
@@ -145,8 +125,7 @@ static const _ipp_option_t ipp_options[] =
|
||||
{ 0, "ppi-default", IPP_TAG_INTEGER, IPP_TAG_PRINTER },
|
||||
{ 0, "prettyprint", IPP_TAG_BOOLEAN, IPP_TAG_JOB },
|
||||
{ 0, "prettyprint-default", IPP_TAG_BOOLEAN, IPP_TAG_PRINTER },
|
||||
{ 0, "print-quality", IPP_TAG_ENUM, IPP_TAG_JOB,
|
||||
IPP_TAG_DOCUMENT },
|
||||
{ 0, "print-quality", IPP_TAG_ENUM, IPP_TAG_JOB },
|
||||
{ 0, "print-quality-default", IPP_TAG_ENUM, IPP_TAG_PRINTER },
|
||||
{ 1, "printer-commands", IPP_TAG_KEYWORD, IPP_TAG_PRINTER },
|
||||
{ 0, "printer-error-policy", IPP_TAG_NAME, IPP_TAG_PRINTER },
|
||||
@@ -157,8 +136,7 @@ static const _ipp_option_t ipp_options[] =
|
||||
{ 0, "printer-make-and-model", IPP_TAG_TEXT, IPP_TAG_PRINTER },
|
||||
{ 0, "printer-more-info", IPP_TAG_URI, IPP_TAG_PRINTER },
|
||||
{ 0, "printer-op-policy", IPP_TAG_NAME, IPP_TAG_PRINTER },
|
||||
{ 0, "printer-resolution", IPP_TAG_RESOLUTION, IPP_TAG_JOB,
|
||||
IPP_TAG_DOCUMENT },
|
||||
{ 0, "printer-resolution", IPP_TAG_RESOLUTION, IPP_TAG_JOB },
|
||||
{ 0, "printer-state", IPP_TAG_ENUM, IPP_TAG_PRINTER },
|
||||
{ 0, "printer-state-change-time", IPP_TAG_INTEGER, IPP_TAG_PRINTER },
|
||||
{ 1, "printer-state-reasons", IPP_TAG_KEYWORD, IPP_TAG_PRINTER },
|
||||
@@ -176,15 +154,12 @@ static const _ipp_option_t ipp_options[] =
|
||||
{ 0, "saturation-default", IPP_TAG_INTEGER, IPP_TAG_PRINTER },
|
||||
{ 0, "scaling", IPP_TAG_INTEGER, IPP_TAG_JOB },
|
||||
{ 0, "scaling-default", IPP_TAG_INTEGER, IPP_TAG_PRINTER },
|
||||
{ 0, "sides", IPP_TAG_KEYWORD, IPP_TAG_JOB,
|
||||
IPP_TAG_DOCUMENT },
|
||||
{ 0, "sides", IPP_TAG_KEYWORD, IPP_TAG_JOB },
|
||||
{ 0, "sides-default", IPP_TAG_KEYWORD, IPP_TAG_PRINTER },
|
||||
{ 0, "wrap", IPP_TAG_BOOLEAN, IPP_TAG_JOB },
|
||||
{ 0, "wrap-default", IPP_TAG_BOOLEAN, IPP_TAG_PRINTER },
|
||||
{ 0, "x-dimension", IPP_TAG_INTEGER, IPP_TAG_JOB,
|
||||
IPP_TAG_DOCUMENT },
|
||||
{ 0, "y-dimension", IPP_TAG_INTEGER, IPP_TAG_JOB,
|
||||
IPP_TAG_DOCUMENT }
|
||||
{ 0, "x-dimension", IPP_TAG_INTEGER, IPP_TAG_JOB },
|
||||
{ 0, "y-dimension", IPP_TAG_INTEGER, IPP_TAG_JOB }
|
||||
};
|
||||
|
||||
|
||||
@@ -307,7 +282,7 @@ cupsEncodeOptions2(
|
||||
|
||||
if ((match = _ippFindOption(option->name)) != NULL)
|
||||
{
|
||||
if (match->group_tag != group_tag && match->alt_group_tag != group_tag)
|
||||
if (match->group_tag != group_tag)
|
||||
continue;
|
||||
|
||||
value_tag = match->value_tag;
|
||||
@@ -319,11 +294,9 @@ cupsEncodeOptions2(
|
||||
|
||||
namelen = (int)strlen(option->name);
|
||||
|
||||
if (namelen < 10 ||
|
||||
(strcmp(option->name + namelen - 8, "-default") &&
|
||||
strcmp(option->name + namelen - 10, "-supported")))
|
||||
if (namelen < 9 || strcmp(option->name + namelen - 8, "-default"))
|
||||
{
|
||||
if (group_tag != IPP_TAG_JOB && group_tag != IPP_TAG_DOCUMENT)
|
||||
if (group_tag != IPP_TAG_JOB)
|
||||
continue;
|
||||
}
|
||||
else if (group_tag != IPP_TAG_PRINTER)
|
||||
@@ -370,8 +343,7 @@ cupsEncodeOptions2(
|
||||
* Allocate memory for the attribute values...
|
||||
*/
|
||||
|
||||
if ((attr = ippAddStrings(ipp, group_tag, value_tag, option->name, count,
|
||||
NULL, NULL)) == NULL)
|
||||
if ((attr = _ippAddAttr(ipp, count)) == NULL)
|
||||
{
|
||||
/*
|
||||
* Ran out of memory!
|
||||
@@ -381,6 +353,19 @@ cupsEncodeOptions2(
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* Now figure out what type of value we have...
|
||||
*/
|
||||
|
||||
attr->group_tag = group_tag;
|
||||
attr->value_tag = value_tag;
|
||||
|
||||
/*
|
||||
* Copy the name over...
|
||||
*/
|
||||
|
||||
attr->name = _cupsStrAlloc(option->name);
|
||||
|
||||
if (count > 1)
|
||||
{
|
||||
/*
|
||||
|
||||
+15
-7
@@ -39,7 +39,6 @@
|
||||
* cupsFilePeekChar() - Peek at the next character from a file.
|
||||
* cupsFilePrintf() - Write a formatted string.
|
||||
* cupsFilePutChar() - Write a character.
|
||||
* cupsFilePutConf() - Write a configuration line.
|
||||
* cupsFilePuts() - Write a string.
|
||||
* cupsFileRead() - Read from a file.
|
||||
* cupsFileRewind() - Set the current file position to the beginning of
|
||||
@@ -53,7 +52,6 @@
|
||||
* cupsFileWrite() - Write to a file.
|
||||
* cups_compress() - Compress a buffer of data.
|
||||
* cups_fill() - Fill the input buffer.
|
||||
* cups_open() - Safely open a file for writing.
|
||||
* cups_read() - Read from a file descriptor.
|
||||
* cups_write() - Write to a file descriptor.
|
||||
*/
|
||||
@@ -80,7 +78,6 @@ static ssize_t cups_read(cups_file_t *fp, char *buf, size_t bytes);
|
||||
static ssize_t cups_write(cups_file_t *fp, const char *buf, size_t bytes);
|
||||
|
||||
|
||||
#ifndef WIN32
|
||||
/*
|
||||
* '_cupsFileCheck()' - Check the permissions of the given filename.
|
||||
*/
|
||||
@@ -168,13 +165,19 @@ _cupsFileCheck(
|
||||
* Verify permission of the file itself:
|
||||
*
|
||||
* 1. Must be owned by root
|
||||
* 2. Must not be writable by group
|
||||
* 2. Must not be writable by group unless group is root/wheel/admin
|
||||
* 3. Must not be setuid
|
||||
* 4. Must not be writable by others
|
||||
*/
|
||||
|
||||
if (fileinfo.st_uid || /* 1. Must be owned by root */
|
||||
(fileinfo.st_mode & S_IWGRP) || /* 2. Must not be writable by group */
|
||||
#ifdef __APPLE__
|
||||
((fileinfo.st_mode & S_IWGRP) && fileinfo.st_gid &&
|
||||
fileinfo.st_gid != 80) || /* 2. Must not be writable by group */
|
||||
#else
|
||||
((fileinfo.st_mode & S_IWGRP) && fileinfo.st_gid) ||
|
||||
/* 2. Must not be writable by group */
|
||||
#endif /* __APPLE__ */
|
||||
(fileinfo.st_mode & S_ISUID) || /* 3. Must not be setuid */
|
||||
(fileinfo.st_mode & S_IWOTH)) /* 4. Must not be writable by others */
|
||||
{
|
||||
@@ -213,7 +216,13 @@ _cupsFileCheck(
|
||||
}
|
||||
|
||||
if (fileinfo.st_uid || /* 1. Must be owned by root */
|
||||
(fileinfo.st_mode & S_IWGRP) || /* 2. Must not be writable by group */
|
||||
#ifdef __APPLE__
|
||||
((fileinfo.st_mode & S_IWGRP) && fileinfo.st_gid &&
|
||||
fileinfo.st_gid != 80) || /* 2. Must not be writable by group */
|
||||
#else
|
||||
((fileinfo.st_mode & S_IWGRP) && fileinfo.st_gid) ||
|
||||
/* 2. Must not be writable by group */
|
||||
#endif /* __APPLE__ */
|
||||
(fileinfo.st_mode & S_ISUID) || /* 3. Must not be setuid */
|
||||
(fileinfo.st_mode & S_IWOTH)) /* 4. Must not be writable by others */
|
||||
{
|
||||
@@ -346,7 +355,6 @@ _cupsFileCheckFilter(
|
||||
|
||||
fprintf(stderr, "%s: %s\n", prefix, message);
|
||||
}
|
||||
#endif /* !WIN32 */
|
||||
|
||||
|
||||
/*
|
||||
|
||||
+11
-15
@@ -72,29 +72,26 @@ extern const char *cupsFileFind(const char *filename, const char *path,
|
||||
int bufsize) _CUPS_API_1_2;
|
||||
extern int cupsFileFlush(cups_file_t *fp) _CUPS_API_1_2;
|
||||
extern int cupsFileGetChar(cups_file_t *fp) _CUPS_API_1_2;
|
||||
extern char *cupsFileGetConf(cups_file_t *fp, char *buf,
|
||||
size_t buflen, char **value,
|
||||
int *linenum) _CUPS_API_1_2;
|
||||
extern char *cupsFileGetConf(cups_file_t *fp, char *buf, size_t buflen,
|
||||
char **value, int *linenum) _CUPS_API_1_2;
|
||||
extern size_t cupsFileGetLine(cups_file_t *fp, char *buf,
|
||||
size_t buflen) _CUPS_API_1_2;
|
||||
extern char *cupsFileGets(cups_file_t *fp, char *buf, size_t buflen)
|
||||
_CUPS_API_1_2;
|
||||
extern char *cupsFileGets(cups_file_t *fp, char *buf, size_t buflen) _CUPS_API_1_2;
|
||||
extern int cupsFileLock(cups_file_t *fp, int block) _CUPS_API_1_2;
|
||||
extern int cupsFileNumber(cups_file_t *fp) _CUPS_API_1_2;
|
||||
extern cups_file_t *cupsFileOpen(const char *filename, const char *mode)
|
||||
_CUPS_API_1_2;
|
||||
extern cups_file_t *cupsFileOpen(const char *filename, const char *mode) _CUPS_API_1_2;
|
||||
extern cups_file_t *cupsFileOpenFd(int fd, const char *mode) _CUPS_API_1_2;
|
||||
extern int cupsFilePeekChar(cups_file_t *fp) _CUPS_API_1_2;
|
||||
extern int cupsFilePrintf(cups_file_t *fp, const char *format, ...)
|
||||
__attribute__((__format__ (__printf__, 2, 3)))
|
||||
_CUPS_API_1_2;
|
||||
#ifdef __GNUC__
|
||||
__attribute__ ((__format__ (__printf__, 2, 3)))
|
||||
#endif /* __GNUC__ */
|
||||
_CUPS_API_1_2;
|
||||
extern int cupsFilePutChar(cups_file_t *fp, int c) _CUPS_API_1_2;
|
||||
extern ssize_t cupsFilePutConf(cups_file_t *fp, const char *directive,
|
||||
const char *value) _CUPS_API_1_4;
|
||||
extern int cupsFilePuts(cups_file_t *fp, const char *s)
|
||||
_CUPS_API_1_2;
|
||||
extern ssize_t cupsFileRead(cups_file_t *fp, char *buf, size_t bytes)
|
||||
_CUPS_API_1_2;
|
||||
extern int cupsFilePuts(cups_file_t *fp, const char *s) _CUPS_API_1_2;
|
||||
extern ssize_t cupsFileRead(cups_file_t *fp, char *buf, size_t bytes) _CUPS_API_1_2;
|
||||
extern off_t cupsFileRewind(cups_file_t *fp) _CUPS_API_1_2;
|
||||
extern off_t cupsFileSeek(cups_file_t *fp, off_t pos) _CUPS_API_1_2;
|
||||
extern cups_file_t *cupsFileStderr(void) _CUPS_API_1_2;
|
||||
@@ -102,8 +99,7 @@ extern cups_file_t *cupsFileStdin(void) _CUPS_API_1_2;
|
||||
extern cups_file_t *cupsFileStdout(void) _CUPS_API_1_2;
|
||||
extern off_t cupsFileTell(cups_file_t *fp) _CUPS_API_1_2;
|
||||
extern int cupsFileUnlock(cups_file_t *fp) _CUPS_API_1_2;
|
||||
extern ssize_t cupsFileWrite(cups_file_t *fp, const char *buf,
|
||||
size_t bytes) _CUPS_API_1_2;
|
||||
extern ssize_t cupsFileWrite(cups_file_t *fp, const char *buf, size_t bytes) _CUPS_API_1_2;
|
||||
|
||||
|
||||
# ifdef __cplusplus
|
||||
|
||||
+2
-2
@@ -3,7 +3,7 @@
|
||||
*
|
||||
* cupsGetDevices implementation for CUPS.
|
||||
*
|
||||
* Copyright 2008-2011 by Apple Inc.
|
||||
* Copyright 2008-2010 by Apple Inc.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
* property of Apple Inc. and are protected by Federal copyright
|
||||
@@ -258,7 +258,7 @@ cupsGetDevices(
|
||||
httpFlush(http);
|
||||
|
||||
if (status == HTTP_ERROR)
|
||||
_cupsSetError(IPP_INTERNAL_ERROR, strerror(http->error), 0);
|
||||
_cupsSetError(IPP_ERROR, NULL, 0);
|
||||
else
|
||||
{
|
||||
attr = ippFindAttribute(response, "status-message", IPP_TAG_TEXT);
|
||||
|
||||
+2
-2
@@ -301,14 +301,14 @@ cups_globals_alloc(void)
|
||||
static void
|
||||
cups_globals_free(_cups_globals_t *cg) /* I - Pointer to global data */
|
||||
{
|
||||
_cups_buffer_t *buffer, /* Current read/write buffer */
|
||||
_ipp_buffer_t *buffer, /* Current IPP read/write buffer */
|
||||
*next; /* Next buffer */
|
||||
|
||||
|
||||
if (cg->last_status_message)
|
||||
_cupsStrFree(cg->last_status_message);
|
||||
|
||||
for (buffer = cg->cups_buffers; buffer; buffer = next)
|
||||
for (buffer = cg->ipp_buffers; buffer; buffer = next)
|
||||
{
|
||||
next = buffer->next;
|
||||
free(buffer);
|
||||
|
||||
+1
-6
@@ -366,12 +366,7 @@ httpAddrString(const http_addr_t *addr, /* I - Address to convert */
|
||||
|
||||
#ifdef AF_LOCAL
|
||||
if (addr->addr.sa_family == AF_LOCAL)
|
||||
{
|
||||
if (addr->un.sun_path[0] == '/')
|
||||
strlcpy(s, addr->un.sun_path, slen);
|
||||
else
|
||||
strlcpy(s, "localhost", slen);
|
||||
}
|
||||
strlcpy(s, addr->un.sun_path, slen);
|
||||
else
|
||||
#endif /* AF_LOCAL */
|
||||
if (addr->addr.sa_family == AF_INET)
|
||||
|
||||
+26
-181
@@ -3,7 +3,7 @@
|
||||
*
|
||||
* HTTP address list routines for CUPS.
|
||||
*
|
||||
* Copyright 2007-2012 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
|
||||
@@ -15,8 +15,6 @@
|
||||
* Contents:
|
||||
*
|
||||
* 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.
|
||||
* httpAddrFreeList() - Free an address list.
|
||||
* httpAddrGetList() - Get a list of addresses for a hostname.
|
||||
*/
|
||||
@@ -29,9 +27,6 @@
|
||||
#ifdef HAVE_RESOLV_H
|
||||
# include <resolv.h>
|
||||
#endif /* HAVE_RESOLV_H */
|
||||
#ifdef HAVE_POLL
|
||||
# include <poll.h>
|
||||
#endif /* HAVE_POLL */
|
||||
|
||||
|
||||
/*
|
||||
@@ -44,62 +39,24 @@ http_addrlist_t * /* O - Connected address or NULL on failure */
|
||||
httpAddrConnect(
|
||||
http_addrlist_t *addrlist, /* I - List of potential addresses */
|
||||
int *sock) /* O - Socket */
|
||||
{
|
||||
DEBUG_printf(("httpAddrConnect(addrlist=%p, sock=%p)", addrlist, sock));
|
||||
|
||||
return (httpAddrConnect2(addrlist, sock, 30000, NULL));
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'httpAddrConnect2()' - Connect to any of the addresses in the list with a
|
||||
* timeout and optional cancel.
|
||||
*
|
||||
* @since CUPS 1.6@
|
||||
*/
|
||||
|
||||
http_addrlist_t * /* O - Connected address or NULL on failure */
|
||||
httpAddrConnect2(
|
||||
http_addrlist_t *addrlist, /* I - List of potential addresses */
|
||||
int *sock, /* O - Socket */
|
||||
int msec, /* I - Timeout in milliseconds */
|
||||
int *cancel) /* I - Pointer to "cancel" variable */
|
||||
{
|
||||
int val; /* Socket option value */
|
||||
#ifdef O_NONBLOCK
|
||||
socklen_t len; /* Length of value */
|
||||
int flags, /* Socket flags */
|
||||
remaining; /* Remaining timeout */
|
||||
# ifdef HAVE_POLL
|
||||
struct pollfd pfd; /* Polled file descriptor */
|
||||
# else
|
||||
fd_set input_set, /* select() input set */
|
||||
output_set; /* select() output set */
|
||||
struct timeval timeout; /* Timeout */
|
||||
# endif /* HAVE_POLL */
|
||||
int nfds; /* Result from select()/poll() */
|
||||
#endif /* O_NONBLOCK */
|
||||
#ifdef __APPLE__
|
||||
struct timeval timeout; /* Socket timeout value */
|
||||
#endif /* __APPLE__ */
|
||||
#ifdef DEBUG
|
||||
char temp[256]; /* Temporary address string */
|
||||
#endif /* DEBUG */
|
||||
|
||||
|
||||
DEBUG_printf(("httpAddrConnect2(addrlist=%p, sock=%p, msec=%d, cancel=%p)",
|
||||
addrlist, sock, msec, cancel));
|
||||
DEBUG_printf(("httpAddrConnect(addrlist=%p, sock=%p)", addrlist, sock));
|
||||
|
||||
if (!sock)
|
||||
{
|
||||
errno = EINVAL;
|
||||
_cupsSetError(IPP_INTERNAL_ERROR, strerror(errno), 0);
|
||||
return (NULL);
|
||||
}
|
||||
|
||||
if (cancel && *cancel)
|
||||
return (NULL);
|
||||
|
||||
if (msec <= 0)
|
||||
msec = INT_MAX;
|
||||
|
||||
/*
|
||||
* Loop through each address until we connect or run out of addresses...
|
||||
*/
|
||||
@@ -110,7 +67,7 @@ httpAddrConnect2(
|
||||
* Create the socket...
|
||||
*/
|
||||
|
||||
DEBUG_printf(("2httpAddrConnect2: Trying %s:%d...",
|
||||
DEBUG_printf(("2httpAddrConnect: Trying %s:%d...",
|
||||
httpAddrString(&(addrlist->addr), temp, sizeof(temp)),
|
||||
_httpAddrPort(&(addrlist->addr))));
|
||||
|
||||
@@ -148,6 +105,17 @@ httpAddrConnect2(
|
||||
setsockopt(*sock, SOL_SOCKET, SO_NOSIGPIPE, &val, sizeof(val));
|
||||
#endif /* SO_NOSIGPIPE */
|
||||
|
||||
#ifdef __APPLE__
|
||||
/*
|
||||
* Use a 30-second read timeout when connecting to limit the amount of time
|
||||
* we block...
|
||||
*/
|
||||
|
||||
timeout.tv_sec = 30;
|
||||
timeout.tv_usec = 0;
|
||||
setsockopt(*sock, SOL_SOCKET, SO_RCVTIMEO, &timeout, sizeof(timeout));
|
||||
#endif /* __APPLE__ */
|
||||
|
||||
/*
|
||||
* Using TCP_NODELAY improves responsiveness, especially on systems
|
||||
* with a slow loopback interface...
|
||||
@@ -169,18 +137,6 @@ httpAddrConnect2(
|
||||
fcntl(*sock, F_SETFD, FD_CLOEXEC);
|
||||
#endif /* FD_CLOEXEC */
|
||||
|
||||
#ifdef O_NONBLOCK
|
||||
/*
|
||||
* Do an asynchronous connect by setting the socket non-blocking...
|
||||
*/
|
||||
|
||||
DEBUG_printf(("httpAddrConnect2: Setting non-blocking connect()"));
|
||||
|
||||
flags = fcntl(*sock, F_GETFL, 0);
|
||||
if (msec > 0)
|
||||
fcntl(*sock, F_SETFL, flags | O_NONBLOCK);
|
||||
#endif /* O_NONBLOCK */
|
||||
|
||||
/*
|
||||
* Then connect...
|
||||
*/
|
||||
@@ -188,107 +144,16 @@ httpAddrConnect2(
|
||||
if (!connect(*sock, &(addrlist->addr.addr),
|
||||
httpAddrLength(&(addrlist->addr))))
|
||||
{
|
||||
DEBUG_printf(("1httpAddrConnect2: Connected to %s:%d...",
|
||||
DEBUG_printf(("1httpAddrConnect: Connected to %s:%d...",
|
||||
httpAddrString(&(addrlist->addr), temp, sizeof(temp)),
|
||||
_httpAddrPort(&(addrlist->addr))));
|
||||
|
||||
#ifdef O_NONBLOCK
|
||||
fcntl(*sock, F_SETFL, flags);
|
||||
#endif /* O_NONBLOCK */
|
||||
|
||||
return (addrlist);
|
||||
break;
|
||||
}
|
||||
|
||||
#ifdef O_NONBLOCK
|
||||
# ifdef WIN32
|
||||
if (errno == WSAEINPROGRESS)
|
||||
# else
|
||||
if (errno == EINPROGRESS)
|
||||
# endif /* WIN32 */
|
||||
{
|
||||
DEBUG_puts("1httpAddrConnect2: Finishing async connect()");
|
||||
|
||||
for (remaining = msec; remaining > 0; remaining -= 250)
|
||||
{
|
||||
do
|
||||
{
|
||||
if (cancel && *cancel)
|
||||
{
|
||||
/*
|
||||
* Close this socket and return...
|
||||
*/
|
||||
|
||||
DEBUG_puts("1httpAddrConnect2: Canceled connect()");
|
||||
|
||||
# ifdef WIN32
|
||||
closesocket(*sock);
|
||||
# else
|
||||
close(*sock);
|
||||
# endif /* WIN32 */
|
||||
|
||||
*sock = -1;
|
||||
|
||||
return (NULL);
|
||||
}
|
||||
|
||||
# ifdef HAVE_POLL
|
||||
pfd.fd = *sock;
|
||||
pfd.events = POLLIN | POLLOUT;
|
||||
|
||||
nfds = poll(&pfd, 1, remaining > 250 ? 250 : remaining);
|
||||
|
||||
DEBUG_printf(("1httpAddrConnect2: poll() returned %d (%d)", nfds,
|
||||
errno));
|
||||
|
||||
# else
|
||||
FD_ZERO(&input_set);
|
||||
FD_SET(*sock, &input_set);
|
||||
output_set = input_set;
|
||||
|
||||
timeout.tv_sec = 0;
|
||||
timeout.tv_usec = (remaining > 250 ? 250 : remaining) * 1000;
|
||||
|
||||
nfds = select(*sock + 1, &input_set, &output_set, NULL, &timeout);
|
||||
|
||||
DEBUG_printf(("1httpAddrConnect2: select() returned %d (%d)", nfds,
|
||||
errno));
|
||||
# endif /* HAVE_POLL */
|
||||
}
|
||||
# ifdef WIN32
|
||||
while (nfds < 0 && (WSAGetLastError() == WSAEINTR ||
|
||||
WSAGetLastError() == WSAEWOULDBLOCK));
|
||||
# else
|
||||
while (nfds < 0 && (errno == EINTR || errno == EAGAIN));
|
||||
# endif /* WIN32 */
|
||||
|
||||
if (nfds > 0)
|
||||
{
|
||||
len = sizeof(val);
|
||||
if (getsockopt(*sock, SOL_SOCKET, SO_ERROR, &val, &len) >= 0)
|
||||
{
|
||||
DEBUG_printf(("1httpAddrConnect2: Connected to %s:%d...",
|
||||
httpAddrString(&(addrlist->addr), temp, sizeof(temp)),
|
||||
_httpAddrPort(&(addrlist->addr))));
|
||||
|
||||
fcntl(*sock, F_SETFL, flags);
|
||||
return (addrlist);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif /* O_NONBLOCK */
|
||||
|
||||
DEBUG_printf(("1httpAddrConnect2: Unable to connect to %s:%d: %s",
|
||||
DEBUG_printf(("1httpAddrConnect: Unable to connect to %s:%d: %s",
|
||||
httpAddrString(&(addrlist->addr), temp, sizeof(temp)),
|
||||
_httpAddrPort(&(addrlist->addr)), strerror(errno)));
|
||||
|
||||
#ifndef WIN32
|
||||
if (errno == EINPROGRESS)
|
||||
errno = ETIMEDOUT;
|
||||
#endif /* !WIN32 */
|
||||
|
||||
/*
|
||||
* Close this socket and move to the next address...
|
||||
*/
|
||||
@@ -304,11 +169,7 @@ httpAddrConnect2(
|
||||
}
|
||||
|
||||
if (!addrlist)
|
||||
#ifdef WIN32
|
||||
_cupsSetError(IPP_SERVICE_UNAVAILABLE, "Connection failed", 0);
|
||||
#else
|
||||
_cupsSetError(IPP_SERVICE_UNAVAILABLE, strerror(errno), 0);
|
||||
#endif /* WIN32 */
|
||||
_cupsSetError(IPP_SERVICE_UNAVAILABLE, _("Unable to connect to server"), 1);
|
||||
|
||||
return (addrlist);
|
||||
}
|
||||
@@ -395,6 +256,7 @@ httpAddrGetList(const char *hostname, /* I - Hostname, IP address, or NULL for p
|
||||
}
|
||||
#endif /* HAVE_RES_INIT */
|
||||
|
||||
|
||||
/*
|
||||
* Lookup the address the best way we can...
|
||||
*/
|
||||
@@ -495,7 +357,6 @@ httpAddrGetList(const char *hostname, /* I - Hostname, IP address, or NULL for p
|
||||
if (!temp)
|
||||
{
|
||||
httpAddrFreeList(first);
|
||||
_cupsSetError(IPP_INTERNAL_ERROR, strerror(errno), 0);
|
||||
return (NULL);
|
||||
}
|
||||
|
||||
@@ -525,13 +386,8 @@ httpAddrGetList(const char *hostname, /* I - Hostname, IP address, or NULL for p
|
||||
|
||||
freeaddrinfo(results);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (error == EAI_FAIL)
|
||||
cg->need_res_init = 1;
|
||||
|
||||
_cupsSetError(IPP_INTERNAL_ERROR, gai_strerror(error), 0);
|
||||
}
|
||||
else if (error == EAI_FAIL)
|
||||
cg->need_res_init = 1;
|
||||
|
||||
#else
|
||||
if (hostname)
|
||||
@@ -649,13 +505,8 @@ httpAddrGetList(const char *hostname, /* I - Hostname, IP address, or NULL for p
|
||||
addr = temp;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (h_errno == NO_RECOVERY)
|
||||
cg->need_res_init = 1;
|
||||
|
||||
_cupsSetError(IPP_INTERNAL_ERROR, hstrerror(h_errno), 0);
|
||||
}
|
||||
else if (h_errno == NO_RECOVERY)
|
||||
cg->need_res_init = 1;
|
||||
}
|
||||
#endif /* HAVE_GETADDRINFO */
|
||||
}
|
||||
@@ -693,8 +544,6 @@ httpAddrGetList(const char *hostname, /* I - Hostname, IP address, or NULL for p
|
||||
else
|
||||
{
|
||||
httpAddrFreeList(first);
|
||||
|
||||
_cupsSetError(IPP_INTERNAL_ERROR, _("Unknown service name."), 1);
|
||||
return (NULL);
|
||||
}
|
||||
|
||||
@@ -717,7 +566,6 @@ httpAddrGetList(const char *hostname, /* I - Hostname, IP address, or NULL for p
|
||||
temp = (http_addrlist_t *)calloc(1, sizeof(http_addrlist_t));
|
||||
if (!temp)
|
||||
{
|
||||
_cupsSetError(IPP_INTERNAL_ERROR, strerror(errno), 0);
|
||||
httpAddrFreeList(first);
|
||||
return (NULL);
|
||||
}
|
||||
@@ -746,7 +594,6 @@ httpAddrGetList(const char *hostname, /* I - Hostname, IP address, or NULL for p
|
||||
temp = (http_addrlist_t *)calloc(1, sizeof(http_addrlist_t));
|
||||
if (!temp)
|
||||
{
|
||||
_cupsSetError(IPP_INTERNAL_ERROR, strerror(errno), 0);
|
||||
httpAddrFreeList(first);
|
||||
return (NULL);
|
||||
}
|
||||
@@ -778,7 +625,6 @@ httpAddrGetList(const char *hostname, /* I - Hostname, IP address, or NULL for p
|
||||
temp = (http_addrlist_t *)calloc(1, sizeof(http_addrlist_t));
|
||||
if (!temp)
|
||||
{
|
||||
_cupsSetError(IPP_INTERNAL_ERROR, strerror(errno), 0);
|
||||
httpAddrFreeList(first);
|
||||
return (NULL);
|
||||
}
|
||||
@@ -802,7 +648,6 @@ httpAddrGetList(const char *hostname, /* I - Hostname, IP address, or NULL for p
|
||||
temp = (http_addrlist_t *)calloc(1, sizeof(http_addrlist_t));
|
||||
if (!temp)
|
||||
{
|
||||
_cupsSetError(IPP_INTERNAL_ERROR, strerror(errno), 0);
|
||||
httpAddrFreeList(first);
|
||||
return (NULL);
|
||||
}
|
||||
|
||||
+24
-25
@@ -245,14 +245,14 @@ struct _http_s /**** HTTP connection structure. ****/
|
||||
http_status_t status; /* Status of last request */
|
||||
http_version_t version; /* Protocol version */
|
||||
http_keepalive_t keep_alive; /* Keep-alive supported? */
|
||||
struct sockaddr_in _hostaddr; /* Address of connected host (deprecated) */
|
||||
struct sockaddr_in _hostaddr; /* Address of connected host @deprecated@ */
|
||||
char hostname[HTTP_MAX_HOST],
|
||||
/* Name of connected host */
|
||||
fields[HTTP_FIELD_MAX][HTTP_MAX_VALUE];
|
||||
/* Field values */
|
||||
char *data; /* Pointer to data buffer */
|
||||
http_encoding_t data_encoding; /* Chunked or not */
|
||||
int _data_remaining;/* Number of bytes left (deprecated) */
|
||||
int _data_remaining;/* Number of bytes left @deprecated@ */
|
||||
int used; /* Number of bytes used in buffer */
|
||||
char buffer[HTTP_MAX_BUFFER];
|
||||
/* Buffer for incoming data */
|
||||
@@ -264,41 +264,40 @@ struct _http_s /**** HTTP connection structure. ****/
|
||||
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) */
|
||||
fd_set *input_set; /* select() set for httpWait() @deprecated@ */
|
||||
http_status_t expect; /* Expect: header @since CUPS 1.1.19@ */
|
||||
char *cookie; /* Cookie value(s) @since CUPS 1.1.19@ */
|
||||
/**** New in CUPS 1.1.20 ****/
|
||||
char _authstring[HTTP_MAX_VALUE],
|
||||
/* Current Authentication value (deprecated) */
|
||||
/* Current Authentication value. @deprecated@ */
|
||||
userpass[HTTP_MAX_VALUE];
|
||||
/* Username:password string */
|
||||
int digest_tries; /* Number of tries for digest auth */
|
||||
/* Username:password string @since CUPS 1.1.20@ */
|
||||
int digest_tries; /* Number of tries for digest auth @since CUPS 1.1.20@ */
|
||||
/**** New in CUPS 1.2 ****/
|
||||
off_t data_remaining; /* Number of bytes left */
|
||||
http_addr_t *hostaddr; /* Current host address and port */
|
||||
http_addrlist_t *addrlist; /* List of valid addresses */
|
||||
off_t data_remaining; /* Number of bytes left @since CUPS 1.2@ */
|
||||
http_addr_t *hostaddr; /* Current host address and port @since CUPS 1.2@ */
|
||||
http_addrlist_t *addrlist; /* List of valid addresses @since CUPS 1.2@ */
|
||||
char wbuffer[HTTP_MAX_BUFFER];
|
||||
/* Buffer for outgoing data */
|
||||
int wused; /* Write buffer bytes used */
|
||||
int wused; /* Write buffer bytes used @since CUPS 1.2@ */
|
||||
/**** New in CUPS 1.3 ****/
|
||||
char *field_authorization;
|
||||
/* Authorization field */
|
||||
char *authstring; /* Current authorization field */
|
||||
/* Authorization field @since CUPS 1.3@ */
|
||||
char *authstring; /* Current authorization field @since CUPS 1.3 */
|
||||
# ifdef HAVE_GSSAPI
|
||||
gss_OID gssmech; /* Authentication mechanism */
|
||||
gss_ctx_id_t gssctx; /* Authentication context */
|
||||
gss_name_t gssname; /* Authentication server name */
|
||||
gss_OID gssmech; /* Authentication mechanism @since CUPS 1.3@ */
|
||||
gss_ctx_id_t gssctx; /* Authentication context @since CUPS 1.3@ */
|
||||
gss_name_t gssname; /* Authentication server name @since CUPS 1.3@ */
|
||||
# endif /* HAVE_GSSAPI */
|
||||
# ifdef HAVE_AUTHORIZATION_H
|
||||
AuthorizationRef auth_ref; /* Authorization ref */
|
||||
AuthorizationRef auth_ref; /* Authorization ref @since CUPS 1.3@ */
|
||||
# endif /* HAVE_AUTHORIZATION_H */
|
||||
/**** New in CUPS 1.5 ****/
|
||||
http_tls_credentials_t tls_credentials;
|
||||
/* TLS credentials */
|
||||
http_timeout_cb_t timeout_cb; /* Timeout callback */
|
||||
void *timeout_data; /* User data pointer */
|
||||
double timeout_value; /* Timeout in seconds */
|
||||
int wait_value; /* httpWait value for timeout */
|
||||
/* TLS credentials @since CUPS 1.5/Mac OS X 10.7@ */
|
||||
http_timeout_cb_t timeout_cb; /* Timeout callback @since CUPS 1.5/Mac OS X 10.7@ */
|
||||
void *timeout_data; /* User data pointer @since CUPS 1.5/Mac OS X 10.7@ */
|
||||
struct timeval timeout_value; /* Timeout in seconds */
|
||||
# ifdef HAVE_GSSAPI
|
||||
char gsshost[256]; /* Hostname for Kerberos */
|
||||
# endif /* HAVE_GSSAPI */
|
||||
@@ -372,12 +371,12 @@ 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);
|
||||
extern http_tls_credentials_t
|
||||
_httpConvertCredentials(cups_array_t *credentials);
|
||||
extern http_t *_httpCreate(const char *host, int port,
|
||||
http_addrlist_t *addrlist,
|
||||
http_encryption_t encryption,
|
||||
int family);
|
||||
extern http_tls_credentials_t
|
||||
_httpCreateCredentials(cups_array_t *credentials);
|
||||
extern char *_httpDecodeURI(char *dst, const char *src,
|
||||
size_t dstsize);
|
||||
extern void _httpDisconnect(http_t *http);
|
||||
|
||||
+7
-26
@@ -216,7 +216,7 @@ httpAssembleURI(
|
||||
* Add username@ first...
|
||||
*/
|
||||
|
||||
ptr = http_copy_encode(ptr, username, end, "/?#[]@", NULL,
|
||||
ptr = http_copy_encode(ptr, username, end, "/?@", NULL,
|
||||
encoding & HTTP_URI_CODING_USERNAME);
|
||||
|
||||
if (!ptr)
|
||||
@@ -466,7 +466,7 @@ _httpAssembleUUID(const char *server, /* I - Server name */
|
||||
|
||||
snprintf(data, sizeof(data), "%s:%d:%s:%d:%04x:%04x", server,
|
||||
port, name ? name : server, number,
|
||||
(unsigned)CUPS_RAND() & 0xffff, (unsigned)CUPS_RAND() & 0xffff);
|
||||
CUPS_RAND() & 0xffff, CUPS_RAND() & 0xffff);
|
||||
|
||||
_cupsMD5Init(&md5state);
|
||||
_cupsMD5Append(&md5state, (unsigned char *)data, strlen(data));
|
||||
@@ -1823,36 +1823,17 @@ http_resolve_cb(
|
||||
|
||||
if ((value = TXTRecordGetValuePtr(txtLen, txtRecord, "rp",
|
||||
&valueLen)) != NULL)
|
||||
{
|
||||
if (((char *)value)[0] == '/')
|
||||
{
|
||||
/*
|
||||
* "rp" value (incorrectly) has a leading slash already...
|
||||
*/
|
||||
|
||||
memcpy(rp, value, valueLen);
|
||||
rp[valueLen] = '\0';
|
||||
}
|
||||
else
|
||||
{
|
||||
/*
|
||||
* Convert to resource by concatenating with a leading "/"...
|
||||
*/
|
||||
|
||||
rp[0] = '/';
|
||||
memcpy(rp + 1, value, valueLen);
|
||||
rp[valueLen + 1] = '\0';
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/*
|
||||
* Default "rp" value is blank, mapping to a path of "/"...
|
||||
* Convert to resource by concatenating with a leading "/"...
|
||||
*/
|
||||
|
||||
rp[0] = '/';
|
||||
rp[1] = '\0';
|
||||
memcpy(rp + 1, value, valueLen);
|
||||
rp[valueLen + 1] = '\0';
|
||||
}
|
||||
else
|
||||
rp[0] = '\0';
|
||||
|
||||
/*
|
||||
* Lookup the FQDN if needed...
|
||||
|
||||
+527
-755
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
+6
-13
@@ -3,7 +3,7 @@
|
||||
*
|
||||
* Hyper-Text Transport Protocol definitions for CUPS.
|
||||
*
|
||||
* Copyright 2007-2012 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
|
||||
@@ -357,7 +357,10 @@ extern void httpInitialize(void);
|
||||
extern int httpOptions(http_t *http, const char *uri);
|
||||
extern int httpPost(http_t *http, const char *uri);
|
||||
extern int httpPrintf(http_t *http, const char *format, ...)
|
||||
__attribute__ ((__format__ (__printf__, 2, 3)));
|
||||
# ifdef __GNUC__
|
||||
__attribute__ ((__format__ (__printf__, 2, 3)))
|
||||
# endif /* __GNUC__ */
|
||||
;
|
||||
extern int httpPut(http_t *http, const char *uri);
|
||||
extern int httpRead(http_t *http, char *buffer, int length) _CUPS_DEPRECATED;
|
||||
extern int httpReconnect(http_t *http);
|
||||
@@ -459,17 +462,7 @@ extern void httpFreeCredentials(cups_array_t *certs) _CUPS_API_1_5;
|
||||
extern int httpSetCredentials(http_t *http, cups_array_t *certs)
|
||||
_CUPS_API_1_5;
|
||||
extern void httpSetTimeout(http_t *http, double timeout,
|
||||
http_timeout_cb_t cb, void *user_data)
|
||||
_CUPS_API_1_5;
|
||||
|
||||
/**** New in CUPS 1.6 ****/
|
||||
extern http_addrlist_t *httpAddrConnect2(http_addrlist_t *addrlist, int *sock,
|
||||
int msec, int *cancel)
|
||||
_CUPS_API_1_6;
|
||||
extern http_state_t httpGetState(http_t *http) _CUPS_API_1_6;
|
||||
extern http_version_t httpGetVersion(http_t *http) _CUPS_API_1_6;
|
||||
extern int httpReconnect2(http_t *http, int msec, int *cancel)
|
||||
_CUPS_API_1_6;
|
||||
http_timeout_cb_t cb, void *user_data);
|
||||
|
||||
|
||||
/*
|
||||
|
||||
+10
-98
@@ -3,7 +3,7 @@
|
||||
*
|
||||
* Private IPP definitions for CUPS.
|
||||
*
|
||||
* Copyright 2007-2011 by Apple Inc.
|
||||
* Copyright 2007-2010 by Apple Inc.
|
||||
* Copyright 1997-2006 by Easy Software Products.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
@@ -46,102 +46,12 @@ extern "C" {
|
||||
* Structures...
|
||||
*/
|
||||
|
||||
typedef union _ipp_request_u /**** Request Header ****/
|
||||
typedef struct _ipp_buffer_s /**** Read/write buffer ****/
|
||||
{
|
||||
struct /* Any Header */
|
||||
{
|
||||
ipp_uchar_t version[2]; /* Protocol version number */
|
||||
int op_status; /* Operation ID or status code*/
|
||||
int request_id; /* Request ID */
|
||||
} any;
|
||||
|
||||
struct /* Operation Header */
|
||||
{
|
||||
ipp_uchar_t version[2]; /* Protocol version number */
|
||||
ipp_op_t operation_id; /* Operation ID */
|
||||
int request_id; /* Request ID */
|
||||
} op;
|
||||
|
||||
struct /* Status Header */
|
||||
{
|
||||
ipp_uchar_t version[2]; /* Protocol version number */
|
||||
ipp_status_t status_code; /* Status code */
|
||||
int request_id; /* Request ID */
|
||||
} status;
|
||||
|
||||
/**** New in CUPS 1.1.19 ****/
|
||||
struct /* Event Header @since CUPS 1.1.19/Mac OS X 10.3@ */
|
||||
{
|
||||
ipp_uchar_t version[2]; /* Protocol version number */
|
||||
ipp_status_t status_code; /* Status code */
|
||||
int request_id; /* Request ID */
|
||||
} event;
|
||||
} _ipp_request_t;
|
||||
|
||||
/**** New in CUPS 1.1.19 ****/
|
||||
|
||||
typedef union _ipp_value_u /**** Attribute Value ****/
|
||||
{
|
||||
int integer; /* Integer/enumerated value */
|
||||
|
||||
char boolean; /* Boolean value */
|
||||
|
||||
ipp_uchar_t date[11]; /* Date/time value */
|
||||
|
||||
struct
|
||||
{
|
||||
int xres, /* Horizontal resolution */
|
||||
yres; /* Vertical resolution */
|
||||
ipp_res_t units; /* Resolution units */
|
||||
} resolution; /* Resolution value */
|
||||
|
||||
struct
|
||||
{
|
||||
int lower, /* Lower value */
|
||||
upper; /* Upper value */
|
||||
} range; /* Range of integers value */
|
||||
|
||||
struct
|
||||
{
|
||||
char *language; /* Language code */
|
||||
char *text; /* String */
|
||||
} string; /* String with language value */
|
||||
|
||||
struct
|
||||
{
|
||||
int length; /* Length of attribute */
|
||||
void *data; /* Data in attribute */
|
||||
} unknown; /* Unknown attribute type */
|
||||
|
||||
/**** New in CUPS 1.1.19 ****/
|
||||
ipp_t *collection; /* Collection value @since CUPS 1.1.19/Mac OS X 10.3@ */
|
||||
} _ipp_value_t;
|
||||
|
||||
struct _ipp_attribute_s /**** Attribute ****/
|
||||
{
|
||||
ipp_attribute_t *next; /* Next attribute in list */
|
||||
ipp_tag_t group_tag, /* Job/Printer/Operation group tag */
|
||||
value_tag; /* What type of value is it? */
|
||||
char *name; /* Name of attribute */
|
||||
int num_values; /* Number of values */
|
||||
_ipp_value_t values[1]; /* Values */
|
||||
};
|
||||
|
||||
struct _ipp_s /**** IPP Request/Response/Notification ****/
|
||||
{
|
||||
ipp_state_t state; /* State of request */
|
||||
_ipp_request_t request; /* Request header */
|
||||
ipp_attribute_t *attrs; /* Attributes */
|
||||
ipp_attribute_t *last; /* Last attribute in list */
|
||||
ipp_attribute_t *current; /* Current attribute (for read/write) */
|
||||
ipp_tag_t curtag; /* Current attribute group tag */
|
||||
|
||||
/**** New in CUPS 1.2 ****/
|
||||
ipp_attribute_t *prev; /* Previous attribute (for read) @since CUPS 1.2/Mac OS X 10.5@ */
|
||||
|
||||
/**** New in CUPS 1.4.4 ****/
|
||||
int use; /* Use count @since CUPS 1.4.4/Mac OS X 10.6.?@ */
|
||||
};
|
||||
unsigned char d[IPP_BUF_SIZE];/* Data buffer */
|
||||
struct _ipp_buffer_s *next; /* Next buffer in list */
|
||||
int used; /* Is this buffer used? */
|
||||
} _ipp_buffer_t;
|
||||
|
||||
typedef struct /**** Attribute mapping data ****/
|
||||
{
|
||||
@@ -149,8 +59,6 @@ typedef struct /**** Attribute mapping data ****/
|
||||
const char *name; /* Option/attribute name */
|
||||
ipp_tag_t value_tag; /* Value tag for this attribute */
|
||||
ipp_tag_t group_tag; /* Group tag for this attribute */
|
||||
ipp_tag_t alt_group_tag; /* Alternate group tag for this
|
||||
* attribute */
|
||||
} _ipp_option_t;
|
||||
|
||||
|
||||
@@ -158,7 +66,11 @@ typedef struct /**** Attribute mapping data ****/
|
||||
* Prototypes for private functions...
|
||||
*/
|
||||
|
||||
extern ipp_attribute_t *_ippAddAttr(ipp_t *ipp, int num_values);
|
||||
extern size_t _ippAttrString(ipp_attribute_t *attr, char *buffer,
|
||||
size_t bufsize);
|
||||
extern _ipp_option_t *_ippFindOption(const char *name);
|
||||
extern void _ippFreeAttr(ipp_attribute_t *attr);
|
||||
|
||||
|
||||
/*
|
||||
|
||||
+122
-394
@@ -16,19 +16,16 @@
|
||||
*
|
||||
* Contents:
|
||||
*
|
||||
* ippAttributeString() - Convert the attribute's value to a string.
|
||||
* ippEnumString() - Return a string corresponding to the enum value.
|
||||
* ippEnumValue() - Return the value associated with a given enum
|
||||
* string.
|
||||
* ippErrorString() - Return a name for the given status code.
|
||||
* ippErrorValue() - Return a status code for the given name.
|
||||
* ippOpString() - Return a name for the given operation id.
|
||||
* ippOpValue() - Return an operation id for the given name.
|
||||
* ippPort() - Return the default IPP port number.
|
||||
* ippSetPort() - Set the default port number.
|
||||
* ippTagString() - Return the tag name corresponding to a tag value.
|
||||
* ippTagValue() - Return the tag value corresponding to a tag name.
|
||||
* ipp_col_string() - Convert a collection to a string.
|
||||
* _ippAttrString() - Convert the attribute's value to a string.
|
||||
* ippErrorString() - Return a name for the given status code.
|
||||
* ippErrorValue() - Return a status code for the given name.
|
||||
* ippOpString() - Return a name for the given operation id.
|
||||
* ippOpValue() - Return an operation id for the given name.
|
||||
* ippPort() - Return the default IPP port number.
|
||||
* ippSetPort() - Set the default port number.
|
||||
* ippTagString() - Return the tag name corresponding to a tag value.
|
||||
* ippTagValue() - Return the tag value corresponding to a tag name.
|
||||
* ipp_col_string() - Convert a collection to a string.
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -43,18 +40,18 @@
|
||||
*/
|
||||
|
||||
static const char * const ipp_status_oks[] = /* "OK" status codes */
|
||||
{ /* (name) = abandoned standard value */
|
||||
{
|
||||
"successful-ok",
|
||||
"successful-ok-ignored-or-substituted-attributes",
|
||||
"successful-ok-conflicting-attributes",
|
||||
"successful-ok-ignored-subscriptions",
|
||||
"(successful-ok-ignored-notifications)",
|
||||
"successful-ok-ignored-notifications",
|
||||
"successful-ok-too-many-events",
|
||||
"(successful-ok-but-cancel-subscription)",
|
||||
"successful-ok-but-cancel-subscription",
|
||||
"successful-ok-events-complete"
|
||||
},
|
||||
* const ipp_status_400s[] = /* Client errors */
|
||||
{ /* (name) = abandoned standard value */
|
||||
{
|
||||
"client-error-bad-request",
|
||||
"client-error-forbidden",
|
||||
"client-error-not-authenticated",
|
||||
@@ -77,8 +74,8 @@ static const char * const ipp_status_oks[] = /* "OK" status codes */
|
||||
"client-error-attributes-not-settable",
|
||||
"client-error-ignored-all-subscriptions",
|
||||
"client-error-too-many-subscriptions",
|
||||
"(client-error-ignored-all-notifications)",
|
||||
"(client-error-client-print-support-file-not-found)"
|
||||
"client-error-ignored-all-notifications",
|
||||
"client-error-print-support-file-not-found"
|
||||
},
|
||||
* const ipp_status_500s[] = /* Server errors */
|
||||
{
|
||||
@@ -92,9 +89,7 @@ static const char * const ipp_status_oks[] = /* "OK" status codes */
|
||||
"server-error-busy",
|
||||
"server-error-job-canceled",
|
||||
"server-error-multiple-document-jobs-not-supported",
|
||||
"server-error-printer-is-deactivated",
|
||||
"server-error-too-many-jobs",
|
||||
"server-error-too-many-documents"
|
||||
"server-error-printer-is-deactivated"
|
||||
},
|
||||
* const ipp_status_1000s[] = /* CUPS internal */
|
||||
{
|
||||
@@ -102,11 +97,11 @@ static const char * const ipp_status_oks[] = /* "OK" status codes */
|
||||
"cups-pki-error",
|
||||
"cups-upgrade-required"
|
||||
};
|
||||
static const char * const ipp_std_ops[] =
|
||||
static char * const ipp_std_ops[] =
|
||||
{
|
||||
/* 0x0000 - 0x000f */
|
||||
"0x00",
|
||||
"0x01",
|
||||
"unknown-00",
|
||||
"unknown-01",
|
||||
"Print-Job",
|
||||
"Print-URI",
|
||||
"Validate-Job",
|
||||
@@ -120,7 +115,7 @@ static const char * const ipp_std_ops[] =
|
||||
"Hold-Job",
|
||||
"Release-Job",
|
||||
"Restart-Job",
|
||||
"0x0f",
|
||||
"unknown-0f",
|
||||
|
||||
/* 0x0010 - 0x001f */
|
||||
"Pause-Printer",
|
||||
@@ -136,13 +131,13 @@ static const char * const ipp_std_ops[] =
|
||||
"Renew-Subscription",
|
||||
"Cancel-Subscription",
|
||||
"Get-Notifications",
|
||||
"(Send-Notifications)",
|
||||
"(Get-Resource-Attributes)",
|
||||
"(Get-Resource-Data)",
|
||||
"Send-Notifications",
|
||||
"unknown-1e",
|
||||
"unknown-1f",
|
||||
|
||||
/* 0x0020 - 0x002f */
|
||||
"(Get-Resources)",
|
||||
"(Get-Printer-Support-Files)",
|
||||
"unknown-20",
|
||||
"Get-Printer-Support-Files",
|
||||
"Enable-Printer",
|
||||
"Disable-Printer",
|
||||
"Pause-Printer-After-Current-Job",
|
||||
@@ -161,7 +156,7 @@ static const char * const ipp_std_ops[] =
|
||||
/* 0x0030 - 0x003b */
|
||||
"Promote-Job",
|
||||
"Schedule-Job-After",
|
||||
"0x32",
|
||||
"unknown-32",
|
||||
"Cancel-Document",
|
||||
"Get-Document-Attributes",
|
||||
"Get-Documents",
|
||||
@@ -170,8 +165,7 @@ static const char * const ipp_std_ops[] =
|
||||
"Cancel-Jobs",
|
||||
"Cancel-My-Jobs",
|
||||
"Resubmit-Job",
|
||||
"Close-Job",
|
||||
"Identify-Printer"
|
||||
"Close-Job"
|
||||
},
|
||||
* const ipp_cups_ops[] =
|
||||
{
|
||||
@@ -211,48 +205,46 @@ static const char * const ipp_std_ops[] =
|
||||
/* 0x06 */
|
||||
"event-notification-attributes-tag",
|
||||
/* 0x07 */
|
||||
"(resource-attributes-tag)",
|
||||
/* 0x08 */
|
||||
"document-attributes-tag",
|
||||
/* 0x09 */
|
||||
"0x0a", /* 0x0a */
|
||||
"0x0b", /* 0x0b */
|
||||
"0x0c", /* 0x0c */
|
||||
"0x0d", /* 0x0d */
|
||||
"0x0e", /* 0x0e */
|
||||
"0x0f", /* 0x0f */
|
||||
"unknown-08", /* 0x08 */
|
||||
"unknown-09", /* 0x09 */
|
||||
"unknown-0a", /* 0x0a */
|
||||
"unknown-0b", /* 0x0b */
|
||||
"unknown-0c", /* 0x0c */
|
||||
"unknown-0d", /* 0x0d */
|
||||
"unknown-0e", /* 0x0e */
|
||||
"unknown-0f", /* 0x0f */
|
||||
"unsupported", /* 0x10 */
|
||||
"default", /* 0x11 */
|
||||
"unknown", /* 0x12 */
|
||||
"no-value", /* 0x13 */
|
||||
"0x14", /* 0x14 */
|
||||
"unknown-14", /* 0x14 */
|
||||
"not-settable", /* 0x15 */
|
||||
"delete-attribute", /* 0x16 */
|
||||
"admin-define", /* 0x17 */
|
||||
"0x18", /* 0x18 */
|
||||
"0x19", /* 0x19 */
|
||||
"0x1a", /* 0x1a */
|
||||
"0x1b", /* 0x1b */
|
||||
"0x1c", /* 0x1c */
|
||||
"0x1d", /* 0x1d */
|
||||
"0x1e", /* 0x1e */
|
||||
"0x1f", /* 0x1f */
|
||||
"0x20", /* 0x20 */
|
||||
"unknown-18", /* 0x18 */
|
||||
"unknown-19", /* 0x19 */
|
||||
"unknown-1a", /* 0x1a */
|
||||
"unknown-1b", /* 0x1b */
|
||||
"unknown-1c", /* 0x1c */
|
||||
"unknown-1d", /* 0x1d */
|
||||
"unknown-1e", /* 0x1e */
|
||||
"unknown-1f", /* 0x1f */
|
||||
"unknown-20", /* 0x20 */
|
||||
"integer", /* 0x21 */
|
||||
"boolean", /* 0x22 */
|
||||
"enum", /* 0x23 */
|
||||
"0x24", /* 0x24 */
|
||||
"0x25", /* 0x25 */
|
||||
"0x26", /* 0x26 */
|
||||
"0x27", /* 0x27 */
|
||||
"0x28", /* 0x28 */
|
||||
"0x29", /* 0x29 */
|
||||
"0x2a", /* 0x2a */
|
||||
"0x2b", /* 0x2b */
|
||||
"0x2c", /* 0x2c */
|
||||
"0x2d", /* 0x2d */
|
||||
"0x2e", /* 0x2e */
|
||||
"0x2f", /* 0x2f */
|
||||
"unknown-24", /* 0x24 */
|
||||
"unknown-25", /* 0x25 */
|
||||
"unknown-26", /* 0x26 */
|
||||
"unknown-27", /* 0x27 */
|
||||
"unknown-28", /* 0x28 */
|
||||
"unknown-29", /* 0x29 */
|
||||
"unknown-2a", /* 0x2a */
|
||||
"unknown-2b", /* 0x2b */
|
||||
"unknown-2c", /* 0x2c */
|
||||
"unknown-2d", /* 0x2d */
|
||||
"unknown-2e", /* 0x2e */
|
||||
"unknown-2f", /* 0x2f */
|
||||
"octetString", /* 0x30 */
|
||||
"dateTime", /* 0x31 */
|
||||
"resolution", /* 0x32 */
|
||||
@@ -261,18 +253,18 @@ static const char * const ipp_std_ops[] =
|
||||
"textWithLanguage", /* 0x35 */
|
||||
"nameWithLanguage", /* 0x36 */
|
||||
"endCollection", /* 0x37 */
|
||||
"0x38", /* 0x38 */
|
||||
"0x39", /* 0x39 */
|
||||
"0x3a", /* 0x3a */
|
||||
"0x3b", /* 0x3b */
|
||||
"0x3c", /* 0x3c */
|
||||
"0x3d", /* 0x3d */
|
||||
"0x3e", /* 0x3e */
|
||||
"0x3f", /* 0x3f */
|
||||
"0x40", /* 0x40 */
|
||||
"unknown-38", /* 0x38 */
|
||||
"unknown-39", /* 0x39 */
|
||||
"unknown-3a", /* 0x3a */
|
||||
"unknown-3b", /* 0x3b */
|
||||
"unknown-3c", /* 0x3c */
|
||||
"unknown-3d", /* 0x3d */
|
||||
"unknown-3e", /* 0x3e */
|
||||
"unknown-3f", /* 0x3f */
|
||||
"unknown-40", /* 0x40 */
|
||||
"textWithoutLanguage",/* 0x41 */
|
||||
"nameWithoutLanguage",/* 0x42 */
|
||||
"0x43", /* 0x43 */
|
||||
"unknown-43", /* 0x43 */
|
||||
"keyword", /* 0x44 */
|
||||
"uri", /* 0x45 */
|
||||
"uriScheme", /* 0x46 */
|
||||
@@ -281,115 +273,22 @@ static const char * const ipp_std_ops[] =
|
||||
"mimeMediaType", /* 0x49 */
|
||||
"memberAttrName" /* 0x4a */
|
||||
};
|
||||
static const char * const ipp_document_states[] =
|
||||
{ /* document-state-enums */
|
||||
"pending",
|
||||
"4",
|
||||
"processing",
|
||||
"6",
|
||||
"canceled",
|
||||
"aborted",
|
||||
"completed"
|
||||
},
|
||||
* const ipp_finishings[] =
|
||||
{ /* finishings enums */
|
||||
"none",
|
||||
"staple",
|
||||
"punch",
|
||||
"cover",
|
||||
"bind",
|
||||
"saddle-stitch",
|
||||
"edge-stitch",
|
||||
"fold",
|
||||
"trim",
|
||||
"bale",
|
||||
"booklet-maker",
|
||||
"jog-offset",
|
||||
"15",
|
||||
"16",
|
||||
"17",
|
||||
"18",
|
||||
"19",
|
||||
"staple-top-left",
|
||||
"staple-bottom-left",
|
||||
"staple-top-right",
|
||||
"staple-bottom-right",
|
||||
"edge-stitch-left",
|
||||
"edge-stitch-top",
|
||||
"edge-stitch-right",
|
||||
"edge-stitch-bottom",
|
||||
"staple-dual-left",
|
||||
"staple-dual-top",
|
||||
"staple-dual-right",
|
||||
"staple-dual-bottom",
|
||||
"32",
|
||||
"33",
|
||||
"34",
|
||||
"35",
|
||||
"36",
|
||||
"37",
|
||||
"38",
|
||||
"39",
|
||||
"40",
|
||||
"41",
|
||||
"42",
|
||||
"43",
|
||||
"44",
|
||||
"45",
|
||||
"46",
|
||||
"47",
|
||||
"48",
|
||||
"49",
|
||||
"bind-left",
|
||||
"bind-top",
|
||||
"bind-right",
|
||||
"bind-bottom",
|
||||
"54",
|
||||
"55",
|
||||
"56",
|
||||
"57",
|
||||
"58",
|
||||
"59",
|
||||
"trim-after-pages",
|
||||
"trim-after-documents",
|
||||
"trim-after-copies",
|
||||
"trim-after-job"
|
||||
},
|
||||
* const ipp_job_collation_types[] =
|
||||
{ /* job-collation-type enums */
|
||||
"uncollated-sheets",
|
||||
"collated-documents",
|
||||
"uncollated-documents"
|
||||
},
|
||||
* const ipp_job_states[] =
|
||||
{ /* job-state enums */
|
||||
"pending",
|
||||
"pending-held",
|
||||
"processing",
|
||||
"processing-stopped",
|
||||
"canceled",
|
||||
"aborted",
|
||||
"completed"
|
||||
},
|
||||
* const ipp_orientation_requesteds[] =
|
||||
{ /* orientation-requested enums */
|
||||
"portrait",
|
||||
"landscape",
|
||||
"reverse-landscape",
|
||||
"reverse-portrait"
|
||||
},
|
||||
* const ipp_print_qualities[] =
|
||||
{ /* print-quality enums */
|
||||
"draft",
|
||||
"normal",
|
||||
"high"
|
||||
},
|
||||
* const ipp_printer_states[] =
|
||||
{ /* printer-state enums */
|
||||
"idle",
|
||||
"processing",
|
||||
"stopped",
|
||||
};
|
||||
static const char * const job_states[] =
|
||||
{ /* job-state enums */
|
||||
"pending",
|
||||
"pending-held",
|
||||
"processing",
|
||||
"processing-stopped",
|
||||
"canceled",
|
||||
"aborted",
|
||||
"completed"
|
||||
};
|
||||
static const char * const printer_states[] =
|
||||
{ /* printer-state enums */
|
||||
"idle",
|
||||
"processing",
|
||||
"stopped",
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
@@ -400,27 +299,24 @@ static size_t ipp_col_string(ipp_t *col, char *buffer, size_t bufsize);
|
||||
|
||||
|
||||
/*
|
||||
* 'ippAttributeString()' - Convert the attribute's value to a string.
|
||||
* '_ippAttrString()' - Convert the attribute's value to a string.
|
||||
*
|
||||
* Returns the number of bytes that would be written, not including the
|
||||
* trailing nul. The buffer pointer can be NULL to get the required length,
|
||||
* just like (v)snprintf.
|
||||
*
|
||||
* @since CUPS 1.6@
|
||||
*/
|
||||
|
||||
size_t /* O - Number of bytes less nul */
|
||||
ippAttributeString(
|
||||
ipp_attribute_t *attr, /* I - Attribute */
|
||||
char *buffer, /* I - String buffer or NULL */
|
||||
size_t bufsize) /* I - Size of string buffer */
|
||||
_ippAttrString(ipp_attribute_t *attr, /* I - Attribute */
|
||||
char *buffer, /* I - String buffer or NULL */
|
||||
size_t bufsize) /* I - Size of string buffer */
|
||||
{
|
||||
int i; /* Looping var */
|
||||
char *bufptr, /* Pointer into buffer */
|
||||
*bufend, /* End of buffer */
|
||||
temp[256]; /* Temporary string */
|
||||
const char *ptr; /* Pointer into string */
|
||||
_ipp_value_t *val; /* Current value */
|
||||
ipp_value_t *val; /* Current value */
|
||||
|
||||
|
||||
if (!attr || !attr->name)
|
||||
@@ -450,13 +346,30 @@ ippAttributeString(
|
||||
switch (attr->value_tag & ~IPP_TAG_COPY)
|
||||
{
|
||||
case IPP_TAG_ENUM :
|
||||
ptr = ippEnumString(attr->name, val->integer);
|
||||
if (!strcmp(attr->name, "printer-state") &&
|
||||
val->integer >= IPP_PRINTER_IDLE &&
|
||||
val->integer <= IPP_PRINTER_STOPPED)
|
||||
{
|
||||
ptr = printer_states[val->integer - IPP_PRINTER_IDLE];
|
||||
|
||||
if (buffer && bufptr < bufend)
|
||||
strlcpy(bufptr, ptr, bufend - bufptr + 1);
|
||||
if (buffer && bufptr < bufend)
|
||||
strlcpy(bufptr, ptr, bufend - bufptr + 1);
|
||||
|
||||
bufptr += strlen(ptr);
|
||||
break;
|
||||
bufptr += strlen(ptr);
|
||||
break;
|
||||
}
|
||||
else if (!strcmp(attr->name, "job-state") &&
|
||||
val->integer >= IPP_JOB_PENDING &&
|
||||
val->integer <= IPP_JOB_COMPLETED)
|
||||
{
|
||||
ptr = job_states[val->integer - IPP_JOB_PENDING];
|
||||
|
||||
if (buffer && bufptr < bufend)
|
||||
strlcpy(bufptr, ptr, bufend - bufptr + 1);
|
||||
|
||||
bufptr += strlen(ptr);
|
||||
break;
|
||||
}
|
||||
|
||||
case IPP_TAG_INTEGER :
|
||||
if (buffer && bufptr < bufend)
|
||||
@@ -524,7 +437,6 @@ ippAttributeString(
|
||||
case IPP_TAG_KEYWORD :
|
||||
case IPP_TAG_CHARSET :
|
||||
case IPP_TAG_URI :
|
||||
case IPP_TAG_URISCHEME :
|
||||
case IPP_TAG_MIMETYPE :
|
||||
case IPP_TAG_LANGUAGE :
|
||||
case IPP_TAG_TEXTLANG :
|
||||
@@ -534,7 +446,7 @@ ippAttributeString(
|
||||
|
||||
for (ptr = val->string.text; *ptr; ptr ++)
|
||||
{
|
||||
if (*ptr == '\\' || *ptr == '\"' || *ptr == '[')
|
||||
if (*ptr == '\\' || *ptr == '\"')
|
||||
{
|
||||
if (buffer && bufptr < bufend)
|
||||
*bufptr = '\\';
|
||||
@@ -545,25 +457,6 @@ ippAttributeString(
|
||||
*bufptr = *ptr;
|
||||
bufptr ++;
|
||||
}
|
||||
|
||||
if (val->string.language)
|
||||
{
|
||||
/*
|
||||
* Add "[language]" to end of string...
|
||||
*/
|
||||
|
||||
if (buffer && bufptr < bufend)
|
||||
*bufptr = '[';
|
||||
bufptr ++;
|
||||
|
||||
if (buffer && bufptr < bufend)
|
||||
strlcpy(bufptr, val->string.language, bufend - bufptr);
|
||||
bufptr += strlen(val->string.language);
|
||||
|
||||
if (buffer && bufptr < bufend)
|
||||
*bufptr = ']';
|
||||
bufptr ++;
|
||||
}
|
||||
break;
|
||||
|
||||
case IPP_TAG_BEGIN_COLLECTION :
|
||||
@@ -623,159 +516,6 @@ ippAttributeString(
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'ippEnumString()' - Return a string corresponding to the enum value.
|
||||
*/
|
||||
|
||||
const char * /* O - Enum string */
|
||||
ippEnumString(const char *attrname, /* I - Attribute name */
|
||||
int enumvalue) /* I - Enum value */
|
||||
{
|
||||
_cups_globals_t *cg = _cupsGlobals(); /* Pointer to library globals */
|
||||
|
||||
|
||||
/*
|
||||
* Check for standard enum values...
|
||||
*/
|
||||
|
||||
if (!strcmp(attrname, "document-state") &&
|
||||
enumvalue >= 3 &&
|
||||
enumvalue <= (3 + (int)(sizeof(ipp_document_states) /
|
||||
sizeof(ipp_document_states[0]))))
|
||||
return (ipp_document_states[enumvalue - 3]);
|
||||
else if ((!strcmp(attrname, "finishings") ||
|
||||
!strcmp(attrname, "finishings-actual") ||
|
||||
!strcmp(attrname, "finishings-default") ||
|
||||
!strcmp(attrname, "finishings-ready") ||
|
||||
!strcmp(attrname, "finishings-supported")) &&
|
||||
enumvalue >= 3 &&
|
||||
enumvalue <= (3 + (int)(sizeof(ipp_finishings) / sizeof(ipp_finishings[0]))))
|
||||
return (ipp_finishings[enumvalue - 3]);
|
||||
else if ((!strcmp(attrname, "job-collation-type") ||
|
||||
!strcmp(attrname, "job-collation-type-actual")) &&
|
||||
enumvalue >= 3 &&
|
||||
enumvalue <= (3 + (int)(sizeof(ipp_job_collation_types) /
|
||||
sizeof(ipp_job_collation_types[0]))))
|
||||
return (ipp_job_collation_types[enumvalue - 3]);
|
||||
else if (!strcmp(attrname, "job-state") &&
|
||||
enumvalue >= IPP_JOB_PENDING && enumvalue <= IPP_JOB_COMPLETED)
|
||||
return (ipp_job_states[enumvalue - IPP_JOB_PENDING]);
|
||||
else if (!strcmp(attrname, "operations-supported"))
|
||||
return (ippOpString((ipp_op_t)enumvalue));
|
||||
else if ((!strcmp(attrname, "orientation-requested") ||
|
||||
!strcmp(attrname, "orientation-requested-actual") ||
|
||||
!strcmp(attrname, "orientation-requested-default") ||
|
||||
!strcmp(attrname, "orientation-requested-supported")) &&
|
||||
enumvalue >= 3 &&
|
||||
enumvalue <= (3 + (int)(sizeof(ipp_orientation_requesteds) /
|
||||
sizeof(ipp_orientation_requesteds[0]))))
|
||||
return (ipp_orientation_requesteds[enumvalue - 3]);
|
||||
else if ((!strcmp(attrname, "print-quality") ||
|
||||
!strcmp(attrname, "print-quality-actual") ||
|
||||
!strcmp(attrname, "print-quality-default") ||
|
||||
!strcmp(attrname, "print-quality-supported")) &&
|
||||
enumvalue >= 3 &&
|
||||
enumvalue <= (3 + (int)(sizeof(ipp_print_qualities) /
|
||||
sizeof(ipp_print_qualities[0]))))
|
||||
return (ipp_print_qualities[enumvalue - 3]);
|
||||
else if (!strcmp(attrname, "printer-state") &&
|
||||
enumvalue >= IPP_PRINTER_IDLE && enumvalue <= IPP_PRINTER_STOPPED)
|
||||
return (ipp_printer_states[enumvalue - IPP_PRINTER_IDLE]);
|
||||
|
||||
/*
|
||||
* Not a standard enum value, just return the decimal equivalent...
|
||||
*/
|
||||
|
||||
snprintf(cg->ipp_unknown, sizeof(cg->ipp_unknown), "%d", enumvalue);
|
||||
return (cg->ipp_unknown);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'ippEnumValue()' - Return the value associated with a given enum string.
|
||||
*/
|
||||
|
||||
int /* O - Enum value or -1 if unknown */
|
||||
ippEnumValue(const char *attrname, /* I - Attribute name */
|
||||
const char *enumstring) /* I - Enum string */
|
||||
{
|
||||
int i, /* Looping var */
|
||||
num_strings; /* Number of strings to compare */
|
||||
const char * const *strings; /* Strings to compare */
|
||||
|
||||
|
||||
/*
|
||||
* If the string is just a number, return it...
|
||||
*/
|
||||
|
||||
if (isdigit(*enumstring & 255))
|
||||
return (strtol(enumstring, NULL, 0));
|
||||
|
||||
/*
|
||||
* Otherwise look up the string...
|
||||
*/
|
||||
|
||||
if (!strcmp(attrname, "document-state"))
|
||||
{
|
||||
num_strings = (int)(sizeof(ipp_document_states) / sizeof(ipp_document_states[0]));
|
||||
strings = ipp_document_states;
|
||||
}
|
||||
else if (!strcmp(attrname, "finishings") ||
|
||||
!strcmp(attrname, "finishings-actual") ||
|
||||
!strcmp(attrname, "finishings-default") ||
|
||||
!strcmp(attrname, "finishings-ready") ||
|
||||
!strcmp(attrname, "finishings-supported"))
|
||||
{
|
||||
num_strings = (int)(sizeof(ipp_finishings) / sizeof(ipp_finishings[0]));
|
||||
strings = ipp_finishings;
|
||||
}
|
||||
else if (!strcmp(attrname, "job-collation-type") ||
|
||||
!strcmp(attrname, "job-collation-type-actual"))
|
||||
{
|
||||
num_strings = (int)(sizeof(ipp_job_collation_types) /
|
||||
sizeof(ipp_job_collation_types[0]));
|
||||
strings = ipp_job_collation_types;
|
||||
}
|
||||
else if (!strcmp(attrname, "job-state"))
|
||||
{
|
||||
num_strings = (int)(sizeof(ipp_job_states) / sizeof(ipp_job_states[0]));
|
||||
strings = ipp_job_states;
|
||||
}
|
||||
else if (!strcmp(attrname, "operations-supported"))
|
||||
return (ippOpValue(enumstring));
|
||||
else if (!strcmp(attrname, "orientation-requested") ||
|
||||
!strcmp(attrname, "orientation-requested-actual") ||
|
||||
!strcmp(attrname, "orientation-requested-default") ||
|
||||
!strcmp(attrname, "orientation-requested-supported"))
|
||||
{
|
||||
num_strings = (int)(sizeof(ipp_orientation_requesteds) /
|
||||
sizeof(ipp_orientation_requesteds[0]));
|
||||
strings = ipp_orientation_requesteds;
|
||||
}
|
||||
else if (!strcmp(attrname, "print-quality") ||
|
||||
!strcmp(attrname, "print-quality-actual") ||
|
||||
!strcmp(attrname, "print-quality-default") ||
|
||||
!strcmp(attrname, "print-quality-supported"))
|
||||
{
|
||||
num_strings = (int)(sizeof(ipp_print_qualities) / sizeof(ipp_print_qualities[0]));
|
||||
strings = ipp_print_qualities;
|
||||
}
|
||||
else if (!strcmp(attrname, "printer-state"))
|
||||
{
|
||||
num_strings = (int)(sizeof(ipp_printer_states) / sizeof(ipp_printer_states[0]));
|
||||
strings = ipp_printer_states;
|
||||
}
|
||||
else
|
||||
return (-1);
|
||||
|
||||
for (i = 0; i < num_strings; i ++)
|
||||
if (!strcmp(enumstring, strings[i]))
|
||||
return (i + 3);
|
||||
|
||||
return (-1);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'ippErrorString()' - Return a name for the given status code.
|
||||
*/
|
||||
@@ -804,10 +544,10 @@ ippErrorString(ipp_status_t error) /* I - Error status */
|
||||
return (ipp_status_1000s[error - IPP_AUTHENTICATION_CANCELED]);
|
||||
|
||||
/*
|
||||
* No, build an "0xxxxx" error string...
|
||||
* No, build an "unknown-xxxx" error string...
|
||||
*/
|
||||
|
||||
sprintf(cg->ipp_unknown, "0x%04x", error);
|
||||
sprintf(cg->ipp_unknown, "unknown-%04x", error);
|
||||
|
||||
return (cg->ipp_unknown);
|
||||
}
|
||||
@@ -877,10 +617,10 @@ ippOpString(ipp_op_t op) /* I - Operation ID */
|
||||
return (ipp_cups_ops2[0]);
|
||||
|
||||
/*
|
||||
* No, build an "0xxxxx" operation string...
|
||||
* No, build an "unknown-xxxx" operation string...
|
||||
*/
|
||||
|
||||
sprintf(cg->ipp_unknown, "0x%04x", op);
|
||||
sprintf(cg->ipp_unknown, "unknown-%04x", op);
|
||||
|
||||
return (cg->ipp_unknown);
|
||||
}
|
||||
@@ -898,9 +638,6 @@ ippOpValue(const char *name) /* I - Textual name */
|
||||
int i;
|
||||
|
||||
|
||||
if (!strncmp(name, "0x", 2))
|
||||
return ((ipp_op_t)strtol(name + 2, NULL, 16));
|
||||
|
||||
for (i = 0; i < (sizeof(ipp_std_ops) / sizeof(ipp_std_ops[0])); i ++)
|
||||
if (!_cups_strcasecmp(name, ipp_std_ops[i]))
|
||||
return ((ipp_op_t)i);
|
||||
@@ -1036,7 +773,6 @@ ipp_col_string(ipp_t *col, /* I - Collection attribute */
|
||||
{
|
||||
char *bufptr, /* Position in buffer */
|
||||
*bufend, /* End of buffer */
|
||||
prefix = '{', /* Prefix character */
|
||||
temp[256]; /* Temporary string */
|
||||
ipp_attribute_t *attr; /* Current member attribute */
|
||||
|
||||
@@ -1044,32 +780,24 @@ ipp_col_string(ipp_t *col, /* I - Collection attribute */
|
||||
bufptr = buffer;
|
||||
bufend = buffer + bufsize - 1;
|
||||
|
||||
if (buffer && bufptr < bufend)
|
||||
*bufptr = '{';
|
||||
bufptr ++;
|
||||
|
||||
for (attr = col->attrs; attr; attr = attr->next)
|
||||
{
|
||||
if (!attr->name)
|
||||
continue;
|
||||
|
||||
if (buffer && bufptr < bufend)
|
||||
*bufptr = prefix;
|
||||
bufptr ++;
|
||||
prefix = ' ';
|
||||
|
||||
if (buffer && bufptr < bufend)
|
||||
bufptr += snprintf(bufptr, bufend - bufptr + 1, "%s=", attr->name);
|
||||
else
|
||||
bufptr += strlen(attr->name) + 1;
|
||||
|
||||
if (buffer && bufptr < bufend)
|
||||
bufptr += ippAttributeString(attr, bufptr, bufend - bufptr + 1);
|
||||
bufptr += _ippAttrString(attr, bufptr, bufend - bufptr + 1);
|
||||
else
|
||||
bufptr += ippAttributeString(attr, temp, sizeof(temp));
|
||||
}
|
||||
|
||||
if (prefix == '{')
|
||||
{
|
||||
if (buffer && bufptr < bufend)
|
||||
*bufptr = prefix;
|
||||
bufptr ++;
|
||||
bufptr += _ippAttrString(attr, temp, sizeof(temp));
|
||||
}
|
||||
|
||||
if (buffer && bufptr < bufend)
|
||||
|
||||
+672
-3031
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
+194
-222
@@ -63,14 +63,53 @@ extern "C" {
|
||||
* Types and structures...
|
||||
*/
|
||||
|
||||
typedef enum ipp_dstate_e /**** Document states ****/
|
||||
typedef enum ipp_tag_e /**** Format tags for attributes ****/
|
||||
{
|
||||
IPP_DOCUMENT_PENDING = 3,
|
||||
IPP_DOCUMENT_PROCESSING = 5,
|
||||
IPP_DOCUMENT_CANCELED = 7,
|
||||
IPP_DOCUMENT_ABORTED,
|
||||
IPP_DOCUMENT_COMPLETED
|
||||
} ipp_dstate_t;
|
||||
IPP_TAG_ZERO = 0x00, /* Zero tag - used for separators */
|
||||
IPP_TAG_OPERATION, /* Operation group */
|
||||
IPP_TAG_JOB, /* Job group */
|
||||
IPP_TAG_END, /* End-of-attributes */
|
||||
IPP_TAG_PRINTER, /* Printer group */
|
||||
IPP_TAG_UNSUPPORTED_GROUP, /* Unsupported attributes group */
|
||||
IPP_TAG_SUBSCRIPTION, /* Subscription group */
|
||||
IPP_TAG_EVENT_NOTIFICATION, /* Event group */
|
||||
IPP_TAG_UNSUPPORTED_VALUE = 0x10, /* Unsupported value */
|
||||
IPP_TAG_DEFAULT, /* Default value */
|
||||
IPP_TAG_UNKNOWN, /* Unknown value */
|
||||
IPP_TAG_NOVALUE, /* No-value value */
|
||||
IPP_TAG_NOTSETTABLE = 0x15, /* Not-settable value */
|
||||
IPP_TAG_DELETEATTR, /* Delete-attribute value */
|
||||
IPP_TAG_ADMINDEFINE, /* Admin-defined value */
|
||||
IPP_TAG_INTEGER = 0x21, /* Integer value */
|
||||
IPP_TAG_BOOLEAN, /* Boolean value */
|
||||
IPP_TAG_ENUM, /* Enumeration value */
|
||||
IPP_TAG_STRING = 0x30, /* Octet string value */
|
||||
IPP_TAG_DATE, /* Date/time value */
|
||||
IPP_TAG_RESOLUTION, /* Resolution value */
|
||||
IPP_TAG_RANGE, /* Range value */
|
||||
IPP_TAG_BEGIN_COLLECTION, /* Beginning of collection value */
|
||||
IPP_TAG_TEXTLANG, /* Text-with-language value */
|
||||
IPP_TAG_NAMELANG, /* Name-with-language value */
|
||||
IPP_TAG_END_COLLECTION, /* End of collection value */
|
||||
IPP_TAG_TEXT = 0x41, /* Text value */
|
||||
IPP_TAG_NAME, /* Name value */
|
||||
IPP_TAG_RESERVED_STRING, /* Reserved for future string value @private@ */
|
||||
IPP_TAG_KEYWORD, /* Keyword value */
|
||||
IPP_TAG_URI, /* URI value */
|
||||
IPP_TAG_URISCHEME, /* URI scheme value */
|
||||
IPP_TAG_CHARSET, /* Character set value */
|
||||
IPP_TAG_LANGUAGE, /* Language value */
|
||||
IPP_TAG_MIMETYPE, /* MIME media type value */
|
||||
IPP_TAG_MEMBERNAME, /* Collection member name value */
|
||||
IPP_TAG_MASK = 0x7fffffff, /* Mask for copied attribute values */
|
||||
IPP_TAG_COPY = -0x7fffffff-1 /* Bitflag for copied attribute values */
|
||||
} ipp_tag_t;
|
||||
|
||||
typedef enum ipp_res_e /**** Resolution units ****/
|
||||
{
|
||||
IPP_RES_PER_INCH = 3, /* Pixels per inch */
|
||||
IPP_RES_PER_CM /* Pixels per centimeter */
|
||||
} ipp_res_t;
|
||||
|
||||
typedef enum ipp_finish_e /**** Finishings ****/
|
||||
{
|
||||
@@ -101,19 +140,23 @@ typedef enum ipp_finish_e /**** Finishings ****/
|
||||
IPP_FINISHINGS_BIND_LEFT = 50, /* Bind on left */
|
||||
IPP_FINISHINGS_BIND_TOP, /* Bind on top */
|
||||
IPP_FINISHINGS_BIND_RIGHT, /* Bind on right */
|
||||
IPP_FINISHINGS_BIND_BOTTOM, /* Bind on bottom */
|
||||
IPP_FINISHINGS_TRIM_AFTER_PAGES = 60, /* Trim output after each page */
|
||||
IPP_FINISHINGS_TRIM_AFTER_DOCUMENTS, /* Trim output after each document */
|
||||
IPP_FINISHINGS_TRIM_AFTER_COPIES, /* Trim output after each copy */
|
||||
IPP_FINISHINGS_TRIM_AFTER_JOB /* Trim output after job */
|
||||
IPP_FINISHINGS_BIND_BOTTOM /* Bind on bottom */
|
||||
} ipp_finish_t;
|
||||
|
||||
typedef enum ipp_jcollate_e /**** Job collation types ****/
|
||||
typedef enum ipp_orient_e /**** Orientation values ****/
|
||||
{
|
||||
IPP_JOB_UNCOLLATED_SHEETS = 3,
|
||||
IPP_JOB_COLLATED_DOCUMENTS,
|
||||
IPP_JOB_UNCOLLATED_DOCUMENTS
|
||||
} ipp_jcollate_t;
|
||||
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_quality_e /**** Qualities ****/
|
||||
{
|
||||
IPP_QUALITY_DRAFT = 3, /* Draft quality */
|
||||
IPP_QUALITY_NORMAL, /* Normal quality */
|
||||
IPP_QUALITY_HIGH /* High quality */
|
||||
} ipp_quality_t;
|
||||
|
||||
typedef enum ipp_jstate_e /**** Job states ****/
|
||||
{
|
||||
@@ -124,13 +167,27 @@ typedef enum ipp_jstate_e /**** Job states ****/
|
||||
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_JOB_CANCELED
|
||||
} ipp_jstate_t;
|
||||
#define IPP_JOB_CANCELLED IPP_JOB_CANCELED
|
||||
|
||||
typedef enum ipp_pstate_e /**** Printer states ****/
|
||||
{
|
||||
IPP_PRINTER_IDLE = 3, /* Printer is idle */
|
||||
IPP_PRINTER_PROCESSING, /* Printer is working */
|
||||
IPP_PRINTER_STOPPED /* Printer is stopped */
|
||||
} ipp_pstate_t;
|
||||
|
||||
typedef enum ipp_state_e /**** IPP states ****/
|
||||
{
|
||||
IPP_ERROR = -1, /* An error occurred */
|
||||
IPP_IDLE, /* Nothing is happening/request completed */
|
||||
IPP_HEADER, /* The request header needs to be sent/received */
|
||||
IPP_ATTRIBUTE, /* One or more attributes need to be sent/received */
|
||||
IPP_DATA /* IPP request data needs to be sent/received */
|
||||
} ipp_state_t;
|
||||
|
||||
typedef enum ipp_op_e /**** IPP operations ****/
|
||||
{
|
||||
IPP_OP_CUPS_INVALID = -1, /* Invalid operation name for @link ippOpValue@ */
|
||||
IPP_PRINT_JOB = 0x0002, /* Print a single file */
|
||||
IPP_PRINT_URI, /* Print a single URL @private@ */
|
||||
IPP_VALIDATE_JOB, /* Validate job options */
|
||||
@@ -158,10 +215,7 @@ typedef enum ipp_op_e /**** IPP operations ****/
|
||||
IPP_CANCEL_SUBSCRIPTION, /* Cancel a subscription @since CUPS 1.2/Mac OS X 10.5@ */
|
||||
IPP_GET_NOTIFICATIONS, /* Get notification events @since CUPS 1.2/Mac 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_GET_PRINT_SUPPORT_FILES = 0x0021, /* 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@ */
|
||||
@@ -187,7 +241,6 @@ typedef enum ipp_op_e /**** IPP operations ****/
|
||||
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_PRIVATE = 0x4000, /* Reserved @private@ */
|
||||
CUPS_GET_DEFAULT, /* Get the default printer */
|
||||
CUPS_GET_PRINTERS, /* Get a list of printers and/or classes */
|
||||
@@ -205,59 +258,21 @@ typedef enum ipp_op_e /**** IPP operations ****/
|
||||
CUPS_AUTHENTICATE_JOB, /* Authenticate a job @since CUPS 1.2/Mac OS X 10.5@ */
|
||||
CUPS_GET_PPD, /* Get a PPD file @since CUPS 1.3/Mac OS X 10.5@ */
|
||||
CUPS_GET_DOCUMENT = 0x4027 /* Get a document file @since CUPS 1.4/Mac OS X 10.6@ */
|
||||
|
||||
/* 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_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_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 ****/
|
||||
{
|
||||
IPP_QUALITY_DRAFT = 3, /* Draft quality */
|
||||
IPP_QUALITY_NORMAL, /* Normal quality */
|
||||
IPP_QUALITY_HIGH /* High quality */
|
||||
} ipp_quality_t;
|
||||
|
||||
typedef enum ipp_res_e /**** Resolution units ****/
|
||||
{
|
||||
IPP_RES_PER_INCH = 3, /* Pixels per inch */
|
||||
IPP_RES_PER_CM /* Pixels per centimeter */
|
||||
} ipp_res_t;
|
||||
|
||||
typedef enum ipp_state_e /**** IPP states ****/
|
||||
{
|
||||
IPP_ERROR = -1, /* An error occurred */
|
||||
IPP_IDLE, /* Nothing is happening/request completed */
|
||||
IPP_HEADER, /* The request header needs to be sent/received */
|
||||
IPP_ATTRIBUTE, /* One or more attributes need to be sent/received */
|
||||
IPP_DATA /* IPP request data needs to be sent/received */
|
||||
} ipp_state_t;
|
||||
/* Old names for the operations */
|
||||
#define CUPS_ADD_PRINTER CUPS_ADD_MODIFY_PRINTER
|
||||
#define CUPS_ADD_CLASS CUPS_ADD_MODIFY_CLASS
|
||||
|
||||
typedef enum ipp_status_e /**** IPP status codes ****/
|
||||
{
|
||||
IPP_STATUS_CUPS_INVALID = -1, /* Invalid status name for @link ippErrorValue@ */
|
||||
IPP_OK = 0x0000, /* successful-ok */
|
||||
IPP_OK_SUBST, /* successful-ok-ignored-or-substituted-attributes */
|
||||
IPP_OK_CONFLICT, /* successful-ok-conflicting-attributes */
|
||||
IPP_OK_IGNORED_SUBSCRIPTIONS, /* successful-ok-ignored-subscriptions */
|
||||
IPP_OK_IGNORED_NOTIFICATIONS, /* successful-ok-ignored-notifications @private@ */
|
||||
IPP_OK_IGNORED_NOTIFICATIONS, /* successful-ok-ignored-notifications */
|
||||
IPP_OK_TOO_MANY_EVENTS, /* successful-ok-too-many-events */
|
||||
IPP_OK_BUT_CANCEL_SUBSCRIPTION, /* successful-ok-but-cancel-subscription @private@ */
|
||||
IPP_OK_BUT_CANCEL_SUBSCRIPTION, /* successful-ok-but-cancel-subscription */
|
||||
IPP_OK_EVENTS_COMPLETE, /* successful-ok-events-complete */
|
||||
IPP_REDIRECTION_OTHER_SITE = 0x200, /* redirection-other-site @private@ */
|
||||
CUPS_SEE_OTHER = 0x280, /* cups-see-other */
|
||||
@@ -283,12 +298,8 @@ typedef enum ipp_status_e /**** IPP status codes ****/
|
||||
IPP_ATTRIBUTES_NOT_SETTABLE, /* client-error-attributes-not-settable */
|
||||
IPP_IGNORED_ALL_SUBSCRIPTIONS, /* client-error-ignored-all-subscriptions */
|
||||
IPP_TOO_MANY_SUBSCRIPTIONS, /* client-error-too-many-subscriptions */
|
||||
IPP_IGNORED_ALL_NOTIFICATIONS, /* client-error-ignored-all-notifications @private@ */
|
||||
IPP_PRINT_SUPPORT_FILE_NOT_FOUND, /* client-error-print-support-file-not-found @private@ */
|
||||
IPP_DOCUMENT_PASSWORD_ERROR, /* client-error-document-password-error */
|
||||
IPP_DOCUMENT_PERMISSION_ERROR, /* client-error-document-permission-error */
|
||||
IPP_DOCUMENT_SECURITY_ERROR, /* client-error-document-security-error */
|
||||
IPP_DOCUMENT_UNPRINTABLE_ERROR, /* client-error-document-unprintable-error */
|
||||
IPP_IGNORED_ALL_NOTIFICATIONS, /* client-error-ignored-all-notifications */
|
||||
IPP_PRINT_SUPPORT_FILE_NOT_FOUND, /* client-error-print-support-file-not-found */
|
||||
|
||||
IPP_INTERNAL_ERROR = 0x0500, /* server-error-internal-error */
|
||||
IPP_OPERATION_NOT_SUPPORTED, /* server-error-operation-not-supported */
|
||||
@@ -301,76 +312,116 @@ typedef enum ipp_status_e /**** IPP status codes ****/
|
||||
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_AUTHENTICATION_CANCELED = 0x1000, /* Authentication canceled by user @since CUPS 1.5/Mac OS X 10.7@ */
|
||||
IPP_PKI_ERROR, /* Error negotiating a secure connection @since CUPS 1.5/Mac OS X 10.7@ */
|
||||
IPP_UPGRADE_REQUIRED /* TLS upgrade required */
|
||||
|
||||
/* Legacy name for canceled status */
|
||||
} ipp_status_t;
|
||||
#define IPP_ERROR_JOB_CANCELLED IPP_ERROR_JOB_CANCELED
|
||||
|
||||
} ipp_status_t;
|
||||
|
||||
typedef enum ipp_tag_e /**** Format tags for attributes ****/
|
||||
{
|
||||
IPP_TAG_CUPS_INVALID = -1, /* Invalid tag name for @link ippTagValue@ */
|
||||
IPP_TAG_ZERO = 0x00, /* Zero tag - used for separators */
|
||||
IPP_TAG_OPERATION, /* Operation group */
|
||||
IPP_TAG_JOB, /* Job group */
|
||||
IPP_TAG_END, /* End-of-attributes */
|
||||
IPP_TAG_PRINTER, /* Printer group */
|
||||
IPP_TAG_UNSUPPORTED_GROUP, /* Unsupported attributes group */
|
||||
IPP_TAG_SUBSCRIPTION, /* Subscription group */
|
||||
IPP_TAG_EVENT_NOTIFICATION, /* Event group */
|
||||
IPP_TAG_RESOURCE, /* Resource group @private@ */
|
||||
IPP_TAG_DOCUMENT, /* Document group */
|
||||
IPP_TAG_UNSUPPORTED_VALUE = 0x10, /* Unsupported value */
|
||||
IPP_TAG_DEFAULT, /* Default value */
|
||||
IPP_TAG_UNKNOWN, /* Unknown value */
|
||||
IPP_TAG_NOVALUE, /* No-value value */
|
||||
IPP_TAG_NOTSETTABLE = 0x15, /* Not-settable value */
|
||||
IPP_TAG_DELETEATTR, /* Delete-attribute value */
|
||||
IPP_TAG_ADMINDEFINE, /* Admin-defined value */
|
||||
IPP_TAG_INTEGER = 0x21, /* Integer value */
|
||||
IPP_TAG_BOOLEAN, /* Boolean value */
|
||||
IPP_TAG_ENUM, /* Enumeration value */
|
||||
IPP_TAG_STRING = 0x30, /* Octet string value */
|
||||
IPP_TAG_DATE, /* Date/time value */
|
||||
IPP_TAG_RESOLUTION, /* Resolution value */
|
||||
IPP_TAG_RANGE, /* Range value */
|
||||
IPP_TAG_BEGIN_COLLECTION, /* Beginning of collection value */
|
||||
IPP_TAG_TEXTLANG, /* Text-with-language value */
|
||||
IPP_TAG_NAMELANG, /* Name-with-language value */
|
||||
IPP_TAG_END_COLLECTION, /* End of collection value */
|
||||
IPP_TAG_TEXT = 0x41, /* Text value */
|
||||
IPP_TAG_NAME, /* Name value */
|
||||
IPP_TAG_RESERVED_STRING, /* Reserved for future string value @private@ */
|
||||
IPP_TAG_KEYWORD, /* Keyword value */
|
||||
IPP_TAG_URI, /* URI value */
|
||||
IPP_TAG_URISCHEME, /* URI scheme value */
|
||||
IPP_TAG_CHARSET, /* Character set value */
|
||||
IPP_TAG_LANGUAGE, /* Language value */
|
||||
IPP_TAG_MIMETYPE, /* MIME media type value */
|
||||
IPP_TAG_MEMBERNAME, /* Collection member name value */
|
||||
IPP_TAG_EXTENSION = 0x7f, /* Extension point for 32-bit tags */
|
||||
IPP_TAG_MASK = 0x7fffffff, /* Mask for copied attribute values @private@ */
|
||||
/* The following expression is used to avoid compiler warnings with +/-0x80000000 */
|
||||
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 ****/
|
||||
typedef struct _ipp_s ipp_t; /**** IPP request/response data ****/
|
||||
typedef struct _ipp_attribute_s ipp_attribute_t;
|
||||
/**** IPP attribute ****/
|
||||
|
||||
/**** New in CUPS 1.2 ****/
|
||||
typedef ssize_t (*ipp_iocb_t)(void *context, ipp_uchar_t *buffer, size_t bytes);
|
||||
typedef ssize_t (*ipp_iocb_t)(void *, ipp_uchar_t *, size_t);
|
||||
/**** IPP IO Callback Function @since CUPS 1.2/Mac OS X 10.5@ ****/
|
||||
|
||||
/**** New in CUPS 1.6 ****/
|
||||
typedef int (*ipp_copycb_t)(void *context, ipp_t *dst, ipp_attribute_t *attr);
|
||||
typedef union ipp_request_u /**** Request Header ****/
|
||||
{
|
||||
struct /* Any Header */
|
||||
{
|
||||
ipp_uchar_t version[2]; /* Protocol version number */
|
||||
int op_status; /* Operation ID or status code*/
|
||||
int request_id; /* Request ID */
|
||||
} any;
|
||||
|
||||
struct /* Operation Header */
|
||||
{
|
||||
ipp_uchar_t version[2]; /* Protocol version number */
|
||||
ipp_op_t operation_id; /* Operation ID */
|
||||
int request_id; /* Request ID */
|
||||
} op;
|
||||
|
||||
struct /* Status Header */
|
||||
{
|
||||
ipp_uchar_t version[2]; /* Protocol version number */
|
||||
ipp_status_t status_code; /* Status code */
|
||||
int request_id; /* Request ID */
|
||||
} status;
|
||||
|
||||
/**** New in CUPS 1.1.19 ****/
|
||||
struct /* Event Header @since CUPS 1.1.19/Mac OS X 10.3@ */
|
||||
{
|
||||
ipp_uchar_t version[2]; /* Protocol version number */
|
||||
ipp_status_t status_code; /* Status code */
|
||||
int request_id; /* Request ID */
|
||||
} event;
|
||||
} ipp_request_t;
|
||||
|
||||
/**** New in CUPS 1.1.19 ****/
|
||||
typedef struct ipp_s ipp_t;
|
||||
|
||||
typedef union ipp_value_u /**** Attribute Value ****/
|
||||
{
|
||||
int integer; /* Integer/enumerated value */
|
||||
|
||||
char boolean; /* Boolean value */
|
||||
|
||||
ipp_uchar_t date[11]; /* Date/time value */
|
||||
|
||||
struct
|
||||
{
|
||||
int xres, /* Horizontal resolution */
|
||||
yres; /* Vertical resolution */
|
||||
ipp_res_t units; /* Resolution units */
|
||||
} resolution; /* Resolution value */
|
||||
|
||||
struct
|
||||
{
|
||||
int lower, /* Lower value */
|
||||
upper; /* Upper value */
|
||||
} range; /* Range of integers value */
|
||||
|
||||
struct
|
||||
{
|
||||
char *charset; /* Character set */
|
||||
char *text; /* String */
|
||||
} string; /* String with language value */
|
||||
|
||||
struct
|
||||
{
|
||||
int length; /* Length of attribute */
|
||||
void *data; /* Data in attribute */
|
||||
} unknown; /* Unknown attribute type */
|
||||
|
||||
/**** New in CUPS 1.1.19 ****/
|
||||
ipp_t *collection; /* Collection value @since CUPS 1.1.19/Mac OS X 10.3@ */
|
||||
} ipp_value_t;
|
||||
|
||||
typedef struct ipp_attribute_s /**** Attribute ****/
|
||||
{
|
||||
struct ipp_attribute_s *next; /* Next attribute in list */
|
||||
ipp_tag_t group_tag, /* Job/Printer/Operation group tag */
|
||||
value_tag; /* What type of value is it? */
|
||||
char *name; /* Name of attribute */
|
||||
int num_values; /* Number of values */
|
||||
ipp_value_t values[1]; /* Values */
|
||||
} ipp_attribute_t;
|
||||
|
||||
struct ipp_s /**** IPP Request/Response/Notification ****/
|
||||
{
|
||||
ipp_state_t state; /* State of request */
|
||||
ipp_request_t request; /* Request header */
|
||||
ipp_attribute_t *attrs; /* Attributes */
|
||||
ipp_attribute_t *last; /* Last attribute in list */
|
||||
ipp_attribute_t *current; /* Current attribute (for read/write) */
|
||||
ipp_tag_t curtag; /* Current attribute group tag */
|
||||
|
||||
/**** New in CUPS 1.2 ****/
|
||||
ipp_attribute_t *prev; /* Previous attribute (for read) @since CUPS 1.2/Mac OS X 10.5@ */
|
||||
|
||||
/**** New in CUPS 1.4.4 ****/
|
||||
int use; /* Use count @since CUPS 1.4.4/Mac OS X 10.6.?@ */
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
@@ -385,10 +436,10 @@ extern ipp_attribute_t *ippAddBooleans(ipp_t *ipp, ipp_tag_t group,
|
||||
extern ipp_attribute_t *ippAddDate(ipp_t *ipp, ipp_tag_t group,
|
||||
const char *name, const ipp_uchar_t *value);
|
||||
extern ipp_attribute_t *ippAddInteger(ipp_t *ipp, ipp_tag_t group,
|
||||
ipp_tag_t value_tag, const char *name,
|
||||
ipp_tag_t type, const char *name,
|
||||
int value);
|
||||
extern ipp_attribute_t *ippAddIntegers(ipp_t *ipp, ipp_tag_t group,
|
||||
ipp_tag_t value_tag, const char *name,
|
||||
ipp_tag_t type, const char *name,
|
||||
int num_values, const int *values);
|
||||
extern ipp_attribute_t *ippAddRange(ipp_t *ipp, ipp_tag_t group,
|
||||
const char *name, int lower, int upper);
|
||||
@@ -404,19 +455,19 @@ extern ipp_attribute_t *ippAddResolutions(ipp_t *ipp, ipp_tag_t group,
|
||||
const int *yres);
|
||||
extern ipp_attribute_t *ippAddSeparator(ipp_t *ipp);
|
||||
extern ipp_attribute_t *ippAddString(ipp_t *ipp, ipp_tag_t group,
|
||||
ipp_tag_t value_tag, const char *name,
|
||||
const char *language, const char *value);
|
||||
ipp_tag_t type, const char *name,
|
||||
const char *charset, const char *value);
|
||||
extern ipp_attribute_t *ippAddStrings(ipp_t *ipp, ipp_tag_t group,
|
||||
ipp_tag_t value_tag, const char *name,
|
||||
int num_values, const char *language,
|
||||
ipp_tag_t type, const char *name,
|
||||
int num_values, const char *charset,
|
||||
const char * const *values);
|
||||
extern time_t ippDateToTime(const ipp_uchar_t *date);
|
||||
extern void ippDelete(ipp_t *ipp);
|
||||
extern const char *ippErrorString(ipp_status_t error);
|
||||
extern ipp_attribute_t *ippFindAttribute(ipp_t *ipp, const char *name,
|
||||
ipp_tag_t value_tag);
|
||||
ipp_tag_t type);
|
||||
extern ipp_attribute_t *ippFindNextAttribute(ipp_t *ipp, const char *name,
|
||||
ipp_tag_t value_tag);
|
||||
ipp_tag_t type);
|
||||
extern size_t ippLength(ipp_t *ipp);
|
||||
extern ipp_t *ippNew(void);
|
||||
extern ipp_state_t ippRead(http_t *http, ipp_t *ipp);
|
||||
@@ -435,7 +486,7 @@ extern void ippDeleteAttribute(ipp_t *ipp, ipp_attribute_t *attr) _CUPS_API_1_1
|
||||
extern ipp_state_t ippReadFile(int fd, ipp_t *ipp) _CUPS_API_1_1_19;
|
||||
extern ipp_state_t ippWriteFile(int fd, ipp_t *ipp) _CUPS_API_1_1_19;
|
||||
|
||||
/**** New in CUPS 1.2/Mac OS X 10.5 ****/
|
||||
/**** New in CUPS 1.2 ****/
|
||||
extern ipp_attribute_t *ippAddOctetString(ipp_t *ipp, ipp_tag_t group,
|
||||
const char *name,
|
||||
const void *data, int datalen) _CUPS_API_1_2;
|
||||
@@ -448,89 +499,10 @@ extern ipp_state_t ippReadIO(void *src, ipp_iocb_t cb, int blocking,
|
||||
extern ipp_state_t ippWriteIO(void *dst, ipp_iocb_t cb, int blocking,
|
||||
ipp_t *parent, ipp_t *ipp) _CUPS_API_1_2;
|
||||
|
||||
/**** New in CUPS 1.4/Mac OS X 10.6 ****/
|
||||
/**** New in CUPS 1.4 ****/
|
||||
extern const char *ippTagString(ipp_tag_t tag) _CUPS_API_1_4;
|
||||
extern ipp_tag_t ippTagValue(const char *name) _CUPS_API_1_4;
|
||||
|
||||
/**** New in CUPS 1.6 ****/
|
||||
extern ipp_attribute_t *ippAddOutOfBand(ipp_t *ipp, ipp_tag_t group,
|
||||
ipp_tag_t value_tag, const char *name)
|
||||
_CUPS_API_1_6;
|
||||
extern size_t ippAttributeString(ipp_attribute_t *attr, char *buffer,
|
||||
size_t bufsize) _CUPS_API_1_6;
|
||||
extern ipp_attribute_t *ippCopyAttribute(ipp_t *dst, ipp_attribute_t *attr,
|
||||
int quickcopy) _CUPS_API_1_6;
|
||||
extern int ippCopyAttributes(ipp_t *dst, ipp_t *src,
|
||||
int quickcopy, ipp_copycb_t cb,
|
||||
void *context) _CUPS_API_1_6;
|
||||
extern int ippDeleteValues(ipp_t *ipp, ipp_attribute_t **attr,
|
||||
int element, int count) _CUPS_API_1_6;
|
||||
extern const char *ippEnumString(const char *attrname, int enumvalue)
|
||||
_CUPS_API_1_6;
|
||||
extern int ippEnumValue(const char *attrname,
|
||||
const char *enumstring) _CUPS_API_1_6;
|
||||
extern ipp_attribute_t *ippFirstAttribute(ipp_t *ipp) _CUPS_API_1_6;
|
||||
extern int ippGetBoolean(ipp_attribute_t *attr, int element)
|
||||
_CUPS_API_1_6;
|
||||
extern ipp_t *ippGetCollection(ipp_attribute_t *attr,
|
||||
int element) _CUPS_API_1_6;
|
||||
extern int ippGetCount(ipp_attribute_t *attr) _CUPS_API_1_6;
|
||||
extern const ipp_uchar_t *ippGetDate(ipp_attribute_t *attr, int element)
|
||||
_CUPS_API_1_6;
|
||||
extern ipp_tag_t ippGetGroupTag(ipp_attribute_t *attr) _CUPS_API_1_6;
|
||||
extern int ippGetInteger(ipp_attribute_t *attr, int element)
|
||||
_CUPS_API_1_6;
|
||||
extern const char *ippGetName(ipp_attribute_t *attr) _CUPS_API_1_6;
|
||||
extern ipp_op_t ippGetOperation(ipp_t *ipp) _CUPS_API_1_6;
|
||||
extern int ippGetRange(ipp_attribute_t *attr, int element,
|
||||
int *upper) _CUPS_API_1_6;
|
||||
extern int ippGetRequestId(ipp_t *ipp) _CUPS_API_1_6;
|
||||
extern int ippGetResolution(ipp_attribute_t *attr, int element,
|
||||
int *yres, ipp_res_t *units)
|
||||
_CUPS_API_1_6;
|
||||
extern ipp_state_t ippGetState(ipp_t *ipp) _CUPS_API_1_6;
|
||||
extern ipp_status_t ippGetStatusCode(ipp_t *ipp) _CUPS_API_1_6;
|
||||
extern const char *ippGetString(ipp_attribute_t *attr, int element,
|
||||
const char **language) _CUPS_API_1_6;
|
||||
extern ipp_tag_t ippGetValueTag(ipp_attribute_t *attr) _CUPS_API_1_6;
|
||||
extern int ippGetVersion(ipp_t *ipp, int *minor) _CUPS_API_1_6;
|
||||
extern ipp_attribute_t *ippNextAttribute(ipp_t *ipp) _CUPS_API_1_6;
|
||||
extern int ippSetBoolean(ipp_t *ipp, ipp_attribute_t **attr,
|
||||
int element, int boolvalue) _CUPS_API_1_6;
|
||||
extern int ippSetCollection(ipp_t *ipp, ipp_attribute_t **attr,
|
||||
int element, ipp_t *colvalue)
|
||||
_CUPS_API_1_6;
|
||||
extern int ippSetDate(ipp_t *ipp, ipp_attribute_t **attr,
|
||||
int element, const ipp_uchar_t *datevalue)
|
||||
_CUPS_API_1_6;
|
||||
extern int ippSetGroupTag(ipp_t *ipp, ipp_attribute_t **attr,
|
||||
ipp_tag_t group_tag) _CUPS_API_1_6;
|
||||
extern int ippSetInteger(ipp_t *ipp, ipp_attribute_t **attr,
|
||||
int element, int intvalue) _CUPS_API_1_6;
|
||||
extern int ippSetName(ipp_t *ipp, ipp_attribute_t **attr,
|
||||
const char *name) _CUPS_API_1_6;
|
||||
extern int ippSetOperation(ipp_t *ipp, ipp_op_t op) _CUPS_API_1_6;
|
||||
extern int ippSetRange(ipp_t *ipp, ipp_attribute_t **attr,
|
||||
int element, int lowervalue, int uppervalue)
|
||||
_CUPS_API_1_6;
|
||||
extern int ippSetRequestId(ipp_t *ipp, int request_id)
|
||||
_CUPS_API_1_6;
|
||||
extern int ippSetResolution(ipp_t *ipp, ipp_attribute_t **attr,
|
||||
int element, ipp_res_t unitsvalue,
|
||||
int xresvalue, int yresvalue)
|
||||
_CUPS_API_1_6;
|
||||
extern int ippSetState(ipp_t *ipp, ipp_state_t state)
|
||||
_CUPS_API_1_6;
|
||||
extern int ippSetStatusCode(ipp_t *ipp, ipp_status_t status)
|
||||
_CUPS_API_1_6;
|
||||
extern int ippSetString(ipp_t *ipp, ipp_attribute_t **attr,
|
||||
int element, const char *strvalue)
|
||||
_CUPS_API_1_6;
|
||||
extern int ippSetValueTag(ipp_t *ipp, ipp_attribute_t **attr,
|
||||
ipp_tag_t value_tag) _CUPS_API_1_6;
|
||||
extern int ippSetVersion(ipp_t *ipp, int major, int minor)
|
||||
_CUPS_API_1_6;
|
||||
|
||||
|
||||
/*
|
||||
* C++ magic...
|
||||
|
||||
@@ -62,9 +62,15 @@ extern void _cupsLangPrintError(const char *prefix,
|
||||
const char *message);
|
||||
extern int _cupsLangPrintFilter(FILE *fp, const char *prefix,
|
||||
const char *message, ...)
|
||||
__attribute__ ((__format__ (__printf__, 3, 4)));
|
||||
# ifdef __GNUC__
|
||||
__attribute__ ((__format__ (__printf__, 3, 4)))
|
||||
# endif /* __GNUC__ */
|
||||
;
|
||||
extern int _cupsLangPrintf(FILE *fp, const char *message, ...)
|
||||
__attribute__ ((__format__ (__printf__, 2, 3)));
|
||||
# ifdef __GNUC__
|
||||
__attribute__ ((__format__ (__printf__, 2, 3)))
|
||||
# endif /* __GNUC__ */
|
||||
;
|
||||
extern int _cupsLangPuts(FILE *fp, const char *message);
|
||||
extern const char *_cupsLangString(cups_lang_t *lang,
|
||||
const char *message);
|
||||
|
||||
+52
-61
@@ -35,7 +35,6 @@
|
||||
* cups_cache_lookup() - Lookup a language in the cache...
|
||||
* cups_message_compare() - Compare two messages.
|
||||
* cups_message_free() - Free a message.
|
||||
* cups_message_load() - Load the message catalog for a language.
|
||||
* cups_unquote() - Unquote characters in strings...
|
||||
*/
|
||||
|
||||
@@ -81,7 +80,7 @@ static const char * const lang_encodings[] =
|
||||
"cp1256", "cp1257",
|
||||
"cp1258", "koi8-r",
|
||||
"koi8-u", "iso-8859-11",
|
||||
"iso-8859-16", "mac",
|
||||
"iso-8859-16", "mac-roman",
|
||||
"unknown", "unknown",
|
||||
"unknown", "unknown",
|
||||
"unknown", "unknown",
|
||||
@@ -177,7 +176,6 @@ static cups_lang_t *cups_cache_lookup(const char *name,
|
||||
static int cups_message_compare(_cups_message_t *m1,
|
||||
_cups_message_t *m2);
|
||||
static void cups_message_free(_cups_message_t *m);
|
||||
static void cups_message_load(cups_lang_t *lang);
|
||||
static void cups_unquote(char *d, const char *s);
|
||||
|
||||
|
||||
@@ -395,6 +393,11 @@ cupsLangGet(const char *language) /* I - Language or locale */
|
||||
real[48]; /* Real language name */
|
||||
cups_encoding_t encoding; /* Encoding to use */
|
||||
cups_lang_t *lang; /* Current language... */
|
||||
#if !defined(__APPLE__) || !defined(CUPS_BUNDLEDIR)
|
||||
char filename[1024]; /* Filename for language locale file */
|
||||
_cups_globals_t *cg = _cupsGlobals();
|
||||
/* Pointer to library globals */
|
||||
#endif /* !__APPLE__ || !CUPS_BUNDLEDIR */
|
||||
static const char * const locale_encodings[] =
|
||||
{ /* Locale charset names */
|
||||
"ASCII", "ISO88591", "ISO88592", "ISO88593",
|
||||
@@ -698,9 +701,21 @@ cupsLangGet(const char *language) /* I - Language or locale */
|
||||
*/
|
||||
|
||||
if (country[0])
|
||||
{
|
||||
snprintf(real, sizeof(real), "%s_%s", langname, country);
|
||||
|
||||
#if !defined(__APPLE__) || !defined(CUPS_BUNDLEDIR)
|
||||
snprintf(filename, sizeof(filename), "%s/%s/cups_%s.po", cg->localedir,
|
||||
real, real);
|
||||
#endif /* !__APPLE__ || !CUPS_BUNDLEDIR */
|
||||
}
|
||||
else
|
||||
{
|
||||
strcpy(real, langname);
|
||||
#if !defined(__APPLE__) || !defined(CUPS_BUNDLEDIR)
|
||||
filename[0] = '\0'; /* anti-compiler-warning-code */
|
||||
#endif /* !__APPLE__ || !CUPS_BUNDLEDIR */
|
||||
}
|
||||
|
||||
_cupsMutexLock(&lang_mutex);
|
||||
|
||||
@@ -713,6 +728,30 @@ cupsLangGet(const char *language) /* I - Language or locale */
|
||||
return (lang);
|
||||
}
|
||||
|
||||
#if !defined(__APPLE__) || !defined(CUPS_BUNDLEDIR)
|
||||
if (!country[0] || access(filename, 0))
|
||||
{
|
||||
/*
|
||||
* Country localization not available, look for generic localization...
|
||||
*/
|
||||
|
||||
snprintf(filename, sizeof(filename), "%s/%s/cups_%s.po", cg->localedir,
|
||||
langname, langname);
|
||||
|
||||
if (access(filename, 0))
|
||||
{
|
||||
/*
|
||||
* No generic localization, so use POSIX...
|
||||
*/
|
||||
|
||||
DEBUG_printf(("4cupsLangGet: access(\"%s\", 0): %s", filename,
|
||||
strerror(errno)));
|
||||
|
||||
snprintf(filename, sizeof(filename), "%s/C/cups_C.po", cg->localedir);
|
||||
}
|
||||
}
|
||||
#endif /* !__APPLE__ || !CUPS_BUNDLEDIR */
|
||||
|
||||
/*
|
||||
* See if there is a free language available; if so, use that
|
||||
* record...
|
||||
@@ -745,7 +784,6 @@ cupsLangGet(const char *language) /* I - Language or locale */
|
||||
*/
|
||||
|
||||
_cupsMessageFree(lang->strings);
|
||||
lang->strings = NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -760,6 +798,16 @@ cupsLangGet(const char *language) /* I - Language or locale */
|
||||
else
|
||||
lang->encoding = CUPS_UTF8;
|
||||
|
||||
/*
|
||||
* Read the strings from the file...
|
||||
*/
|
||||
|
||||
#if defined(__APPLE__) && defined(CUPS_BUNDLEDIR)
|
||||
lang->strings = appleMessageLoad(lang->language);
|
||||
#else
|
||||
lang->strings = _cupsMessageLoad(filename, 1);
|
||||
#endif /* __APPLE__ && CUPS_BUNDLEDIR */
|
||||
|
||||
/*
|
||||
* Return...
|
||||
*/
|
||||
@@ -792,13 +840,6 @@ _cupsLangString(cups_lang_t *lang, /* I - Language */
|
||||
|
||||
_cupsMutexLock(&lang_mutex);
|
||||
|
||||
/*
|
||||
* Load the message catalog if needed...
|
||||
*/
|
||||
|
||||
if (!lang->strings)
|
||||
cups_message_load(lang);
|
||||
|
||||
s = _cupsMessageLookup(lang->strings, message);
|
||||
|
||||
_cupsMutexUnlock(&lang_mutex);
|
||||
@@ -1416,56 +1457,6 @@ cups_message_free(_cups_message_t *m) /* I - Message */
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'cups_message_load()' - Load the message catalog for a language.
|
||||
*/
|
||||
|
||||
static void
|
||||
cups_message_load(cups_lang_t *lang) /* I - Language */
|
||||
{
|
||||
#if defined(__APPLE__) && defined(CUPS_BUNDLEDIR)
|
||||
lang->strings = appleMessageLoad(lang->language);
|
||||
|
||||
#else
|
||||
char filename[1024]; /* Filename for language locale file */
|
||||
_cups_globals_t *cg = _cupsGlobals();
|
||||
/* Pointer to library globals */
|
||||
|
||||
|
||||
snprintf(filename, sizeof(filename), "%s/%s/cups_%s.po", cg->localedir,
|
||||
lang->language, lang->language);
|
||||
|
||||
if (strchr(lang->language, '_') && access(filename, 0))
|
||||
{
|
||||
/*
|
||||
* Country localization not available, look for generic localization...
|
||||
*/
|
||||
|
||||
snprintf(filename, sizeof(filename), "%s/%.2s/cups_%.2s.po", cg->localedir,
|
||||
lang->language, lang->language);
|
||||
|
||||
if (access(filename, 0))
|
||||
{
|
||||
/*
|
||||
* No generic localization, so use POSIX...
|
||||
*/
|
||||
|
||||
DEBUG_printf(("4cups_message_load: access(\"%s\", 0): %s", filename,
|
||||
strerror(errno)));
|
||||
|
||||
snprintf(filename, sizeof(filename), "%s/C/cups_C.po", cg->localedir);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Read the strings from the file...
|
||||
*/
|
||||
|
||||
lang->strings = _cupsMessageLoad(filename, 1);
|
||||
#endif /* __APPLE__ && CUPS_BUNDLEDIR */
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'cups_unquote()' - Unquote characters in strings...
|
||||
*/
|
||||
|
||||
+17
-61
@@ -1,8 +1,6 @@
|
||||
LIBRARY libcups2
|
||||
VERSION 2.9
|
||||
EXPORTS
|
||||
_cupsBufferGet
|
||||
_cupsBufferRelease
|
||||
_cupsGet1284Values
|
||||
_cupsGetDests
|
||||
_cupsGetPassword
|
||||
@@ -17,8 +15,6 @@ _cupsMD5Init
|
||||
_cupsMessageFree
|
||||
_cupsMessageLoad
|
||||
_cupsMessageLookup
|
||||
_cupsMutexLock
|
||||
_cupsMutexUnlock
|
||||
_cupsNextDelay
|
||||
_cupsSetError
|
||||
_cupsSetLocale
|
||||
@@ -29,8 +25,6 @@ _cupsStrFree
|
||||
_cupsStrRetain
|
||||
_cupsStrScand
|
||||
_cupsStrStatistics
|
||||
_cups_strcasecmp
|
||||
_cups_strncasecmp
|
||||
_cups_strcpy
|
||||
_cups_strlcat
|
||||
_cups_strlcpy
|
||||
@@ -41,35 +35,38 @@ _httpCreate
|
||||
_httpEncodeURI
|
||||
_httpPeek
|
||||
_httpResolveURI
|
||||
_httpSetTimeout
|
||||
_httpWait
|
||||
_ippAddAttr
|
||||
_ippAttrString
|
||||
_ippFindOption
|
||||
_ppdCacheCreateWithFile
|
||||
_ppdCacheCreateWithPPD
|
||||
_ppdCacheDestroy
|
||||
_ppdCacheGetBin
|
||||
_ppdCacheGetInputSlot
|
||||
_ppdCacheGetMediaType
|
||||
_ppdCacheGetOutputBin
|
||||
_ppdCacheGetPageSize
|
||||
_ppdCacheGetSize
|
||||
_ppdCacheGetSource
|
||||
_ppdCacheGetType
|
||||
_ppdCacheWriteFile
|
||||
_ippFreeAttr
|
||||
_ppdFreeLanguages
|
||||
_ppdGetEncoding
|
||||
_ppdGetLanguages
|
||||
_ppdHashName
|
||||
_ppdLocalizedAttr
|
||||
_ppdNormalizeMakeAndModel
|
||||
_ppdOpen
|
||||
_ppdOpenFile
|
||||
_ppdParseOptions
|
||||
_pwgCreateWithFile
|
||||
_pwgDestroy
|
||||
_pwgWriteFile
|
||||
_pwgGenerateSize
|
||||
_pwgInitSize
|
||||
_pwgMediaForLegacy
|
||||
_pwgMediaForPPD
|
||||
_pwgMediaForPWG
|
||||
_pwgMediaForSize
|
||||
_pwgCreateWithPPD
|
||||
_pwgGetBin
|
||||
_pwgGetInputSlot
|
||||
_pwgGetMediaType
|
||||
_pwgGetOutputBin
|
||||
_pwgGetPageSize
|
||||
_pwgGetSize
|
||||
_pwgGetSource
|
||||
_pwgGetType
|
||||
_pwgInputSlotForSource
|
||||
_pwgMediaTypeForType
|
||||
_pwgPageSizeForMedia
|
||||
cupsAddDest
|
||||
@@ -260,7 +257,6 @@ httpSetCredentials
|
||||
httpSetExpect
|
||||
httpSetField
|
||||
httpSetLength
|
||||
httpSetTimeout
|
||||
httpStatus
|
||||
httpTrace
|
||||
httpUpdate
|
||||
@@ -275,7 +271,6 @@ ippAddDate
|
||||
ippAddInteger
|
||||
ippAddIntegers
|
||||
ippAddOctetString
|
||||
ippAddOutOfBand
|
||||
ippAddRange
|
||||
ippAddRanges
|
||||
ippAddResolution
|
||||
@@ -283,40 +278,16 @@ ippAddResolutions
|
||||
ippAddSeparator
|
||||
ippAddString
|
||||
ippAddStrings
|
||||
ippAttributeString
|
||||
ippCopyAttribute
|
||||
ippCopyAttributes
|
||||
ippDateToTime
|
||||
ippDelete
|
||||
ippDeleteAttribute
|
||||
ippDeleteValues
|
||||
ippEnumString
|
||||
ippEnumValue
|
||||
ippErrorString
|
||||
ippErrorValue
|
||||
ippFindAttribute
|
||||
ippFindNextAttribute
|
||||
ippFirstAttribute
|
||||
ippGetBoolean
|
||||
ippGetCollection
|
||||
ippGetCount
|
||||
ippGetDate
|
||||
ippGetGroupTag
|
||||
ippGetInteger
|
||||
ippGetName
|
||||
ippGetOperation
|
||||
ippGetRange
|
||||
ippGetRequestId
|
||||
ippGetResolution
|
||||
ippGetState
|
||||
ippGetStatusCode
|
||||
ippGetString
|
||||
ippGetValueTag
|
||||
ippGetVersion
|
||||
ippLength
|
||||
ippNew
|
||||
ippNewRequest
|
||||
ippNextAttribute
|
||||
ippOpString
|
||||
ippOpValue
|
||||
ippPort
|
||||
@@ -324,21 +295,6 @@ ippRead
|
||||
ippReadFile
|
||||
ippReadIO
|
||||
ippSetPort
|
||||
ippSetBoolean
|
||||
ippSetCollection
|
||||
ippSetDate
|
||||
ippSetGroupTag
|
||||
ippSetInteger
|
||||
ippSetName
|
||||
ippSetOperation
|
||||
ippSetRange
|
||||
ippSetRequestId
|
||||
ippSetResolution
|
||||
ippSetState
|
||||
ippSetStatusCode
|
||||
ippSetString
|
||||
ippSetValueTag
|
||||
ippSetVersion
|
||||
ippTagString
|
||||
ippTagValue
|
||||
ippTimeToDate
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
_cups_debug_fd
|
||||
_cupsBufferGet
|
||||
_cupsBufferRelease
|
||||
_cupsGet1284Values
|
||||
_cupsGetDests
|
||||
_cupsGetPassword
|
||||
@@ -52,15 +50,15 @@ _httpPeek
|
||||
_httpResolveURI
|
||||
_httpSetTimeout
|
||||
_httpWait
|
||||
_ippAddAttr
|
||||
_ippFindOption
|
||||
_ippFreeAttr
|
||||
_ppdFreeLanguages
|
||||
_ppdGetEncoding
|
||||
_ppdGetLanguages
|
||||
_ppdHashName
|
||||
_ppdLocalizedAttr
|
||||
_ppdNormalizeMakeAndModel
|
||||
_ppdOpen
|
||||
_ppdOpenFile
|
||||
_ppdParseOptions
|
||||
_pwgCreateWithFile
|
||||
_pwgDestroy
|
||||
|
||||
+2
-2
@@ -332,9 +332,9 @@ ppdLocalizeIPPReason(
|
||||
else if (!strncmp(reason, "output-area-full", 16))
|
||||
message = _("The output bin is full.");
|
||||
else if (!strncmp(reason, "marker-supply-low", 17))
|
||||
message = _("The printer is low on ink.");
|
||||
message = _("The printer is almost out of ink.");
|
||||
else if (!strncmp(reason, "marker-supply-empty", 19))
|
||||
message = _("The printer may be out of ink.");
|
||||
message = _("The printer is out of ink.");
|
||||
else if (!strncmp(reason, "marker-waste-almost-full", 24))
|
||||
message = _("The printer's waste bin is almost full.");
|
||||
else if (!strncmp(reason, "marker-waste-full", 17))
|
||||
|
||||
+3
-5
@@ -257,13 +257,11 @@ cupsMarkOptions(
|
||||
* Map sides to duplex option...
|
||||
*/
|
||||
|
||||
if (!strcmp(sides, "one-sided") && cache->sides_1sided)
|
||||
if (!strcmp(sides, "one-sided"))
|
||||
ppd_mark_option(ppd, cache->sides_option, cache->sides_1sided);
|
||||
else if (!strcmp(sides, "two-sided-long-edge") &&
|
||||
cache->sides_2sided_long)
|
||||
else if (!strcmp(sides, "two-sided-long-edge"))
|
||||
ppd_mark_option(ppd, cache->sides_option, cache->sides_2sided_long);
|
||||
else if (!strcmp(sides, "two-sided-short-edge") &&
|
||||
cache->sides_2sided_short)
|
||||
else if (!strcmp(sides, "two-sided-short-edge"))
|
||||
ppd_mark_option(ppd, cache->sides_option, cache->sides_2sided_short);
|
||||
}
|
||||
}
|
||||
|
||||
+19
-250
@@ -65,9 +65,6 @@
|
||||
* Local functions...
|
||||
*/
|
||||
|
||||
static int pwg_compare_finishings(_pwg_finishings_t *a,
|
||||
_pwg_finishings_t *b);
|
||||
static void pwg_free_finishings(_pwg_finishings_t *f);
|
||||
static void pwg_ppdize_name(const char *ipp, char *name, size_t namesize);
|
||||
static void pwg_unppdize_name(const char *ppd, char *name, size_t namesize);
|
||||
|
||||
@@ -89,7 +86,6 @@ _ppdCacheCreateWithFile(
|
||||
_ppd_cache_t *pc; /* PWG mapping data */
|
||||
_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 */
|
||||
num_sizes, /* Number of sizes in file */
|
||||
@@ -536,23 +532,6 @@ _ppdCacheCreateWithFile(
|
||||
pc->sides_2sided_long = _cupsStrAlloc(value);
|
||||
else if (!_cups_strcasecmp(line, "Sides2SidedShort"))
|
||||
pc->sides_2sided_short = _cupsStrAlloc(value);
|
||||
else if (!_cups_strcasecmp(line, "Finishings"))
|
||||
{
|
||||
if (!pc->finishings)
|
||||
pc->finishings =
|
||||
cupsArrayNew3((cups_array_func_t)pwg_compare_finishings,
|
||||
NULL, NULL, 0, NULL,
|
||||
(cups_afree_func_t)pwg_free_finishings);
|
||||
|
||||
if ((finishings = calloc(1, sizeof(_pwg_finishings_t))) == NULL)
|
||||
goto create_error;
|
||||
|
||||
finishings->value = strtol(value, &valueptr, 10);
|
||||
finishings->num_options = cupsParseOptions(valueptr, 0,
|
||||
&(finishings->options));
|
||||
|
||||
cupsArrayAdd(pc->finishings, finishings);
|
||||
}
|
||||
else
|
||||
{
|
||||
DEBUG_printf(("_ppdCacheCreateWithFile: Unknown %s on line %d.", line,
|
||||
@@ -654,7 +633,6 @@ _ppdCacheCreateWithPPD(ppd_file_t *ppd) /* I - PPD file */
|
||||
new_known_pwg; /* New PWG name is well-known */
|
||||
_pwg_size_t *new_size; /* New size to add, if any */
|
||||
const char *filter; /* Current filter */
|
||||
_pwg_finishings_t *finishings; /* Current finishings value */
|
||||
|
||||
|
||||
DEBUG_printf(("_ppdCacheCreateWithPPD(ppd=%p)", ppd));
|
||||
@@ -753,10 +731,8 @@ _ppdCacheCreateWithPPD(ppd_file_t *ppd) /* I - PPD file */
|
||||
* want to keep it if it has a larger imageable area length.
|
||||
*/
|
||||
|
||||
pwg_media = _pwgMediaForSize(_PWG_FROMPTS(ppd_size->width),
|
||||
_PWG_FROMPTS(ppd_size->length));
|
||||
new_width = pwg_media->width;
|
||||
new_length = pwg_media->length;
|
||||
new_width = _PWG_FROMPTS(ppd_size->width);
|
||||
new_length = _PWG_FROMPTS(ppd_size->length);
|
||||
new_left = _PWG_FROMPTS(ppd_size->left);
|
||||
new_bottom = _PWG_FROMPTS(ppd_size->bottom);
|
||||
new_right = _PWG_FROMPTS(ppd_size->width - ppd_size->right);
|
||||
@@ -886,7 +862,7 @@ _ppdCacheCreateWithPPD(ppd_file_t *ppd) /* I - PPD file */
|
||||
else if (!_cups_strncasecmp(choice->choice, "Multipurpose", 12) ||
|
||||
!_cups_strcasecmp(choice->choice, "MP") ||
|
||||
!_cups_strcasecmp(choice->choice, "MPTray"))
|
||||
pwg_name = "by-pass-tray";
|
||||
pwg_name = "alternate";
|
||||
else if (!_cups_strcasecmp(choice->choice, "LargeCapacity"))
|
||||
pwg_name = "large-capacity";
|
||||
else if (!_cups_strncasecmp(choice->choice, "Lower", 5))
|
||||
@@ -897,8 +873,11 @@ _ppdCacheCreateWithPPD(ppd_file_t *ppd) /* I - PPD file */
|
||||
pwg_name = "top";
|
||||
else if (!_cups_strncasecmp(choice->choice, "Side", 4))
|
||||
pwg_name = "side";
|
||||
else if (!_cups_strcasecmp(choice->choice, "Roll"))
|
||||
else if (!_cups_strcasecmp(choice->choice, "Roll") ||
|
||||
!_cups_strcasecmp(choice->choice, "Roll1"))
|
||||
pwg_name = "main-roll";
|
||||
else if (!_cups_strcasecmp(choice->choice, "Roll2"))
|
||||
pwg_name = "alternate-roll";
|
||||
else
|
||||
{
|
||||
/*
|
||||
@@ -959,8 +938,6 @@ _ppdCacheCreateWithPPD(ppd_file_t *ppd) /* I - PPD file */
|
||||
pwg_name = "stationery-letterhead";
|
||||
else if (!_cups_strncasecmp(choice->choice, "Preprint", 8))
|
||||
pwg_name = "stationery-preprinted";
|
||||
else if (!_cups_strcasecmp(choice->choice, "Recycled"))
|
||||
pwg_name = "stationery-recycled";
|
||||
else if (!_cups_strncasecmp(choice->choice, "Transparen", 10))
|
||||
pwg_name = "transparency";
|
||||
else
|
||||
@@ -1295,8 +1272,7 @@ _ppdCacheCreateWithPPD(ppd_file_t *ppd) /* I - PPD file */
|
||||
|
||||
if (filter)
|
||||
cupsArrayAdd(pc->filters,
|
||||
"application/vnd.cups-command application/postscript 100 "
|
||||
"commandtops");
|
||||
"application/vnd.cups-command application/postscript 0 -");
|
||||
}
|
||||
|
||||
if ((ppd_attr = ppdFindAttr(ppd, "cupsPreFilter", NULL)) != NULL)
|
||||
@@ -1322,32 +1298,6 @@ _ppdCacheCreateWithPPD(ppd_file_t *ppd) /* I - PPD file */
|
||||
if (ppd->product)
|
||||
pc->product = _cupsStrAlloc(ppd->product);
|
||||
|
||||
/*
|
||||
* Copy finishings mapping data...
|
||||
*/
|
||||
|
||||
if ((ppd_attr = ppdFindAttr(ppd, "cupsIPPFinishings", NULL)) != NULL)
|
||||
{
|
||||
pc->finishings = cupsArrayNew3((cups_array_func_t)pwg_compare_finishings,
|
||||
NULL, NULL, 0, NULL,
|
||||
(cups_afree_func_t)pwg_free_finishings);
|
||||
|
||||
do
|
||||
{
|
||||
if ((finishings = calloc(1, sizeof(_pwg_finishings_t))) == NULL)
|
||||
goto create_error;
|
||||
|
||||
finishings->value = atoi(ppd_attr->spec);
|
||||
finishings->num_options = _ppdParseOptions(ppd_attr->value, 0,
|
||||
&(finishings->options),
|
||||
_PPD_PARSE_OPTIONS);
|
||||
|
||||
cupsArrayAdd(pc->finishings, finishings);
|
||||
}
|
||||
while ((ppd_attr = ppdFindNextAttr(ppd, "cupsIPPFinishings",
|
||||
NULL)) != NULL);
|
||||
}
|
||||
|
||||
/*
|
||||
* Return the cache data...
|
||||
*/
|
||||
@@ -1446,7 +1396,6 @@ _ppdCacheDestroy(_ppd_cache_t *pc) /* I - PPD cache and mapping data */
|
||||
_cupsStrFree(pc->product);
|
||||
cupsArrayDelete(pc->filters);
|
||||
cupsArrayDelete(pc->prefilters);
|
||||
cupsArrayDelete(pc->finishings);
|
||||
|
||||
free(pc);
|
||||
}
|
||||
@@ -1485,127 +1434,6 @@ _ppdCacheGetBin(
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* '_ppdCacheGetFinishingOptions()' - Get PPD finishing options for the given
|
||||
* IPP finishings value(s).
|
||||
*/
|
||||
|
||||
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_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 */
|
||||
key; /* Search key */
|
||||
ipp_attribute_t *attr; /* Finishings attribute */
|
||||
cups_option_t *option; /* Current finishings option */
|
||||
|
||||
|
||||
/*
|
||||
* Range check input...
|
||||
*/
|
||||
|
||||
if (!pc || cupsArrayCount(pc->finishings) == 0 || !options ||
|
||||
(!job && value == IPP_FINISHINGS_NONE))
|
||||
return (num_options);
|
||||
|
||||
/*
|
||||
* Apply finishing options...
|
||||
*/
|
||||
|
||||
if (job && (attr = ippFindAttribute(job, "finishings", IPP_TAG_ENUM)) != NULL)
|
||||
{
|
||||
int num_values = ippGetCount(attr); /* Number of values */
|
||||
|
||||
for (i = 0; i < num_values; i ++)
|
||||
{
|
||||
key.value = ippGetInteger(attr, i);
|
||||
|
||||
if ((f = cupsArrayFind(pc->finishings, &key)) != NULL)
|
||||
{
|
||||
int j; /* Another looping var */
|
||||
|
||||
for (j = f->num_options, option = f->options; j > 0; j --, option ++)
|
||||
num_options = cupsAddOption(option->name, option->value,
|
||||
num_options, options);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (value != IPP_FINISHINGS_NONE)
|
||||
{
|
||||
key.value = value;
|
||||
|
||||
if ((f = cupsArrayFind(pc->finishings, &key)) != NULL)
|
||||
{
|
||||
int j; /* Another looping var */
|
||||
|
||||
for (j = f->num_options, option = f->options; j > 0; j --, option ++)
|
||||
num_options = cupsAddOption(option->name, option->value,
|
||||
num_options, options);
|
||||
}
|
||||
}
|
||||
|
||||
return (num_options);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* '_ppdCacheGetFinishingValues()' - Get IPP finishings value(s) from the given
|
||||
* PPD options.
|
||||
*/
|
||||
|
||||
int /* O - Number of finishings values */
|
||||
_ppdCacheGetFinishingValues(
|
||||
_ppd_cache_t *pc, /* I - PPD cache and mapping data */
|
||||
int num_options, /* I - Number of options */
|
||||
cups_option_t *options, /* I - Options */
|
||||
int max_values, /* I - Maximum number of finishings values */
|
||||
int *values) /* O - Finishings values */
|
||||
{
|
||||
int i, /* Looping var */
|
||||
num_values = 0; /* Number of values */
|
||||
_pwg_finishings_t *f; /* Current finishings option */
|
||||
cups_option_t *option; /* Current option */
|
||||
const char *val; /* Value for option */
|
||||
|
||||
|
||||
/*
|
||||
* Range check input...
|
||||
*/
|
||||
|
||||
if (!pc || !pc->finishings || num_options < 1 || max_values < 1 || !values)
|
||||
return (0);
|
||||
|
||||
/*
|
||||
* Go through the finishings options and see what is set...
|
||||
*/
|
||||
|
||||
for (f = (_pwg_finishings_t *)cupsArrayFirst(pc->finishings);
|
||||
f;
|
||||
f = (_pwg_finishings_t *)cupsArrayNext(pc->finishings))
|
||||
{
|
||||
for (i = f->num_options, option = f->options; i > 0; i --, option ++)
|
||||
if ((val = cupsGetOption(option->name, num_options, options)) == NULL ||
|
||||
_cups_strcasecmp(option->value, val))
|
||||
break;
|
||||
|
||||
if (i == 0)
|
||||
{
|
||||
values[num_values ++] = f->value;
|
||||
|
||||
if (num_values >= max_values)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return (num_values);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* '_ppdCacheGetInputSlot()' - Get the PPD InputSlot associated with the job
|
||||
* attributes or a keyword string.
|
||||
@@ -1637,7 +1465,7 @@ _ppdCacheGetInputSlot(
|
||||
|
||||
media_col = ippFindAttribute(job, "media-col", IPP_TAG_BEGIN_COLLECTION);
|
||||
if (media_col &&
|
||||
(media_source = ippFindAttribute(ippGetCollection(media_col, 0),
|
||||
(media_source = ippFindAttribute(media_col->values[0].collection,
|
||||
"media-source",
|
||||
IPP_TAG_KEYWORD)) != NULL)
|
||||
{
|
||||
@@ -1645,7 +1473,7 @@ _ppdCacheGetInputSlot(
|
||||
* Use the media-source value from media-col...
|
||||
*/
|
||||
|
||||
keyword = ippGetString(media_source, 0, NULL);
|
||||
keyword = media_source->values[0].string.text;
|
||||
}
|
||||
else if (_pwgInitSize(&size, job, &margins_set))
|
||||
{
|
||||
@@ -2007,8 +1835,7 @@ _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 */
|
||||
int i;
|
||||
_pwg_size_t *size; /* Current size */
|
||||
|
||||
|
||||
@@ -2087,26 +1914,9 @@ _ppdCacheGetSize(
|
||||
*/
|
||||
|
||||
for (i = pc->num_sizes, size = pc->sizes; i > 0; i --, size ++)
|
||||
if (!_cups_strcasecmp(page_size, size->map.ppd) ||
|
||||
!_cups_strcasecmp(page_size, size->map.pwg))
|
||||
if (!_cups_strcasecmp(page_size, size->map.ppd))
|
||||
return (size);
|
||||
|
||||
/*
|
||||
* Look up standard sizes...
|
||||
*/
|
||||
|
||||
if ((media = _pwgMediaForPPD(page_size)) == NULL)
|
||||
if ((media = _pwgMediaForLegacy(page_size)) == NULL)
|
||||
media = _pwgMediaForPWG(page_size);
|
||||
|
||||
if (media)
|
||||
{
|
||||
pc->custom_size.width = media->width;
|
||||
pc->custom_size.length = media->length;
|
||||
|
||||
return (&(pc->custom_size));
|
||||
}
|
||||
|
||||
return (NULL);
|
||||
}
|
||||
|
||||
@@ -2179,14 +1989,13 @@ _ppdCacheWriteFile(
|
||||
const char *filename, /* I - File to write */
|
||||
ipp_t *attrs) /* I - Attributes to write, if any */
|
||||
{
|
||||
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_finishings_t *f; /* Current finishing option */
|
||||
cups_option_t *option; /* Current option */
|
||||
const char *value; /* Filter/pre-filter value */
|
||||
char newfile[1024]; /* New filename */
|
||||
int i, j, k; /* Looping vars */
|
||||
cups_file_t *fp; /* Output file */
|
||||
_pwg_size_t *size; /* Current size */
|
||||
_pwg_map_t *map; /* Current map */
|
||||
cups_option_t *option; /* Current option */
|
||||
const char *value; /* Filter/pre-filter value */
|
||||
char newfile[1024]; /* New filename */
|
||||
|
||||
|
||||
/*
|
||||
@@ -2319,20 +2128,6 @@ _ppdCacheWriteFile(
|
||||
|
||||
cupsFilePrintf(fp, "SingleFile %s\n", pc->single_file ? "true" : "false");
|
||||
|
||||
/*
|
||||
* Finishing options...
|
||||
*/
|
||||
|
||||
for (f = (_pwg_finishings_t *)cupsArrayFirst(pc->finishings);
|
||||
f;
|
||||
f = (_pwg_finishings_t *)cupsArrayNext(pc->finishings))
|
||||
{
|
||||
cupsFilePrintf(fp, "Finishings %d", f->value);
|
||||
for (i = f->num_options, option = f->options; i > 0; i --, option ++)
|
||||
cupsFilePrintf(fp, " %s=%s", option->name, option->value);
|
||||
cupsFilePutChar(fp, '\n');
|
||||
}
|
||||
|
||||
/*
|
||||
* IPP attributes, if any...
|
||||
*/
|
||||
@@ -2515,32 +2310,6 @@ _pwgPageSizeForMedia(
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'pwg_compare_finishings()' - Compare two finishings values.
|
||||
*/
|
||||
|
||||
static int /* O- Result of comparison */
|
||||
pwg_compare_finishings(
|
||||
_pwg_finishings_t *a, /* I - First finishings value */
|
||||
_pwg_finishings_t *b) /* I - Second finishings value */
|
||||
{
|
||||
return (b->value - a->value);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'pwg_free_finishings()' - Free a finishings value.
|
||||
*/
|
||||
|
||||
static void
|
||||
pwg_free_finishings(
|
||||
_pwg_finishings_t *f) /* I - Finishings value */
|
||||
{
|
||||
cupsFreeOptions(f->num_options, f->options);
|
||||
free(f);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'pwg_ppdize_name()' - Convert an IPP keyword to a PPD keyword.
|
||||
*/
|
||||
|
||||
+2
-28
@@ -49,21 +49,13 @@ extern "C" {
|
||||
* Constants...
|
||||
*/
|
||||
|
||||
# define _PPD_CACHE_VERSION 2 /* Version number in cache file */
|
||||
# define _PPD_CACHE_VERSION 1 /* Version number in cache file */
|
||||
|
||||
|
||||
/*
|
||||
* Types and structures...
|
||||
*/
|
||||
|
||||
typedef enum _ppd_localization_e /**** Selector for _ppdOpen ****/
|
||||
{
|
||||
_PPD_LOCALIZATION_DEFAULT, /* Load only the default localization */
|
||||
_PPD_LOCALIZATION_ICC_PROFILES, /* Load only the color profile localization */
|
||||
_PPD_LOCALIZATION_NONE, /* Load no localizations */
|
||||
_PPD_LOCALIZATION_ALL /* Load all localizations */
|
||||
} _ppd_localization_t;
|
||||
|
||||
typedef enum _ppd_parse_e /**** Selector for _ppdParseOptions ****/
|
||||
{
|
||||
_PPD_PARSE_OPTIONS, /* Parse only the options */
|
||||
@@ -94,7 +86,7 @@ typedef enum _pwg_print_color_mode_e /**** PWG print-color-mode indices ****/
|
||||
_PWG_PRINT_COLOR_MODE_MAX
|
||||
} _pwg_print_color_mode_t;
|
||||
|
||||
typedef enum _pwg_print_quality_e /**** PWG print-quality values ****/
|
||||
typedef enum _pwg_print_quality_e /**** PWG print-quality indices ****/
|
||||
{
|
||||
_PWG_PRINT_QUALITY_DRAFT = 0, /* print-quality=3 */
|
||||
_PWG_PRINT_QUALITY_NORMAL, /* print-quality=4 */
|
||||
@@ -102,13 +94,6 @@ typedef enum _pwg_print_quality_e /**** PWG print-quality values ****/
|
||||
_PWG_PRINT_QUALITY_MAX
|
||||
} _pwg_print_quality_t;
|
||||
|
||||
typedef struct _pwg_finishings_s /**** PWG finishings mapping data ****/
|
||||
{
|
||||
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 */
|
||||
@@ -140,7 +125,6 @@ struct _ppd_cache_s /**** PPD cache and PWG conversion data ****/
|
||||
cups_array_t *filters, /* cupsFilter/cupsFilter2 values */
|
||||
*prefilters; /* cupsPreFilter values */
|
||||
int single_file; /* cupsSingleFile value */
|
||||
cups_array_t *finishings; /* cupsIPPFinishings values */
|
||||
};
|
||||
|
||||
|
||||
@@ -154,12 +138,6 @@ 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_finish_t value, int num_options,
|
||||
cups_option_t **options);
|
||||
extern int _ppdCacheGetFinishingValues(_ppd_cache_t *pc, int num_options,
|
||||
cups_option_t *options,
|
||||
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,
|
||||
@@ -185,10 +163,6 @@ extern ppd_attr_t *_ppdLocalizedAttr(ppd_file_t *ppd, const char *keyword,
|
||||
extern char *_ppdNormalizeMakeAndModel(const char *make_and_model,
|
||||
char *buffer,
|
||||
size_t bufsize);
|
||||
extern ppd_file_t *_ppdOpen(cups_file_t *fp,
|
||||
_ppd_localization_t localization);
|
||||
extern ppd_file_t *_ppdOpenFile(const char *filename,
|
||||
_ppd_localization_t localization);
|
||||
extern int _ppdParseOptions(const char *s, int num_options,
|
||||
cups_option_t **options,
|
||||
_ppd_parse_t which);
|
||||
|
||||
+72
-326
@@ -31,10 +31,8 @@
|
||||
* LanguageEncoding.
|
||||
* ppdLastError() - Return the status from the last ppdOpen*().
|
||||
* ppdOpen() - Read a PPD file into memory.
|
||||
* _ppdOpen() - Read a PPD file into memory.
|
||||
* ppdOpen2() - Read a PPD file into memory.
|
||||
* ppdOpenFd() - Read a PPD file into memory.
|
||||
* _ppdOpenFile() - Read a PPD file into memory.
|
||||
* ppdOpenFile() - Read a PPD file into memory.
|
||||
* ppdSetConformance() - Set the conformance level for PPD files.
|
||||
* ppd_add_attr() - Add an attribute to the PPD data.
|
||||
@@ -45,7 +43,6 @@
|
||||
* ppd_compare_coptions() - Compare two custom options.
|
||||
* ppd_compare_options() - Compare two options.
|
||||
* ppd_decode() - Decode a string value...
|
||||
* ppd_free_filters() - Free the filters array.
|
||||
* ppd_free_group() - Free a single UI group.
|
||||
* ppd_free_option() - Free a single option.
|
||||
* ppd_get_coption() - Get a custom option record.
|
||||
@@ -55,7 +52,6 @@
|
||||
* ppd_hash_option() - Generate a hash of the option name...
|
||||
* ppd_read() - Read a line from a PPD file, skipping comment
|
||||
* lines as necessary.
|
||||
* ppd_update_filters() - Update the filters array as needed.
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -114,7 +110,6 @@ static int ppd_compare_coptions(ppd_coption_t *a,
|
||||
ppd_coption_t *b);
|
||||
static int ppd_compare_options(ppd_option_t *a, ppd_option_t *b);
|
||||
static int ppd_decode(char *string);
|
||||
static void ppd_free_filters(ppd_file_t *ppd);
|
||||
static void ppd_free_group(ppd_group_t *group);
|
||||
static void ppd_free_option(ppd_option_t *option);
|
||||
static ppd_coption_t *ppd_get_coption(ppd_file_t *ppd, const char *name);
|
||||
@@ -130,8 +125,6 @@ static int ppd_read(cups_file_t *fp, _ppd_line_t *line,
|
||||
char *keyword, char *option, char *text,
|
||||
char **string, int ignoreblank,
|
||||
_cups_globals_t *cg);
|
||||
static int ppd_update_filters(ppd_file_t *ppd,
|
||||
_cups_globals_t *cg);
|
||||
|
||||
|
||||
/*
|
||||
@@ -145,6 +138,7 @@ ppdClose(ppd_file_t *ppd) /* I - PPD file record */
|
||||
ppd_emul_t *emul; /* Current emulation */
|
||||
ppd_group_t *group; /* Current group */
|
||||
char **font; /* Current font */
|
||||
char **filter; /* Current filter */
|
||||
ppd_attr_t **attr; /* Current attribute */
|
||||
ppd_coption_t *coption; /* Current custom option */
|
||||
ppd_cparam_t *cparam; /* Current custom parameter */
|
||||
@@ -217,7 +211,13 @@ ppdClose(ppd_file_t *ppd) /* I - PPD file record */
|
||||
* Free any filters...
|
||||
*/
|
||||
|
||||
ppd_free_filters(ppd);
|
||||
if (ppd->num_filters > 0)
|
||||
{
|
||||
for (i = ppd->num_filters, filter = ppd->filters; i > 0; i --, filter ++)
|
||||
_cupsStrFree(*filter);
|
||||
|
||||
ppd_free(ppd->filters);
|
||||
}
|
||||
|
||||
/*
|
||||
* Free any fonts...
|
||||
@@ -415,15 +415,47 @@ ppdLastError(int *line) /* O - Line number */
|
||||
|
||||
|
||||
/*
|
||||
* '_ppdOpen()' - Read a PPD file into memory.
|
||||
* 'ppdOpen()' - Read a PPD file into memory.
|
||||
*/
|
||||
|
||||
ppd_file_t * /* O - PPD file record */
|
||||
ppdOpen(FILE *fp) /* I - File to read from */
|
||||
{
|
||||
ppd_file_t *ppd; /* PPD file record */
|
||||
cups_file_t *cf; /* CUPS file */
|
||||
|
||||
|
||||
/*
|
||||
* Reopen the stdio file as a CUPS file...
|
||||
*/
|
||||
|
||||
if ((cf = cupsFileOpenFd(fileno(fp), "r")) == NULL)
|
||||
return (NULL);
|
||||
|
||||
/*
|
||||
* Load the PPD file using the newer API...
|
||||
*/
|
||||
|
||||
ppd = ppdOpen2(cf);
|
||||
|
||||
/*
|
||||
* Close the CUPS file and return the PPD...
|
||||
*/
|
||||
|
||||
cupsFileClose(cf);
|
||||
|
||||
return (ppd);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'ppdOpen2()' - Read a PPD file into memory.
|
||||
*
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
ppd_file_t * /* O - PPD file record or @code NULL@ if the PPD file could not be opened. */
|
||||
_ppdOpen(
|
||||
cups_file_t *fp, /* I - File to read from */
|
||||
_ppd_localization_t localization) /* I - Localization to load */
|
||||
ppdOpen2(cups_file_t *fp) /* I - File to read from */
|
||||
{
|
||||
int i, j, k; /* Looping vars */
|
||||
int count; /* Temporary count */
|
||||
@@ -453,17 +485,12 @@ _ppdOpen(
|
||||
char **filter; /* Pointer to filter */
|
||||
struct lconv *loc; /* Locale data */
|
||||
int ui_keyword; /* Is this line a UI keyword? */
|
||||
cups_lang_t *lang; /* Language data */
|
||||
cups_encoding_t encoding; /* Encoding of PPD file */
|
||||
_cups_globals_t *cg = _cupsGlobals();
|
||||
/* Global data */
|
||||
char custom_name[PPD_MAX_NAME];
|
||||
/* CustomFoo attribute name */
|
||||
ppd_attr_t *custom_attr; /* CustomFoo attribute */
|
||||
char ll[4], /* Language + '.' */
|
||||
ll_CC[7]; /* Language + country + '.' */
|
||||
size_t ll_len, /* Language length */
|
||||
ll_CC_len; /* Language + country length */
|
||||
static const char * const ui_keywords[] =
|
||||
{
|
||||
#ifdef CUPS_USE_FULL_UI_KEYWORDS_LIST
|
||||
@@ -525,14 +552,9 @@ _ppdOpen(
|
||||
"PageSize"
|
||||
#endif /* CUPS_USE_FULL_UI_KEYWORDS_LIST */
|
||||
};
|
||||
static const char * const color_keywords[] = /* Keywords associated with color profiles */
|
||||
{
|
||||
".cupsICCProfile",
|
||||
".ColorModel",
|
||||
};
|
||||
|
||||
|
||||
DEBUG_printf(("_ppdOpen(fp=%p)", fp));
|
||||
DEBUG_printf(("ppdOpen2(fp=%p)", fp));
|
||||
|
||||
/*
|
||||
* Default to "OK" status...
|
||||
@@ -551,25 +573,6 @@ _ppdOpen(
|
||||
return (NULL);
|
||||
}
|
||||
|
||||
/*
|
||||
* If only loading a single localization set up the strings to match...
|
||||
*/
|
||||
|
||||
if (localization == _PPD_LOCALIZATION_DEFAULT)
|
||||
{
|
||||
if ((lang = cupsLangDefault()) == NULL)
|
||||
return (NULL);
|
||||
|
||||
snprintf(ll_CC, sizeof(ll_CC), "%s.", lang->language);
|
||||
snprintf(ll, sizeof(ll), "%2.2s.", lang->language);
|
||||
|
||||
ll_CC_len = strlen(ll_CC);
|
||||
ll_len = strlen(ll);
|
||||
|
||||
DEBUG_printf(("2_ppdOpen: Loading localizations matching \"%s\" and \"%s\"",
|
||||
ll_CC, ll));
|
||||
}
|
||||
|
||||
/*
|
||||
* Grab the first line and make sure it reads '*PPD-Adobe: "major.minor"'...
|
||||
*/
|
||||
@@ -579,7 +582,7 @@ _ppdOpen(
|
||||
|
||||
mask = ppd_read(fp, &line, keyword, name, text, &string, 0, cg);
|
||||
|
||||
DEBUG_printf(("2_ppdOpen: mask=%x, keyword=\"%s\"...", mask, keyword));
|
||||
DEBUG_printf(("2ppdOpen2: mask=%x, keyword=\"%s\"...", mask, keyword));
|
||||
|
||||
if (mask == 0 ||
|
||||
strcmp(keyword, "PPD-Adobe") ||
|
||||
@@ -598,7 +601,7 @@ _ppdOpen(
|
||||
return (NULL);
|
||||
}
|
||||
|
||||
DEBUG_printf(("2_ppdOpen: keyword=%s, string=%p", keyword, string));
|
||||
DEBUG_printf(("2ppdOpen2: keyword=%s, string=%p", keyword, string));
|
||||
|
||||
_cupsStrFree(string);
|
||||
|
||||
@@ -637,7 +640,7 @@ _ppdOpen(
|
||||
|
||||
while ((mask = ppd_read(fp, &line, keyword, name, text, &string, 1, cg)) != 0)
|
||||
{
|
||||
DEBUG_printf(("2_ppdOpen: mask=%x, keyword=\"%s\", name=\"%s\", "
|
||||
DEBUG_printf(("2ppdOpen2: mask=%x, keyword=\"%s\", name=\"%s\", "
|
||||
"text=\"%s\", string=%d chars...", mask, keyword, name, text,
|
||||
string ? (int)strlen(string) : 0));
|
||||
|
||||
@@ -674,50 +677,6 @@ _ppdOpen(
|
||||
ui_keyword = 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* If we are filtering out keyword localizations, see if this line needs to
|
||||
* be used...
|
||||
*/
|
||||
|
||||
if (localization != _PPD_LOCALIZATION_ALL &&
|
||||
(temp = strchr(keyword, '.')) != NULL &&
|
||||
((temp - keyword) == 2 || (temp - keyword) == 5) &&
|
||||
_cups_isalpha(keyword[0]) &&
|
||||
_cups_isalpha(keyword[1]) &&
|
||||
(keyword[2] == '.' ||
|
||||
(keyword[2] == '_' && _cups_isalpha(keyword[3]) &&
|
||||
_cups_isalpha(keyword[4]) && keyword[5] == '.')))
|
||||
{
|
||||
if (localization == _PPD_LOCALIZATION_NONE ||
|
||||
(localization == _PPD_LOCALIZATION_DEFAULT &&
|
||||
strncmp(ll_CC, keyword, ll_CC_len) &&
|
||||
strncmp(ll, keyword, ll_len)))
|
||||
{
|
||||
DEBUG_printf(("2_ppdOpen: Ignoring localization: \"%s\"\n", keyword));
|
||||
continue;
|
||||
}
|
||||
else if (localization == _PPD_LOCALIZATION_ICC_PROFILES)
|
||||
{
|
||||
/*
|
||||
* Only load localizations for the color profile related keywords...
|
||||
*/
|
||||
|
||||
for (i = 0;
|
||||
i < (int)(sizeof(color_keywords) / sizeof(color_keywords[0]));
|
||||
i ++)
|
||||
{
|
||||
if (!_cups_strcasecmp(temp, color_keywords[i]))
|
||||
break;
|
||||
}
|
||||
|
||||
if (i >= (int)(sizeof(color_keywords) / sizeof(color_keywords[0])))
|
||||
{
|
||||
DEBUG_printf(("2_ppdOpen: Ignoring localization: \"%s\"\n", keyword));
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (option == NULL &&
|
||||
(mask & (PPD_KEYWORD | PPD_OPTION | PPD_STRING)) ==
|
||||
(PPD_KEYWORD | PPD_OPTION | PPD_STRING))
|
||||
@@ -734,7 +693,7 @@ _ppdOpen(
|
||||
|
||||
ui_keyword = 1;
|
||||
|
||||
DEBUG_printf(("2_ppdOpen: FOUND ADOBE UI KEYWORD %s WITHOUT OPENUI!",
|
||||
DEBUG_printf(("2ppdOpen2: FOUND ADOBE UI KEYWORD %s WITHOUT OPENUI!",
|
||||
keyword));
|
||||
|
||||
if (!group)
|
||||
@@ -743,7 +702,7 @@ _ppdOpen(
|
||||
encoding)) == NULL)
|
||||
goto error;
|
||||
|
||||
DEBUG_printf(("2_ppdOpen: Adding to group %s...", group->text));
|
||||
DEBUG_printf(("2ppdOpen2: Adding to group %s...", group->text));
|
||||
option = ppd_get_option(group, keyword);
|
||||
group = NULL;
|
||||
}
|
||||
@@ -778,7 +737,7 @@ _ppdOpen(
|
||||
!strcmp(ppd->attrs[j]->name + 7, keyword) &&
|
||||
ppd->attrs[j]->value)
|
||||
{
|
||||
DEBUG_printf(("2_ppdOpen: Setting Default%s to %s via attribute...",
|
||||
DEBUG_printf(("2ppdOpen2: Setting Default%s to %s via attribute...",
|
||||
option->keyword, ppd->attrs[j]->value));
|
||||
strlcpy(option->defchoice, ppd->attrs[j]->value,
|
||||
sizeof(option->defchoice));
|
||||
@@ -921,10 +880,11 @@ _ppdOpen(
|
||||
ppd->num_filters ++;
|
||||
|
||||
/*
|
||||
* Retain a copy of the filter string...
|
||||
* Copy filter string and prevent it from being freed below...
|
||||
*/
|
||||
|
||||
*filter = _cupsStrRetain(string);
|
||||
*filter = string;
|
||||
string = NULL;
|
||||
}
|
||||
else if (!strcmp(keyword, "Throughput"))
|
||||
ppd->throughput = atoi(string);
|
||||
@@ -1076,7 +1036,7 @@ _ppdOpen(
|
||||
{
|
||||
ppd_option_t *custom_option; /* Custom option */
|
||||
|
||||
DEBUG_puts("2_ppdOpen: Processing Custom option...");
|
||||
DEBUG_puts("2ppdOpen2: Processing Custom option...");
|
||||
|
||||
/*
|
||||
* Get the option and custom option...
|
||||
@@ -1103,7 +1063,7 @@ _ppdOpen(
|
||||
if ((choice = ppdFindChoice(custom_option, "Custom")) == NULL)
|
||||
if ((choice = ppd_add_choice(custom_option, "Custom")) == NULL)
|
||||
{
|
||||
DEBUG_puts("1_ppdOpen: Unable to add Custom choice!");
|
||||
DEBUG_puts("1ppdOpen2: Unable to add Custom choice!");
|
||||
|
||||
cg->ppd_status = PPD_ALLOC_ERROR;
|
||||
|
||||
@@ -1143,7 +1103,7 @@ _ppdOpen(
|
||||
if ((choice = ppdFindChoice(custom_option, "Custom")) == NULL)
|
||||
if ((choice = ppd_add_choice(custom_option, "Custom")) == NULL)
|
||||
{
|
||||
DEBUG_puts("1_ppdOpen: Unable to add Custom choice!");
|
||||
DEBUG_puts("1ppdOpen2: Unable to add Custom choice!");
|
||||
|
||||
cg->ppd_status = PPD_ALLOC_ERROR;
|
||||
|
||||
@@ -1284,7 +1244,7 @@ _ppdOpen(
|
||||
* Add an option record to the current sub-group, group, or file...
|
||||
*/
|
||||
|
||||
DEBUG_printf(("2_ppdOpen: name=\"%s\" (%d)", name, (int)strlen(name)));
|
||||
DEBUG_printf(("2ppdOpen2: name=\"%s\" (%d)", name, (int)strlen(name)));
|
||||
|
||||
if (name[0] == '*')
|
||||
_cups_strcpy(name, name + 1); /* Eliminate leading asterisk */
|
||||
@@ -1292,7 +1252,7 @@ _ppdOpen(
|
||||
for (i = (int)strlen(name) - 1; i > 0 && _cups_isspace(name[i]); i --)
|
||||
name[i] = '\0'; /* Eliminate trailing spaces */
|
||||
|
||||
DEBUG_printf(("2_ppdOpen: OpenUI of %s in group %s...", name,
|
||||
DEBUG_printf(("2ppdOpen2: OpenUI of %s in group %s...", name,
|
||||
group ? group->text : "(null)"));
|
||||
|
||||
if (subgroup != NULL)
|
||||
@@ -1303,7 +1263,7 @@ _ppdOpen(
|
||||
encoding)) == NULL)
|
||||
goto error;
|
||||
|
||||
DEBUG_printf(("2_ppdOpen: Adding to group %s...", group->text));
|
||||
DEBUG_printf(("2ppdOpen2: Adding to group %s...", group->text));
|
||||
option = ppd_get_option(group, name);
|
||||
group = NULL;
|
||||
}
|
||||
@@ -1341,7 +1301,7 @@ _ppdOpen(
|
||||
!strcmp(ppd->attrs[j]->name + 7, name) &&
|
||||
ppd->attrs[j]->value)
|
||||
{
|
||||
DEBUG_printf(("2_ppdOpen: Setting Default%s to %s via attribute...",
|
||||
DEBUG_printf(("2ppdOpen2: Setting Default%s to %s via attribute...",
|
||||
option->keyword, ppd->attrs[j]->value));
|
||||
strlcpy(option->defchoice, ppd->attrs[j]->value,
|
||||
sizeof(option->defchoice));
|
||||
@@ -1387,7 +1347,7 @@ _ppdOpen(
|
||||
if ((choice = ppdFindChoice(option, "Custom")) == NULL)
|
||||
if ((choice = ppd_add_choice(option, "Custom")) == NULL)
|
||||
{
|
||||
DEBUG_puts("1_ppdOpen: Unable to add Custom choice!");
|
||||
DEBUG_puts("1ppdOpen2: Unable to add Custom choice!");
|
||||
|
||||
cg->ppd_status = PPD_ALLOC_ERROR;
|
||||
|
||||
@@ -1460,7 +1420,7 @@ _ppdOpen(
|
||||
!strcmp(ppd->attrs[j]->name + 7, name) &&
|
||||
ppd->attrs[j]->value)
|
||||
{
|
||||
DEBUG_printf(("2_ppdOpen: Setting Default%s to %s via attribute...",
|
||||
DEBUG_printf(("2ppdOpen2: Setting Default%s to %s via attribute...",
|
||||
option->keyword, ppd->attrs[j]->value));
|
||||
strlcpy(option->defchoice, ppd->attrs[j]->value,
|
||||
sizeof(option->defchoice));
|
||||
@@ -1490,7 +1450,7 @@ _ppdOpen(
|
||||
{
|
||||
if ((choice = ppd_add_choice(option, "Custom")) == NULL)
|
||||
{
|
||||
DEBUG_puts("1_ppdOpen: Unable to add Custom choice!");
|
||||
DEBUG_puts("1ppdOpen2: Unable to add Custom choice!");
|
||||
|
||||
cg->ppd_status = PPD_ALLOC_ERROR;
|
||||
|
||||
@@ -1663,11 +1623,11 @@ _ppdOpen(
|
||||
* Set the default as part of the current option...
|
||||
*/
|
||||
|
||||
DEBUG_printf(("2_ppdOpen: Setting %s to %s...", keyword, string));
|
||||
DEBUG_printf(("2ppdOpen2: Setting %s to %s...", keyword, string));
|
||||
|
||||
strlcpy(option->defchoice, string, sizeof(option->defchoice));
|
||||
|
||||
DEBUG_printf(("2_ppdOpen: %s is now %s...", keyword, option->defchoice));
|
||||
DEBUG_printf(("2ppdOpen2: %s is now %s...", keyword, option->defchoice));
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1680,7 +1640,7 @@ _ppdOpen(
|
||||
|
||||
if ((toption = ppdFindOption(ppd, keyword + 7)) != NULL)
|
||||
{
|
||||
DEBUG_printf(("2_ppdOpen: Setting %s to %s...", keyword, string));
|
||||
DEBUG_printf(("2ppdOpen2: Setting %s to %s...", keyword, string));
|
||||
strlcpy(toption->defchoice, string, sizeof(toption->defchoice));
|
||||
}
|
||||
}
|
||||
@@ -1917,7 +1877,7 @@ _ppdOpen(
|
||||
(PPD_KEYWORD | PPD_OPTION | PPD_STRING) &&
|
||||
!strcmp(keyword, option->keyword))
|
||||
{
|
||||
DEBUG_printf(("2_ppdOpen: group=%p, subgroup=%p", group, subgroup));
|
||||
DEBUG_printf(("2ppdOpen2: group=%p, subgroup=%p", group, subgroup));
|
||||
|
||||
if (!strcmp(keyword, "PageSize"))
|
||||
{
|
||||
@@ -1986,7 +1946,7 @@ _ppdOpen(
|
||||
|
||||
#ifdef DEBUG
|
||||
if (!cupsFileEOF(fp))
|
||||
DEBUG_printf(("1_ppdOpen: Premature EOF at %lu...\n",
|
||||
DEBUG_printf(("1ppdOpen2: Premature EOF at %lu...\n",
|
||||
(unsigned long)cupsFileTell(fp)));
|
||||
#endif /* DEBUG */
|
||||
|
||||
@@ -2001,17 +1961,6 @@ _ppdOpen(
|
||||
return (NULL);
|
||||
}
|
||||
|
||||
/*
|
||||
* Update the filters array as needed...
|
||||
*/
|
||||
|
||||
if (!ppd_update_filters(ppd, cg))
|
||||
{
|
||||
ppdClose(ppd);
|
||||
|
||||
return (NULL);
|
||||
}
|
||||
|
||||
/*
|
||||
* Create the sorted options array and set the option back-pointer for
|
||||
* each choice and custom option...
|
||||
@@ -2069,53 +2018,6 @@ _ppdOpen(
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'ppdOpen()' - Read a PPD file into memory.
|
||||
*/
|
||||
|
||||
ppd_file_t * /* O - PPD file record */
|
||||
ppdOpen(FILE *fp) /* I - File to read from */
|
||||
{
|
||||
ppd_file_t *ppd; /* PPD file record */
|
||||
cups_file_t *cf; /* CUPS file */
|
||||
|
||||
|
||||
/*
|
||||
* Reopen the stdio file as a CUPS file...
|
||||
*/
|
||||
|
||||
if ((cf = cupsFileOpenFd(fileno(fp), "r")) == NULL)
|
||||
return (NULL);
|
||||
|
||||
/*
|
||||
* Load the PPD file using the newer API...
|
||||
*/
|
||||
|
||||
ppd = _ppdOpen(cf, _PPD_LOCALIZATION_DEFAULT);
|
||||
|
||||
/*
|
||||
* Close the CUPS file and return the PPD...
|
||||
*/
|
||||
|
||||
cupsFileClose(cf);
|
||||
|
||||
return (ppd);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'ppdOpen2()' - Read a PPD file into memory.
|
||||
*
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
ppd_file_t * /* O - PPD file record or @code NULL@ if the PPD file could not be opened. */
|
||||
ppdOpen2(cups_file_t *fp) /* I - File to read from */
|
||||
{
|
||||
return _ppdOpen(fp, _PPD_LOCALIZATION_DEFAULT);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'ppdOpenFd()' - Read a PPD file into memory.
|
||||
*/
|
||||
@@ -2167,12 +2069,11 @@ ppdOpenFd(int fd) /* I - File to read from */
|
||||
|
||||
|
||||
/*
|
||||
* '_ppdOpenFile()' - Read a PPD file into memory.
|
||||
* 'ppdOpenFile()' - Read a PPD file into memory.
|
||||
*/
|
||||
|
||||
ppd_file_t * /* O - PPD file record or @code NULL@ if the PPD file could not be opened. */
|
||||
_ppdOpenFile(const char *filename, /* I - File to read from */
|
||||
_ppd_localization_t localization) /* I - Localization to load */
|
||||
ppdOpenFile(const char *filename) /* I - File to read from */
|
||||
{
|
||||
cups_file_t *fp; /* File pointer */
|
||||
ppd_file_t *ppd; /* PPD file record */
|
||||
@@ -2203,7 +2104,7 @@ _ppdOpenFile(const char *filename, /* I - File to read from */
|
||||
|
||||
if ((fp = cupsFileOpen(filename, "r")) != NULL)
|
||||
{
|
||||
ppd = _ppdOpen(fp, localization);
|
||||
ppd = ppdOpen2(fp);
|
||||
|
||||
cupsFileClose(fp);
|
||||
}
|
||||
@@ -2217,17 +2118,6 @@ _ppdOpenFile(const char *filename, /* I - File to read from */
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'ppdOpenFile()' - Read a PPD file into memory.
|
||||
*/
|
||||
|
||||
ppd_file_t * /* O - PPD file record or @code NULL@ if the PPD file could not be opened. */
|
||||
ppdOpenFile(const char *filename) /* I - File to read from */
|
||||
{
|
||||
return _ppdOpenFile(filename, _PPD_LOCALIZATION_DEFAULT);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'ppdSetConformance()' - Set the conformance level for PPD files.
|
||||
*
|
||||
@@ -2486,30 +2376,6 @@ ppd_decode(char *string) /* I - String to decode */
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'ppd_free_filters()' - Free the filters array.
|
||||
*/
|
||||
|
||||
static void
|
||||
ppd_free_filters(ppd_file_t *ppd) /* I - PPD file */
|
||||
{
|
||||
int i; /* Looping var */
|
||||
char **filter; /* Current filter */
|
||||
|
||||
|
||||
if (ppd->num_filters > 0)
|
||||
{
|
||||
for (i = ppd->num_filters, filter = ppd->filters; i > 0; i --, filter ++)
|
||||
_cupsStrFree(*filter);
|
||||
|
||||
ppd_free(ppd->filters);
|
||||
|
||||
ppd->num_filters = 0;
|
||||
ppd->filters = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'ppd_free_group()' - Free a single UI group.
|
||||
*/
|
||||
@@ -3273,126 +3139,6 @@ ppd_read(cups_file_t *fp, /* I - File to read from */
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'ppd_update_filters()' - Update the filters array as needed.
|
||||
*
|
||||
* This function re-populates the filters array with cupsFilter2 entries that
|
||||
* have been stripped of the destination MIME media types and any maxsize hints.
|
||||
*
|
||||
* (All for backwards-compatibility)
|
||||
*/
|
||||
|
||||
static int /* O - 1 on success, 0 on failure */
|
||||
ppd_update_filters(ppd_file_t *ppd,/* I - PPD file */
|
||||
_cups_globals_t *cg) /* I - Global data */
|
||||
{
|
||||
ppd_attr_t *attr; /* Current cupsFilter2 value */
|
||||
char srcsuper[16], /* Source MIME media type */
|
||||
srctype[256],
|
||||
dstsuper[16], /* Destination MIME media type */
|
||||
dsttype[256],
|
||||
program[1024], /* Command to run */
|
||||
*ptr, /* Pointer into command to run */
|
||||
buffer[1024], /* Re-written cupsFilter value */
|
||||
**filter; /* Current filter */
|
||||
int cost; /* Cost of filter */
|
||||
|
||||
|
||||
DEBUG_printf(("4ppd_update_filters(ppd=%p, cg=%p)", ppd, cg));
|
||||
|
||||
/*
|
||||
* See if we have any cupsFilter2 lines...
|
||||
*/
|
||||
|
||||
if ((attr = ppdFindAttr(ppd, "cupsFilter2", NULL)) == NULL)
|
||||
{
|
||||
DEBUG_puts("5ppd_update_filters: No cupsFilter2 keywords present.");
|
||||
return (1);
|
||||
}
|
||||
|
||||
/*
|
||||
* Yes, free the cupsFilter-defined filters and re-build...
|
||||
*/
|
||||
|
||||
ppd_free_filters(ppd);
|
||||
|
||||
do
|
||||
{
|
||||
/*
|
||||
* Parse the cupsFilter2 string:
|
||||
*
|
||||
* src/type dst/type cost program
|
||||
* src/type dst/type cost maxsize(n) program
|
||||
*/
|
||||
|
||||
DEBUG_printf(("5ppd_update_filters: cupsFilter2=\"%s\"", attr->value));
|
||||
|
||||
if (sscanf(attr->value, "%15[^/]/%255s%*[ \t]%15[^/]/%255s%d%*[ \t]%1023[^\n]",
|
||||
srcsuper, srctype, dstsuper, dsttype, &cost, program) != 6)
|
||||
{
|
||||
DEBUG_puts("5ppd_update_filters: Bad cupsFilter2 line.");
|
||||
cg->ppd_status = PPD_BAD_VALUE;
|
||||
|
||||
return (0);
|
||||
}
|
||||
|
||||
DEBUG_printf(("5ppd_update_filters: srcsuper=\"%s\", srctype=\"%s\", "
|
||||
"dstsuper=\"%s\", dsttype=\"%s\", cost=%d, program=\"%s\"",
|
||||
srcsuper, srctype, dstsuper, dsttype, cost, program));
|
||||
|
||||
if (!strncmp(program, "maxsize(", 8) &&
|
||||
(ptr = strchr(program + 8, ')')) != NULL)
|
||||
{
|
||||
DEBUG_puts("5ppd_update_filters: Found maxsize(nnn).");
|
||||
|
||||
ptr ++;
|
||||
while (_cups_isspace(*ptr))
|
||||
ptr ++;
|
||||
|
||||
_cups_strcpy(program, ptr);
|
||||
DEBUG_printf(("5ppd_update_filters: New program=\"%s\"", program));
|
||||
}
|
||||
|
||||
/*
|
||||
* Convert to cupsFilter format:
|
||||
*
|
||||
* src/type cost program
|
||||
*/
|
||||
|
||||
snprintf(buffer, sizeof(buffer), "%s/%s %d %s", srcsuper, srctype, cost,
|
||||
program);
|
||||
DEBUG_printf(("5ppd_update_filters: Adding \"%s\".", buffer));
|
||||
|
||||
/*
|
||||
* Add a cupsFilter-compatible string to the filters array.
|
||||
*/
|
||||
|
||||
if (ppd->num_filters == 0)
|
||||
filter = malloc(sizeof(char *));
|
||||
else
|
||||
filter = realloc(ppd->filters, sizeof(char *) * (ppd->num_filters + 1));
|
||||
|
||||
if (filter == NULL)
|
||||
{
|
||||
DEBUG_puts("5ppd_update_filters: Out of memory.");
|
||||
cg->ppd_status = PPD_ALLOC_ERROR;
|
||||
|
||||
return (0);
|
||||
}
|
||||
|
||||
ppd->filters = filter;
|
||||
filter += ppd->num_filters;
|
||||
ppd->num_filters ++;
|
||||
|
||||
*filter = _cupsStrAlloc(buffer);
|
||||
}
|
||||
while ((attr = ppdFindNextAttr(ppd, "cupsFilter2", NULL)) != NULL);
|
||||
|
||||
DEBUG_puts("5ppd_update_filters: Completed OK.");
|
||||
return (1);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+26
-44
@@ -3,10 +3,6 @@
|
||||
*
|
||||
* PostScript Printer Description definitions for CUPS.
|
||||
*
|
||||
* THESE APIS ARE DEPRECATED. TO COMPILE WITHOUT WARNINGS ADD
|
||||
* -D_PPD_DEPRECATED="" TO YOUR COMPILE OPTIONS. THIS HEADER AND THESE
|
||||
* FUNCTIONS WILL BE REMOVED IN A FUTURE RELEASE OF CUPS.
|
||||
*
|
||||
* Copyright 2007-2011 by Apple Inc.
|
||||
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
|
||||
*
|
||||
@@ -50,16 +46,6 @@ extern "C" {
|
||||
# endif /* __cplusplus */
|
||||
|
||||
|
||||
/*
|
||||
* Define _PPD_DEPRECATED to silence the warnings about PPD functions being
|
||||
* deprecated...
|
||||
*/
|
||||
|
||||
# ifndef _PPD_DEPRECATED
|
||||
# define _PPD_DEPRECATED _CUPS_DEPRECATED
|
||||
# endif /* !_PPD_DEPRECATED */
|
||||
|
||||
|
||||
/*
|
||||
* PPD version...
|
||||
*/
|
||||
@@ -375,8 +361,7 @@ extern int ppdEmitFd(ppd_file_t *ppd, int fd,
|
||||
extern int ppdEmitJCL(ppd_file_t *ppd, FILE *fp, int job_id,
|
||||
const char *user, const char *title);
|
||||
extern ppd_choice_t *ppdFindChoice(ppd_option_t *o, const char *option);
|
||||
extern ppd_choice_t *ppdFindMarkedChoice(ppd_file_t *ppd,
|
||||
const char *keyword);
|
||||
extern ppd_choice_t *ppdFindMarkedChoice(ppd_file_t *ppd, const char *keyword);
|
||||
extern ppd_option_t *ppdFindOption(ppd_file_t *ppd, const char *keyword);
|
||||
extern int ppdIsMarked(ppd_file_t *ppd, const char *keyword,
|
||||
const char *option);
|
||||
@@ -391,67 +376,64 @@ extern ppd_size_t *ppdPageSize(ppd_file_t *ppd, const char *name);
|
||||
extern float ppdPageWidth(ppd_file_t *ppd, const char *name);
|
||||
|
||||
/**** New in CUPS 1.1.19 ****/
|
||||
extern const char *ppdErrorString(ppd_status_t status) _PPD_DEPRECATED;
|
||||
extern const char *ppdErrorString(ppd_status_t status) _CUPS_API_1_1_19;
|
||||
extern ppd_attr_t *ppdFindAttr(ppd_file_t *ppd, const char *name,
|
||||
const char *spec) _PPD_DEPRECATED;
|
||||
const char *spec) _CUPS_API_1_1_19;
|
||||
extern ppd_attr_t *ppdFindNextAttr(ppd_file_t *ppd, const char *name,
|
||||
const char *spec) _PPD_DEPRECATED;
|
||||
extern ppd_status_t ppdLastError(int *line) _PPD_DEPRECATED;
|
||||
const char *spec) _CUPS_API_1_1_19;
|
||||
extern ppd_status_t ppdLastError(int *line) _CUPS_API_1_1_19;
|
||||
|
||||
/**** New in CUPS 1.1.20 ****/
|
||||
extern void ppdSetConformance(ppd_conform_t c) _PPD_DEPRECATED;
|
||||
extern void ppdSetConformance(ppd_conform_t c) _CUPS_API_1_1_20;
|
||||
|
||||
/**** New in CUPS 1.2 ****/
|
||||
extern int ppdCollect2(ppd_file_t *ppd, ppd_section_t section,
|
||||
float min_order, ppd_choice_t ***choices)
|
||||
_PPD_DEPRECATED;
|
||||
float min_order, ppd_choice_t ***choices) _CUPS_API_1_2;
|
||||
extern int ppdEmitAfterOrder(ppd_file_t *ppd, FILE *fp,
|
||||
ppd_section_t section, int limit,
|
||||
float min_order) _PPD_DEPRECATED;
|
||||
extern int ppdEmitJCLEnd(ppd_file_t *ppd, FILE *fp) _PPD_DEPRECATED;
|
||||
float min_order) _CUPS_API_1_2;
|
||||
extern int ppdEmitJCLEnd(ppd_file_t *ppd, FILE *fp) _CUPS_API_1_2;
|
||||
extern char *ppdEmitString(ppd_file_t *ppd, ppd_section_t section,
|
||||
float min_order) _PPD_DEPRECATED;
|
||||
float min_order) _CUPS_API_1_2;
|
||||
extern ppd_coption_t *ppdFindCustomOption(ppd_file_t *ppd,
|
||||
const char *keyword) _PPD_DEPRECATED;
|
||||
const char *keyword) _CUPS_API_1_2;
|
||||
extern ppd_cparam_t *ppdFindCustomParam(ppd_coption_t *opt,
|
||||
const char *name) _PPD_DEPRECATED;
|
||||
extern ppd_cparam_t *ppdFirstCustomParam(ppd_coption_t *opt) _PPD_DEPRECATED;
|
||||
extern ppd_option_t *ppdFirstOption(ppd_file_t *ppd) _PPD_DEPRECATED;
|
||||
extern ppd_cparam_t *ppdNextCustomParam(ppd_coption_t *opt) _PPD_DEPRECATED;
|
||||
extern ppd_option_t *ppdNextOption(ppd_file_t *ppd) _PPD_DEPRECATED;
|
||||
extern int ppdLocalize(ppd_file_t *ppd) _PPD_DEPRECATED;
|
||||
extern ppd_file_t *ppdOpen2(cups_file_t *fp) _PPD_DEPRECATED;
|
||||
const char *name) _CUPS_API_1_2;
|
||||
extern ppd_cparam_t *ppdFirstCustomParam(ppd_coption_t *opt) _CUPS_API_1_2;
|
||||
extern ppd_option_t *ppdFirstOption(ppd_file_t *ppd) _CUPS_API_1_2;
|
||||
extern ppd_cparam_t *ppdNextCustomParam(ppd_coption_t *opt) _CUPS_API_1_2;
|
||||
extern ppd_option_t *ppdNextOption(ppd_file_t *ppd) _CUPS_API_1_2;
|
||||
extern int ppdLocalize(ppd_file_t *ppd) _CUPS_API_1_2;
|
||||
extern ppd_file_t *ppdOpen2(cups_file_t *fp) _CUPS_API_1_2;
|
||||
|
||||
/**** New in CUPS 1.3/Mac OS X 10.5 ****/
|
||||
extern const char *ppdLocalizeIPPReason(ppd_file_t *ppd,
|
||||
const char *reason,
|
||||
const char *scheme,
|
||||
char *buffer,
|
||||
size_t bufsize) _PPD_DEPRECATED;
|
||||
size_t bufsize) _CUPS_API_1_3;
|
||||
|
||||
/**** New in CUPS 1.4/Mac OS X 10.6 ****/
|
||||
extern int cupsGetConflicts(ppd_file_t *ppd, const char *option,
|
||||
const char *choice,
|
||||
cups_option_t **options)
|
||||
_PPD_DEPRECATED;
|
||||
extern int cupsResolveConflicts(ppd_file_t *ppd,
|
||||
const char *option,
|
||||
_CUPS_API_1_4;
|
||||
extern int cupsResolveConflicts(ppd_file_t *ppd, const char *option,
|
||||
const char *choice,
|
||||
int *num_options,
|
||||
cups_option_t **options)
|
||||
_PPD_DEPRECATED;
|
||||
_CUPS_API_1_4;
|
||||
extern int ppdInstallableConflict(ppd_file_t *ppd,
|
||||
const char *option,
|
||||
const char *choice)
|
||||
_PPD_DEPRECATED;
|
||||
_CUPS_API_1_4;
|
||||
extern ppd_attr_t *ppdLocalizeAttr(ppd_file_t *ppd, const char *keyword,
|
||||
const char *spec) _PPD_DEPRECATED;
|
||||
const char *spec) _CUPS_API_1_4;
|
||||
extern const char *ppdLocalizeMarkerName(ppd_file_t *ppd,
|
||||
const char *name)
|
||||
_PPD_DEPRECATED;
|
||||
const char *name) _CUPS_API_1_4;
|
||||
extern int ppdPageSizeLimits(ppd_file_t *ppd,
|
||||
ppd_size_t *minimum,
|
||||
ppd_size_t *maximum) _PPD_DEPRECATED;
|
||||
ppd_size_t *maximum) _CUPS_API_1_4;
|
||||
|
||||
|
||||
/*
|
||||
|
||||
+4
-4
@@ -66,7 +66,7 @@ static _pwg_media_t const cups_pwg_media[] =
|
||||
_PWG_MEDIA_IN("na_number-9_3.875x8.875in", "na-number-9-envelope", "Env9", 3.875, 8.875),
|
||||
_PWG_MEDIA_IN("na_index-4x6_4x6in", NULL, "4x6", 4, 6),
|
||||
_PWG_MEDIA_IN("na_number-10_4.125x9.5in", "na-number-10-envelope", "Env10", 4.125, 9.5),
|
||||
_PWG_MEDIA_IN("na_a2_4.375x5.75in", NULL, "EnvA2", 4.375, 5.75),
|
||||
_PWG_MEDIA_IN("na_a2_4.375x5.75in", NULL, NULL, 4.375, 5.75),
|
||||
_PWG_MEDIA_IN("na_number-11_4.5x10.375in", NULL, "Env11", 4.5, 10.375),
|
||||
_PWG_MEDIA_IN("na_number-12_4.75x11in", NULL, "Env12", 4.75, 11),
|
||||
_PWG_MEDIA_IN("na_5x7_5x7in", NULL, "5x7", 5, 7),
|
||||
@@ -103,8 +103,8 @@ static _pwg_media_t const cups_pwg_media[] =
|
||||
_PWG_MEDIA_IN("na_eur-edp_12x14in", NULL, NULL, 12, 14),
|
||||
_PWG_MEDIA_IN("na_arch-b_12x18in", "arch-b", "ARCHB", 12, 18),
|
||||
_PWG_MEDIA_IN("na_12x19_12x19in", NULL, "12x19", 12, 19),
|
||||
_PWG_MEDIA_IN("na_b-plus_12x19.17in", NULL, "SuperB", 12, 19.17),
|
||||
_PWG_MEDIA_IN("na_super-b_13x19in", "super-b", "13x19", 13, 19),
|
||||
_PWG_MEDIA_IN("na_b-plus_12x19.17in", NULL, NULL, 12, 19.17),
|
||||
_PWG_MEDIA_IN("na_super-b_13x19in", "super-b", "SuperB", 13, 19),
|
||||
_PWG_MEDIA_IN("na_c_17x22in", "c", "AnsiC", 17, 22),
|
||||
_PWG_MEDIA_IN("na_arch-c_18x24in", "arch-c", "ARCHC", 18, 24),
|
||||
_PWG_MEDIA_IN("na_d_22x34in", "d", "AnsiD", 22, 34),
|
||||
@@ -230,7 +230,7 @@ static _pwg_media_t const cups_pwg_media[] =
|
||||
_PWG_MEDIA_IN("oe_photo-l_3.5x5in", NULL, "3.5x5", 3.5, 5),
|
||||
|
||||
/* Other Metric Standard Sheet Media Sizes */
|
||||
_PWG_MEDIA_MM("om_small-photo_100x150mm", NULL, "om_small-photo", 100, 150),
|
||||
_PWG_MEDIA_MM("om_small-photo_100x150mm", NULL, NULL, 100, 150),
|
||||
_PWG_MEDIA_MM("om_italian_110x230mm", NULL, "EnvItalian", 110, 230),
|
||||
_PWG_MEDIA_MM("om_postfix_114x229mm", NULL, NULL, 114, 229),
|
||||
_PWG_MEDIA_MM("om_large-photo_200x300", NULL, NULL, 200, 300),
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
*
|
||||
* Private PWG media API definitions for CUPS.
|
||||
*
|
||||
* Copyright 2009-2012 by Apple Inc.
|
||||
* Copyright 2009-2010 by Apple Inc.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
* property of Apple Inc. and are protected by Federal copyright
|
||||
@@ -39,7 +39,7 @@ extern "C" {
|
||||
*/
|
||||
|
||||
/* Convert from points to 2540ths */
|
||||
# define _PWG_FROMPTS(n) (int)(((n) * 2540 + 36) / 72)
|
||||
# define _PWG_FROMPTS(n) (int)((n) * 2540 / 72)
|
||||
/* Convert from 2540ths to points */
|
||||
# define _PWG_TOPTS(n) ((n) * 72.0 / 2540.0)
|
||||
|
||||
|
||||
@@ -1,69 +0,0 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
*
|
||||
* Private image library definitions for CUPS.
|
||||
*
|
||||
* Copyright 2007-2011 by Apple Inc.
|
||||
* Copyright 1993-2006 by Easy Software Products.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
* property of Apple Inc. and are protected by Federal copyright
|
||||
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
* which should have been included with this file. If this file is
|
||||
* file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
*
|
||||
* This file is subject to the Apple OS-Developed Software exception.
|
||||
*/
|
||||
|
||||
#ifndef _CUPS_RASTER_PRIVATE_H_
|
||||
# define _CUPS_RASTER_PRIVATE_H_
|
||||
|
||||
/*
|
||||
* Include necessary headers...
|
||||
*/
|
||||
|
||||
# include "raster.h"
|
||||
# include <cups/cups.h>
|
||||
# include <cups/debug-private.h>
|
||||
# include <cups/string-private.h>
|
||||
# ifdef WIN32
|
||||
# include <io.h>
|
||||
# include <winsock2.h> /* for htonl() definition */
|
||||
# else
|
||||
# include <unistd.h>
|
||||
# include <fcntl.h>
|
||||
# endif /* WIN32 */
|
||||
|
||||
|
||||
/*
|
||||
* min/max/abs macros...
|
||||
*/
|
||||
|
||||
# ifndef max
|
||||
# define max(a,b) ((a) > (b) ? (a) : (b))
|
||||
# endif /* !max */
|
||||
# ifndef min
|
||||
# define min(a,b) ((a) < (b) ? (a) : (b))
|
||||
# endif /* !min */
|
||||
# ifndef abs
|
||||
# define abs(a) ((a) < 0 ? -(a) : (a))
|
||||
# endif /* !abs */
|
||||
|
||||
|
||||
/*
|
||||
* Prototypes...
|
||||
*/
|
||||
|
||||
extern int _cupsRasterExecPS(cups_page_header2_t *h,
|
||||
int *preferred_bits,
|
||||
const char *code)
|
||||
__attribute__((nonnull(3)));
|
||||
extern void _cupsRasterAddError(const char *f, ...)
|
||||
__attribute__((__format__(__printf__, 1, 2)));
|
||||
extern void _cupsRasterClearError(void);
|
||||
|
||||
#endif /* !_CUPS_RASTER_PRIVATE_H_ */
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
*/
|
||||
+41
-91
@@ -248,9 +248,16 @@ 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_CONTINUE)
|
||||
break;
|
||||
if (httpCheck(http))
|
||||
{
|
||||
_httpUpdate(http, &status);
|
||||
|
||||
if (status >= HTTP_MULTIPLE_CHOICES)
|
||||
break;
|
||||
}
|
||||
|
||||
if (httpWrite2(http, buffer, bytes) < bytes)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -258,11 +265,13 @@ cupsDoIORequest(http_t *http, /* I - Connection to server or @code CUPS_HTTP
|
||||
* Get the server's response...
|
||||
*/
|
||||
|
||||
if (status != HTTP_ERROR)
|
||||
if (status == HTTP_CONTINUE || status == HTTP_OK)
|
||||
{
|
||||
response = cupsGetResponse(http, resource);
|
||||
status = httpGetStatus(http);
|
||||
status = http->status;
|
||||
}
|
||||
else
|
||||
httpFlush(http);
|
||||
|
||||
DEBUG_printf(("2cupsDoIORequest: status=%d", status));
|
||||
|
||||
@@ -274,24 +283,26 @@ cupsDoIORequest(http_t *http, /* I - Connection to server or @code CUPS_HTTP
|
||||
break;
|
||||
}
|
||||
|
||||
if (response && outfile >= 0)
|
||||
if (response)
|
||||
{
|
||||
/*
|
||||
* Write trailing data to file...
|
||||
*/
|
||||
if (outfile >= 0)
|
||||
{
|
||||
/*
|
||||
* Write trailing data to file...
|
||||
*/
|
||||
|
||||
while ((bytes = (int)httpRead2(http, buffer, sizeof(buffer))) > 0)
|
||||
if (write(outfile, buffer, bytes) < bytes)
|
||||
break;
|
||||
}
|
||||
while ((bytes = (int)httpRead2(http, buffer, sizeof(buffer))) > 0)
|
||||
if (write(outfile, buffer, bytes) < bytes)
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
/*
|
||||
* Flush any remaining data...
|
||||
*/
|
||||
|
||||
if (http->state != HTTP_WAITING)
|
||||
{
|
||||
/*
|
||||
* Flush any remaining data...
|
||||
*/
|
||||
|
||||
httpFlush(http);
|
||||
httpFlush(http);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -332,8 +343,7 @@ cupsDoRequest(http_t *http, /* I - Connection to server or @code CUPS_HTTP_
|
||||
*
|
||||
* Use this function to get the response for an IPP request sent using
|
||||
* cupsSendDocument() or cupsSendRequest(). For requests that return
|
||||
* additional data, use httpRead() after getting a successful response,
|
||||
* otherwise call httpFlush() to complete the response processing.
|
||||
* additional data, use httpRead() after getting a successful response.
|
||||
*
|
||||
* @since CUPS 1.4/Mac OS X 10.6@
|
||||
*/
|
||||
@@ -416,8 +426,6 @@ cupsGetResponse(http_t *http, /* I - Connection to server or @code CUPS_HTTP
|
||||
response = NULL;
|
||||
|
||||
_cupsSetError(IPP_SERVICE_UNAVAILABLE, NULL, 0);
|
||||
http->status = status = HTTP_ERROR;
|
||||
http->error = EIO;
|
||||
}
|
||||
}
|
||||
else if (status != HTTP_ERROR)
|
||||
@@ -443,7 +451,7 @@ cupsGetResponse(http_t *http, /* I - Connection to server or @code CUPS_HTTP
|
||||
if (!cupsDoAuthentication(http, "POST", resource))
|
||||
httpReconnect(http);
|
||||
else
|
||||
http->status = status = HTTP_AUTHORIZATION_CANCELED;
|
||||
status = HTTP_AUTHORIZATION_CANCELED;
|
||||
}
|
||||
|
||||
#ifdef HAVE_SSL
|
||||
@@ -476,8 +484,6 @@ cupsGetResponse(http_t *http, /* I - Connection to server or @code CUPS_HTTP
|
||||
attr ? attr->values[0].string.text :
|
||||
ippErrorString(response->request.status.status_code), 0);
|
||||
}
|
||||
else if (status == HTTP_ERROR)
|
||||
_cupsSetError(IPP_INTERNAL_ERROR, strerror(http->error), 0);
|
||||
else if (status != HTTP_OK)
|
||||
_cupsSetHTTPError(status);
|
||||
|
||||
@@ -631,25 +637,6 @@ cupsSendRequest(http_t *http, /* I - Connection to server or @code CUPS_HTTP
|
||||
if ((http = _cupsConnect()) == NULL)
|
||||
return (HTTP_SERVICE_UNAVAILABLE);
|
||||
|
||||
/*
|
||||
* If the prior request was not flushed out, do so now...
|
||||
*/
|
||||
|
||||
if (http->state == HTTP_GET_SEND ||
|
||||
http->state == HTTP_POST_SEND)
|
||||
{
|
||||
DEBUG_puts("2cupsSendRequest: Flush prior response.");
|
||||
httpFlush(http);
|
||||
}
|
||||
else if (http->state != HTTP_WAITING)
|
||||
{
|
||||
DEBUG_printf(("1cupsSendRequest: Unknown HTTP state (%d), bailing.",
|
||||
http->state));
|
||||
_cupsSetError(IPP_INTERNAL_ERROR, strerror(EINVAL), 0);
|
||||
|
||||
return (HTTP_ERROR);
|
||||
}
|
||||
|
||||
#ifdef HAVE_SSL
|
||||
/*
|
||||
* See if we have an auth-info attribute and are communicating over
|
||||
@@ -661,7 +648,7 @@ cupsSendRequest(http_t *http, /* I - Connection to server or @code CUPS_HTTP
|
||||
!httpAddrLocalhost(http->hostaddr) && !http->tls &&
|
||||
httpEncryption(http, HTTP_ENCRYPT_REQUIRED))
|
||||
{
|
||||
DEBUG_puts("1cupsSendRequest: Unable to encrypt connection.");
|
||||
_cupsSetError(IPP_SERVICE_UNAVAILABLE, NULL, 0);
|
||||
return (HTTP_SERVICE_UNAVAILABLE);
|
||||
}
|
||||
#endif /* HAVE_SSL */
|
||||
@@ -671,15 +658,11 @@ cupsSendRequest(http_t *http, /* I - Connection to server or @code CUPS_HTTP
|
||||
*/
|
||||
|
||||
if (!_cups_strcasecmp(http->fields[HTTP_FIELD_CONNECTION], "close"))
|
||||
{
|
||||
DEBUG_puts("2cupsSendRequest: Connection: close");
|
||||
httpClearFields(http);
|
||||
if (httpReconnect(http))
|
||||
{
|
||||
DEBUG_puts("1cupsSendRequest: Unable to reconnect.");
|
||||
_cupsSetError(IPP_SERVICE_UNAVAILABLE, NULL, 0);
|
||||
return (HTTP_SERVICE_UNAVAILABLE);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Loop until we can send the request without authorization problems.
|
||||
@@ -724,10 +707,9 @@ cupsSendRequest(http_t *http, /* I - Connection to server or @code CUPS_HTTP
|
||||
|
||||
if (httpPost(http, resource))
|
||||
{
|
||||
DEBUG_puts("2cupsSendRequest: POST failed, reconnecting.");
|
||||
if (httpReconnect(http))
|
||||
{
|
||||
DEBUG_puts("1cupsSendRequest: Unable to reconnect.");
|
||||
_cupsSetError(IPP_SERVICE_UNAVAILABLE, NULL, 0);
|
||||
return (HTTP_SERVICE_UNAVAILABLE);
|
||||
}
|
||||
else
|
||||
@@ -758,8 +740,6 @@ cupsSendRequest(http_t *http, /* I - Connection to server or @code CUPS_HTTP
|
||||
|
||||
if (state == IPP_ERROR)
|
||||
{
|
||||
DEBUG_puts("1cupsSendRequest: Unable to send IPP request.");
|
||||
|
||||
http->status = HTTP_ERROR;
|
||||
http->state = HTTP_WAITING;
|
||||
|
||||
@@ -790,38 +770,22 @@ cupsSendRequest(http_t *http, /* I - Connection to server or @code CUPS_HTTP
|
||||
*/
|
||||
|
||||
if (status >= HTTP_MULTIPLE_CHOICES)
|
||||
{
|
||||
_cupsSetHTTPError(status);
|
||||
|
||||
do
|
||||
{
|
||||
status = httpUpdate(http);
|
||||
}
|
||||
while (status != HTTP_ERROR && http->state == HTTP_POST_RECV);
|
||||
|
||||
httpFlush(http);
|
||||
}
|
||||
|
||||
switch (status)
|
||||
{
|
||||
case HTTP_ERROR :
|
||||
case HTTP_CONTINUE :
|
||||
case HTTP_OK :
|
||||
DEBUG_printf(("1cupsSendRequest: Returning %d.", status));
|
||||
return (status);
|
||||
|
||||
case HTTP_UNAUTHORIZED :
|
||||
if (cupsDoAuthentication(http, "POST", resource))
|
||||
{
|
||||
DEBUG_puts("1cupsSendRequest: Returning HTTP_AUTHORIZATION_CANCELED.");
|
||||
return (HTTP_AUTHORIZATION_CANCELED);
|
||||
}
|
||||
|
||||
DEBUG_puts("2cupsSendRequest: Reconnecting after HTTP_UNAUTHORIZED.");
|
||||
|
||||
if (httpReconnect(http))
|
||||
{
|
||||
DEBUG_puts("1cupsSendRequest: Unable to reconnect.");
|
||||
_cupsSetError(IPP_SERVICE_UNAVAILABLE, NULL, 0);
|
||||
return (HTTP_SERVICE_UNAVAILABLE);
|
||||
}
|
||||
break;
|
||||
@@ -833,19 +797,15 @@ cupsSendRequest(http_t *http, /* I - Connection to server or @code CUPS_HTTP
|
||||
* encryption...
|
||||
*/
|
||||
|
||||
DEBUG_puts("2cupsSendRequest: Reconnecting after "
|
||||
"HTTP_UPGRADE_REQUIRED.");
|
||||
|
||||
if (httpReconnect(http))
|
||||
{
|
||||
DEBUG_puts("1cupsSendRequest: Unable to reconnect.");
|
||||
_cupsSetError(IPP_SERVICE_UNAVAILABLE, NULL, 0);
|
||||
return (HTTP_SERVICE_UNAVAILABLE);
|
||||
}
|
||||
|
||||
DEBUG_puts("2cupsSendRequest: Upgrading to TLS.");
|
||||
if (httpEncryption(http, HTTP_ENCRYPT_REQUIRED))
|
||||
{
|
||||
DEBUG_puts("1cupsSendRequest: Unable to encrypt connection.");
|
||||
_cupsSetError(IPP_SERVICE_UNAVAILABLE, NULL, 0);
|
||||
return (HTTP_SERVICE_UNAVAILABLE);
|
||||
}
|
||||
break;
|
||||
@@ -858,12 +818,9 @@ cupsSendRequest(http_t *http, /* I - Connection to server or @code CUPS_HTTP
|
||||
|
||||
expect = (http_status_t)0;
|
||||
|
||||
DEBUG_puts("2cupsSendRequest: Reconnecting after "
|
||||
"HTTP_EXPECTATION_FAILED.");
|
||||
|
||||
if (httpReconnect(http))
|
||||
{
|
||||
DEBUG_puts("1cupsSendRequest: Unable to reconnect.");
|
||||
_cupsSetError(IPP_SERVICE_UNAVAILABLE, NULL, 0);
|
||||
return (HTTP_SERVICE_UNAVAILABLE);
|
||||
}
|
||||
break;
|
||||
@@ -950,13 +907,6 @@ cupsWriteRequestData(
|
||||
if (status >= HTTP_MULTIPLE_CHOICES)
|
||||
{
|
||||
_cupsSetHTTPError(status);
|
||||
|
||||
do
|
||||
{
|
||||
status = httpUpdate(http);
|
||||
}
|
||||
while (status != HTTP_ERROR && http->state == HTTP_POST_RECV);
|
||||
|
||||
httpFlush(http);
|
||||
}
|
||||
|
||||
@@ -1132,7 +1082,7 @@ _cupsSetHTTPError(http_status_t status) /* I - HTTP status code */
|
||||
break;
|
||||
|
||||
case HTTP_ERROR :
|
||||
_cupsSetError(IPP_INTERNAL_ERROR, strerror(errno), 0);
|
||||
_cupsSetError(IPP_INTERNAL_ERROR, httpStatus(status), 0);
|
||||
break;
|
||||
|
||||
default :
|
||||
|
||||
+13
-80
@@ -29,7 +29,8 @@
|
||||
*/
|
||||
|
||||
#include "sidechannel.h"
|
||||
#include "cups-private.h"
|
||||
#include "string-private.h"
|
||||
#include "debug-private.h"
|
||||
#ifdef WIN32
|
||||
# include <io.h>
|
||||
#else
|
||||
@@ -44,18 +45,10 @@
|
||||
# include <sys/time.h>
|
||||
#endif /* !WIN32 */
|
||||
#ifdef HAVE_POLL
|
||||
# include <poll.h>
|
||||
# include <sys/poll.h>
|
||||
#endif /* HAVE_POLL */
|
||||
|
||||
|
||||
/*
|
||||
* Buffer size for side-channel requests...
|
||||
*/
|
||||
|
||||
#define _CUPS_SC_MAX_DATA 65535
|
||||
#define _CUPS_SC_MAX_BUFFER 65540
|
||||
|
||||
|
||||
/*
|
||||
* 'cupsSideChannelDoRequest()' - Send a side-channel command to a backend and wait for a response.
|
||||
*
|
||||
@@ -119,7 +112,7 @@ cupsSideChannelRead(
|
||||
int *datalen, /* IO - Size of data buffer on entry, number of bytes in buffer on return */
|
||||
double timeout) /* I - Timeout in seconds */
|
||||
{
|
||||
char *buffer; /* Message buffer */
|
||||
char buffer[16388]; /* Message buffer */
|
||||
int bytes; /* Bytes read */
|
||||
int templen; /* Data length from message */
|
||||
int nfds; /* Number of file descriptors */
|
||||
@@ -171,8 +164,7 @@ cupsSideChannelRead(
|
||||
|
||||
if (nfds < 1)
|
||||
{
|
||||
*command = CUPS_SC_CMD_NONE;
|
||||
*status = nfds==0 ? CUPS_SC_STATUS_TIMEOUT : CUPS_SC_STATUS_IO_ERROR;
|
||||
*status = nfds==0 ? CUPS_SC_STATUS_TIMEOUT : CUPS_SC_STATUS_IO_ERROR;
|
||||
return (-1);
|
||||
}
|
||||
|
||||
@@ -183,28 +175,16 @@ cupsSideChannelRead(
|
||||
* ------- -------------------------------------------
|
||||
* 0 Command code
|
||||
* 1 Status code
|
||||
* 2-3 Data length (network byte order)
|
||||
* 2-3 Data length (network byte order) <= 16384
|
||||
* 4-N Data
|
||||
*/
|
||||
|
||||
if ((buffer = _cupsBufferGet(_CUPS_SC_MAX_BUFFER)) == NULL)
|
||||
{
|
||||
*command = CUPS_SC_CMD_NONE;
|
||||
*status = CUPS_SC_STATUS_TOO_BIG;
|
||||
|
||||
return (-1);
|
||||
}
|
||||
|
||||
while ((bytes = read(CUPS_SC_FD, buffer, _CUPS_SC_MAX_BUFFER)) < 0)
|
||||
while ((bytes = read(CUPS_SC_FD, buffer, sizeof(buffer))) < 0)
|
||||
if (errno != EINTR && errno != EAGAIN)
|
||||
{
|
||||
DEBUG_printf(("1cupsSideChannelRead: Read error: %s", strerror(errno)));
|
||||
|
||||
_cupsBufferRelease(buffer);
|
||||
|
||||
*command = CUPS_SC_CMD_NONE;
|
||||
*status = CUPS_SC_STATUS_IO_ERROR;
|
||||
|
||||
return (-1);
|
||||
}
|
||||
|
||||
@@ -215,12 +195,8 @@ cupsSideChannelRead(
|
||||
if (bytes < 4)
|
||||
{
|
||||
DEBUG_printf(("1cupsSideChannelRead: Short read of %d bytes", bytes));
|
||||
|
||||
_cupsBufferRelease(buffer);
|
||||
|
||||
*command = CUPS_SC_CMD_NONE;
|
||||
*status = CUPS_SC_STATUS_BAD_MESSAGE;
|
||||
|
||||
return (-1);
|
||||
}
|
||||
|
||||
@@ -232,12 +208,8 @@ cupsSideChannelRead(
|
||||
buffer[0] >= CUPS_SC_CMD_MAX)
|
||||
{
|
||||
DEBUG_printf(("1cupsSideChannelRead: Bad command %d!", buffer[0]));
|
||||
|
||||
_cupsBufferRelease(buffer);
|
||||
|
||||
*command = CUPS_SC_CMD_NONE;
|
||||
*status = CUPS_SC_STATUS_BAD_MESSAGE;
|
||||
|
||||
return (-1);
|
||||
}
|
||||
|
||||
@@ -280,8 +252,6 @@ cupsSideChannelRead(
|
||||
memcpy(data, buffer + 4, templen);
|
||||
}
|
||||
|
||||
_cupsBufferRelease(buffer);
|
||||
|
||||
DEBUG_printf(("1cupsSideChannelRead: Returning status=%d", *status));
|
||||
|
||||
return (0);
|
||||
@@ -320,7 +290,7 @@ cupsSideChannelSNMPGet(
|
||||
{
|
||||
cups_sc_status_t status; /* Status of command */
|
||||
cups_sc_command_t rcommand; /* Response command */
|
||||
char *real_data; /* Real data buffer for response */
|
||||
char real_data[2048];/* Real data buffer for response */
|
||||
int real_datalen, /* Real length of data buffer */
|
||||
real_oidlen; /* Length of returned OID string */
|
||||
|
||||
@@ -346,21 +316,12 @@ cupsSideChannelSNMPGet(
|
||||
(int)strlen(oid) + 1, timeout))
|
||||
return (CUPS_SC_STATUS_TIMEOUT);
|
||||
|
||||
if ((real_data = _cupsBufferGet(_CUPS_SC_MAX_BUFFER)) == NULL)
|
||||
return (CUPS_SC_STATUS_TOO_BIG);
|
||||
|
||||
real_datalen = _CUPS_SC_MAX_BUFFER;
|
||||
real_datalen = sizeof(real_data);
|
||||
if (cupsSideChannelRead(&rcommand, &status, real_data, &real_datalen, timeout))
|
||||
{
|
||||
_cupsBufferRelease(real_data);
|
||||
return (CUPS_SC_STATUS_TIMEOUT);
|
||||
}
|
||||
|
||||
if (rcommand != CUPS_SC_CMD_SNMP_GET)
|
||||
{
|
||||
_cupsBufferRelease(real_data);
|
||||
return (CUPS_SC_STATUS_BAD_MESSAGE);
|
||||
}
|
||||
|
||||
if (status == CUPS_SC_STATUS_OK)
|
||||
{
|
||||
@@ -372,10 +333,7 @@ cupsSideChannelSNMPGet(
|
||||
real_datalen -= real_oidlen;
|
||||
|
||||
if ((real_datalen + 1) > *datalen)
|
||||
{
|
||||
_cupsBufferRelease(real_data);
|
||||
return (CUPS_SC_STATUS_TOO_BIG);
|
||||
}
|
||||
|
||||
memcpy(data, real_data + real_oidlen, real_datalen);
|
||||
data[real_datalen] = '\0';
|
||||
@@ -383,8 +341,6 @@ cupsSideChannelSNMPGet(
|
||||
*datalen = real_datalen;
|
||||
}
|
||||
|
||||
_cupsBufferRelease(real_data);
|
||||
|
||||
return (status);
|
||||
}
|
||||
|
||||
@@ -426,7 +382,7 @@ cupsSideChannelSNMPWalk(
|
||||
{
|
||||
cups_sc_status_t status; /* Status of command */
|
||||
cups_sc_command_t rcommand; /* Response command */
|
||||
char *real_data; /* Real data buffer for response */
|
||||
char real_data[2048];/* Real data buffer for response */
|
||||
int real_datalen, /* Real length of data buffer */
|
||||
real_oidlen, /* Length of returned OID string */
|
||||
oidlen; /* Length of first OID */
|
||||
@@ -444,9 +400,6 @@ cupsSideChannelSNMPWalk(
|
||||
if (!oid || !*oid || !cb)
|
||||
return (CUPS_SC_STATUS_BAD_MESSAGE);
|
||||
|
||||
if ((real_data = _cupsBufferGet(_CUPS_SC_MAX_BUFFER)) == NULL)
|
||||
return (CUPS_SC_STATUS_TOO_BIG);
|
||||
|
||||
/*
|
||||
* Loop until the OIDs don't match...
|
||||
*/
|
||||
@@ -463,24 +416,15 @@ cupsSideChannelSNMPWalk(
|
||||
|
||||
if (cupsSideChannelWrite(CUPS_SC_CMD_SNMP_GET_NEXT, CUPS_SC_STATUS_NONE,
|
||||
current_oid, (int)strlen(current_oid) + 1, timeout))
|
||||
{
|
||||
_cupsBufferRelease(real_data);
|
||||
return (CUPS_SC_STATUS_TIMEOUT);
|
||||
}
|
||||
|
||||
real_datalen = _CUPS_SC_MAX_BUFFER;
|
||||
real_datalen = sizeof(real_data);
|
||||
if (cupsSideChannelRead(&rcommand, &status, real_data, &real_datalen,
|
||||
timeout))
|
||||
{
|
||||
_cupsBufferRelease(real_data);
|
||||
return (CUPS_SC_STATUS_TIMEOUT);
|
||||
}
|
||||
|
||||
if (rcommand != CUPS_SC_CMD_SNMP_GET_NEXT)
|
||||
{
|
||||
_cupsBufferRelease(real_data);
|
||||
return (CUPS_SC_STATUS_BAD_MESSAGE);
|
||||
}
|
||||
|
||||
if (status == CUPS_SC_STATUS_OK)
|
||||
{
|
||||
@@ -495,7 +439,6 @@ cupsSideChannelSNMPWalk(
|
||||
* Done with this set of OIDs...
|
||||
*/
|
||||
|
||||
_cupsBufferRelease(real_data);
|
||||
return (CUPS_SC_STATUS_OK);
|
||||
}
|
||||
|
||||
@@ -521,8 +464,6 @@ cupsSideChannelSNMPWalk(
|
||||
}
|
||||
while (status == CUPS_SC_STATUS_OK);
|
||||
|
||||
_cupsBufferRelease(real_data);
|
||||
|
||||
return (status);
|
||||
}
|
||||
|
||||
@@ -544,7 +485,7 @@ cupsSideChannelWrite(
|
||||
int datalen, /* I - Number of bytes of data */
|
||||
double timeout) /* I - Timeout in seconds */
|
||||
{
|
||||
char *buffer; /* Message buffer */
|
||||
char buffer[16388]; /* Message buffer */
|
||||
int bytes; /* Bytes written */
|
||||
#ifdef HAVE_POLL
|
||||
struct pollfd pfd; /* Poll structure for poll() */
|
||||
@@ -559,7 +500,7 @@ cupsSideChannelWrite(
|
||||
*/
|
||||
|
||||
if (command < CUPS_SC_CMD_SOFT_RESET || command >= CUPS_SC_CMD_MAX ||
|
||||
datalen < 0 || datalen > _CUPS_SC_MAX_DATA || (datalen > 0 && !data))
|
||||
datalen < 0 || datalen > 16384 || (datalen > 0 && !data))
|
||||
return (-1);
|
||||
|
||||
/*
|
||||
@@ -608,9 +549,6 @@ cupsSideChannelWrite(
|
||||
* 4-N Data
|
||||
*/
|
||||
|
||||
if ((buffer = _cupsBufferGet(datalen + 4)) == NULL)
|
||||
return (-1);
|
||||
|
||||
buffer[0] = command;
|
||||
buffer[1] = status;
|
||||
buffer[2] = datalen >> 8;
|
||||
@@ -626,12 +564,7 @@ cupsSideChannelWrite(
|
||||
|
||||
while (write(CUPS_SC_FD, buffer, bytes) < 0)
|
||||
if (errno != EINTR && errno != EAGAIN)
|
||||
{
|
||||
_cupsBufferRelease(buffer);
|
||||
return (-1);
|
||||
}
|
||||
|
||||
_cupsBufferRelease(buffer);
|
||||
|
||||
return (0);
|
||||
}
|
||||
|
||||
+1
-1
@@ -61,7 +61,7 @@
|
||||
#include "cups-private.h"
|
||||
#include "snmp-private.h"
|
||||
#ifdef HAVE_POLL
|
||||
# include <poll.h>
|
||||
# include <sys/poll.h>
|
||||
#endif /* HAVE_POLL */
|
||||
|
||||
|
||||
|
||||
Alguns arquivos não foram exibidos porque demasiados arquivos foram alterados neste diff Mostrar Mais
Referência em uma Nova Issue
Bloquear um usuário