Comparar commits
1 Commits
| Autor | SHA1 | Data | |
|---|---|---|---|
| a95630d541 |
@@ -1,312 +0,0 @@
|
||||
CHANGES-1.5.txt
|
||||
---------------
|
||||
|
||||
CHANGES IN CUPS V1.5.4
|
||||
|
||||
- Documentation updates (STR #4112, STR #4130, STR #4134)
|
||||
- Fixes for libusb-based USB backend (STR #4128)
|
||||
- The lpq command did not show the owner or title of jobs unless passed
|
||||
a username on the command-line (STR #4135)
|
||||
- Localized empty strings contained the message catalog metadata
|
||||
(STR #4119)
|
||||
- Fixed a crash in the libusb-based USB backend (STR #4099)
|
||||
- The cups-lpd mini-daemon no longer handled jobs with multiple copies
|
||||
(STR #4118)
|
||||
- Multiple libusb backend fixes (STR #4098, STR #4100)
|
||||
- The IPP backend no longer tries to get the job status for printers
|
||||
that do not implement the required operation (STR #4083)
|
||||
- Sending a document in an unsupported format to an IPP printer now
|
||||
automatically cancels the job (STR #4093)
|
||||
- Fix some error reporting issues when printing from /dev/null and
|
||||
other unusual situations (STR #4015)
|
||||
- The scheduler now sets the CUPS_MAX_MESSAGE environment variable for
|
||||
filters (STR #4074)
|
||||
- Fixed a build issue when using older versions of autoconf (STR #4084)
|
||||
- The IPP backend now treats the client-error-not-possible status code
|
||||
as a job history issue, allowing IPP printing to Windows to work
|
||||
(STR #4047)
|
||||
- The IPP backend incorrectly included the document-format and
|
||||
compression attributes in Create-Job requests (STR #4086)
|
||||
- The libusb-based USB backend did not work on non-Linux platforms
|
||||
(STR #4088)
|
||||
|
||||
|
||||
CHANGES IN CUPS V1.5.3
|
||||
|
||||
- httpReconnect() did not reset the read/write buffers (STR #4065)
|
||||
- Compiling without threading support failed (STR #4060)
|
||||
- Fixed compile problem with old versions of OpenSSL (STR #4036)
|
||||
- The network backends did not check SNMP supply levels regularly
|
||||
(STR #4040)
|
||||
- The online help always included the "help on help" text (STR #4042)
|
||||
- Fixed a SSL handshake issue on OS X (STR #4045)
|
||||
- The scheduler could crash if a PPD file contained an invalid paper
|
||||
size (STR #4049)
|
||||
- The CUPS polling daemon did not reinitialize its connection to the
|
||||
remote server on errors in all cases (STR #4031)
|
||||
- PostScript auto-configuration was slow and unreliable with some
|
||||
printers (STR #4028)
|
||||
- Missing localizations caused empty output (STR #4033)
|
||||
- The cups-driverd program could temporarily "forget" a PPD file if it
|
||||
was updated in place.
|
||||
- The dnssd backend now prefers IPPS over IPP.
|
||||
- The USB backend now uses and requires LIBUSB 1.0 or later (STR #3477)
|
||||
- The LIBUSB-based USB backend now supports the back-channel (STR #2890)
|
||||
- Changed how timeouts are implemented in the LPD backend (STR #4013)
|
||||
- Added more supported color names for SNMP supplies (STR #3981)
|
||||
- The default InputSlot setting was never used (STR #3957)
|
||||
- POSIX ACLs are now set properly on certificate files (STR #3970)
|
||||
- Supplies with commas in their names were not reported correctly
|
||||
(STR #4020)
|
||||
- The cupsGetPPD3() function created a temporary file when one was not
|
||||
needed (STR #4018)
|
||||
- The scheduler now ensures that job notifications contain a value for
|
||||
the notify-printer-uri attribute (STR #4014)
|
||||
- The lp and lpr commands did not cancel jobs queued from stdin on an
|
||||
error (STR #4015)
|
||||
- Fixed the IPP backend's handling of HTTP/1.0 compatibility (STR #3988)
|
||||
- The IPP backend did not always setup username/password authentication
|
||||
for printers (STR #3985)
|
||||
- The IPP backend no longer re-queues print jobs that are too large for
|
||||
the printer/server (STR #3977)
|
||||
- The RPM spec file did not work (STR #4021, STR #4057)
|
||||
- Encryption did not work when the server name ended with "."
|
||||
(STR #4011)
|
||||
- The multi-purpose tray is now mapped to the IPP "by-pass-tray"
|
||||
(STR #4009)
|
||||
- The correct media size was not always passed to IPP printers
|
||||
(STR #4001)
|
||||
- Finishing options were not passed to IPP printers (STR #3995)
|
||||
- Fixed iCloud-based Back to My Mac printing (STR #3996)
|
||||
|
||||
|
||||
CHANGES IN CUPS V1.5.2
|
||||
|
||||
- Reposted what should have been CUPS 1.5.1.
|
||||
|
||||
|
||||
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,128 +0,0 @@
|
||||
CHANGES-IPPTOOL.txt - 2012-02-28
|
||||
--------------------------------
|
||||
|
||||
This file provides a list of changes to the ipptool binary distribution posted
|
||||
on cups.org.
|
||||
|
||||
|
||||
2012-02-28
|
||||
|
||||
- Changed behavior of WITH-VALUES "/regex/" to not require all values to
|
||||
match.
|
||||
- Added WITH-ALL-VALUES directive for EXPECT predicates that require all
|
||||
values to match.
|
||||
- Updated test files to use WITH-ALL-VALUES where necessary.
|
||||
- Updated test files to use new ABNF for media names from PWG Media
|
||||
Names 2.0.
|
||||
|
||||
|
||||
2012-02-06
|
||||
|
||||
- Fixed the packaging of ipptool on Windows (removed unnecessary DLLs)
|
||||
- Fixed an crash in ipptool when mixing DISPLAY with -I and a failed
|
||||
request.
|
||||
- Added a Print-Job test file.
|
||||
- Added a "setdebug" batch file for Windows
|
||||
- Added support for a CUPS_DISABLE_ASYNC_CONNECT environment variable.
|
||||
|
||||
|
||||
2012-01-10
|
||||
|
||||
- Fixed an issue with the IPP/1.1 test file where the "waiting for job
|
||||
completion" test did not work.
|
||||
- The attribute groups out of order error was not shown for the
|
||||
operation-attributes-tag group.
|
||||
|
||||
|
||||
2011-12-02
|
||||
|
||||
- Fixed a truncated XML output bug that would happen for certain errors.
|
||||
- Fixed the order-of-groups tests.
|
||||
- Fixed "WITH-VALUE >N" for rangeOfInteger attributes.
|
||||
- The Windows installer was missing the get-printer-attributes.test
|
||||
file.
|
||||
- The Linux binaries are now compiled for all LSB 4.x-compliant Linux
|
||||
distributions.
|
||||
- The Linux binaries no longer support SSL or TLS.
|
||||
|
||||
|
||||
2011-10-05
|
||||
|
||||
- Fixed a crasher bug that showed up on Windows.
|
||||
- The IPP/1.1 test would hang if the initial Print-Job test failed.
|
||||
- Fixed a typo in the IPP/2.0 test.
|
||||
|
||||
|
||||
2011-10-03
|
||||
|
||||
- Using OF-TYPE with the "no-value" or "unknown" out-of-band value tags
|
||||
now works without special WITH-VALUE strings.
|
||||
- ipptool now shows an error when an attribute appears more than once
|
||||
within the same attribute group.
|
||||
- ipptool did not display attributes as specified by the DISPLAY
|
||||
directive when a test error failed.
|
||||
- Fixed one spot where DEFINE-VALUE was still treated as an error when
|
||||
the EXPECT test failed.
|
||||
- uriScheme values were not displayed properly.
|
||||
- Updated the IPP/1.1 tests to properly validate support for
|
||||
job-hold-until-default and job-hold-until-supported when the Hold-Job
|
||||
operation is supported.
|
||||
- Updated the IPP/1.1 tests to properly check for the various standard
|
||||
media sizes for the printing tests.
|
||||
- Updated the IPP/1.1 tests to accept "no-value" for media-default an
|
||||
orientation-requested-default.
|
||||
- Updated the IPP/1.1 tests to accept "unknown" for job-state.
|
||||
- Updated the IPP/1.1 tests to not perform the bogus URI printing tests
|
||||
unless the "document-uri" variable is defined.
|
||||
- Updated the IPP/2.0 tests to properly validate media-col
|
||||
"media-xxx-supported" attributes.
|
||||
- Updated the IPP/2.2 tests to properly validate media-ready and
|
||||
media-col-ready.
|
||||
|
||||
|
||||
2011-09-28
|
||||
|
||||
- Test output now includes a summary and overall score at the end.
|
||||
- The MATCH-VALUE predicate now correctly deals with a failed EXPECT
|
||||
condition.
|
||||
- The IPP/1.1 test suite now looks for legacy media names and uses them
|
||||
if the corresponding PWG standard names are not present.
|
||||
- The IPP/1.1 test suite now tests the Print-Job+Release-Job when the
|
||||
printer supports the job-hold-until attribute, Hold-Job operation, and
|
||||
Release-Job operation.
|
||||
|
||||
|
||||
2011-09-21
|
||||
|
||||
- Fixes for HTTP chunking, timeout, and encryption issues reported by
|
||||
various users.
|
||||
- Greatly improved IPP tests with added IPP/2.2 tests.
|
||||
- New test documents - 1-page and 4-page mixed A4/Letter PDF/PS and a
|
||||
couple JPEGs.
|
||||
- New REPEAT directives to programmatically repeat tests as needed.
|
||||
|
||||
|
||||
2011-08-16
|
||||
|
||||
- The Windows version no longer requires Visual Studio to be installed.
|
||||
- The Windows version now supports SSL.
|
||||
- Added "ipps" URI support.
|
||||
- Added a new "-T" option.
|
||||
- Added support for fractional seconds for the -i option and DELAY
|
||||
directive.
|
||||
- Added support for authentication.
|
||||
- Added DEFINE-MATCH, DEFINE-NO-MATCH, DEFINE-VALUE, IF-NOT-DEFINED,
|
||||
IGNORE-ERRORS, SKIP-IF-DEFINED, SKIP-IF-NOT-DEFINED,
|
||||
SKIP-PREVIOUS-ERROR directives.
|
||||
- WITH-VALUE now supports variable expansion.
|
||||
- Updated the IPP/1.1 conformance test to skip the "my-jobs different
|
||||
user" test if the printer URI contains a username.
|
||||
- Updated the IPP conformance tests to validate media, media-default,
|
||||
and media-supported values.
|
||||
- No longer error out if a Printer returns a different version number in
|
||||
the response when the request contains the version 0.0.
|
||||
|
||||
|
||||
2010-10-16
|
||||
|
||||
- Initial release of standalone binary.
|
||||
+222
-81
@@ -1,92 +1,233 @@
|
||||
CHANGES.txt - 1.6.1 - 2012-07-27
|
||||
--------------------------------
|
||||
CHANGES.txt - 2012-02-05
|
||||
------------------------
|
||||
|
||||
CHANGES IN CUPS V1.6.1
|
||||
CHANGES IN CUPS V1.5.2
|
||||
|
||||
- Documentation fix (STR #4149)
|
||||
- RPM packaging fixes (STR #4129, #4145)
|
||||
- The Japanese and English web interface headers were swapped
|
||||
(STR #4148)
|
||||
- Reposted what should have been CUPS 1.5.1.
|
||||
|
||||
|
||||
CHANGES IN CUPS V1.6.0
|
||||
CHANGES IN CUPS V1.5.1
|
||||
|
||||
- Document changes (STR #4131)
|
||||
- Added new Catalan (STR #4107) and Spanish (STR #4137) localizations.
|
||||
- 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.6rc1
|
||||
CHANGES IN CUPS V1.5.0
|
||||
|
||||
- Added a new Japanese localization (STR #4122)
|
||||
- The SNMP backend no longer exits if it is unable to obtain an IPv6
|
||||
socket (STR #4109)
|
||||
- The LPD backend incorrectly used "localhost" in the control file
|
||||
instead of the current hostname.
|
||||
- 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.6b1
|
||||
CHANGES IN CUPS V1.5rc1
|
||||
|
||||
- Documentation updates (STR #3927, STR #3980, STR #4010, STR #4068)
|
||||
- The scheduler now consolidates all PPD updates from filters at the
|
||||
end of the job (STR #4075)
|
||||
- CUPS now supports color management using colord (STR #3808)
|
||||
- CUPS now supports Bonjour using Avahi (STR #3066)
|
||||
- The PreserveJobFiles and PreserveJobHistory directives now support
|
||||
specification of a time interval (STR #3143)
|
||||
- PPD files can now be archived in (gzip'd) tar files to further reduce
|
||||
the disk space used by PPD files (STR #3772)
|
||||
- The network backends now deal with printers that report their levels
|
||||
in percent but do not specify a maximum capacity of 100 (STR #3551)
|
||||
- The network backends now report full/almost-full waste bins in
|
||||
printers along with end-of-life for cleaning pads (STR #4017)
|
||||
- Added a configure option to set the permissions of the installed
|
||||
cupsd (STR #3459)
|
||||
- Added a new WITH-ALL-VALUES directive to ipptool EXPECT predicates
|
||||
(STR #3949)
|
||||
- CUPS now supports a User directive in client.conf and the CUPS_USER
|
||||
environment variable for overriding the default username (STR #3114)
|
||||
- Now set the PJL USERNAME variable as needed (STR #3100)
|
||||
- Added support for usernames and passwords longer than 32 characters
|
||||
(STR #2856)
|
||||
- Added a new MaxHoldTime directive to automatically cancel jobs that
|
||||
have been held indefinitely after a specific number of seconds
|
||||
(STR #2291)
|
||||
- The LPD backend now uses the originating host name when it is not the
|
||||
local system (STR #2053)
|
||||
- CUPS now prefers the suffix "dpcm" when reporting resolution in dots-
|
||||
per-centimeter (STR #4006)
|
||||
- The configure script and build system no longer support building of
|
||||
separate 32-bit and 64-bit libraries.
|
||||
- The "brightness", "columns", "fitplot", "gamma", "hue",
|
||||
"natural-scaling", "penwidth", "position", "ppi", "saturation", and
|
||||
"scaling" options are not longer supported (STR #4010)
|
||||
- The "page-bottom", "page-left", "page-right", "page-top",
|
||||
"prettyprint", and "wrap" options have been deprecated (STR #4010)
|
||||
- The scheduler now reports the standard "number-of-documents" attribute
|
||||
instead of the CUPS-specific "document-count" attribute in
|
||||
job objects.
|
||||
- Added new destination connection and enumeration functions (STR #3924)
|
||||
- Added new option, localization, and job submission functions that do
|
||||
not depend on PPD files (STR #3925)
|
||||
- Added a new MaxJobTime directive for cupsd that specifies the maximum
|
||||
amount of time allowed for a job to complete before it is canceled.
|
||||
- The default password callback now supports passwords up to 127
|
||||
characters.
|
||||
- The scheduler now supports a DefaultAuthType of "auto" to
|
||||
automatically choose between Basic (username/password) and Negotiate
|
||||
(Kerberos) authentication.
|
||||
- cupsSideChannelSNMPGet/Walk now support OIDs and values up to 64k in
|
||||
length.
|
||||
- CUPS no longer supports automatic remote printers or implicit classes
|
||||
via the CUPS, LDAP, or SLP protocols (STR #3922, STR #3923)
|
||||
- The PPD APIs are now deprecated and will be removed in a future
|
||||
version of CUPS (STR #3927)
|
||||
- The default IPP version for requests is now 2.0 (STR #3929)
|
||||
- The IPP APIs no longer expose the ipp_t or ipp_attribute_t structures
|
||||
and instead provide accessor functions (STR #3928)
|
||||
- The scheduler will no longer run programs with group write permission.
|
||||
- The PHP module has been removed (STR #3932)
|
||||
- The bannertops, commandtoescpx, commandtopclx, imagetops,
|
||||
imagetoraster, pdftops, rastertoescpx, rastertopclx, and texttops
|
||||
filters have been removed (STR #3930)
|
||||
- The serial and parallel backends have been removed (STR 3935)
|
||||
- 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)
|
||||
|
||||
+4
-6
@@ -1,4 +1,4 @@
|
||||
CREDITS.txt - 2012-07-16
|
||||
CREDITS.txt - 2010-03-13
|
||||
------------------------
|
||||
|
||||
Few projects are completed by one person, and CUPS is no exception. We'd
|
||||
@@ -17,7 +17,7 @@ like to thank the following individuals for their contributions:
|
||||
Wang Jian - CUPS RPM corrections.
|
||||
Roderick Johnstone - Beta tester of the millenium.
|
||||
Till Kamppeter - Bug fixes, beta testing, evangelism.
|
||||
Iñaki Larrañaga - Basque localization.
|
||||
I–aki Larra–aga - Basque localization.
|
||||
Kenshi Muto - Japanese localization, patches, and
|
||||
testing.
|
||||
Tomohiro Kato - Japanese localization.
|
||||
@@ -27,18 +27,16 @@ like to thank the following individuals for their contributions:
|
||||
Mark Lawrence - Microsoft interoperability testing.
|
||||
Jeff Licquia - Bug fixes, beta testing, evangelism.
|
||||
Jason McMullan - Original CUPS RPM distributions.
|
||||
Àngel Mompó - Catalan localization.
|
||||
Wes Morgan - *BSD fixes.
|
||||
Daniel Nylander - Swedish localization.
|
||||
Niklas 'Nille' Åkerström - Swedish localization.
|
||||
Naruiko Ogasawara - Japanese localization.
|
||||
Niklas 'Nille' �kerstršm - Swedish localization.
|
||||
Giulio Orsero - Bug fixes and testing.
|
||||
Michal Osowiecki - Polish localization.
|
||||
Citra Paska - Indonesian localization.
|
||||
Kurt Pfeifle - Bug fixes, beta testing, evangelism.
|
||||
Vincenzo Reale - Italian localization.
|
||||
Petter Reinholdtsen - HP-UX compiler stuff.
|
||||
Juan Pablo González Riopedre - Spanish localization.
|
||||
Juan Pablo Gonz‡lez Riopedre - Spanish localization.
|
||||
Opher Shachar - Hebrew localization.
|
||||
Stuart Stevens - HP JetDirect IPP information.
|
||||
Andrea Suatoni - IRIX desktop integration and testing.
|
||||
|
||||
+3
-3
@@ -1,4 +1,4 @@
|
||||
INSTALL - CUPS v1.6.1 - 2012-07-27
|
||||
INSTALL - CUPS v1.5.2 - 2012-02-05
|
||||
----------------------------------
|
||||
|
||||
This file describes how to compile and install CUPS from source code. For more
|
||||
@@ -6,7 +6,7 @@ information on CUPS see the file called "README.txt". A complete change log can
|
||||
be found in "CHANGES.txt".
|
||||
|
||||
**** IF YOU HAVE A NON-POSTSCRIPT PRINTER AND ARE NOT ****
|
||||
**** RUNNING OS X, YOU WILL ALSO NEED TO INSTALL GPL ****
|
||||
**** RUNNING MAC OS X, YOU WILL ALSO NEED TO INSTALL GPL ****
|
||||
**** GHOSTSCRIPT WITH THE "cups" DRIVER AFTER YOU INSTALL ****
|
||||
**** CUPS. ****
|
||||
|
||||
@@ -34,7 +34,7 @@ BEFORE YOU BEGIN
|
||||
PostScript filter needed by non-PostScript printers. You *must* download
|
||||
GPL Ghostscript separately from the CUPS web site if you want to print
|
||||
PostScript files to non-PostScript printers on operating systems other than
|
||||
OS X.
|
||||
Mac OS X.
|
||||
|
||||
|
||||
COMPILING THE SUBVERSION REPOSITORY CODE
|
||||
|
||||
+11
-80
@@ -1,16 +1,14 @@
|
||||
IPPTOOL.txt - 2012-02-06
|
||||
IPPTOOL.txt - 2011-09-20
|
||||
------------------------
|
||||
|
||||
See the file CHANGES-IPPTOOL.txt for a list of changes to this software.
|
||||
|
||||
|
||||
INTRODUCTION
|
||||
|
||||
CUPS includes a user program called ipptool that can be used to send
|
||||
arbitrary IPP requests to a CUPS server or IPP printer. This tool started
|
||||
life as part of the CUPS automated test suite and has grown to support
|
||||
complex conformance tests and a simple way to query printer, job, and
|
||||
subscription attributes.
|
||||
Starting with CUPS 1.5, CUPS now installs a user program called ipptool that
|
||||
can be used to send arbitrary IPP requests to a CUPS server or IPP printer.
|
||||
This tool started life as part of the CUPS automated test suite and has
|
||||
grown to support complex conformance tests and a simple way to query
|
||||
printer, job, and subscription attributes.
|
||||
|
||||
|
||||
BASIC USAGE
|
||||
@@ -46,22 +44,6 @@ BASIC USAGE
|
||||
75,pending-held,testfile.txt,msweet
|
||||
|
||||
|
||||
STANDARD TEST FILES
|
||||
|
||||
The following standard test files are included with ipptool:
|
||||
|
||||
create-printer-subscription.test Creates a printer subscription for
|
||||
state change notifications
|
||||
get-completed-jobs.test Shows a list of completed jobs
|
||||
get-jobs.test Shows a list of pending jobs
|
||||
get-printer-attributes.test Shows printer attributes
|
||||
ipp-1.1.test IPP/1.1 conformance test suite
|
||||
ipp-2.0.test IPP/2.0 conformance test suite
|
||||
ipp-2.1.test IPP/2.1 conformance test suite
|
||||
ipp-2.2.test IPP/2.2 conformance test suite
|
||||
print-job.test Prints a file
|
||||
|
||||
|
||||
CONFORMANCE TESTS
|
||||
|
||||
We provide basic IPP conformance tests for IPP/1.1, IPP/2.0, IPP/2.1, and
|
||||
@@ -87,29 +69,6 @@ CONFORMANCE TESTS
|
||||
onepage-a4.ps
|
||||
onepage-letter.pdf
|
||||
onepage-letter.ps
|
||||
testfile.jpg
|
||||
testfile.pcl
|
||||
testfile.pdf
|
||||
testfile.ps
|
||||
testfile.txt
|
||||
|
||||
Useful options include the following:
|
||||
|
||||
-4 Connect using IPv4
|
||||
-6 Connect using IPv6
|
||||
-C Send chunked requests (default)
|
||||
-d name=val Define a variable
|
||||
-E Test IPP with HTTP Upgrade to TLS
|
||||
-L Send requests using the Content-Length header (HTTP/1.0)
|
||||
-S Test IPP over HTTPS (default for ipps: URIs)
|
||||
-T seconds Set a timeout for responses in seconds
|
||||
-v Be verbose, showing all attributes sent and received
|
||||
|
||||
The printer-uri must be a URI supported by the printer using the "ipp" or
|
||||
"ipps" scheme, for example:
|
||||
|
||||
ipp://192.168.0.1/ipp
|
||||
ipps://192.168.0.1/ipp/print
|
||||
|
||||
Print-by-reference (URL) printing can be tested by defining the document-uri
|
||||
variable to a URL, for example:
|
||||
@@ -119,9 +78,7 @@ CONFORMANCE TESTS
|
||||
The standard test files are available on cups.org under the "test"
|
||||
directory, for example:
|
||||
|
||||
ipptool -tf document-a4.pdf \
|
||||
-d document-uri=http://www.cups.org/test/document-a4.pdf \
|
||||
ipp://192.168.0.1/ipp -I -V 2.0 ipp-2.0.test
|
||||
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
|
||||
@@ -131,8 +88,7 @@ CONFORMANCE TESTS
|
||||
READING THE DOCUMENTATION
|
||||
|
||||
The command usage is described in the ipptest(1) man page, while the file
|
||||
format is described in the ipptestfile(5) man page. Both are provided in
|
||||
HTML format with the standalone releases of ipptool.
|
||||
format is described in the ipptestfile(5) man page.
|
||||
|
||||
|
||||
GETTING SUPPORT AND OTHER RESOURCES
|
||||
@@ -145,40 +101,15 @@ 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:
|
||||
|
||||
setdebug.bat
|
||||
|
||||
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-2012 by Apple Inc. CUPS and the CUPS logo are
|
||||
CUPS is Copyright 2007-2011 by Apple Inc. CUPS and the CUPS logo are
|
||||
trademarks of Apple Inc.
|
||||
|
||||
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
|
||||
|
||||
+6
-6
@@ -1,6 +1,6 @@
|
||||
CUPS License Agreement
|
||||
|
||||
Copyright 2007-2012 by Apple Inc.
|
||||
Copyright 2007-2011 by Apple Inc.
|
||||
1 Infinite Loop
|
||||
Cupertino, CA 95014 USA
|
||||
|
||||
@@ -68,11 +68,11 @@ the following special exceptions:
|
||||
source code of the Apple OS-Developed Software.
|
||||
|
||||
b. An Apple Operating System means any operating system
|
||||
software developed and/or marketed by Apple Inc.,
|
||||
including but not limited to all existing releases and
|
||||
versions of Apple's Darwin, OS X, and OS X Server
|
||||
products and all follow-on releases and future
|
||||
versions thereof.
|
||||
software developed and/or marketed by Apple Computer,
|
||||
Inc., including but not limited to all existing
|
||||
releases and versions of Apple's Darwin, Mac OS X,
|
||||
and Mac OS X Server products and all follow-on
|
||||
releases and future versions thereof.
|
||||
|
||||
c. This exception is only available for Apple
|
||||
OS-Developed Software and does not apply to software
|
||||
|
||||
+53
-7
@@ -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
|
||||
@@ -24,12 +24,13 @@ CHMOD = @CHMOD@
|
||||
CXX = @LIBTOOL@ @CXX@
|
||||
DSO = @DSO@
|
||||
DSOXX = @DSOXX@
|
||||
GZIP = @GZIP@
|
||||
HTMLDOC = @HTMLDOC@
|
||||
INSTALL = @INSTALL@
|
||||
LD = @LD@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
LN = @LN@ -sf
|
||||
MV = @MV@
|
||||
PHPCONFIG = @PHPCONFIG@
|
||||
RANLIB = @RANLIB@
|
||||
RM = @RM@ -f
|
||||
RMDIR = @RMDIR@
|
||||
@@ -41,7 +42,6 @@ SHELL = /bin/sh
|
||||
#
|
||||
|
||||
INSTALL_BIN = $(LIBTOOL) $(INSTALL) -c -m 555 @INSTALL_STRIP@
|
||||
INSTALL_COMPDATA = $(INSTALL) -c -m 444 @INSTALL_GZIP@
|
||||
INSTALL_CONFIG = $(INSTALL) -c -m @CUPS_CONFIG_FILE_PERM@
|
||||
INSTALL_DATA = $(INSTALL) -c -m 444
|
||||
INSTALL_DIR = $(INSTALL) -d
|
||||
@@ -63,7 +63,6 @@ CUPS_PRIMARY_SYSTEM_GROUP = @CUPS_PRIMARY_SYSTEM_GROUP@
|
||||
#
|
||||
|
||||
CUPS_CONFIG_FILE_PERM = @CUPS_CONFIG_FILE_PERM@
|
||||
CUPS_CUPSD_FILE_PERM = @CUPS_CUPSD_FILE_PERM@
|
||||
CUPS_LOG_FILE_PERM = @CUPS_LOG_FILE_PERM@
|
||||
|
||||
#
|
||||
@@ -80,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@
|
||||
@@ -114,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
|
||||
@@ -127,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@
|
||||
@@ -138,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...
|
||||
#
|
||||
@@ -236,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 $@ $<
|
||||
|
||||
+7
-11
@@ -3,7 +3,7 @@
|
||||
#
|
||||
# Top-level Makefile for CUPS.
|
||||
#
|
||||
# Copyright 2007-2012 by Apple Inc.
|
||||
# Copyright 2007-2010 by Apple Inc.
|
||||
# Copyright 1997-2007 by Easy Software Products, all rights reserved.
|
||||
#
|
||||
# These coded instructions, statements, and computer programs are the
|
||||
@@ -20,7 +20,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
|
||||
@@ -275,10 +271,10 @@ docset: apihelp
|
||||
doc/help/api-*.tokens
|
||||
$(RM) doc/help/api-*.tokens
|
||||
echo Indexing docset...
|
||||
/Applications/Xcode.app/Contents/Developer/usr/bin/docsetutil index org.cups.docset
|
||||
/Developer/usr/bin/docsetutil index org.cups.docset
|
||||
echo Generating docset archive and feed...
|
||||
$(RM) org.cups.docset.atom
|
||||
/Applications/Xcode.app/Contents/Developer/usr/bin/docsetutil package --output org.cups.docset.xar \
|
||||
/Developer/usr/bin/docsetutil package --output org.cups.docset.xar \
|
||||
--atom org.cups.docset.atom \
|
||||
--download-url http://www.cups.org/org.cups.docset.xar \
|
||||
org.cups.docset
|
||||
|
||||
+2
-2
@@ -1,4 +1,4 @@
|
||||
README - CUPS v1.6.1 - 2012-07-27
|
||||
README - CUPS v1.5.2 - 2012-02-05
|
||||
---------------------------------
|
||||
|
||||
Looking for compile instructions? Read the file "INSTALL.txt"
|
||||
@@ -8,7 +8,7 @@ instead...
|
||||
INTRODUCTION
|
||||
|
||||
CUPS is a standards-based, open source printing system developed by Apple
|
||||
Inc. for OS® X and other UNIX®-like operating systems. CUPS uses the
|
||||
Inc. for Mac OS® X and other UNIX®-like operating systems. CUPS uses the
|
||||
Internet Printing Protocol ("IPP") and provides System V and Berkeley
|
||||
command-line interfaces, a web interface, and a C API to manage printers and
|
||||
print jobs. It supports printing to both local (parallel, serial, USB) and
|
||||
|
||||
+101
-70
@@ -1,70 +1,101 @@
|
||||
ipp.o: ipp.c backend-private.h ../cups/cups-private.h \
|
||||
../cups/string-private.h ../config.h ../cups/debug-private.h \
|
||||
../cups/versioning.h ../cups/ipp-private.h ../cups/ipp.h \
|
||||
../cups/http.h ../cups/array.h ../cups/http-private.h \
|
||||
../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
|
||||
../cups/language.h ../cups/pwg-private.h ../cups/cups.h ../cups/file.h \
|
||||
../cups/ppd-private.h ../cups/ppd.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/string-private.h \
|
||||
../cups/debug-private.h ../cups/language-private.h ../cups/transcode.h \
|
||||
../cups/language.h ../cups/pwg-private.h ../cups/cups.h ../cups/file.h \
|
||||
../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h \
|
||||
../cups/snmp-private.h ../cups/backend.h ../cups/sidechannel.h
|
||||
dnssd.o: dnssd.c backend-private.h ../cups/cups-private.h \
|
||||
../cups/string-private.h ../config.h ../cups/debug-private.h \
|
||||
../cups/versioning.h ../cups/ipp-private.h ../cups/ipp.h \
|
||||
../cups/http.h ../cups/array.h ../cups/http-private.h \
|
||||
../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
|
||||
../cups/language.h ../cups/pwg-private.h ../cups/cups.h ../cups/file.h \
|
||||
../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h \
|
||||
../cups/snmp-private.h ../cups/backend.h ../cups/sidechannel.h
|
||||
snmp.o: snmp.c backend-private.h ../cups/cups-private.h \
|
||||
../cups/string-private.h ../config.h ../cups/debug-private.h \
|
||||
../cups/versioning.h ../cups/ipp-private.h ../cups/ipp.h \
|
||||
../cups/http.h ../cups/array.h ../cups/http-private.h \
|
||||
../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
|
||||
../cups/language.h ../cups/pwg-private.h ../cups/cups.h ../cups/file.h \
|
||||
../cups/ppd-private.h ../cups/ppd.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/string-private.h \
|
||||
../cups/debug-private.h ../cups/language-private.h ../cups/transcode.h \
|
||||
../cups/language.h ../cups/pwg-private.h ../cups/cups.h ../cups/file.h \
|
||||
../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h \
|
||||
../cups/snmp-private.h ../cups/backend.h ../cups/sidechannel.h
|
||||
test1284.o: test1284.c ../cups/string-private.h ../config.h ieee1284.c \
|
||||
backend-private.h ../cups/cups-private.h ../cups/debug-private.h \
|
||||
../cups/versioning.h ../cups/ipp-private.h ../cups/ipp.h \
|
||||
../cups/http.h ../cups/array.h ../cups/http-private.h \
|
||||
../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
|
||||
../cups/language.h ../cups/pwg-private.h ../cups/cups.h ../cups/file.h \
|
||||
../cups/ppd-private.h ../cups/ppd.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/string-private.h ../config.h ../cups/debug-private.h \
|
||||
../cups/versioning.h ../cups/ipp-private.h ../cups/ipp.h \
|
||||
../cups/http.h ../cups/array.h ../cups/http-private.h \
|
||||
../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
|
||||
../cups/language.h ../cups/pwg-private.h ../cups/cups.h ../cups/file.h \
|
||||
../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h \
|
||||
../cups/snmp-private.h ../cups/backend.h ../cups/sidechannel.h
|
||||
usb.o: usb.c backend-private.h ../cups/cups-private.h \
|
||||
../cups/string-private.h ../config.h ../cups/debug-private.h \
|
||||
../cups/versioning.h ../cups/ipp-private.h ../cups/ipp.h \
|
||||
../cups/http.h ../cups/array.h ../cups/http-private.h \
|
||||
../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
|
||||
../cups/language.h ../cups/pwg-private.h ../cups/cups.h ../cups/file.h \
|
||||
../cups/ppd-private.h ../cups/ppd.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
|
||||
|
||||
+32
-46
@@ -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,43 +21,13 @@ include ../Makedefs
|
||||
# Object files...
|
||||
#
|
||||
|
||||
# RBACKENDS are installed mode 0700 so cupsd will run them as root...
|
||||
#
|
||||
# UBACKENDS are installed mode 0755 so cupsd will run them as an unprivileged
|
||||
# user...
|
||||
#
|
||||
# See http://www.cups.org/documentation.php/api-filter.html for more info...
|
||||
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
|
||||
|
||||
|
||||
#
|
||||
@@ -86,7 +56,7 @@ unittests: $(UNITTESTS)
|
||||
#
|
||||
|
||||
clean:
|
||||
$(RM) $(OBJS) $(TARGETS) $(UNITTESTS) $(LIBOBJS) http https ipps mdns
|
||||
$(RM) $(OBJS) $(TARGETS) $(UNITTESTS) $(LIBOBJS) http mdns
|
||||
|
||||
|
||||
#
|
||||
@@ -94,7 +64,7 @@ clean:
|
||||
#
|
||||
|
||||
depend:
|
||||
$(CC) -MM $(ALL_CFLAGS) $(OBJS:.o=.c) >Dependencies
|
||||
makedepend -Y -I.. -fDependencies $(OBJS:.o=.c) >/dev/null 2>&1
|
||||
|
||||
|
||||
#
|
||||
@@ -128,7 +98,7 @@ install-exec: $(INSTALLXPC)
|
||||
$(RM) $(SERVERBIN)/backend/$$file; \
|
||||
$(LN) ipp $(SERVERBIN)/backend/$$file; \
|
||||
done
|
||||
if test "x$(DNSSD_BACKEND)" != x -a `uname` = Darwin; then \
|
||||
if test "x$(DNSSD_BACKEND)" != x; then \
|
||||
$(RM) $(SERVERBIN)/backend/mdns; \
|
||||
$(LN) $(DNSSD_BACKEND) $(SERVERBIN)/backend/mdns; \
|
||||
fi
|
||||
@@ -232,10 +202,8 @@ libbackend.a: $(LIBOBJS)
|
||||
dnssd: dnssd.o ../cups/$(LIBCUPS) libbackend.a
|
||||
echo Linking $@...
|
||||
$(CC) $(LDFLAGS) -o dnssd dnssd.o libbackend.a $(LIBS)
|
||||
if test `uname` = Darwin; then \
|
||||
$(RM) mdns; \
|
||||
$(LN) dnssd mdns; \
|
||||
fi
|
||||
$(RM) mdns
|
||||
$(LN) dnssd mdns
|
||||
|
||||
|
||||
#
|
||||
@@ -258,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
|
||||
#
|
||||
@@ -282,7 +268,7 @@ socket: socket.o ../cups/$(LIBCUPS) libbackend.a
|
||||
|
||||
usb: usb.o ../cups/$(LIBCUPS) libbackend.a
|
||||
echo Linking $@...
|
||||
$(CC) $(ARCHFLAGS) $(LDFLAGS) -o usb usb.o libbackend.a $(LIBUSB) \
|
||||
$(CC) $(LDFLAGS) -o usb usb.o libbackend.a $(LIBUSB) \
|
||||
$(BACKLIBS) $(LIBS)
|
||||
usb.o: usb.c usb-darwin.c usb-libusb.c usb-unix.c
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
*
|
||||
* Backend support 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
|
||||
@@ -259,20 +259,6 @@ extern "C" {
|
||||
#define CUPS_TC_inserts 33
|
||||
#define CUPS_TC_covers 34
|
||||
|
||||
#define CUPS_TC_tenThousandthsOfInches 3
|
||||
#define CUPS_TC_micrometers 4
|
||||
#define CUPS_TC_impressions 7
|
||||
#define CUPS_TC_sheets 8
|
||||
#define CUPS_TC_hours 11
|
||||
#define CUPS_TC_thousandthsOfOunces 12
|
||||
#define CUPS_TC_tenthsOfGrams 13
|
||||
#define CUPS_TC_hundrethsOfFluidOunces 14
|
||||
#define CUPS_TC_tenthsOfMilliliters 15
|
||||
#define CUPS_TC_feet 16
|
||||
#define CUPS_TC_meters 17
|
||||
#define CUPS_TC_items 18
|
||||
#define CUPS_TC_percent 19
|
||||
|
||||
/* These come from RFC 3808 to define character sets we support */
|
||||
/* Also see http://www.iana.org/assignments/character-sets */
|
||||
#define CUPS_TC_csASCII 3
|
||||
|
||||
+248
-563
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
+138
-427
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
+74
-50
@@ -3,7 +3,7 @@
|
||||
*
|
||||
* Line Printer Daemon 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
|
||||
@@ -19,6 +19,7 @@
|
||||
* main() - Send a file to the printer or server.
|
||||
* lpd_command() - Send an LPR command sequence and wait for a reply.
|
||||
* lpd_queue() - Queue a file using the Line Printer Daemon protocol.
|
||||
* lpd_timeout() - Handle timeout alarms...
|
||||
* lpd_write() - Write a buffer of data to an LPD server.
|
||||
* rresvport_af() - A simple implementation of rresvport_af().
|
||||
* sigterm_handler() - Handle 'terminate' signals that stop the backend.
|
||||
@@ -86,13 +87,14 @@ static int abort_job = 0; /* Non-zero if we get SIGTERM */
|
||||
* Local functions...
|
||||
*/
|
||||
|
||||
static int lpd_command(int lpd_fd, char *format, ...);
|
||||
static int lpd_command(int lpd_fd, int timeout, char *format, ...);
|
||||
static int lpd_queue(const char *hostname, http_addrlist_t *addrlist,
|
||||
const char *printer, int print_fd, int snmp_fd,
|
||||
int mode, const char *user, const char *title,
|
||||
int copies, int banner, int format, int order,
|
||||
int reserve, int manual_copies, int timeout,
|
||||
int contimeout, const char *orighost);
|
||||
int contimeout);
|
||||
static void lpd_timeout(int sig);
|
||||
static int lpd_write(int lpd_fd, char *buffer, int length);
|
||||
#ifndef HAVE_RRESVPORT_AF
|
||||
static int rresvport_af(int *port, int family);
|
||||
@@ -144,8 +146,6 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
|
||||
#if defined(HAVE_SIGACTION) && !defined(HAVE_SIGSET)
|
||||
struct sigaction action; /* Actions for POSIX signals */
|
||||
#endif /* HAVE_SIGACTION && !HAVE_SIGSET */
|
||||
int num_jobopts; /* Number of job options */
|
||||
cups_option_t *jobopts = NULL; /* Job options */
|
||||
|
||||
|
||||
/*
|
||||
@@ -193,8 +193,6 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
|
||||
return (CUPS_BACKEND_FAILED);
|
||||
}
|
||||
|
||||
num_jobopts = cupsParseOptions(argv[5], 0, &jobopts);
|
||||
|
||||
/*
|
||||
* Extract the hostname and printer name from the URI...
|
||||
*/
|
||||
@@ -529,9 +527,7 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
|
||||
|
||||
status = lpd_queue(hostname, addrlist, resource + 1, fd, snmp_fd, mode,
|
||||
username, title, copies, banner, format, order, reserve,
|
||||
manual_copies, timeout, contimeout,
|
||||
cupsGetOption("job-originating-host-name", num_jobopts,
|
||||
jobopts));
|
||||
manual_copies, timeout, contimeout);
|
||||
|
||||
if (!status)
|
||||
fprintf(stderr, "PAGE: 1 %d\n", atoi(argv[4]));
|
||||
@@ -539,9 +535,7 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
|
||||
else
|
||||
status = lpd_queue(hostname, addrlist, resource + 1, fd, snmp_fd, mode,
|
||||
username, title, 1, banner, format, order, reserve, 1,
|
||||
timeout, contimeout,
|
||||
cupsGetOption("job-originating-host-name", num_jobopts,
|
||||
jobopts));
|
||||
timeout, contimeout);
|
||||
|
||||
/*
|
||||
* Remove the temporary file if necessary...
|
||||
@@ -570,6 +564,7 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
|
||||
|
||||
static int /* O - Status of command */
|
||||
lpd_command(int fd, /* I - Socket connection to LPD host */
|
||||
int timeout, /* I - Seconds to wait for a response */
|
||||
char *format, /* I - printf()-style format string */
|
||||
...) /* I - Additional args as necessary */
|
||||
{
|
||||
@@ -614,12 +609,18 @@ lpd_command(int fd, /* I - Socket connection to LPD host */
|
||||
|
||||
fputs("DEBUG: Reading command status...\n", stderr);
|
||||
|
||||
alarm(timeout);
|
||||
|
||||
if (recv(fd, &status, 1, 0) < 1)
|
||||
{
|
||||
_cupsLangPrintFilter(stderr, "WARNING", _("The printer did not respond."));
|
||||
_cupsLangPrintFilter(stderr, "WARNING",
|
||||
_("Printer did not respond after %d seconds."),
|
||||
timeout);
|
||||
status = errno;
|
||||
}
|
||||
|
||||
alarm(0);
|
||||
|
||||
fprintf(stderr, "DEBUG: lpd_command returning %d\n", status);
|
||||
|
||||
return (status);
|
||||
@@ -646,8 +647,7 @@ lpd_queue(const char *hostname, /* I - Host to connect to */
|
||||
int reserve, /* I - Reserve ports? */
|
||||
int manual_copies,/* I - Do copies by hand... */
|
||||
int timeout, /* I - Timeout... */
|
||||
int contimeout, /* I - Connection timeout */
|
||||
const char *orighost) /* I - job-originating-host-name */
|
||||
int contimeout) /* I - Connection timeout */
|
||||
{
|
||||
char localhost[255]; /* Local host name */
|
||||
int error; /* Error number */
|
||||
@@ -666,13 +666,27 @@ lpd_queue(const char *hostname, /* I - Host to connect to */
|
||||
size_t nbytes; /* Number of bytes written */
|
||||
off_t tbytes; /* Total bytes written */
|
||||
char buffer[32768]; /* Output buffer */
|
||||
#ifdef WIN32
|
||||
DWORD tv; /* Timeout in milliseconds */
|
||||
#else
|
||||
struct timeval tv; /* Timeout in secs and usecs */
|
||||
#endif /* WIN32 */
|
||||
#if defined(HAVE_SIGACTION) && !defined(HAVE_SIGSET)
|
||||
struct sigaction action; /* Actions for POSIX signals */
|
||||
#endif /* HAVE_SIGACTION && !HAVE_SIGSET */
|
||||
|
||||
|
||||
/*
|
||||
* Setup an alarm handler for timeouts...
|
||||
*/
|
||||
|
||||
#ifdef HAVE_SIGSET /* Use System V signals over POSIX to avoid bugs */
|
||||
sigset(SIGALRM, lpd_timeout);
|
||||
#elif defined(HAVE_SIGACTION)
|
||||
memset(&action, 0, sizeof(action));
|
||||
|
||||
sigemptyset(&action.sa_mask);
|
||||
action.sa_handler = lpd_timeout;
|
||||
sigaction(SIGALRM, &action, NULL);
|
||||
#else
|
||||
signal(SIGALRM, lpd_timeout);
|
||||
#endif /* HAVE_SIGSET */
|
||||
|
||||
/*
|
||||
* Remember when we started trying to connect to the printer...
|
||||
*/
|
||||
@@ -825,7 +839,7 @@ lpd_queue(const char *hostname, /* I - Host to connect to */
|
||||
case ECONNREFUSED :
|
||||
default :
|
||||
_cupsLangPrintFilter(stderr, "WARNING",
|
||||
_("The printer is in use."));
|
||||
_("The printer is busy."));
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -850,23 +864,6 @@ lpd_queue(const char *hostname, /* I - Host to connect to */
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Set the timeout...
|
||||
*/
|
||||
|
||||
#ifdef WIN32
|
||||
tv = (DWORD)(timeout * 1000);
|
||||
|
||||
setsockopt(fd, SOL_SOCKET, SO_RCVTIMEO, (char *)&tv, sizeof(tv));
|
||||
setsockopt(fd, SOL_SOCKET, SO_SNDTIMEO, (char *)&tv, sizeof(tv));
|
||||
#else
|
||||
tv.tv_sec = timeout;
|
||||
tv.tv_usec = 0;
|
||||
|
||||
setsockopt(fd, SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof(tv));
|
||||
setsockopt(fd, SOL_SOCKET, SO_SNDTIMEO, &tv, sizeof(tv));
|
||||
#endif /* WIN32 */
|
||||
|
||||
fputs("STATE: -connecting-to-device\n", stderr);
|
||||
_cupsLangPrintFilter(stderr, "INFO", _("Connected to printer."));
|
||||
|
||||
@@ -929,17 +926,14 @@ lpd_queue(const char *hostname, /* I - Host to connect to */
|
||||
* literal output...
|
||||
*/
|
||||
|
||||
if (lpd_command(fd, "\002%s\n",
|
||||
if (lpd_command(fd, timeout, "\002%s\n",
|
||||
printer)) /* Receive print job(s) */
|
||||
{
|
||||
close(fd);
|
||||
return (CUPS_BACKEND_FAILED);
|
||||
}
|
||||
|
||||
if (orighost && _cups_strcasecmp(orighost, "localhost"))
|
||||
strlcpy(localhost, orighost, sizeof(localhost));
|
||||
else
|
||||
httpGetHostname(NULL, localhost, sizeof(localhost));
|
||||
httpGetHostname(NULL, localhost, sizeof(localhost));
|
||||
|
||||
snprintf(control, sizeof(control),
|
||||
"H%.31s\n" /* RFC 1179, Section 7.2 - host name <= 31 chars */
|
||||
@@ -984,7 +978,7 @@ lpd_queue(const char *hostname, /* I - Host to connect to */
|
||||
* Send the control file...
|
||||
*/
|
||||
|
||||
if (lpd_command(fd, "\002%d cfA%03.3d%.15s\n", strlen(control),
|
||||
if (lpd_command(fd, timeout, "\002%d cfA%03.3d%.15s\n", strlen(control),
|
||||
(int)getpid() % 1000, localhost))
|
||||
{
|
||||
close(fd);
|
||||
@@ -1003,12 +997,17 @@ lpd_queue(const char *hostname, /* I - Host to connect to */
|
||||
}
|
||||
else
|
||||
{
|
||||
alarm(timeout);
|
||||
|
||||
if (read(fd, &status, 1) < 1)
|
||||
{
|
||||
_cupsLangPrintFilter(stderr, "WARNING",
|
||||
_("The printer did not respond."));
|
||||
_("Printer did not respond after %d seconds."),
|
||||
timeout);
|
||||
status = errno;
|
||||
}
|
||||
|
||||
alarm(0);
|
||||
}
|
||||
|
||||
if (status != 0)
|
||||
@@ -1034,7 +1033,7 @@ lpd_queue(const char *hostname, /* I - Host to connect to */
|
||||
* Send the print file...
|
||||
*/
|
||||
|
||||
if (lpd_command(fd, "\003" CUPS_LLFMT " dfA%03.3d%.15s\n",
|
||||
if (lpd_command(fd, timeout, "\003" CUPS_LLFMT " dfA%03.3d%.15s\n",
|
||||
CUPS_LLCAST filestats.st_size, (int)getpid() % 1000,
|
||||
localhost))
|
||||
{
|
||||
@@ -1085,12 +1084,17 @@ lpd_queue(const char *hostname, /* I - Host to connect to */
|
||||
* want to requeue it over and over...
|
||||
*/
|
||||
|
||||
alarm(timeout);
|
||||
|
||||
if (recv(fd, &status, 1, 0) < 1)
|
||||
{
|
||||
_cupsLangPrintFilter(stderr, "WARNING",
|
||||
_("The printer did not respond."));
|
||||
_("Printer did not respond after %d seconds."),
|
||||
timeout);
|
||||
status = 0;
|
||||
}
|
||||
|
||||
alarm(0);
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -1117,7 +1121,7 @@ lpd_queue(const char *hostname, /* I - Host to connect to */
|
||||
* Send control file...
|
||||
*/
|
||||
|
||||
if (lpd_command(fd, "\002%d cfA%03.3d%.15s\n", strlen(control),
|
||||
if (lpd_command(fd, timeout, "\002%d cfA%03.3d%.15s\n", strlen(control),
|
||||
(int)getpid() % 1000, localhost))
|
||||
{
|
||||
close(fd);
|
||||
@@ -1135,12 +1139,17 @@ lpd_queue(const char *hostname, /* I - Host to connect to */
|
||||
}
|
||||
else
|
||||
{
|
||||
alarm(timeout);
|
||||
|
||||
if (read(fd, &status, 1) < 1)
|
||||
{
|
||||
_cupsLangPrintFilter(stderr, "WARNING",
|
||||
_("The printer did not respond."));
|
||||
_("Printer did not respond after %d seconds."),
|
||||
timeout);
|
||||
status = errno;
|
||||
}
|
||||
|
||||
alarm(0);
|
||||
}
|
||||
|
||||
if (status != 0)
|
||||
@@ -1183,6 +1192,21 @@ lpd_queue(const char *hostname, /* I - Host to connect to */
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'lpd_timeout()' - Handle timeout alarms...
|
||||
*/
|
||||
|
||||
static void
|
||||
lpd_timeout(int sig) /* I - Signal number */
|
||||
{
|
||||
(void)sig;
|
||||
|
||||
#if !defined(HAVE_SIGSET) && !defined(HAVE_SIGACTION)
|
||||
signal(SIGALRM, lpd_timeout);
|
||||
#endif /* !HAVE_SIGSET && !HAVE_SIGACTION */
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'lpd_write()' - Write a buffer of data to an LPD server.
|
||||
*/
|
||||
|
||||
+4
-30
@@ -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 */
|
||||
|
||||
@@ -92,7 +92,7 @@ backendNetworkSideCB(
|
||||
status = CUPS_SC_STATUS_NOT_IMPLEMENTED;
|
||||
else if (backendDrainOutput(print_fd, device_fd))
|
||||
status = CUPS_SC_STATUS_IO_ERROR;
|
||||
else
|
||||
else
|
||||
status = CUPS_SC_STATUS_OK;
|
||||
|
||||
datalen = 0;
|
||||
@@ -119,35 +119,8 @@ backendNetworkSideCB(
|
||||
|
||||
if (snmp_fd >= 0)
|
||||
{
|
||||
char *dataptr; /* Pointer into data */
|
||||
cups_snmp_t packet; /* Packet from printer */
|
||||
const char *snmp_value; /* CUPS_SNMP_VALUE env var */
|
||||
|
||||
if ((snmp_value = getenv("CUPS_SNMP_VALUE")) != NULL)
|
||||
{
|
||||
const char *snmp_count; /* CUPS_SNMP_COUNT env var */
|
||||
int count; /* Repetition count */
|
||||
|
||||
if ((snmp_count = getenv("CUPS_SNMP_COUNT")) != NULL)
|
||||
{
|
||||
if ((count = atoi(snmp_count)) <= 0)
|
||||
count = 1;
|
||||
}
|
||||
else
|
||||
count = 1;
|
||||
|
||||
for (dataptr = data + strlen(data) + 1;
|
||||
count > 0 && dataptr < (data + sizeof(data) - 1);
|
||||
count --, dataptr += strlen(dataptr))
|
||||
strlcpy(dataptr, snmp_value, sizeof(data) - (dataptr - data));
|
||||
|
||||
fprintf(stderr, "DEBUG: Returning %s %s\n", data,
|
||||
data + strlen(data) + 1);
|
||||
|
||||
status = CUPS_SC_STATUS_OK;
|
||||
datalen = dataptr - data;
|
||||
break;
|
||||
}
|
||||
|
||||
if (!_cupsSNMPStringToOID(data, packet.object_name, CUPS_SNMP_MAX_OID))
|
||||
{
|
||||
@@ -168,6 +141,7 @@ backendNetworkSideCB(
|
||||
{
|
||||
if (_cupsSNMPRead(snmp_fd, &packet, 1.0))
|
||||
{
|
||||
char *dataptr; /* Pointer into data */
|
||||
int i; /* Looping var */
|
||||
|
||||
|
||||
@@ -198,7 +172,7 @@ backendNetworkSideCB(
|
||||
case CUPS_ASN1_OCTET_STRING :
|
||||
if (packet.object_value.string.num_bytes < 0)
|
||||
i = 0;
|
||||
else if (packet.object_value.string.num_bytes <
|
||||
else if (packet.object_value.string.num_bytes <
|
||||
(sizeof(data) - (dataptr - data)))
|
||||
i = packet.object_value.string.num_bytes;
|
||||
else
|
||||
|
||||
@@ -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$".
|
||||
*/
|
||||
+12
-32
@@ -3,7 +3,7 @@
|
||||
*
|
||||
* Common run loop APIs for CUPS backends.
|
||||
*
|
||||
* 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
|
||||
@@ -92,8 +92,7 @@ backendDrainOutput(int print_fd, /* I - Print file descriptor */
|
||||
|
||||
if (errno != EAGAIN || errno != EINTR)
|
||||
{
|
||||
fprintf(stderr, "DEBUG: Read failed: %s\n", strerror(errno));
|
||||
_cupsLangPrintFilter(stderr, "ERROR", _("Unable to read print data."));
|
||||
_cupsLangPrintError("ERROR", _("Unable to read print data"));
|
||||
return (-1);
|
||||
}
|
||||
|
||||
@@ -251,7 +250,7 @@ backendRunLoop(
|
||||
{
|
||||
fputs("STATE: +offline-report\n", stderr);
|
||||
_cupsLangPrintFilter(stderr, "INFO",
|
||||
_("The printer is not connected."));
|
||||
_("Printer is not currently connected."));
|
||||
offline = 1;
|
||||
}
|
||||
else if (errno == EINTR && total_bytes == 0)
|
||||
@@ -320,9 +319,7 @@ backendRunLoop(
|
||||
|
||||
if (errno != EAGAIN || errno != EINTR)
|
||||
{
|
||||
fprintf(stderr, "DEBUG: Read failed: %s\n", strerror(errno));
|
||||
_cupsLangPrintFilter(stderr, "ERROR",
|
||||
_("Unable to read print data."));
|
||||
_cupsLangPrintError("ERROR", _("Unable to read print data"));
|
||||
return (-1);
|
||||
}
|
||||
|
||||
@@ -371,7 +368,7 @@ backendRunLoop(
|
||||
{
|
||||
fputs("STATE: +offline-report\n", stderr);
|
||||
_cupsLangPrintFilter(stderr, "INFO",
|
||||
_("The printer is not connected."));
|
||||
_("Printer is not currently connected."));
|
||||
offline = 1;
|
||||
}
|
||||
}
|
||||
@@ -392,8 +389,7 @@ backendRunLoop(
|
||||
if (offline && update_state)
|
||||
{
|
||||
fputs("STATE: -offline-report\n", stderr);
|
||||
_cupsLangPrintFilter(stderr, "INFO",
|
||||
_("The printer is now connected."));
|
||||
_cupsLangPrintFilter(stderr, "INFO", _("Printer is now connected."));
|
||||
offline = 0;
|
||||
}
|
||||
|
||||
@@ -438,11 +434,9 @@ backendWaitLoop(
|
||||
int use_bc, /* I - Use back-channel? */
|
||||
_cups_sccb_t side_cb) /* I - Side-channel callback */
|
||||
{
|
||||
int nfds; /* Number of file descriptors */
|
||||
fd_set input; /* Input set for reading */
|
||||
time_t curtime = 0, /* Current time */
|
||||
snmp_update = 0;/* Last SNMP status update */
|
||||
struct timeval timeout; /* Timeout for select() */
|
||||
fd_set input; /* Input set for reading */
|
||||
time_t curtime, /* Current time */
|
||||
snmp_update = 0; /* Last SNMP status update */
|
||||
|
||||
|
||||
fprintf(stderr, "DEBUG: backendWaitLoop(snmp_fd=%d, addr=%p, side_cb=%p)\n",
|
||||
@@ -452,9 +446,6 @@ backendWaitLoop(
|
||||
* Now loop until we receive data from stdin...
|
||||
*/
|
||||
|
||||
if (snmp_fd >= 0)
|
||||
snmp_update = time(NULL) + 5;
|
||||
|
||||
for (;;)
|
||||
{
|
||||
/*
|
||||
@@ -466,18 +457,7 @@ backendWaitLoop(
|
||||
if (side_cb)
|
||||
FD_SET(CUPS_SC_FD, &input);
|
||||
|
||||
if (snmp_fd >= 0)
|
||||
{
|
||||
curtime = time(NULL);
|
||||
timeout.tv_sec = curtime >= snmp_update ? 0 : snmp_update - curtime;
|
||||
timeout.tv_usec = 0;
|
||||
|
||||
nfds = select(CUPS_SC_FD + 1, &input, NULL, NULL, &timeout);
|
||||
}
|
||||
else
|
||||
nfds = select(CUPS_SC_FD + 1, &input, NULL, NULL, NULL);
|
||||
|
||||
if (nfds < 0)
|
||||
if (select(CUPS_SC_FD + 1, &input, NULL, NULL, NULL) < 0)
|
||||
{
|
||||
/*
|
||||
* Pause printing to clear any pending errors...
|
||||
@@ -521,10 +501,10 @@ backendWaitLoop(
|
||||
* Do SNMP updates periodically...
|
||||
*/
|
||||
|
||||
if (snmp_fd >= 0 && curtime >= snmp_update)
|
||||
if (snmp_fd >= 0 && time(&curtime) >= snmp_update)
|
||||
{
|
||||
if (backendSNMPSupplies(snmp_fd, addr, NULL, NULL))
|
||||
snmp_fd = -1;
|
||||
snmp_update = INT_MAX;
|
||||
else
|
||||
snmp_update = curtime + 5;
|
||||
}
|
||||
|
||||
+1327
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
+31
-122
@@ -3,7 +3,7 @@
|
||||
*
|
||||
* SNMP supplies functions for CUPS.
|
||||
*
|
||||
* Copyright 2008-2012 by Apple Inc.
|
||||
* Copyright 2008-2011 by Apple Inc.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
* property of Apple Inc. and are protected by Federal copyright
|
||||
@@ -36,21 +36,14 @@
|
||||
#define CUPS_MAX_SUPPLIES 32 /* Maximum number of supplies for a printer */
|
||||
#define CUPS_SUPPLY_TIMEOUT 2.0 /* Timeout for SNMP lookups */
|
||||
|
||||
#define CUPS_DEVELOPER_LOW 0x0001
|
||||
#define CUPS_DEVELOPER_EMPTY 0x0002
|
||||
#define CUPS_MARKER_SUPPLY_LOW 0x0004
|
||||
#define CUPS_MARKER_SUPPLY_EMPTY 0x0008
|
||||
#define CUPS_OPC_NEAR_EOL 0x0010
|
||||
#define CUPS_OPC_LIFE_OVER 0x0020
|
||||
#define CUPS_TONER_LOW 0x0040
|
||||
#define CUPS_TONER_EMPTY 0x0080
|
||||
#define CUPS_WASTE_ALMOST_FULL 0x0100
|
||||
#define CUPS_WASTE_FULL 0x0200
|
||||
#define CUPS_CLEANER_NEAR_EOL 0x0400 /* Proposed JPS3 */
|
||||
#define CUPS_CLEANER_LIFE_OVER 0x0800 /* Proposed JPS3 */
|
||||
|
||||
#define CUPS_SNMP_NONE 0x0000
|
||||
#define CUPS_SNMP_CAPACITY 0x0001 /* Supply levels reported as percentages */
|
||||
#define CUPS_DEVELOPER_LOW 1
|
||||
#define CUPS_DEVELOPER_EMPTY 2
|
||||
#define CUPS_MARKER_SUPPLY_LOW 4
|
||||
#define CUPS_MARKER_SUPPLY_EMPTY 8
|
||||
#define CUPS_OPC_NEAR_EOL 16
|
||||
#define CUPS_OPC_LIFE_OVER 32
|
||||
#define CUPS_TONER_LOW 64
|
||||
#define CUPS_TONER_EMPTY 128
|
||||
|
||||
|
||||
/*
|
||||
@@ -82,8 +75,6 @@ static http_addr_t current_addr; /* Current address */
|
||||
static int current_state = -1;
|
||||
/* Current device state bits */
|
||||
static int charset = -1; /* Character set for supply names */
|
||||
static unsigned quirks = CUPS_SNMP_NONE;
|
||||
/* Quirks we have to work around */
|
||||
static int num_supplies = 0;
|
||||
/* Number of supplies found */
|
||||
static backend_supplies_t supplies[CUPS_MAX_SUPPLIES];
|
||||
@@ -155,17 +146,10 @@ static const int prtMarkerSuppliesType[] =
|
||||
(sizeof(prtMarkerSuppliesType) /
|
||||
sizeof(prtMarkerSuppliesType[0]));
|
||||
/* Offset to supply index */
|
||||
static const int prtMarkerSuppliesSupplyUnit[] =
|
||||
{ CUPS_OID_prtMarkerSuppliesSupplyUnit, -1 },
|
||||
/* Units OID */
|
||||
prtMarkerSuppliesSupplyUnitOffset =
|
||||
(sizeof(prtMarkerSuppliesSupplyUnit) /
|
||||
sizeof(prtMarkerSuppliesSupplyUnit[0]));
|
||||
/* Offset to supply index */
|
||||
|
||||
static const backend_state_t const printer_states[] =
|
||||
{
|
||||
/* { CUPS_TC_lowPaper, "media-low-report" }, */
|
||||
{ CUPS_TC_lowPaper, "media-low-report" },
|
||||
{ CUPS_TC_noPaper | CUPS_TC_inputTrayEmpty, "media-empty-warning" },
|
||||
/* { CUPS_TC_lowToner, "toner-low-report" }, */ /* now use prtMarkerSupplies */
|
||||
/* { CUPS_TC_noToner, "toner-empty-warning" }, */ /* now use prtMarkerSupplies */
|
||||
@@ -189,11 +173,7 @@ static const backend_state_t const supply_states[] =
|
||||
{ CUPS_OPC_NEAR_EOL, "opc-near-eol-report" },
|
||||
{ CUPS_OPC_LIFE_OVER, "opc-life-over-warning" },
|
||||
{ CUPS_TONER_LOW, "toner-low-report" },
|
||||
{ CUPS_TONER_EMPTY, "toner-empty-warning" },
|
||||
{ CUPS_WASTE_ALMOST_FULL, "waste-receptacle-almost-full-report" },
|
||||
{ CUPS_WASTE_FULL, "waste-receptacle-full-warning" },
|
||||
{ CUPS_CLEANER_NEAR_EOL, "cleaner-life-almost-over-report" },
|
||||
{ CUPS_CLEANER_LIFE_OVER, "cleaner-life-over-warning" },
|
||||
{ CUPS_TONER_EMPTY, "toner-empty-warning" }
|
||||
};
|
||||
|
||||
|
||||
@@ -251,9 +231,6 @@ backendSNMPSupplies(
|
||||
{
|
||||
if (supplies[i].max_capacity > 0 && supplies[i].level >= 0)
|
||||
percent = 100 * supplies[i].level / supplies[i].max_capacity;
|
||||
else if (supplies[i].level >= 0 && supplies[i].level <= 100 &&
|
||||
(quirks & CUPS_SNMP_CAPACITY))
|
||||
percent = supplies[i].level;
|
||||
else
|
||||
percent = 50;
|
||||
|
||||
@@ -268,6 +245,9 @@ backendSNMPSupplies(
|
||||
else
|
||||
new_supply_state |= CUPS_TONER_LOW;
|
||||
break;
|
||||
case CUPS_TC_wasteToner :
|
||||
case CUPS_TC_wasteInk :
|
||||
break;
|
||||
case CUPS_TC_ink :
|
||||
case CUPS_TC_inkCartridge :
|
||||
case CUPS_TC_inkRibbon :
|
||||
@@ -293,31 +273,13 @@ backendSNMPSupplies(
|
||||
else
|
||||
new_supply_state |= CUPS_OPC_NEAR_EOL;
|
||||
break;
|
||||
case CUPS_TC_wasteInk :
|
||||
case CUPS_TC_wastePaper :
|
||||
case CUPS_TC_wasteToner :
|
||||
case CUPS_TC_wasteWater :
|
||||
case CUPS_TC_wasteWax :
|
||||
if (percent <= 1)
|
||||
new_supply_state |= CUPS_WASTE_FULL;
|
||||
else
|
||||
new_supply_state |= CUPS_WASTE_ALMOST_FULL;
|
||||
break;
|
||||
case CUPS_TC_cleanerUnit :
|
||||
case CUPS_TC_fuserCleaningPad :
|
||||
if (percent <= 1)
|
||||
new_supply_state |= CUPS_CLEANER_LIFE_OVER;
|
||||
else
|
||||
new_supply_state |= CUPS_CLEANER_NEAR_EOL;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (i)
|
||||
*ptr++ = ',';
|
||||
|
||||
if ((supplies[i].max_capacity > 0 || (quirks & CUPS_SNMP_CAPACITY)) &&
|
||||
supplies[i].level >= 0)
|
||||
if (supplies[i].max_capacity > 0 && supplies[i].level >= 0)
|
||||
sprintf(ptr, "%d", percent);
|
||||
else
|
||||
strcpy(ptr, "-1");
|
||||
@@ -446,7 +408,7 @@ backend_init_supplies(
|
||||
cachefilename[1024], /* Cache filename */
|
||||
description[CUPS_SNMP_MAX_STRING],
|
||||
/* Device description string */
|
||||
value[CUPS_MAX_SUPPLIES * (CUPS_SNMP_MAX_STRING * 4 + 3)],
|
||||
value[CUPS_MAX_SUPPLIES * (CUPS_SNMP_MAX_STRING * 2 + 3)],
|
||||
/* Value string */
|
||||
*ptr, /* Pointer into value string */
|
||||
*name_ptr; /* Pointer into name string */
|
||||
@@ -515,12 +477,6 @@ backend_init_supplies(
|
||||
return;
|
||||
}
|
||||
|
||||
if ((ppdattr = ppdFindAttr(ppd, "cupsSNMPQuirks", NULL)) != NULL)
|
||||
{
|
||||
if (!_cups_strcasecmp(ppdattr->value, "capacity"))
|
||||
quirks |= CUPS_SNMP_CAPACITY;
|
||||
}
|
||||
|
||||
ppdClose(ppd);
|
||||
|
||||
/*
|
||||
@@ -703,8 +659,7 @@ backend_init_supplies(
|
||||
fprintf(stderr, "ATTR: marker-colors=%s\n", value);
|
||||
|
||||
/*
|
||||
* Output the marker-names attribute (the double quoting is necessary to deal
|
||||
* with embedded quotes and commas in the marker names...)
|
||||
* Output the marker-names attribute...
|
||||
*/
|
||||
|
||||
for (i = 0, ptr = value; i < num_supplies; i ++)
|
||||
@@ -712,21 +667,15 @@ backend_init_supplies(
|
||||
if (i)
|
||||
*ptr++ = ',';
|
||||
|
||||
*ptr++ = '\'';
|
||||
*ptr++ = '\"';
|
||||
for (name_ptr = supplies[i].name; *name_ptr;)
|
||||
{
|
||||
if (*name_ptr == '\\' || *name_ptr == '\"' || *name_ptr == '\'')
|
||||
{
|
||||
if (*name_ptr == '\\' || *name_ptr == '\"')
|
||||
*ptr++ = '\\';
|
||||
*ptr++ = '\\';
|
||||
*ptr++ = '\\';
|
||||
}
|
||||
|
||||
*ptr++ = *name_ptr++;
|
||||
}
|
||||
*ptr++ = '\"';
|
||||
*ptr++ = '\'';
|
||||
}
|
||||
|
||||
*ptr = '\0';
|
||||
@@ -763,33 +712,16 @@ backend_walk_cb(cups_snmp_t *packet, /* I - SNMP packet */
|
||||
void *data) /* I - User data (unused) */
|
||||
{
|
||||
int i, j, k; /* Looping vars */
|
||||
static const char * const colors[][2] =
|
||||
static const char * const colors[8][2] =
|
||||
{ /* Standard color names */
|
||||
{ "black", "#000000" },
|
||||
{ "blue", "#0000FF" },
|
||||
{ "brown", "#A52A2A" },
|
||||
{ "cyan", "#00FFFF" },
|
||||
{ "dark-gray", "#404040" },
|
||||
{ "dark gray", "#404040" },
|
||||
{ "dark-yellow", "#FFCC00" },
|
||||
{ "dark yellow", "#FFCC00" },
|
||||
{ "gold", "#FFD700" },
|
||||
{ "gray", "#808080" },
|
||||
{ "green", "#00FF00" },
|
||||
{ "light-black", "#606060" },
|
||||
{ "light black", "#606060" },
|
||||
{ "light-cyan", "#E0FFFF" },
|
||||
{ "light cyan", "#E0FFFF" },
|
||||
{ "light-gray", "#D3D3D3" },
|
||||
{ "light gray", "#D3D3D3" },
|
||||
{ "light-magenta", "#FF77FF" },
|
||||
{ "light magenta", "#FF77FF" },
|
||||
{ "magenta", "#FF00FF" },
|
||||
{ "orange", "#FFA500" },
|
||||
{ "red", "#FF0000" },
|
||||
{ "silver", "#C0C0C0" },
|
||||
{ "white", "#FFFFFF" },
|
||||
{ "yellow", "#FFFF00" }
|
||||
{ "black", "#000000" },
|
||||
{ "blue", "#0000FF" },
|
||||
{ "cyan", "#00FFFF" },
|
||||
{ "green", "#00FF00" },
|
||||
{ "magenta", "#FF00FF" },
|
||||
{ "red", "#FF0000" },
|
||||
{ "white", "#FFFFFF" },
|
||||
{ "yellow", "#FFFF00" }
|
||||
};
|
||||
|
||||
|
||||
@@ -811,8 +743,7 @@ backend_walk_cb(cups_snmp_t *packet, /* I - SNMP packet */
|
||||
if (supplies[j].colorant == i)
|
||||
{
|
||||
for (k = 0; k < (int)(sizeof(colors) / sizeof(colors[0])); k ++)
|
||||
if (!_cups_strcasecmp(colors[k][0],
|
||||
(char *)packet->object_value.string.bytes))
|
||||
if (!strcmp(colors[k][0], (char *)packet->object_value.string.bytes))
|
||||
{
|
||||
strcpy(supplies[j].color, colors[k][1]);
|
||||
break;
|
||||
@@ -903,6 +834,7 @@ backend_walk_cb(cups_snmp_t *packet, /* I - SNMP packet */
|
||||
{
|
||||
char *src, *dst; /* Pointers into strings */
|
||||
|
||||
|
||||
/*
|
||||
* Loop safe because both the object_value and supplies char arrays
|
||||
* are CUPS_SNMP_MAX_STRING elements long.
|
||||
@@ -947,8 +879,7 @@ backend_walk_cb(cups_snmp_t *packet, /* I - SNMP packet */
|
||||
|
||||
supplies[i - 1].level = packet->object_value.integer;
|
||||
}
|
||||
else if (_cupsSNMPIsOIDPrefixed(packet, prtMarkerSuppliesMaxCapacity) &&
|
||||
!(quirks & CUPS_SNMP_CAPACITY))
|
||||
else if (_cupsSNMPIsOIDPrefixed(packet, prtMarkerSuppliesMaxCapacity))
|
||||
{
|
||||
/*
|
||||
* Get max capacity...
|
||||
@@ -965,9 +896,7 @@ backend_walk_cb(cups_snmp_t *packet, /* I - SNMP packet */
|
||||
if (i > num_supplies)
|
||||
num_supplies = i;
|
||||
|
||||
if (supplies[i - 1].max_capacity == 0 &&
|
||||
packet->object_value.integer > 0)
|
||||
supplies[i - 1].max_capacity = packet->object_value.integer;
|
||||
supplies[i - 1].max_capacity = packet->object_value.integer;
|
||||
}
|
||||
else if (_cupsSNMPIsOIDPrefixed(packet, prtMarkerSuppliesType))
|
||||
{
|
||||
@@ -988,26 +917,6 @@ backend_walk_cb(cups_snmp_t *packet, /* I - SNMP packet */
|
||||
|
||||
supplies[i - 1].type = packet->object_value.integer;
|
||||
}
|
||||
else if (_cupsSNMPIsOIDPrefixed(packet, prtMarkerSuppliesSupplyUnit))
|
||||
{
|
||||
/*
|
||||
* Get units for capacity...
|
||||
*/
|
||||
|
||||
i = packet->object_name[prtMarkerSuppliesSupplyUnitOffset];
|
||||
if (i < 1 || i > CUPS_MAX_SUPPLIES ||
|
||||
packet->object_type != CUPS_ASN1_INTEGER)
|
||||
return;
|
||||
|
||||
fprintf(stderr, "DEBUG2: prtMarkerSuppliesSupplyUnit.1.%d = %d\n", i,
|
||||
packet->object_value.integer);
|
||||
|
||||
if (i > num_supplies)
|
||||
num_supplies = i;
|
||||
|
||||
if (packet->object_value.integer == CUPS_TC_percent)
|
||||
supplies[i - 1].max_capacity = 100;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
+1
-1
@@ -251,7 +251,7 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
|
||||
|
||||
#ifdef AF_INET6
|
||||
if ((ipv6 = _cupsSNMPOpen(AF_INET6)) < 0)
|
||||
perror("DEBUG: Unable to create IPv6 socket");
|
||||
return (1);
|
||||
#else
|
||||
ipv6 = -1;
|
||||
#endif /* AF_INET6 */
|
||||
|
||||
+4
-2
@@ -3,7 +3,7 @@
|
||||
*
|
||||
* AppSocket 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
|
||||
@@ -371,7 +371,7 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
|
||||
case ECONNREFUSED :
|
||||
default :
|
||||
_cupsLangPrintFilter(stderr, "WARNING",
|
||||
_("The printer is in use."));
|
||||
_("The printer is busy."));
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -472,6 +472,8 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
|
||||
if (print_fd != 0)
|
||||
close(print_fd);
|
||||
|
||||
_cupsLangPrintFilter(stderr, "INFO", _("Ready to print."));
|
||||
|
||||
return (CUPS_BACKEND_OK);
|
||||
}
|
||||
|
||||
|
||||
+12
-37
@@ -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,29 +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__
|
||||
fprintf(stderr, "Setting DYLD_LIBRARY_PATH to \"%s\".\n", libpath);
|
||||
setenv("DYLD_LIBRARY_PATH", libpath, 1);
|
||||
#else
|
||||
fprintf(stderr, "Setting LD_LIBRARY_PATH to \"%s\".\n", libpath);
|
||||
setenv("LD_LIBRARY_PATH", libpath, 1);
|
||||
#endif /* __APPLE__ */
|
||||
}
|
||||
else
|
||||
perror(libpath);
|
||||
}
|
||||
|
||||
/*
|
||||
* See if we have side-channel tests to do...
|
||||
*/
|
||||
@@ -573,13 +548,13 @@ main(int argc, /* I - Number of command-line args */
|
||||
|
||||
length = sizeof(buffer);
|
||||
scstatus = cupsSideChannelSNMPGet(oid, buffer, &length, 5.0);
|
||||
printf("CUPS_SC_CMD_SNMP_GET %s returned %s, %d bytes (%s)\n", oid,
|
||||
statuses[scstatus], (int)length, buffer);
|
||||
printf("CUPS_SC_CMD_SNMP_GET %s returned %s, %s\n", oid,
|
||||
statuses[scstatus], buffer);
|
||||
|
||||
length = sizeof(buffer);
|
||||
scstatus = cupsSideChannelSNMPGet(oid, buffer, &length, 5.0);
|
||||
printf("CUPS_SC_CMD_SNMP_GET %s returned %s, %d bytes (%s)\n", oid,
|
||||
statuses[scstatus], (int)length, buffer);
|
||||
printf("CUPS_SC_CMD_SNMP_GET %s returned %s, %s\n", oid,
|
||||
statuses[scstatus], buffer);
|
||||
}
|
||||
|
||||
length = 0;
|
||||
@@ -594,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)
|
||||
@@ -638,13 +613,13 @@ sigterm_handler(int sig) /* I - Signal */
|
||||
static void
|
||||
usage(void)
|
||||
{
|
||||
puts("Usage: testbackend [-cancel] [-d] [-ps | -pcl] [-s [-get OID] "
|
||||
puts("Usage: testbackend [-cancel] [-d] [-ps | -pcl] [-s [-oid OID] "
|
||||
"[-walk OID]] [-t] device-uri job-id user title copies options [file]");
|
||||
puts("");
|
||||
puts("Options:");
|
||||
puts(" -cancel Simulate a canceled print job after 2 seconds.");
|
||||
puts(" -d Show log messages from backend.");
|
||||
puts(" -get OID Lookup the specified SNMP OID.");
|
||||
puts(" -oid OID Lookup the specified SNMP OID.");
|
||||
puts(" (.1.3.6.1.2.1.43.10.2.1.4.1.1 is a good one for printers)");
|
||||
puts(" -pcl Send PCL+PJL query and test page to backend.");
|
||||
puts(" -ps Send PostScript query and test page to backend.");
|
||||
@@ -667,7 +642,7 @@ walk_cb(const char *oid, /* I - OID */
|
||||
int datalen, /* I - Length of data */
|
||||
void *context) /* I - Context (unused) */
|
||||
{
|
||||
printf("CUPS_SC_CMD_SNMP_WALK %s, %d bytes (%s)\n", oid, datalen, data);
|
||||
printf("CUPS_SC_CMD_SNMP_WALK %s=%s (%d bytes)\n", oid, data, datalen);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
*
|
||||
* Copyright 2005-2012 Apple Inc. All rights reserved.
|
||||
* Copyright 2005-2011 Apple Inc. All rights reserved.
|
||||
*
|
||||
* IMPORTANT: This Apple software is supplied to you by Apple Computer,
|
||||
* Inc. ("Apple") in consideration of your agreement to the following
|
||||
@@ -820,10 +820,10 @@ print_device(const char *uri, /* I - Device URI */
|
||||
/*
|
||||
* 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",
|
||||
fputs("DEBUG: Read thread still active, aborting the pending read...\n",
|
||||
stderr);
|
||||
|
||||
g.wait_eof = 0;
|
||||
@@ -833,7 +833,7 @@ print_device(const char *uri, /* I - Device URI */
|
||||
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,
|
||||
@@ -1283,7 +1283,7 @@ static Boolean find_device_cb(void *refcon,
|
||||
if (!keepLooking && g.status_timer != NULL)
|
||||
{
|
||||
fputs("STATE: -offline-report\n", stderr);
|
||||
_cupsLangPrintFilter(stderr, "INFO", _("The printer is now online."));
|
||||
_cupsLangPrintFilter(stderr, "INFO", _("Printer is now online."));
|
||||
CFRunLoopRemoveTimer(CFRunLoopGetCurrent(), g.status_timer, kCFRunLoopDefaultMode);
|
||||
CFRelease(g.status_timer);
|
||||
g.status_timer = NULL;
|
||||
@@ -1304,7 +1304,7 @@ static void status_timer_cb(CFRunLoopTimerRef timer,
|
||||
(void)info;
|
||||
|
||||
fputs("STATE: +offline-report\n", stderr);
|
||||
_cupsLangPrintFilter(stderr, "INFO", _("The printer is offline."));
|
||||
_cupsLangPrintFilter(stderr, "INFO", _("Printer is offline."));
|
||||
|
||||
if (getenv("CLASS") != NULL)
|
||||
{
|
||||
|
||||
+219
-1163
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
+10
-4
@@ -5,7 +5,7 @@
|
||||
*
|
||||
* This file is included from "usb.c" when compiled on UNIX/Linux.
|
||||
*
|
||||
* 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
|
||||
@@ -128,12 +128,16 @@ print_device(const char *uri, /* I - Device URI */
|
||||
|
||||
if (errno == EBUSY)
|
||||
{
|
||||
_cupsLangPrintFilter(stderr, "INFO", _("The printer is in use."));
|
||||
_cupsLangPrintFilter(stderr, "INFO",
|
||||
_("Printer busy, will retry in 10 seconds."));
|
||||
sleep(10);
|
||||
}
|
||||
else if (errno == ENXIO || errno == EIO || errno == ENOENT ||
|
||||
errno == ENODEV)
|
||||
{
|
||||
_cupsLangPrintFilter(stderr, "INFO",
|
||||
_("Printer not connected, will retry in 30 "
|
||||
"seconds."));
|
||||
sleep(30);
|
||||
}
|
||||
else
|
||||
@@ -421,7 +425,8 @@ open_device(const char *uri, /* I - Device URI */
|
||||
*/
|
||||
|
||||
if (busy)
|
||||
_cupsLangPrintFilter(stderr, "INFO", _("The printer is in use."));
|
||||
_cupsLangPrintFilter(stderr, "INFO",
|
||||
_("Printer is busy, will retry in 5 seconds."));
|
||||
|
||||
sleep(5);
|
||||
}
|
||||
@@ -504,7 +509,8 @@ open_device(const char *uri, /* I - Device URI */
|
||||
|
||||
if (busy)
|
||||
{
|
||||
_cupsLangPrintFilter(stderr, "INFO", _("The printer is in use."));
|
||||
_cupsLangPrintFilter(stderr, "INFO",
|
||||
_("Printer is busy, will retry in 5 seconds."));
|
||||
sleep(5);
|
||||
}
|
||||
}
|
||||
|
||||
+3
-3
@@ -3,7 +3,7 @@
|
||||
*
|
||||
* USB port 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
|
||||
@@ -55,7 +55,7 @@ int print_device(const char *uri, const char *hostname,
|
||||
* Include the vendor-specific USB implementation...
|
||||
*/
|
||||
|
||||
#ifdef HAVE_LIBUSB
|
||||
#ifdef HAVE_USB_H
|
||||
# include "usb-libusb.c"
|
||||
#elif defined(__APPLE__)
|
||||
# include "usb-darwin.c"
|
||||
@@ -118,7 +118,7 @@ print_device(const char *uri, /* I - Device URI */
|
||||
|
||||
return (CUPS_BACKEND_FAILED);
|
||||
}
|
||||
#endif /* HAVE_LIBUSB */
|
||||
#endif /* __APPLE__ */
|
||||
|
||||
|
||||
/*
|
||||
|
||||
+34
-25
@@ -1,25 +1,34 @@
|
||||
lpc.o: lpc.c ../cups/cups-private.h ../cups/string-private.h ../config.h \
|
||||
../cups/debug-private.h ../cups/versioning.h ../cups/ipp-private.h \
|
||||
../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/http-private.h \
|
||||
../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
|
||||
../cups/language.h ../cups/pwg-private.h ../cups/cups.h ../cups/file.h \
|
||||
../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h
|
||||
lpq.o: lpq.c ../cups/cups-private.h ../cups/string-private.h ../config.h \
|
||||
../cups/debug-private.h ../cups/versioning.h ../cups/ipp-private.h \
|
||||
../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/http-private.h \
|
||||
../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
|
||||
../cups/language.h ../cups/pwg-private.h ../cups/cups.h ../cups/file.h \
|
||||
../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h
|
||||
lpr.o: lpr.c ../cups/cups-private.h ../cups/string-private.h ../config.h \
|
||||
../cups/debug-private.h ../cups/versioning.h ../cups/ipp-private.h \
|
||||
../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/http-private.h \
|
||||
../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
|
||||
../cups/language.h ../cups/pwg-private.h ../cups/cups.h ../cups/file.h \
|
||||
../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h
|
||||
lprm.o: lprm.c ../cups/cups-private.h ../cups/string-private.h \
|
||||
../config.h ../cups/debug-private.h ../cups/versioning.h \
|
||||
../cups/ipp-private.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
|
||||
../cups/http-private.h ../cups/md5-private.h \
|
||||
../cups/language-private.h ../cups/transcode.h ../cups/language.h \
|
||||
../cups/pwg-private.h ../cups/cups.h ../cups/file.h \
|
||||
../cups/ppd-private.h ../cups/ppd.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
|
||||
|
||||
|
||||
#
|
||||
|
||||
+2
-3
@@ -3,7 +3,7 @@
|
||||
*
|
||||
* "lpc" command 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
|
||||
@@ -364,8 +364,7 @@ show_status(http_t *http, /* I - HTTP connection to server */
|
||||
|
||||
for (ptr = printer;
|
||||
*ptr != '\0' && *dptr != '\0' && *ptr == *dptr;
|
||||
ptr ++, dptr ++)
|
||||
/* do nothing */;
|
||||
ptr ++, dptr ++);
|
||||
|
||||
if (*ptr == '\0' && (*dptr == '\0' || *dptr == ',' ||
|
||||
isspace(*dptr & 255)))
|
||||
|
||||
+4
-8
@@ -3,7 +3,7 @@
|
||||
*
|
||||
* "lpq" command for CUPS.
|
||||
*
|
||||
* Copyright 2007-2012 by Apple Inc.
|
||||
* Copyright 2007-2011 by Apple Inc.
|
||||
* Copyright 1997-2006 by Easy Software Products.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
@@ -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);
|
||||
|
||||
|
||||
/*
|
||||
@@ -371,7 +371,6 @@ show_jobs(const char *command, /* I - Command name */
|
||||
* attributes-natural-language
|
||||
* job-uri or printer-uri
|
||||
* requested-attributes
|
||||
* requesting-user-name
|
||||
*/
|
||||
|
||||
request = ippNewRequest(id ? IPP_GET_JOB_ATTRIBUTES : IPP_GET_JOBS);
|
||||
@@ -400,9 +399,6 @@ show_jobs(const char *command, /* I - Command name */
|
||||
"requesting-user-name", NULL, user);
|
||||
ippAddBoolean(request, IPP_TAG_OPERATION, "my-jobs", 1);
|
||||
}
|
||||
else
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME,
|
||||
"requesting-user-name", NULL, cupsUser());
|
||||
|
||||
ippAddStrings(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD,
|
||||
"requested-attributes",
|
||||
@@ -451,8 +447,8 @@ show_jobs(const char *command, /* I - Command name */
|
||||
jobpriority = 50;
|
||||
#endif /* __osf__ */
|
||||
jobstate = IPP_JOB_PENDING;
|
||||
jobname = "unknown";
|
||||
jobuser = "unknown";
|
||||
jobname = "untitled";
|
||||
jobuser = NULL;
|
||||
jobdest = NULL;
|
||||
jobcopies = 1;
|
||||
|
||||
|
||||
+4
-9
@@ -3,7 +3,7 @@
|
||||
*
|
||||
* "lpr" command 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
|
||||
@@ -89,7 +89,7 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
cupsSetUser(argv[i]);
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case 'H' : /* Connect to host */
|
||||
if (argv[i][2] != '\0')
|
||||
cupsSetServer(argv[i] + 2);
|
||||
@@ -377,6 +377,7 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
const char *format; /* Document format */
|
||||
ssize_t bytes; /* Bytes read */
|
||||
|
||||
|
||||
if (cupsGetOption("raw", num_options, options))
|
||||
format = CUPS_FORMAT_RAW;
|
||||
else if ((format = cupsGetOption("document-format", num_options,
|
||||
@@ -394,17 +395,11 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
{
|
||||
_cupsLangPrintf(stderr, _("%s: Error - unable to queue from stdin - %s."),
|
||||
argv[0], httpStatus(status));
|
||||
cupsFinishDocument(CUPS_HTTP_DEFAULT, printer);
|
||||
cupsCancelJob2(CUPS_HTTP_DEFAULT, printer, job_id, 0);
|
||||
return (1);
|
||||
}
|
||||
|
||||
if (cupsFinishDocument(CUPS_HTTP_DEFAULT, printer) != IPP_OK)
|
||||
{
|
||||
_cupsLangPrintf(stderr, "%s: %s", argv[0], cupsLastErrorString());
|
||||
cupsCancelJob2(CUPS_HTTP_DEFAULT, printer, job_id, 0);
|
||||
return (1);
|
||||
}
|
||||
job_id = 0;
|
||||
}
|
||||
|
||||
if (job_id < 1)
|
||||
|
||||
+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
|
||||
|
||||
|
||||
#
|
||||
|
||||
+192
-73
@@ -3,7 +3,7 @@
|
||||
*
|
||||
* Administration CGI 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
|
||||
@@ -523,7 +523,7 @@ do_add_rss_subscription(http_t *http) /* I - HTTP connection */
|
||||
else if (cupsLastError() > IPP_OK_CONFLICT)
|
||||
{
|
||||
cgiStartHTML(_("Add RSS Subscription"));
|
||||
cgiShowIPPError(_("Unable to add RSS subscription"));
|
||||
cgiShowIPPError(_("Unable to add RSS subscription:"));
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -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...
|
||||
@@ -810,8 +811,8 @@ do_am_class(http_t *http, /* I - HTTP connection */
|
||||
else if (cupsLastError() > IPP_OK_CONFLICT)
|
||||
{
|
||||
cgiStartHTML(title);
|
||||
cgiShowIPPError(modify ? _("Unable to modify class") :
|
||||
_("Unable to add class"));
|
||||
cgiShowIPPError(modify ? _("Unable to modify class:") :
|
||||
_("Unable to add class:"));
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1055,8 +1056,8 @@ do_am_printer(http_t *http, /* I - HTTP connection */
|
||||
else
|
||||
{
|
||||
cgiStartHTML(title);
|
||||
cgiShowIPPError(modify ? _("Unable to modify printer") :
|
||||
_("Unable to add printer"));
|
||||
cgiShowIPPError(modify ? _("Unable to modify printer:") :
|
||||
_("Unable to add printer:"));
|
||||
cgiEndHTML();
|
||||
return;
|
||||
}
|
||||
@@ -1317,7 +1318,7 @@ do_am_printer(http_t *http, /* I - HTTP connection */
|
||||
else
|
||||
{
|
||||
cgiStartHTML(title);
|
||||
cgiShowIPPError(_("Unable to get list of printer drivers"));
|
||||
cgiShowIPPError(_("Unable to get list of printer drivers:"));
|
||||
cgiCopyTemplateLang("error.tmpl");
|
||||
cgiEndHTML();
|
||||
}
|
||||
@@ -1415,8 +1416,8 @@ do_am_printer(http_t *http, /* I - HTTP connection */
|
||||
else if (cupsLastError() > IPP_OK_CONFLICT)
|
||||
{
|
||||
cgiStartHTML(title);
|
||||
cgiShowIPPError(modify ? _("Unable to modify printer") :
|
||||
_("Unable to add printer"));
|
||||
cgiShowIPPError(modify ? _("Unable to modify printer:") :
|
||||
_("Unable to add printer:"));
|
||||
}
|
||||
else if (modify)
|
||||
{
|
||||
@@ -1522,7 +1523,7 @@ do_cancel_subscription(http_t *http)/* I - HTTP connection */
|
||||
else if (cupsLastError() > IPP_OK_CONFLICT)
|
||||
{
|
||||
cgiStartHTML(_("Cancel RSS Subscription"));
|
||||
cgiShowIPPError(_("Unable to cancel RSS subscription"));
|
||||
cgiShowIPPError(_("Unable to cancel RSS subscription:"));
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1557,10 +1558,10 @@ do_config_server(http_t *http) /* I - HTTP connection */
|
||||
int advanced, /* Advanced settings shown? */
|
||||
changed; /* Have settings changed? */
|
||||
const char *debug_logging, /* DEBUG_LOGGING value */
|
||||
*preserve_jobs = NULL,
|
||||
/* PRESERVE_JOBS 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 */
|
||||
@@ -1576,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,
|
||||
@@ -1586,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 */
|
||||
@@ -1602,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";
|
||||
|
||||
@@ -1613,37 +1623,80 @@ do_config_server(http_t *http) /* I - HTTP connection */
|
||||
*/
|
||||
|
||||
browse_web_if = cgiGetVariable("BROWSE_WEB_IF") ? "Yes" : "No";
|
||||
preserve_job_history = cgiGetVariable("PRESERVE_JOB_HISTORY") ? "Yes" : "No";
|
||||
preserve_job_files = cgiGetVariable("PRESERVE_JOB_FILES") ? "Yes" : "No";
|
||||
max_clients = cgiGetVariable("MAX_CLIENTS");
|
||||
max_jobs = cgiGetVariable("MAX_JOBS");
|
||||
max_log_size = cgiGetVariable("MAX_LOG_SIZE");
|
||||
preserve_jobs = cgiGetVariable("PRESERVE_JOBS");
|
||||
|
||||
if (preserve_jobs)
|
||||
{
|
||||
max_jobs = cgiGetVariable("MAX_JOBS");
|
||||
preserve_job_history = cgiGetVariable("PRESERVE_JOB_HISTORY");
|
||||
preserve_job_files = cgiGetVariable("PRESERVE_JOB_FILES");
|
||||
|
||||
if (!max_jobs || atoi(max_jobs) < 0)
|
||||
max_jobs = "500";
|
||||
|
||||
if (!preserve_job_history)
|
||||
preserve_job_history = "On";
|
||||
|
||||
if (!preserve_job_files)
|
||||
preserve_job_files = "1d";
|
||||
}
|
||||
else
|
||||
{
|
||||
max_jobs = "0";
|
||||
preserve_job_history = "No";
|
||||
preserve_job_files = "No";
|
||||
}
|
||||
|
||||
if (!max_clients || atoi(max_clients) <= 0)
|
||||
max_clients = "100";
|
||||
|
||||
if (!max_log_size || atoi(max_log_size) <= 0.0)
|
||||
if (!max_jobs || atoi(max_jobs) <= 0)
|
||||
max_jobs = "500";
|
||||
|
||||
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 */
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -1654,7 +1707,7 @@ do_config_server(http_t *http) /* I - HTTP connection */
|
||||
{
|
||||
cgiStartHTML(cgiText(_("Change Settings")));
|
||||
cgiSetVariable("MESSAGE",
|
||||
cgiText(_("Unable to change server settings")));
|
||||
cgiText(_("Unable to change server settings:")));
|
||||
cgiSetVariable("ERROR", cupsLastErrorString());
|
||||
cgiCopyTemplateLang("error.tmpl");
|
||||
cgiEndHTML();
|
||||
@@ -1693,7 +1746,7 @@ do_config_server(http_t *http) /* I - HTTP connection */
|
||||
if ((current_preserve_job_files = cupsGetOption("PreserveJobFiles",
|
||||
num_settings,
|
||||
settings)) == NULL)
|
||||
current_preserve_job_files = "1d";
|
||||
current_preserve_job_files = "No";
|
||||
|
||||
if ((current_max_clients = cupsGetOption("MaxClients", num_settings,
|
||||
settings)) == NULL)
|
||||
@@ -1707,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...
|
||||
*/
|
||||
@@ -1717,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
|
||||
@@ -1728,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) ||
|
||||
@@ -1750,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,
|
||||
@@ -1765,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);
|
||||
@@ -1796,15 +1871,14 @@ do_config_server(http_t *http) /* I - HTTP connection */
|
||||
|
||||
cgiStartHTML(cgiText(_("Change Settings")));
|
||||
cgiSetVariable("MESSAGE",
|
||||
cgiText(_("Unable to change server settings")));
|
||||
cgiText(_("Unable to change server settings:")));
|
||||
cgiSetVariable("ERROR", cupsLastErrorString());
|
||||
cgiCopyTemplateLang("error.tmpl");
|
||||
}
|
||||
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")));
|
||||
@@ -1847,7 +1921,7 @@ do_config_server(http_t *http) /* I - HTTP connection */
|
||||
if ((tempfd = cupsTempFd(tempfile, sizeof(tempfile))) < 0)
|
||||
{
|
||||
cgiStartHTML(cgiText(_("Edit Configuration File")));
|
||||
cgiSetVariable("MESSAGE", cgiText(_("Unable to create temporary file")));
|
||||
cgiSetVariable("MESSAGE", cgiText(_("Unable to create temporary file:")));
|
||||
cgiSetVariable("ERROR", strerror(errno));
|
||||
cgiCopyTemplateLang("error.tmpl");
|
||||
cgiEndHTML();
|
||||
@@ -1859,7 +1933,7 @@ do_config_server(http_t *http) /* I - HTTP connection */
|
||||
if ((temp = cupsFileOpenFd(tempfd, "w")) == NULL)
|
||||
{
|
||||
cgiStartHTML(cgiText(_("Edit Configuration File")));
|
||||
cgiSetVariable("MESSAGE", cgiText(_("Unable to create temporary file")));
|
||||
cgiSetVariable("MESSAGE", cgiText(_("Unable to create temporary file:")));
|
||||
cgiSetVariable("ERROR", strerror(errno));
|
||||
cgiCopyTemplateLang("error.tmpl");
|
||||
cgiEndHTML();
|
||||
@@ -1909,7 +1983,7 @@ do_config_server(http_t *http) /* I - HTTP connection */
|
||||
else if (status != HTTP_CREATED)
|
||||
{
|
||||
cgiSetVariable("MESSAGE",
|
||||
cgiText(_("Unable to upload cupsd.conf file")));
|
||||
cgiText(_("Unable to upload cupsd.conf file:")));
|
||||
cgiSetVariable("ERROR", httpStatus(status));
|
||||
|
||||
cgiStartHTML(cgiText(_("Edit Configuration File")));
|
||||
@@ -1956,7 +2030,7 @@ do_config_server(http_t *http) /* I - HTTP connection */
|
||||
{
|
||||
cgiStartHTML(cgiText(_("Edit Configuration File")));
|
||||
cgiSetVariable("MESSAGE",
|
||||
cgiText(_("Unable to access cupsd.conf file")));
|
||||
cgiText(_("Unable to access cupsd.conf file:")));
|
||||
cgiSetVariable("ERROR", strerror(errno));
|
||||
cgiCopyTemplateLang("error.tmpl");
|
||||
cgiEndHTML();
|
||||
@@ -1969,7 +2043,7 @@ do_config_server(http_t *http) /* I - HTTP connection */
|
||||
{
|
||||
cgiStartHTML(cgiText(_("Edit Configuration File")));
|
||||
cgiSetVariable("MESSAGE",
|
||||
cgiText(_("Unable to access cupsd.conf file")));
|
||||
cgiText(_("Unable to access cupsd.conf file:")));
|
||||
cgiSetVariable("ERROR",
|
||||
cgiText(_("Unable to edit cupsd.conf files larger than "
|
||||
"1MB")));
|
||||
@@ -1993,7 +2067,7 @@ do_config_server(http_t *http) /* I - HTTP connection */
|
||||
|
||||
cgiStartHTML(cgiText(_("Edit Configuration File")));
|
||||
cgiSetVariable("MESSAGE",
|
||||
cgiText(_("Unable to access cupsd.conf file")));
|
||||
cgiText(_("Unable to access cupsd.conf file:")));
|
||||
cgiSetVariable("ERROR", strerror(errno));
|
||||
cgiCopyTemplateLang("error.tmpl");
|
||||
cgiEndHTML();
|
||||
@@ -2150,7 +2224,7 @@ do_delete_class(http_t *http) /* I - HTTP connection */
|
||||
cgiStartHTML(cgiText(_("Delete Class")));
|
||||
|
||||
if (cupsLastError() > IPP_OK_CONFLICT)
|
||||
cgiShowIPPError(_("Unable to delete class"));
|
||||
cgiShowIPPError(_("Unable to delete class:"));
|
||||
else
|
||||
cgiCopyTemplateLang("class-deleted.tmpl");
|
||||
|
||||
@@ -2235,7 +2309,7 @@ do_delete_printer(http_t *http) /* I - HTTP connection */
|
||||
cgiStartHTML(cgiText(_("Delete Printer")));
|
||||
|
||||
if (cupsLastError() > IPP_OK_CONFLICT)
|
||||
cgiShowIPPError(_("Unable to delete printer"));
|
||||
cgiShowIPPError(_("Unable to delete printer:"));
|
||||
else
|
||||
cgiCopyTemplateLang("printer-deleted.tmpl");
|
||||
|
||||
@@ -2285,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");
|
||||
@@ -2621,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");
|
||||
@@ -2639,6 +2718,53 @@ do_menu(http_t *http) /* I - HTTP connection */
|
||||
#endif /* HAVE_GSSAPI */
|
||||
cgiSetVariable("KERBEROS", "");
|
||||
|
||||
#ifdef HAVE_DNSSD
|
||||
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";
|
||||
@@ -2651,25 +2777,18 @@ do_menu(http_t *http) /* I - HTTP connection */
|
||||
settings)) == NULL)
|
||||
val = "Yes";
|
||||
|
||||
if (val &&
|
||||
(!_cups_strcasecmp(val, "0") || !_cups_strcasecmp(val, "no") ||
|
||||
!_cups_strcasecmp(val, "off") || !_cups_strcasecmp(val, "false") ||
|
||||
!_cups_strcasecmp(val, "disabled")))
|
||||
if (!_cups_strcasecmp(val, "yes") || !_cups_strcasecmp(val, "on") ||
|
||||
!_cups_strcasecmp(val, "true"))
|
||||
{
|
||||
cgiSetVariable("PRESERVE_JOB_HISTORY", "0");
|
||||
cgiSetVariable("PRESERVE_JOB_FILES", "0");
|
||||
}
|
||||
else
|
||||
{
|
||||
cgiSetVariable("PRESERVE_JOBS", "CHECKED");
|
||||
cgiSetVariable("PRESERVE_JOB_HISTORY", val);
|
||||
cgiSetVariable("PRESERVE_JOB_HISTORY", "CHECKED");
|
||||
|
||||
if ((val = cupsGetOption("PreserveJobFiles", num_settings,
|
||||
settings)) == NULL)
|
||||
val = "1d";
|
||||
|
||||
cgiSetVariable("PRESERVE_JOB_FILES", val);
|
||||
val = "No";
|
||||
|
||||
if (!_cups_strcasecmp(val, "yes") || !_cups_strcasecmp(val, "on") ||
|
||||
!_cups_strcasecmp(val, "true"))
|
||||
cgiSetVariable("PRESERVE_JOB_FILES", "CHECKED");
|
||||
}
|
||||
|
||||
if ((val = cupsGetOption("MaxClients", num_settings, settings)) == NULL)
|
||||
@@ -2837,7 +2956,7 @@ do_set_allowed_users(http_t *http) /* I - HTTP connection */
|
||||
exit(0);
|
||||
}
|
||||
else if (cupsLastError() > IPP_OK_CONFLICT)
|
||||
cgiShowIPPError(_("Unable to get printer attributes"));
|
||||
cgiShowIPPError(_("Unable to get printer attributes:"));
|
||||
else
|
||||
cgiCopyTemplateLang("users.tmpl");
|
||||
|
||||
@@ -2987,7 +3106,7 @@ do_set_allowed_users(http_t *http) /* I - HTTP connection */
|
||||
else if (cupsLastError() > IPP_OK_CONFLICT)
|
||||
{
|
||||
cgiStartHTML(cgiText(_("Set Allowed Users")));
|
||||
cgiShowIPPError(_("Unable to change printer"));
|
||||
cgiShowIPPError(_("Unable to change printer:"));
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -3074,7 +3193,7 @@ do_set_default(http_t *http) /* I - HTTP connection */
|
||||
else if (cupsLastError() > IPP_OK_CONFLICT)
|
||||
{
|
||||
cgiStartHTML(title);
|
||||
cgiShowIPPError(_("Unable to set server default"));
|
||||
cgiShowIPPError(_("Unable to set server default:"));
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -3183,7 +3302,7 @@ do_set_options(http_t *http, /* I - HTTP connection */
|
||||
if ((ppd = ppdOpenFile(filename)) == NULL)
|
||||
{
|
||||
cgiSetVariable("ERROR", ppdErrorString(ppdLastError(&i)));
|
||||
cgiSetVariable("MESSAGE", cgiText(_("Unable to open PPD file")));
|
||||
cgiSetVariable("MESSAGE", cgiText(_("Unable to open PPD file:")));
|
||||
cgiStartHTML(title);
|
||||
cgiCopyTemplateLang("error.tmpl");
|
||||
cgiEndHTML();
|
||||
@@ -3804,7 +3923,7 @@ do_set_options(http_t *http, /* I - HTTP connection */
|
||||
else if (cupsLastError() > IPP_OK_CONFLICT)
|
||||
{
|
||||
cgiStartHTML(title);
|
||||
cgiShowIPPError(_("Unable to set options"));
|
||||
cgiShowIPPError(_("Unable to set options:"));
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -3903,7 +4022,7 @@ do_set_sharing(http_t *http) /* I - HTTP connection */
|
||||
else if (cupsLastError() > IPP_OK_CONFLICT)
|
||||
{
|
||||
cgiStartHTML(cgiText(_("Set Publishing")));
|
||||
cgiShowIPPError(_("Unable to change printer-is-shared attribute"));
|
||||
cgiShowIPPError(_("Unable to change printer-is-shared attribute:"));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -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 */
|
||||
|
||||
|
||||
/*
|
||||
|
||||
+4
-4
@@ -3,7 +3,7 @@
|
||||
*
|
||||
* Class status CGI for CUPS.
|
||||
*
|
||||
* Copyright 2007-2012 by Apple Inc.
|
||||
* Copyright 2007-2011 by Apple Inc.
|
||||
* Copyright 1997-2006 by Easy Software Products.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
@@ -257,7 +257,7 @@ do_class_op(http_t *http, /* I - HTTP connection */
|
||||
else if (cupsLastError() > IPP_OK_CONFLICT)
|
||||
{
|
||||
cgiStartHTML(title);
|
||||
cgiShowIPPError(_("Unable to do maintenance command"));
|
||||
cgiShowIPPError(_("Unable to do maintenance command:"));
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -447,7 +447,7 @@ show_all_classes(http_t *http, /* I - Connection to server */
|
||||
* Show the error...
|
||||
*/
|
||||
|
||||
cgiShowIPPError(_("Unable to get class list"));
|
||||
cgiShowIPPError(_("Unable to get class list:"));
|
||||
}
|
||||
|
||||
cgiEndHTML();
|
||||
@@ -546,7 +546,7 @@ show_class(http_t *http, /* I - Connection to server */
|
||||
*/
|
||||
|
||||
cgiStartHTML(pclass);
|
||||
cgiShowIPPError(_("Unable to get class status"));
|
||||
cgiShowIPPError(_("Unable to get class status:"));
|
||||
}
|
||||
|
||||
cgiEndHTML();
|
||||
|
||||
+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));
|
||||
|
||||
+10
-15
@@ -39,8 +39,7 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
const char *query; /* Search query */
|
||||
const char *cache_dir; /* CUPS_CACHEDIR environment variable */
|
||||
const char *docroot; /* CUPS_DOCROOT environment variable */
|
||||
const char *helpfile, /* Current help file */
|
||||
*helptitle = NULL; /* Current help title */
|
||||
const char *helpfile; /* Current help file */
|
||||
const char *topic; /* Current topic */
|
||||
char topic_data[1024]; /* Topic form data */
|
||||
const char *section; /* Current section */
|
||||
@@ -89,7 +88,7 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
perror(filename);
|
||||
|
||||
cgiStartHTML(cgiText(_("Online Help")));
|
||||
cgiSetVariable("ERROR", cgiText(_("Unable to load help index.")));
|
||||
cgiSetVariable("ERROR", "Unable to load help index!");
|
||||
cgiCopyTemplateLang("error.tmpl");
|
||||
cgiEndHTML();
|
||||
|
||||
@@ -130,7 +129,7 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
perror(filename);
|
||||
|
||||
cgiStartHTML(cgiText(_("Online Help")));
|
||||
cgiSetVariable("ERROR", cgiText(_("Unable to access help file.")));
|
||||
cgiSetVariable("ERROR", "Unable to access help file!");
|
||||
cgiCopyTemplateLang("error.tmpl");
|
||||
cgiEndHTML();
|
||||
|
||||
@@ -140,7 +139,7 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
if ((n = helpFindNode(hi, helpfile, NULL)) == NULL)
|
||||
{
|
||||
cgiStartHTML(cgiText(_("Online Help")));
|
||||
cgiSetVariable("ERROR", cgiText(_("Help file not in index.")));
|
||||
cgiSetVariable("ERROR", "Help file not in index!");
|
||||
cgiCopyTemplateLang("error.tmpl");
|
||||
cgiEndHTML();
|
||||
|
||||
@@ -148,11 +147,12 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
}
|
||||
|
||||
/*
|
||||
* Save the page title and help file...
|
||||
* Set the page title and save the help file...
|
||||
*/
|
||||
|
||||
helptitle = n->text;
|
||||
topic = n->section;
|
||||
cgiSetVariable("HELPFILE", helpfile);
|
||||
cgiSetVariable("HELPTITLE", n->text);
|
||||
cgiSetVariable("TOPIC", n->section);
|
||||
|
||||
/*
|
||||
* Send a standard page header...
|
||||
@@ -170,8 +170,6 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
*/
|
||||
|
||||
cgiStartHTML(cgiText(_("Online Help")));
|
||||
|
||||
topic = cgiGetVariable("TOPIC");
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -182,6 +180,7 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
cgiSetVariable("QUERY", "");
|
||||
|
||||
query = cgiGetVariable("QUERY");
|
||||
topic = cgiGetVariable("TOPIC");
|
||||
si = helpSearchIndex(hi, query, topic, helpfile);
|
||||
|
||||
cgiClearVariables();
|
||||
@@ -189,10 +188,6 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
cgiSetVariable("QUERY", query);
|
||||
if (topic)
|
||||
cgiSetVariable("TOPIC", topic);
|
||||
if (helpfile)
|
||||
cgiSetVariable("HELPFILE", helpfile);
|
||||
if (helptitle)
|
||||
cgiSetVariable("HELPTITLE", helptitle);
|
||||
|
||||
fprintf(stderr, "DEBUG: query=\"%s\", topic=\"%s\"\n",
|
||||
query ? query : "(null)", topic ? topic : "(null)");
|
||||
@@ -361,7 +356,7 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
else
|
||||
{
|
||||
perror(filename);
|
||||
cgiSetVariable("ERROR", cgiText(_("Unable to open help file.")));
|
||||
cgiSetVariable("ERROR", "Unable to open help file.");
|
||||
cgiCopyTemplateLang("error.tmpl");
|
||||
}
|
||||
}
|
||||
|
||||
+3
-3
@@ -3,7 +3,7 @@
|
||||
*
|
||||
* CGI <-> IPP variable routines for CUPS.
|
||||
*
|
||||
* Copyright 2007-2012 by Apple Inc.
|
||||
* Copyright 2007-2011 by Apple Inc.
|
||||
* Copyright 1997-2007 by Easy Software Products.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
@@ -792,7 +792,7 @@ cgiPrintTestPage(http_t *http, /* I - Connection to server */
|
||||
cgiStartHTML(cgiText(_("Print Test Page")));
|
||||
|
||||
if (cupsLastError() > IPP_OK_CONFLICT)
|
||||
cgiShowIPPError(_("Unable to print test page"));
|
||||
cgiShowIPPError(_("Unable to print test page:"));
|
||||
else
|
||||
{
|
||||
cgiSetVariable("PRINTER_NAME", dest);
|
||||
@@ -1219,7 +1219,7 @@ cgiSetIPPObjectVars(
|
||||
"%dx%d%s", attr->values[i].resolution.xres,
|
||||
attr->values[i].resolution.yres,
|
||||
attr->values[i].resolution.units == IPP_RES_PER_INCH ?
|
||||
"dpi" : "dpcm");
|
||||
"dpi" : "dpc");
|
||||
break;
|
||||
|
||||
case IPP_TAG_URI :
|
||||
|
||||
+2
-2
@@ -3,7 +3,7 @@
|
||||
*
|
||||
* Job status CGI for CUPS.
|
||||
*
|
||||
* Copyright 2007-2012 by Apple Inc.
|
||||
* Copyright 2007-2011 by Apple Inc.
|
||||
* Copyright 1997-2006 by Easy Software Products.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
@@ -195,7 +195,7 @@ do_job_op(http_t *http, /* I - HTTP connection */
|
||||
cgiStartHTML(cgiText(_("Jobs")));
|
||||
|
||||
if (cupsLastError() > IPP_OK_CONFLICT)
|
||||
cgiShowIPPError(_("Job operation failed"));
|
||||
cgiShowIPPError(_("Job operation failed:"));
|
||||
else if (op == IPP_CANCEL_JOB)
|
||||
cgiCopyTemplateLang("job-cancel.tmpl");
|
||||
else if (op == IPP_HOLD_JOB)
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
*
|
||||
* Xcode documentation set generator.
|
||||
*
|
||||
* 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
|
||||
@@ -31,7 +31,7 @@
|
||||
* Include necessary headers...
|
||||
*/
|
||||
|
||||
#include "cgi-private.h"
|
||||
#include "cgi.h"
|
||||
#include <errno.h>
|
||||
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
*
|
||||
* Printer status CGI for CUPS.
|
||||
*
|
||||
* Copyright 2007-2012 by Apple Inc.
|
||||
* Copyright 2007-2011 by Apple Inc.
|
||||
* Copyright 1997-2006 by Easy Software Products.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
@@ -266,7 +266,7 @@ do_printer_op(http_t *http, /* I - HTTP connection */
|
||||
else if (cupsLastError() > IPP_OK_CONFLICT)
|
||||
{
|
||||
cgiStartHTML(title);
|
||||
cgiShowIPPError(_("Unable to do maintenance command"));
|
||||
cgiShowIPPError(_("Unable to do maintenance command:"));
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -464,7 +464,7 @@ show_all_printers(http_t *http, /* I - Connection to server */
|
||||
* Show the error...
|
||||
*/
|
||||
|
||||
cgiShowIPPError(_("Unable to get printer list"));
|
||||
cgiShowIPPError(_("Unable to get printer list:"));
|
||||
}
|
||||
|
||||
cgiEndHTML();
|
||||
@@ -566,7 +566,7 @@ show_printer(http_t *http, /* I - Connection to server */
|
||||
*/
|
||||
|
||||
cgiStartHTML(printer);
|
||||
cgiShowIPPError(_("Unable to get printer status"));
|
||||
cgiShowIPPError(_("Unable to get printer status:"));
|
||||
}
|
||||
|
||||
cgiEndHTML();
|
||||
|
||||
@@ -167,8 +167,6 @@ cgiClearVariables(void)
|
||||
_cgi_var_t *v; /* Current variable */
|
||||
|
||||
|
||||
fputs("DEBUG: cgiClearVariables called.\n", stderr);
|
||||
|
||||
for (v = form_vars, i = form_count; i > 0; v ++, i --)
|
||||
{
|
||||
_cupsStrFree(v->name);
|
||||
@@ -403,8 +401,6 @@ cgiSetArray(const char *name, /* I - Name of variable */
|
||||
if (name == NULL || value == NULL || element < 0 || element > 100000)
|
||||
return;
|
||||
|
||||
fprintf(stderr, "DEBUG: cgiSetArray: %s[%d]=\"%s\"\n", name, element, value);
|
||||
|
||||
if ((var = cgi_find_variable(name)) == NULL)
|
||||
{
|
||||
cgi_add_variable(name, element, value);
|
||||
@@ -536,8 +532,6 @@ cgiSetVariable(const char *name, /* I - Name of variable */
|
||||
if (name == NULL || value == NULL)
|
||||
return;
|
||||
|
||||
fprintf(stderr, "cgiSetVariable: %s=\"%s\"\n", name, value);
|
||||
|
||||
if ((var = cgi_find_variable(name)) == NULL)
|
||||
{
|
||||
cgi_add_variable(name, 0, value);
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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,9 +1,9 @@
|
||||
dnl
|
||||
dnl "$Id: cups-common.m4 10553 2012-07-27 17:57:34Z mike $"
|
||||
dnl "$Id: cups-common.m4 10067 2011-10-13 05:44:32Z mike $"
|
||||
dnl
|
||||
dnl Common configuration 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
|
||||
@@ -20,7 +20,7 @@ dnl Set the name of the config header file...
|
||||
AC_CONFIG_HEADER(config.h)
|
||||
|
||||
dnl Version number information...
|
||||
CUPS_VERSION="1.6.1"
|
||||
CUPS_VERSION="1.5.1"
|
||||
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'`"
|
||||
@@ -50,7 +50,7 @@ AC_PROG_CXX
|
||||
AC_PROG_RANLIB
|
||||
AC_PATH_PROG(AR,ar)
|
||||
AC_PATH_PROG(CHMOD,chmod)
|
||||
AC_PATH_PROG(GZIP,gzip)
|
||||
AC_PATH_PROG(HTMLDOC,htmldoc)
|
||||
AC_PATH_PROG(LD,ld)
|
||||
AC_PATH_PROG(LN,ln)
|
||||
AC_PATH_PROG(MV,mv)
|
||||
@@ -92,9 +92,8 @@ 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(abs, m, AC_DEFINE(HAVE_ABS))
|
||||
AC_SEARCH_LIBS(crypt, crypt)
|
||||
AC_SEARCH_LIBS(fmod, m)
|
||||
AC_SEARCH_LIBS(crypt, crypt)
|
||||
AC_SEARCH_LIBS(getspent, sec gen)
|
||||
|
||||
LIBMALLOC=""
|
||||
@@ -125,7 +124,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))
|
||||
@@ -148,16 +146,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))
|
||||
@@ -226,20 +214,19 @@ AC_ARG_ENABLE(libusb, [ --enable-libusb use libusb for USB printing])
|
||||
LIBUSB=""
|
||||
AC_SUBST(LIBUSB)
|
||||
|
||||
if test "x$PKGCONFIG" != x; then
|
||||
if test x$enable_libusb = xyes -o $uname != Darwin; then
|
||||
AC_MSG_CHECKING(for libusb-1.0)
|
||||
if $PKGCONFIG --exists libusb-1.0; then
|
||||
AC_MSG_RESULT(yes)
|
||||
AC_DEFINE(HAVE_LIBUSB)
|
||||
CFLAGS="$CFLAGS `$PKGCONFIG --cflags libusb-1.0`"
|
||||
LIBUSB="`$PKGCONFIG --libs libusb-1.0`"
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
fi
|
||||
fi
|
||||
elif test x$enable_libusb = xyes; then
|
||||
AC_MSG_ERROR(Need pkg-config to enable libusb support.)
|
||||
if test x$enable_libusb = xyes; then
|
||||
check_libusb=yes
|
||||
elif test x$enable_libusb != xno -a $uname != Darwin; then
|
||||
check_libusb=yes
|
||||
else
|
||||
check_libusb=no
|
||||
fi
|
||||
|
||||
if test $check_libusb = yes; then
|
||||
AC_CHECK_LIB(usb, usb_get_string_simple,[
|
||||
AC_CHECK_HEADER(usb.h,
|
||||
AC_DEFINE(HAVE_USB_H)
|
||||
LIBUSB="-lusb")])
|
||||
fi
|
||||
|
||||
dnl See if we have libwrap for TCP wrappers support...
|
||||
@@ -255,20 +242,6 @@ if test x$enable_tcp_wrappers = xyes; then
|
||||
LIBWRAP="-lwrap")])
|
||||
fi
|
||||
|
||||
dnl ZLIB
|
||||
INSTALL_GZIP=""
|
||||
LIBZ=""
|
||||
AC_CHECK_HEADER(zlib.h,
|
||||
AC_CHECK_LIB(z, gzgets,
|
||||
AC_DEFINE(HAVE_LIBZ)
|
||||
LIBZ="-lz"
|
||||
LIBS="$LIBS -lz"
|
||||
if test "x$GZIP" != z; then
|
||||
INSTALL_GZIP="-z"
|
||||
fi))
|
||||
AC_SUBST(INSTALL_GZIP)
|
||||
AC_SUBST(LIBZ)
|
||||
|
||||
dnl Flags for "ar" command...
|
||||
case $uname in
|
||||
Darwin* | *BSD*)
|
||||
@@ -338,9 +311,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"
|
||||
@@ -355,6 +330,12 @@ case $uname in
|
||||
dnl Check for dynamic store function...
|
||||
AC_CHECK_FUNCS(SCDynamicStoreCopyComputerName)
|
||||
|
||||
dnl Check for new ColorSync APIs...
|
||||
SAVELIBS="$LIBS"
|
||||
LIBS="$LIBS -framework ApplicationServices"
|
||||
AC_CHECK_FUNCS(ColorSyncRegisterDevice)
|
||||
LIBS="$SAVELIBS"
|
||||
|
||||
dnl Check for the new membership functions in MacOSX 10.4...
|
||||
AC_CHECK_HEADER(membership.h,AC_DEFINE(HAVE_MEMBERSHIP_H))
|
||||
AC_CHECK_HEADER(membershipPriv.h,AC_DEFINE(HAVE_MEMBERSHIPPRIV_H))
|
||||
@@ -417,8 +398,6 @@ case $uname in
|
||||
AC_CHECK_HEADER(xpc/xpc.h,
|
||||
AC_DEFINE(HAVE_XPC)
|
||||
INSTALLXPC="install-xpc")
|
||||
AC_CHECK_HEADER(xpc/private.h,
|
||||
AC_DEFINE(HAVE_XPC_PRIVATE_H))
|
||||
;;
|
||||
esac
|
||||
|
||||
@@ -426,6 +405,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"
|
||||
@@ -437,7 +417,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 desktop locale man doc examples templates"
|
||||
;;
|
||||
|
||||
core)
|
||||
@@ -452,5 +432,5 @@ esac
|
||||
AC_SUBST(BUILDDIRS)
|
||||
|
||||
dnl
|
||||
dnl End of "$Id: cups-common.m4 10553 2012-07-27 17:57:34Z mike $".
|
||||
dnl End of "$Id: cups-common.m4 10067 2011-10-13 05:44:32Z 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 9981 2011-09-09 17:28:58Z 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
|
||||
@@ -145,6 +157,7 @@ if test -n "$GCC"; then
|
||||
# Additional warning options for development testing...
|
||||
if test -d .svn; then
|
||||
OPTIM="-Wshadow -Werror $OPTIM"
|
||||
PHPOPTIONS="-Wno-shadow"
|
||||
else
|
||||
AC_MSG_CHECKING(if GCC supports -Wno-tautological-compare)
|
||||
OLDCFLAGS="$CFLAGS"
|
||||
@@ -167,12 +180,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 +356,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 +403,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 +461,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 +559,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 9981 2011-09-09 17:28:58Z mike $".
|
||||
dnl
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
dnl
|
||||
dnl "$Id: cups-defaults.m4 10424 2012-04-23 17:26:57Z mike $"
|
||||
dnl "$Id: cups-defaults.m4 9750 2011-05-06 22:53:53Z mike $"
|
||||
dnl
|
||||
dnl Default cupsd configuration settings for CUPS.
|
||||
dnl
|
||||
dnl Copyright 2007-2012 by Apple Inc.
|
||||
dnl Copyright 2007-2011 by Apple Inc.
|
||||
dnl Copyright 2006-2007 by Easy Software Products, all rights reserved.
|
||||
dnl
|
||||
dnl These coded instructions, statements, and computer programs are the
|
||||
@@ -14,7 +14,7 @@ dnl file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
dnl
|
||||
|
||||
dnl Default languages...
|
||||
LANGUAGES="`ls -1 locale/cups_*.po 2>/dev/null | sed -e '1,$s/locale\/cups_//' -e '1,$s/\.po//' | tr '\n' ' '`"
|
||||
LANGUAGES="`ls -1 locale/cups_*.po | sed -e '1,$s/locale\/cups_//' -e '1,$s/\.po//' | tr '\n' ' '`"
|
||||
|
||||
AC_ARG_WITH(languages, [ --with-languages set installed languages, default=all ],[
|
||||
case "$withval" in
|
||||
@@ -24,8 +24,8 @@ AC_ARG_WITH(languages, [ --with-languages set installed languages, defau
|
||||
esac])
|
||||
AC_SUBST(LANGUAGES)
|
||||
|
||||
dnl OS X bundle-based localization support
|
||||
AC_ARG_WITH(bundledir, [ --with-bundledir set OS X localization bundle directory ],
|
||||
dnl Mac OS X bundle-based localization support
|
||||
AC_ARG_WITH(bundledir, [ --with-bundledir set Mac OS X localization bundle directory ],
|
||||
CUPS_BUNDLEDIR="$withval",
|
||||
if test "x$uname" = xDarwin -a $uversion -ge 100; then
|
||||
CUPS_BUNDLEDIR="/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/PrintCore.framework/Versions/A"
|
||||
@@ -50,12 +50,6 @@ AC_ARG_WITH(config_file_perm, [ --with-config-file-perm set default ConfigFileP
|
||||
AC_SUBST(CUPS_CONFIG_FILE_PERM)
|
||||
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_CONFIG_FILE_PERM, 0$CUPS_CONFIG_FILE_PERM)
|
||||
|
||||
dnl Default permissions for cupsd
|
||||
AC_ARG_WITH(cupsd_file_perm, [ --with-cupsd-file-perm set default cupsd permissions, default=0500],
|
||||
CUPS_CUPSD_FILE_PERM="$withval",
|
||||
CUPS_CUPSD_FILE_PERM="500")
|
||||
AC_SUBST(CUPS_CUPSD_FILE_PERM)
|
||||
|
||||
dnl Default LogFilePerm
|
||||
AC_ARG_WITH(log_file_perm, [ --with-log-file-perm set default LogFilePerm value, default=0644],
|
||||
CUPS_LOG_FILE_PERM="$withval",
|
||||
@@ -70,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",
|
||||
@@ -96,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$DNSSD_BACKEND" != "x"; then
|
||||
CUPS_BROWSE_LOCAL_PROTOCOLS="dnssd"
|
||||
else
|
||||
CUPS_BROWSE_LOCAL_PROTOCOLS=""
|
||||
if test "x$DNSSDLIBS" != "x"; then
|
||||
CUPS_BROWSE_LOCAL_PROTOCOLS="CUPS dnssd"
|
||||
else
|
||||
CUPS_BROWSE_LOCAL_PROTOCOLS="CUPS"
|
||||
fi
|
||||
else
|
||||
CUPS_BROWSE_LOCAL_PROTOCOLS="$default_local_protocols"
|
||||
@@ -118,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])
|
||||
@@ -130,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",
|
||||
@@ -372,8 +434,54 @@ 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 OS X])
|
||||
AC_ARG_ENABLE(webif, [ --enable-webif enable the web interface by default, default=no for Mac OS X])
|
||||
case "x$enable_webif" in
|
||||
xno)
|
||||
CUPS_WEBIF=No
|
||||
@@ -398,5 +506,5 @@ AC_SUBST(CUPS_WEBIF)
|
||||
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_WEBIF, $CUPS_DEFAULT_WEBIF)
|
||||
|
||||
dnl
|
||||
dnl End of "$Id: cups-defaults.m4 10424 2012-04-23 17:26:57Z mike $".
|
||||
dnl End of "$Id: cups-defaults.m4 9750 2011-05-06 22:53:53Z mike $".
|
||||
dnl
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
dnl
|
||||
dnl "$Id: cups-directories.m4 10424 2012-04-23 17:26:57Z mike $"
|
||||
dnl "$Id: cups-directories.m4 9771 2011-05-12 05:21:56Z mike $"
|
||||
dnl
|
||||
dnl Directory 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
|
||||
@@ -424,7 +424,7 @@ AC_SUBST(CUPS_SERVERROOT)
|
||||
# Transient run-time state
|
||||
case "$uname" in
|
||||
Darwin*)
|
||||
# Darwin (OS X)
|
||||
# Darwin (Mac OS X)
|
||||
CUPS_STATEDIR="$CUPS_SERVERROOT"
|
||||
;;
|
||||
*)
|
||||
@@ -436,5 +436,5 @@ AC_DEFINE_UNQUOTED(CUPS_STATEDIR, "$CUPS_STATEDIR")
|
||||
AC_SUBST(CUPS_STATEDIR)
|
||||
|
||||
dnl
|
||||
dnl End of "$Id: cups-directories.m4 10424 2012-04-23 17:26:57Z mike $".
|
||||
dnl End of "$Id: cups-directories.m4 9771 2011-05-12 05:21:56Z mike $".
|
||||
dnl
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
dnl
|
||||
dnl "$Id: cups-dnssd.m4 10471 2012-05-16 22:57:03Z mike $"
|
||||
dnl "$Id: cups-dnssd.m4 9771 2011-05-12 05:21:56Z mike $"
|
||||
dnl
|
||||
dnl DNS Service Discovery (aka Bonjour) stuff for CUPS.
|
||||
dnl
|
||||
dnl Copyright 2007-2012 by Apple Inc.
|
||||
dnl Copyright 2007-2011 by Apple Inc.
|
||||
dnl
|
||||
dnl These coded instructions, statements, and computer programs are the
|
||||
dnl property of Apple Inc. and are protected by Federal copyright
|
||||
@@ -12,8 +12,7 @@ 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(avahi, [ --disable-avahi disable DNS Service Discovery support using Avahi])
|
||||
AC_ARG_ENABLE(dnssd, [ --disable-dnssd disable DNS Service Discovery support using mDNSResponder])
|
||||
AC_ARG_ENABLE(dnssd, [ --disable-dnssd disable DNS Service Discovery support])
|
||||
AC_ARG_WITH(dnssd-libs, [ --with-dnssd-libs set directory for DNS Service Discovery library],
|
||||
LDFLAGS="-L$withval $LDFLAGS"
|
||||
DSOFLAGS="-L$withval $DSOFLAGS",)
|
||||
@@ -24,25 +23,14 @@ AC_ARG_WITH(dnssd-includes, [ --with-dnssd-includes set directory for DNS Ser
|
||||
DNSSDLIBS=""
|
||||
DNSSD_BACKEND=""
|
||||
|
||||
if test "x$PKGCONFIG" != x -a x$enable_avahi != xno; then
|
||||
AC_MSG_CHECKING(for Avahi)
|
||||
if $PKGCONFIG --exists avahi-client; then
|
||||
AC_MSG_RESULT(yes)
|
||||
CFLAGS="$CFLAGS `$PKGCONFIG --cflags avahi-client`"
|
||||
DNSSDLIBS="`$PKGCONFIG --libs avahi-client`"
|
||||
DNSSD_BACKEND="dnssd"
|
||||
AC_DEFINE(HAVE_AVAHI)
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
fi
|
||||
fi
|
||||
|
||||
if test "x$DNSSD_BACKEND" = x -a x$enable_dnssd != xno; then
|
||||
if test x$enable_dnssd != xno; then
|
||||
AC_CHECK_HEADER(dns_sd.h, [
|
||||
case "$uname" in
|
||||
Darwin*)
|
||||
# Darwin and MacOS X...
|
||||
AC_DEFINE(HAVE_DNSSD)
|
||||
AC_DEFINE(HAVE_COREFOUNDATION)
|
||||
AC_DEFINE(HAVE_SYSTEMCONFIGURATION)
|
||||
DNSSDLIBS="-framework CoreFoundation -framework SystemConfiguration"
|
||||
DNSSD_BACKEND="dnssd"
|
||||
;;
|
||||
@@ -72,5 +60,5 @@ AC_SUBST(DNSSDLIBS)
|
||||
AC_SUBST(DNSSD_BACKEND)
|
||||
|
||||
dnl
|
||||
dnl End of "$Id: cups-dnssd.m4 10471 2012-05-16 22:57:03Z mike $".
|
||||
dnl End of "$Id: cups-dnssd.m4 9771 2011-05-12 05:21:56Z mike $".
|
||||
dnl
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
dnl
|
||||
dnl "$Id: cups-gssapi.m4 10424 2012-04-23 17:26:57Z mike $"
|
||||
dnl "$Id: cups-gssapi.m4 10083 2011-10-19 20:21:16Z mike $"
|
||||
dnl
|
||||
dnl GSSAPI/Kerberos library detection for CUPS.
|
||||
dnl
|
||||
dnl Copyright 2007-2012 by Apple Inc.
|
||||
dnl Copyright 2007-2011 by Apple Inc.
|
||||
dnl Copyright 2006-2007 by Easy Software Products.
|
||||
dnl
|
||||
dnl This file contains Kerberos support code, copyright 2006 by
|
||||
@@ -26,7 +26,7 @@ if test x$enable_gssapi != xno; then
|
||||
if test "x$KRB5CONFIG" != x; then
|
||||
case "$uname" in
|
||||
Darwin)
|
||||
# OS X weak-links to the Kerberos framework...
|
||||
# Mac OS X weak-links to the Kerberos framework...
|
||||
LIBGSSAPI="-weak_framework Kerberos"
|
||||
AC_MSG_CHECKING(for GSS framework)
|
||||
if test -d /System/Library/Frameworks/GSS.framework; then
|
||||
@@ -163,9 +163,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 10424 2012-04-23 17:26:57Z mike $".
|
||||
dnl End of "$Id: cups-gssapi.m4 10083 2011-10-19 20:21:16Z 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
|
||||
@@ -1,9 +1,9 @@
|
||||
dnl
|
||||
dnl "$Id: cups-manpages.m4 10424 2012-04-23 17:26:57Z mike $"
|
||||
dnl "$Id: cups-manpages.m4 9771 2011-05-12 05:21:56Z mike $"
|
||||
dnl
|
||||
dnl Manpage stuff for CUPS.
|
||||
dnl
|
||||
dnl Copyright 2007-2012 by Apple Inc.
|
||||
dnl Copyright 2007-2011 by Apple Inc.
|
||||
dnl Copyright 1997-2006 by Easy Software Products, all rights reserved.
|
||||
dnl
|
||||
dnl These coded instructions, statements, and computer programs are the
|
||||
@@ -68,7 +68,7 @@ case "$uname" in
|
||||
MAN8DIR=1m
|
||||
;;
|
||||
Linux* | GNU* | Darwin*)
|
||||
# Linux, GNU Hurd, and OS X
|
||||
# Linux, GNU Hurd, and Mac OS X
|
||||
MAN1EXT=1.gz
|
||||
MAN5EXT=5.gz
|
||||
MAN7EXT=7.gz
|
||||
@@ -92,5 +92,5 @@ AC_SUBST(MAN8EXT)
|
||||
AC_SUBST(MAN8DIR)
|
||||
|
||||
dnl
|
||||
dnl End of "$Id: cups-manpages.m4 10424 2012-04-23 17:26:57Z mike $".
|
||||
dnl End of "$Id: cups-manpages.m4 9771 2011-05-12 05:21:56Z mike $".
|
||||
dnl
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
dnl
|
||||
dnl "$Id: cups-pam.m4 10424 2012-04-23 17:26:57Z mike $"
|
||||
dnl "$Id: cups-pam.m4 9771 2011-05-12 05:21:56Z mike $"
|
||||
dnl
|
||||
dnl PAM stuff for CUPS.
|
||||
dnl
|
||||
dnl Copyright 2007-2012 by Apple Inc.
|
||||
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
|
||||
@@ -61,7 +61,7 @@ if test x$enable_pam != xno; then
|
||||
|
||||
case "$uname" in
|
||||
Darwin*)
|
||||
# Darwin/OS X
|
||||
# Darwin/Mac OS X
|
||||
if test "x$with_pam_module" != x; then
|
||||
PAMFILE="pam.$with_pam_module"
|
||||
elif test -f /usr/lib/pam/pam_opendirectory.so.2; then
|
||||
@@ -98,5 +98,5 @@ AC_SUBST(PAMMOD)
|
||||
AC_SUBST(PAMMODAUTH)
|
||||
|
||||
dnl
|
||||
dnl End of "$Id: cups-pam.m4 10424 2012-04-23 17:26:57Z mike $".
|
||||
dnl End of "$Id: cups-pam.m4 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,9 +1,9 @@
|
||||
dnl
|
||||
dnl "$Id: cups-ssl.m4 10521 2012-06-15 22:23:24Z mike $"
|
||||
dnl "$Id: cups-ssl.m4 9837 2011-06-16 20:12:16Z mike $"
|
||||
dnl
|
||||
dnl OpenSSL/GNUTLS 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
|
||||
@@ -56,6 +56,12 @@ 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
|
||||
@@ -118,7 +124,7 @@ if test x$enable_ssl != xno; then
|
||||
|
||||
dnl Check for the OpenSSL library last...
|
||||
if test $have_ssl = 0 -a "x$enable_openssl" != "xno"; then
|
||||
AC_CHECK_HEADER(openssl/ssl.h,[
|
||||
AC_CHECK_HEADER(openssl/ssl.h,
|
||||
dnl Save the current libraries so the crypto stuff isn't always
|
||||
dnl included...
|
||||
SAVELIBS="$LIBS"
|
||||
@@ -130,9 +136,9 @@ if test x$enable_ssl != xno; then
|
||||
dnl case the RSAREF libraries are needed.
|
||||
|
||||
for libcrypto in \
|
||||
"-lcrypto" \
|
||||
"-lcrypto -lrsaref" \
|
||||
"-lcrypto -lRSAglue -lrsaref"
|
||||
"-lcrypto" \
|
||||
"-lcrypto -lrsaref" \
|
||||
"-lcrypto -lRSAglue -lrsaref"
|
||||
do
|
||||
AC_CHECK_LIB(ssl,SSL_new,
|
||||
[have_ssl=1
|
||||
@@ -147,12 +153,7 @@ if test x$enable_ssl != xno; then
|
||||
fi
|
||||
done
|
||||
|
||||
if test "x${SSLLIBS}" != "x"; then
|
||||
LIBS="$SAVELIBS $SSLLIBS"
|
||||
AC_CHECK_FUNCS(SSL_set_tlsext_host_name)
|
||||
fi
|
||||
|
||||
LIBS="$SAVELIBS"])
|
||||
LIBS="$SAVELIBS")
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -172,6 +173,7 @@ AC_SUBST(SSLLIBS)
|
||||
EXPORT_SSLLIBS="$SSLLIBS"
|
||||
AC_SUBST(EXPORT_SSLLIBS)
|
||||
|
||||
|
||||
dnl
|
||||
dnl End of "$Id: cups-ssl.m4 10521 2012-06-15 22:23:24Z mike $".
|
||||
dnl End of "$Id: cups-ssl.m4 9837 2011-06-16 20:12:16Z mike $".
|
||||
dnl
|
||||
|
||||
+51
-45
@@ -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
|
||||
|
||||
|
||||
/*
|
||||
@@ -295,13 +299,6 @@
|
||||
#undef HAVE_SSL
|
||||
|
||||
|
||||
/*
|
||||
* Do we have the SSL_set_tlsext_host_name function?
|
||||
*/
|
||||
|
||||
#undef HAVE_SSL_SET_TLSEXT_HOST_NAME
|
||||
|
||||
|
||||
/*
|
||||
* What Security framework headers do we have?
|
||||
*/
|
||||
@@ -345,6 +342,13 @@
|
||||
#undef HAVE_SECPOLICYCREATESSL
|
||||
|
||||
|
||||
/*
|
||||
* Do we have the SSLSetProtocolVersionMax function?
|
||||
*/
|
||||
|
||||
#undef HAVE_SSLSETPROTOCOLVERSIONMAX
|
||||
|
||||
|
||||
/*
|
||||
* Do we have the cssmErrorString function?
|
||||
*/
|
||||
@@ -352,6 +356,25 @@
|
||||
#undef HAVE_CSSMERRORSTRING
|
||||
|
||||
|
||||
/*
|
||||
* Do we have the SLP library?
|
||||
*/
|
||||
|
||||
#undef HAVE_LIBSLP
|
||||
|
||||
|
||||
/*
|
||||
* Do we have an LDAP library?
|
||||
*/
|
||||
|
||||
#undef HAVE_LDAP
|
||||
#undef HAVE_OPENLDAP
|
||||
#undef HAVE_MOZILLA_LDAP
|
||||
#undef HAVE_LDAP_SSL_H
|
||||
#undef HAVE_LDAP_SSL
|
||||
#undef HAVE_LDAP_REBIND_PROC
|
||||
|
||||
|
||||
/*
|
||||
* Do we have libpaper?
|
||||
*/
|
||||
@@ -360,19 +383,12 @@
|
||||
|
||||
|
||||
/*
|
||||
* Do we have mDNSResponder for DNS Service Discovery (aka Bonjour)?
|
||||
* Do we have DNS Service Discovery (aka Bonjour)?
|
||||
*/
|
||||
|
||||
#undef HAVE_DNSSD
|
||||
|
||||
|
||||
/*
|
||||
* Do we have Avahi for DNS Service Discovery (aka Bonjour)?
|
||||
*/
|
||||
|
||||
#undef HAVE_AVAHI
|
||||
|
||||
|
||||
/*
|
||||
* Do we have <sys/ioctl.h>?
|
||||
*/
|
||||
@@ -511,6 +527,14 @@
|
||||
#define CUPS_GHOSTSCRIPT "/usr/bin/gs"
|
||||
|
||||
|
||||
/*
|
||||
* Do we have Darwin's CoreFoundation and SystemConfiguration frameworks?
|
||||
*/
|
||||
|
||||
#undef HAVE_COREFOUNDATION
|
||||
#undef HAVE_SYSTEMCONFIGURATION
|
||||
|
||||
|
||||
/*
|
||||
* Do we have CoreFoundation public and private headers?
|
||||
*/
|
||||
@@ -535,7 +559,7 @@
|
||||
|
||||
|
||||
/*
|
||||
* Do we have OS X 10.4's mbr_XXX functions?
|
||||
* Do we have Mac OS X 10.4's mbr_XXX functions?
|
||||
*/
|
||||
|
||||
#undef HAVE_MEMBERSHIP_H
|
||||
@@ -667,7 +691,7 @@
|
||||
* Do we have libusb?
|
||||
*/
|
||||
|
||||
#undef HAVE_LIBUSB
|
||||
#undef HAVE_USB_H
|
||||
|
||||
|
||||
/*
|
||||
@@ -697,44 +721,26 @@
|
||||
|
||||
|
||||
/*
|
||||
* Location of OS X localization bundle, if any.
|
||||
* Location of Mac OS X localization bundle, if any.
|
||||
*/
|
||||
|
||||
#undef CUPS_BUNDLEDIR
|
||||
|
||||
|
||||
/*
|
||||
* Do we have the ColorSyncRegisterDevice function?
|
||||
*/
|
||||
|
||||
#undef HAVE_COLORSYNCREGISTERDEVICE
|
||||
|
||||
|
||||
/*
|
||||
* Do we have XPC?
|
||||
*/
|
||||
|
||||
#undef HAVE_XPC
|
||||
#undef HAVE_XPC_PRIVATE_H
|
||||
|
||||
|
||||
/*
|
||||
* Do we have Mini-XML?
|
||||
*/
|
||||
|
||||
#undef HAVE_MXML_H
|
||||
|
||||
|
||||
/*
|
||||
* Do we have the C99 abs() function?
|
||||
*/
|
||||
|
||||
#undef HAVE_ABS
|
||||
#if !defined(HAVE_ABS) && !defined(abs)
|
||||
# if defined(__GNUC__) || __STDC_VERSION__ >= 199901L
|
||||
# define abs(x) _cups_abs(x)
|
||||
static inline int _cups_abs(int i) { return (i < 0 ? -i : i); }
|
||||
# elif defined(_MSC_VER)
|
||||
# define abs(x) _cups_abs(x)
|
||||
static __inline int _cups_abs(int i) { return (i < 0 ? -i : i); }
|
||||
# else
|
||||
# define abs(x) ((x) < 0 ? -(x) : (x))
|
||||
# endif /* __GNUC__ || __STDC_VERSION__ */
|
||||
#endif /* !HAVE_ABS && !abs */
|
||||
|
||||
#endif /* !_CUPS_CONFIG_H_ */
|
||||
|
||||
/*
|
||||
|
||||
+6
-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=""
|
||||
@@ -74,7 +79,6 @@ AC_OUTPUT(Makedefs
|
||||
man/cups-deviced.man
|
||||
man/cups-driverd.man
|
||||
man/cups-lpd.man
|
||||
man/cups-snmp.man
|
||||
man/cupsaddsmb.man
|
||||
man/cupsd.conf.man
|
||||
man/cupsd.man
|
||||
|
||||
+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
-260
@@ -1,260 +1,735 @@
|
||||
adminutil.o: adminutil.c cups-private.h string-private.h ../config.h \
|
||||
debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
|
||||
http.h array.h http-private.h md5-private.h language-private.h \
|
||||
../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
|
||||
ppd-private.h ../cups/ppd.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 string-private.h ../config.h \
|
||||
debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
|
||||
http.h array.h http-private.h md5-private.h language-private.h \
|
||||
../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
|
||||
ppd-private.h ../cups/ppd.h thread-private.h
|
||||
auth.o: auth.c cups-private.h string-private.h ../config.h \
|
||||
debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
|
||||
http.h array.h http-private.h md5-private.h language-private.h \
|
||||
../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
|
||||
ppd-private.h ../cups/ppd.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 string-private.h ../config.h \
|
||||
debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
|
||||
http.h array.h http-private.h md5-private.h language-private.h \
|
||||
../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
|
||||
ppd-private.h ../cups/ppd.h thread-private.h backend.h
|
||||
conflicts.o: conflicts.c cups-private.h string-private.h ../config.h \
|
||||
debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
|
||||
http.h array.h http-private.h md5-private.h language-private.h \
|
||||
../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
|
||||
ppd-private.h ../cups/ppd.h thread-private.h
|
||||
custom.o: custom.c cups-private.h string-private.h ../config.h \
|
||||
debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
|
||||
http.h array.h http-private.h md5-private.h language-private.h \
|
||||
../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
|
||||
ppd-private.h ../cups/ppd.h thread-private.h
|
||||
debug.o: debug.c cups-private.h string-private.h ../config.h \
|
||||
debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
|
||||
http.h array.h http-private.h md5-private.h language-private.h \
|
||||
../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
|
||||
ppd-private.h ../cups/ppd.h thread-private.h
|
||||
dest.o: dest.c cups-private.h string-private.h ../config.h \
|
||||
debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
|
||||
http.h array.h http-private.h md5-private.h language-private.h \
|
||||
../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
|
||||
ppd-private.h ../cups/ppd.h thread-private.h
|
||||
dest-job.o: dest-job.c cups-private.h string-private.h ../config.h \
|
||||
debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
|
||||
http.h array.h http-private.h md5-private.h language-private.h \
|
||||
../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
|
||||
ppd-private.h ../cups/ppd.h thread-private.h
|
||||
dest-localization.o: dest-localization.c cups-private.h string-private.h \
|
||||
../config.h debug-private.h ../cups/versioning.h ipp-private.h \
|
||||
../cups/ipp.h http.h array.h http-private.h md5-private.h \
|
||||
language-private.h ../cups/transcode.h language.h pwg-private.h \
|
||||
../cups/cups.h file.h ppd-private.h ../cups/ppd.h thread-private.h
|
||||
dest-options.o: dest-options.c cups-private.h string-private.h \
|
||||
../config.h debug-private.h ../cups/versioning.h ipp-private.h \
|
||||
../cups/ipp.h http.h array.h http-private.h md5-private.h \
|
||||
language-private.h ../cups/transcode.h language.h pwg-private.h \
|
||||
../cups/cups.h file.h ppd-private.h ../cups/ppd.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 string-private.h ../config.h \
|
||||
debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
|
||||
http.h array.h http-private.h md5-private.h language-private.h \
|
||||
../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
|
||||
ppd-private.h ../cups/ppd.h thread-private.h
|
||||
encode.o: encode.c cups-private.h string-private.h ../config.h \
|
||||
debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
|
||||
http.h array.h http-private.h md5-private.h language-private.h \
|
||||
../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
|
||||
ppd-private.h ../cups/ppd.h thread-private.h
|
||||
file.o: file.c file-private.h cups-private.h string-private.h ../config.h \
|
||||
debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
|
||||
http.h array.h http-private.h md5-private.h language-private.h \
|
||||
../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
|
||||
ppd-private.h ../cups/ppd.h thread-private.h
|
||||
getdevices.o: getdevices.c cups-private.h string-private.h ../config.h \
|
||||
debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
|
||||
http.h array.h http-private.h md5-private.h language-private.h \
|
||||
../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
|
||||
ppd-private.h ../cups/ppd.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 string-private.h ../config.h \
|
||||
debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
|
||||
http.h array.h http-private.h md5-private.h language-private.h \
|
||||
../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
|
||||
ppd-private.h ../cups/ppd.h thread-private.h
|
||||
globals.o: globals.c cups-private.h string-private.h ../config.h \
|
||||
debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
|
||||
http.h array.h http-private.h md5-private.h language-private.h \
|
||||
../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
|
||||
ppd-private.h ../cups/ppd.h thread-private.h
|
||||
http.o: http.c cups-private.h string-private.h ../config.h \
|
||||
debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
|
||||
http.h array.h http-private.h md5-private.h language-private.h \
|
||||
../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
|
||||
ppd-private.h ../cups/ppd.h thread-private.h
|
||||
http-addr.o: http-addr.c cups-private.h string-private.h ../config.h \
|
||||
debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
|
||||
http.h array.h http-private.h md5-private.h language-private.h \
|
||||
../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
|
||||
ppd-private.h ../cups/ppd.h thread-private.h
|
||||
http-addrlist.o: http-addrlist.c cups-private.h string-private.h \
|
||||
../config.h debug-private.h ../cups/versioning.h ipp-private.h \
|
||||
../cups/ipp.h http.h array.h http-private.h md5-private.h \
|
||||
language-private.h ../cups/transcode.h language.h pwg-private.h \
|
||||
../cups/cups.h file.h ppd-private.h ../cups/ppd.h thread-private.h
|
||||
http-support.o: http-support.c cups-private.h string-private.h \
|
||||
../config.h debug-private.h ../cups/versioning.h ipp-private.h \
|
||||
../cups/ipp.h http.h array.h http-private.h md5-private.h \
|
||||
language-private.h ../cups/transcode.h language.h pwg-private.h \
|
||||
../cups/cups.h file.h ppd-private.h ../cups/ppd.h thread-private.h
|
||||
ipp.o: ipp.c cups-private.h string-private.h ../config.h debug-private.h \
|
||||
../cups/versioning.h ipp-private.h ../cups/ipp.h http.h array.h \
|
||||
http-private.h md5-private.h language-private.h ../cups/transcode.h \
|
||||
language.h pwg-private.h ../cups/cups.h file.h ppd-private.h \
|
||||
../cups/ppd.h thread-private.h
|
||||
ipp-support.o: ipp-support.c cups-private.h string-private.h ../config.h \
|
||||
debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
|
||||
http.h array.h http-private.h md5-private.h language-private.h \
|
||||
../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
|
||||
ppd-private.h ../cups/ppd.h thread-private.h
|
||||
langprintf.o: langprintf.c cups-private.h string-private.h ../config.h \
|
||||
debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
|
||||
http.h array.h http-private.h md5-private.h language-private.h \
|
||||
../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
|
||||
ppd-private.h ../cups/ppd.h thread-private.h
|
||||
language.o: language.c cups-private.h string-private.h ../config.h \
|
||||
debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
|
||||
http.h array.h http-private.h md5-private.h language-private.h \
|
||||
../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
|
||||
ppd-private.h ../cups/ppd.h thread-private.h
|
||||
localize.o: localize.c cups-private.h string-private.h ../config.h \
|
||||
debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
|
||||
http.h array.h http-private.h md5-private.h language-private.h \
|
||||
../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
|
||||
ppd-private.h ../cups/ppd.h thread-private.h
|
||||
mark.o: mark.c cups-private.h string-private.h ../config.h \
|
||||
debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
|
||||
http.h array.h http-private.h md5-private.h language-private.h \
|
||||
../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
|
||||
ppd-private.h ../cups/ppd.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 string-private.h ../config.h \
|
||||
debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
|
||||
http.h array.h http-private.h md5-private.h language-private.h \
|
||||
../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
|
||||
ppd-private.h ../cups/ppd.h thread-private.h
|
||||
options.o: options.c cups-private.h string-private.h ../config.h \
|
||||
debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
|
||||
http.h array.h http-private.h md5-private.h language-private.h \
|
||||
../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
|
||||
ppd-private.h ../cups/ppd.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 string-private.h ../config.h debug-private.h \
|
||||
../cups/versioning.h ipp-private.h ../cups/ipp.h http.h array.h \
|
||||
http-private.h md5-private.h language-private.h ../cups/transcode.h \
|
||||
language.h pwg-private.h ../cups/cups.h file.h ppd-private.h \
|
||||
../cups/ppd.h thread-private.h
|
||||
ppd-cache.o: ppd-cache.c cups-private.h string-private.h ../config.h \
|
||||
debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
|
||||
http.h array.h http-private.h md5-private.h language-private.h \
|
||||
../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
|
||||
ppd-private.h ../cups/ppd.h thread-private.h
|
||||
pwg-media.o: pwg-media.c cups-private.h string-private.h ../config.h \
|
||||
debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
|
||||
http.h array.h http-private.h md5-private.h language-private.h \
|
||||
../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
|
||||
ppd-private.h ../cups/ppd.h thread-private.h
|
||||
request.o: request.c cups-private.h string-private.h ../config.h \
|
||||
debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
|
||||
http.h array.h http-private.h md5-private.h language-private.h \
|
||||
../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
|
||||
ppd-private.h ../cups/ppd.h thread-private.h
|
||||
sidechannel.o: sidechannel.c sidechannel.h versioning.h cups-private.h \
|
||||
string-private.h ../config.h debug-private.h ipp-private.h \
|
||||
../cups/ipp.h http.h array.h http-private.h md5-private.h \
|
||||
language-private.h ../cups/transcode.h language.h pwg-private.h \
|
||||
../cups/cups.h file.h ppd-private.h ../cups/ppd.h thread-private.h
|
||||
snmp.o: snmp.c cups-private.h string-private.h ../config.h \
|
||||
debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
|
||||
http.h array.h http-private.h md5-private.h language-private.h \
|
||||
../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
|
||||
ppd-private.h ../cups/ppd.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 string-private.h ../config.h \
|
||||
debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
|
||||
http.h array.h http-private.h md5-private.h language-private.h \
|
||||
../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
|
||||
ppd-private.h ../cups/ppd.h thread-private.h
|
||||
thread.o: thread.c cups-private.h string-private.h ../config.h \
|
||||
debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
|
||||
http.h array.h http-private.h md5-private.h language-private.h \
|
||||
../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
|
||||
ppd-private.h ../cups/ppd.h thread-private.h
|
||||
transcode.o: transcode.c cups-private.h string-private.h ../config.h \
|
||||
debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
|
||||
http.h array.h http-private.h md5-private.h language-private.h \
|
||||
../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
|
||||
ppd-private.h ../cups/ppd.h thread-private.h
|
||||
usersys.o: usersys.c cups-private.h string-private.h ../config.h \
|
||||
debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
|
||||
http.h array.h http-private.h md5-private.h language-private.h \
|
||||
../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
|
||||
ppd-private.h ../cups/ppd.h thread-private.h
|
||||
util.o: util.c cups-private.h string-private.h ../config.h \
|
||||
debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
|
||||
http.h array.h http-private.h md5-private.h language-private.h \
|
||||
../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
|
||||
ppd-private.h ../cups/ppd.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 string-private.h ../config.h \
|
||||
debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
|
||||
http.h array.h http-private.h md5-private.h language-private.h \
|
||||
../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
|
||||
ppd-private.h ../cups/ppd.h thread-private.h
|
||||
testlang.o: testlang.c cups-private.h string-private.h ../config.h \
|
||||
debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
|
||||
http.h array.h http-private.h md5-private.h language-private.h \
|
||||
../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
|
||||
ppd-private.h ../cups/ppd.h thread-private.h
|
||||
testppd.o: testppd.c cups-private.h string-private.h ../config.h \
|
||||
debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
|
||||
http.h array.h http-private.h md5-private.h language-private.h \
|
||||
../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
|
||||
ppd-private.h ../cups/ppd.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 ipp-private.h http-private.h md5-private.h \
|
||||
language-private.h ../cups/transcode.h thread-private.h
|
||||
testsnmp.o: testsnmp.c cups-private.h string-private.h ../config.h \
|
||||
debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
|
||||
http.h array.h http-private.h md5-private.h language-private.h \
|
||||
../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
|
||||
ppd-private.h ../cups/ppd.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
|
||||
|
||||
+72
-17
@@ -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
|
||||
#
|
||||
@@ -304,7 +359,7 @@ libcups.2.dylib: $(LIBOBJS) $(LIBCUPSORDER)
|
||||
echo Linking $@...
|
||||
$(DSO) $(ARCHFLAGS) $(DSOFLAGS) -o $@ \
|
||||
-install_name $(libdir)/$@ \
|
||||
-current_version 2.10.0 \
|
||||
-current_version 2.9.0 \
|
||||
-compatibility_version 2.0.0 \
|
||||
-exported_symbols_list t.exp \
|
||||
$(LIBOBJS) $(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) \
|
||||
@@ -333,7 +388,7 @@ libcups_s.a: $(LIBOBJS) libcups_s.exp
|
||||
libcups.la: $(LIBOBJS)
|
||||
echo Linking $@...
|
||||
$(CC) $(ARCHFLAGS) $(DSOFLAGS) -o $@ $(LIBOBJS:.o=.lo) \
|
||||
-rpath $(LIBDIR) -version-info 2:10 $(LIBGSSAPI) $(SSLLIBS) \
|
||||
-rpath $(LIBDIR) -version-info 2:9 $(LIBGSSAPI) $(SSLLIBS) \
|
||||
$(DNSSDLIBS) $(COMMONLIBS) $(LIBZ)
|
||||
|
||||
|
||||
@@ -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 \
|
||||
|
||||
+145
-28
@@ -3,7 +3,7 @@
|
||||
*
|
||||
* Administration utility API definitions for CUPS.
|
||||
*
|
||||
* Copyright 2007-2012 by Apple Inc.
|
||||
* Copyright 2007-2011 by Apple Inc.
|
||||
* Copyright 2001-2007 by Easy Software Products.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
@@ -65,7 +65,7 @@ static void write_option(cups_file_t *dstfp, int order,
|
||||
/*
|
||||
* 'cupsAdminCreateWindowsPPD()' - Create the Windows PPD file for a printer.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
char * /* O - PPD file or NULL */
|
||||
@@ -393,7 +393,7 @@ cupsAdminCreateWindowsPPD(
|
||||
/*
|
||||
* 'cupsAdminExportSamba()' - Export a printer to Samba.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
int /* O - 1 on success, 0 on failure */
|
||||
@@ -843,7 +843,7 @@ cupsAdminExportSamba(
|
||||
* The returned settings should be freed with cupsFreeOptions() when
|
||||
* you are done with them.
|
||||
*
|
||||
* @since CUPS 1.3/OS X 10.5@
|
||||
* @since CUPS 1.3/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
int /* O - 1 on success, 0 on failure */
|
||||
@@ -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));
|
||||
|
||||
@@ -1159,7 +1175,7 @@ cupsAdminGetServerSettings(
|
||||
/*
|
||||
* 'cupsAdminSetServerSettings()' - Set settings on the server.
|
||||
*
|
||||
* @since CUPS 1.3/OS X 10.5@
|
||||
* @since CUPS 1.3/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
int /* O - 1 on success, 0 on failure */
|
||||
@@ -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,9 +1,9 @@
|
||||
<!--
|
||||
"$Id: api-filter.shtml 10424 2012-04-23 17:26:57Z mike $"
|
||||
"$Id: api-filter.shtml 9799 2011-05-20 18:09:22Z mike $"
|
||||
|
||||
Filter and backend programming introduction 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
|
||||
@@ -81,7 +81,7 @@ directory to write to.</p>
|
||||
|
||||
<p>In addition, some operating systems provide additional security mechanisms
|
||||
that further limit file system access, even for backends running as root. On
|
||||
OS X, for example, no backend may write to a user's home directory.</p>
|
||||
Mac OS X, for example, no backend may write to a user's home directory.</p>
|
||||
</blockquote>
|
||||
|
||||
<h3><a name="SIGNALS">Canceled Jobs and Signal Handling</a></h3>
|
||||
@@ -153,7 +153,7 @@ when running print filters and backends:</p>
|
||||
|
||||
<dt>APPLE_LANGUAGE</dt>
|
||||
<dd>The Apple language identifier associated with the job
|
||||
(OS X only).</dd>
|
||||
(Mac OS X only).</dd>
|
||||
|
||||
<dt>CHARSET</dt>
|
||||
<dd>The job character set, typically "utf-8".</dd>
|
||||
@@ -474,7 +474,7 @@ sub-state and not an issue that applies when a job is not printing.</p>
|
||||
<blockquote><b>Note:</b>
|
||||
|
||||
<p>"STATE:" messages often provide visible alerts to the user. For example,
|
||||
on OS X setting a printer-state-reason value with an "-error" or
|
||||
on Mac OS X setting a printer-state-reason value with an "-error" or
|
||||
"-warning" suffix will cause the printer's dock item to bounce if the
|
||||
corresponding reason is localized with a cupsIPPReason keyword in the
|
||||
printer's PPD file.</p>
|
||||
|
||||
+52
-46
@@ -1,9 +1,9 @@
|
||||
<!--
|
||||
"$Id: api-httpipp.shtml 10388 2012-03-26 21:15:41Z mike $"
|
||||
"$Id: api-httpipp.shtml 9727 2011-04-28 21:20:12Z mike $"
|
||||
|
||||
HTTP and IPP API introduction 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
|
||||
@@ -29,20 +29,35 @@ The constant <code>CUPS_HTTP_DEFAULT</code> can be used with all of the
|
||||
<code>cups</code> functions to refer to the default CUPS server - the functions
|
||||
create a per-thread <a href='#http_t'><code>http_t</code></a> as needed.</p>
|
||||
|
||||
<p>The IPP APIs use two opaque structures for requests (messages sent to the CUPS scheduler) and responses (messages sent back to your application from the scheduler). The <a href='#ipp_t'><code>ipp_t</code></a> type holds a complete request or response and is allocated using the <a href='#ippNew'><code>ippNew</code></a> or <a href='#ippNewRequest'><code>ippNewRequest</code></a> functions and freed using the <a href='#ippDelete'><code>ippDelete</code></a> function.</p>
|
||||
<p>The IPP APIs use two structures for requests (messages sent to the CUPS
|
||||
scheduler) and responses (messages sent back to your application from the
|
||||
scheduler). The <a href='#ipp_t'><code>ipp_t</code></a> structure holds a
|
||||
complete request or response and is allocated using the
|
||||
<a href='#ippNew'><code>ippNew</code></a> or
|
||||
<a href='#ippNewRequest'><code>ippNewRequest</code></a> functions and
|
||||
freed using the <a href='#ippDelete'><code>ippDelete</code></a> function.</p>
|
||||
|
||||
<p>The second opaque structure is called <a href='#ipp_attribute_t'><code>ipp_attribute_t</code></a> and holds a single IPP attribute which consists of a group tag (<a href='#ippGetGroupTag'><code>ippGetGroupTag</code></a>), a value type tag (<a href='#ippGetValueTag'><code>ippGetValueTag</code></a>), the attribute name (<a href='#ippGetName'><code>ippGetName</code></a>), and 1 or more values (<a href='#ippGetCount'><code>ippGetCount</code></a>, <a href='#ippGetBoolean'><code>ippGetBoolean</code></a>, <a href='#ippGetCollection'><code>ippGetCollection</code></a>, <a href='#ippGetDate'><code>ippGetDate</code></a>, <a href='#ippGetInteger'><code>ippGetInteger</code></a>, <a href='#ippGetRange'><code>ippGetRange</code></a>, <a href='#ippGetResolution'><code>ippGetResolution</code></a>, and <a href='#ippGetString'><code>ippGetString</code></a>). Attributes are added to an <a href='#ipp_t'><code>ipp_t</code></a> pointer using one of the <code>ippAdd</code> functions. For example, use <a href='#ippAddString'><code>ippAddString</code></a> to add the "printer-uri" and "requesting-user-name" string attributes to a request:</p>
|
||||
<p>The second structure is called
|
||||
<a href='#ipp_attribute_t'><code>ipp_attribute_t</code></a> and holds a
|
||||
single IPP attribute which consists of a group tag (<code>group_tag</code>), a
|
||||
value type tag (<code>value_tag</code>), the attribute name (<code>name</code>),
|
||||
and 1 or more values (<code>values[]</code>). Attributes are added to an
|
||||
<a href='#ipp_t'><code>ipp_t</code></a> structure using one of the
|
||||
<code>ippAdd</code> functions. For example, use
|
||||
<a href='#ippAddString'><code>ippAddString</code></a> to add a
|
||||
"requesting-user-name" string attribute to a request:</p>
|
||||
|
||||
<pre class='example'>
|
||||
<a href='#ipp_t'>ipp_t</a> *request = <a href='#ippNewRequest'>ippNewRequest</a>(IPP_GET_JOBS);
|
||||
|
||||
<a href='#ippAddString'>ippAddString</a>(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
|
||||
NULL, "ipp://localhost/printers/");
|
||||
<a href='#ippAddString'>ippAddString</a>(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "requesting-user-name",
|
||||
NULL, cupsUser());
|
||||
</pre>
|
||||
|
||||
<p>Once you have created an IPP request, use the <code>cups</code> functions to send the request to and read the response from the server. For example, the <a href='#cupsDoRequest'><code>cupsDoRequest</code></a> function can be used for simple query operations that do not involve files:</p>
|
||||
<p>Once you have created an IPP request, use the <code>cups</code>
|
||||
functions to send the request to and read the response from the server.
|
||||
For example, the <a href='#cupsDoRequest'><code>cupsDoRequest</code></a>
|
||||
function can be used for simple query operations that do not involve files:</p>
|
||||
|
||||
<pre class='example'>
|
||||
#include <cups/cups.h>
|
||||
@@ -52,8 +67,6 @@ create a per-thread <a href='#http_t'><code>http_t</code></a> as needed.</p>
|
||||
{
|
||||
<a href='#ipp_t'>ipp_t</a> *request = <a href='#ippNewRequest'>ippNewRequest</a>(IPP_GET_JOBS);
|
||||
|
||||
<a href='#ippAddString'>ippAddString</a>(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
|
||||
NULL, "ipp://localhost/printers/");
|
||||
<a href='#ippAddString'>ippAddString</a>(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "requesting-user-name",
|
||||
NULL, cupsUser());
|
||||
|
||||
@@ -61,7 +74,13 @@ create a per-thread <a href='#http_t'><code>http_t</code></a> as needed.</p>
|
||||
}
|
||||
</pre>
|
||||
|
||||
<p>The <a href='#cupsDoRequest'><code>cupsDoRequest</code></a> function frees the request and returns an IPP response or <code>NULL</code> pointer if the request could not be sent to the server. Once you have a response from the server, you can either use the <a href='#ippFindAttribute'><code>ippFindAttribute</code></a> and <a href='#ippFindNextAttribute'><code>ippFindNextAttribute</code></a> functions to find specific attributes, for example:</p>
|
||||
<p>The <a href='#cupsDoRequest'><code>cupsDoRequest</code></a> function frees
|
||||
the request structure and returns an IPP response structure or NULL pointer if
|
||||
the request could not be sent to the server. Once you have a response from
|
||||
the server, you can either use the
|
||||
<a href='#ippFindAttribute'><code>ippFindAttribute</code></a> and
|
||||
<a href='#ippFindNextAttribute'><code>ippFindNextAttribute</code></a> functions
|
||||
to find specific attributes, for example:</p>
|
||||
|
||||
<pre class='example'>
|
||||
<a href='#ipp_t'>ipp_t</a> *response;
|
||||
@@ -70,20 +89,25 @@ create a per-thread <a href='#http_t'><code>http_t</code></a> as needed.</p>
|
||||
attr = <a href='#ippFindAttribute'>ippFindAttribute</a>(response, "printer-state", IPP_TAG_ENUM);
|
||||
</pre>
|
||||
|
||||
<p>You can also walk the list of attributes with a simple <code>for</code> loop like this:</p>
|
||||
<p>You can also walk the list of attributes with a simple <code>for</code> loop
|
||||
like this:</p>
|
||||
|
||||
<pre class='example'>
|
||||
<a href='#ipp_t'>ipp_t</a> *response;
|
||||
<a href='#ipp_attribute_t'>ipp_attribute_t</a> *attr;
|
||||
|
||||
for (attr = <a href='#ippFirstAttribute'>ippFirstAttribute</a>(response); attr != NULL; attr = <a href='#ippNextAttribute'>ippNextAttribute</a>(response))
|
||||
if (ippGetName(attr) == NULL)
|
||||
for (attr = response->attrs; attr != NULL; attr = attr->next)
|
||||
if (attr->name == NULL)
|
||||
puts("--SEPARATOR--");
|
||||
else
|
||||
puts(ippGetName(attr));
|
||||
puts(attr->name);
|
||||
</pre>
|
||||
|
||||
<p>The <code>for</code> loop approach is normally used when collecting attributes for multiple objects (jobs, printers, etc.) in a response. Attributes with <code>NULL</code> names indicate a separator between the attributes of each object. For example, the following code will list the jobs returned from our previous <a href='#get_jobs'><code>get_jobs</code></a> example code:</p>
|
||||
<p>The <code>for</code> loop approach is normally used when collecting
|
||||
attributes for multiple objects (jobs, printers, etc.) in a response. Attributes
|
||||
with <code>NULL</code> names indicate a separator between the attributes of
|
||||
each object. For example, the following code will list the jobs returned from
|
||||
our previous <a href='#get_jobs'><code>get_jobs</code></a> example code:</p>
|
||||
|
||||
<pre class='example'>
|
||||
<a href='#ipp_t'>ipp_t</a> *response = <a href='#get_jobs'>get_jobs</a>();
|
||||
@@ -91,55 +115,37 @@ for (attr = <a href='#ippFirstAttribute'>ippFirstAttribute</a>(response); attr !
|
||||
if (response != NULL)
|
||||
{
|
||||
<a href='#ipp_attribute_t'>ipp_attribute_t</a> *attr;
|
||||
const char *attrname;
|
||||
int job_id = 0;
|
||||
const char *job_name = NULL;
|
||||
const char *job_originating_user_name = NULL;
|
||||
char *job_name = NULL;
|
||||
char *job_originating_user_name = NULL;
|
||||
|
||||
puts("Job ID Owner Title");
|
||||
puts("------ ---------------- ---------------------------------");
|
||||
|
||||
for (attr = <a href='#ippFirstAttribute'>ippFirstAttribute</a>(response); attr != NULL; attr = <a href='#ippNextAttribute'>ippNextAttribute</a>(response))
|
||||
for (attr = response->attrs; attr != NULL; attr = attr->next)
|
||||
{
|
||||
/* Attributes without names are separators between jobs */
|
||||
attrname = ippGetName(attr);
|
||||
if (attrname == NULL)
|
||||
if (attr->name == NULL)
|
||||
{
|
||||
if (job_id > 0)
|
||||
{
|
||||
if (job_name == NULL)
|
||||
job_name = "(withheld)";
|
||||
|
||||
if (job_originating_user_name == NULL)
|
||||
job_originating_user_name = "(withheld)";
|
||||
|
||||
if (job_id > 0 && job_name != NULL && job_originating_user_name != NULL)
|
||||
printf("%5d %-16s %s\n", job_id, job_originating_user_name, job_name);
|
||||
}
|
||||
|
||||
job_id = 0;
|
||||
job_name = NULL;
|
||||
job_originating_user_name = NULL;
|
||||
continue;
|
||||
}
|
||||
else if (!strcmp(attrname, "job-id") && ippGetValueTag(attr) == IPP_TAG_INTEGER)
|
||||
job_id = ippGetInteger(attr, 0);
|
||||
else if (!strcmp(attrname, "job-name") && ippGetValueTag(attr) == IPP_TAG_NAME)
|
||||
job_name = ippGetString(attr, 0, NULL);
|
||||
else if (!strcmp(attrname, "job-originating-user-name") &&
|
||||
ippGetValueTag(attr) == IPP_TAG_NAME)
|
||||
job_originating_user_name = ippGetString(attr, 0, NULL);
|
||||
else 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)
|
||||
job_name = attr->values[0].string.text;
|
||||
else if (!strcmp(attr->name, "job-originating-user-name") &&
|
||||
attr->value_tag == IPP_TAG_NAME)
|
||||
job_originating_user_name = attr->values[0].string.text;
|
||||
}
|
||||
|
||||
if (job_id > 0)
|
||||
{
|
||||
if (job_name == NULL)
|
||||
job_name = "(withheld)";
|
||||
|
||||
if (job_originating_user_name == NULL)
|
||||
job_originating_user_name = "(withheld)";
|
||||
|
||||
if (job_id > 0 && job_name != NULL && job_originating_user_name != NULL)
|
||||
printf("%5d %-16s %s\n", job_id, job_originating_user_name, job_name);
|
||||
}
|
||||
}
|
||||
</pre>
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<!--
|
||||
"$Id: api-ppd.header 10424 2012-04-23 17:26:57Z mike $"
|
||||
"$Id: api-ppd.header 9771 2011-05-12 05:21:56Z mike $"
|
||||
|
||||
PPD API header for CUPS.
|
||||
|
||||
Copyright 2008-2012 by Apple Inc.
|
||||
Copyright 2008-2011 by Apple Inc.
|
||||
|
||||
These coded instructions, statements, and computer programs are the
|
||||
property of Apple Inc. and are protected by Federal copyright
|
||||
@@ -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/OS X 10.8. Please use the new Job Ticket APIs in the <a href="api-cups.html">CUPS API</a> documentation. These functions will be removed in a future release of CUPS.</blockquote>
|
||||
<h1 class='title'>PPD API</h1>
|
||||
|
||||
<div class='summary'><table summary='General Information'>
|
||||
<thead>
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<!--
|
||||
"$Id: api-ppd.shtml 10424 2012-04-23 17:26:57Z mike $"
|
||||
"$Id: api-ppd.shtml 9727 2011-04-28 21:20:12Z mike $"
|
||||
|
||||
PPD API introduction 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
|
||||
@@ -15,8 +15,6 @@
|
||||
|
||||
<h2 class='title'><a name='OVERVIEW'>Overview</a></h2>
|
||||
|
||||
<blockquote>The PPD API is deprecated starting in CUPS 1.6/OS X 10.8. Please use the new Job Ticket APIs in the <a href="api-cups.html">CUPS API</a> documentation. These functions will be removed in a future release of CUPS.</blockquote>
|
||||
|
||||
<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
|
||||
|
||||
+24
-24
@@ -3,7 +3,7 @@
|
||||
*
|
||||
* Sorted array routines for CUPS.
|
||||
*
|
||||
* Copyright 2007-2012 by Apple Inc.
|
||||
* Copyright 2007-2011 by Apple Inc.
|
||||
* Copyright 1997-2007 by Easy Software Products.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
@@ -110,7 +110,7 @@ static int cups_array_find(cups_array_t *a, void *e, int prev, int *rdiff);
|
||||
* appended at the end of the run of identical elements. For unsorted arrays,
|
||||
* the element is appended to the end of the array.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
int /* O - 1 on success, 0 on failure */
|
||||
@@ -202,7 +202,7 @@ _cupsArrayAddStrings(cups_array_t *a, /* I - Array */
|
||||
* The caller is responsible for freeing the memory used by the
|
||||
* elements themselves.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
void
|
||||
@@ -244,7 +244,7 @@ cupsArrayClear(cups_array_t *a) /* I - Array */
|
||||
/*
|
||||
* 'cupsArrayCount()' - Get the number of elements in the array.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
int /* O - Number of elements */
|
||||
@@ -271,7 +271,7 @@ cupsArrayCount(cups_array_t *a) /* I - Array */
|
||||
* The current element is undefined until you call @link cupsArrayFind@,
|
||||
* @link cupsArrayFirst@, or @link cupsArrayIndex@, or @link cupsArrayLast@.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
void * /* O - Element */
|
||||
@@ -301,7 +301,7 @@ cupsArrayCurrent(cups_array_t *a) /* I - Array */
|
||||
* The caller is responsible for freeing the memory used by the
|
||||
* elements themselves.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
void
|
||||
@@ -345,7 +345,7 @@ cupsArrayDelete(cups_array_t *a) /* I - Array */
|
||||
/*
|
||||
* 'cupsArrayDup()' - Duplicate the array.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
cups_array_t * /* O - Duplicate array */
|
||||
@@ -430,7 +430,7 @@ cupsArrayDup(cups_array_t *a) /* I - Array */
|
||||
/*
|
||||
* 'cupsArrayFind()' - Find an element in the array.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
void * /* O - Element found or @code NULL@ */
|
||||
@@ -525,7 +525,7 @@ cupsArrayFind(cups_array_t *a, /* I - Array */
|
||||
/*
|
||||
* 'cupsArrayFirst()' - Get the first element in the array.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
void * /* O - First element or @code NULL@ if the array is empty */
|
||||
@@ -554,7 +554,7 @@ cupsArrayFirst(cups_array_t *a) /* I - Array */
|
||||
* The current element is undefined until you call @link cupsArrayFind@,
|
||||
* @link cupsArrayFirst@, or @link cupsArrayIndex@, or @link cupsArrayLast@.
|
||||
*
|
||||
* @since CUPS 1.3/OS X 10.5@
|
||||
* @since CUPS 1.3/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
int /* O - Index of the current element, starting at 0 */
|
||||
@@ -570,7 +570,7 @@ cupsArrayGetIndex(cups_array_t *a) /* I - Array */
|
||||
/*
|
||||
* 'cupsArrayGetInsert()' - Get the index of the last inserted element.
|
||||
*
|
||||
* @since CUPS 1.3/OS X 10.5@
|
||||
* @since CUPS 1.3/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
int /* O - Index of the last inserted element, starting at 0 */
|
||||
@@ -586,7 +586,7 @@ cupsArrayGetInsert(cups_array_t *a) /* I - Array */
|
||||
/*
|
||||
* 'cupsArrayIndex()' - Get the N-th element in the array.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
void * /* O - N-th element or @code NULL@ */
|
||||
@@ -609,7 +609,7 @@ cupsArrayIndex(cups_array_t *a, /* I - Array */
|
||||
* inserted at the beginning of the run of identical elements. For unsorted
|
||||
* arrays, the element is inserted at the beginning of the array.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
int /* O - 0 on failure, 1 on success */
|
||||
@@ -639,7 +639,7 @@ cupsArrayInsert(cups_array_t *a, /* I - Array */
|
||||
/*
|
||||
* 'cupsArrayLast()' - Get the last element in the array.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
void * /* O - Last element or @code NULL@ if the array is empty */
|
||||
@@ -670,7 +670,7 @@ cupsArrayLast(cups_array_t *a) /* I - Array */
|
||||
* data pointer argument can safely be omitted when not required so functions
|
||||
* like @code strcmp@ can be used for sorted string arrays.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
cups_array_t * /* O - Array */
|
||||
@@ -692,7 +692,7 @@ cupsArrayNew(cups_array_func_t f, /* I - Comparison function or @code NULL@ for
|
||||
* The hash function ("h") is used to implement cached lookups with the
|
||||
* specified hash size ("hsize").
|
||||
*
|
||||
* @since CUPS 1.3/OS X 10.5@
|
||||
* @since CUPS 1.3/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
cups_array_t * /* O - Array */
|
||||
@@ -722,7 +722,7 @@ cupsArrayNew2(cups_array_func_t f, /* I - Comparison function or @code NULL@ fo
|
||||
* The free function ("cf") is used to automatically free/release elements when
|
||||
* removed or the array is deleted.
|
||||
*
|
||||
* @since CUPS 1.5/OS X 10.7@
|
||||
* @since CUPS 1.5/Mac OS X 10.7@
|
||||
*/
|
||||
|
||||
cups_array_t * /* O - Array */
|
||||
@@ -805,7 +805,7 @@ _cupsArrayNewStrings(const char *s) /* I - Comma-delimited strings or NULL */
|
||||
* @link cupsArrayFirst@, or @link cupsArrayIndex@, or @link cupsArrayLast@
|
||||
* to set the current element.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
void * /* O - Next element or @code NULL@ */
|
||||
@@ -838,7 +838,7 @@ cupsArrayNext(cups_array_t *a) /* I - Array */
|
||||
* @link cupsArrayFirst@, or @link cupsArrayIndex@, or @link cupsArrayLast@
|
||||
* to set the current element.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
void * /* O - Previous element or @code NULL@ */
|
||||
@@ -871,7 +871,7 @@ cupsArrayPrev(cups_array_t *a) /* I - Array */
|
||||
* The caller is responsible for freeing the memory used by the
|
||||
* removed element.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
int /* O - 1 on success, 0 on failure */
|
||||
@@ -936,7 +936,7 @@ cupsArrayRemove(cups_array_t *a, /* I - Array */
|
||||
/*
|
||||
* 'cupsArrayRestore()' - Reset the current element to the last @link cupsArraySave@.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
void * /* O - New current element */
|
||||
@@ -967,7 +967,7 @@ cupsArrayRestore(cups_array_t *a) /* I - Array */
|
||||
*
|
||||
* The save/restore stack is guaranteed to be at least 32 elements deep.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
int /* O - 1 on success, 0 on failure */
|
||||
@@ -989,7 +989,7 @@ cupsArraySave(cups_array_t *a) /* I - Array */
|
||||
/*
|
||||
* 'cupsArrayUserData()' - Return the user data for an array.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
void * /* O - User data */
|
||||
@@ -1005,7 +1005,7 @@ cupsArrayUserData(cups_array_t *a) /* I - Array */
|
||||
/*
|
||||
* 'cups_array_add()' - Insert or append an element to the array.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
static int /* O - 1 on success, 0 on failure */
|
||||
|
||||
+3
-3
@@ -3,7 +3,7 @@
|
||||
*
|
||||
* PPD model-specific attribute routines for CUPS.
|
||||
*
|
||||
* Copyright 2007-2012 by Apple Inc.
|
||||
* Copyright 2007-2011 by Apple Inc.
|
||||
* Copyright 1997-2006 by Easy Software Products.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
@@ -30,7 +30,7 @@
|
||||
/*
|
||||
* 'ppdFindAttr()' - Find the first matching attribute.
|
||||
*
|
||||
* @since CUPS 1.1.19/OS X 10.3@
|
||||
* @since CUPS 1.1.19/Mac OS X 10.3@
|
||||
*/
|
||||
|
||||
ppd_attr_t * /* O - Attribute or @code NULL@ if not found */
|
||||
@@ -87,7 +87,7 @@ ppdFindAttr(ppd_file_t *ppd, /* I - PPD file data */
|
||||
/*
|
||||
* 'ppdFindNextAttr()' - Find the next matching attribute.
|
||||
*
|
||||
* @since CUPS 1.1.19/OS X 10.3@
|
||||
* @since CUPS 1.1.19/Mac OS X 10.3@
|
||||
*/
|
||||
|
||||
ppd_attr_t * /* O - Attribute or @code NULL@ if not found */
|
||||
|
||||
+11
-13
@@ -3,7 +3,7 @@
|
||||
*
|
||||
* Authentication functions for CUPS.
|
||||
*
|
||||
* Copyright 2007-2012 by Apple Inc.
|
||||
* Copyright 2007-2011 by Apple Inc.
|
||||
* Copyright 1997-2007 by Easy Software Products.
|
||||
*
|
||||
* This file contains Kerberos support code, copyright 2006 by
|
||||
@@ -115,7 +115,7 @@ static int cups_local_auth(http_t *http);
|
||||
* This function should be called in response to a @code HTTP_UNAUTHORIZED@
|
||||
* status, prior to resubmitting your request.
|
||||
*
|
||||
* @since CUPS 1.1.20/OS X 10.4@
|
||||
* @since CUPS 1.1.20/Mac OS X 10.4@
|
||||
*/
|
||||
|
||||
int /* O - 0 on success, -1 on error */
|
||||
@@ -124,8 +124,7 @@ cupsDoAuthentication(
|
||||
const char *method, /* I - Request method ("GET", "POST", "PUT") */
|
||||
const char *resource) /* I - Resource path */
|
||||
{
|
||||
const char *password, /* Password string */
|
||||
*www_auth; /* WWW-Authenticate header */
|
||||
const char *password; /* Password string */
|
||||
char prompt[1024], /* Prompt for user */
|
||||
realm[HTTP_MAX_VALUE], /* realm="xyz" string */
|
||||
nonce[HTTP_MAX_VALUE]; /* nonce="xyz" string */
|
||||
@@ -180,11 +179,9 @@ cupsDoAuthentication(
|
||||
* Nope, see if we should retry the current username:password...
|
||||
*/
|
||||
|
||||
www_auth = http->fields[HTTP_FIELD_WWW_AUTHENTICATE];
|
||||
|
||||
if ((http->digest_tries > 1 || !http->userpass[0]) &&
|
||||
(!_cups_strncasecmp(www_auth, "Basic", 5) ||
|
||||
!_cups_strncasecmp(www_auth, "Digest", 6)))
|
||||
(!strncmp(http->fields[HTTP_FIELD_WWW_AUTHENTICATE], "Basic", 5) ||
|
||||
!strncmp(http->fields[HTTP_FIELD_WWW_AUTHENTICATE], "Digest", 6)))
|
||||
{
|
||||
/*
|
||||
* Nope - get a new password from the user...
|
||||
@@ -200,7 +197,8 @@ cupsDoAuthentication(
|
||||
cupsUser(),
|
||||
http->hostname[0] == '/' ? "localhost" : http->hostname);
|
||||
|
||||
http->digest_tries = _cups_strncasecmp(www_auth, "Digest", 6) != 0;
|
||||
http->digest_tries = _cups_strncasecmp(http->fields[HTTP_FIELD_WWW_AUTHENTICATE],
|
||||
"Digest", 5) != 0;
|
||||
http->userpass[0] = '\0';
|
||||
|
||||
if ((password = cupsGetPassword2(prompt, http, method, resource)) == NULL)
|
||||
@@ -229,7 +227,7 @@ cupsDoAuthentication(
|
||||
*/
|
||||
|
||||
#ifdef HAVE_GSSAPI
|
||||
if (!_cups_strncasecmp(www_auth, "Negotiate", 9))
|
||||
if (!strncmp(http->fields[HTTP_FIELD_WWW_AUTHENTICATE], "Negotiate", 9))
|
||||
{
|
||||
/*
|
||||
* Kerberos authentication...
|
||||
@@ -243,7 +241,7 @@ cupsDoAuthentication(
|
||||
}
|
||||
else
|
||||
#endif /* HAVE_GSSAPI */
|
||||
if (!_cups_strncasecmp(www_auth, "Basic", 5))
|
||||
if (!strncmp(http->fields[HTTP_FIELD_WWW_AUTHENTICATE], "Basic", 5))
|
||||
{
|
||||
/*
|
||||
* Basic authentication...
|
||||
@@ -256,7 +254,7 @@ cupsDoAuthentication(
|
||||
(int)strlen(http->userpass));
|
||||
httpSetAuthString(http, "Basic", encode);
|
||||
}
|
||||
else if (!_cups_strncasecmp(www_auth, "Digest", 6))
|
||||
else if (!strncmp(http->fields[HTTP_FIELD_WWW_AUTHENTICATE], "Digest", 6))
|
||||
{
|
||||
/*
|
||||
* Digest authentication...
|
||||
@@ -279,7 +277,7 @@ cupsDoAuthentication(
|
||||
else
|
||||
{
|
||||
DEBUG_printf(("1cupsDoAuthentication: Unknown auth type: \"%s\"",
|
||||
www_auth));
|
||||
http->fields[HTTP_FIELD_WWW_AUTHENTICATE]));
|
||||
http->status = HTTP_AUTHORIZATION_CANCELED;
|
||||
return (-1);
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
*
|
||||
* Backchannel functions for CUPS.
|
||||
*
|
||||
* Copyright 2007-2012 by Apple Inc.
|
||||
* Copyright 2007-2010 by Apple Inc.
|
||||
* Copyright 1997-2007 by Easy Software Products.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
@@ -18,7 +18,7 @@
|
||||
*
|
||||
* cupsBackChannelRead() - Read data from the backchannel.
|
||||
* cupsBackChannelWrite() - Write data to the backchannel.
|
||||
* cups_setup() - Setup select()
|
||||
* cups_setup() - Setup select()
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -50,7 +50,7 @@ static void cups_setup(fd_set *set, struct timeval *tval,
|
||||
* parameter controls how many seconds to wait for the data - use 0.0 to
|
||||
* return immediately if there is no data, -1.0 to wait for data indefinitely.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
ssize_t /* O - Bytes read or -1 on error */
|
||||
@@ -101,7 +101,7 @@ cupsBackChannelRead(char *buffer, /* I - Buffer to read into */
|
||||
* 0.0 to return immediately if the data cannot be written, -1.0 to wait
|
||||
* indefinitely.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
ssize_t /* O - Bytes written or -1 on error */
|
||||
@@ -178,7 +178,7 @@ cupsBackChannelWrite(
|
||||
|
||||
|
||||
/*
|
||||
* 'cups_setup()' - Setup select()
|
||||
* 'cups_setup()' - Setup select()
|
||||
*/
|
||||
|
||||
static void
|
||||
|
||||
+2
-13
@@ -44,7 +44,7 @@ static void quote_string(const char *s);
|
||||
* variable or the device URI passed in argv[0], whichever is found
|
||||
* first.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
const char * /* O - Device URI or @code NULL@ */
|
||||
@@ -54,8 +54,6 @@ cupsBackendDeviceURI(char **argv) /* I - Command-line arguments */
|
||||
*auth_info_required; /* AUTH_INFO_REQUIRED env var */
|
||||
_cups_globals_t *cg = _cupsGlobals(); /* Global info */
|
||||
int options; /* Resolve options */
|
||||
ppd_file_t *ppd; /* PPD file */
|
||||
ppd_attr_t *ppdattr; /* PPD attribute */
|
||||
|
||||
|
||||
if ((device_uri = getenv("DEVICE_URI")) == NULL)
|
||||
@@ -71,15 +69,6 @@ cupsBackendDeviceURI(char **argv) /* I - Command-line arguments */
|
||||
!strcmp(auth_info_required, "negotiate"))
|
||||
options |= _HTTP_RESOLVE_FQDN;
|
||||
|
||||
if ((ppd = ppdOpenFile(getenv("PPD"))) != NULL)
|
||||
{
|
||||
if ((ppdattr = ppdFindAttr(ppd, "cupsIPPFaxOut", NULL)) != NULL &&
|
||||
!_cups_strcasecmp(ppdattr->value, "true"))
|
||||
options |= _HTTP_RESOLVE_FAXOUT;
|
||||
|
||||
ppdClose(ppd);
|
||||
}
|
||||
|
||||
return (_httpResolveURI(device_uri, cg->resolved_uri,
|
||||
sizeof(cg->resolved_uri), options, NULL, NULL));
|
||||
}
|
||||
@@ -92,7 +81,7 @@ cupsBackendDeviceURI(char **argv) /* I - Command-line arguments */
|
||||
* It handles quoting of special characters in the device-make-and-model,
|
||||
* device-info, device-id, and device-location strings.
|
||||
*
|
||||
* @since CUPS 1.4/OS X 10.6@
|
||||
* @since CUPS 1.4/Mac OS X 10.6@
|
||||
*/
|
||||
|
||||
void
|
||||
|
||||
+4
-4
@@ -3,7 +3,7 @@
|
||||
*
|
||||
* Option marking 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
|
||||
@@ -79,7 +79,7 @@ static cups_array_t *ppd_test_constraints(ppd_file_t *ppd,
|
||||
* the conflicting options. The returned option array must be freed using
|
||||
* @link cupsFreeOptions@.
|
||||
*
|
||||
* @since CUPS 1.4/OS X 10.6@
|
||||
* @since CUPS 1.4/Mac OS X 10.6@
|
||||
*/
|
||||
|
||||
int /* O - Number of conflicting options */
|
||||
@@ -178,7 +178,7 @@ cupsGetConflicts(
|
||||
* choice for the conflicting option, then iterating over all possible choices
|
||||
* until a non-conflicting option choice is found.
|
||||
*
|
||||
* @since CUPS 1.4/OS X 10.6@
|
||||
* @since CUPS 1.4/Mac OS X 10.6@
|
||||
*/
|
||||
|
||||
int /* O - 1 on success, 0 on failure */
|
||||
@@ -650,7 +650,7 @@ ppdConflicts(ppd_file_t *ppd) /* I - PPD to check */
|
||||
* This function tests whether a particular option choice is available based
|
||||
* on constraints against options in the "InstallableOptions" group.
|
||||
*
|
||||
* @since CUPS 1.4/OS X 10.6@
|
||||
* @since CUPS 1.4/Mac OS X 10.6@
|
||||
*/
|
||||
|
||||
int /* O - 1 if conflicting, 0 if not conflicting */
|
||||
|
||||
+7
-65
@@ -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
|
||||
@@ -22,15 +22,15 @@
|
||||
* Include necessary headers...
|
||||
*/
|
||||
|
||||
# include <cups/cups.h>
|
||||
# include "string-private.h"
|
||||
# include "debug-private.h"
|
||||
# include "ipp-private.h"
|
||||
# include "ppd-private.h"
|
||||
# include "http-private.h"
|
||||
# include "ipp-private.h"
|
||||
# include "language-private.h"
|
||||
# include "pwg-private.h"
|
||||
# include "ppd-private.h"
|
||||
# include "thread-private.h"
|
||||
# include <cups/cups.h>
|
||||
# ifdef __APPLE__
|
||||
# include <sys/cdefs.h>
|
||||
# include <CoreFoundation/CoreFoundation.h>
|
||||
@@ -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,49 +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;
|
||||
|
||||
typedef struct _cups_dconstres_s /* Constraint/resolver */
|
||||
{
|
||||
char *name; /* Name of resolver */
|
||||
ipp_t *collection; /* Collection containing attrs */
|
||||
} _cups_dconstres_t;
|
||||
|
||||
struct _cups_dinfo_s /* Destination capability and status
|
||||
* information */
|
||||
{
|
||||
const char *uri; /* Printer URI */
|
||||
char *resource; /* Resource path */
|
||||
ipp_t *attrs; /* Printer attributes */
|
||||
int num_defaults; /* Number of default options */
|
||||
cups_option_t *defaults; /* Default options */
|
||||
cups_array_t *constraints; /* Job constraints */
|
||||
cups_array_t *resolvers; /* Job resolvers */
|
||||
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...
|
||||
@@ -226,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);
|
||||
|
||||
+78
-334
@@ -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.0601
|
||||
# define CUPS_VERSION_MAJOR 1
|
||||
# define CUPS_VERSION_MINOR 6
|
||||
# define CUPS_VERSION_PATCH 1
|
||||
# define CUPS_VERSION 1.0502
|
||||
# define CUPS_VERSION_MAJOR 1
|
||||
# define CUPS_VERSION_MINOR 5
|
||||
# define CUPS_VERSION_PATCH 2
|
||||
|
||||
# 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/OS X 10.5@ */
|
||||
CUPS_PRINTER_NOT_SHARED = 0x200000, /* Printer is not shared
|
||||
* @since CUPS 1.2/OS X 10.5@ */
|
||||
CUPS_PRINTER_AUTHENTICATED = 0x400000,/* Printer requires authentication
|
||||
* @since CUPS 1.2/OS X 10.5@ */
|
||||
CUPS_PRINTER_COMMANDS = 0x800000, /* Printer supports maintenance commands
|
||||
* @since CUPS 1.2/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/OS X 10.6@ */
|
||||
CUPS_PRINTER_MFP = 0x4000000, /* Printer with scanning capabilities
|
||||
* @since CUPS 1.4/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/OS X 10.8@ */
|
||||
|
||||
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/OS X 10.8@ ****/
|
||||
{
|
||||
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/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/OS X 10.8@ */
|
||||
|
||||
# ifdef __BLOCKS__
|
||||
typedef int (^cups_dest_block_t)(unsigned flags, cups_dest_t *dest);
|
||||
/* Destination enumeration block
|
||||
* @since CUPS 1.6/OS X 10.8@ */
|
||||
# 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/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/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/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,12 +257,11 @@ 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;
|
||||
|
||||
/**** New in CUPS 1.2/OS X 10.5 ****/
|
||||
/**** New in CUPS 1.2/Mac OS X 10.5 ****/
|
||||
extern ssize_t cupsBackChannelRead(char *buffer, size_t bytes,
|
||||
double timeout) _CUPS_API_1_2;
|
||||
extern ssize_t cupsBackChannelWrite(const char *buffer, size_t bytes,
|
||||
@@ -438,30 +270,26 @@ 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;
|
||||
|
||||
/**** New in CUPS 1.3/OS X 10.5 ****/
|
||||
/**** New in CUPS 1.3/Mac OS X 10.5 ****/
|
||||
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,
|
||||
cups_dest_t *dests) _CUPS_API_1_3;
|
||||
|
||||
/**** New in CUPS 1.4/OS X 10.6 ****/
|
||||
/**** New in CUPS 1.4/Mac OS X 10.6 ****/
|
||||
extern ipp_status_t cupsCancelJob2(http_t *http, const char *name,
|
||||
int job_id, int purge) _CUPS_API_1_4;
|
||||
extern int cupsCreateJob(http_t *http, const char *name,
|
||||
@@ -498,97 +326,13 @@ extern http_status_t cupsStartDocument(http_t *http, const char *name,
|
||||
extern http_status_t cupsWriteRequestData(http_t *http, const char *buffer,
|
||||
size_t length) _CUPS_API_1_4;
|
||||
|
||||
/**** New in CUPS 1.5/OS X 10.7 ****/
|
||||
/**** New in CUPS 1.5 ****/
|
||||
extern void cupsSetClientCertCB(cups_client_cert_cb_t cb,
|
||||
void *user_data) _CUPS_API_1_5;
|
||||
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/OS X 10.8 ****/
|
||||
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,
|
||||
cups_dinfo_t *info, 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_dinfo_t *info)
|
||||
_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
-5
@@ -3,7 +3,7 @@
|
||||
*
|
||||
* PPD custom option routines 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
|
||||
@@ -41,7 +41,7 @@
|
||||
/*
|
||||
* 'ppdFindCustomOption()' - Find a custom option.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
ppd_coption_t * /* O - Custom option or NULL */
|
||||
@@ -62,7 +62,7 @@ ppdFindCustomOption(ppd_file_t *ppd, /* I - PPD file */
|
||||
/*
|
||||
* 'ppdFindCustomParam()' - Find a parameter for a custom option.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
ppd_cparam_t * /* O - Custom parameter or NULL */
|
||||
@@ -88,7 +88,7 @@ ppdFindCustomParam(ppd_coption_t *opt, /* I - Custom option */
|
||||
/*
|
||||
* 'ppdFirstCustomParam()' - Return the first parameter for a custom option.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
ppd_cparam_t * /* O - Custom parameter or NULL */
|
||||
@@ -104,7 +104,7 @@ ppdFirstCustomParam(ppd_coption_t *opt) /* I - Custom option */
|
||||
/*
|
||||
* 'ppdNextCustomParam()' - Return the next parameter for a custom option.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
ppd_cparam_t * /* O - Custom parameter or NULL */
|
||||
|
||||
+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
-94
@@ -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>
|
||||
#endif /* WIN32 */
|
||||
#include <regex.h>
|
||||
#include <fcntl.h>
|
||||
#include <regex.h>
|
||||
|
||||
|
||||
/*
|
||||
@@ -336,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 ++;
|
||||
@@ -476,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';
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -505,74 +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;
|
||||
|
||||
if (debug_filter)
|
||||
{
|
||||
int result; /* Filter result */
|
||||
|
||||
_cupsMutexLock(&debug_mutex);
|
||||
result = regexec(debug_filter, s, 0, NULL, 0);
|
||||
_cupsMutexUnlock(&debug_mutex);
|
||||
|
||||
if (result)
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* 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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,358 +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/OS X 10.8@
|
||||
*/
|
||||
|
||||
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 @code IPP_OK@
|
||||
* on success.
|
||||
*
|
||||
* @since CUPS 1.6/OS X 10.8@
|
||||
*/
|
||||
|
||||
ipp_status_t /* O - IPP status code */
|
||||
cupsCloseDestJob(
|
||||
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 */
|
||||
{
|
||||
int i; /* Looping var */
|
||||
ipp_t *request = NULL;/* Close-Job/Send-Document request */
|
||||
ipp_attribute_t *attr; /* operations-supported attribute */
|
||||
|
||||
|
||||
DEBUG_printf(("cupsCloseDestJob(http=%p, dest=%p(%s/%s), info=%p, job_id=%d)",
|
||||
http, dest, dest ? dest->name : NULL,
|
||||
dest ? dest->instance : NULL, info, job_id));
|
||||
|
||||
/*
|
||||
* Range check input...
|
||||
*/
|
||||
|
||||
if (!http || !dest || !info || job_id <= 0)
|
||||
{
|
||||
_cupsSetError(IPP_INTERNAL_ERROR, strerror(EINVAL), 0);
|
||||
DEBUG_puts("1cupsCloseDestJob: Bad arguments.");
|
||||
return (IPP_INTERNAL_ERROR);
|
||||
}
|
||||
|
||||
/*
|
||||
* Build a Close-Job or empty Send-Document request...
|
||||
*/
|
||||
|
||||
if ((attr = ippFindAttribute(info->attrs, "operations-supported",
|
||||
IPP_TAG_ENUM)) != NULL)
|
||||
{
|
||||
for (i = 0; i < attr->num_values; i ++)
|
||||
if (attr->values[i].integer == IPP_CLOSE_JOB)
|
||||
{
|
||||
request = ippNewRequest(IPP_CLOSE_JOB);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!request)
|
||||
request = ippNewRequest(IPP_SEND_DOCUMENT);
|
||||
|
||||
if (!request)
|
||||
{
|
||||
_cupsSetError(IPP_INTERNAL_ERROR, strerror(ENOMEM), 0);
|
||||
DEBUG_puts("1cupsCloseDestJob: Unable to create Close-Job/Send-Document "
|
||||
"request.");
|
||||
return (IPP_INTERNAL_ERROR);
|
||||
}
|
||||
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
|
||||
NULL, info->uri);
|
||||
ippAddInteger(request, IPP_TAG_OPERATION, IPP_TAG_INTEGER, "job-id",
|
||||
job_id);
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "requesting-user-name",
|
||||
NULL, cupsUser());
|
||||
if (ippGetOperation(request) == IPP_SEND_DOCUMENT)
|
||||
ippAddBoolean(request, IPP_TAG_OPERATION, "last-document", 1);
|
||||
|
||||
/*
|
||||
* Send the request and return the status...
|
||||
*/
|
||||
|
||||
ippDelete(cupsDoRequest(http, request, info->resource));
|
||||
|
||||
DEBUG_printf(("1cupsCloseDestJob: %s (%s)", ippErrorString(cupsLastError()),
|
||||
cupsLastErrorString()));
|
||||
|
||||
return (cupsLastError());
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'cupsCreateDestJob()' - Create a job on a destination.
|
||||
*
|
||||
* Returns @code IPP_OK@ or @code IPP_OK_SUBST@ on success, saving the job ID
|
||||
* in the variable pointed to by "job_id".
|
||||
*
|
||||
* @since CUPS 1.6/OS X 10.8@
|
||||
*/
|
||||
|
||||
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 */
|
||||
{
|
||||
ipp_t *request, /* Create-Job request */
|
||||
*response; /* Create-Job response */
|
||||
ipp_attribute_t *attr; /* job-id attribute */
|
||||
|
||||
|
||||
DEBUG_printf(("cupsCreateDestJob(http=%p, dest=%p(%s/%s), info=%p, "
|
||||
"job_id=%p, title=\"%s\", num_options=%d, options=%p)",
|
||||
http, dest, dest ? dest->name : NULL,
|
||||
dest ? dest->instance : NULL, info, job_id, title, num_options,
|
||||
options));
|
||||
|
||||
/*
|
||||
* Range check input...
|
||||
*/
|
||||
|
||||
if (job_id)
|
||||
*job_id = 0;
|
||||
|
||||
if (!http || !dest || !info || !job_id)
|
||||
{
|
||||
_cupsSetError(IPP_INTERNAL_ERROR, strerror(EINVAL), 0);
|
||||
DEBUG_puts("1cupsCreateDestJob: Bad arguments.");
|
||||
return (IPP_INTERNAL_ERROR);
|
||||
}
|
||||
|
||||
/*
|
||||
* Build a Create-Job request...
|
||||
*/
|
||||
|
||||
if ((request = ippNewRequest(IPP_CREATE_JOB)) == NULL)
|
||||
{
|
||||
_cupsSetError(IPP_INTERNAL_ERROR, strerror(ENOMEM), 0);
|
||||
DEBUG_puts("1cupsCreateDestJob: Unable to create Create-Job request.");
|
||||
return (IPP_INTERNAL_ERROR);
|
||||
}
|
||||
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
|
||||
NULL, info->uri);
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "requesting-user-name",
|
||||
NULL, cupsUser());
|
||||
if (title)
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "job-name", NULL,
|
||||
title);
|
||||
|
||||
cupsEncodeOptions2(request, num_options, options, IPP_TAG_JOB);
|
||||
cupsEncodeOptions2(request, num_options, options, IPP_TAG_SUBSCRIPTION);
|
||||
|
||||
/*
|
||||
* Send the request and get the job-id...
|
||||
*/
|
||||
|
||||
response = cupsDoRequest(http, request, info->resource);
|
||||
|
||||
if ((attr = ippFindAttribute(response, "job-id", IPP_TAG_INTEGER)) != NULL)
|
||||
{
|
||||
*job_id = attr->values[0].integer;
|
||||
DEBUG_printf(("1cupsCreateDestJob: job-id=%d", *job_id));
|
||||
}
|
||||
|
||||
ippDelete(response);
|
||||
|
||||
/*
|
||||
* Return the status code from the Create-Job request...
|
||||
*/
|
||||
|
||||
DEBUG_printf(("1cupsCreateDestJob: %s (%s)", ippErrorString(cupsLastError()),
|
||||
cupsLastErrorString()));
|
||||
|
||||
return (cupsLastError());
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'cupsFinishDestDocument()' - Finish the current document.
|
||||
*
|
||||
* Returns @code IPP_OK@ or @code IPP_OK_SUBST@ on success.
|
||||
*
|
||||
* @since CUPS 1.6/OS X 10.8@
|
||||
*/
|
||||
|
||||
ipp_status_t /* O - Status of document submission */
|
||||
cupsFinishDestDocument(
|
||||
http_t *http, /* I - Connection to destination */
|
||||
cups_dest_t *dest, /* I - Destination */
|
||||
cups_dinfo_t *info) /* I - Destination information */
|
||||
{
|
||||
DEBUG_printf(("cupsFinishDestDocument(http=%p, dest=%p(%s/%s), info=%p)",
|
||||
http, dest, dest ? dest->name : NULL,
|
||||
dest ? dest->instance : NULL, info));
|
||||
|
||||
/*
|
||||
* Range check input...
|
||||
*/
|
||||
|
||||
if (!http || !dest || !info)
|
||||
{
|
||||
_cupsSetError(IPP_INTERNAL_ERROR, strerror(EINVAL), 0);
|
||||
DEBUG_puts("1cupsFinishDestDocument: Bad arguments.");
|
||||
return (IPP_INTERNAL_ERROR);
|
||||
}
|
||||
|
||||
/*
|
||||
* Get the response at the end of the document and return it...
|
||||
*/
|
||||
|
||||
ippDelete(cupsGetResponse(http, info->resource));
|
||||
|
||||
DEBUG_printf(("1cupsFinishDestDocument: %s (%s)",
|
||||
ippErrorString(cupsLastError()), cupsLastErrorString()));
|
||||
|
||||
return (cupsLastError());
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* '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
|
||||
* @code HTTP_CONTINUE@ on success.
|
||||
*
|
||||
* @since CUPS 1.6/OS X 10.8@
|
||||
*/
|
||||
|
||||
http_status_t /* O - Status of document creation */
|
||||
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 */
|
||||
{
|
||||
ipp_t *request; /* Send-Document request */
|
||||
http_status_t status; /* HTTP status */
|
||||
|
||||
|
||||
DEBUG_printf(("cupsStartDestDocument(http=%p, dest=%p(%s/%s), info=%p, "
|
||||
"job_id=%d, docname=\"%s\", format=\"%s\", num_options=%d, "
|
||||
"options=%p, last_document=%d)",
|
||||
http, dest, dest ? dest->name : NULL,
|
||||
dest ? dest->instance : NULL, info, job_id, docname, format,
|
||||
num_options, options, last_document));
|
||||
|
||||
/*
|
||||
* Range check input...
|
||||
*/
|
||||
|
||||
if (!http || !dest || !info || job_id <= 0)
|
||||
{
|
||||
_cupsSetError(IPP_INTERNAL_ERROR, strerror(EINVAL), 0);
|
||||
DEBUG_puts("1cupsStartDestDocument: Bad arguments.");
|
||||
return (HTTP_ERROR);
|
||||
}
|
||||
|
||||
/*
|
||||
* Create a Send-Document request...
|
||||
*/
|
||||
|
||||
if ((request = ippNewRequest(IPP_SEND_DOCUMENT)) == NULL)
|
||||
{
|
||||
_cupsSetError(IPP_INTERNAL_ERROR, strerror(ENOMEM), 0);
|
||||
DEBUG_puts("1cupsStartDestDocument: Unable to create Send-Document "
|
||||
"request.");
|
||||
return (HTTP_ERROR);
|
||||
}
|
||||
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
|
||||
NULL, info->uri);
|
||||
ippAddInteger(request, IPP_TAG_OPERATION, IPP_TAG_INTEGER, "job-id", job_id);
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "requesting-user-name",
|
||||
NULL, cupsUser());
|
||||
if (docname)
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "document-name",
|
||||
NULL, docname);
|
||||
if (format)
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_MIMETYPE,
|
||||
"document-format", NULL, format);
|
||||
ippAddBoolean(request, IPP_TAG_OPERATION, "last-document", last_document);
|
||||
|
||||
cupsEncodeOptions2(request, num_options, options, IPP_TAG_DOCUMENT);
|
||||
|
||||
/*
|
||||
* Send and delete the request, then return the status...
|
||||
*/
|
||||
|
||||
status = cupsSendRequest(http, request, info->resource, CUPS_LENGTH_VARIABLE);
|
||||
|
||||
ippDelete(request);
|
||||
|
||||
return (status);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
*/
|
||||
@@ -1,386 +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.
|
||||
* cups_create_localizations() - Create the localizations array for a
|
||||
* destination.
|
||||
* cups_read_strings() - Read a pair of strings from a .strings file.
|
||||
* cups_scan_strings() - Scan a quoted string.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include necessary headers...
|
||||
*/
|
||||
|
||||
#include "cups-private.h"
|
||||
|
||||
|
||||
/*
|
||||
* Local functions...
|
||||
*/
|
||||
|
||||
static void cups_create_localizations(http_t *http, cups_dinfo_t *dinfo);
|
||||
static int cups_read_strings(cups_file_t *fp, char *buffer, size_t bufsize,
|
||||
char **id, char **str);
|
||||
static char *cups_scan_strings(char *buffer);
|
||||
|
||||
|
||||
/*
|
||||
* 'cupsLocalizeDestOption()' - Get the localized string for a destination
|
||||
* option.
|
||||
*
|
||||
* The returned string is stored in the destination information and will become
|
||||
* invalid if the destination information is deleted.
|
||||
*
|
||||
* @since CUPS 1.6/OS X 10.8@
|
||||
*/
|
||||
|
||||
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 */
|
||||
{
|
||||
_cups_message_t key, /* Search key */
|
||||
*match; /* Matching entry */
|
||||
|
||||
|
||||
if (!http || !dest || !dinfo)
|
||||
return (option);
|
||||
|
||||
if (!dinfo->localizations)
|
||||
cups_create_localizations(http, dinfo);
|
||||
|
||||
if (cupsArrayCount(dinfo->localizations) == 0)
|
||||
return (option);
|
||||
|
||||
key.id = (char *)option;
|
||||
if ((match = (_cups_message_t *)cupsArrayFind(dinfo->localizations,
|
||||
&key)) != NULL)
|
||||
return (match->str);
|
||||
else
|
||||
return (option);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'cupsLocalizeDestValue()' - Get the localized string for a destination
|
||||
* option+value pair.
|
||||
*
|
||||
* The returned string is stored in the destination information and will become
|
||||
* invalid if the destination information is deleted.
|
||||
*
|
||||
* @since CUPS 1.6/OS X 10.8@
|
||||
*/
|
||||
|
||||
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 */
|
||||
{
|
||||
_cups_message_t key, /* Search key */
|
||||
*match; /* Matching entry */
|
||||
char pair[256]; /* option.value pair */
|
||||
|
||||
|
||||
if (!http || !dest || !dinfo)
|
||||
return (value);
|
||||
|
||||
if (!dinfo->localizations)
|
||||
cups_create_localizations(http, dinfo);
|
||||
|
||||
if (cupsArrayCount(dinfo->localizations) == 0)
|
||||
return (value);
|
||||
|
||||
snprintf(pair, sizeof(pair), "%s.%s", option, value);
|
||||
key.id = pair;
|
||||
if ((match = (_cups_message_t *)cupsArrayFind(dinfo->localizations,
|
||||
&key)) != NULL)
|
||||
return (match->str);
|
||||
else
|
||||
return (value);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'cups_create_localizations()' - Create the localizations array for a
|
||||
* destination.
|
||||
*/
|
||||
|
||||
static void
|
||||
cups_create_localizations(
|
||||
http_t *http, /* I - Connection to destination */
|
||||
cups_dinfo_t *dinfo) /* I - Destination informations */
|
||||
{
|
||||
http_t *http2; /* Connection for strings file */
|
||||
http_status_t status; /* Request status */
|
||||
ipp_attribute_t *attr; /* "printer-strings-uri" attribute */
|
||||
char scheme[32], /* URI scheme */
|
||||
userpass[256], /* Username/password info */
|
||||
hostname[256], /* Hostname */
|
||||
resource[1024], /* Resource */
|
||||
http_hostname[256],
|
||||
/* Hostname of connection */
|
||||
tempfile[1024]; /* Temporary filename */
|
||||
int port; /* Port number */
|
||||
http_encryption_t encryption; /* Encryption to use */
|
||||
cups_file_t *temp; /* Temporary file */
|
||||
|
||||
|
||||
/*
|
||||
* Create an empty message catalog...
|
||||
*/
|
||||
|
||||
dinfo->localizations = _cupsMessageNew(NULL);
|
||||
|
||||
/*
|
||||
* See if there are any localizations...
|
||||
*/
|
||||
|
||||
if ((attr = ippFindAttribute(dinfo->attrs, "printer-strings-uri",
|
||||
IPP_TAG_URI)) == NULL)
|
||||
{
|
||||
/*
|
||||
* Nope...
|
||||
*/
|
||||
|
||||
DEBUG_puts("4cups_create_localizations: No printer-strings-uri (uri) "
|
||||
"value.");
|
||||
return; /* Nope */
|
||||
}
|
||||
|
||||
/*
|
||||
* Pull apart the URI and determine whether we need to try a different
|
||||
* server...
|
||||
*/
|
||||
|
||||
if (httpSeparateURI(HTTP_URI_CODING_ALL, attr->values[0].string.text,
|
||||
scheme, sizeof(scheme), userpass, sizeof(userpass),
|
||||
hostname, sizeof(hostname), &port, resource,
|
||||
sizeof(resource)) < HTTP_URI_OK)
|
||||
{
|
||||
DEBUG_printf(("4cups_create_localizations: Bad printer-strings-uri value "
|
||||
"\"%s\".", attr->values[0].string.text));
|
||||
return;
|
||||
}
|
||||
|
||||
httpGetHostname(http, http_hostname, sizeof(http_hostname));
|
||||
|
||||
if (!_cups_strcasecmp(http_hostname, hostname) &&
|
||||
port == _httpAddrPort(http->hostaddr))
|
||||
{
|
||||
/*
|
||||
* Use the same connection...
|
||||
*/
|
||||
|
||||
http2 = http;
|
||||
}
|
||||
else
|
||||
{
|
||||
/*
|
||||
* Connect to the alternate host...
|
||||
*/
|
||||
|
||||
if (!strcmp(scheme, "https"))
|
||||
encryption = HTTP_ENCRYPT_ALWAYS;
|
||||
else
|
||||
encryption = HTTP_ENCRYPT_IF_REQUESTED;
|
||||
|
||||
if ((http2 = httpConnectEncrypt(hostname, port, encryption)) == NULL)
|
||||
{
|
||||
DEBUG_printf(("4cups_create_localizations: Unable to connect to "
|
||||
"%s:%d: %s", hostname, port, cupsLastErrorString()));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Get a temporary file...
|
||||
*/
|
||||
|
||||
if ((temp = cupsTempFile2(tempfile, sizeof(tempfile))) == NULL)
|
||||
{
|
||||
DEBUG_printf(("4cups_create_localizations: Unable to create temporary "
|
||||
"file: %s", cupsLastErrorString()));
|
||||
if (http2 != http)
|
||||
httpClose(http2);
|
||||
return;
|
||||
}
|
||||
|
||||
status = cupsGetFd(http2, resource, cupsFileNumber(temp));
|
||||
|
||||
DEBUG_printf(("4cups_create_localizations: GET %s = %s", resource,
|
||||
httpStatus(status)));
|
||||
|
||||
if (status == HTTP_OK)
|
||||
{
|
||||
/*
|
||||
* Got the file, read it...
|
||||
*/
|
||||
|
||||
char buffer[8192], /* Message buffer */
|
||||
*id, /* ID string */
|
||||
*str; /* Translated message */
|
||||
_cups_message_t *m; /* Current message */
|
||||
|
||||
lseek(cupsFileNumber(temp), 0, SEEK_SET);
|
||||
|
||||
while (cups_read_strings(temp, buffer, sizeof(buffer), &id, &str))
|
||||
{
|
||||
if ((m = malloc(sizeof(_cups_message_t))) == NULL)
|
||||
break;
|
||||
|
||||
m->id = strdup(id);
|
||||
m->str = strdup(str);
|
||||
|
||||
if (m->id && m->str)
|
||||
cupsArrayAdd(dinfo->localizations, m);
|
||||
else
|
||||
{
|
||||
if (m->id)
|
||||
free(m->id);
|
||||
|
||||
if (m->str)
|
||||
free(m->str);
|
||||
|
||||
free(m);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
DEBUG_printf(("4cups_create_localizations: %d messages loaded.",
|
||||
cupsArrayCount(dinfo->localizations)));
|
||||
|
||||
/*
|
||||
* Cleanup...
|
||||
*/
|
||||
|
||||
unlink(tempfile);
|
||||
cupsFileClose(temp);
|
||||
|
||||
if (http2 != http)
|
||||
httpClose(http2);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'cups_read_strings()' - Read a pair of strings from a .strings file.
|
||||
*/
|
||||
|
||||
static int /* O - 1 on success, 0 on failure */
|
||||
cups_read_strings(cups_file_t *strings, /* I - .strings file */
|
||||
char *buffer, /* I - Line buffer */
|
||||
size_t bufsize, /* I - Size of line buffer */
|
||||
char **id, /* O - Pointer to ID string */
|
||||
char **str) /* O - Pointer to translation string */
|
||||
{
|
||||
char *bufptr; /* Pointer into buffer */
|
||||
|
||||
|
||||
while (cupsFileGets(strings, buffer, bufsize))
|
||||
{
|
||||
if (buffer[0] != '\"')
|
||||
continue;
|
||||
|
||||
*id = buffer + 1;
|
||||
bufptr = cups_scan_strings(buffer);
|
||||
|
||||
if (*bufptr != '\"')
|
||||
continue;
|
||||
|
||||
*bufptr++ = '\0';
|
||||
|
||||
while (*bufptr && *bufptr != '\"')
|
||||
bufptr ++;
|
||||
|
||||
if (!*bufptr)
|
||||
continue;
|
||||
|
||||
*str = bufptr + 1;
|
||||
bufptr = cups_scan_strings(bufptr);
|
||||
|
||||
if (*bufptr != '\"')
|
||||
continue;
|
||||
|
||||
*bufptr = '\0';
|
||||
|
||||
return (1);
|
||||
}
|
||||
|
||||
return (0);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'cups_scan_strings()' - Scan a quoted string.
|
||||
*/
|
||||
|
||||
static char * /* O - End of string */
|
||||
cups_scan_strings(char *buffer) /* I - Start of string */
|
||||
{
|
||||
char *bufptr; /* Pointer into string */
|
||||
|
||||
|
||||
for (bufptr = buffer + 1; *bufptr && *bufptr != '\"'; bufptr ++)
|
||||
{
|
||||
if (*bufptr == '\\')
|
||||
{
|
||||
if (bufptr[1] >= '0' && bufptr[1] <= '3' &&
|
||||
bufptr[2] >= '0' && bufptr[2] <= '7' &&
|
||||
bufptr[3] >= '0' && bufptr[3] <= '7')
|
||||
{
|
||||
/*
|
||||
* Decode \nnn octal escape...
|
||||
*/
|
||||
|
||||
*bufptr = ((((bufptr[1] - '0') << 3) | (bufptr[2] - '0')) << 3) |
|
||||
(bufptr[3] - '0');
|
||||
_cups_strcpy(bufptr + 1, bufptr + 4);
|
||||
}
|
||||
else
|
||||
{
|
||||
/*
|
||||
* Decode \C escape...
|
||||
*/
|
||||
|
||||
_cups_strcpy(bufptr, bufptr + 1);
|
||||
if (*bufptr == 'n')
|
||||
*bufptr = '\n';
|
||||
else if (*bufptr == 'r')
|
||||
*bufptr = '\r';
|
||||
else if (*bufptr == 't')
|
||||
*bufptr = '\t';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return (bufptr);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
*/
|
||||
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
+75
-1814
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
+9
-9
@@ -5,7 +5,7 @@
|
||||
*
|
||||
* This set of APIs abstracts enumeration of directory entries.
|
||||
*
|
||||
* 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
|
||||
@@ -79,7 +79,7 @@ _cups_dir_time(FILETIME ft) /* I - File time */
|
||||
/*
|
||||
* 'cupsDirClose()' - Close a directory.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
void
|
||||
@@ -110,7 +110,7 @@ cupsDirClose(cups_dir_t *dp) /* I - Directory pointer */
|
||||
/*
|
||||
* 'cupsDirOpen()' - Open a directory.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
cups_dir_t * /* O - Directory pointer or @code NULL@ if the directory could not be opened. */
|
||||
@@ -153,7 +153,7 @@ cupsDirOpen(const char *directory) /* I - Directory name */
|
||||
/*
|
||||
* 'cupsDirRead()' - Read the next directory entry.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
cups_dentry_t * /* O - Directory entry or @code NULL@ if there are no more */
|
||||
@@ -213,7 +213,7 @@ cupsDirRead(cups_dir_t *dp) /* I - Directory pointer */
|
||||
/*
|
||||
* 'cupsDirRewind()' - Rewind to the start of the directory.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
void
|
||||
@@ -263,7 +263,7 @@ struct _cups_dir_s /**** Directory data structure ****/
|
||||
/*
|
||||
* 'cupsDirClose()' - Close a directory.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
void
|
||||
@@ -290,7 +290,7 @@ cupsDirClose(cups_dir_t *dp) /* I - Directory pointer */
|
||||
/*
|
||||
* 'cupsDirOpen()' - Open a directory.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
cups_dir_t * /* O - Directory pointer or @code NULL@ if the directory could not be opened. */
|
||||
@@ -344,7 +344,7 @@ cupsDirOpen(const char *directory) /* I - Directory name */
|
||||
/*
|
||||
* 'cupsDirRead()' - Read the next directory entry.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
cups_dentry_t * /* O - Directory entry or @code NULL@ when there are no more */
|
||||
@@ -442,7 +442,7 @@ cupsDirRead(cups_dir_t *dp) /* I - Directory pointer */
|
||||
/*
|
||||
* 'cupsDirRewind()' - Rewind to the start of the directory.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
void
|
||||
|
||||
+10
-22
@@ -3,7 +3,7 @@
|
||||
*
|
||||
* PPD code emission 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
|
||||
@@ -87,7 +87,7 @@ ppdCollect(ppd_file_t *ppd, /* I - PPD file data */
|
||||
* The choices array should be freed using @code free@ when you are
|
||||
* finished with it.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
int /* O - Number of options marked */
|
||||
@@ -260,7 +260,7 @@ ppdEmit(ppd_file_t *ppd, /* I - PPD file record */
|
||||
*
|
||||
* When "limit" is zero, this function is identical to ppdEmit().
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
int /* O - 0 on success, -1 on failure */
|
||||
@@ -519,27 +519,15 @@ ppdEmitJCL(ppd_file_t *ppd, /* I - PPD file record */
|
||||
*/
|
||||
|
||||
if (display && strcmp(display->value, "job"))
|
||||
{
|
||||
fprintf(fp, "@PJL JOB NAME = \"%s\"\n", temp);
|
||||
else if (display && !strcmp(display->value, "rdymsg"))
|
||||
fprintf(fp, "@PJL RDYMSG DISPLAY = \"%s\"\n", displaymsg);
|
||||
|
||||
if (display && !strcmp(display->value, "rdymsg"))
|
||||
fprintf(fp, "@PJL RDYMSG DISPLAY = \"%s\"\n", displaymsg);
|
||||
}
|
||||
else
|
||||
fprintf(fp, "@PJL JOB NAME = \"%s\" DISPLAY = \"%s\"\n", temp,
|
||||
displaymsg);
|
||||
|
||||
/*
|
||||
* Replace double quotes with single quotes and UTF-8 characters with
|
||||
* question marks so that the user does not cause a PJL syntax error.
|
||||
*/
|
||||
|
||||
strlcpy(temp, user, sizeof(temp));
|
||||
|
||||
for (ptr = temp; *ptr; ptr ++)
|
||||
if (*ptr == '\"')
|
||||
*ptr = '\'';
|
||||
else if (!charset && (*ptr & 128))
|
||||
*ptr = '?';
|
||||
|
||||
fprintf(fp, "@PJL SET USERNAME = \"%s\"\n", temp);
|
||||
}
|
||||
else
|
||||
fputs(ppd->jcl_begin, fp);
|
||||
@@ -554,7 +542,7 @@ ppdEmitJCL(ppd_file_t *ppd, /* I - PPD file record */
|
||||
/*
|
||||
* 'ppdEmitJCLEnd()' - Emit JCLEnd code to a file.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
int /* O - 0 on success, -1 on failure */
|
||||
@@ -613,7 +601,7 @@ ppdEmitJCLEnd(ppd_file_t *ppd, /* I - PPD file record */
|
||||
* The return string is allocated on the heap and should be freed using
|
||||
* @code free@ when you are done with it.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
char * /* O - String containing option code or @code NULL@ if there is no option code */
|
||||
|
||||
+37
-53
@@ -3,7 +3,7 @@
|
||||
*
|
||||
* Option encoding routines for CUPS.
|
||||
*
|
||||
* Copyright 2007-2012 by Apple Inc.
|
||||
* Copyright 2007-2011 by Apple Inc.
|
||||
* Copyright 1997-2007 by Easy Software Products.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
@@ -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 }
|
||||
};
|
||||
|
||||
|
||||
@@ -227,7 +202,7 @@ cupsEncodeOptions(ipp_t *ipp, /* I - Request to add to */
|
||||
* function multiple times for each group, or use cupsEncodeOptions()
|
||||
* to add the standard groups.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
void
|
||||
@@ -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)
|
||||
{
|
||||
/*
|
||||
@@ -539,8 +524,7 @@ cupsEncodeOptions2(
|
||||
else
|
||||
attr->values[j].resolution.yres = attr->values[j].resolution.xres;
|
||||
|
||||
if (!_cups_strcasecmp(s, "dpc") ||
|
||||
!_cups_strcasecmp(s, "dpcm"))
|
||||
if (!_cups_strcasecmp(s, "dpc"))
|
||||
attr->values[j].resolution.units = IPP_RES_PER_CM;
|
||||
else
|
||||
attr->values[j].resolution.units = IPP_RES_PER_INCH;
|
||||
|
||||
+43
-31
@@ -8,7 +8,7 @@
|
||||
* our own file functions allows us to provide transparent support of
|
||||
* gzip'd print files, PPD files, etc.
|
||||
*
|
||||
* 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
|
||||
@@ -168,13 +168,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 +219,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 */
|
||||
{
|
||||
@@ -352,7 +364,7 @@ _cupsFileCheckFilter(
|
||||
/*
|
||||
* 'cupsFileClose()' - Close a CUPS file.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
int /* O - 0 on success, -1 on error */
|
||||
@@ -484,7 +496,7 @@ cupsFileClose(cups_file_t *fp) /* I - CUPS file */
|
||||
/*
|
||||
* 'cupsFileCompression()' - Return whether a file is compressed.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
int /* O - @code CUPS_FILE_NONE@ or @code CUPS_FILE_GZIP@ */
|
||||
@@ -497,7 +509,7 @@ cupsFileCompression(cups_file_t *fp) /* I - CUPS file */
|
||||
/*
|
||||
* 'cupsFileEOF()' - Return the end-of-file status.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
int /* O - 1 on end of file, 0 otherwise */
|
||||
@@ -516,7 +528,7 @@ cupsFileEOF(cups_file_t *fp) /* I - CUPS file */
|
||||
* the supplied paths, @code NULL@ is returned. A @code NULL@ path only
|
||||
* matches the current directory.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
const char * /* O - Full path to file or @code NULL@ if not found */
|
||||
@@ -619,7 +631,7 @@ cupsFileFind(const char *filename, /* I - File to find */
|
||||
/*
|
||||
* 'cupsFileFlush()' - Flush pending output.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
int /* O - 0 on success, -1 on error */
|
||||
@@ -667,7 +679,7 @@ cupsFileFlush(cups_file_t *fp) /* I - CUPS file */
|
||||
/*
|
||||
* 'cupsFileGetChar()' - Get a single character from a file.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
int /* O - Character or -1 on end of file */
|
||||
@@ -711,7 +723,7 @@ cupsFileGetChar(cups_file_t *fp) /* I - CUPS file */
|
||||
/*
|
||||
* 'cupsFileGetConf()' - Get a line from a configuration file.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
char * /* O - Line read or @code NULL@ on end of file or error */
|
||||
@@ -855,7 +867,7 @@ cupsFileGetConf(cups_file_t *fp, /* I - CUPS file */
|
||||
* nul-terminated, however you should use the returned length to determine
|
||||
* the number of bytes on the line.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
size_t /* O - Number of bytes on line or 0 on end of file */
|
||||
@@ -930,7 +942,7 @@ cupsFileGetLine(cups_file_t *fp, /* I - File to read from */
|
||||
/*
|
||||
* 'cupsFileGets()' - Get a CR and/or LF-terminated line.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
char * /* O - Line read or @code NULL@ on end of file or error */
|
||||
@@ -1012,7 +1024,7 @@ cupsFileGets(cups_file_t *fp, /* I - CUPS file */
|
||||
/*
|
||||
* 'cupsFileLock()' - Temporarily lock access to a file.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
int /* O - 0 on success, -1 on error */
|
||||
@@ -1041,7 +1053,7 @@ cupsFileLock(cups_file_t *fp, /* I - CUPS file */
|
||||
/*
|
||||
* 'cupsFileNumber()' - Return the file descriptor associated with a CUPS file.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
int /* O - File descriptor */
|
||||
@@ -1070,7 +1082,7 @@ cupsFileNumber(cups_file_t *fp) /* I - CUPS file */
|
||||
* connection as needed, generally preferring IPv6 connections when there is
|
||||
* a choice.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
cups_file_t * /* O - CUPS file or @code NULL@ if the file or socket cannot be opened */
|
||||
@@ -1192,7 +1204,7 @@ cupsFileOpen(const char *filename, /* I - Name of file */
|
||||
* supplied which enables Flate compression of the file. Compression is
|
||||
* not supported for the "a" (append) mode.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
cups_file_t * /* O - CUPS file or @code NULL@ if the file could not be opened */
|
||||
@@ -1304,7 +1316,7 @@ cupsFileOpenFd(int fd, /* I - File descriptor */
|
||||
/*
|
||||
* 'cupsFilePeekChar()' - Peek at the next character from a file.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
int /* O - Character or -1 on end of file */
|
||||
@@ -1336,7 +1348,7 @@ cupsFilePeekChar(cups_file_t *fp) /* I - CUPS file */
|
||||
/*
|
||||
* 'cupsFilePrintf()' - Write a formatted string.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
int /* O - Number of bytes written or -1 on error */
|
||||
@@ -1433,7 +1445,7 @@ cupsFilePrintf(cups_file_t *fp, /* I - CUPS file */
|
||||
/*
|
||||
* 'cupsFilePutChar()' - Write a character.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
int /* O - 0 on success, -1 on error */
|
||||
@@ -1487,7 +1499,7 @@ cupsFilePutChar(cups_file_t *fp, /* I - CUPS file */
|
||||
*
|
||||
* This function handles any comment escaping of the value.
|
||||
*
|
||||
* @since CUPS 1.4/OS X 10.6@
|
||||
* @since CUPS 1.4/Mac OS X 10.6@
|
||||
*/
|
||||
|
||||
ssize_t /* O - Number of bytes written or -1 on error */
|
||||
@@ -1548,7 +1560,7 @@ cupsFilePutConf(cups_file_t *fp, /* I - CUPS file */
|
||||
*
|
||||
* Like the @code fputs@ function, no newline is appended to the string.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
int /* O - Number of bytes written or -1 on error */
|
||||
@@ -1612,7 +1624,7 @@ cupsFilePuts(cups_file_t *fp, /* I - CUPS file */
|
||||
/*
|
||||
* 'cupsFileRead()' - Read from a file.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
ssize_t /* O - Number of bytes read or -1 on error */
|
||||
@@ -1689,7 +1701,7 @@ cupsFileRead(cups_file_t *fp, /* I - CUPS file */
|
||||
* 'cupsFileRewind()' - Set the current file position to the beginning of the
|
||||
* file.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
off_t /* O - New file position or -1 on error */
|
||||
@@ -1761,7 +1773,7 @@ cupsFileRewind(cups_file_t *fp) /* I - CUPS file */
|
||||
/*
|
||||
* 'cupsFileSeek()' - Seek in a file.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
off_t /* O - New file position or -1 on error */
|
||||
@@ -1914,7 +1926,7 @@ cupsFileSeek(cups_file_t *fp, /* I - CUPS file */
|
||||
/*
|
||||
* 'cupsFileStderr()' - Return a CUPS file associated with stderr.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
cups_file_t * /* O - CUPS file */
|
||||
@@ -1950,7 +1962,7 @@ cupsFileStderr(void)
|
||||
/*
|
||||
* 'cupsFileStdin()' - Return a CUPS file associated with stdin.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
cups_file_t * /* O - CUPS file */
|
||||
@@ -1980,7 +1992,7 @@ cupsFileStdin(void)
|
||||
/*
|
||||
* 'cupsFileStdout()' - Return a CUPS file associated with stdout.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
cups_file_t * /* O - CUPS file */
|
||||
@@ -2016,7 +2028,7 @@ cupsFileStdout(void)
|
||||
/*
|
||||
* 'cupsFileTell()' - Return the current file position.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
off_t /* O - File position */
|
||||
@@ -2033,7 +2045,7 @@ cupsFileTell(cups_file_t *fp) /* I - CUPS file */
|
||||
/*
|
||||
* 'cupsFileUnlock()' - Unlock access to a file.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
int /* O - 0 on success, -1 on error */
|
||||
@@ -2063,7 +2075,7 @@ cupsFileUnlock(cups_file_t *fp) /* I - CUPS file */
|
||||
/*
|
||||
* 'cupsFileWrite()' - Write to a file.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
ssize_t /* O - Number of bytes written or -1 on error */
|
||||
|
||||
+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
|
||||
|
||||
+3
-3
@@ -3,7 +3,7 @@
|
||||
*
|
||||
* cupsGetDevices implementation 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
|
||||
@@ -34,7 +34,7 @@
|
||||
* parameters provide comma-delimited lists of backends to include or omit from
|
||||
* the request respectively.
|
||||
*
|
||||
* @since CUPS 1.4/OS X 10.6@
|
||||
* @since CUPS 1.4/Mac OS X 10.6@
|
||||
*/
|
||||
|
||||
ipp_status_t /* O - Request status - @code IPP_OK@ on success. */
|
||||
@@ -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);
|
||||
|
||||
+5
-5
@@ -3,7 +3,7 @@
|
||||
*
|
||||
* Get/put file functions 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
|
||||
@@ -41,7 +41,7 @@
|
||||
*
|
||||
* This function returns @code HTTP_OK@ when the file is successfully retrieved.
|
||||
*
|
||||
* @since CUPS 1.1.20/OS X 10.4@
|
||||
* @since CUPS 1.1.20/Mac OS X 10.4@
|
||||
*/
|
||||
|
||||
http_status_t /* O - HTTP status */
|
||||
@@ -187,7 +187,7 @@ cupsGetFd(http_t *http, /* I - Connection to server or @code CUPS_HTTP_DEFA
|
||||
*
|
||||
* This function returns @code HTTP_OK@ when the file is successfully retrieved.
|
||||
*
|
||||
* @since CUPS 1.1.20/OS X 10.4@
|
||||
* @since CUPS 1.1.20/Mac OS X 10.4@
|
||||
*/
|
||||
|
||||
http_status_t /* O - HTTP status */
|
||||
@@ -255,7 +255,7 @@ cupsGetFile(http_t *http, /* I - Connection to server or @code CUPS_HTTP_DE
|
||||
* This function returns @code HTTP_CREATED@ when the file is stored
|
||||
* successfully.
|
||||
*
|
||||
* @since CUPS 1.1.20/OS X 10.4@
|
||||
* @since CUPS 1.1.20/Mac OS X 10.4@
|
||||
*/
|
||||
|
||||
http_status_t /* O - HTTP status */
|
||||
@@ -446,7 +446,7 @@ cupsPutFd(http_t *http, /* I - Connection to server or @code CUPS_HTTP_DEFA
|
||||
* This function returns @code HTTP_CREATED@ when the file is stored
|
||||
* successfully.
|
||||
*
|
||||
* @since CUPS 1.1.20/OS X 10.4@
|
||||
* @since CUPS 1.1.20/Mac OS X 10.4@
|
||||
*/
|
||||
|
||||
http_status_t /* O - HTTP status */
|
||||
|
||||
+21
-51
@@ -3,7 +3,7 @@
|
||||
*
|
||||
* Global variable access routines for CUPS.
|
||||
*
|
||||
* Copyright 2007-2012 by Apple Inc.
|
||||
* Copyright 2007-2010 by Apple Inc.
|
||||
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
@@ -20,7 +20,6 @@
|
||||
* _cupsGlobals() - Return a pointer to thread local storage
|
||||
* _cupsGlobalUnlock() - Unlock the global mutex.
|
||||
* DllMain() - Main entry for library.
|
||||
* cups_fix_path() - Fix a file path to use forward slashes consistently.
|
||||
* cups_globals_alloc() - Allocate and initialize global data.
|
||||
* cups_globals_free() - Free global data.
|
||||
* cups_globals_init() - Initialize environment variables.
|
||||
@@ -44,23 +43,16 @@ static _cups_threadkey_t cups_globals_key = _CUPS_THREADKEY_INITIALIZER;
|
||||
static pthread_once_t cups_globals_key_once = PTHREAD_ONCE_INIT;
|
||||
/* One-time initialization object */
|
||||
#endif /* HAVE_PTHREAD_H */
|
||||
#if defined(HAVE_PTHREAD_H) || defined(WIN32)
|
||||
static _cups_mutex_t cups_global_mutex = _CUPS_MUTEX_INITIALIZER;
|
||||
/* Global critical section */
|
||||
#endif /* HAVE_PTHREAD_H || WIN32 */
|
||||
|
||||
|
||||
/*
|
||||
* Local functions...
|
||||
*/
|
||||
|
||||
#ifdef WIN32
|
||||
static void cups_fix_path(char *path);
|
||||
#endif /* WIN32 */
|
||||
static _cups_globals_t *cups_globals_alloc(void);
|
||||
#if defined(HAVE_PTHREAD_H) || defined(WIN32)
|
||||
static void cups_globals_free(_cups_globals_t *g);
|
||||
#endif /* HAVE_PTHREAD_H || WIN32 */
|
||||
#ifdef HAVE_PTHREAD_H
|
||||
static void cups_globals_init(void);
|
||||
#endif /* HAVE_PTHREAD_H */
|
||||
@@ -195,9 +187,9 @@ cups_globals_alloc(void)
|
||||
#ifdef WIN32
|
||||
HKEY key; /* Registry key */
|
||||
DWORD size; /* Size of string */
|
||||
static char installdir[1024] = "", /* Install directory */
|
||||
confdir[1024] = "", /* Server root directory */
|
||||
localedir[1024] = ""; /* Locale directory */
|
||||
static char installdir[1024], /* Install directory */
|
||||
confdir[1024], /* Server root directory */
|
||||
localedir[1024]; /* Locale directory */
|
||||
#endif /* WIN32 */
|
||||
|
||||
|
||||
@@ -221,47 +213,27 @@ cups_globals_alloc(void)
|
||||
*/
|
||||
|
||||
#ifdef WIN32
|
||||
if (!installdir[0])
|
||||
/*
|
||||
* Open the registry...
|
||||
*/
|
||||
|
||||
strcpy(installdir, "C:/Program Files/cups.org");
|
||||
|
||||
if (!RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\cups.org", 0, KEY_READ,
|
||||
&key))
|
||||
{
|
||||
/*
|
||||
* Open the registry...
|
||||
* Grab the installation directory...
|
||||
*/
|
||||
|
||||
strcpy(installdir, "C:/Program Files/cups.org");
|
||||
|
||||
if (!RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\cups.org", 0, KEY_READ,
|
||||
&key))
|
||||
{
|
||||
/*
|
||||
* Grab the installation directory...
|
||||
*/
|
||||
|
||||
char *ptr; /* Pointer into installdir */
|
||||
|
||||
size = sizeof(installdir);
|
||||
RegQueryValueEx(key, "installdir", NULL, NULL, installdir, &size);
|
||||
RegCloseKey(key);
|
||||
|
||||
for (ptr = installdir; *ptr;)
|
||||
{
|
||||
if (*ptr == '\\')
|
||||
{
|
||||
if (ptr[1])
|
||||
*ptr++ = '/';
|
||||
else
|
||||
*ptr = '\0'; /* Strip trailing \ */
|
||||
}
|
||||
else if (*ptr == '/' && !ptr[1])
|
||||
*ptr = '\0'; /* Strip trailing / */
|
||||
else
|
||||
ptr ++;
|
||||
}
|
||||
}
|
||||
|
||||
snprintf(confdir, sizeof(confdir), "%s/conf", installdir);
|
||||
snprintf(localedir, sizeof(localedir), "%s/locale", installdir);
|
||||
size = sizeof(installdir);
|
||||
RegQueryValueEx(key, "installdir", NULL, NULL, installdir, &size);
|
||||
RegCloseKey(key);
|
||||
}
|
||||
|
||||
snprintf(confdir, sizeof(confdir), "%s/conf", installdir);
|
||||
snprintf(localedir, sizeof(localedir), "%s/locale", installdir);
|
||||
|
||||
if ((cg->cups_datadir = getenv("CUPS_DATADIR")) == NULL)
|
||||
cg->cups_datadir = installdir;
|
||||
|
||||
@@ -326,18 +298,17 @@ cups_globals_alloc(void)
|
||||
* 'cups_globals_free()' - Free global data.
|
||||
*/
|
||||
|
||||
#if defined(HAVE_PTHREAD_H) || defined(WIN32)
|
||||
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);
|
||||
@@ -359,7 +330,6 @@ cups_globals_free(_cups_globals_t *cg) /* I - Pointer to global data */
|
||||
|
||||
free(cg);
|
||||
}
|
||||
#endif /* HAVE_PTHREAD_H || WIN32 */
|
||||
|
||||
|
||||
#ifdef HAVE_PTHREAD_H
|
||||
|
||||
+12
-10
@@ -3,7 +3,7 @@
|
||||
*
|
||||
* HTTP address routines 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
|
||||
@@ -34,16 +34,18 @@
|
||||
#ifdef HAVE_RESOLV_H
|
||||
# include <resolv.h>
|
||||
#endif /* HAVE_RESOLV_H */
|
||||
#ifdef __APPLE__
|
||||
#ifdef HAVE_COREFOUNDATION
|
||||
# include <CoreFoundation/CoreFoundation.h>
|
||||
#endif /* HAVE_COREFOUNDATION */
|
||||
#ifdef HAVE_SYSTEMCONFIGURATION
|
||||
# include <SystemConfiguration/SystemConfiguration.h>
|
||||
#endif /* __APPLE__ */
|
||||
#endif /* HAVE_SYSTEMCONFIGURATION */
|
||||
|
||||
|
||||
/*
|
||||
* 'httpAddrAny()' - Check for the "any" address.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
int /* O - 1 if "any", 0 otherwise */
|
||||
@@ -69,7 +71,7 @@ httpAddrAny(const http_addr_t *addr) /* I - Address to check */
|
||||
/*
|
||||
* 'httpAddrEqual()' - Compare two addresses.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
int /* O - 1 if equal, 0 if not */
|
||||
@@ -102,7 +104,7 @@ httpAddrEqual(const http_addr_t *addr1, /* I - First address */
|
||||
/*
|
||||
* 'httpAddrLength()' - Return the length of the address in bytes.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
int /* O - Length in bytes */
|
||||
@@ -133,7 +135,7 @@ httpAddrLength(const http_addr_t *addr) /* I - Address */
|
||||
/*
|
||||
* 'httpAddrLocalhost()' - Check for the local loopback address.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
int /* O - 1 if local host, 0 otherwise */
|
||||
@@ -172,7 +174,7 @@ httpAddrLocalhost(
|
||||
/*
|
||||
* 'httpAddrLookup()' - Lookup the hostname associated with the address.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
char * /* O - Host name */
|
||||
@@ -340,7 +342,7 @@ _httpAddrSetPort(http_addr_t *addr, /* I - Address */
|
||||
/*
|
||||
* 'httpAddrString()' - Convert an address to a numeric string.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
char * /* O - Numeric address string */
|
||||
@@ -614,7 +616,7 @@ httpGetHostByName(const char *name) /* I - Hostname or IP address */
|
||||
* Otherwise, return the FQDN for the local system using both gethostname()
|
||||
* and gethostbyname() to get the local hostname with domain.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
const char * /* O - FQDN for connection or system */
|
||||
|
||||
+28
-196
@@ -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,95 +27,47 @@
|
||||
#ifdef HAVE_RESOLV_H
|
||||
# include <resolv.h>
|
||||
#endif /* HAVE_RESOLV_H */
|
||||
#ifdef HAVE_POLL
|
||||
# include <poll.h>
|
||||
#endif /* HAVE_POLL */
|
||||
#ifndef WIN32
|
||||
# include <sys/fcntl.h>
|
||||
#endif /* WIN32 */
|
||||
|
||||
|
||||
/*
|
||||
* 'httpAddrConnect()' - Connect to any of the addresses in the list.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
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/OS X 10.8@
|
||||
*/
|
||||
|
||||
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 */
|
||||
http_addr_t peer; /* Peer address */
|
||||
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 || getenv("CUPS_DISABLE_ASYNC_CONNECT"))
|
||||
msec = INT_MAX;
|
||||
|
||||
/*
|
||||
* Loop through each address until we connect or run out of addresses...
|
||||
*/
|
||||
|
||||
while (addrlist)
|
||||
{
|
||||
if (cancel && *cancel)
|
||||
return (NULL);
|
||||
|
||||
/*
|
||||
* Create the socket...
|
||||
*/
|
||||
|
||||
DEBUG_printf(("2httpAddrConnect2: Trying %s:%d...",
|
||||
DEBUG_printf(("2httpAddrConnect: Trying %s:%d...",
|
||||
httpAddrString(&(addrlist->addr), temp, sizeof(temp)),
|
||||
_httpAddrPort(&(addrlist->addr))));
|
||||
|
||||
@@ -155,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...
|
||||
@@ -176,22 +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 != INT_MAX)
|
||||
{
|
||||
DEBUG_puts("httpAddrConnect2: Setting non-blocking connect()");
|
||||
|
||||
fcntl(*sock, F_SETFL, flags | O_NONBLOCK);
|
||||
}
|
||||
#endif /* O_NONBLOCK */
|
||||
|
||||
/*
|
||||
* Then connect...
|
||||
*/
|
||||
@@ -199,109 +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 (WSAGetLastError() == WSAEINPROGRESS ||
|
||||
WSAGetLastError() == WSAEWOULDBLOCK)
|
||||
# else
|
||||
if (errno == EINPROGRESS || errno == EWOULDBLOCK)
|
||||
# endif /* WIN32 */
|
||||
{
|
||||
DEBUG_puts("1httpAddrConnect2: Finishing async connect()");
|
||||
|
||||
fcntl(*sock, F_SETFL, flags);
|
||||
|
||||
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(peer);
|
||||
if (!getpeername(*sock, (struct sockaddr *)&peer, &len))
|
||||
{
|
||||
DEBUG_printf(("1httpAddrConnect2: Connected to %s:%d...",
|
||||
httpAddrString(&peer, temp, sizeof(temp)),
|
||||
_httpAddrPort(&peer)));
|
||||
|
||||
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...
|
||||
*/
|
||||
@@ -317,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 */
|
||||
|
||||
return (addrlist);
|
||||
}
|
||||
@@ -330,7 +178,7 @@ httpAddrConnect2(
|
||||
/*
|
||||
* 'httpAddrFreeList()' - Free an address list.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
void
|
||||
@@ -358,7 +206,7 @@ httpAddrFreeList(
|
||||
/*
|
||||
* 'httpAddrGetList()' - Get a list of addresses for a hostname.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
http_addrlist_t * /* O - List of addresses or NULL */
|
||||
@@ -408,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...
|
||||
*/
|
||||
@@ -508,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);
|
||||
}
|
||||
|
||||
@@ -538,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)
|
||||
@@ -662,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 */
|
||||
}
|
||||
@@ -706,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);
|
||||
}
|
||||
|
||||
@@ -730,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);
|
||||
}
|
||||
@@ -759,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);
|
||||
}
|
||||
@@ -791,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);
|
||||
}
|
||||
@@ -815,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);
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
*
|
||||
* Private HTTP 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
|
||||
@@ -154,7 +154,6 @@ extern "C" {
|
||||
#define _HTTP_RESOLVE_DEFAULT 0 /* Just resolve with default options */
|
||||
#define _HTTP_RESOLVE_STDERR 1 /* Log resolve progress to stderr */
|
||||
#define _HTTP_RESOLVE_FQDN 2 /* Resolve to a FQDN */
|
||||
#define _HTTP_RESOLVE_FAXOUT 4 /* Resolve FaxOut service? */
|
||||
|
||||
|
||||
/*
|
||||
|
||||
+86
-454
@@ -3,7 +3,7 @@
|
||||
*
|
||||
* HTTP support 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
|
||||
@@ -16,37 +16,33 @@
|
||||
*
|
||||
* Contents:
|
||||
*
|
||||
* httpAssembleURI() - Assemble a uniform resource identifier from its
|
||||
* components.
|
||||
* httpAssembleURI() - Assemble a uniform resource identifier from its
|
||||
* components.
|
||||
* httpAssembleURIf() - Assemble a uniform resource identifier from its
|
||||
* components with a formatted resource.
|
||||
* components with a formatted resource.
|
||||
* _httpAssembleUUID() - Make a UUID URI conforming to RFC 4122.
|
||||
* httpDecode64() - Base64-decode a string.
|
||||
* httpDecode64_2() - Base64-decode a string.
|
||||
* httpEncode64() - Base64-encode a string.
|
||||
* httpEncode64_2() - Base64-encode a string.
|
||||
* httpDecode64() - Base64-decode a string.
|
||||
* httpDecode64_2() - Base64-decode a string.
|
||||
* httpEncode64() - Base64-encode a string.
|
||||
* httpEncode64_2() - Base64-encode a string.
|
||||
* httpGetDateString() - Get a formatted date/time string from a time value.
|
||||
* httpGetDateString2() - Get a formatted date/time string from a time value.
|
||||
* httpGetDateTime() - Get a time value from a formatted date/time string.
|
||||
* httpSeparate() - Separate a Universal Resource Identifier into its
|
||||
* components.
|
||||
* httpSeparate2() - Separate a Universal Resource Identifier into its
|
||||
* components.
|
||||
* httpSeparateURI() - Separate a Universal Resource Identifier into its
|
||||
* components.
|
||||
* httpStatus() - Return a short string describing a HTTP status
|
||||
* code.
|
||||
* _cups_hstrerror() - hstrerror() emulation function for Solaris and
|
||||
* others.
|
||||
* _httpDecodeURI() - Percent-decode a HTTP request URI.
|
||||
* _httpEncodeURI() - Percent-encode a HTTP request URI.
|
||||
* _httpResolveURI() - Resolve a DNS-SD URI.
|
||||
* http_client_cb() - Client callback for resolving URI.
|
||||
* httpGetDateTime() - Get a time value from a formatted date/time string.
|
||||
* httpSeparate() - Separate a Universal Resource Identifier into its
|
||||
* components.
|
||||
* httpSeparate2() - Separate a Universal Resource Identifier into its
|
||||
* components.
|
||||
* httpSeparateURI() - Separate a Universal Resource Identifier into its
|
||||
* components.
|
||||
* httpStatus() - Return a short string describing a HTTP status code.
|
||||
* _cups_hstrerror() - hstrerror() emulation function for Solaris and
|
||||
* others.
|
||||
* _httpDecodeURI() - Percent-decode a HTTP request URI.
|
||||
* _httpEncodeURI() - Percent-encode a HTTP request URI.
|
||||
* _httpResolveURI() - Resolve a DNS-SD URI.
|
||||
* http_copy_decode() - Copy and decode a URI.
|
||||
* http_copy_encode() - Copy and encode a URI.
|
||||
* http_poll_cb() - Wait for input on the specified file descriptors.
|
||||
* http_resolve_cb() - Build a device URI for the given service name.
|
||||
* http_resolve_cb() - Build a device URI for the given service name.
|
||||
* http_resolve_cb() - Build a device URI for the given service name.
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -63,10 +59,6 @@
|
||||
# else
|
||||
# include <sys/select.h>
|
||||
# endif /* WIN32 */
|
||||
#elif defined(HAVE_AVAHI)
|
||||
# include <avahi-client/client.h>
|
||||
# include <avahi-client/lookup.h>
|
||||
# include <avahi-common/simple-watch.h>
|
||||
#endif /* HAVE_DNSSD */
|
||||
|
||||
|
||||
@@ -76,12 +68,9 @@
|
||||
|
||||
typedef struct _http_uribuf_s /* URI buffer */
|
||||
{
|
||||
#ifdef HAVE_AVAHI
|
||||
AvahiSimplePoll *poll; /* Poll state */
|
||||
#endif /* HAVE_AVAHI */
|
||||
char *buffer; /* Pointer to buffer */
|
||||
size_t bufsize; /* Size of buffer */
|
||||
int options; /* Options passed to _httpResolveURI */
|
||||
char *buffer; /* Pointer to buffer */
|
||||
size_t bufsize; /* Size of buffer */
|
||||
int options; /* Options passed to _httpResolveURI */
|
||||
} _http_uribuf_t;
|
||||
|
||||
|
||||
@@ -138,22 +127,6 @@ static void DNSSD_API http_resolve_cb(DNSServiceRef sdRef,
|
||||
void *context);
|
||||
#endif /* HAVE_DNSSD */
|
||||
|
||||
#ifdef HAVE_AVAHI
|
||||
static void http_client_cb(AvahiClient *client,
|
||||
AvahiClientState state, void *simple_poll);
|
||||
static int http_poll_cb(struct pollfd *pollfds, unsigned int num_pollfds,
|
||||
int timeout, void *context);
|
||||
static void http_resolve_cb(AvahiServiceResolver *resolver,
|
||||
AvahiIfIndex interface,
|
||||
AvahiProtocol protocol,
|
||||
AvahiResolverEvent event,
|
||||
const char *name, const char *type,
|
||||
const char *domain, const char *host_name,
|
||||
const AvahiAddress *address, uint16_t port,
|
||||
AvahiStringList *txt,
|
||||
AvahiLookupResultFlags flags, void *context);
|
||||
#endif /* HAVE_AVAHI */
|
||||
|
||||
|
||||
/*
|
||||
* 'httpAssembleURI()' - Assemble a uniform resource identifier from its
|
||||
@@ -164,7 +137,7 @@ static void http_resolve_cb(AvahiServiceResolver *resolver,
|
||||
* place of traditional string functions whenever you need to create a
|
||||
* URI string.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
http_uri_status_t /* O - URI status */
|
||||
@@ -414,7 +387,7 @@ httpAssembleURI(
|
||||
* this function in place of traditional string functions whenever
|
||||
* you need to create a URI string.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
http_uri_status_t /* O - URI status */
|
||||
@@ -544,7 +517,7 @@ httpDecode64(char *out, /* I - String to write to */
|
||||
/*
|
||||
* 'httpDecode64_2()' - Base64-decode a string.
|
||||
*
|
||||
* @since CUPS 1.1.21/OS X 10.4@
|
||||
* @since CUPS 1.1.21/Mac OS X 10.4@
|
||||
*/
|
||||
|
||||
char * /* O - Decoded string */
|
||||
@@ -663,7 +636,7 @@ httpEncode64(char *out, /* I - String to write to */
|
||||
/*
|
||||
* 'httpEncode64_2()' - Base64-encode a string.
|
||||
*
|
||||
* @since CUPS 1.1.21/OS X 10.4@
|
||||
* @since CUPS 1.1.21/Mac OS X 10.4@
|
||||
*/
|
||||
|
||||
char * /* O - Encoded string */
|
||||
@@ -772,7 +745,7 @@ httpGetDateString(time_t t) /* I - UNIX time */
|
||||
/*
|
||||
* 'httpGetDateString2()' - Get a formatted date/time string from a time value.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
const char * /* O - Date/time string */
|
||||
@@ -784,13 +757,10 @@ httpGetDateString2(time_t t, /* I - UNIX time */
|
||||
|
||||
|
||||
tdate = gmtime(&t);
|
||||
if (tdate)
|
||||
snprintf(s, slen, "%s, %02d %s %d %02d:%02d:%02d GMT",
|
||||
http_days[tdate->tm_wday], tdate->tm_mday,
|
||||
http_months[tdate->tm_mon], tdate->tm_year + 1900,
|
||||
tdate->tm_hour, tdate->tm_min, tdate->tm_sec);
|
||||
else
|
||||
s[0] = '\0';
|
||||
snprintf(s, slen, "%s, %02d %s %d %02d:%02d:%02d GMT",
|
||||
http_days[tdate->tm_wday], tdate->tm_mday,
|
||||
http_months[tdate->tm_mon], tdate->tm_year + 1900,
|
||||
tdate->tm_hour, tdate->tm_min, tdate->tm_sec);
|
||||
|
||||
return (s);
|
||||
}
|
||||
@@ -892,7 +862,7 @@ httpSeparate(const char *uri, /* I - Universal Resource Identifier */
|
||||
*
|
||||
* This function is deprecated; use the httpSeparateURI() function instead.
|
||||
*
|
||||
* @since CUPS 1.1.21/OS X 10.4@
|
||||
* @since CUPS 1.1.21/Mac OS X 10.4@
|
||||
* @deprecated@
|
||||
*/
|
||||
|
||||
@@ -917,7 +887,7 @@ httpSeparate2(const char *uri, /* I - Universal Resource Identifier */
|
||||
* 'httpSeparateURI()' - Separate a Universal Resource Identifier into its
|
||||
* components.
|
||||
*
|
||||
* @since CUPS 1.2/OS X 10.5@
|
||||
* @since CUPS 1.2/Mac OS X 10.5@
|
||||
*/
|
||||
|
||||
http_uri_status_t /* O - Result of separation */
|
||||
@@ -1461,29 +1431,24 @@ _httpResolveURI(
|
||||
|
||||
if (strstr(hostname, "._tcp"))
|
||||
{
|
||||
#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI)
|
||||
char *regtype, /* Pointer to type in hostname */
|
||||
*domain; /* Pointer to domain in hostname */
|
||||
_http_uribuf_t uribuf; /* URI buffer */
|
||||
int offline = 0; /* offline-report state set? */
|
||||
# ifdef HAVE_DNSSD
|
||||
# ifdef WIN32
|
||||
# pragma comment(lib, "dnssd.lib")
|
||||
# endif /* WIN32 */
|
||||
#ifdef HAVE_DNSSD
|
||||
# ifdef WIN32
|
||||
# pragma comment(lib, "dnssd.lib")
|
||||
# endif /* WIN32 */
|
||||
DNSServiceRef ref, /* DNS-SD master service reference */
|
||||
domainref, /* DNS-SD service reference for domain */
|
||||
localref; /* DNS-SD service reference for .local */
|
||||
int domainsent = 0; /* Send the domain resolve? */
|
||||
# ifdef HAVE_POLL
|
||||
int domainsent = 0, /* Send the domain resolve? */
|
||||
offline = 0; /* offline-report state set? */
|
||||
char *regtype, /* Pointer to type in hostname */
|
||||
*domain; /* Pointer to domain in hostname */
|
||||
_http_uribuf_t uribuf; /* URI buffer */
|
||||
#ifdef HAVE_POLL
|
||||
struct pollfd polldata; /* Polling data */
|
||||
# else /* select() */
|
||||
#else /* select() */
|
||||
fd_set input_set; /* Input set for select() */
|
||||
struct timeval stimeout; /* Timeout value for select() */
|
||||
# endif /* HAVE_POLL */
|
||||
# elif defined(HAVE_AVAHI)
|
||||
AvahiClient *client; /* Client information */
|
||||
int error; /* Status */
|
||||
# endif /* HAVE_DNSSD */
|
||||
#endif /* HAVE_POLL */
|
||||
|
||||
if (options & _HTTP_RESOLVE_STDERR)
|
||||
fprintf(stderr, "DEBUG: Resolving \"%s\"...\n", hostname);
|
||||
@@ -1523,7 +1488,6 @@ _httpResolveURI(
|
||||
uribuf.buffer = resolved_uri;
|
||||
uribuf.bufsize = resolved_size;
|
||||
uribuf.options = options;
|
||||
|
||||
resolved_uri[0] = '\0';
|
||||
|
||||
DEBUG_printf(("6_httpResolveURI: Resolving hostname=\"%s\", regtype=\"%s\", "
|
||||
@@ -1537,22 +1501,18 @@ _httpResolveURI(
|
||||
|
||||
uri = NULL;
|
||||
|
||||
# ifdef HAVE_DNSSD
|
||||
if (DNSServiceCreateConnection(&ref) == kDNSServiceErr_NoError)
|
||||
{
|
||||
localref = ref;
|
||||
if (DNSServiceResolve(&localref,
|
||||
kDNSServiceFlagsShareConnection, 0, hostname, regtype,
|
||||
"local.", http_resolve_cb,
|
||||
if (DNSServiceResolve(&localref, kDNSServiceFlagsShareConnection, 0,
|
||||
hostname, regtype, "local.", http_resolve_cb,
|
||||
&uribuf) == kDNSServiceErr_NoError)
|
||||
{
|
||||
int fds; /* Number of ready descriptors */
|
||||
time_t timeout, /* Poll timeout */
|
||||
start_time = time(NULL),/* Start time */
|
||||
end_time = start_time + 90;
|
||||
/* End time */
|
||||
start_time = time(NULL);/* Start time */
|
||||
|
||||
while (time(NULL) < end_time)
|
||||
for (;;)
|
||||
{
|
||||
if (options & _HTTP_RESOLVE_STDERR)
|
||||
_cupsLangPrintFilter(stderr, "INFO", _("Looking for printer."));
|
||||
@@ -1564,32 +1524,28 @@ _httpResolveURI(
|
||||
}
|
||||
|
||||
/*
|
||||
* Wakeup every 2 seconds to emit a "looking for printer" message...
|
||||
* For the first minute (or forever if we have a callback), wakeup
|
||||
* every 2 seconds to emit a "looking for printer" message...
|
||||
*/
|
||||
|
||||
if ((timeout = end_time - time(NULL)) > 2)
|
||||
timeout = 2;
|
||||
timeout = (time(NULL) < (start_time + 60) || cb) ? 2000 : -1;
|
||||
|
||||
# ifdef HAVE_POLL
|
||||
#ifdef HAVE_POLL
|
||||
polldata.fd = DNSServiceRefSockFD(ref);
|
||||
polldata.events = POLLIN;
|
||||
|
||||
fds = poll(&polldata, 1, 1000 * timeout);
|
||||
fds = poll(&polldata, 1, timeout);
|
||||
|
||||
# else /* select() */
|
||||
#else /* select() */
|
||||
FD_ZERO(&input_set);
|
||||
FD_SET(DNSServiceRefSockFD(ref), &input_set);
|
||||
|
||||
# ifdef WIN32
|
||||
stimeout.tv_sec = (long)timeout;
|
||||
# else
|
||||
stimeout.tv_sec = timeout;
|
||||
# endif /* WIN32 */
|
||||
stimeout.tv_usec = 0;
|
||||
stimeout.tv_sec = ((int)timeout) / 1000;
|
||||
stimeout.tv_usec = ((int)(timeout) * 1000) % 1000000;
|
||||
|
||||
fds = select(DNSServiceRefSockFD(ref)+1, &input_set, NULL, NULL,
|
||||
&stimeout);
|
||||
# endif /* HAVE_POLL */
|
||||
timeout < 0.0 ? NULL : &stimeout);
|
||||
#endif /* HAVE_POLL */
|
||||
|
||||
if (fds < 0)
|
||||
{
|
||||
@@ -1606,7 +1562,7 @@ _httpResolveURI(
|
||||
* comes in, do an additional domain resolution...
|
||||
*/
|
||||
|
||||
if (domainsent == 0 && domain && _cups_strcasecmp(domain, "local."))
|
||||
if (domainsent == 0 && (domain && _cups_strcasecmp(domain, "local.")))
|
||||
{
|
||||
if (options & _HTTP_RESOLVE_STDERR)
|
||||
fprintf(stderr,
|
||||
@@ -1615,11 +1571,10 @@ _httpResolveURI(
|
||||
domain ? domain : "");
|
||||
|
||||
domainref = ref;
|
||||
if (DNSServiceResolve(&domainref,
|
||||
kDNSServiceFlagsShareConnection,
|
||||
if (DNSServiceResolve(&domainref, kDNSServiceFlagsShareConnection,
|
||||
0, hostname, regtype, domain,
|
||||
http_resolve_cb,
|
||||
&uribuf) == kDNSServiceErr_NoError)
|
||||
http_resolve_cb, &uribuf)
|
||||
== kDNSServiceErr_NoError)
|
||||
domainsent = 1;
|
||||
}
|
||||
|
||||
@@ -1653,96 +1608,24 @@ _httpResolveURI(
|
||||
|
||||
DNSServiceRefDeallocate(ref);
|
||||
}
|
||||
# else /* HAVE_AVAHI */
|
||||
if ((uribuf.poll = avahi_simple_poll_new()) != NULL)
|
||||
{
|
||||
avahi_simple_poll_set_func(uribuf.poll, http_poll_cb, NULL);
|
||||
|
||||
if ((client = avahi_client_new(avahi_simple_poll_get(uribuf.poll),
|
||||
0, http_client_cb,
|
||||
&uribuf, &error)) != NULL)
|
||||
{
|
||||
if (avahi_service_resolver_new(client, AVAHI_IF_UNSPEC,
|
||||
AVAHI_PROTO_UNSPEC, hostname,
|
||||
regtype, "local.", AVAHI_PROTO_UNSPEC, 0,
|
||||
http_resolve_cb, &uribuf) != NULL)
|
||||
{
|
||||
time_t start_time = time(NULL),
|
||||
/* Start time */
|
||||
end_time = start_time + 90;
|
||||
/* End time */
|
||||
int pstatus; /* Poll status */
|
||||
|
||||
pstatus = avahi_simple_poll_iterate(uribuf.poll, 2000);
|
||||
|
||||
if (pstatus == 0 && !resolved_uri[0] && domain &&
|
||||
_cups_strcasecmp(domain, "local."))
|
||||
{
|
||||
/*
|
||||
* Resolve for .local hasn't returned anything, try the listed
|
||||
* domain...
|
||||
*/
|
||||
|
||||
avahi_service_resolver_new(client, AVAHI_IF_UNSPEC,
|
||||
AVAHI_PROTO_UNSPEC, hostname,
|
||||
regtype, domain, AVAHI_PROTO_UNSPEC, 0,
|
||||
http_resolve_cb, &uribuf);
|
||||
}
|
||||
|
||||
while (!pstatus && !resolved_uri[0] && time(NULL) < end_time)
|
||||
{
|
||||
if ((pstatus = avahi_simple_poll_iterate(uribuf.poll, 2000)) != 0)
|
||||
break;
|
||||
|
||||
/*
|
||||
* If it hasn't resolved within 5 seconds set the offline-report
|
||||
* printer-state-reason...
|
||||
*/
|
||||
|
||||
if ((options & _HTTP_RESOLVE_STDERR) && offline == 0 &&
|
||||
time(NULL) > (start_time + 5))
|
||||
{
|
||||
fputs("STATE: +offline-report\n", stderr);
|
||||
offline = 1;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Collect the result (if we got one).
|
||||
*/
|
||||
|
||||
if (resolved_uri[0])
|
||||
uri = resolved_uri;
|
||||
}
|
||||
|
||||
avahi_client_free(client);
|
||||
}
|
||||
|
||||
avahi_simple_poll_free(uribuf.poll);
|
||||
}
|
||||
# endif /* HAVE_DNSSD */
|
||||
|
||||
if (options & _HTTP_RESOLVE_STDERR)
|
||||
{
|
||||
if (uri)
|
||||
{
|
||||
fprintf(stderr, "DEBUG: Resolved as \"%s\"...\n", uri);
|
||||
fputs("STATE: -connecting-to-device,offline-report\n", stderr);
|
||||
}
|
||||
else
|
||||
{
|
||||
fputs("DEBUG: Unable to resolve URI\n", stderr);
|
||||
fputs("STATE: -connecting-to-device\n", stderr);
|
||||
}
|
||||
|
||||
fputs("STATE: -connecting-to-device,offline-report\n", stderr);
|
||||
}
|
||||
|
||||
#else /* HAVE_DNSSD || HAVE_AVAHI */
|
||||
#else
|
||||
/*
|
||||
* No DNS-SD support...
|
||||
*/
|
||||
|
||||
uri = NULL;
|
||||
#endif /* HAVE_DNSSD || HAVE_AVAHI */
|
||||
#endif /* HAVE_DNSSD */
|
||||
|
||||
if ((options & _HTTP_RESOLVE_STDERR) && !uri)
|
||||
_cupsLangPrintFilter(stderr, "ERROR", _("Unable to find printer."));
|
||||
@@ -1763,35 +1646,6 @@ _httpResolveURI(
|
||||
}
|
||||
|
||||
|
||||
#ifdef HAVE_AVAHI
|
||||
/*
|
||||
* 'http_client_cb()' - Client callback for resolving URI.
|
||||
*/
|
||||
|
||||
static void
|
||||
http_client_cb(
|
||||
AvahiClient *client, /* I - Client information */
|
||||
AvahiClientState state, /* I - Current state */
|
||||
void *context) /* I - Pointer to URI buffer */
|
||||
{
|
||||
DEBUG_printf(("7http_client_cb(client=%p, state=%d, context=%p)", client,
|
||||
state, context));
|
||||
|
||||
/*
|
||||
* If the connection drops, quit.
|
||||
*/
|
||||
|
||||
if (state == AVAHI_CLIENT_FAILURE)
|
||||
{
|
||||
_http_uribuf_t *uribuf = (_http_uribuf_t *)context;
|
||||
/* URI buffer */
|
||||
|
||||
avahi_simple_poll_quit(uribuf->poll);
|
||||
}
|
||||
}
|
||||
#endif /* HAVE_AVAHI */
|
||||
|
||||
|
||||
/*
|
||||
* 'http_copy_decode()' - Copy and decode a URI.
|
||||
*/
|
||||
@@ -1927,16 +1781,13 @@ http_resolve_cb(
|
||||
const unsigned char *txtRecord, /* I - TXT record data */
|
||||
void *context) /* I - Pointer to URI buffer */
|
||||
{
|
||||
_http_uribuf_t *uribuf = (_http_uribuf_t *)context;
|
||||
/* URI buffer */
|
||||
const char *scheme, /* URI scheme */
|
||||
*hostptr, /* Pointer into hostTarget */
|
||||
*reskey, /* "rp" or "rfo" */
|
||||
*resdefault; /* Default path */
|
||||
char resource[257], /* Remote path */
|
||||
*hostptr; /* Pointer into hostTarget */
|
||||
char rp[257], /* Remote printer */
|
||||
fqdn[256]; /* FQDN of the .local name */
|
||||
const void *value; /* Value from TXT record */
|
||||
uint8_t valueLen; /* Length of value */
|
||||
_http_uribuf_t *uribuf; /* URI buffer */
|
||||
|
||||
|
||||
DEBUG_printf(("7http_resolve_cb(sdRef=%p, flags=%x, interfaceIndex=%u, "
|
||||
@@ -1945,6 +1796,8 @@ http_resolve_cb(
|
||||
interfaceIndex, errorCode, fullName, hostTarget, port, txtLen,
|
||||
txtRecord, context));
|
||||
|
||||
uribuf = (_http_uribuf_t *)context;
|
||||
|
||||
/*
|
||||
* Figure out the scheme from the full name...
|
||||
*/
|
||||
@@ -1968,29 +1821,17 @@ http_resolve_cb(
|
||||
* Extract the "remote printer" key from the TXT record...
|
||||
*/
|
||||
|
||||
if ((uribuf->options & _HTTP_RESOLVE_FAXOUT) &&
|
||||
(!strcmp(scheme, "ipp") || !strcmp(scheme, "ipps")))
|
||||
{
|
||||
reskey = "rfo";
|
||||
resdefault = "/ipp/faxout";
|
||||
}
|
||||
else
|
||||
{
|
||||
reskey = "rp";
|
||||
resdefault = "/";
|
||||
}
|
||||
|
||||
if ((value = TXTRecordGetValuePtr(txtLen, txtRecord, reskey,
|
||||
if ((value = TXTRecordGetValuePtr(txtLen, txtRecord, "rp",
|
||||
&valueLen)) != NULL)
|
||||
{
|
||||
if (((char *)value)[0] == '/')
|
||||
{
|
||||
/*
|
||||
* Value (incorrectly) has a leading slash already...
|
||||
* "rp" value (incorrectly) has a leading slash already...
|
||||
*/
|
||||
|
||||
memcpy(resource, value, valueLen);
|
||||
resource[valueLen] = '\0';
|
||||
memcpy(rp, value, valueLen);
|
||||
rp[valueLen] = '\0';
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1998,18 +1839,19 @@ http_resolve_cb(
|
||||
* Convert to resource by concatenating with a leading "/"...
|
||||
*/
|
||||
|
||||
resource[0] = '/';
|
||||
memcpy(resource + 1, value, valueLen);
|
||||
resource[valueLen + 1] = '\0';
|
||||
rp[0] = '/';
|
||||
memcpy(rp + 1, value, valueLen);
|
||||
rp[valueLen + 1] = '\0';
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/*
|
||||
* Use the default value...
|
||||
* Default "rp" value is blank, mapping to a path of "/"...
|
||||
*/
|
||||
|
||||
strlcpy(resource, resdefault, sizeof(resource));
|
||||
rp[0] = '/';
|
||||
rp[1] = '\0';
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -2065,220 +1907,10 @@ http_resolve_cb(
|
||||
*/
|
||||
|
||||
httpAssembleURI(HTTP_URI_CODING_ALL, uribuf->buffer, uribuf->bufsize, scheme,
|
||||
NULL, hostTarget, ntohs(port), resource);
|
||||
NULL, hostTarget, ntohs(port), rp);
|
||||
|
||||
DEBUG_printf(("8http_resolve_cb: Resolved URI is \"%s\"...", uribuf->buffer));
|
||||
}
|
||||
|
||||
#elif defined(HAVE_AVAHI)
|
||||
/*
|
||||
* 'http_poll_cb()' - Wait for input on the specified file descriptors.
|
||||
*
|
||||
* Note: This function is needed because avahi_simple_poll_iterate is broken
|
||||
* and always uses a timeout of 0 (!) milliseconds.
|
||||
* (Avahi Ticket #364)
|
||||
*/
|
||||
|
||||
static int /* O - Number of file descriptors matching */
|
||||
http_poll_cb(
|
||||
struct pollfd *pollfds, /* I - File descriptors */
|
||||
unsigned int num_pollfds, /* I - Number of file descriptors */
|
||||
int timeout, /* I - Timeout in milliseconds (used) */
|
||||
void *context) /* I - User data (unused) */
|
||||
{
|
||||
(void)timeout;
|
||||
(void)context;
|
||||
|
||||
return (poll(pollfds, num_pollfds, 2000));
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'http_resolve_cb()' - Build a device URI for the given service name.
|
||||
*/
|
||||
|
||||
static void
|
||||
http_resolve_cb(
|
||||
AvahiServiceResolver *resolver, /* I - Resolver (unused) */
|
||||
AvahiIfIndex interface, /* I - Interface index (unused) */
|
||||
AvahiProtocol protocol, /* I - Network protocol (unused) */
|
||||
AvahiResolverEvent event, /* I - Event (found, etc.) */
|
||||
const char *name, /* I - Service name */
|
||||
const char *type, /* I - Registration type */
|
||||
const char *domain, /* I - Domain (unused) */
|
||||
const char *hostTarget, /* I - Hostname */
|
||||
const AvahiAddress *address, /* I - Address (unused) */
|
||||
uint16_t port, /* I - Port number */
|
||||
AvahiStringList *txt, /* I - TXT record */
|
||||
AvahiLookupResultFlags flags, /* I - Lookup flags (unused) */
|
||||
void *context) /* I - Pointer to URI buffer */
|
||||
{
|
||||
_http_uribuf_t *uribuf = (_http_uribuf_t *)context;
|
||||
/* URI buffer */
|
||||
const char *scheme, /* URI scheme */
|
||||
*hostptr, /* Pointer into hostTarget */
|
||||
*reskey, /* "rp" or "rfo" */
|
||||
*resdefault; /* Default path */
|
||||
char resource[257], /* Remote path */
|
||||
fqdn[256]; /* FQDN of the .local name */
|
||||
AvahiStringList *pair; /* Current TXT record key/value pair */
|
||||
char *value; /* Value for "rp" key */
|
||||
size_t valueLen = 0; /* Length of "rp" key */
|
||||
|
||||
|
||||
DEBUG_printf(("7http_resolve_cb(resolver=%p, "
|
||||
"interface=%d, protocol=%d, event=%d, name=\"%s\", "
|
||||
"type=\"%s\", domain=\"%s\", hostTarget=\"%s\", address=%p, "
|
||||
"port=%d, txt=%p, flags=%d, context=%p)",
|
||||
resolver, interface, protocol, event, name, type, domain,
|
||||
hostTarget, address, port, txt, flags, context));
|
||||
|
||||
if (event != AVAHI_RESOLVER_FOUND)
|
||||
{
|
||||
avahi_service_resolver_free(resolver);
|
||||
avahi_simple_poll_quit(uribuf->poll);
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* Figure out the scheme from the full name...
|
||||
*/
|
||||
|
||||
if (strstr(type, "_ipp."))
|
||||
scheme = "ipp";
|
||||
else if (strstr(type, "_printer."))
|
||||
scheme = "lpd";
|
||||
else if (strstr(type, "_pdl-datastream."))
|
||||
scheme = "socket";
|
||||
else
|
||||
scheme = "riousbprint";
|
||||
|
||||
if (!strncmp(type, "_ipps.", 6) || !strncmp(type, "_ipp-tls.", 9))
|
||||
scheme = "ipps";
|
||||
else if (!strncmp(type, "_ipp.", 5) || !strncmp(type, "_fax-ipp.", 9))
|
||||
scheme = "ipp";
|
||||
else if (!strncmp(type, "_http.", 6))
|
||||
scheme = "http";
|
||||
else if (!strncmp(type, "_https.", 7))
|
||||
scheme = "https";
|
||||
else if (!strncmp(type, "_printer.", 9))
|
||||
scheme = "lpd";
|
||||
else if (!strncmp(type, "_pdl-datastream.", 16))
|
||||
scheme = "socket";
|
||||
else
|
||||
{
|
||||
avahi_service_resolver_free(resolver);
|
||||
avahi_simple_poll_quit(uribuf->poll);
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* Extract the remote resource key from the TXT record...
|
||||
*/
|
||||
|
||||
if ((uribuf->options & _HTTP_RESOLVE_FAXOUT) &&
|
||||
(!strcmp(scheme, "ipp") || !strcmp(scheme, "ipps")))
|
||||
{
|
||||
reskey = "rfo";
|
||||
resdefault = "/ipp/faxout";
|
||||
}
|
||||
else
|
||||
{
|
||||
reskey = "rp";
|
||||
resdefault = "/";
|
||||
}
|
||||
|
||||
if ((pair = avahi_string_list_find(txt, reskey)) != NULL)
|
||||
{
|
||||
avahi_string_list_get_pair(pair, NULL, &value, &valueLen);
|
||||
|
||||
if (value[0] == '/')
|
||||
{
|
||||
/*
|
||||
* Value (incorrectly) has a leading slash already...
|
||||
*/
|
||||
|
||||
memcpy(resource, value, valueLen);
|
||||
resource[valueLen] = '\0';
|
||||
}
|
||||
else
|
||||
{
|
||||
/*
|
||||
* Convert to resource by concatenating with a leading "/"...
|
||||
*/
|
||||
|
||||
resource[0] = '/';
|
||||
memcpy(resource + 1, value, valueLen);
|
||||
resource[valueLen + 1] = '\0';
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/*
|
||||
* Use the default value...
|
||||
*/
|
||||
|
||||
strlcpy(resource, resdefault, sizeof(resource));
|
||||
}
|
||||
|
||||
/*
|
||||
* Lookup the FQDN if needed...
|
||||
*/
|
||||
|
||||
if ((uribuf->options & _HTTP_RESOLVE_FQDN) &&
|
||||
(hostptr = hostTarget + strlen(hostTarget) - 6) > hostTarget &&
|
||||
!_cups_strcasecmp(hostptr, ".local"))
|
||||
{
|
||||
/*
|
||||
* OK, we got a .local name but the caller needs a real domain. Start by
|
||||
* getting the IP address of the .local name and then do reverse-lookups...
|
||||
*/
|
||||
|
||||
http_addrlist_t *addrlist, /* List of addresses */
|
||||
*addr; /* Current address */
|
||||
|
||||
DEBUG_printf(("8http_resolve_cb: Looking up \"%s\".", hostTarget));
|
||||
|
||||
snprintf(fqdn, sizeof(fqdn), "%d", ntohs(port));
|
||||
if ((addrlist = httpAddrGetList(hostTarget, AF_UNSPEC, fqdn)) != NULL)
|
||||
{
|
||||
for (addr = addrlist; addr; addr = addr->next)
|
||||
{
|
||||
int error = getnameinfo(&(addr->addr.addr),
|
||||
httpAddrLength(&(addr->addr)),
|
||||
fqdn, sizeof(fqdn), NULL, 0, NI_NAMEREQD);
|
||||
|
||||
if (!error)
|
||||
{
|
||||
DEBUG_printf(("8http_resolve_cb: Found \"%s\".", fqdn));
|
||||
|
||||
if ((hostptr = fqdn + strlen(fqdn) - 6) <= fqdn ||
|
||||
_cups_strcasecmp(hostptr, ".local"))
|
||||
{
|
||||
hostTarget = fqdn;
|
||||
break;
|
||||
}
|
||||
}
|
||||
#ifdef DEBUG
|
||||
else
|
||||
DEBUG_printf(("8http_resolve_cb: \"%s\" did not resolve: %d",
|
||||
httpAddrString(&(addr->addr), fqdn, sizeof(fqdn)),
|
||||
error));
|
||||
#endif /* DEBUG */
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Assemble the final device URI using the resolved hostname...
|
||||
*/
|
||||
|
||||
httpAssembleURI(HTTP_URI_CODING_ALL, uribuf->buffer, uribuf->bufsize, scheme,
|
||||
NULL, hostTarget, port, resource);
|
||||
DEBUG_printf(("8http_resolve_cb: Resolved URI is \"%s\".", uribuf->buffer));
|
||||
|
||||
avahi_simple_poll_quit(uribuf->poll);
|
||||
}
|
||||
#endif /* HAVE_DNSSD */
|
||||
|
||||
|
||||
|
||||
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