Comparar commits

..

6 Commits

Autor SHA1 Mensagem Data
Michael Sweet ba4f314f2b Import CUPS v2.1.3 2016-03-15 10:43:33 -04:00
Michael Sweet d3331249b0 Import CUPS v2.1.2 2016-03-15 10:43:30 -04:00
Michael Sweet bc05464ada Import CUPS v2.1.1 2016-03-15 10:43:26 -04:00
Michael Sweet 348ce78265 Import CUPS v2.1.0 2016-03-15 10:43:24 -04:00
Michael Sweet be91b849f0 Import CUPS v2.1rc1 2016-03-15 10:43:21 -04:00
Michael Sweet c8d724e6bb Import CUPS v2.1b1 2016-03-15 10:43:16 -04:00
266 arquivos alterados com 17166 adições e 7889 exclusões
+215
Ver Arquivo
@@ -0,0 +1,215 @@
CHANGES-2.0.txt
---------------
CHANGES IN CUPS V2.0.4
- Fixed a bug in cupsRasterWritePixels (STR #4650)
- Fixed redirection in the web interface (STR #4538)
- The IPP backend did not respond to side-channel requests (STR #4645)
- The scheduler did not start all pending jobs at once (STR #4646)
- The web search incorrectly searched time-at-xxx values (STR #4652)
- Fixed an RPM spec file issue (STR #4657)
- The scheduler incorrectly started jobs while canceling multiple jobs
(STR #4648)
- Fixed processing of server overrides without port numbers (STR #4675)
- Documentation changes (STR #4651, STR #4674)
CHANGES IN CUPS V2.0.3
- Security: Fixed CERT VU #810572 exploiting the dynamic linker
(STR #4609)
- Security: The scheduler could hang with malformed gzip data
(STR #4602)
- Restored missing generic printer icon file (STR #4587)
- Fixed logging of configuration errors to show up as errors (STR #4582)
- Fixed potential buffer overflows in raster code and filters
(STR #4598, STR #4599, STR #4600, STR #4601)
- Fixed a gzip processing bug (#4602)
- Fixed <Limit> inside <Location> (STR #4575)
- Fixed lpadmin when both -m and -o are used (STR #4578)
- The web interface always showed support for 2-sided printing
(STR #4595)
- cupsRasterReadHeader did not fully validate the raster header
(STR #4596)
- The rastertopwg filter did not check for truncated input (STR #4597)
- The cups-lpd mini-daemon did not check for request parameters
(STR #4603)
- The scheduler could get caught in a busy loop (STR #4605)
- The sample Epson driver could crash (STR #4616)
- The IPP backend now correctly monitors jobs
(<rdar://problem/20495955>)
- The ppdhtml and ppdpo utilities crashed when the -D option was used
before a driver information file (STR #4627)
- ippfind incorrectly substituted "=port" for service_port.
- The IPP/1.1 test file did not handle the initial print job
completing early (STR #4576)
- Fixed a memory leak in cupsConnectDest (STR #4634)
- PWG Raster Format output contained invalid ImageBox values
(<rdar://problem/21144309>)
- Added Russian translation (STR #4577)
- Added German translation (STR #4635)
CHANGES IN CUPS V2.0.2
- Security: cupsRasterReadPixels buffer overflow with invalid page
header and compressed raster data (STR #4551)
- Command-line programs were not localized on Mac OS X
(<rdar://problem/14546232>)
- The scheduler incorrectly cleared the MakeModel string in the
printers.conf file after a restart (<rdar://problem/16827518>)
- CUPS did not compile with older versions of GNU TLS (STR #4527)
- CUPS did not compile without Avahi or mDNSResponder (STR #4523)
- ippLength() did not return the correct length for IPP_TAG_CONST
string values.
- The scheduler incorrectly aborted jobs after a job was restarted
(<rdar://problem/19129387>)
- The cups-files.conf file contained the old ServerCertificate/Key
directives instead of ServerKeychain.
- Fixed builds when no SSL/TLS library is available, or when explicitly
disabled (STR #4531)
- Fixed an OpenBSD charset transcoding issue.
- Fixed USB printing on OpenBSD (STR #4525)
- The --without-xinetd configure option did not work (STR #4542)
- Backends needing to load OS X kernel extensions did not work
(<rdar://problem/19015679>)
- Mapping of PPD keywords to IPP keywords did not work if the PPD
keyword was already an IPP keyword (<rdar://problem/19121005>)
- cupsGetPPD* sent bad requests (STR #4567)
- ippserver used the wrong temporary directory on Windows (STR #4547)
- ippserver did not handle Bonjour registrations properly (STR #4548)
- The scheduler could crash during shutdown if Avahi was shutdown
first (STR #4550)
- Added a USB quirk rule for Intermec printers (STR #4553)
- The scheduler did not always log which configuration file had the
error (STR #4559)
- The ippfind and ipptool programs now correctly match hostnames with
trailing dots (STR #4563)
- The ipptool timeout option did not work (STR #4515)
- Fixed several issues with client.conf, CUPS_SERVER, and the "-h"
option of most commands (STR #4528)
- Another change for OpenBSD (STR #4526)
- Added Japanese localization (STR #4524)
- Documentation changes (STR #4569)
CHANGES IN CUPS V2.0.1
- Security: SSLv3 is now disabled by default to protect against the
POODLE attack (STR #4476)
- Printer sharing did not work when systemd was being used (STR #4497)
- cupsGetPPD* would return a symlink to the PPD in /etc/cups/ppd even if
it was not readable by the user (STR #4500)
- The web interface now protects against frame "click-jacking" attacks
(STR #4492)
- Fixed a crash in ippAttributeString (<rdar://problem/17903871>)
- Fixed a crash in the scheduler on Linux/*BSD if colord was not running
(STR #4496)
- Fixed a random crash in the scheduler when not using systemd
(STR #4484)
- Added systemd support for cups-lpd (STR #4493)
- The scheduler did not honor the FatalErrors directive for mis-
configured Group and SystemGroup values (STR #4495)
- The network backends no longer report waste-receptacle conditions when
using SNMP (STR #4499)
- The IPP backend did not work with some configurations of Windows
(STR #4503)
- RPMs did not build (STR #4490)
- Added a USB quirk rule for the Brother HL-1250 (STR #4519)
- Fixed compiles on unsupported platforms (STR #4510)
- "cancel -a" did not cancel all jobs on all destinations (STR #4513)
- The web interface did not work on OpenBSD (STR #4496)
CHANGES IN CUPS V2.0.0
- The scheduler did not preserve listener sockets from launchd or
systemd after a restart (<rdar://problem/18112848>)
- Added some USB quirk rules for the libusb-based USB backend
(STR #4482)
- Spanish localization update (STR #4487)
- Updated documentation for 2.0.0 release.
CHANGES IN CUPS V2.0rc1
- Documentation updates (STR #4464)
- The scheduler now monitors the AC power status on OS X, allowing for
"sleep printing" when sharing printers (<rdar://problem/17325852>)
- The scheduler incorrectly called launch_activate_socket multiple times
on OS X (<rdar://problem/17523218>)
- The ippserver test program now passes the IPP Everywhere self-
certification tests (STR #4101)
- Relaxed the new OS X filter sandbox slightly (STR #4471,
<rdar://problem/17483959>)
- Dropped the old Epson Stylus Color/Photo sample drivers since they
don't work with any current printers and there are free alternatives
that produce much better output (<rdar://problem/18036889>)
- Log and configuration files that are not world-readable are again
accessible via the web interface (STR #4461)
- PPD files are now created using the permissions specified by the
ConfigFilePerm directive.
- Fixed RPM build issues (STR #4459)
- Fixed the spinner image and restart page when reconfiguring the
scheduler through the web interface (STR #4475)
CHANGES IN CUPS V2.0b1
- Added a "--list-filters" option to the cupsfilter command (STR #4325)
- Added systemd support (STR #3917)
- Added support for re-sending a job as a raster file if a higher-level
format such as PDF fails (<rdar://problem/15583721>)
- Added support for regular expression matching in the MIME type rules
(<rdar://problem/11131245>)
- Added support for TLS certificate validation and policy enforcement
(STR #1616)
- Added support for simultaneous XML and test output from ipptool.
- Added support for PAUSE directive in ipptool test files.
- Added support for auto-typing of TIFF files by ipptool (STR #4418)
- The scheduler now returns completed jobs in the correct newest-to-
oldest order (STR #4396)
- The configure script now supports target-specific tools for pkg-config
and others (STR #4423)
- The ipptool program now supports EXPECT statements for collection
member attributes (<rdar://problem/15355218>)
- The ipptool program now supports collection attributes with multiple
values (<rdar://problem/15355124>)
- The sample drivers now include all of the installed localizations by
default (<rdar://problem/14756625>)
- Adopted Linux man page conventions and updated all man pages
(STR #4372, STR #4329)
- The scheduler now supports the "first-index" operation attribute for
the Get-Jobs operation (STR #2913)
- Changed the default AccessLogLevel and PageLogFormat to disable the
access_log and page_log files by default (<rdar://problem/16495000>)
- cupsRasterInterpretPPD now supports the Orientation header in order to
support long-edge feed raster printers (<rdar://problem/15837926>)
- The scheduler now allows run-as-root backends to have group read and
execute permissions (STR #2935)
- The ippFindAttribute and ippFindNextAttribute functions now support
hierarchical searches (STR #4395)
- Dropped OpenSSL support in favor of GNU TLS.
- Dropped "dark wake" support on OS X, which was preventing portables
from going to sleep when there was a stuck job. We now use a variation
of the CUPS 1.4 sleep support to do a cleaner sleep
(<rdar://problem/14323704>)
- Dropped support for AIX, HP-UX, and OSF/1 (aka Digital UNIX)
- Dropped lppasswd and support for Digest authentication in in the
scheduler (STR #4321)
- The cupsGetClasses, cupsGetPrinters, and cupsTempFile functions are no
longer supported.
- The scheduler now caches more job history data and limits the number
of completed jobs returned by Get-Jobs as needed in order to prevent a
denial-of-service on busy servers (STR #2913)
- The filter/backend sandbox on OS X now defaults to a more strict
whitelist (<rdar://problem/15939788>)
- Increased the default idle exit timeout to 60 seconds on OS X
(<rdar://problem/16041820>)
- Printer classes were not accessible on OS X
(<rdar://problem/16385643>)
- The scheduler now uses </DefaultPrinter> to close the default printer
definition in printers.conf (STR #4153)
- Canceling all jobs in the web interface now just cancels the jobs
(STR #1914)
+113 -196
Ver Arquivo
@@ -1,215 +1,132 @@
CHANGES.txt - 2.0.4 - 2015-07-31
CHANGES.txt - 2.1.3 - 2016-02-05
--------------------------------
CHANGES IN CUPS V2.0.4
CHANGES IN CUPS V2.1.3
- Fixed a bug in cupsRasterWritePixels (STR #4650)
- Fixed redirection in the web interface (STR #4538)
- The IPP backend did not respond to side-channel requests (STR #4645)
- The scheduler did not start all pending jobs at once (STR #4646)
- The web search incorrectly searched time-at-xxx values (STR #4652)
- Fixed an RPM spec file issue (STR #4657)
- The scheduler incorrectly started jobs while canceling multiple jobs
(STR #4648)
- Fixed processing of server overrides without port numbers (STR #4675)
- Documentation changes (STR #4651, STR #4674)
- The default password function did not work on some platforms
(STR #4750)
- The scheduler should not exit under memory pressure
(<rdar://problem/23255001>)
- The EPL2 and ZPL sample drivers did not properly support the CutMedia
option.
- Pending subscriptions would prevent the scheduler from idle exiting
(STR #4754)
- Fixed some issues in ipptool for skipped tests
(<rdar://problem/24137160>)
- The "lp -H resume" command did not reset the "job-state-reasons"
attribute value (STR #4752)
- The scheduler did not allow access to resource files (icons, etc.)
when the web interface was disabled (STR #4755)
- Localization fix (STR #4756)
CHANGES IN CUPS V2.0.3
CHANGES IN CUPS V2.1.2
- Security: Fixed CERT VU #810572 exploiting the dynamic linker
(STR #4609)
- Security: The scheduler could hang with malformed gzip data
(STR #4602)
- Restored missing generic printer icon file (STR #4587)
- Fixed logging of configuration errors to show up as errors (STR #4582)
- Fixed potential buffer overflows in raster code and filters
(STR #4598, STR #4599, STR #4600, STR #4601)
- Fixed a gzip processing bug (#4602)
- Fixed <Limit> inside <Location> (STR #4575)
- Fixed lpadmin when both -m and -o are used (STR #4578)
- The web interface always showed support for 2-sided printing
(STR #4595)
- cupsRasterReadHeader did not fully validate the raster header
(STR #4596)
- The rastertopwg filter did not check for truncated input (STR #4597)
- The cups-lpd mini-daemon did not check for request parameters
(STR #4603)
- The scheduler could get caught in a busy loop (STR #4605)
- The sample Epson driver could crash (STR #4616)
- The IPP backend now correctly monitors jobs
(<rdar://problem/20495955>)
- The ppdhtml and ppdpo utilities crashed when the -D option was used
before a driver information file (STR #4627)
- ippfind incorrectly substituted "=port" for service_port.
- The IPP/1.1 test file did not handle the initial print job
completing early (STR #4576)
- Fixed a memory leak in cupsConnectDest (STR #4634)
- PWG Raster Format output contained invalid ImageBox values
(<rdar://problem/21144309>)
- Added Russian translation (STR #4577)
- Added German translation (STR #4635)
- Re-release of CUPS 2.1.1 as CUPS 2.1.2 due to error in tagging of the
2.1.1 release (pulled content from the 2.2.x tree instead)
CHANGES IN CUPS V2.0.2
CHANGES IN CUPS V2.1.1
- Security: cupsRasterReadPixels buffer overflow with invalid page
header and compressed raster data (STR #4551)
- Command-line programs were not localized on Mac OS X
(<rdar://problem/14546232>)
- The scheduler incorrectly cleared the MakeModel string in the
printers.conf file after a restart (<rdar://problem/16827518>)
- CUPS did not compile with older versions of GNU TLS (STR #4527)
- CUPS did not compile without Avahi or mDNSResponder (STR #4523)
- ippLength() did not return the correct length for IPP_TAG_CONST
string values.
- The scheduler incorrectly aborted jobs after a job was restarted
(<rdar://problem/19129387>)
- The cups-files.conf file contained the old ServerCertificate/Key
directives instead of ServerKeychain.
- Fixed builds when no SSL/TLS library is available, or when explicitly
disabled (STR #4531)
- Fixed an OpenBSD charset transcoding issue.
- Fixed USB printing on OpenBSD (STR #4525)
- The --without-xinetd configure option did not work (STR #4542)
- Backends needing to load OS X kernel extensions did not work
(<rdar://problem/19015679>)
- Mapping of PPD keywords to IPP keywords did not work if the PPD
keyword was already an IPP keyword (<rdar://problem/19121005>)
- cupsGetPPD* sent bad requests (STR #4567)
- ippserver used the wrong temporary directory on Windows (STR #4547)
- ippserver did not handle Bonjour registrations properly (STR #4548)
- The scheduler could crash during shutdown if Avahi was shutdown
first (STR #4550)
- Added a USB quirk rule for Intermec printers (STR #4553)
- The scheduler did not always log which configuration file had the
error (STR #4559)
- The ippfind and ipptool programs now correctly match hostnames with
trailing dots (STR #4563)
- The ipptool timeout option did not work (STR #4515)
- Fixed several issues with client.conf, CUPS_SERVER, and the "-h"
option of most commands (STR #4528)
- Another change for OpenBSD (STR #4526)
- Added Japanese localization (STR #4524)
- Documentation changes (STR #4569)
- Security hardening fixes (<rdar://problem/23131948>,
<rdar://problem/23132108>, <rdar://problem/23132353>,
<rdar://problem/23132803>, <rdar://problem/23133230>,
<rdar://problem/23133393>, <rdar://problem/23133466>,
<rdar://problem/23133833>, <rdar://problem/23133998>,
<rdar://problem/23134228>, <rdar://problem/23134299>,
<rdar://problem/23134356>, <rdar://problem/23134415>,
<rdar://problem/23134506>, <rdar://problem/23135066>,
<rdar://problem/23135122>, <rdar://problem/23135207>,
<rdar://problem/23144290>, <rdar://problem/23144358>,
<rdar://problem/23144461>)
- The cupsGetPPD* functions did not work with IPP printers (STR #4725)
- Some older HP LaserJet printers need a delayed close when printing
using the libusb-based USB backend (STR #4549)
- The libusb-based USB backend did not unload the kernel usblp module
if it was preventing the backend from accessing the printer
(STR #4707)
- Current Primera printers were incorrectly reported as Fargo printers
(STR #4708)
- The IPP backend did not always handle jobs getting canceled at the
printer (<rdar://problem/22716820>)
- Scheduler logging change (STR #4728)
- Added USB quirk for Canon MP530 (STR #4730)
- The scheduler did not deliver job notifications for jobs submitted to
classes (STR #4733)
- Changing the printer-is-shared value for a remote queue did not
produce an error (STR #4738)
- The IPP backend incorrectly included the job-password attribute in
Validate-Job requests (<rdar://problem/23531939>)
- Updated localizations (STR #4709)
CHANGES IN CUPS V2.0.1
CHANGES IN CUPS V2.1.0
- Security: SSLv3 is now disabled by default to protect against the
POODLE attack (STR #4476)
- Printer sharing did not work when systemd was being used (STR #4497)
- cupsGetPPD* would return a symlink to the PPD in /etc/cups/ppd even if
it was not readable by the user (STR #4500)
- The web interface now protects against frame "click-jacking" attacks
(STR #4492)
- Fixed a crash in ippAttributeString (<rdar://problem/17903871>)
- Fixed a crash in the scheduler on Linux/*BSD if colord was not running
(STR #4496)
- Fixed a random crash in the scheduler when not using systemd
(STR #4484)
- Added systemd support for cups-lpd (STR #4493)
- The scheduler did not honor the FatalErrors directive for mis-
configured Group and SystemGroup values (STR #4495)
- The network backends no longer report waste-receptacle conditions when
using SNMP (STR #4499)
- The IPP backend did not work with some configurations of Windows
(STR #4503)
- RPMs did not build (STR #4490)
- Added a USB quirk rule for the Brother HL-1250 (STR #4519)
- Fixed compiles on unsupported platforms (STR #4510)
- "cancel -a" did not cancel all jobs on all destinations (STR #4513)
- The web interface did not work on OpenBSD (STR #4496)
- Fixed more scheduler crash bugs in the new logging code (STR #4687,
STR #4690)
- The scheduler did not use the ConfigFilePerm setting when copying PPD
files or interface scripts attached to a request (STR #4703)
- Now support new Chinese locale IDs and their correct fallback locales
(<rdar://problem/22086642>, <rdar://problem/22130168>)
- "make check" incorrectly reported an expectation of 18 warning
messages when 8 were expected (STR #4684)
- The new PDF file type rule did not work (STR #4692)
- The scheduler did not update the jobs.cache file when job files were
expired (STR #4706)
- Fixed some configure script issues (STR #4694, STR #4695, STR #4698)
- Documentation updates (STR #4691, STR #4693)
CHANGES IN CUPS V2.0.0
CHANGES IN CUPS V2.1rc1
- The scheduler did not preserve listener sockets from launchd or
systemd after a restart (<rdar://problem/18112848>)
- Added some USB quirk rules for the libusb-based USB backend
(STR #4482)
- Spanish localization update (STR #4487)
- Updated documentation for 2.0.0 release.
- Added support for 3D printers (basic types only, no built-in filters)
based on PWG white paper.
- Fixed bugs in the new journald support (STR #4655, STR #4658,
STR #4661)
- Fixed domain socket support on Linux (STR #4679)
- Fixed signal handlers in the dnssd and usb backends (STR #4671)
- <Limit All> in <Policy> sections now applies to all operations when
used by itself (STR #4659)
- Configure script changes for systemd support (STR #4669)
- Updated autoconf sources to use newer form of AC_INIT (STR #4664)
CHANGES IN CUPS V2.0rc1
CHANGES IN CUPS V2.1b1
- Documentation updates (STR #4464)
- The scheduler now monitors the AC power status on OS X, allowing for
"sleep printing" when sharing printers (<rdar://problem/17325852>)
- The scheduler incorrectly called launch_activate_socket multiple times
on OS X (<rdar://problem/17523218>)
- The ippserver test program now passes the IPP Everywhere self-
certification tests (STR #4101)
- Relaxed the new OS X filter sandbox slightly (STR #4471,
<rdar://problem/17483959>)
- Dropped the old Epson Stylus Color/Photo sample drivers since they
don't work with any current printers and there are free alternatives
that produce much better output (<rdar://problem/18036889>)
- Log and configuration files that are not world-readable are again
accessible via the web interface (STR #4461)
- PPD files are now created using the permissions specified by the
ConfigFilePerm directive.
- Fixed RPM build issues (STR #4459)
- Fixed the spinner image and restart page when reconfiguring the
scheduler through the web interface (STR #4475)
- Improved speed of ppdMarkDefaults for complex/large PPDs
(<rdar://problem/15146999>)
- The IPP backend now stops sending print data if the printer indicates
the job has been aborted or canceled (<rdar://problem/17837631>)
- The IPP backend now sends the job-pages-per-set attribute when
printing multiple copy jobs with finishings
(<rdar://problem/16792757>)
- The IPP backend now updates the cupsMandatory values when the printer
configuration changes (<rdar://problem/18126570>)
- No longer install banner files since third-party banner filters now
supply their own (STR #4518)
- Added support for EXPECT-ALL directive in ipptool test files
(STR #4469)
- Added support for WITH-VALUE-FROM predicate in ipptool test files
(STR #4470)
- The scheduler no longer listens on the loopback interface unless the
web interface or printer sharing are enabled
(<rdar://problem/9136448>)
- Added a PPD generator for IPP Everywhere printers (STR #4258)
- Now install "default" versions of more configuration files
(<rdar://problem/19024491>)
- The cupstestppd program did not handle "maxsize(nnn)" entries in
cupsFilter/cupsFilter2 values (<rdar://problem/18974858>)
- The scheduler now checks the return value of rename() calls
(STR #4589)
- The scheduler now validates ErrorPolicy values in config files
(STR #4591)
- Long cookies caused the web interface to stop working (STR #4619)
- Added SSLOptions values to allow Diffie-Hellman key exchange and
disable TLS/1.0 support.
- Updated the scheduler to support more IPP Everywhere attributes
(STR #4630)
- The scheduler now supports advanced ASL and journald logging when
"syslog" output is configured (STR #4474)
- The scheduler now supports logging to stderr when running in the
foreground (STR #4505)
CHANGES IN CUPS V2.0b1
- Added a "--list-filters" option to the cupsfilter command (STR #4325)
- Added systemd support (STR #3917)
- Added support for re-sending a job as a raster file if a higher-level
format such as PDF fails (<rdar://problem/15583721>)
- Added support for regular expression matching in the MIME type rules
(<rdar://problem/11131245>)
- Added support for TLS certificate validation and policy enforcement
(STR #1616)
- Added support for simultaneous XML and test output from ipptool.
- Added support for PAUSE directive in ipptool test files.
- Added support for auto-typing of TIFF files by ipptool (STR #4418)
- The scheduler now returns completed jobs in the correct newest-to-
oldest order (STR #4396)
- The configure script now supports target-specific tools for pkg-config
and others (STR #4423)
- The ipptool program now supports EXPECT statements for collection
member attributes (<rdar://problem/15355218>)
- The ipptool program now supports collection attributes with multiple
values (<rdar://problem/15355124>)
- The sample drivers now include all of the installed localizations by
default (<rdar://problem/14756625>)
- Adopted Linux man page conventions and updated all man pages
(STR #4372, STR #4329)
- The scheduler now supports the "first-index" operation attribute for
the Get-Jobs operation (STR #2913)
- Changed the default AccessLogLevel and PageLogFormat to disable the
access_log and page_log files by default (<rdar://problem/16495000>)
- cupsRasterInterpretPPD now supports the Orientation header in order to
support long-edge feed raster printers (<rdar://problem/15837926>)
- The scheduler now allows run-as-root backends to have group read and
execute permissions (STR #2935)
- The ippFindAttribute and ippFindNextAttribute functions now support
hierarchical searches (STR #4395)
- Dropped OpenSSL support in favor of GNU TLS.
- Dropped "dark wake" support on OS X, which was preventing portables
from going to sleep when there was a stuck job. We now use a variation
of the CUPS 1.4 sleep support to do a cleaner sleep
(<rdar://problem/14323704>)
- Dropped support for AIX, HP-UX, and OSF/1 (aka Digital UNIX)
- Dropped lppasswd and support for Digest authentication in in the
scheduler (STR #4321)
- The cupsGetClasses, cupsGetPrinters, and cupsTempFile functions are no
longer supported.
- The scheduler now caches more job history data and limits the number
of completed jobs returned by Get-Jobs as needed in order to prevent a
denial-of-service on busy servers (STR #2913)
- The filter/backend sandbox on OS X now defaults to a more strict
whitelist (<rdar://problem/15939788>)
- Increased the default idle exit timeout to 60 seconds on OS X
(<rdar://problem/16041820>)
- Printer classes were not accessible on OS X
(<rdar://problem/16385643>)
- The scheduler now uses </DefaultPrinter> to close the default printer
definition in printers.conf (STR #4153)
- Canceling all jobs in the web interface now just cancels the jobs
(STR #1914)
+1 -1
Ver Arquivo
@@ -1,4 +1,4 @@
INSTALL - CUPS v2.0.4 - 2015-07-31
INSTALL - CUPS v2.1.3 - 2016-02-05
----------------------------------
This file describes how to compile and install CUPS from source code. For more
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
#
# "$Id: Makedefs.in 11716 2014-03-21 14:50:24Z msweet $"
# "$Id: Makedefs.in 12519 2015-02-17 13:10:19Z msweet $"
#
# Common makefile definitions for CUPS.
#
@@ -264,5 +264,5 @@ USBQUIRKS = @USBQUIRKS@
#
# End of "$Id: Makedefs.in 11716 2014-03-21 14:50:24Z msweet $"
# End of "$Id: Makedefs.in 12519 2015-02-17 13:10:19Z msweet $"
#
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
#
# "$Id: Makefile 12415 2015-01-21 00:03:08Z msweet $"
# "$Id: Makefile 12414 2015-01-21 00:02:04Z msweet $"
#
# Top-level Makefile for CUPS.
#
@@ -348,5 +348,5 @@ dist: all
#
# End of "$Id: Makefile 12415 2015-01-21 00:03:08Z msweet $".
# End of "$Id: Makefile 12414 2015-01-21 00:02:04Z msweet $".
#
+1 -1
Ver Arquivo
@@ -1,4 +1,4 @@
README - CUPS v2.0.4 - 2015-07-31
README - CUPS v2.1.3 - 2016-02-05
---------------------------------
Looking for compile instructions? Read the file "INSTALL.txt" instead...
+4 -12
Ver Arquivo
@@ -1,5 +1,5 @@
/*
* "$Id: dnssd.c 12660 2015-05-22 19:09:57Z msweet $"
* "$Id: dnssd.c 12970 2015-11-13 20:02:51Z msweet $"
*
* DNS-SD discovery backend for CUPS.
*
@@ -921,13 +921,6 @@ get_device(cups_array_t *devices, /* I - Device array */
* Yes, add the device...
*/
#ifdef HAVE_DNSSD
DNSServiceConstructFullName(fullName, serviceName, regtype, replyDomain);
#else /* HAVE_AVAHI */
avahi_service_name_join(fullName, kDNSServiceMaxDomainName,
serviceName, regtype, replyDomain);
#endif /* HAVE_DNSSD */
device = calloc(sizeof(cups_device_t), 1);
device->name = strdup(serviceName);
device->domain = strdup(replyDomain);
@@ -943,8 +936,7 @@ get_device(cups_array_t *devices, /* I - Device array */
#ifdef HAVE_DNSSD
DNSServiceConstructFullName(fullName, serviceName, regtype, replyDomain);
#else /* HAVE_AVAHI */
avahi_service_name_join(fullName, kDNSServiceMaxDomainName,
serviceName, regtype, replyDomain);
avahi_service_name_join(fullName, kDNSServiceMaxDomainName, serviceName, regtype, replyDomain);
#endif /* HAVE_DNSSD */
device->fullName = strdup(fullName);
@@ -1289,7 +1281,7 @@ sigterm_handler(int sig) /* I - Signal number (unused) */
(void)sig;
if (job_canceled)
exit(CUPS_BACKEND_OK);
_exit(CUPS_BACKEND_OK);
else
job_canceled = 1;
}
@@ -1330,5 +1322,5 @@ unquote(char *dst, /* I - Destination buffer */
/*
* End of "$Id: dnssd.c 12660 2015-05-22 19:09:57Z msweet $".
* End of "$Id: dnssd.c 12970 2015-11-13 20:02:51Z msweet $".
*/
+64 -332
Ver Arquivo
@@ -1,9 +1,9 @@
/*
* "$Id: ipp.c 12759 2015-06-24 20:06:30Z msweet $"
* "$Id: ipp.c 12896 2015-10-09 13:15:22Z msweet $"
*
* IPP backend for CUPS.
*
* Copyright 2007-2014 by Apple Inc.
* Copyright 2007-2015 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
@@ -122,6 +122,7 @@ static const char * const pattrs[] = /* Printer attributes we want */
"printer-alert",
"printer-alert-description",
"printer-is-accepting-jobs",
"printer-mandatory-job-attributes",
"printer-state",
"printer-state-message",
"printer-state-reasons"
@@ -145,6 +146,8 @@ static cups_option_t *attr_cache = NULL;
static cups_array_t *state_reasons; /* Array of printe-state-reasons keywords */
static char tmpfilename[1024] = "";
/* Temporary spool file name */
static char mandatory_attrs[1024] = "";
/* cupsMandatory value */
/*
@@ -1295,11 +1298,16 @@ main(int argc, /* I - Number of command-line args */
* Load the PPD file and generate PWG attribute mapping information...
*/
ppd_attr_t *mandatory; /* cupsMandatory value */
ppd = ppdOpenFile(getenv("PPD"));
pc = _ppdCacheCreateWithPPD(ppd);
ppdMarkDefaults(ppd);
cupsMarkOptions(ppd, num_options, options);
if ((mandatory = ppdFindAttr(ppd, "cupsMandatory", NULL)) != NULL)
strlcpy(mandatory_attrs, mandatory->value, sizeof(mandatory_attrs));
}
}
else
@@ -1459,6 +1467,7 @@ main(int argc, /* I - Number of command-line args */
ipp_status == IPP_STATUS_ERROR_CUPS_ACCOUNT_AUTHORIZATION_FAILED)
goto cleanup;
else if (ipp_status == IPP_STATUS_ERROR_FORBIDDEN ||
ipp_status == IPP_STATUS_ERROR_NOT_AUTHORIZED ||
ipp_status == IPP_STATUS_ERROR_CUPS_AUTHENTICATION_CANCELED)
{
const char *www_auth = httpGetField(http, HTTP_FIELD_WWW_AUTHENTICATE);
@@ -1791,7 +1800,7 @@ main(int argc, /* I - Number of command-line args */
fprintf(stderr, "DEBUG: Send-Document: %s (%s)\n",
ippErrorString(cupsLastError()), cupsLastErrorString());
if (cupsLastError() > IPP_OK_CONFLICT)
if (cupsLastError() > IPP_OK_CONFLICT && !job_canceled)
{
ipp_status = cupsLastError();
@@ -1809,6 +1818,9 @@ main(int argc, /* I - Number of command-line args */
}
}
if (job_canceled)
break;
if (ipp_status <= IPP_OK_CONFLICT && argc > 6)
{
fprintf(stderr, "PAGE: 1 %d\n", copies_sup ? atoi(argv[4]) : 1);
@@ -2018,12 +2030,8 @@ main(int argc, /* I - Number of command-line args */
remote_job_states[job_state->values[0].integer -
IPP_JOB_PENDING]);
if ((job_sheets = ippFindAttribute(response,
"job-media-sheets-completed",
IPP_TAG_INTEGER)) == NULL)
job_sheets = ippFindAttribute(response,
"job-impressions-completed",
IPP_TAG_INTEGER);
if ((job_sheets = ippFindAttribute(response, "job-impressions-completed", IPP_TAG_INTEGER)) == NULL)
job_sheets = ippFindAttribute(response, "job-media-sheets-completed", IPP_TAG_INTEGER);
if (job_sheets)
fprintf(stderr, "PAGE: total %d\n",
@@ -2439,6 +2447,17 @@ monitor_printer(
}
}
fprintf(stderr, "DEBUG: (monitor) job-state = %s\n",
ippEnumString("job-state", monitor->job_state));
if (!job_canceled &&
(monitor->job_state == IPP_JOB_CANCELED ||
monitor->job_state == IPP_JOB_ABORTED))
{
job_canceled = -1;
fprintf(stderr, "DEBUG: (monitor) job_canceled = -1\n");
}
if ((attr = ippFindAttribute(response, "job-state-reasons",
IPP_TAG_KEYWORD)) != NULL)
{
@@ -2460,6 +2479,9 @@ monitor_printer(
new_reasons |= _CUPS_JSR_JOB_PASSWORD_WAIT;
else if (!strcmp(attr->values[i].string.text, "job-release-wait"))
new_reasons |= _CUPS_JSR_JOB_RELEASE_WAIT;
if (!job_canceled &&
(!strncmp(attr->values[i].string.text, "job-canceled-", 13) || !strcmp(attr->values[i].string.text, "aborted-by-system")))
job_canceled = 1;
}
if (new_reasons != monitor->job_reasons)
@@ -2485,7 +2507,7 @@ monitor_printer(
ippDelete(response);
fprintf(stderr, "DEBUG: (monitor) job-state=%s\n",
fprintf(stderr, "DEBUG: (monitor) job-state = %s\n",
ippEnumString("job-state", monitor->job_state));
if (!job_canceled &&
@@ -2523,7 +2545,10 @@ monitor_printer(
monitor->user, monitor->version);
if (cupsLastError() > IPP_OK_CONFLICT)
{
fprintf(stderr, "DEBUG: (monitor) cancel_job() = %s\n", cupsLastErrorString());
_cupsLangPrintFilter(stderr, "ERROR", _("Unable to cancel print job."));
}
}
}
@@ -2560,19 +2585,10 @@ new_request(
ipp_attribute_t *print_color_mode_sup)
/* I - Printer supports print-color-mode */
{
int i; /* Looping var */
ipp_t *request; /* Request data */
const char *keyword; /* PWG keyword */
_pwg_size_t *size; /* PWG media size */
ipp_t *media_col, /* media-col value */
*media_size; /* media-size value */
const char *media_source, /* media-source value */
*media_type, /* media-type value */
*collate_str, /* multiple-document-handling value */
*mandatory; /* Mandatory attributes */
ipp_tag_t group; /* Current group */
ipp_attribute_t *attr; /* Current attribute */
const char *color_attr_name; /* Supported color attribute */
char buffer[1024]; /* Value buffer */
@@ -2592,36 +2608,31 @@ new_request(
* Add standard attributes...
*/
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
NULL, uri);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri", NULL, uri);
fprintf(stderr, "DEBUG: printer-uri=\"%s\"\n", uri);
if (user && *user)
{
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME,
"requesting-user-name", NULL, user);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "requesting-user-name", NULL, user);
fprintf(stderr, "DEBUG: requesting-user-name=\"%s\"\n", user);
}
if (title && *title)
{
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "job-name", NULL,
title);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "job-name", NULL, title);
fprintf(stderr, "DEBUG: job-name=\"%s\"\n", title);
}
if (format && op != IPP_CREATE_JOB)
{
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_MIMETYPE,
"document-format", NULL, format);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_MIMETYPE, "document-format", NULL, format);
fprintf(stderr, "DEBUG: document-format=\"%s\"\n", format);
}
#ifdef HAVE_LIBZ
if (compression && op != IPP_OP_CREATE_JOB && op != IPP_OP_VALIDATE_JOB)
{
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD,
"compression", NULL, compression);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD, "compression", NULL, compression);
fprintf(stderr, "DEBUG: compression=\"%s\"\n", compression);
}
#endif /* HAVE_LIBZ */
@@ -2634,313 +2645,13 @@ new_request(
{
if (pc)
{
int num_finishings = 0, /* Number of finishing values */
finishings[10]; /* Finishing enum values */
ppd_choice_t *choice; /* Marked choice */
/*
* Send standard IPP attributes...
*/
fputs("DEBUG: Adding standard IPP operation/job attributes.\n", stderr);
if (pc->password &&
(keyword = cupsGetOption("job-password", num_options,
options)) != NULL)
{
ippAddOctetString(request, IPP_TAG_OPERATION, "job-password", keyword, (int)strlen(keyword));
if ((keyword = cupsGetOption("job-password-encryption", num_options,
options)) == NULL)
keyword = "none";
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD,
"job-password-encryption", NULL, keyword);
}
if (pc->account_id)
{
if ((keyword = cupsGetOption("job-account-id", num_options,
options)) == NULL)
keyword = cupsGetOption("job-billing", num_options, options);
if (keyword)
ippAddString(request, IPP_TAG_JOB, IPP_TAG_NAME, "job-account-id",
NULL, keyword);
}
if (pc->accounting_user_id)
{
if ((keyword = cupsGetOption("job-accounting-user-id", num_options,
options)) == NULL)
keyword = user;
if (keyword)
ippAddString(request, IPP_TAG_JOB, IPP_TAG_NAME,
"job-accounting-user-id", NULL, keyword);
}
for (mandatory = (char *)cupsArrayFirst(pc->mandatory);
mandatory;
mandatory = (char *)cupsArrayNext(pc->mandatory))
{
if (strcmp(mandatory, "copies") &&
strcmp(mandatory, "destination-uris") &&
strcmp(mandatory, "finishings") &&
strcmp(mandatory, "job-account-id") &&
strcmp(mandatory, "job-accounting-user-id") &&
strcmp(mandatory, "job-password") &&
strcmp(mandatory, "job-password-encryption") &&
strcmp(mandatory, "media") &&
strncmp(mandatory, "media-col", 9) &&
strcmp(mandatory, "multiple-document-handling") &&
strcmp(mandatory, "output-bin") &&
strcmp(mandatory, "print-color-mode") &&
strcmp(mandatory, "print-quality") &&
strcmp(mandatory, "sides") &&
(keyword = cupsGetOption(mandatory, num_options, options)) != NULL)
{
_ipp_option_t *opt = _ippFindOption(mandatory);
/* Option type */
ipp_tag_t value_tag = opt ? opt->value_tag : IPP_TAG_NAME;
/* Value type */
switch (value_tag)
{
case IPP_TAG_INTEGER :
case IPP_TAG_ENUM :
ippAddInteger(request, IPP_TAG_JOB, value_tag, mandatory,
atoi(keyword));
break;
case IPP_TAG_BOOLEAN :
ippAddBoolean(request, IPP_TAG_JOB, mandatory,
!_cups_strcasecmp(keyword, "true"));
break;
case IPP_TAG_RANGE :
{
int lower, upper; /* Range */
if (sscanf(keyword, "%d-%d", &lower, &upper) != 2)
lower = upper = atoi(keyword);
ippAddRange(request, IPP_TAG_JOB, mandatory, lower, upper);
}
break;
case IPP_TAG_STRING :
ippAddOctetString(request, IPP_TAG_JOB, mandatory, keyword, (int)strlen(keyword));
break;
default :
if (!strcmp(mandatory, "print-color-mode") && !strcmp(keyword, "monochrome"))
{
if (ippContainsString(print_color_mode_sup, "auto-monochrome"))
keyword = "auto-monochrome";
else if (ippContainsString(print_color_mode_sup, "process-monochrome") && !ippContainsString(print_color_mode_sup, "monochrome"))
keyword = "process-monochrome";
}
ippAddString(request, IPP_TAG_JOB, value_tag, mandatory,
NULL, keyword);
break;
}
}
}
if ((keyword = cupsGetOption("PageSize", num_options, options)) == NULL)
keyword = cupsGetOption("media", num_options, options);
if ((size = _ppdCacheGetSize(pc, keyword)) != NULL)
{
/*
* Add a media-col value...
*/
media_size = ippNew();
ippAddInteger(media_size, IPP_TAG_ZERO, IPP_TAG_INTEGER,
"x-dimension", size->width);
ippAddInteger(media_size, IPP_TAG_ZERO, IPP_TAG_INTEGER,
"y-dimension", size->length);
media_col = ippNew();
ippAddCollection(media_col, IPP_TAG_ZERO, "media-size", media_size);
media_source = _ppdCacheGetSource(pc, cupsGetOption("InputSlot",
num_options,
options));
media_type = _ppdCacheGetType(pc, cupsGetOption("MediaType",
num_options,
options));
for (i = 0; i < media_col_sup->num_values; i ++)
{
if (!strcmp(media_col_sup->values[i].string.text,
"media-left-margin"))
ippAddInteger(media_col, IPP_TAG_ZERO, IPP_TAG_INTEGER,
"media-left-margin", size->left);
else if (!strcmp(media_col_sup->values[i].string.text,
"media-bottom-margin"))
ippAddInteger(media_col, IPP_TAG_ZERO, IPP_TAG_INTEGER,
"media-bottom-margin", size->bottom);
else if (!strcmp(media_col_sup->values[i].string.text,
"media-right-margin"))
ippAddInteger(media_col, IPP_TAG_ZERO, IPP_TAG_INTEGER,
"media-right-margin", size->right);
else if (!strcmp(media_col_sup->values[i].string.text,
"media-top-margin"))
ippAddInteger(media_col, IPP_TAG_ZERO, IPP_TAG_INTEGER,
"media-top-margin", size->top);
else if (!strcmp(media_col_sup->values[i].string.text,
"media-source") && media_source)
ippAddString(media_col, IPP_TAG_ZERO, IPP_TAG_KEYWORD,
"media-source", NULL, media_source);
else if (!strcmp(media_col_sup->values[i].string.text,
"media-type") && media_type)
ippAddString(media_col, IPP_TAG_ZERO, IPP_TAG_KEYWORD,
"media-type", NULL, media_type);
}
ippAddCollection(request, IPP_TAG_JOB, "media-col", media_col);
}
if ((keyword = cupsGetOption("output-bin", num_options,
options)) == NULL)
{
if ((choice = ppdFindMarkedChoice(ppd, "OutputBin")) != NULL)
keyword = _ppdCacheGetBin(pc, choice->choice);
}
if (keyword)
ippAddString(request, IPP_TAG_JOB, IPP_TAG_KEYWORD, "output-bin",
NULL, keyword);
color_attr_name = print_color_mode_sup ? "print-color-mode" : "output-mode";
if ((keyword = cupsGetOption("print-color-mode", num_options,
options)) == NULL)
{
if ((choice = ppdFindMarkedChoice(ppd, "ColorModel")) != NULL)
{
if (!_cups_strcasecmp(choice->choice, "Gray"))
keyword = "monochrome";
else
keyword = "color";
}
}
if (keyword && !strcmp(keyword, "monochrome"))
{
if (ippContainsString(print_color_mode_sup, "auto-monochrome"))
keyword = "auto-monochrome";
else if (ippContainsString(print_color_mode_sup, "process-monochrome") && !ippContainsString(print_color_mode_sup, "monochrome"))
keyword = "process-monochrome";
}
if (keyword)
ippAddString(request, IPP_TAG_JOB, IPP_TAG_KEYWORD, color_attr_name,
NULL, keyword);
if ((keyword = cupsGetOption("print-quality", num_options,
options)) != NULL)
ippAddInteger(request, IPP_TAG_JOB, IPP_TAG_ENUM, "print-quality",
atoi(keyword));
else if ((choice = ppdFindMarkedChoice(ppd, "cupsPrintQuality")) != NULL)
{
if (!_cups_strcasecmp(choice->choice, "draft"))
ippAddInteger(request, IPP_TAG_JOB, IPP_TAG_ENUM, "print-quality",
IPP_QUALITY_DRAFT);
else if (!_cups_strcasecmp(choice->choice, "normal"))
ippAddInteger(request, IPP_TAG_JOB, IPP_TAG_ENUM, "print-quality",
IPP_QUALITY_NORMAL);
else if (!_cups_strcasecmp(choice->choice, "high"))
ippAddInteger(request, IPP_TAG_JOB, IPP_TAG_ENUM, "print-quality",
IPP_QUALITY_HIGH);
}
if ((keyword = cupsGetOption("sides", num_options, options)) != NULL)
ippAddString(request, IPP_TAG_JOB, IPP_TAG_KEYWORD, "sides",
NULL, keyword);
else if (pc->sides_option &&
(choice = ppdFindMarkedChoice(ppd, pc->sides_option)) != NULL)
{
if (!_cups_strcasecmp(choice->choice, pc->sides_1sided))
ippAddString(request, IPP_TAG_JOB, IPP_TAG_KEYWORD, "sides",
NULL, "one-sided");
else if (!_cups_strcasecmp(choice->choice, pc->sides_2sided_long))
ippAddString(request, IPP_TAG_JOB, IPP_TAG_KEYWORD, "sides",
NULL, "two-sided-long-edge");
if (!_cups_strcasecmp(choice->choice, pc->sides_2sided_short))
ippAddString(request, IPP_TAG_JOB, IPP_TAG_KEYWORD, "sides",
NULL, "two-sided-short-edge");
}
if ((keyword = cupsGetOption("multiple-document-handling",
num_options, options)) != NULL)
{
if (strstr(keyword, "uncollated"))
keyword = "false";
else
keyword = "true";
}
else if ((keyword = cupsGetOption("collate", num_options,
options)) == NULL)
keyword = "true";
if (format)
{
if (!_cups_strcasecmp(format, "image/gif") ||
!_cups_strcasecmp(format, "image/jp2") ||
!_cups_strcasecmp(format, "image/jpeg") ||
!_cups_strcasecmp(format, "image/png") ||
!_cups_strcasecmp(format, "image/tiff") ||
!_cups_strncasecmp(format, "image/x-", 8))
{
/*
* Collation makes no sense for single page image formats...
*/
keyword = "false";
}
else if (!_cups_strncasecmp(format, "image/", 6) ||
!_cups_strcasecmp(format, "application/vnd.cups-raster"))
{
/*
* Multi-page image formats will have copies applied by the upstream
* filters...
*/
copies = 1;
}
}
if (doc_handling_sup)
{
if (!_cups_strcasecmp(keyword, "true"))
collate_str = "separate-documents-collated-copies";
else
collate_str = "separate-documents-uncollated-copies";
for (i = 0; i < doc_handling_sup->num_values; i ++)
if (!strcmp(doc_handling_sup->values[i].string.text, collate_str))
{
ippAddString(request, IPP_TAG_JOB, IPP_TAG_KEYWORD,
"multiple-document-handling", NULL, collate_str);
break;
}
if (i >= doc_handling_sup->num_values)
copies = 1;
}
/*
* Map finishing options...
*/
num_finishings = _ppdCacheGetFinishingValues(pc, num_options, options,
(int)(sizeof(finishings) /
sizeof(finishings[0])),
finishings);
if (num_finishings > 0)
ippAddIntegers(request, IPP_TAG_JOB, IPP_TAG_ENUM, "finishings",
num_finishings, finishings);
copies = _cupsConvertOptions(request, ppd, pc, media_col_sup, doc_handling_sup, print_color_mode_sup, user, format, copies, num_options, options);
/*
* Map FaxOut options...
@@ -3222,6 +2933,7 @@ report_printer_state(ipp_t *ipp) /* I - IPP response */
{
ipp_attribute_t *pa, /* printer-alert */
*pam, /* printer-alert-message */
*pmja, /* printer-mandatory-job-attributes */
*psm, /* printer-state-message */
*reasons, /* printer-state-reasons */
*marker; /* marker-* attributes */
@@ -3242,6 +2954,26 @@ report_printer_state(ipp_t *ipp) /* I - IPP response */
IPP_TAG_TEXT)) != NULL)
report_attr(pam);
if ((pmja = ippFindAttribute(ipp, "printer-mandatory-job-attributes", IPP_TAG_KEYWORD)) != NULL)
{
int i, /* Looping var */
count = ippGetCount(pmja); /* Number of values */
for (i = 0, valptr = value; i < count; i ++, valptr += strlen(valptr))
{
if (i)
snprintf(valptr, sizeof(value) - (size_t)(valptr - value), " %s", ippGetString(pmja, i, NULL));
else
strlcpy(value, ippGetString(pmja, i, NULL), sizeof(value));
}
if (strcmp(value, mandatory_attrs))
{
strlcpy(mandatory_attrs, value, sizeof(mandatory_attrs));
fprintf(stderr, "PPD: cupsMandatory=\"%s\"\n", value);
}
}
if ((psm = ippFindAttribute(ipp, "printer-state-message",
IPP_TAG_TEXT)) != NULL)
{
@@ -3544,7 +3276,7 @@ sigterm_handler(int sig) /* I - Signal */
* Flag that the job should be canceled...
*/
write(2, "DEBUG: job_canceled = 1.\n", 25);
write(2, "DEBUG: sigterm_handler: job_canceled = 1.\n", 25);
job_canceled = 1;
return;
@@ -3770,5 +3502,5 @@ update_reasons(ipp_attribute_t *attr, /* I - printer-state-reasons or NULL */
}
/*
* End of "$Id: ipp.c 12759 2015-06-24 20:06:30Z msweet $".
* End of "$Id: ipp.c 12896 2015-10-09 13:15:22Z msweet $".
*/
+3 -3
Ver Arquivo
@@ -1,5 +1,5 @@
/*
* "$Id: lpd.c 12024 2014-07-15 12:58:39Z msweet $"
* "$Id: lpd.c 13040 2016-01-11 20:29:13Z msweet $"
*
* Line Printer Daemon backend for CUPS.
*
@@ -1251,7 +1251,7 @@ rresvport_af(int *port, /* IO - Port number to bind to */
*/
memset(&addr, 0, sizeof(addr));
addr.addr.sa_family = family;
addr.addr.sa_family = (sa_family_t)family;
/*
* Try to bind the socket to a reserved port...
@@ -1320,5 +1320,5 @@ sigterm_handler(int sig) /* I - Signal */
/*
* End of "$Id: lpd.c 12024 2014-07-15 12:58:39Z msweet $".
* End of "$Id: lpd.c 13040 2016-01-11 20:29:13Z msweet $".
*/
+14
Ver Arquivo
@@ -5,6 +5,7 @@
# product ID (omit for all vendor products), and a list of known issues:
#
# blacklist The printer is not functional with the USB backend.
# delay-close Delay close/reset of selected interface
# no-reattach Do no re-attach usblp kernel module after printing.
# soft-reset Do a soft reset after printing for cleanup.
# unidir Only supported unidirectional I/O
@@ -227,3 +228,16 @@
# All Intermec devices (STR #4553)
0x067e no-reattach
# HP LaserJet 1150 (STR #4549)
0x03f0 0x0f17 delay-close
# HP LaserJet 1300 (STR #4549)
0x03f0 0x1017 delay-close
0x03f0 0x1117 delay-close
# HP LaserJet 1320 (STR #4549)
0x03f0 0x1d17 delay-close
# Canon, Inc. MP530 Printer
0x04a9 0x1712 unidir
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
/*
* "$Id: snmp-supplies.c 12228 2014-10-21 13:42:05Z msweet $"
* "$Id: snmp-supplies.c 12227 2014-10-21 13:42:04Z msweet $"
*
* SNMP supplies functions for CUPS.
*
@@ -1098,5 +1098,5 @@ utf16_to_utf8(
/*
* End of "$Id: snmp-supplies.c 12228 2014-10-21 13:42:05Z msweet $".
* End of "$Id: snmp-supplies.c 12227 2014-10-21 13:42:04Z msweet $".
*/
+130 -90
Ver Arquivo
@@ -1,7 +1,7 @@
/*
* "$Id: usb-darwin.c 12529 2015-02-23 18:57:57Z msweet $"
* "$Id: usb-darwin.c 12928 2015-10-23 21:31:58Z msweet $"
*
* Copyright 2005-2014 Apple Inc. All rights reserved.
* Copyright 2005-2015 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
@@ -95,7 +95,7 @@ extern char **environ;
#define WAIT_SIDE_DELAY 3
#define DEFAULT_TIMEOUT 5000L
#define USB_INTERFACE_KIND CFUUIDGetUUIDBytes(kIOUSBInterfaceInterfaceID190)
#define USB_INTERFACE_KIND CFUUIDGetUUIDBytes(kIOUSBInterfaceInterfaceID245)
#define kUSBLanguageEnglish 0x409
#define PRINTER_POLLING_INTERVAL 5 /* seconds */
@@ -140,7 +140,7 @@ struct crashreporter_annotations_t gCRAnnotations
#define kUSBPrintingProtocolBidirectional 2
#define kUSBPrintingProtocolIPP 4
typedef IOUSBInterfaceInterface190 **printer_interface_t;
typedef IOUSBInterfaceInterface245 **printer_interface_t;
typedef struct iodevice_request_s /**** Device request ****/
{
@@ -241,6 +241,7 @@ typedef struct globals_s
ssize_t debug_bytes; /* Current bytes to read */
#endif /* DEBUG_WRITES */
Boolean use_generic_class_driver;
Boolean wait_eof;
int drain_output; /* Drain all pending output */
int bidi_flag; /* 0=unidirectional, 1=bidirectional */
@@ -300,10 +301,10 @@ static const char *next_line (const char *buffer);
static void parse_pserror (char *sockBuffer, int len);
#endif /* PARSE_PS_ERRORS */
static IOUSBInterfaceInterface220 **usb_interface220_for_service(io_service_t usbClass);
static printer_interface_t usb_printer_interface_interface(io_service_t usbClass);
static IOUSBDeviceInterface **usb_device_interface_for_device(io_service_t usbDevice);
static CFStringRef printer_interface_deviceid(IOUSBInterfaceInterface220 **printer, UInt8 alternateSetting);
static CFStringRef printer_interface_indexed_description(IOUSBInterfaceInterface220 ** printer, UInt8 index, UInt16 language);
static CFStringRef copy_printer_interface_deviceid(printer_interface_t printer, UInt8 alternateSetting);
static CFStringRef copy_printer_interface_indexed_description(printer_interface_t printer, UInt8 index, UInt16 language);
static CFStringRef deviceIDCopyManufacturer(CFStringRef deviceID);
static CFStringRef deviceIDCopyModel(CFStringRef deviceID);
static CFStringRef deviceIDCopySerialNumber(CFStringRef deviceID);
@@ -957,6 +958,27 @@ static void *read_thread(void *reference)
} while (g.wait_eof || !g.read_thread_stop); /* Abort from main thread tests error here */
/* Workaround for usb race condition. <rdar://problem/21882551> */
if (!g.wait_eof && g.use_generic_class_driver)
{
const char *pdl = getenv("FINAL_CONTENT_TYPE");
if (pdl && strcmp(pdl, "application/vnd.cups-postscript") == 0)
{
while (readstatus == kIOReturnSuccess && ((rbytes > 0 && readbuffer[rbytes-1] != 0x4) || rbytes == 0))
{
start = mach_absolute_time();
rbytes = sizeof(readbuffer);
readstatus = (*g.classdriver)->ReadPipe(g.classdriver, readbuffer, &rbytes);
if (readstatus == kIOReturnSuccess && rbytes > 0 && readbuffer[rbytes-1] == 0x4)
break;
/* Make sure this loop executes no more than once every 250 miliseconds... */
mach_wait_until(start + delay);
}
}
}
/*
* Let the main thread know that we have completed the read thread...
*/
@@ -1099,17 +1121,17 @@ 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);
if (kr == kIOReturnSuccess && masterPort != 0x0)
{
iterator_reference_t reference = { callBack, userdata, true };
IONotificationPortRef addNotification = IONotificationPortCreate(masterPort);
io_iterator_t addIterator = IO_OBJECT_NULL;
kr = IOServiceAddMatchingNotification(addNotification, kIOFirstMatchNotification, IOServiceMatching(kIOUSBDeviceClassName),
&device_added, &reference, &addIterator);
if (kr == kIOReturnSuccess && addIterator != IO_OBJECT_NULL)
@@ -1124,7 +1146,7 @@ static void iterate_printers(iterator_callback_t callBack, void *userdata)
}
mach_port_deallocate(mach_task_self(), masterPort);
}
Iterating = 0;
}
@@ -1138,7 +1160,7 @@ static void device_added(void *userdata, io_iterator_t iterator)
{
iterator_reference_t *reference = userdata;
io_service_t device;
while (reference->keepRunning && (device = IOIteratorNext(iterator)) != 0x0)
{
UInt32 locationID = 0;
@@ -1163,19 +1185,19 @@ static void device_added(void *userdata, io_iterator_t iterator)
while (reference->keepRunning && (intf = IOIteratorNext(intfIterator)))
{
IOUSBInterfaceInterface220 **intf220 = usb_interface220_for_service(intf);
if (intf220 != NULL)
printer_interface_t printerIntf = usb_printer_interface_interface(intf);
if (printerIntf != NULL)
{
UInt8 intfClass = 0, intfSubclass = 0, intfProtocol = 0, intfNumber = 0;
(*intf220)->GetInterfaceClass(intf220, &intfClass);
(*intf220)->GetInterfaceSubClass(intf220, &intfSubclass);
(*intf220)->GetInterfaceProtocol(intf220, &intfProtocol);
(*intf220)->GetInterfaceNumber(intf220, &intfNumber);
(*printerIntf)->GetInterfaceClass(printerIntf, &intfClass);
(*printerIntf)->GetInterfaceSubClass(printerIntf, &intfSubclass);
(*printerIntf)->GetInterfaceProtocol(printerIntf, &intfProtocol);
(*printerIntf)->GetInterfaceNumber(printerIntf, &intfNumber);
if (IsPrintingInterface(intfClass, intfSubclass, intfProtocol))
{
CFStringRef deviceIDString = printer_interface_deviceid(intf220, 0);
CFStringRef deviceIDString = copy_printer_interface_deviceid(printerIntf, 0);
if (deviceIDString != NULL)
{
reference->keepRunning = reference->callback(userdata, intf, deviceIDString, locationID, intfNumber, 0);
@@ -1183,8 +1205,8 @@ static void device_added(void *userdata, io_iterator_t iterator)
}
}
IOUSBInterfaceDescriptor *intfDesc = nil;
while (reference->keepRunning && (intfDesc = (IOUSBInterfaceDescriptor *)(*intf220)->FindNextAssociatedDescriptor(intf220, intfDesc, kUSBInterfaceDesc)))
IOUSBInterfaceDescriptor *intfDesc = NULL;
while (reference->keepRunning && (intfDesc = (IOUSBInterfaceDescriptor *)(*printerIntf)->FindNextAssociatedDescriptor(printerIntf, intfDesc, kUSBInterfaceDesc)))
{
intfClass = intfDesc->bInterfaceClass;
intfSubclass = intfDesc->bInterfaceSubClass;
@@ -1192,7 +1214,7 @@ static void device_added(void *userdata, io_iterator_t iterator)
if ((IsPrintingInterface(intfClass, intfSubclass, intfProtocol)))
{
CFStringRef deviceIDString = printer_interface_deviceid(intf220, intfDesc->bAlternateSetting);
CFStringRef deviceIDString = copy_printer_interface_deviceid(printerIntf, intfDesc->bAlternateSetting);
if (deviceIDString != NULL)
{
reference->keepRunning = reference->callback(userdata, intf, deviceIDString, locationID, intfNumber, intfDesc->bAlternateSetting);
@@ -1200,8 +1222,9 @@ static void device_added(void *userdata, io_iterator_t iterator)
}
}
}
(*intf220)->Release(intf220);
(*printerIntf)->Release(printerIntf);
}
IOObjectRelease(intf);
}
device_added_done:
@@ -1210,12 +1233,12 @@ static void device_added(void *userdata, io_iterator_t iterator)
IOObjectRelease(device);
}
/* One last call to the call back now that we are not longer have printers left to iterate...
*/
if (reference->keepRunning && reference->callback)
reference->keepRunning = reference->callback(reference->userdata, IO_OBJECT_NULL, NULL, 0, 0, 0);
if (!reference->keepRunning)
CFRunLoopStop(CFRunLoopGetCurrent());
}
@@ -1226,42 +1249,47 @@ static void device_added(void *userdata, io_iterator_t iterator)
static Boolean list_device_cb(void *refcon, io_service_t obj, CFStringRef deviceIDString, UInt32 deviceLocation, UInt8 interfaceNum, UInt8 alternateSetting)
{
(void)refcon;
(void)interfaceNum;
(void)alternateSetting;
if (obj != IO_OBJECT_NULL)
{
CFStringRef make = NULL;
CFStringRef model = NULL;
CFStringRef serial = NULL;
CFStringRef make = deviceIDCopyManufacturer(deviceIDString);
CFStringRef model = deviceIDCopyModel(deviceIDString);
CFStringRef serial = deviceIDCopySerialNumber(deviceIDString);
char uristr[1024], makestr[1024], modelstr[1024], serialstr[1024];
char optionsstr[1024], idstr[1024], make_modelstr[1024];
CFStringGetCString(deviceIDString, idstr, sizeof(idstr), kCFStringEncodingUTF8);
backendGetMakeModel(idstr, make_modelstr, sizeof(make_modelstr));
modelstr[0] = '/';
if (make == NULL || !CFStringGetCString(make, makestr, sizeof(makestr), kCFStringEncodingUTF8))
strlcpy(makestr, "Unknown", sizeof(makestr));
if (model == NULL || !CFStringGetCString(model, &modelstr[1], sizeof(modelstr)-1, kCFStringEncodingUTF8))
strlcpy(modelstr + 1, "Printer", sizeof(modelstr) - 1);
optionsstr[0] = '\0';
if (serial != NULL && CFStringGetCString(serial, serialstr, sizeof(serialstr), kCFStringEncodingUTF8))
snprintf(optionsstr, sizeof(optionsstr), "?serial=%s", serialstr);
else if (deviceLocation != 0)
snprintf(optionsstr, sizeof(optionsstr), "?location=%x", (unsigned)deviceLocation);
httpAssembleURI(HTTP_URI_CODING_ALL, uristr, sizeof(uristr), "usb", NULL, makestr, 0, modelstr);
strlcat(uristr, optionsstr, sizeof(uristr));
cupsBackendReport("direct", uristr, make_modelstr, make_modelstr, idstr,
NULL);
if (make != NULL) CFRelease(make);
if (model != NULL) CFRelease(model);
if (serial != NULL) CFRelease(serial);
}
return obj != IO_OBJECT_NULL;
}
@@ -1271,13 +1299,13 @@ static Boolean list_device_cb(void *refcon, io_service_t obj, CFStringRef device
static Boolean find_device_cb(void *refcon, io_service_t obj, CFStringRef deviceIDString, UInt32 deviceLocation, UInt8 interfaceNum, UInt8 alternateSetting)
{
Boolean keepLooking = true;
if (obj != IO_OBJECT_NULL)
{
CFStringRef make = deviceIDCopyManufacturer(deviceIDString);
CFStringRef model = deviceIDCopyModel(deviceIDString);
CFStringRef serial = deviceIDCopySerialNumber(deviceIDString);
if (make && CFStringCompare(make, g.make, kCFCompareCaseInsensitive) == kCFCompareEqualTo)
{
if (model && CFStringCompare(model, g.model, kCFCompareCaseInsensitive) == kCFCompareEqualTo)
@@ -1288,6 +1316,7 @@ static Boolean find_device_cb(void *refcon, io_service_t obj, CFStringRef device
{
IOObjectRetain(obj);
g.printer_obj = obj;
g.location = deviceLocation;
g.alternateSetting = alternateSetting;
keepLooking = false;
}
@@ -1296,20 +1325,20 @@ static Boolean find_device_cb(void *refcon, io_service_t obj, CFStringRef device
{
if (g.printer_obj != 0)
IOObjectRelease(g.printer_obj);
g.alternateSetting = alternateSetting;
g.printer_obj = obj;
IOObjectRetain(obj);
if (g.location == 0 || g.location == deviceLocation)
keepLooking = false;
}
if ( !keepLooking )
g.interfaceNum = interfaceNum;
}
}
if (make) CFRelease(make);
if (model) CFRelease(model);
if (serial) CFRelease(serial);
@@ -1328,7 +1357,7 @@ static Boolean find_device_cb(void *refcon, io_service_t obj, CFStringRef device
}
}
}
if (!keepLooking && g.status_timer != NULL)
{
fputs("STATE: -offline-report\n", stderr);
@@ -1337,14 +1366,14 @@ static Boolean find_device_cb(void *refcon, io_service_t obj, CFStringRef device
CFRelease(g.status_timer);
g.status_timer = NULL;
}
return keepLooking;
}
static CFStringRef deviceIDCopySerialNumber(CFStringRef deviceID)
{
CFStringRef serialKeys[] = { CFSTR("SN:"), CFSTR("SERN:"), NULL };
return copy_value_for_key(deviceID, serialKeys);
}
@@ -1512,6 +1541,7 @@ static kern_return_t load_printerdriver(CFStringRef *driverBundlePath)
{
*driverBundlePath = IORegistryEntryCreateCFProperty(g.printer_obj, kUSBClassDriverProperty, NULL, kNilOptions);
g.use_generic_class_driver = (*driverBundlePath == NULL || (CFStringCompare(*driverBundlePath, kUSBGenericTOPrinterClassDriver, 0x0) == kCFCompareEqualTo));
kr = load_classdriver(*driverBundlePath, interface, &g.classdriver);
if (kr != kIOReturnSuccess)
@@ -1522,15 +1552,15 @@ static kern_return_t load_printerdriver(CFStringRef *driverBundlePath)
return kr;
}
static IOUSBInterfaceInterface220 **usb_interface220_for_service(io_service_t usbClass)
static printer_interface_t usb_printer_interface_interface(io_service_t usbClass)
{
IOUSBInterfaceInterface220 ** intf = NULL;
printer_interface_t intf = NULL;
IOCFPlugInInterface **plugin = NULL;
SInt32 score;
int kr = IOCreatePlugInInterfaceForService(usbClass, kIOUSBInterfaceUserClientTypeID, kIOCFPlugInInterfaceID, &plugin, &score);
if (kr == kIOReturnSuccess)
{
(*plugin)->QueryInterface(plugin, CFUUIDGetUUIDBytes(kIOUSBInterfaceInterfaceID220), (LPVOID *)&intf);
(*plugin)->QueryInterface(plugin, USB_INTERFACE_KIND, (LPVOID *)&intf);
IODestroyPlugInInterface(plugin);
}
@@ -1554,7 +1584,7 @@ static IOUSBDeviceInterface **usb_device_interface_for_device(io_service_t usbDe
}
static CFStringRef printer_interface_deviceid(IOUSBInterfaceInterface220 **printer, UInt8 alternateSetting)
static CFStringRef copy_printer_interface_deviceid(printer_interface_t printer, UInt8 alternateSetting)
{
// I have tried to make this function as neat as I can, but the possibility of needing to resend
// a request to get the entire string makes it hideous...
@@ -1568,8 +1598,8 @@ static CFStringRef printer_interface_deviceid(IOUSBInterfaceInterface220 **print
#define kDefaultNoDataTimeout 5000L
#define pack_device_id_wIndex(intf, alt) ((UInt16)((((UInt16)(intf)) << 8) | ((UInt8)(alt))))
if (printer == nil)
return nil;
if (printer == NULL)
return NULL;
IOReturn err = kIOReturnError;
@@ -1591,15 +1621,15 @@ static CFStringRef printer_interface_deviceid(IOUSBInterfaceInterface220 **print
request.pData = NULL;
}
IOReturn err = kIOReturnError;
IOReturn berr = kIOReturnError;
char *buffer = malloc(size);
if (buffer == NULL)
return kIOReturnNoMemory;
request.wLength = HostToUSBWord(size);
request.pData = buffer;
err = (*printer)->ControlRequestTO(printer, (UInt8)0, &request);
return err;
berr = (*printer)->ControlRequestTO(printer, (UInt8)0, &request);
return berr;
};
/* This request takes the 0 based configuration index. IOKit returns a 1 based configuration index */
@@ -1624,7 +1654,7 @@ static CFStringRef printer_interface_deviceid(IOUSBInterfaceInterface220 **print
{
ret = CFStringCreateWithBytes(NULL, (const UInt8 *) &request.pData[2], actualLength - 2, kCFStringEncodingUTF8, false);
}
else {
else if (actualLength > 2) {
err = sendRequest(actualLength);
if (err == kIOReturnSuccess && request.wLenDone > 0)
{
@@ -1639,7 +1669,7 @@ static CFStringRef printer_interface_deviceid(IOUSBInterfaceInterface220 **print
}
CFStringRef manufacturer = deviceIDCopyManufacturer(ret);
CFStringRef model = deviceIDCopyManufacturer(ret);
CFStringRef model = deviceIDCopyModel(ret);
CFStringRef serial = deviceIDCopySerialNumber(ret);
if (manufacturer == NULL || serial == NULL || model == NULL)
@@ -1664,22 +1694,22 @@ static CFStringRef printer_interface_deviceid(IOUSBInterfaceInterface220 **print
CFMutableStringRef extras = CFStringCreateMutable(NULL, 0);
if (manufacturer == NULL)
{
manufacturer = printer_interface_indexed_description(printer, desc.iManufacturer, kUSBLanguageEnglish);
if (CFStringGetLength(manufacturer) > 0)
manufacturer = copy_printer_interface_indexed_description(printer, desc.iManufacturer, kUSBLanguageEnglish);
if (manufacturer && CFStringGetLength(manufacturer) > 0)
CFStringAppendFormat(extras, NULL, CFSTR("MFG:%@;"), manufacturer);
}
if (model == NULL)
{
model = printer_interface_indexed_description(printer, desc.iProduct, kUSBLanguageEnglish);
if (CFStringGetLength(model) > 0)
CFStringAppendFormat(extras, NULL, CFSTR("MDL:%@;"), manufacturer);
model = copy_printer_interface_indexed_description(printer, desc.iProduct, kUSBLanguageEnglish);
if (model && CFStringGetLength(model) > 0)
CFStringAppendFormat(extras, NULL, CFSTR("MDL:%@;"), model);
}
if (serial == NULL && desc.iSerialNumber != 0)
{
serial = printer_interface_indexed_description(printer, desc.iSerialNumber, kUSBLanguageEnglish);
if (CFStringGetLength(serial) > 0)
serial = copy_printer_interface_indexed_description(printer, desc.iSerialNumber, kUSBLanguageEnglish);
if (serial && CFStringGetLength(serial) > 0)
CFStringAppendFormat(extras, NULL, CFSTR("SERN:%@;"), serial);
}
@@ -1697,14 +1727,8 @@ static CFStringRef printer_interface_deviceid(IOUSBInterfaceInterface220 **print
}
}
if (manufacturer != NULL)
CFRelease(manufacturer);
if (model != NULL)
CFRelease(model);
if (serial != NULL)
CFRelease(serial);
if (ret != NULL)
{
/* Remove special characters from the serial number */
CFRange range = (serial != NULL ? CFStringFind(serial, CFSTR("+"), 0) : CFRangeMake(0, 0));
if (range.length == 1)
@@ -1717,11 +1741,27 @@ static CFStringRef printer_interface_deviceid(IOUSBInterfaceInterface220 **print
ret = deviceIDString;
CFStringFindAndReplace(deviceIDString, CFSTR("+"), CFSTR(""), range, 0);
}
}
return (CFStringGetLength(ret) > 0 ? ret : nil);
if (manufacturer != NULL)
CFRelease(manufacturer);
if (model != NULL)
CFRelease(model);
if (serial != NULL)
CFRelease(serial);
if (ret != NULL && CFStringGetLength(ret) == 0)
{
CFRelease(ret);
return NULL;
}
return ret;
}
static CFStringRef printer_interface_indexed_description(IOUSBInterfaceInterface220 ** printer, UInt8 index, UInt16 language)
static CFStringRef copy_printer_interface_indexed_description(printer_interface_t printer, UInt8 index, UInt16 language)
{
IOReturn err;
UInt8 description[256]; // Max possible descriptor length
@@ -1759,7 +1799,7 @@ static CFStringRef printer_interface_indexed_description(IOUSBInterfaceInterface
err = (*printer)->ControlRequestTO(printer, 0, &request);
if (err != kIOReturnSuccess && err != kIOReturnUnderrun)
return nil;
return NULL;
}
unsigned int length = description[0];
@@ -1775,17 +1815,17 @@ static CFStringRef printer_interface_indexed_description(IOUSBInterfaceInterface
request.wIndex = language;
bzero(description, length);
request.wLength = length;
request.wLength = (UInt16)length;
request.pData = &description;
request.completionTimeout = 0;
request.noDataTimeout = 60L;
err = (*printer)->ControlRequestTO(printer, 0, &request);
if (err != kIOReturnSuccess)
return nil;
return NULL;
if (description[1] != kUSBStringDesc)
return nil;
return NULL;
if ((description[0] & 1) != 0)
description[0] &= 0xfe;
@@ -1799,7 +1839,7 @@ static CFStringRef printer_interface_indexed_description(IOUSBInterfaceInterface
if (length > maxLength - 1)
length = maxLength -1;
for (int i = 0; i < length; i++)
for (unsigned i = 0; i < length; i++)
buffer[i] = (char) description[2*i+2];
buffer[length] = 0;
@@ -2245,13 +2285,13 @@ sigterm_handler(int sig) /* I - Signal */
while (waitpid(child_pid, &status, 0) < 0 && errno == EINTR);
if (WIFEXITED(status))
exit(WEXITSTATUS(status));
_exit(WEXITSTATUS(status));
else if (status == SIGTERM || status == SIGKILL)
exit(0);
_exit(0);
else
{
fprintf(stderr, "DEBUG: Child crashed on signal %d\n", status);
exit(CUPS_BACKEND_STOP);
write(2, "DEBUG: Child crashed.\n", 22);
_exit(CUPS_BACKEND_STOP);
}
}
#endif /* __i386__ || __x86_64__ */
@@ -2443,11 +2483,11 @@ static void get_device_id(cups_sc_status_t *status,
if (g.printer_obj != IO_OBJECT_NULL)
{
IOUSBInterfaceInterface220 **intf220 = usb_interface220_for_service(g.printer_obj);
if (intf220)
printer_interface_t printerIntf = usb_printer_interface_interface(g.printer_obj);
if (printerIntf)
{
deviceIDString = printer_interface_deviceid(intf220, g.alternateSetting);
(*intf220)->Release(intf220);
deviceIDString = copy_printer_interface_deviceid(printerIntf, g.alternateSetting);
(*printerIntf)->Release(printerIntf);
}
}
@@ -2458,7 +2498,7 @@ static void get_device_id(cups_sc_status_t *status,
*datalen = (int)strlen(data);
else
*datalen = 0;
CFRelease(deviceIDString);
}
else
@@ -2497,5 +2537,5 @@ log_usb_class_driver(int is_64bit) /* I - Is the USB class driver 64-bit? */
/*
* End of "$Id: usb-darwin.c 12529 2015-02-23 18:57:57Z msweet $".
* End of "$Id: usb-darwin.c 12928 2015-10-23 21:31:58Z msweet $".
*/
+20 -3
Ver Arquivo
@@ -1,9 +1,9 @@
/*
* "$Id: usb-libusb.c 12349 2014-12-09 22:10:52Z msweet $"
* "$Id: usb-libusb.c 12881 2015-09-15 21:20:02Z msweet $"
*
* LIBUSB interface code for CUPS.
*
* Copyright 2007-2014 by Apple Inc.
* Copyright 2007-2015 by Apple Inc.
*
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
@@ -103,6 +103,7 @@ typedef struct usb_globals_s /* Global USB printer information */
#define USB_QUIRK_USB_INIT 0x0010 /* Needs vendor USB init string */
#define USB_QUIRK_VENDOR_CLASS 0x0020 /* Descriptor uses vendor-specific
Class or SubClass */
#define USB_QUIRK_DELAY_CLOSE 0x0040 /* Delay close */
#define USB_QUIRK_WHITELIST 0x0000 /* no quirks */
@@ -641,6 +642,9 @@ print_device(const char *uri, /* I - Device URI */
* Close the connection and input file and general clean up...
*/
if (g.printer->quirks & USB_QUIRK_DELAY_CLOSE)
sleep(1);
close_device(g.printer);
/*
@@ -1211,6 +1215,9 @@ load_quirks(void)
if (strstr(line, " blacklist"))
quirk->quirks |= USB_QUIRK_BLACKLIST;
if (strstr(line, " delay-close"))
quirk->quirks |= USB_QUIRK_DELAY_CLOSE;
if (strstr(line, " no-reattach"))
quirk->quirks |= USB_QUIRK_NO_REATTACH;
@@ -1522,6 +1529,16 @@ open_device(usb_printer_t *printer, /* I - Printer */
goto error;
}
else if ((errcode = libusb_detach_kernel_driver(printer->handle, printer->iface)) < 0)
{
fprintf(stderr,
"DEBUG: Failed to detach \"usblp\" module from %04x:%04x\n",
devdesc.idVendor, devdesc.idProduct);
goto error;
}
sleep (1);
}
/*
@@ -2004,6 +2021,6 @@ soft_reset_printer(
/*
* End of "$Id: usb-libusb.c 12349 2014-12-09 22:10:52Z msweet $".
* End of "$Id: usb-libusb.c 12881 2015-09-15 21:20:02Z msweet $".
*/
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
#
# "$Id: Makefile 11777 2014-03-28 19:18:10Z msweet $"
# "$Id: Makefile 12519 2015-02-17 13:10:19Z msweet $"
#
# CGI makefile for CUPS.
#
@@ -353,5 +353,5 @@ include Dependencies
#
# End of "$Id: Makefile 11777 2014-03-28 19:18:10Z msweet $".
# End of "$Id: Makefile 12519 2015-02-17 13:10:19Z msweet $".
#
+90 -11
Ver Arquivo
@@ -1,9 +1,9 @@
/*
* "$Id: admin.c 12123 2014-08-28 14:24:45Z msweet $"
* "$Id: admin.c 12516 2015-02-12 20:18:11Z msweet $"
*
* Administration CGI for CUPS.
*
* Copyright 2007-2014 by Apple Inc.
* Copyright 2007-2015 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -18,6 +18,8 @@
*/
#include "cgi-private.h"
#include <cups/http-private.h>
#include <cups/ppd-private.h>
#include <cups/adminutil.h>
#include <cups/ppd.h>
#include <errno.h>
@@ -38,12 +40,7 @@ static int current_device = 0; /* Current device shown */
* Local functions...
*/
static void choose_device_cb(const char *device_class,
const char *device_id, const char *device_info,
const char *device_make_and_model,
const char *device_uri,
const char *device_location,
const char *title);
static void choose_device_cb(const char *device_class, const char *device_id, const char *device_info, const char *device_make_and_model, const char *device_uri, const char *device_location, const char *title);
static void do_add_rss_subscription(http_t *http);
static void do_am_class(http_t *http, int modify);
static void do_am_printer(http_t *http, int modify);
@@ -61,6 +58,7 @@ static void do_set_sharing(http_t *http);
static char *get_option_value(ppd_file_t *ppd, const char *name,
char *buffer, size_t bufsize);
static double get_points(double number, const char *uval);
static char *get_printer_ppd(const char *uri, char *buffer, size_t bufsize);
/*
@@ -832,7 +830,8 @@ do_am_printer(http_t *http, /* I - HTTP connection */
const cgi_file_t *file; /* Uploaded file, if any */
const char *var; /* CGI variable */
char uri[HTTP_MAX_URI], /* Device or printer URI */
*uriptr; /* Pointer into URI */
*uriptr, /* Pointer into URI */
evefile[1024] = ""; /* IPP Everywhere PPD file */
int maxrate; /* Maximum baud rate */
char baudrate[255]; /* Baud rate string */
const char *name, /* Pointer to class name */
@@ -1331,7 +1330,9 @@ do_am_printer(http_t *http, /* I - HTTP connection */
if (!file)
{
var = cgiGetVariable("PPD_NAME");
if (strcmp(var, "__no_change__"))
if (!strcmp(var, "everywhere"))
get_printer_ppd(cgiGetVariable("DEVICE_URI"), evefile, sizeof(evefile));
else if (strcmp(var, "__no_change__"))
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "ppd-name",
NULL, var);
}
@@ -1384,6 +1385,11 @@ do_am_printer(http_t *http, /* I - HTTP connection */
if (file)
ippDelete(cupsDoFileRequest(http, request, "/admin/", file->tempfile));
else if (evefile[0])
{
ippDelete(cupsDoFileRequest(http, request, "/admin/", evefile));
unlink(evefile);
}
else
ippDelete(cupsDoRequest(http, request, "/admin/"));
@@ -4198,5 +4204,78 @@ get_points(double number, /* I - Original number */
/*
* End of "$Id: admin.c 12123 2014-08-28 14:24:45Z msweet $".
* 'get_printer_ppd()' - Get an IPP Everywhere PPD file for the given URI.
*/
static char * /* O - Filename or NULL */
get_printer_ppd(const char *uri, /* I - Printer URI */
char *buffer, /* I - Filename buffer */
size_t bufsize) /* I - Size of filename buffer */
{
http_t *http; /* Connection to printer */
ipp_t *request, /* Get-Printer-Attributes request */
*response; /* Get-Printer-Attributes response */
char resolved[1024], /* Resolved URI */
scheme[32], /* URI scheme */
userpass[256], /* Username:password */
host[256], /* Hostname */
resource[256]; /* Resource path */
int port; /* Port number */
/*
* Connect to the printer...
*/
if (strstr(uri, "._tcp"))
{
/*
* Resolve URI...
*/
if (!_httpResolveURI(uri, resolved, sizeof(resolved), _HTTP_RESOLVE_DEFAULT, NULL, NULL))
{
fprintf(stderr, "ERROR: Unable to resolve \"%s\".\n", uri);
return (NULL);
}
uri = resolved;
}
if (httpSeparateURI(HTTP_URI_CODING_ALL, uri, scheme, sizeof(scheme), userpass, sizeof(userpass), host, sizeof(host), &port, resource, sizeof(resource)) < HTTP_URI_STATUS_OK)
{
fprintf(stderr, "ERROR: Bad printer URI \"%s\".\n", uri);
return (NULL);
}
http = httpConnect2(host, port, NULL, AF_UNSPEC, !strcmp(scheme, "ipps") ? HTTP_ENCRYPTION_ALWAYS : HTTP_ENCRYPTION_IF_REQUESTED, 1, 30000, NULL);
if (!http)
{
fprintf(stderr, "ERROR: Unable to connect to \"%s:%d\": %s\n", host, port, cupsLastErrorString());
return (NULL);
}
/*
* Send a Get-Printer-Attributes request...
*/
request = ippNewRequest(IPP_OP_GET_PRINTER_ATTRIBUTES);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri", NULL, uri);
response = cupsDoRequest(http, request, resource);
if (!_ppdCreateFromIPP(buffer, bufsize, response))
fprintf(stderr, "ERROR: Unable to create PPD file: %s\n", strerror(errno));
ippDelete(response);
httpClose(http);
if (buffer[0])
return (buffer);
else
return (NULL);
}
/*
* End of "$Id: admin.c 12516 2015-02-12 20:18:11Z msweet $".
*/
+4 -4
Ver Arquivo
@@ -1,9 +1,9 @@
/*
* "$Id: help-index.c 12344 2014-12-09 21:36:11Z msweet $"
* "$Id: help-index.c 12644 2015-05-19 21:22:35Z msweet $"
*
* Online help index routines for CUPS.
*
* Copyright 2007-2014 by Apple Inc.
* Copyright 2007-2015 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -1220,7 +1220,7 @@ help_new_node(const char *filename, /* I - Filename */
n->filename = strdup(filename);
n->anchor = anchor ? strdup(anchor) : NULL;
n->section = (section && *section) ? strdup(section) : NULL;
n->section = *section ? strdup(section) : NULL;
n->text = strdup(text);
n->mtime = mtime;
n->offset = offset;
@@ -1306,5 +1306,5 @@ help_sort_words(help_word_t *w1, /* I - Second word */
/*
* End of "$Id: help-index.c 12344 2014-12-09 21:36:11Z msweet $".
* End of "$Id: help-index.c 12644 2015-05-19 21:22:35Z msweet $".
*/
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
/*
* "$Id: ipp-var.c 12769 2015-06-30 16:13:48Z msweet $"
* "$Id: ipp-var.c 12768 2015-06-30 16:13:38Z msweet $"
*
* CGI <-> IPP variable routines for CUPS.
*
@@ -1550,5 +1550,5 @@ cgiText(const char *message) /* I - Message */
/*
* End of "$Id: ipp-var.c 12769 2015-06-30 16:13:48Z msweet $".
* End of "$Id: ipp-var.c 12768 2015-06-30 16:13:38Z msweet $".
*/
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
/*
* "$Id: template.c 12701 2015-06-08 18:33:44Z msweet $"
* "$Id: template.c 12700 2015-06-08 18:32:35Z msweet $"
*
* CGI template function.
*
@@ -686,5 +686,5 @@ cgi_puturi(const char *s, /* I - String to output */
/*
* End of "$Id: template.c 12701 2015-06-08 18:33:44Z msweet $".
* End of "$Id: template.c 12700 2015-06-08 18:32:35Z msweet $".
*/
+27 -8
Ver Arquivo
@@ -1,9 +1,9 @@
/*
* "$Id: var.c 12034 2014-07-16 19:37:34Z msweet $"
* "$Id: var.c 12621 2015-05-06 21:32:18Z msweet $"
*
* CGI form variable and array functions for CUPS.
*
* Copyright 2007-2014 by Apple Inc.
* Copyright 2007-2015 by Apple Inc.
* Copyright 1997-2005 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -626,6 +626,8 @@ cgi_initialize_cookies(void)
while (*cookie)
{
int skip = 0; /* Skip this cookie? */
/*
* Skip leading whitespace...
*/
@@ -641,9 +643,14 @@ cgi_initialize_cookies(void)
for (ptr = name; *cookie && *cookie != '=';)
if (ptr < (name + sizeof(name) - 1))
{
*ptr++ = *cookie++;
}
else
break;
{
skip = 1;
cookie ++;
}
if (*cookie != '=')
break;
@@ -659,26 +666,38 @@ cgi_initialize_cookies(void)
{
for (cookie ++, ptr = value; *cookie && *cookie != '\"';)
if (ptr < (value + sizeof(value) - 1))
{
*ptr++ = *cookie++;
}
else
break;
{
skip = 1;
cookie ++;
}
if (*cookie == '\"')
cookie ++;
else
skip = 1;
}
else
{
for (ptr = value; *cookie && *cookie != ';';)
if (ptr < (value + sizeof(value) - 1))
{
*ptr++ = *cookie++;
}
else
break;
{
skip = 1;
cookie ++;
}
}
if (*cookie == ';')
cookie ++;
else if (*cookie)
break;
skip = 1;
*ptr = '\0';
@@ -687,7 +706,7 @@ cgi_initialize_cookies(void)
* "$"...
*/
if (name[0] != '$')
if (name[0] != '$' && !skip)
num_cookies = cupsAddOption(name, value, num_cookies, &cookies);
}
}
@@ -1278,5 +1297,5 @@ cgi_unlink_file(void)
/*
* End of "$Id: var.c 12034 2014-07-16 19:37:34Z msweet $".
* End of "$Id: var.c 12621 2015-05-06 21:32:18Z msweet $".
*/
+4 -4
Ver Arquivo
@@ -1,9 +1,9 @@
#
# "$Id: Makefile 10996 2013-05-29 11:51:34Z msweet $"
# "$Id: Makefile 12533 2015-02-27 12:30:26Z msweet $"
#
# Configuration file makefile for CUPS.
#
# Copyright 2007-2012 by Apple Inc.
# Copyright 2007-2015 by Apple Inc.
# Copyright 1993-2006 by Easy Software Products.
#
# These coded instructions, statements, and computer programs are the
@@ -76,8 +76,8 @@ install-data:
else \
$(INSTALL_CONFIG) -g $(CUPS_GROUP) $$file $(SERVERROOT) ; \
fi ; \
$(INSTALL_CONFIG) -g $(CUPS_GROUP) $$file $(SERVERROOT)/$$file.default; \
done
$(INSTALL_CONFIG) -g $(CUPS_GROUP) cupsd.conf $(SERVERROOT)/cupsd.conf.default
$(INSTALL_DIR) -m 755 $(DATADIR)/mime
for file in $(REPLACE); do \
if test -r $(DATADIR)/mime/$$file ; then \
@@ -139,5 +139,5 @@ uninstall:
#
# End of "$Id: Makefile 10996 2013-05-29 11:51:34Z msweet $".
# End of "$Id: Makefile 12533 2015-02-27 12:30:26Z msweet $".
#
+7
Ver Arquivo
@@ -39,6 +39,13 @@ WebInterface @CUPS_WEBIF@
Order allow,deny
</Location>
# Restrict access to log files...
<Location /admin/log>
AuthType Default
Require user @SYSTEM
Order allow,deny
</Location>
# Set the default printer/job policies...
<Policy default>
# Job/subscription privacy...
+9 -2
Ver Arquivo
@@ -7,7 +7,7 @@
# VERSIONS OF CUPS. Instead, create a "local.types" file that
# reflects your local configuration changes.
#
# Copyright 2007-2014 by Apple Inc.
# Copyright 2007-2015 by Apple Inc.
# Copyright 1997-2007 by Easy Software Products.
#
# These coded instructions, statements, and computer programs are the
@@ -71,7 +71,7 @@
#
#application/msword doc string(0,<D0CF11E0A1B11AE1>)
application/pdf pdf regex(0,^[\\n\\r]*%PDF)
application/pdf pdf regex(0,^[\n\r]*%PDF)
application/postscript ai eps ps string(0,%!) string(0,<04>%!) \
contains(0,128,<1B>%-12345X) + \
(contains(0,4096,"LANGUAGE=POSTSCRIPT") \
@@ -81,6 +81,13 @@ application/postscript ai eps ps string(0,%!) string(0,<04>%!) \
(contains(0,4096,<0a>%!) + \
!contains(0,4096,"ENTER LANGUAGE")))
application/g-code gcode
application/sla stl string(0,"solid ") + contains(0,4096,"facet") + contains(0,4096,"vertex")
application/vnd.makerbot-s3g x3g
model/amf amf
model/vnd.collada+xml dae
########################################################################
#
# Image files...
+23 -14
Ver Arquivo
@@ -1,9 +1,9 @@
dnl
dnl "$Id: cups-common.m4 12336 2014-12-09 21:19:52Z msweet $"
dnl "$Id: cups-common.m4 12852 2015-08-28 13:29:21Z msweet $"
dnl
dnl Common configuration stuff for CUPS.
dnl
dnl Copyright 2007-2014 by Apple Inc.
dnl Copyright 2007-2015 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
@@ -13,18 +13,26 @@ 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...
AC_PREREQ(2.60)
dnl Set the name of the config header file...
AC_CONFIG_HEADER(config.h)
dnl Version number information...
CUPS_VERSION=2.0.4
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
CUPS_VERSION=2.1.3
case "$CUPS_VERSION" in
*svn)
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'`"
else
CUPS_REVISION=""
fi
;;
*)
CUPS_REVISION=""
;;
esac
CUPS_BUILD="cups-$CUPS_VERSION"
AC_ARG_WITH(cups_build, [ --with-cups-build set "cups-config --build" string ],
@@ -33,8 +41,8 @@ AC_ARG_WITH(cups_build, [ --with-cups-build set "cups-config --build" str
AC_SUBST(CUPS_VERSION)
AC_SUBST(CUPS_REVISION)
AC_SUBST(CUPS_BUILD)
AC_DEFINE_UNQUOTED(CUPS_SVERSION, "CUPS v$CUPS_VERSION$CUPS_REVISION")
AC_DEFINE_UNQUOTED(CUPS_MINIMAL, "CUPS/$CUPS_VERSION$CUPS_REVISION")
AC_DEFINE_UNQUOTED(CUPS_SVERSION, "AC_PACKAGE_NAME v$CUPS_VERSION$CUPS_REVISION")
AC_DEFINE_UNQUOTED(CUPS_MINIMAL, "AC_PACKAGE_NAME/$CUPS_VERSION$CUPS_REVISION")
dnl Default compiler flags...
CFLAGS="${CFLAGS:=}"
@@ -137,6 +145,7 @@ AC_CHECK_HEADER(bstring.h,AC_DEFINE(HAVE_BSTRING_H))
AC_CHECK_HEADER(sys/ioctl.h,AC_DEFINE(HAVE_SYS_IOCTL_H))
AC_CHECK_HEADER(sys/param.h,AC_DEFINE(HAVE_SYS_PARAM_H))
AC_CHECK_HEADER(sys/ucred.h,AC_DEFINE(HAVE_SYS_UCRED_H))
AC_CHECK_HEADER(asl.h,AC_DEFINE(HAVE_ASL_H))
dnl Checks for iconv.h and iconv_open
AC_CHECK_HEADER(iconv.h,
@@ -318,7 +327,7 @@ DBUSDIR=""
DBUS_NOTIFIER=""
DBUS_NOTIFIERLIBS=""
if test "x$enable_dbus" != xno -a "x$PKGCONFIG" != x; then
if test "x$enable_dbus" != xno -a "x$PKGCONFIG" != x -a "x$uname" != xDarwin; then
AC_MSG_CHECKING(for DBUS)
if $PKGCONFIG --exists dbus-1; then
AC_MSG_RESULT(yes)
@@ -465,5 +474,5 @@ esac
AC_SUBST(BUILDDIRS)
dnl
dnl End of "$Id: cups-common.m4 12336 2014-12-09 21:19:52Z msweet $".
dnl End of "$Id: cups-common.m4 12852 2015-08-28 13:29:21Z msweet $".
dnl
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
dnl
dnl "$Id: cups-compiler.m4 12743 2015-06-23 14:49:09Z msweet $"
dnl "$Id: cups-compiler.m4 12742 2015-06-23 14:48:53Z msweet $"
dnl
dnl Compiler stuff for CUPS.
dnl
@@ -246,5 +246,5 @@ case $uname in
esac
dnl
dnl End of "$Id: cups-compiler.m4 12743 2015-06-23 14:49:09Z msweet $".
dnl End of "$Id: cups-compiler.m4 12742 2015-06-23 14:48:53Z msweet $".
dnl
+4 -4
Ver Arquivo
@@ -1,9 +1,9 @@
dnl
dnl "$Id: cups-defaults.m4 11789 2014-04-02 16:52:53Z msweet $"
dnl "$Id: cups-defaults.m4 12846 2015-08-26 18:26:22Z msweet $"
dnl
dnl Default cupsd configuration settings for CUPS.
dnl
dnl Copyright 2007-2012 by Apple Inc.
dnl Copyright 2007-2015 by Apple Inc.
dnl Copyright 2006-2007 by Easy Software Products, all rights reserved.
dnl
dnl These coded instructions, statements, and computer programs are the
@@ -85,7 +85,7 @@ AC_SUBST(CUPS_ACCESS_LOG_LEVEL)
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_ACCESS_LOG_LEVEL, "$CUPS_ACCESS_LOG_LEVEL")
dnl Default PageLogFormat
AC_ARG_WITH(page_logging, [ --enable-page-logging enable page_log by default])
AC_ARG_ENABLE(page_logging, [ --enable-page-logging enable page_log by default])
if test "x$enable_page_logging" = xyes; then
CUPS_PAGE_LOG_FORMAT=""
else
@@ -409,5 +409,5 @@ AC_SUBST(CUPS_WEBIF)
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_WEBIF, $CUPS_DEFAULT_WEBIF)
dnl
dnl End of "$Id: cups-defaults.m4 11789 2014-04-02 16:52:53Z msweet $".
dnl End of "$Id: cups-defaults.m4 12846 2015-08-26 18:26:22Z msweet $".
dnl
+4 -4
Ver Arquivo
@@ -1,9 +1,9 @@
dnl
dnl "$Id: cups-dnssd.m4 11324 2013-10-04 03:11:42Z msweet $"
dnl "$Id: cups-dnssd.m4 12845 2015-08-26 18:23:53Z msweet $"
dnl
dnl DNS Service Discovery (aka Bonjour) stuff for CUPS.
dnl
dnl Copyright 2007-2012 by Apple Inc.
dnl Copyright 2007-2015 by Apple Inc.
dnl
dnl These coded instructions, statements, and computer programs are the
dnl property of Apple Inc. and are protected by Federal copyright
@@ -26,7 +26,7 @@ DNSSD_BACKEND=""
IPPFIND_BIN=""
IPPFIND_MAN=""
if test "x$PKGCONFIG" != x -a x$enable_avahi != xno; then
if test "x$PKGCONFIG" != x -a x$enable_avahi != xno -a x$uname != xDarwin; then
AC_MSG_CHECKING(for Avahi)
if $PKGCONFIG --exists avahi-client; then
AC_MSG_RESULT(yes)
@@ -82,5 +82,5 @@ AC_SUBST(IPPFIND_BIN)
AC_SUBST(IPPFIND_MAN)
dnl
dnl End of "$Id: cups-dnssd.m4 11324 2013-10-04 03:11:42Z msweet $".
dnl End of "$Id: cups-dnssd.m4 12845 2015-08-26 18:23:53Z msweet $".
dnl
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
dnl
dnl "$Id: cups-network.m4 12325 2014-12-09 20:28:51Z msweet $"
dnl "$Id: cups-network.m4 12324 2014-12-09 20:28:39Z msweet $"
dnl
dnl Networking stuff for CUPS.
dnl
@@ -72,5 +72,5 @@ AC_SUBST(CUPS_DEFAULT_DOMAINSOCKET)
AC_SUBST(CUPS_LISTEN_DOMAINSOCKET)
dnl
dnl End of "$Id: cups-network.m4 12325 2014-12-09 20:28:51Z msweet $".
dnl End of "$Id: cups-network.m4 12324 2014-12-09 20:28:39Z msweet $".
dnl
+7 -3
Ver Arquivo
@@ -1,9 +1,9 @@
dnl
dnl "$Id: cups-ssl.m4 12290 2014-12-05 17:25:55Z msweet $"
dnl "$Id: cups-ssl.m4 12645 2015-05-20 01:20:52Z msweet $"
dnl
dnl TLS stuff for CUPS.
dnl
dnl Copyright 2007-2014 by Apple Inc.
dnl Copyright 2007-2015 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
@@ -53,6 +53,10 @@ if test x$enable_ssl != xno; then
AC_DEFINE(HAVE_CSSMERRORSTRING)
AC_DEFINE(HAVE_SECKEYCHAINOPEN)])
if test $uversion -ge 150; then
AC_DEFINE(HAVE_SSLSETENABLEDCIPHERS)
fi
fi
fi
@@ -104,5 +108,5 @@ EXPORT_SSLLIBS="$SSLLIBS"
AC_SUBST(EXPORT_SSLLIBS)
dnl
dnl End of "$Id: cups-ssl.m4 12290 2014-12-05 17:25:55Z msweet $".
dnl End of "$Id: cups-ssl.m4 12645 2015-05-20 01:20:52Z msweet $".
dnl
+25 -9
Ver Arquivo
@@ -1,9 +1,9 @@
dnl
dnl "$Id: cups-startup.m4 12351 2014-12-09 22:18:45Z msweet $"
dnl "$Id: cups-startup.m4 12857 2015-08-31 15:00:45Z msweet $"
dnl
dnl Launch-on-demand/startup stuff for CUPS.
dnl
dnl Copyright 2007-2014 by Apple Inc.
dnl Copyright 2007-2015 by Apple Inc.
dnl Copyright 1997-2005 by Easy Software Products, all rights reserved.
dnl
dnl These coded instructions, statements, and computer programs are the
@@ -56,17 +56,33 @@ if test x$enable_systemd != xno; then
AC_MSG_ERROR(Need pkg-config to enable systemd support.)
fi
else
AC_MSG_CHECKING(for libsystemd-daemon)
if $PKGCONFIG --exists libsystemd-daemon; then
have_systemd=no
AC_MSG_CHECKING(for libsystemd)
if $PKGCONFIG --exists libsystemd; then
AC_MSG_RESULT(yes)
ONDEMANDFLAGS=`$PKGCONFIG --cflags libsystemd-daemon`
ONDEMANDLIBS=`$PKGCONFIG --libs libsystemd-daemon`
have_systemd=yes
ONDEMANDFLAGS=`$PKGCONFIG --cflags libsystemd`
ONDEMANDLIBS=`$PKGCONFIG --libs libsystemd`
elif $PKGCONFIG --exists libsystemd-daemon; then
AC_MSG_RESULT(yes - legacy)
have_systemd=yes
ONDEMANDFLAGS=`$PKGCONFIG --cflags libsystemd-daemon`
ONDEMANDLIBS=`$PKGCONFIG --libs libsystemd-daemon`
if $PKGCONFIG --exists libsystemd-journal; then
ONDEMANDFLAGS="$ONDEMANDFLAGS `$PKGCONFIG --cflags libsystemd-journal`"
ONDEMANDLIBS="$ONDEMANDLIBS `$PKGCONFIG --libs libsystemd-journal`"
fi
else
AC_MSG_RESULT(no)
fi
if test $have_systemd = yes; then
AC_DEFINE(HAVE_SYSTEMD)
AC_CHECK_HEADER(systemd/sd-journal.h,AC_DEFINE(HAVE_SYSTEMD_SD_JOURNAL_H))
if test "x$SYSTEMD_DIR" = x; then
SYSTEMD_DIR="`$PKGCONFIG --variable=systemdsystemunitdir systemd`"
fi
else
AC_MSG_RESULT(no)
fi
fi
fi
@@ -172,5 +188,5 @@ fi
dnl
dnl End of "$Id: cups-startup.m4 12351 2014-12-09 22:18:45Z msweet $".
dnl End of "$Id: cups-startup.m4 12857 2015-08-31 15:00:45Z msweet $".
dnl
+24 -3
Ver Arquivo
@@ -1,9 +1,9 @@
/*
* "$Id: config.h.in 12329 2014-12-09 20:50:51Z msweet $"
* "$Id: config.h.in 12687 2015-06-03 17:19:04Z msweet $"
*
* Configuration file for CUPS.
*
* Copyright 2007-2014 by Apple Inc.
* Copyright 2007-2015 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -242,6 +242,20 @@
#undef HAVE_VSYSLOG
/*
* Do we have the ASL functions?
*/
#undef HAVE_ASL_H
/*
* Do we have the systemd journal functions?
*/
#undef HAVE_SYSTEMD_SD_JOURNAL_H
/*
* Do we have the (v)snprintf() functions?
*/
@@ -348,6 +362,13 @@
#undef HAVE_SECKEYCHAINOPEN
/*
* Do we have (a working) SSLSetEnabledCiphers function?
*/
#undef HAVE_SSLSETENABLEDCIPHERS
/*
* Do we have libpaper?
*/
@@ -719,5 +740,5 @@ static __inline int _cups_abs(int i) { return (i < 0 ? -i : i); }
#endif /* !_CUPS_CONFIG_H_ */
/*
* End of "$Id: config.h.in 12329 2014-12-09 20:50:51Z msweet $".
* End of "$Id: config.h.in 12687 2015-06-03 17:19:04Z msweet $".
*/
externo
+211 -166
Ver Arquivo
@@ -1,9 +1,13 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.69.
# Generated by GNU Autoconf 2.68 for CUPS 2.1.3.
#
# Report bugs to <https://www.cups.org/str.php>.
#
#
# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
# Foundation, Inc.
#
#
# This configure script is free software; the Free Software Foundation
@@ -132,31 +136,6 @@ export LANGUAGE
# CDPATH.
(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
# Use a proper internal environment variable to ensure we don't fall
# into an infinite loop, continuously re-executing ourselves.
if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
_as_can_reexec=no; export _as_can_reexec;
# We cannot yet assume a decent shell, so we have to provide a
# neutralization value for shells without unset; and this also
# works around shells that cannot unset nonexistent variables.
# Preserve -v and -x to the replacement shell.
BASH_ENV=/dev/null
ENV=/dev/null
(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
case $- in # ((((
*v*x* | *x*v* ) as_opts=-vx ;;
*v* ) as_opts=-v ;;
*x* ) as_opts=-x ;;
* ) as_opts= ;;
esac
exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
# Admittedly, this is quite paranoid, since all the known shells bail
# out after a failed `exec'.
$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
as_fn_exit 255
fi
# We don't want this to propagate to other subprocesses.
{ _as_can_reexec=; unset _as_can_reexec;}
if test "x$CONFIG_SHELL" = x; then
as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
emulate sh
@@ -190,8 +169,7 @@ if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
else
exitcode=1; echo positional parameters were not saved.
fi
test x\$exitcode = x0 || exit 1
test -x / || exit 1"
test x\$exitcode = x0 || exit 1"
as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
@@ -236,25 +214,21 @@ IFS=$as_save_IFS
if test "x$CONFIG_SHELL" != x; then :
export CONFIG_SHELL
# We cannot yet assume a decent shell, so we have to provide a
# neutralization value for shells without unset; and this also
# works around shells that cannot unset nonexistent variables.
# Preserve -v and -x to the replacement shell.
BASH_ENV=/dev/null
ENV=/dev/null
(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
case $- in # ((((
*v*x* | *x*v* ) as_opts=-vx ;;
*v* ) as_opts=-v ;;
*x* ) as_opts=-x ;;
* ) as_opts= ;;
esac
exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
# Admittedly, this is quite paranoid, since all the known shells bail
# out after a failed `exec'.
$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
exit 255
# We cannot yet assume a decent shell, so we have to provide a
# neutralization value for shells without unset; and this also
# works around shells that cannot unset nonexistent variables.
# Preserve -v and -x to the replacement shell.
BASH_ENV=/dev/null
ENV=/dev/null
(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
export CONFIG_SHELL
case $- in # ((((
*v*x* | *x*v* ) as_opts=-vx ;;
*v* ) as_opts=-v ;;
*x* ) as_opts=-x ;;
* ) as_opts= ;;
esac
exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"}
fi
if test x$as_have_required = xno; then :
@@ -264,7 +238,8 @@ fi
$as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
$as_echo "$0: be upgraded to zsh 4.3.4 or later."
else
$as_echo "$0: Please tell bug-autoconf@gnu.org about your system,
$as_echo "$0: Please tell bug-autoconf@gnu.org and
$0: https://www.cups.org/str.php about your system,
$0: including any error possibly output before this
$0: message. Then install a modern shell, or manually run
$0: the script under such a shell if you do have one."
@@ -356,14 +331,6 @@ $as_echo X"$as_dir" |
} # as_fn_mkdir_p
# as_fn_executable_p FILE
# -----------------------
# Test if FILE is an executable regular file.
as_fn_executable_p ()
{
test -f "$1" && test -x "$1"
} # as_fn_executable_p
# as_fn_append VAR VALUE
# ----------------------
# Append the text in VALUE to the end of the definition contained in VAR. Take
@@ -485,10 +452,6 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits
chmod +x "$as_me.lineno" ||
{ $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
# If we had to re-execute with $CONFIG_SHELL, we're ensured to have
# already done that, so ensure we don't try to do so again and fall
# in an infinite loop. This has already happened in practice.
_as_can_reexec=no; export _as_can_reexec
# Don't try to exec as it changes $[0], causing all sort of problems
# (the dirname of $[0] is not the place where we might find the
# original and so on. Autoconf is especially sensitive to this).
@@ -523,16 +486,16 @@ if (echo >conf$$.file) 2>/dev/null; then
# ... but there are two gotchas:
# 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
# 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
# In both cases, we have to default to `cp -pR'.
# In both cases, we have to default to `cp -p'.
ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
as_ln_s='cp -pR'
as_ln_s='cp -p'
elif ln conf$$.file conf$$ 2>/dev/null; then
as_ln_s=ln
else
as_ln_s='cp -pR'
as_ln_s='cp -p'
fi
else
as_ln_s='cp -pR'
as_ln_s='cp -p'
fi
rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
rmdir conf$$.dir 2>/dev/null
@@ -544,8 +507,28 @@ else
as_mkdir_p=false
fi
as_test_x='test -x'
as_executable_p=as_fn_executable_p
if test -x / >/dev/null 2>&1; then
as_test_x='test -x'
else
if ls -dL / >/dev/null 2>&1; then
as_ls_L_option=L
else
as_ls_L_option=
fi
as_test_x='
eval sh -c '\''
if test -d "$1"; then
test -d "$1/.";
else
case $1 in #(
-*)set "./$1";;
esac;
case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
???[sx]*):;;*)false;;esac;fi
'\'' sh
'
fi
as_executable_p=$as_test_x
# Sed expression to map a string onto a valid CPP name.
as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
@@ -575,14 +558,13 @@ MFLAGS=
MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME=
PACKAGE_TARNAME=
PACKAGE_VERSION=
PACKAGE_STRING=
PACKAGE_BUGREPORT=
PACKAGE_URL=
PACKAGE_NAME='CUPS'
PACKAGE_TARNAME='cups'
PACKAGE_VERSION='2.1.3'
PACKAGE_STRING='CUPS 2.1.3'
PACKAGE_BUGREPORT='https://www.cups.org/str.php'
PACKAGE_URL='https://www.cups.org/'
ac_unique_file="cups/cups.h"
# Factoring default headers for most tests.
ac_includes_default="\
#include <stdio.h>
@@ -890,7 +872,7 @@ with_log_file_perm
with_fatal_errors
with_log_level
with_access_log_level
with_page_logging
enable_page_logging
enable_browsing
with_local_protocols
enable_default_shared
@@ -963,7 +945,7 @@ sharedstatedir='${prefix}/com'
localstatedir='${prefix}/var'
includedir='${prefix}/include'
oldincludedir='/usr/include'
docdir='${datarootdir}/doc/${PACKAGE}'
docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
infodir='${datarootdir}/info'
htmldir='${docdir}'
dvidir='${docdir}'
@@ -1378,6 +1360,8 @@ target=$target_alias
if test "x$host_alias" != x; then
if test "x$build_alias" = x; then
cross_compiling=maybe
$as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host.
If a cross compiler is detected then cross compile mode will be used" >&2
elif test "x$build_alias" != "x$host_alias"; then
cross_compiling=yes
fi
@@ -1463,7 +1447,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
\`configure' configures this package to adapt to many kinds of systems.
\`configure' configures CUPS 2.1.3 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1511,7 +1495,7 @@ Fine tuning of the installation directories:
--infodir=DIR info documentation [DATAROOTDIR/info]
--localedir=DIR locale-dependent data [DATAROOTDIR/locale]
--mandir=DIR man documentation [DATAROOTDIR/man]
--docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE]
--docdir=DIR documentation root [DATAROOTDIR/doc/cups]
--htmldir=DIR html documentation [DOCDIR]
--dvidir=DIR dvi documentation [DOCDIR]
--pdfdir=DIR pdf documentation [DOCDIR]
@@ -1523,7 +1507,9 @@ _ACEOF
fi
if test -n "$ac_init_help"; then
case $ac_init_help in
short | recursive ) echo "Configuration of CUPS 2.1.3:";;
esac
cat <<\_ACEOF
Optional Features:
@@ -1556,6 +1542,7 @@ Optional Features:
--disable-dnssd disable DNS Service Discovery support using mDNSResponder
--disable-launchd disable launchd support
--disable-systemd disable systemd support
--enable-page-logging enable page_log by default
--disable-browsing disable Browsing by default
--disable-default-shared
disable DefaultShared by default
@@ -1605,7 +1592,6 @@ Optional Packages:
--with-fatal-errors set default FatalErrors value, default=config
--with-log-level set default LogLevel value, default=warn
--with-access-log-level set default AccessLogLevel value, default=none
--enable-page-logging enable page_log by default
--with-local-protocols set default BrowseLocalProtocols, default=""
--with-cups-user set default user for CUPS
--with-cups-group set default group for CUPS
@@ -1637,7 +1623,8 @@ Some influential environment variables:
Use these variables to override the choices made by `configure' or to help
it to find libraries and programs with nonstandard names/locations.
Report bugs to the package provider.
Report bugs to <https://www.cups.org/str.php>.
CUPS home page: <https://www.cups.org/>.
_ACEOF
ac_status=$?
fi
@@ -1700,10 +1687,10 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
configure
generated by GNU Autoconf 2.69
CUPS configure 2.1.3
generated by GNU Autoconf 2.68
Copyright (C) 2012 Free Software Foundation, Inc.
Copyright (C) 2010 Free Software Foundation, Inc.
This configure script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it.
_ACEOF
@@ -1854,7 +1841,7 @@ $as_echo "$ac_try_echo"; } >&5
test ! -s conftest.err
} && test -s conftest$ac_exeext && {
test "$cross_compiling" = yes ||
test -x conftest$ac_exeext
$as_test_x conftest$ac_exeext
}; then :
ac_retval=0
else
@@ -1985,6 +1972,10 @@ $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;}
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
( $as_echo "## ------------------------------------------- ##
## Report this to https://www.cups.org/str.php ##
## ------------------------------------------- ##"
) | sed "s/^/$as_me: WARNING: /" >&2
;;
esac
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
@@ -2160,8 +2151,8 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by $as_me, which was
generated by GNU Autoconf 2.69. Invocation command line was
It was created by CUPS $as_me 2.1.3, which was
generated by GNU Autoconf 2.68. Invocation command line was
$ $0 $@
@@ -2532,16 +2523,25 @@ esac
ac_config_headers="$ac_config_headers config.h"
CUPS_VERSION=2.0.4
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
CUPS_VERSION=2.1.3
case "$CUPS_VERSION" in
*svn)
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'`"
else
CUPS_REVISION=""
fi
;;
*)
CUPS_REVISION=""
;;
esac
CUPS_BUILD="cups-$CUPS_VERSION"
@@ -2586,7 +2586,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_AWK="$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -2634,7 +2634,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -2678,7 +2678,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_ac_ct_CC="$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3122,7 +3122,8 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <stdarg.h>
#include <stdio.h>
struct stat;
#include <sys/types.h>
#include <sys/stat.h>
/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
struct buf { int x; };
FILE * (*rcsopen) (struct buf *, struct stat *, int);
@@ -3372,7 +3373,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3416,7 +3417,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_ac_ct_CXX="$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3618,7 +3619,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3658,7 +3659,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_ac_ct_RANLIB="ranlib"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3711,7 +3712,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_AR="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3751,7 +3752,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_CHMOD="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3791,7 +3792,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_GZIP="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3831,7 +3832,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_LD="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3871,7 +3872,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_LN="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3911,7 +3912,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_MV="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3951,7 +3952,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_RM="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3991,7 +3992,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_RMDIR="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -4031,7 +4032,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_SED="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -4071,7 +4072,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_XDGOPEN="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -4147,7 +4148,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_PKGCONFIG="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -4190,7 +4191,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_ac_pt_PKGCONFIG="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -4600,7 +4601,7 @@ do
for ac_prog in grep ggrep; do
for ac_exec_ext in '' $ac_executable_extensions; do
ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
as_fn_executable_p "$ac_path_GREP" || continue
{ test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
# Check for GNU ac_path_GREP and select it if it is found.
# Check for GNU $ac_path_GREP
case `"$ac_path_GREP" --version 2>&1` in
@@ -4666,7 +4667,7 @@ do
for ac_prog in egrep; do
for ac_exec_ext in '' $ac_executable_extensions; do
ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
as_fn_executable_p "$ac_path_EGREP" || continue
{ test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
# Check for GNU ac_path_EGREP and select it if it is found.
# Check for GNU $ac_path_EGREP
case `"$ac_path_EGREP" --version 2>&1` in
@@ -4927,6 +4928,13 @@ if test "x$ac_cv_header_sys_ucred_h" = xyes; then :
fi
ac_fn_c_check_header_mongrel "$LINENO" "asl.h" "ac_cv_header_asl_h" "$ac_includes_default"
if test "x$ac_cv_header_asl_h" = xyes; then :
$as_echo "#define HAVE_ASL_H 1" >>confdefs.h
fi
ac_fn_c_check_header_mongrel "$LINENO" "iconv.h" "ac_cv_header_iconv_h" "$ac_includes_default"
if test "x$ac_cv_header_iconv_h" = xyes; then :
@@ -5652,7 +5660,7 @@ DBUSDIR=""
DBUS_NOTIFIER=""
DBUS_NOTIFIERLIBS=""
if test "x$enable_dbus" != xno -a "x$PKGCONFIG" != x; then
if test "x$enable_dbus" != xno -a "x$PKGCONFIG" != x -a "x$uname" != xDarwin; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for DBUS" >&5
$as_echo_n "checking for DBUS... " >&6; }
if $PKGCONFIG --exists dbus-1; then
@@ -7624,7 +7632,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_KRB5CONFIG="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -7667,7 +7675,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_ac_pt_KRB5CONFIG="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -8193,6 +8201,11 @@ fi
fi
if test $uversion -ge 150; then
$as_echo "#define HAVE_SSLSETENABLEDCIPHERS 1" >>confdefs.h
fi
fi
fi
@@ -8216,7 +8229,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_LIBGNUTLSCONFIG="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -8259,7 +8272,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_ac_pt_LIBGNUTLSCONFIG="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -8314,7 +8327,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_LIBGCRYPTCONFIG="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -8357,7 +8370,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_ac_pt_LIBGCRYPTCONFIG="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -8918,8 +8931,6 @@ _ACEOF
esac
rm -rf conftest*
fi
fi
@@ -9011,7 +9022,7 @@ DNSSD_BACKEND=""
IPPFIND_BIN=""
IPPFIND_MAN=""
if test "x$PKGCONFIG" != x -a x$enable_avahi != xno; then
if test "x$PKGCONFIG" != x -a x$enable_avahi != xno -a x$uname != xDarwin; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Avahi" >&5
$as_echo_n "checking for Avahi... " >&6; }
if $PKGCONFIG --exists avahi-client; then
@@ -9167,21 +9178,44 @@ if test x$enable_systemd != xno; then
as_fn_error $? "Need pkg-config to enable systemd support." "$LINENO" 5
fi
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for libsystemd-daemon" >&5
$as_echo_n "checking for libsystemd-daemon... " >&6; }
if $PKGCONFIG --exists libsystemd-daemon; then
have_systemd=no
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for libsystemd" >&5
$as_echo_n "checking for libsystemd... " >&6; }
if $PKGCONFIG --exists libsystemd; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
ONDEMANDFLAGS=`$PKGCONFIG --cflags libsystemd-daemon`
ONDEMANDLIBS=`$PKGCONFIG --libs libsystemd-daemon`
have_systemd=yes
ONDEMANDFLAGS=`$PKGCONFIG --cflags libsystemd`
ONDEMANDLIBS=`$PKGCONFIG --libs libsystemd`
elif $PKGCONFIG --exists libsystemd-daemon; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes - legacy" >&5
$as_echo "yes - legacy" >&6; }
have_systemd=yes
ONDEMANDFLAGS=`$PKGCONFIG --cflags libsystemd-daemon`
ONDEMANDLIBS=`$PKGCONFIG --libs libsystemd-daemon`
if $PKGCONFIG --exists libsystemd-journal; then
ONDEMANDFLAGS="$ONDEMANDFLAGS `$PKGCONFIG --cflags libsystemd-journal`"
ONDEMANDLIBS="$ONDEMANDLIBS `$PKGCONFIG --libs libsystemd-journal`"
fi
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
if test $have_systemd = yes; then
$as_echo "#define HAVE_SYSTEMD 1" >>confdefs.h
ac_fn_c_check_header_mongrel "$LINENO" "systemd/sd-journal.h" "ac_cv_header_systemd_sd_journal_h" "$ac_includes_default"
if test "x$ac_cv_header_systemd_sd_journal_h" = xyes; then :
$as_echo "#define HAVE_SYSTEMD_SD_JOURNAL_H 1" >>confdefs.h
fi
if test "x$SYSTEMD_DIR" = x; then
SYSTEMD_DIR="`$PKGCONFIG --variable=systemdsystemunitdir systemd`"
fi
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
fi
fi
@@ -9446,10 +9480,9 @@ cat >>confdefs.h <<_ACEOF
_ACEOF
# Check whether --with-page_logging was given.
if test "${with_page_logging+set}" = set; then :
withval=$with_page_logging;
# Check whether --enable-page_logging was given.
if test "${enable_page_logging+set}" = set; then :
enableval=$enable_page_logging;
fi
if test "x$enable_page_logging" = xyes; then
@@ -9917,7 +9950,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_JAVA="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -9980,7 +10013,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_PERL="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -10043,7 +10076,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_PHPCGI="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -10084,7 +10117,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_PHP="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -10152,7 +10185,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -10212,7 +10245,7 @@ fi
ac_config_files="$ac_config_files Makedefs conf/cups-files.conf conf/cupsd.conf conf/mime.convs conf/pam.std conf/snmp.conf cups-config data/testprint desktop/cups.desktop doc/index.html man/client.conf.man man/cups-files.conf.man man/cups-lpd.man man/cups-snmp.man man/cupsaddsmb.man man/cupsd.conf.man man/cupsd.man man/lpoptions.man scheduler/cups-lpd.xinetd scheduler/cups.sh scheduler/cups.xml scheduler/org.cups.cups-lpd.plist scheduler/org.cups.cups-lpdAT.service scheduler/org.cups.cupsd.path scheduler/org.cups.cupsd.service scheduler/org.cups.cupsd.socket templates/header.tmpl packaging/cups.list $LANGFILES"
ac_config_files="$ac_config_files Makedefs conf/cups-files.conf conf/cupsd.conf conf/mime.convs conf/pam.std conf/snmp.conf cups-config desktop/cups.desktop doc/index.html man/client.conf.man man/cups-files.conf.man man/cups-lpd.man man/cups-snmp.man man/cupsaddsmb.man man/cupsd.conf.man man/cupsd.man man/lpoptions.man scheduler/cups-lpd.xinetd scheduler/cups.sh scheduler/cups.xml scheduler/org.cups.cups-lpd.plist scheduler/org.cups.cups-lpdAT.service scheduler/org.cups.cupsd.path scheduler/org.cups.cupsd.service scheduler/org.cups.cupsd.socket templates/header.tmpl packaging/cups.list $LANGFILES"
cat >confcache <<\_ACEOF
# This file is a shell script that caches the results of configure
@@ -10621,16 +10654,16 @@ if (echo >conf$$.file) 2>/dev/null; then
# ... but there are two gotchas:
# 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
# 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
# In both cases, we have to default to `cp -pR'.
# In both cases, we have to default to `cp -p'.
ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
as_ln_s='cp -pR'
as_ln_s='cp -p'
elif ln conf$$.file conf$$ 2>/dev/null; then
as_ln_s=ln
else
as_ln_s='cp -pR'
as_ln_s='cp -p'
fi
else
as_ln_s='cp -pR'
as_ln_s='cp -p'
fi
rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
rmdir conf$$.dir 2>/dev/null
@@ -10690,16 +10723,28 @@ else
as_mkdir_p=false
fi
# as_fn_executable_p FILE
# -----------------------
# Test if FILE is an executable regular file.
as_fn_executable_p ()
{
test -f "$1" && test -x "$1"
} # as_fn_executable_p
as_test_x='test -x'
as_executable_p=as_fn_executable_p
if test -x / >/dev/null 2>&1; then
as_test_x='test -x'
else
if ls -dL / >/dev/null 2>&1; then
as_ls_L_option=L
else
as_ls_L_option=
fi
as_test_x='
eval sh -c '\''
if test -d "$1"; then
test -d "$1/.";
else
case $1 in #(
-*)set "./$1";;
esac;
case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
???[sx]*):;;*)false;;esac;fi
'\'' sh
'
fi
as_executable_p=$as_test_x
# Sed expression to map a string onto a valid CPP name.
as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
@@ -10720,8 +10765,8 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
This file was extended by $as_me, which was
generated by GNU Autoconf 2.69. Invocation command line was
This file was extended by CUPS $as_me 2.1.3, which was
generated by GNU Autoconf 2.68. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
CONFIG_HEADERS = $CONFIG_HEADERS
@@ -10776,17 +10821,18 @@ $config_files
Configuration headers:
$config_headers
Report bugs to the package provider."
Report bugs to <https://www.cups.org/str.php>.
CUPS home page: <https://www.cups.org/>."
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
config.status
configured by $0, generated by GNU Autoconf 2.69,
CUPS config.status 2.1.3
configured by $0, generated by GNU Autoconf 2.68,
with options \\"\$ac_cs_config\\"
Copyright (C) 2012 Free Software Foundation, Inc.
Copyright (C) 2010 Free Software Foundation, Inc.
This config.status script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it."
@@ -10875,7 +10921,7 @@ fi
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
if \$ac_cs_recheck; then
set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
shift
\$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
CONFIG_SHELL='$SHELL'
@@ -10912,7 +10958,6 @@ do
"conf/pam.std") CONFIG_FILES="$CONFIG_FILES conf/pam.std" ;;
"conf/snmp.conf") CONFIG_FILES="$CONFIG_FILES conf/snmp.conf" ;;
"cups-config") CONFIG_FILES="$CONFIG_FILES cups-config" ;;
"data/testprint") CONFIG_FILES="$CONFIG_FILES data/testprint" ;;
"desktop/cups.desktop") CONFIG_FILES="$CONFIG_FILES desktop/cups.desktop" ;;
"doc/index.html") CONFIG_FILES="$CONFIG_FILES doc/index.html" ;;
"man/client.conf.man") CONFIG_FILES="$CONFIG_FILES man/client.conf.man" ;;
+8 -5
Ver Arquivo
@@ -1,9 +1,9 @@
dnl
dnl "$Id: configure.ac 12222 2014-10-21 11:55:01Z msweet $"
dnl "$Id: configure.ac 13031 2016-01-04 14:43:04Z msweet $"
dnl
dnl Configuration script for CUPS.
dnl
dnl Copyright 2007-2014 by Apple Inc.
dnl Copyright 2007-2016 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
@@ -13,7 +13,11 @@ dnl which should have been included with this file. If this file is
dnl file is missing or damaged, see the license at "http://www.cups.org/".
dnl
AC_INIT(cups/cups.h)
dnl We need at least autoconf 2.60...
AC_PREREQ(2.60)
dnl Package name and version...
AC_INIT([CUPS], [2.1.3], [https://www.cups.org/str.php], [cups], [https://www.cups.org/])
sinclude(config-scripts/cups-opsys.m4)
sinclude(config-scripts/cups-common.m4)
@@ -66,7 +70,6 @@ AC_OUTPUT(Makedefs
conf/pam.std
conf/snmp.conf
cups-config
data/testprint
desktop/cups.desktop
doc/index.html
man/client.conf.man
@@ -92,5 +95,5 @@ AC_OUTPUT(Makedefs
chmod +x cups-config
dnl
dnl End of "$Id: configure.ac 12222 2014-10-21 11:55:01Z msweet $".
dnl End of "$Id: configure.ac 13031 2016-01-04 14:43:04Z msweet $".
dnl
+17 -4
Ver Arquivo
@@ -1,5 +1,5 @@
#
# "$Id: Makefile 12032 2014-07-15 20:37:32Z msweet $"
# "$Id: Makefile 12850 2015-08-27 19:29:06Z msweet $"
#
# API library Makefile for CUPS.
#
@@ -83,6 +83,7 @@ LIBOBJS = \
TESTOBJS = \
testadmin.o \
testarray.o \
testcache.o \
testconflicts.o \
testcups.o \
testdest.o \
@@ -94,7 +95,8 @@ TESTOBJS = \
testlang.o \
testppd.o \
testpwg.o \
testsnmp.o
testsnmp.o \
tlscheck.o
OBJS = \
$(LIBOBJS) \
$(TESTOBJS)
@@ -161,7 +163,8 @@ UNITTARGETS = \
testoptions \
testppd \
testpwg \
testsnmp
testsnmp \
tlscheck
TARGETS = \
$(LIBTARGETS)
@@ -539,6 +542,16 @@ testsnmp: testsnmp.o $(LIBCUPSSTATIC)
$(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) $(COMMONLIBS) $(LIBZ)
#
# tlscheck (dependency on static CUPS library is intentional)
#
tlscheck: tlscheck.o $(LIBCUPSSTATIC)
echo Linking $@...
$(CC) $(ARCHFLAGS) $(LDFLAGS) -o $@ tlscheck.o $(LIBCUPSSTATIC) \
$(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) $(COMMONLIBS) $(LIBZ)
#
# Automatic API help files...
#
@@ -665,5 +678,5 @@ tls.o: tls-darwin.c tls-gnutls.c tls-sspi.c
#
# End of "$Id: Makefile 12032 2014-07-15 20:37:32Z msweet $".
# End of "$Id: Makefile 12850 2015-08-27 19:29:06Z msweet $".
#
+47 -4
Ver Arquivo
@@ -1,9 +1,9 @@
/*
* "$Id: adminutil.c 11598 2014-02-18 18:58:19Z msweet $"
* "$Id: adminutil.c 12945 2015-10-26 19:46:02Z msweet $"
*
* Administration utility API definitions for CUPS.
*
* Copyright 2007-2014 by Apple Inc.
* Copyright 2007-2015 by Apple Inc.
* Copyright 2001-2007 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -1175,6 +1175,7 @@ cupsAdminSetServerSettings(
in_cancel_job, /* In a cancel-job section? */
in_admin_location, /* In the /admin location? */
in_conf_location, /* In the /admin/conf location? */
in_log_location, /* In the /admin/log location? */
in_root_location; /* In the / location? */
const char *val; /* Setting value */
int share_printers, /* Share local printers */
@@ -1188,6 +1189,7 @@ cupsAdminSetServerSettings(
wrote_loglevel, /* Wrote the LogLevel line? */
wrote_admin_location, /* Wrote the /admin location? */
wrote_conf_location, /* Wrote the /admin/conf location? */
wrote_log_location, /* Wrote the /admin/log location? */
wrote_root_location; /* Wrote the / location? */
int indent; /* Indentation */
int cupsd_num_settings; /* New number of settings */
@@ -1401,12 +1403,14 @@ cupsAdminSetServerSettings(
in_conf_location = 0;
in_default_policy = 0;
in_location = 0;
in_log_location = 0;
in_policy = 0;
in_root_location = 0;
linenum = 0;
wrote_admin_location = 0;
wrote_browsing = 0;
wrote_conf_location = 0;
wrote_log_location = 0;
wrote_loglevel = 0;
wrote_policy = 0;
wrote_port_listen = 0;
@@ -1550,8 +1554,10 @@ cupsAdminSetServerSettings(
indent += 2;
if (!strcmp(value, "/admin"))
in_admin_location = 1;
if (!strcmp(value, "/admin/conf"))
else if (!strcmp(value, "/admin/conf"))
in_conf_location = 1;
else if (!strcmp(value, "/admin/log"))
in_log_location = 1;
else if (!strcmp(value, "/"))
in_root_location = 1;
@@ -1593,6 +1599,23 @@ cupsAdminSetServerSettings(
cupsFilePrintf(temp, " Allow %s\n",
remote_any > 0 ? "all" : "@LOCAL");
}
else if (in_log_location && remote_admin >= 0)
{
wrote_log_location = 1;
if (remote_admin)
cupsFilePuts(temp, " # Allow remote access to the log "
"files...\n");
else
cupsFilePuts(temp, " # Restrict access to the log "
"files...\n");
cupsFilePuts(temp, " Order allow,deny\n");
if (remote_admin)
cupsFilePrintf(temp, " Allow %s\n",
remote_any > 0 ? "all" : "@LOCAL");
}
else if (in_root_location &&
(remote_admin >= 0 || remote_any > 0 || share_printers >= 0))
{
@@ -1619,6 +1642,7 @@ cupsAdminSetServerSettings(
in_admin_location = 0;
in_conf_location = 0;
in_log_location = 0;
in_root_location = 0;
cupsFilePuts(temp, "</Location>\n");
@@ -1867,6 +1891,25 @@ cupsAdminSetServerSettings(
cupsFilePuts(temp, "</Location>\n");
}
if (!wrote_log_location && remote_admin >= 0)
{
if (remote_admin)
cupsFilePuts(temp,
"# Allow remote access to the log files...\n");
else
cupsFilePuts(temp, "# Restrict access to the log files...\n");
cupsFilePuts(temp, "<Location /admin/log>\n"
" AuthType Default\n"
" Require user @SYSTEM\n"
" Order allow,deny\n");
if (remote_admin)
cupsFilePrintf(temp, " Allow %s\n", remote_any > 0 ? "all" : "@LOCAL");
cupsFilePuts(temp, "</Location>\n");
}
if (!wrote_policy && user_cancel_any >= 0)
{
cupsFilePuts(temp, "<Policy default>\n"
@@ -2326,5 +2369,5 @@ write_option(cups_file_t *dstfp, /* I - PPD file */
/*
* End of "$Id: adminutil.c 11598 2014-02-18 18:58:19Z msweet $".
* End of "$Id: adminutil.c 12945 2015-10-26 19:46:02Z msweet $".
*/
+10 -24
Ver Arquivo
@@ -1,22 +1,16 @@
/*
* "$Id: attr.c 10996 2013-05-29 11:51:34Z msweet $"
* "$Id: attr.c 12867 2015-09-13 23:49:19Z msweet $"
*
* PPD model-specific attribute routines for CUPS.
* PPD model-specific attribute routines for CUPS.
*
* Copyright 2007-2012 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products.
* Copyright 2007-2015 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
* which should have been included with this file. If this file is
* file is missing or damaged, see the license at "http://www.cups.org/".
*
* Contents:
*
* ppdFindAttr() - Find the first matching attribute.
* ppdFindNextAttr() - Find the next matching attribute.
* _ppdNormalizeMakeAndModel() - Normalize a product/make-and-model string.
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
* which should have been included with this file. If this file is
* file is missing or damaged, see the license at "http://www.cups.org/".
*/
/*
@@ -229,14 +223,6 @@ _ppdNormalizeMakeAndModel(
snprintf(buffer, bufsize, "Canon %s", make_and_model);
}
else if (!_cups_strncasecmp(make_and_model, "primera", 7))
{
/*
* Fargo...
*/
snprintf(buffer, bufsize, "Fargo %s", make_and_model);
}
else if (!_cups_strncasecmp(make_and_model, "designjet", 9) ||
!_cups_strncasecmp(make_and_model, "deskjet", 7))
{
@@ -331,5 +317,5 @@ _ppdNormalizeMakeAndModel(
/*
* End of "$Id: attr.c 10996 2013-05-29 11:51:34Z msweet $".
* End of "$Id: attr.c 12867 2015-09-13 23:49:19Z msweet $".
*/
+3 -3
Ver Arquivo
@@ -1,5 +1,5 @@
/*
* "$Id: auth.c 12230 2014-10-21 13:55:24Z msweet $"
* "$Id: auth.c 12619 2015-05-06 21:00:19Z msweet $"
*
* Authentication functions for CUPS.
*
@@ -311,7 +311,7 @@ _cupsSetNegotiateAuthString(
* to use it...
*/
if (gss_init_sec_context == NULL)
if (&gss_init_sec_context == NULL)
{
DEBUG_puts("1_cupsSetNegotiateAuthString: Weak-linked GSSAPI/Kerberos "
"framework is not present");
@@ -876,5 +876,5 @@ cups_local_auth(http_t *http) /* I - HTTP connection to server */
/*
* End of "$Id: auth.c 12230 2014-10-21 13:55:24Z msweet $".
* End of "$Id: auth.c 12619 2015-05-06 21:00:19Z msweet $".
*/
+3 -3
Ver Arquivo
@@ -1,9 +1,9 @@
/*
* "$Id: cups-private.h 11851 2014-05-07 23:55:35Z msweet $"
* "$Id: cups-private.h 12441 2015-01-29 14:42:32Z msweet $"
*
* Private definitions for CUPS.
*
* Copyright 2007-2013 by Apple Inc.
* Copyright 2007-2015 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
@@ -281,5 +281,5 @@ extern char *_cupsUserDefault(char *name, size_t namesize);
#endif /* !_CUPS_CUPS_PRIVATE_H_ */
/*
* End of "$Id: cups-private.h 11851 2014-05-07 23:55:35Z msweet $".
* End of "$Id: cups-private.h 12441 2015-01-29 14:42:32Z msweet $".
*/
+19 -11
Ver Arquivo
@@ -1,9 +1,9 @@
/*
* "$Id: cups.h 12761 2015-06-24 20:10:19Z msweet $"
* "$Id: cups.h 13031 2016-01-04 14:43:04Z msweet $"
*
* API definitions for CUPS.
*
* Copyright 2007-2015 by Apple Inc.
* Copyright 2007-2016 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -35,6 +35,15 @@ typedef off_t ssize_t; /* @private@ */
# include "language.h"
# include "pwg.h"
/*
* Define _PPD_DEPRECATED to silence the warnings about PPD functions being
* deprecated...
*/
# ifndef _PPD_DEPRECATED
# define _PPD_DEPRECATED _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.")
# endif /* !_PPD_DEPRECATED */
/*
* C++ magic...
@@ -49,10 +58,10 @@ extern "C" {
* Constants...
*/
# define CUPS_VERSION 2.0004
# define CUPS_VERSION 2.0103
# define CUPS_VERSION_MAJOR 2
# define CUPS_VERSION_MINOR 0
# define CUPS_VERSION_PATCH 4
# define CUPS_VERSION_MINOR 1
# define CUPS_VERSION_PATCH 3
# define CUPS_BC_FD 3
/* Back-channel file descriptor for
@@ -241,6 +250,7 @@ enum cups_ptype_e /* Printer type/capability bit
* @since CUPS 1.4/OS X 10.6@ */
CUPS_PRINTER_MFP = 0x4000000, /* Printer with scanning capabilities
* @since CUPS 1.4/OS X 10.6@ */
CUPS_PRINTER_3D = 0x8000000, /* 3D Printing @since CUPS 2.1@ */
CUPS_PRINTER_OPTIONS = 0x6fffc /* ~(CLASS | REMOTE | IMPLICIT |
* DEFAULT | FAX | REJECTING | DELETE |
* NOT_SHARED | AUTHENTICATED |
@@ -354,8 +364,7 @@ extern int cupsGetClasses(char ***classes) _CUPS_DEPRECATED_MSG("Use cupsGetDes
extern const char *cupsGetDefault(void);
extern int cupsGetJobs(cups_job_t **jobs, const char *name,
int myjobs, int whichjobs);
extern const char *cupsGetPPD(const char *name)
_CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo instead.");
extern const char *cupsGetPPD(const char *name) _PPD_DEPRECATED;
extern int cupsGetPrinters(char ***printers) _CUPS_DEPRECATED_MSG("Use cupsGetDests instead.");
extern ipp_status_t cupsLastError(void);
extern int cupsPrintFile(const char *name, const char *filename,
@@ -413,8 +422,7 @@ extern int cupsGetDests2(http_t *http, cups_dest_t **dests)
extern int cupsGetJobs2(http_t *http, cups_job_t **jobs,
const char *name, int myjobs,
int whichjobs) _CUPS_API_1_1_21;
extern const char *cupsGetPPD2(http_t *http, const char *name)
_CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo instead.");
extern const char *cupsGetPPD2(http_t *http, const char *name) _PPD_DEPRECATED;
extern int cupsPrintFile2(http_t *http, const char *name,
const char *filename,
const char *title, int num_options,
@@ -479,7 +487,7 @@ extern const char *cupsGetPassword2(const char *prompt, http_t *http,
const char *resource) _CUPS_API_1_4;
extern http_status_t cupsGetPPD3(http_t *http, const char *name,
time_t *modtime, char *buffer,
size_t bufsize) _CUPS_API_1_4;
size_t bufsize) _PPD_DEPRECATED;
extern ipp_t *cupsGetResponse(http_t *http,
const char *resource) _CUPS_API_1_4;
extern ssize_t cupsReadResponseData(http_t *http, char *buffer,
@@ -628,5 +636,5 @@ extern int cupsSetServerCredentials(const char *path, const char *common_name,
#endif /* !_CUPS_CUPS_H_ */
/*
* End of "$Id: cups.h 12761 2015-06-24 20:10:19Z msweet $".
* End of "$Id: cups.h 13031 2016-01-04 14:43:04Z msweet $".
*/
+253 -251
Ver Arquivo
@@ -1,9 +1,9 @@
/*
* "$Id: debug.c 12328 2014-12-09 20:38:47Z msweet $"
* "$Id: debug.c 12928 2015-10-23 21:31:58Z msweet $"
*
* Debugging functions for CUPS.
*
* Copyright 2008-2014 by Apple Inc.
* Copyright 2008-2015 by Apple Inc.
*
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
@@ -82,14 +82,258 @@ debug_thread_id(void)
/*
* 'debug_vsnprintf()' - Format a string into a fixed size buffer.
* '_cups_debug_printf()' - Write a formatted line to the log.
*/
static ssize_t /* O - Number of bytes formatted */
debug_vsnprintf(char *buffer, /* O - Output buffer */
size_t bufsize, /* O - Size of output buffer */
const char *format, /* I - printf-style format string */
va_list ap) /* I - Pointer to additional arguments */
void DLLExport
_cups_debug_printf(const char *format, /* I - Printf-style format string */
...) /* I - Additional arguments as needed */
{
va_list ap; /* Pointer to arguments */
struct timeval curtime; /* Current time */
char buffer[2048]; /* Output buffer */
ssize_t bytes; /* Number of bytes in buffer */
int level; /* Log level in message */
/*
* See if we need to do any logging...
*/
if (!debug_init)
_cups_debug_set(getenv("CUPS_DEBUG_LOG"), getenv("CUPS_DEBUG_LEVEL"),
getenv("CUPS_DEBUG_FILTER"), 0);
if (_cups_debug_fd < 0)
return;
/*
* Filter as needed...
*/
if (isdigit(format[0]))
level = *format++ - '0';
else
level = 0;
if (level > _cups_debug_level)
return;
if (debug_filter)
{
int result; /* Filter result */
_cupsMutexLock(&debug_init_mutex);
result = regexec(debug_filter, format, 0, NULL, 0);
_cupsMutexUnlock(&debug_init_mutex);
if (result)
return;
}
/*
* Format the message...
*/
gettimeofday(&curtime, NULL);
snprintf(buffer, sizeof(buffer), "T%03d %02d:%02d:%02d.%03d ",
debug_thread_id(), (int)((curtime.tv_sec / 3600) % 24),
(int)((curtime.tv_sec / 60) % 60),
(int)(curtime.tv_sec % 60), (int)(curtime.tv_usec / 1000));
va_start(ap, format);
bytes = _cups_safe_vsnprintf(buffer + 19, sizeof(buffer) - 20, format, ap) + 19;
va_end(ap);
if ((size_t)bytes >= (sizeof(buffer) - 1))
{
buffer[sizeof(buffer) - 2] = '\n';
bytes = sizeof(buffer) - 1;
}
else if (buffer[bytes - 1] != '\n')
{
buffer[bytes++] = '\n';
buffer[bytes] = '\0';
}
/*
* Write it out...
*/
_cupsMutexLock(&debug_log_mutex);
write(_cups_debug_fd, buffer, (size_t)bytes);
_cupsMutexUnlock(&debug_log_mutex);
}
/*
* '_cups_debug_puts()' - Write a single line to the log.
*/
void DLLExport
_cups_debug_puts(const char *s) /* I - String to output */
{
struct timeval curtime; /* Current time */
char buffer[2048]; /* Output buffer */
ssize_t bytes; /* Number of bytes in buffer */
int level; /* Log level in message */
/*
* See if we need to do any logging...
*/
if (!debug_init)
_cups_debug_set(getenv("CUPS_DEBUG_LOG"), getenv("CUPS_DEBUG_LEVEL"),
getenv("CUPS_DEBUG_FILTER"), 0);
if (_cups_debug_fd < 0)
return;
/*
* Filter as needed...
*/
if (isdigit(s[0]))
level = *s++ - '0';
else
level = 0;
if (level > _cups_debug_level)
return;
if (debug_filter)
{
int result; /* Filter result */
_cupsMutexLock(&debug_init_mutex);
result = regexec(debug_filter, s, 0, NULL, 0);
_cupsMutexUnlock(&debug_init_mutex);
if (result)
return;
}
/*
* Format the message...
*/
gettimeofday(&curtime, NULL);
bytes = snprintf(buffer, sizeof(buffer), "T%03d %02d:%02d:%02d.%03d %s",
debug_thread_id(), (int)((curtime.tv_sec / 3600) % 24),
(int)((curtime.tv_sec / 60) % 60),
(int)(curtime.tv_sec % 60), (int)(curtime.tv_usec / 1000),
s);
if ((size_t)bytes >= (sizeof(buffer) - 1))
{
buffer[sizeof(buffer) - 2] = '\n';
bytes = sizeof(buffer) - 1;
}
else if (buffer[bytes - 1] != '\n')
{
buffer[bytes++] = '\n';
buffer[bytes] = '\0';
}
/*
* Write it out...
*/
_cupsMutexLock(&debug_log_mutex);
write(_cups_debug_fd, buffer, (size_t)bytes);
_cupsMutexUnlock(&debug_log_mutex);
}
/*
* '_cups_debug_set()' - Enable or disable debug logging.
*/
void DLLExport
_cups_debug_set(const char *logfile, /* I - Log file or NULL */
const char *level, /* I - Log level or NULL */
const char *filter, /* I - Filter string or NULL */
int force) /* I - Force initialization */
{
_cupsMutexLock(&debug_init_mutex);
if (!debug_init || force)
{
/*
* Restore debug settings to defaults...
*/
if (_cups_debug_fd != -1)
{
close(_cups_debug_fd);
_cups_debug_fd = -1;
}
if (debug_filter)
{
regfree((regex_t *)debug_filter);
debug_filter = NULL;
}
_cups_debug_level = 1;
/*
* Open logs, set log levels, etc.
*/
if (!logfile)
_cups_debug_fd = -1;
else if (!strcmp(logfile, "-"))
_cups_debug_fd = 2;
else
{
char buffer[1024]; /* Filename buffer */
snprintf(buffer, sizeof(buffer), logfile, getpid());
if (buffer[0] == '+')
_cups_debug_fd = open(buffer + 1, O_WRONLY | O_APPEND | O_CREAT, 0644);
else
_cups_debug_fd = open(buffer, O_WRONLY | O_TRUNC | O_CREAT, 0644);
}
if (level)
_cups_debug_level = atoi(level);
if (filter)
{
if ((debug_filter = (regex_t *)calloc(1, sizeof(regex_t))) == NULL)
fputs("Unable to allocate memory for CUPS_DEBUG_FILTER - results not "
"filtered!\n", stderr);
else if (regcomp(debug_filter, filter, REG_EXTENDED))
{
fputs("Bad regular expression in CUPS_DEBUG_FILTER - results not "
"filtered!\n", stderr);
free(debug_filter);
debug_filter = NULL;
}
}
debug_init = 1;
}
_cupsMutexUnlock(&debug_init_mutex);
}
#endif /* DEBUG */
/*
* '_cups_safe_vsnprintf()' - Format a string into a fixed size buffer,
* quoting special characters.
*/
ssize_t /* O - Number of bytes formatted */
_cups_safe_vsnprintf(
char *buffer, /* O - Output buffer */
size_t bufsize, /* O - Size of output buffer */
const char *format, /* I - printf-style format string */
va_list ap) /* I - Pointer to additional arguments */
{
char *bufptr, /* Pointer to position in buffer */
*bufend, /* Pointer to end of buffer */
@@ -401,247 +645,5 @@ debug_vsnprintf(char *buffer, /* O - Output buffer */
/*
* '_cups_debug_printf()' - Write a formatted line to the log.
*/
void DLLExport
_cups_debug_printf(const char *format, /* I - Printf-style format string */
...) /* I - Additional arguments as needed */
{
va_list ap; /* Pointer to arguments */
struct timeval curtime; /* Current time */
char buffer[2048]; /* Output buffer */
ssize_t bytes; /* Number of bytes in buffer */
int level; /* Log level in message */
/*
* See if we need to do any logging...
*/
if (!debug_init)
_cups_debug_set(getenv("CUPS_DEBUG_LOG"), getenv("CUPS_DEBUG_LEVEL"),
getenv("CUPS_DEBUG_FILTER"), 0);
if (_cups_debug_fd < 0)
return;
/*
* Filter as needed...
*/
if (isdigit(format[0]))
level = *format++ - '0';
else
level = 0;
if (level > _cups_debug_level)
return;
if (debug_filter)
{
int result; /* Filter result */
_cupsMutexLock(&debug_init_mutex);
result = regexec(debug_filter, format, 0, NULL, 0);
_cupsMutexUnlock(&debug_init_mutex);
if (result)
return;
}
/*
* Format the message...
*/
gettimeofday(&curtime, NULL);
snprintf(buffer, sizeof(buffer), "T%03d %02d:%02d:%02d.%03d ",
debug_thread_id(), (int)((curtime.tv_sec / 3600) % 24),
(int)((curtime.tv_sec / 60) % 60),
(int)(curtime.tv_sec % 60), (int)(curtime.tv_usec / 1000));
va_start(ap, format);
bytes = debug_vsnprintf(buffer + 19, sizeof(buffer) - 20, format, ap) + 19;
va_end(ap);
if ((size_t)bytes >= (sizeof(buffer) - 1))
{
buffer[sizeof(buffer) - 2] = '\n';
bytes = sizeof(buffer) - 1;
}
else if (buffer[bytes - 1] != '\n')
{
buffer[bytes++] = '\n';
buffer[bytes] = '\0';
}
/*
* Write it out...
*/
_cupsMutexLock(&debug_log_mutex);
write(_cups_debug_fd, buffer, (size_t)bytes);
_cupsMutexUnlock(&debug_log_mutex);
}
/*
* '_cups_debug_puts()' - Write a single line to the log.
*/
void DLLExport
_cups_debug_puts(const char *s) /* I - String to output */
{
struct timeval curtime; /* Current time */
char buffer[2048]; /* Output buffer */
ssize_t bytes; /* Number of bytes in buffer */
int level; /* Log level in message */
/*
* See if we need to do any logging...
*/
if (!debug_init)
_cups_debug_set(getenv("CUPS_DEBUG_LOG"), getenv("CUPS_DEBUG_LEVEL"),
getenv("CUPS_DEBUG_FILTER"), 0);
if (_cups_debug_fd < 0)
return;
/*
* Filter as needed...
*/
if (isdigit(s[0]))
level = *s++ - '0';
else
level = 0;
if (level > _cups_debug_level)
return;
if (debug_filter)
{
int result; /* Filter result */
_cupsMutexLock(&debug_init_mutex);
result = regexec(debug_filter, s, 0, NULL, 0);
_cupsMutexUnlock(&debug_init_mutex);
if (result)
return;
}
/*
* Format the message...
*/
gettimeofday(&curtime, NULL);
bytes = snprintf(buffer, sizeof(buffer), "T%03d %02d:%02d:%02d.%03d %s",
debug_thread_id(), (int)((curtime.tv_sec / 3600) % 24),
(int)((curtime.tv_sec / 60) % 60),
(int)(curtime.tv_sec % 60), (int)(curtime.tv_usec / 1000),
s);
if ((size_t)bytes >= (sizeof(buffer) - 1))
{
buffer[sizeof(buffer) - 2] = '\n';
bytes = sizeof(buffer) - 1;
}
else if (buffer[bytes - 1] != '\n')
{
buffer[bytes++] = '\n';
buffer[bytes] = '\0';
}
/*
* Write it out...
*/
_cupsMutexLock(&debug_log_mutex);
write(_cups_debug_fd, buffer, (size_t)bytes);
_cupsMutexUnlock(&debug_log_mutex);
}
/*
* '_cups_debug_set()' - Enable or disable debug logging.
*/
void DLLExport
_cups_debug_set(const char *logfile, /* I - Log file or NULL */
const char *level, /* I - Log level or NULL */
const char *filter, /* I - Filter string or NULL */
int force) /* I - Force initialization */
{
_cupsMutexLock(&debug_init_mutex);
if (!debug_init || force)
{
/*
* Restore debug settings to defaults...
*/
if (_cups_debug_fd != -1)
{
close(_cups_debug_fd);
_cups_debug_fd = -1;
}
if (debug_filter)
{
regfree((regex_t *)debug_filter);
debug_filter = NULL;
}
_cups_debug_level = 1;
/*
* Open logs, set log levels, etc.
*/
if (!logfile)
_cups_debug_fd = -1;
else if (!strcmp(logfile, "-"))
_cups_debug_fd = 2;
else
{
char buffer[1024]; /* Filename buffer */
snprintf(buffer, sizeof(buffer), logfile, getpid());
if (buffer[0] == '+')
_cups_debug_fd = open(buffer + 1, O_WRONLY | O_APPEND | O_CREAT, 0644);
else
_cups_debug_fd = open(buffer, O_WRONLY | O_TRUNC | O_CREAT, 0644);
}
if (level)
_cups_debug_level = atoi(level);
if (filter)
{
if ((debug_filter = (regex_t *)calloc(1, sizeof(regex_t))) == NULL)
fputs("Unable to allocate memory for CUPS_DEBUG_FILTER - results not "
"filtered!\n", stderr);
else if (regcomp(debug_filter, filter, REG_EXTENDED))
{
fputs("Bad regular expression in CUPS_DEBUG_FILTER - results not "
"filtered!\n", stderr);
free(debug_filter);
debug_filter = NULL;
}
}
debug_init = 1;
}
_cupsMutexUnlock(&debug_init_mutex);
}
#endif /* DEBUG */
/*
* End of "$Id: debug.c 12328 2014-12-09 20:38:47Z msweet $".
* End of "$Id: debug.c 12928 2015-10-23 21:31:58Z msweet $".
*/
+11 -12
Ver Arquivo
@@ -1,9 +1,9 @@
/*
* "$Id: dest.c 12665 2015-05-25 15:08:55Z msweet $"
* "$Id: dest.c 13075 2016-01-29 21:14:05Z msweet $"
*
* User-defined destination (and option) support for CUPS.
*
* Copyright 2007-2015 by Apple Inc.
* Copyright 2007-2016 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -122,7 +122,7 @@ typedef struct _cups_dnssd_resolve_s /* Data for resolving URI */
#ifdef __APPLE__
static CFArrayRef appleCopyLocations(void);
static CFStringRef appleCopyNetwork(void);
static char *appleGetPaperSize(char *name, int namesize);
static char *appleGetPaperSize(char *name, size_t namesize);
static CFStringRef appleGetPrinter(CFArrayRef locations,
CFStringRef network, CFIndex *locindex);
#endif /* __APPLE__ */
@@ -871,7 +871,7 @@ cupsEnumDests(
*/
num_dests = _cupsGetDests(CUPS_HTTP_DEFAULT, IPP_OP_CUPS_GET_PRINTERS, NULL,
&dests, type, mask);
&dests, type, mask | CUPS_PRINTER_3D);
if ((user_default = _cupsUserDefault(name, sizeof(name))) != NULL)
defprinter = name;
@@ -1743,7 +1743,7 @@ cupsGetDests2(http_t *http, /* I - Connection to server or @code CUPS_HTTP_
*/
*dests = (cups_dest_t *)0;
num_dests = _cupsGetDests(http, IPP_OP_CUPS_GET_PRINTERS, NULL, dests, 0, 0);
num_dests = _cupsGetDests(http, IPP_OP_CUPS_GET_PRINTERS, NULL, dests, 0, CUPS_PRINTER_3D);
if (cupsLastError() >= IPP_STATUS_REDIRECTION_OTHER_SITE)
{
@@ -1960,7 +1960,7 @@ cupsGetNamedDest(http_t *http, /* I - Connection to server or @code CUPS_HTT
* Get the printer's attributes...
*/
if (!_cupsGetDests(http, op, name, &dest, 0, 0))
if (!_cupsGetDests(http, op, name, &dest, 0, CUPS_PRINTER_3D))
return (NULL);
if (instance)
@@ -2136,7 +2136,7 @@ cupsSetDests2(http_t *http, /* I - Connection to server or @code CUPS_HTTP_
* Get the server destinations...
*/
num_temps = _cupsGetDests(http, IPP_OP_CUPS_GET_PRINTERS, NULL, &temps, 0, 0);
num_temps = _cupsGetDests(http, IPP_OP_CUPS_GET_PRINTERS, NULL, &temps, 0, CUPS_PRINTER_3D);
if (cupsLastError() >= IPP_STATUS_REDIRECTION_OTHER_SITE)
{
@@ -2491,8 +2491,8 @@ appleCopyNetwork(void)
*/
static char * /* O - Default paper size */
appleGetPaperSize(char *name, /* I - Paper size name buffer */
int namesize) /* I - Size of buffer */
appleGetPaperSize(char *name, /* I - Paper size name buffer */
size_t namesize) /* I - Size of buffer */
{
CFStringRef defaultPaperID; /* Default paper ID */
pwg_media_t *pwgmedia; /* PWG media size */
@@ -2501,8 +2501,7 @@ appleGetPaperSize(char *name, /* I - Paper size name buffer */
defaultPaperID = _cupsAppleCopyDefaultPaperID();
if (!defaultPaperID ||
CFGetTypeID(defaultPaperID) != CFStringGetTypeID() ||
!CFStringGetCString(defaultPaperID, name, namesize,
kCFStringEncodingUTF8))
!CFStringGetCString(defaultPaperID, name, (CFIndex)namesize, kCFStringEncodingUTF8))
name[0] = '\0';
else if ((pwgmedia = pwgMediaForLegacy(name)) != NULL)
strlcpy(name, pwgmedia->pwg, namesize);
@@ -3943,5 +3942,5 @@ cups_make_string(
/*
* End of "$Id: dest.c 12665 2015-05-25 15:08:55Z msweet $".
* End of "$Id: dest.c 13075 2016-01-29 21:14:05Z msweet $".
*/
+10 -6
Ver Arquivo
@@ -1,9 +1,9 @@
/*
* "$Id: encode.c 11733 2014-03-25 18:01:41Z msweet $"
* "$Id: encode.c 13064 2016-01-27 16:05:09Z msweet $"
*
* Option encoding routines for CUPS.
*
* Copyright 2007-2014 by Apple Inc.
* Copyright 2007-2016 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -117,6 +117,9 @@ static const _ipp_option_t ipp_options[] =
{ 0, "copies", IPP_TAG_INTEGER, IPP_TAG_JOB,
IPP_TAG_DOCUMENT },
{ 0, "copies-default", IPP_TAG_INTEGER, IPP_TAG_PRINTER },
{ 0, "date-time-at-completed",IPP_TAG_DATE, IPP_TAG_ZERO }, /* never send as option */
{ 0, "date-time-at-creation", IPP_TAG_DATE, IPP_TAG_ZERO }, /* never send as option */
{ 0, "date-time-at-processing",IPP_TAG_DATE, IPP_TAG_ZERO }, /* never send as option */
{ 0, "device-uri", IPP_TAG_URI, IPP_TAG_PRINTER },
{ 1, "document-copies", IPP_TAG_RANGE, IPP_TAG_JOB,
IPP_TAG_DOCUMENT,
@@ -274,6 +277,7 @@ static const _ipp_option_t ipp_options[] =
{ 0, "print-quality-default", IPP_TAG_ENUM, IPP_TAG_PRINTER },
{ 1, "printer-commands", IPP_TAG_KEYWORD, IPP_TAG_PRINTER },
{ 0, "printer-error-policy", IPP_TAG_NAME, IPP_TAG_PRINTER },
{ 0, "printer-geo-location", IPP_TAG_URI, IPP_TAG_PRINTER },
{ 0, "printer-info", IPP_TAG_TEXT, IPP_TAG_PRINTER },
{ 0, "printer-is-accepting-jobs", IPP_TAG_BOOLEAN, IPP_TAG_PRINTER },
{ 0, "printer-is-shared", IPP_TAG_BOOLEAN, IPP_TAG_PRINTER },
@@ -538,14 +542,13 @@ cupsEncodeOptions2(
else if (*sep == ',' && !quote)
count ++;
else if (*sep == '\\' && sep[1])
sep ++;
sep += 2;
}
}
else
count = 1;
DEBUG_printf(("2cupsEncodeOptions2: option=\"%s\", count=%d",
option->name, count));
DEBUG_printf(("2cupsEncodeOptions2: option=\"%s\", value=\"%s\", count=%d", option->name, option->value, count));
/*
* Allocate memory for the attribute values...
@@ -629,6 +632,7 @@ cupsEncodeOptions2(
* Skip quoted character...
*/
memmove(sep, sep + 1, strlen(sep));
sep ++;
}
}
@@ -849,5 +853,5 @@ compare_ipp_options(_ipp_option_t *a, /* I - First option */
/*
* End of "$Id: encode.c 11733 2014-03-25 18:01:41Z msweet $".
* End of "$Id: encode.c 13064 2016-01-27 16:05:09Z msweet $".
*/
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
/*
* "$Id: file.c 12642 2015-05-19 15:04:47Z msweet $"
* "$Id: file.c 12641 2015-05-19 15:04:39Z msweet $"
*
* File functions for CUPS.
*
@@ -2752,5 +2752,5 @@ cups_write(cups_file_t *fp, /* I - CUPS file */
/*
* End of "$Id: file.c 12642 2015-05-19 15:04:47Z msweet $".
* End of "$Id: file.c 12641 2015-05-19 15:04:39Z msweet $".
*/
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
/*
* "$Id: globals.c 12481 2015-02-03 12:45:14Z msweet $"
* "$Id: globals.c 12480 2015-02-03 12:36:34Z msweet $"
*
* Global variable access routines for CUPS.
*
@@ -394,5 +394,5 @@ cups_globals_init(void)
/*
* End of "$Id: globals.c 12481 2015-02-03 12:45:14Z msweet $".
* End of "$Id: globals.c 12480 2015-02-03 12:36:34Z msweet $".
*/
+6 -2
Ver Arquivo
@@ -1,5 +1,5 @@
/*
* "$Id: http-private.h 12419 2015-01-22 15:51:20Z msweet $"
* "$Id: http-private.h 12645 2015-05-20 01:20:52Z msweet $"
*
* Private HTTP definitions for CUPS.
*
@@ -126,6 +126,7 @@ extern CFAbsoluteTime SecCertificateNotValidAfter(SecCertificateRef certificate)
# ifndef WIN32
# include <net/if.h>
# include <resolv.h>
# ifdef HAVE_GETIFADDRS
# include <ifaddrs.h>
# else
@@ -161,8 +162,11 @@ extern "C" {
#define _HTTP_RESOLVE_FQDN 2 /* Resolve to a FQDN */
#define _HTTP_RESOLVE_FAXOUT 4 /* Resolve FaxOut service? */
#define _HTTP_TLS_NONE 0 /* No TLS options */
#define _HTTP_TLS_ALLOW_RC4 1 /* Allow RC4 cipher suites */
#define _HTTP_TLS_ALLOW_SSL3 2 /* Allow SSL 3.0 */
#define _HTTP_TLS_ALLOW_DH 4 /* Allow DH/DHE key negotiation */
#define _HTTP_TLS_DENY_TLS10 16 /* Deny TLS 1.0 */
/*
@@ -438,5 +442,5 @@ extern int _httpWait(http_t *http, int msec, int usessl);
#endif /* !_CUPS_HTTP_PRIVATE_H_ */
/*
* End of "$Id: http-private.h 12419 2015-01-22 15:51:20Z msweet $".
* End of "$Id: http-private.h 12645 2015-05-20 01:20:52Z msweet $".
*/
+10 -4
Ver Arquivo
@@ -1,9 +1,9 @@
/*
* "$Id: http-support.c 12124 2014-08-28 15:37:22Z msweet $"
* "$Id: http-support.c 12970 2015-11-13 20:02:51Z msweet $"
*
* HTTP support routines for CUPS.
*
* Copyright 2007-2014 by Apple Inc.
* Copyright 2007-2015 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
@@ -1233,6 +1233,12 @@ httpSeparateURI(
*port = (int)strtol(uri + 1, (char **)&uri, 10);
if (*port <= 0 || *port > 65535)
{
*port = 0;
return (HTTP_URI_STATUS_BAD_PORT);
}
if (*uri != '/' && *uri)
{
*port = 0;
@@ -1722,7 +1728,7 @@ _httpResolveURI(
while (time(NULL) < end_time)
{
if (options & _HTTP_RESOLVE_STDERR)
_cupsLangPrintFilter(stderr, "INFO", _("Looking for printer."));
_cupsLangPrintFilter(stderr, "INFO", _("Looking for printer..."));
if (cb && !(*cb)(context))
{
@@ -2544,5 +2550,5 @@ http_resolve_cb(
/*
* End of "$Id: http-support.c 12124 2014-08-28 15:37:22Z msweet $".
* End of "$Id: http-support.c 12970 2015-11-13 20:02:51Z msweet $".
*/
+4 -4
Ver Arquivo
@@ -1,5 +1,5 @@
/*
* "$Id: http.c 12334 2014-12-09 21:01:55Z msweet $"
* "$Id: http.c 12970 2015-11-13 20:02:51Z msweet $"
*
* HTTP routines for CUPS.
*
@@ -898,7 +898,7 @@ httpGetContentEncoding(http_t *http) /* I - HTTP connection */
*/
const char * /* O - Cookie data or NULL */
httpGetCookie(http_t *http) /* I - HTTP connecion */
httpGetCookie(http_t *http) /* I - HTTP connection */
{
return (http ? http->cookie : NULL);
}
@@ -3003,7 +3003,7 @@ _httpUpdate(http_t *http, /* I - HTTP connection */
*status = http->status;
return (0);
}
else if (!strncmp(line, "HTTP/", 5))
else if (!strncmp(line, "HTTP/", 5) && http->mode == _HTTP_MODE_CLIENT)
{
/*
* Got the beginning of a response...
@@ -4850,5 +4850,5 @@ http_write_chunk(http_t *http, /* I - HTTP connection */
/*
* End of "$Id: http.c 12334 2014-12-09 21:01:55Z msweet $".
* End of "$Id: http.c 12970 2015-11-13 20:02:51Z msweet $".
*/
+3 -3
Ver Arquivo
@@ -1,5 +1,5 @@
/*
* "$Id: http.h 12094 2014-08-19 12:15:11Z msweet $"
* "$Id: http.h 12848 2015-08-26 18:51:57Z msweet $"
*
* Hyper-Text Transport Protocol definitions for CUPS.
*
@@ -246,7 +246,7 @@ typedef enum http_status_e /**** HTTP status codes ****/
HTTP_STATUS_NOT_AUTHORITATIVE, /* Information isn't authoritative */
HTTP_STATUS_NO_CONTENT, /* Successful command, no new data */
HTTP_STATUS_RESET_CONTENT, /* Content was reset/recreated */
HTTP_STATUS_PARTIAL_CONTENT, /* Only a partial file was recieved/sent */
HTTP_STATUS_PARTIAL_CONTENT, /* Only a partial file was received/sent */
HTTP_STATUS_MULTIPLE_CHOICES = 300, /* Multiple files match request */
HTTP_STATUS_MOVED_PERMANENTLY, /* Document has moved permanently */
@@ -656,5 +656,5 @@ extern const char *httpURIStatusString(http_uri_status_t status) _CUPS_API_2_0;
#endif /* !_CUPS_HTTP_H_ */
/*
* End of "$Id: http.h 12094 2014-08-19 12:15:11Z msweet $".
* End of "$Id: http.h 12848 2015-08-26 18:51:57Z msweet $".
*/
+18 -4
Ver Arquivo
@@ -1,5 +1,5 @@
/*
* "$Id: ipp-support.c 12194 2014-10-02 18:44:36Z msweet $"
* "$Id: ipp-support.c 12666 2015-05-25 19:38:09Z msweet $"
*
* Internet Printing Protocol support functions for CUPS.
*
@@ -195,7 +195,7 @@ static const char * const ipp_std_ops[] =
"Suspend-Current-Job",
"Resume-Job",
/* 0x0030 - 0x003e */
/* 0x0030 - 0x003f */
"Promote-Job",
"Schedule-Job-After",
"0x0032",
@@ -210,7 +210,21 @@ static const char * const ipp_std_ops[] =
"Close-Job",
"Identify-Printer",
"Validate-Document",
"Send-Hardcopy-Document"
"Send-Hardcopy-Document",
"Acknowledge-Document",
/* 0x0040 - 0x004a */
"Acknowledge-Identify-Printer",
"Acknowledge-Job",
"Fetch-Document",
"Fetch-Job",
"Get-Output-Device-Attributes",
"Update-Active-Jobs",
"Deregister-Output-Device",
"Update-Document-Status",
"Update-Job-Status",
"Update-Output-Device-Attributes",
"Get-Next-Document-Data"
},
* const ipp_cups_ops[] =
{
@@ -2271,5 +2285,5 @@ ipp_col_string(ipp_t *col, /* I - Collection attribute */
/*
* End of "$Id: ipp-support.c 12194 2014-10-02 18:44:36Z msweet $".
* End of "$Id: ipp-support.c 12666 2015-05-25 19:38:09Z msweet $".
*/
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
/*
* "$Id: ipp.c 12469 2015-02-01 04:51:08Z msweet $"
* "$Id: ipp.c 12468 2015-02-01 04:50:43Z msweet $"
*
* Internet Printing Protocol functions for CUPS.
*
@@ -7062,5 +7062,5 @@ ipp_write_file(int *fd, /* I - File descriptor */
/*
* End of "$Id: ipp.c 12469 2015-02-01 04:51:08Z msweet $".
* End of "$Id: ipp.c 12468 2015-02-01 04:50:43Z msweet $".
*/
+40 -27
Ver Arquivo
@@ -1,5 +1,5 @@
/*
* "$Id: ipp.h 11806 2014-04-09 16:12:27Z msweet $"
* "$Id: ipp.h 12666 2015-05-25 19:38:09Z msweet $"
*
* Internet Printing Protocol definitions for CUPS.
*
@@ -246,11 +246,11 @@ typedef enum ipp_op_e /**** IPP operations ****/
IPP_OP_CUPS_INVALID = -1, /* Invalid operation name for @link ippOpValue@ */
IPP_OP_CUPS_NONE = 0, /* No operation @private@ */
IPP_OP_PRINT_JOB = 0x0002, /* Print a single file */
IPP_OP_PRINT_URI, /* Print a single URL @private@ */
IPP_OP_PRINT_URI, /* Print a single URL */
IPP_OP_VALIDATE_JOB, /* Validate job options */
IPP_OP_CREATE_JOB, /* Create an empty print job */
IPP_OP_SEND_DOCUMENT, /* Add a file to a job */
IPP_OP_SEND_URI, /* Add a URL to a job @private@ */
IPP_OP_SEND_URI, /* Add a URL to a job */
IPP_OP_CANCEL_JOB, /* Cancel a job */
IPP_OP_GET_JOB_ATTRIBUTES, /* Get job attributes */
IPP_OP_GET_JOBS, /* Get a list of jobs */
@@ -261,7 +261,7 @@ typedef enum ipp_op_e /**** IPP operations ****/
IPP_OP_PAUSE_PRINTER = 0x0010, /* Stop a printer */
IPP_OP_RESUME_PRINTER, /* Start a printer */
IPP_OP_PURGE_JOBS, /* Cancel all jobs */
IPP_OP_SET_PRINTER_ATTRIBUTES, /* Set printer attributes @private@ */
IPP_OP_SET_PRINTER_ATTRIBUTES, /* Set printer attributes */
IPP_OP_SET_JOB_ATTRIBUTES, /* Set job attributes */
IPP_OP_GET_PRINTER_SUPPORTED_VALUES, /* Get supported attribute values */
IPP_OP_CREATE_PRINTER_SUBSCRIPTIONS, /* Create one or more printer subscriptions @since CUPS 1.2/OS X 10.5@ */
@@ -279,32 +279,45 @@ typedef enum ipp_op_e /**** IPP operations ****/
IPP_OP_ENABLE_PRINTER, /* Start a printer */
IPP_OP_DISABLE_PRINTER, /* Stop a printer */
IPP_OP_PAUSE_PRINTER_AFTER_CURRENT_JOB,
/* Stop printer after the current job @private@ */
IPP_OP_HOLD_NEW_JOBS, /* Hold new jobs @private@ */
IPP_OP_RELEASE_HELD_NEW_JOBS, /* Release new jobs @private@ */
IPP_OP_DEACTIVATE_PRINTER, /* Stop a printer @private@ */
IPP_OP_ACTIVATE_PRINTER, /* Start a printer @private@ */
IPP_OP_RESTART_PRINTER, /* Restart a printer @private@ */
IPP_OP_SHUTDOWN_PRINTER, /* Turn a printer off @private@ */
IPP_OP_STARTUP_PRINTER, /* Turn a printer on @private@ */
IPP_OP_REPROCESS_JOB, /* Reprint a job @private@ */
IPP_OP_CANCEL_CURRENT_JOB, /* Cancel the current job @private@ */
IPP_OP_SUSPEND_CURRENT_JOB, /* Suspend the current job @private@ */
IPP_OP_RESUME_JOB, /* Resume the current job @private@ */
IPP_OP_PROMOTE_JOB, /* Promote a job to print sooner @private@ */
IPP_OP_SCHEDULE_JOB_AFTER, /* Schedule a job to print after another @private@ */
IPP_OP_CANCEL_DOCUMENT = 0x0033, /* Cancel-Document @private@ */
IPP_OP_GET_DOCUMENT_ATTRIBUTES, /* Get-Document-Attributes @private@ */
IPP_OP_GET_DOCUMENTS, /* Get-Documents @private@ */
IPP_OP_DELETE_DOCUMENT, /* Delete-Document @private@ */
IPP_OP_SET_DOCUMENT_ATTRIBUTES, /* Set-Document-Attributes @private@ */
/* Stop printer after the current job */
IPP_OP_HOLD_NEW_JOBS, /* Hold new jobs */
IPP_OP_RELEASE_HELD_NEW_JOBS, /* Release new jobs */
IPP_OP_DEACTIVATE_PRINTER, /* Stop a printer */
IPP_OP_ACTIVATE_PRINTER, /* Start a printer */
IPP_OP_RESTART_PRINTER, /* Restart a printer */
IPP_OP_SHUTDOWN_PRINTER, /* Turn a printer off */
IPP_OP_STARTUP_PRINTER, /* Turn a printer on */
IPP_OP_REPROCESS_JOB, /* Reprint a job */
IPP_OP_CANCEL_CURRENT_JOB, /* Cancel the current job */
IPP_OP_SUSPEND_CURRENT_JOB, /* Suspend the current job */
IPP_OP_RESUME_JOB, /* Resume the current job */
IPP_OP_PROMOTE_JOB, /* Promote a job to print sooner */
IPP_OP_SCHEDULE_JOB_AFTER, /* Schedule a job to print after another */
IPP_OP_CANCEL_DOCUMENT = 0x0033, /* Cancel-Document */
IPP_OP_GET_DOCUMENT_ATTRIBUTES, /* Get-Document-Attributes */
IPP_OP_GET_DOCUMENTS, /* Get-Documents */
IPP_OP_DELETE_DOCUMENT, /* Delete-Document */
IPP_OP_SET_DOCUMENT_ATTRIBUTES, /* Set-Document-Attributes */
IPP_OP_CANCEL_JOBS, /* Cancel-Jobs */
IPP_OP_CANCEL_MY_JOBS, /* Cancel-My-Jobs */
IPP_OP_RESUBMIT_JOB, /* Resubmit-Job */
IPP_OP_CLOSE_JOB, /* Close-Job */
IPP_OP_IDENTIFY_PRINTER, /* Identify-Printer @private@ */
IPP_OP_VALIDATE_DOCUMENT, /* Validate-Document @private@ */
IPP_OP_SEND_HARDCOPY_DOCUMENT, /* Send-Hardcopy-Document @private@ */
IPP_OP_IDENTIFY_PRINTER, /* Identify-Printer */
IPP_OP_VALIDATE_DOCUMENT, /* Validate-Document */
IPP_OP_SEND_HARDCOPY_DOCUMENT, /* Send-Hardcopy-Document */
IPP_OP_ACKNOWLEDGE_DOCUMENT, /* Acknowledge-Document */
IPP_OP_ACKNOWLEDGE_IDENTIFY_PRINTER, /* Acknowledge-Identify-Printer */
IPP_OP_ACKNOWLEDGE_JOB, /* Acknowledge-Job */
IPP_OP_FETCH_DOCUMENT, /* Fetch-Document */
IPP_OP_FETCH_JOB, /* Fetch-Job */
IPP_OP_GET_OUTPUT_DEVICE_ATTRIBUTES, /* Get-Output-Device-Attributes */
IPP_OP_UPDATE_ACTIVE_JOBS, /* Update-Active-Jobs */
IPP_OP_DEREGISTER_OUTPUT_DEVICE, /* Deregister-Output-Device */
IPP_OP_UPDATE_DOCUMENT_STATUS, /* Update-Document-Status */
IPP_OP_UPDATE_JOB_STATUS, /* Update-Job-Status */
IPP_OP_UPDATE_OUTPUT_DEVICE_ATTRIBUTES,
/* Update-Output-Device-Attributes */
IPP_OP_GET_NEXT_DOCUMENT_DATA, /* Get-Next-Document-Data */
IPP_OP_PRIVATE = 0x4000, /* Reserved @private@ */
IPP_OP_CUPS_GET_DEFAULT, /* Get the default printer */
@@ -1021,5 +1034,5 @@ extern const char *ippStateString(ipp_state_t state) _CUPS_API_2_0;
#endif /* !_CUPS_IPP_H_ */
/*
* End of "$Id: ipp.h 11806 2014-04-09 16:12:27Z msweet $".
* End of "$Id: ipp.h 12666 2015-05-25 19:38:09Z msweet $".
*/
+42 -6
Ver Arquivo
@@ -1,9 +1,9 @@
/*
* "$Id: language.c 12266 2014-11-19 16:05:28Z msweet $"
* "$Id: language.c 12841 2015-08-10 17:07:30Z msweet $"
*
* I18N/language support for CUPS.
*
* Copyright 2007-2014 by Apple Inc.
* Copyright 2007-2015 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -1180,7 +1180,7 @@ appleLangDefault(void)
* See if we have an Info.plist file in the bundle...
*/
CFStringGetCString(cfpath, path,sizeof(path), kCFStringEncodingUTF8);
CFStringGetCString(cfpath, path, sizeof(path), kCFStringEncodingUTF8);
DEBUG_printf(("3appleLangDefault: Got a resource URL (\"%s\")", path));
strlcat(path, "Contents/Info.plist", sizeof(path));
@@ -1211,7 +1211,6 @@ appleLangDefault(void)
if (localizationList)
{
#ifdef DEBUG
if (CFGetTypeID(localizationList) == CFArrayGetTypeID())
DEBUG_printf(("3appleLangDefault: Got localizationList, %d entries.",
@@ -1287,6 +1286,8 @@ appleLangDefault(void)
strlcpy(cg->language, "en_US.UTF-8", sizeof(cg->language));
}
}
else
DEBUG_printf(("3appleLangDefault: Using previous locale \"%s\".", cg->language));
/*
* Return the cached locale...
@@ -1305,7 +1306,8 @@ static cups_array_t * /* O - Message catalog */
appleMessageLoad(const char *locale) /* I - Locale ID */
{
char filename[1024], /* Path to cups.strings file */
applelang[256]; /* Apple language ID */
applelang[256], /* Apple language ID */
baselang[3]; /* Base language */
CFURLRef url; /* URL to cups.strings file */
CFReadStreamRef stream = NULL; /* File stream */
CFPropertyListRef plist = NULL; /* Localization file */
@@ -1323,6 +1325,18 @@ appleMessageLoad(const char *locale) /* I - Locale ID */
snprintf(filename, sizeof(filename),
CUPS_BUNDLEDIR "/Resources/%s.lproj/cups.strings",
_cupsAppleLanguage(locale, applelang, sizeof(applelang)));
if (access(filename, 0))
{
/*
* <rdar://problem/22086642>
*
* Try with original locale string...
*/
snprintf(filename, sizeof(filename), CUPS_BUNDLEDIR "/Resources/%s.lproj/cups.strings", locale);
}
DEBUG_printf(("1appleMessageLoad: filename=\"%s\"", filename));
if (access(filename, 0))
@@ -1345,6 +1359,28 @@ appleMessageLoad(const char *locale) /* I - Locale ID */
locale = "Japanese";
else if (!strncmp(locale, "es", 2))
locale = "Spanish";
else if (!strcmp(locale, "zh_HK"))
{
/*
* <rdar://problem/22130168>
*
* Try zh_TW first, then zh... Sigh...
*/
if (!access(CUPS_BUNDLEDIR "/Resources/zh_TW.lproj/cups.strings", 0))
locale = "zh_TW";
else
locale = "zh";
}
else if (strstr(locale, "_") != NULL || strstr(locale, "-") != NULL)
{
/*
* Drop country code, just try language...
*/
strlcpy(baselang, locale, sizeof(baselang));
locale = baselang;
}
snprintf(filename, sizeof(filename),
CUPS_BUNDLEDIR "/Resources/%s.lproj/cups.strings", locale);
@@ -1588,5 +1624,5 @@ cups_unquote(char *d, /* O - Unquoted string */
/*
* End of "$Id: language.c 12266 2014-11-19 16:05:28Z msweet $".
* End of "$Id: language.c 12841 2015-08-10 17:07:30Z msweet $".
*/
+20 -5
Ver Arquivo
@@ -1,9 +1,9 @@
/*
* "$Id: localize.c 11698 2014-03-17 11:58:18Z msweet $"
* "$Id: localize.c 12834 2015-08-06 13:56:32Z msweet $"
*
* PPD localization routines for CUPS.
*
* Copyright 2007-2014 by Apple Inc.
* Copyright 2007-2015 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
@@ -664,8 +664,23 @@ _ppdLocalizedAttr(ppd_file_t *ppd, /* I - PPD file */
snprintf(lkeyword, sizeof(lkeyword), "%s.%s", ll_CC, keyword);
if ((attr = ppdFindAttr(ppd, lkeyword, spec)) == NULL)
{
snprintf(lkeyword, sizeof(lkeyword), "%2.2s.%s", ll_CC, keyword);
attr = ppdFindAttr(ppd, lkeyword, spec);
/*
* <rdar://problem/22130168>
*
* Hong Kong locale needs special handling... Sigh...
*/
if (!strcmp(ll_CC, "zh_HK"))
{
snprintf(lkeyword, sizeof(lkeyword), "zh_TW.%s", keyword);
attr = ppdFindAttr(ppd, lkeyword, spec);
}
if (!attr)
{
snprintf(lkeyword, sizeof(lkeyword), "%2.2s.%s", ll_CC, keyword);
attr = ppdFindAttr(ppd, lkeyword, spec);
}
if (!attr)
{
@@ -760,5 +775,5 @@ ppd_ll_CC(char *ll_CC, /* O - Country-specific locale name */
/*
* End of "$Id: localize.c 11698 2014-03-17 11:58:18Z msweet $".
* End of "$Id: localize.c 12834 2015-08-06 13:56:32Z msweet $".
*/
+9 -3
Ver Arquivo
@@ -1,5 +1,5 @@
/*
* "$Id: mark.c 11558 2014-02-06 18:33:34Z msweet $"
* "$Id: mark.c 12258 2014-11-19 12:38:44Z msweet $"
*
* Option marking routines for CUPS.
*
@@ -514,6 +514,12 @@ ppdMarkDefaults(ppd_file_t *ppd) /* I - PPD file record */
for (i = ppd->num_groups, g = ppd->groups; i > 0; i --, g ++)
ppd_defaults(ppd, g);
/*
* Finally, tag any conflicts (API compatibility) once at the end.
*/
ppdConflicts(ppd);
}
@@ -710,7 +716,7 @@ ppd_defaults(ppd_file_t *ppd, /* I - PPD file */
for (i = g->num_options, o = g->options; i > 0; i --, o ++)
if (_cups_strcasecmp(o->keyword, "PageRegion") != 0)
ppdMarkOption(ppd, o->keyword, o->defchoice);
ppd_mark_option(ppd, o->keyword, o->defchoice);
for (i = g->num_subgroups, sg = g->subgroups; i > 0; i --, sg ++)
ppd_defaults(ppd, sg);
@@ -1078,5 +1084,5 @@ ppd_mark_option(ppd_file_t *ppd, /* I - PPD file */
/*
* End of "$Id: mark.c 11558 2014-02-06 18:33:34Z msweet $".
* End of "$Id: mark.c 12258 2014-11-19 12:38:44Z msweet $".
*/
+1082 -2
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+19 -4
Ver Arquivo
@@ -1,9 +1,9 @@
/*
* "$Id: ppd-private.h 11558 2014-02-06 18:33:34Z msweet $"
* "$Id: ppd-private.h 12733 2015-06-12 01:21:05Z msweet $"
*
* Private PPD definitions for CUPS.
*
* Copyright 2007-2014 by Apple Inc.
* Copyright 2007-2015 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
@@ -49,7 +49,7 @@ extern "C" {
* Constants...
*/
# define _PPD_CACHE_VERSION 6 /* Version number in cache file */
# define _PPD_CACHE_VERSION 7 /* Version number in cache file */
/*
@@ -109,6 +109,14 @@ typedef struct _pwg_finishings_s /**** PWG finishings mapping data ****/
cups_option_t *options; /* Options to apply */
} _pwg_finishings_t;
typedef struct _pwg_material_s /**** PWG material mapping data ****/
{
char *key, /* material-key value */
*name; /* material-name value */
int num_props; /* Number of properties */
cups_option_t *props; /* Material properties */
} _pwg_material_t;
struct _ppd_cache_s /**** PPD cache and PWG conversion data ****/
{
int num_bins; /* Number of output bins */
@@ -148,6 +156,11 @@ struct _ppd_cache_s /**** PPD cache and PWG conversion data ****/
cups_array_t *mandatory; /* cupsMandatory value */
char *charge_info_uri; /* cupsChargeInfoURI value */
cups_array_t *support_files; /* Support files - ICC profiles, etc. */
char *cups_3d, /* cups3D value */
*cups_layer_order; /* cupsLayerOrder value */
int cups_accuracy[3]; /* cupsAccuracy value - x, y, and z in nanometers */
int cups_volume[3]; /* cupsVolume value - x, y, and z in millimeters */
cups_array_t *materials; /* cupsMaterial values */
};
@@ -155,6 +168,7 @@ struct _ppd_cache_s /**** PPD cache and PWG conversion data ****/
* Prototypes...
*/
extern int _cupsConvertOptions(ipp_t *request, ppd_file_t *ppd, _ppd_cache_t *pc, ipp_attribute_t *media_col_sup, ipp_attribute_t *doc_handling_sup, ipp_attribute_t *print_color_mode_sup, const char *user, const char *format, int copies, int num_options, cups_option_t *options);
extern _ppd_cache_t *_ppdCacheCreateWithFile(const char *filename,
ipp_t **attrs);
extern _ppd_cache_t *_ppdCacheCreateWithPPD(ppd_file_t *ppd);
@@ -187,6 +201,7 @@ extern const char *_ppdCacheGetType(_ppd_cache_t *pc,
const char *media_type);
extern int _ppdCacheWriteFile(_ppd_cache_t *pc,
const char *filename, ipp_t *attrs);
extern char *_ppdCreateFromIPP(char *buffer, size_t bufsize, ipp_t *response);
extern void _ppdFreeLanguages(cups_array_t *languages);
extern cups_encoding_t _ppdGetEncoding(const char *name);
extern cups_array_t *_ppdGetLanguages(ppd_file_t *ppd);
@@ -221,5 +236,5 @@ extern const char *_pwgPageSizeForMedia(pwg_media_t *media,
#endif /* !_CUPS_PPD_PRIVATE_H_ */
/*
* End of "$Id: ppd-private.h 11558 2014-02-06 18:33:34Z msweet $".
* End of "$Id: ppd-private.h 12733 2015-06-12 01:21:05Z msweet $".
*/
+19 -9
Ver Arquivo
@@ -1,9 +1,9 @@
/*
* "$Id: ppd.c 11558 2014-02-06 18:33:34Z msweet $"
* "$Id: ppd.c 12848 2015-08-26 18:51:57Z msweet $"
*
* PPD file routines for CUPS.
*
* Copyright 2007-2014 by Apple Inc.
* Copyright 2007-2015 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
@@ -283,7 +283,7 @@ ppdClose(ppd_file_t *ppd) /* I - PPD file record */
/*
* 'ppdErrorString()' - Returns the text assocated with a status.
* 'ppdErrorString()' - Returns the text associated with a status.
*
* @since CUPS 1.1.19/OS X 10.3@
*/
@@ -418,10 +418,10 @@ _ppdOpen(
char custom_name[PPD_MAX_NAME];
/* CustomFoo attribute name */
ppd_attr_t *custom_attr; /* CustomFoo attribute */
char ll[4], /* Language + '.' */
ll_CC[7]; /* Language + country + '.' */
size_t ll_len = 0, /* Language length */
ll_CC_len = 0; /* Language + country length */
char ll[7], /* Base language + '.' */
ll_CC[7]; /* Language w/country + '.' */
size_t ll_len = 0, /* Base language length */
ll_CC_len = 0; /* Language w/country length */
static const char * const ui_keywords[] =
{
#ifdef CUPS_USE_FULL_UI_KEYWORDS_LIST
@@ -519,7 +519,17 @@ _ppdOpen(
return (NULL);
snprintf(ll_CC, sizeof(ll_CC), "%s.", lang->language);
snprintf(ll, sizeof(ll), "%2.2s.", lang->language);
/*
* <rdar://problem/22130168>
*
* Need to use a different base language for some locales...
*/
if (!strcmp(lang->language, "zh_HK"))
strlcpy(ll, "zh_TW.", sizeof(ll));
else
snprintf(ll, sizeof(ll), "%2.2s.", lang->language);
ll_CC_len = strlen(ll_CC);
ll_len = strlen(ll);
@@ -3346,5 +3356,5 @@ ppd_update_filters(ppd_file_t *ppd,/* I - PPD file */
/*
* End of "$Id: ppd.c 11558 2014-02-06 18:33:34Z msweet $".
* End of "$Id: ppd.c 12848 2015-08-26 18:51:57Z msweet $".
*/
+4 -3
Ver Arquivo
@@ -1,9 +1,9 @@
/*
* "$Id: string-private.h 11889 2014-05-22 13:54:15Z msweet $"
* "$Id: string-private.h 12928 2015-10-23 21:31:58Z msweet $"
*
* Private string definitions for CUPS.
*
* Copyright 2007-2014 by Apple Inc.
* Copyright 2007-2015 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -147,6 +147,7 @@ extern int _cups_toupper(int ch);
* Prototypes...
*/
extern ssize_t _cups_safe_vsnprintf(char *, size_t, const char *, va_list);
extern void _cups_strcpy(char *dst, const char *src);
# ifndef HAVE_STRDUP
@@ -218,5 +219,5 @@ extern char *_cupsStrDate(char *buf, size_t bufsize, time_t timeval);
#endif /* !_CUPS_STRING_H_ */
/*
* End of "$Id: string-private.h 11889 2014-05-22 13:54:15Z msweet $".
* End of "$Id: string-private.h 12928 2015-10-23 21:31:58Z msweet $".
*/
+12 -3
Ver Arquivo
@@ -14,7 +14,7 @@
*%
*% Copyright 2007-2010 by Apple Inc.
*% Copyright 2002-2006 by Easy Software Products.
*%
*%
*% These coded instructions, statements, and computer programs are the
*% property of Apple Inc. and are protected by Federal copyright
*% law. Distribution and use rights are outlined in the file "LICENSE.txt"
@@ -22,7 +22,7 @@
*% file is missing or damaged, see the license at "http://www.cups.org/".
*FormatVersion: "4.3"
*FileVersion: "1.3"
*LanguageVersion: English
*LanguageVersion: English
*LanguageEncoding: ISOLatin1
*PCFileName: "TEST.PPD"
*Manufacturer: "ESP"
@@ -104,7 +104,7 @@
*fr_CA.PageRegion A4/French Canadian A4: ""
*fr_CA.PageRegion Env10/French Canadian #10 Envelope: ""
*DefaultImageableArea: Letter
*DefaultImageableArea: Letter
*ImageableArea Letter: "18 36 594 756"
*ImageableArea Letter.Banner: "18 0 594 792"
*ImageableArea Letter.Fullbleed: "0 0 612 792"
@@ -145,6 +145,15 @@
*MediaType Transparency/Transparency Film: "MediaType=Transparency"
*CloseUI: *MediaType
*OpenUI *OutputBin/Output Tray: PickOne
*OrderDependency: 25 AnySetup *OutputBin
*DefaultOutputBin: Tray1
*OutputBin Auto/Automatic Tray: "OutputBin=Auto"
*OutputBin Tray1/Tray 1: "OutputBin=Tray1"
*OutputBin Tray2/Tray 2: "OutputBin=Tray2"
*OutputBin MainTray/Main Tray: "OutputBin=MainTray"
*CloseUI: *OutputBin
*OpenUI *Duplex/2-Sided Printing: PickOne
*OrderDependency: 10 DocumentSetup *Duplex
*DefaultDuplex: None
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
/*
* "$Id: testfile.c 12578 2015-03-30 19:07:29Z msweet $"
* "$Id: testfile.c 12577 2015-03-30 19:07:17Z msweet $"
*
* File test program for CUPS.
*
@@ -825,5 +825,5 @@ read_write_tests(int compression) /* I - Use compression? */
/*
* End of "$Id: testfile.c 12578 2015-03-30 19:07:29Z msweet $".
* End of "$Id: testfile.c 12577 2015-03-30 19:07:17Z msweet $".
*/
+2 -3
Ver Arquivo
@@ -1,5 +1,5 @@
/*
* "$Id: testhttp.c 12028 2014-07-15 14:01:27Z msweet $"
* "$Id: testhttp.c 12678 2015-05-28 19:09:48Z msweet $"
*
* HTTP test program for CUPS.
*
@@ -645,7 +645,6 @@ main(int argc, /* I - Number of command-line arguments */
if (lcreds && cupsArrayCount(creds) == cupsArrayCount(lcreds))
{
int i;
http_credential_t *cred, *lcred;
for (i = 1, cred = (http_credential_t *)cupsArrayFirst(creds), lcred = (http_credential_t *)cupsArrayFirst(lcreds);
@@ -890,5 +889,5 @@ main(int argc, /* I - Number of command-line arguments */
/*
* End of "$Id: testhttp.c 12028 2014-07-15 14:01:27Z msweet $".
* End of "$Id: testhttp.c 12678 2015-05-28 19:09:48Z msweet $".
*/
+47 -5
Ver Arquivo
@@ -1,9 +1,9 @@
/*
* "$Id: testlang.c 10996 2013-05-29 11:51:34Z msweet $"
* "$Id: testlang.c 12841 2015-08-10 17:07:30Z msweet $"
*
* Localization test program for CUPS.
*
* Copyright 2007-2010 by Apple Inc.
* Copyright 2007-2015 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -50,8 +50,6 @@ main(int argc, /* I - Number of command-line arguments */
};
_cupsSetLocale(argv);
if (argc == 1)
{
language = cupsLangDefault();
@@ -61,8 +59,13 @@ main(int argc, /* I - Number of command-line arguments */
{
language = cupsLangGet(argv[1]);
language2 = cupsLangGet(argv[1]);
setenv("LANG", argv[1], 1);
setenv("SOFTWARE", "CUPS/" CUPS_SVERSION, 1);
}
_cupsSetLocale(argv);
if (language != language2)
{
errors ++;
@@ -105,10 +108,49 @@ main(int argc, /* I - Number of command-line arguments */
}
}
if (argc == 3)
{
ppd_file_t *ppd; /* PPD file */
ppd_option_t *option; /* PageSize option */
ppd_choice_t *choice; /* PageSize/Letter choice */
if ((ppd = ppdOpenFile(argv[2])) == NULL)
{
printf("Unable to open PPD file \"%s\".\n", argv[2]);
errors ++;
}
else
{
ppdLocalize(ppd);
if ((option = ppdFindOption(ppd, "PageSize")) == NULL)
{
puts("No PageSize option.");
errors ++;
}
else
{
printf("PageSize: %s\n", option->text);
if ((choice = ppdFindChoice(option, "Letter")) == NULL)
{
puts("No Letter PageSize choice.");
errors ++;
}
else
{
printf("Letter: %s\n", choice->text);
}
}
ppdClose(ppd);
}
}
return (errors > 0);
}
/*
* End of "$Id: testlang.c 10996 2013-05-29 11:51:34Z msweet $".
* End of "$Id: testlang.c 12841 2015-08-10 17:07:30Z msweet $".
*/
+82 -17
Ver Arquivo
@@ -1,21 +1,17 @@
/*
* "$Id: testoptions.c 1992 2010-03-24 14:32:08Z msweet $"
* "$Id: testoptions.c 13061 2016-01-26 21:31:40Z msweet $"
*
* Option test program for CUPS.
* Option unit test program for CUPS.
*
* Copyright 2008-2010 by Apple Inc.
* Copyright 2008-2016 by Apple Inc.
*
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
* which should have been included with this file. If this file is
* file is missing or damaged, see the license at "http://www.cups.org/".
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
* which should have been included with this file. If this file is
* file is missing or damaged, see the license at "http://www.cups.org/".
*
* This file is subject to the Apple OS-Developed Software exception.
*
* Contents:
*
* main() - Test option processing functions.
* This file is subject to the Apple OS-Developed Software exception.
*/
/*
@@ -37,6 +33,9 @@ main(int argc, /* I - Number of command-line arguments */
num_options; /* Number of options */
cups_option_t *options; /* Options */
const char *value; /* Value of an option */
ipp_t *request; /* IPP request */
ipp_attribute_t *attr; /* IPP attribute */
int count; /* Number of attributes */
if (argc == 1)
@@ -53,11 +52,12 @@ main(int argc, /* I - Number of command-line arguments */
"baz={param1=1 param2=2} "
"foobar=FOO\\ BAR "
"barfoo=barfoo "
"barfoo=\"\'BAR FOO\'\"", 0, &options);
"barfoo=\"\'BAR FOO\'\" "
"auth-info=user,pass\\\\,word\\\\\\\\", 0, &options);
if (num_options != 5)
if (num_options != 6)
{
printf("FAIL (num_options=%d, expected 5)\n", num_options);
printf("FAIL (num_options=%d, expected 6)\n", num_options);
status ++;
}
else if ((value = cupsGetOption("foo", num_options, options)) == NULL ||
@@ -91,6 +91,71 @@ main(int argc, /* I - Number of command-line arguments */
printf("FAIL (barfoo=\"%s\", expected \"\'BAR FOO\'\")\n", value);
status ++;
}
else if ((value = cupsGetOption("auth-info", num_options, options)) == NULL ||
strcmp(value, "user,pass\\,word\\\\"))
{
printf("FAIL (auth-info=\"%s\", expected \"user,pass\\,word\\\\\")\n", value);
status ++;
}
else
puts("PASS");
fputs("cupsEncodeOptions2: ", stdout);
request = ippNew();
ippSetOperation(request, IPP_OP_PRINT_JOB);
cupsEncodeOptions2(request, num_options, options, IPP_TAG_JOB);
for (count = 0, attr = ippFirstAttribute(request); attr; attr = ippNextAttribute(request), count ++);
if (count != 6)
{
printf("FAIL (%d attributes, expected 6)\n", count);
status ++;
}
else if ((attr = ippFindAttribute(request, "foo", IPP_TAG_ZERO)) == NULL)
{
puts("FAIL (Unable to find attribute \"foo\")");
status ++;
}
else if (ippGetValueTag(attr) != IPP_TAG_NAME)
{
printf("FAIL (\"foo\" of type %s, expected name)\n", ippTagString(ippGetValueTag(attr)));
status ++;
}
else if (ippGetCount(attr) != 1)
{
printf("FAIL (\"foo\" has %d values, expected 1)\n", (int)ippGetCount(attr));
status ++;
}
else if (strcmp(ippGetString(attr, 0, NULL), "1234"))
{
printf("FAIL (\"foo\" has value %s, expected 1234)\n", ippGetString(attr, 0, NULL));
status ++;
}
else if ((attr = ippFindAttribute(request, "auth-info", IPP_TAG_ZERO)) == NULL)
{
puts("FAIL (Unable to find attribute \"auth-info\")");
status ++;
}
else if (ippGetValueTag(attr) != IPP_TAG_TEXT)
{
printf("FAIL (\"auth-info\" of type %s, expected text)\n", ippTagString(ippGetValueTag(attr)));
status ++;
}
else if (ippGetCount(attr) != 2)
{
printf("FAIL (\"auth-info\" has %d values, expected 2)\n", (int)ippGetCount(attr));
status ++;
}
else if (strcmp(ippGetString(attr, 0, NULL), "user"))
{
printf("FAIL (\"auth-info\"[0] has value \"%s\", expected \"user\")\n", ippGetString(attr, 0, NULL));
status ++;
}
else if (strcmp(ippGetString(attr, 1, NULL), "pass,word\\"))
{
printf("FAIL (\"auth-info\"[1] has value \"%s\", expected \"pass,word\\\")\n", ippGetString(attr, 1, NULL));
status ++;
}
else
puts("PASS");
}
@@ -112,5 +177,5 @@ main(int argc, /* I - Number of command-line arguments */
/*
* End of "$Id: testoptions.c 1992 2010-03-24 14:32:08Z msweet $".
* End of "$Id: testoptions.c 13061 2016-01-26 21:31:40Z msweet $".
*/
+54 -3
Ver Arquivo
@@ -1,9 +1,9 @@
/*
* "$Id: testppd.c 12604 2015-05-06 01:43:05Z msweet $"
* "$Id: testppd.c 12603 2015-05-06 01:42:51Z msweet $"
*
* PPD test program for CUPS.
*
* Copyright 2007-2014 by Apple Inc.
* Copyright 2007-2015 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -51,6 +51,11 @@ static const char *default_code =
"%%EndFeature\n"
"} stopped cleartomark\n"
"[{\n"
"%%BeginFeature: *OutputBin Tray1\n"
"OutputBin=Tray1\n"
"%%EndFeature\n"
"} stopped cleartomark\n"
"[{\n"
"%%BeginFeature: *MediaType Plain\n"
"MediaType=Plain\n"
"%%EndFeature\n"
@@ -80,6 +85,11 @@ static const char *custom_code =
"%%EndFeature\n"
"} stopped cleartomark\n"
"[{\n"
"%%BeginFeature: *OutputBin Tray1\n"
"OutputBin=Tray1\n"
"%%EndFeature\n"
"} stopped cleartomark\n"
"[{\n"
"%%BeginFeature: *IntOption None\n"
"%%EndFeature\n"
"} stopped cleartomark\n"
@@ -853,6 +863,47 @@ main(int argc, /* I - Number of command-line arguments */
status ++;
}
}
else if (!strncmp(argv[1], "ipp://", 6) || !strncmp(argv[1], "ipps://", 7))
{
/*
* ipp://... or ipps://...
*/
http_t *http; /* Connection to printer */
ipp_t *request, /* Get-Printer-Attributes request */
*response; /* Get-Printer-Attributes response */
char scheme[32], /* URI scheme */
userpass[256], /* Username:password */
host[256], /* Hostname */
resource[256]; /* Resource path */
int port; /* Port number */
if (httpSeparateURI(HTTP_URI_CODING_ALL, argv[1], scheme, sizeof(scheme), userpass, sizeof(userpass), host, sizeof(host), &port, resource, sizeof(resource)) < HTTP_URI_STATUS_OK)
{
printf("Bad URI \"%s\".\n", argv[1]);
return (1);
}
http = httpConnect2(host, port, NULL, AF_UNSPEC, !strcmp(scheme, "ipps") ? HTTP_ENCRYPTION_ALWAYS : HTTP_ENCRYPTION_IF_REQUESTED, 1, 30000, NULL);
if (!http)
{
printf("Unable to connect to \"%s:%d\": %s\n", host, port, cupsLastErrorString());
return (1);
}
request = ippNewRequest(IPP_OP_GET_PRINTER_ATTRIBUTES);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri", NULL, argv[1]);
response = cupsDoRequest(http, request, resource);
if (_ppdCreateFromIPP(buffer, sizeof(buffer), response))
printf("Created PPD: %s\n", buffer);
else
puts("Unable to create PPD.");
ippDelete(response);
httpClose(http);
return (0);
}
else
{
const char *filename; /* PPD filename */
@@ -1119,5 +1170,5 @@ main(int argc, /* I - Number of command-line arguments */
/*
* End of "$Id: testppd.c 12604 2015-05-06 01:43:05Z msweet $".
* End of "$Id: testppd.c 12603 2015-05-06 01:42:51Z msweet $".
*/
+69 -16
Ver Arquivo
@@ -1,5 +1,5 @@
/*
* "$Id: tls-darwin.c 12481 2015-02-03 12:45:14Z msweet $"
* "$Id: tls-darwin.c 12675 2015-05-28 01:14:32Z msweet $"
*
* TLS support code for CUPS on OS X.
*
@@ -26,14 +26,6 @@
extern char **environ;
/*
* Test define - set to 1 to use SSLSetEnabledCiphers. Currently disabled (0)
* because of <rdar://problem/18707430>.
*/
#define USE_SET_ENABLED_CIPHERS 0
/*
* Local globals...
*/
@@ -49,8 +41,8 @@ static char *tls_keypath = NULL;
/* Server cert keychain path */
static _cups_mutex_t tls_mutex = _CUPS_MUTEX_INITIALIZER;
/* Mutex for keychain/certs */
static int tls_options = 0;/* Options for TLS connections */
#endif /* HAVE_SECKEYCHAINOPEN */
static int tls_options = -1;/* Options for TLS connections */
/*
@@ -1017,7 +1009,14 @@ _httpTLSStart(http_t *http) /* I - HTTP connection */
http_credential_t *credential; /* Credential data */
DEBUG_printf(("7_httpTLSStart(http=%p)", http));
DEBUG_printf(("3_httpTLSStart(http=%p)", http));
if (tls_options < 0)
{
DEBUG_puts("4_httpTLSStart: Setting defaults.");
_cupsSetDefaults();
DEBUG_printf(("4_httpTLSStart: tls_options=%x", tls_options));
}
#ifdef HAVE_SECKEYCHAINOPEN
if (http->mode == _HTTP_MODE_SERVER && !tls_keychain)
@@ -1061,11 +1060,20 @@ _httpTLSStart(http_t *http) /* I - HTTP connection */
if (!error)
{
error = SSLSetProtocolVersionMin(http->tls, (tls_options & _HTTP_TLS_ALLOW_SSL3) ? kSSLProtocol3 : kTLSProtocol1);
DEBUG_printf(("4_httpTLSStart: SSLSetProtocolVersionMin, error=%d", (int)error));
SSLProtocol minProtocol;
if (tls_options & _HTTP_TLS_DENY_TLS10)
minProtocol = kTLSProtocol11;
else if (tls_options & _HTTP_TLS_ALLOW_SSL3)
minProtocol = kSSLProtocol3;
else
minProtocol = kTLSProtocol1;
error = SSLSetProtocolVersionMin(http->tls, minProtocol);
DEBUG_printf(("4_httpTLSStart: SSLSetProtocolVersionMin(%d), error=%d", minProtocol, (int)error));
}
# if USE_SET_ENABLED_CIPHERS
# if HAVE_SSLSETENABLEDCIPHERS
if (!error)
{
SSLCipherSuite supported[100]; /* Supported cipher suites */
@@ -1130,6 +1138,7 @@ _httpTLSStart(http_t *http) /* I - HTTP connection */
case TLS_RSA_PSK_WITH_NULL_SHA256 :
case TLS_RSA_PSK_WITH_NULL_SHA384 :
case SSL_RSA_WITH_DES_CBC_MD5 :
DEBUG_printf(("4_httpTLSStart: Excluding insecure cipher suite %d", supported[i]));
break;
/* RC4 cipher suites that should only be used as a last resort */
@@ -1144,8 +1153,52 @@ _httpTLSStart(http_t *http) /* I - HTTP connection */
case TLS_RSA_PSK_WITH_RC4_128_SHA :
if (tls_options & _HTTP_TLS_ALLOW_RC4)
enabled[num_enabled ++] = supported[i];
else
DEBUG_printf(("4_httpTLSStart: Excluding RC4 cipher suite %d", supported[i]));
break;
/* DH/DHE cipher suites that are problematic with parameters < 1024 bits */
case TLS_DH_DSS_WITH_AES_128_CBC_SHA :
case TLS_DH_RSA_WITH_AES_128_CBC_SHA :
case TLS_DHE_DSS_WITH_AES_128_CBC_SHA :
case TLS_DHE_RSA_WITH_AES_128_CBC_SHA :
case TLS_DH_DSS_WITH_AES_256_CBC_SHA :
case TLS_DH_RSA_WITH_AES_256_CBC_SHA :
case TLS_DHE_DSS_WITH_AES_256_CBC_SHA :
case TLS_DHE_RSA_WITH_AES_256_CBC_SHA :
case TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA :
case TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA :
// case TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA :
case TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA :
case TLS_DH_DSS_WITH_AES_128_CBC_SHA256 :
case TLS_DH_RSA_WITH_AES_128_CBC_SHA256 :
case TLS_DHE_DSS_WITH_AES_128_CBC_SHA256 :
case TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 :
case TLS_DH_DSS_WITH_AES_256_CBC_SHA256 :
case TLS_DH_RSA_WITH_AES_256_CBC_SHA256 :
case TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 :
case TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 :
case TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA :
case TLS_DHE_PSK_WITH_AES_128_CBC_SHA :
case TLS_DHE_PSK_WITH_AES_256_CBC_SHA :
// case TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 :
// case TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 :
case TLS_DH_RSA_WITH_AES_128_GCM_SHA256 :
case TLS_DH_RSA_WITH_AES_256_GCM_SHA384 :
// case TLS_DHE_DSS_WITH_AES_128_GCM_SHA256 :
// case TLS_DHE_DSS_WITH_AES_256_GCM_SHA384 :
case TLS_DH_DSS_WITH_AES_128_GCM_SHA256 :
case TLS_DH_DSS_WITH_AES_256_GCM_SHA384 :
case TLS_DHE_PSK_WITH_AES_128_GCM_SHA256 :
case TLS_DHE_PSK_WITH_AES_256_GCM_SHA384 :
case TLS_DHE_PSK_WITH_AES_128_CBC_SHA256 :
case TLS_DHE_PSK_WITH_AES_256_CBC_SHA384 :
if (tls_options & _HTTP_TLS_ALLOW_DH)
enabled[num_enabled ++] = supported[i];
else
DEBUG_printf(("4_httpTLSStart: Excluding DH/DHE cipher suite %d", supported[i]));
break;
/* Anything else we'll assume is secure */
default :
enabled[num_enabled ++] = supported[i];
@@ -1157,7 +1210,7 @@ _httpTLSStart(http_t *http) /* I - HTTP connection */
error = SSLSetEnabledCiphers(http->tls, enabled, num_enabled);
}
}
#endif /* USE_SET_ENABLED_CIPHERS */
#endif /* HAVE_SSLSETENABLEDCIPHERS */
if (!error && http->mode == _HTTP_MODE_CLIENT)
{
@@ -1782,5 +1835,5 @@ http_cdsa_write(
/*
* End of "$Id: tls-darwin.c 12481 2015-02-03 12:45:14Z msweet $".
* End of "$Id: tls-darwin.c 12675 2015-05-28 01:14:32Z msweet $".
*/
+29 -20
Ver Arquivo
@@ -1,5 +1,5 @@
/*
* "$Id: tls-gnutls.c 12481 2015-02-03 12:45:14Z msweet $"
* "$Id: tls-gnutls.c 12670 2015-05-27 19:48:05Z msweet $"
*
* TLS support code for CUPS using GNU TLS.
*
@@ -36,7 +36,7 @@ static char *tls_keypath = NULL;
/* Server cert keychain path */
static _cups_mutex_t tls_mutex = _CUPS_MUTEX_INITIALIZER;
/* Mutex for keychain/certs */
static int tls_options = 0;/* Options for TLS connections */
static int tls_options = -1;/* Options for TLS connections */
/*
@@ -1028,9 +1028,18 @@ _httpTLSStart(http_t *http) /* I - Connection to server */
int status; /* Status of handshake */
gnutls_certificate_credentials_t *credentials;
/* TLS credentials */
char priority_string[1024];
/* Priority string */
DEBUG_printf(("7_httpTLSStart(http=%p)", http));
DEBUG_printf(("3_httpTLSStart(http=%p)", http));
if (tls_options < 0)
{
DEBUG_puts("4_httpTLSStart: Setting defaults.");
_cupsSetDefaults();
DEBUG_printf(("4_httpTLSStart: tls_options=%x", tls_options));
}
if (http->mode == _HTTP_MODE_SERVER && !tls_keypath)
{
@@ -1199,28 +1208,28 @@ _httpTLSStart(http_t *http) /* I - Connection to server */
return (-1);
}
#ifdef HAVE_GNUTLS_PRIORITY_SET_DIRECT
if (!tls_options)
gnutls_priority_set_direct(http->tls, "NORMAL:-ARCFOUR-128:+VERS-TLS-ALL:-VERS-SSL3.0", NULL);
else if ((tls_options & _HTTP_TLS_ALLOW_SSL3) && (tls_options & _HTTP_TLS_ALLOW_RC4))
gnutls_priority_set_direct(http->tls, "NORMAL", NULL);
strlcpy(priority_string, "NORMAL", sizeof(priority_string));
if (tls_options & _HTTP_TLS_DENY_TLS10)
strlcat(priority_string, ":+VERS-TLS-ALL:-VERS-TLS1.0:-VERS-SSL3.0", sizeof(priority_string));
else if (tls_options & _HTTP_TLS_ALLOW_SSL3)
gnutls_priority_set_direct(http->tls, "NORMAL:-ARCFOUR-128:+VERS-TLS-ALL", NULL);
strlcat(priority_string, ":+VERS-TLS-ALL", sizeof(priority_string));
else
gnutls_priority_set_direct(http->tls, "NORMAL:+VERS-TLS-ALL:-VERS-SSL3.0", NULL);
strlcat(priority_string, ":+VERS-TLS-ALL:-VERS-SSL3.0", sizeof(priority_string));
if (!(tls_options & _HTTP_TLS_ALLOW_RC4))
strlcat(priority_string, ":-ARCFOUR-128", sizeof(priority_string));
if (!(tls_options & _HTTP_TLS_ALLOW_DH))
strlcat(priority_string, ":!ANON-DH", sizeof(priority_string));
#ifdef HAVE_GNUTLS_PRIORITY_SET_DIRECT
gnutls_priority_set_direct(http->tls, priority_string, NULL);
#else
gnutls_priority_t priority; /* Priority */
if (!tls_options)
gnutls_priority_init(&priority, "NORMAL:-ARCFOUR-128:+VERS-TLS-ALL:-VERS-SSL3.0", NULL);
else if ((tls_options & _HTTP_TLS_ALLOW_SSL3) && (tls_options & _HTTP_TLS_ALLOW_RC4))
gnutls_priority_init(&priority, "NORMAL", NULL);
else if (tls_options & _HTTP_TLS_ALLOW_SSL3)
gnutls_priority_init(&priority, "NORMAL:-ARCFOUR-128:+VERS-TLS-ALL", NULL);
else
gnutls_priority_init(&priority, "NORMAL:+VERS-TLS-ALL:-VERS-SSL3.0", NULL);
gnutls_priority_init(&priority, priority_string, NULL);
gnutls_priority_set(http->tls, priority);
gnutls_priority_deinit(priority);
#endif /* HAVE_GNUTLS_PRIORITY_SET_DIRECT */
@@ -1332,5 +1341,5 @@ _httpTLSWrite(http_t *http, /* I - Connection to server */
/*
* End of "$Id: tls-gnutls.c 12481 2015-02-03 12:45:14Z msweet $".
* End of "$Id: tls-gnutls.c 12670 2015-05-27 19:48:05Z msweet $".
*/
+18 -7
Ver Arquivo
@@ -1,5 +1,5 @@
/*
* "$Id: tls-sspi.c 12481 2015-02-03 12:45:14Z msweet $"
* "$Id: tls-sspi.c 12647 2015-05-20 18:37:52Z msweet $"
*
* TLS support for CUPS on Windows using the Security Support Provider
* Interface (SSPI).
@@ -54,7 +54,7 @@
* Local globals...
*/
static int tls_options = 0;/* Options for TLS connections */
static int tls_options = -1;/* Options for TLS connections */
/*
@@ -930,7 +930,14 @@ _httpTLSStart(http_t *http) /* I - HTTP connection */
*hostptr; /* Pointer into hostname */
DEBUG_printf(("7_httpTLSStart(http=%p)", http));
DEBUG_printf(("3_httpTLSStart(http=%p)", http));
if (tls_options < 0)
{
DEBUG_puts("4_httpTLSStart: Setting defaults.");
_cupsSetDefaults();
DEBUG_printf(("4_httpTLSStart: tls_options=%x", tls_options));
}
if ((http->tls = http_sspi_alloc()) == NULL)
return (-1);
@@ -1756,14 +1763,18 @@ http_sspi_find_credentials(
#ifdef SP_PROT_TLS1_2_SERVER
if (http->mode == _HTTP_MODE_SERVER)
{
if (tls_options & _HTTP_TLS_ALLOW_SSL3)
if (tls_options & _HTTP_TLS_DENY_TLS10)
SchannelCred.grbitEnabledProtocols = SP_PROT_TLS1_2_SERVER | SP_PROT_TLS1_1_SERVER;
else if (tls_options & _HTTP_TLS_ALLOW_SSL3)
SchannelCred.grbitEnabledProtocols = SP_PROT_TLS1_2_SERVER | SP_PROT_TLS1_1_SERVER | SP_PROT_TLS1_0_SERVER | SP_PROT_SSL3_SERVER;
else
SchannelCred.grbitEnabledProtocols = SP_PROT_TLS1_2_SERVER | SP_PROT_TLS1_1_SERVER | SP_PROT_TLS1_0_SERVER;
}
else
{
if (tls_options & _HTTP_TLS_ALLOW_SSL3)
if (tls_options & _HTTP_TLS_DENY_TLS10)
SchannelCred.grbitEnabledProtocols = SP_PROT_TLS1_2_CLIENT | SP_PROT_TLS1_1_CLIENT;
else if (tls_options & _HTTP_TLS_ALLOW_SSL3)
SchannelCred.grbitEnabledProtocols = SP_PROT_TLS1_2_CLIENT | SP_PROT_TLS1_1_CLIENT | SP_PROT_TLS1_0_CLIENT | SP_PROT_SSL3_CLIENT;
else
SchannelCred.grbitEnabledProtocols = SP_PROT_TLS1_2_CLIENT | SP_PROT_TLS1_1_CLIENT | SP_PROT_TLS1_0_CLIENT;
@@ -1786,7 +1797,7 @@ http_sspi_find_credentials(
}
#endif /* SP_PROT_TLS1_2_SERVER */
/* TODO: Support _HTTP_TLS_ALLOW_RC4 option; right now we'll rely on Windows registry to enable/disable RC4... */
/* TODO: Support _HTTP_TLS_ALLOW_RC4 and _HTTP_TLS_ALLOW_DH options; right now we'll rely on Windows registry to enable/disable RC4/DH... */
/*
* Create an SSPI credential.
@@ -2416,5 +2427,5 @@ http_sspi_verify(
/*
* End of "$Id: tls-sspi.c 12481 2015-02-03 12:45:14Z msweet $".
* End of "$Id: tls-sspi.c 12647 2015-05-20 18:37:52Z msweet $".
*/
+739
Ver Arquivo
@@ -0,0 +1,739 @@
/*
* "$Id: tlscheck.c 12688 2015-06-03 17:31:30Z msweet $"
*
* TLS check program for CUPS.
*
* Copyright 2007-2015 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
* which should have been included with this file. If this file is
* file is missing or damaged, see the license at "http://www.cups.org/".
*
* This file is subject to the Apple OS-Developed Software exception.
*/
/*
* Include necessary headers...
*/
#include "cups-private.h"
#ifndef HAVE_SSL
int main(void) { puts("Sorry, no TLS support compiled in."); return (1); }
#else
/*
* Local functions...
*/
static void usage(void);
/*
* 'main()' - Main entry.
*/
int /* O - Exit status */
main(int argc, /* I - Number of command-line arguments */
char *argv[]) /* I - Command-line arguments */
{
int i; /* Looping var */
http_t *http; /* HTTP connection */
const char *server = NULL; /* Hostname from command-line */
int port = 0; /* Port number */
const char *cipherName = "UNKNOWN";/* Cipher suite name */
int dhBits = 0; /* Diffie-Hellman bits */
int tlsVersion = 0; /* TLS version number */
char uri[1024], /* Printer URI */
scheme[32], /* URI scheme */
host[256], /* Hostname */
userpass[256], /* Username/password */
resource[256]; /* Resource path */
int tls_options = _HTTP_TLS_NONE,
/* TLS options */
verbose = 0; /* Verbosity */
ipp_t *request, /* IPP Get-Printer-Attributes request */
*response; /* IPP Get-Printer-Attributes response */
ipp_attribute_t *attr; /* Current attribute */
const char *name; /* Attribute name */
char value[1024]; /* Attribute (string) value */
static const char * const pattrs[] = /* Requested attributes */
{
"color-supported",
"compression-supported",
"document-format-supported",
"pages-per-minute",
"printer-location",
"printer-make-and-model",
"printer-state",
"printer-state-reasons",
"sides-supported",
"uri-authentication-supported",
"uri-security-supported"
};
for (i = 1; i < argc; i ++)
{
if (!strcmp(argv[i], "--dh"))
{
tls_options |= _HTTP_TLS_ALLOW_DH;
}
else if (!strcmp(argv[i], "--no-tls10"))
{
tls_options |= _HTTP_TLS_DENY_TLS10;
}
else if (!strcmp(argv[i], "--rc4"))
{
tls_options |= _HTTP_TLS_ALLOW_RC4;
}
else if (!strcmp(argv[i], "--verbose") || !strcmp(argv[i], "-v"))
{
verbose = 1;
}
else if (argv[i][0] == '-')
{
printf("tlscheck: Unknown option '%s'.\n", argv[i]);
usage();
}
else if (!server)
{
if (!strncmp(argv[i], "ipps://", 7))
{
httpSeparateURI(HTTP_URI_CODING_ALL, argv[i], scheme, sizeof(scheme), userpass, sizeof(userpass), host, sizeof(host), &port, resource, sizeof(resource));
server = host;
}
else
{
server = argv[i];
strlcpy(resource, "/ipp/print", sizeof(resource));
}
}
else if (!port && (argv[i][0] == '=' || isdigit(argv[i][0] & 255)))
{
if (argv[i][0] == '=')
port = atoi(argv[i] + 1);
else
port = atoi(argv[i]);
}
else
{
printf("tlscheck: Unexpected argument '%s'.\n", argv[i]);
usage();
}
}
if (!server)
usage();
if (!port)
port = 631;
_httpTLSSetOptions(tls_options);
http = httpConnect2(server, port, NULL, AF_UNSPEC, HTTP_ENCRYPTION_ALWAYS, 1, 30000, NULL);
if (!http)
{
printf("%s: ERROR (%s)\n", server, cupsLastErrorString());
return (1);
}
#ifdef __APPLE__
SSLProtocol protocol;
SSLCipherSuite cipher;
char unknownCipherName[256];
int paramsNeeded = 0;
const void *params;
size_t paramsLen;
OSStatus err;
if ((err = SSLGetNegotiatedProtocolVersion(http->tls, &protocol)) != noErr)
{
printf("%s: ERROR (No protocol version - %d)\n", server, (int)err);
httpClose(http);
return (1);
}
switch (protocol)
{
default :
tlsVersion = 0;
break;
case kSSLProtocol3 :
tlsVersion = 30;
break;
case kTLSProtocol1 :
tlsVersion = 10;
break;
case kTLSProtocol11 :
tlsVersion = 11;
break;
case kTLSProtocol12 :
tlsVersion = 12;
break;
}
if ((err = SSLGetNegotiatedCipher(http->tls, &cipher)) != noErr)
{
printf("%s: ERROR (No cipher suite - %d)\n", server, (int)err);
httpClose(http);
return (1);
}
switch (cipher)
{
case TLS_NULL_WITH_NULL_NULL:
cipherName = "TLS_NULL_WITH_NULL_NULL";
break;
case TLS_RSA_WITH_NULL_MD5:
cipherName = "TLS_RSA_WITH_NULL_MD5";
break;
case TLS_RSA_WITH_NULL_SHA:
cipherName = "TLS_RSA_WITH_NULL_SHA";
break;
case TLS_RSA_WITH_RC4_128_MD5:
cipherName = "TLS_RSA_WITH_RC4_128_MD5";
break;
case TLS_RSA_WITH_RC4_128_SHA:
cipherName = "TLS_RSA_WITH_RC4_128_SHA";
break;
case TLS_RSA_WITH_3DES_EDE_CBC_SHA:
cipherName = "TLS_RSA_WITH_3DES_EDE_CBC_SHA";
break;
case TLS_RSA_WITH_NULL_SHA256:
cipherName = "TLS_RSA_WITH_NULL_SHA256";
break;
case TLS_RSA_WITH_AES_128_CBC_SHA256:
cipherName = "TLS_RSA_WITH_AES_128_CBC_SHA256";
break;
case TLS_RSA_WITH_AES_256_CBC_SHA256:
cipherName = "TLS_RSA_WITH_AES_256_CBC_SHA256";
break;
case TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA:
cipherName = "TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA";
paramsNeeded = 1;
break;
case TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA:
cipherName = "TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA";
paramsNeeded = 1;
break;
case TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA:
cipherName = "TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA";
paramsNeeded = 1;
break;
case TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA:
cipherName = "TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA";
paramsNeeded = 1;
break;
case TLS_DH_DSS_WITH_AES_128_CBC_SHA256:
cipherName = "TLS_DH_DSS_WITH_AES_128_CBC_SHA256";
paramsNeeded = 1;
break;
case TLS_DH_RSA_WITH_AES_128_CBC_SHA256:
cipherName = "TLS_DH_RSA_WITH_AES_128_CBC_SHA256";
paramsNeeded = 1;
break;
case TLS_DHE_DSS_WITH_AES_128_CBC_SHA256:
cipherName = "TLS_DHE_DSS_WITH_AES_128_CBC_SHA256";
paramsNeeded = 1;
break;
case TLS_DHE_RSA_WITH_AES_128_CBC_SHA256:
cipherName = "TLS_DHE_RSA_WITH_AES_128_CBC_SHA256";
paramsNeeded = 1;
break;
case TLS_DH_DSS_WITH_AES_256_CBC_SHA256:
cipherName = "TLS_DH_DSS_WITH_AES_256_CBC_SHA256";
paramsNeeded = 1;
break;
case TLS_DH_RSA_WITH_AES_256_CBC_SHA256:
cipherName = "TLS_DH_RSA_WITH_AES_256_CBC_SHA256";
paramsNeeded = 1;
break;
case TLS_DHE_DSS_WITH_AES_256_CBC_SHA256:
cipherName = "TLS_DHE_DSS_WITH_AES_256_CBC_SHA256";
paramsNeeded = 1;
break;
case TLS_DHE_RSA_WITH_AES_256_CBC_SHA256:
cipherName = "TLS_DHE_RSA_WITH_AES_256_CBC_SHA256";
paramsNeeded = 1;
break;
case TLS_DH_anon_WITH_RC4_128_MD5:
cipherName = "TLS_DH_anon_WITH_RC4_128_MD5";
paramsNeeded = 1;
break;
case TLS_DH_anon_WITH_3DES_EDE_CBC_SHA:
cipherName = "TLS_DH_anon_WITH_3DES_EDE_CBC_SHA";
paramsNeeded = 1;
break;
case TLS_DH_anon_WITH_AES_128_CBC_SHA256:
cipherName = "TLS_DH_anon_WITH_AES_128_CBC_SHA256";
paramsNeeded = 1;
break;
case TLS_DH_anon_WITH_AES_256_CBC_SHA256:
cipherName = "TLS_DH_anon_WITH_AES_256_CBC_SHA256";
paramsNeeded = 1;
break;
case TLS_PSK_WITH_RC4_128_SHA:
cipherName = "TLS_PSK_WITH_RC4_128_SHA";
break;
case TLS_PSK_WITH_3DES_EDE_CBC_SHA:
cipherName = "TLS_PSK_WITH_3DES_EDE_CBC_SHA";
break;
case TLS_PSK_WITH_AES_128_CBC_SHA:
cipherName = "TLS_PSK_WITH_AES_128_CBC_SHA";
break;
case TLS_PSK_WITH_AES_256_CBC_SHA:
cipherName = "TLS_PSK_WITH_AES_256_CBC_SHA";
break;
case TLS_DHE_PSK_WITH_RC4_128_SHA:
cipherName = "TLS_DHE_PSK_WITH_RC4_128_SHA";
paramsNeeded = 1;
break;
case TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA:
cipherName = "TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA";
paramsNeeded = 1;
break;
case TLS_DHE_PSK_WITH_AES_128_CBC_SHA:
cipherName = "TLS_DHE_PSK_WITH_AES_128_CBC_SHA";
paramsNeeded = 1;
break;
case TLS_DHE_PSK_WITH_AES_256_CBC_SHA:
cipherName = "TLS_DHE_PSK_WITH_AES_256_CBC_SHA";
paramsNeeded = 1;
break;
case TLS_RSA_PSK_WITH_RC4_128_SHA:
cipherName = "TLS_RSA_PSK_WITH_RC4_128_SHA";
break;
case TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA:
cipherName = "TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA";
break;
case TLS_RSA_PSK_WITH_AES_128_CBC_SHA:
cipherName = "TLS_RSA_PSK_WITH_AES_128_CBC_SHA";
break;
case TLS_RSA_PSK_WITH_AES_256_CBC_SHA:
cipherName = "TLS_RSA_PSK_WITH_AES_256_CBC_SHA";
break;
case TLS_PSK_WITH_NULL_SHA:
cipherName = "TLS_PSK_WITH_NULL_SHA";
break;
case TLS_DHE_PSK_WITH_NULL_SHA:
cipherName = "TLS_DHE_PSK_WITH_NULL_SHA";
paramsNeeded = 1;
break;
case TLS_RSA_PSK_WITH_NULL_SHA:
cipherName = "TLS_RSA_PSK_WITH_NULL_SHA";
break;
case TLS_RSA_WITH_AES_128_GCM_SHA256:
cipherName = "TLS_RSA_WITH_AES_128_GCM_SHA256";
break;
case TLS_RSA_WITH_AES_256_GCM_SHA384:
cipherName = "TLS_RSA_WITH_AES_256_GCM_SHA384";
break;
case TLS_DHE_RSA_WITH_AES_128_GCM_SHA256:
cipherName = "TLS_DHE_RSA_WITH_AES_128_GCM_SHA256";
paramsNeeded = 1;
break;
case TLS_DHE_RSA_WITH_AES_256_GCM_SHA384:
cipherName = "TLS_DHE_RSA_WITH_AES_256_GCM_SHA384";
paramsNeeded = 1;
break;
case TLS_DH_RSA_WITH_AES_128_GCM_SHA256:
cipherName = "TLS_DH_RSA_WITH_AES_128_GCM_SHA256";
paramsNeeded = 1;
break;
case TLS_DH_RSA_WITH_AES_256_GCM_SHA384:
cipherName = "TLS_DH_RSA_WITH_AES_256_GCM_SHA384";
paramsNeeded = 1;
break;
case TLS_DHE_DSS_WITH_AES_128_GCM_SHA256:
cipherName = "TLS_DHE_DSS_WITH_AES_128_GCM_SHA256";
paramsNeeded = 1;
break;
case TLS_DHE_DSS_WITH_AES_256_GCM_SHA384:
cipherName = "TLS_DHE_DSS_WITH_AES_256_GCM_SHA384";
paramsNeeded = 1;
break;
case TLS_DH_DSS_WITH_AES_128_GCM_SHA256:
cipherName = "TLS_DH_DSS_WITH_AES_128_GCM_SHA256";
paramsNeeded = 1;
break;
case TLS_DH_DSS_WITH_AES_256_GCM_SHA384:
cipherName = "TLS_DH_DSS_WITH_AES_256_GCM_SHA384";
paramsNeeded = 1;
break;
case TLS_DH_anon_WITH_AES_128_GCM_SHA256:
cipherName = "TLS_DH_anon_WITH_AES_128_GCM_SHA256";
paramsNeeded = 1;
break;
case TLS_DH_anon_WITH_AES_256_GCM_SHA384:
cipherName = "TLS_DH_anon_WITH_AES_256_GCM_SHA384";
paramsNeeded = 1;
break;
case TLS_PSK_WITH_AES_128_GCM_SHA256:
cipherName = "TLS_PSK_WITH_AES_128_GCM_SHA256";
break;
case TLS_PSK_WITH_AES_256_GCM_SHA384:
cipherName = "TLS_PSK_WITH_AES_256_GCM_SHA384";
break;
case TLS_DHE_PSK_WITH_AES_128_GCM_SHA256:
cipherName = "TLS_DHE_PSK_WITH_AES_128_GCM_SHA256";
paramsNeeded = 1;
break;
case TLS_DHE_PSK_WITH_AES_256_GCM_SHA384:
cipherName = "TLS_DHE_PSK_WITH_AES_256_GCM_SHA384";
paramsNeeded = 1;
break;
case TLS_RSA_PSK_WITH_AES_128_GCM_SHA256:
cipherName = "TLS_RSA_PSK_WITH_AES_128_GCM_SHA256";
break;
case TLS_RSA_PSK_WITH_AES_256_GCM_SHA384:
cipherName = "TLS_RSA_PSK_WITH_AES_256_GCM_SHA384";
break;
case TLS_PSK_WITH_AES_128_CBC_SHA256:
cipherName = "TLS_PSK_WITH_AES_128_CBC_SHA256";
break;
case TLS_PSK_WITH_AES_256_CBC_SHA384:
cipherName = "TLS_PSK_WITH_AES_256_CBC_SHA384";
break;
case TLS_PSK_WITH_NULL_SHA256:
cipherName = "TLS_PSK_WITH_NULL_SHA256";
break;
case TLS_PSK_WITH_NULL_SHA384:
cipherName = "TLS_PSK_WITH_NULL_SHA384";
break;
case TLS_DHE_PSK_WITH_AES_128_CBC_SHA256:
cipherName = "TLS_DHE_PSK_WITH_AES_128_CBC_SHA256";
paramsNeeded = 1;
break;
case TLS_DHE_PSK_WITH_AES_256_CBC_SHA384:
cipherName = "TLS_DHE_PSK_WITH_AES_256_CBC_SHA384";
paramsNeeded = 1;
break;
case TLS_DHE_PSK_WITH_NULL_SHA256:
cipherName = "TLS_DHE_PSK_WITH_NULL_SHA256";
paramsNeeded = 1;
break;
case TLS_DHE_PSK_WITH_NULL_SHA384:
cipherName = "TLS_DHE_PSK_WITH_NULL_SHA384";
paramsNeeded = 1;
break;
case TLS_RSA_PSK_WITH_AES_128_CBC_SHA256:
cipherName = "TLS_RSA_PSK_WITH_AES_128_CBC_SHA256";
break;
case TLS_RSA_PSK_WITH_AES_256_CBC_SHA384:
cipherName = "TLS_RSA_PSK_WITH_AES_256_CBC_SHA384";
break;
case TLS_RSA_PSK_WITH_NULL_SHA256:
cipherName = "TLS_RSA_PSK_WITH_NULL_SHA256";
break;
case TLS_RSA_PSK_WITH_NULL_SHA384:
cipherName = "TLS_RSA_PSK_WITH_NULL_SHA384";
break;
case TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256:
cipherName = "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256";
paramsNeeded = 1;
break;
case TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384:
cipherName = "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384";
paramsNeeded = 1;
break;
case TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256:
cipherName = "TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256";
paramsNeeded = 1;
break;
case TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384:
cipherName = "TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384";
paramsNeeded = 1;
break;
case TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256:
cipherName = "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256";
paramsNeeded = 1;
break;
case TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384:
cipherName = "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384";
paramsNeeded = 1;
break;
case TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256:
cipherName = "TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256";
paramsNeeded = 1;
break;
case TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384:
cipherName = "TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384";
paramsNeeded = 1;
break;
case TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256:
cipherName = "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256";
paramsNeeded = 1;
break;
case TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384:
cipherName = "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384";
paramsNeeded = 1;
break;
case TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256:
cipherName = "TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256";
paramsNeeded = 1;
break;
case TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384:
cipherName = "TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384";
paramsNeeded = 1;
break;
case TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256:
cipherName = "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256";
paramsNeeded = 1;
break;
case TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384:
cipherName = "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384";
paramsNeeded = 1;
break;
case TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256:
cipherName = "TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256";
paramsNeeded = 1;
break;
case TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384:
cipherName = "TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384";
paramsNeeded = 1;
break;
case TLS_RSA_WITH_AES_128_CBC_SHA:
cipherName = "TLS_RSA_WITH_AES_128_CBC_SHA";
break;
case TLS_DH_DSS_WITH_AES_128_CBC_SHA:
cipherName = "TLS_DH_DSS_WITH_AES_128_CBC_SHA";
paramsNeeded = 1;
break;
case TLS_DH_RSA_WITH_AES_128_CBC_SHA:
cipherName = "TLS_DH_RSA_WITH_AES_128_CBC_SHA";
paramsNeeded = 1;
break;
case TLS_DHE_DSS_WITH_AES_128_CBC_SHA:
cipherName = "TLS_DHE_DSS_WITH_AES_128_CBC_SHA";
paramsNeeded = 1;
break;
case TLS_DHE_RSA_WITH_AES_128_CBC_SHA:
cipherName = "TLS_DHE_RSA_WITH_AES_128_CBC_SHA";
paramsNeeded = 1;
break;
case TLS_DH_anon_WITH_AES_128_CBC_SHA:
cipherName = "TLS_DH_anon_WITH_AES_128_CBC_SHA";
paramsNeeded = 1;
break;
case TLS_RSA_WITH_AES_256_CBC_SHA:
cipherName = "TLS_RSA_WITH_AES_256_CBC_SHA";
break;
case TLS_DH_DSS_WITH_AES_256_CBC_SHA:
cipherName = "TLS_DH_DSS_WITH_AES_256_CBC_SHA";
paramsNeeded = 1;
break;
case TLS_DH_RSA_WITH_AES_256_CBC_SHA:
cipherName = "TLS_DH_RSA_WITH_AES_256_CBC_SHA";
paramsNeeded = 1;
break;
case TLS_DHE_DSS_WITH_AES_256_CBC_SHA:
cipherName = "TLS_DHE_DSS_WITH_AES_256_CBC_SHA";
paramsNeeded = 1;
break;
case TLS_DHE_RSA_WITH_AES_256_CBC_SHA:
cipherName = "TLS_DHE_RSA_WITH_AES_256_CBC_SHA";
paramsNeeded = 1;
break;
case TLS_DH_anon_WITH_AES_256_CBC_SHA:
cipherName = "TLS_DH_anon_WITH_AES_256_CBC_SHA";
paramsNeeded = 1;
break;
case TLS_ECDH_ECDSA_WITH_NULL_SHA:
cipherName = "TLS_ECDH_ECDSA_WITH_NULL_SHA";
paramsNeeded = 1;
break;
case TLS_ECDH_ECDSA_WITH_RC4_128_SHA:
cipherName = "TLS_ECDH_ECDSA_WITH_RC4_128_SHA";
paramsNeeded = 1;
break;
case TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA:
cipherName = "TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA";
paramsNeeded = 1;
break;
case TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA:
cipherName = "TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA";
paramsNeeded = 1;
break;
case TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA:
cipherName = "TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA";
paramsNeeded = 1;
break;
case TLS_ECDHE_ECDSA_WITH_NULL_SHA:
cipherName = "TLS_ECDHE_ECDSA_WITH_NULL_SHA";
paramsNeeded = 1;
break;
case TLS_ECDHE_ECDSA_WITH_RC4_128_SHA:
cipherName = "TLS_ECDHE_ECDSA_WITH_RC4_128_SHA";
paramsNeeded = 1;
break;
case TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA:
cipherName = "TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA";
paramsNeeded = 1;
break;
case TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA:
cipherName = "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA";
paramsNeeded = 1;
break;
case TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA:
cipherName = "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA";
paramsNeeded = 1;
break;
case TLS_ECDH_RSA_WITH_NULL_SHA:
cipherName = "TLS_ECDH_RSA_WITH_NULL_SHA";
paramsNeeded = 1;
break;
case TLS_ECDH_RSA_WITH_RC4_128_SHA:
cipherName = "TLS_ECDH_RSA_WITH_RC4_128_SHA";
paramsNeeded = 1;
break;
case TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA:
cipherName = "TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA";
paramsNeeded = 1;
break;
case TLS_ECDH_RSA_WITH_AES_128_CBC_SHA:
cipherName = "TLS_ECDH_RSA_WITH_AES_128_CBC_SHA";
paramsNeeded = 1;
break;
case TLS_ECDH_RSA_WITH_AES_256_CBC_SHA:
cipherName = "TLS_ECDH_RSA_WITH_AES_256_CBC_SHA";
paramsNeeded = 1;
break;
case TLS_ECDHE_RSA_WITH_NULL_SHA:
cipherName = "TLS_ECDHE_RSA_WITH_NULL_SHA";
paramsNeeded = 1;
break;
case TLS_ECDHE_RSA_WITH_RC4_128_SHA:
cipherName = "TLS_ECDHE_RSA_WITH_RC4_128_SHA";
paramsNeeded = 1;
break;
case TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA:
cipherName = "TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA";
paramsNeeded = 1;
break;
case TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA:
cipherName = "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA";
paramsNeeded = 1;
break;
case TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA:
cipherName = "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA";
paramsNeeded = 1;
break;
case TLS_ECDH_anon_WITH_NULL_SHA:
cipherName = "TLS_ECDH_anon_WITH_NULL_SHA";
paramsNeeded = 1;
break;
case TLS_ECDH_anon_WITH_RC4_128_SHA:
cipherName = "TLS_ECDH_anon_WITH_RC4_128_SHA";
paramsNeeded = 1;
break;
case TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA:
cipherName = "TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA";
paramsNeeded = 1;
break;
case TLS_ECDH_anon_WITH_AES_128_CBC_SHA:
cipherName = "TLS_ECDH_anon_WITH_AES_128_CBC_SHA";
paramsNeeded = 1;
break;
case TLS_ECDH_anon_WITH_AES_256_CBC_SHA:
cipherName = "TLS_ECDH_anon_WITH_AES_256_CBC_SHA";
paramsNeeded = 1;
break;
default :
snprintf(unknownCipherName, sizeof(unknownCipherName), "UNKNOWN_%04X", cipher);
cipherName = unknownCipherName;
break;
}
if (cipher == TLS_RSA_WITH_RC4_128_MD5 ||
cipher == TLS_RSA_WITH_RC4_128_SHA)
{
printf("%s: ERROR (Printers MUST NOT negotiate RC4 cipher suites.)\n", server);
httpClose(http);
return (1);
}
if ((err = SSLGetDiffieHellmanParams(http->tls, &params, &paramsLen)) != noErr && paramsNeeded)
{
printf("%s: ERROR (Unable to get Diffie-Hellman parameters - %d)\n", server, (int)err);
httpClose(http);
return (1);
}
if (paramsLen < 128 && paramsLen != 0)
{
printf("%s: ERROR (Diffie-Hellman parameters MUST be at least 2048 bits, but Printer uses only %d bits/%d bytes)\n", server, (int)paramsLen * 8, (int)paramsLen);
httpClose(http);
return (1);
}
dhBits = (int)paramsLen * 8;
#endif /* __APPLE__ */
if (dhBits > 0)
printf("%s: OK (TLS: %d.%d, %s, %d DH bits)\n", server, tlsVersion / 10, tlsVersion % 10, cipherName, dhBits);
else
printf("%s: OK (TLS: %d.%d, %s)\n", server, tlsVersion / 10, tlsVersion % 10, cipherName);
if (verbose)
{
httpAssembleURI(HTTP_URI_CODING_ALL, uri, sizeof(uri), "ipps", NULL, host, port, resource);
request = ippNewRequest(IPP_OP_GET_PRINTER_ATTRIBUTES);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri", NULL, uri);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "requesting-user-name", NULL, cupsUser());
ippAddStrings(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD, "requested-attributes", (int)(sizeof(pattrs) / sizeof(pattrs[0])), NULL, pattrs);
response = cupsDoRequest(http, request, resource);
for (attr = ippFirstAttribute(response); attr; attr = ippNextAttribute(response))
{
if (ippGetGroupTag(attr) != IPP_TAG_PRINTER)
continue;
if ((name = ippGetName(attr)) == NULL)
continue;
ippAttributeString(attr, value, sizeof(value));
printf(" %s=%s\n", name, value);
}
ippDelete(response);
}
httpClose(http);
return (0);
}
/*
* 'usage()' - Show program usage.
*/
static void
usage(void)
{
puts("Usage: ./tlscheck [options] server [port]");
puts(" ./tlscheck [options] ipps://server[:port]/path");
puts("");
puts("Options:");
puts(" --dh Allow DH/DHE key exchange");
puts(" --no-tls10 Disable TLS/1.0");
puts(" --rc4 Allow RC4 encryption");
puts(" --verbose Be verbose");
puts(" -v Be verbose");
puts("");
puts("The default port is 631.");
exit(1);
}
#endif /* !HAVE_SSL */
/*
* End of "$Id: tlscheck.c 12688 2015-06-03 17:31:30Z msweet $".
*/
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
/*
* "$Id: transcode.c 12332 2014-12-09 20:58:45Z msweet $"
* "$Id: transcode.c 12330 2014-12-09 20:57:28Z msweet $"
*
* Transcoding support for CUPS.
*
@@ -716,5 +716,5 @@ cupsUTF32ToUTF8(
/*
* End of "$Id: transcode.c 12332 2014-12-09 20:58:45Z msweet $"
* End of "$Id: transcode.c 12330 2014-12-09 20:57:28Z msweet $"
*/
+15 -7
Ver Arquivo
@@ -1,5 +1,5 @@
/*
* "$Id: usersys.c 12813 2015-07-30 15:00:40Z msweet $"
* "$Id: usersys.c 13030 2016-01-04 14:35:45Z msweet $"
*
* User, system, and password routines for CUPS.
*
@@ -710,6 +710,8 @@ _cupsGetPassword(const char *prompt) /* I - Prompt string */
noecho = original;
noecho.c_lflag &= (tcflag_t)~(ICANON | ECHO | ECHOE | ISIG);
noecho.c_cc[VMIN] = 1;
noecho.c_cc[VTIME] = 0;
if (tcsetattr(tty, TCSAFLUSH, &noecho))
{
@@ -1012,7 +1014,7 @@ cups_finalize_client_conf(
struct stat sockinfo; /* Domain socket information */
if (!stat(CUPS_DEFAULT_DOMAINSOCKET, &sockinfo) &&
(sockinfo.st_mode & S_IRWXO) == S_IRWXO)
(sockinfo.st_mode & (S_IROTH | S_IWOTH)) == (S_IROTH | S_IWOTH))
cups_set_server_name(cc, CUPS_DEFAULT_DOMAINSOCKET);
else
#endif /* CUPS_DEFAULT_DOMAINSOCKET */
@@ -1224,10 +1226,10 @@ cups_set_ssl_options(
const char *value) /* I - Value */
{
/*
* SSLOptions [AllowRC4] [AllowSSL3] [None]
* SSLOptions [AllowRC4] [AllowSSL3] [AllowDH] [DenyTLS1.0] [None]
*/
int options = 0; /* SSL/TLS options */
int options = _HTTP_TLS_NONE; /* SSL/TLS options */
char temp[256], /* Copy of value */
*start, /* Start of option */
*end; /* End of option */
@@ -1237,7 +1239,7 @@ cups_set_ssl_options(
for (start = temp; *start; start = end)
{
/*
/*
* Find end of keyword...
*/
@@ -1256,11 +1258,17 @@ cups_set_ssl_options(
options |= _HTTP_TLS_ALLOW_RC4;
else if (!_cups_strcasecmp(start, "AllowSSL3"))
options |= _HTTP_TLS_ALLOW_SSL3;
else if (!_cups_strcasecmp(start, "AllowDH"))
options |= _HTTP_TLS_ALLOW_DH;
else if (!_cups_strcasecmp(start, "DenyTLS1.0"))
options |= _HTTP_TLS_DENY_TLS10;
else if (!_cups_strcasecmp(start, "None"))
options = 0;
options = _HTTP_TLS_NONE;
}
cc->ssl_options = options;
DEBUG_printf(("4cups_set_ssl_options(cc=%p, value=\"%s\") options=%x", cc, value, options));
}
#endif /* HAVE_SSL */
@@ -1279,5 +1287,5 @@ cups_set_user(
/*
* End of "$Id: usersys.c 12813 2015-07-30 15:00:40Z msweet $".
* End of "$Id: usersys.c 13030 2016-01-04 14:35:45Z msweet $".
*/
+5 -6
Ver Arquivo
@@ -1,5 +1,5 @@
/*
* "$Id: util.c 12449 2015-01-29 20:32:16Z msweet $"
* "$Id: util.c 12884 2015-10-07 20:31:46Z msweet $"
*
* Printing utilities for CUPS.
*
@@ -1528,10 +1528,9 @@ cups_get_printer_uri(
}
if (device_uri &&
(!strncmp(device_uri, "ipp://", 6) ||
!strncmp(device_uri, "ipps://", 7) ||
((strstr(device_uri, "._ipp.") != NULL ||
strstr(device_uri, "._ipps.") != NULL) &&
(((!strncmp(device_uri, "ipp://", 6) || !strncmp(device_uri, "ipps://", 7)) &&
(strstr(device_uri, "/printers/") != NULL || strstr(device_uri, "/classes/") != NULL)) ||
((strstr(device_uri, "._ipp.") != NULL || strstr(device_uri, "._ipps.") != NULL) &&
!strcmp(device_uri + strlen(device_uri) - 5, "/cups"))))
{
/*
@@ -1655,5 +1654,5 @@ cups_get_printer_uri(
/*
* End of "$Id: util.c 12449 2015-01-29 20:32:16Z msweet $".
* End of "$Id: util.c 12884 2015-10-07 20:31:46Z msweet $".
*/
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
/*
* "$Id: versioning.h 12419 2015-01-22 15:51:20Z msweet $"
* "$Id: versioning.h 12418 2015-01-22 15:49:23Z msweet $"
*
* API versioning definitions for CUPS.
*
@@ -162,5 +162,5 @@
#endif /* !_CUPS_VERSIONING_H_ */
/*
* End of "$Id: versioning.h 12419 2015-01-22 15:51:20Z msweet $".
* End of "$Id: versioning.h 12418 2015-01-22 15:49:23Z msweet $".
*/
+3 -26
Ver Arquivo
@@ -1,9 +1,9 @@
#
# "$Id: Makefile 10996 2013-05-29 11:51:34Z msweet $"
# "$Id: Makefile 12278 2014-12-01 13:53:56Z msweet $"
#
# Datafile makefile for CUPS.
#
# Copyright 2007-2011 by Apple Inc.
# Copyright 2007-2014 by Apple Inc.
# Copyright 1993-2006 by Easy Software Products.
#
# These coded instructions, statements, and computer programs are the
@@ -19,17 +19,6 @@ include ../Makedefs
# Data files...
#
BANNERS = \
classified \
confidential \
secret \
standard \
topsecret \
unclassified
DATAFILES = \
testprint
PPDCFILES = \
epson.h \
font.defs \
@@ -87,13 +76,7 @@ install: all install-data install-headers install-libs install-exec
install-data:
$(INSTALL_DIR) -m 755 $(DATADIR)/banners
for file in $(BANNERS); do \
$(INSTALL_DATA) $$file $(DATADIR)/banners; \
done
$(INSTALL_DIR) -m 755 $(DATADIR)/data
for file in $(DATAFILES); do \
$(INSTALL_DATA) $$file $(DATADIR)/data; \
done
$(INSTALL_DIR) -m 755 $(DATADIR)/model
$(INSTALL_DIR) -m 755 $(DATADIR)/ppdc
for file in $(PPDCFILES); do \
@@ -128,12 +111,6 @@ install-libs:
#
uninstall:
for file in $(BANNERS); do \
$(RM) $(DATADIR)/banners/$$file; \
done
for file in $(DATAFILES); do \
$(RM) $(DATADIR)/data/$$file; \
done
for file in $(PPDCFILES); do \
$(RM) $(DATADIR)/ppdc/$$file; \
done
@@ -146,5 +123,5 @@ uninstall:
#
# End of "$Id: Makefile 10996 2013-05-29 11:51:34Z msweet $".
# End of "$Id: Makefile 12278 2014-12-01 13:53:56Z msweet $".
#
-6
Ver Arquivo
@@ -1,6 +0,0 @@
#CUPS-BANNER
Show job-id job-name job-originating-user-name job-originating-host-name job-billing
Header Classified
Footer Classified
Image images/cups.png
-6
Ver Arquivo
@@ -1,6 +0,0 @@
#CUPS-BANNER
Show job-id job-name job-originating-user-name job-originating-host-name job-billing
Header Confidential
Footer Confidential
Image images/cups.png
-6
Ver Arquivo
@@ -1,6 +0,0 @@
#CUPS-BANNER
Show job-id job-name job-originating-user-name job-originating-host-name job-billing
Header Secret
Footer Secret
Image images/cups.png
-6
Ver Arquivo
@@ -1,6 +0,0 @@
#CUPS-BANNER
Show job-id job-name job-originating-user-name job-originating-host-name job-billing
Header Cover Page
Footer Cover Page
Image images/cups.png
-7
Ver Arquivo
@@ -1,7 +0,0 @@
#CUPS-BANNER
Show printer-name printer-info printer-location printer-make-and-model printer-driver-name printer-driver-version paper-size imageable-area
Header Printer Test Page
Footer Printer Test Page
Notice CUPS @CUPS_VERSION@.
Image images/cups.png
Image images/color-wheel.png
-6
Ver Arquivo
@@ -1,6 +0,0 @@
#CUPS-BANNER
Show job-id job-name job-originating-user-name job-originating-host-name job-billing
Header Top Secret
Footer Top Secret
Image images/cups.png
-6
Ver Arquivo
@@ -1,6 +0,0 @@
#CUPS-BANNER
Show job-id job-name job-originating-user-name job-originating-host-name job-billing
Header Unclassified
Footer Unclassified
Image images/cups.png
+1 -1
Ver Arquivo
@@ -26,7 +26,7 @@ options determine whether and how quotas are enforced for a printer.
The <CODE>job-quota-period</CODE> option determines the time interval for
quota tracking. The interval is expressed in seconds, so a day is
86,400, a week is 604,800, and a month is 2,592,000 seconds. The
<CODE>job-k-limit</CODE> option specifies the job size limit in killobytes. The
<CODE>job-k-limit</CODE> option specifies the job size limit in kilobytes. The
<CODE>job-page-limit</CODE> option specifies the number of pages limit.</P>
<P>For quotas to be enforced, the period and at least one of the limits
+2
Ver Arquivo
@@ -3675,6 +3675,8 @@ locale ID.</p>
constants</p>
<h4 class="constants">Constants</h4>
<dl>
<dt>CUPS_PRINTER_3D <span class="info">&nbsp;CUPS 2.1&nbsp;</span></dt>
<dd class="description">3D Printing </dd>
<dt>CUPS_PRINTER_AUTHENTICATED <span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span></dt>
<dd class="description">Printer requires authentication
</dd>
+76 -2
Ver Arquivo
@@ -2206,7 +2206,7 @@ const char *httpGetCookie (<br>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>http</dt>
<dd class="description">HTTP connecion</dd>
<dd class="description">HTTP connection</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">Cookie data or NULL</p>
@@ -5984,7 +5984,7 @@ are server-oriented...</p>
<dt>HTTP_STATUS_OK </dt>
<dd class="description">OPTIONS/GET/HEAD/POST/TRACE command was successful</dd>
<dt>HTTP_STATUS_PARTIAL_CONTENT </dt>
<dd class="description">Only a partial file was recieved/sent</dd>
<dd class="description">Only a partial file was received/sent</dd>
<dt>HTTP_STATUS_PAYMENT_REQUIRED </dt>
<dd class="description">Payment required</dd>
<dt>HTTP_STATUS_PRECONDITION </dt>
@@ -6331,6 +6331,18 @@ are server-oriented...</p>
<p class="description">IPP operations</p>
<h4 class="constants">Constants</h4>
<dl>
<dt>IPP_OP_ACKNOWLEDGE_DOCUMENT </dt>
<dd class="description">Acknowledge-Document</dd>
<dt>IPP_OP_ACKNOWLEDGE_IDENTIFY_PRINTER </dt>
<dd class="description">Acknowledge-Identify-Printer</dd>
<dt>IPP_OP_ACKNOWLEDGE_JOB </dt>
<dd class="description">Acknowledge-Job</dd>
<dt>IPP_OP_ACTIVATE_PRINTER </dt>
<dd class="description">Start a printer</dd>
<dt>IPP_OP_CANCEL_CURRENT_JOB </dt>
<dd class="description">Cancel the current job</dd>
<dt>IPP_OP_CANCEL_DOCUMENT </dt>
<dd class="description">Cancel-Document</dd>
<dt>IPP_OP_CANCEL_JOB </dt>
<dd class="description">Cancel a job</dd>
<dt>IPP_OP_CANCEL_JOBS </dt>
@@ -6381,16 +6393,34 @@ are server-oriented...</p>
<dd class="description">Reject new jobs on a printer</dd>
<dt>IPP_OP_CUPS_SET_DEFAULT </dt>
<dd class="description">Set the default printer</dd>
<dt>IPP_OP_DEACTIVATE_PRINTER </dt>
<dd class="description">Stop a printer</dd>
<dt>IPP_OP_DELETE_DOCUMENT </dt>
<dd class="description">Delete-Document</dd>
<dt>IPP_OP_DEREGISTER_OUTPUT_DEVICE </dt>
<dd class="description">Deregister-Output-Device</dd>
<dt>IPP_OP_DISABLE_PRINTER </dt>
<dd class="description">Stop a printer</dd>
<dt>IPP_OP_ENABLE_PRINTER </dt>
<dd class="description">Start a printer</dd>
<dt>IPP_OP_FETCH_DOCUMENT </dt>
<dd class="description">Fetch-Document</dd>
<dt>IPP_OP_FETCH_JOB </dt>
<dd class="description">Fetch-Job</dd>
<dt>IPP_OP_GET_DOCUMENTS </dt>
<dd class="description">Get-Documents</dd>
<dt>IPP_OP_GET_DOCUMENT_ATTRIBUTES </dt>
<dd class="description">Get-Document-Attributes</dd>
<dt>IPP_OP_GET_JOBS </dt>
<dd class="description">Get a list of jobs</dd>
<dt>IPP_OP_GET_JOB_ATTRIBUTES </dt>
<dd class="description">Get job attributes</dd>
<dt>IPP_OP_GET_NEXT_DOCUMENT_DATA </dt>
<dd class="description">Get-Next-Document-Data</dd>
<dt>IPP_OP_GET_NOTIFICATIONS <span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span></dt>
<dd class="description">Get notification events </dd>
<dt>IPP_OP_GET_OUTPUT_DEVICE_ATTRIBUTES </dt>
<dd class="description">Get-Output-Device-Attributes</dd>
<dt>IPP_OP_GET_PRINTER_ATTRIBUTES </dt>
<dd class="description">Get printer attributes</dd>
<dt>IPP_OP_GET_PRINTER_SUPPORTED_VALUES </dt>
@@ -6401,26 +6431,70 @@ are server-oriented...</p>
<dd class="description">Get subscription attributes </dd>
<dt>IPP_OP_HOLD_JOB </dt>
<dd class="description">Hold a job for printing</dd>
<dt>IPP_OP_HOLD_NEW_JOBS </dt>
<dd class="description">Hold new jobs</dd>
<dt>IPP_OP_IDENTIFY_PRINTER </dt>
<dd class="description">Identify-Printer</dd>
<dt>IPP_OP_PAUSE_PRINTER </dt>
<dd class="description">Stop a printer</dd>
<dt>IPP_OP_PAUSE_PRINTER_AFTER_CURRENT_JOB </dt>
<dd class="description">Stop printer after the current job</dd>
<dt>IPP_OP_PRINT_JOB </dt>
<dd class="description">Print a single file</dd>
<dt>IPP_OP_PRINT_URI </dt>
<dd class="description">Print a single URL</dd>
<dt>IPP_OP_PROMOTE_JOB </dt>
<dd class="description">Promote a job to print sooner</dd>
<dt>IPP_OP_PURGE_JOBS </dt>
<dd class="description">Cancel all jobs</dd>
<dt>IPP_OP_RELEASE_HELD_NEW_JOBS </dt>
<dd class="description">Release new jobs</dd>
<dt>IPP_OP_RELEASE_JOB </dt>
<dd class="description">Release a job for printing</dd>
<dt>IPP_OP_RENEW_SUBSCRIPTION <span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span></dt>
<dd class="description">Renew a printer subscription </dd>
<dt>IPP_OP_REPROCESS_JOB </dt>
<dd class="description">Reprint a job</dd>
<dt>IPP_OP_RESTART_JOB </dt>
<dd class="description">Reprint a job</dd>
<dt>IPP_OP_RESTART_PRINTER </dt>
<dd class="description">Restart a printer</dd>
<dt>IPP_OP_RESUBMIT_JOB </dt>
<dd class="description">Resubmit-Job</dd>
<dt>IPP_OP_RESUME_JOB </dt>
<dd class="description">Resume the current job</dd>
<dt>IPP_OP_RESUME_PRINTER </dt>
<dd class="description">Start a printer</dd>
<dt>IPP_OP_SCHEDULE_JOB_AFTER </dt>
<dd class="description">Schedule a job to print after another</dd>
<dt>IPP_OP_SEND_DOCUMENT </dt>
<dd class="description">Add a file to a job</dd>
<dt>IPP_OP_SEND_HARDCOPY_DOCUMENT </dt>
<dd class="description">Send-Hardcopy-Document</dd>
<dt>IPP_OP_SEND_URI </dt>
<dd class="description">Add a URL to a job</dd>
<dt>IPP_OP_SET_DOCUMENT_ATTRIBUTES </dt>
<dd class="description">Set-Document-Attributes</dd>
<dt>IPP_OP_SET_JOB_ATTRIBUTES </dt>
<dd class="description">Set job attributes</dd>
<dt>IPP_OP_SET_PRINTER_ATTRIBUTES </dt>
<dd class="description">Set printer attributes</dd>
<dt>IPP_OP_SHUTDOWN_PRINTER </dt>
<dd class="description">Turn a printer off</dd>
<dt>IPP_OP_STARTUP_PRINTER </dt>
<dd class="description">Turn a printer on</dd>
<dt>IPP_OP_SUSPEND_CURRENT_JOB </dt>
<dd class="description">Suspend the current job</dd>
<dt>IPP_OP_UPDATE_ACTIVE_JOBS </dt>
<dd class="description">Update-Active-Jobs</dd>
<dt>IPP_OP_UPDATE_DOCUMENT_STATUS </dt>
<dd class="description">Update-Document-Status</dd>
<dt>IPP_OP_UPDATE_JOB_STATUS </dt>
<dd class="description">Update-Job-Status</dd>
<dt>IPP_OP_UPDATE_OUTPUT_DEVICE_ATTRIBUTES </dt>
<dd class="description">Update-Output-Device-Attributes</dd>
<dt>IPP_OP_VALIDATE_DOCUMENT </dt>
<dd class="description">Validate-Document</dd>
<dt>IPP_OP_VALIDATE_JOB </dt>
<dd class="description">Validate job options</dd>
</dl>
+2 -2
Ver Arquivo
@@ -416,7 +416,7 @@ marked option choices.">ppdConflicts</a></li>
<li><a href="#ppdEmitJCL" title="Emit code for JCL options to a file.">ppdEmitJCL</a></li>
<li><a href="#ppdEmitJCLEnd" title="Emit JCLEnd code to a file.">ppdEmitJCLEnd</a></li>
<li><a href="#ppdEmitString" title="Get a string containing the code for marked options.">ppdEmitString</a></li>
<li><a href="#ppdErrorString" title="Returns the text assocated with a status.">ppdErrorString</a></li>
<li><a href="#ppdErrorString" title="Returns the text associated with a status.">ppdErrorString</a></li>
<li><a href="#ppdFindAttr" title="Find the first matching attribute.">ppdFindAttr</a></li>
<li><a href="#ppdFindChoice" title="Return a pointer to an option choice.">ppdFindChoice</a></li>
<li><a href="#ppdFindCustomOption" title="Find a custom option.">ppdFindCustomOption</a></li>
@@ -1051,7 +1051,7 @@ The return string is allocated on the heap and should be freed using
</p>
<h3 class="function"><span class="info">&nbsp;CUPS 1.1.19/OS X 10.3&nbsp;</span><a name="ppdErrorString">ppdErrorString</a></h3>
<p class="description">Returns the text assocated with a status.</p>
<p class="description">Returns the text associated with a status.</p>
<p class="code">
const char *ppdErrorString (<br>
&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppd_status_t">ppd_status_t</a> status<br>
+1 -1
Ver Arquivo
@@ -60,7 +60,7 @@ DNS server(s).</li>
<H2 CLASS="title"><A NAME="CUPS">Configuring CUPS to Use Kerberos</A></H2>
<P>Once youhave configured Kerberos on your system(s), you can then enable Kerberos authentication by selecting the <tt>Negotiate</tt> authentication type. The simplest way to do this is using the <tt>cupsctl(8)</tt> command on your server(s):</P>
<P>Once you have configured Kerberos on your system(s), you can then enable Kerberos authentication by selecting the <tt>Negotiate</tt> authentication type. The simplest way to do this is using the <tt>cupsctl(8)</tt> command on your server(s):</P>
<PRE CLASS="command">
<KBD>cupsctl DefaultAuthType=Negotiate</KBD>
+2 -2
Ver Arquivo
@@ -91,7 +91,7 @@ network URIs.
<dt><b>serial</b>
<dd style="margin-left: 5.0em">The device-uri refers to a serial device with configurable baud rate and other options. If the device-uri contains a baud value, it represents the maximum baud rate supported by the device.
</dl>
<p>The
<p>The
<i>scheme</i>
field provides the URI scheme that is supported by the backend. Backends should use this form only when the backend supports any URI using that scheme. The
<i>device-uri</i>
@@ -173,7 +173,7 @@ for more information.
<br>
CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
Copyright &copy; 2007-2014 by Apple Inc.
Copyright &copy; 2007-2015 by Apple Inc.
</body>
</html>
+1 -1
Ver Arquivo
@@ -83,7 +83,7 @@ Administrators wishing to prevent unauthorized cancellation of jobs via the <i>-
<a href="man-lpstat.html?TOPIC=Man+Pages"><b>lpstat</b>(1),</a>
CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
Copyright &copy; 2007-2014 by Apple Inc.
Copyright &copy; 2007-2015 by Apple Inc.
</body>
</html>
+1 -1
Ver Arquivo
@@ -24,7 +24,7 @@ The name, location, and format of this file are an implementation detail that wi
<a href="man-subscriptions.conf.html?TOPIC=Man+Pages"><b>subscriptions.conf</b>(5),</a>
CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
Copyright &copy; 2007-2014 by Apple Inc.
Copyright &copy; 2007-2015 by Apple Inc.
</body>
</html>
+5 -3
Ver Arquivo
@@ -12,7 +12,7 @@ client.conf - client configuration file for cups (deprecated)
<h2 class="title"><a name="DESCRIPTION">Description</a></h2>
The <b>client.conf</b> file configures the CUPS client and is normally located in the <i>/etc/cups</i> and/or <i>~/.cups</i> directories.
Each line in the file can be a configuration directive, a blank line, or a comment. Comment lines start with the # character.
<p><b>Note:</b> Starting with OS X 10.7, this file is only used by command-line and X11 applications.
<p><b>Note:</b> Starting with OS X 10.7, this file is only used by command-line and X11 applications plus the IPP backend.
The <b>ServerName</b> directive is not supported on OS X at all.
<h3><a name="DIRECTIVES">Directives</a></h3>
The following directives are understood by the client. Consult the online help for detailed descriptions:
@@ -38,12 +38,14 @@ CUPS adds the remote hostname ("name@server.example.com") for you. The default n
<b>Note: This directive it not supported on OS X 10.7 or later.</b>
<dt><b>ServerName </b><i>hostname-or-ip-address</i>[<i>:port</i>]<b>/version=1.1</b>
<dd style="margin-left: 5.0em">Specifies the address and optionally the port to use when connecting to a server running CUPS 1.3.12 and earlier.
<dt><b>SSLOptions </b>[<i>AllowRC4</i>] [<i>AllowSSL3</i>]
<dt><b>SSLOptions </b>[<i>AllowDH</i>] [<i>AllowRC4</i>] [<i>AllowSSL3</i>] [<i>DenyTLS1.0</i>]
<dd style="margin-left: 5.0em"><dt><b>SSLOptions None</b>
<dd style="margin-left: 5.0em">Sets encryption options (only in /etc/cups/client.conf).
By default, CUPS only supports encryption using TLS v1.0 or higher using known secure cipher suites.
The <i>AllowDH</i> option enables cipher suites using plain Diffie-Hellman key negotiation.
The <i>AllowRC4</i> option enables the 128-bit RC4 cipher suites, which are required for some older clients that do not implement newer ones.
The <i>AllowSSL3</i> option enables SSL v3.0, which is required for some older clients that do not support TLS v1.0.
The <i>DenyTLS1.0</i> option disables TLS v1.0 support - this sets the minimum protocol version to TLS v1.1.
<dt><b>User </b><i>name</i>
<dd style="margin-left: 5.0em">Specifies the default user name to use for requests.
<dt><b>ValidateCerts Yes</b>
@@ -57,7 +59,7 @@ The <b>client.conf</b> file is deprecated and will no longer be supported in a f
<a href="man-cups.html?TOPIC=Man+Pages"><b>cups</b>(1),</a>
CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
Copyright &copy; 2007-2014 by Apple Inc.
Copyright &copy; 2007-2015 by Apple Inc.
</body>
</html>
+1 -1
Ver Arquivo
@@ -94,7 +94,7 @@ Compile a simple one-file CUPS filter:
<a href="man-cups.html?TOPIC=Man+Pages"><b>cups</b>(1),</a>
CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
Copyright &copy; 2007-2014 by Apple Inc.
Copyright &copy; 2007-2015 by Apple Inc.
</body>
</html>
+7 -2
Ver Arquivo
@@ -23,9 +23,11 @@ The following directives are understood by
<dl class="man">
<dt><a name="AccessLog"></a><b>AccessLog</b>
<dd style="margin-left: 5.0em"><dt><b>AccessLog </b><i>filename</i>
<dd style="margin-left: 5.0em"><dt><b>AccessLog stderr</b>
<dd style="margin-left: 5.0em"><dt><b>AccessLog syslog</b>
<dd style="margin-left: 5.0em">Defines the access log filename.
Specifying a blank filename disables access log generation.
The value "stderr" causes log entries to be sent to the standard error file when the scheduler is running in the foreground, or to the system log daemon when run in the background.
The value "syslog" causes log entries to be sent to the system log daemon.
The server name may be included in filenames using the string "%s", for example:
<pre class="man">
@@ -50,9 +52,11 @@ The default is usually "/usr/share/cups".
The default is usually "/usr/share/doc/cups".
<dt><a name="ErrorLog"></a><b>ErrorLog</b>
<dd style="margin-left: 5.0em"><dt><b>ErrorLog </b><i>filename</i>
<dd style="margin-left: 5.0em"><dt><b>ErrorLog stderr</b>
<dd style="margin-left: 5.0em"><dt><b>ErrorLog syslog</b>
<dd style="margin-left: 5.0em">Defines the error log filename.
Specifying a blank filename disables error log generation.
The value "stderr" causes log entries to be sent to the standard error file when the scheduler is running in the foreground, or to the system log daemon when run in the background.
The value "syslog" causes log entries to be sent to the system log daemon.
The server name may be included in filenames using the string "%s", for example:
<pre class="man">
@@ -95,8 +99,10 @@ The default group is operating system specific but is usually "lp" or "nobody".
<dd style="margin-left: 5.0em">Specifies the permissions of all log files that the scheduler writes.
The default is "0644".
<dt><a name="PageLog"></a><b>PageLog </b>[ <i>filename</i> ]
<dd style="margin-left: 5.0em"><dt><b>PageLog stderr</b>
<dd style="margin-left: 5.0em"><dt><b>PageLog syslog</b>
<dd style="margin-left: 5.0em">Defines the page log filename.
The value "stderr" causes log entries to be sent to the standard error file when the scheduler is running in the foreground, or to the system log daemon when run in the background.
The value "syslog" causes log entries to be sent to the system log daemon.
Specifying a blank filename disables page log generation.
The server name may be included in filenames using the string "%s", for example:
@@ -112,8 +118,7 @@ The default is "remroot".
<dt><a name="RequestRoot"></a><b>RequestRoot </b><i>directory</i>
<dd style="margin-left: 5.0em">Specifies the directory that contains print jobs and other HTTP request data.
The default is "/var/spool/cups".
<dt><a name="Sandboxing"></a><b>Sandboxing off</b>
<dd style="margin-left: 5.0em"><dt><b>Sandboxing relaxed</b>
<dt><a name="Sandboxing"></a><b>Sandboxing relaxed</b>
<dd style="margin-left: 5.0em"><dt><b>Sandboxing strict</b>
<dd style="margin-left: 5.0em">Specifies the level of security sandboxing that is applied to print filters, backends, and other child processes of the scheduler.
The default is "strict".
+1 -1
Ver Arquivo
@@ -108,7 +108,7 @@ service using the corresponding control program.
CUPS Online Help (<a href="http://localhost:631/help)">http://localhost:631/help)</a>,
RFC 2569
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
Copyright &copy; 2007-2014 by Apple Inc.
Copyright &copy; 2007-2015 by Apple Inc.
</body>
</html>
+1 -1
Ver Arquivo
@@ -49,7 +49,7 @@ The default is 120 seconds (2 minutes).
<a href="man-cups-snmp.html?TOPIC=Man+Pages"><b>cups-snmp</b>(8),</a>
CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
Copyright &copy; 2007-2014 by Apple Inc.
Copyright &copy; 2007-2015 by Apple Inc.
</body>
</html>
+1 -1
Ver Arquivo
@@ -48,7 +48,7 @@ The CUPS SNMP backend uses the information from the Host, Printer, and Port Moni
<a href="man-lpinfo.html?TOPIC=Man+Pages"><b>lpinfo</b>(8),</a>
CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
Copyright &copy; 2007-2014 by Apple Inc.
Copyright &copy; 2007-2015 by Apple Inc.
</body>
</html>
+1 -1
Ver Arquivo
@@ -113,7 +113,7 @@ CUPS Online Help (<a href="http://localhost:631/help)">http://localhost:631/help
CUPS Web Site (<a href="http://www.CUPS.org)">http://www.CUPS.org)</a>,
PWG Internet Printing Protocol Workgroup (<a href="http://www.pwg.org/ipp">http://www.pwg.org/ipp</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
Copyright &copy; 2007-2014 by Apple Inc.
Copyright &copy; 2007-2015 by Apple Inc.
</body>
</html>
+1 -1
Ver Arquivo
@@ -78,7 +78,7 @@ Also, printer and class names are <i>not</i> case-sensitive.
<br>
CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
Copyright &copy; 2007-2014 by Apple Inc.
Copyright &copy; 2007-2015 by Apple Inc.
</body>
</html>
+1 -1
Ver Arquivo
@@ -115,7 +115,7 @@ This is useful for debugging SAMBA configuration problems.
<b>smb.conf</b>(5),
CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
Copyright &copy; 2007-2014 by Apple Inc.
Copyright &copy; 2007-2015 by Apple Inc.
</body>
</html>
+1 -1
Ver Arquivo
@@ -88,7 +88,7 @@ You cannot set the Listen or Port directives using <b>cupsctl</b>.
<br>
CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
Copyright &copy; 2007-2014 by Apple Inc.
Copyright &copy; 2007-2015 by Apple Inc.
</body>
</html>
+1 -1
Ver Arquivo
@@ -78,7 +78,7 @@ archives to further reduce their size.
<a href="man-ppdcfile.html?TOPIC=Man+Pages"><b>ppdcfile</b>(5),</a>
CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
Copyright &copy; 2007-2014 by Apple Inc.
Copyright &copy; 2007-2015 by Apple Inc.
</body>
</html>
+1 -1
Ver Arquivo
@@ -188,7 +188,7 @@ For printers that cannot produce copies on their own, the num-copies field will
<a href="man-cups-files.conf.html?TOPIC=Man+Pages"><b>cups-files.conf</b>(5),</a>
CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
Copyright &copy; 2007-2014 by Apple Inc.
Copyright &copy; 2007-2015 by Apple Inc.
</body>
</html>
+2 -2
Ver Arquivo
@@ -14,7 +14,7 @@ cupsd - cups scheduler
[
<b>-c</b>
<i>config-file</i>
] [
] [
<b>-f</b>
] [
<b>-F</b>
@@ -111,7 +111,7 @@ in the foreground with a test configuration file called
<b>systemd</b>(8),
CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
Copyright &copy; 2007-2014 by Apple Inc.
Copyright &copy; 2007-2015 by Apple Inc.
</body>
</html>

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