Comparar commits

..

1 Commits

Autor SHA1 Mensagem Data
msweet 45a6252b81 Import cups.org releases
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/tags/release-1.6.2@4306 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-05-10 18:56:23 +00:00
803 arquivos alterados com 16353 adições e 76425 exclusões
-244
Ver Arquivo
@@ -1,244 +0,0 @@
CHANGES-1.6.txt
---------------
CHANGES IN CUPS V1.6.4
- Removed some duplicate size definitions for some ISO sizes that were
causing problems (<rdar://problem/14722721>)
- The IPP backend did not add the "last-document" attribute
(<rdar://problem/114660379>)
- Added a SyncOnClose directive to cups-files.conf to force cupsd to
call fsync before closing any configuration/state files it writes
(<rdar://problem/14523043>)
- Added USB quirk rule for Lexmark E238 (<rdar://problem/14493054>)
- Closed server connections were still not always detected
(<rdar://problem/14484313>)
- The libusb-based USB backend now loads its list of quirks from files
in /usr/share/cups/usb instead of using a hardcoded table
(<rdar://problem/14442769>)
- The scheduler did not properly register ICC color profiles with
colord (<rdar://problem/14455625>)
CHANGES IN CUPS V1.6.3
- The configure script now prefers Clang over GCC.
- Fixed a compile problem on AIX (STR #4307)
- The default IPP version did not always get set before creating a new
IPP request message (<rdar://problem/14401718>)
- The lp, lpq, lpr, and lpstat now display an error message advising the
use of the /version=1.1 ServerName option (<rdar://problem/14290628>)
- Added documentation about the /version=1.1 option to ServerName in
client.conf (<rdar://problem/14216262>)
- httpStatus(HTTP_ERROR) did not return a useful error message
(<rdar://problem/14217326>)
- The lp, lpq, lpr, and lpstat commands incorrectly ignored the default
printer set in the lpoptions file (<rdar://problem/14216472>)
- Fixed a URI encoding issue for hostnames containing the ` (backquote)
character (<rdar://problem/14243133>)
- Added support for RFC 6874's IPv6 link local address format in URIs
(<rdar://problem/13979453>)
- The USB backend could crash on libusb-based systems if USB was
disabled in the BIOS (<rdar://problem/13875729>)
- Fixed a rounding error in the PWG media size mapping code
(<rdar://problem/13493241>)
- Fixed several ipptool test files that used old STATUS names.
- Kerberos credentials could get truncated when printing to a shared
printer.
- Printing using "ipps" URIs was not encrypted.
- Insecure ICC profiles prevented installation of user profiles for a
printer on OS X.
- Added more USB quirks for the libusb-based backend (STR #4311,
<rdar://problem/13736470>)
- The Russian web interface templates were broken (STR #4310)
- The scheduler no longer tries to do Kerberos authentication over the
loopback interface.
- The IPP backend could fail to pause a job for authentication
(STR #4298)
- Fixed a regression on the handling of auth keys on OS X if the
cups-files.conf was not present or did not contain a SystemAuthKey
value.
- The scheduler incorrectly did a reverse lookup of the server address
when HostNameLookups was turned off (STR #4302)
- The scheduler incorrectly computed the final content type value when
null filters were present.
CHANGES IN CUPS V1.6.2
- Documentation fixes (STR #4229, STR #4239, STR #4234, STR #4248,
STR #4259)
- Security: All file, directory, user, and group settings are now stored
in a separate cups-files.conf configuration file that cannot be set
through the CUPS web interface or APIs (STR #4223)
- Added a Czech localization (STR #4201)
- Added a French localization (STR #4247)
- Added a Russian localization (STR #4228, STR #4285)
- Updated the Catalan localization (STR #4202)
- Local certificate authentication did not guard against an empty
certification file (STR #4293)
- The scheduler did not reject device URIs with spaces.
- Added USB quirk rule for Epson Stylus Photo 750 (STR #4286)
- The IPP backend could crash if the printer disconnects early
(STR #4284)
- cupsGetPPD did not work with statically-configured CUPS shared
queues (STR #4178)
- The scheduler did not support long MIME media types (STR #4270)
- The cupsfilter command did not set the CHARSET environment variable
for the text filters (STR #4273)
- The lp command did not show errors for unknown "--foo" (STR #4261)
- Bad IPP responses could crash ipptool (STR #4262)
- Updated USB quirk rules for Canon and Xerox printers (STR #4217,
STR #4263)
- Added USB blacklisting for printers that require a custom backend
(STR #4218)
- The PPD compiler did not correctly JCL options (STR #4115, STR #4203)
- The ipptool program now supports DEFINE-MATCH and DEFINE-NO-MATCH
predicates for STATUS directives.
- Fixed a problem with local Kerberos authentication (STR #4140)
- Coverity scan: fixed some minor issues (STR #4242)
- The scheduler did not remove color profiles after deleting a printer
(STR #4232, STR #4276)
- The CUPS library did not always detect a timed out connection to the
server which could cause temporary loss of printing from applications
(STR #4187)
- The ipptool program now supports variable substitution in OPERATION
and DELAY directives (STR #4175)
- The IPP backend now stops queues when the server configuration
prevents successful job submission (STR #4125)
- The XML output of ipptool contained empty dictionaries (STR #4136)
- The scheduler did not delete job control backup files (STR #4244)
- cupsGetPPD3 could return a local PPD instead of the correct remote
PPD.
- The scheduler incorrectly advertised auth-info-required for local
queues needing local authentication (STR #4205)
- CUPS 1.6 clients using the ServerName directive in client.conf did not
work with CUPS 1.3.x or older servers (STR #4231, STR #4291)
- The SNMP backend now tries to work around broken printers that use a
newline to separate key/value pairs.
- The IPP backend did not send a cancel request to printers when a job
was canceled and the printer did not support Create-Job.
- Fixed EPM packaging files (STR #4199)
- OpenBSD build fix (STR #4195, STR #4196, STR #4197)
- The scheduler could crash when using Avahi (STR #4183, STR #4192,
STR #4200, STR #4213)
- The IPP backend could get stuck in an endless loop on certain network
errors (STR #4194)
- 32-bit builds failed on Debian (STR #4133)
- The scheduler no longer accepts or sends job description attributes.
- The IPP backend now works around some conformance issues for broken
printers (STR #4190)
- cupsBackendReport() now filters out all control characters from the
reported 1284 device IDs (STR #4124)
- The scheduler no longer allows job-name values that are not valid
network Unicode strings (STR #4072)
- The web interface did not preserve the order of classes, jobs, or
printers (STR #4170)
- The network backends now support disabling of SNMP supply level
queries via the "snmp" URI option (STR #4106)
- The IPP backend did not specify the compression used (STR #4181)
- ipptool did not support octetString values.
- The scheduler did not recognize dnssd: or ipps: URIs as Bonjour shared
queues (STR #4158)
- Applications could not get the PPD file for statically-configured
Bonjour-shared print queues (STR #4159)
- The cupsd.conf file included obsolete browsing directives (STR #4157)
- Fixed a USB backend compatibility issue on systems using libusb
(STR #4155, STR #4191)
- Some Bonjour features were not available on systems with Avahi
(STR #4156)
- CUPS now includes the port number in the Host: header for HTTP
requests.
- Fixed REPEAT-MATCH for STATUS and EXPECT - was incorrectly erroring
out.
CHANGES IN CUPS V1.6.1
- Documentation fix (STR #4149)
- RPM packaging fixes (STR #4129, #4145)
- The Japanese and English web interface headers were swapped
(STR #4148)
CHANGES IN CUPS V1.6.0
- Document changes (STR #4131)
- Added new Catalan (STR #4107) and Spanish (STR #4137) localizations.
CHANGES IN CUPS V1.6rc1
- Added a new Japanese localization (STR #4122)
- The SNMP backend no longer exits if it is unable to obtain an IPv6
socket (STR #4109)
- The LPD backend incorrectly used "localhost" in the control file
instead of the current hostname.
CHANGES IN CUPS V1.6b1
- Documentation updates (STR #3927, STR #3980, STR #4010, STR #4068)
- The scheduler now consolidates all PPD updates from filters at the
end of the job (STR #4075)
- CUPS now supports color management using colord (STR #3808)
- CUPS now supports Bonjour using Avahi (STR #3066)
- The PreserveJobFiles and PreserveJobHistory directives now support
specification of a time interval (STR #3143)
- PPD files can now be archived in (gzip'd) tar files to further reduce
the disk space used by PPD files (STR #3772)
- The network backends now deal with printers that report their levels
in percent but do not specify a maximum capacity of 100 (STR #3551)
- The network backends now report full/almost-full waste bins in
printers along with end-of-life for cleaning pads (STR #4017)
- Added a configure option to set the permissions of the installed
cupsd (STR #3459)
- Added a new WITH-ALL-VALUES directive to ipptool EXPECT predicates
(STR #3949)
- CUPS now supports a User directive in client.conf and the CUPS_USER
environment variable for overriding the default username (STR #3114)
- Now set the PJL USERNAME variable as needed (STR #3100)
- Added support for usernames and passwords longer than 32 characters
(STR #2856)
- Added a new MaxHoldTime directive to automatically cancel jobs that
have been held indefinitely after a specific number of seconds
(STR #2291)
- The LPD backend now uses the originating host name when it is not the
local system (STR #2053)
- CUPS now prefers the suffix "dpcm" when reporting resolution in dots-
per-centimeter (STR #4006)
- The configure script and build system no longer support building of
separate 32-bit and 64-bit libraries.
- The "brightness", "columns", "fitplot", "gamma", "hue",
"natural-scaling", "penwidth", "position", "ppi", "saturation", and
"scaling" options are not longer supported (STR #4010)
- The "page-bottom", "page-left", "page-right", "page-top",
"prettyprint", and "wrap" options have been deprecated (STR #4010)
- The scheduler now reports the standard "number-of-documents" attribute
instead of the CUPS-specific "document-count" attribute in
job objects.
- Added new destination connection and enumeration functions (STR #3924)
- Added new option, localization, and job submission functions that do
not depend on PPD files (STR #3925)
- Added a new MaxJobTime directive for cupsd that specifies the maximum
amount of time allowed for a job to complete before it is canceled.
- The default password callback now supports passwords up to 127
characters.
- The scheduler now supports a DefaultAuthType of "auto" to
automatically choose between Basic (username/password) and Negotiate
(Kerberos) authentication.
- cupsSideChannelSNMPGet/Walk now support OIDs and values up to 64k in
length.
- CUPS no longer supports automatic remote printers or implicit classes
via the CUPS, LDAP, or SLP protocols (STR #3922, STR #3923)
- The PPD APIs are now deprecated and will be removed in a future
version of CUPS (STR #3927)
- The default IPP version for requests is now 2.0 (STR #3929)
- The IPP APIs no longer expose the ipp_t or ipp_attribute_t structures
and instead provide accessor functions (STR #3928)
- The scheduler will no longer run programs with group write permission.
- The PHP module has been removed (STR #3932)
- The bannertops, commandtoescpx, commandtopclx, imagetops,
imagetoraster, pdftops, rastertoescpx, rastertopclx, and texttops
filters have been removed (STR #3930)
- The serial and parallel backends have been removed (STR 3935)
-167
Ver Arquivo
@@ -1,167 +0,0 @@
CHANGES-IPPTOOL.txt - 2014-03-28
--------------------------------
This file provides a list of changes to the ipptool binary distribution posted
on cups.org.
2014-03-28
- Fixed SSL support on Windows (STR #4358)
2013-07-15
- New ippfind tool now included with ipptool.
- Added support for automatically extending the timeout when all of the
request data has not yet been written (all platforms but Windows
which does not support it...)
- Fixed several ipptool test files that used old STATUS names.
2013-04-18
- Fixed some HTTP issues with authentication and compression.
- The IPP/1.1 test file did not allow for sufficient retries when
printing.
- The IPP/1.1 test file did not allow for empty printer-name values.
- The IPP Everywhere test file contained numerous errors.
- The color.jpg test file used a progressive mode instead of the
baseline JPEG mode.
- The IPP/1.1 test file referenced "color.jpeg" instead of "color.jpg".
2013-01-31
- Added support for DEFINE-MATCH and DEFINE-NO-MATCH as STATUS
predicates.
- Added support for WITH-VALUE and resolution values.
- Added support for SKIP-IF-MISSING (skip test if file is missing)
- Added support for octetString values.
- Added support for document compression in Print-Job and Send-Document
requests.
- Fixed REPEAT-MATCH for STATUS and EXPECT - was incorrectly erroring
out.
- Fixed a bug where bad IPP responses would cause ipptool to crash.
2012-02-28
- Changed behavior of WITH-VALUES "/regex/" to not require all values to
match.
- Added WITH-ALL-VALUES directive for EXPECT predicates that require all
values to match.
- Updated test files to use WITH-ALL-VALUES where necessary.
- Updated test files to use new ABNF for media names from PWG Media
Names 2.0.
2012-02-06
- Fixed the packaging of ipptool on Windows (removed unnecessary DLLs)
- Fixed an crash in ipptool when mixing DISPLAY with -I and a failed
request.
- Added a Print-Job test file.
- Added a "setdebug" batch file for Windows
- Added support for a CUPS_DISABLE_ASYNC_CONNECT environment variable.
2012-01-10
- Fixed an issue with the IPP/1.1 test file where the "waiting for job
completion" test did not work.
- The attribute groups out of order error was not shown for the
operation-attributes-tag group.
2011-12-02
- Fixed a truncated XML output bug that would happen for certain errors.
- Fixed the order-of-groups tests.
- Fixed "WITH-VALUE >N" for rangeOfInteger attributes.
- The Windows installer was missing the get-printer-attributes.test
file.
- The Linux binaries are now compiled for all LSB 4.x-compliant Linux
distributions.
- The Linux binaries no longer support SSL or TLS.
2011-10-05
- Fixed a crasher bug that showed up on Windows.
- The IPP/1.1 test would hang if the initial Print-Job test failed.
- Fixed a typo in the IPP/2.0 test.
2011-10-03
- Using OF-TYPE with the "no-value" or "unknown" out-of-band value tags
now works without special WITH-VALUE strings.
- ipptool now shows an error when an attribute appears more than once
within the same attribute group.
- ipptool did not display attributes as specified by the DISPLAY
directive when a test error failed.
- Fixed one spot where DEFINE-VALUE was still treated as an error when
the EXPECT test failed.
- uriScheme values were not displayed properly.
- Updated the IPP/1.1 tests to properly validate support for
job-hold-until-default and job-hold-until-supported when the Hold-Job
operation is supported.
- Updated the IPP/1.1 tests to properly check for the various standard
media sizes for the printing tests.
- Updated the IPP/1.1 tests to accept "no-value" for media-default an
orientation-requested-default.
- Updated the IPP/1.1 tests to accept "unknown" for job-state.
- Updated the IPP/1.1 tests to not perform the bogus URI printing tests
unless the "document-uri" variable is defined.
- Updated the IPP/2.0 tests to properly validate media-col
"media-xxx-supported" attributes.
- Updated the IPP/2.2 tests to properly validate media-ready and
media-col-ready.
2011-09-28
- Test output now includes a summary and overall score at the end.
- The MATCH-VALUE predicate now correctly deals with a failed EXPECT
condition.
- The IPP/1.1 test suite now looks for legacy media names and uses them
if the corresponding PWG standard names are not present.
- The IPP/1.1 test suite now tests the Print-Job+Release-Job when the
printer supports the job-hold-until attribute, Hold-Job operation, and
Release-Job operation.
2011-09-21
- Fixes for HTTP chunking, timeout, and encryption issues reported by
various users.
- Greatly improved IPP tests with added IPP/2.2 tests.
- New test documents - 1-page and 4-page mixed A4/Letter PDF/PS and a
couple JPEGs.
- New REPEAT directives to programmatically repeat tests as needed.
2011-08-16
- The Windows version no longer requires Visual Studio to be installed.
- The Windows version now supports SSL.
- Added "ipps" URI support.
- Added a new "-T" option.
- Added support for fractional seconds for the -i option and DELAY
directive.
- Added support for authentication.
- Added DEFINE-MATCH, DEFINE-NO-MATCH, DEFINE-VALUE, IF-NOT-DEFINED,
IGNORE-ERRORS, SKIP-IF-DEFINED, SKIP-IF-NOT-DEFINED,
SKIP-PREVIOUS-ERROR directives.
- WITH-VALUE now supports variable expansion.
- Updated the IPP/1.1 conformance test to skip the "my-jobs different
user" test if the printer URI contains a username.
- Updated the IPP conformance tests to validate media, media-default,
and media-supported values.
- No longer error out if a Printer returns a different version number in
the response when the request contains the version 0.0.
2010-10-16
- Initial release of standalone binary.
+167 -171
Ver Arquivo
@@ -1,186 +1,182 @@
CHANGES.txt - 1.7.2 - 2014-04-10
CHANGES.txt - 1.6.2 - 2013-03-18
--------------------------------
CHANGES IN CUPS V1.7.2
- Security: The scheduler now blocks URLs containing embedded HTML
(STR #4356)
- Documentation fixes (STR #3259, STR #4346, STR #4355)
- Fixed the Japanese localization (STR #4385)
- Added a German localization (STR #4363)
- The cupsfilter command incorrectly read the cupsd.conf file; it now
reads the cups-files.conf file instead.
- Fixed OS X builds with Xcode 5.x (<rdar://problem/15914959>)
- Fixed SSL support on Windows (STR #4358)
- Fixed documentation and naming of Create-Job/Printer-Subscriptions
operations (STR #4389)
- Phone numbers in fax jobs were not properly filtered for IPP FaxOut
(<rdar://problem/16351701>)
- Fixed a memory leak in the label printer driver (STR #4393)
- Updated Linux "relro" support (STR #4349)
- cupsEnumDests did not set the "is_default" field (STR #4332)
- cupsDoIORequest could miss the server status, causing failed lpadmin
and other administrative commands (STR #4386)
- cupsEnumDests didn't always call the callback function (STR #4380)
- "lp -i job-id -H hold" did not work (STR #nnn)
- CUPS didn't compile on older platforms (STR #4338)
- Several libcups files did not have the Apple license exception
notice (STR #4361)
- Fixed a D-BUS threading issue that caused the scheduler to crash
(STR #4347)
- The scheduler now automatically reconnects to Avahi as needed
(STR #4370, STR #4373)
- The scheduler did not handle GET requests for the log files properly
(STR #3265)
- The dnssd backend did not always report all discovered printers using
Avahi (STR #4365)
- The Zebra printer driver did not properly handle negative "label top"
values (STR #4354)
- The scheduler did not always update the MakeModel value in
printers.conf after updating the driver (STR #4264)
- The LPD mini daemon did not support print jobs larger than 2GB
(STR #4351)
- Fixed a bug in the status reading code when sending a compressed data
stream to an IPP printer/server (<rdar://problem/16019623>)
- The IPP backend might not include all job attributes in Validate-Job
operations (<rdar://problem/16025435>)
- Fixed some clang-reported issues (<rdar://problem/15936066>)
CHANGES IN CUPS V1.6.2
- Documentation fixes (STR #4229, STR #4239, STR #4234, STR #4248,
STR #4259)
- Security: All file, directory, user, and group settings are now stored
in a separate cups-files.conf configuration file that cannot be set
through the CUPS web interface or APIs (STR #4223)
- Added a Czech localization (STR #4201)
- Added a French localization (STR #4247)
- Added a Russian localization (STR #4228, STR #4285)
- Updated the Catalan localization (STR #4202)
- Local certificate authentication did not guard against an empty
certification file (STR #4293)
- The scheduler did not reject device URIs with spaces.
- Added USB quirk rule for Epson Stylus Photo 750 (STR #4286)
- The IPP backend could crash if the printer disconnects early
(STR #4284)
- cupsGetPPD did not work with statically-configured CUPS shared
queues (STR #4178)
- The scheduler did not support long MIME media types (STR #4270)
- The cupsfilter command did not set the CHARSET environment variable
for the text filters (STR #4273)
- The lp command did not show errors for unknown "--foo" (STR #4261)
- Bad IPP responses could crash ipptool (STR #4262)
- Updated USB quirk rules for Canon and Xerox printers (STR #4217,
STR #4263)
- Added USB blacklisting for printers that require a custom backend
(STR #4218)
- The PPD compiler did not correctly JCL options (STR #4115, STR #4203)
- The ipptool program now supports DEFINE-MATCH and DEFINE-NO-MATCH
predicates for STATUS directives.
- Fixed a problem with local Kerberos authentication (STR #4140)
- Coverity scan: fixed some minor issues (STR #4242)
- The scheduler did not remove color profiles after deleting a printer
(STR #4232, STR #4276)
- The CUPS library did not always detect a timed out connection to the
server which could cause temporary loss of printing from applications
(STR #4187)
- The ipptool program now supports variable substitution in OPERATION
and DELAY directives (STR #4175)
- The IPP backend now stops queues when the server configuration
prevents successful job submission (STR #4125)
- The XML output of ipptool contained empty dictionaries (STR #4136)
- The scheduler did not delete job control backup files (STR #4244)
- cupsGetPPD3 could return a local PPD instead of the correct remote
PPD.
- The scheduler incorrectly advertised auth-info-required for local
queues needing local authentication (STR #4205)
- CUPS 1.6 clients using the ServerName directive in client.conf did not
work with CUPS 1.3.x or older servers (STR #4231, STR #4291)
- The SNMP backend now tries to work around broken printers that use a
newline to separate key/value pairs.
- The IPP backend did not send a cancel request to printers when a job
was canceled and the printer did not support Create-Job.
- Fixed EPM packaging files (STR #4199)
- OpenBSD build fix (STR #4195, STR #4196, STR #4197)
- The scheduler could crash when using Avahi (STR #4183, STR #4192,
STR #4200, STR #4213)
- The IPP backend could get stuck in an endless loop on certain network
errors (STR #4194)
- 32-bit builds failed on Debian (STR #4133)
- The scheduler no longer accepts or sends job description attributes.
- The IPP backend now works around some conformance issues for broken
printers (STR #4190)
- cupsBackendReport() now filters out all control characters from the
reported 1284 device IDs (STR #4124)
- The scheduler no longer allows job-name values that are not valid
network Unicode strings (STR #4072)
- The web interface did not preserve the order of classes, jobs, or
printers (STR #4170)
- The network backends now support disabling of SNMP supply level
queries via the "snmp" URI option (STR #4106)
- The IPP backend did not specify the compression used (STR #4181)
- ipptool did not support octetString values.
- The scheduler did not recognize dnssd: or ipps: URIs as Bonjour shared
queues (STR #4158)
- Applications could not get the PPD file for statically-configured
Bonjour-shared print queues (STR #4159)
- The cupsd.conf file included obsolete browsing directives (STR #4157)
- Fixed a USB backend compatibility issue on systems using libusb
(STR #4155, STR #4191)
- Some Bonjour features were not available on systems with Avahi
(STR #4156)
- CUPS now includes the port number in the Host: header for HTTP
requests.
- Fixed REPEAT-MATCH for STATUS and EXPECT - was incorrectly erroring
out.
CHANGES IN CUPS V1.7.1
CHANGES IN CUPS V1.6.1
- Security: the lppasswd program incorrectly used settings from
~/.cups/client.conf (STR #4319)
- Auto debug logging was broken in 1.7.0 (<rdar://problem/15331639>)
- Some gzip'd PPD files could not be used (<rdar://problem/15386424>)
- Cleaned up some job logging in the scheduler
(<rdar://problem/15332672>)
- ATTR messages could cause string pool memory corruption in the
scheduler (<rdar://problem/15382819>)
- The RPM spec file did not list the build requirements; this was on
purpose, but now we are listing the Red Hat package names
(<rdar://problem/15375760>, STR #4322)
- Printing to a raw queue could result in corrupt output due to
opportunistic compression (<rdar://problem/15008524>)
- The GNU TLS support code triggered many compiler warnings due to the
use of old GNU TLS compatibility type names
(<rdar://problem/15392966>)
- The "make check" test suite did not work on Linux without the
cups-filters package installed (<rdar://problem/14292998>)
- Japanese PPDs using with the Shift-JIS encoding did not work
(<rdar://problem/15427759>)
- "tel:" URIs incorrectly had slashes (<rdar://problem/15418463>)
- The libusb-based USB backend incorrectly used write timeouts
(<rdar://problem/15564888>)
- Shared printers could become inaccessible after a few days on OS X
(<rdar://problem/15426838>)
- The IPP backend did not wait for a busy printer to become available
before attempting to print (<rdar://problem/15465667>)
- CUPS did not support "auto-monochrome" or "process-monochrome" for the
"print-color-mode" option (<rdar://problem/15482520>)
- Using "@IF(name)" in an Allow or Deny rule did not work (STR #4328)
- lpq and lpstat did not list jobs in the correct order when priorities
were specified (STR #4326)
- The D-BUS notifier did not remove its lockfile (STR #4314)
- CUPS incorrectly used the USER environment variable when the name did
not match the user ID (STR #4327)
- Documentation fix (STR #4149)
- RPM packaging fixes (STR #4129, #4145)
- The Japanese and English web interface headers were swapped
(STR #4148)
CHANGES IN CUPS V1.7.0
CHANGES IN CUPS V1.6.0
- Updated Japanese localization.
- The lpadmin command did not send the PPD name from the "-m" option
(<rdar://problem/15264697>)
- Network backends now use the prtMarkerSuppliesClass property to
determine the direction of supply level values
(<rdar://problem/14302628>)
- The scheduler did not remove backup PPD files when a printer was
deleted (<rdar://problem/15065555>)
- The scheduler incorrectly responded to HEAD requests when the web
interface was disabled (<rdar://problem/15090332>)
- The scheduler did not respond using the hostname specified by the
client (<rdar://problem/14583574>)
- Fax queues did not work when shared via Bonjour
(<rdar://problem/14498310>)
- Error messages from the scheduler were not localized using the
language specified in the client's IPP request
(<rdar://problem/14128011>)
- Added an Italian localization (<rdar://problem/14481578>)
- Fixed a couple memory leaks in ippfind that were reported by Clang.
- Fixed a compile issue on 64-bit Linux with Clang - need to use the
-pie option instead of -Wl,-pie now (<rdar://problem/14480938>)
- The ippfind utility reported the wrong port numbers when compiled
against Avahi (<rdar://problem/14508324>)
- httpGetFd, httpGetFile, httpPutFd, and httpPutFile did not
automatically reconnect if the server closed the connecion after the
previous response.
- Fixed a compile error in libcups (<rdar://problem/14467141>)
- The scheduler incorrectly did not pass a FINAL_CONTENT_TYPE
environment variable to the filters or backend
(<rdar://problem/14355011>)
- The cups-exec helper program could fail randomly on OS X due to
sandbox violations when closing excess file descriptors
(<rdar://problem/14421943>)
- The scheduler incorrectly did not use the kqueue interface on OS X.
- Document changes (STR #4131)
- Added new Catalan (STR #4107) and Spanish (STR #4137) localizations.
CHANGES IN CUPS V1.7rc1
CHANGES IN CUPS V1.6rc1
- Printer xxx-default values were not reported by Get-Printer-Attributes
or lpoptions (<rdar://problem/14401795>)
- Fixed deprecation warnings for many functions on OS X so they are tied
to the deployment version when building (<rdar://problem/14210079>)
- Fixed a build issue on ARM-based Linux systems - unable to validate
va_list arguments.
- Added a new ippfind tool for finding IPP printers and other Bonjour
services (<rdar://problem/13876199>)
- Fixed some issues with conversion of PWG media size names to
hundredths of millimeters (<rdar://problem/14065748>)
- The IPP backend could crash on OS X when printing to a Kerberized
printer (<rdar://problem/14040186>)
- The ipptool program now automatically extends timeouts when the
output buffer is filled (<rdar://problem/14016099>)
- The ipptool program now supports the --help and --version options.
- The ipptool program did not continue past include file errors by
default (<rdar://problem/13875803>)
- The ipptool program now supports FILE-ID and TEST-ID directives and
includes their values in its XML output (<rdar://problem/13876038>)
- The ipptool program now supports WITH-HOSTNAME, WITH-RESOURCE, and
WITH-SCHEME expect predicates to compare the corresponding URI
components (<rdar://problem/13876091>)
- Added a new Japanese localization (STR #4122)
- The SNMP backend no longer exits if it is unable to obtain an IPv6
socket (STR #4109)
- The LPD backend incorrectly used "localhost" in the control file
instead of the current hostname.
CHANGES IN CUPS V1.7b1
CHANGES IN CUPS V1.6b1
- The configure script now supports a --with-rundir option to change
the transient run-time state directory from the default to other
locations like /run/cups (STR #4306)
- The scheduler now supports PPD lookups for classes (STR #4296)
- The cupsfilter program did not set the FINAL_CONTENT_TYPE
environment variable for filters.
- Added a new "-x" option to the cancel command (STR #4103)
- Made the PWG media handling APIs public (STR #4267)
- Implemented ready media support for the cupsGetDestMediaXxx APIs
(STR #4289)
- Added new cupsFindDestDefault, cupsFindDestReady, and
cupsFindDestSupported APIs (STR #4289)
- Added new cupsGetDestMediaByIndex, cupsGetDestMediaCount, and
cupsGetDestMediaDefault APIs (STR #4289)
- Added new ippGet/SetOctetString APIs for getting and setting an
octetString value (STR #4289)
- Added new ippCreateRequestedArray API for generating a array of
attributes from the requested-attributes attribute.
- The ipptool utility now supports compression, conditional tests based
on the presence of files, and new DEFINE predicates for STATUS.
- Added new IPP APIs for checking values (STR #4167)
- Added new IPP APis for adding and setting formatted strings.
- Added new HTTP APIs to support basic server functionality via libcups.
- The dnssd backend now generates a 1284 device ID as needed (STR #3702)
- CUPS now supports compressing and decompressing streamed data
(STR #4168)
- CUPS now supports higher-level PIN printing, external accounting
systems, and "print here" printing environments (STR #4169)
- IRIX is no longer a supported operating system (STR #4092)
- The PPD compiler now supports JCL options properly (STR #4115)
- The web interface now checks whether the web browser has cookies
enabled and displays a suitable error message (STR #4141)
- 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)
+1 -2
Ver Arquivo
@@ -1,4 +1,4 @@
CREDITS.txt - 2013-07-23
CREDITS.txt - 2012-07-16
------------------------
Few projects are completed by one person, and CUPS is no exception. We'd
@@ -39,7 +39,6 @@ like to thank the following individuals for their contributions:
Vincenzo Reale - Italian localization.
Petter Reinholdtsen - HP-UX compiler stuff.
Juan Pablo González Riopedre - Spanish localization.
Giovanni Scafora - Italian localization.
Opher Shachar - Hebrew localization.
Stuart Stevens - HP JetDirect IPP information.
Andrea Suatoni - IRIX desktop integration and testing.
+16 -13
Ver Arquivo
@@ -1,4 +1,4 @@
INSTALL - CUPS v1.7.2 - 2014-04-10
INSTALL - CUPS v1.6.2 - 2013-03-18
----------------------------------
This file describes how to compile and install CUPS from source code. For more
@@ -29,16 +29,18 @@ BEFORE YOU BEGIN
Compaq, HP, SGI, and Sun. BSD users should use GNU make (gmake) since BSD
make does not support "include".
Besides these tools you'll want ZLIB library for compression support, the
CDSA, GNU TLS, or OpenSSL libraries for encryption support, and either MIT
(1.6.3 or higher) or Heimdal Kerberos for Kerberos support. CUPS will
compile and run without these, however you'll miss out on many of the
features provided by CUPS.
Besides these tools you'll want the JPEG, PNG, TIFF, and ZLIB libraries for
image support, the CDSA, GNU TLS, or OpenSSL libraries for encryption
support, the OpenLDAP and OpenSLP libraries for directory services support,
and either MIT (1.6.3 or higher) or Heimdal Kerberos for Kerberos support.
CUPS will compile and run without these, however you'll miss out on many of
the features provided by CUPS.
Also, please note that CUPS does not include print filters to support PDF
or raster printing. You *must* download GPL Ghostscript and/or the Open
Printing CUPS filters package separately to print on operating systems
other than OS X.
Also, please note that CUPS does not include the Ghostscript-based
PostScript filter needed by non-PostScript printers. You *must* download
GPL Ghostscript separately from the CUPS web site if you want to print
PostScript files to non-PostScript printers on operating systems other than
OS X.
COMPILING THE SUBVERSION REPOSITORY CODE
@@ -147,7 +149,7 @@ INSTALLING THE SOFTWARE
The EPM software is available at:
http://www.msweet.org/
http://www.epmhome.org/
CREATING BINARY DISTRIBUTIONS WITH EPM
@@ -197,9 +199,10 @@ GETTING DEBUG LOGGING FROM CUPS
REPORTING PROBLEMS
If you have problems, READ THE DOCUMENTATION FIRST! If the documentation
does not solve your problems, please post a message on the users forum at:
does not solve your problems, please post a message on the "cups.general"
forum at:
http://www.cups.org/
http://www.cups.org/newsgroups.php
Include your operating system and version, compiler and version, and any
errors or problems you've run into. The "config.log" file and the output
+31 -77
Ver Arquivo
@@ -1,4 +1,4 @@
IPPTOOL.txt - 2014-04-10
IPPTOOL.txt - 2012-02-06
------------------------
See the file CHANGES-IPPTOOL.txt for a list of changes to this software.
@@ -6,46 +6,14 @@ See the file CHANGES-IPPTOOL.txt for a list of changes to this software.
INTRODUCTION
CUPS includes two user programs for IPP printers. The first is called
ipptool and 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.
The second program called ippfind that can be used to find IPP printers
that have registered themselves using Bonjour (DNS-SD, mDNS, and Zeroconf)
and run commands such as ipptool.
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.
READING THE DOCUMENTATION
Full documentation on the ipptool command can be found in the
"man-ipptool.html" and "man-ipptoolfile.html" files; the latter describes
the test file format supported by ipptool.
Full documentation on the ippfind command can be found in the
"man-ippfind.html" file.
IPPFIND BASIC USAGE
The ippfind command can be used to discover IPP printers on your network.
For example, the following command prints the printer URI of registered IPP
printers:
ippfind
To find all color IPP printers, run:
ippfind --txt-color T
And to run the IPP Everywhere conformance test file on every registered IPP
printer, run the following command:
ippfind _ipp._tcp,_print --exec ipptool -t '{}' ipp-everywhere.test \;
IPPTOOL BASIC USAGE
BASIC USAGE
The ipptool command requires a printer URI and one or more "test" files that
describe the operations, attributes to display, and expected status and
@@ -86,29 +54,19 @@ STANDARD TEST FILES
state change notifications
get-completed-jobs.test Shows a list of completed jobs
get-jobs.test Shows a list of pending jobs
get-notifications.test Shows events for an ippget
subscription.
get-printer-attributes.test Shows printer attributes
get-subscriptions.test Shows a list of subscriptions
ipp-1.1.test IPP/1.1 conformance test suite
ipp-2.0.test IPP/2.0 conformance test suite
ipp-2.1.test IPP/2.1 conformance test suite
ipp-2.2.test IPP/2.2 conformance test suite
ipp-everywhere.test IPP Everywhere conformance test
suite
print-job.test Prints a file
print-job-deflate.test Prints a file, compressing with
deflate.
print-job-gzip.test Prints a file, compressing with gzip
validate-job.test Validates attributes for a job
submission.
CONFORMANCE TESTS
We provide basic IPP conformance tests for IPP/1.1, IPP/2.0, IPP/2.1,
IPP/2.2, and IPP Everywhere. For a given printer URI, the following
commands perform tests at each level:
We provide basic IPP conformance tests for IPP/1.1, IPP/2.0, IPP/2.1, and
IPP/2.2. For a given printer URI, the following commands perform tests at
each level:
ipptool -tf filename [options] -I printer-uri ipp-1.1.test
ipptool -tf filename [options] -I -V 2.0 printer-uri ipp-2.0.test
@@ -146,7 +104,6 @@ CONFORMANCE TESTS
-S Test IPP over HTTPS (default for ipps: URIs)
-T seconds Set a timeout for responses in seconds
-v Be verbose, showing all attributes sent and received
-X Produce XML (Apple plist) output
The printer-uri must be a URI supported by the printer using the "ipp" or
"ipps" scheme, for example:
@@ -155,7 +112,7 @@ CONFORMANCE TESTS
ipps://192.168.0.1/ipp/print
Print-by-reference (URL) printing can be tested by defining the document-uri
variable as a URL, for example:
variable to a URL, for example:
ipptool -tf filename -d document-uri=url -I printer-uri ipp-1.1.test
@@ -171,40 +128,37 @@ CONFORMANCE TESTS
printer.
IPP EVERYWHERE TESTING
READING THE DOCUMENTATION
The IPP Everywhere tests use sample PWG raster files available from:
ftp://ftp.pwg.org/pub/pwg/ipp/examples
Extract the corresponding ZIP archives into the current directory before
running the ipp-everywhere.test file. The test file will attempt to print
each PWG Raster file that is supported by the printer being tested - up to
372 pages including the 90 pages produced by the regular IPP test suite.
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.
GETTING SUPPORT AND OTHER RESOURCES
If you have problems, READ THE DOCUMENTATION FIRST! We also provide
If you have problems, READ THE DOCUMENTATION FIRST! We also provide many
discussion forums which are available at:
http://www.cups.org/
http://www.cups.org/newsgroups.php
See the CUPS web site at "http://www.cups.org/" for other resources.
REPORTING BUGS
If you believe you have discovered a bug in ippfind or ipptool, please fill
out the bug form at:
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 ippfind/ipptool (if you
downloaded the standalone version) you are using, the printer (if any) and
firmware version, and include any files that apply.
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 ippfind/ipptool, please also
re-run the command with debug logging enabled. Run the following commands
on Windows to enable debug logging:
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
@@ -213,14 +167,14 @@ REPORTING BUGS
CUPS_DEBUG_LOG=ipptool.log; export CUPS_DEBUG_LOG
CUPS_DEBUG_LEVEL=6; export CUPS_DEBUG_LEVEL
Then when you run the ippfind or ipptool command a new "ipptool.log" file
will be created with detailed information - attach this file to the bug you
file as well.
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-2014 by Apple Inc. CUPS and the CUPS logo are
CUPS is Copyright 2007-2012 by Apple Inc. CUPS and the CUPS logo are
trademarks of Apple Inc.
The MD5 Digest code is Copyright 1999 Aladdin Enterprises.
+3 -6
Ver Arquivo
@@ -1,9 +1,9 @@
#
# "$Id: Makedefs.in 11154 2013-07-17 15:21:18Z msweet $"
# "$Id$"
#
# Common makefile definitions for CUPS.
#
# Copyright 2007-2013 by Apple Inc.
# Copyright 2007-2012 by Apple Inc.
# Copyright 1997-2007 by Easy Software Products, all rights reserved.
#
# These coded instructions, statements, and computer programs are the
@@ -138,8 +138,6 @@ DNSSD_BACKEND = @DNSSD_BACKEND@
DSOFLAGS = -L../cups @DSOFLAGS@
DSOLIBS = @DSOLIBS@ $(COMMONLIBS)
DNSSDLIBS = @DNSSDLIBS@
IPPFIND_BIN = @IPPFIND_BIN@
IPPFIND_MAN = @IPPFIND_MAN@
LAUNCHDLIBS = @LAUNCHDLIBS@
LDFLAGS = -L../cgi-bin -L../cups -L../filter -L../ppdc \
-L../scheduler @LDARCHFLAGS@ \
@@ -218,7 +216,6 @@ SERVERBIN = $(BUILDROOT)@CUPS_SERVERBIN@
SERVERROOT = $(BUILDROOT)@CUPS_SERVERROOT@
SMFMANIFESTDIR = @SMFMANIFESTDIR@
STATEDIR = $(BUILDROOT)@CUPS_STATEDIR@
USBQUIRKS = @USBQUIRKS@
XINETD = @XINETD@
MAN1EXT = @MAN1EXT@
@@ -261,5 +258,5 @@ DBUSDIR = @DBUSDIR@
#
# End of "$Id: Makedefs.in 11154 2013-07-17 15:21:18Z msweet $"
# End of "$Id$"
#
+9 -31
Ver Arquivo
@@ -1,9 +1,9 @@
#
# "$Id: Makefile 11370 2013-10-30 15:08:29Z msweet $"
# "$Id$"
#
# Top-level Makefile for CUPS.
#
# Copyright 2007-2013 by Apple Inc.
# Copyright 2007-2012 by Apple Inc.
# Copyright 1997-2007 by Easy Software Products, all rights reserved.
#
# These coded instructions, statements, and computer programs are the
@@ -128,11 +128,8 @@ depend:
#
# Run the Clang static code analysis tool on the sources, available here:
#
# http://clang-analyzer.llvm.org
#
# At least checker-231 is required.
# Run the clang.llvm.org static code analysis tool on the C sources.
# (at least checker-231 is required for scan-build to work this way)
#
.PHONY: clang clang-changes
@@ -143,26 +140,6 @@ clang-changes:
scan-build -V -k -o `pwd`/clang $(MAKE) $(MFLAGS) all
#
# Run the STACK tool on the sources, available here:
#
# http://css.csail.mit.edu/stack/
#
# Do the following to pass options to configure:
#
# make CONFIGFLAGS="--foo --bar" stack
#
.PHONY: stack
stack:
stack-build ./configure $(CONFIGFLAGS)
stack-build $(MAKE) $(MFLAGS) clean all
poptck
$(MAKE) $(MFLAGS) distclean
$(RM) */*.ll
$(RM) */*.ll.out
#
# Generate a ctags file...
#
@@ -265,7 +242,7 @@ debugcheck: all unittests
#
# Create HTML documentation using Mini-XML's mxmldoc (http://www.msweet.org/)...
# Create HTML documentation...
#
apihelp:
@@ -282,7 +259,7 @@ framedhelp:
#
# Create an Xcode docset using Mini-XML's mxmldoc (http://www.msweet.org/)...
# Create an Xcode docset...
#
docset: apihelp
@@ -318,7 +295,7 @@ sloc:
#
# Make software distributions using EPM (http://www.msweet.org/)...
# Make software distributions using EPM (http://www.epmhome.org/)...
#
EPMFLAGS = -v --output-dir dist $(EPMARCH)
@@ -339,6 +316,7 @@ dist: all
case `uname` in \
*BSD*) $(MAKE) $(MFLAGS) bsd;; \
Darwin*) $(MAKE) $(MFLAGS) osx;; \
IRIX*) $(MAKE) $(MFLAGS) tardist;; \
Linux*) test ! -x /usr/bin/rpm || $(MAKE) $(MFLAGS) rpm;; \
SunOS*) $(MAKE) $(MFLAGS) pkg;; \
esac
@@ -352,5 +330,5 @@ dist: all
#
# End of "$Id: Makefile 11370 2013-10-30 15:08:29Z msweet $".
# End of "$Id$".
#
+2 -2
Ver Arquivo
@@ -1,4 +1,4 @@
README - CUPS v1.7.2 - 2014-04-10
README - CUPS v1.6.2 - 2013-03-18
---------------------------------
Looking for compile instructions? Read the file "INSTALL.txt" instead...
@@ -149,7 +149,7 @@ PRINTING FILES
LEGAL STUFF
CUPS is Copyright 2007-2014 by Apple Inc. CUPS and the CUPS logo are
CUPS is Copyright 2007-2013 by Apple Inc. CUPS and the CUPS logo are
trademarks of Apple Inc.
The MD5 Digest code is Copyright 1999 Aladdin Enterprises.
+4 -10
Ver Arquivo
@@ -1,9 +1,9 @@
#
# "$Id: Makefile 11154 2013-07-17 15:21:18Z msweet $"
# "$Id$"
#
# Backend makefile for CUPS.
#
# Copyright 2007-2013 by Apple Inc.
# Copyright 2007-2012 by Apple Inc.
# Copyright 1997-2007 by Easy Software Products, all rights reserved.
#
# These coded instructions, statements, and computer programs are the
@@ -109,11 +109,6 @@ install: all install-data install-headers install-libs install-exec
#
install-data:
if test "x$(USBQUIRKS)" != x; then \
echo Installing USB quirks in $(USBQUIRKS); \
$(INSTALL_DIR) -m 755 $(USBQUIRKS); \
$(INSTALL_DATA) org.cups.usb-quirks $(USBQUIRKS); \
fi
#
@@ -139,9 +134,8 @@ install-exec: $(INSTALLXPC)
fi
if test "x$(SYMROOT)" != "x"; then \
$(INSTALL_DIR) $(SYMROOT); \
for file in $(RBACKENDS) $(UBACKENDS); do \
for file in $(TARGETS); do \
cp $$file $(SYMROOT); \
dsymutil $(SYMROOT)/$$file; \
done \
fi
@@ -301,5 +295,5 @@ include Dependencies
#
# End of "$Id: Makefile 11154 2013-07-17 15:21:18Z msweet $".
# End of "$Id$".
#
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
/*
* "$Id: backend-private.h 10996 2013-05-29 11:51:34Z msweet $"
* "$Id$"
*
* Backend support definitions for CUPS.
*
@@ -334,5 +334,5 @@ extern int backendWaitLoop(int snmp_fd, http_addr_t *addr,
/*
* End of "$Id: backend-private.h 10996 2013-05-29 11:51:34Z msweet $".
* End of "$Id$".
*/
+9 -62
Ver Arquivo
@@ -1,5 +1,5 @@
/*
* "$Id: dnssd.c 11623 2014-02-19 20:18:10Z msweet $"
* "$Id$"
*
* DNS-SD discovery backend for CUPS.
*
@@ -95,7 +95,6 @@ static int job_canceled = 0;
static AvahiSimplePoll *simple_poll = NULL;
/* Poll information */
static int got_data = 0; /* Got data from poll? */
static int browsers = 0; /* Number of running browsers */
#endif /* HAVE_AVAHI */
@@ -346,7 +345,6 @@ main(int argc, /* I - Number of command-line args */
return (1);
}
browsers = 6;
avahi_service_browser_new(client, AVAHI_IF_UNSPEC,
AVAHI_PROTO_UNSPEC,
"_fax-ipp._tcp", NULL, 0,
@@ -560,11 +558,7 @@ main(int argc, /* I - Number of command-line args */
fprintf(stderr, "DEBUG: sent=%d, count=%d\n", sent, count);
#ifdef HAVE_AVAHI
if (sent == cupsArrayCount(devices) && browsers == 0)
#else
if (sent == cupsArrayCount(devices))
#endif /* HAVE_AVAHI */
break;
}
}
@@ -716,12 +710,9 @@ browse_callback(
break;
case AVAHI_BROWSER_REMOVE:
case AVAHI_BROWSER_ALL_FOR_NOW:
case AVAHI_BROWSER_CACHE_EXHAUSTED:
break;
case AVAHI_BROWSER_ALL_FOR_NOW:
browsers--;
break;
}
}
@@ -1040,7 +1031,6 @@ query_callback(
value[256], /* Value string */
make_and_model[512], /* Manufacturer and model */
model[256], /* Model */
pdl[256], /* PDL */
device_id[2048]; /* 1284 device ID */
@@ -1089,9 +1079,8 @@ query_callback(
device_id[0] = '\0';
make_and_model[0] = '\0';
pdl[0] = '\0';
strlcpy(model, "Unknown", sizeof(model));
strcpy(model, "Unknown");
for (data = rdata, dataend = data + rdlen;
data < dataend;
@@ -1145,9 +1134,9 @@ query_callback(
if (!_cups_strcasecmp(key, "usb_MFG") || !_cups_strcasecmp(key, "usb_MANU") ||
!_cups_strcasecmp(key, "usb_MANUFACTURER"))
strlcpy(make_and_model, value, sizeof(make_and_model));
strcpy(make_and_model, value);
else if (!_cups_strcasecmp(key, "usb_MDL") || !_cups_strcasecmp(key, "usb_MODEL"))
strlcpy(model, value, sizeof(model));
strcpy(model, value);
else if (!_cups_strcasecmp(key, "product") && !strstr(value, "Ghostscript"))
{
if (value[0] == '(')
@@ -1159,20 +1148,18 @@ query_callback(
if ((ptr = value + strlen(value) - 1) > value && *ptr == ')')
*ptr = '\0';
strlcpy(model, value + 1, sizeof(model));
strcpy(model, value + 1);
}
else
strlcpy(model, value, sizeof(model));
strcpy(model, value);
}
else if (!_cups_strcasecmp(key, "ty"))
{
strlcpy(model, value, sizeof(model));
strcpy(model, value);
if ((ptr = strchr(model, ',')) != NULL)
*ptr = '\0';
}
else if (!_cups_strcasecmp(key, "pdl"))
strlcpy(pdl, value, sizeof(pdl));
else if (!_cups_strcasecmp(key, "priority"))
device->priority = atoi(value);
else if ((device->type == CUPS_DEVICE_IPP ||
@@ -1217,46 +1204,6 @@ query_callback(
}
}
if (device_id[0] &&
!strstr(device_id, "CMD:") &&
!strstr(device_id, "COMMAND SET:") &&
(strstr(pdl, "application/pdf") ||
strstr(pdl, "application/postscript") ||
strstr(pdl, "application/vnd.hp-PCL") ||
strstr(pdl, "image/")))
{
value[0] = '\0';
if (strstr(pdl, "application/pdf"))
strlcat(value, ",PDF", sizeof(value));
if (strstr(pdl, "application/postscript"))
strlcat(value, ",PS", sizeof(value));
if (strstr(pdl, "application/vnd.hp-PCL"))
strlcat(value, ",PCL", sizeof(value));
for (ptr = strstr(pdl, "image/"); ptr; ptr = strstr(ptr, "image/"))
{
char *valptr = value + strlen(value);
/* Pointer into value */
if (valptr < (value + sizeof(value) - 1))
*valptr++ = ',';
ptr += 6;
while (isalnum(*ptr & 255) || *ptr == '-' || *ptr == '.')
{
if (isalnum(*ptr & 255) && valptr < (value + sizeof(value) - 1))
*valptr++ = toupper(*ptr++ & 255);
else
break;
}
*valptr = '\0';
}
ptr = device_id + strlen(device_id);
snprintf(ptr, sizeof(device_id) - (ptr - device_id), "CMD:%s;",
value + 1);
}
if (device_id[0])
device->device_id = strdup(device_id);
else
@@ -1329,5 +1276,5 @@ unquote(char *dst, /* I - Destination buffer */
/*
* End of "$Id: dnssd.c 11623 2014-02-19 20:18:10Z msweet $".
* End of "$Id$".
*/
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
/*
* "$Id: ieee1284.c 10996 2013-05-29 11:51:34Z msweet $"
* "$Id$"
*
* IEEE-1284 support functions for CUPS.
*
@@ -487,5 +487,5 @@ backendGetMakeModel(
/*
* End of "$Id: ieee1284.c 10996 2013-05-29 11:51:34Z msweet $".
* End of "$Id$".
*/
+234 -560
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+4 -4
Ver Arquivo
@@ -1,5 +1,5 @@
/*
* "$Id: lpd.c 10996 2013-05-29 11:51:34Z msweet $"
* "$Id$"
*
* Line Printer Daemon backend for CUPS.
*
@@ -707,7 +707,7 @@ lpd_queue(const char *hostname, /* I - Host to connect to */
*/
fprintf(stderr, "DEBUG: Connecting to %s:%d for printer %s\n", hostname,
httpAddrPort(&(addrlist->addr)), printer);
_httpAddrPort(&(addrlist->addr)), printer);
_cupsLangPrintFilter(stderr, "INFO", _("Connecting to printer."));
for (lport = reserve == RESERVE_RFC1179 ? 732 : 1024, addr = addrlist,
@@ -889,7 +889,7 @@ lpd_queue(const char *hostname, /* I - Host to connect to */
fprintf(stderr, "DEBUG: Connected to %s:%d (local port %d)...\n",
httpAddrString(&(addr->addr), addrname, sizeof(addrname)),
httpAddrPort(&(addr->addr)), lport);
_httpAddrPort(&(addr->addr)), lport);
/*
* See if the printer supports SNMP...
@@ -1331,5 +1331,5 @@ sigterm_handler(int sig) /* I - Signal */
/*
* End of "$Id: lpd.c 10996 2013-05-29 11:51:34Z msweet $".
* End of "$Id$".
*/
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
/*
* "$Id: network.c 3755 2012-03-30 05:59:14Z msweet $"
* "$Id$"
*
* Common backend network APIs for CUPS.
*
@@ -322,5 +322,5 @@ backendNetworkSideCB(
/*
* End of "$Id: network.c 3755 2012-03-30 05:59:14Z msweet $".
* End of "$Id$".
*/
-214
Ver Arquivo
@@ -1,214 +0,0 @@
# USB backend 'quirks' file.
#
# This file lists known issues with various vendors or printers. Each
# line contains either a comment (starting with #) or the USB vendor ID,
# product ID (omit for all vendor products), and a list of known issues:
#
# blacklist The printer is not functional with the USB backend.
# no-reattach Do no re-attach usblp kernel module after printing.
# soft-reset Do a soft reset after printing for cleanup.
# unidir Only supported unidirectional I/O
# usb-init Needs vendor USB initialization string.
# vendor-class Uses vendor-specific class or subclass.
# whitelist The printer is functional with the USB backend.
# HP DeskJet 895C
0x03f0 0x0004 unidir
# HP DeskJet 880C
0x03f0 0x0104 unidir
# HP DeskJet 815C
0x03f0 0x0204 unidir
# HP DeskJet 810C/812C
0x03f0 0x0304 unidir
# HP DeskJet 830C
0x03f0 0x0404 unidir
# HP DeskJet 885C
0x03f0 0x0504 unidir
# HP DeskJet 840C
0x03f0 0x0604 unidir
# HP DeskJet 816C
0x03f0 0x0804 unidir
# HP Deskjet 959C
0x03f0 0x1104 unidir
# NEC Picty900 (HP OEM)
0x0409 0xefbe unidir
# NEC Picty760 (HP OEM)
0x0409 0xbef4 unidir
# NEC Picty920 (HP OEM)
0x0409 0xf0be unidir
# NEC Picty800 (HP OEM)
0x0409 0xf1be unidir
# Lexmark International, Inc. (e250d), https://bugs.launchpad.net/bugs/1084164
0x043d 0x00f3 no-reattach
# Kyocera Mita FS 820, by zut <kernel@zut.de>
0x0482 0x0010 unidir
# Canon, Inc. PIXMA iP6000D Printer, https://bugs.launchpad.net/bugs/1160638
0x04a9 0x1095 unidir
# Canon, Inc. PIXMA iP4200 Printer, http://www.cups.org/str.php?L4155
0x04a9 0x10a2 unidir
# Canon, Inc. PIXMA iP4300 Printer, https://bugs.launchpad.net/bugs/1032385
0x04a9 0x10b6 unidir
# Canon, Inc. MP210 https://bugzilla.redhat.com/show_bug.cgi?id=847923#c53
0x04a9 0x1721 unidir
# Canon, Inc. MP500 Printer, https://bugs.launchpad.net/bugs/1032456
0x04a9 0x170c unidir
# Canon, Inc. MP510 Printer, https://bugs.launchpad.net/bugs/1050009
0x04a9 0x1717 unidir
# Canon, Inc. MP550 Printer, http://www.cups.org/str.php?L4155
0x04a9 0x173d unidir
# Canon, Inc. MP560 Printer, http://www.cups.org/str.php?L4155
0x04a9 0x173e unidir
# Canon, Inc. MF4150 Printer, https://bugs.launchpad.net/bugs/1160638
0x04a9 0x26a3 no-reattach
# Brother Industries, Ltd HL-1430 Laser Printer, https://bugs.launchpad.net/bugs/1038695
0x04f9 0x001a no-reattach
# Brother Industries, Ltd HL-1440 Laser Printer, https://bugs.launchpad.net/bugs/1000253
0x04f9 0x000d no-reattach unidir
# Brother Industries, Ltd HL-1450 Laser Printer, https://bugs.launchpad.net/bugs/1000253
0x04f9 0x000e no-reattach unidir
# Oki Data Corp. Okipage 14ex Printer, https://bugs.launchpad.net/bugs/872483
0x06bc 0x000b no-reattach
# Oki Data Corp. B410d, https://bugs.launchpad.net/bugs/872483
0x06bc 0x01c7 no-reattach
# Seiko Epson Corp. Stylus Color 740 / Photo 750, http://bugs.debian.org/697970
0x04b8 0x0001 no-reattach unidir
# Seiko Epson Corp. Stylus Color 670, https://bugs.launchpad.net/bugs/872483
0x04b8 0x0005 no-reattach
# Seiko Epson Receipt Printer M129C
0x04b8 0x0202 vendor-class
# Prolific Technology, Inc. PL2305 Parallel Port (USB -> Parallel adapter), https://bugs.launchpad.net/bugs/987485
0x067b 0x2305 no-reattach soft-reset unidir
# Xerox Phaser 3124 https://bugzilla.redhat.com/show_bug.cgi?id=867392
0x0924 0x3ce9 no-reattach
# Xerox WorkCentre 3210 https://bugs.launchpad.net/bugs/1102470
0x0924 0x4293 no-reattach
# QinHeng Electronics CH340S (USB -> Parallel adapter), https://bugs.launchpad.net/bugs/1000253
0x1a86 0x7584 no-reattach
# All Samsung devices, https://bugs.launchpad.net/bugs/1032456
0x04e8 soft-reset
# All Zebra devices, https://bugs.launchpad.net/bugs/1001028
0x0a5f unidir
# Canon CP-10
0x04a9 0x304a blacklist
# Canon CP-100
0x04a9 0x3063 blacklist
# Canon CP-200
0x04a9 0x307c blacklist
# Canon CP-300
0x04a9 0x307d blacklist
# Canon CP-220
0x04a9 0x30bd blacklist
# Canon CP-330
0x04a9 0x30be blacklist
# Canon SELPHY CP400
0x04a9 0x30f6 blacklist
# Canon SELPHY CP600
0x04a9 0x310b blacklist
# Canon SELPHY CP710
0x04a9 0x3127 blacklist
# Canon SELPHY CP510
0x04a9 0x3128 blacklist
# Canon SELPHY ES1
0x04a9 0x3141 blacklist
# Canon SELPHY CP730
0x04a9 0x3142 blacklist
# Canon SELPHY CP720
0x04a9 0x3143 blacklist
# Canon SELPHY CP750
0x04a9 0x3170 blacklist
# Canon SELPHY CP740
0x04a9 0x3171 blacklist
# Canon SELPHY ES2
0x04a9 0x3185 blacklist
# Canon SELPHY ES20
0x04a9 0x3186 blacklist
# Canon SELPHY CP770
0x04a9 0x31aa blacklist
# Canon SELPHY CP760
0x04a9 0x31ab blacklist
# Canon SELPHY ES30
0x04a9 0x31b0 blacklist
# Canon SELPHY CP780
0x04a9 0x31dd blacklist
# Canon SELPHY ES40
0x04a9 0x31ee blacklist
# Canon SELPHY CP800
0x04a9 0x3214 blacklist
# Canon SELPHY CP900
0x04a9 0x3255 blacklist
# Canon SELPHY CP810
0x04a9 0x3256 blacklist
# Canon SELPHY CP500
0x04a9 0x30f5 blacklist
# Canon SELPHY ES3
0x04a9 0x31af blacklist
# Canon SELPHY CP780
0x04a9 0x31dd blacklist
# Lexmark E238 (<rdar://problem/14493054>)
0x043d 0x00d7 no-reattach
Arquivo normal → Arquivo executável
Ver Arquivo
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
/*
* "$Id: runloop.c 10996 2013-05-29 11:51:34Z msweet $"
* "$Id$"
*
* Common run loop APIs for CUPS backends.
*
@@ -539,5 +539,5 @@ backendWaitLoop(
/*
* End of "$Id: runloop.c 10996 2013-05-29 11:51:34Z msweet $".
* End of "$Id$".
*/
+38 -68
Ver Arquivo
@@ -1,9 +1,9 @@
/*
* "$Id: snmp-supplies.c 11319 2013-09-27 16:18:26Z msweet $"
* "$Id$"
*
* SNMP supplies functions for CUPS.
*
* Copyright 2008-2013 by Apple Inc.
* Copyright 2008-2012 by Apple Inc.
*
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
@@ -62,7 +62,6 @@ typedef struct /**** Printer supply data ****/
char name[CUPS_SNMP_MAX_STRING], /* Name of supply */
color[8]; /* Color: "#RRGGBB" or "none" */
int colorant, /* Colorant index */
sclass, /* Supply class */
type, /* Supply type */
max_capacity, /* Maximum capacity */
level; /* Current level value */
@@ -149,13 +148,6 @@ static const int prtMarkerSuppliesMaxCapacity[] =
(sizeof(prtMarkerSuppliesMaxCapacity) /
sizeof(prtMarkerSuppliesMaxCapacity[0]));
/* Offset to supply index */
static const int prtMarkerSuppliesClass[] =
{ CUPS_OID_prtMarkerSuppliesClass, -1 },
/* Class OID */
prtMarkerSuppliesClassOffset =
(sizeof(prtMarkerSuppliesClass) /
sizeof(prtMarkerSuppliesClass[0]));
/* Offset to supply index */
static const int prtMarkerSuppliesType[] =
{ CUPS_OID_prtMarkerSuppliesType, -1 },
/* Type OID */
@@ -171,7 +163,7 @@ static const int prtMarkerSuppliesSupplyUnit[] =
sizeof(prtMarkerSuppliesSupplyUnit[0]));
/* Offset to supply index */
static const backend_state_t printer_states[] =
static const backend_state_t const printer_states[] =
{
/* { CUPS_TC_lowPaper, "media-low-report" }, */
{ CUPS_TC_noPaper | CUPS_TC_inputTrayEmpty, "media-empty-warning" },
@@ -188,7 +180,7 @@ static const backend_state_t printer_states[] =
{ CUPS_TC_outputFull, "output-area-full-warning" }
};
static const backend_state_t supply_states[] =
static const backend_state_t const supply_states[] =
{
{ CUPS_DEVELOPER_LOW, "developer-low-report" },
{ CUPS_DEVELOPER_EMPTY, "developer-empty-warning" },
@@ -265,9 +257,6 @@ backendSNMPSupplies(
else
percent = 50;
if (supplies[i].sclass == CUPS_TC_receptacleThatIsFilled)
percent = 100 - percent;
if (percent <= 5)
{
switch (supplies[i].type)
@@ -329,9 +318,9 @@ backendSNMPSupplies(
if ((supplies[i].max_capacity > 0 || (quirks & CUPS_SNMP_CAPACITY)) &&
supplies[i].level >= 0)
snprintf(ptr, sizeof(value) - (ptr - value), "%d", percent);
sprintf(ptr, "%d", percent);
else
strlcpy(ptr, "-1", sizeof(value) - (ptr - value));
strcpy(ptr, "-1");
}
fprintf(stderr, "ATTR: marker-levels=%s\n", value);
@@ -469,34 +458,34 @@ backend_init_supplies(
"other",
"unknown",
"toner",
"waste-toner",
"wasteToner",
"ink",
"ink-cartridge",
"ink-ribbon",
"waste-ink",
"inkCartridge",
"inkRibbon",
"wasteInk",
"opc",
"developer",
"fuser-oil",
"solid-wax",
"ribbon-wax",
"waste-wax",
"fuserOil",
"solidWax",
"ribbonWax",
"wasteWax",
"fuser",
"corona-wire",
"fuser-oil-wick",
"cleaner-unit",
"fuser-cleaning-pad",
"transfer-unit",
"toner-cartridge",
"fuser-oiler",
"coronaWire",
"fuserOilWick",
"cleanerUnit",
"fuserCleaningPad",
"transferUnit",
"tonerCartridge",
"fuserOiler",
"water",
"waste-water",
"glue-water-additive",
"waste-paper",
"binding-supply",
"banding-supply",
"stitching-wire",
"shrink-wrap",
"paper-wrap",
"wasteWater",
"glueWaterAdditive",
"wastePaper",
"bindingSupply",
"bandingSupply",
"stitchingWire",
"shrinkWrap",
"paperWrap",
"staples",
"inserts",
"covers"
@@ -572,14 +561,14 @@ backend_init_supplies(
/*
* Yes, read the cache file:
*
* 3 num_supplies charset
* 2 num_supplies charset
* device description
* supply structures...
*/
if (cupsFileGets(cachefile, value, sizeof(value)))
{
if (sscanf(value, "3 %d%d", &num_supplies, &charset) == 2 &&
if (sscanf(value, "2 %d%d", &num_supplies, &charset) == 2 &&
num_supplies <= CUPS_MAX_SUPPLIES &&
cupsFileGets(cachefile, value, sizeof(value)))
{
@@ -675,7 +664,7 @@ backend_init_supplies(
if ((cachefile = cupsFileOpen(cachefilename, "w")) != NULL)
{
cupsFilePrintf(cachefile, "3 %d %d\n", num_supplies, charset);
cupsFilePrintf(cachefile, "2 %d %d\n", num_supplies, charset);
cupsFilePrintf(cachefile, "%s\n", description);
if (num_supplies > 0)
@@ -693,7 +682,7 @@ backend_init_supplies(
*/
for (i = 0; i < num_supplies; i ++)
strlcpy(supplies[i].color, "none", sizeof(supplies[i].color));
strcpy(supplies[i].color, "none");
_cupsSNMPWalk(snmp_fd, &current_addr, CUPS_SNMP_VERSION_1,
_cupsSNMPDefaultCommunity(), prtMarkerColorantValue,
@@ -708,7 +697,7 @@ backend_init_supplies(
if (i)
*ptr++ = ',';
strlcpy(ptr, supplies[i].color, sizeof(value) - (ptr - value));
strcpy(ptr, supplies[i].color);
}
fprintf(stderr, "ATTR: marker-colors=%s\n", value);
@@ -756,9 +745,9 @@ backend_init_supplies(
type = supplies[i].type;
if (type < CUPS_TC_other || type > CUPS_TC_covers)
strlcpy(ptr, "unknown", sizeof(value) - (ptr - value));
strcpy(ptr, "unknown");
else
strlcpy(ptr, types[type - CUPS_TC_other], sizeof(value) - (ptr - value));
strcpy(ptr, types[type - CUPS_TC_other]);
}
fprintf(stderr, "ATTR: marker-types=%s\n", value);
@@ -825,7 +814,7 @@ backend_walk_cb(cups_snmp_t *packet, /* I - SNMP packet */
if (!_cups_strcasecmp(colors[k][0],
(char *)packet->object_value.string.bytes))
{
strlcpy(supplies[j].color, colors[k][1], sizeof(supplies[j].color));
strcpy(supplies[j].color, colors[k][1]);
break;
}
}
@@ -980,25 +969,6 @@ backend_walk_cb(cups_snmp_t *packet, /* I - SNMP packet */
packet->object_value.integer > 0)
supplies[i - 1].max_capacity = packet->object_value.integer;
}
else if (_cupsSNMPIsOIDPrefixed(packet, prtMarkerSuppliesClass))
{
/*
* Get marker class...
*/
i = packet->object_name[prtMarkerSuppliesClassOffset];
if (i < 1 || i > CUPS_MAX_SUPPLIES ||
packet->object_type != CUPS_ASN1_INTEGER)
return;
fprintf(stderr, "DEBUG2: prtMarkerSuppliesClass.1.%d = %d\n", i,
packet->object_value.integer);
if (i > num_supplies)
num_supplies = i;
supplies[i - 1].sclass = packet->object_value.integer;
}
else if (_cupsSNMPIsOIDPrefixed(packet, prtMarkerSuppliesType))
{
/*
@@ -1103,5 +1073,5 @@ utf16_to_utf8(
/*
* End of "$Id: snmp-supplies.c 11319 2013-09-27 16:18:26Z msweet $".
* End of "$Id$".
*/
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
/*
* "$Id: snmp.c 10996 2013-05-29 11:51:34Z msweet $"
* "$Id$"
*
* SNMP discovery backend for CUPS.
*
@@ -1391,5 +1391,5 @@ update_cache(snmp_cache_t *device, /* I - Device */
/*
* End of "$Id: snmp.c 10996 2013-05-29 11:51:34Z msweet $".
* End of "$Id$".
*/
+18 -3
Ver Arquivo
@@ -1,5 +1,5 @@
/*
* "$Id: socket.c 10996 2013-05-29 11:51:34Z msweet $"
* "$Id$"
*
* AppSocket backend for CUPS.
*
@@ -73,6 +73,10 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
int print_fd; /* Print file */
int copies; /* Number of copies to print */
time_t start_time; /* Time of first connect */
#ifdef __APPLE__
time_t current_time, /* Current time */
wait_time; /* Time to wait before shutting down socket */
#endif /* __APPLE__ */
int contimeout; /* Connection timeout */
int waiteof; /* Wait for end-of-file? */
int port; /* Port number */
@@ -406,7 +410,7 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
fprintf(stderr, "DEBUG: Connected to %s:%d...\n",
httpAddrString(&(addr->addr), addrname, sizeof(addrname)),
httpAddrPort(&(addr->addr)));
_httpAddrPort(&(addr->addr)));
/*
* Print everything...
@@ -434,6 +438,17 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
_cupsLangPrintFilter(stderr, "INFO", _("Print file sent."));
}
#ifdef __APPLE__
/*
* Wait up to 5 seconds to get any pending back-channel data...
*/
wait_time = time(NULL) + 5;
while (wait_time >= time(&current_time))
if (wait_bc(device_fd, wait_time - current_time) <= 0)
break;
#endif /* __APPLE__ */
if (waiteof)
{
/*
@@ -520,5 +535,5 @@ wait_bc(int device_fd, /* I - Socket */
/*
* End of "$Id: socket.c 10996 2013-05-29 11:51:34Z msweet $".
* End of "$Id$".
*/
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
/*
* "$Id: test1284.c 10996 2013-05-29 11:51:34Z msweet $"
* "$Id$"
*
* IEEE-1284 support functions test program for CUPS.
*
@@ -80,5 +80,5 @@ main(int argc, /* I - Number of command-line args */
/*
* End of "$Id: test1284.c 10996 2013-05-29 11:51:34Z msweet $".
* End of "$Id$".
*/
+3 -15
Ver Arquivo
@@ -1,5 +1,5 @@
/*
* "$Id: testbackend.c 4297 2013-05-10 16:04:59Z msweet $"
* "$Id$"
*
* Backend test program for CUPS.
*
@@ -667,22 +667,10 @@ walk_cb(const char *oid, /* I - OID */
int datalen, /* I - Length of data */
void *context) /* I - Context (unused) */
{
char temp[80];
if (datalen > (sizeof(temp) - 1))
{
memcpy(temp, data, sizeof(temp) - 1);
temp[sizeof(temp) - 1] = '\0';
}
else
{
memcpy(temp, data, datalen);
temp[datalen] = '\0';
}
printf("CUPS_SC_CMD_SNMP_WALK %s, %d bytes (%s)\n", oid, datalen, temp);
printf("CUPS_SC_CMD_SNMP_WALK %s, %d bytes (%s)\n", oid, datalen, data);
}
/*
* End of "$Id: testbackend.c 4297 2013-05-10 16:04:59Z msweet $".
* End of "$Id$".
*/
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
/*
* "$Id: testsupplies.c 3247 2011-05-12 06:22:31Z msweet $"
* "$Id$"
*
* SNMP supplies test program for CUPS.
*
@@ -79,5 +79,5 @@ main(int argc, /* I - Number of command-line args */
/*
* End of "$Id: testsupplies.c 3247 2011-05-12 06:22:31Z msweet $".
* End of "$Id$".
*/
+55 -136
Ver Arquivo
@@ -1,7 +1,7 @@
/*
* "$Id: usb-darwin.c 11670 2014-03-04 14:53:59Z msweet $"
* "$Id$"
*
* Copyright 2005-2014 Apple Inc. All rights reserved.
* Copyright 2005-2012 Apple Inc. All rights reserved.
*
* IMPORTANT: This Apple software is supplied to you by Apple Computer,
* Inc. ("Apple") in consideration of your agreement to the following
@@ -40,6 +40,35 @@
* AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE),
* STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
* Contents:
*
* list_devices() - List all USB devices.
* print_device() - Print a file to a USB device.
* read_thread() - Thread to read the backchannel data on.
* sidechannel_thread() - Handle side-channel requests.
* iterate_printers() - Iterate over all the printers.
* device_added() - Device added notifier.
* list_device_cb() - list_device iterator callback.
* find_device_cb() - print_device iterator callback.
* status_timer_cb() - Status timer callback.
* copy_deviceinfo() - Copy strings from the 1284 device ID.
* release_deviceinfo() - Release deviceinfo strings.
* load_classdriver() - Load a classdriver.
* unload_classdriver() - Unload a classdriver.
* load_printerdriver() - Load vendor's classdriver.
* registry_open() - Open a connection to the printer.
* registry_close() - Close the connection to the printer.
* copy_deviceid() - Copy the 1284 device id string.
* copy_devicestring() - Copy the 1284 device id string.
* copy_value_for_key() - Copy value string associated with a key.
* cfstr_create_trim() - Create CFString and trim whitespace characters.
* parse_options() - Parse URI options.
* sigterm_handler() - SIGTERM handler.
* next_line() - Find the next line in a buffer.
* parse_pserror() - Scan the backchannel data for postscript errors.
* soft_reset() - Send a soft reset to the device.
* get_device_id() - Return IEEE-1284 device ID.
*/
/*
@@ -67,8 +96,7 @@
#include <CoreFoundation/CoreFoundation.h>
#include <IOKit/usb/IOUSBLib.h>
#include <IOKit/IOCFPlugIn.h>
#include <libproc.h>
#include <asl.h>
#include <spawn.h>
#include <pthread.h>
@@ -106,26 +134,6 @@ extern char **environ;
#define kUSBGenericTOPrinterClassDriver CFSTR("/System/Library/Printers/Libraries/USBGenericPrintingClass.plugin")
#define kUSBPrinterClassDeviceNotOpen -9664 /*kPMInvalidIOMContext*/
#define CRSetCrashLogMessage(m) _crc_make_setter(message, m)
#define _crc_make_setter(attr, arg) (gCRAnnotations.attr = (uint64_t)(unsigned long)(arg))
#define CRASH_REPORTER_CLIENT_HIDDEN __attribute__((visibility("hidden")))
#define CRASHREPORTER_ANNOTATIONS_VERSION 4
#define CRASHREPORTER_ANNOTATIONS_SECTION "__crash_info"
struct crashreporter_annotations_t {
uint64_t version; // unsigned long
uint64_t message; // char *
uint64_t signature_string; // char *
uint64_t backtrace; // char *
uint64_t message2; // char *
uint64_t thread; // uint64_t
uint64_t dialog_mode; // unsigned int
};
CRASH_REPORTER_CLIENT_HIDDEN
struct crashreporter_annotations_t gCRAnnotations
__attribute__((section("__DATA," CRASHREPORTER_ANNOTATIONS_SECTION)))
= { CRASHREPORTER_ANNOTATIONS_VERSION, 0, 0, 0, 0, 0, 0 };
/*
* Section 5.3 USB Printing Class spec
@@ -171,7 +179,7 @@ typedef struct classdriver_s /**** g.classdriver context ****/
UInt16 vendorID; /* Vendor id */
UInt16 productID; /* Product id */
printer_interface_t interface; /* identify the device to IOKit */
UInt8 outpipe; /* mandatory bulkOut pipe */
UInt8 outpipe; /* mandatory bulkOut pipe */
UInt8 inpipe; /* optional bulkIn pipe */
/* general class requests */
@@ -251,7 +259,6 @@ typedef struct globals_s
*/
globals_t g = { 0 }; /* Globals */
int Iterating = 0; /* Are we iterating the bus? */
/*
@@ -280,16 +287,12 @@ static void release_deviceinfo(CFStringRef *make, CFStringRef *model, CFStringRe
static void setup_cfLanguage(void);
static void soft_reset(void);
static void status_timer_cb(CFRunLoopTimerRef timer, void *info);
static void log_usb_class_driver(int is_64bit);
#define IS_64BIT 1
#define IS_NOT_64BIT 0
#if defined(__i386__) || defined(__x86_64__)
static pid_t child_pid; /* Child PID */
static void run_legacy_backend(int argc, char *argv[], int fd); /* Starts child backend process running as a ppc executable */
#endif /* __i386__ || __x86_64__ */
static void sigterm_handler(int sig); /* SIGTERM handler */
static void sigquit_handler(int sig, siginfo_t *si, void *unused);
#ifdef PARSE_PS_ERRORS
static const char *next_line (const char *buffer);
@@ -341,20 +344,10 @@ print_device(const char *uri, /* I - Device URI */
struct timeval *timeout, /* Timeout pointer */
tv; /* Time value */
struct timespec cond_timeout; /* pthread condition timeout */
struct sigaction action; /* Actions for POSIX signals */
(void)uri;
/*
* Catch SIGQUIT to determine who is sending it...
*/
memset(&action, 0, sizeof(action));
action.sa_sigaction = sigquit_handler;
action.sa_flags = SA_SIGINFO;
sigaction(SIGQUIT, &action, NULL);
/*
* See if the side-channel descriptor is valid...
*/
@@ -451,11 +444,6 @@ print_device(const char *uri, /* I - Device URI */
return (CUPS_BACKEND_STOP);
}
#ifdef __x86_64__
if (status == noErr && driverBundlePath != NULL && CFStringCompare(driverBundlePath, kUSBGenericTOPrinterClassDriver, 0) != kCFCompareEqualTo)
log_usb_class_driver(IS_64BIT);
#endif /* __x86_64__ */
if (driverBundlePath)
CFRelease(driverBundlePath);
@@ -484,6 +472,9 @@ print_device(const char *uri, /* I - Device URI */
if (!print_fd)
{
struct sigaction action; /* POSIX signal action */
memset(&action, 0, sizeof(action));
sigemptyset(&action.sa_mask);
@@ -693,7 +684,7 @@ print_device(const char *uri, /* I - Device URI */
/*
* Ignore timeout errors, but retain the number of bytes written to
* avoid sending duplicate data...
* avoid sending duplicate data (<rdar://problem/6254911>)...
*/
if (iostatus == kIOUSBTransactionTimeout)
@@ -716,7 +707,7 @@ print_device(const char *uri, /* I - Device URI */
/*
* Retry a write after an aborted write since we probably just got
* SIGTERM...
* SIGTERM (<rdar://problem/6860126>)...
*/
else if (iostatus == kIOReturnAborted)
@@ -1086,8 +1077,6 @@ sidechannel_thread(void *reference)
static void iterate_printers(iterator_callback_t callBack,
void *userdata)
{
Iterating = 1;
mach_port_t masterPort = 0x0;
kern_return_t kr = IOMasterPort (bootstrap_port, &masterPort);
@@ -1111,7 +1100,7 @@ static void iterate_printers(iterator_callback_t callBack,
CFRelease(usb_klass);
CFRelease(usb_subklass);
IOServiceAddMatchingNotification(addNotification, kIOMatchedNotification, usbPrinterMatchDictionary, &device_added, &reference, &addIterator);
kr = IOServiceAddMatchingNotification(addNotification, kIOMatchedNotification, usbPrinterMatchDictionary, &device_added, &reference, &addIterator);
if (addIterator != 0x0)
{
device_added (&reference, addIterator);
@@ -1125,8 +1114,6 @@ static void iterate_printers(iterator_callback_t callBack,
}
mach_port_deallocate(mach_task_self(), masterPort);
}
Iterating = 0;
}
@@ -1150,7 +1137,7 @@ static void device_added(void *userdata,
/* One last call to the call back now that we are not longer have printers left to iterate...
*/
if (reference->keepRunning && reference->callback)
if (reference->keepRunning)
reference->keepRunning = reference->callback(reference->userdata, 0x0);
if (!reference->keepRunning)
@@ -1193,12 +1180,12 @@ static Boolean list_device_cb(void *refcon,
if (!make ||
!CFStringGetCString(make, makestr, sizeof(makestr),
kCFStringEncodingUTF8))
strlcpy(makestr, "Unknown", sizeof(makestr));
strcpy(makestr, "Unknown");
if (!model ||
!CFStringGetCString(model, &modelstr[1], sizeof(modelstr)-1,
kCFStringEncodingUTF8))
strlcpy(modelstr + 1, "Printer", sizeof(modelstr) - 1);
strcpy(modelstr + 1, "Printer");
optionsstr[0] = '\0';
if (serial != NULL)
@@ -1415,7 +1402,7 @@ static kern_return_t load_classdriver(CFStringRef driverPath,
_cups_fc_result_t result = _cupsFileCheck(bundlestr,
_CUPS_FILE_CHECK_DIRECTORY, 1,
Iterating ? NULL : _cupsFileCheckFilter, NULL);
_cupsFileCheckFilter, NULL);
if (result && driverPath)
return (load_classdriver(NULL, interface, printerDriver));
@@ -1582,12 +1569,11 @@ static kern_return_t registry_close(void)
static OSStatus copy_deviceid(classdriver_t **classdriver,
CFStringRef *deviceID)
{
CFStringRef devID = NULL;
CFStringRef deviceMake = NULL;
CFStringRef deviceModel = NULL;
CFStringRef deviceSerial = NULL;
CFStringRef devID = NULL,
*deviceID = NULL;
deviceMake = NULL,
deviceModel = NULL,
deviceSerial = NULL;
OSStatus err = (*classdriver)->GetDeviceID(classdriver, &devID, DEFAULT_TIMEOUT);
@@ -1633,10 +1619,12 @@ static OSStatus copy_deviceid(classdriver_t **classdriver,
if (deviceSerial == NULL && desc.iSerialNumber != 0)
{
err = (*classdriver)->GetString(classdriver, desc.iSerialNumber, kUSBLanguageEnglish, DEFAULT_TIMEOUT, &deviceSerial);
if (deviceSerial != NULL)
CFStringRef data = NULL;
err = (*classdriver)->GetString(classdriver, desc.iSerialNumber, kUSBLanguageEnglish, DEFAULT_TIMEOUT, &data);
if (data != NULL)
{
CFStringAppendFormat(newDevID, NULL, CFSTR("SERN:%@;"), deviceSerial);
CFStringAppendFormat(newDevID, NULL, CFSTR("SERN:%@;"), data);
CFRelease(data);
}
}
@@ -1653,21 +1641,6 @@ static OSStatus copy_deviceid(classdriver_t **classdriver,
{
*deviceID = devID;
}
if (*deviceID == NULL)
return err;
/* Remove special characters from the serial number */
CFRange range = (deviceSerial != NULL ? CFStringFind(deviceSerial, CFSTR("+"), 0) : CFRangeMake(0, 0));
if (range.length == 1) {
range = CFStringFind(*deviceID, deviceSerial, 0);
CFMutableStringRef deviceIDString = CFStringCreateMutableCopy(NULL, 0, *deviceID);
CFStringFindAndReplace(deviceIDString, CFSTR("+"), CFSTR(""), range, 0);
CFRelease(*deviceID);
*deviceID = deviceIDString;
}
release_deviceinfo(&deviceMake, &deviceModel, &deviceSerial);
return err;
@@ -1712,7 +1685,7 @@ static void copy_devicestring(io_service_t usbInterface,
kr = load_classdriver(NULL, interface, &klassDriver);
if (kr == kIOReturnSuccess && klassDriver != NULL)
copy_deviceid(klassDriver, deviceID);
kr = copy_deviceid(klassDriver, deviceID);
unload_classdriver(&klassDriver);
@@ -1955,8 +1928,6 @@ static void run_legacy_backend(int argc,
if (!usb_legacy_status)
{
log_usb_class_driver(IS_NOT_64BIT);
/*
* Setup a SIGTERM handler then block it before forking...
*/
@@ -2123,32 +2094,6 @@ sigterm_handler(int sig) /* I - Signal */
}
/*
* 'sigquit_handler()' - SIGQUIT handler.
*/
static void sigquit_handler(int sig, siginfo_t *si, void *unused)
{
char *path;
char pathbuf[PROC_PIDPATHINFO_MAXSIZE];
static char msgbuf[256] = "";
(void)sig;
(void)unused;
if (proc_pidpath(si->si_pid, pathbuf, sizeof(pathbuf)) > 0 &&
(path = basename(pathbuf)) != NULL)
snprintf(msgbuf, sizeof(msgbuf), "SIGQUIT sent by %s(%d)", path, (int)si->si_pid);
else
snprintf(msgbuf, sizeof(msgbuf), "SIGQUIT sent by PID %d", (int)si->si_pid);
CRSetCrashLogMessage(msgbuf);
abort();
}
#ifdef PARSE_PS_ERRORS
/*
* 'next_line()' - Find the next line in a buffer.
@@ -2219,7 +2164,7 @@ static void parse_pserror(char *sockBuffer,
}
/* move everything over... */
strlcpy(gErrorBuffer, pLineEnd, sizeof(gErrorBuffer));
strcpy(gErrorBuffer, pLineEnd);
gErrorBufferPtr = gErrorBuffer;
pLineEnd = (char *)next_line((const char *)gErrorBuffer);
}
@@ -2319,32 +2264,6 @@ static void get_device_id(cups_sc_status_t *status,
}
static void
log_usb_class_driver(int is_64bit) /* I - Is the USB class driver 64-bit? */
{
/*
* Report the usage of legacy USB class drivers to Apple if the user opts into providing
* feedback to Apple...
*/
aslmsg aslm = asl_new(ASL_TYPE_MSG);
if (aslm)
{
ppd_file_t *ppd = ppdOpenFile(getenv("PPD"));
const char *make_model = ppd ? ppd->nickname : NULL;
ppd_attr_t *version = ppdFindAttr(ppd, "FileVersion", "");
asl_set(aslm, "com.apple.message.domain", "com.apple.printing.usb.64bit");
asl_set(aslm, "com.apple.message.result", is_64bit ? "yes" : "no");
asl_set(aslm, "com.apple.message.signature", make_model ? make_model : "Unknown");
asl_set(aslm, "com.apple.message.signature2", version ? version->value : "?.?");
asl_set(aslm, "com.apple.message.summarize", "YES");
asl_log(NULL, aslm, ASL_LEVEL_NOTICE, "");
asl_free(aslm);
}
}
/*
* End of "$Id: usb-darwin.c 11670 2014-03-04 14:53:59Z msweet $".
* End of "$Id$".
*/
+195 -259
Ver Arquivo
@@ -1,5 +1,5 @@
/*
* "$Id: usb-libusb.c 11456 2013-12-09 19:26:47Z msweet $"
* "$Id$"
*
* LIBUSB interface code for CUPS.
*
@@ -16,20 +16,18 @@
* list_devices() - List the available printers.
* print_device() - Print a file to a USB device.
* close_device() - Close the connection to the USB printer.
* compare_quirks() - Compare two quirks entries.
* find_device() - Find or enumerate USB printers.
* find_quirks() - Find the quirks for the given printer, if any.
* get_device_id() - Get the IEEE-1284 device ID for the printer.
* list_cb() - List USB printers for discovery.
* load_quirks() - Load all quirks files in the /usr/share/cups/usb
* directory.
* make_device_uri() - Create a device URI for a USB printer.
* open_device() - Open a connection to the USB printer.
* print_cb() - Find a USB printer for printing.
* printer_class_soft_reset()' - Do the soft reset request specific to
* printers
* quirks() - Get the known quirks of a given printer model
* read_thread() - Thread to read the backchannel data on.
* sidechannel_thread() - Handle side-channel requests.
* soft_reset() - Send a soft reset to the device.
* soft_reset_printer() - Do the soft reset request specific to printers
*/
/*
@@ -38,7 +36,6 @@
#include <libusb.h>
#include <cups/cups-private.h>
#include <cups/dir.h>
#include <pthread.h>
#include <sys/select.h>
#include <sys/types.h>
@@ -73,15 +70,15 @@ typedef struct usb_printer_s /**** USB Printer Data ****/
read_endp, /* Read endpoint */
protocol, /* Protocol: 1 = Uni-di, 2 = Bi-di. */
usblp_attached, /* "usblp" kernel module attached? */
reset_after_job;/* Set to 1 by print_device() */
unsigned quirks; /* Quirks flags */
reset_after_job; /* Set to 1 by print_device() */
unsigned int quirks; /* Quirks flags */
struct libusb_device_handle *handle; /* Open handle to device */
} usb_printer_t;
typedef int (*usb_cb_t)(usb_printer_t *, const char *, const char *,
const void *);
typedef struct usb_globals_s /* Global USB printer information */
typedef struct usb_globals_s
{
usb_printer_t *printer; /* Printer */
@@ -108,41 +105,127 @@ typedef struct usb_globals_s /* Global USB printer information */
} usb_globals_t;
/*
* Quirks: various printer quirks are handled by this structure and its flags.
* Quirks: various printer quirks are handled by this table & its flags.
*
* The quirks table used to be compiled into the backend but is now loaded from
* one or more files in the /usr/share/cups/usb directory.
* This is copied from the usblp kernel module. So we can easily copy and paste
* new quirks from the module.
*/
#define USB_QUIRK_BLACKLIST 0x0001 /* Does not conform to the spec */
#define USB_QUIRK_NO_REATTACH 0x0002 /* After printing we cannot re-attach
the usblp kernel module */
#define USB_QUIRK_SOFT_RESET 0x0004 /* After printing do a soft reset
for clean-up */
#define USB_QUIRK_UNIDIR 0x0008 /* Requires unidirectional mode */
#define USB_QUIRK_USB_INIT 0x0010 /* Needs vendor USB init string */
#define USB_QUIRK_VENDOR_CLASS 0x0020 /* Descriptor uses vendor-specific
struct quirk_printer_struct {
int vendorId;
int productId;
unsigned int quirks;
};
#define USBLP_QUIRK_BIDIR 0x1 /* reports bidir but requires
unidirectional mode (no INs/reads) */
#define USBLP_QUIRK_USB_INIT 0x2 /* needs vendor USB init string */
#define USBLP_QUIRK_BAD_CLASS 0x4 /* descriptor uses vendor-specific
Class or SubClass */
#define USB_QUIRK_WHITELIST 0x0000 /* no quirks */
typedef struct usb_quirk_s /* USB "quirk" information */
{
int vendor_id, /* Affected vendor ID */
product_id; /* Affected product ID or 0 for all */
unsigned quirks; /* Quirks bitfield */
} usb_quirk_t;
#define USBLP_QUIRK_BLACKLIST 0x8 /* these printers do not conform to the USB print spec */
#define USBLP_QUIRK_RESET 0x4000 /* After printing do a reset
for clean-up */
#define USBLP_QUIRK_NO_REATTACH 0x8000 /* After printing we cannot re-attach
the usblp kernel module */
static const struct quirk_printer_struct quirk_printers[] = {
{ 0x03f0, 0x0004, USBLP_QUIRK_BIDIR }, /* HP DeskJet 895C */
{ 0x03f0, 0x0104, USBLP_QUIRK_BIDIR }, /* HP DeskJet 880C */
{ 0x03f0, 0x0204, USBLP_QUIRK_BIDIR }, /* HP DeskJet 815C */
{ 0x03f0, 0x0304, USBLP_QUIRK_BIDIR }, /* HP DeskJet 810C/812C */
{ 0x03f0, 0x0404, USBLP_QUIRK_BIDIR }, /* HP DeskJet 830C */
{ 0x03f0, 0x0504, USBLP_QUIRK_BIDIR }, /* HP DeskJet 885C */
{ 0x03f0, 0x0604, USBLP_QUIRK_BIDIR }, /* HP DeskJet 840C */
{ 0x03f0, 0x0804, USBLP_QUIRK_BIDIR }, /* HP DeskJet 816C */
{ 0x03f0, 0x1104, USBLP_QUIRK_BIDIR }, /* HP Deskjet 959C */
{ 0x0409, 0xefbe, USBLP_QUIRK_BIDIR }, /* NEC Picty900 (HP OEM) */
{ 0x0409, 0xbef4, USBLP_QUIRK_BIDIR }, /* NEC Picty760 (HP OEM) */
{ 0x0409, 0xf0be, USBLP_QUIRK_BIDIR }, /* NEC Picty920 (HP OEM) */
{ 0x0409, 0xf1be, USBLP_QUIRK_BIDIR }, /* NEC Picty800 (HP OEM) */
{ 0x0482, 0x0010, USBLP_QUIRK_BIDIR }, /* Kyocera Mita FS 820,
by zut <kernel@zut.de> */
{ 0x04a9, 0x10a2, USBLP_QUIRK_BIDIR }, /* Canon, Inc. PIXMA iP4200
Printer, http://www.cups.org/str.php?L4155 */
{ 0x04a9, 0x10b6, USBLP_QUIRK_BIDIR }, /* Canon, Inc. PIXMA iP4300
Printer, https://bugs.launchpad.net/bugs/1032385 */
{ 0x04a9, 0x1721, USBLP_QUIRK_BIDIR }, /* Canon, Inc. MP210
https://bugzilla.redhat.com/show_bug.cgi?id=847923#c53 */
{ 0x04a9, 0x170c, USBLP_QUIRK_BIDIR }, /* Canon, Inc. MP500
Printer, https://bugs.launchpad.net/bugs/1032456 */
{ 0x04a9, 0x1717, USBLP_QUIRK_BIDIR }, /* Canon, Inc. MP510
Printer, https://bugs.launchpad.net/bugs/1050009 */
{ 0x04a9, 0x173d, USBLP_QUIRK_BIDIR }, /* Canon, Inc. MP550
Printer, http://www.cups.org/str.php?L4155 */
{ 0x04a9, 0x173e, USBLP_QUIRK_BIDIR }, /* Canon, Inc. MP560
Printer, http://www.cups.org/str.php?L4155 */
{ 0x04f9, 0x001a, USBLP_QUIRK_NO_REATTACH }, /* Brother Industries, Ltd
HL-1430 Laser Printer,
https://bugs.launchpad.net/bugs/1038695 */
{ 0x04f9, 0x000d, USBLP_QUIRK_BIDIR |
USBLP_QUIRK_NO_REATTACH }, /* Brother Industries, Ltd
HL-1440 Laser Printer,
https://bugs.launchpad.net/bugs/1000253 */
{ 0x06bc, 0x000b, USBLP_QUIRK_NO_REATTACH }, /* Oki Data Corp.
Okipage 14ex Printer,
https://bugs.launchpad.net/bugs/872483 */
{ 0x06bc, 0x01c7, USBLP_QUIRK_NO_REATTACH }, /* Oki Data Corp. B410d,
https://bugs.launchpad.net/bugs/872483 */
{ 0x04b8, 0x0001, USBLP_QUIRK_BIDIR }, /* Seiko Epson Corp. Stylus Color 740 / Photo 750,
http://bugs.debian.org/697970 */
{ 0x04b8, 0x0202, USBLP_QUIRK_BAD_CLASS }, /* Seiko Epson Receipt
Printer M129C */
{ 0x067b, 0x2305, USBLP_QUIRK_BIDIR |
USBLP_QUIRK_NO_REATTACH |
USBLP_QUIRK_RESET },
{ 0x0924, 0x3ce9, USBLP_QUIRK_NO_REATTACH }, /* Xerox Phaser 3124
https://bugzilla.redhat.com/show_bug.cgi?id=867392 */
{ 0x0924, 0x4293, USBLP_QUIRK_NO_REATTACH }, /* Xerox WorkCentre 3210
https://bugs.launchpad.net/bugs/1102470 */
/* Prolific Technology, Inc. PL2305 Parallel Port
(USB -> Parallel adapter), https://bugs.launchpad.net/bugs/987485 */
{ 0x04e8, 0x0000, USBLP_QUIRK_RESET }, /* All Samsung devices,
https://bugs.launchpad.net/bugs/1032456 */
{ 0x0a5f, 0x0000, USBLP_QUIRK_BIDIR }, /* All Zebra devices,
https://bugs.launchpad.net/bugs/1001028 */
/* Canon */
{ 0x04a9, 0x304a, USBLP_QUIRK_BLACKLIST }, /* Canon CP-10 */
{ 0x04a9, 0x3063, USBLP_QUIRK_BLACKLIST }, /* Canon CP-100 */
{ 0x04a9, 0x307c, USBLP_QUIRK_BLACKLIST }, /* Canon CP-200 */
{ 0x04a9, 0x307d, USBLP_QUIRK_BLACKLIST }, /* Canon CP-300 */
{ 0x04a9, 0x30bd, USBLP_QUIRK_BLACKLIST }, /* Canon CP-220 */
{ 0x04a9, 0x30be, USBLP_QUIRK_BLACKLIST }, /* Canon CP-330 */
{ 0x04a9, 0x30f6, USBLP_QUIRK_BLACKLIST }, /* Canon SELPHY CP400 */
{ 0x04a9, 0x310b, USBLP_QUIRK_BLACKLIST }, /* Canon SELPHY CP600 */
{ 0x04a9, 0x3127, USBLP_QUIRK_BLACKLIST }, /* Canon SELPHY CP710 */
{ 0x04a9, 0x3128, USBLP_QUIRK_BLACKLIST }, /* Canon SELPHY CP510 */
{ 0x04a9, 0x3141, USBLP_QUIRK_BLACKLIST }, /* Canon SELPHY ES1 */
{ 0x04a9, 0x3142, USBLP_QUIRK_BLACKLIST }, /* Canon SELPHY CP730 */
{ 0x04a9, 0x3143, USBLP_QUIRK_BLACKLIST }, /* Canon SELPHY CP720 */
{ 0x04a9, 0x3170, USBLP_QUIRK_BLACKLIST }, /* Canon SELPHY CP750 */
{ 0x04a9, 0x3171, USBLP_QUIRK_BLACKLIST }, /* Canon SELPHY CP740 */
{ 0x04a9, 0x3185, USBLP_QUIRK_BLACKLIST }, /* Canon SELPHY ES2 */
{ 0x04a9, 0x3186, USBLP_QUIRK_BLACKLIST }, /* Canon SELPHY ES20 */
{ 0x04a9, 0x31aa, USBLP_QUIRK_BLACKLIST }, /* Canon SELPHY CP770 */
{ 0x04a9, 0x31ab, USBLP_QUIRK_BLACKLIST }, /* Canon SELPHY CP760 */
{ 0x04a9, 0x31b0, USBLP_QUIRK_BLACKLIST }, /* Canon SELPHY ES30 */
{ 0x04a9, 0x31dd, USBLP_QUIRK_BLACKLIST }, /* Canon SELPHY CP780 */
{ 0x04a9, 0x31ee, USBLP_QUIRK_BLACKLIST }, /* Canon SELPHY ES40 */
{ 0x04a9, 0x3214, USBLP_QUIRK_BLACKLIST }, /* Canon SELPHY CP800 */
{ 0x04a9, 0x3255, USBLP_QUIRK_BLACKLIST }, /* Canon SELPHY CP900 */
{ 0x04a9, 0x3256, USBLP_QUIRK_BLACKLIST }, /* Canon SELPHY CP810 */
{ 0x04a9, 0x30F5, USBLP_QUIRK_BLACKLIST }, /* Canon SELPHY CP500 */
{ 0x04a9, 0x31AF, USBLP_QUIRK_BLACKLIST }, /* Canon SELPHY ES3 */
/* MISSING PIDs: CP520, CP530, CP790 */
{ 0, 0 }
};
/*
* Globals...
*/
cups_array_t *all_quirks; /* Array of printer quirks */
usb_globals_t g = { 0 }; /* Globals */
libusb_device **all_list; /* List of connected USB devices */
libusb_device **list; /* List of connected USB devices */
/*
@@ -150,24 +233,22 @@ libusb_device **all_list; /* List of connected USB devices */
*/
static int close_device(usb_printer_t *printer);
static int compare_quirks(usb_quirk_t *a, usb_quirk_t *b);
static usb_printer_t *find_device(usb_cb_t cb, const void *data);
static unsigned find_quirks(int vendor_id, int product_id);
static int get_device_id(usb_printer_t *printer, char *buffer,
size_t bufsize);
static int list_cb(usb_printer_t *printer, const char *device_uri,
const char *device_id, const void *data);
static void load_quirks(void);
static char *make_device_uri(usb_printer_t *printer,
const char *device_id,
char *uri, size_t uri_size);
static int open_device(usb_printer_t *printer, int verbose);
static int print_cb(usb_printer_t *printer, const char *device_uri,
const char *device_id, const void *data);
static int printer_class_soft_reset(usb_printer_t *printer);
static unsigned int quirks(int vendor, int product);
static void *read_thread(void *reference);
static void *sidechannel_thread(void *reference);
static void soft_reset(void);
static int soft_reset_printer(usb_printer_t *printer);
/*
@@ -177,8 +258,6 @@ static int soft_reset_printer(usb_printer_t *printer);
void
list_devices(void)
{
load_quirks();
fputs("DEBUG: list_devices\n", stderr);
find_device(list_cb, NULL);
}
@@ -221,8 +300,6 @@ print_device(const char *uri, /* I - Device URI */
const char *val; /* Option value */
load_quirks();
/*
* See if the side-channel descriptor is valid...
*/
@@ -248,9 +325,9 @@ print_device(const char *uri, /* I - Device URI */
/*
* Some devices need a reset after finishing a job, these devices are
* marked with the USB_QUIRK_SOFT_RESET quirk.
* marked with the USBLP_QUIRK_RESET quirk.
*/
g.printer->reset_after_job = (g.printer->quirks & USB_QUIRK_SOFT_RESET ? 1 : 0);
g.printer->reset_after_job = (g.printer->quirks & USBLP_QUIRK_RESET ? 1 : 0);
/*
* If we are printing data from a print driver on stdin, ignore SIGTERM
@@ -496,7 +573,7 @@ print_device(const char *uri, /* I - Device URI */
iostatus = libusb_bulk_transfer(g.printer->handle,
g.printer->write_endp,
print_buffer, g.print_bytes,
&bytes, 0);
&bytes, 60000);
/*
* Ignore timeout errors, but retain the number of bytes written to
* avoid sending duplicate data...
@@ -519,7 +596,7 @@ print_device(const char *uri, /* I - Device URI */
iostatus = libusb_bulk_transfer(g.printer->handle,
g.printer->write_endp,
print_buffer, g.print_bytes,
&bytes, 0);
&bytes, 60000);
}
/*
@@ -534,7 +611,7 @@ print_device(const char *uri, /* I - Device URI */
iostatus = libusb_bulk_transfer(g.printer->handle,
g.printer->write_endp,
print_buffer, g.print_bytes,
&bytes, 0);
&bytes, 60000);
}
if (iostatus)
@@ -667,7 +744,7 @@ print_device(const char *uri, /* I - Device URI */
* Clean up ....
*/
libusb_free_device_list(all_list, 1);
libusb_free_device_list(list, 1);
libusb_exit(NULL);
return (status);
@@ -786,23 +863,6 @@ close_device(usb_printer_t *printer) /* I - Printer */
}
/*
* 'compare_quirks()' - Compare two quirks entries.
*/
static int /* O - Result of comparison */
compare_quirks(usb_quirk_t *a, /* I - First quirk entry */
usb_quirk_t *b) /* I - Second quirk entry */
{
int result; /* Result of comparison */
if ((result = b->vendor_id - a->vendor_id) == 0)
result = b->product_id - a->product_id;
return (result);
}
/*
* 'find_device()' - Find or enumerate USB printers.
*/
@@ -823,8 +883,7 @@ find_device(usb_cb_t cb, /* I - Callback function */
/* Pointer to current alternate setting */
const struct libusb_endpoint_descriptor *endpptr = NULL;
/* Pointer to current endpoint */
ssize_t err = 0, /* Error code */
numdevs, /* number of connected devices */
ssize_t numdevs, /* number of connected devices */
i = 0;
uint8_t conf, /* Current configuration */
iface, /* Current interface */
@@ -843,14 +902,7 @@ find_device(usb_cb_t cb, /* I - Callback function */
* Initialize libusb...
*/
err = libusb_init(NULL);
if (err)
{
fprintf(stderr, "DEBUG: Unable to initialize USB access via libusb, "
"libusb error %i\n", (int)err);
return (NULL);
}
libusb_init(NULL);
numdevs = libusb_get_device_list(NULL, &list);
fprintf(stderr, "DEBUG: libusb_get_device_list=%d\n", (int)numdevs);
@@ -875,13 +927,13 @@ find_device(usb_cb_t cb, /* I - Callback function */
!devdesc.idProduct)
continue;
printer.quirks = find_quirks(devdesc.idVendor, devdesc.idProduct);
printer.quirks = quirks(devdesc.idVendor, devdesc.idProduct);
/*
* Ignore blacklisted printers...
*/
if (printer.quirks & USB_QUIRK_BLACKLIST)
if (printer.quirks & USBLP_QUIRK_BLACKLIST)
continue;
for (conf = 0; conf < devdesc.bNumConfigurations; conf ++)
@@ -910,13 +962,13 @@ find_device(usb_cb_t cb, /* I - Callback function */
if (((altptr->bInterfaceClass != LIBUSB_CLASS_PRINTER ||
altptr->bInterfaceSubClass != 1) &&
((printer.quirks & USB_QUIRK_VENDOR_CLASS) == 0)) ||
((printer.quirks & USBLP_QUIRK_BAD_CLASS) == 0)) ||
(altptr->bInterfaceProtocol != 1 && /* Unidirectional */
altptr->bInterfaceProtocol != 2) || /* Bidirectional */
altptr->bInterfaceProtocol < protocol)
continue;
if (printer.quirks & USB_QUIRK_VENDOR_CLASS)
if (printer.quirks & USBLP_QUIRK_BAD_CLASS)
fprintf(stderr, "DEBUG: Printer does not report class 7 and/or "
"subclass 1 but works as a printer anyway\n");
@@ -973,7 +1025,7 @@ find_device(usb_cb_t cb, /* I - Callback function */
{
fprintf(stderr, "DEBUG: Device protocol: %d\n",
printer.protocol);
if (printer.quirks & USB_QUIRK_UNIDIR)
if (printer.quirks & USBLP_QUIRK_BIDIR)
{
printer.read_endp = -1;
fprintf(stderr, "DEBUG: Printer reports bi-di support "
@@ -993,7 +1045,7 @@ find_device(usb_cb_t cb, /* I - Callback function */
altsetting[printer.altset].
endpoint[printer.write_endp].
bEndpointAddress;
if (printer.quirks & USB_QUIRK_NO_REATTACH)
if (printer.quirks & USBLP_QUIRK_NO_REATTACH)
{
printer.usblp_attached = 0;
fprintf(stderr, "DEBUG: Printer does not like usblp "
@@ -1020,43 +1072,13 @@ find_device(usb_cb_t cb, /* I - Callback function */
* Clean up ....
*/
if (numdevs >= 0)
libusb_free_device_list(list, 1);
libusb_free_device_list(list, 1);
libusb_exit(NULL);
return (NULL);
}
/*
* 'find_quirks()' - Find the quirks for the given printer, if any.
*
* First looks for an exact match, then looks for the vendor ID wildcard match.
*/
static unsigned /* O - Quirks flags */
find_quirks(int vendor_id, /* I - Vendor ID */
int product_id) /* I - Product ID */
{
usb_quirk_t key, /* Search key */
*match; /* Matching quirk entry */
key.vendor_id = vendor_id;
key.product_id = product_id;
if ((match = cupsArrayFind(all_quirks, &key)) != NULL)
return (match->quirks);
key.product_id = 0;
if ((match = cupsArrayFind(all_quirks, &key)) != NULL)
return (match->quirks);
return (USB_QUIRK_WHITELIST);
}
/*
* 'get_device_id()' - Get the IEEE-1284 device ID for the printer.
*/
@@ -1162,104 +1184,6 @@ list_cb(usb_printer_t *printer, /* I - Printer */
}
/*
* 'load_quirks()' - Load all quirks files in the /usr/share/cups/usb directory.
*/
static void
load_quirks(void)
{
const char *datadir; /* CUPS_DATADIR environment variable */
char filename[1024], /* Filename */
line[1024]; /* Line from file */
cups_dir_t *dir; /* Directory */
cups_dentry_t *dent; /* Directory entry */
cups_file_t *fp; /* Quirks file */
usb_quirk_t *quirk; /* New quirk */
all_quirks = cupsArrayNew((cups_array_func_t)compare_quirks, NULL);
if ((datadir = getenv("CUPS_DATADIR")) == NULL)
datadir = CUPS_DATADIR;
snprintf(filename, sizeof(filename), "%s/usb", datadir);
if ((dir = cupsDirOpen(filename)) == NULL)
{
perror(filename);
return;
}
fprintf(stderr, "DEBUG: Loading USB quirks from \"%s\".\n", filename);
while ((dent = cupsDirRead(dir)) != NULL)
{
if (!S_ISREG(dent->fileinfo.st_mode))
continue;
snprintf(filename, sizeof(filename), "%s/usb/%s", datadir, dent->filename);
if ((fp = cupsFileOpen(filename, "r")) == NULL)
{
perror(filename);
continue;
}
while (cupsFileGets(fp, line, sizeof(line)))
{
/*
* Skip blank and comment lines...
*/
if (line[0] == '#' || !line[0])
continue;
/*
* Add a quirk...
*/
if ((quirk = calloc(1, sizeof(usb_quirk_t))) == NULL)
{
perror("DEBUG: Unable to allocate memory for quirk");
break;
}
if (sscanf(line, "%x%x", &quirk->vendor_id, &quirk->product_id) < 1)
{
fprintf(stderr, "DEBUG: Bad line: %s\n", line);
free(quirk);
continue;
}
if (strstr(line, " blacklist"))
quirk->quirks |= USB_QUIRK_BLACKLIST;
if (strstr(line, " no-reattach"))
quirk->quirks |= USB_QUIRK_NO_REATTACH;
if (strstr(line, " soft-reset"))
quirk->quirks |= USB_QUIRK_SOFT_RESET;
if (strstr(line, " unidir"))
quirk->quirks |= USB_QUIRK_UNIDIR;
if (strstr(line, " usb-init"))
quirk->quirks |= USB_QUIRK_USB_INIT;
if (strstr(line, " vendor-class"))
quirk->quirks |= USB_QUIRK_VENDOR_CLASS;
cupsArrayAdd(all_quirks, quirk);
}
cupsFileClose(fp);
}
fprintf(stderr, "DEBUG: Loaded %d quirks.\n", cupsArrayCount(all_quirks));
cupsDirClose(dir);
}
/*
* 'make_device_uri()' - Create a device URI for a USB printer.
*/
@@ -1686,6 +1610,65 @@ print_cb(usb_printer_t *printer, /* I - Printer */
}
/*
* 'printer_class_soft_reset()' - Do the soft reset request specific to printers
*
* This soft reset is specific to the printer device class and is much less
* invasive than the general USB reset libusb_reset_device(). Especially it
* does never happen that the USB addressing and configuration changes. What
* is actually done is that all buffers get flushed and the bulk IN and OUT
* pipes get reset to their default states. This clears all stall conditions.
* See http://cholla.mmto.org/computers/linux/usb/usbprint11.pdf
*/
static int /* O - 0 on success, < 0 on error */
printer_class_soft_reset(usb_printer_t *printer) /* I - Printer */
{
struct libusb_config_descriptor *confptr = NULL;
/* Pointer to current configuration */
int interface,
errcode;
if (libusb_get_config_descriptor(printer->device, printer->conf, &confptr)
< 0)
interface = printer->iface;
else
interface = confptr->interface[printer->iface].
altsetting[printer->altset].bInterfaceNumber;
libusb_free_config_descriptor(confptr);
if ((errcode = libusb_control_transfer(printer->handle,
LIBUSB_REQUEST_TYPE_CLASS |
LIBUSB_ENDPOINT_OUT |
LIBUSB_RECIPIENT_OTHER,
2, 0, interface, NULL, 0, 5000)) < 0)
errcode = libusb_control_transfer(printer->handle,
LIBUSB_REQUEST_TYPE_CLASS |
LIBUSB_ENDPOINT_OUT |
LIBUSB_RECIPIENT_INTERFACE,
2, 0, interface, NULL, 0, 5000);
return errcode;
}
/*
* 'quirks()' - Get the known quirks of a given printer model
*/
static unsigned int quirks(int vendor, int product)
{
int i;
for (i = 0; quirk_printers[i].vendorId; i++)
{
if (vendor == quirk_printers[i].vendorId &&
(quirk_printers[i].productId == 0x0000 ||
product == quirk_printers[i].productId))
return quirk_printers[i].quirks;
}
return 0;
}
/*
* 'read_thread()' - Thread to read the backchannel data on.
*/
@@ -1909,15 +1892,13 @@ sidechannel_thread(void *reference)
* 'soft_reset()' - Send a soft reset to the device.
*/
static void
soft_reset(void)
static void soft_reset(void)
{
fd_set input_set; /* Input set for select() */
struct timeval tv; /* Time value */
char buffer[2048]; /* Buffer */
struct timespec cond_timeout; /* pthread condition timeout */
/*
* Send an abort once a second until the I/O lock is released by the main
* thread...
@@ -1962,7 +1943,7 @@ soft_reset(void)
* Send the reset...
*/
soft_reset_printer(g.printer);
printer_class_soft_reset(g.printer);
/*
* Release the I/O lock...
@@ -1976,51 +1957,6 @@ soft_reset(void)
/*
* 'soft_reset_printer()' - Do the soft reset request specific to printers
*
* This soft reset is specific to the printer device class and is much less
* invasive than the general USB reset libusb_reset_device(). Especially it
* does never happen that the USB addressing and configuration changes. What
* is actually done is that all buffers get flushed and the bulk IN and OUT
* pipes get reset to their default states. This clears all stall conditions.
* See http://cholla.mmto.org/computers/linux/usb/usbprint11.pdf
*/
static int /* O - 0 on success, < 0 on error */
soft_reset_printer(
usb_printer_t *printer) /* I - Printer */
{
struct libusb_config_descriptor *confptr = NULL;
/* Pointer to current configuration */
int interface, /* Interface to reset */
errcode; /* Error code */
if (libusb_get_config_descriptor(printer->device, printer->conf,
&confptr) < 0)
interface = printer->iface;
else
interface = confptr->interface[printer->iface].
altsetting[printer->altset].bInterfaceNumber;
libusb_free_config_descriptor(confptr);
if ((errcode = libusb_control_transfer(printer->handle,
LIBUSB_REQUEST_TYPE_CLASS |
LIBUSB_ENDPOINT_OUT |
LIBUSB_RECIPIENT_OTHER,
2, 0, interface, NULL, 0, 5000)) < 0)
errcode = libusb_control_transfer(printer->handle,
LIBUSB_REQUEST_TYPE_CLASS |
LIBUSB_ENDPOINT_OUT |
LIBUSB_RECIPIENT_INTERFACE,
2, 0, interface, NULL, 0, 5000);
return (errcode);
}
/*
* End of "$Id: usb-libusb.c 11456 2013-12-09 19:26:47Z msweet $".
* End of "$Id$".
*/
+3 -2
Ver Arquivo
@@ -1,5 +1,5 @@
/*
* "$Id: usb-unix.c 10996 2013-05-29 11:51:34Z msweet $"
* "$Id$"
*
* USB port backend for CUPS.
*
@@ -257,6 +257,7 @@ list_devices(void)
close(fd);
}
#elif defined(__sgi)
#elif defined(__sun) && defined(ECPPIOC_GETDEVID)
int i; /* Looping var */
int fd; /* File descriptor */
@@ -612,5 +613,5 @@ side_cb(int print_fd, /* I - Print file */
/*
* End of "$Id: usb-unix.c 10996 2013-05-29 11:51:34Z msweet $".
* End of "$Id$".
*/
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
/*
* "$Id: usb.c 10996 2013-05-29 11:51:34Z msweet $"
* "$Id$"
*
* USB port backend for CUPS.
*
@@ -260,5 +260,5 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
/*
* End of "$Id: usb.c 10996 2013-05-29 11:51:34Z msweet $".
* End of "$Id$".
*/
+2 -3
Ver Arquivo
@@ -1,5 +1,5 @@
#
# "$Id: Makefile 10996 2013-05-29 11:51:34Z msweet $"
# "$Id$"
#
# Berkeley commands makefile for CUPS.
#
@@ -88,7 +88,6 @@ install-exec:
$(INSTALL_DIR) $(SYMROOT); \
for file in $(TARGETS); do \
cp $$file $(SYMROOT); \
dsymutil $(SYMROOT)/$$file; \
done \
fi
@@ -164,5 +163,5 @@ include Dependencies
#
# End of "$Id: Makefile 10996 2013-05-29 11:51:34Z msweet $".
# End of "$Id$".
#
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
/*
* "$Id: lpc.c 10996 2013-05-29 11:51:34Z msweet $"
* "$Id$"
*
* "lpc" command for CUPS.
*
@@ -446,5 +446,5 @@ show_status(http_t *http, /* I - HTTP connection to server */
/*
* End of "$Id: lpc.c 10996 2013-05-29 11:51:34Z msweet $".
* End of "$Id$".
*/
+26 -27
Ver Arquivo
@@ -1,9 +1,9 @@
/*
* "$Id: lpq.c 11101 2013-07-08 11:20:33Z msweet $"
* "$Id$"
*
* "lpq" command for CUPS.
*
* Copyright 2007-2013 by Apple Inc.
* Copyright 2007-2012 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -60,7 +60,8 @@ main(int argc, /* I - Number of command-line arguments */
all, /* All printers */
interval, /* Reporting interval */
longstatus; /* Show file details */
cups_dest_t *named_dest; /* Named destination */
int num_dests; /* Number of destinations */
cups_dest_t *dests; /* Destinations */
_cupsSetLocale(argv);
@@ -76,6 +77,8 @@ main(int argc, /* I - Number of command-line arguments */
interval = 0;
longstatus = 0;
all = 0;
num_dests = 0;
dests = NULL;
for (i = 1; i < argc; i ++)
if (argv[i][0] == '+')
@@ -124,6 +127,7 @@ main(int argc, /* I - Number of command-line arguments */
if (i >= argc)
{
httpClose(http);
cupsFreeDests(num_dests, dests);
usage();
}
@@ -136,14 +140,12 @@ main(int argc, /* I - Number of command-line arguments */
http = connect_server(argv[0], http);
if ((named_dest = cupsGetNamedDest(http, dest, instance)) == NULL)
if (num_dests == 0)
num_dests = cupsGetDests2(http, &dests);
if (cupsGetDest(dest, instance, num_dests, dests) == NULL)
{
if (cupsLastError() == IPP_STATUS_ERROR_BAD_REQUEST ||
cupsLastError() == IPP_STATUS_ERROR_VERSION_NOT_SUPPORTED)
_cupsLangPrintf(stderr,
_("%s: Error - add '/version=1.1' to server "
"name."), argv[0]);
else if (instance)
if (instance)
_cupsLangPrintf(stderr,
_("%s: Error - unknown destination \"%s/%s\"."),
argv[0], dest, instance);
@@ -153,8 +155,6 @@ main(int argc, /* I - Number of command-line arguments */
return (1);
}
cupsFreeDests(1, named_dest);
break;
case 'a' : /* All printers */
@@ -192,6 +192,7 @@ main(int argc, /* I - Number of command-line arguments */
default :
httpClose(http);
cupsFreeDests(num_dests, dests);
usage();
break;
@@ -206,17 +207,15 @@ main(int argc, /* I - Number of command-line arguments */
if (dest == NULL && !all)
{
if ((named_dest = cupsGetNamedDest(http, NULL, NULL)) == NULL)
{
if (cupsLastError() == IPP_STATUS_ERROR_BAD_REQUEST ||
cupsLastError() == IPP_STATUS_ERROR_VERSION_NOT_SUPPORTED)
{
_cupsLangPrintf(stderr,
_("%s: Error - add '/version=1.1' to server name."),
argv[0]);
return (1);
}
if (num_dests == 0)
num_dests = cupsGetDests2(http, &dests);
for (i = 0; i < num_dests; i ++)
if (dests[i].is_default)
dest = dests[i].name;
if (dest == NULL)
{
val = NULL;
if ((dest = getenv("LPDEST")) == NULL)
@@ -232,7 +231,7 @@ main(int argc, /* I - Number of command-line arguments */
else
val = "LPDEST";
if (dest && val)
if (dest && !cupsGetDest(dest, NULL, num_dests, dests))
_cupsLangPrintf(stderr,
_("%s: Error - %s environment variable names "
"non-existent destination \"%s\"."), argv[0], val,
@@ -242,10 +241,9 @@ main(int argc, /* I - Number of command-line arguments */
_("%s: Error - no default destination available."),
argv[0]);
httpClose(http);
cupsFreeDests(num_dests, dests);
return (1);
}
dest = named_dest->name;
}
/*
@@ -272,6 +270,7 @@ main(int argc, /* I - Number of command-line arguments */
* Close the connection to the server and return...
*/
cupsFreeDests(num_dests, dests);
httpClose(http);
return (0);
@@ -528,7 +527,7 @@ show_jobs(const char *command, /* I - Command name */
*/
if (jobstate == IPP_JOB_PROCESSING)
strlcpy(rankstr, "active", sizeof(rankstr));
strcpy(rankstr, "active");
else
{
/*
@@ -679,5 +678,5 @@ usage(void)
/*
* End of "$Id: lpq.c 11101 2013-07-08 11:20:33Z msweet $".
* End of "$Id$".
*/
+3 -21
Ver Arquivo
@@ -1,9 +1,9 @@
/*
* "$Id: lpr.c 11101 2013-07-08 11:20:33Z msweet $"
* "$Id$"
*
* "lpr" command for CUPS.
*
* Copyright 2007-2013 by Apple Inc.
* Copyright 2007-2012 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -61,7 +61,6 @@ main(int argc, /* I - Number of command-line arguments */
for (i = 1; i < argc; i ++)
if (argv[i][0] == '-')
{
switch (ch = argv[i][1])
{
case 'E' : /* Encrypt */
@@ -227,14 +226,6 @@ main(int argc, /* I - Number of command-line arguments */
dest->options[j].value,
num_options, &options);
}
else if (cupsLastError() == IPP_STATUS_ERROR_BAD_REQUEST ||
cupsLastError() == IPP_STATUS_ERROR_VERSION_NOT_SUPPORTED)
{
_cupsLangPrintf(stderr,
_("%s: Error - add '/version=1.1' to server "
"name."), argv[0]);
return (1);
}
break;
case '#' : /* Number of copies */
@@ -284,7 +275,6 @@ main(int argc, /* I - Number of command-line arguments */
argv[i][1]);
return (1);
}
}
else if (num_files < 1000)
{
/*
@@ -330,14 +320,6 @@ main(int argc, /* I - Number of command-line arguments */
dest->options[j].value,
num_options, &options);
}
else if (cupsLastError() == IPP_STATUS_ERROR_BAD_REQUEST ||
cupsLastError() == IPP_STATUS_ERROR_VERSION_NOT_SUPPORTED)
{
_cupsLangPrintf(stderr,
_("%s: Error - add '/version=1.1' to server "
"name."), argv[0]);
return (1);
}
}
if (printer == NULL)
@@ -436,5 +418,5 @@ main(int argc, /* I - Number of command-line arguments */
/*
* End of "$Id: lpr.c 11101 2013-07-08 11:20:33Z msweet $".
* End of "$Id$".
*/
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
/*
* "$Id: lprm.c 10996 2013-05-29 11:51:34Z msweet $"
* "$Id$"
*
* "lprm" command for CUPS.
*
@@ -213,5 +213,5 @@ main(int argc, /* I - Number of command-line arguments */
/*
* End of "$Id: lprm.c 10996 2013-05-29 11:51:34Z msweet $".
* End of "$Id$".
*/
+2 -4
Ver Arquivo
@@ -1,5 +1,5 @@
#
# "$Id: Makefile 10996 2013-05-29 11:51:34Z msweet $"
# "$Id$"
#
# CGI makefile for CUPS.
#
@@ -120,7 +120,6 @@ install-exec:
$(INSTALL_DIR) $(SYMROOT); \
for file in $(CGIS); do \
cp $$file $(SYMROOT); \
dsymutil $(SYMROOT)/$$file; \
done \
fi
@@ -155,7 +154,6 @@ install-libs: $(INSTALLSTATIC)
if test "x$(SYMROOT)" != "x"; then \
$(INSTALL_DIR) $(SYMROOT); \
cp $(LIBCUPSCGI) $(SYMROOT); \
dsymutil $(SYMROOT)/$(LIBCUPSCGI); \
fi
installstatic:
@@ -380,5 +378,5 @@ include Dependencies
#
# End of "$Id: Makefile 10996 2013-05-29 11:51:34Z msweet $".
# End of "$Id$".
#
+15 -15
Ver Arquivo
@@ -1,5 +1,5 @@
/*
* "$Id: admin.c 11345 2013-10-18 21:14:52Z msweet $"
* "$Id$"
*
* Administration CGI for CUPS.
*
@@ -962,13 +962,13 @@ do_am_printer(http_t *http, /* I - HTTP connection */
else if (!_cups_strncasecmp(make, "laserjet", 8) ||
!_cups_strncasecmp(make, "deskjet", 7) ||
!_cups_strncasecmp(make, "designjet", 9))
strlcpy(make, "HP", sizeof(make));
strcpy(make, "HP");
else if (!_cups_strncasecmp(make, "phaser", 6))
strlcpy(make, "Xerox", sizeof(make));
strcpy(make, "Xerox");
else if (!_cups_strncasecmp(make, "stylus", 6))
strlcpy(make, "Epson", sizeof(make));
strcpy(make, "Epson");
else
strlcpy(make, "Generic", sizeof(make));
strcpy(make, "Generic");
if (!cgiGetVariable("CURRENT_MAKE"))
cgiSetVariable("CURRENT_MAKE", make);
@@ -1348,20 +1348,20 @@ do_am_printer(http_t *http, /* I - HTTP connection */
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
NULL, uri);
if (!file)
{
var = cgiGetVariable("PPD_NAME");
if (strcmp(var, "__no_change__"))
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "ppd-name",
NULL, var);
}
ippAddString(request, IPP_TAG_PRINTER, IPP_TAG_TEXT, "printer-location",
NULL, cgiGetVariable("PRINTER_LOCATION"));
ippAddString(request, IPP_TAG_PRINTER, IPP_TAG_TEXT, "printer-info",
NULL, cgiGetVariable("PRINTER_INFO"));
if (!file)
{
var = cgiGetVariable("PPD_NAME");
if (strcmp(var, "__no_change__"))
ippAddString(request, IPP_TAG_PRINTER, IPP_TAG_NAME, "ppd-name",
NULL, var);
}
strlcpy(uri, cgiGetVariable("DEVICE_URI"), sizeof(uri));
/*
@@ -4187,7 +4187,7 @@ get_option_value(
if (bufptr == buffer || (bufend - bufptr) < 2)
return (NULL);
memcpy(bufptr, "}", 2);
strcpy(bufptr, "}");
}
return (buffer);
@@ -4218,5 +4218,5 @@ get_points(double number, /* I - Original number */
/*
* End of "$Id: admin.c 11345 2013-10-18 21:14:52Z msweet $".
* End of "$Id$".
*/
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
/*
* "$Id: cgi-private.h 10996 2013-05-29 11:51:34Z msweet $"
* "$Id$"
*
* Private CGI definitions for CUPS.
*
@@ -32,5 +32,5 @@
/*
* End of "$Id: cgi-private.h 10996 2013-05-29 11:51:34Z msweet $".
* End of "$Id$".
*/
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
/*
* "$Id: cgi.h 10996 2013-05-29 11:51:34Z msweet $"
* "$Id$"
*
* CGI support library definitions for CUPS.
*
@@ -115,5 +115,5 @@ extern const char *cgiText(const char *message);
#endif /* !_CUPS_CGI_H_ */
/*
* End of "$Id: cgi.h 10996 2013-05-29 11:51:34Z msweet $".
* End of "$Id$".
*/
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
/*
* "$Id: classes.c 10996 2013-05-29 11:51:34Z msweet $"
* "$Id$"
*
* Class status CGI for CUPS.
*
@@ -554,5 +554,5 @@ show_class(http_t *http, /* I - Connection to server */
/*
* End of "$Id: classes.c 10996 2013-05-29 11:51:34Z msweet $".
* End of "$Id$".
*/
+4 -4
Ver Arquivo
@@ -1,9 +1,9 @@
/*
* "$Id: help-index.c 10996 2013-05-29 11:51:34Z msweet $"
* "$Id$"
*
* Online help index routines for CUPS.
*
* Copyright 2007-2012 by Apple Inc.
* Copyright 2007-2011 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -910,7 +910,7 @@ help_load_file(
node = NULL;
offset = 0;
strlcpy(section, "Other", sizeof(section));
strcpy(section, "Other");
while (cupsFileGets(fp, line, sizeof(line)))
{
@@ -1324,5 +1324,5 @@ help_sort_words(help_word_t *w1, /* I - Second word */
/*
* End of "$Id: help-index.c 10996 2013-05-29 11:51:34Z msweet $".
* End of "$Id$".
*/
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
/*
* "$Id: help-index.h 10996 2013-05-29 11:51:34Z msweet $"
* "$Id$"
*
* Online help index definitions for CUPS.
*
@@ -83,5 +83,5 @@ extern help_index_t *helpSearchIndex(help_index_t *hi, const char *query,
#endif /* !_CUPS_HELP_INDEX_H_ */
/*
* End of "$Id: help-index.h 10996 2013-05-29 11:51:34Z msweet $".
* End of "$Id$".
*/
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
/*
* "$Id: help.c 10996 2013-05-29 11:51:34Z msweet $"
* "$Id$"
*
* Online help CGI for CUPS.
*
@@ -393,5 +393,5 @@ main(int argc, /* I - Number of command-line arguments */
/*
* End of "$Id: help.c 10996 2013-05-29 11:51:34Z msweet $".
* End of "$Id$".
*/
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
/*
* "$Id: html.c 10996 2013-05-29 11:51:34Z msweet $"
* "$Id$"
*
* HTML support functions for CUPS.
*
@@ -235,5 +235,5 @@ cgi_null_passwd(const char *prompt) /* I - Prompt string (unused) */
/*
* End of "$Id: html.c 10996 2013-05-29 11:51:34Z msweet $".
* End of "$Id$".
*/
+4 -4
Ver Arquivo
@@ -1,5 +1,5 @@
/*
* "$Id: ipp-var.c 10996 2013-05-29 11:51:34Z msweet $"
* "$Id$"
*
* CGI <-> IPP variable routines for CUPS.
*
@@ -129,7 +129,7 @@ cgiGetAttributes(ipp_t *request, /* I - IPP request */
*nameptr = '\0';
if (!strncmp(name, "printer_state_history", 21))
strlcpy(name, "printer_state_history", sizeof(name));
strcpy(name, "printer_state_history");
/*
* Possibly add it to the list of attributes...
@@ -554,7 +554,7 @@ cgiPrintCommand(http_t *http, /* I - Connection to server */
ipp_t *request, /* Get-Job-Attributes request */
*response; /* Get-Job-Attributes response */
ipp_attribute_t *attr; /* Current job attribute */
static const char * const job_attrs[] =/* Job attributes we want */
static const char const *job_attrs[] =/* Job attributes we want */
{
"job-state",
"job-printer-state-message"
@@ -1589,5 +1589,5 @@ cgiText(const char *message) /* I - Message */
/*
* End of "$Id: ipp-var.c 10996 2013-05-29 11:51:34Z msweet $".
* End of "$Id$".
*/
+3 -3
Ver Arquivo
@@ -1,5 +1,5 @@
/*
* "$Id: jobs.c 10996 2013-05-29 11:51:34Z msweet $"
* "$Id$"
*
* Job status CGI for CUPS.
*
@@ -182,7 +182,7 @@ do_job_op(http_t *http, /* I - HTTP connection */
char url[1024]; /* Encoded URL */
strlcpy(url, "5;URL=", sizeof(url));
strcpy(url, "5;URL=");
cgiFormEncode(url + 6, getenv("HTTP_REFERER"), sizeof(url) - 6);
cgiSetVariable("refresh_page", url);
}
@@ -210,5 +210,5 @@ do_job_op(http_t *http, /* I - HTTP connection */
/*
* End of "$Id: jobs.c 10996 2013-05-29 11:51:34Z msweet $".
* End of "$Id$".
*/
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
/*
* "$Id: makedocset.c 3833 2012-05-23 22:51:18Z msweet $"
* "$Id$"
*
* Xcode documentation set generator.
*
@@ -482,5 +482,5 @@ write_nodes(const char *path, /* I - File to write */
/*
* End of "$Id: makedocset.c 3833 2012-05-23 22:51:18Z msweet $".
* End of "$Id$".
*/
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
/*
* "$Id: printers.c 10996 2013-05-29 11:51:34Z msweet $"
* "$Id$"
*
* Printer status CGI for CUPS.
*
@@ -574,5 +574,5 @@ show_printer(http_t *http, /* I - Connection to server */
/*
* End of "$Id: printers.c 10996 2013-05-29 11:51:34Z msweet $".
* End of "$Id$".
*/
+9 -9
Ver Arquivo
@@ -1,9 +1,9 @@
/*
* "$Id: search.c 10996 2013-05-29 11:51:34Z msweet $"
* "$Id$"
*
* Search routines for CUPS.
*
* Copyright 2007-2012 by Apple Inc.
* Copyright 2007-2011 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -208,7 +208,7 @@ cgiCompileSearch(const char *query) /* I - Query string */
* Add the prefix string...
*/
memcpy(sptr, prefix, strlen(prefix) + 1);
strcpy(sptr, prefix);
sptr += strlen(sptr);
/*
@@ -249,16 +249,16 @@ cgiCompileSearch(const char *query) /* I - Query string */
return (NULL);
}
memcpy(sptr, ".*|.*", 6);
strcpy(sptr, ".*|.*");
sptr += 5;
memcpy(sptr, lword2, strlen(lword2) + 1);
strcpy(sptr, lword2);
sptr += strlen(sptr);
memcpy(sptr, ".*", 3);
strcpy(sptr, ".*");
sptr += 2;
memcpy(sptr, lword, strlen(lword) + 1);
strcpy(sptr, lword);
sptr += strlen(sptr);
free(lword);
@@ -287,7 +287,7 @@ cgiCompileSearch(const char *query) /* I - Query string */
free(lword);
if (sptr > s)
memcpy(sptr, ".*", 3);
strcpy(sptr, ".*");
else
{
/*
@@ -377,5 +377,5 @@ cgiFreeSearch(void *search) /* I - Search context */
/*
* End of "$Id: search.c 10996 2013-05-29 11:51:34Z msweet $".
* End of "$Id$".
*/
+3 -3
Ver Arquivo
@@ -1,5 +1,5 @@
/*
* "$Id: template.c 11688 2014-03-05 21:11:32Z msweet $"
* "$Id$"
*
* CGI template function.
*
@@ -553,7 +553,7 @@ cgi_copy(FILE *out, /* I - Output file */
if (regcomp(&re, compare, REG_EXTENDED | REG_ICASE))
{
fprintf(stderr,
"ERROR: Unable to compile regular expression \"%s\"!\n",
"ERROR: Unable to compile regular expresion \"%s\"!\n",
compare);
result = 0;
}
@@ -729,5 +729,5 @@ cgi_puturi(const char *s, /* I - String to output */
/*
* End of "$Id: template.c 11688 2014-03-05 21:11:32Z msweet $".
* End of "$Id$".
*/
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
/*
* "$Id: testcgi.c 10996 2013-05-29 11:51:34Z msweet $"
* "$Id$"
*
* CGI test program for CUPS.
*
@@ -71,5 +71,5 @@ main(int argc, /* I - Number of command-line arguments */
/*
* End of "$Id: testcgi.c 10996 2013-05-29 11:51:34Z msweet $".
* End of "$Id$".
*/
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
/*
* "$Id: testhi.c 10996 2013-05-29 11:51:34Z msweet $"
* "$Id$"
*
* Help index test program for CUPS.
*
@@ -109,5 +109,5 @@ list_nodes(const char *title, /* I - Title string */
/*
* End of "$Id: testhi.c 10996 2013-05-29 11:51:34Z msweet $".
* End of "$Id$".
*/
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
/*
* "$Id: testtemplate.c 10996 2013-05-29 11:51:34Z msweet $"
* "$Id$"
*
* CGI template test program for CUPS.
*
@@ -99,5 +99,5 @@ main(int argc, /* I - Number of command-line arguments */
/*
* End of "$Id: testtemplate.c 10996 2013-05-29 11:51:34Z msweet $".
* End of "$Id$".
*/
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
/*
* "$Id: var.c 10996 2013-05-29 11:51:34Z msweet $"
* "$Id$"
*
* CGI form variable and array functions for CUPS.
*
@@ -1307,5 +1307,5 @@ cgi_unlink_file(void)
/*
* End of "$Id: var.c 10996 2013-05-29 11:51:34Z msweet $".
* End of "$Id$".
*/
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
/*
* "$Id: websearch.c 1531 2009-05-22 21:50:50Z msweet $"
* "$Id$"
*
* Web search program for www.cups.org.
*
@@ -112,5 +112,5 @@ list_nodes(help_index_t *hi, /* I - Help index */
/*
* End of "$Id: websearch.c 1531 2009-05-22 21:50:50Z msweet $".
* End of "$Id$".
*/
+3 -3
Ver Arquivo
@@ -1,9 +1,9 @@
#
# "$Id: Makefile 10996 2013-05-29 11:51:34Z msweet $"
# "$Id$"
#
# Configuration file makefile for CUPS.
#
# Copyright 2007-2012 by Apple Inc.
# Copyright 2007-2011 by Apple Inc.
# Copyright 1993-2006 by Easy Software Products.
#
# These coded instructions, statements, and computer programs are the
@@ -139,5 +139,5 @@ uninstall:
#
# End of "$Id: Makefile 10996 2013-05-29 11:51:34Z msweet $".
# End of "$Id$".
#
+2 -5
Ver Arquivo
@@ -1,5 +1,5 @@
#
# "$Id: cups-files.conf.in 11201 2013-07-26 21:27:27Z msweet $"
# "$Id$"
#
# Sample file/directory/user/group configuration file for the CUPS scheduler.
# See "man cups-files.conf" for a complete description of this file.
@@ -8,9 +8,6 @@
# List of events that are considered fatal errors for the scheduler...
#FatalErrors @CUPS_FATAL_ERRORS@
# Do we call fsync() after writing configuration or status files?
#SyncOnClose No
# Default user and group for filters/backends/helper programs; this cannot be
# any user or group that resolves to ID 0 for security reasons...
#User @CUPS_USER@
@@ -97,5 +94,5 @@ PageLog @CUPS_LOGDIR@/page_log
#TempDir @CUPS_REQUESTS@/tmp
#
# End of "$Id: cups-files.conf.in 11201 2013-07-26 21:27:27Z msweet $".
# End of "$Id$".
#
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
#
# "$Id: cupsd.conf.in 11025 2013-06-07 01:00:33Z msweet $"
# "$Id$"
#
# Sample configuration file for the CUPS scheduler. See "man cupsd.conf" for a
# complete description of this file.
@@ -130,5 +130,5 @@ WebInterface @CUPS_WEBIF@
</Policy>
#
# End of "$Id: cupsd.conf.in 11025 2013-06-07 01:00:33Z msweet $".
# End of "$Id$".
#
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
#
# "$Id: mime.convs.in 11025 2013-06-07 01:00:33Z msweet $"
# "$Id$"
#
# DO NOT EDIT THIS FILE, AS IT IS OVERWRITTEN WHEN YOU INSTALL NEW
# VERSIONS OF CUPS. Instead, create a "local.convs" file that
@@ -59,5 +59,5 @@ application/vnd.cups-raster image/pwg-raster 100 rastertopwg
@DEFAULT_RAW_PRINTING@application/octet-stream application/vnd.cups-raw 0 -
#
# End of "$Id: mime.convs.in 11025 2013-06-07 01:00:33Z msweet $".
# End of "$Id$".
#
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
#
# "$Id: mime.types 7670 2008-06-17 22:42:08Z mike $"
# "$Id: mime.types 9871 2011-08-06 06:34:46Z mike $"
#
# Base MIME types file for CUPS.
#
@@ -170,5 +170,5 @@ application/vnd.cups-raw (string(0,<1B>E) + !string(2,<1B>%0B)) \
application/octet-stream
#
# End of "$Id: mime.types 7670 2008-06-17 22:42:08Z mike $".
# End of "$Id: mime.types 9871 2011-08-06 06:34:46Z mike $".
#
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
#
# "$Id: snmp.conf.in 11025 2013-06-07 01:00:33Z msweet $"
# "$Id$"
#
# Sample SNMP configuration file for CUPS. See "man cups-snmp.conf" for a
# complete description of this file.
@@ -9,5 +9,5 @@
@CUPS_SNMP_COMMUNITY@
#
# End of "$Id: snmp.conf.in 11025 2013-06-07 01:00:33Z msweet $".
# End of "$Id$".
#
+21 -30
Ver Arquivo
@@ -1,16 +1,16 @@
dnl
dnl "$Id: cups-common.m4 8781 2009-08-28 17:34:54Z mike $"
dnl "$Id: cups-common.m4 10785 2013-01-08 16:29:26Z mike $"
dnl
dnl Common configuration stuff for CUPS.
dnl Common configuration stuff for CUPS.
dnl
dnl Copyright 2007-2014 by Apple Inc.
dnl Copyright 1997-2007 by Easy Software Products, all rights reserved.
dnl Copyright 2007-2012 by Apple Inc.
dnl Copyright 1997-2007 by Easy Software Products, all rights reserved.
dnl
dnl These coded instructions, statements, and computer programs are the
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 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 We need at least autoconf 2.60...
@@ -20,8 +20,8 @@ dnl Set the name of the config header file...
AC_CONFIG_HEADER(config.h)
dnl Version number information...
CUPS_VERSION=1.7.2
CUPS_REVISION=
CUPS_VERSION="1.6.2"
CUPS_REVISION=""
#if test -z "$CUPS_REVISION" -a -d .svn; then
# CUPS_REVISION="-r`svnversion . | awk -F: '{print $NF}' | sed -e '1,$s/[[a-zA-Z]]*//g'`"
#fi
@@ -44,9 +44,9 @@ LDFLAGS="${LDFLAGS:=}"
dnl Checks for programs...
AC_PROG_AWK
AC_PROG_CC(clang cc gcc)
AC_PROG_CC
AC_PROG_CPP
AC_PROG_CXX(clang++ c++ g++)
AC_PROG_CXX
AC_PROG_RANLIB
AC_PATH_PROG(AR,ar)
AC_PATH_PROG(CHMOD,chmod)
@@ -225,9 +225,7 @@ dnl See if we have libusb...
AC_ARG_ENABLE(libusb, [ --enable-libusb use libusb for USB printing])
LIBUSB=""
USBQUIRKS=""
AC_SUBST(LIBUSB)
AC_SUBST(USBQUIRKS)
if test "x$PKGCONFIG" != x; then
if test x$enable_libusb = xyes -o $uname != Darwin; then
@@ -237,7 +235,6 @@ if test "x$PKGCONFIG" != x; then
AC_DEFINE(HAVE_LIBUSB)
CFLAGS="$CFLAGS `$PKGCONFIG --cflags libusb-1.0`"
LIBUSB="`$PKGCONFIG --libs libusb-1.0`"
USBQUIRKS="\$(DATADIR)/usb"
else
AC_MSG_RESULT(no)
fi
@@ -267,7 +264,6 @@ AC_CHECK_HEADER(zlib.h,
AC_DEFINE(HAVE_LIBZ)
LIBZ="-lz"
LIBS="$LIBS -lz"
AC_CHECK_LIB(z, inflateCopy, AC_DEFINE(HAVE_INFLATECOPY))
if test "x$GZIP" != z; then
INSTALL_GZIP="-z"
fi))
@@ -303,11 +299,16 @@ fi
LIBS="$SAVELIBS"
dnl Check for DBUS support
AC_ARG_ENABLE(dbus, [ --disable-dbus build without DBUS support])
if test -d /etc/dbus-1; then
DBUSDIR="/etc/dbus-1"
else
DBUSDIR=""
fi
AC_ARG_ENABLE(dbus, [ --enable-dbus build with DBUS support])
AC_ARG_WITH(dbusdir, [ --with-dbusdir set DBUS configuration directory ],
DBUSDIR="$withval")
DBUSDIR=""
DBUS_NOTIFIER=""
DBUS_NOTIFIERLIBS=""
@@ -324,12 +325,7 @@ if test "x$enable_dbus" != xno -a "x$PKGCONFIG" != x; then
LIBS="$LIBS $DBUS_NOTIFIERLIBS"
AC_CHECK_FUNC(dbus_message_iter_init_append,
AC_DEFINE(HAVE_DBUS_MESSAGE_ITER_INIT_APPEND))
AC_CHECK_FUNC(dbus_threads_init,
AC_DEFINE(HAVE_DBUS_THREADS_INIT))
LIBS="$SAVELIBS"
if test -d /etc/dbus-1; then
DBUSDIR="/etc/dbus-1"
fi
else
AC_MSG_RESULT(no)
fi
@@ -341,7 +337,6 @@ AC_SUBST(DBUS_NOTIFIERLIBS)
dnl Extra platform-specific libraries...
CUPS_DEFAULT_PRINTOPERATOR_AUTH="@SYSTEM"
CUPS_DEFAULT_SYSTEM_AUTHKEY=""
CUPS_SYSTEM_AUTHKEY=""
INSTALLXPC=""
@@ -389,13 +384,10 @@ case $uname in
if test "x$default_adminkey" != xdefault; then
CUPS_SYSTEM_AUTHKEY="SystemGroupAuthKey $default_adminkey"
CUPS_DEFAULT_SYSTEM_AUTHKEY="$default_adminkey"
elif grep -q system.print.operator /etc/authorization; then
CUPS_SYSTEM_AUTHKEY="SystemGroupAuthKey system.print.admin"
CUPS_DEFAULT_SYSTEM_AUTHKEY="system.print.admin"
else
CUPS_SYSTEM_AUTHKEY="SystemGroupAuthKey system.preferences"
CUPS_DEFAULT_SYSTEM_AUTHKEY="system.preferences"
fi
if test "x$default_operkey" != xdefault; then
@@ -433,7 +425,6 @@ esac
AC_SUBST(CUPS_DEFAULT_PRINTOPERATOR_AUTH)
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_PRINTOPERATOR_AUTH, "$CUPS_DEFAULT_PRINTOPERATOR_AUTH")
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_SYSTEM_AUTHKEY, "$CUPS_DEFAULT_SYSTEM_AUTHKEY")
AC_SUBST(CUPS_SYSTEM_AUTHKEY)
AC_SUBST(INSTALLXPC)
@@ -462,5 +453,5 @@ esac
AC_SUBST(BUILDDIRS)
dnl
dnl End of "$Id: cups-common.m4 8781 2009-08-28 17:34:54Z mike $".
dnl End of "$Id: cups-common.m4 10785 2013-01-08 16:29:26Z mike $".
dnl
+39 -40
Ver Arquivo
@@ -1,16 +1,16 @@
dnl
dnl "$Id: cups-compiler.m4 7871 2008-08-27 21:12:43Z mike $"
dnl "$Id: cups-compiler.m4 10190 2012-01-20 16:22:58Z mike $"
dnl
dnl Compiler stuff for CUPS.
dnl Compiler stuff for CUPS.
dnl
dnl Copyright 2007-2014 by Apple Inc.
dnl Copyright 1997-2007 by Easy Software Products, all rights reserved.
dnl Copyright 2007-2012 by Apple Inc.
dnl Copyright 1997-2007 by Easy Software Products, all rights reserved.
dnl
dnl These coded instructions, statements, and computer programs are the
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 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 Clear the debugging and non-shared library options unless the user asks
@@ -114,43 +114,29 @@ if test -n "$GCC"; then
OLDCFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -fstack-protector"
AC_TRY_LINK(,,
if test "x$LSB_BUILD" = xy; then
# Can't use stack-protector with LSB binaries...
OPTIM="$OPTIM -fno-stack-protector"
else
OPTIM="$OPTIM -fstack-protector"
fi
OPTIM="$OPTIM -fstack-protector"
AC_MSG_RESULT(yes),
AC_MSG_RESULT(no))
CFLAGS="$OLDCFLAGS"
if test "x$LSB_BUILD" != xy; then
# The -fPIE option is available with some versions of GCC and
# adds randomization of addresses, which avoids another class of
# exploits that depend on a fixed address for common functions.
#
# Not available to LSB binaries...
AC_MSG_CHECKING(if GCC supports -fPIE)
OLDCFLAGS="$CFLAGS"
case "$uname" in
Darwin*)
CFLAGS="$CFLAGS -fPIE -Wl,-pie"
AC_TRY_COMPILE(,,[
PIEFLAGS="-fPIE -Wl,-pie"
AC_MSG_RESULT(yes)],
AC_MSG_RESULT(no))
# The -fPIE option is available with some versions of GCC and adds
# randomization of addresses, which avoids another class of exploits
# that depend on a fixed address for common functions.
AC_MSG_CHECKING(if GCC supports -fPIE)
OLDCFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -fPIE"
AC_TRY_COMPILE(,,
[case "$CC" in
*clang)
PIEFLAGS="-fPIE -Wl,-pie"
;;
*)
CFLAGS="$CFLAGS -fPIE -pie"
AC_TRY_COMPILE(,,[
PIEFLAGS="-fPIE -pie"
AC_MSG_RESULT(yes)],
AC_MSG_RESULT(no))
PIEFLAGS="-fPIE -pie"
;;
esac
CFLAGS="$OLDCFLAGS"
fi
AC_MSG_RESULT(yes)],
AC_MSG_RESULT(no))
CFLAGS="$OLDCFLAGS"
if test "x$with_optim" = x; then
# Add useful warning options for tracking down problems...
@@ -185,7 +171,7 @@ if test -n "$GCC"; then
# 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,-z,now"
RELROFLAGS="-Wl,-z,relro"
fi
;;
esac
@@ -216,6 +202,19 @@ else
OPTIM="+z $OPTIM"
fi
;;
IRIX)
if test -z "$OPTIM"; then
if test "x$with_optim" = x; then
OPTIM="-O2"
else
OPTIM="$with_optim $OPTIM"
fi
fi
if test "x$with_optim" = x; then
OPTIM="-fullwarn -woff 1183,1209,1349,1506,3201 $OPTIM"
fi
;;
OSF*)
# Tru64 UNIX aka Digital UNIX aka OSF/1
if test -z "$OPTIM"; then
@@ -296,5 +295,5 @@ case $uname in
esac
dnl
dnl End of "$Id: cups-compiler.m4 7871 2008-08-27 21:12:43Z mike $".
dnl End of "$Id: cups-compiler.m4 10190 2012-01-20 16:22:58Z mike $".
dnl
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
dnl
dnl "$Id: cups-defaults.m4 7959 2008-09-17 19:30:58Z mike $"
dnl "$Id: cups-defaults.m4 10710 2012-11-26 18:26:01Z mike $"
dnl
dnl Default cupsd configuration settings for CUPS.
dnl
@@ -400,5 +400,5 @@ AC_SUBST(CUPS_WEBIF)
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_WEBIF, $CUPS_DEFAULT_WEBIF)
dnl
dnl End of "$Id: cups-defaults.m4 7959 2008-09-17 19:30:58Z mike $".
dnl End of "$Id: cups-defaults.m4 10710 2012-11-26 18:26:01Z mike $".
dnl
+23 -14
Ver Arquivo
@@ -1,9 +1,9 @@
dnl
dnl "$Id: cups-directories.m4 7799 2008-07-25 20:06:08Z mike $"
dnl "$Id: cups-directories.m4 10622 2012-10-01 01:55:23Z mike $"
dnl
dnl Directory stuff for CUPS.
dnl
dnl Copyright 2007-2013 by Apple Inc.
dnl Copyright 2007-2012 by Apple Inc.
dnl Copyright 1997-2007 by Easy Software Products, all rights reserved.
dnl
dnl These coded instructions, statements, and computer programs are the
@@ -102,6 +102,9 @@ fi
dnl Fix "libdir" variable...
if test "$libdir" = "\${exec_prefix}/lib"; then
case "$uname" in
IRIX*)
libdir="$exec_prefix/lib32"
;;
Linux*)
if test -d /usr/lib64 -a ! -d /usr/lib64/fakeroot; then
libdir="$exec_prefix/lib64"
@@ -166,6 +169,13 @@ if test x$rcdir = x; then
RCSTOP="620"
;;
IRIX*)
# IRIX
INITDIR="/etc"
RCSTART="60"
RCSTOP="25"
;;
Linux | GNU | GNU/k*BSD*)
# Linux/HURD seems to choose an init.d directory at random...
if test -d /sbin/init.d; then
@@ -412,20 +422,19 @@ AC_DEFINE_UNQUOTED(CUPS_SERVERROOT, "$sysconfdir/cups")
AC_SUBST(CUPS_SERVERROOT)
# Transient run-time state
AC_ARG_WITH(rundir, [ --with-rundir set transient run-time state directory],CUPS_STATEDIR="$withval",[
case "$uname" in
Darwin*)
# Darwin (OS X)
CUPS_STATEDIR="$CUPS_SERVERROOT"
;;
*)
# All others
CUPS_STATEDIR="$localstatedir/run/cups"
;;
esac])
case "$uname" in
Darwin*)
# Darwin (OS X)
CUPS_STATEDIR="$CUPS_SERVERROOT"
;;
*)
# All others
CUPS_STATEDIR="$localstatedir/run/cups"
;;
esac
AC_DEFINE_UNQUOTED(CUPS_STATEDIR, "$CUPS_STATEDIR")
AC_SUBST(CUPS_STATEDIR)
dnl
dnl End of "$Id: cups-directories.m4 7799 2008-07-25 20:06:08Z mike $".
dnl End of "$Id: cups-directories.m4 10622 2012-10-01 01:55:23Z mike $".
dnl
+2 -12
Ver Arquivo
@@ -1,5 +1,5 @@
dnl
dnl "$Id: cups-dnssd.m4 7890 2008-08-29 22:19:39Z mike $"
dnl "$Id: cups-dnssd.m4 10471 2012-05-16 22:57:03Z mike $"
dnl
dnl DNS Service Discovery (aka Bonjour) stuff for CUPS.
dnl
@@ -23,8 +23,6 @@ AC_ARG_WITH(dnssd-includes, [ --with-dnssd-includes set directory for DNS Ser
DNSSDLIBS=""
DNSSD_BACKEND=""
IPPFIND_BIN=""
IPPFIND_MAN=""
if test "x$PKGCONFIG" != x -a x$enable_avahi != xno; then
AC_MSG_CHECKING(for Avahi)
@@ -33,8 +31,6 @@ if test "x$PKGCONFIG" != x -a x$enable_avahi != xno; then
CFLAGS="$CFLAGS `$PKGCONFIG --cflags avahi-client`"
DNSSDLIBS="`$PKGCONFIG --libs avahi-client`"
DNSSD_BACKEND="dnssd"
IPPFIND_BIN="ippfind"
IPPFIND_MAN="ippfind.\$(MAN1EXT)"
AC_DEFINE(HAVE_AVAHI)
else
AC_MSG_RESULT(no)
@@ -49,8 +45,6 @@ if test "x$DNSSD_BACKEND" = x -a x$enable_dnssd != xno; then
AC_DEFINE(HAVE_DNSSD)
DNSSDLIBS="-framework CoreFoundation -framework SystemConfiguration"
DNSSD_BACKEND="dnssd"
IPPFIND_BIN="ippfind"
IPPFIND_MAN="ippfind.\$(MAN1EXT)"
;;
*)
# All others...
@@ -67,8 +61,6 @@ if test "x$DNSSD_BACKEND" = x -a x$enable_dnssd != xno; then
AC_DEFINE(HAVE_DNSSD)
DNSSDLIBS="-ldns_sd"
DNSSD_BACKEND="dnssd",
IPPFIND_BIN="ippfind"
IPPFIND_MAN="ippfind.\$(MAN1EXT)"
AC_MSG_RESULT(no))
LIBS="$SAVELIBS"
;;
@@ -78,9 +70,7 @@ fi
AC_SUBST(DNSSDLIBS)
AC_SUBST(DNSSD_BACKEND)
AC_SUBST(IPPFIND_BIN)
AC_SUBST(IPPFIND_MAN)
dnl
dnl End of "$Id: cups-dnssd.m4 7890 2008-08-29 22:19:39Z mike $".
dnl End of "$Id: cups-dnssd.m4 10471 2012-05-16 22:57:03Z mike $".
dnl
+35 -6
Ver Arquivo
@@ -1,9 +1,9 @@
dnl
dnl "$Id: cups-gssapi.m4 11324 2013-10-04 03:11:42Z msweet $"
dnl "$Id: cups-gssapi.m4 10785 2013-01-08 16:29:26Z mike $"
dnl
dnl GSSAPI/Kerberos library detection for CUPS.
dnl
dnl Copyright 2007-2013 by Apple Inc.
dnl Copyright 2007-2012 by Apple Inc.
dnl Copyright 2006-2007 by Easy Software Products.
dnl
dnl This file contains Kerberos support code, copyright 2006 by
@@ -71,9 +71,38 @@ if test x$enable_gssapi != xno; then
if test "x$LIBGSSAPI" != x; then
AC_CHECK_HEADER(krb5.h, AC_DEFINE(HAVE_KRB5_H))
if test -d /System/Library/Frameworks/GSS.framework; then
AC_CHECK_HEADER(GSS/gssapi.h, AC_DEFINE(HAVE_GSS_GSSAPI_H))
AC_CHECK_HEADER(GSS/gssapi_generic.h, AC_DEFINE(HAVE_GSS_GSSAPI_GENERIC_H))
AC_CHECK_HEADER(GSS/gssapi_spi.h, AC_DEFINE(HAVE_GSS_GSSAPI_SPI_H))
gssdir="/System/Library/Frameworks/GSS.framework"
AC_MSG_CHECKING(for GSS/gssapi.h presence)
if test -f $gssdir/Headers/gssapi.h; then
AC_DEFINE(HAVE_GSS_GSSAPI_H)
AC_MSG_RESULT(yes)
else
AC_MSG_RESULT(no)
fi
AC_MSG_CHECKING(for GSS/gssapi_generic.h presence)
if test -f $gssdir/Headers/gssapi_generic.h; then
AC_DEFINE(HAVE_GSSAPI_GENERIC_H)
AC_MSG_RESULT(yes)
else
AC_MSG_RESULT(no)
fi
AC_MSG_CHECKING(for GSS/gssapi_spi.h presence)
if test -f $gssdir/PrivateHeaders/gssapi_spi.h; then
AC_MSG_RESULT(yes)
AC_MSG_CHECKING(for GSS/gssapi_spi.h usability)
if test -s $gssdir/PrivateHeaders/gssapi_spi.h; then
AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_GSS_GSSAPI_SPI_H)
else
AC_MSG_RESULT(no)
fi
else
AC_MSG_RESULT(no)
if test $uversion -ge 110 -a $uversion -lt 120; then
# Broken public headers in 10.7.x...
AC_MSG_ERROR(Run 'sudo mkdir -p $gssdir/PrivateHeaders' and 'sudo touch $gssdir/PrivateHeaders/gssapi_spi.h' to build CUPS.)
fi
fi
else
AC_CHECK_HEADER(gssapi.h, AC_DEFINE(HAVE_GSSAPI_H))
AC_CHECK_HEADER(gssapi/gssapi.h, AC_DEFINE(HAVE_GSSAPI_GSSAPI_H))
@@ -129,5 +158,5 @@ AC_SUBST(CUPS_DEFAULT_GSSSERVICENAME)
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_GSSSERVICENAME, "$CUPS_DEFAULT_GSSSERVICENAME")
dnl
dnl End of "$Id: cups-gssapi.m4 11324 2013-10-04 03:11:42Z msweet $".
dnl End of "$Id: cups-gssapi.m4 10785 2013-01-08 16:29:26Z mike $".
dnl
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
dnl
dnl "$Id: cups-largefile.m4 6649 2007-07-11 21:46:42Z mike $"
dnl "$Id: cups-largefile.m4 9771 2011-05-12 05:21:56Z mike $"
dnl
dnl Large file support stuff for CUPS.
dnl
@@ -48,5 +48,5 @@ fi
AC_CHECK_FUNC(strtoll, AC_DEFINE(HAVE_STRTOLL))
dnl
dnl End of "$Id: cups-largefile.m4 6649 2007-07-11 21:46:42Z mike $".
dnl End of "$Id: cups-largefile.m4 9771 2011-05-12 05:21:56Z mike $".
dnl
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
dnl
dnl "$Id: cups-launchd.m4 6649 2007-07-11 21:46:42Z mike $"
dnl "$Id: cups-launchd.m4 8983 2010-02-13 02:20:23Z mike $"
dnl
dnl launchd stuff for CUPS.
dnl
@@ -39,5 +39,5 @@ AC_SUBST(DEFAULT_LAUNCHD_CONF)
AC_SUBST(LAUNCHDLIBS)
dnl
dnl End of "$Id: cups-launchd.m4 6649 2007-07-11 21:46:42Z mike $".
dnl End of "$Id: cups-launchd.m4 8983 2010-02-13 02:20:23Z mike $".
dnl
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
dnl
dnl "$Id: cups-libtool.m4 6649 2007-07-11 21:46:42Z mike $"
dnl "$Id: cups-libtool.m4 9771 2011-05-12 05:21:56Z mike $"
dnl
dnl Libtool stuff for CUPS.
dnl
@@ -35,5 +35,5 @@ if test x$LIBTOOL != x; then
fi
dnl
dnl End of "$Id: cups-libtool.m4 6649 2007-07-11 21:46:42Z mike $".
dnl End of "$Id: cups-libtool.m4 9771 2011-05-12 05:21:56Z mike $".
dnl
+16 -2
Ver Arquivo
@@ -1,5 +1,5 @@
dnl
dnl "$Id: cups-manpages.m4 6649 2007-07-11 21:46:42Z mike $"
dnl "$Id: cups-manpages.m4 10424 2012-04-23 17:26:57Z mike $"
dnl
dnl Manpage stuff for CUPS.
dnl
@@ -28,6 +28,12 @@ if test "$mandir" = "\${prefix}/man" -a "$prefix" = "/"; then
AMANDIR="/usr/share/man"
PMANDIR="/usr/share/man"
;;
IRIX)
# SGI IRIX
mandir="/usr/share/catman/u_man"
AMANDIR="/usr/share/catman/a_man"
PMANDIR="/usr/share/catman/p_man"
;;
*)
# All others
mandir="/usr/man"
@@ -45,6 +51,14 @@ AC_SUBST(PMANDIR)
dnl Setup manpage extensions...
case "$uname" in
IRIX*)
# SGI IRIX
MAN1EXT=1
MAN5EXT=5
MAN7EXT=7
MAN8EXT=1m
MAN8DIR=1
;;
SunOS* | HP-UX*)
# Solaris and HP-UX
MAN1EXT=1
@@ -78,5 +92,5 @@ AC_SUBST(MAN8EXT)
AC_SUBST(MAN8DIR)
dnl
dnl End of "$Id: cups-manpages.m4 6649 2007-07-11 21:46:42Z mike $".
dnl End of "$Id: cups-manpages.m4 10424 2012-04-23 17:26:57Z mike $".
dnl
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
dnl
dnl "$Id: cups-network.m4 7918 2008-09-08 22:03:01Z mike $"
dnl "$Id: cups-network.m4 9771 2011-05-12 05:21:56Z mike $"
dnl
dnl Networking stuff for CUPS.
dnl
@@ -70,5 +70,5 @@ AC_CHECK_HEADERS(AppleTalk/at_proto.h,AC_DEFINE(HAVE_APPLETALK_AT_PROTO_H),,
[#include <netat/appletalk.h>])
dnl
dnl End of "$Id: cups-network.m4 7918 2008-09-08 22:03:01Z mike $".
dnl End of "$Id: cups-network.m4 9771 2011-05-12 05:21:56Z mike $".
dnl
+6 -10
Ver Arquivo
@@ -1,9 +1,9 @@
dnl
dnl "$Id: cups-opsys.m4 6649 2007-07-11 21:46:42Z mike $"
dnl "$Id: cups-opsys.m4 9771 2011-05-12 05:21:56Z mike $"
dnl
dnl Operating system stuff for CUPS.
dnl
dnl Copyright 2007-2012 by Apple Inc.
dnl Copyright 2007-2011 by Apple Inc.
dnl Copyright 1997-2006 by Easy Software Products, all rights reserved.
dnl
dnl These coded instructions, statements, and computer programs are the
@@ -19,21 +19,17 @@ uversion=`uname -r | sed -e '1,$s/^[[^0-9]]*\([[0-9]]*\)\.\([[0-9]]*\).*/\1\2/'`
uarch=`uname -m`
case "$uname" in
Darwin*)
uname="Darwin"
if test $uversion -lt 120; then
AC_MSG_ERROR([Sorry, this version of CUPS requires OS X 10.8 or higher.])
fi
;;
GNU* | GNU/*)
uname="GNU"
;;
IRIX*)
uname="IRIX"
;;
Linux*)
uname="Linux"
;;
esac
dnl
dnl "$Id: cups-opsys.m4 6649 2007-07-11 21:46:42Z mike $"
dnl "$Id: cups-opsys.m4 9771 2011-05-12 05:21:56Z mike $"
dnl
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
dnl
dnl "$Id: cups-pam.m4 7960 2008-09-17 19:42:02Z mike $"
dnl "$Id: cups-pam.m4 10424 2012-04-23 17:26:57Z mike $"
dnl
dnl PAM stuff for CUPS.
dnl
@@ -98,5 +98,5 @@ AC_SUBST(PAMMOD)
AC_SUBST(PAMMODAUTH)
dnl
dnl End of "$Id: cups-pam.m4 7960 2008-09-17 19:42:02Z mike $".
dnl End of "$Id: cups-pam.m4 10424 2012-04-23 17:26:57Z mike $".
dnl
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
dnl
dnl "$Id$"
dnl "$Id: cups-poll.m4 9771 2011-05-12 05:21:56Z mike $"
dnl
dnl Select/poll stuff for CUPS.
dnl
@@ -18,5 +18,5 @@ AC_CHECK_FUNC(epoll_create, AC_DEFINE(HAVE_EPOLL))
AC_CHECK_FUNC(kqueue, AC_DEFINE(HAVE_KQUEUE))
dnl
dnl End of "$Id$".
dnl End of "$Id: cups-poll.m4 9771 2011-05-12 05:21:56Z mike $".
dnl
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
dnl
dnl "$Id: cups-scripting.m4 7915 2008-09-07 22:18:29Z mike $"
dnl "$Id: cups-scripting.m4 9927 2011-08-27 09:28:30Z mike $"
dnl
dnl Scripting configuration stuff for CUPS.
dnl
@@ -85,5 +85,5 @@ if test "x$CUPS_PYTHON" != x; then
fi
dnl
dnl End of "$Id: cups-scripting.m4 7915 2008-09-07 22:18:29Z mike $".
dnl End of "$Id: cups-scripting.m4 9927 2011-08-27 09:28:30Z mike $".
dnl
+4 -4
Ver Arquivo
@@ -1,5 +1,5 @@
dnl
dnl "$Id: cups-sharedlibs.m4 7630 2008-06-09 22:31:44Z mike $"
dnl "$Id: cups-sharedlibs.m4 10190 2012-01-20 16:22:58Z mike $"
dnl
dnl Shared library support for CUPS.
dnl
@@ -215,8 +215,8 @@ if test "$DSO" != ":"; then
EXPORT_LDFLAGS="-Wl,-R$libdir"
fi
;;
Linux | GNU)
# Linux, and HURD...
IRIX | Linux | GNU)
# IRIX, Linux, and HURD...
if test $exec_prefix != /usr; then
DSOFLAGS="-Wl,-rpath,$libdir $DSOFLAGS"
LDFLAGS="$LDFLAGS -Wl,-rpath,$libdir"
@@ -234,5 +234,5 @@ AC_SUBST(IMGLIBS)
AC_SUBST(EXPORT_LDFLAGS)
dnl
dnl End of "$Id: cups-sharedlibs.m4 7630 2008-06-09 22:31:44Z mike $".
dnl End of "$Id: cups-sharedlibs.m4 10190 2012-01-20 16:22:58Z mike $".
dnl
+30 -3
Ver Arquivo
@@ -1,5 +1,5 @@
dnl
dnl "$Id: cups-ssl.m4 7241 2008-01-22 22:34:52Z mike $"
dnl "$Id: cups-ssl.m4 10710 2012-11-26 18:26:01Z mike $"
dnl
dnl OpenSSL/GNUTLS stuff for CUPS.
dnl
@@ -59,7 +59,34 @@ if test x$enable_ssl != xno; then
AC_CHECK_HEADER(Security/SecIdentitySearchPriv.h,
AC_DEFINE(HAVE_SECIDENTITYSEARCHPRIV_H))
AC_DEFINE(HAVE_CSSMERRORSTRING)])
dnl Check for SecCertificateCopyData..
AC_MSG_CHECKING(for SecCertificateCopyData)
if test $uversion -ge 100; then
AC_DEFINE(HAVE_SECCERTIFICATECOPYDATA)
AC_MSG_RESULT(yes)
else
AC_MSG_RESULT(no)
fi
dnl Check for SecIdentitySearchCreateWithPolicy...
AC_MSG_CHECKING(for SecIdentitySearchCreateWithPolicy)
if test $uversion -ge 80; then
AC_DEFINE(HAVE_SECIDENTITYSEARCHCREATEWITHPOLICY)
AC_MSG_RESULT(yes)
else
AC_MSG_RESULT(no)
fi
dnl Check for SecPolicyCreateSSL...
AC_MSG_CHECKING(for SecPolicyCreateSSL)
if test $uversion -ge 110; then
AC_DEFINE(HAVE_SECPOLICYCREATESSL)
AC_MSG_RESULT(yes)
else
AC_MSG_RESULT(no)
fi])
AC_DEFINE(HAVE_CSSMERRORSTRING)
fi
fi
@@ -157,5 +184,5 @@ EXPORT_SSLLIBS="$SSLLIBS"
AC_SUBST(EXPORT_SSLLIBS)
dnl
dnl End of "$Id: cups-ssl.m4 7241 2008-01-22 22:34:52Z mike $".
dnl End of "$Id: cups-ssl.m4 10710 2012-11-26 18:26:01Z mike $".
dnl
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
dnl
dnl "$Id: cups-threads.m4 6649 2007-07-11 21:46:42Z mike $"
dnl "$Id: cups-threads.m4 9771 2011-05-12 05:21:56Z mike $"
dnl
dnl Threading stuff for CUPS.
dnl
@@ -50,5 +50,5 @@ fi
AC_SUBST(PTHREAD_FLAGS)
dnl
dnl End of "$Id: cups-threads.m4 6649 2007-07-11 21:46:42Z mike $".
dnl End of "$Id: cups-threads.m4 9771 2011-05-12 05:21:56Z mike $".
dnl
+42 -7
Ver Arquivo
@@ -1,9 +1,9 @@
/*
* "$Id: config.h.in 11642 2014-02-27 15:57:59Z msweet $"
* "$Id$"
*
* Configuration file for CUPS.
*
* Copyright 2007-2013 by Apple Inc.
* Copyright 2007-2012 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -32,7 +32,6 @@
#define CUPS_DEFAULT_GROUP "sys"
#define CUPS_DEFAULT_SYSTEM_GROUPS "sys root system"
#define CUPS_DEFAULT_PRINTOPERATOR_AUTH "@SYSTEM"
#define CUPS_DEFAULT_SYSTEM_AUTHKEY "system.print.admin"
/*
@@ -132,11 +131,13 @@
/*
* Do we have ZLIB?
* Do we have various image libraries?
*/
#undef HAVE_LIBPNG
#undef HAVE_LIBZ
#undef HAVE_INFLATECOPY
#undef HAVE_LIBJPEG
#undef HAVE_LIBTIFF
/*
@@ -166,6 +167,13 @@
#undef HAVE_CRYPT_H
/*
* Do we have <scsi/sg.h>?
*/
#undef HAVE_SCSI_SG_H
/*
* Use <stdint.h>?
*/
@@ -316,6 +324,34 @@
#undef HAVE_SECURETRANSPORTPRIV_H
/*
* Do we have the SecCertificateCopyData function?
*/
#undef HAVE_SECCERTIFICATECOPYDATA
/*
* Do we have the SecIdentitySearchCreateWithPolicy function?
*/
#undef HAVE_SECIDENTITYSEARCHCREATEWITHPOLICY
/*
* Do we have the SecPolicyCreateSSL function?
*/
#undef HAVE_SECPOLICYCREATESSL
/*
* Do we have the SecPolicyCreateSSL function?
*/
#undef HAVE_SECPOLICYCREATESSL
/*
* Do we have the cssmErrorString function?
*/
@@ -535,7 +571,6 @@
#undef HAVE_DBUS
#undef HAVE_DBUS_MESSAGE_ITER_INIT_APPEND
#undef HAVE_DBUS_THREADS_INIT
/*
@@ -707,5 +742,5 @@ static __inline int _cups_abs(int i) { return (i < 0 ? -i : i); }
#endif /* !_CUPS_CONFIG_H_ */
/*
* End of "$Id: config.h.in 11642 2014-02-27 15:57:59Z msweet $".
* End of "$Id$".
*/
externo
-11405
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+4 -3
Ver Arquivo
@@ -1,9 +1,9 @@
dnl
dnl "$Id: configure.in 11109 2013-07-08 21:15:13Z msweet $"
dnl "$Id$"
dnl
dnl Configuration script for CUPS.
dnl
dnl Copyright 2007-2012 by Apple Inc.
dnl Copyright 2007-2013 by Apple Inc.
dnl Copyright 1997-2007 by Easy Software Products, all rights reserved.
dnl
dnl These coded instructions, statements, and computer programs are the
@@ -70,6 +70,7 @@ AC_OUTPUT(Makedefs
desktop/cups.desktop
doc/help/ref-cups-files-conf.html
doc/help/ref-cupsd-conf.html
doc/help/standard.html
doc/index.html
man/client.conf.man
man/cups-deviced.man
@@ -92,5 +93,5 @@ AC_OUTPUT(Makedefs
chmod +x cups-config
dnl
dnl End of "$Id: configure.in 11109 2013-07-08 21:15:13Z msweet $".
dnl End of "$Id$".
dnl
+2 -2
Ver Arquivo
@@ -1,6 +1,6 @@
#! /bin/sh
#
# "$Id: cups-config.in 10996 2013-05-29 11:51:34Z msweet $"
# "$Id$"
#
# CUPS configuration utility.
#
@@ -142,5 +142,5 @@ while test $# -gt 0; do
done
#
# End of "$Id: cups-config.in 10996 2013-05-29 11:51:34Z msweet $".
# End of "$Id$".
#
+5 -23
Ver Arquivo
@@ -1,9 +1,9 @@
#
# "$Id: Makefile 10996 2013-05-29 11:51:34Z msweet $"
# "$Id$"
#
# API library Makefile for CUPS.
#
# Copyright 2007-2013 by Apple Inc.
# Copyright 2007-2012 by Apple Inc.
# Copyright 1997-2006 by Easy Software Products, all rights reserved.
#
# These coded instructions, statements, and computer programs are the
@@ -17,14 +17,6 @@
include ../Makedefs
#
# Options to build libcups without the use of deprecated APIs...
#
OPTIONS = -D_CUPS_NO_DEPRECATED=1 -D_PPD_DEPRECATED=""
#
# Object files...
#
@@ -113,7 +105,6 @@ HEADERS = \
ipp.h \
language.h \
ppd.h \
pwg.h \
raster.h \
sidechannel.h \
transcode.h \
@@ -201,14 +192,6 @@ depend:
$(CC) -MM $(ALL_CFLAGS) $(OBJS:.o=.c) >Dependencies
#
# Run oclint to check code coverage...
#
oclint:
oclint -o=oclint.html -html $(LIBOBJS:.o=.c) -- $(ALL_CFLAGS)
#
# Install all targets...
#
@@ -268,7 +251,6 @@ install-libs: $(INSTALLSTATIC)
if test "x$(SYMROOT)" != "x"; then \
$(INSTALL_DIR) $(SYMROOT); \
cp $(LIBCUPS) $(SYMROOT); \
dsymutil $(SYMROOT)/$(LIBCUPS); \
fi
installstatic:
@@ -536,8 +518,8 @@ apihelp:
--css ../doc/cups-printable.css \
--header api-cups.header --intro api-cups.shtml \
api-cups.xml \
cups.h pwg.h adminutil.c dest*.c language.c notify.c \
options.c pwg-media.c tempfile.c usersys.c \
cups.h adminutil.c dest*.c language.c notify.c \
options.c tempfile.c usersys.c \
util.c >../doc/help/api-cups.html
mxmldoc --tokens help/api-cups.html api-cups.xml >../doc/help/api-cups.tokens
$(RM) api-cups.xml
@@ -639,5 +621,5 @@ include Dependencies
#
# End of "$Id: Makefile 10996 2013-05-29 11:51:34Z msweet $".
# End of "$Id$".
#
+45 -45
Ver Arquivo
@@ -1,9 +1,9 @@
/*
* "$Id: adminutil.c 10996 2013-05-29 11:51:34Z msweet $"
* "$Id$"
*
* Administration utility API definitions for CUPS.
*
* Copyright 2007-2013 by Apple Inc.
* Copyright 2007-2012 by Apple Inc.
* Copyright 2001-2007 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -129,7 +129,7 @@ cupsAdminCreateWindowsPPD(
* Get the supported banner pages, etc. for the printer...
*/
request = ippNewRequest(IPP_OP_GET_PRINTER_ATTRIBUTES);
request = ippNewRequest(IPP_GET_PRINTER_ATTRIBUTES);
httpAssembleURIf(HTTP_URI_CODING_ALL, uri, sizeof(uri), "ipp", NULL,
"localhost", 0, "/printers/%s", dest);
@@ -145,7 +145,7 @@ cupsAdminCreateWindowsPPD(
*/
response = cupsDoRequest(http, request, "/");
if (!response || cupsLastError() > IPP_STATUS_OK_CONFLICTING)
if (!response || cupsLastError() > IPP_OK_CONFLICT)
{
unlink(src);
return (NULL);
@@ -253,7 +253,7 @@ cupsAdminCreateWindowsPPD(
snprintf(line, sizeof(line),
_cupsLangString(language, _("Missing value on line %d.")),
linenum);
_cupsSetError(IPP_STATUS_ERROR_DOCUMENT_FORMAT_ERROR, line, 0);
_cupsSetError(IPP_DOCUMENT_FORMAT_ERROR, line, 0);
cupsFileClose(srcfp);
cupsFileClose(dstfp);
@@ -272,7 +272,7 @@ cupsAdminCreateWindowsPPD(
_cupsLangString(language,
_("Missing double quote on line %d.")),
linenum);
_cupsSetError(IPP_STATUS_ERROR_DOCUMENT_FORMAT_ERROR, line, 0);
_cupsSetError(IPP_DOCUMENT_FORMAT_ERROR, line, 0);
cupsFileClose(srcfp);
cupsFileClose(dstfp);
@@ -291,7 +291,7 @@ cupsAdminCreateWindowsPPD(
_cupsLangString(language,
_("Bad option + choice on line %d.")),
linenum);
_cupsSetError(IPP_STATUS_ERROR_DOCUMENT_FORMAT_ERROR, line, 0);
_cupsSetError(IPP_DOCUMENT_FORMAT_ERROR, line, 0);
cupsFileClose(srcfp);
cupsFileClose(dstfp);
@@ -334,7 +334,7 @@ cupsAdminCreateWindowsPPD(
if (linenum == 0)
{
_cupsSetError(IPP_STATUS_ERROR_DOCUMENT_FORMAT_ERROR, _("Empty PPD file."), 1);
_cupsSetError(IPP_DOCUMENT_FORMAT_ERROR, _("Empty PPD file."), 1);
cupsFileClose(dstfp);
unlink(buffer);
@@ -424,7 +424,7 @@ cupsAdminExportSamba(
if (!dest || !ppd || !samba_server || !samba_user || !samba_password)
{
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(EINVAL), 0);
_cupsSetError(IPP_INTERNAL_ERROR, strerror(EINVAL), 0);
return (0);
}
@@ -434,7 +434,7 @@ cupsAdminExportSamba(
if ((fp = cupsTempFile2(authfile, sizeof(authfile))) == NULL)
{
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, NULL, 0);
_cupsSetError(IPP_INTERNAL_ERROR, NULL, 0);
return (0);
}
@@ -487,7 +487,7 @@ cupsAdminExportSamba(
_("Unable to copy Windows 2000 printer "
"driver files (%d).")), status);
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, message, 0);
_cupsSetError(IPP_INTERNAL_ERROR, message, 0);
if (logfile)
_cupsLangPuts(logfile, message);
@@ -522,7 +522,7 @@ cupsAdminExportSamba(
_("Unable to copy CUPS printer driver "
"files (%d).")), status);
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, message, 0);
_cupsSetError(IPP_INTERNAL_ERROR, message, 0);
if (logfile)
_cupsLangPuts(logfile, message);
@@ -565,7 +565,7 @@ cupsAdminExportSamba(
_("Unable to install Windows 2000 printer "
"driver files (%d).")), status);
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, message, 0);
_cupsSetError(IPP_INTERNAL_ERROR, message, 0);
if (logfile)
_cupsLangPuts(logfile, message);
@@ -610,7 +610,7 @@ cupsAdminExportSamba(
_("Unable to copy Windows 9x printer "
"driver files (%d).")), status);
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, message, 0);
_cupsSetError(IPP_INTERNAL_ERROR, message, 0);
if (logfile)
_cupsLangPuts(logfile, message);
@@ -639,7 +639,7 @@ cupsAdminExportSamba(
_("Unable to install Windows 9x printer "
"driver files (%d).")), status);
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, message, 0);
_cupsSetError(IPP_INTERNAL_ERROR, message, 0);
if (logfile)
_cupsLangPuts(logfile, message);
@@ -691,7 +691,7 @@ cupsAdminExportSamba(
_("Unable to copy 64-bit Windows printer "
"driver files (%d).")), status);
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, message, 0);
_cupsSetError(IPP_INTERNAL_ERROR, message, 0);
if (logfile)
_cupsLangPuts(logfile, message);
@@ -726,7 +726,7 @@ cupsAdminExportSamba(
_("Unable to copy 64-bit CUPS printer driver "
"files (%d).")), status);
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, message, 0);
_cupsSetError(IPP_INTERNAL_ERROR, message, 0);
if (logfile)
_cupsLangPuts(logfile, message);
@@ -769,7 +769,7 @@ cupsAdminExportSamba(
_("Unable to install Windows 2000 printer "
"driver files (%d).")), status);
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, message, 0);
_cupsSetError(IPP_INTERNAL_ERROR, message, 0);
if (logfile)
_cupsLangPuts(logfile, message);
@@ -794,13 +794,13 @@ cupsAdminExportSamba(
"are installed.")),
sizeof(message));
_cupsSetError(IPP_STATUS_ERROR_NOT_FOUND, message, 0);
_cupsSetError(IPP_NOT_FOUND, message, 0);
_cupsLangPuts(logfile, message);
}
if (have_drivers == 0)
{
_cupsSetError(IPP_STATUS_ERROR_NOT_FOUND, message, 0);
_cupsSetError(IPP_NOT_FOUND, message, 0);
unlink(authfile);
@@ -821,7 +821,7 @@ cupsAdminExportSamba(
_("Unable to set Windows printer driver (%d).")),
status);
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, message, 0);
_cupsSetError(IPP_INTERNAL_ERROR, message, 0);
if (logfile)
_cupsLangPuts(logfile, message);
@@ -882,9 +882,9 @@ cupsAdminGetServerSettings(
*/
if (strcmp(cg->http->hostname, cg->server) ||
cg->ipp_port != httpAddrPort(cg->http->hostaddr) ||
cg->ipp_port != _httpAddrPort(cg->http->hostaddr) ||
(cg->http->encryption != cg->encryption &&
cg->http->encryption == HTTP_ENCRYPTION_NEVER))
cg->http->encryption == HTTP_ENCRYPT_NEVER))
{
/*
* Need to close the current connection because something has changed...
@@ -901,13 +901,13 @@ cupsAdminGetServerSettings(
if (!cg->http)
{
if ((cg->http = httpConnect2(cupsServer(), ippPort(), NULL, AF_UNSPEC,
cupsEncryption(), 1, 0, NULL)) == NULL)
if ((cg->http = _httpCreate(cupsServer(), ippPort(), NULL,
cupsEncryption(), AF_UNSPEC)) == NULL)
{
if (errno)
_cupsSetError(IPP_STATUS_ERROR_SERVICE_UNAVAILABLE, NULL, 0);
_cupsSetError(IPP_SERVICE_UNAVAILABLE, NULL, 0);
else
_cupsSetError(IPP_STATUS_ERROR_SERVICE_UNAVAILABLE,
_cupsSetError(IPP_SERVICE_UNAVAILABLE,
_("Unable to connect to host."), 1);
if (num_settings)
@@ -925,7 +925,7 @@ cupsAdminGetServerSettings(
if (!http || !num_settings || !settings)
{
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(EINVAL), 0);
_cupsSetError(IPP_INTERNAL_ERROR, strerror(EINVAL), 0);
if (num_settings)
*num_settings = 0;
@@ -944,7 +944,7 @@ cupsAdminGetServerSettings(
*/
if ((status = get_cupsd_conf(http, cg, cg->cupsd_update, cupsdconf,
sizeof(cupsdconf), &remote)) == HTTP_STATUS_OK)
sizeof(cupsdconf), &remote)) == HTTP_OK)
{
if ((cupsd = cupsFileOpen(cupsdconf, "r")) == NULL)
{
@@ -954,7 +954,7 @@ cupsAdminGetServerSettings(
snprintf(message, sizeof(message),
_cupsLangString(cupsLangDefault(), _("Open of %s failed: %s")),
cupsdconf, strerror(errno));
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, message, 0);
_cupsSetError(IPP_INTERNAL_ERROR, message, 0);
}
}
else
@@ -1136,7 +1136,7 @@ cupsAdminGetServerSettings(
cg->cupsd_num_settings,
&(cg->cupsd_settings));
}
else if (status != HTTP_STATUS_NOT_MODIFIED)
else if (status != HTTP_NOT_MODIFIED)
invalidate_cupsd_cache(cg);
/*
@@ -1220,7 +1220,7 @@ cupsAdminSetServerSettings(
if (!http || !num_settings || !settings)
{
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(EINVAL), 0);
_cupsSetError(IPP_INTERNAL_ERROR, strerror(EINVAL), 0);
return (0);
}
@@ -1230,11 +1230,11 @@ cupsAdminSetServerSettings(
*/
if (get_cupsd_conf(http, cg, 0, cupsdconf, sizeof(cupsdconf),
&remote) == HTTP_STATUS_OK)
&remote) == HTTP_OK)
{
if ((cupsd = cupsFileOpen(cupsdconf, "r")) == NULL)
{
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, NULL, 0);
_cupsSetError(IPP_INTERNAL_ERROR, NULL, 0);
return (0);
}
}
@@ -1398,7 +1398,7 @@ cupsAdminSetServerSettings(
if (remote)
unlink(cupsdconf);
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, NULL, 0);
_cupsSetError(IPP_INTERNAL_ERROR, NULL, 0);
return (0);
}
@@ -1954,7 +1954,7 @@ cupsAdminSetServerSettings(
status = cupsPutFile(http, "/admin/conf/cupsd.conf", tempfile);
if (status == HTTP_STATUS_CREATED)
if (status == HTTP_CREATED)
{
/*
* Updated OK, add the basic settings...
@@ -2024,7 +2024,7 @@ cupsAdminSetServerSettings(
unlink(tempfile);
return (status == HTTP_STATUS_CREATED);
return (status == HTTP_CREATED);
}
@@ -2158,16 +2158,16 @@ get_cupsd_conf(
snprintf(message, sizeof(message),
_cupsLangString(cupsLangDefault(), _("stat of %s failed: %s")),
name, strerror(errno));
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, message, 0);
_cupsSetError(IPP_INTERNAL_ERROR, message, 0);
*name = '\0';
return (HTTP_STATUS_SERVER_ERROR);
return (HTTP_SERVER_ERROR);
}
else if (last_update && info.st_mtime <= last_update)
status = HTTP_STATUS_NOT_MODIFIED;
status = HTTP_NOT_MODIFIED;
else
status = HTTP_STATUS_OK;
status = HTTP_OK;
}
else
#endif /* !WIN32 */
@@ -2180,11 +2180,11 @@ get_cupsd_conf(
{
*name = '\0';
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, NULL, 0);
_cupsSetError(IPP_INTERNAL_ERROR, NULL, 0);
invalidate_cupsd_cache(cg);
return (HTTP_STATUS_SERVER_ERROR);
return (HTTP_SERVER_ERROR);
}
*remote = 1;
@@ -2199,7 +2199,7 @@ get_cupsd_conf(
close(fd);
if (status != HTTP_STATUS_OK)
if (status != HTTP_OK)
{
unlink(name);
*name = '\0';
@@ -2337,5 +2337,5 @@ write_option(cups_file_t *dstfp, /* I - PPD file */
/*
* End of "$Id: adminutil.c 10996 2013-05-29 11:51:34Z msweet $".
* End of "$Id$".
*/
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
/*
* "$Id: adminutil.h 10996 2013-05-29 11:51:34Z msweet $"
* "$Id$"
*
* Administration utility API definitions for CUPS.
*
@@ -77,5 +77,5 @@ extern int cupsAdminSetServerSettings(http_t *http,
#endif /* !_CUPS_ADMINUTIL_H_ */
/*
* End of "$Id: adminutil.h 10996 2013-05-29 11:51:34Z msweet $".
* End of "$Id$".
*/
+1 -1
Ver Arquivo
@@ -1,5 +1,5 @@
<!--
"$Id: api-array.header 7266 2008-01-29 02:15:29Z mike $"
"$Id: api-array.header 9771 2011-05-12 05:21:56Z mike $"
Array API header for CUPS.
+1 -1
Ver Arquivo
@@ -1,5 +1,5 @@
<!--
"$Id: api-array.shtml 7616 2008-05-28 00:34:13Z mike $"
"$Id: api-array.shtml 9727 2011-04-28 21:20:12Z mike $"
Array API introduction for CUPS.
+1 -1
Ver Arquivo
@@ -1,5 +1,5 @@
<!--
"$Id: api-cups.header 7279 2008-01-31 01:50:44Z mike $"
"$Id: api-cups.header 9771 2011-05-12 05:21:56Z mike $"
CUPS API header for CUPS.
+5 -5
Ver Arquivo
@@ -1,9 +1,9 @@
<!--
"$Id: api-cups.shtml 7337 2008-02-22 04:44:04Z mike $"
"$Id: api-cups.shtml 9727 2011-04-28 21:20:12Z mike $"
API introduction for CUPS.
Copyright 2007-2013 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
@@ -183,7 +183,7 @@ int num_options = 0;
<a href='#cups_option_t'>cups_option_t</a> *options = NULL;
<a href='#cups_dest_t'>cups_dest_t</a> *dest;
for (i = 0; i &lt; dest->num_options; i ++)
for (i = 0; i < dest->num_options; i ++)
num_options = <a href='#cupsAddOption'>cupsAddOption</a>(dest->options[i].name, dest->options[i].value,
num_options, &amp;options);
</pre>
@@ -235,7 +235,7 @@ job_id = <a href='#cupsPrintFiles'>cupsPrintFiles</a>(dest->name, 3, files, "Tes
<p>Finally, the <a href='#cupsCreateJob'><code>cupsCreateJob</code></a>
function creates a new job with no files in it. Files are added using the
<a href='#cupsStartDocument'><code>cupsStartDocument</code></a>,
<a href='#cupsStartDocument'><code>cupsStartDocument</code></a>,
<a href='api-httpipp.html#cupsWriteRequestData'><code>cupsWriteRequestData</code></a>,
and <a href='#cupsFinishDocument'><code>cupsFinishDocument</code></a> functions.
The following example creates a job with 10 text files for printing:</p>
@@ -299,7 +299,7 @@ int num_jobs;
<a href='#cups_job_t'>cups_job_t</a> *jobs;
int i;
ipp_jstate_t job_state = IPP_JOB_PENDING;
while (job_state &lt; IPP_JOB_STOPPED)
{
/* Get my jobs (1) with any state (-1) */
+1 -1
Ver Arquivo
@@ -1,5 +1,5 @@
<!--
"$Id: api-filedir.header 7279 2008-01-31 01:50:44Z mike $"
"$Id: api-filedir.header 9771 2011-05-12 05:21:56Z mike $"
File and Directory API header for CUPS.
+1 -1
Ver Arquivo
@@ -1,5 +1,5 @@
<!--
"$Id: api-filedir.shtml 7279 2008-01-31 01:50:44Z mike $"
"$Id: api-filedir.shtml 9727 2011-04-28 21:20:12Z mike $"
File and directory API introduction for CUPS.
+2 -2
Ver Arquivo
@@ -1,9 +1,9 @@
<!--
"$Id: api-filter.header 7616 2008-05-28 00:34:13Z mike $"
"$Id: api-filter.header 9771 2011-05-12 05:21:56Z mike $"
Filter and backend programming header for CUPS.
Copyright 2008-2014 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 -101
Ver Arquivo
@@ -1,9 +1,9 @@
<!--
"$Id: api-filter.shtml 7677 2008-06-19 23:22:19Z mike $"
"$Id: api-filter.shtml 10424 2012-04-23 17:26:57Z mike $"
Filter and backend programming introduction for CUPS.
Copyright 2007-2013 by Apple Inc.
Copyright 2007-2012 by Apple Inc.
Copyright 1997-2006 by Easy Software Products, all rights reserved.
These coded instructions, statements, and computer programs are the
@@ -237,7 +237,7 @@ prefix strings:</p>
<code>marker-types</code>, <code>printer-alert</code>, and
<code>printer-alert-description</code> printer attributes. Standard
<code>marker-types</code> values are listed in <a href='#TABLE1'>Table
1</a>. String values need special handling - see <a href="#ATTR_STRINGS">Reporting Attribute String Values</a> below.</dd>
1</a>.</dd>
<dt>CRIT: message</dt>
<dd>Sets the printer-state-message attribute and adds the specified
@@ -320,11 +320,11 @@ the "DEBUG:" prefix string.</p>
<td>Fuser unit</td>
</tr>
<tr>
<td>fuser-cleaning-pad</td>
<td>fuserCleaningPad</td>
<td>Fuser cleaning pad</td>
</tr>
<tr>
<td>fuser-oil</td>
<td>fuserOil</td>
<td>Fuser oil</td>
</tr>
<tr>
@@ -336,7 +336,7 @@ the "DEBUG:" prefix string.</p>
<td>Photo conductor</td>
</tr>
<tr>
<td>solid-wax</td>
<td>solidWax</td>
<td>Wax supply</td>
</tr>
<tr>
@@ -348,19 +348,19 @@ the "DEBUG:" prefix string.</p>
<td>Toner supply</td>
</tr>
<tr>
<td>transfer-unit</td>
<td>transferUnit</td>
<td>Transfer unit</td>
</tr>
<tr>
<td>waste-ink</td>
<td>wasteInk</td>
<td>Waste ink tank</td>
</tr>
<tr>
<td>waste-toner</td>
<td>wasteToner</td>
<td>Waste toner tank</td>
</tr>
<tr>
<td>waste-wax</td>
<td>wasteWax</td>
<td>Waste wax tank</td>
</tr>
</tbody>
@@ -440,95 +440,6 @@ the "DEBUG:" prefix string.</p>
</tbody>
</table></div>
<h4><a name="ATTR_STRINGS">Reporting Attribute String Values</a></h4>
<p>When reporting string values using "ATTR:" messages, a filter or backend must take special care to appropriately quote those values. The scheduler uses the CUPS option parsing code for attributes, so the general syntax is:</p>
<pre class="example">
name=simple
name=simple,simple,...
name='complex value'
name="complex value"
name='"complex value"','"complex value"',...
</pre>
<p>Simple values are strings that do not contain spaces, quotes, backslashes, or the comma and can be placed verbatim in the "ATTR:" message, for example:</p>
<pre class="example">
int levels[4] = { 40, 50, 60, 70 }; /* CMYK */
fputs("ATTR: marker-colors=#00FFFF,#FF00FF,#FFFF00,#000000\n", stderr);
fputs("ATTR: marker-high-levels=100,100,100,100\n", stderr);
fprintf(stderr, "ATTR: marker-levels=%d,%d,%d,%d\n", levels[0], levels[1],
levels[2], levels[3], levels[4]);
fputs("ATTR: marker-low-levels=5,5,5,5\n", stderr);
fputs("ATTR: marker-types=toner,toner,toner,toner\n", stderr);
</pre>
<p>Complex values that contains spaces, quotes, backslashes, or the comma must be quoted. For a single value a single set of quotes is sufficient:</p>
<pre class="example">
fputs("ATTR: marker-message='Levels shown are approximate.'\n", stderr);
</pre>
<p>When multiple values are reported, each value must be enclosed by a set of single and double quotes:</p>
<pre class="example">
fputs("ATTR: marker-names='\"Cyan Toner\"','\"Magenta Toner\"',"
"'\"Yellow Toner\"','\"Black Toner\"'\n", stderr);
</pre>
<p>The IPP backend includes a <var>quote_string</var> function that may be used to properly quote a complex value in an "ATTR:" message:</p>
<pre class="example">
static const char * /* O - Quoted string */
quote_string(const char *s, /* I - String */
char *q, /* I - Quoted string buffer */
size_t qsize) /* I - Size of quoted string buffer */
{
char *qptr, /* Pointer into string buffer */
*qend; /* End of string buffer */
qptr = q;
qend = q + qsize - 5;
if (qend &lt; q)
{
*q = '\0';
return (q);
}
*qptr++ = '\'';
*qptr++ = '\"';
while (*s && qptr &lt; qend)
{
if (*s == '\\' || *s == '\"' || *s == '\'')
{
if (qptr &lt; (qend - 4))
{
*qptr++ = '\\';
*qptr++ = '\\';
*qptr++ = '\\';
}
else
break;
}
*qptr++ = *s++;
}
*qptr++ = '\"';
*qptr++ = '\'';
*qptr = '\0';
return (q);
}
</pre>
<h4><a name="MANAGING_STATE">Managing Printer State in a Filter</a></h4>
<p>Filters are responsible for managing the state keywords they set using
@@ -577,7 +488,7 @@ from localizing the vendor-prefixed keyword in the PPD file - otherwise both
the generic and vendor-specific keyword will be shown in the user
interface.</p>
</blockquote>
</blockquote></dd>
<h4><a name="REPORTING_SUPPLIES">Reporting Supply Levels</a></h4>
@@ -702,7 +613,7 @@ datalen = sizeof(data) - 1;
status = <a href="#cupsSideChannelDoRequest">cupsSideChannelDoRequest</a>(CUPS_SC_CMD_GET_DEVICE_ID, data, &amp;datalen, 1.0);
/* Use the returned value if OK was returned and the length is non-zero */
if (status == CUPS_SC_STATUS_OK &amp;&amp; datalen > 0)
if (status == CUPS_SC_STATUS_OK && datalen > 0)
data[datalen] = '\0';
else
data[0] = '\0';
+1 -1
Ver Arquivo
@@ -1,5 +1,5 @@
<!--
"$Id: api-httpipp.header 7258 2008-01-28 00:15:05Z mike $"
"$Id: api-httpipp.header 9771 2011-05-12 05:21:56Z mike $"
HTTP and IPP API header for CUPS.
+1 -1
Ver Arquivo
@@ -1,5 +1,5 @@
<!--
"$Id: api-httpipp.shtml 7684 2008-06-23 16:47:38Z mike $"
"$Id: api-httpipp.shtml 10388 2012-03-26 21:15:41Z mike $"
HTTP and IPP API introduction for CUPS.
+1 -1
Ver Arquivo
@@ -1,5 +1,5 @@
<!--
"$Id: api-ppd.header 7616 2008-05-28 00:34:13Z mike $"
"$Id: api-ppd.header 10424 2012-04-23 17:26:57Z mike $"
PPD API header for CUPS.
+1 -1
Ver Arquivo
@@ -1,5 +1,5 @@
<!--
"$Id: api-ppd.shtml 7616 2008-05-28 00:34:13Z mike $"
"$Id: api-ppd.shtml 10424 2012-04-23 17:26:57Z mike $"
PPD API introduction for CUPS.
+6 -7
Ver Arquivo
@@ -1,9 +1,9 @@
/*
* "$Id: array-private.h 3933 2012-10-01 03:01:10Z msweet $"
* "$Id$"
*
* Private array definitions for CUPS.
*
* Copyright 2011-2012 by Apple Inc.
* Copyright 2011 by Apple Inc.
*
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
@@ -37,10 +37,9 @@ extern "C" {
* Functions...
*/
extern int _cupsArrayAddStrings(cups_array_t *a, const char *s,
char delim) _CUPS_API_1_5;
extern cups_array_t *_cupsArrayNewStrings(const char *s, char delim)
_CUPS_API_1_5;
extern int _cupsArrayAddStrings(cups_array_t *a, const char *s)
_CUPS_API_1_5;
extern cups_array_t *_cupsArrayNewStrings(const char *s) _CUPS_API_1_5;
# ifdef __cplusplus
}
@@ -48,5 +47,5 @@ extern cups_array_t *_cupsArrayNewStrings(const char *s, char delim)
#endif /* !_CUPS_ARRAY_PRIVATE_H_ */
/*
* End of "$Id: array-private.h 3933 2012-10-01 03:01:10Z msweet $".
* End of "$Id$".
*/
+10 -50
Ver Arquivo
@@ -1,5 +1,5 @@
/*
* "$Id: array.c 10996 2013-05-29 11:51:34Z msweet $"
* "$Id$"
*
* Sorted array routines for CUPS.
*
@@ -138,7 +138,8 @@ cupsArrayAdd(cups_array_t *a, /* I - Array */
/*
* '_cupsArrayAddStrings()' - Add zero or more delimited strings to an array.
* '_cupsArrayAddStrings()' - Add zero or more comma-delimited strings to an
* array.
*
* Note: The array MUST be created using the @link _cupsArrayNewStrings@
* function. Duplicate strings are NOT added. If the string pointer "s" is NULL
@@ -147,8 +148,7 @@ cupsArrayAdd(cups_array_t *a, /* I - Array */
int /* O - 1 on success, 0 on failure */
_cupsArrayAddStrings(cups_array_t *a, /* I - Array */
const char *s, /* I - Delimited strings or NULL */
char delim)/* I - Delimiter character */
const char *s) /* I - Comma-delimited strings or NULL */
{
char *buffer, /* Copy of string */
*start, /* Start of string */
@@ -156,47 +156,20 @@ _cupsArrayAddStrings(cups_array_t *a, /* I - Array */
int status = 1; /* Status of add */
DEBUG_printf(("_cupsArrayAddStrings(a=%p, s=\"%s\", delim='%c')", a, s,
delim));
if (!a || !s || !*s)
{
DEBUG_puts("1_cupsArrayAddStrings: Returning 0");
return (0);
}
if (delim == ' ')
if (!strchr(s, ','))
{
/*
* Skip leading whitespace...
* String doesn't contain a comma, so add it as a single value...
*/
DEBUG_puts("1_cupsArrayAddStrings: Skipping leading whitespace.");
while (*s && isspace(*s & 255))
s ++;
DEBUG_printf(("1_cupsArrayAddStrings: Remaining string \"%s\".", s));
}
if (!strchr(s, delim) &&
(delim != ' ' || (!strchr(s, '\t') && !strchr(s, '\n'))))
{
/*
* String doesn't contain a delimiter, so add it as a single value...
*/
DEBUG_puts("1_cupsArrayAddStrings: No delimiter seen, adding a single "
"value.");
if (!cupsArrayFind(a, (void *)s))
status = cupsArrayAdd(a, (void *)s);
}
else if ((buffer = strdup(s)) == NULL)
{
DEBUG_puts("1_cupsArrayAddStrings: Unable to duplicate string.");
status = 0;
}
else
{
for (start = end = buffer; *end; start = end)
@@ -206,21 +179,11 @@ _cupsArrayAddStrings(cups_array_t *a, /* I - Array */
* it...
*/
if (delim == ' ')
{
while (*end && !isspace(*end & 255))
end ++;
while (*end && isspace(*end & 255))
*end++ = '\0';
}
else if ((end = strchr(start, delim)) != NULL)
if ((end = strchr(start, ',')) != NULL)
*end++ = '\0';
else
end = start + strlen(start);
DEBUG_printf(("1_cupsArrayAddStrings: Adding \"%s\", end=\"%s\"", start,
end));
if (!cupsArrayFind(a, start))
status &= cupsArrayAdd(a, start);
}
@@ -228,8 +191,6 @@ _cupsArrayAddStrings(cups_array_t *a, /* I - Array */
free(buffer);
}
DEBUG_printf(("1_cupsArrayAddStrings: Returning %d.", status));
return (status);
}
@@ -821,8 +782,7 @@ cupsArrayNew3(cups_array_func_t f, /* I - Comparison function or @code NULL@ fo
*/
cups_array_t * /* O - Array */
_cupsArrayNewStrings(const char *s, /* I - Delimited strings or NULL */
char delim) /* I - Delimiter character */
_cupsArrayNewStrings(const char *s) /* I - Comma-delimited strings or NULL */
{
cups_array_t *a; /* Array */
@@ -830,7 +790,7 @@ _cupsArrayNewStrings(const char *s, /* I - Delimited strings or NULL */
if ((a = cupsArrayNew3((cups_array_func_t)strcmp, NULL, NULL, 0,
(cups_acopy_func_t)_cupsStrAlloc,
(cups_afree_func_t)_cupsStrFree)) != NULL)
_cupsArrayAddStrings(a, s, delim);
_cupsArrayAddStrings(a, s);
return (a);
}
@@ -1362,5 +1322,5 @@ cups_array_find(cups_array_t *a, /* I - Array */
/*
* End of "$Id: array.c 10996 2013-05-29 11:51:34Z msweet $".
* End of "$Id$".
*/
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
/*
* "$Id: array.h 10996 2013-05-29 11:51:34Z msweet $"
* "$Id$"
*
* Sorted array definitions for CUPS.
*
@@ -88,5 +88,5 @@ extern void *cupsArrayUserData(cups_array_t *a) _CUPS_API_1_2;
#endif /* !_CUPS_ARRAY_H_ */
/*
* End of "$Id: array.h 10996 2013-05-29 11:51:34Z msweet $".
* End of "$Id$".
*/

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