Comparar commits

..

40 Commits

Autor SHA1 Mensagem Data
Michael Sweet a215cf8413 Import CUPS v2.0.3 2016-03-15 10:40:44 -04:00
Michael Sweet 4ef75dec45 Import CUPS v2.0.2 2016-03-15 10:40:41 -04:00
Michael Sweet 86243a7551 Import CUPS v2.0.1 2016-03-15 10:40:34 -04:00
Michael Sweet b93671244e Import CUPS v2.0.0 2016-03-15 10:40:30 -04:00
Michael Sweet 5d2cc5d32d Import CUPS v2.0rc1 2016-03-15 10:40:26 -04:00
Michael Sweet 1a18c85cd1 Import CUPS v2.0b1 2016-03-15 10:40:21 -04:00
Michael Sweet b60086f8ae Import CUPS v1.7.5 2016-03-15 10:37:32 -04:00
Michael Sweet 215ef63830 Import CUPS v1.7.4 2016-03-15 10:37:23 -04:00
Michael Sweet a51f28ec99 Import CUPS v1.7.3 2016-03-15 10:37:18 -04:00
Michael Sweet 71f63681cb Import CUPS v1.7.2 2016-03-15 10:37:10 -04:00
Michael Sweet 61515785f7 Import CUPS v1.7.1 2016-03-15 10:36:17 -04:00
msweet 75efa1051d Changelog.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/branches/branch-1.7@11429 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-11-12 14:11:40 +00:00
msweet f9d9f12690 Mirror fix of typo.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/branches/branch-1.7@11424 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-11-08 19:51:01 +00:00
msweet 7416dfe99a Mirror fix from trunk.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/branches/branch-1.7@11422 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-11-08 19:44:10 +00:00
msweet dd0eea8e71 Mirror fix from trunk.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/branches/branch-1.7@11418 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-11-08 15:18:01 +00:00
msweet 0c229544f4 More changelog.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/branches/branch-1.7@11402 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-11-06 21:38:09 +00:00
msweet b3533f112d Mirror changes from trunk + changelog.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/branches/branch-1.7@11399 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-11-06 21:36:35 +00:00
msweet 3b2526b366 These files too.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/branches/branch-1.7@11397 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-11-06 20:09:46 +00:00
msweet ba38d7d9dc Make sure to substitute keywords.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/branches/branch-1.7@11396 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-11-06 20:09:03 +00:00
msweet 4bdbabf76b Fix "make check" on Linux (<rdar://problem/14292998>)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/branches/branch-1.7@11395 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-11-06 20:06:50 +00:00
msweet 64e918f26a Ignore generated files.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/branches/branch-1.7@11394 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-11-06 16:04:55 +00:00
msweet 111ff13a26 Fix compiler warnings when building with newer versions of GNU TLS - code now
requires GNU TLS 2.0 or higher.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/branches/branch-1.7@11392 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-11-06 01:29:56 +00:00
msweet f4515965b3 Mirror changes from trunk.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/branches/branch-1.7@11383 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-11-05 02:24:05 +00:00
msweet c7233aabe5 Mirror changes from trunk.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/branches/branch-1.7@11380 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-11-05 01:14:53 +00:00
msweet 8eabd901fe <rdar://problem/15386424> cups.org: gunzip bug prevents use of some gzip'd PPD files (and other issues)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/branches/branch-1.7@11374 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-11-04 23:49:10 +00:00
msweet 1d708564b3 Mirror fix.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/branches/branch-1.7@11372 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-11-01 18:22:37 +00:00
msweet e5d9b5e191 Mirror changes from trunk.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/branches/branch-1.7@11370 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-10-30 15:08:29 +00:00
msweet 00c4573088 Mirror fix from trunk.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/branches/branch-1.7@11367 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-10-28 15:35:57 +00:00
msweet 27efcd61e0 Add Italian localizations to packaging file.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/branches/branch-1.7@11359 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-10-24 03:04:17 +00:00
msweet 06cefec35c Mirror fix from trunk.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/branches/branch-1.7@11356 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-10-23 20:33:21 +00:00
msweet c2def0ced7 Mirror fix from trunk.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/branches/branch-1.7@11353 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-10-23 19:53:08 +00:00
msweet e9152ac713 Mirror fix from trunk.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/branches/branch-1.7@11345 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-10-18 21:14:52 +00:00
msweet 3d3f64a982 Mirror fix from trunk.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/branches/branch-1.7@11319 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-09-27 16:18:26 +00:00
msweet 4ecc320364 Mirror fix from trunk.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/branches/branch-1.7@11311 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-09-27 14:23:42 +00:00
msweet 60c3ee0499 Mirror fix from trunk.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/branches/branch-1.7@11308 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-09-27 14:09:25 +00:00
msweet 305331a392 Don't use "rfo" for CUPS queues (mirror previous bug fix for mDNSResponder).
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/branches/branch-1.7@11269 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-09-04 20:05:00 +00:00
msweet 40e88e9009 Update Japanese localization.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/branches/branch-1.7@11265 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-08-29 20:11:25 +00:00
msweet 5f19ab52fe Mirror changes from trunk.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/branches/branch-1.7@11240 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-08-14 20:33:55 +00:00
msweet 4a842d5397 Point source distributions to 1.7 branch.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/branches/branch-1.7@11226 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-08-06 17:23:54 +00:00
msweet 75ff7c7fea Branch trunk for CUPS 1.7.x.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/branches/branch-1.7@11224 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-08-06 17:05:52 +00:00
799 arquivos alterados com 81761 adições e 76597 exclusões
-3
Ver Arquivo
@@ -1,3 +0,0 @@
.git* export-ignore
.mailmap export-ignore
tools export-ignore
-156
Ver Arquivo
@@ -1,156 +0,0 @@
*.a
*.bck
*.cgi
*.dylib
*.gz
*.o
*.so
*.so.*
*.tokens
.buildrev
autom4te.cache
config.h
config.log
config.status
cups-config
Makedefs
backend/dnssd
backend/http
backend/ipp
backend/lpd
backend/mdns
backend/snmp
backend/socket
backend/test1284
backend/testbackend
backend/testsupplies
backend/usb
berkeley/lpc
berkeley/lpq
berkeley/lpr
berkeley/lprm
cgi-bin/makedocset
cgi-bin/testcgi
cgi-bin/testhi
cgi-bin/testhi.index
cgi-bin/testtemplate
conf/cups-files.conf
conf/cupsd.conf
conf/mime.convs
conf/pam.std
conf/snmp.conf
cups/locale/
cups/test.pwg
cups/testadmin
cups/testarray
cups/testcache
cups/testconflicts
cups/testcreds
cups/testcups
cups/testdest
cups/testfile
cups/testhttp
cups/testi18n
cups/testipp
cups/testlang
cups/testoptions
cups/testppd
cups/testpwg
cups/testsnmp
cups/tlscheck
desktop/cups.desktop
doc/index.html
doc/*/index.html
filter/commandtops
filter/gziptoany
filter/pstops
filter/rasterbench
filter/rastertoepson
filter/rastertohp
filter/rastertolabel
filter/rastertopwg
filter/test.raster
filter/testraster
locale/checkpo
locale/po2strings
locale/strings2po
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
man/mantohtml
monitor/bcp
monitor/tbcp
notifier/dbus
notifier/mailto
notifier/rss
notifier/testnotify
packaging/cups.list
org.cups.docset*
patches
ppdc/genstrings
ppdc/ppd/
ppdc/ppd2/
ppdc/ppdc
ppdc/ppdc-static
ppdc/ppdhtml
ppdc/ppdi
ppdc/ppdi-static
ppdc/ppdmerge
ppdc/ppdpo
ppdc/sample-import.drv
ppdc/sample.c
ppdc/testcatalog
scheduler/convert
scheduler/cups-deviced
scheduler/cups-driverd
scheduler/cups-exec
scheduler/cups-lpd
scheduler/cups-lpd.xinetd
scheduler/cups.sh
scheduler/cups.xml
scheduler/cupsd
scheduler/cupsfilter
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
scheduler/testlpd
scheduler/testmime
scheduler/testspeed
scheduler/testsub
systemv/accept
systemv/cancel
systemv/cupsaccept
systemv/cupsaddsmb
systemv/cupsctl
systemv/cupsdisable
systemv/cupsenable
systemv/cupsreject
systemv/cupstestdsc
systemv/cupstestppd
systemv/lp
systemv/lpadmin
systemv/lpinfo
systemv/lpmove
systemv/lpoptions
systemv/lpstat
systemv/reject
templates/header.tmpl
templates/*/header.tmpl
test/cups-str-*.html
test/*_log-*
test/ippfind
test/ippfind-static
test/ippserver
test/ippserver-shared
test/ipptool
test/ipptool-static
xcode/CUPS.xcodeproj/project.xcworkspace/
xcode/CUPS.xcodeproj/xcuserdata/
-11
Ver Arquivo
@@ -1,11 +0,0 @@
# Prevent git from showing duplicate names with commands like "git shortlog"
# See the manpage of git-shortlog for details.
# The syntax is:
# Name that should be used <email that should be used> Bad name <bad email>
#
# You can skip Bad name if it is the same as the one that should be used, and is unique.
#
# This file is up-to-date if the command git log --format="%aN <%aE>" | sort -u
# gives no duplicates.
Michael R Sweet <michaelrsweet@gmail.com> msweet <msweet@a1ca3aef-8c08-0410-bb20-df032aa958be>
Michael R Sweet <michaelrsweet@gmail.com> Michael Sweet <msweet@msweet-imac.local>
-150
Ver Arquivo
@@ -1,150 +0,0 @@
CHANGES-2.1.txt
---------------
CHANGES IN CUPS V2.1.4
- Fixed reporting of 1284 Device IDs (Issue #3835, PR #3836)
- Fixed printing of multiple files to raw queues (Issue #4782)
- The scheduler did not implement the Hold-New-Jobs opertion correctly
(Issue #4767)
- The ipptool program truncated values at 8k (Issue #4786)
- The ipptool program did not correctly report uriScheme values in plist
output (Issue #4785)
- The cups-lpd mini-daemon incorrectly included the document-name
attribute when creating a job. It should only be included when
sending a job (Issue #4790)
- USB quirk updates (Issue #4778, Issue #4789)
- Documentation update (Issue #4772)
CHANGES IN CUPS V2.1.3
- The default password function did not work on some platforms
(Issue #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
(Issue #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 (Issue #4752)
- cupsEncodeOptions2 incorrectly handled escaped values
(<rdar://problem/19736672>)
- The scheduler did not allow access to resource files (icons, etc.)
when the web interface was disabled (Issue #4755)
- Localization fix (Issue #4756)
CHANGES IN CUPS V2.1.2
- 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.1.1
- 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 (Issue #4725)
- Some older HP LaserJet printers need a delayed close when printing
using the libusb-based USB backend (Issue #4549)
- The libusb-based USB backend did not unload the kernel usblp module
if it was preventing the backend from accessing the printer
(Issue #4707)
- Current Primera printers were incorrectly reported as Fargo printers
(Issue #4708)
- The IPP backend did not always handle jobs getting canceled at the
printer (<rdar://problem/22716820>)
- Scheduler logging change (Issue #4728)
- Added USB quirk for Canon MP530 (Issue #4730)
- The scheduler did not deliver job notifications for jobs submitted to
classes (Issue #4733)
- Changing the printer-is-shared value for a remote queue did not
produce an error (Issue #4738)
- The IPP backend incorrectly included the job-password attribute in
Validate-Job requests (<rdar://problem/23531939>)
- Updated localizations (Issue #4709)
CHANGES IN CUPS V2.1.0
- Fixed more scheduler crash bugs in the new logging code (Issue #4687,
Issue #4690)
- The scheduler did not use the ConfigFilePerm setting when copying PPD
files or interface scripts attached to a request (Issue #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 (Issue #4684)
- The new PDF file type rule did not work (Issue #4692)
- The scheduler did not update the jobs.cache file when job files were
expired (Issue #4706)
- Fixed some configure script issues (Issue #4694, Issue #4695, Issue #4698)
- Documentation updates (Issue #4691, Issue #4693)
CHANGES IN CUPS V2.1rc1
- Added support for 3D printers (basic types only, no built-in filters)
based on PWG white paper.
- Fixed bugs in the new journald support (Issue #4655, Issue #4658,
Issue #4661)
- Fixed domain socket support on Linux (Issue #4679)
- Fixed signal handlers in the dnssd and usb backends (Issue #4671)
- <Limit All> in <Policy> sections now applies to all operations when
used by itself (Issue #4659)
- Configure script changes for systemd support (Issue #4669)
- Updated autoconf sources to use newer form of AC_INIT (Issue #4664)
CHANGES IN CUPS V2.1b1
- 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 (Issue #4518)
- Added support for EXPECT-ALL directive in ipptool test files
(Issue #4469)
- Added support for WITH-VALUE-FROM predicate in ipptool test files
(Issue #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 (Issue #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
(Issue #4589)
- The scheduler now validates ErrorPolicy values in config files
(Issue #4591)
- Long cookies caused the web interface to stop working (Issue #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
(Issue #4630)
- The scheduler now supports advanced ASL and journald logging when
"syslog" output is configured (Issue #4474)
- The scheduler now supports logging to stderr when running in the
foreground (Issue #4505)
+168
Ver Arquivo
@@ -0,0 +1,168 @@
CHANGES-IPPTOOL.txt - 2015-05-15
--------------------------------
This file provides a list of changes to the ipptool binary distribution posted
on CUPS.org.
2014-05-15
- Added support for simultaneous XML and test output from ipptool.
- Added support for PAUSE directive in ipptool test files.
2013-07-15
- New ippfind tool now included with ipptool.
- Added support for automatically extending the timeout when all of the
request data has not yet been written (all platforms but Windows
which does not support it...)
- Fixed several ipptool test files that used old STATUS names.
2013-04-18
- Fixed some HTTP issues with authentication and compression.
- The IPP/1.1 test file did not allow for sufficient retries when
printing.
- The IPP/1.1 test file did not allow for empty printer-name values.
- The IPP Everywhere test file contained numerous errors.
- The color.jpg test file used a progressive mode instead of the
baseline JPEG mode.
- The IPP/1.1 test file referenced "color.jpeg" instead of "color.jpg".
2013-01-31
- Added support for DEFINE-MATCH and DEFINE-NO-MATCH as STATUS
predicates.
- Added support for WITH-VALUE and resolution values.
- Added support for SKIP-IF-MISSING (skip test if file is missing)
- Added support for octetString values.
- Added support for document compression in Print-Job and Send-Document
requests.
- Fixed REPEAT-MATCH for STATUS and EXPECT - was incorrectly erroring
out.
- Fixed a bug where bad IPP responses would cause ipptool to crash.
2012-02-28
- Changed behavior of WITH-VALUES "/regex/" to not require all values to
match.
- Added WITH-ALL-VALUES directive for EXPECT predicates that require all
values to match.
- Updated test files to use WITH-ALL-VALUES where necessary.
- Updated test files to use new ABNF for media names from PWG Media
Names 2.0.
2012-02-06
- Fixed the packaging of ipptool on Windows (removed unnecessary DLLs)
- Fixed an crash in ipptool when mixing DISPLAY with -I and a failed
request.
- Added a Print-Job test file.
- Added a "setdebug" batch file for Windows
- Added support for a CUPS_DISABLE_ASYNC_CONNECT environment variable.
2012-01-10
- Fixed an issue with the IPP/1.1 test file where the "waiting for job
completion" test did not work.
- The attribute groups out of order error was not shown for the
operation-attributes-tag group.
2011-12-02
- Fixed a truncated XML output bug that would happen for certain errors.
- Fixed the order-of-groups tests.
- Fixed "WITH-VALUE >N" for rangeOfInteger attributes.
- The Windows installer was missing the get-printer-attributes.test
file.
- The Linux binaries are now compiled for all LSB 4.x-compliant Linux
distributions.
- The Linux binaries no longer support SSL or TLS.
2011-10-05
- Fixed a crasher bug that showed up on Windows.
- The IPP/1.1 test would hang if the initial Print-Job test failed.
- Fixed a typo in the IPP/2.0 test.
2011-10-03
- Using OF-TYPE with the "no-value" or "unknown" out-of-band value tags
now works without special WITH-VALUE strings.
- ipptool now shows an error when an attribute appears more than once
within the same attribute group.
- ipptool did not display attributes as specified by the DISPLAY
directive when a test error failed.
- Fixed one spot where DEFINE-VALUE was still treated as an error when
the EXPECT test failed.
- uriScheme values were not displayed properly.
- Updated the IPP/1.1 tests to properly validate support for
job-hold-until-default and job-hold-until-supported when the Hold-Job
operation is supported.
- Updated the IPP/1.1 tests to properly check for the various standard
media sizes for the printing tests.
- Updated the IPP/1.1 tests to accept "no-value" for media-default an
orientation-requested-default.
- Updated the IPP/1.1 tests to accept "unknown" for job-state.
- Updated the IPP/1.1 tests to not perform the bogus URI printing tests
unless the "document-uri" variable is defined.
- Updated the IPP/2.0 tests to properly validate media-col
"media-xxx-supported" attributes.
- Updated the IPP/2.2 tests to properly validate media-ready and
media-col-ready.
2011-09-28
- Test output now includes a summary and overall score at the end.
- The MATCH-VALUE predicate now correctly deals with a failed EXPECT
condition.
- The IPP/1.1 test suite now looks for legacy media names and uses them
if the corresponding PWG standard names are not present.
- The IPP/1.1 test suite now tests the Print-Job+Release-Job when the
printer supports the job-hold-until attribute, Hold-Job operation, and
Release-Job operation.
2011-09-21
- Fixes for HTTP chunking, timeout, and encryption issues reported by
various users.
- Greatly improved IPP tests with added IPP/2.2 tests.
- New test documents - 1-page and 4-page mixed A4/Letter PDF/PS and a
couple JPEGs.
- New REPEAT directives to programmatically repeat tests as needed.
2011-08-16
- The Windows version no longer requires Visual Studio to be installed.
- The Windows version now supports SSL.
- Added "ipps" URI support.
- Added a new "-T" option.
- Added support for fractional seconds for the -i option and DELAY
directive.
- Added support for authentication.
- Added DEFINE-MATCH, DEFINE-NO-MATCH, DEFINE-VALUE, IF-NOT-DEFINED,
IGNORE-ERRORS, SKIP-IF-DEFINED, SKIP-IF-NOT-DEFINED,
SKIP-PREVIOUS-ERROR directives.
- WITH-VALUE now supports variable expansion.
- Updated the IPP/1.1 conformance test to skip the "my-jobs different
user" test if the printer URI contains a username.
- Updated the IPP conformance tests to validate media, media-default,
and media-supported values.
- No longer error out if a Printer returns a different version number in
the response when the request contains the version 0.0.
2010-10-16
- Initial release of standalone binary.
-183
Ver Arquivo
@@ -1,183 +0,0 @@
CHANGES - 2.2.4 - 2017-06-30
============================
CHANGES IN CUPS V2.2.4
----------------------
- The scheduler did not remove old job files (Issue #4987)
- cupsEnumDests did not return early when all printers had been discovered
(Issue #4989)
- The CUPS build system now supports cross-compilation (Issue #4897)
- Added a new CUPS Programming Manual to replace the aging API documentation.
- Added the `cupsAddIntegerOption` and `cupsGetIntegerOption` functions
(Issue #4992)
- The `cupsGetDests` and `cupsCreateJob` functions now support Bonjour printers
(Issue #4993)
- Added a USB quirk rule for Lexmark E260dn printers (Issue #4994)
- Fixed a potential buffer overflow in the `cupstestppd` utility (Issue #4996)
- IPP Everywhere improvements (Issue #4998)
- Fixed the "cancel all jobs" function in the web interface for several
languages (Issue #4999)
- Fixed issues with local queues (Issue #5003, Issue #5008, Issue #5009)
- The `lpstat` command now supports a `-e` option to enumerate local printers
(either previously added or on the network) that can be accessed
(Issue #5005)
- The `lp` and `lpr` commands now support printing to network printers that
haven't yet been added (Issue #5006)
- Fixed a typo in the mime.types file.
- Fixed a bug in the Spanish web interface template (Issue #5016)
- The `cupsEnumDests*` and `cupsGetDest*` functions now report the value of the
"printer-is-temporary" Printer Status attribute (Issue #5028)
- Added Chinese localization (Issue #5029)
- The `cupsCheckDestSupported` function did not support `NULL` values
(Issue #5031)
- Fixed some issues in the RPM spec file (Issue #5032)
- The `cupsConnectDest` function now supports the `CUPS_DEST_FLAGS_DEVICE` flag
for explicitly connecting to the device (printer) associated with the
destination.
- The `SSLOptions` directive in "client.conf" and "cupsd.conf" now supports
`DenyCBC` and `DenyTLS1.0` options (Issue #5037)
CHANGES IN CUPS V2.2.3
----------------------
- The IPP backend could get into an infinite loop for certain errors, causing a
hung queue (<rdar://problem/28008717>)
- The scheduler could pause responding to client requests in order to save state
changes to disk (<rdar://problem/28690656>)
- Added support for PPD finishing keywords (Issue #4960, Issue #4961,
Issue #4962)
- The IPP backend did not send a media-col attribute for just the source or type
(Issue #4963)
- IPP Everywhere print queues did not always support all print qualities
supported by the printer (Issue #4953)
- IPP Everywhere print queues did not always support all media types supported
by the printer (Issue #4953)
- The IPP Everywhere PPD generator did not return useful error messages
(Issue #4954)
- The IPP Everywhere finishings support did not work correctly with common UI or
command-line options (Issue #4976)
- Fixed an error handling issue for the network backends (Issue #4979)
- The default cupsd.conf file did not work on systems compiled without Kerberos
support (Issue #4947)
- The "reprint job" option was not available for some canceled jobs
(Issue #4915)
- Updated the job listing in the web interface (Issue #4978)
- Fixed some localization issues on macOS (<rdar://problem/27245567>)
CHANGES IN CUPS V2.2.2
----------------------
- Fixed some issues with the Zebra ZPL printer driver (Issue #4898)
- Fixed some issues with IPP Everywhere printer support (Issue #4893,
Issue #4909, Issue #4916, Issue #4921, Issue #4923, Issue #4932, Issue #4933,
Issue #4938)
- The rastertopwg filter could crash with certain input (Issue #4942)
- Optimized connection usage in the IPP backend (<rdar://problem/29547323>)
- The scheduler did not detect when an encrypted connection was closed by the
client on Linux (Issue #4901)
- The cups-lpd program did not catch all legacy usage of ISO-8859-1
(Issue #4899)
- Fixed builds on systems without a working poll() implementation (Issue #4905)
- Added a USB quirk rule for the Kyocera Ecosys P6026cdn (Issue #4900)
- The scheduler no longer creates log files on startup
(<rdar://problem/28332470>)
- The ippContainsString function now uses case-insensitive comparisons for
mimeMediaType, name, and text values in conformance with RFC 2911.
- The network backends now log the addresses that were found for a printer
(<rdar://problem/29268474>)
- Let's Encrypt certificates did not work when the hostname contained uppercase
letters (Issue #4919)
- Fixed reporting of printed pages in the web interface (Issue #4924)
- Updated systemd config files (Issue #4935)
- Updated documentation (PR #4896)
- Updated localizations (PR #4894, PR #4895, PR #4904, PR #4908, Issue #4946)
- Updated packaging files (Issue #4940)
CHANGES IN CUPS V2.2.1
----------------------
- Added "CreateSelfSignedCerts" directive for cups-files.conf to control whether
the scheduler automatically creates its own self-signed X.509 certificates for
TLS connections (Issue #4876)
- http*Connect did not handle partial failures (Issue #4870)
- Addressed some build warnings on Linux (Issue #4881)
- cupsHashData did not use the correct hashing algorithm
(<rdar://problem/28209220>)
- Updated man pages (PR #4885)
- Updated localizations (PR #4877, PR #4886)
CHANGES IN CUPS V2.2.0
----------------------
- Normalized the TLS certificate validation code and added additional error
messages to aid troubleshooting.
- The httpConnect functions did not work on Linux when cupsd was not running
(Issue #4870)
- The --no-remote-any option of cupsctl had no effect (Issue #4866)
- http*Connect did not return early when all addresses failed (Issue #4870)
CHANGES IN CUPS V2.2rc1
-----------------------
- Updated the list of supported IPP Everywhere media types.
- The IPP backend did not validate TLS credentials properly.
- The printer-state-message attribute was not cleared after a print job with no
errors (Issue #4851)
- The CUPS-Add-Modify-Class and CUPS-Add-Modify-Printer operations did not
always return an error for failed adds (Issue #4854)
- PPD files with names longer than 127 bytes did not work (Issue #4860)
- Updated localizations (Issue #4846, PR #4858)
CHANGES IN CUPS V2.2b2
----------------------
- Added Upstart support (PR #4825)
- CUPS now supports Let's Encrypt certificates on Linux.
CHANGES IN CUPS V2.2b1
----------------------
- All CUPS commands now support POSIX options (Issue #4813)
- The scheduler now restarts faster (Issue #4760)
- Improved performance of web interface with large numbers of jobs (Issue #3819)
- Encrypted printing can now be limited to only trusted printers and servers
(<rdar://problem/25711658>)
- The scheduler now advertises PWG Raster attributes for IPP Everywhere clients
(Issue #4428)
- The scheduler now logs informational messages for jobs at LogLevel "info"
(Issue #4815)
- The scheduler now uses the getgrouplist function when available (Issue #4611)
- The IPP backend no longer enables compression by default except for certain
raster formats that generally benefit from it (<rdar://problem/25166952>)
- The scheduler did not handle out-of-disk situations gracefully (Issue #4742)
- The LPD mini-daemon now detects invalid UTF-8 sequences in job, document, and
user names (Issue #4748)
- The IPP backend now continues on to the next job when the remote server/
printer puts the job on hold (<rdar://problem/24858548>)
- The scheduler did not cancel multi-document jobs immediately
(<rdar://problem/24854834>)
- The scheduler did not return non-shared printers to local clients unless they
connected to the domain socket (<rdar://problem/24566996>)
- The scheduler now reads the spool directory if one or more job cache entries
point to deleted jobs (<rdar://problem/24048846>)
- Added support for disc media sizes (<rdar://problem/20219536>)
- The httpAddrConnect and httpConnect* APIs now try connecting to multiple
addresses in parallel (<rdar://problem/20643153>)
- The cupsd domain socket is no longer world-accessible on macOS
(<rdar://problem/7542560>)
- Interface scripts are no longer supported for security reasons
(<rdar://problem/23135640>)
- Added a new cupsHashData API and support for hashed job passwords
(<rdar://problem/20221502>)
- Localization fixes (<rdar://problem/25292403>, <rdar://problem/25461517>,
Issue #4041, Issue #4796)
- Documentation changes (Issue #4624, Issue #4781)
- Packaging fixes (PR #4832)
+2 -16
Ver Arquivo
@@ -1,19 +1,5 @@
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.txt - 2.0.3 - 2015-06-08
--------------------------------
CHANGES IN CUPS V2.0.3
-635
Ver Arquivo
@@ -1,635 +0,0 @@
# Contributing to CUPS
CUPS is developed by Apple Inc. and distributed as open source software under a
combination of GNU GPL2 and GNU LGPL2 licenses with exceptions to allow
developers on Apple's operating systems to develop CUPS-based software under
alternate license terms. Significant contributions to CUPS must be licensed to
Apple using the Apple Contributor Agreement:
https://www.cups.org/AppleContributorAgreement_2011-03-10.pdf
Contributions should be submitted as attachments to bug reports on the CUPS web
site. Changes to existing source files should be submitted as unified diffs
(both Subversion and Git produce this format by default) while new source files
should be provided as-is or in an archive. Github pull requests can also be
used to submit changes.
## HOW TO CONTACT THE DEVELOPERS
The CUPS mailing lists are the primary means of asking questions and informally
discussing issues and feature requests with the CUPS developers and other
experienced CUPS users and developers. The "cups" mailing list is intended for
CUPS usage questions and new software announcements while the "cups-devel"
mailing list provides a forum for CUPS developers and monitoring new bugs.
## INTERFACES
CUPS interfaces, including the C APIs and command-line arguments, environment
variables, configuration files, and output format, are stable across patch
versions and are generally backwards-compatible with interfaces used in prior
major and minor versions. However, program interfaces such as those used by
the scheduler to run filter, port monitor, and backend processes for job
processing should only be considered stable from the point of view of a
filter, port monitor, or backend. Software that simulates the scheduler in
order to run those programs outside of CUPS must necessarily be updated when
the corresponding interface is changed in a subsequent CUPS release, otherwise
undefined behavior can occur.
CUPS C APIs starting with an underscore (_) are considered to be private to
CUPS and are not subject to the normal guarantees of stability between CUPS
releases and must never be used in non-CUPS source code. Similarly,
configuration and state files written by CUPS are considered private if a
corresponding man page is not provided with the CUPS release. Never rely on
undocumented files or formats when developing software for CUPS. Always use a
published C API to access data stored in a file to avoid compatibility problems
in the future.
## BUILD SYSTEM
The CUPS build system uses GNU autoconf to tailor the library to the local
operating system. Project files for the current release of Microsoft Visual
Studio are also provided for Microsoft Windows®. To improve portability,
makefiles must not make use of features unique to GNU make. See the MAKEFILE
GUIDELINES section for a description of the allowed make features and makefile
guidelines.
Additional GNU build programs such as GNU automake and GNU libtool must not be
used. GNU automake produces non-portable makefiles which depend on GNU-
specific extensions, and GNU libtool is not portable or reliable enough for
CUPS.
## VERSION NUMBERING
CUPS uses a three-part version number separated by periods to represent the
major, minor, and patch release numbers. Major release numbers indicate large
design changes or backwards-incompatible changes to the CUPS API or CUPS
Imaging API. Minor release numbers indicate new features and other smaller
changes which are backwards-compatible with previous CUPS releases. Patch
numbers indicate bug fixes to the previous feature or patch release.
> Note:
>
> When we talk about compatibility, we are talking about binary compatibility
> for public APIs and output format compatibility for program interfaces.
> Changes to configuration file formats or the default behavior of programs
> are not generally considered incompatible as the upgrade process can
> normally address such changes gracefully.
Production releases use the plain version numbers:
MAJOR.MINOR.PATCH
1.0.0
...
1.1.0
...
1.1.23
...
2.0.0
...
2.1.0
2.1.1
2.1.2
2.1.3
The first production release in a MAJOR.MINOR series (MAJOR.MINOR.0) is called
a feature release. Feature releases are the only releases that may contain new
features. Subsequent production releases in a MAJOR.MINOR series may only
contain bug fixes.
Beta-test releases are identified by appending the letter B to the major and
minor version numbers followed by the beta release number:
MAJOR.MINORbNUMBER
2.2b1
Release candidates are identified by appending the letters RC to the major and
minor version numbers followed by the release candidate number:
MAJOR.MINORrcNUMBER
2.2rc1
## CODING GUIDELINES
Contributed source code must follow the guidelines below. While the examples
are for C and C++ source files, source code for other languages should conform
to the same guidelines as allowed by the language.
### SOURCE FILES
All source files names must be 16 characters or less in length to ensure
compatibility with older UNIX filesystems. Source files containing functions
have an extension of ".c" for C and ".cxx" for C++ source files. All other
"include" files have an extension of ".h". Tabs are set to 8 characters or
columns.
> Note:
>
> The ".cxx" extension is used because it is the only common C++ extension
> between Linux, macOS, UNIX, and Windows.
The top of each source file contains a header giving the purpose or nature of
the source file and the copyright and licensing notice:
/*
* Description of file contents.
*
* Copyright 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/".
*/
For source files that are subject to the Apple OS-Developed Software exception,
the following additional comment appears after the contact information:
* This file is subject to the Apple OS-Developed Software exception.
### HEADER FILES
All public header files must include the "versioning.h" header file, or a header
that does so. Function declarations are then "decorated" with the correct
_CUPS_API_major_minor macro to define its availability based on the build
environment, for example:
extern int cupsDoThis(int foo, int bar) _CUPS_API_2_2;
Private API header files must be named with the suffix "-private", for example
the "cups.h" header file defines all of the public CUPS APIs while the
"cups-private.h" header file defines all of the private CUPS APIs as well.
Typically a private API header file will include the corresponding public API
header file.
### COMMENTS
All source code utilizes block comments within functions to describe the
operations being performed by a group of statements; avoid putting a comment
per line unless absolutely necessary, and then consider refactoring the code
so that it is not necessary. C source files use the block comment format
("/* comment */") since many vendor C compilers still do not support C99/C++
comments ("// comment"):
/*
* Clear the state array before we begin...
*/
for (i = 0; i < (sizeof(array) / sizeof(sizeof(array[0])); i ++)
array[i] = CUPS_STATE_IDLE;
/*
* Wait for state changes on another thread...
*/
do
{
for (i = 0; i < (sizeof(array) / sizeof(sizeof(array[0])); i ++)
if (array[i] != CUPS_STATE_IDLE)
break;
if (i == (sizeof(array) / sizeof(array[0])))
sleep(1);
} while (i == (sizeof(array) / sizeof(array[0])));
### INDENTATION
All code blocks enclosed by brackets begin with the opening brace on a new
line. The code then follows starting on a new line after the brace and is
indented 2 spaces. The closing brace is then placed on a new line following
the code at the original indentation:
{
int i; /* Looping var */
/*
* Process foobar values from 0 to 999...
*/
for (i = 0; i < 1000; i ++)
{
do_this(i);
do_that(i);
}
}
Single-line statements following "do", "else", "for", "if", and "while" are
indented 2 spaces as well. Blocks of code in a "switch" block are indented 4
spaces after each "case" and "default" case:
switch (array[i])
{
case CUPS_STATE_IDLE :
do_this(i);
do_that(i);
break;
default :
do_nothing(i);
break;
}
### SPACING
A space follows each reserved word such as "if", "while", etc. Spaces are not
inserted between a function name and the arguments in parenthesis.
### RETURN VALUES
Parenthesis surround values returned from a function:
return (CUPS_STATE_IDLE);
### FUNCTIONS
Functions with a global scope have a lowercase prefix followed by capitalized
words, e.g., "cupsDoThis", "cupsDoThat", "cupsDoSomethingElse", etc. Private
global functions begin with a leading underscore, e.g., "\_cupsDoThis",
"\_cupsDoThat", etc.
Functions with a local scope are declared "static" with lowercase names and
underscores between words, e.g., "do\_this", "do\_that", "do\_something\_else", etc.
Each function begins with a comment header describing what the function does,
the possible input limits (if any), the possible output values (if any), and
any special information needed:
/*
* 'do_this()' - Compute y = this(x).
*
* Notes: none.
*/
static float /* O - Inverse power value, 0.0 <= y <= 1.1 */
do_this(float x) /* I - Power value (0.0 <= x <= 1.1) */
{
...
return (y);
}
Return/output values are indicated using an "O" prefix, input values are
indicated using the "I" prefix, and values that are both input and output use
the "IO" prefix for the corresponding in-line comment.
The Mini-XML documentation generator also understands the following special
text in the function description comment:
@deprecated@ - Marks the function as deprecated (not recommended
for new development and scheduled for removal)
@since CUPS version@ - Marks the function as new in the specified version
of CUPS.
@private@ - Marks the function as private (same as starting the
function name with an underscore)
### VARIABLES
Variables with a global scope are capitalized, e.g., "ThisVariable",
"ThatVariable", "ThisStateVariable", etc. Globals in CUPS libraries are either
part of the per-thread global values managed by the "\_cupsGlobals()" function
or are suitably protected for concurrent access. Global variables should be
replaced by function arguments whenever possible.
Variables with a local scope are lowercase with underscores between words,
e.g., "this\_variable", "that\_variable", etc. Any "local global" variables
shared by functions within a source file are declared "static". As for global
variables, local static variables are suitably protected for concurrent access.
Each variable is declared on a separate line and is immediately followed by a
comment block describing the variable:
int ThisVariable; /* The current state of this */
static int that_variable; /* The current state of that */
### TYPES
All type names are lowercase with underscores between words and "\_t" appended
to the end of the name, e.g., "cups\_this\_type\_t", "cups\_that\_type\_t", etc.
Type names start with a prefix, typically "cups" or the name of the program,
to avoid conflicts with system types. Private type names start with an
underscore, e.g., "\_cups\_this\_t", "\_cups\_that\_t", etc.
Each type has a comment block immediately after the typedef:
typedef int cups_this_type_t; /* This type is for CUPS foobar options. */
### STRUCTURES
All structure names are lowercase with underscores between words and "\_s"
appended to the end of the name, e.g., "cups\_this\_s", "cups\_that\_s", etc.
Structure names start with a prefix, typically "cups" or the name of the
program, to avoid conflicts with system types. Private structure names start
with an underscore, e.g., "\_cups\_this\_s", "\_cups\_that\_s", etc.
Each structure has a comment block immediately after the struct and each member
is documented similar to the variable naming policy above:
struct cups_this_struct_s /* This structure is for CUPS foobar options. */
{
int this_member; /* Current state for this */
int that_member; /* Current state for that */
};
### CONSTANTS
All constant names are uppercase with underscores between words, e.g.,
"CUPS\_THIS\_CONSTANT", "CUPS\_THAT\_CONSTANT", etc. Constants begin with an
uppercase prefix, typically "CUPS" or the program name. Private constants
start with an underscore, e.g., "\_CUPS\_THIS\_CONSTANT", "\_CUPS\_THAT\_CONSTANT",
etc.
Typed enumerations should be used whenever possible to allow for type checking
by the compiler.
Comment blocks immediately follow each constant:
typedef enum cups_tray_e /* Tray enumerations */
{
CUPS_TRAY_THIS, /* This tray */
CUPS_TRAY_THAT /* That tray */
} cups_tray_t;
## MAKEFILE GUIDELINES
The following is a guide to the makefile-based build system used by CUPS.
These standards have been developed over the years to allow CUPS to be built on
as many systems and environments as possible.
### GENERAL ORGANIZATION
The CUPS source code is organized functionally into a top-level makefile,
include file, and subdirectories each with their own makefile and dependencies
files. The ".in" files are template files for the autoconf software and are
used to generate a static version of the corresponding file.
### MAKEFILE DOCUMENTATION
Each makefile starts with the standard CUPS header containing the description
of the file, and CUPS copyright and license notice:
#
# Makefile for ...
#
# Copyright 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/".
#
### PORTABLE MAKEFILE CONSTRUCTION
CUPS uses a common subset of make program syntax to ensure that the software
can be compiled "out of the box" on as many systems as possible. The following
is a list of assumptions we follow when constructing makefiles:
- Targets; we assume that the make program supports the notion of simple
targets of the form "name:" that perform tab-indented commands that follow
the target, e.g.:
target:
TAB target commands
- Dependencies; we assume that the make program supports recursive dependencies
on targets, e.g.:
target: foo bar
TAB target commands
foo: bla
TAB foo commands
bar:
TAB bar commands
bla:
TAB bla commands
- Variable Definition; we assume that the make program supports variable
definition on the command-line or in the makefile using the following form:
name=value
- Variable Substitution; we assume that the make program supports variable
substitution using the following forms:
- $(name); substitutes the value of "name",
- $(name:.old=.new); substitutes the value of "name" with the filename
extension ".old" changed to ".new",
- $(MAKEFLAGS); substitutes the command-line options passed to the
program without the leading hyphen (-),
- $$; substitutes a single $ character,
- $<; substitutes the current source file or dependency, and
- $@; substitutes the current target name.
- Suffixes; we assume that the make program supports filename suffixes with
assumed dependencies, e.g.:
.SUFFIXES: .c .o
.c.o:
TAB $(CC) $(CFLAGS) -o $@ -c $<
- Include Files; we assume that the make program supports the include
directive, e.g.:
include ../Makedefs
include Dependencies
- Comments; we assume that comments begin with a # character and proceed to the
end of the current line.
- Line Length; we assume that there is no practical limit to the length of
lines.
- Continuation of long lines; we assume that the \ character may be placed at
the end of a line to concatenate two or more lines in a makefile to form a
single long line.
- Shell; we assume a POSIX-compatible shell is present on the build system.
### STANDARD VARIABLES
The following variables are defined in the "Makedefs" file generated by the
autoconf software:
- ALL_CFLAGS; the combined C compiler options,
- ALL_CXXFLAGS; the combined C++ compiler options,
- AMANDIR; the administrative man page installation directory (section 8/1m
depending on the platform),
- AR; the library archiver command,
- ARFLAGS; options for the library archiver command,
- AWK; the local awk command,
- BINDIR; the binary installation directory,
- BUILDROOT; optional installation prefix (defaults to DSTROOT),
- CC; the C compiler command,
- CFLAGS; options for the C compiler command,
- CHMOD; the chmod command,
- CXX; the C++ compiler command,
- CXXFLAGS; options for the C++ compiler command,
- DATADIR; the data file installation directory,
- DSO; the C shared library building command,
- DSOXX; the C++ shared library building command,
- DSOFLAGS; options for the shared library building command,
- INCLUDEDIR; the public header file installation directory,
- INSTALL; the install command,
- INSTALL_BIN; the program installation command,
- INSTALL_COMPDATA; the compressed data file installation command,
- INSTALL_CONFIG; the configuration file installation command,
- INSTALL_DATA; the data file installation command,
- INSTALL_DIR; the directory installation command,
- INSTALL_LIB; the library installation command,
- INSTALL_MAN; the documentation installation command,
- INSTALL_SCRIPT; the shell script installation command,
- LD; the linker command,
- LDFLAGS; options for the linker,
- LIBDIR; the library installation directory,
- LIBS; libraries for all programs,
- LN; the ln command,
- MAN1EXT; extension for man pages in section 1,
- MAN3EXT; extension for man pages in section 3,
- MAN5EXT; extension for man pages in section 5,
- MAN7EXT; extension for man pages in section 7,
- MAN8DIR; subdirectory for man pages in section 8,
- MAN8EXT; extension for man pages in section 8,
- MANDIR; the man page installation directory,
- OPTIM; common compiler optimization options,
- PRIVATEINCLUDE; the private header file installation directory,
- RM; the rm command,
- SHELL; the sh (POSIX shell) command,
- STRIP; the strip command,
- srcdir; the source directory.
### STANDARD TARGETS
The following standard targets are defined in each makefile:
- all; creates all target programs, libraries, and documentation files,
- clean; removes all target programs libraries, documentation files, and object
files,
- depend; generates automatic dependencies for any C or C++ source files (also
see "DEPENDENCIES"),
- distclean; removes autoconf-generated files in addition to those removed by
the "clean" target,
- install; installs all distribution files in their corresponding locations
(also see "INSTALL/UNINSTALL SUPPORT"),
- install-data; installs all data files in their corresponding locations (also
see "INSTALL/UNINSTALL SUPPORT"),
- install-exec; installs all executable files in their corresponding locations
(also see "INSTALL/UNINSTALL SUPPORT"),
- install-headers; installs all include files in their corresponding locations
(also see "INSTALL/UNINSTALL SUPPORT"),
- install-libs; installs all library files in their corresponding locations
(also see "INSTALL/UNINSTALL SUPPORT"), and
- uninstall; removes all distribution files from their corresponding locations
(also see "INSTALL/UNINSTALL SUPPORT").
### OBJECT FILES
Object files (the result of compiling a C or C++ source file) have the
extension ".o".
### PROGRAMS
Program files are the result of linking object files and libraries together to
form an executable file. A typical program target looks like:
program: $(OBJS)
TAB echo Linking $@...
TAB $(CC) $(LDFLAGS) -o $@ $(OBJS) $(LIBS)
### STATIC LIBRARIES
Static libraries have a prefix of "lib" and the extension ".a". A typical
static library target looks like:
libname.a: $(OBJECTS)
TAB echo Creating $@...
TAB $(RM) $@
TAB $(AR) $(ARFLAGS) $@ $(OBJECTS)
TAB $(RANLIB) $@
### SHARED LIBRARIES
Shared libraries have a prefix of "lib" and the extension ".dylib" or ".so"
depending on the operating system. A typical shared library is composed of
several targets that look like:
libname.so: $(OBJECTS)
TAB echo $(DSOCOMMAND) libname.so.$(DSOVERSION) ...
TAB $(DSOCOMMAND) libname.so.$(DSOVERSION) $(OBJECTS)
TAB $(RM) libname.so libname.so.$(DSOMAJOR)
TAB $(LN) libname.so.$(DSOVERSION) libname.so.$(DSOMAJOR)
TAB $(LN) libname.so.$(DSOVERSION) libname.so
libname.dylib: $(OBJECTS)
TAB echo $(DSOCOMMAND) libname.$(DSOVERSION).dylib ...
TAB $(DSOCOMMAND) libname.$(DSOVERSION).dylib \
TAB TAB -install_name $(libdir)/libname.$(DSOMAJOR).dylib \
TAB TAB -current_version libname.$(DSOVERSION).dylib \
TAB TAB -compatibility_version $(DSOMAJOR).0 \
TAB TAB $(OBJECTS) $(LIBS)
TAB $(RM) libname.dylib
TAB $(RM) libname.$(DSOMAJOR).dylib
TAB $(LN) libname.$(DSOVERSION).dylib libname.$(DSOMAJOR).dylib
TAB $(LN) libname.$(DSOVERSION).dylib libname.dylib
### DEPENDENCIES
Static dependencies are expressed in each makefile following the target, for
example:
foo: bar
Static dependencies are only used when it is not possible to automatically
generate them. Automatic dependencies are stored in a file named
"Dependencies" and included at the end of the makefile. The following "depend"
target rule is used to create the automatic dependencies:
depend:
TAB $(CC) -MM $(ALL_CFLAGS) $(OBJS:.o=.c) >Dependencies
We regenerate the automatic dependencies on an macOS system and express any
non-macOS dependencies statically in the makefile.
### INSTALL/UNINSTALL SUPPORT
All makefiles contains install and uninstall rules which install or remove the
corresponding software. These rules must use the $(BUILDROOT) variable as a
prefix to any installation directory so that CUPS can be installed in a
temporary location for packaging by programs like rpmbuild.
The $(INSTALL\_BIN), $(INSTALL\_COMPDATA), $(INSTALL\_CONFIG), $(INSTALL\_DATA),
$(INSTALL\_DIR), $(INSTALL\_LIB), $(INSTALL\_MAN), and $(INSTALL\_SCRIPT) variables
must be used when installing files so that the proper ownership and permissions
are set on the installed files.
The $(RANLIB) command must be run on any static libraries after installation
since the symbol table is invalidated when the library is copied on some
platforms.
+8 -10
Ver Arquivo
@@ -1,10 +1,9 @@
CREDITS - 2017-05-01
====================
CREDITS.txt - 2013-07-23
------------------------
Few projects are completed by one person, and CUPS is no exception. We'd like
to thank the following individuals for their contributions:
Few projects are completed by one person, and CUPS is no exception. We'd
like to thank the following individuals for their contributions:
Niklas 'Nille' Åkerström - Swedish localization.
Nathaniel Barbour - Lots of testing and feedback.
N. Becker - setsid().
Philippe Combes - French localization and buttons script.
@@ -18,20 +17,20 @@ to thank the following individuals for their contributions:
Wang Jian - CUPS RPM corrections.
Roderick Johnstone - Beta tester of the millenium.
Till Kamppeter - Bug fixes, beta testing, evangelism.
Iñaki Larrañaga - Basque localization.
Kenshi Muto - Japanese localization, patches, and
testing.
Tomohiro Kato - Japanese localization.
Kiko - Bug fixes.
Sergey V. Kovalyov - ESP Print Pro and CUPS beta tester.
Marek Laane - Estonian translation.
Iñaki Larrañaga - Basque localization.
Mark Lawrence - Microsoft interoperability testing.
Jeff Licquia - Bug fixes, beta testing, evangelism.
Jason McMullan - Original CUPS RPM distributions.
Àngel Mompó - Catalan localization.
Wes Morgan - *BSD fixes.
Kenshi Muto - Japanese localization, patches, and
testing.
Brian Norris - Upstart support.
Daniel Nylander - Swedish localization.
Niklas 'Nille' Åkerström - Swedish localization.
Naruiko Ogasawara - Japanese localization.
Giulio Orsero - Bug fixes and testing.
Michal Osowiecki - Polish localization.
@@ -41,7 +40,6 @@ to thank the following individuals for their contributions:
Petter Reinholdtsen - HP-UX compiler stuff.
Juan Pablo González Riopedre - Spanish localization.
Giovanni Scafora - Italian localization.
Joachim Schwender - German localization.
Opher Shachar - Hebrew localization.
Stuart Stevens - HP JetDirect IPP information.
Andrea Suatoni - IRIX desktop integration and testing.
-215
Ver Arquivo
@@ -1,215 +0,0 @@
INSTALL - CUPS v2.2.4 - 2017-06-30
==================================
This file describes how to compile and install CUPS from source code. For more
information on CUPS see the file called "README.txt". A complete change log can
be found in "CHANGES.txt".
> USING CUPS REQUIRES ADDITIONAL THIRD-PARTY SUPPORT SOFTWARE AND PRINTER
> DRIVERS. THESE ARE TYPICALLY INCLUDED WITH YOUR OPERATING SYSTEM
> DISTRIBUTION. APPLE DOES NOT ENDORSE OR SUPPORT THIRD-PARTY SUPPORT SOFTWARE
> FOR CUPS.
BEFORE YOU BEGIN
----------------
You'll need ANSI-compliant C and C++ compilers, plus a make program and POSIX-
compliant shell (/bin/sh). The GNU compiler tools and Bash work well and we
have tested the current CUPS code against several versions of GCC with excellent
results.
The makefiles used by the project should work with most versions of make. We've
tested them with GNU make as well as the make programs shipped by Compaq, HP,
SGI, and Sun. BSD users should use GNU make (gmake) since BSD make does not
support "include".
Besides these tools you'll want ZLIB library for compression support, the GNU
TLS library for encryption support on platforms other than iOS, macOS, or
Windows, and either MIT (1.6.3 or higher) or Heimdal Kerberos for Kerberos
support. CUPS will compile and run without these, however you'll miss out on
many of the features provided by CUPS.
On a stock Ubuntu install, the following command will install the required
prerequisites:
sudo apt-get install autoconf build-essential libavahi-client-dev \
libgnutls28-dev libkrb5-dev libnss-mdns libpam-dev \
libsystemd-dev libusb-1.0-0-dev zlib1g-dev
Also, please note that CUPS does not include print filters to support PDF or
raster printing. You *must* download GPL Ghostscript and/or the Open Printing
CUPS filters package separately to print on operating systems other than macOS.
CONFIGURATION
-------------
CUPS uses GNU autoconf, so you should find the usual "configure" script in the
main CUPS source directory. To configure CUPS for your system, type:
./configure
The default installation will put the CUPS software in the "/etc", "/usr", and
"/var" directories on your system, which will overwrite any existing printing
commands on your system. Use the "--prefix" option to install the CUPS software
in another location:
./configure --prefix=/some/directory
To see a complete list of configuration options, use the --help option:
./configure --help
If any of the dependent libraries are not installed in a system default location
(typically "/usr/include" and "/usr/lib") you'll need to set the CFLAGS,
CPPFLAGS, CXXFLAGS, DSOFLAGS, and LDFLAGS environment variables prior to running
configure:
setenv CFLAGS "-I/some/directory"
setenv CPPFLAGS "-I/some/directory"
setenv CXXFLAGS "-I/some/directory"
setenv DSOFLAGS "-L/some/directory"
setenv LDFLAGS "-L/some/directory"
./configure ...
or:
CFLAGS="-I/some/directory" \
CPPFLAGS="-I/some/directory" \
CXXFLAGS="-I/some/directory" \
DSOFLAGS="-L/some/directory" \
LDFLAGS="-L/some/directory" \
./configure ...
The "--enable-debug" option compiles CUPS with debugging information enabled.
Additional debug logging support can be enabled using the
"--enable-debug-printfs" option - these debug messages are enabled using the
CUPS_DEBUG_LOG environment variable at run-time.
CUPS also includes an extensive set of unit tests that can be used to find and
diagnose a variety of common problems - use the "--enable-unit-tests" configure
option to run them at build time.
On macOS, use the "--with-archflags" option to build with the correct set of
architectures:
./configure --with-archflags="-arch i386 -arch x86_64" ...
> Note: Current versions of macOS DO NOT allow installation to /usr with the
> default system integrity settings. In addition, we do not recommend replacing
> the CUPS supplied with macOS because not all versions of CUPS are compatible
> with every macOS release, and because software updates will replace parts
> of your local installation potentially rendering your system unusable.
Once you have configured things, just type:
make ENTER
or if you have FreeBSD, NetBSD, or OpenBSD type:
gmake ENTER
to build the software.
TESTING THE SOFTWARE
--------------------
Aside from the built-in unit tests, CUPS includes an automated test framework
for testing the entire printing system. To run the tests, just type:
make check ENTER
or if you have FreeBSD, NetBSD, or OpenBSD type:
gmake check ENTER
The test framework runs a copy of the CUPS scheduler (cupsd) on port 8631 in
/tmp/cups-$USER and produces a nice HTML report of the results.
INSTALLING THE SOFTWARE
-----------------------
Once you have built the software you need to install it. The "install" target
provides a quick way to install the software on your local system:
make install ENTER
or for FreeBSD, NetBSD, or OpenBSD:
gmake install ENTER
Use the BUILDROOT variable to install to an alternate root directory:
make BUILDROOT=/some/other/root/directory install ENTER
You can also build binary packages that can be installed on other machines using
the RPM spec file ("packaging/cups.spec") or EPM list file
("packaging/cups.list"). The latter also supports building of binary RPMs, so
it may be more convenient to use.
You can find the RPM software at:
http://www.rpm.org/
The EPM software is available at:
https://michaelrsweet.github.io/epm
CREATING BINARY DISTRIBUTIONS WITH EPM
--------------------------------------
The top level makefile supports generation of many types of binary distributions
using EPM. To build a binary distribution type:
make <format> ENTER
or
gmake <format> ENTER
for FreeBSD, NetBSD, and OpenBSD. The <format> target is one of the following:
- "epm": Builds a script + tarfile package
- "bsd": Builds a *BSD package
- "deb": Builds a Debian package
- "pkg": Builds a Solaris package
- "rpm": Builds a RPM package
- "slackware": Build a Slackware package
GETTING DEBUG LOGGING FROM CUPS
-------------------------------
When configured with the "--enable-debug-printfs" option, CUPS compiles in
additional debug logging support in the scheduler, CUPS API, and CUPS Imaging
API. The following environment variables are used to enable and control debug
logging:
- `CUPS_DEBUG_FILTER`: Specifies a POSIX regular expression to control which
messages are logged.
- `CUPS_DEBUG_LEVEL`: Specifies a number from 0 to 9 to control the verbosity of
the logging. The default level is 1.
- `CUPS_DEBUG_LOG`: Specifies a log file to use. Specify the name "-" to send
the messages to stderr. Prefix a filename with "+" to append to an existing
file.
REPORTING PROBLEMS
------------------
If you have problems, READ THE DOCUMENTATION FIRST! If the documentation does
not solve your problems, please post a message on the users forum at:
https://www.cups.org/
Include your operating system and version, compiler and version, and any errors
or problems you've run into. The "config.log" file and the output from the
configure script and make should also be sent, as it often helps to determine
the cause of your problem.
If you are running a version of Linux, be sure to provide the Linux distribution
you have, too.
+213
Ver Arquivo
@@ -0,0 +1,213 @@
INSTALL - CUPS v2.0.3 - 2015-06-08
----------------------------------
This file describes how to compile and install CUPS from source code. For more
information on CUPS see the file called "README.txt". A complete change log can
be found in "CHANGES.txt".
*******************************************************************************
*******************************************************************************
**** ****
**** USING CUPS REQUIRES ADDITIONAL THIRD-PARTY SUPPORT SOFTWARE AND ****
**** PRINTER DRIVERS. THESE ARE TYPICALLY INCLUDED WITH YOUR OPERATING ****
**** SYSTEM DISTRIBUTION. APPLE DOES NOT ENDORSE OR SUPPORT THIRD-PARTY ****
**** SUPPORT SOFTWARE FOR CUPS. ****
**** ****
*******************************************************************************
*******************************************************************************
BEFORE YOU BEGIN
You'll need ANSI-compliant C and C++ compilers, plus a make program and
POSIX-compliant shell (/bin/sh). The GNU compiler tools and Bash work well
and we have tested the current CUPS code against several versions of GCC
with excellent results.
The makefiles used by the project should work with most versions of make.
We've tested them with GNU make as well as the make programs shipped by
Compaq, HP, SGI, and Sun. BSD users should use GNU make (gmake) since BSD
make does not support "include".
Besides these tools you'll want ZLIB library for compression support, the
CDSA, GNU TLS, or OpenSSL libraries for encryption support, and either MIT
(1.6.3 or higher) or Heimdal Kerberos for Kerberos support. CUPS will
compile and run without these, however you'll miss out on many of the
features provided by CUPS.
Also, please note that CUPS does not include print filters to support PDF
or raster printing. You *must* download GPL Ghostscript and/or the Open
Printing CUPS filters package separately to print on operating systems
other than OS X.
COMPILING THE SUBVERSION REPOSITORY CODE
The CUPS Subversion repository doesn't hold a copy of the pre-built
configure script. You'll need to run the GNU autoconf software (2.60 or
higher) to create it:
autoconf
CONFIGURATION
CUPS uses GNU autoconf, so you should find the usual "configure" script in
the main CUPS source directory. To configure CUPS for your system, type:
./configure
The default installation will put the CUPS software in the "/etc", "/usr",
and "/var" directories on your system, which will overwrite any existing
printing commands on your system. Use the "--prefix" option to install the
CUPS software in another location:
./configure --prefix=/some/directory
To see a complete list of configuration options, use the --help option:
./configure --help
If any of the dependent libraries are not installed in a system default
location (typically "/usr/include" and "/usr/lib") you'll need to set the
CFLAGS, CPPFLAGS, CXXFLAGS, DSOFLAGS, and LDFLAGS environment variables
prior to running configure:
setenv CFLAGS "-I/some/directory"
setenv CPPFLAGS "-I/some/directory"
setenv CXXFLAGS "-I/some/directory"
setenv DSOFLAGS "-L/some/directory"
setenv LDFLAGS "-L/some/directory"
./configure ...
or:
CFLAGS="-I/some/directory" \
CPPFLAGS="-I/some/directory" \
CXXFLAGS="-I/some/directory" \
DSOFLAGS="-L/some/directory" \
LDFLAGS="-L/some/directory" \
./configure ...
The "--enable-debug" option compiles CUPS with debugging information
enabled. Additional debug logging support can be enabled using the
"--enable-debug-printfs" option - these debug messages are enabled using the
CUPS_DEBUG_LOG environment variable at run-time.
CUPS also includes an extensive set of unit tests that can be used to find
and diagnose a variety of common problems - use the "--enable-unit-tests"
configure option to run them at build time.
On OS X, use the "--with-archflags" option to build with the correct set of
architectures:
./configure --with-archflags="-arch i386 -arch x86_64" ...
Once you have configured things, just type:
make ENTER
or if you have FreeBSD, NetBSD, or OpenBSD type:
gmake ENTER
to build the software.
TESTING THE SOFTWARE
Aside from the built-in unit tests, CUPS includes an automated test
framework for testing the entire printing system. To run the tests, just
type:
make check ENTER
or if you have FreeBSD, NetBSD, or OpenBSD type:
gmake check ENTER
The test framework runs a copy of the CUPS scheduler (cupsd) on port 8631
in /tmp/cups-$USER and produces a nice HTML report of the results.
INSTALLING THE SOFTWARE
Once you have built the software you need to install it. The "install"
target provides a quick way to install the software on your local system:
make install ENTER
or for FreeBSD, NetBSD, or OpenBSD:
gmake install ENTER
Use the BUILDROOT variable to install to an alternate root directory:
make BUILDROOT=/some/other/root/directory install ENTER
You can also build binary packages that can be installed on other machines
using the RPM spec file ("packaging/cups.spec") or EPM list file
("packaging/cups.list"). The latter also supports building of binary RPMs,
so it may be more convenient to use.
You can find the RPM software at:
http://www.rpm.org/
The EPM software is available at:
http://www.msweet.org/
CREATING BINARY DISTRIBUTIONS WITH EPM
The top level makefile supports generation of many types of binary
distributions using EPM. To build a binary distribution type:
make <format> ENTER
or
gmake <format> ENTER
for FreeBSD, NetBSD, and OpenBSD. The <format> target is one of the
following:
epm - Builds a script + tarfile package
bsd - Builds a *BSD package
deb - Builds a Debian package
pkg - Builds a Solaris package
rpm - Builds a RPM package
slackware - Build a Slackware package
GETTING DEBUG LOGGING FROM CUPS
When configured with the "--enable-debug-printfs" option, CUPS compiles in
additional debug logging support in the scheduler, CUPS API, and CUPS
Imaging API. The following environment variables are used to enable and
control debug logging:
CUPS_DEBUG_FILTER Specifies a POSIX regular expression to control
which messages are logged.
CUPS_DEBUG_LEVEL Specifies a number from 0 to 9 to control the
verbosity of the logging. The default level is 1.
CUPS_DEBUG_LOG Specifies a log file to use. Specify the name "-"
to send the messages to stderr. Prefix a filename
with "+" to append to an existing file.
REPORTING PROBLEMS
If you have problems, READ THE DOCUMENTATION FIRST! If the documentation
does not solve your problems, please post a message on the users forum at:
http://www.cups.org/
Include your operating system and version, compiler and version, and any
errors or problems you've run into. The "config.log" file and the output
from the configure script and make should also be sent, as it often helps to
determine the cause of your problem.
If you are running a version of Linux, be sure to provide the Linux
distribution you have, too.
+232
Ver Arquivo
@@ -0,0 +1,232 @@
IPPTOOL.txt - 2013-07-15
------------------------
See the file CHANGES-IPPTOOL.txt for a list of changes to this software.
INTRODUCTION
CUPS includes two user programs for IPP printers. The first is called
ipptool and can be used to send arbitrary IPP requests to a CUPS server or
IPP printer. This tool started life as part of the CUPS automated test
suite and has grown to support complex conformance tests and a simple way
to query printer, job, and subscription attributes.
The second program called ippfind that can be used to find IPP printers
that have registered themselves using Bonjour (DNS-SD, mDNS, and Zeroconf)
and run commands such as ipptool.
READING THE DOCUMENTATION
Full documentation on the ipptool command can be found in the
"man-ipptool.html" and "man-ipptoolfile.html" files; the latter describes
the test file format supported by ipptool.
Full documentation on the ippfind command can be found in the
"man-ippfind.html" file.
IPPFIND BASIC USAGE
The ippfind command can be used to discover IPP printers on your network.
For example, the following command prints the printer URI of registered IPP
printers:
ippfind
To find all color IPP printers, run:
ippfind --txt-color T
And to run the IPP Everywhere conformance test file on every registered IPP
printer, run the following command:
ippfind _ipp._tcp,_print --exec ipptool -t '{}' ipp-everywhere.test \;
IPPTOOL BASIC USAGE
The ipptool command requires a printer URI and one or more "test" files that
describe the operations, attributes to display, and expected status and
attribute values. Several standard files are included with CUPS, for example
to show a list of pending print jobs on a CUPS printer called "myprinter"
you'd run:
ipptool ipp://localhost/printers/myprinter get-jobs.test
which would produce something like this:
job-id job-state job-name job-originating-user-name
------ ------------ ------------ -------------------------
72 pending testfile.pdf msweet
73 pending testfile.ps msweet
74 pending-held testfile.jpg msweet
75 pending-held testfile.txt msweet
To get output suitable for import into a spreadsheet, use the "-c" (CSV)
option:
ipptool -c ipp://localhost/printers/myprinter get-jobs.test
which will produce something like this:
job-id,job-state,job-name,job-originating-user-name
72,pending,testfile.pdf,msweet
73,pending,testfile.ps,msweet
74,pending-held,testfile.jpg,msweet
75,pending-held,testfile.txt,msweet
STANDARD TEST FILES
The following standard test files are included with ipptool:
create-printer-subscription.test Creates a printer subscription for
state change notifications
get-completed-jobs.test Shows a list of completed jobs
get-jobs.test Shows a list of pending jobs
get-notifications.test Shows events for an ippget
subscription.
get-printer-attributes.test Shows printer attributes
get-subscriptions.test Shows a list of subscriptions
ipp-1.1.test IPP/1.1 conformance test suite
ipp-2.0.test IPP/2.0 conformance test suite
ipp-2.1.test IPP/2.1 conformance test suite
ipp-2.2.test IPP/2.2 conformance test suite
ipp-everywhere.test IPP Everywhere conformance test
suite
print-job.test Prints a file
print-job-deflate.test Prints a file, compressing with
deflate.
print-job-gzip.test Prints a file, compressing with gzip
validate-job.test Validates attributes for a job
submission.
CONFORMANCE TESTS
We provide basic IPP conformance tests for IPP/1.1, IPP/2.0, IPP/2.1,
IPP/2.2, and IPP Everywhere. For a given printer URI, the following
commands perform tests at each level:
ipptool -tf filename [options] -I printer-uri ipp-1.1.test
ipptool -tf filename [options] -I -V 2.0 printer-uri ipp-2.0.test
ipptool -tf filename [options] -I -V 2.1 printer-uri ipp-2.1.test
ipptool -tf filename [options] -I -V 2.2 printer-uri ipp-2.2.test
The filename must use a format supported by the printer; ipptool will guess
the MIME media type using the extension, otherwise application/octet stream
will be used. The following standard test files are included:
color.jpg
document-a4.pdf
document-a4.ps
document-letter.pdf
document-letter.ps
gray.jpg
onepage-a4.pdf
onepage-a4.ps
onepage-letter.pdf
onepage-letter.ps
testfile.jpg
testfile.pcl
testfile.pdf
testfile.ps
testfile.txt
Useful options include the following:
-4 Connect using IPv4
-6 Connect using IPv6
-C Send chunked requests (default)
-d name=val Define a variable
-E Test IPP with HTTP Upgrade to TLS
-L Send requests using the Content-Length header (HTTP/1.0)
-S Test IPP over HTTPS (default for ipps: URIs)
-T seconds Set a timeout for responses in seconds
-v Be verbose, showing all attributes sent and received
-X Produce XML (Apple plist) output
The printer-uri must be a URI supported by the printer using the "ipp" or
"ipps" scheme, for example:
ipp://192.168.0.1/ipp
ipps://192.168.0.1/ipp/print
Print-by-reference (URL) printing can be tested by defining the document-uri
variable as a URL, for example:
ipptool -tf filename -d document-uri=url -I printer-uri ipp-1.1.test
The standard test files are available on cups.org under the "test"
directory, for example:
ipptool -tf document-a4.pdf \
-d document-uri=http://www.cups.org/test/document-a4.pdf \
ipp://192.168.0.1/ipp -I -V 2.0 ipp-2.0.test
The "document" test files contain 4 pages each. Doing the IPP conformance
tests will will produce up to 90 pages on various media, depending on the
printer.
IPP EVERYWHERE TESTING
The IPP Everywhere tests use sample PWG raster files available from:
ftp://ftp.pwg.org/pub/pwg/ipp/examples
Extract the corresponding ZIP archives into the current directory before
running the ipp-everywhere.test file. The test file will attempt to print
each PWG Raster file that is supported by the printer being tested - up to
372 pages including the 90 pages produced by the regular IPP test suite.
GETTING SUPPORT AND OTHER RESOURCES
If you have problems, READ THE DOCUMENTATION FIRST! We also provide
discussion forums which are available at:
http://www.cups.org/
REPORTING BUGS
If you believe you have discovered a bug in ippfind or ipptool, please fill
out the bug form at:
http://www.cups.org/str.php
Be sure to identify the version of CUPS and ippfind/ipptool (if you
downloaded the standalone version) you are using, the printer (if any) and
firmware version, and include any files that apply.
If you downloaded the standalone version of ippfind/ipptool, please also
re-run the command with debug logging enabled. Run the following commands
on Windows to enable debug logging:
setdebug.bat
For Linux and Mac OS X use:
CUPS_DEBUG_LOG=ipptool.log; export CUPS_DEBUG_LOG
CUPS_DEBUG_LEVEL=6; export CUPS_DEBUG_LEVEL
Then when you run the ippfind or ipptool command a new "ipptool.log" file
will be created with detailed information - attach this file to the bug you
file as well.
LEGAL STUFF
CUPS is Copyright 2007-2013 by Apple Inc. CUPS and the CUPS logo are
trademarks of Apple Inc.
The MD5 Digest code is Copyright 1999 Aladdin Enterprises.
CUPS is provided under the terms of version 2 of the GNU General Public
License and GNU Library General Public License. This program is distributed
in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the "doc/help/license.html" or "LICENSE.txt" files for more information.
+3 -3
Ver Arquivo
@@ -1,6 +1,6 @@
CUPS License Agreement
Copyright 2007-2016 by Apple Inc.
Copyright 2007-2013 by Apple Inc.
1 Infinite Loop
Cupertino, CA 95014 USA
@@ -70,8 +70,8 @@ the following special exception:
b. An Apple Operating System means any operating system
software developed and/or marketed by Apple Inc.,
including but not limited to all existing releases and
versions of Apple's Darwin, iOS, macOS, macOS Server, and
tvOS products and all follow-on releases and future
versions of Apple's Darwin, OS X, and OS X Server
products and all follow-on releases and future
versions thereof.
c. This exception is only available for Apple
+13 -14
Ver Arquivo
@@ -1,14 +1,16 @@
#
# "$Id: Makedefs.in 11716 2014-03-21 14:50:24Z msweet $"
#
# Common makefile definitions for CUPS.
#
# Copyright 2007-2017 by Apple Inc.
# Copyright 2007-2014 by Apple Inc.
# Copyright 1997-2007 by Easy Software Products, all rights reserved.
#
# These coded instructions, statements, and computer programs are the
# property of Apple Inc. and are protected by Federal copyright
# law. Distribution and use rights are outlined in the file "LICENSE.txt"
# which should have been included with this file. If this file is
# missing or damaged, see the license at "http://www.cups.org/".
# file is missing or damaged, see the license at "http://www.cups.org/".
#
#
@@ -38,14 +40,14 @@ SHELL = /bin/sh
# Installation programs...
#
INSTALL_BIN = $(LIBTOOL) $(INSTALL) -c -m @CUPS_EXE_FILE_PERM@ @INSTALL_STRIP@
INSTALL_BIN = $(LIBTOOL) $(INSTALL) -c -m 555 @INSTALL_STRIP@
INSTALL_COMPDATA = $(INSTALL) -c -m 444 @INSTALL_GZIP@
INSTALL_CONFIG = $(INSTALL) -c -m @CUPS_CONFIG_FILE_PERM@
INSTALL_DATA = $(INSTALL) -c -m 444
INSTALL_DIR = $(INSTALL) -d
INSTALL_LIB = $(LIBTOOL) $(INSTALL) -c -m @CUPS_EXE_FILE_PERM@ @INSTALL_STRIP@
INSTALL_LIB = $(LIBTOOL) $(INSTALL) -c -m 555 @INSTALL_STRIP@
INSTALL_MAN = $(INSTALL) -c -m 444
INSTALL_SCRIPT = $(INSTALL) -c -m @CUPS_EXE_FILE_PERM@
INSTALL_SCRIPT = $(INSTALL) -c -m 555
#
# Default user, group, and system groups for the scheduler...
@@ -72,14 +74,6 @@ LANGUAGES = @LANGUAGES@
INSTALL_LANGUAGES = @INSTALL_LANGUAGES@
UNINSTALL_LANGUAGES = @UNINSTALL_LANGUAGES@
#
# Cross-compilation support: "local" target is used for any tools that are
# built and run locally.
#
LOCALTARGET = @LOCALTARGET@
#
# Libraries...
#
@@ -149,7 +143,7 @@ IPPFIND_MAN = @IPPFIND_MAN@
LDFLAGS = -L../cgi-bin -L../cups -L../filter -L../ppdc \
-L../scheduler @LDARCHFLAGS@ \
@LDFLAGS@ @RELROFLAGS@ @PIEFLAGS@ $(OPTIM)
LINKCUPS = @LINKCUPS@ $(LIBGSSAPI) $(DNSSDLIBS) $(SSLLIBS) $(LIBZ)
LINKCUPS = @LINKCUPS@ $(LIBGSSAPI) $(DNSSDLIBS) $(LIBZ)
LINKCUPSIMAGE = @LINKCUPSIMAGE@
LIBS = $(LINKCUPS) $(COMMONLIBS)
ONDEMANDFLAGS = @ONDEMANDFLAGS@
@@ -267,3 +261,8 @@ USBQUIRKS = @USBQUIRKS@
echo -n Compressing $<...
$(RM) $@
gzip -v9 <$< >$@
#
# End of "$Id: Makedefs.in 11716 2014-03-21 14:50:24Z msweet $"
#
+25 -8
Ver Arquivo
@@ -1,14 +1,16 @@
#
# "$Id: Makefile 12415 2015-01-21 00:03:08Z msweet $"
#
# Top-level Makefile for CUPS.
#
# Copyright 2007-2016 by Apple Inc.
# Copyright 2007-2014 by Apple Inc.
# Copyright 1997-2007 by Easy Software Products, all rights reserved.
#
# These coded instructions, statements, and computer programs are the
# property of Apple Inc. and are protected by Federal copyright
# law. Distribution and use rights are outlined in the file "LICENSE.txt"
# which should have been included with this file. If this file is
# missing or damaged, see the license at "http://www.cups.org/".
# file is missing or damaged, see the license at "http://www.cups.org/".
#
include Makedefs
@@ -128,9 +130,6 @@ depend:
#
# At least checker-231 is required.
#
# Alternatively, use "--analyze -Xanalyzer -analyzer-output=text" for OPTIM (text
# output instead of HTML...)
#
.PHONY: clang clang-changes
clang:
@@ -266,11 +265,17 @@ debugcheck: all unittests
#
apihelp:
for dir in cups filter; do\
for dir in cgi-bin cups filter ppdc scheduler; do\
echo Generating API help in $$dir... ;\
(cd $$dir; $(MAKE) $(MFLAGS) apihelp) || exit 1;\
done
framedhelp:
for dir in cgi-bin cups filter ppdc scheduler; do\
echo Generating framed API help in $$dir... ;\
(cd $$dir; $(MAKE) $(MFLAGS) framedhelp) || exit 1;\
done
#
# Create an Xcode docset using Mini-XML's mxmldoc (http://www.msweet.org/)...
@@ -314,15 +319,22 @@ sloc:
EPMFLAGS = -v --output-dir dist $(EPMARCH)
bsd deb epm pkg rpm slackware:
bsd deb pkg slackware:
epm $(EPMFLAGS) -f $@ cups packaging/cups.list
.PHONY: dist
epm:
epm $(EPMFLAGS) -s packaging/installer.gif cups packaging/cups.list
rpm:
epm $(EPMFLAGS) -f rpm -s packaging/installer.gif cups packaging/cups.list
.PHONEY: dist
dist: all
$(RM) -r dist
$(MAKE) $(MFLAGS) epm
case `uname` in \
*BSD*) $(MAKE) $(MFLAGS) bsd;; \
Darwin*) $(MAKE) $(MFLAGS) osx;; \
Linux*) test ! -x /usr/bin/rpm || $(MAKE) $(MFLAGS) rpm;; \
SunOS*) $(MAKE) $(MFLAGS) pkg;; \
esac
@@ -333,3 +345,8 @@ dist: all
#
.NOTPARALLEL:
#
# End of "$Id: Makefile 12415 2015-01-21 00:03:08Z msweet $".
#
-160
Ver Arquivo
@@ -1,160 +0,0 @@
README - CUPS v2.2.4 - 2017-06-30
=================================
Looking for compile instructions? Read the file "INSTALL.md" instead...
INTRODUCTION
------------
CUPS is a standards-based, open source printing system developed by Apple Inc.
for macOS® and other UNIX®-like operating systems. CUPS uses the Internet
Printing Protocol ("IPP") and provides System V and Berkeley command-line
interfaces, a web interface, and a C API to manage printers and print jobs. It
supports printing to both local (parallel, serial, USB) and networked printers,
and printers can be shared from one computer to another, even over the Internet!
Internally, CUPS uses PostScript Printer Description ("PPD") files to describe
printer capabilities and features and a wide variety of generic and device-
specific programs to convert and print many types of files. Sample drivers are
included with CUPS to support many Dymo, EPSON, HP, Intellitech, OKIDATA, and
Zebra printers. Many more drivers are available online and (in some cases) on
the driver CD-ROM that came with your printer.
CUPS is licensed under the GNU General Public License and GNU Library General
Public License versions 2. See the file "LICENSE.txt" for more information.
READING THE DOCUMENTATION
-------------------------
Once you have installed the software you can access the documentation (and a
bunch of other stuff) online at:
http://localhost:631/
If you're having trouble getting that far, the documentation is located under
the "doc/help" directory.
Please read the documentation before asking questions.
GETTING SUPPORT AND OTHER RESOURCES
-----------------------------------
If you have problems, READ THE DOCUMENTATION FIRST! We also provide two mailing
lists which are available at:
https://lists.cups.org/mailman/listinfo
See the CUPS web site at <https://www.cups.org/> for other resources.
SETTING UP PRINTER QUEUES USING YOUR WEB BROWSER
------------------------------------------------
CUPS includes a web-based administration tool that allows you to manage
printers, classes, and jobs on your server. Open the following URL in your
browser to access the printer administration tools:
http://localhost:631/admin/
*Do not* use the hostname for your machine - it will not work with the default
CUPS configuration. To enable administration access on other addresses, check
the "Allow Remote Administration" box and click on the "Change Settings" button.
You will be asked for the administration password (root or any other user in the
sys/system/root/admin/lpadmin group on your system) when performing any
administrative function.
SETTING UP PRINTER QUEUES FROM THE COMMAND-LINE
-----------------------------------------------
CUPS works best with PPD (PostScript Printer Description) files. In a pinch you
can also use System V style printer interface scripts.
CUPS includes several sample PPD files you can use:
Driver PPD Name
----------------------------- ------------------------------
Dymo Label Printers drv:///sample.drv/dymo.ppd
Intellitech Intellibar drv:///sample.drv/intelbar.ppd
EPSON 9-pin Series drv:///sample.drv/epson9.ppd
EPSON 24-pin Series drv:///sample.drv/epson24.ppd
Generic PCL Laser Printer drv:///sample.drv/generpcl.ppd
Generic PostScript Printer drv:///sample.drv/generic.ppd
HP DeskJet Series drv:///sample.drv/deskjet.ppd
HP LaserJet Series drv:///sample.drv/laserjet.ppd
OKIDATA 9-Pin Series drv:///sample.drv/okidata9.ppd
OKIDATA 24-Pin Series drv:///sample.drv/okidat24.ppd
Zebra CPCL Label Printer drv:///sample.drv/zebracpl.ppd
Zebra EPL1 Label Printer drv:///sample.drv/zebraep1.ppd
Zebra EPL2 Label Printer drv:///sample.drv/zebraep2.ppd
Zebra ZPL Label Printer drv:///sample.drv/zebra.ppd
Run the "lpinfo -m" command to list the available drivers:
lpinfo -m
Run the "lpinfo -v" command to list the available printers:
lpinfo -v
Then use the correct URI to add the printer using the "lpadmin" command:
lpadmin -p printername -E -v device-uri -m ppd-name
Network printers typically use "socket" or "lpd" URIs:
lpadmin -p printername -E -v socket://11.22.33.44 -m ppd-name
lpadmin -p printername -E -v lpd://11.22.33.44/ -m ppd-name
The sample drivers provide basic printing capabilities, but generally do not
exercise the full potential of the printers or CUPS.
CUPS also supports IPP Everywhere printers using the "everywhere" model, for
example:
lpadmin -p printername -E -v ipp://11.22.33.44/ipp/print -m everywhere
PRINTING FILES
--------------
CUPS provides both the System V "lp" and Berkeley "lpr" commands for printing:
lp filename
lpr filename
Both the "lp" and "lpr" commands support printing options for the driver:
lp -o media=A4 -o resolution=600dpi filename
lpr -o media=A4 -o resolution=600dpi filename
CUPS recognizes many types of images files as well as PDF, PostScript, and text
files, so you can print those files directly rather than through an application.
If you have an application that generates output specifically for your printer
then you need to use the "-oraw" or "-l" options:
lp -o raw filename
lpr -l filename
This will prevent the filters from misinterpreting your print file.
LEGAL STUFF
-----------
CUPS is copyright © 2007-2017 by Apple Inc. CUPS and the CUPS logo are
trademarks of Apple Inc.
The MD5 Digest code is Copyright 1999 Aladdin Enterprises.
CUPS is provided under the terms of version 2 of the GNU General Public License
and GNU Library General Public License. This program is distributed in the hope
that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
"doc/help/license.html" or "LICENSE.txt" files for more information.
+152
Ver Arquivo
@@ -0,0 +1,152 @@
README - CUPS v2.0.3 - 2015-06-08
---------------------------------
Looking for compile instructions? Read the file "INSTALL.txt" instead...
INTRODUCTION
CUPS is a standards-based, open source printing system developed by Apple
Inc. for OS® X and other UNIX®-like operating systems. CUPS uses the
Internet Printing Protocol ("IPP") and provides System V and Berkeley
command-line interfaces, a web interface, and a C API to manage printers and
print jobs. It supports printing to both local (parallel, serial, USB) and
networked printers, and printers can be shared from one computer to another,
even over the Internet!
Internally, CUPS uses PostScript Printer Description ("PPD") files to
describe printer capabilities and features and a wide variety of generic
and device-specific programs to convert and print many types of files.
Sample drivers are included with CUPS to support many Dymo, EPSON, HP,
Intellitech, OKIDATA, and Zebra printers. Many more drivers are available
online and (in some cases) on the driver CD-ROM that came with your printer.
CUPS is licensed under the GNU General Public License and GNU Library
General Public License versions 2. See the file "LICENSE.txt" for more
information.
READING THE DOCUMENTATION
Once you have installed the software you can access the documentation (and
a bunch of other stuff) online at:
http://localhost:631/
If you're having trouble getting that far, the documentation is located
under the "doc/help" directory.
Please read the documentation before asking questions.
GETTING SUPPORT AND OTHER RESOURCES
If you have problems, READ THE DOCUMENTATION FIRST! We also provide two
mailing lists which are available at:
http://www.cups.org/lists.php
See the CUPS web site at "http://www.cups.org/" for other resources.
SETTING UP PRINTER QUEUES USING YOUR WEB BROWSER
CUPS includes a web-based administration tool that allows you to manage
printers, classes, and jobs on your server. Open the following URL in your
browser to access the printer administration tools:
http://localhost:631/admin/
DO NOT use the hostname for your machine - it will not work with the default
CUPS configuration. To enable administration access on other addresses,
check the "Allow Remote Administration" box and click on the "Change
Settings" button.
You will be asked for the administration password (root or any other user in
the sys/system/root/admin/lpadmin group on your system) when performing any
administrative function.
SETTING UP PRINTER QUEUES FROM THE COMMAND-LINE
CUPS works best with PPD (PostScript Printer Description) files. In a pinch
you can also use System V style printer interface scripts.
CUPS includes several sample PPD files you can use:
Driver PPD Name
----------------------------- ------------------------------
Dymo Label Printers drv:///sample.drv/dymo.ppd
Intellitech Intellibar drv:///sample.drv/intelbar.ppd
EPSON 9-pin Series drv:///sample.drv/epson9.ppd
EPSON 24-pin Series drv:///sample.drv/epson24.ppd
Generic PCL Laser Printer drv:///sample.drv/generpcl.ppd
Generic PostScript Printer drv:///sample.drv/generic.ppd
HP DeskJet Series drv:///sample.drv/deskjet.ppd
HP LaserJet Series drv:///sample.drv/laserjet.ppd
OKIDATA 9-Pin Series drv:///sample.drv/okidata9.ppd
OKIDATA 24-Pin Series drv:///sample.drv/okidat24.ppd
Zebra CPCL Label Printer drv:///sample.drv/zebracpl.ppd
Zebra EPL1 Label Printer drv:///sample.drv/zebraep1.ppd
Zebra EPL2 Label Printer drv:///sample.drv/zebraep2.ppd
Zebra ZPL Label Printer drv:///sample.drv/zebra.ppd
Run the "lpinfo -m" command to list the available drivers:
lpinfo -m
Run the "lpinfo -v" command to list the available printers:
lpinfo -v
Then use the correct URI to add the printer using the "lpadmin" command:
lpadmin -p printername -E -v device-uri -m ppd-name
Network printers typically use "socket" or "lpd" URIs:
lpadmin -p printername -E -v socket://11.22.33.44 -m ppd-name
lpadmin -p printername -E -v lpd://11.22.33.44/ -m ppd-name
The sample drivers provide basic printing capabilities, but generally do not
exercise the full potential of the printers or CUPS.
PRINTING FILES
CUPS provides both the System V "lp" and Berkeley "lpr" commands for
printing:
lp filename
lpr filename
Both the "lp" and "lpr" commands support printing options for the driver:
lp -o media=A4 -o resolution=600dpi filename
lpr -o media=A4 -o resolution=600dpi filename
CUPS recognizes many types of images files as well as PDF, PostScript,
and text files, so you can print those files directly rather than through
an application.
If you have an application that generates output specifically for your
printer then you need to use the "-oraw" or "-l" options:
lp -o raw filename
lpr -l filename
This will prevent the filters from misinterpreting your print file.
LEGAL STUFF
CUPS is Copyright 2007-2015 by Apple Inc. CUPS and the CUPS logo are
trademarks of Apple Inc.
The MD5 Digest code is Copyright 1999 Aladdin Enterprises.
CUPS is provided under the terms of version 2 of the GNU General Public
License and GNU Library General Public License. This program is distributed
in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the "doc/help/license.html" or "LICENSE.txt" files for more information.
+25 -20
Ver Arquivo
@@ -4,50 +4,54 @@ ipp.o: ipp.c backend-private.h ../cups/cups-private.h \
../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
../cups/snmp-private.h ../cups/backend.h ../cups/sidechannel.h \
../cups/ppd-private.h ../cups/ppd.h ../cups/raster.h
../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
../cups/ppd.h ../cups/thread-private.h ../cups/snmp-private.h \
../cups/backend.h ../cups/sidechannel.h
lpd.o: lpd.c ../cups/http-private.h ../config.h ../cups/language.h \
../cups/array.h ../cups/versioning.h ../cups/http.h \
../cups/md5-private.h ../cups/ipp-private.h ../cups/ipp.h \
backend-private.h ../cups/cups-private.h ../cups/string-private.h \
../cups/debug-private.h ../cups/array-private.h \
../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
../cups/snmp-private.h ../cups/backend.h ../cups/sidechannel.h
../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
../cups/ppd.h ../cups/thread-private.h ../cups/snmp-private.h \
../cups/backend.h ../cups/sidechannel.h
dnssd.o: dnssd.c backend-private.h ../cups/cups-private.h \
../cups/string-private.h ../config.h ../cups/debug-private.h \
../cups/versioning.h ../cups/array-private.h ../cups/array.h \
../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
../cups/snmp-private.h ../cups/backend.h ../cups/sidechannel.h
../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
../cups/ppd.h ../cups/thread-private.h ../cups/snmp-private.h \
../cups/backend.h ../cups/sidechannel.h
snmp.o: snmp.c backend-private.h ../cups/cups-private.h \
../cups/string-private.h ../config.h ../cups/debug-private.h \
../cups/versioning.h ../cups/array-private.h ../cups/array.h \
../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
../cups/snmp-private.h ../cups/backend.h ../cups/sidechannel.h
../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
../cups/ppd.h ../cups/thread-private.h ../cups/snmp-private.h \
../cups/backend.h ../cups/sidechannel.h
socket.o: socket.c ../cups/http-private.h ../config.h ../cups/language.h \
../cups/array.h ../cups/versioning.h ../cups/http.h \
../cups/md5-private.h ../cups/ipp-private.h ../cups/ipp.h \
backend-private.h ../cups/cups-private.h ../cups/string-private.h \
../cups/debug-private.h ../cups/array-private.h \
../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
../cups/snmp-private.h ../cups/backend.h ../cups/sidechannel.h
../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
../cups/ppd.h ../cups/thread-private.h ../cups/snmp-private.h \
../cups/backend.h ../cups/sidechannel.h
test1284.o: test1284.c ../cups/string-private.h ../config.h ieee1284.c \
backend-private.h ../cups/cups-private.h ../cups/debug-private.h \
../cups/versioning.h ../cups/array-private.h ../cups/array.h \
../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
../cups/snmp-private.h ../cups/backend.h ../cups/sidechannel.h \
../cups/ppd-private.h ../cups/ppd.h ../cups/raster.h
../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
../cups/ppd.h ../cups/thread-private.h ../cups/snmp-private.h \
../cups/backend.h ../cups/sidechannel.h
testbackend.o: testbackend.c ../cups/string-private.h ../config.h \
../cups/cups.h ../cups/file.h ../cups/versioning.h ../cups/ipp.h \
../cups/http.h ../cups/array.h ../cups/language.h ../cups/pwg.h \
@@ -58,15 +62,16 @@ testsupplies.o: testsupplies.c backend-private.h ../cups/cups-private.h \
../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
../cups/snmp-private.h ../cups/backend.h ../cups/sidechannel.h
../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
../cups/ppd.h ../cups/thread-private.h ../cups/snmp-private.h \
../cups/backend.h ../cups/sidechannel.h
usb.o: usb.c backend-private.h ../cups/cups-private.h \
../cups/string-private.h ../config.h ../cups/debug-private.h \
../cups/versioning.h ../cups/array-private.h ../cups/array.h \
../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
../cups/snmp-private.h ../cups/backend.h ../cups/sidechannel.h \
usb-darwin.c ../cups/file-private.h ../cups/ppd-private.h \
../cups/ppd.h ../cups/raster.h
../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
../cups/ppd.h ../cups/thread-private.h ../cups/snmp-private.h \
../cups/backend.h ../cups/sidechannel.h usb-darwin.c \
../cups/file-private.h
+17 -16
Ver Arquivo
@@ -1,16 +1,18 @@
#
# Backend makefile for CUPS.
# "$Id: Makefile 11859 2014-05-08 22:42:44Z msweet $"
#
# Copyright 2007-2016 by Apple Inc.
# Copyright 1997-2007 by Easy Software Products, all rights reserved.
# Backend makefile for CUPS.
#
# 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
# missing or damaged, see the license at "http://www.cups.org/".
# Copyright 2007-2014 by Apple Inc.
# Copyright 1997-2007 by Easy Software Products, all rights reserved.
#
# This file is subject to the Apple OS-Developed Software exception.
# 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 ../Makedefs
@@ -86,7 +88,7 @@ unittests: $(UNITTESTS)
#
clean:
$(RM) $(OBJS) $(TARGETS) $(UNITTESTS) $(LIBOBJS) http https ipps mdns socket-static
$(RM) $(OBJS) $(TARGETS) $(UNITTESTS) $(LIBOBJS) http https ipps mdns
#
@@ -293,12 +295,6 @@ socket: socket.o ../cups/$(LIBCUPS) libbackend.a
echo Linking $@...
$(CC) $(LDFLAGS) -o socket socket.o libbackend.a $(LIBS)
socket-static: socket.o ../cups/$(LIBCUPSSTATIC) libbackend.a
echo Linking $@...
$(CC) $(LDFLAGS) -o socket-static socket.o libbackend.a \
../cups/$(LIBCUPSSTATIC) $(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) \
$(COMMONLIBS) $(LIBZ)
#
# usb
@@ -316,3 +312,8 @@ usb.o: usb.c usb-darwin.c usb-libusb.c usb-unix.c
#
include Dependencies
#
# End of "$Id: Makefile 11859 2014-05-08 22:42:44Z msweet $".
#
+7 -1
Ver Arquivo
@@ -1,4 +1,6 @@
/*
* "$Id: backend-private.h 11558 2014-02-06 18:33:34Z msweet $"
*
* Backend support definitions for CUPS.
*
* Copyright 2007-2014 by Apple Inc.
@@ -312,7 +314,6 @@ extern int backendGetDeviceID(int fd, char *device_id,
extern int backendGetMakeModel(const char *device_id,
char *make_model,
size_t make_model_size);
extern http_addrlist_t *backendLookup(const char *hostname, int port, int *cancel);
extern int backendNetworkSideCB(int print_fd, int device_fd,
int snmp_fd, http_addr_t *addr,
int use_bc);
@@ -330,3 +331,8 @@ extern int backendWaitLoop(int snmp_fd, http_addr_t *addr,
}
# endif /* __cplusplus */
#endif /* !_CUPS_BACKEND_PRIVATE_H_ */
/*
* End of "$Id: backend-private.h 11558 2014-02-06 18:33:34Z msweet $".
*/
+28 -9
Ver Arquivo
@@ -1,7 +1,9 @@
/*
* "$Id: dnssd.c 12660 2015-05-22 19:09:57Z msweet $"
*
* DNS-SD discovery backend for CUPS.
*
* Copyright 2008-2017 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
@@ -919,6 +921,13 @@ 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);
@@ -934,7 +943,8 @@ 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);
@@ -949,7 +959,7 @@ get_device(cups_array_t *devices, /* I - Device array */
*
* Note: This function is needed because avahi_simple_poll_iterate is broken
* and always uses a timeout of 0 (!) milliseconds.
* (https://github.com/lathiat/avahi/issues/127)
* (Avahi Ticket #364)
*/
static int /* O - Number of file descriptors matching */
@@ -1040,7 +1050,9 @@ query_callback(
"interfaceIndex=%d, errorCode=%d, fullName=\"%s\", "
"rrtype=%u, rrclass=%u, rdlen=%u, rdata=%p, ttl=%u, "
"context=%p)\n",
sdRef, flags, interfaceIndex, errorCode, fullName, rrtype, rrclass, rdlen, rdata, ttl, context);
sdRef, flags, interfaceIndex, errorCode,
fullName ? fullName : "(null)", rrtype, rrclass, rdlen, rdata, ttl,
context);
/*
* Only process "add" data...
@@ -1053,7 +1065,9 @@ query_callback(
fprintf(stderr, "DEBUG2: query_callback(browser=%p, interfaceIndex=%d, "
"protocol=%d, event=%d, fullName=\"%s\", rrclass=%u, "
"rrtype=%u, rdata=%p, rdlen=%u, flags=%x, context=%p)\n",
browser, interfaceIndex, protocol, event, fullName, rrclass, rrtype, rdata, (unsigned)rdlen, flags, context);
browser, interfaceIndex, protocol, event,
fullName ? fullName : "(null)", rrclass, rrtype, rdata,
(unsigned)rdlen, flags, context);
/*
* Only process "add" data...
@@ -1188,9 +1202,9 @@ query_callback(
snprintf(device_id, sizeof(device_id), "MFG:%s;MDL:%s;",
make_and_model, model);
else if (!_cups_strncasecmp(model, "designjet ", 10))
snprintf(device_id, sizeof(device_id), "MFG:HP;MDL:%s;", model + 10);
snprintf(device_id, sizeof(device_id), "MFG:HP;MDL:%s", model + 10);
else if (!_cups_strncasecmp(model, "stylus ", 7))
snprintf(device_id, sizeof(device_id), "MFG:EPSON;MDL:%s;", model + 7);
snprintf(device_id, sizeof(device_id), "MFG:EPSON;MDL:%s", model + 7);
else if ((ptr = strchr(model, ' ')) != NULL)
{
/*
@@ -1200,7 +1214,7 @@ query_callback(
memcpy(make_and_model, model, (size_t)(ptr - model));
make_and_model[ptr - model] = '\0';
snprintf(device_id, sizeof(device_id), "MFG:%s;MDL:%s;",
snprintf(device_id, sizeof(device_id), "MFG:%s;MDL:%s",
make_and_model, ptr + 1);
}
}
@@ -1275,7 +1289,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;
}
@@ -1313,3 +1327,8 @@ unquote(char *dst, /* I - Destination buffer */
*dst = '\0';
}
/*
* End of "$Id: dnssd.c 12660 2015-05-22 19:09:57Z msweet $".
*/
+9 -3
Ver Arquivo
@@ -1,7 +1,9 @@
/*
* "$Id: ieee1284.c 11594 2014-02-14 20:09:01Z msweet $"
*
* IEEE-1284 support functions for CUPS.
*
* Copyright 2007-2015 by Apple Inc.
* Copyright 2007-2014 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
@@ -18,7 +20,6 @@
*/
#include "backend-private.h"
#include <cups/ppd-private.h>
/*
@@ -88,7 +89,7 @@ backendGetDeviceID(
*device_id = '\0';
# ifdef __linux
if (ioctl(fd, LPIOC_GET_DEVICE_ID((unsigned)device_id_size), device_id))
if (ioctl(fd, LPIOC_GET_DEVICE_ID(device_id_size), device_id))
{
/*
* Linux has to implement things differently for every device it seems.
@@ -471,3 +472,8 @@ backendGetMakeModel(
return (0);
}
/*
* End of "$Id: ieee1284.c 11594 2014-02-14 20:09:01Z msweet $".
*/
+466 -268
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+109 -85
Ver Arquivo
@@ -1,7 +1,9 @@
/*
* "$Id: lpd.c 12024 2014-07-15 12:58:39Z msweet $"
*
* Line Printer Daemon backend for CUPS.
*
* Copyright 2007-2016 by Apple Inc.
* Copyright 2007-2013 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
@@ -75,7 +77,6 @@ static int abort_job = 0; /* Non-zero if we get SIGTERM */
* Local functions...
*/
static int cups_rresvport(int *port, int family);
static int lpd_command(int lpd_fd, char *format, ...);
static int lpd_queue(const char *hostname, http_addrlist_t *addrlist,
const char *printer, int print_fd, int snmp_fd,
@@ -84,6 +85,9 @@ static int lpd_queue(const char *hostname, http_addrlist_t *addrlist,
int reserve, int manual_copies, int timeout,
int contimeout, const char *orighost);
static ssize_t lpd_write(int lpd_fd, char *buffer, size_t length);
#ifndef HAVE_RRESVPORT_AF
static int rresvport_af(int *port, int family);
#endif /* !HAVE_RRESVPORT_AF */
static void sigterm_handler(int sig);
@@ -111,6 +115,7 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
*filename, /* File to print */
title[256]; /* Title string */
int port; /* Port number */
char portname[256]; /* Port name (string) */
http_addrlist_t *addrlist; /* List of addresses for printer */
int snmp_enabled = 1; /* Is SNMP enabled? */
int snmp_fd; /* SNMP socket */
@@ -410,11 +415,23 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
* Find the printer...
*/
addrlist = backendLookup(hostname, port, NULL);
snprintf(portname, sizeof(portname), "%d", port);
/*
* See if the printer supports SNMP...
*/
fputs("STATE: +connecting-to-device\n", stderr);
fprintf(stderr, "DEBUG: Looking up \"%s\"...\n", hostname);
while ((addrlist = httpAddrGetList(hostname, AF_UNSPEC, portname)) == NULL)
{
_cupsLangPrintFilter(stderr, "INFO",
_("Unable to locate printer \"%s\"."), hostname);
sleep(10);
if (getenv("CLASS") != NULL)
{
fputs("STATE: -connecting-to-device\n", stderr);
exit(CUPS_BACKEND_FAILED);
}
}
if (snmp_enabled)
snmp_fd = _cupsSNMPOpen(addrlist->addr.addr.sa_family);
@@ -555,84 +572,6 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
}
/*
* 'cups_rresvport()' - A simple implementation of rresvport_af().
*/
static int /* O - Socket or -1 on error */
cups_rresvport(int *port, /* IO - Port number to bind to */
int family) /* I - Address family */
{
http_addr_t addr; /* Socket address */
int fd; /* Socket file descriptor */
/*
* Try to create an IPv4 socket...
*/
if ((fd = socket(family, SOCK_STREAM, 0)) < 0)
return (-1);
/*
* Initialize the address buffer...
*/
memset(&addr, 0, sizeof(addr));
addr.addr.sa_family = (sa_family_t)family;
/*
* Try to bind the socket to a reserved port...
*/
while (*port > 511)
{
/*
* Set the port number...
*/
_httpAddrSetPort(&addr, *port);
/*
* Try binding the port to the socket; return if all is OK...
*/
if (!bind(fd, (struct sockaddr *)&addr, (socklen_t)httpAddrLength(&addr)))
return (fd);
/*
* Stop if we have any error other than "address already in use"...
*/
if (errno != EADDRINUSE)
{
httpAddrClose(NULL, fd);
return (-1);
}
/*
* Try the next port...
*/
(*port)--;
}
/*
* Wasn't able to bind to a reserved port, so close the socket and return
* -1...
*/
#ifdef WIN32
closesocket(fd);
#else
close(fd);
#endif /* WIN32 */
return (-1);
}
/*
* 'lpd_command()' - Send an LPR command sequence and wait for a reply.
*/
@@ -814,7 +753,7 @@ lpd_queue(const char *hostname, /* I - Host to connect to */
* priviledged lport between 721 and 731...
*/
if ((fd = cups_rresvport(&lport, addr->addr.addr.sa_family)) < 0)
if ((fd = rresvport_af(&lport, addr->addr.addr.sa_family)) < 0)
{
perror("DEBUG: Unable to reserve port");
sleep(1);
@@ -1287,6 +1226,86 @@ lpd_write(int lpd_fd, /* I - LPD socket */
}
#ifndef HAVE_RRESVPORT_AF
/*
* 'rresvport_af()' - A simple implementation of rresvport_af().
*/
static int /* O - Socket or -1 on error */
rresvport_af(int *port, /* IO - Port number to bind to */
int family) /* I - Address family */
{
http_addr_t addr; /* Socket address */
int fd; /* Socket file descriptor */
/*
* Try to create an IPv4 socket...
*/
if ((fd = socket(family, SOCK_STREAM, 0)) < 0)
return (-1);
/*
* Initialize the address buffer...
*/
memset(&addr, 0, sizeof(addr));
addr.addr.sa_family = family;
/*
* Try to bind the socket to a reserved port...
*/
while (*port > 511)
{
/*
* Set the port number...
*/
_httpAddrSetPort(&addr, *port);
/*
* Try binding the port to the socket; return if all is OK...
*/
if (!bind(fd, (struct sockaddr *)&addr, httpAddrLength(&addr)))
return (fd);
/*
* Stop if we have any error other than "address already in use"...
*/
if (errno != EADDRINUSE)
{
httpAddrClose(NULL, fd);
return (-1);
}
/*
* Try the next port...
*/
(*port)--;
}
/*
* Wasn't able to bind to a reserved port, so close the socket and return
* -1...
*/
# ifdef WIN32
closesocket(fd);
# else
close(fd);
# endif /* WIN32 */
return (-1);
}
#endif /* !HAVE_RRESVPORT_AF */
/*
* 'sigterm_handler()' - Handle 'terminate' signals that stop the backend.
*/
@@ -1298,3 +1317,8 @@ sigterm_handler(int sig) /* I - Signal */
abort_job = 1;
}
/*
* End of "$Id: lpd.c 12024 2014-07-15 12:58:39Z msweet $".
*/
+9 -60
Ver Arquivo
@@ -1,7 +1,9 @@
/*
* "$Id: network.c 12124 2014-08-28 15:37:22Z msweet $"
*
* Common backend network APIs for CUPS.
*
* Copyright 2007-2016 by Apple Inc.
* Copyright 2007-2014 by Apple Inc.
* Copyright 2006-2007 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
@@ -26,6 +28,7 @@
* 'backendCheckSideChannel()' - Check the side-channel for pending requests.
*/
void
backendCheckSideChannel(
int snmp_fd, /* I - SNMP socket */
@@ -45,65 +48,6 @@ backendCheckSideChannel(
}
/*
* 'backendLookup()' - Lookup the given host and log addresses.
*/
http_addrlist_t * /* O - List of addresses or NULL */
backendLookup(const char *hostname, /* I - Hostname */
int port, /* I - Port number */
int *cancel) /* I - Variable to watch for job cancel */
{
char portname[32], /* Port number as string */
addrname[256]; /* Address as string */
http_addrlist_t *addrlist, /* List of addresses */
*current; /* Current address */
/*
* Lookup the address for the named host...
*/
snprintf(portname, sizeof(portname), "%d", port);
fputs("STATE: +connecting-to-device\n", stderr);
fprintf(stderr, "DEBUG: Looking up \"%s\"...\n", hostname);
while ((addrlist = httpAddrGetList(hostname, AF_UNSPEC, portname)) == NULL)
{
_cupsLangPrintFilter(stderr, "INFO", _("Unable to locate printer \"%s\"."), hostname);
sleep(10);
if (getenv("CLASS") != NULL)
{
fputs("STATE: -connecting-to-device\n", stderr);
exit(CUPS_BACKEND_STOP);
}
if (cancel && *cancel)
{
fputs("STATE: -connecting-to-device\n", stderr);
exit(CUPS_BACKEND_OK);
}
}
fputs("STATE: -connecting-to-device\n", stderr);
/*
* Log the addresses we got...
*/
for (current = addrlist; current; current = current->next)
fprintf(stderr, "DEBUG: %s=%s\n", hostname, httpAddrString(&current->addr, addrname, sizeof(addrname)));
/*
* Return...
*/
return (addrlist);
}
/*
* 'backendNetworkSideCB()' - Handle common network side-channel commands.
*/
@@ -357,3 +301,8 @@ backendNetworkSideCB(
return (cupsSideChannelWrite(command, status, data, datalen, 1.0));
}
/*
* End of "$Id: network.c 12124 2014-08-28 15:37:22Z msweet $".
*/
+26 -52
Ver Arquivo
@@ -5,7 +5,6 @@
# 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
@@ -52,67 +51,67 @@
# NEC Picty800 (HP OEM)
0x0409 0xf1be unidir
# Lexmark International, Inc. (e250d) (https://bugs.launchpad.net/bugs/1084164)
# Lexmark International, Inc. (e250d), https://bugs.launchpad.net/bugs/1084164
0x043d 0x00f3 no-reattach
# Kyocera Mita FS 820, by zut <kernel@zut.de>
0x0482 0x0010 unidir
# Canon, Inc. PIXMA iP6000D Printer (https://bugs.launchpad.net/bugs/1160638)
# Canon, Inc. PIXMA iP6000D Printer, https://bugs.launchpad.net/bugs/1160638
0x04a9 0x1095 unidir
# Canon, Inc. PIXMA iP4200 Printer (Issue #4155)
# Canon, Inc. PIXMA iP4200 Printer, http://www.cups.org/str.php?L4155
0x04a9 0x10a2 unidir
# Canon, Inc. PIXMA iP4300 Printer (https://bugs.launchpad.net/bugs/1032385)
# Canon, Inc. PIXMA iP4300 Printer, https://bugs.launchpad.net/bugs/1032385
0x04a9 0x10b6 unidir
# Canon, Inc. MP210 (https://bugzilla.redhat.com/show_bug.cgi?id=847923#c53)
# Canon, Inc. MP210 https://bugzilla.redhat.com/show_bug.cgi?id=847923#c53
0x04a9 0x1721 unidir
# Canon, Inc. MP500 Printer (https://bugs.launchpad.net/bugs/1032456)
# Canon, Inc. MP500 Printer, https://bugs.launchpad.net/bugs/1032456
0x04a9 0x170c unidir
# Canon, Inc. MP510 Printer (https://bugs.launchpad.net/bugs/1050009)
# Canon, Inc. MP510 Printer, https://bugs.launchpad.net/bugs/1050009
0x04a9 0x1717 unidir
# Canon, Inc. MP550 Printer (Issue #4155)
# Canon, Inc. MP550 Printer, http://www.cups.org/str.php?L4155
0x04a9 0x173d unidir
# Canon, Inc. MP560 Printer (Issue #4155)
# Canon, Inc. MP560 Printer, http://www.cups.org/str.php?L4155
0x04a9 0x173e unidir
# Canon, Inc. MF4150 Printer (https://bugs.launchpad.net/bugs/1160638)
# Canon, Inc. MF4150 Printer, https://bugs.launchpad.net/bugs/1160638
0x04a9 0x26a3 no-reattach
# Brother Industries, Ltd HL-1250 Laser Printer (https://bugs.debian.org/712512)
# Brother Industries, Ltd HL-1250 Laser Printer, https://bugs.debian.org/712512
0x04f9 0x0007 no-reattach
# Brother Industries, Ltd HL-1430 Laser Printer (https://bugs.launchpad.net/bugs/1038695)
# Brother Industries, Ltd HL-1430 Laser Printer, https://bugs.launchpad.net/bugs/1038695
0x04f9 0x001a no-reattach
# Brother Industries, Ltd HL-1440 Laser Printer (https://bugs.launchpad.net/bugs/1000253)
# Brother Industries, Ltd HL-1440 Laser Printer, https://bugs.launchpad.net/bugs/1000253
0x04f9 0x000d no-reattach unidir
# Brother Industries, Ltd HL-1450 Laser Printer (https://bugs.launchpad.net/bugs/1000253)
# Brother Industries, Ltd HL-1450 Laser Printer, https://bugs.launchpad.net/bugs/1000253
0x04f9 0x000e no-reattach unidir
# Oki Data Corp. Okipage 14ex Printer (https://bugs.launchpad.net/bugs/872483)
# Oki Data Corp. Okipage 14ex Printer, https://bugs.launchpad.net/bugs/872483
0x06bc 0x000b no-reattach
# Oki Data Corp. B410d (https://bugs.launchpad.net/bugs/872483)
# Oki Data Corp. B410d, https://bugs.launchpad.net/bugs/872483
0x06bc 0x01c7 no-reattach
# Seiko Epson Corp. Stylus Color 740 / Photo 750 (http://bugs.debian.org/697970)
# Seiko Epson Corp. Stylus Color 740 / Photo 750, http://bugs.debian.org/697970
0x04b8 0x0001 no-reattach unidir
# Seiko Epson Corp. Stylus Color 670 (https://bugs.launchpad.net/bugs/872483)
# Seiko Epson Corp. Stylus Color 670, https://bugs.launchpad.net/bugs/872483
0x04b8 0x0005 no-reattach
# Seiko Epson Receipt Printer M129C
0x04b8 0x0202 vendor-class
# Prolific Technology, Inc. PL2305 Parallel Port (USB -> Parallel adapter) (https://bugs.launchpad.net/bugs/987485)
# Prolific Technology, Inc. PL2305 Parallel Port (USB -> Parallel adapter), https://bugs.launchpad.net/bugs/987485
0x067b 0x2305 no-reattach soft-reset unidir
# Xerox Phaser 3124 https://bugzilla.redhat.com/show_bug.cgi?id=867392
@@ -121,13 +120,13 @@
# Xerox WorkCentre 3210 https://bugs.launchpad.net/bugs/1102470
0x0924 0x4293 no-reattach
# QinHeng Electronics CH340S (USB -> Parallel adapter) (https://bugs.launchpad.net/bugs/1000253)
# QinHeng Electronics CH340S (USB -> Parallel adapter), https://bugs.launchpad.net/bugs/1000253
0x1a86 0x7584 no-reattach
# All Samsung devices (https://bugs.launchpad.net/bugs/1032456)
# All Samsung devices, https://bugs.launchpad.net/bugs/1032456
0x04e8 soft-reset
# All Zebra devices (https://bugs.launchpad.net/bugs/1001028)
# All Zebra devices, https://bugs.launchpad.net/bugs/1001028
0x0a5f unidir
# Canon CP-10
@@ -217,39 +216,14 @@
# Lexmark E238 (<rdar://problem/14493054>)
0x043d 0x00d7 no-reattach
# Lexmark E238 (Issue #4448)
# Lexmark E238 (STR #4448)
0x043d 0x009a no-reattach
# Canon MX310 (Issue #4482)
# Canon MX310 (STR #4482)
0x04a9 0x1728 unidir
# Canon MX320 (Issue #4482)
# Canon MX320 (STR #4482)
0x04A9 0x1736 unidir
# All Intermec devices (Issue #4553)
# All Intermec devices (STR #4553)
0x067e no-reattach
# HP LaserJet 1150 (Issue #4549)
0x03f0 0x0f17 delay-close
# HP LaserJet 1300 (Issue #4549)
0x03f0 0x1017 delay-close
0x03f0 0x1117 delay-close
# HP LaserJet 1320 (Issue #4549)
0x03f0 0x1d17 delay-close
# Canon, Inc. MP530 Printer
0x04a9 0x1712 unidir
# Xerox WorkCentre 3220 (https://bugs.launchpad.net/bugs/1406203, Issue #4789)
0x0924 0x4294 no-reattach
# Lexmark C540n (Issue #4778)
0x043d 0x0139 no-reattach
# Kyocera Ecosys P6026cdn (Issue #4900)
0x0482 0x063f no-reattach
# Lexmark E260dn (Issue #4994)
0x043d 0x0123 no-reattach
+14 -8
Ver Arquivo
@@ -1,16 +1,18 @@
#!/bin/sh
#
# Psuedo-backend for CUPS testing purposes.
# "$Id$"
#
# Copyright 2011 by Apple Inc.
# Psuedo-backend for CUPS testing purposes.
#
# 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/".
# Copyright 2011 by Apple Inc.
#
# This file is subject to the Apple OS-Developed Software exception.
# 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.
#
if test $# = 0; then
@@ -22,3 +24,7 @@ fi
cat $6 >/dev/null
sleep 5
exit 0
#
# End of "$Id$".
#
+9 -2
Ver Arquivo
@@ -1,4 +1,6 @@
/*
* "$Id: runloop.c 11558 2014-02-06 18:33:34Z msweet $"
*
* Common run loop APIs for CUPS backends.
*
* Copyright 2007-2014 by Apple Inc.
@@ -77,7 +79,7 @@ backendDrainOutput(int print_fd, /* I - Print file descriptor */
* Read error - bail if we don't see EAGAIN or EINTR...
*/
if (errno != EAGAIN && errno != EINTR)
if (errno != EAGAIN || errno != EINTR)
{
fprintf(stderr, "DEBUG: Read failed: %s\n", strerror(errno));
_cupsLangPrintFilter(stderr, "ERROR", _("Unable to read print data."));
@@ -305,7 +307,7 @@ backendRunLoop(
* Read error - bail if we don't see EAGAIN or EINTR...
*/
if (errno != EAGAIN && errno != EINTR)
if (errno != EAGAIN || errno != EINTR)
{
fprintf(stderr, "DEBUG: Read failed: %s\n", strerror(errno));
_cupsLangPrintFilter(stderr, "ERROR",
@@ -523,3 +525,8 @@ backendWaitLoop(
return (1);
}
/*
* End of "$Id: runloop.c 11558 2014-02-06 18:33:34Z msweet $".
*/
+8 -2
Ver Arquivo
@@ -1,7 +1,9 @@
/*
* "$Id: snmp-supplies.c 12228 2014-10-21 13:42:05Z msweet $"
*
* SNMP supplies functions for CUPS.
*
* Copyright 2008-2015 by Apple Inc.
* Copyright 2008-2014 by Apple Inc.
*
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
@@ -17,7 +19,6 @@
*/
#include "backend-private.h"
#include <cups/ppd-private.h>
#include <cups/array.h>
@@ -1094,3 +1095,8 @@ utf16_to_utf8(
cupsUTF32ToUTF8(dst, temp, (int)dstsize);
}
/*
* End of "$Id: snmp-supplies.c 12228 2014-10-21 13:42:05Z msweet $".
*/
+7
Ver Arquivo
@@ -1,4 +1,6 @@
/*
* "$Id: snmp.c 11594 2014-02-14 20:09:01Z msweet $"
*
* SNMP discovery backend for CUPS.
*
* Copyright 2007-2014 by Apple Inc.
@@ -1359,3 +1361,8 @@ update_cache(snmp_cache_t *device, /* I - Device */
list_device(device);
}
/*
* End of "$Id: snmp.c 11594 2014-02-14 20:09:01Z msweet $".
*/
+26 -2
Ver Arquivo
@@ -1,7 +1,9 @@
/*
* "$Id: socket.c 11907 2014-06-09 18:35:32Z msweet $"
*
* AppSocket backend for CUPS.
*
* Copyright 2007-2016 by Apple Inc.
* Copyright 2007-2014 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
@@ -69,6 +71,7 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
int contimeout; /* Connection timeout */
int waiteof; /* Wait for end-of-file? */
int port; /* Port number */
char portname[255]; /* Port name */
int delay; /* Delay for retries... */
int device_fd; /* AppSocket */
int error; /* Error code (if any) */
@@ -263,7 +266,23 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
start_time = time(NULL);
addrlist = backendLookup(hostname, port, NULL);
sprintf(portname, "%d", port);
fputs("STATE: +connecting-to-device\n", stderr);
fprintf(stderr, "DEBUG: Looking up \"%s\"...\n", hostname);
while ((addrlist = httpAddrGetList(hostname, AF_UNSPEC, portname)) == NULL)
{
_cupsLangPrintFilter(stderr, "INFO",
_("Unable to locate printer \"%s\"."), hostname);
sleep(10);
if (getenv("CLASS") != NULL)
{
fputs("STATE: -connecting-to-device\n", stderr);
return (CUPS_BACKEND_STOP);
}
}
/*
* See if the printer supports SNMP...
@@ -495,3 +514,8 @@ wait_bc(int device_fd, /* I - Socket */
else
return (-1);
}
/*
* End of "$Id: socket.c 11907 2014-06-09 18:35:32Z msweet $".
*/
+20 -9
Ver Arquivo
@@ -1,16 +1,22 @@
/*
* IEEE-1284 support functions test program for CUPS.
* "$Id: test1284.c 10996 2013-05-29 11:51:34Z msweet $"
*
* Copyright 2007-2010 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products, all rights reserved.
* IEEE-1284 support functions test program for CUPS.
*
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
* "LICENSE" which should have been included with this file. If this
* file is missing or damaged, see the license at "http://www.cups.org/".
* Copyright 2007-2010 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products, all rights reserved.
*
* This file is subject to the Apple OS-Developed Software exception.
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
* "LICENSE" which should have been included with this file. If this
* file is missing or damaged, see the license at "http://www.cups.org/".
*
* This file is subject to the Apple OS-Developed Software exception.
*
* Contents:
*
* main() - Test the device-ID functions.
*/
/*
@@ -71,3 +77,8 @@ main(int argc, /* I - Number of command-line args */
return (0);
}
/*
* End of "$Id: test1284.c 10996 2013-05-29 11:51:34Z msweet $".
*/
+7
Ver Arquivo
@@ -1,4 +1,6 @@
/*
* "$Id: testbackend.c 11594 2014-02-14 20:09:01Z msweet $"
*
* Backend test program for CUPS.
*
* Copyright 2007-2014 by Apple Inc.
@@ -675,3 +677,8 @@ walk_cb(const char *oid, /* I - OID */
printf("CUPS_SC_CMD_SNMP_WALK %s, %d bytes (%s)\n", oid, datalen, temp);
}
/*
* End of "$Id: testbackend.c 11594 2014-02-14 20:09:01Z msweet $".
*/
+19 -8
Ver Arquivo
@@ -1,15 +1,21 @@
/*
* SNMP supplies test program for CUPS.
* "$Id: testsupplies.c 3247 2011-05-12 06:22:31Z msweet $"
*
* Copyright 2008-2011 by Apple Inc.
* SNMP supplies test program for CUPS.
*
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
* "LICENSE" which should have been included with this file. If this
* file is missing or damaged, see the license at "http://www.cups.org/".
* Copyright 2008-2011 by Apple Inc.
*
* This file is subject to the Apple OS-Developed Software exception.
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
* "LICENSE" which should have been included with this file. If this
* file is missing or damaged, see the license at "http://www.cups.org/".
*
* This file is subject to the Apple OS-Developed Software exception.
*
* Contents:
*
* main() - Show the supplies state of a printer.
*/
/*
@@ -70,3 +76,8 @@ main(int argc, /* I - Number of command-line args */
sleep(5);
}
}
/*
* End of "$Id: testsupplies.c 3247 2011-05-12 06:22:31Z msweet $".
*/
+318 -286
Ver Arquivo
@@ -1,5 +1,7 @@
/*
* Copyright 2005-2016 Apple Inc. All rights reserved.
* "$Id: usb-darwin.c 12529 2015-02-23 18:57:57Z msweet $"
*
* Copyright 2005-2014 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
@@ -61,7 +63,6 @@
#include <cups/file-private.h>
#include <cups/sidechannel.h>
#include <cups/language-private.h>
#include <cups/ppd-private.h>
#include "backend-private.h"
#include <CoreFoundation/CoreFoundation.h>
#include <IOKit/usb/IOUSBLib.h>
@@ -94,7 +95,7 @@ extern char **environ;
#define WAIT_SIDE_DELAY 3
#define DEFAULT_TIMEOUT 5000L
#define USB_INTERFACE_KIND CFUUIDGetUUIDBytes(kIOUSBInterfaceInterfaceID245)
#define USB_INTERFACE_KIND CFUUIDGetUUIDBytes(kIOUSBInterfaceInterfaceID190)
#define kUSBLanguageEnglish 0x409
#define PRINTER_POLLING_INTERVAL 5 /* seconds */
@@ -139,7 +140,7 @@ struct crashreporter_annotations_t gCRAnnotations
#define kUSBPrintingProtocolBidirectional 2
#define kUSBPrintingProtocolIPP 4
typedef IOUSBInterfaceInterface245 **printer_interface_t;
typedef IOUSBInterfaceInterface190 **printer_interface_t;
typedef struct iodevice_request_s /**** Device request ****/
{
@@ -202,7 +203,7 @@ typedef struct classdriver_s /**** g.classdriver context ****/
} classdriver_t;
typedef Boolean (*iterator_callback_t)(io_service_t obj, printer_interface_t printerIntf, void *refcon);
typedef Boolean (*iterator_callback_t)(void *refcon, io_service_t obj, CFStringRef deviceIDString, UInt32 deviceLocation, UInt8 interfaceNum, UInt8 alternateSetting);
typedef struct iterator_reference_s /**** Iterator reference data */
{
@@ -231,7 +232,6 @@ typedef struct globals_s
UInt32 location;
UInt8 interfaceNum;
UInt8 alternateSetting;
UInt8 interfaceProtocol;
CFRunLoopTimerRef status_timer;
@@ -241,7 +241,6 @@ 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 */
@@ -265,8 +264,8 @@ int Iterating = 0; /* Are we iterating the bus? */
* Local functions...
*/
static Boolean list_device_cb(io_service_t obj, printer_interface_t printerIntf, void *refcon);
static Boolean find_device_cb(io_service_t obj, printer_interface_t printerIntf, void *refcon);
static Boolean find_device_cb(void *refcon, io_service_t obj, CFStringRef deviceIDString, UInt32 deviceLocation, UInt8 interfaceNum, UInt8 alternateSetting);
static Boolean list_device_cb(void *refcon, io_service_t obj, CFStringRef deviceIDString, UInt32 deviceLocation, UInt8 interfaceNum, UInt8 alternateSetting);
static CFStringRef cfstr_create_trim(const char *cstr);
static CFStringRef copy_value_for_key(CFStringRef deviceID, CFStringRef *keys);
@@ -285,6 +284,7 @@ static void parse_options(char *options, char *serial, int serial_size, UInt32 *
static void setup_cfLanguage(void);
static void soft_reset(void);
static void status_timer_cb(CFRunLoopTimerRef timer, void *info);
static void log_usb_class_driver(int is_64bit);
#define IS_64BIT 1
#define IS_NOT_64BIT 0
@@ -300,10 +300,10 @@ static const char *next_line (const char *buffer);
static void parse_pserror (char *sockBuffer, int len);
#endif /* PARSE_PS_ERRORS */
static printer_interface_t usb_printer_interface_interface(io_service_t usbClass);
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 IOUSBInterfaceInterface220 **usb_interface220_for_service(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 deviceIDCopyManufacturer(CFStringRef deviceID);
static CFStringRef deviceIDCopyModel(CFStringRef deviceID);
static CFStringRef deviceIDCopySerialNumber(CFStringRef deviceID);
@@ -418,17 +418,10 @@ print_device(const char *uri, /* I - Device URI */
g.printer_obj = 0x0;
g.classdriver = 0x0;
}
fprintf(stderr, "DEBUG: Looking for '%s %s'\n", hostname, resource);
do
{
iterate_printers(find_device_cb, NULL);
if (g.printer_obj != 0x0)
break;
_cupsLangPrintFilter(stderr, "INFO", _("Waiting for printer to become available."));
sleep(5);
} while (true);
iterate_printers(find_device_cb, NULL);
fputs("DEBUG: Opening connection\n", stderr);
@@ -470,6 +463,11 @@ print_device(const char *uri, /* I - Device URI */
return (CUPS_BACKEND_STOP);
}
#ifdef __x86_64__
if (status == noErr && driverBundlePath != NULL && CFStringCompare(driverBundlePath, kUSBGenericTOPrinterClassDriver, 0) != kCFCompareEqualTo)
log_usb_class_driver(IS_64BIT);
#endif /* __x86_64__ */
if (driverBundlePath)
CFRelease(driverBundlePath);
@@ -959,27 +957,6 @@ 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...
*/
@@ -1118,240 +1095,256 @@ sidechannel_thread(void *reference)
/*
* 'iterate_printers()' - Iterate over all the printers.
*/
static void iterate_printers(iterator_callback_t callBack, void *userdata)
{
Iterating = 1;
iterator_reference_t reference = { callBack, userdata, true };
IONotificationPortRef addNotification = IONotificationPortCreate(kIOMasterPortDefault);
int printingClass = kUSBPrintingClass;
int printingSubclass = kUSBPrintingSubclass;
CFNumberRef interfaceClass = CFNumberCreate(kCFAllocatorDefault, kCFNumberIntType, &printingClass);
CFNumberRef interfaceSubClass = CFNumberCreate(kCFAllocatorDefault, kCFNumberIntType, &printingSubclass);
CFMutableDictionaryRef usbPrinterMatchDictionary = IOServiceMatching(kIOUSBInterfaceClassName);
CFDictionaryAddValue(usbPrinterMatchDictionary, CFSTR("bInterfaceClass"), interfaceClass);
CFDictionaryAddValue(usbPrinterMatchDictionary, CFSTR("bInterfaceSubClass"), interfaceSubClass);
CFRelease(interfaceClass);
CFRelease(interfaceSubClass);
io_iterator_t add_iterator = IO_OBJECT_NULL;
IOServiceAddMatchingNotification(addNotification, kIOMatchedNotification,
usbPrinterMatchDictionary, &device_added, &reference, &add_iterator);
if (add_iterator != IO_OBJECT_NULL)
{
device_added (&reference, add_iterator);
if (reference.keepRunning)
Iterating = 1;
mach_port_t masterPort = 0x0;
kern_return_t kr = IOMasterPort (bootstrap_port, &masterPort);
if (kr == kIOReturnSuccess && masterPort != 0x0)
{
CFRunLoopAddSource(CFRunLoopGetCurrent(), IONotificationPortGetRunLoopSource(addNotification), kCFRunLoopDefaultMode);
CFRunLoopRun();
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)
{
device_added(&reference, addIterator);
if (reference.keepRunning)
{
CFRunLoopAddSource(CFRunLoopGetCurrent(), IONotificationPortGetRunLoopSource(addNotification), kCFRunLoopDefaultMode);
CFRunLoopRun();
}
IOObjectRelease(addIterator);
}
mach_port_deallocate(mach_task_self(), masterPort);
}
IOObjectRelease(add_iterator);
}
Iterating = 0;
Iterating = 0;
}
/*
* 'device_added()' - Device added notifier.
*/
#define IsPrintingInterface(c,s,p) ((c) == kUSBPrintingInterfaceClass && (s) == kUSBPrintingSubclass && (p) != kUSBPrintingProtocolIPP)
static void device_added(void *userdata, io_iterator_t iterator)
{
iterator_reference_t *reference = userdata;
io_service_t intf;
while (reference->keepRunning && (intf = IOIteratorNext(iterator)) != 0x0)
{
printer_interface_t printerIntf = usb_printer_interface_interface(intf);
if (printerIntf != NULL)
iterator_reference_t *reference = userdata;
io_service_t device;
while (reference->keepRunning && (device = IOIteratorNext(iterator)) != 0x0)
{
UInt8 intfClass = 0, intfSubClass = 0;
UInt32 locationID = 0;
IOUSBDeviceInterface **devIntf = NULL;
io_iterator_t intfIterator = IO_OBJECT_NULL;
io_object_t intf = IO_OBJECT_NULL;
(*printerIntf)->GetInterfaceClass(printerIntf, &intfClass);
(*printerIntf)->GetInterfaceSubClass(printerIntf, &intfSubClass);
if (intfClass == kUSBPrintingInterfaceClass && intfSubClass == kUSBPrintingSubclass)
reference->keepRunning = reference->callback(intf, printerIntf, userdata);
(*printerIntf)->Release(printerIntf);
}
IOObjectRelease(intf);
devIntf = usb_device_interface_for_device(device);
if (devIntf == NULL)
goto device_added_done;
UInt16 vendorUniqueID;
if ((*devIntf)->GetDeviceVendor(devIntf, &vendorUniqueID) != kIOReturnSuccess || vendorUniqueID == kAppleVendorID || vendorUniqueID == 0x0A5C)
goto device_added_done;
if ((*devIntf)->GetLocationID(devIntf, &locationID) != kIOReturnSuccess)
goto device_added_done;
IOUSBFindInterfaceRequest req = { kIOUSBFindInterfaceDontCare, kIOUSBFindInterfaceDontCare, kIOUSBFindInterfaceDontCare, kIOUSBFindInterfaceDontCare };
if ((*devIntf)->CreateInterfaceIterator(devIntf, &req, &intfIterator) != kIOReturnSuccess)
goto device_added_done;
while (reference->keepRunning && (intf = IOIteratorNext(intfIterator)))
{
IOUSBInterfaceInterface220 **intf220 = usb_interface220_for_service(intf);
if (intf220 != 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);
if (IsPrintingInterface(intfClass, intfSubclass, intfProtocol))
{
CFStringRef deviceIDString = printer_interface_deviceid(intf220, 0);
if (deviceIDString != NULL)
{
reference->keepRunning = reference->callback(userdata, intf, deviceIDString, locationID, intfNumber, 0);
CFRelease(deviceIDString);
}
}
IOUSBInterfaceDescriptor *intfDesc = nil;
while (reference->keepRunning && (intfDesc = (IOUSBInterfaceDescriptor *)(*intf220)->FindNextAssociatedDescriptor(intf220, intfDesc, kUSBInterfaceDesc)))
{
intfClass = intfDesc->bInterfaceClass;
intfSubclass = intfDesc->bInterfaceSubClass;
intfProtocol = intfDesc->bInterfaceProtocol;
if ((IsPrintingInterface(intfClass, intfSubclass, intfProtocol)))
{
CFStringRef deviceIDString = printer_interface_deviceid(intf220, intfDesc->bAlternateSetting);
if (deviceIDString != NULL)
{
reference->keepRunning = reference->callback(userdata, intf, deviceIDString, locationID, intfNumber, intfDesc->bAlternateSetting);
CFRelease(deviceIDString);
}
}
}
(*intf220)->Release(intf220);
}
}
device_added_done:
if (devIntf != NULL) (*devIntf)->Release(devIntf);
if (intfIterator != IO_OBJECT_NULL) IOObjectRelease(intfIterator);
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(IO_OBJECT_NULL, NULL, reference->userdata);
reference->keepRunning = reference->callback(reference->userdata, IO_OBJECT_NULL, NULL, 0, 0, 0);
if (!reference->keepRunning)
CFRunLoopStop(CFRunLoopGetCurrent());
CFRunLoopStop(CFRunLoopGetCurrent());
}
/*
* 'list_device_cb()' - list_device iterator callback.
*/
static Boolean list_device_cb(io_service_t obj, printer_interface_t printerIntf, void *refcon)
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 deviceIDString = NULL;
CFStringRef make = NULL;
CFStringRef model = NULL;
CFStringRef serial = NULL;
UInt32 intfLocation;
deviceIDString = copy_printer_interface_deviceid(printerIntf, 0);
if (deviceIDString == NULL)
goto list_device_done;
make = deviceIDCopyManufacturer(deviceIDString);
model = deviceIDCopyModel(deviceIDString);
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 ((*printerIntf)->GetLocationID(printerIntf, &intfLocation) == kIOReturnSuccess)
snprintf(optionsstr, sizeof(optionsstr), "?location=%x", (unsigned)intfLocation);
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,
if (obj != IO_OBJECT_NULL)
{
CFStringRef make = NULL;
CFStringRef model = NULL;
CFStringRef serial = NULL;
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);
list_device_done:
if (make != NULL) CFRelease(make);
if (model != NULL) CFRelease(model);
if (serial != NULL) CFRelease(serial);
}
return obj != IO_OBJECT_NULL;
}
return obj != IO_OBJECT_NULL;
}
/*
* 'find_device_cb()' - print_device iterator callback.
*/
static Boolean find_device_cb(io_service_t obj, printer_interface_t printerIntf, void *refcon)
static Boolean find_device_cb(void *refcon, io_service_t obj, CFStringRef deviceIDString, UInt32 deviceLocation, UInt8 interfaceNum, UInt8 alternateSetting)
{
(void)refcon;
Boolean keepLooking = true;
if (obj != IO_OBJECT_NULL)
{
CFStringRef deviceIDString = NULL;
CFStringRef make = NULL;
CFStringRef model = NULL;
CFStringRef serial = NULL;
deviceIDString = copy_printer_interface_deviceid(printerIntf, 0);
if (deviceIDString == NULL)
goto find_device_done;
make = deviceIDCopyManufacturer(deviceIDString);
model = deviceIDCopyModel(deviceIDString);
serial = deviceIDCopySerialNumber(deviceIDString);
if (make && CFStringCompare(make, g.make, kCFCompareCaseInsensitive) == kCFCompareEqualTo)
Boolean keepLooking = true;
if (obj != IO_OBJECT_NULL)
{
if (model && CFStringCompare(model, g.model, kCFCompareCaseInsensitive) == kCFCompareEqualTo)
{
UInt8 intfAltSetting = 0, intfNumber = 0, intfProtocol = 0;
UInt32 intfLocation = 0;
(*printerIntf)->GetInterfaceProtocol(printerIntf, &intfProtocol);
(*printerIntf)->GetAlternateSetting(printerIntf, &intfAltSetting);
(*printerIntf)->GetInterfaceNumber(printerIntf, &intfNumber);
(*printerIntf)->GetLocationID(printerIntf, &intfLocation);
if (g.serial != NULL && CFStringGetLength(g.serial) > 0)
CFStringRef make = deviceIDCopyManufacturer(deviceIDString);
CFStringRef model = deviceIDCopyModel(deviceIDString);
CFStringRef serial = deviceIDCopySerialNumber(deviceIDString);
if (make && CFStringCompare(make, g.make, kCFCompareCaseInsensitive) == kCFCompareEqualTo)
{
if (serial != NULL && CFStringCompare(serial, g.serial, kCFCompareCaseInsensitive) == kCFCompareEqualTo)
{
g.interfaceProtocol = intfProtocol;
g.location = intfLocation;
g.alternateSetting = intfAltSetting;
if (intfProtocol != kUSBPrintingProtocolIPP)
if (model && CFStringCompare(model, g.model, kCFCompareCaseInsensitive) == kCFCompareEqualTo)
{
g.printer_obj = obj;
IOObjectRetain(obj);
if (g.serial != NULL && CFStringGetLength(g.serial) > 0)
{
if (serial != NULL && CFStringCompare(serial, g.serial, kCFCompareCaseInsensitive) == kCFCompareEqualTo)
{
IOObjectRetain(obj);
g.printer_obj = obj;
g.alternateSetting = alternateSetting;
keepLooking = false;
}
}
else
{
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;
}
keepLooking = (intfProtocol == kUSBPrintingProtocolIPP);
}
}
else
{
if (g.printer_obj != 0)
IOObjectRelease(g.printer_obj);
g.location = intfLocation;
g.alternateSetting = intfAltSetting;
g.interfaceProtocol = intfProtocol;
g.printer_obj = obj;
IOObjectRetain(obj);
if (g.location == 0 || g.location == intfLocation)
keepLooking = false;
}
if (!keepLooking)
g.interfaceNum = intfNumber;
}
if (make) CFRelease(make);
if (model) CFRelease(model);
if (serial) CFRelease(serial);
}
find_device_done:
if (deviceIDString != NULL) CFRelease(deviceIDString);
if (make != NULL) CFRelease(make);
if (model != NULL) CFRelease(model);
if (serial != NULL) CFRelease(serial);
}
else
{
keepLooking = (g.printer_obj == 0 && g.interfaceProtocol != kUSBPrintingProtocolIPP);
if (obj == IO_OBJECT_NULL && keepLooking)
else
{
CFRunLoopTimerContext context = { 0, refcon, NULL, NULL, NULL };
CFRunLoopTimerRef timer = CFRunLoopTimerCreate(NULL, CFAbsoluteTimeGetCurrent() + 1.0, 10, 0x0, 0x0, status_timer_cb, &context);
if (timer != NULL)
{
CFRunLoopAddTimer(CFRunLoopGetCurrent(), timer, kCFRunLoopDefaultMode);
g.status_timer = timer;
}
keepLooking = (g.printer_obj == 0);
if (obj == IO_OBJECT_NULL && keepLooking)
{
CFRunLoopTimerContext context = { 0, refcon, NULL, NULL, NULL };
CFRunLoopTimerRef timer = CFRunLoopTimerCreate(NULL, CFAbsoluteTimeGetCurrent() + 1.0, 10, 0x0, 0x0, status_timer_cb, &context);
if (timer != NULL)
{
CFRunLoopAddTimer(CFRunLoopGetCurrent(), timer, kCFRunLoopDefaultMode);
g.status_timer = timer;
}
}
}
}
if (!keepLooking && g.status_timer != NULL)
{
fputs("STATE: -offline-report\n", stderr);
_cupsLangPrintFilter(stderr, "INFO", _("The printer is now online."));
CFRunLoopRemoveTimer(CFRunLoopGetCurrent(), g.status_timer, kCFRunLoopDefaultMode);
CFRelease(g.status_timer);
g.status_timer = NULL;
}
return keepLooking;
if (!keepLooking && g.status_timer != NULL)
{
fputs("STATE: -offline-report\n", stderr);
_cupsLangPrintFilter(stderr, "INFO", _("The printer is now online."));
CFRunLoopRemoveTimer(CFRunLoopGetCurrent(), g.status_timer, kCFRunLoopDefaultMode);
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);
}
@@ -1519,7 +1512,6 @@ 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)
@@ -1530,22 +1522,39 @@ static kern_return_t load_printerdriver(CFStringRef *driverBundlePath)
return kr;
}
static printer_interface_t usb_printer_interface_interface(io_service_t usbClass)
static IOUSBInterfaceInterface220 **usb_interface220_for_service(io_service_t usbClass)
{
printer_interface_t intf = NULL;
IOUSBInterfaceInterface220 ** intf = NULL;
IOCFPlugInInterface **plugin = NULL;
SInt32 score;
int kr = IOCreatePlugInInterfaceForService(usbClass, kIOUSBInterfaceUserClientTypeID, kIOCFPlugInInterfaceID, &plugin, &score);
if (kr == kIOReturnSuccess)
{
(*plugin)->QueryInterface(plugin, USB_INTERFACE_KIND, (LPVOID *)&intf);
(*plugin)->QueryInterface(plugin, CFUUIDGetUUIDBytes(kIOUSBInterfaceInterfaceID220), (LPVOID *)&intf);
IODestroyPlugInInterface(plugin);
}
return intf;
}
static CFStringRef copy_printer_interface_deviceid(printer_interface_t printer, UInt8 alternateSetting)
static IOUSBDeviceInterface **usb_device_interface_for_device(io_service_t usbDevice)
{
IOUSBDeviceInterface ** intf = NULL;
IOCFPlugInInterface **plugin = NULL;
SInt32 score;
int kr = IOCreatePlugInInterfaceForService(usbDevice, kIOUSBDeviceUserClientTypeID, kIOCFPlugInInterfaceID, &plugin, &score);
if (kr == kIOReturnSuccess)
{
(*plugin)->QueryInterface(plugin, CFUUIDGetUUIDBytes(kIOUSBDeviceInterfaceID), (LPVOID *)&intf);
IODestroyPlugInInterface(plugin);
}
return intf;
}
static CFStringRef printer_interface_deviceid(IOUSBInterfaceInterface220 **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...
@@ -1559,8 +1568,8 @@ static CFStringRef copy_printer_interface_deviceid(printer_interface_t printer,
#define kDefaultNoDataTimeout 5000L
#define pack_device_id_wIndex(intf, alt) ((UInt16)((((UInt16)(intf)) << 8) | ((UInt8)(alt))))
if (printer == NULL)
return NULL;
if (printer == nil)
return nil;
IOReturn err = kIOReturnError;
@@ -1582,15 +1591,15 @@ static CFStringRef copy_printer_interface_deviceid(printer_interface_t printer,
request.pData = NULL;
}
IOReturn berr = kIOReturnError;
IOReturn err = kIOReturnError;
char *buffer = malloc(size);
if (buffer == NULL)
return kIOReturnNoMemory;
request.wLength = HostToUSBWord(size);
request.pData = buffer;
berr = (*printer)->ControlRequestTO(printer, (UInt8)0, &request);
return berr;
err = (*printer)->ControlRequestTO(printer, (UInt8)0, &request);
return err;
};
/* This request takes the 0 based configuration index. IOKit returns a 1 based configuration index */
@@ -1615,7 +1624,7 @@ static CFStringRef copy_printer_interface_deviceid(printer_interface_t printer,
{
ret = CFStringCreateWithBytes(NULL, (const UInt8 *) &request.pData[2], actualLength - 2, kCFStringEncodingUTF8, false);
}
else if (actualLength > 2) {
else {
err = sendRequest(actualLength);
if (err == kIOReturnSuccess && request.wLenDone > 0)
{
@@ -1630,7 +1639,7 @@ static CFStringRef copy_printer_interface_deviceid(printer_interface_t printer,
}
CFStringRef manufacturer = deviceIDCopyManufacturer(ret);
CFStringRef model = deviceIDCopyModel(ret);
CFStringRef model = deviceIDCopyManufacturer(ret);
CFStringRef serial = deviceIDCopySerialNumber(ret);
if (manufacturer == NULL || serial == NULL || model == NULL)
@@ -1655,22 +1664,22 @@ static CFStringRef copy_printer_interface_deviceid(printer_interface_t printer,
CFMutableStringRef extras = CFStringCreateMutable(NULL, 0);
if (manufacturer == NULL)
{
manufacturer = copy_printer_interface_indexed_description(printer, desc.iManufacturer, kUSBLanguageEnglish);
if (manufacturer && CFStringGetLength(manufacturer) > 0)
manufacturer = printer_interface_indexed_description(printer, desc.iManufacturer, kUSBLanguageEnglish);
if (CFStringGetLength(manufacturer) > 0)
CFStringAppendFormat(extras, NULL, CFSTR("MFG:%@;"), manufacturer);
}
if (model == NULL)
{
model = copy_printer_interface_indexed_description(printer, desc.iProduct, kUSBLanguageEnglish);
if (model && CFStringGetLength(model) > 0)
CFStringAppendFormat(extras, NULL, CFSTR("MDL:%@;"), model);
model = printer_interface_indexed_description(printer, desc.iProduct, kUSBLanguageEnglish);
if (CFStringGetLength(model) > 0)
CFStringAppendFormat(extras, NULL, CFSTR("MDL:%@;"), manufacturer);
}
if (serial == NULL && desc.iSerialNumber != 0)
{
serial = copy_printer_interface_indexed_description(printer, desc.iSerialNumber, kUSBLanguageEnglish);
if (serial && CFStringGetLength(serial) > 0)
serial = printer_interface_indexed_description(printer, desc.iSerialNumber, kUSBLanguageEnglish);
if (CFStringGetLength(serial) > 0)
CFStringAppendFormat(extras, NULL, CFSTR("SERN:%@;"), serial);
}
@@ -1688,8 +1697,14 @@ static CFStringRef copy_printer_interface_deviceid(printer_interface_t printer,
}
}
if (ret != NULL)
{
if (manufacturer != NULL)
CFRelease(manufacturer);
if (model != NULL)
CFRelease(model);
if (serial != NULL)
CFRelease(serial);
/* Remove special characters from the serial number */
CFRange range = (serial != NULL ? CFStringFind(serial, CFSTR("+"), 0) : CFRangeMake(0, 0));
if (range.length == 1)
@@ -1702,27 +1717,11 @@ static CFStringRef copy_printer_interface_deviceid(printer_interface_t printer,
ret = deviceIDString;
CFStringFindAndReplace(deviceIDString, CFSTR("+"), CFSTR(""), range, 0);
}
}
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;
return (CFStringGetLength(ret) > 0 ? ret : nil);
}
static CFStringRef copy_printer_interface_indexed_description(printer_interface_t printer, UInt8 index, UInt16 language)
static CFStringRef printer_interface_indexed_description(IOUSBInterfaceInterface220 ** printer, UInt8 index, UInt16 language)
{
IOReturn err;
UInt8 description[256]; // Max possible descriptor length
@@ -1760,7 +1759,7 @@ static CFStringRef copy_printer_interface_indexed_description(printer_interface_
err = (*printer)->ControlRequestTO(printer, 0, &request);
if (err != kIOReturnSuccess && err != kIOReturnUnderrun)
return NULL;
return nil;
}
unsigned int length = description[0];
@@ -1776,17 +1775,17 @@ static CFStringRef copy_printer_interface_indexed_description(printer_interface_
request.wIndex = language;
bzero(description, length);
request.wLength = (UInt16)length;
request.wLength = length;
request.pData = &description;
request.completionTimeout = 0;
request.noDataTimeout = 60L;
err = (*printer)->ControlRequestTO(printer, 0, &request);
if (err != kIOReturnSuccess)
return NULL;
return nil;
if (description[1] != kUSBStringDesc)
return NULL;
return nil;
if ((description[0] & 1) != 0)
description[0] &= 0xfe;
@@ -1800,7 +1799,7 @@ static CFStringRef copy_printer_interface_indexed_description(printer_interface_
if (length > maxLength - 1)
length = maxLength -1;
for (unsigned i = 0; i < length; i++)
for (int i = 0; i < length; i++)
buffer[i] = (char) description[2*i+2];
buffer[length] = 0;
@@ -2091,6 +2090,8 @@ static void run_legacy_backend(int argc,
if (!usb_legacy_status)
{
log_usb_class_driver(IS_NOT_64BIT);
/*
* Setup a SIGTERM handler then block it before forking...
*/
@@ -2244,13 +2245,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
{
write(2, "DEBUG: Child crashed.\n", 22);
_exit(CUPS_BACKEND_STOP);
fprintf(stderr, "DEBUG: Child crashed on signal %d\n", status);
exit(CUPS_BACKEND_STOP);
}
}
#endif /* __i386__ || __x86_64__ */
@@ -2442,11 +2443,11 @@ static void get_device_id(cups_sc_status_t *status,
if (g.printer_obj != IO_OBJECT_NULL)
{
printer_interface_t printerIntf = usb_printer_interface_interface(g.printer_obj);
if (printerIntf)
IOUSBInterfaceInterface220 **intf220 = usb_interface220_for_service(g.printer_obj);
if (intf220)
{
deviceIDString = copy_printer_interface_deviceid(printerIntf, g.alternateSetting);
(*printerIntf)->Release(printerIntf);
deviceIDString = printer_interface_deviceid(intf220, g.alternateSetting);
(*intf220)->Release(intf220);
}
}
@@ -2457,7 +2458,7 @@ static void get_device_id(cups_sc_status_t *status,
*datalen = (int)strlen(data);
else
*datalen = 0;
CFRelease(deviceIDString);
}
else
@@ -2467,3 +2468,34 @@ static void get_device_id(cups_sc_status_t *status,
*status = CUPS_SC_STATUS_OK;
}
static void
log_usb_class_driver(int is_64bit) /* I - Is the USB class driver 64-bit? */
{
/*
* Report the usage of legacy USB class drivers to Apple if the user opts into providing
* feedback to Apple...
*/
aslmsg aslm = asl_new(ASL_TYPE_MSG);
if (aslm)
{
ppd_file_t *ppd = ppdOpenFile(getenv("PPD"));
const char *make_model = ppd ? ppd->nickname : NULL;
ppd_attr_t *version = ppdFindAttr(ppd, "FileVersion", "");
asl_set(aslm, "com.apple.message.domain", "com.apple.printing.usb.64bit");
asl_set(aslm, "com.apple.message.result", is_64bit ? "yes" : "no");
asl_set(aslm, "com.apple.message.signature", make_model ? make_model : "Unknown");
asl_set(aslm, "com.apple.message.signature2", version ? version->value : "?.?");
asl_set(aslm, "com.apple.message.summarize", "YES");
asl_log(NULL, aslm, ASL_LEVEL_NOTICE, "");
asl_free(aslm);
}
}
/*
* End of "$Id: usb-darwin.c 12529 2015-02-23 18:57:57Z msweet $".
*/
+10 -20
Ver Arquivo
@@ -1,13 +1,15 @@
/*
* "$Id: usb-libusb.c 12349 2014-12-09 22:10:52Z msweet $"
*
* LIBUSB interface code for CUPS.
*
* Copyright 2007-2015 by Apple Inc.
* Copyright 2007-2014 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
* missing or damaged, see the license at "http://www.cups.org/".
* file is missing or damaged, see the license at "http://www.cups.org/".
*/
/*
@@ -16,7 +18,6 @@
#include <libusb.h>
#include <cups/cups-private.h>
#include <cups/ppd-private.h>
#include <cups/dir.h>
#include <pthread.h>
#include <sys/select.h>
@@ -102,7 +103,6 @@ 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,9 +641,6 @@ 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);
/*
@@ -1214,9 +1211,6 @@ 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;
@@ -1528,16 +1522,6 @@ 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);
}
/*
@@ -2017,3 +2001,9 @@ soft_reset_printer(
return (errcode);
}
/*
* End of "$Id: usb-libusb.c 12349 2014-12-09 22:10:52Z msweet $".
*/
+7
Ver Arquivo
@@ -1,4 +1,6 @@
/*
* "$Id: usb-unix.c 12124 2014-08-28 15:37:22Z msweet $"
*
* USB port backend for CUPS.
*
* This file is included from "usb.c" when compiled on UNIX/Linux.
@@ -598,3 +600,8 @@ side_cb(int print_fd, /* I - Print file */
return (cupsSideChannelWrite(command, status, data, datalen, 1.0));
}
/*
* End of "$Id: usb-unix.c 12124 2014-08-28 15:37:22Z msweet $".
*/
+22 -9
Ver Arquivo
@@ -1,16 +1,24 @@
/*
* USB printer backend for CUPS.
* "$Id: usb.c 10996 2013-05-29 11:51:34Z msweet $"
*
* Copyright 2007-2012 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
* USB port backend for CUPS.
*
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
* "LICENSE" which should have been included with this file. If this
* file is missing or damaged, see the license at "http://www.cups.org/".
* Copyright 2007-2012 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
*
* This file is subject to the Apple OS-Developed Software exception.
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
* "LICENSE" which should have been included with this file. If this
* file is missing or damaged, see the license at "http://www.cups.org/".
*
* This file is subject to the Apple OS-Developed Software exception.
*
* Contents:
*
* list_devices() - List all available USB devices to stdout.
* print_device() - Print a file to a USB device.
* main() - Send a file to the specified USB port.
*/
/*
@@ -249,3 +257,8 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
return (status);
}
/*
* End of "$Id: usb.c 10996 2013-05-29 11:51:34Z msweet $".
*/
+7 -4
Ver Arquivo
@@ -3,23 +3,26 @@ lpc.o: lpc.c ../cups/cups-private.h ../cups/string-private.h ../config.h \
../cups/array.h ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h
../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
../cups/ppd.h ../cups/thread-private.h
lpq.o: lpq.c ../cups/cups-private.h ../cups/string-private.h ../config.h \
../cups/debug-private.h ../cups/versioning.h ../cups/array-private.h \
../cups/array.h ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h
../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
../cups/ppd.h ../cups/thread-private.h
lpr.o: lpr.c ../cups/cups-private.h ../cups/string-private.h ../config.h \
../cups/debug-private.h ../cups/versioning.h ../cups/array-private.h \
../cups/array.h ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h
../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
../cups/ppd.h ../cups/thread-private.h
lprm.o: lprm.c ../cups/cups-private.h ../cups/string-private.h \
../config.h ../cups/debug-private.h ../cups/versioning.h \
../cups/array-private.h ../cups/array.h ../cups/ipp-private.h \
../cups/ipp.h ../cups/http.h ../cups/http-private.h ../cups/language.h \
../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
../cups/pwg-private.h ../cups/cups.h ../cups/file.h ../cups/pwg.h \
../cups/thread-private.h
../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h
+15 -8
Ver Arquivo
@@ -1,14 +1,16 @@
#
# Berkeley commands makefile for CUPS.
# "$Id: Makefile 10996 2013-05-29 11:51:34Z msweet $"
#
# Copyright 2007-2012 by Apple Inc.
# Copyright 1997-2006 by Easy Software Products, all rights reserved.
# Berkeley commands makefile for CUPS.
#
# 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
# missing or damaged, see the license at "http://www.cups.org/".
# Copyright 2007-2012 by Apple Inc.
# Copyright 1997-2006 by Easy Software Products, all rights reserved.
#
# These coded instructions, statements, and computer programs are the
# 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/".
#
include ../Makedefs
@@ -159,3 +161,8 @@ lprm: lprm.o ../cups/$(LIBCUPS)
#
include Dependencies
#
# End of "$Id: Makefile 10996 2013-05-29 11:51:34Z msweet $".
#
+8 -1
Ver Arquivo
@@ -1,4 +1,6 @@
/*
* "$Id: lpc.c 11558 2014-02-06 18:33:34Z msweet $"
*
* "lpc" command for CUPS.
*
* Copyright 2007-2014 by Apple Inc.
@@ -8,7 +10,7 @@
* 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
* missing or damaged, see the license at "http://www.cups.org/".
* file is missing or damaged, see the license at "http://www.cups.org/".
*/
/*
@@ -433,3 +435,8 @@ show_status(http_t *http, /* I - HTTP connection to server */
ippDelete(response);
}
}
/*
* End of "$Id: lpc.c 11558 2014-02-06 18:33:34Z msweet $".
*/
+102 -106
Ver Arquivo
@@ -1,14 +1,16 @@
/*
* "$Id: lpq.c 11558 2014-02-06 18:33:34Z msweet $"
*
* "lpq" command for CUPS.
*
* Copyright 2007-2016 by Apple Inc.
* Copyright 2007-2014 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
* missing or damaged, see the license at "http://www.cups.org/".
* file is missing or damaged, see the license at "http://www.cups.org/".
*/
/*
@@ -39,8 +41,7 @@ main(int argc, /* I - Number of command-line arguments */
{
int i; /* Looping var */
http_t *http; /* Connection to server */
const char *opt, /* Option pointer */
*dest, /* Desired printer */
const char *dest, /* Desired printer */
*user, /* Desired user */
*val; /* Environment variable name */
char *instance; /* Printer instance */
@@ -66,138 +67,128 @@ main(int argc, /* I - Number of command-line arguments */
all = 0;
for (i = 1; i < argc; i ++)
{
if (argv[i][0] == '+')
{
interval = atoi(argv[i] + 1);
}
else if (argv[i][0] == '-')
{
for (opt = argv[i] + 1; *opt; opt ++)
switch (argv[i][1])
{
switch (*opt)
{
case 'E' : /* Encrypt */
case 'E' : /* Encrypt */
#ifdef HAVE_SSL
cupsSetEncryption(HTTP_ENCRYPT_REQUIRED);
cupsSetEncryption(HTTP_ENCRYPT_REQUIRED);
if (http)
httpEncryption(http, HTTP_ENCRYPT_REQUIRED);
if (http)
httpEncryption(http, HTTP_ENCRYPT_REQUIRED);
#else
_cupsLangPrintf(stderr, _("%s: Sorry, no encryption support."), argv[0]);
_cupsLangPrintf(stderr, _("%s: Sorry, no encryption support."),
argv[0]);
#endif /* HAVE_SSL */
break;
break;
case 'U' : /* Username */
if (opt[1] != '\0')
case 'U' : /* Username */
if (argv[i][2] != '\0')
cupsSetUser(argv[i] + 2);
else
{
i ++;
if (i >= argc)
{
cupsSetUser(opt + 1);
opt += strlen(opt) - 1;
}
else
{
i ++;
if (i >= argc)
{
_cupsLangPrintf(stderr, _("%s: Error - expected username after \"-U\" option."), argv[0]);
return (1);
}
cupsSetUser(argv[i]);
}
break;
case 'P' : /* Printer */
if (opt[1] != '\0')
{
dest = opt + 1;
opt += strlen(opt) - 1;
}
else
{
i ++;
if (i >= argc)
{
httpClose(http);
usage();
}
dest = argv[i];
_cupsLangPrintf(stderr,
_("%s: Error - expected username after "
"\"-U\" option."), argv[0]);
return (1);
}
if ((instance = strchr(dest, '/')) != NULL)
*instance++ = '\0';
cupsSetUser(argv[i]);
}
break;
http = connect_server(argv[0], http);
case 'P' : /* Printer */
if (argv[i][2])
dest = argv[i] + 2;
else
{
i ++;
if ((named_dest = cupsGetNamedDest(http, dest, instance)) == NULL)
{
if (cupsLastError() == IPP_STATUS_ERROR_BAD_REQUEST ||
cupsLastError() == IPP_STATUS_ERROR_VERSION_NOT_SUPPORTED)
_cupsLangPrintf(stderr, _("%s: Error - add '/version=1.1' to server name."), argv[0]);
else if (instance)
_cupsLangPrintf(stderr, _("%s: Error - unknown destination \"%s/%s\"."), argv[0], dest, instance);
else
_cupsLangPrintf(stderr, _("%s: Unknown destination \"%s\"."), argv[0], dest);
return (1);
}
cupsFreeDests(1, named_dest);
break;
case 'a' : /* All printers */
all = 1;
break;
case 'h' : /* Connect to host */
if (http)
if (i >= argc)
{
httpClose(http);
http = NULL;
usage();
}
if (opt[1] != '\0')
{
cupsSetServer(opt + 1);
opt += strlen(opt) - 1;
}
else
{
i ++;
dest = argv[i];
}
if (i >= argc)
{
_cupsLangPrintf(stderr, _("%s: Error - expected hostname after \"-h\" option."), argv[0]);
return (1);
}
else
cupsSetServer(argv[i]);
}
break;
if ((instance = strchr(dest, '/')) != NULL)
*instance++ = '\0';
case 'l' : /* Long status */
longstatus = 1;
break;
http = connect_server(argv[0], http);
default :
if ((named_dest = cupsGetNamedDest(http, dest, instance)) == NULL)
{
if (cupsLastError() == IPP_STATUS_ERROR_BAD_REQUEST ||
cupsLastError() == IPP_STATUS_ERROR_VERSION_NOT_SUPPORTED)
_cupsLangPrintf(stderr,
_("%s: Error - add '/version=1.1' to server "
"name."), argv[0]);
else if (instance)
_cupsLangPrintf(stderr,
_("%s: Error - unknown destination \"%s/%s\"."),
argv[0], dest, instance);
else
_cupsLangPrintf(stderr, _("%s: Unknown destination \"%s\"."),
argv[0], dest);
return (1);
}
cupsFreeDests(1, named_dest);
break;
case 'a' : /* All printers */
all = 1;
break;
case 'h' : /* Connect to host */
if (http)
{
httpClose(http);
http = NULL;
}
usage();
}
if (argv[i][2] != '\0')
cupsSetServer(argv[i] + 2);
else
{
i ++;
if (i >= argc)
{
_cupsLangPrintf(stderr,
_("%s: Error - expected hostname after "
"\"-h\" option."), argv[0]);
return (1);
}
else
cupsSetServer(argv[i]);
}
break;
case 'l' : /* Long status */
longstatus = 1;
break;
default :
httpClose(http);
usage();
}
}
else if (isdigit(argv[i][0] & 255))
{
id = atoi(argv[i]);
}
else
{
user = argv[i];
}
}
http = connect_server(argv[0], http);
@@ -647,3 +638,8 @@ usage(void)
"[-l] [+interval]"));
exit(1);
}
/*
* End of "$Id: lpq.c 11558 2014-02-06 18:33:34Z msweet $".
*/
+211 -213
Ver Arquivo
@@ -1,14 +1,16 @@
/*
* "$Id: lpr.c 11558 2014-02-06 18:33:34Z msweet $"
*
* "lpr" command for CUPS.
*
* Copyright 2007-2016 by Apple Inc.
* Copyright 2007-2014 by Apple Inc.
* Copyright 1997-2007 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
* missing or damaged, see the license at "http://www.cups.org/".
* file is missing or damaged, see the license at "http://www.cups.org/".
*/
/*
@@ -30,8 +32,7 @@ main(int argc, /* I - Number of command-line arguments */
int job_id; /* Job ID */
char ch; /* Option character */
char *printer, /* Destination printer or class */
*instance, /* Instance */
*opt; /* Option pointer */
*instance; /* Instance */
const char *title, /* Job title */
*val; /* Environment variable name */
int num_copies; /* Number of copies per file */
@@ -55,235 +56,229 @@ main(int argc, /* I - Number of command-line arguments */
title = NULL;
for (i = 1; i < argc; i ++)
{
if (argv[i][0] == '-')
{
for (opt = argv[i] + 1; *opt; opt ++)
switch (ch = argv[i][1])
{
switch (ch = *opt)
{
case 'E' : /* Encrypt */
case 'E' : /* Encrypt */
#ifdef HAVE_SSL
cupsSetEncryption(HTTP_ENCRYPT_REQUIRED);
cupsSetEncryption(HTTP_ENCRYPT_REQUIRED);
#else
_cupsLangPrintf(stderr, _("%s: Sorry, no encryption support."), argv[0]);
_cupsLangPrintf(stderr, _("%s: Sorry, no encryption support."),
argv[0]);
#endif /* HAVE_SSL */
break;
break;
case 'U' : /* Username */
if (opt[1] != '\0')
case 'U' : /* Username */
if (argv[i][2] != '\0')
cupsSetUser(argv[i] + 2);
else
{
i ++;
if (i >= argc)
{
cupsSetUser(opt + 1);
opt += strlen(opt) - 1;
_cupsLangPrintf(stderr,
_("%s: Error - expected username after "
"\"-U\" option."), argv[0]);
return (1);
}
cupsSetUser(argv[i]);
}
break;
case 'H' : /* Connect to host */
if (argv[i][2] != '\0')
cupsSetServer(argv[i] + 2);
else
{
i ++;
if (i >= argc)
{
_cupsLangPrintf(stderr,
_("%s: Error - expected hostname after "
"\"-H\" option."), argv[0]);
return (1);
}
else
cupsSetServer(argv[i]);
}
break;
case '1' : /* TROFF font set 1 */
case '2' : /* TROFF font set 2 */
case '3' : /* TROFF font set 3 */
case '4' : /* TROFF font set 4 */
case 'i' : /* indent */
case 'w' : /* width */
if (argv[i][2] == '\0')
{
i ++;
if (i >= argc)
{
i ++;
if (i >= argc)
{
_cupsLangPrintf(stderr, _("%s: Error - expected username after \"-U\" option."), argv[0]);
return (1);
}
cupsSetUser(argv[i]);
}
break;
case 'H' : /* Connect to host */
if (opt[1] != '\0')
{
cupsSetServer(opt + 1);
opt += strlen(opt) - 1;
}
else
{
i ++;
if (i >= argc)
{
_cupsLangPrintf(stderr, _("%s: Error - expected hostname after \"-H\" option."), argv[0]);
return (1);
}
else
cupsSetServer(argv[i]);
}
break;
case '1' : /* TROFF font set 1 */
case '2' : /* TROFF font set 2 */
case '3' : /* TROFF font set 3 */
case '4' : /* TROFF font set 4 */
case 'i' : /* indent */
case 'w' : /* width */
if (opt[1] != '\0')
{
opt += strlen(opt) - 1;
}
else
{
i ++;
if (i >= argc)
{
_cupsLangPrintf(stderr,
_("%s: Error - expected value after \"-%c\" "
"option."), argv[0], ch);
return (1);
}
}
case 'c' : /* CIFPLOT */
case 'd' : /* DVI */
case 'f' : /* FORTRAN */
case 'g' : /* plot */
case 'n' : /* Ditroff */
case 't' : /* Troff */
case 'v' : /* Raster image */
_cupsLangPrintf(stderr, _("%s: Warning - \"%c\" format modifier not supported - output may not be correct."), argv[0], ch);
break;
case 'o' : /* Option */
if (opt[1] != '\0')
{
num_options = cupsParseOptions(opt + 1, num_options, &options);
opt += strlen(opt) - 1;
}
else
{
i ++;
if (i >= argc)
{
_cupsLangPrintf(stderr, _("%s: Error - expected option=value after \"-o\" option."), argv[0]);
return (1);
}
num_options = cupsParseOptions(argv[i], num_options, &options);
}
break;
case 'l' : /* Literal/raw */
num_options = cupsAddOption("raw", "true", num_options, &options);
break;
case 'p' : /* Prettyprint */
num_options = cupsAddOption("prettyprint", "true", num_options, &options);
break;
case 'h' : /* Suppress burst page */
num_options = cupsAddOption("job-sheets", "none", num_options, &options);
break;
case 's' : /* Don't use symlinks */
break;
case 'm' : /* Mail on completion */
{
char email[1024]; /* EMail address */
snprintf(email, sizeof(email), "mailto:%s@%s", cupsUser(), httpGetHostname(NULL, buffer, sizeof(buffer)));
num_options = cupsAddOption("notify-recipient-uri", email, num_options, &options);
}
break;
case 'q' : /* Queue file but don't print */
num_options = cupsAddOption("job-hold-until", "indefinite", num_options, &options);
break;
case 'r' : /* Remove file after printing */
deletefile = 1;
break;
case 'P' : /* Destination printer or class */
if (opt[1] != '\0')
{
printer = opt + 1;
opt += strlen(opt) - 1;
}
else
{
i ++;
if (i >= argc)
{
_cupsLangPrintf(stderr, _("%s: Error - expected destination after \"-P\" option."), argv[0]);
return (1);
}
printer = argv[i];
}
if ((instance = strrchr(printer, '/')) != NULL)
*instance++ = '\0';
if ((dest = cupsGetNamedDest(NULL, printer, instance)) != NULL)
{
for (j = 0; j < dest->num_options; j ++)
if (cupsGetOption(dest->options[j].name, num_options,
options) == NULL)
num_options = cupsAddOption(dest->options[j].name,
dest->options[j].value,
num_options, &options);
}
else if (cupsLastError() == IPP_STATUS_ERROR_BAD_REQUEST ||
cupsLastError() == IPP_STATUS_ERROR_VERSION_NOT_SUPPORTED)
{
_cupsLangPrintf(stderr, _("%s: Error - add '/version=1.1' to server name."), argv[0]);
_cupsLangPrintf(stderr,
_("%s: Error - expected value after \"-%c\" "
"option."), argv[0], ch);
return (1);
}
break;
}
case '#' : /* Number of copies */
if (opt[1] != '\0')
{
num_copies = atoi(opt + 1);
opt += strlen(opt) - 1;
}
else
{
i ++;
if (i >= argc)
{
_cupsLangPrintf(stderr, _("%s: Error - expected copies after \"-#\" option."), argv[0]);
return (1);
}
case 'c' : /* CIFPLOT */
case 'd' : /* DVI */
case 'f' : /* FORTRAN */
case 'g' : /* plot */
case 'n' : /* Ditroff */
case 't' : /* Troff */
case 'v' : /* Raster image */
_cupsLangPrintf(stderr,
_("%s: Warning - \"%c\" format modifier not "
"supported - output may not be correct."),
argv[0], ch);
break;
num_copies = atoi(argv[i]);
}
if (num_copies < 1)
case 'o' : /* Option */
if (argv[i][2] != '\0')
num_options = cupsParseOptions(argv[i] + 2, num_options, &options);
else
{
i ++;
if (i >= argc)
{
_cupsLangPrintf(stderr, _("%s: Error - copies must be 1 or more."), argv[0]);
_cupsLangPrintf(stderr,
_("%s: Error - expected option=value after "
"\"-o\" option."), argv[0]);
return (1);
}
sprintf(buffer, "%d", num_copies);
num_options = cupsAddOption("copies", buffer, num_options, &options);
break;
num_options = cupsParseOptions(argv[i], num_options, &options);
}
break;
case 'C' : /* Class */
case 'J' : /* Job name */
case 'T' : /* Title */
if (opt[1] != '\0')
case 'l' : /* Literal/raw */
num_options = cupsAddOption("raw", "true", num_options, &options);
break;
case 'p' : /* Prettyprint */
num_options = cupsAddOption("prettyprint", "true", num_options,
&options);
break;
case 'h' : /* Suppress burst page */
num_options = cupsAddOption("job-sheets", "none", num_options,
&options);
break;
case 's' : /* Don't use symlinks */
break;
case 'm' : /* Mail on completion */
{
char email[1024]; /* EMail address */
snprintf(email, sizeof(email), "mailto:%s@%s", cupsUser(),
httpGetHostname(NULL, buffer, sizeof(buffer)));
num_options = cupsAddOption("notify-recipient-uri", email,
num_options, &options);
}
break;
case 'q' : /* Queue file but don't print */
num_options = cupsAddOption("job-hold-until", "indefinite",
num_options, &options);
break;
case 'r' : /* Remove file after printing */
deletefile = 1;
break;
case 'P' : /* Destination printer or class */
if (argv[i][2] != '\0')
printer = argv[i] + 2;
else
{
i ++;
if (i >= argc)
{
title = opt + 1;
opt += strlen(opt) - 1;
_cupsLangPrintf(stderr,
_("%s: Error - expected destination after "
"\"-P\" option."), argv[0]);
return (1);
}
else
{
i ++;
if (i >= argc)
{
_cupsLangPrintf(stderr, _("%s: Error - expected name after \"-%c\" option."), argv[0], ch);
return (1);
}
title = argv[i];
}
break;
printer = argv[i];
}
default :
_cupsLangPrintf(stderr, _("%s: Error - unknown option \"%c\"."), argv[0], *opt);
if ((instance = strrchr(printer, '/')) != NULL)
*instance++ = '\0';
if ((dest = cupsGetNamedDest(NULL, printer, instance)) != NULL)
{
for (j = 0; j < dest->num_options; j ++)
if (cupsGetOption(dest->options[j].name, num_options,
options) == NULL)
num_options = cupsAddOption(dest->options[j].name,
dest->options[j].value,
num_options, &options);
}
else if (cupsLastError() == IPP_STATUS_ERROR_BAD_REQUEST ||
cupsLastError() == IPP_STATUS_ERROR_VERSION_NOT_SUPPORTED)
{
_cupsLangPrintf(stderr,
_("%s: Error - add '/version=1.1' to server "
"name."), argv[0]);
return (1);
}
}
break;
case '#' : /* Number of copies */
if (argv[i][2] != '\0')
num_copies = atoi(argv[i] + 2);
else
{
i ++;
if (i >= argc)
{
_cupsLangPrintf(stderr,
_("%s: Error - expected copies after "
"\"-#\" option."), argv[0]);
return (1);
}
num_copies = atoi(argv[i]);
}
sprintf(buffer, "%d", num_copies);
num_options = cupsAddOption("copies", buffer, num_options, &options);
break;
case 'C' : /* Class */
case 'J' : /* Job name */
case 'T' : /* Title */
if (argv[i][2] != '\0')
title = argv[i] + 2;
else
{
i ++;
if (i >= argc)
{
_cupsLangPrintf(stderr,
_("%s: Error - expected name after \"-%c\" "
"option."), argv[0], ch);
return (1);
}
title = argv[i];
}
break;
default :
_cupsLangPrintf(stderr,
_("%s: Error - unknown option \"%c\"."), argv[0],
argv[i][1]);
return (1);
}
}
else if (num_files < 1000)
@@ -312,11 +307,9 @@ main(int argc, /* I - Number of command-line arguments */
}
}
else
{
_cupsLangPrintf(stderr, _("%s: Error - too many files - \"%s\"."), argv[0], argv[i]);
}
}
_cupsLangPrintf(stderr,
_("%s: Error - too many files - \"%s\"."), argv[0],
argv[i]);
/*
* See if we have any files to print; if not, print from stdin...
*/
@@ -436,3 +429,8 @@ main(int argc, /* I - Number of command-line arguments */
return (0);
}
/*
* End of "$Id: lpr.c 11558 2014-02-06 18:33:34Z msweet $".
*/
+87 -84
Ver Arquivo
@@ -1,14 +1,20 @@
/*
* "lprm" command for CUPS.
* "$Id: lprm.c 10996 2013-05-29 11:51:34Z msweet $"
*
* Copyright 2007-2016 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products.
* "lprm" command for CUPS.
*
* 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
* missing or damaged, see the license at "http://www.cups.org/".
* Copyright 2007-2010 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:
*
* main() - Parse options and cancel jobs.
*/
/*
@@ -29,8 +35,7 @@ main(int argc, /* I - Number of command-line arguments */
int i; /* Looping var */
int job_id; /* Job ID */
const char *name; /* Destination printer */
char *instance, /* Pointer to instance name */
*opt; /* Option pointer */
char *instance; /* Pointer to instance name */
cups_dest_t *dest, /* Destination */
*defdest; /* Default destination */
int did_cancel; /* Did we cancel something? */
@@ -51,96 +56,90 @@ main(int argc, /* I - Number of command-line arguments */
*/
for (i = 1; i < argc; i ++)
{
if (argv[i][0] == '-' && argv[i][1] != '\0')
{
for (opt = argv[i] + 1; *opt; opt ++)
switch (argv[i][1])
{
switch (*opt)
{
case 'E' : /* Encrypt */
case 'E' : /* Encrypt */
#ifdef HAVE_SSL
cupsSetEncryption(HTTP_ENCRYPT_REQUIRED);
cupsSetEncryption(HTTP_ENCRYPT_REQUIRED);
#else
_cupsLangPrintf(stderr, _("%s: Sorry, no encryption support."), argv[0]);
_cupsLangPrintf(stderr,
_("%s: Sorry, no encryption support."), argv[0]);
#endif /* HAVE_SSL */
break;
break;
case 'P' : /* Cancel jobs on a printer */
if (opt[1] != '\0')
case 'P' : /* Cancel jobs on a printer */
if (argv[i][2])
name = argv[i] + 2;
else
{
i ++;
name = argv[i];
}
if ((instance = strchr(name, '/')) != NULL)
*instance = '\0';
if ((dest = cupsGetNamedDest(CUPS_HTTP_DEFAULT, name,
NULL)) == NULL)
{
_cupsLangPrintf(stderr,
_("%s: Error - unknown destination \"%s\"."),
argv[0], name);
goto error;
}
cupsFreeDests(1, dest);
break;
case 'U' : /* Username */
if (argv[i][2] != '\0')
cupsSetUser(argv[i] + 2);
else
{
i ++;
if (i >= argc)
{
name = opt + 1;
opt += strlen(opt) - 1;
}
else
{
i ++;
name = argv[i];
_cupsLangPrintf(stderr,
_("%s: Error - expected username after "
"\"-U\" option."), argv[0]);
goto error;
}
if ((instance = strchr(name, '/')) != NULL)
*instance = '\0';
cupsSetUser(argv[i]);
}
break;
case 'h' : /* Connect to host */
if (argv[i][2] != '\0')
cupsSetServer(argv[i] + 2);
else
{
i ++;
if ((dest = cupsGetNamedDest(CUPS_HTTP_DEFAULT, name, NULL)) == NULL)
if (i >= argc)
{
_cupsLangPrintf(stderr, _("%s: Error - unknown destination \"%s\"."), argv[0], name);
_cupsLangPrintf(stderr,
_("%s: Error - expected hostname after "
"\"-h\" option."), argv[0]);
goto error;
}
cupsFreeDests(1, dest);
break;
case 'U' : /* Username */
if (opt[1] != '\0')
{
cupsSetUser(opt + 1);
opt += strlen(opt) - 1;
}
}
else
{
i ++;
if (i >= argc)
{
_cupsLangPrintf(stderr, _("%s: Error - expected username after \"-U\" option."), argv[0]);
goto error;
}
cupsSetServer(argv[i]);
}
cupsSetUser(argv[i]);
}
break;
if (defdest)
cupsFreeDests(1, defdest);
case 'h' : /* Connect to host */
if (opt[1] != '\0')
{
cupsSetServer(opt + 1);
opt += strlen(opt) - 1;
}
else
{
i ++;
defdest = cupsGetNamedDest(CUPS_HTTP_DEFAULT, NULL, NULL);
name = defdest ? defdest->name : NULL;
break;
if (i >= argc)
{
_cupsLangPrintf(stderr, _("%s: Error - expected hostname after \"-h\" option."), argv[0]);
goto error;
}
else
cupsSetServer(argv[i]);
}
if (defdest)
cupsFreeDests(1, defdest);
defdest = cupsGetNamedDest(CUPS_HTTP_DEFAULT, NULL, NULL);
name = defdest ? defdest->name : NULL;
break;
default :
_cupsLangPrintf(stderr, _("%s: Error - unknown option \"%c\"."), argv[0], *opt);
goto error;
}
default :
_cupsLangPrintf(stderr, _("%s: Error - unknown option \"%c\"."),
argv[0], argv[i][1]);
goto error;
}
}
else
{
/*
@@ -183,7 +182,6 @@ main(int argc, /* I - Number of command-line arguments */
did_cancel = 1;
}
}
/*
* If nothing has been canceled yet, cancel the current job on the specified
@@ -212,3 +210,8 @@ main(int argc, /* I - Number of command-line arguments */
return (1);
}
/*
* End of "$Id: lprm.c 10996 2013-05-29 11:51:34Z msweet $".
*/
+1 -3
Ver Arquivo
@@ -35,9 +35,7 @@ admin.o: admin.c cgi-private.h cgi.h ../cups/cups.h ../cups/file.h \
../cups/language.h ../cups/pwg.h help-index.h ../cups/debug-private.h \
../cups/language-private.h ../cups/transcode.h \
../cups/string-private.h ../config.h ../cups/ipp-private.h \
../cups/http-private.h ../cups/md5-private.h ../cups/ppd-private.h \
../cups/ppd.h ../cups/raster.h ../cups/pwg-private.h \
../cups/adminutil.h
../cups/adminutil.h ../cups/ppd.h
classes.o: classes.c cgi-private.h cgi.h ../cups/cups.h ../cups/file.h \
../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
../cups/language.h ../cups/pwg.h help-index.h ../cups/debug-private.h \
+38 -14
Ver Arquivo
@@ -1,14 +1,16 @@
#
# "$Id: Makefile 11777 2014-03-28 19:18:10Z msweet $"
#
# CGI makefile for CUPS.
#
# Copyright 2007-2016 by Apple Inc.
# Copyright 2007-2014 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
# missing or damaged, see the license at "http://www.cups.org/".
# file is missing or damaged, see the license at "http://www.cups.org/".
#
include ../Makedefs
@@ -126,13 +128,10 @@ install-exec:
#
install-headers:
if test "x$(privateinclude)" != x; then \
echo Installing private header files into $(PRIVATEINCLUDE)...; \
$(INSTALL_DIR) -m 755 $(PRIVATEINCLUDE); \
for file in cgi.h help-index.h; do \
$(INSTALL_DATA) $$file $(PRIVATEINCLUDE); \
done; \
fi
echo Installing header files in $(INCLUDEDIR)/cups...
$(INSTALL_DIR) -m 755 $(INCLUDEDIR)/cups
$(INSTALL_DATA) cgi.h $(INCLUDEDIR)/cups
$(INSTALL_DATA) help-index.h $(INCLUDEDIR)/cups
#
@@ -179,11 +178,31 @@ uninstall:
$(RM) $(LIBDIR)/libcupscgi.so
$(RM) $(LIBDIR)/libcupscgi.so.1
-$(RMDIR) $(LIBDIR)
-if test "x$(privateinclude)" != x; then \
$(RM) $(PRIVATEINCLUDE)/cgi.h; \
$(RM) $(PRIVATEINCLUDE)/help-index.h; \
$(RMDIR) $(PRIVATEINCLUDE); \
fi
$(RM) $(INCLUDEDIR)/cups/cgi.h
$(RM) $(INCLUDEDIR)/cups/help-index.h
-$(RMDIR) $(INCLUDEDIR)/cups
#
# Automatic API help files...
#
apihelp:
mxmldoc --section "Programming" \
--title "CGI API" \
--css ../doc/cups-printable.css \
--header api-cgi.header --intro api-cgi.shtml \
cgi.h help-index.h $(LIBOBJS:.o=.c) >../doc/help/api-cgi.html
mxmldoc --tokens help/api-cgi.html api-cgi.xml >../doc/help/api-cgi.tokens
$(RM) api-cgi.xml
framedhelp:
mxmldoc --framed api-cgi \
--section "Programming" \
--title "CGI API" \
--css ../doc/cups-printable.css \
--header api-cgi.header --intro api-cgi.shtml \
cgi.h help-index.h $(LIBOBJS:.o=.c)
#
@@ -331,3 +350,8 @@ testtemplate: testtemplate.o ../Makedefs libcupscgi.a ../cups/$(LIBCUPSSTATIC)
#
include Dependencies
#
# End of "$Id: Makefile 11777 2014-03-28 19:18:10Z msweet $".
#
+13 -85
Ver Arquivo
@@ -1,14 +1,16 @@
/*
* "$Id: admin.c 12123 2014-08-28 14:24:45Z msweet $"
*
* Administration CGI for CUPS.
*
* Copyright 2007-2015 by Apple Inc.
* Copyright 2007-2014 by Apple Inc.
* Copyright 1997-2007 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
* missing or damaged, see the license at "http://www.cups.org/".
* file is missing or damaged, see the license at "http://www.cups.org/".
*/
/*
@@ -16,8 +18,6 @@
*/
#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,7 +38,12 @@ 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);
@@ -56,7 +61,6 @@ 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);
/*
@@ -828,8 +832,7 @@ 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 */
evefile[1024] = ""; /* IPP Everywhere PPD file */
*uriptr; /* Pointer into URI */
int maxrate; /* Maximum baud rate */
char baudrate[255]; /* Baud rate string */
const char *name, /* Pointer to class name */
@@ -1328,9 +1331,7 @@ do_am_printer(http_t *http, /* I - HTTP connection */
if (!file)
{
var = cgiGetVariable("PPD_NAME");
if (!strcmp(var, "everywhere"))
get_printer_ppd(cgiGetVariable("DEVICE_URI"), evefile, sizeof(evefile));
else if (strcmp(var, "__no_change__"))
if (strcmp(var, "__no_change__"))
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "ppd-name",
NULL, var);
}
@@ -1383,11 +1384,6 @@ 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/"));
@@ -4202,73 +4198,5 @@ get_points(double number, /* I - Original number */
/*
* 'get_printer_ppd()' - Get an IPP Everywhere PPD file for the given URI.
* End of "$Id: admin.c 12123 2014-08-28 14:24:45Z msweet $".
*/
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);
}
@@ -1,7 +1,9 @@
<!--
Administrative API header for CUPS.
"$Id: api-array.header 8087 2008-10-27 21:37:05Z mike $"
Copyright 2016 by Apple Inc.
CGI API header for CUPS.
Copyright 2009 by Apple Inc.
These coded instructions, statements, and computer programs are the
property of Apple Inc. and are protected by Federal copyright
@@ -10,25 +12,23 @@
file is missing or damaged, see the license at "http://www.cups.org/".
-->
<h1 class='title'>Administrative APIs</h1>
<h1 class='title'>CGI API</h1>
<div class='summary'><table summary='General Information'>
<thead>
<tr>
<th>Header</th>
<th>cups/adminutil.h</th>
<th>cups/cgi.h</th>
</tr>
</thead>
<tbody>
<tr>
<th>Library</th>
<td>-lcups</td>
<td>-lcupscgi</td>
</tr>
<tr>
<th>See Also</th>
<td>Programming: <a href='api-overview.html' target='_top'>Introduction to CUPS Programming</a><br>
Programming: <a href='api-cups.html' target='_top'>CUPS API</a><br>
Programming: <a href='api-httpipp.html' target='_top'>HTTP and IPP APIs</a></td>
<td>Programming: <a href='api-overview.html' target='_top'>Introduction to CUPS Programming</a></td>
</tr>
</tbody>
</table></div>
+17
Ver Arquivo
@@ -0,0 +1,17 @@
<!--
"$Id: api-array.shtml 7616 2008-05-28 00:34:13Z mike $"
CGI API introduction for CUPS.
Copyright 2009 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/".
-->
<h2 class='title'><a name='OVERVIEW'>Overview</a></h2>
<p>The CGI API provides Common Gateway Interface functions for CUPS.</p>
+15 -8
Ver Arquivo
@@ -1,14 +1,16 @@
/*
* Private CGI definitions for CUPS.
* "$Id: cgi-private.h 10996 2013-05-29 11:51:34Z msweet $"
*
* Copyright 2007-2011 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products.
* Private CGI definitions for CUPS.
*
* 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
* missing or damaged, see the license at "http://www.cups.org/".
* Copyright 2007-2011 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/".
*/
/*
@@ -27,3 +29,8 @@
*/
#define CUPS_PAGE_MAX 100 /* Maximum items per page */
/*
* End of "$Id: cgi-private.h 10996 2013-05-29 11:51:34Z msweet $".
*/
+14 -8
Ver Arquivo
@@ -1,14 +1,16 @@
/*
* CGI support library definitions for CUPS.
* "$Id: cgi.h 10996 2013-05-29 11:51:34Z msweet $"
*
* Copyright 2007-2010 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products.
* CGI support library definitions for CUPS.
*
* 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
* missing or damaged, see the license at "http://www.cups.org/".
* Copyright 2007-2010 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/".
*/
#ifndef _CUPS_CGI_H_
@@ -111,3 +113,7 @@ extern const char *cgiText(const char *message);
# endif /* __cplusplus */
#endif /* !_CUPS_CGI_H_ */
/*
* End of "$Id: cgi.h 10996 2013-05-29 11:51:34Z msweet $".
*/
+30 -13
Ver Arquivo
@@ -1,14 +1,16 @@
/*
* "$Id: classes.c 11928 2014-06-13 00:08:32Z msweet $"
*
* Class status CGI for CUPS.
*
* Copyright 2007-2016 by Apple Inc.
* Copyright 2007-2014 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
* missing or damaged, see the license at "http://www.cups.org/".
* file is missing or damaged, see the license at "http://www.cups.org/".
*/
/*
@@ -297,7 +299,8 @@ show_all_classes(http_t *http, /* I - Connection to server */
*response; /* IPP response */
cups_array_t *classes; /* Array of class objects */
ipp_attribute_t *pclass; /* Class object */
int first, /* First class to show */
int ascending, /* Order of classes (0 = descending) */
first, /* First class to show */
count; /* Number of classes */
const char *var; /* Form variable */
void *search; /* Search data */
@@ -369,10 +372,25 @@ show_all_classes(http_t *http, /* I - Connection to server */
sprintf(val, "%d", count);
cgiSetVariable("TOTAL", val);
for (i = 0, pclass = (ipp_attribute_t *)cupsArrayIndex(classes, first);
i < CUPS_PAGE_MAX && pclass;
i ++, pclass = (ipp_attribute_t *)cupsArrayNext(classes))
cgiSetIPPObjectVars(pclass, NULL, i);
if ((var = cgiGetVariable("ORDER")) != NULL && *var)
ascending = !_cups_strcasecmp(var, "asc");
else
ascending = 1;
if (ascending)
{
for (i = 0, pclass = (ipp_attribute_t *)cupsArrayIndex(classes, first);
i < CUPS_PAGE_MAX && pclass;
i ++, pclass = (ipp_attribute_t *)cupsArrayNext(classes))
cgiSetIPPObjectVars(pclass, NULL, i);
}
else
{
for (i = 0, pclass = (ipp_attribute_t *)cupsArrayIndex(classes, count - first - 1);
i < CUPS_PAGE_MAX && pclass;
i ++, pclass = (ipp_attribute_t *)cupsArrayPrev(classes))
cgiSetIPPObjectVars(pclass, NULL, i);
}
/*
* Save navigation URLs...
@@ -392,12 +410,6 @@ show_all_classes(http_t *http, /* I - Connection to server */
cgiSetVariable("NEXT", val);
}
if (count > CUPS_PAGE_MAX)
{
snprintf(val, sizeof(val), "%d", CUPS_PAGE_MAX * (count / CUPS_PAGE_MAX));
cgiSetVariable("LAST", val);
}
/*
* Then show everything...
*/
@@ -531,3 +543,8 @@ show_class(http_t *http, /* I - Connection to server */
cgiEndHTML();
}
/*
* End of "$Id: classes.c 11928 2014-06-13 00:08:32Z msweet $".
*/
+10 -3
Ver Arquivo
@@ -1,14 +1,16 @@
/*
* "$Id: help-index.c 12344 2014-12-09 21:36:11Z msweet $"
*
* Online help index routines for CUPS.
*
* Copyright 2007-2015 by Apple Inc.
* Copyright 2007-2014 by Apple Inc.
* Copyright 1997-2007 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
* missing or damaged, see the license at "http://www.cups.org/".
* file is missing or damaged, see the license at "http://www.cups.org/".
*/
/*
@@ -1218,7 +1220,7 @@ help_new_node(const char *filename, /* I - Filename */
n->filename = strdup(filename);
n->anchor = anchor ? strdup(anchor) : NULL;
n->section = *section ? strdup(section) : NULL;
n->section = (section && *section) ? strdup(section) : NULL;
n->text = strdup(text);
n->mtime = mtime;
n->offset = offset;
@@ -1301,3 +1303,8 @@ help_sort_words(help_word_t *w1, /* I - Second word */
return (_cups_strcasecmp(w1->text, w2->text));
}
/*
* End of "$Id: help-index.c 12344 2014-12-09 21:36:11Z msweet $".
*/
+14 -8
Ver Arquivo
@@ -1,14 +1,16 @@
/*
* Online help index definitions for CUPS.
* "$Id: help-index.h 10996 2013-05-29 11:51:34Z msweet $"
*
* Copyright 2007-2011 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products.
* Online help index definitions for CUPS.
*
* 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
* missing or damaged, see the license at "http://www.cups.org/".
* Copyright 2007-2011 by Apple Inc.
* Copyright 1997-2007 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/".
*/
#ifndef _CUPS_HELP_INDEX_H_
@@ -79,3 +81,7 @@ extern help_index_t *helpSearchIndex(help_index_t *hi, const char *query,
# endif /* __cplusplus */
#endif /* !_CUPS_HELP_INDEX_H_ */
/*
* End of "$Id: help-index.h 10996 2013-05-29 11:51:34Z msweet $".
*/
+20 -9
Ver Arquivo
@@ -1,14 +1,20 @@
/*
* Online help CGI for CUPS.
* "$Id: help.c 10996 2013-05-29 11:51:34Z msweet $"
*
* Copyright 2007-2011 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products.
* Online help CGI for CUPS.
*
* 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
* missing or damaged, see the license at "http://www.cups.org/".
* Copyright 2007-2011 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:
*
* main() - Main entry for CGI.
*/
/*
@@ -271,7 +277,7 @@ main(int argc, /* I - Number of command-line arguments */
section = n->section;
}
if (!topic || !n->section || strcmp(n->section, topic))
if (!topic || strcmp(n->section, topic))
continue;
/*
@@ -384,3 +390,8 @@ main(int argc, /* I - Number of command-line arguments */
return (0);
}
/*
* End of "$Id: help.c 10996 2013-05-29 11:51:34Z msweet $".
*/
+26 -9
Ver Arquivo
@@ -1,14 +1,26 @@
/*
* HTML support functions for CUPS.
* "$Id: html.c 10996 2013-05-29 11:51:34Z msweet $"
*
* Copyright 2007-2011 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products.
* HTML support functions for CUPS.
*
* 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
* missing or damaged, see the license at "http://www.cups.org/".
* Copyright 2007-2011 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:
*
* cgiEndHTML() - End a HTML page.
* cgiEndMultipart() - End the delivery of a multipart web page.
* cgiFormEncode() - Encode a string as a form variable.
* cgiStartHTML() - Start a HTML page.
* cgiStartMultipart() - Start a multipart delivery of a web page.
* cgiSupportsMultipart() - Does the browser support multi-part documents?
* cgi_null_passwd() - Return a NULL password for authentication.
*/
/*
@@ -91,7 +103,7 @@ cgiFormEncode(char *dst, /* I - Destination string */
for (dstptr = dst; *src && dstptr < dstend;)
{
switch (*src)
{
{
case ' ' :
/*
* Encode spaces with a "+"...
@@ -220,3 +232,8 @@ cgi_null_passwd(const char *prompt) /* I - Prompt string (unused) */
return (NULL);
}
/*
* End of "$Id: html.c 10996 2013-05-29 11:51:34Z msweet $".
*/
+48 -29
Ver Arquivo
@@ -1,14 +1,16 @@
/*
* "$Id: ipp-var.c 12701 2015-06-08 18:33:44Z msweet $"
*
* CGI <-> IPP variable routines for CUPS.
*
* Copyright 2007-2016 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
* 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
* missing or damaged, see the license at "http://www.cups.org/".
* file is missing or damaged, see the license at "http://www.cups.org/".
*/
/*
@@ -220,9 +222,6 @@ cgiGetIPPObjects(ipp_t *response, /* I - IPP response */
break;
case IPP_TAG_INTEGER :
if (!strncmp(ippGetName(attr), "time-at-", 8))
break; /* Ignore time-at-xxx */
for (i = 0; !add && i < attr->num_values; i ++)
{
char buf[255]; /* Number buffer */
@@ -1323,7 +1322,7 @@ cgiSetIPPVars(ipp_t *response, /* I - Response data to be copied... */
attr = cgiSetIPPObjectVars(attr, prefix, element);
}
fprintf(stderr, "DEBUG2: Returning %d from cgiSetIPPVars()...\n", element);
fprintf(stderr, "DEBUG2: Returing %d from cgiSetIPPVars()...\n", element);
return (element);
}
@@ -1358,7 +1357,8 @@ cgiShowJobs(http_t *http, /* I - Connection to server */
*response; /* IPP response */
cups_array_t *jobs; /* Array of job objects */
ipp_attribute_t *job; /* Job object */
int first, /* First job to show */
int ascending, /* Order of jobs (0 = descending) */
first, /* First job to show */
count; /* Number of jobs */
const char *var, /* Form variable */
*query, /* Query string */
@@ -1394,17 +1394,6 @@ cgiShowJobs(http_t *http, /* I - Connection to server */
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD, "which-jobs",
NULL, which_jobs);
if ((var = cgiGetVariable("FIRST")) != NULL)
{
if ((first = atoi(var)) < 0)
first = 0;
}
else
first = 0;
if (first > 0)
ippAddInteger(request, IPP_TAG_OPERATION, IPP_TAG_INTEGER, "first-index", first + 1);
cgiGetAttributes(request, "jobs.tmpl");
/*
@@ -1427,7 +1416,7 @@ cgiShowJobs(http_t *http, /* I - Connection to server */
}
jobs = cgiGetIPPObjects(response, search);
count = cupsArrayCount(jobs) + first;
count = cupsArrayCount(jobs);
if (search)
cgiFreeSearch(search);
@@ -1436,6 +1425,25 @@ cgiShowJobs(http_t *http, /* I - Connection to server */
* Figure out which jobs to display...
*/
if ((var = cgiGetVariable("FIRST")) != NULL)
first = atoi(var);
else
first = 0;
if (first >= count)
first = count - CUPS_PAGE_MAX;
first = (first / CUPS_PAGE_MAX) * CUPS_PAGE_MAX;
if (first < 0)
first = 0;
if ((var = cgiGetVariable("ORDER")) != NULL && *var)
ascending = !_cups_strcasecmp(var, "asc");
else
ascending = !which_jobs || !*which_jobs ||
!_cups_strcasecmp(which_jobs, "not-completed");
section = cgiGetVariable("SECTION");
cgiClearVariables();
@@ -1443,6 +1451,8 @@ cgiShowJobs(http_t *http, /* I - Connection to server */
if (query)
cgiSetVariable("QUERY", query);
cgiSetVariable("ORDER", ascending ? "asc" : "dec");
cgiSetVariable("SECTION", section);
sprintf(val, "%d", count);
@@ -1451,10 +1461,20 @@ cgiShowJobs(http_t *http, /* I - Connection to server */
if (which_jobs)
cgiSetVariable("WHICH_JOBS", which_jobs);
for (i = 0, job = (ipp_attribute_t *)cupsArrayFirst(jobs);
i < CUPS_PAGE_MAX && job;
i ++, job = (ipp_attribute_t *)cupsArrayNext(jobs))
cgiSetIPPObjectVars(job, NULL, i);
if (ascending)
{
for (i = 0, job = (ipp_attribute_t *)cupsArrayIndex(jobs, first);
i < CUPS_PAGE_MAX && job;
i ++, job = (ipp_attribute_t *)cupsArrayNext(jobs))
cgiSetIPPObjectVars(job, NULL, i);
}
else
{
for (i = 0, job = (ipp_attribute_t *)cupsArrayIndex(jobs, count - first - 1);
i < CUPS_PAGE_MAX && job;
i ++, job = (ipp_attribute_t *)cupsArrayPrev(jobs))
cgiSetIPPObjectVars(job, NULL, i);
}
/*
* Save navigation URLs...
@@ -1483,12 +1503,6 @@ cgiShowJobs(http_t *http, /* I - Connection to server */
cgiSetVariable("NEXT", val);
}
if (count > CUPS_PAGE_MAX)
{
snprintf(val, sizeof(val), "%d", CUPS_PAGE_MAX * (count / CUPS_PAGE_MAX));
cgiSetVariable("LAST", val);
}
/*
* Then show everything...
*/
@@ -1530,3 +1544,8 @@ cgiText(const char *message) /* I - Message */
return (_cupsLangString(language, message));
}
/*
* End of "$Id: ipp-var.c 12701 2015-06-08 18:33:44Z msweet $".
*/
+8 -1
Ver Arquivo
@@ -1,4 +1,6 @@
/*
* "$Id: jobs.c 11558 2014-02-06 18:33:34Z msweet $"
*
* Job status CGI for CUPS.
*
* Copyright 2007-2014 by Apple Inc.
@@ -8,7 +10,7 @@
* 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
* missing or damaged, see the license at "http://www.cups.org/".
* file is missing or damaged, see the license at "http://www.cups.org/".
*/
/*
@@ -199,3 +201,8 @@ do_job_op(http_t *http, /* I - HTTP connection */
cgiEndHTML();
}
/*
* End of "$Id: jobs.c 11558 2014-02-06 18:33:34Z msweet $".
*/
+25 -8
Ver Arquivo
@@ -1,18 +1,30 @@
/*
* Xcode documentation set generator.
* "$Id: makedocset.c 3833 2012-05-23 22:51:18Z msweet $"
*
* Copyright 2007-2012 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products.
* Xcode documentation set generator.
*
* 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
* missing or damaged, see the license at "http://www.cups.org/".
* Copyright 2007-2012 by Apple Inc.
* Copyright 1997-2007 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/".
*
* Usage:
*
* makedocset directory *.tokens
*
* Contents:
*
* main() - Test the help index code.
* compare_html() - Compare the titles of two HTML files.
* compare_sections() - Compare the names of two help sections.
* compare_sections_files() - Compare the number of files and section names.
* write_index() - Write an index file for the CUPS help.
* write_info() - Write the Info.plist file.
* write_nodes() - Write the Nodes.xml file.
*/
/*
@@ -467,3 +479,8 @@ write_nodes(const char *path, /* I - File to write */
cupsFileClose(fp);
}
/*
* End of "$Id: makedocset.c 3833 2012-05-23 22:51:18Z msweet $".
*/
+30 -13
Ver Arquivo
@@ -1,14 +1,16 @@
/*
* "$Id: printers.c 11928 2014-06-13 00:08:32Z msweet $"
*
* Printer status CGI for CUPS.
*
* Copyright 2007-2016 by Apple Inc.
* Copyright 2007-2014 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
* missing or damaged, see the license at "http://www.cups.org/".
* file is missing or damaged, see the license at "http://www.cups.org/".
*/
/*
@@ -304,7 +306,8 @@ show_all_printers(http_t *http, /* I - Connection to server */
*response; /* IPP response */
cups_array_t *printers; /* Array of printer objects */
ipp_attribute_t *printer; /* Printer object */
int first, /* First printer to show */
int ascending, /* Order of printers (0 = descending) */
first, /* First printer to show */
count; /* Number of printers */
const char *var; /* Form variable */
void *search; /* Search data */
@@ -386,10 +389,25 @@ show_all_printers(http_t *http, /* I - Connection to server */
sprintf(val, "%d", count);
cgiSetVariable("TOTAL", val);
for (i = 0, printer = (ipp_attribute_t *)cupsArrayIndex(printers, first);
i < CUPS_PAGE_MAX && printer;
i ++, printer = (ipp_attribute_t *)cupsArrayNext(printers))
cgiSetIPPObjectVars(printer, NULL, i);
if ((var = cgiGetVariable("ORDER")) != NULL && *var)
ascending = !_cups_strcasecmp(var, "asc");
else
ascending = 1;
if (ascending)
{
for (i = 0, printer = (ipp_attribute_t *)cupsArrayIndex(printers, first);
i < CUPS_PAGE_MAX && printer;
i ++, printer = (ipp_attribute_t *)cupsArrayNext(printers))
cgiSetIPPObjectVars(printer, NULL, i);
}
else
{
for (i = 0, printer = (ipp_attribute_t *)cupsArrayIndex(printers, count - first - 1);
i < CUPS_PAGE_MAX && printer;
i ++, printer = (ipp_attribute_t *)cupsArrayPrev(printers))
cgiSetIPPObjectVars(printer, NULL, i);
}
/*
* Save navigation URLs...
@@ -409,12 +427,6 @@ show_all_printers(http_t *http, /* I - Connection to server */
cgiSetVariable("NEXT", val);
}
if (count > CUPS_PAGE_MAX)
{
snprintf(val, sizeof(val), "%d", CUPS_PAGE_MAX * (count / CUPS_PAGE_MAX));
cgiSetVariable("LAST", val);
}
/*
* Then show everything...
*/
@@ -551,3 +563,8 @@ show_printer(http_t *http, /* I - Connection to server */
cgiEndHTML();
}
/*
* End of "$Id: printers.c 11928 2014-06-13 00:08:32Z msweet $".
*/
+8 -1
Ver Arquivo
@@ -1,4 +1,6 @@
/*
* "$Id: search.c 11558 2014-02-06 18:33:34Z msweet $"
*
* Search routines for CUPS.
*
* Copyright 2007-2014 by Apple Inc.
@@ -8,7 +10,7 @@
* 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
* missing or damaged, see the license at "http://www.cups.org/".
* file is missing or damaged, see the license at "http://www.cups.org/".
*/
/*
@@ -366,3 +368,8 @@ cgiFreeSearch(void *search) /* I - Search context */
{
regfree((regex_t *)search);
}
/*
* End of "$Id: search.c 11558 2014-02-06 18:33:34Z msweet $".
*/
+8 -1
Ver Arquivo
@@ -1,4 +1,6 @@
/*
* "$Id: template.c 12701 2015-06-08 18:33:44Z msweet $"
*
* CGI template function.
*
* Copyright 2007-2015 by Apple Inc.
@@ -8,7 +10,7 @@
* 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
* missing or damaged, see the license at "http://www.cups.org/".
* file is missing or damaged, see the license at "http://www.cups.org/".
*/
#include "cgi-private.h"
@@ -681,3 +683,8 @@ cgi_puturi(const char *s, /* I - String to output */
s ++;
}
}
/*
* End of "$Id: template.c 12701 2015-06-08 18:33:44Z msweet $".
*/
+8 -1
Ver Arquivo
@@ -1,4 +1,6 @@
/*
* "$Id: testcgi.c 11558 2014-02-06 18:33:34Z msweet $"
*
* CGI test program for CUPS.
*
* Copyright 2007-2014 by Apple Inc.
@@ -8,7 +10,7 @@
* 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
* missing or damaged, see the license at "http://www.cups.org/".
* file is missing or damaged, see the license at "http://www.cups.org/".
*/
/*
@@ -60,3 +62,8 @@ main(void)
return (0);
}
/*
* End of "$Id: testcgi.c 11558 2014-02-06 18:33:34Z msweet $".
*/
+20 -8
Ver Arquivo
@@ -1,14 +1,21 @@
/*
* Help index test program for CUPS.
* "$Id: testhi.c 10996 2013-05-29 11:51:34Z msweet $"
*
* Copyright 2007-2011 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products.
* Help index test program for CUPS.
*
* 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
* missing or damaged, see the license at "http://www.cups.org/".
* Copyright 2007-2011 by Apple Inc.
* Copyright 1997-2007 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:
*
* main() - Test the help index code.
* list_nodes() - List nodes in an array...
*/
/*
@@ -99,3 +106,8 @@ list_nodes(const char *title, /* I - Title string */
printf(" (%d words)\n", cupsArrayCount(node->words));
}
}
/*
* End of "$Id: testhi.c 10996 2013-05-29 11:51:34Z msweet $".
*/
+19 -8
Ver Arquivo
@@ -1,14 +1,20 @@
/*
* CGI template test program for CUPS.
* "$Id: testtemplate.c 10996 2013-05-29 11:51:34Z msweet $"
*
* Copyright 2007-2011 by Apple Inc.
* Copyright 2006 by Easy Software Products.
* CGI template test program for CUPS.
*
* 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
* missing or damaged, see the license at "http://www.cups.org/".
* Copyright 2007-2011 by Apple Inc.
* Copyright 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:
*
* main() - Test the template code.
*/
/*
@@ -90,3 +96,8 @@ main(int argc, /* I - Number of command-line arguments */
return (0);
}
/*
* End of "$Id: testtemplate.c 10996 2013-05-29 11:51:34Z msweet $".
*/
+14 -26
Ver Arquivo
@@ -1,14 +1,16 @@
/*
* "$Id: var.c 12034 2014-07-16 19:37:34Z msweet $"
*
* CGI form variable and array functions for CUPS.
*
* Copyright 2007-2015 by Apple Inc.
* Copyright 2007-2014 by Apple Inc.
* Copyright 1997-2005 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
* missing or damaged, see the license at "http://www.cups.org/".
* file is missing or damaged, see the license at "http://www.cups.org/".
*/
/*
@@ -624,8 +626,6 @@ cgi_initialize_cookies(void)
while (*cookie)
{
int skip = 0; /* Skip this cookie? */
/*
* Skip leading whitespace...
*/
@@ -641,14 +641,9 @@ cgi_initialize_cookies(void)
for (ptr = name; *cookie && *cookie != '=';)
if (ptr < (name + sizeof(name) - 1))
{
*ptr++ = *cookie++;
}
else
{
skip = 1;
cookie ++;
}
break;
if (*cookie != '=')
break;
@@ -664,38 +659,26 @@ cgi_initialize_cookies(void)
{
for (cookie ++, ptr = value; *cookie && *cookie != '\"';)
if (ptr < (value + sizeof(value) - 1))
{
*ptr++ = *cookie++;
}
else
{
skip = 1;
cookie ++;
}
break;
if (*cookie == '\"')
cookie ++;
else
skip = 1;
}
else
{
for (ptr = value; *cookie && *cookie != ';';)
if (ptr < (value + sizeof(value) - 1))
{
*ptr++ = *cookie++;
}
else
{
skip = 1;
cookie ++;
}
break;
}
if (*cookie == ';')
cookie ++;
else if (*cookie)
skip = 1;
break;
*ptr = '\0';
@@ -704,7 +687,7 @@ cgi_initialize_cookies(void)
* "$"...
*/
if (name[0] != '$' && !skip)
if (name[0] != '$')
num_cookies = cupsAddOption(name, value, num_cookies, &cookies);
}
}
@@ -1292,3 +1275,8 @@ cgi_unlink_file(void)
form_file = NULL;
}
}
/*
* End of "$Id: var.c 12034 2014-07-16 19:37:34Z msweet $".
*/
+16 -9
Ver Arquivo
@@ -1,14 +1,16 @@
#
# Configuration file makefile for CUPS.
# "$Id: Makefile 10996 2013-05-29 11:51:34Z msweet $"
#
# Copyright 2007-2015 by Apple Inc.
# Copyright 1993-2006 by Easy Software Products.
# Configuration file makefile for CUPS.
#
# 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
# missing or damaged, see the license at "http://www.cups.org/".
# Copyright 2007-2012 by Apple Inc.
# Copyright 1993-2006 by Easy Software Products.
#
# These coded instructions, statements, and computer programs are the
# property of Apple Inc. and are protected by Federal copyright
# law. Distribution and use rights are outlined in the file "LICENSE.txt"
# which should have been included with this file. If this file is
# file is missing or damaged, see the license at "http://www.cups.org/".
#
include ../Makedefs
@@ -74,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 \
@@ -134,3 +136,8 @@ uninstall:
$(RM) $(BUILDROOT)$(PAMDIR)/cups; \
$(RMDIR) $(BUILDROOT)$(PAMDIR); \
fi
#
# End of "$Id: Makefile 10996 2013-05-29 11:51:34Z msweet $".
#
-53
Ver Arquivo
@@ -39,13 +39,6 @@ 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...
@@ -134,49 +127,3 @@ WebInterface @CUPS_WEBIF@
Order deny,allow
</Limit>
</Policy>
# Set the kerberized printer/job policies...
<Policy kerberos>
# Job/subscription privacy...
JobPrivateAccess default
JobPrivateValues default
SubscriptionPrivateAccess default
SubscriptionPrivateValues default
# Job-related operations must be done by the owner or an administrator...
<Limit Create-Job Print-Job Print-URI Validate-Job>
AuthType Negotiate
Order deny,allow
</Limit>
<Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription Get-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job Cancel-My-Jobs Close-Job CUPS-Move-Job CUPS-Get-Document>
AuthType Negotiate
Require user @OWNER @SYSTEM
Order deny,allow
</Limit>
# All administration operations require an administrator to authenticate...
<Limit CUPS-Add-Modify-Printer CUPS-Delete-Printer CUPS-Add-Modify-Class CUPS-Delete-Class CUPS-Set-Default>
AuthType Default
Require user @SYSTEM
Order deny,allow
</Limit>
# All printer operations require a printer operator to authenticate...
<Limit Pause-Printer Resume-Printer Enable-Printer Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer Promote-Job Schedule-Job-After Cancel-Jobs CUPS-Accept-Jobs CUPS-Reject-Jobs>
AuthType Default
Require user @CUPS_DEFAULT_PRINTOPERATOR_AUTH@
Order deny,allow
</Limit>
# Only the owner or an administrator can cancel or authenticate a job...
<Limit Cancel-Job CUPS-Authenticate-Job>
AuthType Negotiate
Require user @OWNER @CUPS_DEFAULT_PRINTOPERATOR_AUTH@
Order deny,allow
</Limit>
<Limit All>
Order deny,allow
</Limit>
</Policy>
+17 -12
Ver Arquivo
@@ -1,18 +1,20 @@
#
# DO NOT EDIT THIS FILE, AS IT IS OVERWRITTEN WHEN YOU INSTALL NEW
# VERSIONS OF CUPS. Instead, create a "local.convs" file that
# reflects your local configuration changes.
# "$Id: mime.convs.in 11025 2013-06-07 01:00:33Z msweet $"
#
# Base MIME conversions file for CUPS.
# DO NOT EDIT THIS FILE, AS IT IS OVERWRITTEN WHEN YOU INSTALL NEW
# VERSIONS OF CUPS. Instead, create a "local.convs" file that
# reflects your local configuration changes.
#
# Copyright 2007-2016 by Apple Inc.
# Copyright 1997-2007 by Easy Software Products.
# Base MIME conversions file for CUPS.
#
# 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/".
# Copyright 2007-2011 by Apple Inc.
# Copyright 1997-2007 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/".
#
########################################################################
@@ -45,7 +47,6 @@ application/postscript application/vnd.cups-postscript 66 pstops
# PWG Raster filter for IPP Everywhere...
application/vnd.cups-raster image/pwg-raster 100 rastertopwg
application/vnd.cups-raster image/urf 100 rastertopwg
########################################################################
#
@@ -56,3 +57,7 @@ application/vnd.cups-raster image/urf 100 rastertopwg
#
@DEFAULT_RAW_PRINTING@application/octet-stream application/vnd.cups-raw 0 -
#
# End of "$Id: mime.convs.in 11025 2013-06-07 01:00:33Z msweet $".
#
+9 -5
Ver Arquivo
@@ -1,11 +1,13 @@
#
# "$Id: mime.types 7670 2008-06-17 22:42:08Z mike $"
#
# Base MIME types file for CUPS.
#
# DO NOT EDIT THIS FILE, AS IT IS OVERWRITTEN WHEN YOU INSTALL NEW
# VERSIONS OF CUPS. Instead, create a "local.types" file that
# reflects your local configuration changes.
#
# Copyright 2007-2017 by Apple Inc.
# Copyright 2007-2014 by Apple Inc.
# Copyright 1997-2007 by Easy Software Products.
#
# These coded instructions, statements, and computer programs are the
@@ -69,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") \
@@ -79,7 +81,6 @@ application/postscript ai eps ps string(0,%!) string(0,<04>%!) \
(contains(0,4096,<0a>%!) + \
!contains(0,4096,"ENTER LANGUAGE")))
########################################################################
#
# Image files...
@@ -106,7 +107,6 @@ image/x-xpixmap xpm ascii(0,1024) + string(3,"XPM")
image/x-sun-raster ras string(0,<59a66a95>)
#image/fpx fpx
image/urf urf string(0,UNIRAST<00>)
image/x-alias pix short(8,8) short(8,24)
image/x-bitmap bmp string(0,BM) + !printable(2,14)
image/x-icon ico
@@ -125,7 +125,7 @@ application/x-shell sh printable(0,1024) + string(0,#!) +\
contains(2,80,/sh) contains(2,80,/zsh))
application/x-csource c cxx cpp cc C h hpp \
printable(0,1024) + ! css + \
(string(0,/*) string(0,//) \
(string(0,/*) string(0,//)
string(0,#include) contains(0,1024,<0a>#include) \
string(0,#define) contains(0,1024,<0a>#define))
text/html html htm printable(0,1024) +\
@@ -169,3 +169,7 @@ application/vnd.cups-raw (string(0,<1B>E) + !string(2,<1B>%0B)) \
#
application/octet-stream
#
# End of "$Id: mime.types 7670 2008-06-17 22:42:08Z mike $".
#
+29 -20
Ver Arquivo
@@ -1,22 +1,30 @@
dnl
dnl "$Id: cups-common.m4 12336 2014-12-09 21:19:52Z msweet $"
dnl
dnl Common configuration stuff for CUPS.
dnl
dnl Copyright 2007-2017 by Apple Inc.
dnl Copyright 2007-2014 by Apple Inc.
dnl Copyright 1997-2007 by Easy Software Products, all rights reserved.
dnl
dnl These coded instructions, statements, and computer programs are the
dnl property of Apple Inc. and are protected by Federal copyright
dnl law. Distribution and use rights are outlined in the file "LICENSE.txt"
dnl which should have been included with this file. If this file is
dnl missing or damaged, see the license at "http://www.cups.org/".
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="AC_PACKAGE_VERSION"
CUPS_REVISION=""
CUPS_VERSION=2.0.3
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_BUILD="cups-$CUPS_VERSION"
AC_ARG_WITH(cups_build, [ --with-cups-build set "cups-config --build" string ],
@@ -25,8 +33,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, "AC_PACKAGE_NAME v$CUPS_VERSION$CUPS_REVISION")
AC_DEFINE_UNQUOTED(CUPS_MINIMAL, "AC_PACKAGE_NAME/$CUPS_VERSION$CUPS_REVISION")
AC_DEFINE_UNQUOTED(CUPS_SVERSION, "CUPS v$CUPS_VERSION$CUPS_REVISION")
AC_DEFINE_UNQUOTED(CUPS_MINIMAL, "CUPS/$CUPS_VERSION$CUPS_REVISION")
dnl Default compiler flags...
CFLAGS="${CFLAGS:=}"
@@ -161,7 +169,7 @@ AC_CHECK_FUNCS(statfs statvfs)
dnl Checks for string functions.
AC_CHECK_FUNCS(strdup strlcat strlcpy)
if test "$host_os_name" = "hp-ux" -a "$host_os_version" = "1020"; then
if test "$uname" = "HP-UX" -a "$uversion" = "1020"; then
echo Forcing snprintf emulation for HP-UX.
else
AC_CHECK_FUNCS(snprintf vsnprintf)
@@ -180,8 +188,8 @@ dnl Check for vsyslog function.
AC_CHECK_FUNCS(vsyslog)
dnl Checks for signal functions.
case "$host_os_name" in
linux* | gnu*)
case "$uname" in
Linux | GNU)
# Do not use sigset on Linux or GNU HURD
;;
*)
@@ -198,9 +206,6 @@ AC_CHECK_FUNCS(waitpid wait3)
dnl Check for posix_spawn
AC_CHECK_FUNCS(posix_spawn)
dnl Check for getgrouplist
AC_CHECK_FUNCS(getgrouplist)
dnl See if the tm structure has the tm_gmtoff member...
AC_MSG_CHECKING(for tm_gmtoff member in tm structure)
AC_TRY_COMPILE([#include <time.h>],[struct tm t;
@@ -229,7 +234,7 @@ AC_SUBST(LIBUSB)
AC_SUBST(USBQUIRKS)
if test "x$PKGCONFIG" != x; then
if test x$enable_libusb != xno -a $host_os_name != darwin; then
if test x$enable_libusb != xno -a $uname != Darwin; then
AC_MSG_CHECKING(for libusb-1.0)
if $PKGCONFIG --exists libusb-1.0; then
AC_MSG_RESULT(yes)
@@ -277,8 +282,8 @@ AC_SUBST(INSTALL_GZIP)
AC_SUBST(LIBZ)
dnl Flags for "ar" command...
case $host_os_name in
darwin* | *bsd*)
case $uname in
Darwin* | *BSD*)
ARFLAGS="-rcv"
;;
*)
@@ -313,7 +318,7 @@ DBUSDIR=""
DBUS_NOTIFIER=""
DBUS_NOTIFIERLIBS=""
if test "x$enable_dbus" != xno -a "x$PKGCONFIG" != x -a "x$host_os_name" != xdarwin; then
if test "x$enable_dbus" != xno -a "x$PKGCONFIG" != x; then
AC_MSG_CHECKING(for DBUS)
if $PKGCONFIG --exists dbus-1; then
AC_MSG_RESULT(yes)
@@ -347,8 +352,8 @@ CUPS_DEFAULT_SYSTEM_AUTHKEY=""
CUPS_SYSTEM_AUTHKEY=""
INSTALLXPC=""
case $host_os_name in
darwin*)
case $uname in
Darwin*)
BACKLIBS="$BACKLIBS -framework IOKit"
SERVERLIBS="$SERVERLIBS -framework IOKit -weak_framework ApplicationServices"
LIBS="-framework SystemConfiguration -framework CoreFoundation -framework Security $LIBS"
@@ -406,10 +411,10 @@ case $host_os_name in
AC_CHECK_HEADER(Security/SecBasePriv.h,AC_DEFINE(HAVE_SECBASEPRIV_H))
dnl Check for sandbox/Seatbelt support
if test $host_os_version -ge 100; then
if test $uversion -ge 100; then
AC_CHECK_HEADER(sandbox.h,AC_DEFINE(HAVE_SANDBOX_H))
fi
if test $host_os_version -ge 110 -a $host_os_version -lt 120; then
if test $uversion -ge 110 -a $uversion -lt 120; then
# Broken public headers in 10.7.x...
AC_MSG_CHECKING(for sandbox/private.h presence)
if test -f /usr/local/include/sandbox/private.h; then
@@ -458,3 +463,7 @@ case "$COMPONENTS" in
esac
AC_SUBST(BUILDDIRS)
dnl
dnl End of "$Id: cups-common.m4 12336 2014-12-09 21:19:52Z msweet $".
dnl
+18 -25
Ver Arquivo
@@ -1,14 +1,16 @@
dnl
dnl "$Id: cups-compiler.m4 12122 2014-08-28 12:55:52Z msweet $"
dnl
dnl Compiler stuff for CUPS.
dnl
dnl Copyright 2007-2017 by Apple Inc.
dnl Copyright 2007-2014 by Apple Inc.
dnl Copyright 1997-2007 by Easy Software Products, all rights reserved.
dnl
dnl These coded instructions, statements, and computer programs are the
dnl property of Apple Inc. and are protected by Federal copyright
dnl law. Distribution and use rights are outlined in the file "LICENSE.txt"
dnl which should have been included with this file. If this file is
dnl missing or damaged, see the license at "http://www.cups.org/".
dnl file is missing or damaged, see the license at "http://www.cups.org/".
dnl
dnl Clear the debugging and non-shared library options unless the user asks
@@ -46,10 +48,6 @@ fi
dnl Unit tests take up time during a compile...
if test x$enable_unit_tests = xyes; then
if test "$build" != "$host"; then
AC_MSG_ERROR([Sorry, cannot build unit tests when cross-compiling.])
fi
UNITTESTS="unittests"
else
UNITTESTS=""
@@ -67,7 +65,7 @@ else
fi
if test -z "$with_ldarchflags"; then
if test "$host_os_name" = darwin; then
if test "$uname" = Darwin; then
# Only create Intel programs by default
LDARCHFLAGS="`echo $ARCHFLAGS | sed -e '1,$s/-arch ppc64//'`"
else
@@ -134,8 +132,8 @@ if test -n "$GCC"; then
# Not available to LSB binaries...
AC_MSG_CHECKING(whether compiler supports -fPIE)
OLDCFLAGS="$CFLAGS"
case "$host_os_name" in
darwin*)
case "$uname" in
Darwin*)
CFLAGS="$CFLAGS -fPIE -Wl,-pie"
AC_TRY_COMPILE(,,[
PIEFLAGS="-fPIE -Wl,-pie"
@@ -158,15 +156,6 @@ if test -n "$GCC"; then
# Add useful warning options for tracking down problems...
OPTIM="-Wall -Wno-format-y2k -Wunused $OPTIM"
AC_MSG_CHECKING(whether compiler supports -Wno-unused-result)
OLDCFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -Werror -Wno-unused-result"
AC_TRY_COMPILE(,,
[OPTIM="$OPTIM -Wno-unused-result"
AC_MSG_RESULT(yes)],
AC_MSG_RESULT(no))
CFLAGS="$OLDCFLAGS"
AC_MSG_CHECKING(whether compiler supports -Wsign-conversion)
OLDCFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -Werror -Wsign-conversion"
@@ -191,8 +180,8 @@ if test -n "$GCC"; then
fi
fi
case "$host_os_name" in
darwin*)
case "$uname" in
Darwin*)
# -D_FORTIFY_SOURCE=2 adds additional object size
# checking, basically wrapping all string functions
# with buffer-limited ones. Not strictly needed for
@@ -201,7 +190,7 @@ if test -n "$GCC"; then
CFLAGS="$CFLAGS -D_FORTIFY_SOURCE=2"
;;
linux*)
Linux*)
# The -z relro option is provided by the Linux linker command to
# make relocatable data read-only.
if test x$enable_relro = xyes; then
@@ -211,8 +200,8 @@ if test -n "$GCC"; then
esac
else
# Add vendor-specific compiler options...
case $host_os_name in
sunos*)
case $uname in
SunOS*)
# Solaris
if test -z "$OPTIM"; then
if test "x$with_optim" = x; then
@@ -239,10 +228,14 @@ else
fi
# Add general compiler options per platform...
case $host_os_name in
linux*)
case $uname in
Linux*)
# glibc 2.8 and higher breaks peer credentials unless you
# define _GNU_SOURCE...
OPTIM="$OPTIM -D_GNU_SOURCE"
;;
esac
dnl
dnl End of "$Id: cups-compiler.m4 12122 2014-08-28 12:55:52Z msweet $".
dnl
+33 -47
Ver Arquivo
@@ -1,14 +1,16 @@
dnl
dnl Default cupsd configuration settings for CUPS.
dnl "$Id: cups-defaults.m4 11789 2014-04-02 16:52:53Z msweet $"
dnl
dnl Copyright 2007-2017 by Apple Inc.
dnl Copyright 2006-2007 by Easy Software Products, all rights reserved.
dnl Default cupsd configuration settings for CUPS.
dnl
dnl These coded instructions, statements, and computer programs are the
dnl property of Apple Inc. and are protected by Federal copyright
dnl law. Distribution and use rights are outlined in the file "LICENSE.txt"
dnl which should have been included with this file. If this file is
dnl missing or damaged, see the license at "http://www.cups.org/".
dnl Copyright 2007-2012 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
dnl property of Apple Inc. and are protected by Federal copyright
dnl law. Distribution and use rights are outlined in the file "LICENSE.txt"
dnl which should have been included with this file. If this file is
dnl file is missing or damaged, see the license at "http://www.cups.org/".
dnl
dnl Default languages...
@@ -22,10 +24,10 @@ AC_ARG_WITH(languages, [ --with-languages set installed languages, defau
esac])
AC_SUBST(LANGUAGES)
dnl macOS bundle-based localization support
AC_ARG_WITH(bundledir, [ --with-bundledir set macOS localization bundle directory ],
dnl OS X bundle-based localization support
AC_ARG_WITH(bundledir, [ --with-bundledir set OS X localization bundle directory ],
CUPS_BUNDLEDIR="$withval",
if test "x$host_os_name" = xdarwin -a $host_os_version -ge 100; then
if test "x$uname" = xDarwin -a $uversion -ge 100; then
CUPS_BUNDLEDIR="/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/PrintCore.framework/Versions/A"
LANGUAGES=""
else
@@ -37,41 +39,21 @@ if test "x$CUPS_BUNDLEDIR" != x; then
AC_DEFINE_UNQUOTED(CUPS_BUNDLEDIR, "$CUPS_BUNDLEDIR")
fi
dnl Default executable file permissions
AC_ARG_WITH(exe_file_perm, [ --with-exe-file-perm set default exectuable permissions value, default=0555],
CUPS_EXE_FILE_PERM="$withval",
[case "$host_os_name" in
linux* | gnu*)
CUPS_EXE_FILE_PERM="755"
;;
*)
CUPS_EXE_FILE_PERM="555"
;;
esac])
AC_SUBST(CUPS_EXE_FILE_PERM)
dnl Default ConfigFilePerm
AC_ARG_WITH(config_file_perm, [ --with-config-file-perm set default ConfigFilePerm value, default=0640],
CUPS_CONFIG_FILE_PERM="$withval",
[if test "x$host_os_name" = xdarwin; then
if test "x$uname" = xDarwin; then
CUPS_CONFIG_FILE_PERM="644"
else
CUPS_CONFIG_FILE_PERM="640"
fi])
fi)
AC_SUBST(CUPS_CONFIG_FILE_PERM)
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_CONFIG_FILE_PERM, 0$CUPS_CONFIG_FILE_PERM)
dnl Default permissions for cupsd
AC_ARG_WITH(cupsd_file_perm, [ --with-cupsd-file-perm set default cupsd permissions, default=0500],
CUPS_CUPSD_FILE_PERM="$withval",
[case "$host_os_name" in
linux* | gnu*)
CUPS_CUPSD_FILE_PERM="700"
;;
*)
CUPS_CUPSD_FILE_PERM="500"
;;
esac])
CUPS_CUPSD_FILE_PERM="500")
AC_SUBST(CUPS_CUPSD_FILE_PERM)
dnl Default LogFilePerm
@@ -103,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_ENABLE(page_logging, [ --enable-page-logging enable page_log by default])
AC_ARG_WITH(page_logging, [ --enable-page-logging enable page_log by default])
if test "x$enable_page_logging" = xyes; then
CUPS_PAGE_LOG_FORMAT=""
else
@@ -161,7 +143,7 @@ dnl Determine the correct username and group for this OS...
AC_ARG_WITH(cups_user, [ --with-cups-user set default user for CUPS],
CUPS_USER="$withval",
AC_MSG_CHECKING(for default print user)
if test x$host_os_name = xdarwin; then
if test x$uname = xDarwin; then
if test x`id -u _lp 2>/dev/null` = x; then
CUPS_USER="lp";
else
@@ -194,7 +176,7 @@ fi
AC_ARG_WITH(cups_group, [ --with-cups-group set default group for CUPS],
CUPS_GROUP="$withval",
AC_MSG_CHECKING(for default print group)
if test x$host_os_name = xdarwin; then
if test x$uname = xDarwin; then
if test x`id -g _lp 2>/dev/null` = x; then
CUPS_GROUP="lp";
else
@@ -227,7 +209,7 @@ fi
AC_ARG_WITH(system_groups, [ --with-system-groups set default system groups for CUPS],
CUPS_SYSTEM_GROUPS="$withval",
if test x$host_os_name = xdarwin; then
if test x$uname = xDarwin; then
CUPS_SYSTEM_GROUPS="admin"
else
AC_MSG_CHECKING(for default system groups)
@@ -280,15 +262,15 @@ AC_ARG_WITH(printcap, [ --with-printcap set default printcap file],
if test x$default_printcap != xno; then
if test "x$default_printcap" = "xdefault"; then
case $host_os_name in
darwin*)
if test $host_os_version -ge 90; then
case $uname in
Darwin*)
if test $uversion -ge 90; then
CUPS_DEFAULT_PRINTCAP="/Library/Preferences/org.cups.printers.plist"
else
CUPS_DEFAULT_PRINTCAP="/etc/printcap"
fi
;;
sunos*)
SunOS*)
CUPS_DEFAULT_PRINTCAP="/etc/printers.conf"
;;
*)
@@ -312,8 +294,8 @@ AC_ARG_WITH(lpdconfigfile, [ --with-lpdconfigfile set default LPDConfigFile
if test x$default_lpdconfigfile != xno; then
if test "x$default_lpdconfigfile" = "xdefault"; then
case $host_os_name in
darwin*)
case $uname in
Darwin*)
CUPS_DEFAULT_LPD_CONFIG_FILE="launchd:///System/Library/LaunchDaemons/org.cups.cups-lpd.plist"
;;
*)
@@ -380,7 +362,7 @@ AC_ARG_WITH(snmp-address, [ --with-snmp-address set SNMP query address, def
else
CUPS_SNMP_ADDRESS="Address $withval"
fi,
if test "x$host_os_name" = xdarwin; then
if test "x$uname" = xDarwin; then
CUPS_SNMP_ADDRESS=""
else
CUPS_SNMP_ADDRESS="Address @LOCAL"
@@ -402,7 +384,7 @@ AC_SUBST(DEFAULT_IPP_PORT)
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_IPP_PORT,$DEFAULT_IPP_PORT)
dnl Web interface...
AC_ARG_ENABLE(webif, [ --enable-webif enable the web interface by default, default=no for macOS])
AC_ARG_ENABLE(webif, [ --enable-webif enable the web interface by default, default=no for OS X])
case "x$enable_webif" in
xno)
CUPS_WEBIF=No
@@ -413,7 +395,7 @@ case "x$enable_webif" in
CUPS_DEFAULT_WEBIF=1
;;
*)
if test $host_os_name = darwin; then
if test $uname = Darwin; then
CUPS_WEBIF=No
CUPS_DEFAULT_WEBIF=0
else
@@ -425,3 +407,7 @@ esac
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
+21 -15
Ver Arquivo
@@ -1,14 +1,16 @@
dnl
dnl "$Id: cups-directories.m4 11717 2014-03-21 16:42:53Z msweet $"
dnl
dnl Directory stuff for CUPS.
dnl
dnl Copyright 2007-2017 by Apple Inc.
dnl Copyright 2007-2014 by Apple Inc.
dnl Copyright 1997-2007 by Easy Software Products, all rights reserved.
dnl
dnl These coded instructions, statements, and computer programs are the
dnl property of Apple Inc. and are protected by Federal copyright
dnl law. Distribution and use rights are outlined in the file "LICENSE.txt"
dnl which should have been included with this file. If this file is
dnl missing or damaged, see the license at "http://www.cups.org/".
dnl file is missing or damaged, see the license at "http://www.cups.org/".
dnl
AC_PREFIX_DEFAULT(/)
@@ -74,7 +76,7 @@ fi
dnl Fix "localstatedir" variable if it hasn't been specified...
if test "$localstatedir" = "\${prefix}/var"; then
if test "$prefix" = "/"; then
if test "$host_os_name" = darwin; then
if test "$uname" = Darwin; then
localstatedir="/private/var"
else
localstatedir="/var"
@@ -87,7 +89,7 @@ fi
dnl Fix "sysconfdir" variable if it hasn't been specified...
if test "$sysconfdir" = "\${prefix}/etc"; then
if test "$prefix" = "/"; then
if test "$host_os_name" = darwin; then
if test "$uname" = Darwin; then
sysconfdir="/private/etc"
else
sysconfdir="/etc"
@@ -99,8 +101,8 @@ fi
dnl Fix "libdir" variable...
if test "$libdir" = "\${exec_prefix}/lib"; then
case "$host_os_name" in
linux*)
case "$uname" in
Linux*)
if test -d /usr/lib64 -a ! -d /usr/lib64/fakeroot; then
libdir="$exec_prefix/lib64"
fi
@@ -165,7 +167,7 @@ dnl Setup default locations...
AC_ARG_WITH(cachedir, [ --with-cachedir set path for cache files],cachedir="$withval",cachedir="")
if test x$cachedir = x; then
if test "x$host_os_name" = xdarwin; then
if test "x$uname" = xDarwin; then
CUPS_CACHEDIR="$localstatedir/spool/cups/cache"
else
CUPS_CACHEDIR="$localstatedir/cache/cups"
@@ -230,8 +232,8 @@ AC_DEFINE_UNQUOTED(CUPS_FONTPATH, "$CUPS_FONTPATH")
# Locale data
if test "$localedir" = "\${datarootdir}/locale"; then
case "$host_os_name" in
linux* | gnu* | *bsd* | darwin*)
case "$uname" in
Linux | GNU | *BSD* | Darwin*)
CUPS_LOCALEDIR="$datarootdir/locale"
;;
@@ -265,9 +267,9 @@ AC_DEFINE_UNQUOTED(CUPS_REQUESTS, "$localstatedir/spool/cups")
AC_SUBST(CUPS_REQUESTS)
# Server executables...
case "$host_os_name" in
*bsd* | darwin*)
# *BSD and Darwin (macOS)
case "$uname" in
*BSD* | Darwin*)
# *BSD and Darwin (MacOS X)
INSTALL_SYSV=""
CUPS_SERVERBIN="$exec_prefix/libexec/cups"
;;
@@ -289,9 +291,9 @@ AC_SUBST(CUPS_SERVERROOT)
# Transient run-time state
AC_ARG_WITH(rundir, [ --with-rundir set transient run-time state directory],CUPS_STATEDIR="$withval",[
case "$host_os_name" in
darwin*)
# Darwin (macOS)
case "$uname" in
Darwin*)
# Darwin (OS X)
CUPS_STATEDIR="$CUPS_SERVERROOT"
;;
*)
@@ -301,3 +303,7 @@ AC_ARG_WITH(rundir, [ --with-rundir set transient run-time state dire
esac])
AC_DEFINE_UNQUOTED(CUPS_STATEDIR, "$CUPS_STATEDIR")
AC_SUBST(CUPS_STATEDIR)
dnl
dnl End of "$Id: cups-directories.m4 11717 2014-03-21 16:42:53Z msweet $".
dnl
+17 -11
Ver Arquivo
@@ -1,13 +1,15 @@
dnl
dnl DNS Service Discovery (aka Bonjour) stuff for CUPS.
dnl "$Id: cups-dnssd.m4 11324 2013-10-04 03:11:42Z msweet $"
dnl
dnl Copyright 2007-2017 by Apple Inc.
dnl DNS Service Discovery (aka Bonjour) stuff for CUPS.
dnl
dnl These coded instructions, statements, and computer programs are the
dnl property of Apple Inc. and are protected by Federal copyright
dnl law. Distribution and use rights are outlined in the file "LICENSE.txt"
dnl which should have been included with this file. If this file is
dnl missing or damaged, see the license at "http://www.cups.org/".
dnl Copyright 2007-2012 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
dnl law. Distribution and use rights are outlined in the file "LICENSE.txt"
dnl which should have been included with this file. If this file is
dnl file is missing or damaged, see the license at "http://www.cups.org/".
dnl
AC_ARG_ENABLE(avahi, [ --disable-avahi disable DNS Service Discovery support using Avahi])
@@ -24,7 +26,7 @@ DNSSD_BACKEND=""
IPPFIND_BIN=""
IPPFIND_MAN=""
if test "x$PKGCONFIG" != x -a x$enable_avahi != xno -a x$host_os_name != xdarwin; then
if test "x$PKGCONFIG" != x -a x$enable_avahi != xno; then
AC_MSG_CHECKING(for Avahi)
if $PKGCONFIG --exists avahi-client; then
AC_MSG_RESULT(yes)
@@ -41,9 +43,9 @@ fi
if test "x$DNSSD_BACKEND" = x -a x$enable_dnssd != xno; then
AC_CHECK_HEADER(dns_sd.h, [
case "$host_os_name" in
darwin*)
# Darwin and macOS...
case "$uname" in
Darwin*)
# Darwin and MacOS X...
AC_DEFINE(HAVE_DNSSD)
DNSSDLIBS="-framework CoreFoundation -framework SystemConfiguration"
DNSSD_BACKEND="dnssd"
@@ -78,3 +80,7 @@ AC_SUBST(DNSSDLIBS)
AC_SUBST(DNSSD_BACKEND)
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
+23 -17
Ver Arquivo
@@ -1,17 +1,19 @@
dnl
dnl GSSAPI/Kerberos library detection for CUPS.
dnl "$Id: cups-gssapi.m4 11911 2014-06-10 13:54:53Z msweet $"
dnl
dnl Copyright 2007-2017 by Apple Inc.
dnl Copyright 2006-2007 by Easy Software Products.
dnl GSSAPI/Kerberos library detection for CUPS.
dnl
dnl This file contains Kerberos support code, copyright 2006 by
dnl Jelmer Vernooij.
dnl Copyright 2007-2013 by Apple Inc.
dnl Copyright 2006-2007 by Easy Software Products.
dnl
dnl These coded instructions, statements, and computer programs are the
dnl property of Apple Inc. and are protected by Federal copyright
dnl law. Distribution and use rights are outlined in the file "LICENSE.txt"
dnl which should have been included with this file. If this file is
dnl missing or damaged, see the license at "http://www.cups.org/".
dnl This file contains Kerberos support code, copyright 2006 by
dnl Jelmer Vernooij.
dnl
dnl These coded instructions, statements, and computer programs are the
dnl property of Apple Inc. and are protected by Federal copyright
dnl law. Distribution and use rights are outlined in the file "LICENSE.txt"
dnl which should have been included with this file. If this file is
dnl file is missing or damaged, see the license at "http://www.cups.org/".
dnl
AC_ARG_ENABLE(gssapi, [ --disable-gssapi disable GSSAPI support])
@@ -22,9 +24,9 @@ AC_SUBST(LIBGSSAPI)
if test x$enable_gssapi != xno; then
AC_PATH_TOOL(KRB5CONFIG, krb5-config)
if test "x$KRB5CONFIG" != x; then
case "$host_os_name" in
darwin)
# macOS weak-links to the Kerberos framework...
case "$uname" in
Darwin)
# OS X weak-links to the Kerberos framework...
LIBGSSAPI="-weak_framework Kerberos"
AC_MSG_CHECKING(for GSS framework)
if test -d /System/Library/Frameworks/GSS.framework; then
@@ -34,7 +36,7 @@ if test x$enable_gssapi != xno; then
AC_MSG_RESULT(no)
fi
;;
sunos*)
SunOS*)
# Solaris has a non-standard krb5-config, don't use it!
AC_CHECK_LIB(gss, gss_display_status,
AC_DEFINE(HAVE_GSSAPI, 1, [Whether GSSAPI is available])
@@ -52,13 +54,13 @@ if test x$enable_gssapi != xno; then
AC_DEFINE(HAVE_GSSAPI, 1, [Whether GSSAPI is available])
else
# Check for vendor-specific implementations...
case "$host_os_name" in
hp-ux*)
case "$uname" in
HP-UX*)
AC_CHECK_LIB(gss, gss_display_status,
AC_DEFINE(HAVE_GSSAPI, 1, [Whether GSSAPI is available])
LIBGSSAPI="-lgss -lgssapi_krb5")
;;
sunos*)
SunOS*)
AC_CHECK_LIB(gss, gss_display_status,
AC_DEFINE(HAVE_GSSAPI, 1, [Whether GSSAPI is available])
LIBGSSAPI="-lgss")
@@ -125,3 +127,7 @@ fi
AC_SUBST(CUPS_DEFAULT_GSSSERVICENAME)
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_GSSSERVICENAME, "$CUPS_DEFAULT_GSSSERVICENAME")
dnl
dnl End of "$Id: cups-gssapi.m4 11911 2014-06-10 13:54:53Z msweet $".
dnl
+14 -8
Ver Arquivo
@@ -1,14 +1,16 @@
dnl
dnl Large file support stuff for CUPS.
dnl "$Id: cups-largefile.m4 11324 2013-10-04 03:11:42Z msweet $"
dnl
dnl Copyright 2007-2011 by Apple Inc.
dnl Copyright 1997-2005 by Easy Software Products, all rights reserved.
dnl Large file support stuff for CUPS.
dnl
dnl These coded instructions, statements, and computer programs are the
dnl property of Apple Inc. and are protected by Federal copyright
dnl law. Distribution and use rights are outlined in the file "LICENSE.txt"
dnl which should have been included with this file. If this file is
dnl missing or damaged, see the license at "http://www.cups.org/".
dnl Copyright 2007-2011 by Apple Inc.
dnl Copyright 1997-2005 by Easy Software Products, all rights reserved.
dnl
dnl These coded instructions, statements, and computer programs are the
dnl property of Apple Inc. and are protected by Federal copyright
dnl law. Distribution and use rights are outlined in the file "LICENSE.txt"
dnl which should have been included with this file. If this file is
dnl file is missing or damaged, see the license at "http://www.cups.org/".
dnl
dnl Check for largefile support...
@@ -44,3 +46,7 @@ if test $ac_cv_c_long_long = yes; then
fi
AC_CHECK_FUNC(strtoll, AC_DEFINE(HAVE_STRTOLL))
dnl
dnl End of "$Id: cups-largefile.m4 11324 2013-10-04 03:11:42Z msweet $".
dnl
+14 -8
Ver Arquivo
@@ -1,14 +1,16 @@
dnl
dnl Libtool stuff for CUPS.
dnl "$Id: cups-libtool.m4 11324 2013-10-04 03:11:42Z msweet $"
dnl
dnl Copyright 2007-2011 by Apple Inc.
dnl Copyright 1997-2005 by Easy Software Products, all rights reserved.
dnl Libtool stuff for CUPS.
dnl
dnl These coded instructions, statements, and computer programs are the
dnl property of Apple Inc. and are protected by Federal copyright
dnl law. Distribution and use rights are outlined in the file "LICENSE.txt"
dnl which should have been included with this file. If this file is
dnl missing or damaged, see the license at "http://www.cups.org/".
dnl Copyright 2007-2011 by Apple Inc.
dnl Copyright 1997-2005 by Easy Software Products, all rights reserved.
dnl
dnl These coded instructions, statements, and computer programs are the
dnl property of Apple Inc. and are protected by Federal copyright
dnl law. Distribution and use rights are outlined in the file "LICENSE.txt"
dnl which should have been included with this file. If this file is
dnl file is missing or damaged, see the license at "http://www.cups.org/".
dnl
AC_ARG_ENABLE(libtool_unsupported, [ --enable-libtool-unsupported
@@ -31,3 +33,7 @@ if test x$LIBTOOL != x; then
LINKCUPSIMAGE="../filter/\$(LIBCUPSIMAGE)"
DSO="\$(CC)"
fi
dnl
dnl End of "$Id: cups-libtool.m4 11324 2013-10-04 03:11:42Z msweet $".
dnl
+15 -9
Ver Arquivo
@@ -1,14 +1,16 @@
dnl
dnl "$Id: cups-manpages.m4 11342 2013-10-18 20:36:01Z msweet $"
dnl
dnl Manpage stuff for CUPS.
dnl
dnl Copyright 2007-2017 by Apple Inc.
dnl Copyright 2007-2013 by Apple Inc.
dnl Copyright 1997-2006 by Easy Software Products, all rights reserved.
dnl
dnl These coded instructions, statements, and computer programs are the
dnl property of Apple Inc. and are protected by Federal copyright
dnl law. Distribution and use rights are outlined in the file "LICENSE.txt"
dnl which should have been included with this file. If this file is
dnl missing or damaged, see the license at "http://www.cups.org/".
dnl file is missing or damaged, see the license at "http://www.cups.org/".
dnl
dnl Fix "mandir" variable...
@@ -19,9 +21,9 @@ if test "$mandir" = "\${datarootdir}/man" -a "$prefix" = "/"; then
fi
if test "$mandir" = "\${prefix}/man" -a "$prefix" = "/"; then
case "$host_os_name" in
darwin* | linux* | gnu* | *bsd*)
# Darwin, macOS, Linux, GNU HURD, and *BSD
case "$uname" in
Darwin* | Linux | GNU | *BSD*)
# Darwin, MacOS X, Linux, GNU HURD, and *BSD
mandir="/usr/share/man"
AMANDIR="/usr/share/man"
PMANDIR="/usr/share/man"
@@ -42,8 +44,8 @@ AC_SUBST(AMANDIR)
AC_SUBST(PMANDIR)
dnl Setup manpage extensions...
case "$host_os_name" in
sunos*)
case "$uname" in
SunOS*)
# Solaris
MAN1EXT=1
MAN5EXT=5
@@ -51,8 +53,8 @@ case "$host_os_name" in
MAN8EXT=1m
MAN8DIR=1m
;;
linux* | gnu* | darwin*)
# Linux, GNU Hurd, and macOS
Linux* | GNU* | Darwin*)
# Linux, GNU Hurd, and OS X
MAN1EXT=1.gz
MAN5EXT=5.gz
MAN7EXT=7.gz
@@ -74,3 +76,7 @@ AC_SUBST(MAN5EXT)
AC_SUBST(MAN7EXT)
AC_SUBST(MAN8EXT)
AC_SUBST(MAN8DIR)
dnl
dnl End of "$Id: cups-manpages.m4 11342 2013-10-18 20:36:01Z msweet $".
dnl
+12 -6
Ver Arquivo
@@ -1,14 +1,16 @@
dnl
dnl "$Id: cups-network.m4 12325 2014-12-09 20:28:51Z msweet $"
dnl
dnl Networking stuff for CUPS.
dnl
dnl Copyright 2007-2016 by Apple Inc.
dnl Copyright 2007-2014 by Apple Inc.
dnl Copyright 1997-2005 by Easy Software Products, all rights reserved.
dnl
dnl These coded instructions, statements, and computer programs are the
dnl property of Apple Inc. and are protected by Federal copyright
dnl law. Distribution and use rights are outlined in the file "LICENSE.txt"
dnl which should have been included with this file. If this file is
dnl missing or damaged, see the license at "http://www.cups.org/".
dnl file is missing or damaged, see the license at "http://www.cups.org/".
dnl
AC_CHECK_HEADER(resolv.h,AC_DEFINE(HAVE_RESOLV_H),,[
@@ -28,7 +30,7 @@ AC_SEARCH_LIBS(__res_init, resolv bind, AC_DEFINE(HAVE_RES_INIT),
# Tru64 5.1b leaks file descriptors with these functions; disable until
# we can come up with a test for this...
if test "$host_os_name" != "osf1"; then
if test "$uname" != "OSF1"; then
AC_SEARCH_LIBS(getaddrinfo, nsl, AC_DEFINE(HAVE_GETADDRINFO))
AC_SEARCH_LIBS(getnameinfo, nsl, AC_DEFINE(HAVE_GETNAMEINFO))
fi
@@ -45,9 +47,9 @@ AC_ARG_WITH(domainsocket, [ --with-domainsocket set unix domain socket name
if test x$enable_domainsocket != xno -a x$default_domainsocket != xno; then
if test "x$default_domainsocket" = x; then
case "$host_os_name" in
darwin*)
# Darwin and macOS do their own thing...
case "$uname" in
Darwin*)
# Darwin and MaxOS X do their own thing...
CUPS_DEFAULT_DOMAINSOCKET="$localstatedir/run/cupsd"
;;
*)
@@ -68,3 +70,7 @@ fi
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
+31 -29
Ver Arquivo
@@ -1,37 +1,39 @@
dnl
dnl Operating system stuff for CUPS.
dnl "$Id: cups-opsys.m4 11324 2013-10-04 03:11:42Z msweet $"
dnl
dnl Copyright 2007-2017 by Apple Inc.
dnl Copyright 1997-2006 by Easy Software Products, all rights reserved.
dnl Operating system stuff for CUPS.
dnl
dnl These coded instructions, statements, and computer programs are the
dnl property of Apple Inc. and are protected by Federal copyright
dnl law. Distribution and use rights are outlined in the file "LICENSE.txt"
dnl which should have been included with this file. If this file is
dnl missing or damaged, see the license at "http://www.cups.org/".
dnl Copyright 2007-2012 by Apple Inc.
dnl Copyright 1997-2006 by Easy Software Products, all rights reserved.
dnl
dnl These coded instructions, statements, and computer programs are the
dnl property of Apple Inc. and are protected by Federal copyright
dnl law. Distribution and use rights are outlined in the file "LICENSE.txt"
dnl which should have been included with this file. If this file is
dnl file is missing or damaged, see the license at "http://www.cups.org/".
dnl
dnl Get the build and host platforms and split the host_os value
AC_CANONICAL_BUILD
AC_CANONICAL_HOST
dnl Get the operating system, version number, and architecture...
uname=`uname`
uversion=`uname -r | sed -e '1,$s/^[[^0-9]]*\([[0-9]]*\)\.\([[0-9]]*\).*/\1\2/'`
uarch=`uname -m`
[host_os_name=`echo $host_os | sed -e '1,$s/[0-9.]*$//g'`]
[host_os_version=`echo $host_os | sed -e '1,$s/^[^0-9.]*//g' | awk -F. '{print $1 $2}'`]
# Linux often does not yield an OS version we can use...
if test "x$host_os_version" = x; then
host_os_version="0"
fi
case "$uname" in
Darwin*)
uname="Darwin"
if test $uversion -lt 120; then
AC_MSG_ERROR([Sorry, this version of CUPS requires OS X 10.8 or higher.])
fi
;;
if test "$host_os_name" = darwin -a $host_os_version -lt 120; then
AC_MSG_ERROR([Sorry, this version of CUPS requires macOS 10.8 or higher.])
fi
GNU* | GNU/*)
uname="GNU"
;;
Linux*)
uname="Linux"
;;
esac
dnl Determine whether we are cross-compiling...
if test "$build" = "$host"; then
# No, build local targets
LOCALTARGET="local"
else
# Yes, don't build local targets
LOCALTARGET=""
fi
AC_SUBST(LOCALTARGET)
dnl
dnl "$Id: cups-opsys.m4 11324 2013-10-04 03:11:42Z msweet $"
dnl
+12 -6
Ver Arquivo
@@ -1,14 +1,16 @@
dnl
dnl PAM stuff for CUPS.
dnl "$Id: cups-pam.m4 11342 2013-10-18 20:36:01Z msweet $"
dnl
dnl Copyright 2007-2017 by Apple Inc.
dnl PAM stuff for CUPS.
dnl
dnl Copyright 2007-2013 by Apple Inc.
dnl Copyright 1997-2005 by Easy Software Products, all rights reserved.
dnl
dnl These coded instructions, statements, and computer programs are the
dnl property of Apple Inc. and are protected by Federal copyright
dnl law. Distribution and use rights are outlined in the file "LICENSE.txt"
dnl which should have been included with this file. If this file is
dnl missing or damaged, see the license at "http://www.cups.org/".
dnl file is missing or damaged, see the license at "http://www.cups.org/".
dnl
AC_ARG_ENABLE(pam, [ --disable-pam disable PAM support])
@@ -52,9 +54,9 @@ if test x$enable_pam != xno; then
LIBS="$SAVELIBS"
case "$host_os_name" in
darwin*)
# Darwin/macOS
case "$uname" in
Darwin*)
# Darwin/OS X
if test "x$with_pam_module" != x; then
PAMFILE="pam.$with_pam_module"
elif test -f /usr/lib/pam/pam_opendirectory.so.2; then
@@ -89,3 +91,7 @@ AC_SUBST(PAMFILE)
AC_SUBST(PAMLIBS)
AC_SUBST(PAMMOD)
AC_SUBST(PAMMODAUTH)
dnl
dnl End of "$Id: cups-pam.m4 11342 2013-10-18 20:36:01Z msweet $".
dnl
+14 -8
Ver Arquivo
@@ -1,16 +1,22 @@
dnl
dnl Select/poll stuff for CUPS.
dnl "$Id: cups-poll.m4 11324 2013-10-04 03:11:42Z msweet $"
dnl
dnl Copyright 2007-2011 by Apple Inc.
dnl Copyright 2006 by Easy Software Products, all rights reserved.
dnl Select/poll stuff for CUPS.
dnl
dnl These coded instructions, statements, and computer programs are the
dnl property of Apple Inc. and are protected by Federal copyright
dnl law. Distribution and use rights are outlined in the file "LICENSE.txt"
dnl which should have been included with this file. If this file is
dnl missing or damaged, see the license at "http://www.cups.org/".
dnl Copyright 2007-2011 by Apple Inc.
dnl Copyright 2006 by Easy Software Products, all rights reserved.
dnl
dnl These coded instructions, statements, and computer programs are the
dnl property of Apple Inc. and are protected by Federal copyright
dnl law. Distribution and use rights are outlined in the file "LICENSE.txt"
dnl which should have been included with this file. If this file is
dnl file is missing or damaged, see the license at "http://www.cups.org/".
dnl
AC_CHECK_FUNC(poll, AC_DEFINE(HAVE_POLL))
AC_CHECK_FUNC(epoll_create, AC_DEFINE(HAVE_EPOLL))
AC_CHECK_FUNC(kqueue, AC_DEFINE(HAVE_KQUEUE))
dnl
dnl End of "$Id: cups-poll.m4 11324 2013-10-04 03:11:42Z msweet $".
dnl
+14 -8
Ver Arquivo
@@ -1,14 +1,16 @@
dnl
dnl Scripting configuration stuff for CUPS.
dnl "$Id: cups-scripting.m4 11324 2013-10-04 03:11:42Z msweet $"
dnl
dnl Copyright 2007-2010 by Apple Inc.
dnl Copyright 1997-2006 by Easy Software Products, all rights reserved.
dnl Scripting configuration stuff for CUPS.
dnl
dnl These coded instructions, statements, and computer programs are the
dnl property of Apple Inc. and are protected by Federal copyright
dnl law. Distribution and use rights are outlined in the file "LICENSE.txt"
dnl which should have been included with this file. If this file is
dnl missing or damaged, see the license at "http://www.cups.org/".
dnl Copyright 2007-2010 by Apple Inc.
dnl Copyright 1997-2006 by Easy Software Products, all rights reserved.
dnl
dnl These coded instructions, statements, and computer programs are the
dnl property of Apple Inc. and are protected by Federal copyright
dnl law. Distribution and use rights are outlined in the file "LICENSE.txt"
dnl which should have been included with this file. If this file is
dnl file is missing or damaged, see the license at "http://www.cups.org/".
dnl
dnl Do we have Java?
@@ -81,3 +83,7 @@ AC_DEFINE_UNQUOTED(CUPS_PYTHON, "$CUPS_PYTHON")
if test "x$CUPS_PYTHON" != x; then
AC_DEFINE(HAVE_PYTHON)
fi
dnl
dnl End of "$Id: cups-scripting.m4 11324 2013-10-04 03:11:42Z msweet $".
dnl
+16 -10
Ver Arquivo
@@ -1,14 +1,16 @@
dnl
dnl "$Id: cups-sharedlibs.m4 11342 2013-10-18 20:36:01Z msweet $"
dnl
dnl Shared library support for CUPS.
dnl
dnl Copyright 2007-2017 by Apple Inc.
dnl Copyright 2007-2013 by Apple Inc.
dnl Copyright 1997-2005 by Easy Software Products, all rights reserved.
dnl
dnl These coded instructions, statements, and computer programs are the
dnl property of Apple Inc. and are protected by Federal copyright
dnl law. Distribution and use rights are outlined in the file "LICENSE.txt"
dnl which should have been included with this file. If this file is
dnl missing or damaged, see the license at "http://www.cups.org/".
dnl file is missing or damaged, see the license at "http://www.cups.org/".
dnl
PICFLAG=1
@@ -21,8 +23,8 @@ LIBCUPSBASE="lib$cupsbase"
LIBCUPSSTATIC="lib$cupsbase.a"
if test x$enable_shared != xno; then
case "$host_os_name" in
sunos*)
case "$uname" in
SunOS*)
LIBCUPS="lib$cupsbase.so.2"
LIBCUPSCGI="libcupscgi.so.1"
LIBCUPSIMAGE="libcupsimage.so.2"
@@ -32,7 +34,7 @@ if test x$enable_shared != xno; then
DSOXX="\$(CXX)"
DSOFLAGS="$DSOFLAGS -Wl,-h\`basename \$@\` -G \$(OPTIM)"
;;
linux* | gnu* | *bsd*)
Linux | GNU | *BSD*)
LIBCUPS="lib$cupsbase.so.2"
LIBCUPSCGI="libcupscgi.so.1"
LIBCUPSIMAGE="libcupsimage.so.2"
@@ -42,7 +44,7 @@ if test x$enable_shared != xno; then
DSOXX="\$(CXX)"
DSOFLAGS="$DSOFLAGS -Wl,-soname,\`basename \$@\` -shared \$(OPTIM)"
;;
darwin*)
Darwin*)
LIBCUPS="lib$cupsbase.2.dylib"
LIBCUPSCGI="libcupscgi.1.dylib"
LIBCUPSIMAGE="libcupsimage.2.dylib"
@@ -120,8 +122,8 @@ if test "$DSO" != ":"; then
# Tell the run-time linkers where to find a DSO. Some platforms
# need this option, even when the library is installed in a
# standard location...
case $host_os_name in
sunos*)
case $uname in
SunOS*)
# Solaris...
if test $exec_prefix != /usr; then
DSOFLAGS="-R$libdir $DSOFLAGS"
@@ -129,7 +131,7 @@ if test "$DSO" != ":"; then
EXPORT_LDFLAGS="-R$libdir"
fi
;;
*bsd*)
*BSD*)
# *BSD...
if test $exec_prefix != /usr; then
DSOFLAGS="-Wl,-R$libdir $DSOFLAGS"
@@ -137,7 +139,7 @@ if test "$DSO" != ":"; then
EXPORT_LDFLAGS="-Wl,-R$libdir"
fi
;;
linux* | gnu*)
Linux | GNU)
# Linux, and HURD...
if test $exec_prefix != /usr; then
DSOFLAGS="-Wl,-rpath,$libdir $DSOFLAGS"
@@ -154,3 +156,7 @@ fi
AC_SUBST(DSOLIBS)
AC_SUBST(IMGLIBS)
AC_SUBST(EXPORT_LDFLAGS)
dnl
dnl End of "$Id: cups-sharedlibs.m4 11342 2013-10-18 20:36:01Z msweet $".
dnl
+9 -7
Ver Arquivo
@@ -1,14 +1,16 @@
dnl
dnl "$Id: cups-ssl.m4 12290 2014-12-05 17:25:55Z msweet $"
dnl
dnl TLS stuff for CUPS.
dnl
dnl Copyright 2007-2017 by Apple Inc.
dnl Copyright 2007-2014 by Apple Inc.
dnl Copyright 1997-2007 by Easy Software Products, all rights reserved.
dnl
dnl These coded instructions, statements, and computer programs are the
dnl property of Apple Inc. and are protected by Federal copyright
dnl law. Distribution and use rights are outlined in the file "LICENSE.txt"
dnl which should have been included with this file. If this file is
dnl missing or damaged, see the license at "http://www.cups.org/".
dnl file is missing or damaged, see the license at "http://www.cups.org/".
dnl
AC_ARG_ENABLE(ssl, [ --disable-ssl disable SSL/TLS support])
@@ -23,7 +25,7 @@ CUPS_SERVERKEYCHAIN=""
if test x$enable_ssl != xno; then
dnl Look for CDSA...
if test $have_ssl = 0 -a "x$enable_cdsassl" != "xno"; then
if test $host_os_name = darwin; then
if test $uname = Darwin; then
AC_CHECK_HEADER(Security/SecureTransport.h, [
have_ssl=1
AC_DEFINE(HAVE_SSL)
@@ -51,10 +53,6 @@ if test x$enable_ssl != xno; then
AC_DEFINE(HAVE_CSSMERRORSTRING)
AC_DEFINE(HAVE_SECKEYCHAINOPEN)])
if test $host_os_version -ge 150; then
AC_DEFINE(HAVE_SSLSETENABLEDCIPHERS)
fi
fi
fi
@@ -104,3 +102,7 @@ AC_SUBST(SSLLIBS)
EXPORT_SSLLIBS="$SSLLIBS"
AC_SUBST(EXPORT_SSLLIBS)
dnl
dnl End of "$Id: cups-ssl.m4 12290 2014-12-05 17:25:55Z msweet $".
dnl
+37 -48
Ver Arquivo
@@ -1,14 +1,16 @@
dnl
dnl "$Id: cups-startup.m4 12351 2014-12-09 22:18:45Z msweet $"
dnl
dnl Launch-on-demand/startup stuff for CUPS.
dnl
dnl Copyright 2007-2017 by Apple Inc.
dnl Copyright 2007-2014 by Apple Inc.
dnl Copyright 1997-2005 by Easy Software Products, all rights reserved.
dnl
dnl These coded instructions, statements, and computer programs are the
dnl property of Apple Inc. and are protected by Federal copyright
dnl law. Distribution and use rights are outlined in the file "LICENSE.txt"
dnl which should have been included with this file. If this file is
dnl missing or damaged, see the license at "http://www.cups.org/".
dnl file is missing or damaged, see the license at "http://www.cups.org/".
dnl
ONDEMANDFLAGS=""
@@ -16,21 +18,30 @@ ONDEMANDLIBS=""
AC_SUBST(ONDEMANDFLAGS)
AC_SUBST(ONDEMANDLIBS)
dnl Launchd is used on macOS/Darwin...
dnl Launchd is used on OS X/Darwin...
AC_ARG_ENABLE(launchd, [ --disable-launchd disable launchd support])
LAUNCHD_DIR=""
AC_SUBST(LAUNCHD_DIR)
if test x$enable_launchd != xno; then
AC_CHECK_FUNC(launch_activate_socket, [
AC_DEFINE(HAVE_LAUNCHD)
AC_DEFINE(HAVE_ONDEMAND)])
AC_CHECK_FUNC(launch_msg, AC_DEFINE(HAVE_LAUNCHD))
if test $uversion -ge 140; then
AC_CHECK_FUNC(launch_activate_socket, [
AC_DEFINE(HAVE_LAUNCHD)
AC_DEFINE(HAVE_LAUNCH_ACTIVATE_SOCKET)])
fi
AC_CHECK_HEADER(launch.h, AC_DEFINE(HAVE_LAUNCH_H))
if test "$host_os_name" = darwin; then
LAUNCHD_DIR="/System/Library/LaunchDaemons"
# liblaunch is already part of libSystem
fi
case "$uname" in
Darwin*)
# Darwin, MacOS X
LAUNCHD_DIR="/System/Library/LaunchDaemons"
# liblaunch is already part of libSystem
;;
*)
# All others; this test will need to be updated
;;
esac
fi
dnl Systemd is used on Linux...
@@ -45,48 +56,21 @@ if test x$enable_systemd != xno; then
AC_MSG_ERROR(Need pkg-config to enable systemd support.)
fi
else
have_systemd=no
AC_MSG_CHECKING(for libsystemd)
if $PKGCONFIG --exists libsystemd; then
AC_MSG_CHECKING(for libsystemd-daemon)
if $PKGCONFIG --exists libsystemd-daemon; then
AC_MSG_RESULT(yes)
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
ONDEMANDFLAGS=`$PKGCONFIG --cflags libsystemd-daemon`
ONDEMANDLIBS=`$PKGCONFIG --libs libsystemd-daemon`
AC_DEFINE(HAVE_SYSTEMD)
AC_DEFINE(HAVE_ONDEMAND)
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
dnl Upstart is also used on Linux (e.g., Chrome OS)
AC_ARG_ENABLE(upstart, [ --enable-upstart enable upstart support])
if test "x$enable_upstart" = "xyes"; then
if test "x$have_systemd" = "xyes"; then
AC_MSG_ERROR(Cannot support both systemd and upstart.)
fi
AC_DEFINE(HAVE_UPSTART)
AC_DEFINE(HAVE_ONDEMAND)
fi
dnl Solaris uses smf
SMFMANIFESTDIR=""
AC_SUBST(SMFMANIFESTDIR)
@@ -117,13 +101,13 @@ if test x$rcdir = x; then
fi
if test "x$rcstart" = x; then
case "$host_os_name" in
linux* | gnu*)
case "$uname" in
Linux | GNU | GNU/k*BSD*)
# Linux
rcstart="81"
;;
sunos*)
SunOS*)
# Solaris
rcstart="81"
;;
@@ -136,8 +120,8 @@ if test "x$rcstart" = x; then
fi
if test "x$rcstop" = x; then
case "$host_os_name" in
linux* | gnu*)
case "$uname" in
Linux | GNU | GNU/k*BSD*)
# Linux
rcstop="36"
;;
@@ -185,3 +169,8 @@ if test "x$xinetd" = x; then
elif test "x$xinetd" != xno; then
XINETD="$xinetd"
fi
dnl
dnl End of "$Id: cups-startup.m4 12351 2014-12-09 22:18:45Z msweet $".
dnl
+15 -9
Ver Arquivo
@@ -1,14 +1,16 @@
dnl
dnl Threading stuff for CUPS.
dnl "$Id: cups-threads.m4 11324 2013-10-04 03:11:42Z msweet $"
dnl
dnl Copyright 2007-2017 by Apple Inc.
dnl Copyright 1997-2005 by Easy Software Products, all rights reserved.
dnl Threading stuff for CUPS.
dnl
dnl These coded instructions, statements, and computer programs are the
dnl property of Apple Inc. and are protected by Federal copyright
dnl law. Distribution and use rights are outlined in the file "LICENSE.txt"
dnl which should have been included with this file. If this file is
dnl missing or damaged, see the license at "http://www.cups.org/".
dnl Copyright 2007-2011 by Apple Inc.
dnl Copyright 1997-2005 by Easy Software Products, all rights reserved.
dnl
dnl These coded instructions, statements, and computer programs are the
dnl property of Apple Inc. and are protected by Federal copyright
dnl law. Distribution and use rights are outlined in the file "LICENSE.txt"
dnl which should have been included with this file. If this file is
dnl file is missing or damaged, see the license at "http://www.cups.org/".
dnl
AC_ARG_ENABLE(threads, [ --disable-threads disable multi-threading support])
@@ -36,7 +38,7 @@ if test "x$enable_threads" != xno; then
# Solaris requires -D_POSIX_PTHREAD_SEMANTICS to
# be POSIX-compliant... :(
if test $host_os_name = sunos; then
if test $uname = SunOS; then
PTHREAD_FLAGS="$PTHREAD_FLAGS -D_POSIX_PTHREAD_SEMANTICS"
fi
break
@@ -46,3 +48,7 @@ if test "x$enable_threads" != xno; then
fi
AC_SUBST(PTHREAD_FLAGS)
dnl
dnl End of "$Id: cups-threads.m4 11324 2013-10-04 03:11:42Z msweet $".
dnl
-1568
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+29 -39
Ver Arquivo
@@ -1,14 +1,16 @@
/*
* "$Id: config.h.in 12329 2014-12-09 20:50:51Z msweet $"
*
* Configuration file for CUPS.
*
* Copyright 2007-2017 by Apple Inc.
* Copyright 2007-2014 by Apple Inc.
* Copyright 1997-2007 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
* missing or damaged, see the license at "http://www.cups.org/".
* file is missing or damaged, see the license at "http://www.cups.org/".
*/
#ifndef _CUPS_CONFIG_H_
@@ -240,13 +242,6 @@
#undef HAVE_VSYSLOG
/*
* Do we have the systemd journal functions?
*/
#undef HAVE_SYSTEMD_SD_JOURNAL_H
/*
* Do we have the (v)snprintf() functions?
*/
@@ -353,13 +348,6 @@
#undef HAVE_SECKEYCHAINOPEN
/*
* Do we have (a working) SSLSetEnabledCiphers function?
*/
#undef HAVE_SSLSETENABLEDCIPHERS
/*
* Do we have libpaper?
*/
@@ -472,19 +460,13 @@
#undef HAVE_PTHREAD_H
/*
* Do we have on-demand support (launchd/systemd/upstart)?
*/
#undef HAVE_ONDEMAND
/*
* Do we have launchd support?
*/
#undef HAVE_LAUNCH_H
#undef HAVE_LAUNCHD
#undef HAVE_LAUNCH_ACTIVATE_SOCKET
/*
@@ -494,13 +476,6 @@
#undef HAVE_SYSTEMD
/*
* Do we have upstart support?
*/
#undef HAVE_UPSTART
/*
* Various scripting languages...
*/
@@ -515,6 +490,24 @@
#define CUPS_PYTHON "/usr/bin/python"
/*
* Location of the poppler/Xpdf pdftops program...
*/
#undef HAVE_PDFTOPS
#undef HAVE_PDFTOPS_WITH_ORIGPAGESIZES
#define CUPS_PDFTOPS "/usr/bin/pdftops"
/*
* Location of the Ghostscript gs program...
*/
#undef HAVE_GHOSTSCRIPT
#undef HAVE_GHOSTSCRIPT_PS2WRITE
#define CUPS_GHOSTSCRIPT "/usr/bin/gs"
/*
* Do we have CoreFoundation public and private headers?
*/
@@ -539,14 +532,7 @@
/*
* Do we have the getgrouplist() function?
*/
#undef HAVE_GETGROUPLIST
/*
* Do we have macOS 10.4's mbr_XXX functions?
* Do we have OS X 10.4's mbr_XXX functions?
*/
#undef HAVE_MEMBERSHIP_H
@@ -692,7 +678,7 @@
/*
* Location of macOS localization bundle, if any.
* Location of OS X localization bundle, if any.
*/
#undef CUPS_BUNDLEDIR
@@ -731,3 +717,7 @@ static __inline int _cups_abs(int i) { return (i < 0 ? -i : i); }
#endif /* !HAVE_ABS && !abs */
#endif /* !_CUPS_CONFIG_H_ */
/*
* End of "$Id: config.h.in 12329 2014-12-09 20:50:51Z msweet $".
*/
externo
-1793
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
externo
+189 -388
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+10 -7
Ver Arquivo
@@ -1,21 +1,19 @@
dnl
dnl "$Id: configure.ac 12222 2014-10-21 11:55:01Z msweet $"
dnl
dnl Configuration script for CUPS.
dnl
dnl Copyright 2007-2017 by Apple Inc.
dnl Copyright 2007-2014 by Apple Inc.
dnl Copyright 1997-2007 by Easy Software Products, all rights reserved.
dnl
dnl These coded instructions, statements, and computer programs are the
dnl property of Apple Inc. and are protected by Federal copyright
dnl law. Distribution and use rights are outlined in the file "LICENSE.txt"
dnl which should have been included with this file. If this file is
dnl missing or damaged, see the license at "http://www.cups.org/".
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 Package name and version...
AC_INIT([CUPS], [2.2.4], [https://github.com/apple/cups/issues], [cups], [https://www.cups.org/])
AC_INIT(cups/cups.h)
sinclude(config-scripts/cups-opsys.m4)
sinclude(config-scripts/cups-common.m4)
@@ -68,6 +66,7 @@ AC_OUTPUT(Makedefs
conf/pam.std
conf/snmp.conf
cups-config
data/testprint
desktop/cups.desktop
doc/index.html
man/client.conf.man
@@ -91,3 +90,7 @@ AC_OUTPUT(Makedefs
$LANGFILES)
chmod +x cups-config
dnl
dnl End of "$Id: configure.ac 12222 2014-10-21 11:55:01Z msweet $".
dnl
+16 -10
Ver Arquivo
@@ -1,19 +1,21 @@
#!/bin/sh
#! /bin/sh
#
# CUPS configuration utility.
# "$Id: cups-config.in 10996 2013-05-29 11:51:34Z msweet $"
#
# Copyright 2007-2016 by Apple Inc.
# Copyright 2001-2006 by Easy Software Products, all rights reserved.
# CUPS configuration utility.
#
# 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/".
# Copyright 2007-2011 by Apple Inc.
# Copyright 2001-2006 by Easy Software Products, all rights reserved.
#
# These coded instructions, statements, and computer programs are the
# property of Apple Inc. and are protected by Federal copyright
# law. Distribution and use rights are outlined in the file "LICENSE.txt"
# 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/".
#
VERSION="@CUPS_VERSION@"
APIVERSION="2.2"
APIVERSION="1.6"
BUILD="@CUPS_BUILD@"
prefix=@prefix@
@@ -138,3 +140,7 @@ while test $# -gt 0; do
shift
done
#
# End of "$Id: cups-config.in 10996 2013-05-29 11:51:34Z msweet $".
#
+119 -117
Ver Arquivo
@@ -2,67 +2,99 @@ adminutil.o: adminutil.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
../cups/cups.h file.h pwg.h thread-private.h ppd.h raster.h \
adminutil.h
../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
thread-private.h adminutil.h
array.o: array.c ../cups/cups.h file.h versioning.h ipp.h http.h array.h \
language.h pwg.h string-private.h ../config.h debug-private.h \
array-private.h
attr.o: attr.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
thread-private.h
auth.o: auth.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
../cups/cups.h file.h pwg.h thread-private.h
../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
thread-private.h
backchannel.o: backchannel.c cups.h file.h versioning.h ipp.h http.h \
array.h language.h pwg.h
backend.o: backend.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
../cups/cups.h file.h pwg.h thread-private.h backend.h ppd.h raster.h
../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
thread-private.h backend.h
conflicts.o: conflicts.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
thread-private.h
custom.o: custom.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
thread-private.h
debug.o: debug.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
../cups/cups.h file.h pwg.h thread-private.h
../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
thread-private.h
dest.o: dest.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
../cups/cups.h file.h pwg.h thread-private.h
../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
thread-private.h
dest-job.o: dest-job.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
../cups/cups.h file.h pwg.h thread-private.h
../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
thread-private.h
dest-localization.o: dest-localization.c cups-private.h string-private.h \
../config.h debug-private.h ../cups/versioning.h array-private.h \
../cups/array.h ipp-private.h ../cups/ipp.h http.h http-private.h \
../cups/language.h md5-private.h language-private.h \
../cups/transcode.h pwg-private.h ../cups/cups.h file.h pwg.h \
thread-private.h
ppd-private.h ../cups/ppd.h thread-private.h
dest-options.o: dest-options.c cups-private.h string-private.h \
../config.h debug-private.h ../cups/versioning.h array-private.h \
../cups/array.h ipp-private.h ../cups/ipp.h http.h http-private.h \
../cups/language.h md5-private.h language-private.h \
../cups/transcode.h pwg-private.h ../cups/cups.h file.h pwg.h \
thread-private.h
ppd-private.h ../cups/ppd.h thread-private.h
dir.o: dir.c string-private.h ../config.h debug-private.h \
../cups/versioning.h dir.h
emit.o: emit.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
thread-private.h
encode.o: encode.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
../cups/cups.h file.h pwg.h thread-private.h
../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
thread-private.h
file.o: file.c file-private.h cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
../cups/cups.h file.h pwg.h thread-private.h
../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
thread-private.h
getdevices.o: getdevices.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
../cups/cups.h file.h pwg.h thread-private.h adminutil.h
../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
thread-private.h
getifaddrs.o: getifaddrs.c http-private.h ../config.h ../cups/language.h \
array.h versioning.h ../cups/http.h md5-private.h ipp-private.h \
../cups/ipp.h
@@ -70,59 +102,73 @@ getputfile.o: getputfile.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
../cups/cups.h file.h pwg.h thread-private.h
../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
thread-private.h
globals.o: globals.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
../cups/cups.h file.h pwg.h thread-private.h
hash.o: hash.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
../cups/cups.h file.h pwg.h thread-private.h
../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
thread-private.h
http.o: http.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
../cups/cups.h file.h pwg.h thread-private.h
../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
thread-private.h
http-addr.o: http-addr.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
../cups/cups.h file.h pwg.h thread-private.h
../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
thread-private.h
http-addrlist.o: http-addrlist.c cups-private.h string-private.h \
../config.h debug-private.h ../cups/versioning.h array-private.h \
../cups/array.h ipp-private.h ../cups/ipp.h http.h http-private.h \
../cups/language.h md5-private.h language-private.h \
../cups/transcode.h pwg-private.h ../cups/cups.h file.h pwg.h \
thread-private.h
ppd-private.h ../cups/ppd.h thread-private.h
http-support.o: http-support.c cups-private.h string-private.h \
../config.h debug-private.h ../cups/versioning.h array-private.h \
../cups/array.h ipp-private.h ../cups/ipp.h http.h http-private.h \
../cups/language.h md5-private.h language-private.h \
../cups/transcode.h pwg-private.h ../cups/cups.h file.h pwg.h \
thread-private.h
ppd-private.h ../cups/ppd.h thread-private.h
ipp.o: ipp.c cups-private.h string-private.h ../config.h debug-private.h \
../cups/versioning.h array-private.h ../cups/array.h ipp-private.h \
../cups/ipp.h http.h http-private.h ../cups/language.h md5-private.h \
language-private.h ../cups/transcode.h pwg-private.h ../cups/cups.h \
file.h pwg.h thread-private.h
file.h pwg.h ppd-private.h ../cups/ppd.h thread-private.h
ipp-support.o: ipp-support.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
../cups/cups.h file.h pwg.h thread-private.h
../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
thread-private.h
langprintf.o: langprintf.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
../cups/cups.h file.h pwg.h thread-private.h
../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
thread-private.h
language.o: language.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
../cups/cups.h file.h pwg.h thread-private.h
../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
thread-private.h
localize.o: localize.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
thread-private.h
mark.o: mark.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
thread-private.h
md5.o: md5.c md5-private.h string-private.h ../config.h
md5passwd.o: md5passwd.c http-private.h ../config.h ../cups/language.h \
array.h versioning.h ../cups/http.h md5-private.h ipp-private.h \
@@ -131,143 +177,102 @@ notify.o: notify.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
../cups/cups.h file.h pwg.h thread-private.h
../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
thread-private.h
options.o: options.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
../cups/cups.h file.h pwg.h thread-private.h
../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
thread-private.h
page.o: page.c string-private.h ../config.h debug-private.h \
../cups/versioning.h ppd.h cups.h file.h ipp.h http.h array.h \
language.h pwg.h
ppd.o: ppd.c cups-private.h string-private.h ../config.h debug-private.h \
../cups/versioning.h array-private.h ../cups/array.h ipp-private.h \
../cups/ipp.h http.h http-private.h ../cups/language.h md5-private.h \
language-private.h ../cups/transcode.h pwg-private.h ../cups/cups.h \
file.h pwg.h thread-private.h ppd-private.h ../cups/ppd.h raster.h
ppd-attr.o: ppd-attr.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
../cups/cups.h file.h pwg.h thread-private.h ppd-private.h \
../cups/ppd.h raster.h
file.h pwg.h ppd-private.h ../cups/ppd.h thread-private.h
ppd-cache.o: ppd-cache.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
../cups/cups.h file.h pwg.h thread-private.h ppd-private.h \
../cups/ppd.h raster.h
ppd-conflicts.o: ppd-conflicts.c cups-private.h string-private.h \
../config.h debug-private.h ../cups/versioning.h array-private.h \
../cups/array.h ipp-private.h ../cups/ipp.h http.h http-private.h \
../cups/language.h md5-private.h language-private.h \
../cups/transcode.h pwg-private.h ../cups/cups.h file.h pwg.h \
thread-private.h ppd-private.h ../cups/ppd.h raster.h
ppd-custom.o: ppd-custom.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
../cups/cups.h file.h pwg.h thread-private.h ppd-private.h \
../cups/ppd.h raster.h
ppd-emit.o: ppd-emit.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
../cups/cups.h file.h pwg.h thread-private.h ppd.h raster.h
ppd-localize.o: ppd-localize.c cups-private.h string-private.h \
../config.h debug-private.h ../cups/versioning.h array-private.h \
../cups/array.h ipp-private.h ../cups/ipp.h http.h http-private.h \
../cups/language.h md5-private.h language-private.h \
../cups/transcode.h pwg-private.h ../cups/cups.h file.h pwg.h \
thread-private.h ppd-private.h ../cups/ppd.h raster.h
ppd-mark.o: ppd-mark.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
../cups/cups.h file.h pwg.h thread-private.h ppd-private.h \
../cups/ppd.h raster.h
ppd-page.o: ppd-page.c string-private.h ../config.h debug-private.h \
../cups/versioning.h ppd.h cups.h file.h ipp.h http.h array.h \
language.h pwg.h raster.h
ppd-util.o: ppd-util.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
../cups/cups.h file.h pwg.h thread-private.h ppd-private.h \
../cups/ppd.h raster.h
../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
thread-private.h
pwg-media.o: pwg-media.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
../cups/cups.h file.h pwg.h thread-private.h
../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
thread-private.h
request.o: request.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
../cups/cups.h file.h pwg.h thread-private.h
../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
thread-private.h
sidechannel.o: sidechannel.c sidechannel.h versioning.h cups-private.h \
string-private.h ../config.h debug-private.h array-private.h \
../cups/array.h ipp-private.h ../cups/ipp.h http.h http-private.h \
../cups/language.h md5-private.h language-private.h \
../cups/transcode.h pwg-private.h ../cups/cups.h file.h pwg.h \
thread-private.h
ppd-private.h ../cups/ppd.h thread-private.h
snmp.o: snmp.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
../cups/cups.h file.h pwg.h thread-private.h snmp-private.h
../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
thread-private.h snmp-private.h
snprintf.o: snprintf.c string-private.h ../config.h
string.o: string.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
../cups/cups.h file.h pwg.h thread-private.h
../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
thread-private.h
tempfile.o: tempfile.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
../cups/cups.h file.h pwg.h thread-private.h
../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
thread-private.h
thread.o: thread.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
../cups/cups.h file.h pwg.h thread-private.h
../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
thread-private.h
tls.o: tls.c cups-private.h string-private.h ../config.h debug-private.h \
../cups/versioning.h array-private.h ../cups/array.h ipp-private.h \
../cups/ipp.h http.h http-private.h ../cups/language.h md5-private.h \
language-private.h ../cups/transcode.h pwg-private.h ../cups/cups.h \
file.h pwg.h thread-private.h tls-darwin.c
file.h pwg.h ppd-private.h ../cups/ppd.h thread-private.h tls-darwin.c
transcode.o: transcode.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
../cups/cups.h file.h pwg.h thread-private.h
../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
thread-private.h
usersys.o: usersys.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
../cups/cups.h file.h pwg.h thread-private.h
../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
thread-private.h
util.o: util.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
../cups/cups.h file.h pwg.h thread-private.h
../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
thread-private.h
testadmin.o: testadmin.c adminutil.h cups.h file.h versioning.h ipp.h \
http.h array.h language.h pwg.h string-private.h ../config.h
testarray.o: testarray.c string-private.h ../config.h debug-private.h \
../cups/versioning.h array-private.h ../cups/array.h dir.h
testcache.o: testcache.c ppd-private.h ../cups/cups.h file.h versioning.h \
ipp.h http.h array.h language.h pwg.h ../cups/ppd.h raster.h \
pwg-private.h file-private.h cups-private.h string-private.h \
../config.h debug-private.h array-private.h ipp-private.h \
http-private.h md5-private.h language-private.h ../cups/transcode.h \
thread-private.h
testconflicts.o: testconflicts.c cups.h file.h versioning.h ipp.h http.h \
array.h language.h pwg.h ppd.h raster.h string-private.h ../config.h
testcreds.o: testcreds.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
../cups/cups.h file.h pwg.h thread-private.h
array.h language.h pwg.h ppd.h string-private.h ../config.h
testcups.o: testcups.c string-private.h ../config.h cups.h file.h \
versioning.h ipp.h http.h array.h language.h pwg.h ppd.h raster.h
versioning.h ipp.h http.h array.h language.h pwg.h ppd.h
testdest.o: testdest.c cups.h file.h versioning.h ipp.h http.h array.h \
language.h pwg.h
testfile.o: testfile.c string-private.h ../config.h debug-private.h \
@@ -276,7 +281,8 @@ testhttp.o: testhttp.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
../cups/cups.h file.h pwg.h thread-private.h
../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
thread-private.h
testi18n.o: testi18n.c string-private.h ../config.h language-private.h \
../cups/transcode.h language.h array.h versioning.h
testipp.o: testipp.c file.h versioning.h string-private.h ../config.h \
@@ -285,32 +291,28 @@ testoptions.o: testoptions.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
../cups/cups.h file.h pwg.h thread-private.h
../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
thread-private.h
testlang.o: testlang.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
../cups/cups.h file.h pwg.h thread-private.h ppd-private.h \
../cups/ppd.h raster.h
../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
thread-private.h
testppd.o: testppd.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
../cups/cups.h file.h pwg.h thread-private.h ppd-private.h \
../cups/ppd.h raster.h
testpwg.o: testpwg.c ppd-private.h ../cups/cups.h file.h versioning.h \
ipp.h http.h array.h language.h pwg.h ../cups/ppd.h raster.h \
pwg-private.h file-private.h cups-private.h string-private.h \
../config.h debug-private.h array-private.h ipp-private.h \
http-private.h md5-private.h language-private.h ../cups/transcode.h \
../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
thread-private.h
testpwg.o: testpwg.c ppd-private.h ../cups/cups.h file.h versioning.h \
ipp.h http.h array.h language.h pwg.h ../cups/ppd.h pwg-private.h \
file-private.h cups-private.h string-private.h ../config.h \
debug-private.h array-private.h ipp-private.h http-private.h \
md5-private.h language-private.h ../cups/transcode.h thread-private.h
testsnmp.o: testsnmp.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
../cups/cups.h file.h pwg.h thread-private.h snmp-private.h
tlscheck.o: tlscheck.c cups-private.h string-private.h ../config.h \
debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
../cups/cups.h file.h pwg.h thread-private.h
../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
thread-private.h snmp-private.h
+110 -60
Ver Arquivo
@@ -1,14 +1,16 @@
#
# "$Id: Makefile 12032 2014-07-15 20:37:32Z msweet $"
#
# API library Makefile for CUPS.
#
# Copyright 2007-2016 by Apple Inc.
# Copyright 2007-2014 by Apple Inc.
# Copyright 1997-2006 by Easy Software Products, all rights reserved.
#
# These coded instructions, statements, and computer programs are the
# property of Apple Inc. and are protected by Federal copyright
# law. Distribution and use rights are outlined in the file "LICENSE.txt"
# which should have been included with this file. If this file is
# missing or damaged, see the license at "http://www.cups.org/".
# file is missing or damaged, see the license at "http://www.cups.org/".
#
# This file is subject to the Apple OS-Developed Software exception.
#
@@ -30,22 +32,25 @@ OPTIONS = -D_CUPS_NO_DEPRECATED=1 -D_PPD_DEPRECATED=""
LIBOBJS = \
adminutil.o \
array.o \
attr.o \
auth.o \
backchannel.o \
backend.o \
conflicts.o \
custom.o \
debug.o \
dest.o \
dest-job.o \
dest-localization.o \
dest-options.o \
dir.o \
emit.o \
encode.o \
file.o \
getdevices.o \
getifaddrs.o \
getputfile.o \
globals.o \
hash.o \
http.o \
http-addr.o \
http-addrlist.o \
@@ -54,20 +59,15 @@ LIBOBJS = \
ipp-support.o \
langprintf.o \
language.o \
localize.o \
mark.o \
md5.o \
md5passwd.o \
notify.o \
options.o \
page.o \
ppd.o \
ppd-attr.o \
ppd-cache.o \
ppd-conflicts.o \
ppd-custom.o \
ppd-emit.o \
ppd-localize.o \
ppd-mark.o \
ppd-page.o \
ppd-util.o \
pwg-media.o \
request.o \
sidechannel.o \
@@ -83,9 +83,7 @@ LIBOBJS = \
TESTOBJS = \
testadmin.o \
testarray.o \
testcache.o \
testconflicts.o \
testcreds.o \
testcups.o \
testdest.o \
testfile.o \
@@ -96,8 +94,7 @@ TESTOBJS = \
testlang.o \
testppd.o \
testpwg.o \
testsnmp.o \
tlscheck.o
testsnmp.o
OBJS = \
$(LIBOBJS) \
$(TESTOBJS)
@@ -154,7 +151,6 @@ UNITTARGETS = \
testarray \
testcache \
testconflicts \
testcreds \
testcups \
testdest \
testfile \
@@ -165,8 +161,7 @@ UNITTARGETS = \
testoptions \
testppd \
testpwg \
testsnmp \
tlscheck
testsnmp
TARGETS = \
$(LIBTARGETS)
@@ -322,14 +317,13 @@ libcups.so.2: $(LIBOBJS)
libcups.2.dylib: $(LIBOBJS) $(LIBCUPSORDER)
echo Creating export list for $@...
nm -gm $(LIBOBJS) 2>/dev/null | grep "__text" | grep -v weak | \
awk '{print $$NF}' | \
grep -v -E -e '^(_cupsConnect|_cupsCharset|_cupsEncodingName|_cupsSetDefaults|_cupsSetHTTPError|_cupsUserDefault)$$' | \
nm $(LIBOBJS) 2>/dev/null | grep "T _" | awk '{print $$3}' | \
grep -v -e '^(_cupsConnect|_cupsCharset|_cupsEncodingName|_cupsSetDefaults|_cupsSetHTTPError|_cupsUserDefault|_httpWait)$$' | \
sort >t.exp
echo Linking $@...
$(DSO) $(ARCHFLAGS) $(DSOFLAGS) -o $@ \
-install_name $(libdir)/$@ \
-current_version 2.12.0 \
-current_version 2.11.0 \
-compatibility_version 2.0.0 \
-exported_symbols_list t.exp \
$(LIBOBJS) $(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) \
@@ -345,7 +339,7 @@ libcups.2.dylib: $(LIBOBJS) $(LIBCUPSORDER)
libcups.la: $(LIBOBJS)
echo Linking $@...
$(CC) $(ARCHFLAGS) $(DSOFLAGS) -o $@ $(LIBOBJS:.o=.lo) \
-rpath $(LIBDIR) -version-info 2:12 $(LIBGSSAPI) $(SSLLIBS) \
-rpath $(LIBDIR) -version-info 2:11 $(LIBGSSAPI) $(SSLLIBS) \
$(DNSSDLIBS) $(COMMONLIBS) $(LIBZ)
@@ -367,7 +361,7 @@ libcups.a: $(LIBOBJS)
libcups2.def: $(LIBOBJS) Makefile
echo Generating $@...
echo "LIBRARY libcups2" >libcups2.def
echo "VERSION 2.12" >>libcups2.def
echo "VERSION 2.11" >>libcups2.def
echo "EXPORTS" >>libcups2.def
(nm $(LIBOBJS) 2>/dev/null | grep "T _" | awk '{print $$3}'; \
echo __cups_strcpy; echo __cups_strlcat; echo __cups_strlcpy) | \
@@ -419,16 +413,6 @@ testconflicts: testconflicts.o $(LIBCUPSSTATIC)
$(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) $(COMMONLIBS) $(LIBZ)
#
# testcreds (dependency on static CUPS library is intentional)
#
testcreds: testcreds.o $(LIBCUPSSTATIC)
echo Linking $@...
$(CC) $(ARCHFLAGS) $(LDFLAGS) -o $@ testcreds.o $(LIBCUPSSTATIC) \
$(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) $(COMMONLIBS) $(LIBZ)
#
# testcups (dependency on static CUPS library is intentional)
#
@@ -555,43 +539,57 @@ 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...
#
apihelp:
echo Generating CUPS API help files...
$(RM) cupspm.xml
mxmldoc --section "Programming" --body cupspm.md \
cupspm.xml \
auth.c cups.h dest*.c encode.c http.h http*.c ipp.h ipp*.c \
options.c tls-darwin.c usersys.c util.c \
--coverimage cupspm.png \
--epub ../doc/help/cupspm.epub
mxmldoc --section "Programming" --body cupspm.md \
cupspm.xml > ../doc/help/cupspm.html
$(RM) cupspm.xml
mxmldoc --section "Programming" --title "Administration APIs" \
mxmldoc --section "Programming" \
--title "Introduction to CUPS Programming" \
--css ../doc/cups-printable.css \
--header api-admin.header --intro api-admin.shtml \
api-admin.xml \
adminutil.c adminutil.h getdevices.c >../doc/help/api-admin.html
$(RM) api-admin.xml
--header api-overview.header --intro api-overview.shtml \
>../doc/help/api-overview.html
mxmldoc --section "Programming" --title "Array API" \
--css ../doc/cups-printable.css \
--header api-array.header --intro api-array.shtml \
api-array.xml \
array.h array.c >../doc/help/api-array.html
mxmldoc --tokens help/api-array.html api-array.xml >../doc/help/api-array.tokens
$(RM) api-array.xml
mxmldoc --section "Programming" --title "CUPS API" \
--css ../doc/cups-printable.css \
--header api-cups.header --intro api-cups.shtml \
api-cups.xml \
cups.h pwg.h adminutil.c dest*.c language.c notify.c \
options.c pwg-media.c tempfile.c usersys.c \
util.c >../doc/help/api-cups.html
mxmldoc --tokens help/api-cups.html api-cups.xml >../doc/help/api-cups.tokens
$(RM) api-cups.xml
mxmldoc --section "Programming" --title "File and Directory APIs" \
--css ../doc/cups-printable.css \
--header api-filedir.header --intro api-filedir.shtml \
api-filedir.xml \
file.h file.c dir.h dir.c >../doc/help/api-filedir.html
mxmldoc --tokens api-filedir.xml >../doc/help/api-filedir.tokens
$(RM) api-filedir.xml
mxmldoc --section "Programming" --title "PPD API (DEPRECATED)" \
--css ../doc/cups-printable.css \
--header api-ppd.header --intro api-ppd.shtml \
api-ppd.xml ppd.h ppd-*.c >../doc/help/api-ppd.html
api-ppd.xml \
ppd.h attr.c conflicts.c custom.c emit.c localize.c mark.c page.c \
ppd.c >../doc/help/api-ppd.html
mxmldoc --tokens help/api-ppd.html api-ppd.xml >../doc/help/api-ppd.tokens
$(RM) api-ppd.xml
mxmldoc --section "Programming" --title "HTTP and IPP APIs" \
--css ../doc/cups-printable.css \
--header api-httpipp.header --intro api-httpipp.shtml \
api-httpipp.xml \
http.h ipp.h auth.c getdevices.c getputfile.c encode.c \
http.c http-addr.c http-support.c ipp.c ipp-support.c \
md5passwd.c request.c >../doc/help/api-httpipp.html
mxmldoc --tokens help/api-httpipp.html api-httpipp.xml >../doc/help/api-httpipp.tokens
$(RM) api-httpipp.xml
mxmldoc --section "Programming" \
--title "Filter and Backend Programming" \
--css ../doc/cups-printable.css \
@@ -599,14 +597,61 @@ apihelp:
api-filter.xml \
backchannel.c backend.h backend.c sidechannel.c sidechannel.h \
>../doc/help/api-filter.html
mxmldoc --tokens help/api-filter.html api-filter.xml >../doc/help/api-filter.tokens
$(RM) api-filter.xml
framedhelp:
echo Generating CUPS API help files...
mxmldoc --framed api-overview \
--section "Programming" \
--title "Introduction to CUPS Programming" \
--css ../doc/cups-printable.css \
--header api-overview.header --intro api-overview.shtml
mxmldoc --framed api-array \
--section "Programming" --title "Array API" \
--css ../doc/cups-printable.css \
--header api-array.header --intro api-array.shtml \
array.h array.c
mxmldoc --framed api-cups \
--section "Programming" --title "CUPS API" \
--css ../doc/cups-printable.css \
--header api-cups.header --intro api-cups.shtml \
cups.h adminutil.c dest*.c language.c notify.c \
options.c tempfile.c usersys.c \
util.c
mxmldoc --framed api-filedir \
--section "Programming" --title "File and Directory APIs" \
--css ../doc/cups-printable.css \
--header api-filedir.header --intro api-filedir.shtml \
file.h file.c dir.h dir.c
mxmldoc --framed api-ppd \
--section "Programming" --title "PPD API (DEPRECATED)" \
--css ../doc/cups-printable.css \
--header api-ppd.header --intro api-ppd.shtml \
ppd.h attr.c conflicts.c custom.c emit.c localize.c mark.c \
page.c ppd.c
mxmldoc --framed api-httpipp \
--section "Programming" --title "HTTP and IPP APIs" \
--css ../doc/cups-printable.css \
--header api-httpipp.header --intro api-httpipp.shtml \
http.h ipp.h auth.c getdevices.c getputfile.c encode.c \
http.c http-addr.c http-support.c ipp.c ipp-support.c \
md5passwd.c request.c
mxmldoc --framed api-filter \
--section "Programming" \
--title "Filter and Backend Programming" \
--css ../doc/cups-printable.css \
--header api-filter.header --intro api-filter.shtml \
backchannel.c backend.h backend.c sidechannel.c sidechannel.h
#
# Lines of code computation...
#
sloc:
echo "libcupslite: \c"
sloccount $(LITEOBJS:.o=.c) 2>/dev/null | grep "Total Physical" | awk '{print $$9}'
echo "libcups: \c"
sloccount $(LIBOBJS:.o=.c) 2>/dev/null | grep "Total Physical" | awk '{print $$9}'
@@ -617,3 +662,8 @@ sloc:
include Dependencies
tls.o: tls-darwin.c tls-gnutls.c tls-sspi.c
#
# End of "$Id: Makefile 12032 2014-07-15 20:37:32Z msweet $".
#
+27 -81
Ver Arquivo
@@ -1,14 +1,16 @@
/*
* "$Id: adminutil.c 11598 2014-02-18 18:58:19Z msweet $"
*
* Administration utility API definitions for CUPS.
*
* Copyright 2007-2016 by Apple Inc.
* Copyright 2007-2014 by Apple Inc.
* Copyright 2001-2007 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
* missing or damaged, see the license at "http://www.cups.org/".
* file is missing or damaged, see the license at "http://www.cups.org/".
*
* This file is subject to the Apple OS-Developed Software exception.
*/
@@ -18,7 +20,6 @@
*/
#include "cups-private.h"
#include "ppd.h"
#include "adminutil.h"
#include <fcntl.h>
#include <sys/stat.h>
@@ -831,7 +832,7 @@ cupsAdminExportSamba(
* The returned settings should be freed with cupsFreeOptions() when
* you are done with them.
*
* @since CUPS 1.3/macOS 10.5@
* @since CUPS 1.3/OS X 10.5@
*/
int /* O - 1 on success, 0 on failure */
@@ -1147,7 +1148,7 @@ cupsAdminGetServerSettings(
/*
* 'cupsAdminSetServerSettings()' - Set settings on the server.
*
* @since CUPS 1.3/macOS 10.5@
* @since CUPS 1.3/OS X 10.5@
*/
int /* O - 1 on success, 0 on failure */
@@ -1174,7 +1175,6 @@ 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,13 +1188,11 @@ 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 */
int old_share_printers, /* Share local printers */
old_remote_admin, /* Remote administration allowed? */
old_remote_any, /* Remote access from anywhere? */
old_user_cancel_any, /* Cancel-job policy set? */
old_debug_logging; /* LogLevel debug set? */
cups_option_t *cupsd_settings, /* New settings */
@@ -1260,12 +1258,12 @@ cupsAdminSetServerSettings(
if ((val = cupsGetOption(CUPS_SERVER_REMOTE_ANY, cupsd_num_settings,
cupsd_settings)) != NULL)
old_remote_any = atoi(val);
remote_any = atoi(val);
else
old_remote_any = 0;
remote_any = 0;
DEBUG_printf(("1cupsAdminSetServerSettings: old remote_any=%d",
old_remote_any));
remote_any));
if ((val = cupsGetOption(CUPS_SERVER_SHARE_PRINTERS, cupsd_num_settings,
cupsd_settings)) != NULL)
@@ -1311,23 +1309,12 @@ cupsAdminSetServerSettings(
DEBUG_printf(("1cupsAdminSetServerSettings: debug_logging=%d",
debug_logging));
if ((val = cupsGetOption(CUPS_SERVER_REMOTE_ANY, num_settings, settings)) != NULL)
{
if ((val = cupsGetOption(CUPS_SERVER_REMOTE_ANY, num_settings,
settings)) != NULL)
remote_any = atoi(val);
if (remote_any == old_remote_any)
{
/*
* No change to this setting...
*/
remote_any = -1;
}
}
else
remote_any = -1;
DEBUG_printf(("1cupsAdminSetServerSettings: remote_any=%d", remote_any));
DEBUG_printf(("1cupsAdminSetServerSettings: remote_any=%d",
remote_any));
if ((val = cupsGetOption(CUPS_SERVER_REMOTE_ADMIN, num_settings,
settings)) != NULL)
@@ -1414,14 +1401,12 @@ 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;
@@ -1442,7 +1427,7 @@ cupsAdminSetServerSettings(
while (cupsFileGetConf(cupsd, line, sizeof(line), &value, &linenum))
{
if ((!_cups_strcasecmp(line, "Port") || !_cups_strcasecmp(line, "Listen")) &&
(remote_admin >= 0 || remote_any >= 0 || share_printers >= 0))
(remote_admin >= 0 || remote_any > 0 || share_printers >= 0))
{
if (!wrote_port_listen)
{
@@ -1565,10 +1550,8 @@ cupsAdminSetServerSettings(
indent += 2;
if (!strcmp(value, "/admin"))
in_admin_location = 1;
else if (!strcmp(value, "/admin/conf"))
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;
@@ -1610,25 +1593,8 @@ 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))
(remote_admin >= 0 || remote_any > 0 || share_printers >= 0))
{
wrote_root_location = 1;
@@ -1653,7 +1619,6 @@ cupsAdminSetServerSettings(
in_admin_location = 0;
in_conf_location = 0;
in_log_location = 0;
in_root_location = 0;
cupsFilePuts(temp, "</Location>\n");
@@ -1731,7 +1696,7 @@ cupsAdminSetServerSettings(
in_cancel_job = 0;
}
else if ((((in_admin_location || in_conf_location || in_root_location) &&
(remote_admin >= 0 || remote_any >= 0)) ||
(remote_admin >= 0 || remote_any > 0)) ||
(in_root_location && share_printers >= 0)) &&
(!_cups_strcasecmp(line, "Allow") || !_cups_strcasecmp(line, "Deny") ||
!_cups_strcasecmp(line, "Order")))
@@ -1823,7 +1788,7 @@ cupsAdminSetServerSettings(
}
if (!wrote_port_listen &&
(remote_admin >= 0 || remote_any >= 0 || share_printers >= 0))
(remote_admin >= 0 || remote_any > 0 || share_printers >= 0))
{
if (remote_admin > 0 || remote_any > 0 || share_printers > 0)
{
@@ -1844,7 +1809,7 @@ cupsAdminSetServerSettings(
}
if (!wrote_root_location &&
(remote_admin >= 0 || remote_any >= 0 || share_printers >= 0))
(remote_admin >= 0 || remote_any > 0 || share_printers >= 0))
{
if (remote_admin > 0 && share_printers > 0)
cupsFilePuts(temp,
@@ -1902,25 +1867,6 @@ 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"
@@ -2021,14 +1967,9 @@ cupsAdminSetServerSettings(
old_remote_admin ? "1" : "0",
cupsd_num_settings, &cupsd_settings);
if (remote_any >= 0)
cupsd_num_settings = cupsAddOption(CUPS_SERVER_REMOTE_ANY,
remote_any ? "1" : "0",
cupsd_num_settings, &cupsd_settings);
else
cupsd_num_settings = cupsAddOption(CUPS_SERVER_REMOTE_ANY,
old_remote_any ? "1" : "0",
cupsd_num_settings, &cupsd_settings);
cupsd_num_settings = cupsAddOption(CUPS_SERVER_REMOTE_ANY,
remote_any ? "1" : "0",
cupsd_num_settings, &cupsd_settings);
if (share_printers >= 0)
cupsd_num_settings = cupsAddOption(CUPS_SERVER_SHARE_PRINTERS,
@@ -2382,3 +2323,8 @@ write_option(cups_file_t *dstfp, /* I - PPD file */
cupsFilePrintf(dstfp, "*JCLCloseUI: *%s\n\n", name);
}
/*
* End of "$Id: adminutil.c 11598 2014-02-18 18:58:19Z msweet $".
*/
+16 -28
Ver Arquivo
@@ -1,16 +1,18 @@
/*
* Administration utility API definitions for CUPS.
* "$Id: adminutil.h 10996 2013-05-29 11:51:34Z msweet $"
*
* Copyright 2007-2016 by Apple Inc.
* Copyright 2001-2007 by Easy Software Products.
* Administration utility API definitions for CUPS.
*
* 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
* missing or damaged, see the license at "http://www.cups.org/".
* Copyright 2007-2012 by Apple Inc.
* Copyright 2001-2007 by Easy Software Products.
*
* This file is subject to the Apple OS-Developed Software exception.
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
* which should have been included with this file. If this file is
* file is missing or damaged, see the license at "http://www.cups.org/".
*
* This file is subject to the Apple OS-Developed Software exception.
*/
#ifndef _CUPS_ADMINUTIL_H_
@@ -40,23 +42,11 @@ extern "C" {
# define CUPS_SERVER_DEBUG_LOGGING "_debug_logging"
# define CUPS_SERVER_REMOTE_ADMIN "_remote_admin"
# define CUPS_SERVER_REMOTE_ANY "_remote_any"
/*# define CUPS_SERVER_REMOTE_PRINTERS "_remote_printers"*/
# define CUPS_SERVER_SHARE_PRINTERS "_share_printers"
# define CUPS_SERVER_USER_CANCEL_ANY "_user_cancel_any"
/*
* Types and structures...
*/
typedef void (*cups_device_cb_t)(const char *device_class,
const char *device_id, const char *device_info,
const char *device_make_and_model,
const char *device_uri,
const char *device_location, void *user_data);
/* Device callback
* @since CUPS 1.4/macOS 10.6@ */
/*
* Functions...
*/
@@ -79,15 +69,13 @@ extern int cupsAdminSetServerSettings(http_t *http,
cups_option_t *settings)
_CUPS_API_1_3;
extern ipp_status_t cupsGetDevices(http_t *http, int timeout,
const char *include_schemes,
const char *exclude_schemes,
cups_device_cb_t callback,
void *user_data) _CUPS_API_1_4;
# ifdef __cplusplus
}
# endif /* __cplusplus */
#endif /* !_CUPS_ADMINUTIL_H_ */
/*
* End of "$Id: adminutil.h 10996 2013-05-29 11:51:34Z msweet $".
*/
-96
Ver Arquivo
@@ -1,96 +0,0 @@
<!--
Administrative API documentation for CUPS.
Copyright 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/".
-->
<h2 class="title"><a name="OVERVIEW">Overview</a></h2>
<p>The administrative APIs provide convenience functions to perform certain administrative functions with the CUPS scheduler.</p>
<blockquote><b>Note:<b>
<p>Administrative functions normally require administrative privileges to execute and must not be used in ordinary user applications!</p>
</blockquote>
<h3><a name="SETTINGS">Scheduler Settings</a></h3>
<p>The <a href="#cupsAdminGetServerSettings"><code>cupsAdminGetServerSettings</code></a> and <a href="#cupsAdminSetServerSettings"><code>cupsAdminSetServerSettings</code></a> functions allow you to get and set simple directives and their values, respectively, in the <var>cupsd.conf</var> file for the CUPS scheduler. Settings are stored in CUPS option arrays which provide a simple list of string name/value pairs. While any simple <var>cupsd.conf</var> directive name can be specified, the following convenience names are also defined to control common complex directives:</p>
<ul>
<li><code>CUPS_SERVER_DEBUG_LOGGING</code></li>: For <code>cupsAdminGetServerSettings</code>, a value of "1" means that the <code>LogLevel</code> directive is set to <code>debug</code> or <code>debug2</code> while a value of "0" means it is set to any other value. For <code>cupsAdminSetServerSettings</code> a value of "1" sets the <code>LogLeveL</code> to <code>debug</code> while a value of "0" sets it to <code>warn</code>.</li>
<li><code>CUPS_SERVER_REMOTE_ADMIN</code></li>: A value of "1" specifies that administrative requests are accepted from remote addresses while "0" specifies that requests are only accepted from local addresses (loopback interface and domain sockets).</li>
<li><code>CUPS_SERVER_REMOTE_ANY</code></li>: A value of "1" specifies that requests are accepts from any address while "0" specifies that requests are only accepted from the local subnet (when sharing is enabled) or local addresses (loopback interface and domain sockets).</li>
<li><code>CUPS_SERVER_SHARE_PRINTERS</code></li>: A value of "1" specifies that printer sharing is enabled for selected printers and remote requests are accepted while a value of "0" specifies that printer sharing is disables and remote requests are not accepted.</li>
<li><code>CUPS_SERVER_USER_CANCEL_ANY</code></li>: A value of "1" specifies that the default security policy allows any user to cancel any print job, regardless of the owner. A value of "0" specifies that only administrative users can cancel other user's jobs.</li>
</ul>
<blockquote><b>Note:</b>
<p>Changing settings will restart the CUPS scheduler.</p>
<p>When printer sharing or the web interface are enabled, the scheduler's launch-on-demand functionality is effectively disabled. This can affect power usage, system performance, and the security profile of a system.</p>
</blockquote>
<p>The recommended way to make changes to the <var>cupsd.conf</var> is to first call <a href="#cupsAdminGetServerSettings"><code>cupsAdminGetServerSettings</code></a>, make any changes to the returned option array, and then call <a href="#cupsAdminSetServerSettings"><code>cupsAdminSetServerSettings</code></a> to save those settings. For example, to enable the web interface:</p>
<pre class="example">
#include &lt;cups/cups.h&gt;
#include &lt;cups/adminutil.h&gt;
void
enable_web_interface(void)
{
int num_settings = 0; /* Number of settings */
cups_option_t *settings = NULL; /* Settings */
if (!<a href="#cupsAdminGetServerSettings">cupsAdminGetServerSettings</a>(CUPS_HTTP_DEFAULT, &amp;num_settings, &amp;settings))
{
fprintf(stderr, "ERROR: Unable to get server settings: %s\n", cupsLastErrorString());
return;
}
num_settings = <a href="api-cups.html#cupsAddOption">cupsAddOption</a>("WebInterface", "Yes", num_settings, &amp;settings);
if (!<a href="#cupsAdminSetServerSettings">cupsAdminSetServerSettings</a>(CUPS_HTTP_DEFAULT, num_settings, settings))
{
fprintf(stderr, "ERROR: Unable to set server settings: %s\n", cupsLastErrorString());
}
<a href="api-cups.html#cupsFreeOptions">cupsFreeOptions</a>(num_settings, settings);
}
</pre>
<h3><a name="DEVICES">Devices</a></h3>
<p>Printers can be discovered through the CUPS scheduler using the <a href="#cupsGetDevices"><code>cupsGetDevices</code></a> API. Typically this API is used to locate printers to add the the system. Each device that is found will cause a supplied callback function to be executed. For example, to list the available printer devices that can be found within 30 seconds:</p>
<pre class="example">
#include &lt;cups/cups.h&gt;
#include &lt;cups/adminutil.h&gt;
void
get_devices_cb(
const char *device_class, /* I - Class */
const char *device_id, /* I - 1284 device ID */
const char *device_info, /* I - Description */
const char *device_make_and_model, /* I - Make and model */
const char *device_uri, /* I - Device URI */
const char *device_location, /* I - Location */
void *user_data) /* I - User data */
{
puts(device_uri);
}
void
show_devices(void)
{
<a href="#cupsGetDevices">cupsGetDevices</a>(CUPS_HTTP_DEFAULT, 30, NULL, NULL, get_devices_cb, NULL);
}
</pre>
+2
Ver Arquivo
@@ -1,4 +1,6 @@
<!--
"$Id: api-array.header 7266 2008-01-29 02:15:29Z mike $"
Array API header for CUPS.
Copyright 2008-2011 by Apple Inc.

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