Comparar commits

..

1250 Commits

Autor SHA1 Mensagem Data
Michael Sweet 0f2f21af96 Re-add gpg command. 2016-06-24 11:43:35 -04:00
Michael Sweet 45b043725a Prep for 2.2b2. 2016-06-24 11:13:33 -04:00
Michael Sweet 8e03cb2b01 Update localization files. 2016-06-24 11:08:23 -04:00
Michael Sweet 08d027c3b6 Reword the IdleExitTimeout description... 2016-06-21 14:00:08 -04:00
Michael R Sweet f689a8a955 Merge pull request #4841 from computersforpeace/doc
Document cupsd.conf's IdleExitTimeout
2016-06-21 13:57:27 -04:00
Michael Sweet 34e36d9102 Update credits list. 2016-06-21 13:56:13 -04:00
Michael Sweet 0b64fc4599 Changelog update. 2016-06-21 11:59:58 -04:00
Michael Sweet 1166bf5866 Do some cleanup for the on-demand support - remove old launchd support (no
longer needed), naming/style updates, fix compiler warnings.
2016-06-21 11:57:03 -04:00
Michael R Sweet 6ee5217845 Merge pull request #4825 from computersforpeace/upstart
Add Upstart socket activation support
2016-06-21 11:09:37 -04:00
Michael Sweet d48749331d Fix some typos (MacmacOS, etc.) that slipped in due to inconsistent usage. 2016-06-21 07:11:44 -04:00
Michael R Sweet b2e6c32580 CUPS 2.2 is part of macOS 10.12. 2016-06-20 15:27:01 -04:00
Michael R Sweet 8072030b3c Update all references to OS X to macOS. 2016-06-20 15:23:25 -04:00
Michael Sweet 9e5e2ceff5 Add support for Let's Encrypt certs. 2016-06-20 12:47:57 -04:00
Brian Norris c4412c12a7 Document cupsd.conf's IdleExitTimeout 2016-06-15 10:11:20 -07:00
Michael Sweet 6dae042496 Remove source directory. 2016-06-14 13:52:14 -04:00
Michael Sweet 3cf02fdb08 Use "vN.N.N" for the tag name starting in 2.2. 2016-06-14 13:49:47 -04:00
Michael Sweet 1b87331da5 Push the created tag. 2016-06-14 13:48:33 -04:00
Michael Sweet 42e3781598 Fix typos. 2016-06-14 13:42:19 -04:00
Michael Sweet eda95e0fab New makesrcdist script. 2016-06-14 13:31:01 -04:00
Michael Sweet e9c38c480b Changelog. 2016-06-08 14:54:20 -04:00
Michael R Sweet b9370705d8 Merge pull request #4836 from bigon/dnssd
Fix malformed device-id for printers found by dnssd
2016-06-08 14:49:35 -04:00
Laurent Bigonville 14a71491b6 Fix malformed device-id for printers found by dnssd
Add missing semicolon between printer model and command

Closes: #4835
2016-06-08 08:59:33 +02:00
Michael Sweet 63c5db7d32 Fix EPM packaging file. 2016-06-02 12:08:37 -04:00
Michael Sweet 3539b9d3bb Bump version. 2016-05-31 14:05:53 -04:00
Michael Sweet 83d8789dc6 Exit with keep-alive instead of doing a in-place restart when on-demand
launching is in use (Issue #4760)
2016-05-31 13:42:28 -04:00
Michael Sweet 329cfeb013 Fix compiler warning. 2016-05-30 19:47:39 -04:00
Michael Sweet ad7daa2593 Update private threading API. 2016-05-30 19:45:17 -04:00
Michael Sweet 34facc5ce0 Fix compiler warnings. 2016-05-30 19:41:07 -04:00
Michael Sweet 29cb7da9b9 Merge branch 'master' of https://github.com/apple/cups 2016-05-30 19:11:42 -04:00
Michael Sweet 3bd2e63087 Fix typo in cupsctl man page (PR #4829) 2016-05-30 19:10:06 -04:00
Michael R Sweet eee24e7df5 Update configure script. 2016-05-27 16:49:59 -04:00
Brian Norris 441de8b2e0 support Upstart socket activation
Inspired by code here:

https://bugs.launchpad.net/upstart/+bug/1276713

With significant refactoring and bug-fixing.

Notably, Upstart only supports passing a single file descriptor via
UPSTART_FDS, so systems that want to use this support will need to
configure CUPS appropriately in order to use this.
2016-05-27 13:07:05 -07:00
Brian Norris 26c14fa6e1 Refactor common on-demand socket setup code
This really can be in its own function, to avoid duplicating the same
code for various init methods.
2016-05-27 13:07:01 -07:00
Brian Norris c187d9abe7 Factor out generic 'HAVE_ONDEMAND' macro flag
HAVE_SYSTEMD and HAVE_LAUNCHD use very similar code for on-demand
launching of cupsd, and if we want to add one more (e.g., upstart) it's
easier to just use a single common flag: HAVE_ONDEMAND.
2016-05-27 13:06:58 -07:00
Michael Sweet d58c26292f Update copyrights on all man pages. 2016-05-26 08:57:11 -04:00
Michael R Sweet b9574f5a28 Merge pull request #4818 from jschwender/master
add some missing translation
2016-05-26 07:21:50 -04:00
Michael R Sweet 681399ba79 Merge pull request #4822 from zdohnal/lpinfo-username
Update lpinfo.man - removed -U username
2016-05-26 07:20:29 -04:00
Michael Sweet bdbfacc73e Support POSIX option processing (Issue #4813) 2016-05-25 19:33:42 -04:00
Michael Sweet 9e6d7a0f87 Improve performance of web interface with large numbers of jobs (Issue #3819)
Also re-work web interface to not allow the order to be changed (since that
will negatively impact performance) but instead add first/last buttons to the
pager.
2016-05-25 17:33:36 -04:00
Michael Sweet dffa3c7438 Add new administrative APis help. 2016-05-25 11:55:27 -04:00
Michael Sweet 34016d2a5d httpAddrConnect2 could get into an infinite loop for socket errors. 2016-05-23 22:13:54 -04:00
Michael R Sweet 0eff12fa6b Fix compile errors. 2016-05-18 11:54:04 -07:00
Michael Sweet 08d56b1fb9 Implement TrustOnFirstUse option and CRLs (GNU TLS) to allow for printing only
to trusted printers/servers (<rdar://problem/25711658>)

This change also makes the default value of AllowExpiredCerts NO instead of YES.

Finally, add support for loading most client.conf options (NOT ServerName or
User) from /Library/Printers/org.cups.PrintingPrefs.plist on OS X.
2016-05-18 14:42:37 -04:00
Michael Sweet 71d227bf28 The scheduler now advertises PWG Raster attributes for IPP Everywhere clients
(Issue #4428)
2016-05-16 19:54:35 -04:00
Michael Sweet 75c86da7a7 The scheduler now logs informational messages for jobs at LogLevel "info"
(Issue #4815)
2016-05-16 09:39:10 -04:00
Michael Sweet 6eb98aee93 The scheduler now uses the getgrouplist function when available (Issue #4611) 2016-05-13 12:11:52 -04:00
Michael Sweet 92de7dd269 Drop old IPP Everywhere self-certification project from VC++ directory.
Update README for Windows.
2016-05-13 10:47:40 -04:00
Michael Sweet 11b24fee62 Fix time_at_xxx substitutions in jobs template (Issue #4041) 2016-05-11 15:24:45 -04:00
Michael Sweet a6fd57bc66 Rename "job-actual-printer-uri" to "job-printer-uri-actual". 2016-05-11 15:05:40 -04:00
Michael Sweet 8d7608ec3a Add reference to IANA registry for printer-state-reasons values. 2016-05-11 14:47:04 -04:00
Michael Sweet c6e4e71234 Fix printing of multiple files to raw queues (Issue #4782) 2016-05-11 11:25:37 -04:00
Michael Sweet e0f489cd21 Fix Hold-New-Jobs implementation (Issue #4767) 2016-05-11 10:35:53 -04:00
Michael Sweet 1e56f93b01 Add quotes around DYLD_INSERT_LIBRARIES value. 2016-05-11 10:34:08 -04:00
Michael Sweet 423e6ddbf3 Update man pages. 2016-05-11 10:33:53 -04:00
zdohnal ce6198ad7c Update lpinfo.man - removed -U username 2016-05-09 13:48:56 +02:00
Michael Sweet 40df01c1b5 Add common options to lp/lpr man pages (Issue #4794) 2016-05-02 18:58:42 -04:00
Michael Sweet 91f7a0f3d9 Changelog. 2016-05-02 18:02:31 -04:00
Michael Sweet abc9d50f97 Add Brazilian Portuguese localization (Issue #4796) 2016-05-02 18:01:42 -04:00
Michael Sweet ef8c0810a4 Update localization files. 2016-05-02 17:27:01 -04:00
Michael Sweet 30ea77599b Deal with duplicate finishing-template values due to templates for different
media sizes.
2016-05-02 17:07:54 -04:00
Michael Sweet c08865231f Add support for finishings and finishings-col.finishing-template. 2016-05-02 17:03:56 -04:00
Michael Sweet 6fb588e01a Stagger connect calls by 100ms to avoid "confusing" printers and/or the network
stack.

Add a socket-static target for testing.
2016-05-02 13:03:47 -04:00
jschwender 4fcc17293b Update choose-device.tmpl 2016-04-29 19:10:11 +02:00
jschwender c7e7d55529 Update modify-printer.tmpl 2016-04-29 19:08:55 +02:00
jschwender 091b6ecbda Update choose-device.tmpl 2016-04-29 19:04:39 +02:00
Michael R Sweet d928965bc2 Merge pull request #4814 from jschwender/master
updated, more complete german translation
2016-04-24 11:19:04 -04:00
jschwender 88d45155d6 version was hardcoded 2016-04-23 11:29:15 +02:00
root 7744ab5957 updated, more complete german translation 2016-04-22 14:15:35 +02:00
Michael R Sweet f7b064491c Merge pull request #4792 from OdyX/fix-spelling-error-in-ipp-var
Fix spelling error in 'returning'
2016-04-21 16:39:20 -04:00
Michael R Sweet 52df502b7d Merge pull request #4807 from OdyX/fix-spanish-gerunds
Fix spanish gerunds in index.html
2016-04-21 16:38:49 -04:00
Michael R Sweet 5558a2e267 PR #4808: Fix builds without Avahi or mDNSResponder. 2016-04-21 16:21:54 -04:00
Michael Sweet de8c34f8bd Check for newer Security framework header version to avoid compiler error. 2016-04-19 15:22:33 -04:00
Santiago Vila 8457264a12 Fix spanish gerunds in index.html
Bug-Debian: https://bugs.debian.org/821788
2016-04-19 19:23:09 +02:00
Michael Sweet 6b4bf984e5 Add remaining binaries that are built by the makefiles.
Fix compiler warning.
2016-04-15 11:35:57 -04:00
Michael Sweet 68c4690a3b Add more targets covering the CGIs and filters.
Fix some build warnings.
2016-04-15 10:31:13 -04:00
Michael R Sweet e00dad7cd7 Merge branch 'master' of https://github.com/apple/cups 2016-04-15 07:15:56 -04:00
Michael R Sweet c82a6251a5 Save work on adding all unit tests to Xcode project. 2016-04-15 07:14:51 -04:00
Michael Sweet b052deedae Fix some localization issues with Norwegian. 2016-04-14 12:09:35 -04:00
Michael Sweet e7a78c92a6 Move cupsGetDevices to adminutil.h since it isn't a regular application API. 2016-04-14 08:44:22 -04:00
Michael R Sweet 2274d26beb Fix some bugs in the new server-side TLS support code. 2016-04-13 16:55:07 -04:00
Michael Sweet 68a36223d0 Switch USB implementation to handle iterating with multiple interfaces. 2016-04-13 12:45:44 -04:00
Michael Sweet c6a37af863 Ignore all .git* files too. 2016-04-13 12:30:24 -04:00
Michael Sweet 2c913ee0fc Omit extra files from archives. 2016-04-13 12:28:09 -04:00
Michael Sweet 2434317389 Drop SVN stuff from version. 2016-04-13 11:43:34 -04:00
Michael Sweet d825017aa0 Drop API help for CGI, MIME, and PPD compiler libraries.
Don't uninstall public headers, these are all now private headers.
2016-04-12 07:00:21 -04:00
Michael Sweet 27453efb87 Move CGI, PPD compiler, and MIME heades to the private headers directory. 2016-04-12 06:52:27 -04:00
Michael Sweet e1f8967599 Remove unused files or files that are being developed in a separate repository. 2016-04-12 06:45:12 -04:00
Michael R Sweet 709a49805d Ignore GNU gettext backup (.bck) files. 2016-04-11 20:31:03 -04:00
Michael R Sweet 7abd22c180 Update localization files. 2016-04-11 20:30:36 -04:00
Michael R Sweet 258bf33c02 Ignore Xcode docset "tokens" files. 2016-04-11 20:29:32 -04:00
Michael R Sweet 503b54c930 Remove all of the Subversion keywords from various source files. 2016-04-11 20:28:30 -04:00
Michael R Sweet e34d1ec4b9 Work around undocumented side-effect of SecItemAdd... 2016-04-11 18:36:42 -04:00
Michael R Sweet fc4bbb58d6 Update cert code to not require a keychain. Default keychain works on all platforms... 2016-04-11 18:35:25 -04:00
Michael R Sweet 558883c6dd Add missing prototypes/definitions and do a first pass at fixing up the self-signed cert code. 2016-04-11 17:37:14 -04:00
Michael R Sweet b0c14d0a51 Merge branch 'master' of https://github.com/apple/cups 2016-04-11 17:16:32 -04:00
Michael R Sweet 1a7059a095 Created certificate should be RSA, not ECDSA. 2016-04-11 17:16:17 -04:00
Michael Sweet a395099703 Fix localization of some media sizes (Issue #4800) 2016-04-08 17:11:40 -04:00
Michael R Sweet fcea7df43c Add debug info on failed keychain open. 2016-04-07 15:11:42 -04:00
Michael R Sweet bb94e24caf Cleanup cups-lpd - remove unused arguments. 2016-04-07 15:06:58 -04:00
Michael R Sweet 879ee463ea Fix default TMPDIR path. 2016-04-07 15:05:35 -04:00
Michael Sweet f358533bb9 Merge branch 'master' of https://github.com/apple/cups 2016-04-06 14:04:44 -04:00
Michael Sweet b73a566ce7 Save changes. 2016-04-06 14:04:35 -04:00
Michael R Sweet 515c3db932 Do not compress print jobs by default except for certain raster formats. 2016-04-04 15:13:08 -04:00
Michael Sweet 9688061e94 Add iOS target, config.h tweaks, and dest.c tweaks for builds. 2016-03-31 22:55:51 -04:00
Michael R Sweet 233715a8d3 The scheduler did not handle out-of-disk situations gracefully (Issue #4742) 2016-03-29 10:05:12 -04:00
Michael R Sweet f80e6f383c Documentation changes (Issue #4781) 2016-03-29 09:59:55 -04:00
Didier Raboud 138d4f6d54 Fix spelling error in 'returning' 2016-03-25 10:48:06 +01:00
Michael R Sweet 5eb7439254 The LPD mini-daemon now detects invalid UTF-8 sequences in job, document, and
user names (Issue #4748)
2016-03-24 18:55:20 -04:00
Michael R Sweet 21f92a3cfd Silence compiler warning. 2016-03-24 18:53:53 -04:00
Michael R Sweet 508de6790c The debug strings table for mime type operations was out of sync with the
enumeration (PR #4787)
2016-03-24 17:59:09 -04:00
Michael R Sweet f73476aed9 Drop unused definitions. 2016-03-24 17:55:28 -04:00
Michael R Sweet 1a00f9bf9e The ipptool program did not correctly report uriScheme values in plist output
(Issue #4785)
2016-03-24 17:50:56 -04:00
Michael R Sweet 2c9bf31eaf The ipptool program truncated values at 8k (Issue #4786) 2016-03-24 17:45:11 -04:00
Michael R Sweet 09534eb005 Ignore patches subdirectory. 2016-03-24 17:35:38 -04:00
Michael R Sweet b89522333d Add USB quirk rule for Lexmark C540n (Issue #4778) 2016-03-24 17:29:58 -04:00
Michael R Sweet 5925ce336b Add USB quirk rule for Xerox WorkCentre 3220 (Issue #4789) 2016-03-24 17:26:54 -04:00
Michael R Sweet 961a8a3730 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)
2016-03-24 17:18:56 -04:00
Michael Sweet 807315e64e Changes to eliminate warnings from new Clang. 2016-03-23 18:52:56 -04:00
Michael R Sweet 6ef28fe572 Merge pull request #4788 from leoarnold/mailmap
Add a mailmap for correct work attribution
2016-03-17 19:26:30 -04:00
Leo Arnold 110be0221b Add a mailmap for correct work attribution
This MailMap will ensure correct GitHub attribution for Michael R Sweet
2016-03-17 23:26:27 +01:00
Michael Sweet 8cd7e4da2b Fix markdown for some of the examples... 2016-03-17 15:45:31 -04:00
Michael Sweet d8ace9c1a6 Update CONTRIBUTING file to use markdown syntax.
Add that Github pull requests can be used to submit changes as well.
2016-03-17 15:42:38 -04:00
Michael Sweet 9d7291518c Remove obsolete files and ignore Xcode files. 2016-03-17 15:24:36 -04:00
Michael Sweet c7a9698e0b Ignore all generated files. 2016-03-15 12:20:40 -04:00
Michael Sweet d9f356c545 Add configure script and .gitignore file. 2016-03-15 11:06:30 -04:00
msweet f13db65e41 The IPP backend now continues on to the next job when the remote server/printer
puts the job on hold (<rdar://problem/24858548>)

A 30 second delay (currently not configurable) is provided to allow for
canceling the job locally.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@13133 a1ca3aef-8c08-0410-bb20-df032aa958be
2016-03-10 17:23:01 +00:00
msweet 5a4c3fcf03 Fix cancel of jobs with multiple documents (<rdar://problem/24854834>)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@13131 a1ca3aef-8c08-0410-bb20-df032aa958be
2016-03-10 17:01:08 +00:00
msweet cd1a83eac8 The scheduler did not return non-shared printers to local clients unless
they connected to the domain socket (<rdar://problem/24566996>)



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@13128 a1ca3aef-8c08-0410-bb20-df032aa958be
2016-03-09 15:45:21 +00:00
msweet 8ddb0f601e Fix builds on Linux.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@13127 a1ca3aef-8c08-0410-bb20-df032aa958be
2016-03-09 14:35:57 +00:00
msweet 788d7a15c5 Remove all remnants of the old private PWG APIs and structures.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@13124 a1ca3aef-8c08-0410-bb20-df032aa958be
2016-03-08 21:16:52 +00:00
msweet f7c7eff771 Update message catalogs.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@13123 a1ca3aef-8c08-0410-bb20-df032aa958be
2016-03-08 21:16:32 +00:00
msweet ac7c59abca The scheduler now reads the spool directory if one or more job cache entries
point to deleted jobs (<rdar://problem/24048846>)



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@13120 a1ca3aef-8c08-0410-bb20-df032aa958be
2016-03-07 20:38:23 +00:00
msweet d71488ecdd Added support for disc media sizes (<rdar://problem/20219536>)
Also remove old 10.8 private APIs that are no longer needed.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@13118 a1ca3aef-8c08-0410-bb20-df032aa958be
2016-03-07 20:02:13 +00:00
msweet 8be431f216 Fix anonymous ESR markup bug.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@13116 a1ca3aef-8c08-0410-bb20-df032aa958be
2016-03-05 16:25:47 +00:00
msweet c7d89253a0 Fix hang bug when alternating text contains a quote.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@13115 a1ca3aef-8c08-0410-bb20-df032aa958be
2016-03-02 20:24:10 +00:00
msweet 4ce9510966 Make sure cupsPageSize is initialized.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@13114 a1ca3aef-8c08-0410-bb20-df032aa958be
2016-03-02 20:23:04 +00:00
msweet 3e679a2968 Add PWG Raster field definitions.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@13110 a1ca3aef-8c08-0410-bb20-df032aa958be
2016-02-26 20:39:11 +00:00
msweet c585706d00 Implement more of testdest unit test.
Fix mapping of CUPS-Create-Local-Printer operation code.

Add logging to background thread.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@13105 a1ca3aef-8c08-0410-bb20-df032aa958be
2016-02-18 20:32:13 +00:00
msweet 4db7fceecf Fix some bugs in the implementation that have been around for a while...
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@13101 a1ca3aef-8c08-0410-bb20-df032aa958be
2016-02-17 23:29:38 +00:00
msweet 46385a1a17 More work on temporary queues - implement support for them in the cupsDest APIs,
add some duplicate printer checking code, and implement the --enum unit test.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@13099 a1ca3aef-8c08-0410-bb20-df032aa958be
2016-02-17 22:46:40 +00:00
msweet 830cfed95a Update "make test" to include alternate filter.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@13096 a1ca3aef-8c08-0410-bb20-df032aa958be
2016-02-16 23:45:12 +00:00
msweet 95ece0cb8d Implement CUPS-Create-Local-Printer operation and add test file.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@13095 a1ca3aef-8c08-0410-bb20-df032aa958be
2016-02-16 22:52:10 +00:00
msweet 724f2615e5 Back off on ECDSA for now, just use RSA as before, but now with SHA256 for
signing.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@13094 a1ca3aef-8c08-0410-bb20-df032aa958be
2016-02-16 19:30:22 +00:00
msweet 1ae693e31e Switch to ECDSA and SHA256 for self-signed certs on OS X
(<rdar://problem/24535828>)


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@13091 a1ca3aef-8c08-0410-bb20-df032aa958be
2016-02-16 19:11:37 +00:00
msweet 7ae00c352c First half of new "local temporary printer" queues, to support on-demand IPP
Everywhere printers.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@13088 a1ca3aef-8c08-0410-bb20-df032aa958be
2016-02-15 23:39:23 +00:00
msweet 3b43301028 Update documentation for cupsd - "-s" option was not mentioned (STR #4772)
Also update usage (-h) output.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@13086 a1ca3aef-8c08-0410-bb20-df032aa958be
2016-02-12 18:53:04 +00:00
msweet 34a63bd98a Add printer-queue-id attribute (extension).
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@13080 a1ca3aef-8c08-0410-bb20-df032aa958be
2016-02-05 15:03:20 +00:00
msweet 83f1674e70 Fix deprecation and uninitialized value issues.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@13074 a1ca3aef-8c08-0410-bb20-df032aa958be
2016-01-29 21:13:57 +00:00
msweet d649be59fe Fix compiler warning.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@13072 a1ca3aef-8c08-0410-bb20-df032aa958be
2016-01-29 20:00:14 +00:00
msweet 549fc0f192 Put the developer guide into a new CONTRIBUTING file instead.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@13066 a1ca3aef-8c08-0410-bb20-df032aa958be
2016-01-28 15:59:40 +00:00
msweet 85df117dd8 Fix logic error (need to move only the remaining characters in the string).
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@13063 a1ca3aef-8c08-0410-bb20-df032aa958be
2016-01-27 16:05:05 +00:00
msweet f07c012184 Fix access to resource files when the web interface was disabled (STR #4755)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@13060 a1ca3aef-8c08-0410-bb20-df032aa958be
2016-01-26 21:31:33 +00:00
msweet f76916f6e3 Update copyright.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@13058 a1ca3aef-8c08-0410-bb20-df032aa958be
2016-01-26 18:36:06 +00:00
msweet 14fa491e7a Fix encoding of quoted values (<rdar://problem/19736672>)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@13057 a1ca3aef-8c08-0410-bb20-df032aa958be
2016-01-26 18:35:03 +00:00
msweet 2dd940185b Add (undocumented) -T option to print the current sandbox profile to stdout.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@13055 a1ca3aef-8c08-0410-bb20-df032aa958be
2016-01-25 14:43:52 +00:00
msweet 3517cb2348 Fix German web template (STR #4756)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@13048 a1ca3aef-8c08-0410-bb20-df032aa958be
2016-01-13 19:19:22 +00:00
msweet f3d8ceb685 The "lp -H resume" command did not reset the "job-state-reasons" attribute
value (STR #4752)



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@13046 a1ca3aef-8c08-0410-bb20-df032aa958be
2016-01-13 19:13:49 +00:00
msweet 3e6c46ea77 Fix some issues in ipptool for skipped tests (<rdar://problem/24137160>)
- Don't error out on bad values when skipping a test (probably something isn't
  defined)
- Fix "rewind" code so that the line numbers do not get messed up.
- Don't report cupsLastErrorString when attributes cannot be created (not set
  for those issues)


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@13043 a1ca3aef-8c08-0410-bb20-df032aa958be
2016-01-13 15:56:23 +00:00
msweet 3867aed599 Fix builds on Linux.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@13042 a1ca3aef-8c08-0410-bb20-df032aa958be
2016-01-12 19:12:16 +00:00
msweet 23abf279d8 Add "-4" and "-6" options to tlscheck.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@13041 a1ca3aef-8c08-0410-bb20-df032aa958be
2016-01-12 17:21:23 +00:00
msweet 79d3cd17cc Pending subscriptions would prevent the scheduler from idle exiting (STR #4754)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@13039 a1ca3aef-8c08-0410-bb20-df032aa958be
2016-01-11 20:27:08 +00:00
msweet 6d7669cc0a Bump version.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@13038 a1ca3aef-8c08-0410-bb20-df032aa958be
2016-01-11 20:26:17 +00:00
msweet a6a4a2f5b6 Fix some compile issues, use our implementation of rresvport_af since it is
deprecated.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@13034 a1ca3aef-8c08-0410-bb20-df032aa958be
2016-01-06 15:36:36 +00:00
msweet 4a78452e73 Fix variable definitions.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@13032 a1ca3aef-8c08-0410-bb20-df032aa958be
2016-01-06 00:29:50 +00:00
msweet a8db9df8b3 The default password function did not work on some platforms (STR #4750)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@13029 a1ca3aef-8c08-0410-bb20-df032aa958be
2016-01-04 14:34:55 +00:00
msweet 6c49fde65c Revert permissions change to cupsd domain socket (<rdar://problem/23958973>)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@13027 a1ca3aef-8c08-0410-bb20-df032aa958be
2016-01-04 14:11:19 +00:00
msweet 684d1464e6 Wrap all uses of notify_post with #ifdef's.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@13025 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-12-18 22:07:41 +00:00
msweet 6e5a57e8af Add cupsRasterInitPWGHeader API to setup a raster header using IPP Everywhere
attribute values.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@13024 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-12-18 20:34:33 +00:00
msweet e7f4e0e9c0 The EPL2 and ZPL sample drivers did not properly support the CutMedia option.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@13021 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-12-16 18:35:12 +00:00
msweet d5cc05c96d The httpAddrConnect and httpConnect* APIs now try connecting to multiple
addresses in parallel (<rdar://problem/20643153>)



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@13014 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-12-11 18:59:09 +00:00
msweet 8935a80bd0 Can't hide _httpWait.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@13010 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-12-11 16:47:32 +00:00
msweet 966773c540 Fix export list for shared libraries (<rdar://problem/23303388>)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@13008 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-12-11 16:00:00 +00:00
msweet f787e1e3ff Do some code reorganization so that all of the PPD code is separate from the rest.
Note: cupsGetPPD* and friends are now in cups/ppd.h now - should not be an issue
but was necessary to leave a clean break for future code.



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@13007 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-12-09 16:56:00 +00:00
msweet 7f2dc952e0 Changelog.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@13005 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-12-08 20:19:05 +00:00
msweet 634c6c927d Don't exit under memory pressure (<rdar://problem/23255001>)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@13003 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-12-08 20:17:05 +00:00
msweet c47d48694a Add missing client-error-not-fetchable status code.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12995 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-11-20 02:32:42 +00:00
msweet 3ce45fb70a Fix compile error on Linux.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12993 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-11-19 15:27:44 +00:00
msweet 5ae9fbb3dd Add support for hashed job-password values; right now just SHA-1 and SHA-2 hashes
(<rdar://problem/20221502>)

- Add new cupsHashData API
- Use cupsHashData in _cupsConvertOptions.
- Grab the job-password-encryption-supported value from the printer and pick the most
  secure hash that is supported.
- Add a new _CUPS_API_2_2 availability macro.
- Update dependencies and Xcode project settings.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12983 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-11-18 17:22:38 +00:00
msweet 71a78e2fe4 The IPP backend incorrectly included the job-password attribute in Validate-Job
requests (<rdar://problem/23531939>)



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12979 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-11-17 21:23:16 +00:00
msweet 7dc6f91d5e Changing the printer-is-shared value for a remote queue did not produce an
error (STR #4738)



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12977 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-11-17 19:25:54 +00:00
msweet 9924fab816 The scheduler did not deliver job notifications for jobs submitted to classes
(STR #4733)

A matching job is enough.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12976 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-11-17 19:02:23 +00:00
msweet dd1360c1fe Added USB quirk for Canon MP530 (STR #4730)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12975 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-11-17 18:04:51 +00:00
msweet 8719e9dbf5 Scheduler logging change (STR #4728)
Just log "connection now encrypted" as a debug message now.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12974 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-11-17 18:01:44 +00:00
msweet c1bc6894eb Fix regression in fix for <rdar://problem/23133833>.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12971 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-11-13 20:30:20 +00:00
msweet 044af446cd Range check port numbers in URIs (<rdar://problem/23144461>)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12969 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-11-13 20:01:52 +00:00
msweet 28af862a1c Don't create the full name twice (<rdar://problem/23144358>)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12967 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-11-13 19:49:10 +00:00
msweet be939dc257 Don't treat HTTP/1.x prefix as a response unless we are a client
(<rdar://problem/23144290>)


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12964 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-11-13 19:37:47 +00:00
msweet eb93498a8c Make sure to delete temporary file on failed install of cupsd.conf
(<rdar://problem/23135207>)


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12962 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-11-11 19:59:43 +00:00
msweet e0a0bd781b Don't export weak symbols.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12957 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-11-06 16:21:36 +00:00
msweet db3b30894c Fix symbolic name to enum mapping (first value wasn't mapped)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12951 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-10-28 17:21:45 +00:00
msweet 40e7858e19 Fix compile error.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12950 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-10-28 16:45:50 +00:00
msweet 1b01c393d2 Fix another spot where URI hostnames were not normalized.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12948 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-10-28 16:37:49 +00:00
msweet 5947e9d5ad Fix IPP conformance issues and a bug in the printer-state-reasons reporting
from ippserver.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12946 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-10-28 15:20:59 +00:00
msweet ffe3267303 Cleanup some DEBUG2 log messages (<rdar://problem/23135122>)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12944 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-10-26 19:44:10 +00:00
msweet 546400fd70 Make sure we escape the subject and text in the RSS feed
(<rdar://problem/23135066>)


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12942 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-10-26 18:15:48 +00:00
msweet c26ceab084 Strip trailing ? and / before checking for .ppd (<rdar://problem/23134506>)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12940 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-10-26 18:07:32 +00:00
msweet fcad603269 Add /admin/log section to cupsd.conf so that remote admin also controls remote
access to the log files (<rdar://problem/23134415>)


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12938 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-10-26 17:26:36 +00:00
msweet d8a60ef8de Make sure /icons/printer.png and /ppds/printer.ppd point to real queues.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12936 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-10-26 17:17:40 +00:00
msweet 992d991815 Don't log strings directly (<rdar://problem/23134299>)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12934 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-10-26 16:48:23 +00:00
msweet b9ce33c5b0 Return error if we cannot allocate the compression buffer
(<rdar://problem/23134228>)



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12932 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-10-26 16:24:57 +00:00
msweet 40150539e8 Make sure that raster buffer can hold enough data for all planes
(<rdar://problem/23133998>)


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12930 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-10-26 16:18:23 +00:00
msweet 1b6c727889 Use constant time comparison function for local certificates
(<rdar://problem/23133833>)


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12927 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-10-23 21:31:17 +00:00
msweet 59189c00d2 Escape strings in error_log output (<rdar://problem/23133466>)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12925 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-10-23 21:17:33 +00:00
msweet 3a555a4f30 Ensure that cupsBytesPerLine < 2^31 for 32-bit only platforms
(<rdar://problem/23133393>)


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12923 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-10-23 20:30:33 +00:00
msweet fd5ce3a47b Add missing length check (<rdar://problem/23133230>)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12921 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-10-23 20:08:36 +00:00
msweet a4708bb06c Really fix it.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12918 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-10-23 19:58:07 +00:00
msweet f94d4e7f01 Fix infinite loop on bad PUT (<rdar://problem/23132803>)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12917 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-10-23 19:41:38 +00:00
msweet 34c67f13d6 Limit size of chunked requests (<rdar://problem/23132353>)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12915 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-10-23 19:00:06 +00:00
msweet 96a9a53ee3 Documentation updates.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12913 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-10-23 18:58:15 +00:00
msweet 58e9f2680f Fix compile error.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12912 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-10-23 18:56:11 +00:00
msweet f433237632 Add margin checks to rastertopwg (<rdar://problem/23132108>)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12909 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-10-23 18:07:07 +00:00
msweet 3c0659cd0f Protect against integer overflow in raster data (<rdar://problem/23131948>)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12908 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-10-23 17:44:03 +00:00
msweet 1261ca01ce Get rid of compiler warning...
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12906 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-10-23 15:02:21 +00:00
msweet 2a0197fe83 Make sure image is not progressive.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12905 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-10-20 22:12:08 +00:00
msweet e67e2f9e9f Interface scripts are no longer supported for security reasons
(<rdar://problem/23135640>)


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12904 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-10-19 18:49:28 +00:00
msweet 29d379ccb6 Update software for stable draft of IPP Everywhere Printer Self-Certification
Manual 1.0 (October 9, 2015 draft)


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12897 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-10-09 19:18:39 +00:00
msweet f024f448c0 The IPP backend did not always handle jobs getting canceled at the printer
(<rdar://problem/22716820>)



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12895 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-10-09 13:15:16 +00:00
msweet 89b7fd552d Fix access check for domain socket.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12892 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-10-08 17:24:57 +00:00
msweet a07bfaea4e The cupsd domain socket is no longer world-accessible on OS X
(<rdar://problem/7542560>)


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12890 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-10-08 14:27:25 +00:00
msweet dd37b5bcf9 Fix cupsGetPPD* with IPP print queues (STR #4725)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12883 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-10-07 20:28:20 +00:00
msweet 1a8ca4fab2 Update CUPS version in sample.drv.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12882 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-09-15 21:20:50 +00:00
msweet 499aa6cd12 Fix typo.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12880 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-09-15 21:19:10 +00:00
msweet f81d652010 Some older HP LaserJet printers need a delayed close when printing using the
libusb-based USB backend (STR #4549)



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12878 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-09-15 21:16:11 +00:00
msweet 1c5f75579f Drop cups-revision property.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12876 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-09-14 19:01:25 +00:00
msweet d0e96b4a79 Move trunk to v2.2.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12875 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-09-14 19:00:47 +00:00
msweet 7385c337ac The libusb-based USB backend did not unload the kernel usblp module if it was
preventing the backend from accessing the printer (STR #4707)


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12869 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-09-13 23:57:07 +00:00
msweet 3f93806957 Fix message translation for Catalan (STR #4709)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12868 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-09-13 23:51:42 +00:00
msweet a906a73123 Don't map Primera name to Fargo anymore (STR #4708)
Bump version to 2.1.1.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12867 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-09-13 23:49:19 +00:00
msweet f495e905dd Fix another journald issue, and partially revert the systemd change so that
CUPS 2.1 builds with systemd support on RHEL 7.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12857 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-08-31 15:00:45 +00:00
msweet 0b2b24c558 Update jobs.cache after expiring job files (STR #4706)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12856 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-08-31 14:27:39 +00:00
msweet fbfee7a844 Update copyrights in man pages.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12854 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-08-28 14:08:00 +00:00
msweet 6a638e3289 Another typo when the default (timid) tests are chosen (STR #4699)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12853 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-08-28 13:38:46 +00:00
msweet 44ee459098 Don't look for DBUS on OS X, either (STR #4698)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12852 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-08-28 13:29:21 +00:00
msweet 55516fd3bc The scheduler did not use the ConfigFilePerm setting when copying PPD files or
interface scripts attached to a request (STR #4703)

Use cupsdCreateConfFile when copying attached files, and use ConfigFilePerm.



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12851 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-08-28 13:17:53 +00:00
msweet 5315d269f0 Make sure testcache.o is listed as an object file...
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12850 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-08-27 19:29:06 +00:00
msweet dd3fdd2c59 Documentation updates (STR #4691, STR #4693)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12848 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-08-26 18:51:57 +00:00
msweet ff455bc67f The new PDF file type rule did not work (STR #4692)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12847 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-08-26 18:32:22 +00:00
msweet e87a99684f Fix --enable-page-logging configure option (STR #4694)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12846 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-08-26 18:26:22 +00:00
msweet 7470f0c7dc Don't try to use Avahi on OS X (STR #4695)
cupsd-logs man page is in section 5...


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12845 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-08-26 18:23:53 +00:00
msweet 71d1039982 Fix another "new logging" bug for journald only this time (STR #4690)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12843 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-08-13 13:50:22 +00:00
msweet 6922317779 Fix another bug in the new logging code (STR #4687)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12842 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-08-10 17:26:07 +00:00
msweet 3647435025 Additional fixes for Hong Kong locale (<rdar://problem/22130168>)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12841 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-08-10 17:07:30 +00:00
msweet 63efa61613 Fix warning.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12840 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-08-09 02:10:23 +00:00
msweet 7fd8cbfadb Implement Identify-Printer and add tests.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12839 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-08-07 13:22:27 +00:00
msweet 9610a474e2 Add support for STATE: and ATTR: (currently a stub) messages from commands,
at least on POSIX platforms.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12838 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-08-07 13:13:12 +00:00
msweet 88da9d7351 Fix another new Chinese locale ID (<rdar://problem/22086642>)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12835 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-08-06 14:08:01 +00:00
msweet bd3e2e22b9 <rdar://problem/22130168> [PrintCenter]: HK: Gala15A250: Many strings are not localized in printer setting pane for HK.
Need to use zh_TW as a fallback for zh_HK.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12834 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-08-06 13:56:32 +00:00
msweet 15a9714c6c Add support for extra and overridden attributes (vendor request).
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12833 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-08-05 20:59:52 +00:00
msweet 591b26322a Bump versions.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12831 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-08-05 14:24:32 +00:00
msweet e6330e6da1 Changelog.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12830 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-08-05 14:23:26 +00:00
msweet ea99768e29 Fix "make check" warning counts (STR #4684)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12829 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-08-05 14:22:02 +00:00
msweet 183552bee5 Prep for 2.1rc1.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12821 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-07-31 14:53:55 +00:00
msweet 3fc450cdce With recent changes there should only be 8 warning messages in the log.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12820 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-07-31 14:12:25 +00:00
msweet fac77c5b2d <Limit All> in <Policy> sections now applies to all operations when used by
itself (STR #4659)


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12819 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-07-31 13:52:00 +00:00
msweet c1de66f911 Fix the signal handlers in the dnssd and usb backends to only use async-safe
functions (STR #4671)


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12818 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-07-31 13:29:25 +00:00
msweet 1ade8dd9b0 Fix domain socket support on Linux (STR #4679)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12817 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-07-30 15:45:46 +00:00
msweet 7c91f59a7f More journald/asl logging bug fixes (STR #4661)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12816 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-07-30 15:38:57 +00:00
msweet bbbdd14100 cupsd-logs man page should be in section 5 (STR #4674)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12814 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-07-30 15:03:33 +00:00
msweet 4b9daaf451 Fix processing of server overrides without port numbers (STR #4675)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12812 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-07-30 15:00:26 +00:00
msweet 149e8707cf Updated HTML man page...
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12811 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-07-30 14:59:14 +00:00
msweet f1ebe30e92 Fix a USB memory leak and update to the most recent interface
(<rdar://problem/21421966>)



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12800 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-07-22 20:33:16 +00:00
msweet 7530b13a2e Fix a USB race condition (<rdar://problem/21882551>)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12798 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-07-21 17:44:57 +00:00
msweet 08b1b9ba47 Fix another spot where we should not be using curley quotes (<rdar://problem/21835161>)
Also fix trailing regular quote after curley quote caused by previous change.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12794 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-07-20 18:26:20 +00:00
msweet f91fdb4275 Fix mapping of a long double-quote to a regular double quote and not a curley quote
(<rdar://problem/21852022>)


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12792 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-07-20 17:42:59 +00:00
msweet 36ac4374ed Fix Portugeuse localization fallback (<rdar://problem/21873202>)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12790 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-07-20 17:05:06 +00:00
msweet db7d774183 Fix sample.drv version number.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12789 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-07-20 14:51:28 +00:00
msweet cdd90b5ce3 Add URLs so they get reported at the bottom of the (very long) configure --help
output...


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12787 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-07-14 21:19:57 +00:00
msweet 6fe0e36094 Updated autoconf sources to use newer form of AC_INIT (STR #4664)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12785 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-07-14 18:07:49 +00:00
msweet 4bdf6dfacf Next release will be CUPS 2.1rc1...
Just look for libsystemd for all systemd support (STR #4669)


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12784 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-07-14 17:39:26 +00:00
msweet 845cd48759 Fix typo, remove reference to OpenSSL.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12782 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-07-13 20:39:14 +00:00
msweet 8ef06c795f The scheduler incorrectly started jobs while canceling multiple jobs (STR #4648)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12777 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-07-07 17:24:06 +00:00
msweet 5252fc7ae2 Fix logging of printer URI (STR #4658)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12774 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-07-02 17:53:47 +00:00
msweet 67fe5048b9 Fix journald support (STR #4655)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12773 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-07-02 17:43:52 +00:00
msweet 71936a32a1 Fix curley quotes.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12771 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-07-02 16:14:47 +00:00
msweet 945bef5290 The web search incorrectly searched time-at-xxx values (STR #4652)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12768 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-06-30 16:13:38 +00:00
msweet 0d53bff197 Documentation changes (STR #4651)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12767 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-06-30 15:57:39 +00:00
msweet 286755bd68 Bump versions.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12763 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-06-24 20:12:22 +00:00
msweet 6d3a75901c Prep for 2.1b2 (couple more bug fixes coming...)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12760 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-06-24 20:09:38 +00:00
msweet 93d3b4feef The scheduler did not start all pending jobs at once (STR #4646)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12758 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-06-24 20:01:28 +00:00
msweet 911cdc0da8 The IPP backend did not respond to side-channel requests (STR #4645)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12757 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-06-24 19:55:31 +00:00
msweet 3b20f9f50c Add ellipsis to "Looking for printer" message.
Update strings file generation to convert common ASCII sequences to their
Unicode counterparts.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12752 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-06-24 19:30:47 +00:00
msweet f7c0e88013 Fix redirection in the web interface (STR #4538)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12751 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-06-24 18:22:32 +00:00
msweet a5425f93fa Fix a bug in cupsRasterWritePixels (STR #4650)
The return value should be the number of uncompressed bytes written, not the number of
compressed bytes.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12747 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-06-24 15:55:05 +00:00
msweet d9564ec707 Update libcupsimage to properly use DEBUG_ macros.
Add additional debug stuff for raster.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12746 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-06-24 13:28:36 +00:00
msweet 590e44a4d3 Save changes to raster unit test and debug messages.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12744 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-06-23 21:30:17 +00:00
msweet e87e23e76e Add a check for whether the compiler supports the -Wno-unused-result option.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12742 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-06-23 14:48:53 +00:00
msweet 7b61970288 Fix builds with GCC 4.8.x
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12737 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-06-15 18:21:23 +00:00
msweet f97ae2c64e Update changelog since 2.1b1 is already out.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12734 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-06-12 01:22:17 +00:00
msweet 5a08320a77 Bring back PWG white paper support for 3D print queues (just tagging of queues and drivers
that are 3D-specific, with 3D queues omitted from 2D print dialogs)


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12733 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-06-12 01:21:05 +00:00
msweet 08f269f9b9 Back out PWG white paper support from mainline CUPS.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12722 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-06-08 22:00:19 +00:00
msweet 03e56bef25 Fix CUPS_VERSION value.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12717 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-06-08 21:53:06 +00:00
msweet d4aaf2e540 Update CUPS_VERSION and friends.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12716 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-06-08 21:52:19 +00:00
msweet 0d1174843a Update message catalogs.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12714 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-06-08 21:14:37 +00:00
msweet 1134a63299 Fix RPM packaging.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12713 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-06-08 21:10:09 +00:00
msweet 22ba99842c Add note about 3D support from PWG white paper.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12712 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-06-08 20:10:58 +00:00
msweet 59fd9df986 Start of 3D printer support (infrastructure only)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12711 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-06-08 19:29:57 +00:00
msweet 763a0aed16 Changelog.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12702 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-06-08 18:53:29 +00:00
msweet 5e6c3df7c0 Security: Fix CERT VU #810572 exploiting the dynamic linker (STR #4609)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12700 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-06-08 18:32:35 +00:00
msweet c59e07c674 Update documentation.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12699 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-06-08 18:16:30 +00:00
msweet ebaf274807 Prep for 2.1b1.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12697 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-06-08 17:42:16 +00:00
msweet 87f8ade3e3 Update "make check" to report on the exit status of cupsd (useful for seeing if cupsd
crashed; maybe we can grab a crash log?)

Add hyperlinks to each of the major sections.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12696 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-06-08 15:05:11 +00:00
msweet 370e42d343 Update HTML version of man page.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12695 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-06-08 15:04:25 +00:00
msweet a990ad13c7 Fix build errors on Linux for new journald logging.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12691 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-06-04 18:00:31 +00:00
msweet 42dccd4272 Fix IPP Everywhere tests I-16, I-22, and I-25 to allow media-col in the response
(STR #4630)


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12690 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-06-04 16:34:20 +00:00
msweet a1797929b6 Add support for logging to stderr (STR #4505)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12689 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-06-03 19:49:54 +00:00
msweet 47ddc81271 Update messages from tlscheck.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12688 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-06-03 17:31:30 +00:00
msweet 0dc4a6bf8c Add support for ASL and journald when doing "syslog" logging (STR #4474)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12687 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-06-03 17:19:04 +00:00
msweet 5e7464ec5e Don't write empty ColorModel option (STR #4638)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12685 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-06-01 18:45:56 +00:00
msweet 45bfe940ea Added German translation (STR #4635)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12683 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-06-01 18:26:39 +00:00
msweet d1db56d49c Fix PageRegion dimensions (STR #4637)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12682 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-06-01 16:53:07 +00:00
msweet 89665c51ed Fix a compiler warning.
PWG Raster Format output contained invalid ImageBox values
(<rdar://problem/21144309>)


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12678 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-05-28 19:09:48 +00:00
msweet 4ea83fb2e4 Prefer job-impressions-completed over job-media-sheets-completed.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12676 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-05-28 01:19:14 +00:00
msweet 4492316e9c Fix builds on some Darwin platforms.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12675 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-05-28 01:14:32 +00:00
msweet de3edeba17 USB and IPP backend fixes.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12672 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-05-28 00:10:27 +00:00
msweet 72aa7cb4b5 Just blacklist anonymous DH.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12670 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-05-27 19:48:05 +00:00
msweet 9514a192a5 Add support for job-impressions[-completed].
Fix regression in remote printing (needed to block date-time-at-xxx attrs)



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12668 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-05-27 19:30:32 +00:00
msweet 9b4bd602fb Support many new attributes and fix some IPP conformance issues (STR #4630)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12666 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-05-25 19:38:09 +00:00
msweet 520fe1dee4 Fix a memory leak in cupsConnectDest (STR #4634)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12664 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-05-25 15:08:41 +00:00
msweet 315db3ecd6 Changelog.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12662 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-05-25 14:32:05 +00:00
msweet 9b5440d8a9 Fix intermittent "make check" failures due to the initial print job completing
before the test script checks the status (STR #4576)


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12661 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-05-25 14:30:52 +00:00
msweet cab9f682cd Don't return an error for browsing.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12659 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-05-22 19:06:41 +00:00
msweet f0cd6a7ce2 Fix quoting.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12657 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-05-22 17:53:35 +00:00
msweet 8e333c29c6 Fix "make check" when there are no native CUPS filters on the system.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12655 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-05-22 17:26:40 +00:00
msweet bfa448ff84 Log the filename that cannot be opened.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12654 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-05-22 16:26:29 +00:00
msweet 838bcb9292 Fix compile error...
Drop optimization for default TLS options; better to ensure we get consistent
priority string values here than to save a few nanoseconds (previous optimized
value was wrong...)


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12653 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-05-22 11:16:30 +00:00
msweet 58796d4932 tlscheck should only be built when SSL/TLS is available/enabled.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12652 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-05-22 11:09:38 +00:00
msweet bdc4056cff Update list of blacklisted DH/DHE cipher suites.
Expand what tlscheck can do/report.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12649 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-05-21 01:48:09 +00:00
msweet b37d45d9ed More tweaks for cipher suite restrictions.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12647 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-05-20 18:37:52 +00:00
msweet ee6226a5cb Add SSLOptions to enable Diffie-Hellman key exchange and disable TLS/1.0.
DH/DHE support is being made optional because of known security issues with short
DH parameters.  Since there is no way to conditionally use DH/DHE with a minimum
number of bits, we just have to disable it by default.

TLS/1.0 support can now be disabled due to known security issues with TLS/1.0.
However, since TLS/1.1 and TLS/1.2 support is not universally available, we
cannot simply disable TLS/1.0 like we did for SSL/3.0.



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12645 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-05-20 01:20:52 +00:00
msweet 3bb5973159 Fix compiler warnings.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12644 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-05-19 21:22:35 +00:00
msweet b81c7a3272 Ignore tlscheck.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12643 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-05-19 15:05:12 +00:00
msweet b2250eaa0b Fix compiler warning.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12641 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-05-19 15:04:39 +00:00
msweet 88da3fd755 Add more cipher suites.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12640 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-05-19 15:03:48 +00:00
msweet 3363e7596f ippfind incorrectly substituted "=port" for service_port.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12638 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-05-19 02:36:15 +00:00
msweet fb9d90d672 Add a check for "=" in the port number (to work around an ippfind bug)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12637 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-05-19 02:26:15 +00:00
msweet 72b9a3131a Add TLS version.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12636 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-05-19 02:22:55 +00:00
msweet 79a3732626 Start of check program for TLS implementations.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12635 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-05-19 02:12:22 +00:00
msweet d25e43cfbe The ppdhtml and ppdpo utilities crashed when the -D option was used before a
driver information file (STR #4627)



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12633 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-05-15 19:16:58 +00:00
msweet f64b32d934 The IPP backend now correctly monitors jobs (<rdar://problem/20495955>)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12623 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-05-06 23:50:10 +00:00
msweet 560634d338 Write numbers in a locale-safe way (STR #4579)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12622 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-05-06 23:19:28 +00:00
msweet fab4b71e38 Long cookies caused the web interface to stop working (STR #4619)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12621 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-05-06 21:32:18 +00:00
msweet d4cda727d5 The scheduler now validates ErrorPolicy values in config files (STR #4591)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12620 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-05-06 21:11:47 +00:00
msweet 6d8021f4bd Check the return value of rename() (STR #4589)
Add some & in front of function names.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12619 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-05-06 21:00:19 +00:00
msweet dc991142c4 The sample Epson driver could crash (STR #4616)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12617 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-05-06 20:28:22 +00:00
msweet ea614873ca Link with common libs (to get CoreFoundation).
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12615 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-05-06 20:21:51 +00:00
msweet bb00c43fcc The scheduler could get caught in a busy loop (STR #4605)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12613 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-05-06 18:01:04 +00:00
msweet 2906719433 The cups-lpd mini-daemon did not check for request parameters (STR #4603)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12611 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-05-06 15:30:36 +00:00
msweet c130ea1d81 The rastertopwg filter did not check for truncated input (STR #4597)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12609 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-05-06 12:24:47 +00:00
msweet 33076d249b cupsRasterReadHeader did not fully validate the raster header (STR #4596)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12607 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-05-06 12:19:59 +00:00
msweet d2df9aeddb The web interface always showed support for 2-sided printing (STR #4595)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12605 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-05-06 01:58:08 +00:00
msweet 61c9d9f825 Fix lpadmin when both -m and -o are used (STR #4578)
Grab server PPD and edit it as needed.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12603 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-05-06 01:42:51 +00:00
msweet d201ec2b11 Update copyright.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12602 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-05-05 20:19:35 +00:00
msweet d2ff46225c Fixed <Limit> inside <Location> (STR #4575)
Need to copy length when copying location.  Also strip trailing / and query
string when doing path comparison.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12600 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-05-05 19:52:13 +00:00
msweet 3606a6d61f Fix weak-link check.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12599 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-05-05 19:48:38 +00:00
msweet 367377293a Change maximum raster resolution to 300 DPI.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12598 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-05-05 18:57:57 +00:00
msweet c8fdb00125 Fix some clang issues.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12583 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-04-03 00:33:05 +00:00
msweet cbf9404a5a Fix a gzip processing bug (STR #4602)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12577 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-03-30 19:07:17 +00:00
msweet 50752acba9 Fix potential buffer overflow in rastertohp (STR #4601)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12574 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-03-26 16:36:18 +00:00
msweet 8326c12921 Fix another potential buffer overflow (STR #4600)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12572 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-03-25 20:04:18 +00:00
msweet f8e5a7b498 Fix another potential buffer overflow (STR #4599)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12570 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-03-25 18:44:16 +00:00
msweet 94d5dc4814 Fix buffer overflow in rastertopwg (STR #4598)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12568 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-03-25 13:49:23 +00:00
msweet f8f7636ed6 Eliminate Clang warnings.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12559 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-03-23 17:28:46 +00:00
msweet c4496252d6 Fixed logging of configuration errors to show up as errors (STR #4582)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12542 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-02-27 18:41:55 +00:00
msweet 77b80b0d76 Add Russian translation (STR #4577)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12540 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-02-27 18:15:29 +00:00
msweet fd40cbc4d1 Restore missing generic printer icon file (STR #4587)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12538 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-02-27 18:01:33 +00:00
msweet ea72cf2b56 The cupstestppd program did not handle "maxsize(nnn)" entries in cupsFilter/
cupsFilter2 values (<rdar://problem/18974858>)



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12536 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-02-27 14:06:20 +00:00
msweet 6ee8dca8b5 Install filename.default versions of cups-files.conf and snmp.conf
(<rdar://problem/19024491>)


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12533 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-02-27 12:30:26 +00:00
msweet fe750b8658 Fix USB backend for compatibility with IPP USB.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12528 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-02-23 18:57:20 +00:00
msweet 5629a813c4 Eliminate usage of sprintf.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12523 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-02-18 18:24:39 +00:00
msweet 0907c437d2 Fix empty stdin open...
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12521 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-02-17 20:00:17 +00:00
msweet fb458c34bf Revert SDKROOT changes for OS X.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12519 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-02-17 13:10:19 +00:00
msweet fb2d54701f Last bits of IPP Everywhere PPD support - web interface and cups-driverd
(STR #4258)


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12516 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-02-12 20:18:11 +00:00
msweet fffed08915 lpadmin changes to support "-m everywhere" (STR #4258)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12513 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-02-11 19:45:01 +00:00
msweet 8bd1a2e1ef Changelog.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12511 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-02-11 15:28:52 +00:00
msweet d9fc71e456 First part of IPP Everywhere PPD support - a private API that generates a PPD
from a Get-Printer-Attributes response (STR #4258)


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12510 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-02-11 15:27:27 +00:00
msweet 14537a4db8 Fix pwg-raster-document-types-supported values.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12509 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-02-11 15:25:26 +00:00
msweet e3138ca407 Remove generated file.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12507 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-02-10 12:04:26 +00:00
msweet 4463881125 Don't ignore.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12506 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-02-10 12:04:07 +00:00
msweet 8e732f4a20 The scheduler no longer listens on the loopback interface unless the web
interface or printer sharing are enabled (<rdar://problem/9136448>)



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12497 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-02-06 21:58:21 +00:00
msweet 974ad7dfd4 Set ProcessType in launchd plists (<rdar://problem/19749641>)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12495 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-02-06 21:51:27 +00:00
msweet 64dda3963f Enable transaction and pressured exit support (<rdar://problem/19749501>)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12493 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-02-06 21:43:23 +00:00
msweet 543507bea2 Add support for SDKROOT on OS X.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12492 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-02-06 21:33:50 +00:00
msweet 2cf627f029 Fix lpstat test.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12490 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-02-06 18:45:48 +00:00
msweet a21c36fa82 Add new WITH-VALUE-FROM predicate to validate -default attributes against their
-supported counterparts.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12487 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-02-05 15:42:59 +00:00
msweet 1ec50c42bd Fix memory leak of environment strings on failed execution.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12485 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-02-04 13:12:50 +00:00
msweet e83646d5c2 Add EXPECT-ALL directive to ipptool (STR #4469)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12484 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-02-03 19:25:57 +00:00
msweet eb92c2e74b Copyright updates.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12483 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-02-03 12:49:40 +00:00
msweet 3abb875b96 Fix several issues with client.conf, CUPS_SERVER, and the "-h" option of most
commands (STR #4528)

Load default client.conf values in the proper order, and then allow them to be
overridden.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12480 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-02-03 12:36:34 +00:00
msweet eb098ba20b Add a note about using BUILDROOT to redirect installs.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12478 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-02-03 05:02:20 +00:00
msweet 08c7d54404 Add note that ServerKeychain is a directory of files on most platforms.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12476 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-02-02 18:35:00 +00:00
msweet df9bc0b7f8 Update LPD backend documentation (STR #4569)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12474 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-02-02 18:18:55 +00:00
msweet cefc2beec5 Japanese translation (STR #4524)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12472 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-02-01 05:53:21 +00:00
msweet a7616fe837 Another change for OpenBSD (STR #4526)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12470 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-02-01 05:06:54 +00:00
msweet a6534de898 Copyright.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12468 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-02-01 04:50:43 +00:00
msweet ba7900a529 The ipptool timeout option did not work (STR #4515)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12466 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-02-01 04:50:11 +00:00
msweet e9f9e650da The ippfind and ipptool programs now correctly match hostnames with trailing
dots (STR #4563)



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12464 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-02-01 02:46:20 +00:00
msweet c07e5e20f8 The scheduler did not always log which configuration file had the error
(STR #4559)



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12462 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-01-30 16:34:13 +00:00
msweet f775e78ae9 Add a USB quirk rule for Intermec printers (STR #4553)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12460 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-01-30 16:19:56 +00:00
msweet 3644808db7 The scheduler could crash during shutdown if Avahi was shutdown first
(STR #4550)



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12458 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-01-30 16:15:53 +00:00
msweet 726429cbd4 ippserver did not handle Bonjour registrations properly (STR #4548)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12456 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-01-30 16:11:41 +00:00
msweet 12f009bb47 ippserver used the wrong temporary directory on Windows (STR #4547)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12454 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-01-30 16:05:50 +00:00
msweet 62bd8d9187 Validate cupsBitsPerColor, cupsBitsPerPixel, and cupsBytesPerLine to avoid
potential buffer overflow with compressed raster data (STR #4551)


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12452 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-01-30 15:42:10 +00:00
msweet 4eff94092d cupsGetPPD* sent bad requests (STR #4567)
Use IPP_TAG_KEYWORD for requested-attributes in get_printer_uri.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12448 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-01-29 20:32:07 +00:00
msweet 0940626b54 Update copyrights...
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12447 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-01-29 20:26:30 +00:00
msweet eb5c9ea320 Drop support for "Sandboxing off" when running as root on OS X.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12445 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-01-29 20:25:06 +00:00
msweet f099325eb2 Move _cupsConvertOptions to ppd-cache since it depends on PPDs.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12441 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-01-29 14:42:32 +00:00
msweet 07eca067cf Move CUPS->IPP mapping code to libcups.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12439 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-01-28 21:05:25 +00:00
msweet 4c97c06fa1 Don't forget to close RequestRoot directory.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12437 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-01-28 18:09:38 +00:00
msweet 222753d9fb cupsd takes the slow path when loading job history even if the control files
are older than the cache file (<rdar://problem/18188866>)


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12435 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-01-28 18:06:28 +00:00
msweet 79d7d84abf Mapping of PPD keywords to IPP keywords did not work if the PPD keyword was
already an IPP keyword (<rdar://problem/19121005>)



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12432 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-01-28 16:21:40 +00:00
msweet 20529d535e Fix copyright.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12429 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-01-27 21:22:37 +00:00
msweet 6e6611efe9 Backends needing to load OS X kernel extensions did not work
(<rdar://problem/19015679>)



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12426 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-01-27 21:21:32 +00:00
msweet 69889dcff4 The IPP backend now updates the cupsMandatory values when the printer
configuration changes (<rdar://problem/18126570>)



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12424 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-01-27 16:51:17 +00:00
msweet c178ac6149 The IPP backend now sends the job-pages-per-set attribute when printing
multiple copy jobs with finishings (<rdar://problem/16792757>)


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12422 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-01-26 16:38:15 +00:00
msweet 3ae465e71c Update availability macros for Yoemite.
Don't need to define kSecClass constants anymore...


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12418 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-01-22 15:49:23 +00:00
msweet 352d5a7db5 Make sure clean and distclean remove all generated files.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12414 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-01-21 00:02:04 +00:00
msweet 6884f8da96 Fix compiler warnings.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12411 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-01-19 15:17:18 +00:00
msweet a112444032 "job-preferred-attributes-supported" needs to be "preferred-attributes-supported"
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12407 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-01-14 21:17:10 +00:00
msweet ef14694020 Adjust GNU TLS cipher suite priority strings per feedback from Tim
Waugh.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12404 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-01-14 20:04:25 +00:00
msweet f25ce75f36 Use PPD deprecation annotation for cupsGetPPD functions.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12401 a1ca3aef-8c08-0410-bb20-df032aa958be
2015-01-12 16:59:02 +00:00
msweet da5f55b560 Use gziptoany instead of cat or gunzip.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12397 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-12-19 16:55:52 +00:00
msweet 6f260d7d72 More spots where port was hardcoded.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12395 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-12-19 16:11:14 +00:00
msweet 8f8d5cd468 Use port number for test server.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12393 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-12-19 15:33:22 +00:00
msweet e0f0a3d5c7 Make sure to run the lpstat command from the source directory.
Dummy scripts need to consume their input...


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12391 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-12-19 14:54:33 +00:00
msweet f70e9f2c35 More cleanup.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12389 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-12-19 13:10:28 +00:00
msweet 35a242864a Clean up filters for test.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12388 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-12-19 13:08:56 +00:00
msweet e7061482c0 Trap common signals in the wrapper scripts.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12386 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-12-19 12:52:56 +00:00
msweet 6015e919ce Use SVN revision instead of date, when possible.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12373 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-12-17 19:30:39 +00:00
msweet 95dd887665 Allow "make check" to run on different ports and in different directories.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12371 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-12-17 13:36:32 +00:00
msweet a891ff4cc9 Don't try to talk to colord unless we are running as root.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12368 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-12-15 14:51:10 +00:00
msweet 00d3a9af03 SystemGroup is now documented in the cups-files.conf man page.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12365 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-12-15 14:02:57 +00:00
msweet 37d9646b92 Fix links from policies.html to cupsd.conf reference.
Add HTML anchor support to mantohtml.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12362 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-12-12 19:50:49 +00:00
msweet 237b42e933 Preserve job files for 5 minutes.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12359 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-12-11 17:45:57 +00:00
msweet a33b4a6cc1 Don't log a "file does not exist" error for a canceled job.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12357 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-12-11 17:42:01 +00:00
msweet 1d58a957e3 Add in test banner files.
Update version number in test report.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12356 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-12-11 17:34:58 +00:00
msweet 3b5b1841db Changelog.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12352 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-12-09 22:19:28 +00:00
msweet c4a1d4a533 Fix typo for --without-xinetd (STR #4542)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12350 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-12-09 22:18:21 +00:00
msweet 5e1504aa1e Fix USB printing on OpenBSD (STR #4525)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12348 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-12-09 22:10:45 +00:00
msweet 12f1eda99b ...
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12345 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-12-09 21:41:30 +00:00
msweet 2274af3819 ...
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12343 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-12-09 21:36:01 +00:00
msweet ce7d367df7 Fix a libusb issue on OpenBSD.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12341 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-12-09 21:33:23 +00:00
msweet cf1d728186 More changes.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12339 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-12-09 21:27:43 +00:00
msweet ce861325f4 Bypass another bogus compiler warning.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12337 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-12-09 21:23:49 +00:00
msweet aac48e5f50 OpenBSD's libiconv uses libiconv_open instead of iconv_open...
Standards, gotta love 'em.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12335 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-12-09 21:19:42 +00:00
msweet 341efe62ec Silence yet another bogus compiler warning.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12333 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-12-09 21:01:46 +00:00
msweet cadceea851 Changelog.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12331 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-12-09 20:58:34 +00:00
msweet 52958fdb98 Relax the conversion of characters for OpenBSD.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12330 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-12-09 20:57:28 +00:00
msweet 4f2935a856 Eliminate another bogus compiler warning...
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12327 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-12-09 20:38:39 +00:00
msweet c70c356152 Yet another header...
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12324 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-12-09 20:28:39 +00:00
msweet e10c6901cd Use TMPDIR for snapshots and releases.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12322 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-12-09 20:17:41 +00:00
msweet 758c3b305b Try to get resolv.h test to work on OpenBSD.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12320 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-12-09 19:43:35 +00:00
msweet abcf164745 Update resolv.h check to include dependent headers.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12317 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-12-09 18:35:35 +00:00
msweet 0a15691ae7 Eliminate compiler warning.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12315 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-12-09 18:19:45 +00:00
msweet 0c124a183a Additional fix for STR #4531.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12313 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-12-09 17:58:18 +00:00
msweet 22ebb7d0ba Fixed builds when no SSL/TLS library is available, or when explicitly disabled
(STR #4531)



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12311 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-12-09 17:51:55 +00:00
msweet e0646a95d8 Mirror change.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12304 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-12-09 16:16:28 +00:00
msweet 770f94bc2d Address another bogus GCC warning.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12300 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-12-09 16:08:37 +00:00
msweet 8d5b58f632 Workaround stupid GCC bug.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12296 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-12-08 19:26:22 +00:00
msweet 56138cae8a The cups-files.conf file contained the old ServerCertificate/Key directives
instead of ServerKeychain.



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12289 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-12-05 17:25:43 +00:00
msweet 765bf3beb5 The scheduler incorrectly aborted jobs after a job was restarted
(<rdar://problem/19129387>)



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12285 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-12-04 18:57:07 +00:00
msweet 426184cbf4 ippLength() did not return the correct length for IPP_TAG_CONST string values.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12281 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-12-03 12:14:20 +00:00
msweet 95fcd65c91 Don't install banner and self-test files (STR #4518)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12278 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-12-01 13:53:56 +00:00
msweet c5f27b8891 Ignore buildfarm .buildrev file.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12277 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-11-24 19:38:20 +00:00
msweet 20aa0765bd Fix up PPD unit test.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12275 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-11-24 19:37:21 +00:00
msweet 51e07447b2 CUPS did not compile without Avahi or mDNSResponder (STR #4523)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12270 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-11-20 17:07:58 +00:00
msweet 19ba687883 CUPS did not work with older versions of GNU TLS (STR #4527)
- Add check for gnutls_priority_set_direct, use older gnutls_priority_set API
  if not found.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12269 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-11-20 15:37:29 +00:00
msweet c989e789ea Update test PPD to include OutputBin to validate PPD to IPP mapping.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12268 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-11-19 17:06:08 +00:00
msweet a27984635c Clean up some loose ends.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12267 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-11-19 16:56:57 +00:00
msweet caff6dbab1 The scheduler incorrectly cleared the MakeModel string in the printers.conf file
after a restart (<rdar://problem/16827518>)



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12264 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-11-19 16:02:27 +00:00
msweet b2656447ce Command-line programs were not localized on Mac OS X (<rdar://problem/14546232>)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12262 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-11-19 15:18:33 +00:00
msweet 6028693e0d <rdar://problem/17837631> OS X continues sending print data after the print job is canceled at a printer
Stop sending data when we see an 'aborted-by-system' or 'job-canceled-xxx' value
in job-state-reasons.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12260 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-11-19 12:52:21 +00:00
msweet 93a5da07d5 <rdar://problem/15146999> 13A598: spin in AddPrinter while adding printer from Printers & Scanners prefs
Don't need to do ppdConflicts after every default is marked.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12258 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-11-19 12:38:44 +00:00
msweet 938816b84c Ignore generated files.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12253 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-11-14 17:16:13 +00:00
msweet 73174bb3ba The web interface did not work on OpenBSD (STR #4496)
posix_spawnattr_setsigdefault and POSIX_SPAWN_SETSIGDEF are busted on OpenBSD.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12251 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-11-14 17:14:30 +00:00
msweet a0e8382185 Windows BAT files need CR+LF.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12249 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-11-14 12:54:05 +00:00
msweet 242b936ad7 Make "cancel -a" cancel jobs on all destinations.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12247 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-11-12 16:23:39 +00:00
msweet 1b3b9aa995 Fix compiles on unsupported platforms (STR #4510)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12246 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-11-12 15:31:47 +00:00
msweet 108f75052d Fix a random crash in the scheduler when not using systemd (STR #4484)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12245 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-11-12 14:35:59 +00:00
msweet bb80072ca4 Added a USB quirk rule for the Brother HL-1250 (STR #4519)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12242 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-11-12 12:04:02 +00:00
msweet d627bfa00d Whoops, RC4 and SSL3 need separate bit values.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12241 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-11-12 12:02:02 +00:00
msweet 5513588c77 Initial Get-Notifications implementation (no notify-wait support).
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12237 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-11-03 13:07:32 +00:00
msweet 49c81c17e3 Save work.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12236 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-11-03 04:08:41 +00:00
msweet 3d2fdf3863 Update README and other files in trunk to be 2.1.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12235 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-10-31 12:06:15 +00:00
msweet ed26f50fbb OpenBSD build fixes.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12233 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-10-25 00:03:02 +00:00
msweet 4978eed9c0 The IPP backend did not work with some configurations of Windows (STR #4503)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12229 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-10-21 13:52:24 +00:00
msweet bf766888c7 Stop reporting waste-receptacle-xxx from SNMP, because vendors implement it
inconsistently (STR #4499)


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12227 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-10-21 13:42:04 +00:00
msweet cae3816ebe Fix a DBUS crash if colord is not running (STR #4496)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12225 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-10-21 13:35:54 +00:00
msweet af38c1b354 The scheduler did not honor the FatalErrors directive for mis-configured Group
and SystemGroup values (STR #4495)



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12223 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-10-21 13:14:55 +00:00
msweet 451d5797fa Add systemd support for cups-lpd (STR #4493)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12221 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-10-21 11:54:05 +00:00
msweet 241474b0d9 The web interface now protects against frame "click-jacking" attacks (STR #4492)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12219 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-10-20 21:59:33 +00:00
msweet 9b9c3de281 cupsGetPPD* would return a symlink to the PPD in /etc/cups/ppd even if it was
not readable by the user (STR #4500)



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12218 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-10-20 21:41:29 +00:00
msweet 0627e8695c Printer sharing did not work when systemd was being used (STR #4497)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12216 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-10-20 18:42:11 +00:00
msweet c9c515e478 Remove a debug printf.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12214 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-10-20 18:20:51 +00:00
msweet 5c460b65dc Fix builds with VC++ 2008
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12213 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-10-20 18:10:26 +00:00
msweet 63aefcd517 Implement SSLOptions in cupsd.conf and client.conf to allow admins to enable
SSL 3.0 and RC4 (STR #4476)

(currently RC4 cipher restrictions are not implemented on OS X or Windows)


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12211 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-10-20 16:58:48 +00:00
msweet 84245a8a38 Fix compile errors.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12209 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-10-17 18:27:22 +00:00
msweet d65637395c Add Avahi support to ippserver.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12208 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-10-17 18:23:27 +00:00
msweet 3315fb2d4e Fix sample driver file to pass tests.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12201 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-10-15 19:11:12 +00:00
msweet f28a1eafa2 RPMs did not build (STR #4490)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12199 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-10-09 16:11:51 +00:00
msweet 2c69d4628c Protect against NULL collection values (<rdar://problem/17903871>)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12193 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-10-02 18:40:12 +00:00
msweet 92ee0d7c02 Save work on IPP Infra server and proxy (WIP)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12191 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-10-01 19:00:21 +00:00
msweet fab9a59a3b Trunk is now 2.1.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12187 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-10-01 13:15:30 +00:00
msweet c7aa86b042 Update files for 2.0.0 release.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12180 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-10-01 12:08:02 +00:00
msweet 91f22d1157 Fix build issues when we don't have systemd or launchd.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12178 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-09-30 18:56:48 +00:00
msweet 1960468b6b Fix system requirements (no more SGT required).
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12177 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-09-30 16:36:25 +00:00
msweet 159df568e1 Drop reference to Digest authentication.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12176 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-09-30 16:34:32 +00:00
msweet 270f2d4279 Remove "at the top of this page", since that is confusing when viewing the
documentation on the CUPS.org web site.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12175 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-09-30 16:31:12 +00:00
msweet e2f8e83152 Update glossary to remove some obsolete terms and add PWG.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12174 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-09-30 16:29:32 +00:00
msweet 388b2b4d83 Clean up network printer guide; IPP is no longer unreliable so don't advise
using socket, and drop the compression option since it is no longer needed.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12173 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-09-30 16:27:35 +00:00
msweet e49523c508 Clarify that scripts must be read-only and owned by root.
Also list CONTENT_TYPE variable.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12172 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-09-30 16:23:21 +00:00
msweet 075b444be3 Do not say third-party solutions are on cups.org (not any more).
Also mention that page logging has to be enabled.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12171 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-09-30 16:18:00 +00:00
msweet 2711d8657a Update the list of operations to match what CUPS supports.
Fix an error in listing support for Restart-Job twice.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12170 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-09-30 16:12:03 +00:00
msweet 9e8e57a558 Spanish localization (STR #4487)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12166 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-09-29 15:10:32 +00:00
msweet ebb24a07bb Fix some code comments in tls-xxx.c.
Update USB quirks for MX310 and MX320 (STR #4482)


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12159 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-09-23 14:56:14 +00:00
msweet 484798d807 Don't use --read-var-info=yes with Valgrind for now since it has problems on
OS X...


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12151 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-09-04 00:57:41 +00:00
msweet 6e6adc4fa3 The scheduler did not preserve listener sockets from launchd or systemd after a
restart (<rdar://problem/18112848>)


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12149 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-09-03 15:33:50 +00:00
msweet 9aed20a59e Last changes for 2.0rc1.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12145 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-09-02 15:00:50 +00:00
msweet da720f3b9a Update POSIX test script to no longer define variables - we just use the
environment from ippfind...


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12144 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-09-02 13:40:27 +00:00
msweet b32e625662 IPP Everywhere tests finally work for Windows. Fix an output bug in ipptool in quiet mode.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12143 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-09-02 13:37:30 +00:00
msweet 12f73e6f2b Tweak localization files for updates help text.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12141 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-08-30 02:25:38 +00:00
msweet 1deb86fdaf Re-introduce dark wake support, but this time while monitoring the current
power source (<rdar://problem/17325852>)

This allows printing to work while the system is visibly asleep.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12140 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-08-30 01:51:22 +00:00
msweet 1b6d468c9a Save work
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12139 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-08-29 17:50:38 +00:00
msweet 3c08d65244 Save work.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12137 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-08-29 16:08:22 +00:00
msweet 015214aada Changes to make ippserver compile on Windows.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12136 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-08-29 15:19:40 +00:00
msweet 1e564ac849 Add project for ippserver on Windows.
Sync up config.h and do some minor cleanup.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12135 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-08-29 14:29:39 +00:00
msweet 193013f909 Save work.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12134 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-08-29 12:38:53 +00:00
msweet 6ca7b7a8e7 Make sure CachDir is only readable by root and lp.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12132 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-08-29 11:27:18 +00:00
msweet f098fcf0ff Fix package filenames to match spec.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12130 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-08-28 22:40:36 +00:00
msweet c6cc3553c8 Eliminate compiler warning.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12129 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-08-28 19:26:31 +00:00
msweet 20104c4c13 Make sure RSS feeds are world-readable (STR #4461)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12128 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-08-28 19:23:23 +00:00
msweet 83ce8172d2 Add a (non-shipping) man page for ippserver.
Add some missing file to the repository.

Update the README.txt file for CUPS, which still had old links and legal
language.

httpGetHostname did not make sure a .local name ended with a ".".

ippserver now properly assigns the default port number and hostname, and adds
the job attributes to the environment of the print command (if specified).

ippserver now validates that the print command can be run before it accepts any
jobs.

Rename "document-format-tests.*" to "document-tests.*".

Implement the script to build the IPP Everywhere Printer Self-Certification
tools.

Add a readme for the self-certification tools.




git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12127 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-08-28 18:57:27 +00:00
msweet f9f18a7425 Don't need to include <gcrypt.h>...
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12126 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-08-28 16:02:00 +00:00
msweet e7312eb40a Eliminate the rest of the warnings when the other dependencies are added in.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12125 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-08-28 15:49:29 +00:00
msweet 7d5824d6a8 Fix Linux builds without normal prerequisite libraries installed.
Also correct GCC 4.8 compiler warnings.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12124 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-08-28 15:37:22 +00:00
msweet 3bc376ee94 Fix the spinner image on a restart (STR #4475)
Also fix the redirection link.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12123 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-08-28 14:24:45 +00:00
msweet 9483577ff8 Fix RPM build issues (STR #4459)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12122 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-08-28 12:55:52 +00:00
msweet b972ab5a76 FileId goes under each test.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12121 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-08-27 21:40:10 +00:00
msweet 276762cd09 Update ipptool to include a Skipped boolean key for skipped tests.
Update FileId of tests.

Include Skipped boolean key for skipped Bonjour tests.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12120 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-08-27 20:52:33 +00:00
msweet 0e4445e91b Fix some IPP conformance issues with Send-Document (wasn't copying values).
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12119 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-08-26 17:01:57 +00:00
msweet fe202ff462 ippfind fixes:
- Fix a bug with '{name}' substitution in ippfind.
- Fix a bug with --txt-name option handling in ippfind.
- Add some more debugging output to ippfind when IPPFIND_DEBUG env var is set.

ippserver fixes:

- Include TLS and UUID keys in TXT record.
- Implement HTTP Upgrade to TLS.

IPP Everywhere test file fixes:

- Separate access and value tests, confusing.
- Fix some of the tests to work properly (cut/paste errors)



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12118 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-08-26 15:36:07 +00:00
msweet 8288bfd0d9 Save work on all of the IPP Everywhere tests, and a bug fix for ippfind.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12117 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-08-25 21:38:31 +00:00
msweet 04f71e64cf Tweak default printer icon, add apple-touch-icon to ippserver.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12116 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-08-25 15:07:35 +00:00
msweet 952fa13df6 Finish up document format tests.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12115 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-08-25 14:54:55 +00:00
msweet a5a8d71629 Update changelog.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12114 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-08-25 13:29:04 +00:00
msweet 112fc3c0bd Allow access to cupsd-created files with non-world-readable permissions via the
web interface (STR #4461).

Use cupsdCreateConfFile API to create PPD files, and use the ConfigFilePerm for
PPD files.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12113 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-08-25 13:28:04 +00:00
msweet 1252ae2760 Maybe final new printer icon image.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12112 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-08-22 13:14:17 +00:00
msweet 4403acbb9f Update printer icon (not final)
Add some more raster "support".


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12111 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-08-21 20:37:08 +00:00
msweet 404dde30f1 Save work.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12110 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-08-21 17:43:30 +00:00
msweet a654c79d10 Fix an ippserver Send-Document issue with PWG raster files.
Fix some ipptool issues:

- ${VARIABLE} wasn't supported
- DEFINE-VALUE included all values; now just define with the last value.
- NAME didn't expand variables.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12109 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-08-20 21:44:02 +00:00
msweet ff6403d63d Drop Epson Stylus drivers from readme.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12106 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-08-20 15:28:22 +00:00
msweet 55fb2687e9 Dropped the old Epson Stylus Color/Photo sample drivers since they don't work
with any current printers and there are free alternatives that produce much
better output (<rdar://problem/18036889>)



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12105 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-08-20 15:27:43 +00:00
msweet abcaca5754 Update sandboxing documentation to indicate which directories are allowed for
domain sockets.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12103 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-08-20 15:20:48 +00:00
msweet 59aa494417 Add read access to /private/var/tmp, socket access to /private/var/tmp, and
read access to all of /Library and /System/Library (STR #4471, <rdar://problem/17483959>)


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12102 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-08-20 15:19:09 +00:00
msweet 8e8d3a7117 Fix libgmalloc usage (although the report is still not too useful - need to do
more here...)


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12101 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-08-20 15:10:51 +00:00
msweet dd47aa7db8 Add script to run the IPP tests.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12100 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-08-20 01:22:38 +00:00
msweet 10ff1f8852 Changelog.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12099 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-08-20 01:07:01 +00:00
msweet e3a57e0be3 Fix the last of the conformance issues.
ippserver now supports IPP Everywhere (STR #4101)


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12098 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-08-20 01:06:03 +00:00
msweet 0b5ce83f88 Finish up new web interface for ippserver so we can fiddle with media and
supply levels.

Fix a DISPLAY bug in ipptool.



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12097 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-08-20 00:52:06 +00:00
msweet 27347f86a5 Update dependencies.
Drop document-name as a Job attribute (it isn't).


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12096 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-08-19 16:19:48 +00:00
msweet 4a83808817 More IPP Everywhere fixes; almost there!
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12095 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-08-19 16:16:06 +00:00
msweet e1f19878c6 Update "since CUPS 2.0" into to mention OS X 10.10.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12094 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-08-19 12:15:11 +00:00
msweet 58fce51f9f Fix documentation typo.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12093 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-08-19 12:10:17 +00:00
msweet c2c30ebc03 Save work on IPP Everywhere updates.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12092 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-08-18 20:53:41 +00:00
msweet 2cadf0f454 Save work on making ippserver conform to IPP Everywhere.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12091 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-08-18 12:11:25 +00:00
msweet 92df50e696 Include job-uri in get-jobs tests.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12088 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-08-07 01:09:21 +00:00
msweet 82d1ebb9c6 Add section on OS X sandboxing (STR #4464)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12085 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-08-06 18:59:13 +00:00
msweet dc69e13abd Add libgmalloc and malloc_history to the test suite on OS X.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12084 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-08-06 18:23:12 +00:00
msweet 117466cd93 Free the sockets array returned by launch_activate_socket.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12082 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-08-04 16:18:32 +00:00
msweet c297995574 Don't call launch_activate_socket multiple times (<rdar://problem/17523218>)
Bump version to 2.0rc1.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12080 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-08-04 13:23:50 +00:00
msweet dd32079c83 Fix version check.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12075 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-07-31 01:12:53 +00:00
msweet d95bd167bc More cleanup.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12074 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-07-31 01:10:14 +00:00
msweet 240214ef23 Remove implementation of cupsGetClasses, cupsGetPrinters, and cupsTempFile;
these functions are still exported but they all now return empty results.

Update API documentation.

Update version number to 2.0b1 without SVN identifier.

Fix some more RPM spec file issues.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12073 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-07-31 00:58:00 +00:00
msweet c034d390f2 No more "what's new" file.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12072 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-07-31 00:43:05 +00:00
msweet eb4b1b5696 Prep for 2.0b1.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12071 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-07-31 00:37:33 +00:00
msweet f16ea703e1 Performance fixes for Get-Jobs (STR #2913)
Cache a few additional job attributes so that we normally do not need to load
the job attributes from the 'c' files.

If we do need to load them, limit the returned jobs to 500 at a time.

Implement first-index operation attribute.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12067 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-07-31 00:02:30 +00:00
msweet eec1fbc36f The scheduler now returns completed jobs in the correct newest-to-oldest order
(STR #4396)



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12066 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-07-30 18:30:44 +00:00
msweet 2a8db0cddf Save work on test suite to ensure we collect the exit status of all child
print processes.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12065 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-07-30 17:56:35 +00:00
msweet 23c665995a Sync up changelog.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12064 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-07-30 16:57:40 +00:00
msweet 053939b362 Update cupsd.conf man page to list the ErrorPolicy directive (STR #4457)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12059 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-07-28 14:04:32 +00:00
msweet 2e667a52c6 Also add the world-readable check.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12056 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-07-22 14:02:56 +00:00
msweet 9e92ab1978 Security: Addressed some more situations where symlinked files would be served
by the web interface (STR #4455)



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12055 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-07-22 13:58:51 +00:00
msweet 13713f49a4 Fix CGI scripts (STR #4454)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12051 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-07-18 20:37:44 +00:00
msweet a2751f30e7 Fix some compile errors.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12050 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-07-18 16:51:12 +00:00
msweet 26435c51e6 Sanitize hostname as needed.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12049 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-07-18 14:39:06 +00:00
msweet 81827f7547 Final changes to track TLS credentials (STR #1616)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12048 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-07-18 14:26:14 +00:00
msweet 74ac5fe799 Fix a few build errors with VC++
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12047 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-07-18 13:53:34 +00:00
msweet 52770f63a2 Implement httpLoadCredentials and httpSaveCredentials for SSPI.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12046 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-07-18 13:43:26 +00:00
msweet 9041146f32 Save work - fix the cert helper functions, implement httpCopyCredentials.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12045 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-07-17 21:32:21 +00:00
msweet 17eecbf1d8 Save work on SSPI certificate functions for validation and info.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12044 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-07-17 21:21:21 +00:00
msweet e32497ad0c Save work - properly implement server stuff, separate out cert creation.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12043 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-07-17 20:03:10 +00:00
msweet adad9dd69b Save work - testhttp now works to get HTTPS web page.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12041 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-07-17 16:42:49 +00:00
msweet d777d26d19 Update debugging/error reporting code to use FormatMessage throughout.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12040 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-07-17 16:35:49 +00:00
msweet 195c1f2d5e Save work - more debug stuff.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12039 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-07-17 16:24:52 +00:00
msweet 6abe9327bf Fix authorization (and other error) text from CGIs.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12037 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-07-16 19:48:22 +00:00
msweet 6c2b2b1944 Fix cookie handling for web interface.
Allow access to auth certificates in the state directory.

Remove client connection from select when all data has been read from client.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12034 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-07-16 19:37:34 +00:00
msweet 9870d12b8f Save work - client TLS negotiation now works, but hangs on a GET...
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12033 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-07-15 21:12:56 +00:00
msweet 4128527fd1 Automate creation of the libcups2.def file, since it is really out-of-date...
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12032 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-07-15 20:37:32 +00:00
msweet 33c9220c0a Get builds working on Windows again.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12031 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-07-15 19:57:59 +00:00
msweet 95d03f3375 Bump shared library version.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12030 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-07-15 19:39:18 +00:00
msweet 2ece34a9f8 Initial work on SSPI support in 2.0.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12029 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-07-15 18:59:26 +00:00
msweet bdc8d1ad53 Fix load/save of certificates.
Implement peer certificates.

Validation now works for GNU TLS (STR #1616)


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12028 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-07-15 14:01:27 +00:00
msweet 1b1b177663 Changelog.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12026 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-07-15 13:00:25 +00:00
msweet 2875da6cee Fix the fix for STR #4452 - incorrectly used httpAddrSize instead of
httpAddrLength.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12024 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-07-15 12:58:39 +00:00
msweet ff82e16936 Rest of the work for certificate validation/revocation for GNU TLS (STR #1616)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12016 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-07-14 18:20:31 +00:00
msweet 005f7f1f4c Save work.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12008 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-07-09 01:00:00 +00:00
msweet f79731e7b3 Allow more paths in sandbox.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12006 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-07-08 18:18:09 +00:00
msweet fba14c7f86 The LPD backend did not work with some versions of glibc (STR #4452)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12004 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-07-08 15:46:46 +00:00
msweet 77d314e60f Fix cupsd man page linking to old cups-deviced and cups-driverd man pages.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12003 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-07-08 15:29:14 +00:00
msweet d0facf4886 Get GNU TLS server-side working again.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12002 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-07-08 15:14:40 +00:00
msweet f3211b6d64 Make sure we send a 0-length chunk for CGI output, even for things like "Status".
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11999 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-07-03 19:15:31 +00:00
msweet 8db75d57ea Add USB quirk rule for Lexmark E230 (STR #4448)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11997 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-07-03 14:47:43 +00:00
msweet abdd2bb172 Changelog.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11994 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-07-03 14:38:26 +00:00
msweet 36618f454d Don't serve symlinked or non-world-readable files (STR #4450)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11993 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-07-03 14:37:16 +00:00
msweet f93b32b62c Make sure to redirect stdout/stderr to /dev/null when running certtool.
Add IPPS support to ippserver (still need to handle upgrade).


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11986 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-07-02 15:52:01 +00:00
msweet a94fe6cf47 More tweaks to sandbox profiles.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11981 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-07-02 12:14:02 +00:00
msweet d367062cea Changelog.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11980 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-07-02 10:36:34 +00:00
msweet ca979496f3 Fix compile errors.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11977 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-07-01 20:03:06 +00:00
msweet a15960a192 Copy over more stuff that needs to be implemented.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11976 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-07-01 19:57:42 +00:00
msweet f394e0f7c8 Fix compile errors.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11975 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-07-01 19:52:57 +00:00
msweet 172bdf5d74 Save work on catching GNU TLS code up to 2.0's new APIs.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11974 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-07-01 19:43:59 +00:00
msweet fb3777ccd1 Tweak the sandbox profiles for filters.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11973 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-07-01 17:17:56 +00:00
msweet 2adbc9df5c Fixed a bug in the CUPS_SC_GET_DEVICE_ID handling by the network backends
(STR #4447)



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11970 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-07-01 14:35:25 +00:00
msweet bde350ea9e Fix the debug output from the DNS-SD backend when using Avahi (STR #4444)
(Avahi doesn't include the trailing dot for the regtype value)


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11969 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-06-30 14:27:01 +00:00
msweet f5f2e19e88 Use "printer-uri" and not "printer URI".
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11959 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-06-26 18:30:19 +00:00
msweet b0206260c7 Fix localized error message from ipptool.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11958 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-06-26 18:26:05 +00:00
msweet 84465c7c28 <rdar://problem/17307802> SEED: BUG: Increased sandboxing means CPUS backends can't write files?
Fix automated test and duplicate deny issues.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11953 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-06-25 14:08:16 +00:00
msweet 08bb59b417 Update HTML of man page.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11952 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-06-25 14:07:14 +00:00
msweet 8a986d2738 Fixed the --disable-libusb configure option (STR #4439)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11950 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-06-24 19:03:02 +00:00
msweet 175bc7986c Fix IPP read error messages (STR #4440)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11947 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-06-24 18:43:20 +00:00
msweet 6e4925fbe6 One quick fix to prevent write access to the CUPS spool directory.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11943 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-06-24 16:02:51 +00:00
msweet 99328a65fc Add some more writable directories.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11941 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-06-24 15:56:25 +00:00
msweet 52f7b14a1a Fix man page error.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11938 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-06-22 12:44:05 +00:00
msweet 1d8db48d90 Allow domain sockets in /private/tmp.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11935 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-06-17 21:31:46 +00:00
msweet 546e096b26 Fix gzip with Lexmark printers, which apparently do not like having the gzip
header separated from the first block of compressed data
(<rdar://problem/17032025>)


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11933 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-06-17 16:00:05 +00:00
msweet b8f01dbcf4 Fix MaxJobTime time value bug (STR #4434)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11931 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-06-16 16:10:58 +00:00
msweet 5f1456afb4 Cleanup online help.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11930 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-06-16 15:33:00 +00:00
msweet b960a3cf9b Add missing HTML.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11929 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-06-16 14:22:54 +00:00
msweet 96be8b6c6e Make "Cancel All Jobs" use the Cancel-Jobs operation instead of Purge-Jobs
(STR #1914)


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11928 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-06-13 00:08:32 +00:00
msweet b4a8492a63 Final man page changes for STR #4372 and STR #4329.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11927 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-06-13 00:01:23 +00:00
msweet 53480915ef Save work on man pages.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11925 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-06-12 19:36:12 +00:00
msweet 27e0d6f8ec Save man page updates.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11924 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-06-12 19:10:33 +00:00
msweet 6e12033b28 More updates.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11923 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-06-12 12:55:34 +00:00
msweet cfa19b58e6 More man page updates.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11922 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-06-11 23:35:37 +00:00
msweet 0d1da748db More man page work.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11921 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-06-11 20:10:10 +00:00
msweet bf1bc4c6d3 More man page updates.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11920 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-06-11 19:03:59 +00:00
msweet 25d0c3feab Update more man pages.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11919 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-06-11 15:38:28 +00:00
msweet 8ac5fc54a8 Use NOSCRIPT for Go buttons - "links" text browser implements CSS but not
Javascript, so the NOSCRIPT element is a better fit (STR #4425)


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11914 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-06-10 19:48:45 +00:00
msweet ce0ddeb244 More man page updates.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11913 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-06-10 19:00:24 +00:00
msweet 6b2419da85 Add initial IPP Everywhere test suite.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11912 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-06-10 13:55:14 +00:00
msweet cffefbacf1 Use AC_PATH_TOOL for the *-config scripts we call (STR #4423)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11911 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-06-10 13:54:53 +00:00
msweet 93e3d3f5aa The User directive in client.conf did not override the USER environment variable
(STR #4426)



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11908 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-06-09 18:57:44 +00:00
msweet 5a58240905 The "snmp" option did not work with the network backends (STR #4422)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11907 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-06-09 18:35:32 +00:00
msweet e94cac038d Update some man pages (STR #4372)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11905 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-06-03 18:46:30 +00:00
msweet c4b264d40b Add another directory to the sandbox.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11903 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-05-28 17:54:04 +00:00
msweet 8757020d7a Fix IPPTOOL test file (STR #4420)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11896 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-05-27 15:00:06 +00:00
msweet 995b120a06 Red Hat renamed the libusb developer package (again).
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11895 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-05-27 14:57:09 +00:00
msweet 85cbdbc74a Fix localization of media sizes.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11894 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-05-23 03:18:00 +00:00
msweet ddf95fe678 Update lprm man page for modern markup and "canceled" spelling.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11893 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-05-23 02:45:48 +00:00
msweet 554aa7b749 Dates in non-UTF-8 locales did not display correctly (STR #4388)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11889 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-05-22 13:54:15 +00:00
msweet cf3d4dd6dc IPP queues using hardcoded credentials would ask for credentials (STR #4371)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11888 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-05-22 13:16:25 +00:00
msweet e639770bd4 Update documentation.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11887 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-05-22 13:15:20 +00:00
msweet eceee985ef Fix PWG Raster auto-typing (STR #4417)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11886 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-05-22 12:56:59 +00:00
msweet 6a87b7d7ea Support TIFF files in ipptool (STR #4418)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11885 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-05-21 15:25:30 +00:00
msweet 104fd4ae9f Save work on destination API unit test program.
Add cupsGetDestWithURI API.

Add cupsLocalizeDestMedia API.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11884 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-05-16 21:54:22 +00:00
msweet ae26bf708c More changes for STR #4414 to fix cupsGetDestMediaByIndex - wasn't copying the
size data over correctly (two different structs...)


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11882 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-05-16 21:02:15 +00:00
msweet 0033909448 Fix formatting.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11881 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-05-16 20:59:22 +00:00
msweet 9fcdd2507f Add -P option and PAUSE directive to ipptool.
Save work on IPP Everywhere test suite.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11880 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-05-16 06:14:11 +00:00
msweet 5b69e934ac cupsGetDestMediaCount did not work for CUPS_MEDIA_FLAGS DEFAULT (STR #4414)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11874 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-05-13 14:57:34 +00:00
msweet 4cecbbe836 Add localized error message for failed TLS negotiation.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11872 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-05-09 21:25:04 +00:00
msweet 8441e27ce4 CUPS did not compile when Avahi or mDNSResponder was not present (STR #4402)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11871 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-05-09 20:57:11 +00:00
msweet a19c48e0d0 The configure script incorrectly added libgcrypt as a GNU TLS dependency
(STR #4399)



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11870 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-05-09 20:54:15 +00:00
msweet b4f46ff54c The CUPS headers incorrectly needed libdispatch for blocks support (STR #4397)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11869 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-05-09 20:52:03 +00:00
msweet 67dde2ccb9 The scheduler did not add the "job-hold-until-specified" reason when holding a
job using the lp command (STR #4405)



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11868 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-05-09 20:45:53 +00:00
msweet 88a9886677 Fix an authentication race condition in cupsSendRequest (STR #4403)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11866 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-05-09 20:20:16 +00:00
msweet 651e0a226e The IPP backend did not abort a job when the printer did not validate the
supplied options (<rdar://problem/16836752>)



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11865 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-05-09 20:03:14 +00:00
msweet d3d824a355 Changelog.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11861 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-05-08 23:01:24 +00:00
msweet 82bf228397 Fix bug in cupsGetResponse.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11860 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-05-08 22:57:57 +00:00
msweet 38a68cfbee Sync up with some build changes.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11859 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-05-08 22:42:44 +00:00
msweet 291e472758 Do compression to a separate 64k buffer for larger chunks.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11853 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-05-08 17:51:12 +00:00
msweet f51f3773d1 Add code to validate trust when printing via the IPP backend.
Add new CUPS_VALIDATECERTS (ValidateCerts in the conf file) setting to control
whether we require the common name to match the host name, default is no.
(currently)

httpCredentialsGetTrust now only checks hostname/common name matches when
validation is enabled.  Otherwise we just look for changes to certs.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11851 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-05-07 23:55:35 +00:00
msweet 524c65e662 Save work on cert stuff.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11850 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-05-07 23:12:48 +00:00
msweet 355ddf4188 Make sure long-edge feed bounding box is correct.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11848 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-05-07 00:26:44 +00:00
msweet 7d58a105fb Set CERTTOOL_EXPIRATION_DAYS environment variable for certtool, to get certs
that last longer than 30 days on OS X (<rdar://problem/16763836>)


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11846 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-05-02 12:10:10 +00:00
msweet e13ce0be7a <rdar://problem/11829070> ER: Could we consolidate Wi-Fi and USB connections to a printer as a single printer?
Additional changes requested by Jim...


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11844 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-05-02 11:58:54 +00:00
msweet 88f1e9c8ca Save work.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11843 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-05-01 19:46:51 +00:00
msweet 2573136055 Move the deck chairs a bit so that the TLS stuff is separated from the HTTP
stuff.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11841 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-04-29 16:39:25 +00:00
msweet c52d341f7e Return 0 from all ippGet* functions on error, to match how all other CUPS APIs
work.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11840 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-04-29 15:57:26 +00:00
msweet 3c218cf569 Fall back to wireless if USB doesn't respond (<rdar://problem/11829070>)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11838 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-04-24 18:40:31 +00:00
msweet d489df6a97 Fix mapping of OutputBin values such as "Tray1" (<rdar://problem/16685606>)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11832 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-04-24 15:04:00 +00:00
msweet 376d7c6937 Wire up most of the certificate validation code for OS X. Still need to
finish the keychain and subject alternate name changes, but we now have the
core validation framework in place.

Also need to decide whether to allow requests to untrusted connections by
default or require all applications to copy and validate manually.

- Updated httpCredentialsAreTrusted to require the common name.
- Implementation of httpCredentialsAreTrusted, httpCredentialsGetExpiration,
  httpCredentialsIsValidName, and httpCredentialsString.
- Added display of credential info to testhttp program.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11829 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-04-23 16:37:05 +00:00
msweet 6be126d133 Add yet another key to the launchd plists...
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11827 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-04-23 00:44:27 +00:00
msweet c3ebc4c673 PPD cache did not reflect full set of media sizes.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11826 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-04-23 00:38:21 +00:00
msweet 9653cfdfbb Save work.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11824 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-04-21 12:23:56 +00:00
msweet 2dabbdab04 Fix configure script.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11823 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-04-21 12:22:03 +00:00
msweet f9988e18ec Save documentation changes.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11822 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-04-21 11:49:06 +00:00
msweet da51650158 More documentation install cleanup.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11820 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-04-15 20:59:56 +00:00
msweet d2001a49cc Remove more files.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11819 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-04-15 20:56:52 +00:00
msweet c390f212cb Remove more unnecessary documentation.
Update cups-files.conf man page.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11818 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-04-15 20:56:19 +00:00
msweet 7131e2853a More man page modernization.
Combine and simplify documentation of cupsd helper programs into a single man
page.

Document the client.conf file as deprecated.

Document the classes.conf, printers.conf, and subscriptions.conf files as
subject to be changed and not to be hand-edited.

Remove separate HTML documentation for client.conf - the man page is now "good
enough"...

Fix usage comment at the top of cups-exec.c.



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11817 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-04-15 16:31:11 +00:00
msweet 6b13fa61b6 The ipptool program now supports EXPECT statements for collection member
attributes (<rdar://problem/15355218>)



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11806 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-04-09 16:12:27 +00:00
msweet 9498f97a9c The ipptool program now supports collection attributes with multiple values
(<rdar://problem/15355124>)

Add a test file for FaxOut.

Update the get_token function to allow {, }, and "," to be values of their own.

Update the collection code to allow multiple top-level collection values (still
no support for embedding member attributes with multiple collection values,
however we don't need to test that right now...)


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11802 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-04-08 20:42:50 +00:00
msweet be76a9737d Make sure that the sample drivers include all installed localizations
(<rdar://problem/14756625>)


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11800 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-04-08 19:53:57 +00:00
msweet 698fa0aa4a <rdar://problem/16532240> Root Regression: On restart or checking share box in sys pref printer uri changes to //dev/null
Fix /DefaultPrinter handling.

Also add restart testing (just for this specific issue for now) to the "make check" suite.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11798 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-04-07 15:18:44 +00:00
msweet 2909c66c50 Save work.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11796 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-04-04 21:28:49 +00:00
msweet bfbd0197bd More man page updates.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11793 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-04-04 19:02:20 +00:00
msweet c9dcc485c5 <rdar://problem/16495000> CUPS: Disable gratuitous logging by default
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11789 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-04-02 16:52:53 +00:00
msweet f2a31e2181 Add support for hierarchical searches (STR #4395)
- Add "atend" and "curindex" members to ipp_t to track position in search.
- Update ippFindAttribute and ippFindNextAttribute to search collections.
- Add unit tests to testipp for it.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11783 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-03-31 14:10:13 +00:00
msweet 0a393e6a40 Allow backends to have group read + execute permissions and still run as root
(STR #2935)


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11782 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-03-28 21:03:43 +00:00
msweet 1dd965f62b Use </DefaultPrinter> and </DefaultClass> to close the default printer/class (STR #4153)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11781 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-03-28 20:57:22 +00:00
msweet 3b94e1e1cd Use _httpDecodeURI private API to remove percent encoding of phone number and
prefix (pre-dial) strings.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11778 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-03-28 20:48:28 +00:00
msweet f387542e11 Remove lppasswd man page, and clean up dependencies.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11777 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-03-28 19:18:10 +00:00
msweet e066087949 Drop lppasswd and (server-side) Digest authentication (STR #4321)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11776 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-03-28 19:16:05 +00:00
msweet a99f5c6a05 Add a "how do I get help?" section, and make these headings subsections under the DESCRIPTION section.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11774 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-03-28 16:01:14 +00:00
msweet 969af9354e Add cups(1) man page with CUPS overview information and relevant links.
Fix link embedding for man pages.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11773 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-03-28 15:55:05 +00:00
msweet 84987361cb Add --list-filters options to cupsfilter (STR #4325)
Also update cupsfilter to look for cups-files.conf instead of cupsd.conf (this
was never updated after the security changes to use cups-files.conf)

Update the man page to use the "modern" markup and sections.

Prep for future cups(1) man page that provides an overview of CUPS and the
standard environment.

Update man page converter to not add whitespace before punctuation.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11770 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-03-28 14:49:58 +00:00
msweet ef66db4b1b Fix changelog.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11769 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-03-28 13:59:52 +00:00
msweet d7484965df Changelog.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11768 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-03-28 13:52:25 +00:00
msweet b5b025cf56 Apply changes from 1.7 branch; still need to migrate the SSPI code to the new
TLS infrastructure.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11762 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-03-28 13:05:06 +00:00
msweet ca6b43fc04 Update CUPS filter/backend programming guide (STR #4355)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11758 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-03-27 20:57:18 +00:00
msweet cfeac714b4 Fix a memory leak in the label printer driver (STR #4393)
Make sure we free CompBuffer and LastBuffer as needed in EndPage.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11755 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-03-27 17:06:12 +00:00
msweet 1e9586e168 Printer classes were not accessible on OS X (<rdar://problem/16385643>)
Map localhost access to the domain socket when the port number matches.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11749 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-03-27 14:35:02 +00:00
msweet 6347efdfb6 Fix install failure.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11747 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-03-27 01:15:48 +00:00
msweet 7cad9d0f81 Changelog.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11744 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-03-26 21:16:52 +00:00
msweet 654051c554 <rdar://problem/16351701> Dial string is escaped twice by the parcent mark in IPPFAXOUT.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11743 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-03-26 21:15:32 +00:00
msweet ad6f549048 Fix early 200 response bug.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11738 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-03-26 21:05:19 +00:00
msweet 60bc88e136 Don't add // to geo: URIs.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11736 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-03-26 19:51:59 +00:00
msweet 42404685b7 Fix documentation and naming of subscription operations (STR #4389)
(also maintaining compatibility mappings for names and enums...)


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11733 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-03-25 18:01:41 +00:00
msweet 343276df2e Fix cups-exec calling bug on Linux.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11729 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-03-21 19:14:42 +00:00
msweet ab428cc05e Try again...
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11728 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-03-21 18:46:35 +00:00
msweet a10bb5f65f And no testprint file either.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11727 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-03-21 18:45:11 +00:00
msweet 1b30cc97ab Don't package the banner files on Linux.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11726 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-03-21 18:41:55 +00:00
msweet f463b80ca2 One more file...
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11725 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-03-21 18:37:13 +00:00
msweet 071b290622 Another fix.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11724 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-03-21 18:35:59 +00:00
msweet 8c29c8906c Work on fixing RPM builds.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11723 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-03-21 18:34:38 +00:00
msweet 5950e7bd5e Fix systemd build on Linux.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11722 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-03-21 18:28:30 +00:00
msweet e7f455a5b3 Fix builds on Linux.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11720 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-03-21 18:17:50 +00:00
msweet 5d62953211 Remove AppleTalk header checks (wow, that should have been removed 4 years ago!)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11719 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-03-21 18:07:23 +00:00
msweet db6ac61559 Fix makefile tab issues.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11718 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-03-21 18:04:48 +00:00
msweet 1720786e61 Add systemd support to cupsd (STR #3282)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11717 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-03-21 16:42:53 +00:00
msweet f2b8078bd6 Save work on generalizing startup of cupsd…
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11716 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-03-21 14:50:24 +00:00
msweet 9ca6ba8fcb Rename configure.in to configure.ac.
Rename cups-launchd.m4 to cups-ondemand.m4 in preparation for systemd support.

Add more files to the Xcode project.

git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11715 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-03-21 13:52:34 +00:00
msweet 4745f485c4 Fix handling of default username.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11705 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-03-19 18:33:23 +00:00
msweet c12b983aa4 More sandbox tweaking for IOKit access of USB/Bluetooth.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11702 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-03-18 17:50:41 +00:00
msweet 3f4342fa09 More sandbox tweaks for Fax.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11701 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-03-17 18:28:28 +00:00
msweet fa84ca4b57 Update the localizations for some printer-state-reasons (<rdar://problem/16340893>)
This changes the paper and output area/tray messages to be indefinite about
the number of trays, since these reasons are "roll-up" values for all trays.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11698 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-03-17 11:58:18 +00:00
msweet ebd5991b0f More Avahi changes to make cupsd resiliant to Avahi failures (STR #4373)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11687 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-03-05 21:10:04 +00:00
msweet 4db417411a cupsEnumDests did not set the "is_default" field (STR #4332)
Copy the default code from cupsGetDests2...


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11686 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-03-05 20:11:06 +00:00
msweet 6daf363669 Fix typo (STR #3252)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11685 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-03-05 20:03:29 +00:00
msweet 9ee955fecb Update Linux "relro" support (STR #4349)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11683 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-03-05 20:00:54 +00:00
msweet f627443d1b Scheduler crash due to unknown circumstances leading to NULL policy pointer (STR #4378)
This should never happen, but could be due to a patch applied for Debian/Ubuntu.

This change logs the occurrence and uses the default policy if the policy is
NULL.  If DefaultPolicyPtr is NULL (something that definitely should never
happen when cupsd is accepting client connections) then we will still crash.



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11681 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-03-05 19:07:24 +00:00
msweet fa17c11e8a cupsDoIORequest could miss the server status, causing failed lpadmin and other administrative commands (STR #4386)
Look for 100-continue or lower, and get the final status code if so.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11680 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-03-05 18:51:44 +00:00
msweet c51dcb4892 cupsEnumDests didn't always call the callback function (STR #4380)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11674 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-03-05 12:52:57 +00:00
msweet c277f98cbc Initial work on man page modernization (STR #4372)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11671 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-03-04 18:16:46 +00:00
msweet b846cf0155 Don't provide human-readable log message.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11669 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-03-04 14:53:34 +00:00
msweet 0e53e7d1bd Tweak.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11666 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-03-03 18:55:03 +00:00
msweet 96964950c6 Tweak.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11664 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-03-03 18:52:14 +00:00
msweet d9183105e4 More tweakage.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11663 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-03-03 18:40:35 +00:00
msweet 6e83de0532 More sandbox tweaks.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11661 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-03-03 16:53:05 +00:00
msweet 8a6466eba5 More sandbox tweaks.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11659 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-03-03 16:49:32 +00:00
msweet 80693400b1 Remove SVN Id keywords from config files.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11658 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-03-03 16:46:23 +00:00
msweet e54d62b280 Don't use launchd_activate_socket on 10.9.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11656 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-02-28 19:29:29 +00:00
msweet 3b3a130ad9 Only log when we aren't using the generic class driver.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11653 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-02-28 17:19:43 +00:00
msweet 9fb65b8971 Log 32-bit vs. 64-bit class driver usage.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11649 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-02-27 17:06:06 +00:00
msweet 951665081c Changelog update.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11644 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-02-27 15:58:44 +00:00
msweet 21459fa1fa "lp -i job-id -H hold" did not work (STR #nnn)
Add Set-Job-Attributes and Set-Document-Attributes to job and document
creation operation lists.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11640 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-02-24 16:09:05 +00:00
msweet e7dc514dc6 Don't show error message when we are just canceling a job to reprocess it.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11637 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-02-21 19:49:30 +00:00
msweet 8e67b75b88 Resend jobs as raster if the original format fails, e.g., PDF (<rdar://problem/15583721>)
Add retry_as_raster flag to job object.

Add new JOBSTATE: cups-retry-as-raster message.

When starting a job, check whether the flag is set, and if so use image/urf
or image/pwg-raster as the alternate format.



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11635 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-02-21 19:42:14 +00:00
msweet d309dce32a Remove the deprecated ServiceIPC key and add the recommended EnableTransactions
key.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11633 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-02-21 13:05:19 +00:00
msweet 4c6277cc72 Sandbox tweaking.
ipptool man page tweak.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11631 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-02-21 12:56:34 +00:00
msweet 3a43047f18 ipptool doco updates (STR #3259, STR #4346)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11629 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-02-20 16:42:16 +00:00
msweet 8dd318e55b Several libcups files did not have the Apple license exception notice (STR #4361)
VEOL2 isn't available on older System V versions, apparently...


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11628 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-02-20 16:29:50 +00:00
msweet 6539a0afd5 Several libcups files did not have the Apple license exception notice (STR #4361)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11627 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-02-20 16:15:09 +00:00
msweet 0cf0c416ec Fix a D-BUS threading issue that caused the scheduler to crash (STR #4347)
Apparently D-BUS is not thread-safe by default...


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11626 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-02-20 16:09:55 +00:00
msweet bb0a112b94 The scheduler now automatically reconnects to Avahi as needed (STR #4370)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11625 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-02-20 16:01:02 +00:00
msweet 209cc9b629 The scheduler did not handle GET requests for the log files properly (STR #3265)
Limit the number of bytes read to the original file size.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11624 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-02-20 15:21:05 +00:00
msweet 5353e5ee00 The dnssd backend did not always report all discovered printers using Avahi
(STR #4365)

Keep track of active browsers, don't stop until Avahi gives up.



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11622 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-02-19 20:15:53 +00:00
msweet 7b466f29e8 The Zebra printer driver did not properly handle negative "label top" values
(STR #4354)



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11621 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-02-19 20:07:09 +00:00
msweet 1216300668 Protect against HTML in the URL (STR #4356)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11620 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-02-19 19:56:56 +00:00
msweet 2644cfc5f2 The scheduler did not always update the MakeModel value in printers.conf after
updating the driver (STR #4264)



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11618 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-02-19 19:21:18 +00:00
msweet d6ea1b93c5 Remove old logging of IPP conformance issues.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11617 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-02-19 19:16:36 +00:00
msweet ffb3d9d39f Changelog for STR #4351 (cups-lpd doesn't support large files)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11616 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-02-19 19:07:31 +00:00
msweet d423d83d10 Fix a bug in the status reading code when sending a compressed data stream to an IPP printer/server (<rdar://problem/16019623>)
Don't use the compression buffer when reading, don't use the decompression
buffer when writing.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11613 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-02-19 16:49:29 +00:00
msweet a27a134a70 Don't use numeric hostnames for certificates (always a hostname).
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11612 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-02-19 16:36:17 +00:00
msweet 777e09f895 More sandbox profile tweaks.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11609 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-02-19 16:04:18 +00:00
msweet e26851264d Tweak SMB rules again.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11607 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-02-18 20:13:58 +00:00
msweet 5e787d6f9c Tweak SMB rule.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11605 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-02-18 19:50:46 +00:00
msweet 7364ba24ec Fix typo.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11602 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-02-18 19:21:40 +00:00
msweet bcc4b65596 Add more exceptions to the sandbox profile.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11599 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-02-18 18:58:40 +00:00
msweet df0f06aec1 Fix clang warning.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11598 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-02-18 18:58:19 +00:00
msweet 5096353d12 Add debug logging for launchd checkin.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11596 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-02-18 18:12:23 +00:00
msweet 076239869a Fix build errors on Fedora.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11594 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-02-14 20:09:01 +00:00
msweet 02f3db8a51 Support new launch_activate_socket API on OS X (<rdar://problem/16069952>)
Check for new function at configure time.

Define prototype pending public API header.

Use it to get the list of Listeners sockets in launchd_checkin.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11591 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-02-14 16:07:13 +00:00
msweet 392aa79d2d Make sure job template attributes are included in Validate-Job requests.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11587 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-02-13 19:49:51 +00:00
msweet ea77c0117d <rdar://problem/16041820> Initial edit of a new document on Syrah hangs, apparently waiting for printing info
Increase default idle exit timeout to 60 seconds, as 10 seconds can make launchd
throttle cupsd relaunches.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11585 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-02-13 19:37:53 +00:00
msweet 3e4dcdb951 Correctly log the connected client from a domain socket.
Update the comment in the launchd plist to avoid a BBEdit syntax coloring bug.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11581 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-02-12 16:15:46 +00:00
msweet 28c194b081 <rdar://problem/15939788> Improve CUPS sandboxing
Fix a bug in cups-exec where (for some reason) the call to execv was missing...

Update cups-exec to take real options (-u uid, -g gid, -n nice-value) so that
existing applications that use cups-exec won't need changes.  This will also
allow for future changes without breaking things.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11578 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-02-12 01:27:42 +00:00
msweet 5a757074a3 Fix whitespace.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11577 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-02-11 19:51:56 +00:00
msweet 8fe0183a71 <rdar://problem/15939788> Improve CUPS sandboxing
- Use separate profiles for filters and backends.
- Add Sandboxing configuration directive to control whether a strict or relaxed
  profile is used.
- The new strict profile is a whitelist profile that does not allow unlimited
  networking, among other things.



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11576 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-02-11 15:06:01 +00:00
msweet 8f787fcac9 Add missing IPP definitions.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11575 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-02-11 15:04:31 +00:00
msweet e3adfc1f0f Fix double-include that caused problems.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11574 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-02-11 15:04:16 +00:00
msweet c82f05eadb <rdar://problem/15958253> 14A125b: cupsd console output when launching AddPrinter
Use posix_spawn and move all of the setuid/setgid/setgroups/nice stuff to
cups-exec.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11564 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-02-07 21:34:06 +00:00
msweet 7e86f2f686 Full sweep of all Clang warnings, plus some bug fixes for incorrect memcpy usage.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11558 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-02-06 18:33:34 +00:00
msweet b1564baed9 Fix clang-reported issues (<rdar://problem/15936066>)
- httpAddrGetList could leak memory.
- cupsRasterInterpretPPD could access freed memory.



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11550 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-01-29 16:29:50 +00:00
msweet 95d1f98299 Ignore generated testcache unit test program.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11548 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-01-29 01:53:42 +00:00
msweet b2b9911d6d Add PPD cache unit test program.
(Current focus is on finishings)


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11547 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-01-29 01:52:38 +00:00
msweet 739a2093b0 cupsRasterInterpretPPD now supports the Orientation header in order to support long-edge feed raster printers (<rdar://problem/15837926>)
Rotate page size and margins based on Orientation key in page device dictionary.  Note that this requires support in the RIP filter as well.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11542 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-01-22 01:40:13 +00:00
msweet 8aaeeaa9eb Update Xcode config.h file.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11535 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-01-15 19:07:03 +00:00
msweet 5bc8ea6613 Add more debug stuff.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11534 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-01-15 19:04:56 +00:00
msweet 27d0ed525f Also create detached PGP signature of tarballs.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11519 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-01-08 16:36:57 +00:00
msweet 46cc8b817f Fix typo in spec file.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11515 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-01-08 16:24:25 +00:00
msweet c2b391f776 Update copyrights.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11512 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-01-08 16:08:47 +00:00
msweet 4541d836ce CUPS incorrectly used the USER environment variable when the name did not match
the user ID (STR #4327)



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11509 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-01-08 16:00:10 +00:00
msweet b933058eb6 Changelog update.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11507 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-01-08 13:59:19 +00:00
msweet e9dd00a00d The D-BUS notifier did not remove its lockfile (STR #4314)
Add signal handler and remove lockfile.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11499 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-01-06 22:17:44 +00:00
msweet e584c0683d lpq and lpstat did not list jobs in the correct order when priorities were specified (STR #4326)
The default list should be ActiveJobs, not Jobs.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11498 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-01-06 22:05:26 +00:00
msweet 84ec3a8445 Using "@IF(name)" in an Allow or Deny rule did not work (STR #4328)
Move the cupsdNetIFUpdate call before the name check - we need to update for all names.

Add debug logging to show interfaces that are skipped and other "errors".


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11497 a1ca3aef-8c08-0410-bb20-df032aa958be
2014-01-06 21:59:35 +00:00
msweet f2a7bf2a93 CUPS did not support "auto-monochrome" or "process-monochrome" for the "print-color-mode" option (<rdar://problem/15482520>)
Map monochrome to auto-monochrome or process-monochrome as needed.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11494 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-12-22 05:29:06 +00:00
msweet eb383c319d The IPP backend did not wait for a busy printer to become available before attempting to print (<rdar://problem/15465667>)
When busy, set the last IPP status to busy so we retry.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11490 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-12-22 05:17:53 +00:00
msweet 878389c8cd Shared printers could become inaccessible after a few days on OS X (<rdar://problem/15426838>)
Need to set TMPDIR so that the sandbox profiles are created in a safe temporary directory.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11487 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-12-22 05:04:29 +00:00
msweet 83bc2aac57 Security: the lppasswd program incorrectly used settings from ~/.cups/client.conf (STR #4319)
Don't use the HOME environment variable when running setuid, setgid, or as root.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11484 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-12-22 00:44:02 +00:00
msweet a80b2360c9 Don't do TLS upgrade unless the Upgrade header says to...
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11482 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-12-21 18:39:06 +00:00
msweet ebeb3268e4 Remove commented-out code.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11481 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-12-21 17:39:24 +00:00
msweet c913d72625 Don't try to access non-existent keychain.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11479 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-12-19 20:29:32 +00:00
msweet eb66bc71be Make sure we don't use functions that are not available.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11477 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-12-19 20:25:35 +00:00
msweet bfb0ab1327 Update CMP to reflect current CUPS.org web site.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11472 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-12-19 16:41:53 +00:00
msweet 8a4b51bb6c Fix appearance on Firefox.
Fix link to CUPS.org.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11470 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-12-18 23:56:11 +00:00
msweet ebc0869ce2 Use translucent header/footer.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11469 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-12-18 23:36:28 +00:00
msweet 2eefda5ea5 Tweak web interface content.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11467 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-12-18 20:20:32 +00:00
msweet 41e0907c48 Server-side TLS is now working (yay!)
Still need to finish up the load/save/compare function for certs, and do the
corresponding code for GNU TLS.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11466 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-12-18 20:20:04 +00:00
msweet c0459938a5 Save work...
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11458 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-12-12 17:55:04 +00:00
msweet 097488cff0 Drop support for ServerCertificate and ServerKey directives; now we just support
ServerKeychain on all platforms.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11457 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-12-11 02:23:54 +00:00
msweet 3af9ac9e69 The libusb-based USB backend incorrectly used write timeouts
(<rdar://problem/15564888>)

Closer to final server TLS APIs.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11455 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-12-09 19:26:39 +00:00
msweet cd3614ae67 Sync up with IPP Finishings 2.0 values.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11449 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-12-06 01:58:28 +00:00
msweet 5a1adc8db8 Changelog.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11447 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-12-05 20:01:42 +00:00
msweet f4047845ec Fix builds.
Fix tel: URIs (<rdar://problem/15418463>)


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11444 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-12-05 19:51:58 +00:00
msweet dafebafde5 Save work on TLS stuff (does not compile)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11436 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-11-21 17:33:57 +00:00
msweet 0042c0d7c2 Changelog.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11428 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-11-12 14:11:33 +00:00
msweet 72d05bc912 Save work.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11426 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-11-08 20:42:05 +00:00
msweet 23ee1efa40 Fix typo.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11423 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-11-08 19:50:52 +00:00
msweet 380e29d55c Current iconv uses "SHIFTJIS_X0213" instead of "jis-x0213".
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11421 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-11-08 19:43:56 +00:00
msweet 2bf2b8e94a Fix crash bug with GNU TLS.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11420 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-11-08 16:01:19 +00:00
msweet 724e1819b1 Drop OpenSSL support.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11419 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-11-08 15:35:27 +00:00
msweet 59ac438c6b Fix free of argv values in cupsdContinueJob.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11416 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-11-08 15:16:53 +00:00
msweet 3aec6cf0fe Eliminate compiler warning.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11414 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-11-07 23:23:23 +00:00
msweet e3dfbe13b3 <rdar://problem/15313228> "Canceling stuck job after XXX seconds" message should use "job-cancel-after" value
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11408 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-11-07 14:33:00 +00:00
msweet 1e3e80bb39 Change new keyword to "cups-waiting-for-job-completed" (<rdar://problem/14323704>)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11406 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-11-07 12:47:57 +00:00
msweet 581dae2da0 Dropped "dark wake" support on OS X, which was preventing portables from going
to sleep when there was a stuck job. We now use a variation of the CUPS 1.4
sleep support to do a cleaner sleep (<rdar://problem/14323704>)

Aside from removing all of the power assertions, we now track a new
"cups-waiting-for-completed" state keyword that tells cupsd it can SIGKILL a
backend without side-effects - then if we are just waiting for the job to
complete we can go to sleep immediately.



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11403 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-11-07 01:20:23 +00:00
msweet a866043016 More changelog.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11401 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-11-06 21:38:03 +00:00
msweet 4f2b0ae1c9 Changelog.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11400 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-11-06 21:36:43 +00:00
msweet 79a784c4d6 Fix "make check" on Linux (<rdar://problem/14292998>)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11398 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-11-06 20:11:11 +00:00
msweet dd3326384f Get builds going again with GNU TLS.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11393 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-11-06 01:57:02 +00:00
msweet 462b6e746c Printing to a raw queue could result in corrupt output due to opportunistic
compression (<rdar://problem/15008524>)

(a similar fix needs to be applied to older CUPS distributions)


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11384 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-11-05 15:12:57 +00:00
msweet 93aa5239a0 One more tweak - pull in gnutls-devel and pam-devel unconditionally.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11382 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-11-05 02:23:49 +00:00
msweet 7f5ce42e30 The RPM spec file did not list the build requirements; this was on purpose, but
now we are listing the Red Hat package names (<rdar://problem/15375760>)



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11381 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-11-05 02:15:43 +00:00
msweet 7d6442889d <rdar://problem/15382819> cups.org: String pool corruption bug
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11377 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-11-05 01:05:00 +00:00
msweet 72f5017073 <rdar://problem/15332672> cups.org: Always use cupsdLogJob for job log messages
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11375 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-11-05 00:45:40 +00:00
msweet da00323434 <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/trunk@11373 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-11-04 23:47:03 +00:00
msweet d726db79c5 Fix another STACK-detected bug.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11371 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-11-01 18:21:42 +00:00
msweet 148d36993e Fix a few STACK-detected issues:
backend/ipp.c: Off-by-one error in quote_string
test/ipptool.c: Avoid possible optimizer error by using ippSetCollection API.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11369 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-10-30 15:08:07 +00:00
msweet e12bb97dc5 Verify that the lpadmin command lays down a PPD from a driver info file.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11368 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-10-28 16:00:50 +00:00
msweet ff2b08f99c Fix <rdar://problem/15331639> cups.org: Regression in auto-debug logging
Need to use memcpy instead of strlcpy or strcpy.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11366 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-10-28 15:35:44 +00:00
msweet d226322162 Fix potential crasher if a compressed request is interrupted.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11355 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-10-23 20:33:10 +00:00
msweet 3463c27a30 Fix IPP backend to send print-color-mode (<rdar://problem/15259768>)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11352 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-10-23 19:53:00 +00:00
msweet 13e6b94700 Some more tweaks for the mobile css...
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11350 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-10-21 22:24:07 +00:00
msweet dfc45c1b97 Fix httpWriteResponse state values after a 0-length response.
Fix text/css MIME type rules (so css files don't get mistaken for C source)

New web interface templates and stylesheet that works better on mobile
browsers like the iPhone.

Touch icon for mobile bookmarks.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11349 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-10-21 21:41:21 +00:00
msweet e52a144303 Remove web interface localizations (they will no longer be valid in 2.0...)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11348 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-10-21 16:25:09 +00:00
msweet 43dcaf3bb6 Fix some state transition breakage.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11347 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-10-21 16:22:14 +00:00
msweet b0f269389e The lpadmin command did not send the PPD name from the "-m" option
(<rdar://problem/15264697>)



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11344 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-10-18 21:14:44 +00:00
msweet 0d40cb1e4d Fix some issues detected by clang.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11343 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-10-18 20:55:33 +00:00
msweet 5a1d7a1769 Remove support for AIX, HP-UX, and OSF/1.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11342 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-10-18 20:36:01 +00:00
msweet 7855ab5635 Drop old private APIs that are no longer used/supported.
Sync up exports file for Windows.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11341 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-10-18 17:18:20 +00:00
msweet d3d894744d Get builds working again (still need to fill in the server-side stuff for TLS)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11340 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-10-17 16:44:47 +00:00
msweet 2c85b75239 Save work to move all of the TLS support code into libcups (this does not compile)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11338 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-10-17 15:53:07 +00:00
msweet 87e9839293 Use httpAddrListen and new httpAddrClose in cupsd and other places that need it.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11337 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-10-17 00:23:06 +00:00
msweet a73ca01e07 Fix "make check".
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11332 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-10-16 01:27:57 +00:00
msweet e200616a7b Save work - almost have "make check" working again (some logging and cups-driverd
issues to work out...)


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11329 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-10-15 17:49:31 +00:00
msweet d21dc0ed72 Save work on cupsd - almost there...
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11326 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-10-09 22:44:03 +00:00
msweet 48bd1142c9 Re-enable name resolution of client addresses.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11325 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-10-04 15:54:22 +00:00
msweet 5ec1fd3d9e Save work; public accessors for more stuff, continue transition away from private
APIs.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11324 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-10-04 03:11:42 +00:00
msweet e6b1a6a976 New APIs for servers.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11322 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-10-01 03:39:09 +00:00
msweet 996acce876 Save work.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11321 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-09-30 21:29:56 +00:00
msweet 5f8f4499da Changelog.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11317 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-09-27 16:17:50 +00:00
msweet f7e3306ab0 <rdar://problem/14302628> SNMP: Use prtMarkerSuppliesClass property to determine fillable/consumed value
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11316 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-09-27 16:16:45 +00:00
msweet 28a463e028 Log power messages.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11313 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-09-27 15:08:17 +00:00
msweet 928b43f75e <rdar://problem/15065555> CUPS sometimes leaves behind a zombie file
Delete backup PPD and interface script files.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11310 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-09-27 14:22:51 +00:00
msweet c6fc9716eb <rdar://problem/15090332> CUPS responds to HEAD requests with incorrect content-type header, responds with request
Don't pass request line as content type.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11307 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-09-27 14:08:59 +00:00
msweet 9d66195840 Drop "contents" requirement from source file header. Most IDEs now provide a list of
functions and it is getting harder and harder to actually get IDEs to run external
scripts these days to generate the list.



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11306 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-09-27 14:00:08 +00:00
msweet 61893d0b8e <rdar://problem/14323704> J90 PreEVT/Schooner: HP Photosmart Prem C310 prevents system from going to sleep.
Log when we wake.



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11295 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-09-23 12:00:42 +00:00
msweet ebaac3df80 <rdar://problem/13655599> Seed: Print queue JOBS disappear after computer Wakes up from Sleep.
Need to provide -default and -supported attributes, map job-cancel-after-xxx
to integer.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11282 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-09-11 17:55:16 +00:00
msweet 982069db84 <rdar://problem/13655599> Seed: Print queue JOBS disappear after computer Wakes up from Sleep.
Reset cancel time after wake from sleep, support job-cancel-after Job Template
attribute to allow command jobs to be canceled after a suitable amount of time.



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11280 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-09-11 17:45:56 +00:00
msweet 9c47743020 Fix build failures.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11278 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-09-10 21:59:52 +00:00
msweet 91123e2c82 <rdar://problem/14672918> Use UUID from dnssd URI to identify instance of printer
Don't log the "still looking for xxx" message, let Jim screen those bugs :)



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11276 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-09-10 19:52:13 +00:00
msweet 81441dd34a Fix memory leak of regular expression.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11274 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-09-10 19:19:26 +00:00
msweet 6ee54c0729 <rdar://problem/11131245> PDF detection in cups needs to be tightened up
Add regex() rule support.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11272 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-09-10 19:15:36 +00:00
msweet 2c3f586529 <rdar://problem/14672918> Use UUID from dnssd URI to identify instance of printer
Report UUID (if any) and use it to find a matching printer.



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11270 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-09-04 20:35:42 +00:00
msweet e1578ed9a4 <rdar://problem/11044332> CUPS: Stop using certtool
Conditional code to use SecGenerateSelfSignedCertificate, however this API is
not yet available on OS X.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11267 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-09-03 18:50:01 +00:00
msweet cccd10cb5b Update Japanese localization.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11264 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-08-29 20:10:15 +00:00
msweet a552bd55af Removed some duplicate size definitions for some ISO sizes that were causing
problems (<rdar://problem/14722721>)



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11239 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-08-14 20:33:42 +00:00
msweet 75c167a25a Update tests to report v2.0 now.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11235 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-08-12 19:52:43 +00:00
msweet 41e6c1f1fd Localize HTTP status codes based on Accept-Lanaguage (<rdar://problem/14201195>)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11233 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-08-12 19:49:44 +00:00
msweet 38bb3cf454 Add API version 2.0 constants.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11232 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-08-12 19:33:47 +00:00
msweet 9d94692945 Save work on <rdar://problem/11044332> CUPS: Stop using certtool.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11231 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-08-09 16:28:14 +00:00
msweet 1763b7e380 Snapshots are 2.0svn-something.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11230 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-08-06 17:31:16 +00:00
msweet 621ca63a7b Trunk is now 2.0 development.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11225 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-08-06 17:10:44 +00:00
msweet ee8618f3fd The IPP backend did not add the "last-document" attribute
(<rdar://problem/114660379>)



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11220 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-08-06 16:15:50 +00:00
msweet dfc4cea4be Fix builds with debug printfs turned off.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11215 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-08-02 15:24:51 +00:00
msweet f253405029 The scheduler did not respond using the hostname specified by the client
(<rdar://problem/14583574>)



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11213 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-08-01 22:23:18 +00:00
msweet f6008c81b9 Bump MSI version to 13.07.31
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11208 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-31 18:31:50 +00:00
msweet 9941cf57f2 Make this script executable again.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11207 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-31 18:18:52 +00:00
msweet fde3d2df54 Clean up cupsaddsmb man page.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11206 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-31 18:16:09 +00:00
msweet 4972f4feee Add PPD test.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11205 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-31 18:06:15 +00:00
msweet f593fc1f91 Fix typo.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11202 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-26 21:31:54 +00:00
msweet 8a25966925 Added a SyncOnClose directive to cups-files.conf to force cupsd to call fsync
before closing any configuration/state files it writes
(<rdar://problem/14523043>)



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11201 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-26 21:27:27 +00:00
msweet 1d670c3987 Fix typos in examples - CUPS-Add-Modify-xxx instead of CUPS-Add-xxx.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11200 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-26 21:07:52 +00:00
msweet 1523f10d81 Error messages from the scheduler were not localized using the language
specified in the client's IPP request (<rdar://problem/14128011>)


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11195 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-26 11:50:02 +00:00
msweet 0d4d48ad63 Fax queues did not work when shared via Bonjour (<rdar://problem/14498310>)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11193 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-26 03:12:37 +00:00
msweet f902c56223 Fix a couple memory leaks in ippfind that were reported by Clang.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11177 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-24 12:16:37 +00:00
msweet e826f56b16 Added USB quirk rule for Lexmark E238 (<rdar://problem/14493054>)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11175 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-23 12:36:57 +00:00
msweet 80360a5e4c Closed server connections were still not always detected
(<rdar://problem/14484313>)

- Also need to check for EOF from recv...



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11174 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-23 12:33:52 +00:00
msweet 737b017edf Add Italian localization (<rdar://problem/14481578>)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11172 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-23 12:24:21 +00:00
msweet 483fc76b98 Still need to use -Wl,-pie on OS X (regression in change for
<rdar://problem/14480938>)


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11171 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-23 12:21:51 +00:00
msweet d939104ddc Fixed a compile issue on 64-bit Linux with Clang - need to use the -pie option
instead of -Wl,-pie now (<rdar://problem/14480938>)


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11170 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-22 18:10:51 +00:00
msweet 7d1419a770 Don't reference CUPS driver for windows page anymore.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11165 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-22 15:00:03 +00:00
msweet e1a3eca81c The ippfind utility reported the wrong port numbers when compiled against Avahi
(<rdar://problem/14508324>)


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11164 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-22 14:57:14 +00:00
msweet f8f52a9058 Fix compile errors.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11155 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-17 15:51:43 +00:00
msweet 89a653066e The libusb-based USB backend now loads its list of quirks from files in
/usr/share/cups/usb instead of using a hardcoded table
(<rdar://problem/14442769>)



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11154 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-17 15:21:18 +00:00
msweet 0c4bedc42d Reconnect as needed prior to sending a GET, HEAD, or PUT request.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11153 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-17 14:10:21 +00:00
msweet e924ce801a Fix a compile error in libcups (<rdar://problem/14467141>)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11151 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-17 13:06:14 +00:00
msweet f9a12035df The scheduler did not properly register ICC color profiles with colord
(<rdar://problem/14455625>)



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11150 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-17 13:03:56 +00:00
msweet f8e23ef7e7 Bump version to 1.7.0 in preparation for a release in the next couple weeks.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11149 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-17 02:57:09 +00:00
msweet 54f63cdfb5 The scheduler incorrectly did not pass a FINAL_CONTENT_TYPE environment variable
to the filters or backend (<rdar://problem/14355011>)



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11147 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-17 02:54:31 +00:00
msweet ac0ec51ba0 Remove unused var.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11144 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-17 02:45:55 +00:00
msweet 990c79d278 The cups-exec helper program could fail randomly on OS X due to sandbox
violations when closing excess file descriptors (<rdar://problem/14421943>)

The scheduler incorrectly did not use the kqueue interface on OS X.



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11142 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-17 01:07:00 +00:00
msweet cca2420513 Remove debug printf.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11141 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-16 14:58:25 +00:00
msweet 1505041083 Update README files for ipptool packages.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11140 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-15 15:51:32 +00:00
msweet f0ccfab317 Update ipptool packaging script to allow for Fedora, Red Hat Enterprise Linux
(RHEL). and Ubuntu Linux variants since LSB doesn't support OpenSSL or Avahi.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11139 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-15 13:22:34 +00:00
msweet 6c78e3f887 Ignore generated files.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11130 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-11 20:50:45 +00:00
msweet bc0305b0b9 Fix build error
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11129 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-11 20:39:46 +00:00
msweet ad0357ca1d Also package ippfind.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11128 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-11 20:31:43 +00:00
msweet 75b9ea1c3a Don't package old "standard configuration" help file.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11127 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-11 20:27:14 +00:00
msweet 24a8828edd Tweak working in "what's new" document.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11126 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-11 20:21:18 +00:00
msweet 7a712c54f8 Changelog update - previous bug only affects 1.7.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11116 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-10 14:41:37 +00:00
msweet 3f786819c8 Printer xxx-default values were not reported by Get-Printer-Attributes or
lpoptions (<rdar://problem/14401795>)



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11115 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-10 14:35:53 +00:00
msweet 567f49cba3 The default IPP version did not always get set before creating a new IPP
request message (<rdar://problem/14401718>)



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11113 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-10 14:08:39 +00:00
msweet ffa2ca90d5 Update documentation to not embed unstable configuration values, now that man
pages are part of the repository...


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11109 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-08 21:15:13 +00:00
msweet 9520743f2d Prep for 1.7rc1.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11107 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-08 13:47:51 +00:00
msweet bf500a5653 Change kIOPMAssertRemoteAccess to kIOPMAssertNetworkClientActive...
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11106 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-08 12:29:10 +00:00
msweet a782e5574a Update localization files.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11102 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-08 11:21:56 +00:00
msweet c606bcae4e <rdar://problem/14290628> cups.org: cupsGetNamedDest returns the wrong default printer, lpr/lpq/lp/lpstat use different defaults!
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11101 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-08 11:20:33 +00:00
msweet 83385e2997 Make ippfind build and install on Windows
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11100 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-05 15:11:29 +00:00
msweet 8a78aa3778 Some ippserver fixes to allow it to be used as a CUPS destination:
- Don't actually advertise IPPS support yet, since libcups doesn't support
  server-side HTTPS yet.
- Allow printer-uri values that have the right resource paths - this allows
  things like back-to-my-mac to work.
- Advertise the correct URI resource path in the Bonjour TXT record.
- Fix valid_doc_attributes to use the document-format-default value instead of
  "application/octet-stream".



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11097 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-04 15:54:36 +00:00
msweet 94446c2699 Allow job-billing to be an alias for job-account-id, and requesting-user-name to
be an alias for job-accounting-user-id (<rdar://problem/14290027>)


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11089 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-03 16:39:38 +00:00
msweet 7374e9e5d4 Fix HTML errors in documentation (using swish-e to validate HTML...)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11087 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-03 14:26:55 +00:00
msweet d48a10026a Fix compile error.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11086 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-03 13:55:05 +00:00
msweet 9c0e8e5d83 Update version numbers.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11085 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-03 13:53:05 +00:00
msweet d1f0f86b73 Update usage to match what is now supported.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11084 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-03 13:36:21 +00:00
msweet 7bf181980c Use new kIOPMAssertRemoteAccess power management assertion, when supported, to
keep the system awake enough to print (<rdar://problem/11918463>)


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11081 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-07-02 20:39:24 +00:00
msweet 223bdaa186 Update distribution script to use new SVN repo location.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11078 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-06-27 19:03:21 +00:00
msweet 25f3e1eef0 Add ippfind project for Visual Studio.
Drop support for VC++ 2005.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11077 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-06-27 18:49:52 +00:00
msweet ad29aeab8c Fix a state transition issue that affected ippserver.
Fix a crasher for handling of sides in ippserver.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11074 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-06-27 18:36:13 +00:00
msweet 7e5023ddea Fix ippfind for Linux/Avahi.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11064 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-06-25 16:46:38 +00:00
msweet b63a0d90da httpStatus(HTTP_ERROR) did not return a useful error message
(<rdar://problem/14217326>)



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11062 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-06-25 15:11:25 +00:00
msweet 5489ad4342 The lp and lpr commands incorrectly ignored the default printer set in the
lpoptions file (<rdar://problem/14216472>)



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11060 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-06-25 15:02:18 +00:00
msweet 3699c6372c Added documentation about the /version=1.1 option to ServerName in client.conf
(<rdar://problem/14216262>)



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11058 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-06-25 14:38:01 +00:00
msweet d680d3826c Also deprecate cupsGetPPD and cupsGetPPD2.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11057 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-06-25 14:30:18 +00:00
msweet e666fe5e38 Fixed deprecation warnings for many functions on OS X so they are tied
to the deployment version when building (<rdar://problem/14210079>)



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11056 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-06-25 14:27:30 +00:00
msweet ff862e509f <rdar://problem/14243133> AirPrint: Printers with name containing certain characters are not recognized
Support backquote (`) character and fix the IPv6 address detection code.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11052 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-06-25 01:42:48 +00:00
msweet 71f294cef9 Add unit test for httpAssembleUUID.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11051 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-06-25 00:57:09 +00:00
msweet 56cd8959f0 ARM-based Linux doesn't allow pointer comparisons on va_list values; not sure
how you are supposed to validate input, but whatever...


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11032 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-06-12 13:00:54 +00:00
msweet 94b4b4a07d Save work on ippfind for Linux.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11028 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-06-07 02:18:50 +00:00
msweet e5528d423b Update ippfind documentation with examples, change '-e' to '-x' for --exec.
Add ippfind to the ipptool binary package. 


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11027 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-06-07 01:45:14 +00:00
msweet b34254bcf1 Fix up svn:keywords for all files.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11025 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-06-07 01:00:33 +00:00
msweet 4875b2f3f6 Don't clean HTML man pages.
Add some other print-job tests.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11024 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-06-06 23:11:13 +00:00
msweet 83f65dd609 Ignore more stuff.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11023 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-06-06 22:48:46 +00:00
msweet e4e5666b10 Fix keywords on man page files.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11022 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-06-06 22:14:09 +00:00
msweet 2d0a0f48e7 <rdar://problem/13876199> cups.org: Need ippfind command-line utility
Implement --exec.

The ippfind command is now feature complete for CUPS 1.7.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11021 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-06-06 22:08:14 +00:00
msweet 70752071b3 Implement --ls.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11020 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-06-06 19:19:26 +00:00
msweet a505eef406 Fix --or handling.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11019 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-06-06 15:03:40 +00:00
msweet 4174320042 Save work - all of the tests work, todo:
- Fix --or
- Implement --ls
- Implement --exec



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11018 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-06-05 20:40:53 +00:00
msweet c4aa297584 <rdar://problem/14040186> Backend failure when sharing Simulated inkjet after creating ACL with standard user. OS X 10.9 (13A476l)
Don't trampoline if we are using a password.

Don't call xpc_connection_suspend since we are releasing it (not supposed to do
that for some reason...)


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11014 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-06-05 18:23:08 +00:00
msweet 4ffc419764 <rdar://problem/14065748> pwgMediaForPWG: roll_max_36.1025x3622.0472in becomes 91700 x 180568 instead of 91700 x 9199999
Convert fractional portion separately to avoid integer overflow.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11011 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-06-05 17:25:22 +00:00
msweet 766a822957 Save work on ippfind program. Nearly there.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11010 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-06-05 16:05:45 +00:00
msweet 69518a8578 <rdar://problem/13854722> 13A459 Printing completely broken on MBP after upgrade to Cab
Fix httpFlushWrite, which was incorrectly updating data_remaining.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11003 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-05-31 13:29:59 +00:00
msweet bac0799207 Save work on new ippfind tool.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11002 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-05-30 21:45:32 +00:00
msweet 26340b35e8 <rdar://problem/14016099> ipptool: Use SO_NWRITE socket option to extend timeouts
Make the ipptool timeout callback check whether the output buffer is empty.  If
not, automatically extend the timeout until it is - useful for when the printer
is blocking due to a printer error like "out of paper"...


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11000 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-05-30 01:33:55 +00:00
msweet 1bc82dd928 Restore debug2 logging of cupsdAdd/RemoveSelect.
Add higher-level debug logging of client select management.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@10999 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-05-30 00:48:16 +00:00
msweet 21f36711d9 Go back to non-blocking ippWrite.
Add some more debug logging.

Normalize some of the logging to consistently have a [Client NNN] prefix.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@10998 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-05-30 00:41:43 +00:00
msweet 0687ea6984 Ignore generated files.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@10997 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-05-29 21:45:03 +00:00
msweet f2d18633e2 Update svn:keyword properties.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@10996 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-05-29 11:51:34 +00:00
msweet 23ef1cac65 Add option to specify a single operation to test with.
Add CUPS-Get-Default to the list of standard ops to test.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@10995 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-05-29 11:51:03 +00:00
msweet 86c809d99c Added support for RFC 6874's IPv6 link local address format in URIs
(<rdar://problem/13979453>)



git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@10990 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-05-24 21:21:04 +00:00
msweet 4fcfa0cf96 <rdar://problem/13493241> APVT3.0 checks a custom size using a 1/100mm smaller size
Don't use floating point at all.  Go old-school and do integer math to convert
to 100ths of millimeters...


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@10988 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-05-23 19:57:17 +00:00
msweet ee8d237de0 Changelog.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@10984 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-05-16 19:39:53 +00:00
msweet 06399b6e0d Save new Bonjour discovery/test program.
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@10983 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-05-13 23:57:32 +00:00
msweet 890a10b7de <rdar://problem/13876091> cups.org: ipptool should support validation of hostname and port in URIs
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@10982 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-05-13 21:48:45 +00:00
msweet 1d47b929b0 <rdar://problem/13876038> cups.org: ipptool does not include any version information in the plist output
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@10981 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-05-13 19:40:47 +00:00
msweet 9475ec92d8 <rdar://problem/13875803> cups.org: ipptool does not proceed past INCLUDE if ignore is not used
Also: IPP finishings values for (now standardized) punch and fold stuff, new
IPP FaxOut Send-Hardcopy-Document operation.


git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@10980 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-05-13 19:15:06 +00:00
msweet 2a241c9efc <rdar://problem/13875729> cups.org: libusb-based backend can crash if USB is disabled in BIOS
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@10977 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-05-13 16:46:08 +00:00
msweet 90c6ec2104 <rdar://problem/ 13493241> APVT3.0 checks a custom size using a 1/100mm smaller size
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@10976 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-05-13 16:36:57 +00:00
msweet a8109fbe78 Move current import directory to new cups.org trunk
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@4303 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-05-10 17:14:12 +00:00
msweet 94436c5a61 Final sync-up with cups.org trunk repository
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@4297 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-05-10 16:04:59 +00:00
msweet 6961465fb2 Merge changes from CUPS 1.7b1-r10947.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@4274 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-04-09 20:10:23 +00:00
msweet cb7f98ee7f Sync up with CUPS 1.7svn-r10893
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@4216 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-03-11 13:57:36 +00:00
msweet c5b24bfa98 Merge changes from CUPS 1.7svn-r10874.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@4189 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-02-20 15:22:35 +00:00
msweet db8b865d20 Merge changes from CUPS 1.7svn-r10861.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@4167 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-02-04 19:27:13 +00:00
msweet 0cb67df369 Merge changes from CUPS 1.7svn-r10814.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@4125 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-01-14 22:10:30 +00:00
msweet 0fa6c7fa54 Merge changes from CUPS 1.7svn-r10791.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@4120 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-01-10 17:01:44 +00:00
msweet c1420c8744 Merge changes from CUPS 1.7svn-r10755.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@4074 a1ca3aef-8c08-0410-bb20-df032aa958be
2012-12-12 20:54:21 +00:00
msweet c41769ffd0 Merge changes from CUPS 1.7svn-r10710.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@4040 a1ca3aef-8c08-0410-bb20-df032aa958be
2012-11-26 19:37:04 +00:00
msweet a469f8a576 Merge changes from CUPS 1.7svn-r10704.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@4027 a1ca3aef-8c08-0410-bb20-df032aa958be
2012-11-16 01:00:05 +00:00
msweet 76aa1ac14c Fix property on test file.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3943 a1ca3aef-8c08-0410-bb20-df032aa958be
2012-10-15 21:10:00 +00:00
msweet 3dd9c34058 Merge changes from CUPS 1.7svn-r10643
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3940 a1ca3aef-8c08-0410-bb20-df032aa958be
2012-10-15 21:02:10 +00:00
msweet 5a9febac19 Merge changes from CUPS 1.7svn-r10629.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3933 a1ca3aef-8c08-0410-bb20-df032aa958be
2012-10-01 03:01:10 +00:00
msweet 37e7e6e0b2 Merge changes from CUPS 1.7svn-r10578.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3891 a1ca3aef-8c08-0410-bb20-df032aa958be
2012-08-29 00:26:48 +00:00
msweet a29fd7ddb5 Merge changes from CUPS 1.6svn-r10510.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3833 a1ca3aef-8c08-0410-bb20-df032aa958be
2012-05-23 22:51:18 +00:00
msweet f3c17241a4 Merge changes from CUPS 1.6svn-r10437.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3794 a1ca3aef-8c08-0410-bb20-df032aa958be
2012-04-23 22:44:16 +00:00
msweet 271780fb87 Remove ".orig" files that somehow got into the repo.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3764 a1ca3aef-8c08-0410-bb20-df032aa958be
2012-03-31 04:54:53 +00:00
msweet 82cc1f9ac3 Merge changes from CUPS 1.6svn-r10390.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3755 a1ca3aef-8c08-0410-bb20-df032aa958be
2012-03-30 05:59:14 +00:00
msweet 3e7fe0ca76 Merge changes from CUPS 1.6svn-r10310.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3683 a1ca3aef-8c08-0410-bb20-df032aa958be
2012-02-16 22:03:53 +00:00
msweet bb0d23b21b Sync up with CUPS 1.6svn-r10269 (changes from Zin TOT merged into cups.org TOT)
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3645 a1ca3aef-8c08-0410-bb20-df032aa958be
2012-02-13 17:18:19 +00:00
msweet 3ee4274c97 Remove deleted file.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3644 a1ca3aef-8c08-0410-bb20-df032aa958be
2012-02-13 16:38:44 +00:00
msweet 12f89d241c Merge changes from CUPS 1.6svn-r10267.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3643 a1ca3aef-8c08-0410-bb20-df032aa958be
2012-02-13 16:35:48 +00:00
msweet dcb445bcf3 Merge changes from CUPS 1.6svn-r10188, including changes for <rdar://problem/10127258> CUPS 1.6: New printer/printing APIs
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3618 a1ca3aef-8c08-0410-bb20-df032aa958be
2012-01-19 16:53:50 +00:00
msweet 9c80ffa289 Merge changes from CUPS 1.6svn-r10127.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3518 a1ca3aef-8c08-0410-bb20-df032aa958be
2011-11-28 17:26:29 +00:00
msweet a2326b5b72 Merge changes from CUPS 1.6svn-r10112.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3486 a1ca3aef-8c08-0410-bb20-df032aa958be
2011-11-08 00:30:03 +00:00
msweet d7225fc298 Merge changes from CUPS 1.6svn-r10056
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3448 a1ca3aef-8c08-0410-bb20-df032aa958be
2011-10-04 06:53:26 +00:00
msweet 9b66acc599 Merge changes from CUPS 1.6svn-r10024.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3438 a1ca3aef-8c08-0410-bb20-df032aa958be
2011-09-28 22:40:47 +00:00
msweet 10ddcf65af Merge changes from CUPS 1.6svn-r10006.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3427 a1ca3aef-8c08-0410-bb20-df032aa958be
2011-09-20 18:40:57 +00:00
msweet 83e0800111 Merge changes from CUPS 1.6svn-r10002
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3421 a1ca3aef-8c08-0410-bb20-df032aa958be
2011-09-14 22:44:45 +00:00
msweet 85dda01c84 Merge changes from CUPS 1.6svn-r9968.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3411 a1ca3aef-8c08-0410-bb20-df032aa958be
2011-09-07 22:31:27 +00:00
msweet a48458814a Merge changes from CUPS 1.6svn-r9939.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3392 a1ca3aef-8c08-0410-bb20-df032aa958be
2011-08-31 01:58:55 +00:00
msweet 771bd8cbff Merge changes from CUPS 1.5.1-r9875.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3363 a1ca3aef-8c08-0410-bb20-df032aa958be
2011-08-09 21:32:14 +00:00
msweet bd8b6777d6 Merge changes from CUPS 1.5rc1-r9834.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3322 a1ca3aef-8c08-0410-bb20-df032aa958be
2011-06-15 00:48:47 +00:00
msweet f99f369831 Merge changes from CUPS 1.5rc1-r9833.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3318 a1ca3aef-8c08-0410-bb20-df032aa958be
2011-06-15 00:37:13 +00:00
msweet d4d033982c Merge changes from CUPS 1.5rc1-r9815.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3299 a1ca3aef-8c08-0410-bb20-df032aa958be
2011-06-05 17:00:32 +00:00
msweet f228370c3f Merge changes from CUPS 1.5b2-r9811.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3289 a1ca3aef-8c08-0410-bb20-df032aa958be
2011-05-26 13:22:56 +00:00
msweet 88f9aafc49 Merge changes from CUPS 1.5b1-r9798.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3275 a1ca3aef-8c08-0410-bb20-df032aa958be
2011-05-20 07:26:13 +00:00
msweet 321d8d57da Merge changes from CUPS 1.5b1-r9774.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3247 a1ca3aef-8c08-0410-bb20-df032aa958be
2011-05-12 06:22:31 +00:00
msweet eac3a0a01b Merge changes from CUPS 1.5svn-r9763.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3242 a1ca3aef-8c08-0410-bb20-df032aa958be
2011-05-11 05:36:13 +00:00
msweet 22c9029b44 Merge changes from CUPS 1.5svn-r9717.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3171 a1ca3aef-8c08-0410-bb20-df032aa958be
2011-04-22 23:02:56 +00:00
msweet 07ed0e9a43 Merge changes from CUPS 1.5svn-r9675.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3122 a1ca3aef-8c08-0410-bb20-df032aa958be
2011-04-11 18:53:27 +00:00
msweet 84315f460a Merge changes from CUPS 1.5svn-r9641
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3071 a1ca3aef-8c08-0410-bb20-df032aa958be
2011-03-23 00:05:29 +00:00
msweet 82f972324d Merge changes from CUPS 1.5svn-r9631.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3062 a1ca3aef-8c08-0410-bb20-df032aa958be
2011-03-20 21:48:45 +00:00
msweet 31db8dedac Sync up some other changes.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3047 a1ca3aef-8c08-0410-bb20-df032aa958be
2011-03-14 18:48:04 +00:00
msweet f14324a792 Merge changes from CUPS 1.5svn-r9602.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3046 a1ca3aef-8c08-0410-bb20-df032aa958be
2011-03-14 18:45:10 +00:00
msweet c8fef167ba Merge changes from CUPS 1.5svn-r9567
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3015 a1ca3aef-8c08-0410-bb20-df032aa958be
2011-02-25 01:40:44 +00:00
msweet e60ec91f3e Merge changes from CUPS 1.5svn-r9525
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@2975 a1ca3aef-8c08-0410-bb20-df032aa958be
2011-02-11 21:20:35 +00:00
msweet 515b46cde4 Fix bad merge.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@2951 a1ca3aef-8c08-0410-bb20-df032aa958be
2011-01-18 00:26:43 +00:00
msweet 0268488e2f Merge changes from CUPS 1.5svn-r9491.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@2949 a1ca3aef-8c08-0410-bb20-df032aa958be
2011-01-17 23:54:15 +00:00
msweet c779abb06a Merge changes from CUPS 1.5svn-r9407.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@2910 a1ca3aef-8c08-0410-bb20-df032aa958be
2010-12-14 21:25:17 +00:00
msweet 229681c188 Merge changes from CUPS 1.5svn-r9400
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@2890 a1ca3aef-8c08-0410-bb20-df032aa958be
2010-12-03 06:58:01 +00:00
msweet 0837b7e828 Merge changes from CUPS 1.5svn-r9385.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@2873 a1ca3aef-8c08-0410-bb20-df032aa958be
2010-11-30 03:16:24 +00:00
msweet 1106b00e75 Merge changes from CUPS 1.5svn-r9374.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@2859 a1ca3aef-8c08-0410-bb20-df032aa958be
2010-11-17 18:58:56 +00:00
msweet 10d09e334a Merge changes from CUPS 1.5svn-r9352.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@2848 a1ca3aef-8c08-0410-bb20-df032aa958be
2010-11-06 05:13:04 +00:00
msweet 6c48a6cafc Merge changes from CUPS 1.5svn-r9323.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@2733 a1ca3aef-8c08-0410-bb20-df032aa958be
2010-10-01 22:44:58 +00:00
msweet 7cf5915ead Merge changes from CUPS 1.5svn-r9313.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@2683 a1ca3aef-8c08-0410-bb20-df032aa958be
2010-09-22 22:13:21 +00:00
msweet 030ae6a14e Merge changes from CUPS 1.5svn-r9229.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@2468 a1ca3aef-8c08-0410-bb20-df032aa958be
2010-08-09 22:14:41 +00:00
msweet 4220952d4d Merge changes from CUPS 1.5svn-r9214.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@2395 a1ca3aef-8c08-0410-bb20-df032aa958be
2010-07-27 00:17:12 +00:00
msweet c7017eccd2 Merge changes from CUPS 1.5svn-r9198.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@2309 a1ca3aef-8c08-0410-bb20-df032aa958be
2010-07-08 20:45:48 +00:00
msweet cc75483441 Merge changes from CUPS 1.5svn-r9136.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@2180 a1ca3aef-8c08-0410-bb20-df032aa958be
2010-05-10 22:58:10 +00:00
msweet 6d2f911bdd Merge changes from CUPS 1.5svn-r9105.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@2070 a1ca3aef-8c08-0410-bb20-df032aa958be
2010-04-12 04:23:14 +00:00
msweet 39ff2fe72b Merge changes from CUPS 1.5svn-r9098.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@2056 a1ca3aef-8c08-0410-bb20-df032aa958be
2010-04-09 22:45:27 +00:00
msweet aaf19ab07e Import changes from CUPS 1.5svn-r9085.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@2046 a1ca3aef-8c08-0410-bb20-df032aa958be
2010-04-07 07:11:03 +00:00
msweet e2d18a01cc Make sure EOL is right on import file.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@2017 a1ca3aef-8c08-0410-bb20-df032aa958be
2010-03-30 23:24:57 +00:00
msweet 5180a04ce8 Merge changes from CUPS 1.5svn-r9062.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@2016 a1ca3aef-8c08-0410-bb20-df032aa958be
2010-03-30 23:24:27 +00:00
msweet 61e2aeb0be Remove bad file.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@2015 a1ca3aef-8c08-0410-bb20-df032aa958be
2010-03-30 23:22:52 +00:00
msweet a480a1b6b4 Add a missing change to the test script.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1993 a1ca3aef-8c08-0410-bb20-df032aa958be
2010-03-24 14:33:57 +00:00
msweet 71e160228f Merge changes from CUPS 1.5svn-r9049 (private header support)
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1992 a1ca3aef-8c08-0410-bb20-df032aa958be
2010-03-24 14:32:08 +00:00
msweet 54afec3350 Merge changes from CUPS 1.5svn-r9041.
(all of the media changes)


git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1987 a1ca3aef-8c08-0410-bb20-df032aa958be
2010-03-23 21:42:49 +00:00
msweet ba55dc12de Merge changes from CUPS 1.5svn-r9037.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1968 a1ca3aef-8c08-0410-bb20-df032aa958be
2010-03-11 06:44:46 +00:00
msweet 5a6b583acf Merge changes from CUPS 1.5svn-r9022.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1937 a1ca3aef-8c08-0410-bb20-df032aa958be
2010-03-03 22:36:38 +00:00
msweet f8b3a85b79 Merge changes from CUPS 1.5svn-r9000.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1912 a1ca3aef-8c08-0410-bb20-df032aa958be
2010-02-25 00:52:27 +00:00
msweet 4168188389 Merge changes from CUPS 1.5svn-r8950.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1816 a1ca3aef-8c08-0410-bb20-df032aa958be
2010-01-14 22:50:23 +00:00
msweet 5a662dc060 Merge changes from CUPS 1.5svn-r8933.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1788 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-12-16 00:13:28 +00:00
msweet ef55b74533 Merge changes from CUPS 1.5svn-r8916.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1766 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-12-09 18:36:59 +00:00
msweet 3fb9c47ea6 Merge changes from CUPS 1.5svn-r8857.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1736 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-11-07 06:21:32 +00:00
msweet 101decd054 Remove old file.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1727 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-10-15 21:28:49 +00:00
msweet 4d301e694f Merge changes from CUPS 1.5svn-r8849.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1725 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-10-15 18:50:47 +00:00
msweet b226ab9913 Merge changes from CUPS 1.5svn-r8842.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1709 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-10-07 18:20:31 +00:00
msweet 18ecb42821 Merge changes from CUPS 1.5svn-r8829.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1695 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-09-24 23:50:39 +00:00
msweet 7a0cbd5e57 Import changes from CUPS 1.4.1 (r8801)
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1649 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-08-29 06:12:06 +00:00
msweet ee6ddad257 Merge final 1.4.0 (r8761) changes.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1629 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-08-07 22:49:21 +00:00
msweet 4a4b4f9914 Merge changes from CUPS 1.4.0 (r8756)
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1613 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-07-14 23:31:23 +00:00
msweet f701418f7b Merge changes from CUPS 1.4.0 (r8750)
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1608 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-07-07 18:36:58 +00:00
msweet 60198c6dba Merge changes from 1.4.0 r8744.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1603 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-07-02 19:16:48 +00:00
msweet e38f5e9c4d Merge changes from 1.4.0 (r8743)
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1595 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-07-02 15:21:10 +00:00
msweet 85b5d1dfa7 Merge fixes from CUPS 1.4.0 (r8739).
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1586 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-07-01 16:36:51 +00:00
msweet 4e6f60f000 Merge changes from CUPS 1.4svn-r8731 (1.4.0)
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1572 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-06-26 22:23:28 +00:00
msweet acb056cb17 Merge changes from CUPS 1.4svn-r8722 (tentative 1.4.0 GM)
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1567 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-06-18 22:32:02 +00:00
msweet 97c9a8d722 Import changes from CUPS 1.4svn-r8704.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1556 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-06-10 19:02:58 +00:00
msweet 393ac6abae Merge changes from CUPS 1.4svn-r8681 (tentative CUPS 1.4rc1)
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1537 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-05-22 23:56:34 +00:00
msweet b0f6947b4d Merge changes from CUPS 1.4svn-r8679.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1531 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-05-22 21:50:50 +00:00
msweet 68b10830fa Merge changes from CUPS 1.4svn-r8659
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1516 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-05-18 22:09:10 +00:00
msweet 536bc2c652 Merge changes from CUPS 1.4svn-r8639.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1505 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-05-14 22:48:33 +00:00
msweet 6c663ae27a Add missing man page file.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1499 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-05-14 16:10:44 +00:00
msweet 178cb7369d Merge changes from CUPS 1.4svn-r8628.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1495 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-05-13 22:29:41 +00:00
msweet f11a948a02 Merge changes from CUPS 1.4svn-r8606.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1480 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-05-08 18:38:44 +00:00
msweet e07d4801f9 Merge changes from CUPS 1.4svn-r8540.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1432 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-04-22 17:28:12 +00:00
msweet 38e73f8781 Merge changes from CUPS 1.4svn-r8492.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1378 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-04-08 03:17:45 +00:00
msweet 94da7e344c Merge changes from CUPS 1.4svn-r8469.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1338 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-03-25 00:42:10 +00:00
msweet 238c383265 Merge changes from CUPS 1.4svn-r8454.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1311 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-03-18 17:09:48 +00:00
msweet 8b116e6004 Merge changes from CUPS 1.4svn-r8443.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1296 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-03-13 22:09:14 +00:00
msweet 9aff70cc17 Merge more Common UNIX Printing System -> CUPS changes.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1286 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-03-09 22:00:45 +00:00
msweet d7871c8c7f Merge trademark/logo changes from CUPS 1.4svn-r8418.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1283 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-03-09 21:13:04 +00:00
msweet 1340db2dab Merge changes from CUPS 1.4svn-r8414.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1277 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-03-07 16:36:03 +00:00
msweet b9faaae17c Merge changes from CUPS 1.4svn-r8394.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1253 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-02-25 23:37:25 +00:00
msweet ede613e028 Remove generated file.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1234 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-02-18 17:49:06 +00:00
msweet f0ab5bff8a Merge changes from CUPS 1.4svn-r8362.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1228 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-02-17 19:24:29 +00:00
msweet bf3816c7ed Merge changes from CUPS 1.4svn-r8346.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1212 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-02-11 16:34:01 +00:00
msweet 745129beeb Merge changes from CUPS 1.4svn-r8329.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1182 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-02-04 04:27:58 +00:00
msweet dfd5680b87 Merge changes from CUPS 1.4svn-r8305.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1166 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-01-29 18:07:00 +00:00
msweet d1c13e1686 Merge changes from CUPS 1.4svn-r8290.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1144 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-01-23 22:36:42 +00:00
msweet d2354e6397 Merge changes from CUPS 1.4svn-r8252.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1123 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-01-14 19:55:19 +00:00
msweet c168a833ca Merge changes from CUPS 1.4svn-r8227.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1113 a1ca3aef-8c08-0410-bb20-df032aa958be
2009-01-09 23:33:14 +00:00
msweet 557dde9fbc Merge changes from CUPS 1.4svn-r8196 (CUPS 1.4b2)
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1100 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-12-15 18:13:37 +00:00
msweet 426c6a5959 Merge changes from CUPS 1.4svn-r8177 (tentative CUPS 1.4b2)
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1090 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-12-11 01:40:30 +00:00
msweet 8b450588f4 Merge changes from CUPS 1.4svn-r8177.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1084 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-12-08 23:45:00 +00:00
msweet ed6e7faf3e Merge changes from CUPS 1.4svn-r8162.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1079 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-12-06 00:24:23 +00:00
msweet 52f6f666c3 Merge changes from CUPS 1.4svn-r8148.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1068 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-11-19 23:25:47 +00:00
msweet 9380acaa78 Ignore generated testprint.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1061 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-11-14 21:04:37 +00:00
msweet 4b3f67ff4c Merge changes from CUPS 1.4svn-r8131.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1060 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-11-14 21:04:14 +00:00
msweet e6013cfab0 Merge changes from CUPS 1.4svn-r8115.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1055 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-11-12 01:01:46 +00:00
msweet e4572d571c Merge changes from CUPS 1.4svn-r8088, the real official 1.4b1!
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1035 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-10-27 21:56:38 +00:00
msweet 28b9d139c0 Merge changes from CUPS 1.4svn-r8067 (tentative CUPS 1.4b1)
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1021 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-10-17 22:12:14 +00:00
msweet 6e8b116d7f Merge CUPS 1.4svn-r8058 (tentative CUPS 1.4b1)
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1016 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-10-15 21:06:58 +00:00
msweet 758a062feb Doco updates from CUPS 1.4svn-r8054.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1013 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-10-13 17:16:02 +00:00
msweet 02797ade68 Add missing file.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1011 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-10-10 21:06:56 +00:00
msweet 61cf44e2b7 Merge CUPS 1.4svn-r8052 (tentative 1.4b1)
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1009 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-10-10 21:00:18 +00:00
msweet 076fd0e4fb Add missing files from r8033.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1004 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-10-08 22:53:46 +00:00
msweet 58dc193312 Merge changes from CUPS 1.4svn-r8033.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1003 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-10-08 22:50:16 +00:00
msweet f2245c695c Add missing image.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@995 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-10-02 00:59:36 +00:00
msweet cda47a960f Merge changes from CUPS 1.4svn-r7999.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@993 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-10-02 00:56:58 +00:00
msweet 1f6f3dbcf9 Merge changes from CUPS 1.4svn-r7994.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@989 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-09-29 17:17:42 +00:00
msweet 0af14961a8 Merge changes from 1.4svn-r7979.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@983 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-09-24 21:31:49 +00:00
msweet b19ccc9e27 Merge changes from CUPS 1.4svn-r7961.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@969 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-09-17 19:54:07 +00:00
msweet 49d8745278 Merge changes from CUPS 1.4svn-r7932.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@957 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-09-10 22:30:50 +00:00
msweet c5571a1d68 Import CUPS 1.4svn-r7908.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@943 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-09-04 17:09:47 +00:00
msweet 9a4f8274e9 Merge changes from CUPS 1.4svn-r7874.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@933 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-08-28 22:58:28 +00:00
msweet 5f64df2982 Merge changes from CUPS 1.4svn-r7874.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@924 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-08-27 22:04:19 +00:00
msweet 247efae55f Add missing file.`
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@922 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-08-26 03:55:07 +00:00
msweet 06d4e77b9b Merge changes from CUPS 1.4svn-r7864.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@921 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-08-26 03:49:44 +00:00
msweet 1ff0402e47 Merge changes from CUPS 1.4svn-r7851.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@913 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-08-20 00:21:51 +00:00
msweet 9f5eb9be66 Merge changes from CUPS 1.4svn-r7844.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@909 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-08-14 06:33:44 +00:00
msweet ee571f261a Merge easysw-1.4svn-r7834
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@905 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-08-04 21:07:04 +00:00
msweet 749b1e90a8 Merge changes from CUPS 1.4svn-r7817.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@901 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-07-30 23:42:12 +00:00
msweet 005dd1eb9e Merge changes from CUPS 1.4svn-r7791.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@886 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-07-24 01:02:46 +00:00
msweet 5d6412a9f1 Merge changes from CUPS 1.4svn-r7770.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@872 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-07-18 21:45:31 +00:00
msweet e78998dfeb Add missing files.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@870 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-07-18 18:56:19 +00:00
msweet 66ab9486ef Merge CUPS 1.4svn-r7762.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@868 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-07-18 18:47:53 +00:00
msweet 1f0275e3cc Merge changes from CUPS 1.4svn-r7715.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@859 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-07-15 01:21:40 +00:00
msweet 4509bb4933 Merge changes from CUPS 1.4svn-r7715.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@834 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-07-03 05:38:29 +00:00
msweet 75bd9771f6 Merge changes from CUPS 1.4svn-r7696.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@818 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-06-27 20:26:20 +00:00
msweet dd1abb6b5f Merge changes from CUPS 1.4svn-r7670.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@810 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-06-18 16:44:53 +00:00
msweet c934a06cde Merge changes from CUPS 1.4svn-r7626.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@798 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-06-09 15:59:44 +00:00
msweet 79e1d494ec Merge changes from CUPS 1.4svn-r7617.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@793 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-05-28 23:38:36 +00:00
msweet 8922323b9f Merge changes from CUPS 1.4svn-r7614.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@789 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-05-23 22:28:53 +00:00
msweet bdd6c45b5e Merge changes from CUPS 1.4svn-r7607.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@784 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-05-21 01:15:17 +00:00
msweet 20fbc90347 Merge changes from CUPS 1.4svn-r7594.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@779 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-05-19 23:16:59 +00:00
msweet 47879b8b63 Merge CUPS 1.4svn-r7588 (dependency updates, compiler warnings, and one web UI buglet)
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@774 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-05-17 00:06:01 +00:00
msweet 5eb9da713f Import CUPS 1.4svn-r7585.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@771 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-05-16 23:29:51 +00:00
msweet 01ce6322ca Merge changes from CUPS 1.4svn-r7582.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@768 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-05-16 03:15:15 +00:00
msweet 3c8c76971a Merge changes from 1.4svn-r7568.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@763 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-05-15 01:47:12 +00:00
msweet c9fc04c6ec Merge changes from CUPS trunk, r7566.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@761 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-05-15 01:42:36 +00:00
msweet 969307f096 Merge fixes from CUPS 1.4svn-r7555.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@755 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-05-12 18:20:10 +00:00
msweet a0f6818ebf Merge changes from CUPS 1.4svn-r7547.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@748 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-05-07 22:24:51 +00:00
msweet d8bcaa3c4c Fix imported files.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@735 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-05-01 21:24:43 +00:00
msweet 7a14d7682b Merge CUPS 1.4svn-r7524.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@733 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-05-01 21:18:10 +00:00
msweet a4f1b3dff2 Remove old files.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@727 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-04-28 17:37:04 +00:00
msweet 634763e80e Merge CUPS 1.4svn-r7493.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@723 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-04-24 00:13:12 +00:00
msweet 3dfe78b336 Merge changes from CUPS 1.4svn-r7485.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@718 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-04-21 23:14:57 +00:00
msweet ae71f5deb4 Import CUPS 1.4svn-r7464.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@713 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-04-17 00:50:22 +00:00
msweet 839a51c83c Merge changes from CUPS 1.4svn-r7394.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@702 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-04-09 22:42:49 +00:00
msweet 50fe720154 <rdar://problem/5792631> dependency cycle in cups-144 / PrintingCore-250 / ApplicationServices
Merge build system changes to use shared support libraries.

Merge build system changes to separate installation of data, program, header,
and library files.


git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@668 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-03-21 23:46:46 +00:00
msweet db0bd74adb Merge changes from CUPS 1.4svn-r7386.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@665 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-03-21 00:59:28 +00:00
msweet 64a69576c8 Merge changes from CUPS 1.4svn-r7370.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@659 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-03-05 00:28:36 +00:00
msweet a603edef72 Merge changes from CUPS 1.4svn-r7366.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@656 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-03-04 01:12:17 +00:00
msweet 568fa3faf1 Import CUPS 1.4svn-r7356.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@647 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-02-28 23:00:58 +00:00
msweet d6943d1d31 Add missing files for test.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@632 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-02-18 17:47:07 +00:00
msweet ac884b6a1c Merge CUPS 1.4svn-r7319.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@624 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-02-16 00:27:39 +00:00
msweet 5a738aeaea Merge changes from CUPS 1.4svn-r7282.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@614 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-01-31 17:01:57 +00:00
msweet d9bca400be Merge changes from CUPS 1.4svn-r7255.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@608 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-01-24 00:18:39 +00:00
msweet 5bd77a735f Merge changes from CUPS 1.4svn-r7242.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@598 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-01-22 22:37:41 +00:00
msweet 91c84a3551 Import CUPS 1.4svn-r7226.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@582 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-01-17 00:06:33 +00:00
msweet 080811b190 Merge changes from CUPS 1.4svn-r7199.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@577 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-01-08 00:39:02 +00:00
msweet 3d052e4330 Import CUPS 1.4svn-r7170.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@567 a1ca3aef-8c08-0410-bb20-df032aa958be
2008-01-04 02:32:38 +00:00
msweet a4924f6c45 Import CUPS 1.4svn-r7153.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@563 a1ca3aef-8c08-0410-bb20-df032aa958be
2007-12-21 23:54:03 +00:00
msweet 0a6827453a Import CUPS trunk (1.4svn) r7116.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@551 a1ca3aef-8c08-0410-bb20-df032aa958be
2007-12-07 19:47:43 +00:00
msweet a41f09e265 Merge changes from 1.4svn-r7067.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@533 a1ca3aef-8c08-0410-bb20-df032aa958be
2007-11-09 19:55:26 +00:00
msweet e94d2f1068 Add missing file to repo.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@527 a1ca3aef-8c08-0410-bb20-df032aa958be
2007-10-24 20:55:54 +00:00
msweet 2fb7629816 Import CUPS 1.4svn-r7041.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@520 a1ca3aef-8c08-0410-bb20-df032aa958be
2007-10-22 20:33:34 +00:00
msweet cc9a7e967e Remove old button files.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@507 a1ca3aef-8c08-0410-bb20-df032aa958be
2007-10-17 20:29:26 +00:00
msweet 65a152d3f1 Remove old file.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@506 a1ca3aef-8c08-0410-bb20-df032aa958be
2007-10-17 20:28:09 +00:00
msweet 183ee7626a Remove old data files.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@505 a1ca3aef-8c08-0410-bb20-df032aa958be
2007-10-17 20:26:59 +00:00
msweet 2e4ff8afcb Import CUPS 1.4svn r7023 into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@502 a1ca3aef-8c08-0410-bb20-df032aa958be
2007-10-17 20:05:25 +00:00
msweet 56ab62c60c What the heck, make it the full 1.3.3 release code - we've already got all of
the 1.3.3 changes anyways...


git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@486 a1ca3aef-8c08-0410-bb20-df032aa958be
2007-09-28 20:17:05 +00:00
msweet 7dfedb921d Import changes from CUPS 1.3svn-r7000.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@485 a1ca3aef-8c08-0410-bb20-df032aa958be
2007-09-28 20:09:54 +00:00
msweet c277e2f802 Import CUPS 1.3.2.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@477 a1ca3aef-8c08-0410-bb20-df032aa958be
2007-09-18 20:56:41 +00:00
msweet db1f069b7f Merge changes from CUPS 1.3.1.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@470 a1ca3aef-8c08-0410-bb20-df032aa958be
2007-09-14 02:27:22 +00:00
msweet 76cd9e37aa Merge changes from r6781 to r6792 (CUPS 1.3.0)
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@405 a1ca3aef-8c08-0410-bb20-df032aa958be
2007-08-13 21:04:11 +00:00
msweet 7ff4fea9bc Merge changes from r6758 to r6781.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@388 a1ca3aef-8c08-0410-bb20-df032aa958be
2007-08-09 16:35:06 +00:00
msweet c24d21342f Merge changes from CUPS trunk, r6758.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@379 a1ca3aef-8c08-0410-bb20-df032aa958be
2007-08-02 00:17:51 +00:00
msweet 355e94dc85 Merge changes from CUPS trunk, r6739.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@361 a1ca3aef-8c08-0410-bb20-df032aa958be
2007-07-26 22:45:43 +00:00
msweet cc0d019f5e Update to CUPS trunk r6695.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@352 a1ca3aef-8c08-0410-bb20-df032aa958be
2007-07-19 23:13:28 +00:00
jlovell bc44d92092 Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@342 a1ca3aef-8c08-0410-bb20-df032aa958be
2007-07-16 23:34:09 +00:00
jlovell 09a101d671 Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@334 a1ca3aef-8c08-0410-bb20-df032aa958be
2007-06-23 05:26:17 +00:00
jlovell 3d8365b8dc Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@326 a1ca3aef-8c08-0410-bb20-df032aa958be
2007-05-24 18:54:11 +00:00
jlovell b94498cfba Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@321 a1ca3aef-8c08-0410-bb20-df032aa958be
2007-05-04 21:17:48 +00:00
jlovell 323c5de1e8 Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@308 a1ca3aef-8c08-0410-bb20-df032aa958be
2007-04-05 18:24:21 +00:00
jlovell c0e1af835b Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@303 a1ca3aef-8c08-0410-bb20-df032aa958be
2007-04-02 15:56:16 +00:00
jlovell f42414bf8a Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@299 a1ca3aef-8c08-0410-bb20-df032aa958be
2007-03-26 16:28:00 +00:00
jlovell f899b12170 Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@294 a1ca3aef-8c08-0410-bb20-df032aa958be
2007-03-21 22:24:16 +00:00
jlovell 7594b2247b Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@289 a1ca3aef-8c08-0410-bb20-df032aa958be
2007-03-20 18:25:41 +00:00
jlovell f7deaa1a21 Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@279 a1ca3aef-8c08-0410-bb20-df032aa958be
2007-03-14 16:55:44 +00:00
jlovell b86bc4cf57 Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@266 a1ca3aef-8c08-0410-bb20-df032aa958be
2007-02-14 19:18:46 +00:00
jlovell 411affcf6a Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@245 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-11-16 17:01:30 +00:00
jlovell 26d47ec688 Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@238 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-11-07 19:32:27 +00:00
jlovell 2abf387cae Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@224 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-10-20 18:36:23 +00:00
jlovell 07725fee41 Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@216 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-09-22 05:53:50 +00:00
jlovell d09495fadd Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@211 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-08-30 16:09:13 +00:00
jlovell 8ca02f3c05 Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@194 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-07-20 22:59:35 +00:00
jlovell f7faf1f5c3 Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@185 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-06-23 01:40:35 +00:00
jlovell c07d5b2daf Remove svn:keywords since they cause svn_load_dirs.pl to complain about every file.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@183 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-06-23 00:14:22 +00:00
jlovell ed48691112 Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@181 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-06-22 20:01:18 +00:00
jlovell 9e22304f01 The easysw/current branch should have the same properties as trunk...
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@179 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-06-21 18:38:41 +00:00
jlovell 7a6a01ddca More svn:properties changes.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@177 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-06-21 00:20:03 +00:00
jlovell 3608048605 Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@161 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-05-22 23:39:03 +00:00
jlovell f301802fc2 Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@158 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-05-22 21:33:05 +00:00
jlovell a9252913e7 Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@150 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-05-08 22:42:35 +00:00
jlovell a74454a757 Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@145 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-05-05 19:18:41 +00:00
jlovell 89d46774ee Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@136 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-04-24 18:03:36 +00:00
jlovell e53920b922 Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@125 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-04-07 21:00:45 +00:00
jlovell d6ae789d92 Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@113 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-04-04 20:09:25 +00:00
jlovell 80ca45929e Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@103 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-03-27 23:11:24 +00:00
jlovell e1d6a77454 Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@92 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-03-20 21:11:41 +00:00
jlovell 480ef0fe29 Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@83 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-03-08 23:30:01 +00:00
jlovell 757d2cad8f Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@80 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-03-08 00:32:35 +00:00
jlovell 4744bd907e Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@75 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-03-04 15:56:42 +00:00
jlovell b423cd4cb9 Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@69 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-02-28 17:54:14 +00:00
jlovell ecdc06282a Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@63 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-02-22 16:59:36 +00:00
jlovell bd7854cb4d Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@60 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-02-20 18:43:55 +00:00
jlovell 4400e98de2 Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@54 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-02-03 00:47:45 +00:00
jlovell e00b005a05 Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@51 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-02-01 23:41:32 +00:00
jlovell ffb6300882 To prepare to load cups into easysw/current, perform 4 renames.
* easysw/current/init/org.cups.cupsd.plist: Renamed from
  easysw/current/init/cupsd-launchd.plist.
* easysw/current/init/PrintingServices: Renamed from
  easysw/current/init/cups.osx.
* easysw/current/init/StartupParameters.plist: Renamed from
  easysw/current/init/cups.plist.
* easysw/current/init/Localizable.strings: Renamed from
  easysw/current/init/cups.strings.


git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@50 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-02-01 23:41:17 +00:00
jlovell a4d045870e Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@39 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-01-29 16:52:03 +00:00
jlovell 09ec001812 Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@35 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-01-27 21:43:41 +00:00
jlovell 923edb689d Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@29 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-01-27 00:19:36 +00:00
jlovell fa73b22906 Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@13 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-01-26 21:39:43 +00:00
jlovell 4a09f02d10 To prepare to load cups into easysw/current, perform 4 renames.
* easysw/current/init/cups.osx: Renamed from easysw/current/cups.osx.
* easysw/current/init/cups.plist: Renamed from
  easysw/current/cups.plist.
* easysw/current/init/cups.sh.in: Renamed from
  easysw/current/cups.sh.in.
* easysw/current/init/cups.strings: Renamed from
  easysw/current/cups.strings.


git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@12 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-01-26 21:39:24 +00:00
jlovell ef416fc25c Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@2 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-01-13 01:51:53 +00:00
jlovell 9ec11526e1 Create directories to load project into.
* easysw: New directory.
  * easysw/current: New directory.


git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1 a1ca3aef-8c08-0410-bb20-df032aa958be
2006-01-13 01:51:40 +00:00
2705 arquivos alterados com 666055 adições e 533642 exclusões
+3
Ver Arquivo
@@ -0,0 +1,3 @@
.git* export-ignore
.mailmap export-ignore
tools export-ignore
+149
Ver Arquivo
@@ -0,0 +1,149 @@
*.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/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/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
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/mailto
notifier/rss
notifier/testnotify
packaging/cups.list
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
test/cups-str-*.html
test/error_log-*
test/ippfind
test/ippfind-static
test/ippserver
test/ipptool
test/ipptool-static
xcode/CUPS.xcodeproj/project.xcworkspace/
xcode/CUPS.xcodeproj/xcuserdata/
+11
Ver Arquivo
@@ -0,0 +1,11 @@
# 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>
+856
Ver Arquivo
@@ -0,0 +1,856 @@
CHANGES-1.3.txt
---------------
CHANGES IN CUPS V1.3.11
- The scheduler did not prevent nested classes (STR #3211)
- The scheduler did not reprint processing jobs that were moved to
another destination (STR #3222)
- The scheduler did not reset the current job file when stopping a
printer (STR #3226)
- The scheduler did not handle POSTs to custom CGIs properly (STR #3221)
- The pdftops filter did not print landscape PDF pages properly
(STR #2881)
- The scheduler did not handle partial header lines properly from CGI
programs (STR #3194)
- The web interface could hang on OpenBSD (STR #3176, STR #3196)
- The scheduler and cupsfilter utility did not handle rules starting
with a negation operator properly (STR #3160)
- The scheduler and cupsfilter utility would crash with certain MIME
.types rules (STR #3159)
- httpSetField wasn't bracketing IPv6 numeric addresses for the Host:
field (STR #3164)
- The ServerName, if specified, was not treated as a valid alias for the
local system (STR #3167)
- "make epm" did not work (STR #3166)
- "lpstat -h server" showed non-shared printers (STR #3147)
- "make check" did not work on Linux (STR #3161)
CHANGES IN CUPS V1.3.10
- Documentation fixes (STR #2994, STR #2995, STR #3008, STR #3056,
STR #3057)
- SECURITY: The scheduler now protects against DNS rebinding attacks
(STR #3118)
- SECURITY: Fixed TIFF integer overflow in image filters (STR #3031)
- The scheduler did not support the job-hold-until attribute with the
Restart-Job operation (STR #3130)
- SECURITY: The PNG image reading code did not validate the
image size properly, leading to a potential buffer overflow
(STR #2974)
- The rastertohp driver did not set the 1-sided printing mode when
needed (STR #3131)
- Now use a wrapper program instead of our fork of the Xpdf code to
support printing of PDF files. The new wrapper supports using Xpdf,
poppler, or Ghostscript to convert PDF files to PostScript (STR #3129)
- Long job names caused problems with some PJL printers (STR #3125)
- The lpq command did not work when showing all destinations (STR #3117)
- The scheduler used a codeset name of UTF8 which is not supported on
Solaris (STR #3113)
- cupsGetJobs() did not work with a NULL destination (STR #3107)
- Fixed a localization problem for option choices (incorrectly) named
"Custom" (STR #3106)
- The fallback OpenSSL random number seeding would not work (STR #3079)
- The scheduler might miss a child signal, causing high CPU usage.
- The scheduler did not enforce quotas after the job history was
unloaded (STR #3078)
- The job-k-limit, job-page-limit, and job-quota-period attributes
could not be set using the lpadmin command (STR #3077)
- httpSeparateURI() did not error out on URIs with a missing port
number after a colon.
- Fixed a Valgrind-detected initialization error when creating a
missing directory on startup.
- The scheduler did not always read all of the HTTP headers from a
CGI script/program.
- The scheduler did not always set the "air" property in Bonjour/DNS-SD
registrations.
- The scheduler incorrectly compared Mac OS X UUIDs for access
control, preventing access in certain configurations.
- The IPP backend incorrectly reset the required authentication
to Kerberos when authentication failed.
- The scheduler no longer looks up the local hostname by default;
turn on hostname lookups to restore the previous behavior.
- The scheduler did not always load MIME type rules correctly
(STR #3059)
- The test page did not format correctly on A4 paper (STR #3060)
- The web interface sometimes incorrectly redirected users to
127.0.0.1 (STR #3022)
- cupsPrintFile*() did not send the document filename for single
file submissions (STR #3055)
- The scheduler did not update the member-names attribute when
removing the last printer from a class.
- The scheduler did not report PPD Products with parenthesis
in them properly (STR #3046)
- The wrong italic fonts were listed in the UTF-8 charset file
for the text filter.
- The backends did not return an OK status for the
CUPS_SC_CMD_GET_BIDI side-channel command (STR #3029)
- The scheduler did not purge jobs that were missing a
time-at-creation attribute, indicating a bad job control file
(STR #3030)
- The "-o job-hold-until=week-end" option did not work properly
(STR #3025)
- The Solaris USB printer device does not support select or poll
(STR #3028)
- The scheduler would crash if you exceeded the MaxSubscriptions
limit.
- The lp "-H immediate" option did not specify that the job
should not be held (STR #3013)
- The scheduler did not support the "Connection: close"
HTTP header (STR #3010)
- The mailto notifier didn't terminate messages properly
(STR #3011)
- Backends could spin trying to read back-channel data
(STR #3001)
- The HP-GL/2 filter was using the wrong default colors
(STR #2966)
- The scheduler incorrectly allowed Get-Jobs operations without a
printer-uri (STR #2996)
- The compression option was not being encoded properly
(STR #2997)
- Added a missing character map for JIS-X0213/ShiftJIS.
- The scheduler now rejects ATTR: messages with empty values.
- The scheduler could consume all CPU handling closed connections
(STR #2988)
- Fixed some configure script bugs with rc/xinetd directories
(STR #2970)
- The Epson sample driver PPDs contained errors (STR #2979)
CHANGES IN CUPS V1.3.9
- SECURITY: The HP-GL/2 filter did not range check pen numbers
(STR #2911)
- SECURITY: The SGI image file reader did not range check
16-bit run lengths (STR #2918)
- SECURITY: The text filter did not range check cpi, lpi, or
column values (STR #2919)
- Documentation updates (STR #2904, STR #2944)
- The French web admin page was never updated (STR #2963)
- The IPP backend did not retry print jobs when the printer
reported itself as busy or unavailable (STR #2951)
- The "Set Allowed Users" web interface did not handle trailing
whitespace correctly (STR #2956)
- The PostScript filter did not work with Adobe applications
using custom page sizes (STR #2968)
- The Mac OS X USB backend did not work with some printers
that reported a bad 1284 device ID.
- The scheduler incorrectly resolved the client connection
address when HostNameLookups was set to Off (STR #2946)
- The IPP backend incorrectly stopped the local queue if
the remote server reported the "paused" state.
- The cupsGetDests() function did not catch all types of
request errors.
- The scheduler did not always log "job queued" messages
(STR #2943)
- The scheduler did not support destination filtering using
the printer-location attribute properly (STR #2945)
- The scheduler did not send the server-started,
server-restarted, or server-stopped events (STR #2927)
- The scheduler no longer enforces configuration file
permissions on symlinked files (STR #2937)
- CUPS now reinitializes the DNS resolver on failures
(STR #2920)
- The CUPS desktop menu item was broken (STR #2924)
- The PPD parser was too strict about missing keyword
values in "relaxed" mode.
- The PostScript filter incorrectly mirrored landscape
documents.
- The scheduler did not correctly update the
auth-info-required value(s) if the AuthType was Default.
- The scheduler required Kerberos authentication for
all operations on remote Kerberized printers instead
of just for the operations that needed it.
- The socket backend could wait indefinitely for back-
channel data with some devices.
- PJL panel messages were not reset correctly on older
printers (STR #2909)
- cupsfilter used the wrong default path (STR #2908)
- Fixed address matching for "BrowseAddress @IF(name)"
(STR #2910)
- Fixed compiles on AIX.
- Firefox 3 did not work with the CUPS web interface in SSL
mode (STR #2892)
- Custom options with multiple parameters were not emitted
correctly.
- Refined the cupstestppd utility.
- ppdEmit*() did not support custom JCL options (STR #2889)
- The cupstestppd utility incorrectly reported missing
"en" base translations (STR #2887)
CHANGES IN CUPS V1.3.8
- Documentation updates (STR #2785, STR #2861, STR #2862)
- The scheduler did not add the ending job sheet when the
job was released.
- The IPP backend did not relay marker-* attributes.
- The CUPS GNOME/KDE menu item was not localized for
Chinese (STR #2880)
- The CUPS GNOME/KDE menu item was not localized for
Japanese (STR #2876)
- The cupstestppd utility reported mixed line endings for
Mac OS and Windows PPD files (STR #2874)
- The pdftops filter did not print landscape orientation PDF
pages correctly on all printers (STR #2850)
- The scheduler did not handle expiring of implicit classes
or their members properly, leading to a configuration where
one of the members would have a short name (STR #2766)
- The scheduler and cupstestppd utilities did not support
cupsFilter and cupsPreFilter programs with spaces in their
names (STR #2866)
- Removed unused variables and assignments found by the
LLVM "clang" tool.
- Added NULL checks recommended by the LLVM "clang" tool.
- The scheduler would crash if you started a printer that
pointed to a backend that did not exist (STR #2865)
- The ppdLocalize functions incorrectly mapped all generic
locales to country-specific locales.
- The cups-driverd program did not support Simplified Chinese
or Traditional Chinese language version strings (STR #2851)
- Added an Indonesian translation (STR #2792)
- Fixed a timing issue in the backends that could cause data
corruption with the CUPS_SC_CMD_DRAIN_OUTPUT side-channel
command (STR #2858)
- The scheduler did not support "HostNameLookups" with all of
the boolean names (STR #2861)
- Fixed a compile problem with glibc 2.8 (STR #2860)
- The scheduler incorrectly filtered out queues with ACLs and
authentication.
- The PostScript filter did not support %%IncludeFeature lines
in the page setup section of each page (STR #2831)
- The scheduler did not generate printer-state events when the
default printer was changed (STR #2764)
- cupstestppd incorrectly reported a warning about the PPD format
version in some locales (STR #2854)
- cupsGetPPD() and friends incorrectly returned a PPD file for
a class with no printers.
- The member-uris values for local printers in a class returned
by the scheduler did not reflect the connected hostname or
port.
- The CUPS PHP extension was not thread-safe (STR #2828)
- The scheduler incorrectly added the document-format-default
attribute to the list of "common" printer attributes, which
over time would slow down the printing system (STR #2755,
STR #2836)
- The cups-deviced and cups-driverd helper programs did not set
the CFProcessPath environment variable on Mac OS X (STR #2837)
- "lpstat -p" could report the wrong job as printing (STR #2845)
- The scheduler would crash when some cupsd.conf directives
were missing values (STR #2849)
- The web interface "move jobs" operation redirected users to
the wrong URL (STR #2815)
- The Polish web interface translation contained errors
(STR #2815)
- The scheduler did not report PostScript printer PPDs with
filters as PostScript devices.
- The scheduler did not set the job document-format attribute
for jobs submitted using Create-Job and Send-Document.
- cupsFileTell() did not work for log files opened in append
mode (STR #2810)
- The scheduler did not set QUERY_STRING all of the time
for CGI scripts (STR #2781, STR #2816)
- The scheduler now returns an error for bad job-sheets
values (STR #2775)
- Authenticated remote printing did not work over domain
sockets (STR #2750)
- The scheduler incorrectly logged errors for print filters
when a job was canceled (STR #2806, #2808)
- The scheduler no longer allows multiple RSS subscriptions
with the same URI (STR #2789)
- The scheduler now supports Kerberized printing with
multiple server names (STR #2783)
- "Satisfy any" did not work in IPP policies (STR #2782)
- The CUPS imaging library would crash with very large
images - more than 16Mx16M pixels (STR #2805)
- The PNG image loading code would crash with large images
(STR #2790)
- The scheduler did not limit the total number of filters.
- The scheduler now ensures that the RSS directory has
the correct permissions.
- The RSS notifier did not quote the feed URL in the RSS
file it created (STR #2801)
- The web interface allowed the creation and cancellation
of RSS subscriptions without a username (STR #2774)
- Increased the default MaxCopies value on Mac OS X to
9999 to match the limit imposed by the print dialog.
- The scheduler did not reject requests with an empty
Content-Length field (STR #2787)
- The scheduler did not log the current date and time and
did not escape special characters in request URIs when
logging bad requests to the access_log file (STR #2788)
CHANGES IN CUPS V1.3.7
- CVE-2008-0047: cgiCompileSearch buffer overflow (STR #2729)
- CVE-2008-1373: CUPS GIF image filter overflow (STR #2765)
- Updated the "make check" tests to do a more thorough
automated test.
- cups-driverd complained about missing directories (STR
#2777)
- cupsaddsmb would leave the Samba username and password on
disk if no Windows drivers were installed (STR #2779)
- The Linux USB backend used 100% CPU when a printer was
disconnected (STR #2769)
- The sample raster drivers did not properly handle SIGTERM
(STR #2770)
- The scheduler sent notify_post() messages too often on
Mac OS X.
- Kerberos access to the web interface did not work
(STR #2748)
- The scheduler did not support "AuthType Default" in IPP
policies (STR #2749)
- The scheduler did not support the "HideImplicitMembers"
directive as documented (STR #2760)
- "make check" didn't return a non-zero exit code on
error (STR #2758)
- The scheduler incorrectly logged AUTH_foo environment
variables in debug mode (STR #2751)
- The image filters inverted PBM files (STR #2746)
- cupsctl would crash if the scheduler was not running
(STR #2741)
- The scheduler could crash when printing using a port
monitor (STR #2742)
- The scheduler would crash if PAM was broken (STR #2734)
- The image filters did not work with some CMYK JPEG files
produced by Adobe applications (STR #2727)
- The Mac OS X USB backend did not work with printers that
did not report a make or model.
- The job-sheets option was not encoded properly (STR #2715)
- The scheduler incorrectly complained about missing LSB
PPD directories.
CHANGES IN CUPS V1.3.6
- Documentation updates (STR #2646, STR #2647, STR #2649)
- Fixed a problem with the web interface "Use Kerberos
Authentication" check box (STR #2703)
- The scheduler unconditionally overwrote the printer-state-
message with "process-name failed" when a filter or backend
failed, preventing a useful error message from being shown
to the user.
- Policies on CUPS-Move-Job didn't work as expected (STR
#2699)
- The configure script only supported D-BUS on Linux
(STR #2702)
- The scheduler did not support </LimitExcept> (STR #2701)
- The scheduler did not reset the job-hold-until attribute
after a job's hold time was reached.
- The scheduler did not support printer supply attributes
(STR #1307)
- The Kerberos credentials provided by some Windows KDCs
were still too large - now use a dynamic buffer to
support credentials up to 64k in size (STR #2695)
- Printing a test page from the web interface incorrectly
defaulted to the "guest" user (STR #2688)
- The cupsEncodeOptions2() function did not parse multiple-
value attribute values properly (STR #2690)
- The scheduler incorrectly sent printer-stopped events for
status updates from the print filters (STR #2680)
- The IPP backend could crash when handling printer errors
(STR #2667)
- Multi-file jobs did not print to remote CUPS servers
(STR #2673)
- The scheduler did not provide the Apple language ID to
job filters.
- Kerberos authentication did not work with the web
interface (STR #2606, STR #2669)
- The requesing-user-name-allowed and -denied functionality
did not work for Kerberos-authenticated usernames (STR
#2670)
- CUPS didn't compile on HP-UX 11i (STR #2679)
- cupsEncodeOptions2() did not handle option values like
"What's up, doc?" properly.
- Added lots of memory allocation checks (Fortify)
- The scheduler would crash if it was unable to add a job
file (Fortify)
- ppdOpen*() did not check all memory allocations (Coverity)
- ippReadIO() did not check all memory allocations (Coverity)
- The PostScript filter did not detect read errors (Coverity)
- The scheduler did not check for a missing job-sheets-completed
attribute when sending an event notification (Coverity)
- "Set Printer Options" might not work with raw queues (Coverity)
- cupsRasterInterpretPPD() could crash on certain PostScript
errors (Coverity)
- The USB backend did not check for back-channel support
properly on all systems (Coverity)
- Fixed memory leaks in the GIF and PNM image loading code
(Coverity)
- Removed some dead code in the CUPS API and scheduler (Coverity)
- Fixed two overflow bugs in the HP-GL/2 filter (Coverity)
- Fixed another ASN1 string parsing bug (STR #2665)
- The RSS notifier directory was not installed with the
correct permissions.
- The standard CUPS backends could use 100% CPU while waiting
for print data (STR #2664)
- Filename-based MIME rules did not work (STR #2659)
- The cups-polld program did not exit if the scheduler crashed
(STR #2640)
- The scheduler would crash if you tried to set the port-monitor
on a raw queue (STR #2639)
- The scheduler could crash if a polled remote printer was
converted to a class (STR #2656)
- The web interface and cupsctl did not correctly reflect
the "allow printing from the Internet" state (STR #2650)
- The scheduler incorrectly treated MIME types as case-
sensitive (STR #2657)
- The Java support classes did not send UTF-8 strings to
the scheduler (STR #2651)
- The CGI code did not handle interrupted POST requests
properly (STR #2652)
- The PostScript filter incorrectly handled number-up when
the number of pages was evenly divisible by the number-up
value.
- The PDF filter incorrectly filtered pages when page-ranges
and number-up were both specified (STR #2643)
- The IPP backend did not handle printing of pictwps files
to a non-Mac CUPS server properly.
- The scheduler did not detect network interface changes
on operating systems other than Mac OS X (STR #2631)
- The scheduler now logs the UNIX error message when it
is unable to create a request file such as a print job.
- Added support for --enable-pie on Mac OS X.
CHANGES IN CUPS V1.3.5
- The SNMP backend did not check for negative string
lengths (STR #2589)
- The scheduler incorrectly removed auth-info attributes,
potentially leading to a loss of all options for a job.
- The scheduler stopped sending CUPS browse packets on a
restart when using fixed addresses (STR #2618)
- Fixed PDF filter security issues (CVE-2007-4352
CVE-2007-5392 CVE-2007-5393)
- Changing settings would always change the DefaultAuthType
and Allow lines (STR #2580)
- The scheduler would crash when submitting an undefined
format file from Samba with LogLevel debug2 (STR #2600)
- The scheduler did not use poll() when epoll() was not
supported by the running kernel (STR #2582)
- Fixed a compile problem with Heimdal Kerberos (STR #2592)
- The USB backend now retries connections to a printer
indefinitely rather than stopping the queue.
- Printers with untranslated JCL options were not exported
to Samba correctly (STR #2570)
- The USB backend did not work with some Minolta USB
printers (STR #2604)
- The strcasecmp() emulation code did not compile (STR
#2612)
- The scheduler would crash if a job was sent to an empty
class (STR #2605)
- The lpc command did not work in non-UTF-8 locales (STR
#2595)
- Subscriptions for printer-stopped events also received
other state changes (STR #2572)
- cupstestppd incorrectly reported translation errors for
the "en" locale.
- ppdOpen() did not handle custom options properly when the
Custom attribute appeared before the OpenUI for that
option.
- The scheduler could crash when deleting a printer or
listing old jobs.
- The Mac OS X USB backend did not allow for requeuing of
jobs submitted to a class.
- lpmove didn't accept a job ID by itself.
- The scheduler incorrectly removed job history information
for remote print jobs.
- The scheduler incorrectly sent the
"com.apple.printerListChanged" message for printer state
changes.
- The PostScript filter drew the page borders (when enabled)
outside the imageable area.
- The LPD and IPP backends did not default to the correct
port numbers when using alternate scheme names.
- The scheduler incorrectly deleted hardwired remote
printers on system sleep.
- The scheduler would abort if a bad browse protocol name
was listed in the cupsd.conf file.
- The online cupsd.conf help file incorrectly showed
"dns-sd" instead of "dnssd" for Bonjour sharing.
- The scheduler could crash changing the port-monitor value.
- The scheduler generated CoreFoundation errors when run as
a background process.
- When printing with number-up > 1, it was possible to get
an extra blank page.
CHANGES IN CUPS V1.3.4
- Documentation updates (STR #2560, STR #2563, STR #2569)
- CUPS now maps the "nb" locale to "no" on all platforms
(STR #2575)
- CUPS did not work with a Windows 2003 R2 KDC (STR #2568)
- ippReadIO() could read past the end of a buffer (STR
#2561)
- The scheduler would crash on shutdown if it was unable
to create a Kerberos context.
- Multiple AuthTypes in cupsd.conf did not work (STR
#2545)
- The snmp.conf file referenced the wrong man page (STR
#2564)
- The cupsaddsmb program didn't handle domain sockets
properly (STR #2556)
- The scheduler now validates device URIs when adding
printers.
- Updated httpSeparateURI() to support hostnames with
the backslash character.
- Updated the Japanese localization (STR #2546)
- The parallel backend now gets the current IEEE-1284
device ID string on Linux (STR #2553)
- The IPP backend now checks the job status at
variable intervals (from 1 to 10 seconds) instead
of every 10 seconds for faster remote printing
(STR #2548)
- "lpr -p" and "lpr -l" did not work (STR #2544)
- Compilation failed when a previous version of CUPS
was installed and was included in the SSL include
path (STR #2538)
- The scheduler did not reject requests with charsets
other than US-ASCII or UTF-8, and the CUPS API
incorrectly passed the locale charset to the scheduler
instead of UTF-8 (STR #2537)
- cups-deviced did not filter out duplicate devices.
- The AppleTalk backend incorrectly added a scheme
listing when AppleTalk was disabled or no printers
were found.
- The PostScript filter generated N^2 copies when the
printer supported collated copies and user requested
reverse-order output.
- The scheduler did not reprint all of the files in a
job that was held.
- The scheduler did not update the printcap file after
removing stale remote queues.
- The cupsd.conf man page incorrectly referenced
"AuthType Kerberos" instead of "AuthType Negotiate".
CHANGES IN CUPS V1.3.3
- The scheduler did not use the attributes-natural-language
attribute when passing the LANG environment variable to
cups-deviced or cups-driverd.
- The scheduler did not use the printer-op-policy when
modifying classes or printers (STR #2525)
- The auth-info-required attribute was not always updated
for remote queues that required authentication.
- The German web interface localization contained errors
(STR #2523)
- The Swedish localization contained errors (STR #2522)
CHANGES IN CUPS V1.3.2
- The 1.3.1 release was incorrectly created from the
1.4.x source tree (STR #2519)
- Added support for 32/64-bit libraries on HP-UX
(STR #2520)
- The scheduler incorrectly used portrait as the default
orientation (STR #2513)
- The scheduler no longer writes the printcap file for
every remote printer update (STR #2512)
- Remote raw printing with multiple copies did not work
(STR #2518)
- Updated the configure script to require at least autoconf
2.60 (STR #2515)
- Some gzip'd PPD files were not read in their entirety
(STR #2510)
CHANGES IN CUPS V1.3.1
- Documentation updates.
- The USB backend on Mac OS X could hang if the driver and
printer did not match.
- Delegated Kerberos credentials were not working.
- "make distclean" incorrectly removed the edit-config.tmpl
files (STR #2508)
- Fix compile problem on HP-UX (STR #2501)
- The cupstestppd utility now tests for resolutions greater
than 99999 DPI to detect a missing "x" between the X and Y
resolutions.
- Fixed many problems in the various translations and added
a new "checkpo" utility to validate them.
- The cupstestppd utility now tests the custom page size code
for CUPS raster drivers.
- cupsLangDefault() did not attempt to return a language that
was supported by the calling application.
- If a remote printer stopped while a job was being sent, the
local queue would also get stopped and the job re-queued,
resulting in duplicate prints in some cases.
- A few Apple-specific job options needed to be omitted when
printing a banner page.
- The new peer credential support did not compile on FreeBSD
(STR #2495)
- Direct links to help files did not set the current section
so the table-of-contents was not shown.
- The configure script did not support --localedir=foo (STR #2488)
- The backends were not displaying their localized messages.
- CUPS-Authenticate-Job did not require Kerberos authentication
on queues protected by Kerberos.
- The Zebra ZPL driver did not work with Brady label printers
(STR #2487)
- Norwegian wasn't localized on Mac OS X.
- getnameinfo() returns an error on some systems when DNS is
not available, leading to numerous problems (STR #2486)
- The cupsfilter command did not work properly on Mac OS X.
- The scheduler makefile contained a typo (STR #2483)
- The TBCP and BCP port monitors did not handle the trailing
CTRL-D in some PostScript output properly.
- Fixed the localization instructions and German template for
the "Find New Printers" button (STR #2478)
- The web interface did not work with the Chinese localization
(STR #2477)
- The web interface home page did not work for languages that
were only partially localized (STR #2472)
- Updated the Spanish web interface localization (STR #2473)
- ppdLocalize() did not work for country-specific localizations.
CHANGES IN CUPS V1.3.0
- The scheduler did not handle out-of-file conditions
gracefully when accepting new connections, leading to
heavy CPU usage.
- The scheduler did not detect ServerBin misconfigurations
(STR #2470)
- "AuthType Default" did not work as expected when the
"DefaultAuthType foo" line appeared after it in the
cupsd.conf file.
- The on-line help did not describe many common printing
options (STR #1846)
- The IPP backend did not return the "auth required" status
when printing to a Kerberos-protected queue.
- The scheduler was not looking in the correct directories
for LSB PPD files (STR #2464)
- Changed references to ESP Ghostscript to GPL Ghostscript
(STR #2463)
- The PostScript filter did not cleanly terminate when
the job was canceled or stopped.
- Fixed generation of Kerberos credentials for remote
printing. Note that this requires a recent version of
MIT Kerberos with a working krb5_cc_new_unique()
function or Heimdal Kerberos.
- Added Portuguese and updated Italian message catalogs.
CHANGES IN CUPS V1.3rc2
- Added more range checking to the pdftops filter.
- The scheduler would crash if a remote IPP queue was stopped
(STR #2460)
- The scheduler did not allow "DefaultAuthType None".
CHANGES IN CUPS V1.3rc1
- Updated the German localization (STR #2443)
- cupsAdminGetServerSettings() did not handle </Foo> properly.
- When lprm and cancel are run with no job ID, they now will
cancel the first stopped job if no pending or processing
jobs are left in the queue.
- The scheduler now logs successful print jobs, filter
failures, and the job file types at the default log
level (STR #2458)
- The scheduler now logs the usernames it is using for
authorization at LogLevel debug instead of debug2 (STR #2448)
- Added Intellitech Intellibar and Zebra CPCL PPDs to the list
of installed PPDs.
- Added 6" and 8" wide label sizes for the Zebra ZPL Label
Printer driver (STR #2442)
- The cupsaddsmb program and web interface now support
exporting of 64-bit Windows drivers, when available
(STR #2439)
- Moving a job that was printing did not stop the job on the
original printer (STR #2262)
- The cups-lpd mini-daemon did not work on Mac OS X server.
- Added httpGetAuthString() and httpSetAuthString() APIs to get
and set the current (cached) authorization string to use for
HTTP requests.
- Updated the default cupsd.conf policy to list the
"administrative" operations separately from the "printer
control" operations so that it is easier to define a
group of users that are "printer operators".
- The web interface now pulls the default cupsd.conf file
from cupsd.conf.default in the CUPS config directory.
- Added a help file for using Kerberos with CUPS.
- The scheduler now strips the "@KDC" portion of Kerberos
usernames since those usernames typically do not appear in
the group membership lists used by CUPS.
- cupsMarkOptions() could (incorrectly) leave multiple option
choices marked.
- Backends could (incorrectly) run as root during discovery
(STR #2454)
- Avahi is now supported for DNS-SD (Bonjour) printer sharing
(STR #2455)
- The default cupsd.conf file had typos and old operation names
(STR #2450)
- The scheduler now erases authentication cache files using the
7-pass US DoD algorithm.
- Delegated Kerberos credentials (proxy authentication) did not
work.
- The filter makefile did not optimize the libcupsimage.2.dylib
with a sectorder file.
- The IPP backend incorrectly wrote an empty printer message
when processing the "none" state reason.
- The USB backend could deadlock on Mac OS X while performing
a side-channel command.
- The scheduler did not prevent remote queues from being
shared/published.
- The scheduler did not remove the temporary request file on
authentication errors.
- ppdLocalizeIPPReason() did not handle "scheme:" schemes or
"file" URLs.
- ppdLocalizeIPPReason() was not exported on Mac OS X.
CHANGES IN CUPS V1.3b1
- Copyright updates - CUPS is now owned by Apple Inc.
- Documentation updates (STR #1775, STR #2027, STR #2130,
STR #2131, STR #2263, STR #2356, STR #2397)
- Added new cupsfilter utility (STR #1734)
- Added new job-printer-state-message and
job-printer-state-reasons attributes to jobs (STR #2418)
- Added LDAP+SSL support (STR #1967)
- CUPS now supports authentication via peer credentials
over domain sockets (STR #2242, STR #2277)
- The CUPS sample driver PPDs are now generated by the PPD
compiler and include all of the localized languages by
default (STR #2164)
- You can now specify "AuthType Default" in the cupsd.conf
file to use the default authentication defined by the
DefaultAuthType directive.
- The SNMP backend no longer adds a default Address line
when none is specified in the snmp.conf file; this allows
the backend to be easily disabled as needed (STR #2434)
- Added a new cupsctl command for doing basic changes to
the cupsd.conf file (STR #1777)
- Added a new ppdLocalizeIPPReason() function to get the
localized text/URI for a given IPP reason keyword for a
driver.
- Removed the deskjet2.ppd driver, as it only worked with
a very small subset of HP DeskJet printers and was
confusing to users. The rastertohp driver still
supports the deskjet2.ppd options for existing queues.
- The scheduler did not add a trailing banner page if a
client did not specify the last document in a job (STR
#1711)
- The scheduler did not report Bonjour shared printers as
remote printers (STR #2384)
- Added new -R and -W options to the cupstestppd program
for greater control over the testing of PPDs.
- Added a new cupsGetServerPPD() function for getting
an available PPD from the server (STR #2334)
- Added a new cupsDoIORequest() function for reading
and writing files via IPP requests (STR #2334)
- Added a new CUPS_GET_PPD operation for getting an
available PPD file on the server (STR #2334)
- CUPS_GET_PPDS now reports multiple ppd-product values
based on the PPD ModelName and Product strings (STR
#2334, STR #2383)
- CUPS_GET_PPDS now reports the PSVersion attributes
from a PPD file in the ppd-psversion attribute
(STR #2334)
- CUPS_GET_PPDS now reports the cupsModelNumber attribute
from a PPD file in the ppd-model-number attribute (STR
#2383)
- CUPS_GET_PPDS now reports a driver type string in the
ppd-type attribute based on the cupsFax and cupsFilter
attributes in a PPD file (STR #2383)
- Added a new printer attribute called "cups-version"
which reports the version of CUPS that is running
(STR #2240)
- backendRunLoop() now aborts immediately on SIGTERM
if no data has been written yet (STR #2103)
- Due to poor IPP support from the vendors, the SNMP
backend no longer tries IPP connections; instead,
it now uses a lookup file with fallback to port 9100
(socket://address) and 515 (lpd://address) printing
(STR #2035, STR #2354)
- The scheduler now recreates the CUPS log directory as
needed (STR #2353)
- cupsLangDefault() now maps new-style Apple locale names
to the traditional ll_CC form (STR #2357)
- Add new cupsArrayNew2() API to support hashed lookups
of array elements (STR #2358)
- ppdConflicts() optimizations (STR #2358)
- The cupstestppd program now tests for existing filters,
icons, profiles, and dialog extensions (STR #2326)
- The web interface no longer lists new printers on the
main administration page. Instead, a new "List Available
Printers" button is provided that shows a separate page
with the list of printers.
- The web interface now supports setting the banner and
policy options on raw printers and classes (STR #2238)
- The socket backend now reads any pending back-channel
data before shutting down the socket (STR #2325)
- Added a new ErrorPolicy directive in the cupsd.conf
file (STR #1871)
- Printers that use JCL options are now exported to Samba
correctly (STR #1985)
- The IPP backend now relays printer-state-message values
from the server to the client (STR #2109)
- Added support for the PWG printer-alert and
printer-alert-description attributes (STR #2088)
- Added support for LPD "stream" mode (STR #2036)
- The scheduler now reports the PostScript product string
from PPD files in CUPS-Get-PPDs responses (STR #1900)
- Raw printing with queues pointing to the file pseudo-
device and multiple files and/or banners now works (STR
#1933)
- Added new public cupsAdminGetServerSettings() and
cupsAdminSetServerSettings() APIs.
- Added new "makebuttons" script in the "tools" directory
for creating web interface buttons (STR #2231)
- Added support for DNS-SD (aka "Bonjour") printer sharing
(STR #1171)
- Job operations (cancel, hold, release, etc.) from the
web interface now return back to the original page (STR
#2239)
- The classes or printers list is now shown after a
successful deletion from the web interface (STR #1999)
- The default configuration now allows browse packets from
any address (STR #2008)
- The web interface now provides an "allow printing from the
Internet" check box (STR #1897)
- The notify-events-default and
notify-lease-duration-default attributes can now be set
(STR #1671)
- Server-side default options are now sent to clients when
the "printer-defaults" attribute group is requested (STR
#1923)
- Added support for Linux "relro" linker option (STR #1614)
- CUPS now validates the number-up option value (STR #1329)
- The on-line help now provides better search capabilities
(STR #1701)
- The web interface "Add This Printer" button now allows you
to change the printer name, description, and location
(STR #1646)
- Added support for Mac OS X authorization services
(STR #2206)
- Added support for driver-specific pre-filters (STR #2108)
- Added a new side-channel API for drivers and backends
for basic device control and information queries (STR
#1898)
- The scheduler now uses poll(), epoll(), or /dev/kqueue
instead of select() when possible (STR #1261)
- Added new cupsArrayGetIndex() and cupsArrayGetInsert()
functions to get the current index and insertion
positions of an array.
- Added a new --with-max-copies configure option (STR
#2090)
- Added new cupsRemoveDest() and cupsSetDefaultDest()
functions.
- Added support for cupsPJLCharset attribute in PPD files
which specifies the character set that is used in PJL
strings (STR #1969)
- Moved the definition of the (private) _http_s structure
to http-private.h; code that directly accesses the
http_t members will no longer compile!
- Added support for setting the document-format-default
attribute on a per-printer basis.
- Added support for IntelliBar label printers.
+843
Ver Arquivo
@@ -0,0 +1,843 @@
CHANGES-1.4.txt
---------------
CHANGES IN CUPS V1.4.8
- The scheduler would delete job data files when restarted (STR #3880)
- The network backends could crash if a printer returned a value of 0
for the maximum capacity for a supply (STR #3875)
CHANGES IN CUPS V1.4.7
- Documentation changes (STR #3710, STR #3720, STR #3745, STR #3750,
STR #3757, STR #3758, STR #3782, STR #3826, STR #3829, STR #3837)
- Web interface fixes (STR #3412, STR #3345, STR #3455, STR #3707,
STR #3755, STR #3769, STR #3783)
- Configure script fixes (STR #3659, STR #3691)
- Compilation fixes (STR #3718, STR #3771, STR #3774)
- The imageto* filters could crash with bad GIF files (STR #3867)
- The scheduler might leave old job data files in the spool directory
(STR #3795)
- CUPS did not work with locales using the ASCII character set
(STR #3832)
- httpAddrString() did not return a URI-style IPv6 numeric address
(STR #3814)
- Fixed an issue when reading compressed CUPS raster streams (STR #3812)
- Fixed an issue with PostScript printer auto-configuration (STR #3443)
- Fixed some compatibility issues with the libusb-based USB backend
(STR #3799)
- The network backends no longer try to collect SNMP supply and status
information for raw queues (STR #3809)
- The DBUS notifier did not report job state changes (STR #3805)
- The scheduler did not always report that the "normal" print-quality
value was supported (STR #3803)
- The gziptoany filter did not report the correct error if it was unable
to write the uncompressed document to the next filter or backend in
the chain (STR #3797)
- The Epson and Oki 9-pin drivers had a bad resolution option
(STR #3798)
- The scheduler did not always register the correct default ICC profile
on Mac OS X.
- The scheduler did not use the job owner when authorizing access for
the CUPS-Get-Document operation, preventing non-admins from accessing
their own jobs.
- CUPS did not work with some printers that incorrectly implemented the
HTTP/1.1 standard (STR #3778, STR #3791)
- The scheduler did not retry fax jobs properly.
- The scheduler now recognizes an empty cupsCommands PPD keyword as
meaning that CUPS commands are not supported for a printer (STR #3773)
- Fixed a crash bug in the scheduler when the application/octet-stream
MIME type was not defined (STR #3690)
- Polled printers were advertised more slowly than necessary (STR #3574)
- cupsResolveConflicts() did not handle resolving multiple UIConstraints
issues (STR #3705)
- The SetEnv and PassEnv directives had no effect (STR #3664)
- The libusb-based USB backend printed slowly to the LaserJet 1300 and
other printers (STR #3405)
- "lp" and "lpr" failed to print with Kerberos enabled (STR #3768)
- The cupsctl program now displays an error if you try to directly set
the Port or Listen directives (STR #3749)
- PPD files with "*JobPatchFile: bla" no longer fail to load in relaxed
conformance mode (STR #3747)
- The scheduler generated a bad notify-text string for printer state
change notifications (STR #3739)
- The scheduler incorrectly updated printers.conf when it really needed
to update classes.conf or remote.cache (STR #3726)
- Hardwired remote printers with options did not work (STR #3717)
- Accessing the CUPS web interface using a CNAME-based hostname would
sometimes fail due to redirection to the actual hostname (STR #3701)
- Subscription events had a misspelled attribute (STR #3693)
- "make check" failed if LC_MESSAGES was set (STR #3765)
- Fixed the configure script to always look for the pkg-config script
(STR #3761)
- The scheduler now only looks up interface hostnames if HostNameLookups
are enabled (STR #3737)
- Fixed a compilation problem on DragonFly BSD (STR #3738)
- The default PageLogFormat value had the username and job ID swapped
from CUPS 1.3.x (STR #3727)
- The scheduler could crash if a browsed printer times out while a job
is printing (STR #3754)
- The scheduler incorrectly mapped custom page sizes to standard sizes
(STR #3764)
- cupsfilter and pstops did not map IPP attributes to PPD options due to
a change in cupsMarkOptions (STR #3756)
- The scheduler did not always show the most recent status message from
the print filters (STR #3731)
- The PostScript filter did not apply the mirror and number-up options
properly, leading to offset and clipped output (STR #3732)
- The network backends always reported "low toner" or "out of toner"
states, even for inkjet printers (STR #3733)
CHANGES IN CUPS V1.4.6
- Fixed a "make check" issue on Solaris (STR #3729)
- Regression: The pstops filter did not support landscape printing of
PostScript files (STR #3722)
- The scheduler killed retried (fax) jobs after restarting them
(STR #3697)
- The cupsAdminSetServerSettings() function disabled sharing when
debug logging was enabled (STR #3712)
CHANGES IN CUPS V1.4.5
- Documentation fixes (STR #3542, STR #3650)
- Localization fixes (STR #3635, STR #3636, STR #3647, STR #3666)
- Security: Fixed a memory corruption bug reported in CVE-2010-2941
(STR #3648)
- The CUPS API incorrectly mapped the HTTP_UNAUTHORIZED status to the
IPP_NOT_AUTHORIZED status code, when IPP_NOT_AUTHENTICATED would be
the correct mapping (STR #3684)
- The scheduler would restart jobs while shutting down (STR #3679)
- Fixed a PPD loader bug that could cause a crash in cupsd (STR #3680)
- Improved the mapping of non-standard PPD and PWG names (STR #3671)
- The scheduler did not initialize Kerberos in all cases (STR #3662)
- cupsAdminSetServerSettings duplicated Listen and Order lines
(STR #3645)
- Added DeviceN colorspace support to the CUPS Raster format (STR #3419)
- ppdMarkDefaults() did not clear the marked field of the previous
choices (STR #3642)
- The serial backend would not allow a raw job to be canceled
(STR #3649)
- The socket backend could go into an infinite loop with certain
printers (STR #3622)
- Setting the PRINTER or LPDEST environment variables to "name/instance"
did not work (STR #3485)
- The scheduler did not handle the JobRetryLimit setting properly
(STR #3466)
- The lpstat command always showed a remote job ID of 0 for shared
printers (STR #3627)
- Increased the write timeout for the libusb-based USB backend to 5
minutes (STR #3595)
- The libusb-base USB backend did not check whether the printer has a
serial number (STR #3590)
- The lpadmin command did not support setting of custom option values
(STR #3631)
- The lpadmin command did not support setting of the location or
description of a class (STR #3613)
- The cupsaddsmb command did not give up after too many failed attempts
(STR #3615)
- The CUPS library no longer uses certain problematic ctype macros that
change based on the locale's character set.
- PJL value substitution of more than 9 values was broken (STR #3621)
- Custom options with missing string values caused ppdEmit* to segfault
(STR #3620)
- Fixed an issue with the Italian version of the web interface
(STR #3624)
- Fixed the Solaris SMF configuration file for cups-lpd (STR #3611)
- The scheduler did not set the notify-subscribed-event attribute when
delivering printer-added or printer-modified events (STR #3608)
- The mailto notifier could get into an infinite loop (STR #3609)
- Date/time information was not shown in banner pages.
- Relational operators were broken in #if/#elif/#else/#endif expressions
for the PPD compiler.
- Moving a job via the web interface failed without asking for
authentication (STR #3559)
- The scheduler now clears the printer-state-reasons when the driver is
changed (STR #3570)
- The web interface did not allow a user to change the driver
(STR #3537, STR #3601)
- The scheduler was not setting the PATH_INFO environment variable when
needed (STR #3600)
- The scheduler incorrectly set the CUPSD_AUTH_TYPE environment
variable instead of AUTH_TYPE (STR #3599)
- Fixed a buffer overrun in the PPD compiler (STR #3594)
- Fixed some additional IPP job template attribute mapping issues in the
scheduler.
CHANGES IN CUPS V1.4.4
- Documentation updates (STR #3453, STR #3527, STR #3528, STR #3529)
- Security: The fix for CVE-2009-3553 was incomplete (STR #3490)
- Security: The texttops filter did not check the results of allocations
(STR #3516)
- Security: The web admin interface could disclose the contents of
memory (STR #3577)
- Security: CUPS could overwrite files as root in directories owned or
writable by non-root users (STR #3510)
- The cups-config utility did not return the correct linker options on
AIX (STR #3587)
- Fixed some IPP conformance issues with the scheduler's
ippget-event-life, operations-supported, output-bin, and sides
attributes (STR #3554)
- The OpenSSL interfaces have been made thread-safe and the GNU TLS
interface is explicitly forbidden when threading is enabled
(STR #3461)
- Fixed an IPP conformance issue with the scheduler's Send-Document
implementation (STR #3514)
- Added additional validation checks for the 1284 device ID (STR #3534)
- Fixed a problem with the RPM spec file (STR #3544)
- The lpstat command did not limit the job list to the specified
printers (STR #3541)
- The cupsfilter command did not set the RIP_MAX_CACHE environment
variable (STR #3531)
- Fixed support for media-col and page size variants (STR #3394)
- The PostScript filter did not support all media selection options for
the first page (STR #3525)
- The scheduler did not always remove job control files (STR #3425)
- The scheduler could crash on restart if classes were defined
(STR #3524)
- The scheduler no longer looks up network interface hostnames by
default on Mac OS X (STR #3523)
- ippWriteIO did not write collection (member) attributes properly in
all cases (STR #3521)
- The "cupsctl --remote-any" and corresponding web interface check box
(allow printing from the Internet) did not work reliably (STR #3520)
- The lpq and lpr commands would sometimes choose different default
printers (STR #3503)
- cupsDo*Request did not flush error text, leading to multiple issues
(STR #3325, STR #3519)
- cupsDoAuthentication did not cancel password authentication after 3
failures (STR #3518)
- Fixed several LDAP browsing bugs (STR #3392)
- The Dymo driver did not support copies (STR #3457)
- The scheduler did not update the classes.conf file when deleting a
printer belonging to a class (STR #3505)
- The lppasswd command did not use localized password prompts
(STR #3492)
- The socket backend no longer waits for back-channel data on platforms
other than Mac OS X (STR #3495)
- The scheduler didn't send events when a printer started accepting or
rejecting jobs (STR #3480)
- The web interface now includes additional CSRF protection (STR #3498)
CHANGES IN CUPS V1.4.3
- SECURITY: The scheduler could try responding on a closed client
connection, leading to a crash (STR #3200)
- SECURITY: The lppasswd program allowed the localization files to be
overridden when running in setuid mode (STR #3482)
- Localization updates (STR #3352, STR #3409, STR #3422, STR #3452,
STR #3473, STR #3502)
- Documentation updates (STR #3451, STR #3504)
- The IPP backend now sets the printer-state-message to "Ready to
print." at the end of a successful job (STR #3460)
- The PPD compiler did not correctly add the manufacturer to the output
filename when using the "-m" option (STR #3469)
- The IPP backend did not handle authentication properly for the Get-
Printer-Attributes operation (STR 3458)
- Getting SNMP values larger than 127 bytes did not work.
- IPP conformance: Get-Jobs has a default value for requested-attributes
(STR #3383)
- cupsPrintFiles() did not report all errors (STR #3449)
- cupsAddDest() could read freed memory (STR #3448)
- The DBUS notifier did not build (STR #3447)
- The scheduler would crash when an active printer was deleted.
- The snmp backend did not work with some printers (STR #3413)
- The web interface did not show the conflicting values when setting
options (STR #3440)
- Setting options in the web interface did not always work (STR #3439)
- The scheduler did not use the Get-Job-Attributes policy for a printer
(STR #3431)
- The scheduler added two job-name attributes to each job object
(STR #3428)
- CSS files would not print (STR #3442)
- The scheduler did not clean out completed jobs when PreserveJobHistory
was turned off (STR #3425)
- The web interface did not show completed jobs for a printer
(STR #3436)
- Authenticated printing did not always work when printing directly to
a remote server (STR #3435)
- The USB backend did not work on Solaris (STR #3423)
- cupstestppd didn't catch problems with JobPatchFile definitions
(STR #3421)
- The socket backend could crash if a SNMP string had a negative length.
- Fixed some termination issues with the USB backend on Mac OS X.
- The side-channel APIs did not handle interrupts properly.
- The network backends incorrectly cleared the media-empty-warning
state.
- The web interface did not allow users to successfully add serial
printers (STR #3391)
- cupsTempFd() did not work in some situations (STR #3382)
- Some C API headers were missing C++ wrapper logic.
- The PPD compiler did not localize single-language PPD options properly
(STR #3386)
- Modifying a printer from the web interface sometimes caused the wrong
driver to be selected (STR #3418)
- The scheduler did not handle out-of-memory conditions properly when
loading a job (STR #3407)
- When adding printers from the web interface, the dynamic updates of
the device list made it hard to pick a device (STR #3406)
- Fixed a typo in the web interface admin page template (STR 3403)
- The web interface did not preserve the "printer is shared" state when
modifying a printer (STR #3390)
- The PPD compiler incorrectly inserted translations of empty strings
(STR #3411)
- The scheduler did not reset the SIGPIPE handler of child processes
(STR #3399)
- cupsGetNamedDest() incorrectly returned the default printer if the
named printer did not exist (STR #3397)
- Fixed a GNU TLS error handling bug (STR #3381)
CHANGES IN CUPS V1.4.2
- SECURITY: The CUPS web interface was vulnerable to several XSS and
HTTP header/body attacks via attribute injection (STR #3367,
STR #3401)
- Fixed localization errors (STR #3359, STR #3372, STR #3380, STR #3387)
- The documentation for classes.conf and printers.conf did not provide
the correct instructions for manual changes (STR #3351)
- The scheduler did not always rebuild printer cache files when the
driver was changed (STR #3356)
- The documentation makefile failed to install localizations when using
newer versions of Bash (STR #3360)
- The configure script did not use the --with-xinetd value for the
default LPD configuration path (STR #3347)
- The configure script incorrectly required glib for DBUS support
(STR #3346)
- The cupstestppd program incorrectly reported filters with bad
permisssions as missing (STR #3363)
- The cups.desktop file used the wrong locale names (STR #3358)
- cupsSideChannelRead() did not return an error for short reads.
- The installed PAM configuration file did not use the correct options
with the pam_unix2 module (STR #3313)
- The scheduler did not preserve default options that contained special
characters (STR #3340)
- The scheduler did not remove old pre-filters when updating a printer
driver (STR #3342)
- The HP/GL-2 filter did not check for early end-of-file (STR #3319)
- The USB backend did not compile on some platforms (STR #3332)
- cupsSideChannelSNMPWalk() could go into an infinite loop with broken
SNMP implementations.
CHANGES IN CUPS V1.4.1
- Documention fixes (STR #3296)
- SNMP supply levels and states were wrong for some printers.
- The IPP backend did not update the auth-info-required value.
- The libusb-based USB backend would hang at the end of the job
(STR #3315, STR #3318)
- DNS-SD registrations for raw queues had an empty "ty" key (STR #3299)
- The JPEG and BMP MIME type rules were broken (STR #3284)
- cupsGetNamedDest returned the default printer when the named
destination did not exist (STR #3285)
- The JobKillDelay was not triggered for canceled jobs (STR #3292)
- The PPD compiler could get in an infinite loop (STR #3293)
- The configure check for dns-sd.h was broken (STR #3297)
- The "Query Printer for Default Options" page did not go away if the
query job was held (STR #3302)
- Boolean options did not show up as selected in the web interface
(STR #3303)
- The scheduler did not cache or report driver information files
correctly, leading to a variety of issues (STR #3283, STR #3297,
STR #3305)
- cupsDoIORequest() did not abort on permanent errors (STR #3311)
- Modifying a class in the web interface did not work (STR #3312)
- BrowseLocalProtocols could be cleared when changing the sharing
setting (STR #3287)
- The scheduler could return an empty supported document format
(STR #3308)
- The PPD compiler generated invalid PPD files when the locale used
something other than "." for the decimal point (STR #3300)
- The IPP backend did not handle some non-comforming IPP printer
implementations (STR #3262)
- The scheduler leaked three file descriptors to each job filter
(STR #3263)
- The scheduler now uses a default CUPS-Get-Devices timeout of 15
seconds (STR #3307)
CHANGES IN CUPS V1.4.0
- Localization updates (STR #3223, STR #3246, STR #3248, STR #3250)
- Documentation updates (STR #3225, STR #3230, STR #3242, STR #3260)
- The --with-pdftops configure option did not accept a full path to the
filter (STR #3278)
- The banner filter did not position the back side image correctly
(STR #3277)
- The dnssd backend could crash (STR #3272)
- The 1284 device ID sometimes contained trailing garbage (STR #3266)
- The USB backend returned different URIs for some printers than in
CUPS 1.3 (STR #3259)
- The scheduler did not do local job-hold-until processing for remote
queues (STR #3258)
- The scheduler did not try all possible SSL certificates on Mac OS X.
- The scheduler did not always remove a file descriptor when using the
kqueue interface (STR #3256)
- The scheduler did not protect against bad job control files in all
cases (STR #3253)
- The scheduler did not encode "+" in model names (STR #3254)
- The web interface didn't show the default options (STR #3244)
- The IPP and LPD backends needed print data before they would do an
SNMP query.
- Fixed a GNU TLS compatibility issue (STR #3231)
- Fixed a HTML error in the add and modify printer web interface
templates (STR #3229)
- The scheduler did not minimize the number of printer state events that
were generated by filter STATE: messages, which could lead to poor
performance.
- The USB backend on Mac OS X did not cleanly cancel a job.
- The network backends now set the connecting-to-device printer-state-
reasons value when looking up the address and copying the print data
for consistency.
- The scheduler now supports the com.apple.print.recoverable-warning
reason on all platforms.
CHANGES IN CUPS V1.4rc1
- The PPD compiler documentation was missing information on localization
(STR #3212)
- The IPP backend now reconnects after every request when talking to
printers that claim IPP support but only use HTTP/1.0.
- The PPD compiler crashed when both "Resolution" and "Group foo Option
Resolution" were specified in the .drv file.
- The PPD compiler's #if/#elif/#else/#endif did not work for undefined
variables (STR #3210)
- Static libraries could not be installed by a non-root user on systems
needing a ranlib program (STR #3209)
- The scheduler incorrectly always tried to copy Kerberos credentials
for print jobs.
- Updated the Spanish localization (STR #3204)
- The scheduler crashed when getting the default paper size from
libpaper (STR #3205, STR #3206)
- The PPD compiler now defines six variables: CUPS_VERSION,
CUPS_VERSION_MAJOR, CUPS_VERSION_MINOR, CUPS_VERSION_PATCH,
PLATFORM_NAME, and PLATFORM_ARCH (STR #3203)
- Fixed a whitespace skipping bug in cupsRasterInterpretPPD.
- The scheduler did not return HTTP 403 (Forbidden) for authenticated
users that were not authorized to do IPP operations (STR #3193)
- The scheduler did not report more than 8 Product strings from a PPD
file. Some PPD files have as many as 24.
- ppdOpen*() could crash if a keyword had no value string (something
that cupstestppd looks for...)
- cupsLangDefault() did not return the correct language on Mac OS X.
- The Mac OS X USB backend did not handle aborted or stalled pipe
conditions properly, which prevented drivers from ejecting partial
pages when a job was canceled or held.
CHANGES IN CUPS V1.4b3
- Documentation fixes (STR #3044, STR #3057, STR #3153, STR #3158,
STR #3173)
- Added complete localizations for German, Japanese, Polish, and
Russian and partial localizations for Chinese, Danish, Finnish,
French, Italian, Korean, Norwegian, Portuguese, and Swedish
(STR #3096, STR #3098, STR #3109, STR #3111, STR #3141)
- Updated the configure check for -fstack-protector (STR #3198)
- The network backends now correctly convert SNMP supply descriptions to
UTF-8 encoding as needed.
- The scheduler could crash when deleting an attribute (STR #3197)
- The cups-driverd program did not detect symlink loops (STR #3185)
- The EPSON 24-pin series driver should now feed the correct amount
(STR #2624)
- The scheduler now automatically logs the last N debug messages for
failed print jobs.
- You can now modify a raw print queue (STR #3133)
- Fixed a number of ppdi issues and added a unit test to validate that
ppdc + ppdi can generate and import the same data (STR #3152)
- Moving jobs in the web interface now shows an error if you only have
one printer or class added (STR #3094)
- Since classes have never truly supported the printer-error-policy
stuff added in CUPS 1.2, update the code to reflect the current
reality and support only the retry-current-job policy for now
(STR #3171)
- Revised the password callback support (STR #2953)
- ppdEmit*() did not choose between PageSize and PageRegion properly.
- Make some fairly substantial changes to the Kerberos support code so
that CUPS can work in multi-realm environments and does not require
delegatable credentials. Shared printing still requires delegation,
however "delegation by policy" can be enabled in the KDC to make this
all work.
- "AccessLogLevel actions" did not hide client-error-not-found errors.
- AP_FIRST_InputSlot did not work with number-up.
- cupsBackChannelRead() and cupsBackChannelWrite() could fail due to a
lack of kernel buffers.
- The IPP and LPD backends did not respond to side-channel requests
while copying print data to a temporary file.
- cupsWriteRequestData() flushed the output buffer unnecessarily,
causing reduced performance in some situations.
- If a CGI process died before sending its MIME headers, the request
would hang on the client.
- The printer/class/job search feature on the web interface did not
work (STR #3132)
- The scheduler did not write the printers out for classes.
- CUPS-Get-PPDs did not work properly when filtering by language,
product, or psversion (STR #3136)
- The scheduler now kills job filters when it takes more than 30 seconds
(configurable) to cancel or hold the job.
- The cupstestppd program did not validate the capitalization of
filenames in the PPD file.
- The cupstestppd program did not validate the PageSize and PageRegion
values.
- The cups-deviced helper program could miss reporting some backend
devices (STR #3108)
- The cupsSideChannelSNMP* functions did not work.
- The scheduler could consume 100% CPU when jobs were canceled.
- Clicking on "Select Another Make/Manufacturer" in the web interface
incorrectly added the printer (STR #3095)
- The scheduler no longer uses programs with insecure file
permissions.
- httpAssembleURI*() did not escape backslashes in hostnames.
- The dnssd backend did not unquote "full names" before creating the
device URI.
- The scheduler now supports JobRetryInterval values less than 10
seconds.
- Updated the Spanish localization (STR #3090)
- The scheduler did not redo Bonjour/DNS-SD registrations when updating
them failed.
- The "authenticated" policy incorrectly required authentication for
status operations.
- ppdOpen*() incorrectly loaded PPDs with multiple JobPatchFile
keywords.
- The network backends no longer report the SNMP "offline" or
maintenance status bits since they are inconsistently implemented and
often unreliable.
- The scheduler no longer logs child processes killed via SIGKILL as
"crashed".
- The printer link shown on the "job moved" template was bad (STR #3085)
- Updated the HTML templates to use the final HTML 4 DOCTYPE (STR #3086)
- The scheduler did not track the "paused" reason properly if a
printer had other reasons associated with it.
- cupsSendRequest() did not clear old local certificate auth data.
- The PPD compiler did not search for localization files properly
(STR #3084)
- cupsGetNamedDest() did not use the fallback default like
cupsGetDests*() (STR #3082)
- The scheduler now provides a LogTimeFormat directive to enable
microseconds in the date and time that are logged.
- The scheduler now provides a MultipleOperationTimeout directive to
control the timeout for multi-file print jobs.
- The configure script incorrectly allowed Avahi to be used for DNS-SD
printer discovery (STR #3065)
- The web interface and scheduler did not support URIs up to 1024 bytes
in length (STR #3072)
- Fixed pdftops issues with page sizes (STR #3063)
- Fixed pdftops issues with Ghostscript (STR #3062)
- The scheduler incorrectly registered default profiles for PostScript
printers with no specified colorspace.
- The scheduler incorrectly created an empty org.cups.printers.plist
file on Mac OS X.
- cupsGetPPD3() did not look for local PPDs in the right directory.
- SNMP lookups via side-channel did not work for NULL-VALUE and
and OCTET-STRING OIDs containing nul characters.
- The libusb-based USB backend did not work.
- The scheduler did not set the printer-commands attribute correctly
for some PPDs.
- The ppdi utility did not work.
- The web interface no longer uses multi-part output with old or broken
web browsers (STR #3049)
- CUPS now conforms to the draft IPP/2.0 and IPP/2.1 specification.
- Added a new cupsGetConflicts() API to get a list of conflicting
options.
- The PPD compiler didn't localize options or choices that did not
have associated translation text (STR #3045)
- Updated the Spanish localization (STR #3043)
- Fixed build problems (STR #3040, STR #3047)
- cupsResolveConflicts() did not resolve using the default option
choice in some cases due to the mirror UIConstraints that are
present in most PPD files.
- The scheduler did not honor MIME type priorities.
- The commandtops filter incorrectly used the JCLBegin code to end
its jobs.
- The default BrowseLocalProtocols value was not set properly.
- Since the commandtops filter does not actually support ReportLevels
all on its own, don't list that printer command by default for PS
printers.
- The scheduler did not give filters a chance to log errors or update
printer attributes when a job was canceled.
- The scheduler did not clear the "connecting-to-device" reason keyword
when a job finished.
CHANGES IN CUPS V1.4b2
- Documentation updates (STR #2983, STR #2998, STR #3021)
- The cupstestppd utility now validates the FileVersion and
FormatVersion values in PPD files.
- The default cupsd.conf file did not reflect the
--with-local-protocols value set at compile-time (STR #3037)
- The cupsGetPPD* APIs now create symlinks to local PPD files
rather than copying them whenever possible.
- Various performance optimizations in the string pool, dests, and
options implementations.
- The cupsGetDests* APIs now return the marker and printer-commands
attributes.
- Side-channel SNMP lookups would not work when cupsSNMPSupplies
was set to False in the PPD file.
- Localized the device descriptions for the SCSI, serial,
and network backends (STR #3014)
- Added a Spanish localization (STR #3015)
- Added support for marker-low-levels and marker-high-levels
attributes.
- The scheduler could hang writing a long log line.
- The cupsGetDevices() function now has an "include_schemes"
parameter.
- The lpinfo command now supports --include-schemes and
--exclude-schemes options.
- The CUPS-Get-PPDs operation now supports the include-schemes
and exclude-schemes attributes.
- The CUPS-Get-Devices operation now supports the include-schemes
attribute.
- The print filters now support a replacement for the fitplot
option called "fit-to-page".
- The LPD backend no longer tries to collect page accounting
information since the LPD protocol does not allow us to
prevent race conditions.
- The scheduler did not save the last marker-change-time value.
- Fixed a problem with printing to some IPP printers, including
CUPS 1.1.x.
- Fixed a redirection problem with the printer web page (STR #3012)
- Fixed a PPD compiler problem with the loading of message
catalogs (STR #2990)
- Fixed a PPD compiler problem with the loading of .strings files
(STR #2989)
- The cupsfilter utility did not set the CONTENT_TYPE environment
variable when running filters.
- The scheduler now waits to allow system sleep until the jobs
have all stopped.
- The IPP, LPD, and socket backends used different "connecting"
progress messages.
CHANGES IN CUPS V1.4b1
- Documentation updates (STR #2567)
- The PPD compiler now allows local message catalogs to
override the standard CUPS translations (STR #2642)
- The ppdmerge command did not merge custom option strings
(STR #2863)
- The scheduler now supports the Hold-New-Jobs and
Release-Held-New-Jobs operations; these are exposed via the
cupsdisable and cupsenable commands (STR #2332)
- The lpstat command is now much faster when displaying the
status of a single printer (STR #2843)
- The scheduler now caches information from PPD files to provide
significantly faster startup time with large numbers of PPDs
(STR #1293)
- CUPS-Get-Driver now provides much better driver matching based
on the IEEE-1284 device ID and make/model strings (STR #2707)
- Now support the cupsSNMPSupplies keyword to control whether
the network backends query the SNMP Printer MIB for supply
levels.
- Now support and use a new banner file format for better text
support and easier customization (STR #2490)
- The scheduler now sets the PRINTER_INFO and PRINTER_LOCATION
environment variables from the corresponding IPP attributes.
- The ippRead*() and ippWrite*() functions no longer use a
stack-based buffer (STR #2388)
- The CUPS-Add-Modify-Printer operation now allows you to set
the printer-state-reasons attribute.
- The "set printer options" page now supports auto-configuration
of printer options (STR #1440)
- The web interface now provides an advanced server settings
form.
- The web interface's "modify printer" pages now make it
easier to change just one setting (STR #1919)
- The scheduler now supports a plist PrintcapFormat.
- The scheduler now supports multiple addresses in Allow and
Deny lines, just like Apache (STR #2947)
- Added CUPS_JOBTYPE environment variable for job filters so
they know whether they are printing a banner or document
file (STR #2799)
- Added support for printer filtering by the cupsfilter
command (STR #2562)
- Added a SSLOptions directive to allow Windows clients to
talk to CUPS in FIPS mode (STR #2827)
- Renamed the accept and reject commands to cupsaccept and
cupsreject; the old names are still available (STR #2936)
- The locale/translate utility needed an update to work with
Google (STR #2882)
- The lpstat command now supports a -H option to display the
default server (STR #2833)
- The scheduler now supports a FatalErrors directive to control
which errors should cause the scheduler to exit (STR #2536)
- The scheduler now uses the php-cgi program if it is available
(STR #2923)
- The scheduler now supports a DefaultPaperSize directive
(STR #2848)
- The scheduler now passes the job-originating-host-name
value to filters in the options argument (STR #2558)
- CUPS now supports job tickets in PDF files (STR #2903)
- Added a DBUS notifier (STR #2529)
- The LPD mini-daemon now passes the document name when queuing
print jobs (STR #2482)
- The IPP backend did not relay com.apple.print.recoverable-message
values.
- The scheduler now supports a job-media-progress attribute to
track the progress of individual pages.
- The sample HP driver now supports A5 (STR #2798)
- The CUPS web interface menu item now uses the xdg-open
command, when available (STR #2724)
- The cups-lpd program now supports the -h option (STR #2794)
- The scheduler now sets the PAM_TTY parameter and the
PAM_ESTABLISH_CRED credential flag (STR #2745)
- The scheduler now logs unsuccessful requests to the error_log
file as errors (STR #2616)
- Added support for a "retry-current-job" error policy that
retries the current job immediately when the backend encounters
an error (STR #2555)
- The scheduler now returns a "forbidden" error when a user
correctly authenticates but does not have permission to
continue further (STR #2101)
- The scheduler now loads both the server and CA certificates
(if present) from the ServerCertificate file (STR #2146)
- New RSS subscriptions now create their feed files immediately
(STR #2853)
- Added support for a device-location attribute which provides
the physical location of a printer device.
- Added a cupsBackendReport() API which handles quoting of the
device data by a backend.
- Added support for custom options in the web interface
(STR #1729)
- Added support for Mozilla LDAP, reconnection to LDAP servers,
and improved LDAP performance (STR #1962)
- Added Solaris SMF support (STR #1477)
- Added optional support for using TCP wrappers to limit access
to CUPS (STR #263)
- Added ppdPageSizeLimits API.
- Added support for new cupsMediaQualifier2, cupsMediaQualifier3,
cupsMinSize, and cupsMaxSize attributes.
- Added cupsResolveConflicts and ppdInstallableConflict APIs.
- Added support for new cupsUIConstraints and cupsUIResolver
attributes for better option conflict detection and
resolution.
- Increased the maximum size of 1284 device ID strings to
256 bytes (STR #2877)
- Added an AccessLogLevel directive to cupsd.conf to control
what is logged to the access_log file.
- The default LogLevel is now "warn" instead of "info" to reduce
the amount of logging that is done to disk by default.
- The PPD compiler did not include OID query keywords in PPD
files (STR #2871)
- The cups-driverd helper program now directly supports driver
information files.
- The USB backend now uses libusb when available (STR #1575)
- Added ppdLocalizeAttr function to get the localized version
of an attribute.
- MIME types now support a priority() attribute (STR #2719)
- The standard MIME types are now installed in
DataDir/mime (STR #2719)
- The lpoptions command now describes custom options and
the necessary parameters (STR #2660)
- The ppdmerge program did not support Simplified Chinese
or Traditional Chinese language version strings (STR #2851)
- The PPD compiler now supports localizable attributes
(STR #2738)
- The ppdpo utility now includes cupsIPPReasons values in
the message catalogs it generates (STR #2754)
- The PPD compiler now supports conditional directives
(STR #2636)
- The ppdc utility now supports a "-t" option to test PPD
files (STR #2739)
- The ppdc utility now supports a "-m" option to use the
ModelName value as the output filename.
- The ppdc utility now supports a FileName directive to
set an alternate output filename (STR #2740)
- The side-channel API now supports SNMP queries for the
standard network backends.
- Added a PageLogFormat directive to the cupsd.conf file to
control the format of lines in the page_log file.
- Filters can now send PPD: messages to stderr to set PPD
keywords like DefaultPageSize while a job is printing.
- Added a mdns backend for discovery and printing to printers
that advertise themselves via DNS-SD (Bonjour)
- The ipp, lpd, and socket backends now support DNS-SD service
name resolution.
- The scheduler now uses a single shared file descriptor for
all DNS-SD registrations (STR #2674)
- The ipp, lpd, and socket backends now support SNMP-based
page accounting and supply level monitoring (STR #1655)
- Added support for cupsPJLDisplay attribute to control what
PJL commands are used to display the job information.
- Driver information files can now be installed in
/Library/Printers/PPDs.drv on Mac OS X.
- The CUPS image library now supports reading images larger
than 2GB.
- The scheduler now delays writing config and state files to
reduce disk activity (STR #2684)
- The CUPS-Get-Devices operation now supports the
exclude-schemes and timeout attributes to control which
backends are polled and for how long.
- The cups-deviced helper application now runs backends in
parallel to get the list of devices faster.
- Added --enable-pap configure option.
- The default cupsd.conf file now includes an "authenticated"
policy which requires authentication for remote print jobs.
- Added support for Czech and Hungarian in PPD files
(STR #2735, STR #2736)
- The PPD compiler tools now support Mac OS X .strings files
for localization (STR #2737)
- ppdOpen*() now default the colorspace member to PPD_CS_N
when no DefaultColorSpace attribute is present in the PPD
file.
- The build system has been updated to support separate
installation of data, program, header, and library files.
- All support libraries are now built as shared libraries
by default.
- The scheduler now manages ICC color profiles on Mac OS X.
- The network backends (ipp, lpd, socket) now support
SNMP-based supply and page count monitoring (STR #1655)
- The lppasswd program is no longer installed setuid to
root to make the default installation more secure.
- Added a new ppdLocalizeMarkerName() function to get
the localized version of a marker-names value.
- The scheduler now provides the printer-dns-sd-name
attribute for printers shared via DNS-SD/Bonjour.
- The pdftops filter now executes the Xpdf or poppler
pdftops utility to convert PDF files (STR #1471)
- Bonjour printer registrations now advertise as local or
global based on the current access policies for the
printer.
- cupsGetDests*() and cupsSetDests*() now track the last
used printer preference on Mac OS X.
- Added a new streaming request API (STR #2261)
- Added a new cupsGetNamedDest() function to the CUPS
library for faster printing with lp and lpr (STR #2638)
- The scheduler now sets the PAM RHOST value on systems
that support it (STR #2637)
- The scheduler now sandboxes child processes when
possible.
- The Cancel-Job operation now supports a purge-job
attriibute to purge a specified job.
- ppdEmit* and ppdCollect* now use the NonUIOrderDependency
attributes for custom option selections.
- The web interface now enables/disables the printer
sharing (formerly publishing) controls based on the
server-is-sharing-printers state (STR #2233)
- The scheduler now tracks printer sharing via the
server-is-sharing-printers attribute, and manages LPD
and SMB sharing as well (STR #2233)
- The web interface now allows you to go back to the make/
manufacturer page if there is no matching printer driver
on the model page (STR #2436)
- The printer list now shows the default media, banner, and
duplex options as well as the color and duplex capabilities
of printers (STR #1175)
- The web interface look-n-feel has been updated (STR #2492)
- The scheduler now supports a CUPS-Get-Document operation
that returns the specified print job document (STR #118)
- The cupsfilter utility now supports a "-J jobid" option
to filter the document from the specified job.
- The scheduler (cupsd) now supports a new option (-t) to
do a syntax check of the cupsd.conf file (STR #2003)
- Added new cupsGetPPD3() API to allow applications to
cache PPDs safely (STR #1473)
- Added generic PostScript and PCL printer driver PPDs.
+312
Ver Arquivo
@@ -0,0 +1,312 @@
CHANGES-1.5.txt
---------------
CHANGES IN CUPS V1.5.4
- Documentation updates (STR #4112, STR #4130, STR #4134)
- Fixes for libusb-based USB backend (STR #4128)
- The lpq command did not show the owner or title of jobs unless passed
a username on the command-line (STR #4135)
- Localized empty strings contained the message catalog metadata
(STR #4119)
- Fixed a crash in the libusb-based USB backend (STR #4099)
- The cups-lpd mini-daemon no longer handled jobs with multiple copies
(STR #4118)
- Multiple libusb backend fixes (STR #4098, STR #4100)
- The IPP backend no longer tries to get the job status for printers
that do not implement the required operation (STR #4083)
- Sending a document in an unsupported format to an IPP printer now
automatically cancels the job (STR #4093)
- Fix some error reporting issues when printing from /dev/null and
other unusual situations (STR #4015)
- The scheduler now sets the CUPS_MAX_MESSAGE environment variable for
filters (STR #4074)
- Fixed a build issue when using older versions of autoconf (STR #4084)
- The IPP backend now treats the client-error-not-possible status code
as a job history issue, allowing IPP printing to Windows to work
(STR #4047)
- The IPP backend incorrectly included the document-format and
compression attributes in Create-Job requests (STR #4086)
- The libusb-based USB backend did not work on non-Linux platforms
(STR #4088)
CHANGES IN CUPS V1.5.3
- httpReconnect() did not reset the read/write buffers (STR #4065)
- Compiling without threading support failed (STR #4060)
- Fixed compile problem with old versions of OpenSSL (STR #4036)
- The network backends did not check SNMP supply levels regularly
(STR #4040)
- The online help always included the "help on help" text (STR #4042)
- Fixed a SSL handshake issue on OS X (STR #4045)
- The scheduler could crash if a PPD file contained an invalid paper
size (STR #4049)
- The CUPS polling daemon did not reinitialize its connection to the
remote server on errors in all cases (STR #4031)
- PostScript auto-configuration was slow and unreliable with some
printers (STR #4028)
- Missing localizations caused empty output (STR #4033)
- The cups-driverd program could temporarily "forget" a PPD file if it
was updated in place.
- The dnssd backend now prefers IPPS over IPP.
- The USB backend now uses and requires LIBUSB 1.0 or later (STR #3477)
- The LIBUSB-based USB backend now supports the back-channel (STR #2890)
- Changed how timeouts are implemented in the LPD backend (STR #4013)
- Added more supported color names for SNMP supplies (STR #3981)
- The default InputSlot setting was never used (STR #3957)
- POSIX ACLs are now set properly on certificate files (STR #3970)
- Supplies with commas in their names were not reported correctly
(STR #4020)
- The cupsGetPPD3() function created a temporary file when one was not
needed (STR #4018)
- The scheduler now ensures that job notifications contain a value for
the notify-printer-uri attribute (STR #4014)
- The lp and lpr commands did not cancel jobs queued from stdin on an
error (STR #4015)
- Fixed the IPP backend's handling of HTTP/1.0 compatibility (STR #3988)
- The IPP backend did not always setup username/password authentication
for printers (STR #3985)
- The IPP backend no longer re-queues print jobs that are too large for
the printer/server (STR #3977)
- The RPM spec file did not work (STR #4021, STR #4057)
- Encryption did not work when the server name ended with "."
(STR #4011)
- The multi-purpose tray is now mapped to the IPP "by-pass-tray"
(STR #4009)
- The correct media size was not always passed to IPP printers
(STR #4001)
- Finishing options were not passed to IPP printers (STR #3995)
- Fixed iCloud-based Back to My Mac printing (STR #3996)
CHANGES IN CUPS V1.5.2
- Reposted what should have been CUPS 1.5.1.
CHANGES IN CUPS V1.5.1
- Documentation updates (STR #3885, STR #3886, STR #3946, STR #3969)
- Localization updates (STR #3840, STR #3989, STR #3997)
- Build fixes (STR #3956, STR #3999)
- The SNMP backend did not validate the device URIs reported by printers
(STR #4004)
- cupsBackendReport() did not handle newlines in 1284 Device IDs
(STR #4005)
- USB backend fixes for libusb (STR #3965, STR #3978)
- The DBUS notifier did not validate string parameters (STR #3984)
- Group quota ACLs did not work with Kerberos (STR #3972)
- The IPP backend did not retry when a printer responded with
client-error-not-possible (STR #3963)
- PostScript PPDs with filters used the wrong command filter (STR #3973)
- The scheduler incorrectly used free() on a POSIX ACL value, which
could cause a crash (STR #3970)
- PPD files using the MacStandard encoding did not work.
- The web interface did not work on some platforms (STR #3902)
- The lpstat command would crash when then "-u" option was used by a
non-administrator (STR #3953)
- Japanese supply level reporting did not always work.
- The DBUS notifier could crash (STR #3947)
- Relaxed some of the page size checks in cupstestppd.
- The ipptool program now reports attributes that are repeated within
the same attribute group.
- Updated the PWG raster support to match the current draft
specification.
- Fixed some IPP conformance issues in the scheduler.
- Added ipptool support for repeating requests.
- Added IPP/2.2 conformance tests and greatly improved the IPP/1.1,
IPP/2.0, and IPP/2.1 conformance testing.
- IPP messages containing mixed integer/rangeOfInteger values did not
work (STR #3942)
- The ipptool program now provides additional diagnostics for badly-
formatted responses (STR #3857)
- When possible, the IPP backend now stops sending job data early on a
cancel.
- cupsSendRequest and cupsWriteRequestData did not properly read all
HTTP headers, preventing authentication and encryption upgrades from
working in all cases.
- The client.conf Server directive is no longer supported on Mac OS X
10.7 and later.
- The IPP backend sent the wrong margins in media-col.
- The scheduler did not save or restore large Kerberos credentials for
jobs.
- The dnssd backend did not properly browse for secure IPP printers.
- httpAssembleURI* did not properly escape all special characters in the
username/password field.
- The scheduler now logs config file errors to stderr (STR #3936)
- The configure script incorrectly used bundle-based localizations on
Linux (STR #3938)
- The cups-driverd helper program did not cache .drv files properly,
sometimes leading to a crash (STR #3921)
- CUPS did not build on stock Mac OS X installations.
- Encryption was broken with OpenSSL.
- ipptool's XML output used date/time values with timezone offsets,
which are not supported by Mac OS X's NSDate class.
- Several programs did not support the cupsFilter2 keyword in PPD files.
- The IPP backend incorrectly reported spool-area-full states.
- cupsMarkOptions() did not protect against a bad PPD that was missing
one or more standard Duplex options.
- The PostScript filter did not mirror N-up output properly.
- The ipptool program did not validate UTF-8 strings in XML output.
- Fixed supply level reporting for some printers.
- The scheduler no longer automatically logs debug messages for jobs
that were held or canceled.
- The cupsSendRequest function did not flush remaining response data
from a previous request, leading to apparent chunking issues.
- The scheduler did not report the correct version in the Server: header
(STR #3903)
- The scheduler did not support 1284 device IDs reported by driver
interface programs longer than 127 characters (STR #3871)
- The image filters did not support loading images larger than the
RIPCache setting (STR #3901)
- "PAGE: total NNN" messages did not get logged properly (STR #3887)
- Updated the PWG Raster support to conform to the current draft of the
PWG Raster Format specification.
- The PWG Raster filter did not always write the correct number of
padding lines on the bottom of the page (STR #3904)
- When reporting a denial-of-service attack from the domain socket, the
address reported does not always contain the correct path (STR #3888)
- Badly formed GIF files could cause the image filters to crash
(STR #3914)
- Jobs canceled at the printer were retried by the IPP backend.
- "cupsfilter -u" deleted the input file instead of the PPD file.
- The scheduler did not compute the cost of PPD filters defined using
the cupsFilter2 keyword properly.
- The scheduler did not correctly support the maxsize() attribute for
PPD filters.
CHANGES IN CUPS V1.5.0
- Documentation updates.
- Localization update (STR #3865)
- Needed to limit TLS to v1.0 on some versions of Mac OS X.
- The snmp backend did not work with some printers.
CHANGES IN CUPS V1.5rc1
- Compile fixes (STR #3849, STR #3850)
- The scheduler didn't check for empty values for several configuration
directives (STR #3861)
- ipptool didn't generate valid XML when a test was skipped.
- Added additional error checking to the 1284 device ID code (STR #3858)
- Fixed some compatibility issues migrating from the old usblp backend
to the libusb backend (STR #3860)
- Fixed the wake-from-sleep printing behavior on Mac OS X.
- The scheduler incorrectly allowed jobs to be held from a terminating
state.
- The cups-driverd program could crash when a PPD was renamed.
- The dnssd backend took too long to discover printers on large or busy
networks with the new default timeout used by lpinfo and the web
interface. This resulted in "lost" printers.
CHANGES IN CUPS V1.5b2
- Documentation updates.
- Localization updates (STR #3845)
- Compiler warning cleanup.
- Fixed PIE support for Linux (STR #3846)
- Made httpSetTimeout API public and use it in the IPP backend to avoid
timeout errors.
- The scheduler incorrectly set the "authenticated" printer-type bit for
remote queues using authentication.
CHANGES IN CUPS V1.5b1
- The CUPS library now supports per-connection HTTP timeouts and
callbacks.
- The CUPS library now supports (limited) SSL/TLS X.509 certificate
validation and revocation (STR #1616)
- Updated the PostScript filter to support IncludeFeature in more
circumstances (STR #3417)
- The schedule did not correctly parse some IPv6 addresses and masks in
the cupsd.conf file (STR #3533)
- Fixed a case-insensitive string comparison issue for locales that do
not treat "I" and "i" as equivalent (STR #3800)
- The scheduler reported an incorrect job-printer-uri value when sharing
was not enabled (STR #3639)
- The scheduler now allows the ServerAlias directive to contain multiple
hostnames separated by spaces or commas (STR #3813)
- The scheduler now sets the process group for child processes and
manages the group (STR #2829)
- Fixed some minor issues discovered by a Coverity scan (STR #3838)
- The scheduler now more carefully creates and removes configuration,
cache, and state files (STR #3715)
- The lpadmin command now allows default option values to be deleted
(STR #2959)
- The lpadmin command now allows the cupsIPPSupplies and
cupsSNMPSupplies keywords to be set in a PPD file (STR #3825)
- Moving a held job no longer releases it (STR #3839)
- Restored support for GNU TLS and OpenSSL with threading enabled
(STR #3605)
- Fixed a confusing error message from cups-polld (STR #3806)
- Increased the default RIPCache value to 128MB (STR #3535)
- MIME errors are now routed to the error_log file (STR #2410)
- Updated PDF filter to support new Ghostscript ps2write device
(STR #3766)
- Updated PDF filter to support new Poppler option to preserve page
sizes in PDF files when the user has not selected a particular media
size (STR #3689)
- Added new PWG Raster filter for IPP Everywhere printer support.
- Added job-uuid, printer-uuid, and subscription-uuid attributes.
- Added support for the cupsSingleFile PPD keyword.
- Dropped support for the printer-state-history attribute (STR #3654)
- Added support for a new cupsIPPSupplies keyword in PPD files to allow
drivers to disable IPP supply level reporting.
- Added support for a new cupsFilter2 keyword in PPD files to allow for
the propagation of the actual MIME media type produced by a filter.
- The scheduler did not always get the correct Kerberos username when
authenticating (STR #3670)
- Added new cupsRasterOpenIO function and CUPS_RASTER_WRITE_PWG to the
CUPS imaging library to support printing to IPP Everywhere raster
printers.
- The scheduler now provides default values for the pages-per-minute and
pages-per-minute-color attributes for PPD files that lack a
Throughput keyword.
- Email notifications did not work on Mac OS X.
- The cupstestppd program now shows an error for files missing a
CloseGroup keyword (STR #3668)
- Name resolution errors no longer cause queues to stop (STR #3719,
STR #3753)
- Added a new cups-exec helper program that applies security profiles
to filters, port monitors, backends, CGI programs, and mini-daemons.
- The web interface can now be disabled using the WebInterface directive
in cupsd.conf (STR #2625)
- The scheduler now provides privacy controls for jobs and subscriptions
(STR #2969)
- Added new cupsArrayNew3 API which offers memory management of array
elements.
- Added several new color spaces to the CUPS raster format (STR #3419)
- The Validate-Job operation now uses the same policy as Print-Job by
default.
- CUPS now uses iconv to implement all of its character encoding
support (STR #3097)
- The scheduler now implements the Cancel-Jobs, Cancel-My-Jobs, and
Close-Job operations along with the job-ids operation attribute from
PWG 5100.11.
- The main CUPS header (<cups/cups.h>) no longer includes the PPD header
(<cups/ppd.h>).
- The scheduler and CUPS API now support the print-quality job template
attribute.
- The scheduler no longer supports the old Mac OS X Server quota
plugin.
- The scheduler now allows writing to /Users/Shared from print filters
on Mac OS X.
- CUPS no longer supports the old ~/.cupsrc or ~/.lpoptions files from
CUPS 1.1.x. The ~/.cups/client.conf and ~/.cups/lpoptions files that
were introduced in CUPS 1.2 must now be used.
- The ipptest tool is now a first-class user program and has several
improvements along with new documentation (STR #3484)
- The cupstestppd tool now warns about non-unique filenames and
provides a way to ignore all filename warnings.
- Dropped support for the recoverable: and recovered: message prefixes.
- The scheduler now requires that filters and backends have group write
permissions disabled.
- The PPD compiler now checks for overlapping filenames when writing
PPD files.
- The HP-GL/2 filter is no longer included with CUPS (STR #3322)
- The SCSI backend is no longer included with CUPS (STR #3500)
+244
Ver Arquivo
@@ -0,0 +1,244 @@
CHANGES-1.6.txt
---------------
CHANGES IN CUPS V1.6.4
- Removed some duplicate size definitions for some ISO sizes that were
causing problems (<rdar://problem/14722721>)
- The IPP backend did not add the "last-document" attribute
(<rdar://problem/114660379>)
- Added a SyncOnClose directive to cups-files.conf to force cupsd to
call fsync before closing any configuration/state files it writes
(<rdar://problem/14523043>)
- Added USB quirk rule for Lexmark E238 (<rdar://problem/14493054>)
- Closed server connections were still not always detected
(<rdar://problem/14484313>)
- The libusb-based USB backend now loads its list of quirks from files
in /usr/share/cups/usb instead of using a hardcoded table
(<rdar://problem/14442769>)
- The scheduler did not properly register ICC color profiles with
colord (<rdar://problem/14455625>)
CHANGES IN CUPS V1.6.3
- The configure script now prefers Clang over GCC.
- Fixed a compile problem on AIX (STR #4307)
- The default IPP version did not always get set before creating a new
IPP request message (<rdar://problem/14401718>)
- The lp, lpq, lpr, and lpstat now display an error message advising the
use of the /version=1.1 ServerName option (<rdar://problem/14290628>)
- Added documentation about the /version=1.1 option to ServerName in
client.conf (<rdar://problem/14216262>)
- httpStatus(HTTP_ERROR) did not return a useful error message
(<rdar://problem/14217326>)
- The lp, lpq, lpr, and lpstat commands incorrectly ignored the default
printer set in the lpoptions file (<rdar://problem/14216472>)
- Fixed a URI encoding issue for hostnames containing the ` (backquote)
character (<rdar://problem/14243133>)
- Added support for RFC 6874's IPv6 link local address format in URIs
(<rdar://problem/13979453>)
- The USB backend could crash on libusb-based systems if USB was
disabled in the BIOS (<rdar://problem/13875729>)
- Fixed a rounding error in the PWG media size mapping code
(<rdar://problem/13493241>)
- Fixed several ipptool test files that used old STATUS names.
- Kerberos credentials could get truncated when printing to a shared
printer.
- Printing using "ipps" URIs was not encrypted.
- Insecure ICC profiles prevented installation of user profiles for a
printer on OS X.
- Added more USB quirks for the libusb-based backend (STR #4311,
<rdar://problem/13736470>)
- The Russian web interface templates were broken (STR #4310)
- The scheduler no longer tries to do Kerberos authentication over the
loopback interface.
- The IPP backend could fail to pause a job for authentication
(STR #4298)
- Fixed a regression on the handling of auth keys on OS X if the
cups-files.conf was not present or did not contain a SystemAuthKey
value.
- The scheduler incorrectly did a reverse lookup of the server address
when HostNameLookups was turned off (STR #4302)
- The scheduler incorrectly computed the final content type value when
null filters were present.
CHANGES IN CUPS V1.6.2
- Documentation fixes (STR #4229, STR #4239, STR #4234, STR #4248,
STR #4259)
- Security: All file, directory, user, and group settings are now stored
in a separate cups-files.conf configuration file that cannot be set
through the CUPS web interface or APIs (STR #4223)
- Added a Czech localization (STR #4201)
- Added a French localization (STR #4247)
- Added a Russian localization (STR #4228, STR #4285)
- Updated the Catalan localization (STR #4202)
- Local certificate authentication did not guard against an empty
certification file (STR #4293)
- The scheduler did not reject device URIs with spaces.
- Added USB quirk rule for Epson Stylus Photo 750 (STR #4286)
- The IPP backend could crash if the printer disconnects early
(STR #4284)
- cupsGetPPD did not work with statically-configured CUPS shared
queues (STR #4178)
- The scheduler did not support long MIME media types (STR #4270)
- The cupsfilter command did not set the CHARSET environment variable
for the text filters (STR #4273)
- The lp command did not show errors for unknown "--foo" (STR #4261)
- Bad IPP responses could crash ipptool (STR #4262)
- Updated USB quirk rules for Canon and Xerox printers (STR #4217,
STR #4263)
- Added USB blacklisting for printers that require a custom backend
(STR #4218)
- The PPD compiler did not correctly JCL options (STR #4115, STR #4203)
- The ipptool program now supports DEFINE-MATCH and DEFINE-NO-MATCH
predicates for STATUS directives.
- Fixed a problem with local Kerberos authentication (STR #4140)
- Coverity scan: fixed some minor issues (STR #4242)
- The scheduler did not remove color profiles after deleting a printer
(STR #4232, STR #4276)
- The CUPS library did not always detect a timed out connection to the
server which could cause temporary loss of printing from applications
(STR #4187)
- The ipptool program now supports variable substitution in OPERATION
and DELAY directives (STR #4175)
- The IPP backend now stops queues when the server configuration
prevents successful job submission (STR #4125)
- The XML output of ipptool contained empty dictionaries (STR #4136)
- The scheduler did not delete job control backup files (STR #4244)
- cupsGetPPD3 could return a local PPD instead of the correct remote
PPD.
- The scheduler incorrectly advertised auth-info-required for local
queues needing local authentication (STR #4205)
- CUPS 1.6 clients using the ServerName directive in client.conf did not
work with CUPS 1.3.x or older servers (STR #4231, STR #4291)
- The SNMP backend now tries to work around broken printers that use a
newline to separate key/value pairs.
- The IPP backend did not send a cancel request to printers when a job
was canceled and the printer did not support Create-Job.
- Fixed EPM packaging files (STR #4199)
- OpenBSD build fix (STR #4195, STR #4196, STR #4197)
- The scheduler could crash when using Avahi (STR #4183, STR #4192,
STR #4200, STR #4213)
- The IPP backend could get stuck in an endless loop on certain network
errors (STR #4194)
- 32-bit builds failed on Debian (STR #4133)
- The scheduler no longer accepts or sends job description attributes.
- The IPP backend now works around some conformance issues for broken
printers (STR #4190)
- cupsBackendReport() now filters out all control characters from the
reported 1284 device IDs (STR #4124)
- The scheduler no longer allows job-name values that are not valid
network Unicode strings (STR #4072)
- The web interface did not preserve the order of classes, jobs, or
printers (STR #4170)
- The network backends now support disabling of SNMP supply level
queries via the "snmp" URI option (STR #4106)
- The IPP backend did not specify the compression used (STR #4181)
- ipptool did not support octetString values.
- The scheduler did not recognize dnssd: or ipps: URIs as Bonjour shared
queues (STR #4158)
- Applications could not get the PPD file for statically-configured
Bonjour-shared print queues (STR #4159)
- The cupsd.conf file included obsolete browsing directives (STR #4157)
- Fixed a USB backend compatibility issue on systems using libusb
(STR #4155, STR #4191)
- Some Bonjour features were not available on systems with Avahi
(STR #4156)
- CUPS now includes the port number in the Host: header for HTTP
requests.
- Fixed REPEAT-MATCH for STATUS and EXPECT - was incorrectly erroring
out.
CHANGES IN CUPS V1.6.1
- Documentation fix (STR #4149)
- RPM packaging fixes (STR #4129, #4145)
- The Japanese and English web interface headers were swapped
(STR #4148)
CHANGES IN CUPS V1.6.0
- Document changes (STR #4131)
- Added new Catalan (STR #4107) and Spanish (STR #4137) localizations.
CHANGES IN CUPS V1.6rc1
- Added a new Japanese localization (STR #4122)
- The SNMP backend no longer exits if it is unable to obtain an IPv6
socket (STR #4109)
- The LPD backend incorrectly used "localhost" in the control file
instead of the current hostname.
CHANGES IN CUPS V1.6b1
- Documentation updates (STR #3927, STR #3980, STR #4010, STR #4068)
- The scheduler now consolidates all PPD updates from filters at the
end of the job (STR #4075)
- CUPS now supports color management using colord (STR #3808)
- CUPS now supports Bonjour using Avahi (STR #3066)
- The PreserveJobFiles and PreserveJobHistory directives now support
specification of a time interval (STR #3143)
- PPD files can now be archived in (gzip'd) tar files to further reduce
the disk space used by PPD files (STR #3772)
- The network backends now deal with printers that report their levels
in percent but do not specify a maximum capacity of 100 (STR #3551)
- The network backends now report full/almost-full waste bins in
printers along with end-of-life for cleaning pads (STR #4017)
- Added a configure option to set the permissions of the installed
cupsd (STR #3459)
- Added a new WITH-ALL-VALUES directive to ipptool EXPECT predicates
(STR #3949)
- CUPS now supports a User directive in client.conf and the CUPS_USER
environment variable for overriding the default username (STR #3114)
- Now set the PJL USERNAME variable as needed (STR #3100)
- Added support for usernames and passwords longer than 32 characters
(STR #2856)
- Added a new MaxHoldTime directive to automatically cancel jobs that
have been held indefinitely after a specific number of seconds
(STR #2291)
- The LPD backend now uses the originating host name when it is not the
local system (STR #2053)
- CUPS now prefers the suffix "dpcm" when reporting resolution in dots-
per-centimeter (STR #4006)
- The configure script and build system no longer support building of
separate 32-bit and 64-bit libraries.
- The "brightness", "columns", "fitplot", "gamma", "hue",
"natural-scaling", "penwidth", "position", "ppi", "saturation", and
"scaling" options are not longer supported (STR #4010)
- The "page-bottom", "page-left", "page-right", "page-top",
"prettyprint", and "wrap" options have been deprecated (STR #4010)
- The scheduler now reports the standard "number-of-documents" attribute
instead of the CUPS-specific "document-count" attribute in
job objects.
- Added new destination connection and enumeration functions (STR #3924)
- Added new option, localization, and job submission functions that do
not depend on PPD files (STR #3925)
- Added a new MaxJobTime directive for cupsd that specifies the maximum
amount of time allowed for a job to complete before it is canceled.
- The default password callback now supports passwords up to 127
characters.
- The scheduler now supports a DefaultAuthType of "auto" to
automatically choose between Basic (username/password) and Negotiate
(Kerberos) authentication.
- cupsSideChannelSNMPGet/Walk now support OIDs and values up to 64k in
length.
- CUPS no longer supports automatic remote printers or implicit classes
via the CUPS, LDAP, or SLP protocols (STR #3922, STR #3923)
- The PPD APIs are now deprecated and will be removed in a future
version of CUPS (STR #3927)
- The default IPP version for requests is now 2.0 (STR #3929)
- The IPP APIs no longer expose the ipp_t or ipp_attribute_t structures
and instead provide accessor functions (STR #3928)
- The scheduler will no longer run programs with group write permission.
- The PHP module has been removed (STR #3932)
- The bannertops, commandtoescpx, commandtopclx, imagetops,
imagetoraster, pdftops, rastertoescpx, rastertopclx, and texttops
filters have been removed (STR #3930)
- The serial and parallel backends have been removed (STR 3935)
+250
Ver Arquivo
@@ -0,0 +1,250 @@
CHANGES-1.7.txt
---------------
CHANGES IN CUPS V1.7.5
- Security: Addressed some more situations where symlinked files would
be served by the web interface (STR #4455)
- The LPD backend did not work with some versions of glibc (STR #4452)
- CGI scripts did not work (STR #4454)
- The cupsd.conf man page did not list the ErrorPolicy directive
(STR #4457)
- Updated the Brazilian Portuguese translation (STR #4456)
CHANGES IN CUPS V1.7.4
- Security: The web interface incorrectly served symlinked files and
files that were not world-readable, potentially leading to a
disclosure of information (STR #4450)
- The CUPS headers incorrectly needed libdispatch for blocks support
(STR #4397)
- CUPS did not compile when Avahi or mDNSResponder was not present
(STR #4402, STR #4424)
- The "snmp" option did not work with the network backends (STR #4422)
- The User directive in client.conf did not override the USER
environment variable (STR #4426)
- The web interface now properly shows a "Go" button for all text-based
browsers (STR #4425)
- The MaxJobTime directive now properly supports time values (STR #4434)
- The RPM spec file did not work due to the new Brazilian Portuguese
localization (STR #4436)
- Fixed an "IPP read error" issue (STR #4440)
- Fixed the --disable-libusb configure option (STR #4439)
- Fixed the debug output from the DNS-SD backend when using Avahi
(STR #4444)
- Fixed a bug in the CUPS_SC_GET_DEVICE_ID handling by the network
backends (STR #4447)
- Added USB quirk rule for Lexmark E230 (STR #4448)
CHANGES IN CUPS V1.7.3
- Added Brazilian Portuguese translation (STR #4409)
- Fixed mapping of OutputBin values such as "Tray1"
(<rdar://problem/16685606>)
- Several ippGet* functions incorrectly returned -1 instead of 0 on
error.
- The cupsGetResponse function did not work properly with
CUPS_HTTP_DEFAULT (<rdar://problem/16762593>)
- The IPP backend did not abort a job when the printer did not validate
the supplied options (<rdar://problem/16836752>)
- Fixed an authentication race condition in cupsSendRequest (STR #4403)
- The scheduler did not add the "job-hold-until-specified" reason when
holding a job using the lp command (STR #4405)
- The configure script incorrectly added libgcrypt as a GNU TLS
dependency (STR #4399)
- cupsGetDestMediaCount did not work for CUPS_MEDIA_FLAGS DEFAULT
(STR #4414)
- Auto-typing of PWG Raster files did not work (STR #4417)
- IPP queues using hardcoded credentials would ask for credentials
(STR #4371)
- Dates in non-UTF-8 locales did not display correctly (STR #4388)
- The RPM spec file now looks for libusb-devel 1.0 or later.
- Fixed the "create-printer-subscription.test" file for IPPTOOL
(STR #4420)
CHANGES IN CUPS V1.7.2
- Security: The scheduler now blocks URLs containing embedded HTML
(STR #4356)
- Documentation fixes (STR #3259, STR #4346, STR #4355)
- Fixed the Japanese localization (STR #4385)
- Added a German localization (STR #4363)
- The cupsfilter command incorrectly read the cupsd.conf file; it now
reads the cups-files.conf file instead.
- Fixed OS X builds with Xcode 5.x (<rdar://problem/15914959>)
- Fixed SSL support on Windows (STR #4358)
- Fixed documentation and naming of Create-Job/Printer-Subscriptions
operations (STR #4389)
- Phone numbers in fax jobs were not properly filtered for IPP FaxOut
(<rdar://problem/16351701>)
- Updated Linux "relro" support (STR #4349)
- Fixed a memory leak in the label printer driver (STR #4393)
- cupsEnumDests did not set the "is_default" field (STR #4332)
- cupsDoIORequest could miss the server status, causing failed lpadmin
and other administrative commands (STR #4386)
- cupsEnumDests didn't always call the callback function (STR #4380)
- "lp -i job-id -H hold" did not work (STR #nnn)
- CUPS didn't compile on older platforms (STR #4338)
- Several libcups files did not have the Apple license exception
notice (STR #4361)
- Fixed a D-BUS threading issue that caused the scheduler to crash
(STR #4347)
- The scheduler now automatically reconnects to Avahi as needed
(STR #4370, STR #4373)
- The scheduler did not handle GET requests for the log files properly
(STR #3265)
- The dnssd backend did not always report all discovered printers using
Avahi (STR #4365)
- The Zebra printer driver did not properly handle negative "label top"
values (STR #4354)
- The scheduler did not always update the MakeModel value in
printers.conf after updating the driver (STR #4264)
- The LPD mini daemon did not support print jobs larger than 2GB
(STR #4351)
- Fixed a bug in the status reading code when sending a compressed data
stream to an IPP printer/server (<rdar://problem/16019623>)
- The IPP backend might not include all job attributes in Validate-Job
operations (<rdar://problem/16025435>)
- Fixed some clang-reported issues (<rdar://problem/15936066>)
CHANGES IN CUPS V1.7.1
- Security: the lppasswd program incorrectly used settings from
~/.cups/client.conf (STR #4319)
- Auto debug logging was broken in 1.7.0 (<rdar://problem/15331639>)
- Some gzip'd PPD files could not be used (<rdar://problem/15386424>)
- Cleaned up some job logging in the scheduler
(<rdar://problem/15332672>)
- ATTR messages could cause string pool memory corruption in the
scheduler (<rdar://problem/15382819>)
- The RPM spec file did not list the build requirements; this was on
purpose, but now we are listing the Red Hat package names
(<rdar://problem/15375760>, STR #4322)
- Printing to a raw queue could result in corrupt output due to
opportunistic compression (<rdar://problem/15008524>)
- The GNU TLS support code triggered many compiler warnings due to the
use of old GNU TLS compatibility type names
(<rdar://problem/15392966>)
- The "make check" test suite did not work on Linux without the
cups-filters package installed (<rdar://problem/14292998>)
- Japanese PPDs using with the Shift-JIS encoding did not work
(<rdar://problem/15427759>)
- "tel:" URIs incorrectly had slashes (<rdar://problem/15418463>)
- The libusb-based USB backend incorrectly used write timeouts
(<rdar://problem/15564888>)
- Shared printers could become inaccessible after a few days on OS X
(<rdar://problem/15426838>)
- The IPP backend did not wait for a busy printer to become available
before attempting to print (<rdar://problem/15465667>)
- CUPS did not support "auto-monochrome" or "process-monochrome" for the
"print-color-mode" option (<rdar://problem/15482520>)
- Using "@IF(name)" in an Allow or Deny rule did not work (STR #4328)
- lpq and lpstat did not list jobs in the correct order when priorities
were specified (STR #4326)
- The D-BUS notifier did not remove its lockfile (STR #4314)
- CUPS incorrectly used the USER environment variable when the name did
not match the user ID (STR #4327)
CHANGES IN CUPS V1.7.0
- Updated the Japanese localization.
- The lpadmin command did not send the PPD name from the "-m" option
(<rdar://problem/15264697>)
- Network backends now use the prtMarkerSuppliesClass property to
determine the direction of supply level values
(<rdar://problem/14302628>)
- The scheduler did not remove backup PPD files when a printer was
deleted (<rdar://problem/15065555>)
- The scheduler incorrectly responded to HEAD requests when the web
interface was disabled (<rdar://problem/15090332>)
- The scheduler did not respond using the hostname specified by the
client (<rdar://problem/14583574>)
- Fax queues did not work when shared via Bonjour
(<rdar://problem/14498310>)
- Error messages from the scheduler were not localized using the
language specified in the client's IPP request
(<rdar://problem/14128011>)
- Added an Italian localization (<rdar://problem/14481578>)
- Fixed a couple memory leaks in ippfind that were reported by Clang.
- Fixed a compile issue on 64-bit Linux with Clang - need to use the
-pie option instead of -Wl,-pie now (<rdar://problem/14480938>)
- The ippfind utility reported the wrong port numbers when compiled
against Avahi (<rdar://problem/14508324>)
- httpGetFd, httpGetFile, httpPutFd, and httpPutFile did not
automatically reconnect if the server closed the connecion after the
previous response.
- Fixed a compile error in libcups (<rdar://problem/14467141>)
- The scheduler incorrectly did not pass a FINAL_CONTENT_TYPE
environment variable to the filters or backend
(<rdar://problem/14355011>)
- The cups-exec helper program could fail randomly on OS X due to
sandbox violations when closing excess file descriptors
(<rdar://problem/14421943>)
- The scheduler incorrectly did not use the kqueue interface on OS X.
CHANGES IN CUPS V1.7rc1
- Printer xxx-default values were not reported by Get-Printer-Attributes
or lpoptions (<rdar://problem/14401795>)
- Fixed deprecation warnings for many functions on OS X so they are tied
to the deployment version when building (<rdar://problem/14210079>)
- Fixed a build issue on ARM-based Linux systems - unable to validate
va_list arguments.
- Added a new ippfind tool for finding IPP printers and other Bonjour
services (<rdar://problem/13876199>)
- Fixed some issues with conversion of PWG media size names to
hundredths of millimeters (<rdar://problem/14065748>)
- The IPP backend could crash on OS X when printing to a Kerberized
printer (<rdar://problem/14040186>)
- The ipptool program now automatically extends timeouts when the
output buffer is filled (<rdar://problem/14016099>)
- The ipptool program now supports the --help and --version options.
- The ipptool program did not continue past include file errors by
default (<rdar://problem/13875803>)
- The ipptool program now supports FILE-ID and TEST-ID directives and
includes their values in its XML output (<rdar://problem/13876038>)
- The ipptool program now supports WITH-HOSTNAME, WITH-RESOURCE, and
WITH-SCHEME expect predicates to compare the corresponding URI
components (<rdar://problem/13876091>)
CHANGES IN CUPS V1.7b1
- The configure script now supports a --with-rundir option to change
the transient run-time state directory from the default to other
locations like /run/cups (STR #4306)
- The scheduler now supports PPD lookups for classes (STR #4296)
- The cupsfilter program did not set the FINAL_CONTENT_TYPE
environment variable for filters.
- Added a new "-x" option to the cancel command (STR #4103)
- Made the PWG media handling APIs public (STR #4267)
- Implemented ready media support for the cupsGetDestMediaXxx APIs
(STR #4289)
- Added new cupsFindDestDefault, cupsFindDestReady, and
cupsFindDestSupported APIs (STR #4289)
- Added new cupsGetDestMediaByIndex, cupsGetDestMediaCount, and
cupsGetDestMediaDefault APIs (STR #4289)
- Added new ippGet/SetOctetString APIs for getting and setting an
octetString value (STR #4289)
- Added new ippCreateRequestedArray API for generating a array of
attributes from the requested-attributes attribute.
- The ipptool utility now supports compression, conditional tests based
on the presence of files, and new DEFINE predicates for STATUS.
- Added new IPP APIs for checking values (STR #4167)
- Added new IPP APis for adding and setting formatted strings.
- Added new HTTP APIs to support basic server functionality via libcups.
- The dnssd backend now generates a 1284 device ID as needed (STR #3702)
- CUPS now supports compressing and decompressing streamed data
(STR #4168)
- CUPS now supports higher-level PIN printing, external accounting
systems, and "print here" printing environments (STR #4169)
- IRIX is no longer a supported operating system (STR #4092)
- The PPD compiler now supports JCL options properly (STR #4115)
- The web interface now checks whether the web browser has cookies
enabled and displays a suitable error message (STR #4141)
+215
Ver Arquivo
@@ -0,0 +1,215 @@
CHANGES-2.0.txt
---------------
CHANGES IN CUPS V2.0.4
- Fixed a bug in cupsRasterWritePixels (STR #4650)
- Fixed redirection in the web interface (STR #4538)
- The IPP backend did not respond to side-channel requests (STR #4645)
- The scheduler did not start all pending jobs at once (STR #4646)
- The web search incorrectly searched time-at-xxx values (STR #4652)
- Fixed an RPM spec file issue (STR #4657)
- The scheduler incorrectly started jobs while canceling multiple jobs
(STR #4648)
- Fixed processing of server overrides without port numbers (STR #4675)
- Documentation changes (STR #4651, STR #4674)
CHANGES IN CUPS V2.0.3
- Security: Fixed CERT VU #810572 exploiting the dynamic linker
(STR #4609)
- Security: The scheduler could hang with malformed gzip data
(STR #4602)
- Restored missing generic printer icon file (STR #4587)
- Fixed logging of configuration errors to show up as errors (STR #4582)
- Fixed potential buffer overflows in raster code and filters
(STR #4598, STR #4599, STR #4600, STR #4601)
- Fixed a gzip processing bug (#4602)
- Fixed <Limit> inside <Location> (STR #4575)
- Fixed lpadmin when both -m and -o are used (STR #4578)
- The web interface always showed support for 2-sided printing
(STR #4595)
- cupsRasterReadHeader did not fully validate the raster header
(STR #4596)
- The rastertopwg filter did not check for truncated input (STR #4597)
- The cups-lpd mini-daemon did not check for request parameters
(STR #4603)
- The scheduler could get caught in a busy loop (STR #4605)
- The sample Epson driver could crash (STR #4616)
- The IPP backend now correctly monitors jobs
(<rdar://problem/20495955>)
- The ppdhtml and ppdpo utilities crashed when the -D option was used
before a driver information file (STR #4627)
- ippfind incorrectly substituted "=port" for service_port.
- The IPP/1.1 test file did not handle the initial print job
completing early (STR #4576)
- Fixed a memory leak in cupsConnectDest (STR #4634)
- PWG Raster Format output contained invalid ImageBox values
(<rdar://problem/21144309>)
- Added Russian translation (STR #4577)
- Added German translation (STR #4635)
CHANGES IN CUPS V2.0.2
- Security: cupsRasterReadPixels buffer overflow with invalid page
header and compressed raster data (STR #4551)
- Command-line programs were not localized on Mac OS X
(<rdar://problem/14546232>)
- The scheduler incorrectly cleared the MakeModel string in the
printers.conf file after a restart (<rdar://problem/16827518>)
- CUPS did not compile with older versions of GNU TLS (STR #4527)
- CUPS did not compile without Avahi or mDNSResponder (STR #4523)
- ippLength() did not return the correct length for IPP_TAG_CONST
string values.
- The scheduler incorrectly aborted jobs after a job was restarted
(<rdar://problem/19129387>)
- The cups-files.conf file contained the old ServerCertificate/Key
directives instead of ServerKeychain.
- Fixed builds when no SSL/TLS library is available, or when explicitly
disabled (STR #4531)
- Fixed an OpenBSD charset transcoding issue.
- Fixed USB printing on OpenBSD (STR #4525)
- The --without-xinetd configure option did not work (STR #4542)
- Backends needing to load OS X kernel extensions did not work
(<rdar://problem/19015679>)
- Mapping of PPD keywords to IPP keywords did not work if the PPD
keyword was already an IPP keyword (<rdar://problem/19121005>)
- cupsGetPPD* sent bad requests (STR #4567)
- ippserver used the wrong temporary directory on Windows (STR #4547)
- ippserver did not handle Bonjour registrations properly (STR #4548)
- The scheduler could crash during shutdown if Avahi was shutdown
first (STR #4550)
- Added a USB quirk rule for Intermec printers (STR #4553)
- The scheduler did not always log which configuration file had the
error (STR #4559)
- The ippfind and ipptool programs now correctly match hostnames with
trailing dots (STR #4563)
- The ipptool timeout option did not work (STR #4515)
- Fixed several issues with client.conf, CUPS_SERVER, and the "-h"
option of most commands (STR #4528)
- Another change for OpenBSD (STR #4526)
- Added Japanese localization (STR #4524)
- Documentation changes (STR #4569)
CHANGES IN CUPS V2.0.1
- Security: SSLv3 is now disabled by default to protect against the
POODLE attack (STR #4476)
- Printer sharing did not work when systemd was being used (STR #4497)
- cupsGetPPD* would return a symlink to the PPD in /etc/cups/ppd even if
it was not readable by the user (STR #4500)
- The web interface now protects against frame "click-jacking" attacks
(STR #4492)
- Fixed a crash in ippAttributeString (<rdar://problem/17903871>)
- Fixed a crash in the scheduler on Linux/*BSD if colord was not running
(STR #4496)
- Fixed a random crash in the scheduler when not using systemd
(STR #4484)
- Added systemd support for cups-lpd (STR #4493)
- The scheduler did not honor the FatalErrors directive for mis-
configured Group and SystemGroup values (STR #4495)
- The network backends no longer report waste-receptacle conditions when
using SNMP (STR #4499)
- The IPP backend did not work with some configurations of Windows
(STR #4503)
- RPMs did not build (STR #4490)
- Added a USB quirk rule for the Brother HL-1250 (STR #4519)
- Fixed compiles on unsupported platforms (STR #4510)
- "cancel -a" did not cancel all jobs on all destinations (STR #4513)
- The web interface did not work on OpenBSD (STR #4496)
CHANGES IN CUPS V2.0.0
- The scheduler did not preserve listener sockets from launchd or
systemd after a restart (<rdar://problem/18112848>)
- Added some USB quirk rules for the libusb-based USB backend
(STR #4482)
- Spanish localization update (STR #4487)
- Updated documentation for 2.0.0 release.
CHANGES IN CUPS V2.0rc1
- Documentation updates (STR #4464)
- The scheduler now monitors the AC power status on OS X, allowing for
"sleep printing" when sharing printers (<rdar://problem/17325852>)
- The scheduler incorrectly called launch_activate_socket multiple times
on OS X (<rdar://problem/17523218>)
- The ippserver test program now passes the IPP Everywhere self-
certification tests (STR #4101)
- Relaxed the new OS X filter sandbox slightly (STR #4471,
<rdar://problem/17483959>)
- Dropped the old Epson Stylus Color/Photo sample drivers since they
don't work with any current printers and there are free alternatives
that produce much better output (<rdar://problem/18036889>)
- Log and configuration files that are not world-readable are again
accessible via the web interface (STR #4461)
- PPD files are now created using the permissions specified by the
ConfigFilePerm directive.
- Fixed RPM build issues (STR #4459)
- Fixed the spinner image and restart page when reconfiguring the
scheduler through the web interface (STR #4475)
CHANGES IN CUPS V2.0b1
- Added a "--list-filters" option to the cupsfilter command (STR #4325)
- Added systemd support (STR #3917)
- Added support for re-sending a job as a raster file if a higher-level
format such as PDF fails (<rdar://problem/15583721>)
- Added support for regular expression matching in the MIME type rules
(<rdar://problem/11131245>)
- Added support for TLS certificate validation and policy enforcement
(STR #1616)
- Added support for simultaneous XML and test output from ipptool.
- Added support for PAUSE directive in ipptool test files.
- Added support for auto-typing of TIFF files by ipptool (STR #4418)
- The scheduler now returns completed jobs in the correct newest-to-
oldest order (STR #4396)
- The configure script now supports target-specific tools for pkg-config
and others (STR #4423)
- The ipptool program now supports EXPECT statements for collection
member attributes (<rdar://problem/15355218>)
- The ipptool program now supports collection attributes with multiple
values (<rdar://problem/15355124>)
- The sample drivers now include all of the installed localizations by
default (<rdar://problem/14756625>)
- Adopted Linux man page conventions and updated all man pages
(STR #4372, STR #4329)
- The scheduler now supports the "first-index" operation attribute for
the Get-Jobs operation (STR #2913)
- Changed the default AccessLogLevel and PageLogFormat to disable the
access_log and page_log files by default (<rdar://problem/16495000>)
- cupsRasterInterpretPPD now supports the Orientation header in order to
support long-edge feed raster printers (<rdar://problem/15837926>)
- The scheduler now allows run-as-root backends to have group read and
execute permissions (STR #2935)
- The ippFindAttribute and ippFindNextAttribute functions now support
hierarchical searches (STR #4395)
- Dropped OpenSSL support in favor of GNU TLS.
- Dropped "dark wake" support on OS X, which was preventing portables
from going to sleep when there was a stuck job. We now use a variation
of the CUPS 1.4 sleep support to do a cleaner sleep
(<rdar://problem/14323704>)
- Dropped support for AIX, HP-UX, and OSF/1 (aka Digital UNIX)
- Dropped lppasswd and support for Digest authentication in in the
scheduler (STR #4321)
- The cupsGetClasses, cupsGetPrinters, and cupsTempFile functions are no
longer supported.
- The scheduler now caches more job history data and limits the number
of completed jobs returned by Get-Jobs as needed in order to prevent a
denial-of-service on busy servers (STR #2913)
- The filter/backend sandbox on OS X now defaults to a more strict
whitelist (<rdar://problem/15939788>)
- Increased the default idle exit timeout to 60 seconds on OS X
(<rdar://problem/16041820>)
- Printer classes were not accessible on OS X
(<rdar://problem/16385643>)
- The scheduler now uses </DefaultPrinter> to close the default printer
definition in printers.conf (STR #4153)
- Canceling all jobs in the web interface now just cancels the jobs
(STR #1914)
+150
Ver Arquivo
@@ -0,0 +1,150 @@
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)
+46 -324
Ver Arquivo
@@ -1,329 +1,51 @@
CHANGES.txt - 2007-09-28
------------------------
CHANGES.txt - 2.2b2 - 2016-06-24
--------------------------------
CHANGES IN CUPS V1.3.3
CHANGES IN CUPS V2.2b2
- The scheduler did not use the attributes-natural-language
attribute when passing the LANG environment variable to
cups-deviced or cups-driverd.
- The scheduler did not use the printer-op-policy when
modifying classes or printers (STR #2525)
- The auth-info-required attribute was not always updated
for remote queues that required authentication.
- The German web interface localization contained errors
(STR #2523)
- The Swedish localization contained errors (STR #2522)
- Added Upstart support (PR #4825)
- CUPS now supports Let's Encrypt certificates on Linux.
CHANGES IN CUPS V1.3.2
CHANGES IN CUPS V2.2b1
- The 1.3.1 release was incorrectly created from the
1.4.x source tree (STR #2519)
- Added support for 32/64-bit libraries on HP-UX
(STR #2520)
- The scheduler incorrectly used portrait as the default
orientation (STR #2513)
- The scheduler no longer writes the printcap file for
every remote printer update (STR #2512)
- Remote raw printing with multiple copies did not work
(STR #2518)
- Updated the configure script to require at least autoconf
2.60 (STR #2515)
- Some gzip'd PPD files were not read in their entirety
(STR #2510)
CHANGES IN CUPS V1.3.1
- Documentation updates.
- The USB backend on Mac OS X could hang if the driver and
printer did not match.
- Delegated Kerberos credentials were not working.
- "make distclean" incorrectly removed the edit-config.tmpl
files (STR #2508)
- Fix compile problem on HP-UX (STR #2501)
- The cupstestppd utility now tests for resolutions greater
than 99999 DPI to detect a missing "x" between the X and Y
resolutions.
- Fixed many problems in the various translations and added
a new "checkpo" utility to validate them.
- The cupstestppd utility now tests the custom page size code
for CUPS raster drivers.
- cupsLangDefault() did not attempt to return a language that
was supported by the calling application.
- If a remote printer stopped while a job was being sent, the
local queue would also get stopped and the job re-queued,
resulting in duplicate prints in some cases.
- A few Apple-specific job options needed to be omitted when
printing a banner page.
- The new peer credential support did not compile on FreeBSD
(STR #2495)
- Direct links to help files did not set the current section
so the table-of-contents was not shown.
- The configure script did not support --localedir=foo (STR #2488)
- The backends were not displaying their localized messages.
- CUPS-Authenticate-Job did not require Kerberos authentication
on queues protected by Kerberos.
- The Zebra ZPL driver did not work with Brady label printers
(STR #2487)
- Norwegian wasn't localized on Mac OS X.
- getnameinfo() returns an error on some systems when DNS is
not available, leading to numerous problems (STR #2486)
- The cupsfilter command did not work properly on Mac OS X.
- The scheduler makefile contained a typo (STR #2483)
- The TBCP and BCP port monitors did not handle the trailing
CTRL-D in some PostScript output properly.
- Fixed the localization instructions and German template for
the "Find New Printers" button (STR #2478)
- The web interface did not work with the Chinese localization
(STR #2477)
- The web interface home page did not work for languages that
were only partially localized (STR #2472)
- Updated the Spanish web interface localization (STR #2473)
- ppdLocalize() did not work for country-specific localizations.
CHANGES IN CUPS V1.3.0
- The scheduler did not handle out-of-file conditions
gracefully when accepting new connections, leading to
heavy CPU usage.
- The scheduler did not detect ServerBin misconfigurations
(STR #2470)
- "AuthType Default" did not work as expected when the
"DefaultAuthType foo" line appeared after it in the
cupsd.conf file.
- The on-line help did not describe many common printing
options (STR #1846)
- The IPP backend did not return the "auth required" status
when printing to a Kerberos-protected queue.
- The scheduler was not looking in the correct directories
for LSB PPD files (STR #2464)
- Changed references to ESP Ghostscript to GPL Ghostscript
(STR #2463)
- The PostScript filter did not cleanly terminate when
the job was canceled or stopped.
- Fixed generation of Kerberos credentials for remote
printing. Note that this requires a recent version of
MIT Kerberos with a working krb5_cc_new_unique()
function or Heimdal Kerberos.
- Added Portuguese and updated Italian message catalogs.
CHANGES IN CUPS V1.3rc2
- Added more range checking to the pdftops filter.
- The scheduler would crash if a remote IPP queue was stopped
(STR #2460)
- The scheduler did not allow "DefaultAuthType None".
CHANGES IN CUPS V1.3rc1
- Updated the German localization (STR #2443)
- cupsAdminGetServerSettings() did not handle </Foo> properly.
- When lprm and cancel are run with no job ID, they now will
cancel the first stopped job if no pending or processing
jobs are left in the queue.
- The scheduler now logs successful print jobs, filter
failures, and the job file types at the default log
level (STR #2458)
- The scheduler now logs the usernames it is using for
authorization at LogLevel debug instead of debug2 (STR #2448)
- Added Intellitech Intellibar and Zebra CPCL PPDs to the list
of installed PPDs.
- Added 6" and 8" wide label sizes for the Zebra ZPL Label
Printer driver (STR #2442)
- The cupsaddsmb program and web interface now support
exporting of 64-bit Windows drivers, when available
(STR #2439)
- Moving a job that was printing did not stop the job on the
original printer (STR #2262)
- The cups-lpd mini-daemon did not work on Mac OS X server.
- Added httpGetAuthString() and httpSetAuthString() APIs to get
and set the current (cached) authorization string to use for
HTTP requests.
- Updated the default cupsd.conf policy to list the
"administrative" operations separately from the "printer
control" operations so that it is easier to define a
group of users that are "printer operators".
- The web interface now pulls the default cupsd.conf file
from cupsd.conf.default in the CUPS config directory.
- Added a help file for using Kerberos with CUPS.
- The scheduler now strips the "@KDC" portion of Kerberos
usernames since those usernames typically do not appear in
the group membership lists used by CUPS.
- cupsMarkOptions() could (incorrectly) leave multiple option
choices marked.
- Backends could (incorrectly) run as root during discovery
(STR #2454)
- Avahi is now supported for DNS-SD (Bonjour) printer sharing
(STR #2455)
- The default cupsd.conf file had typos and old operation names
(STR #2450)
- The scheduler now erases authentication cache files using the
7-pass US DoD algorithm.
- Delegated Kerberos credentials (proxy authentication) did not
work.
- The filter makefile did not optimize the libcupsimage.2.dylib
with a sectorder file.
- The IPP backend incorrectly wrote an empty printer message
when processing the "none" state reason.
- The USB backend could deadlock on Mac OS X while performing
a side-channel command.
- The scheduler did not prevent remote queues from being
shared/published.
- The scheduler did not remove the temporary request file on
authentication errors.
- ppdLocalizeIPPReason() did not handle "scheme:" schemes or
"file" URLs.
- ppdLocalizeIPPReason() was not exported on Mac OS X.
CHANGES IN CUPS V1.3b1
- Copyright updates - CUPS is now owned by Apple Inc.
- Documentation updates (STR #1775, STR #2027, STR #2130,
STR #2131, STR #2263, STR #2356, STR #2397)
- Added new cupsfilter utility (STR #1734)
- Added new job-printer-state-message and
job-printer-state-reasons attributes to jobs (STR #2418)
- Added LDAP+SSL support (STR #1967)
- CUPS now supports authentication via peer credentials
over domain sockets (STR #2242, STR #2277)
- The CUPS sample driver PPDs are now generated by the PPD
compiler and include all of the localized languages by
default (STR #2164)
- You can now specify "AuthType Default" in the cupsd.conf
file to use the default authentication defined by the
DefaultAuthType directive.
- The SNMP backend no longer adds a default Address line
when none is specified in the snmp.conf file; this allows
the backend to be easily disabled as needed (STR #2434)
- Added a new cupsctl command for doing basic changes to
the cupsd.conf file (STR #1777)
- Added a new ppdLocalizeIPPReason() function to get the
localized text/URI for a given IPP reason keyword for a
driver.
- Removed the deskjet2.ppd driver, as it only worked with
a very small subset of HP DeskJet printers and was
confusing to users. The rastertohp driver still
supports the deskjet2.ppd options for existing queues.
- The scheduler did not add a trailing banner page if a
client did not specify the last document in a job (STR
#1711)
- The scheduler did not report Bonjour shared printers as
remote printers (STR #2384)
- Added new -R and -W options to the cupstestppd program
for greater control over the testing of PPDs.
- Added a new cupsGetServerPPD() function for getting
an available PPD from the server (STR #2334)
- Added a new cupsDoIORequest() function for reading
and writing files via IPP requests (STR #2334)
- Added a new CUPS_GET_PPD operation for getting an
available PPD file on the server (STR #2334)
- CUPS_GET_PPDS now reports multiple ppd-product values
based on the PPD ModelName and Product strings (STR
#2334, STR #2383)
- CUPS_GET_PPDS now reports the PSVersion attributes
from a PPD file in the ppd-psversion attribute
(STR #2334)
- CUPS_GET_PPDS now reports the cupsModelNumber attribute
from a PPD file in the ppd-model-number attribute (STR
#2383)
- CUPS_GET_PPDS now reports a driver type string in the
ppd-type attribute based on the cupsFax and cupsFilter
attributes in a PPD file (STR #2383)
- Added a new printer attribute called "cups-version"
which reports the version of CUPS that is running
(STR #2240)
- backendRunLoop() now aborts immediately on SIGTERM
if no data has been written yet (STR #2103)
- Due to poor IPP support from the vendors, the SNMP
backend no longer tries IPP connections; instead,
it now uses a lookup file with fallback to port 9100
(socket://address) and 515 (lpd://address) printing
(STR #2035, STR #2354)
- The scheduler now recreates the CUPS log directory as
needed (STR #2353)
- cupsLangDefault() now maps new-style Apple locale names
to the traditional ll_CC form (STR #2357)
- Add new cupsArrayNew2() API to support hashed lookups
of array elements (STR #2358)
- ppdConflicts() optimizations (STR #2358)
- The cupstestppd program now tests for existing filters,
icons, profiles, and dialog extensions (STR #2326)
- The web interface no longer lists new printers on the
main administration page. Instead, a new "List Available
Printers" button is provided that shows a separate page
with the list of printers.
- The web interface now supports setting the banner and
policy options on raw printers and classes (STR #2238)
- The socket backend now reads any pending back-channel
data before shutting down the socket (STR #2325)
- Added a new ErrorPolicy directive in the cupsd.conf
file (STR #1871)
- Printers that use JCL options are now exported to Samba
correctly (STR #1985)
- The IPP backend now relays printer-state-message values
from the server to the client (STR #2109)
- Added support for the PWG printer-alert and
printer-alert-description attributes (STR #2088)
- Added support for LPD "stream" mode (STR #2036)
- The scheduler now reports the PostScript product string
from PPD files in CUPS-Get-PPDs responses (STR #1900)
- Raw printing with queues pointing to the file pseudo-
device and multiple files and/or banners now works (STR
#1933)
- Added new public cupsAdminGetServerSettings() and
cupsAdminSetServerSettings() APIs.
- Added new "makebuttons" script in the "tools" directory
for creating web interface buttons (STR #2231)
- Added support for DNS-SD (aka "Bonjour") printer sharing
(STR #1171)
- Job operations (cancel, hold, release, etc.) from the
web interface now return back to the original page (STR
#2239)
- The classes or printers list is now shown after a
successful deletion from the web interface (STR #1999)
- The default configuration now allows browse packets from
any address (STR #2008)
- The web interface now provides an "allow printing from the
Internet" check box (STR #1897)
- The notify-events-default and
notify-lease-duration-default attributes can now be set
(STR #1671)
- Server-side default options are now sent to clients when
the "printer-defaults" attribute group is requested (STR
#1923)
- Added support for Linux "relro" linker option (STR #1614)
- CUPS now validates the number-up option value (STR #1329)
- The on-line help now provides better search capabilities
(STR #1701)
- The web interface "Add This Printer" button now allows you
to change the printer name, description, and location
(STR #1646)
- Added support for Mac OS X authorization services
(STR #2206)
- Added support for driver-specific pre-filters (STR #2108)
- Added a new side-channel API for drivers and backends
for basic device control and information queries (STR
#1898)
- The scheduler now uses poll(), epoll(), or /dev/kqueue
instead of select() when possible (STR #1261)
- Added new cupsArrayGetIndex() and cupsArrayGetInsert()
functions to get the current index and insertion
positions of an array.
- Added a new --with-max-copies configure option (STR
#2090)
- Added new cupsRemoveDest() and cupsSetDefaultDest()
functions.
- Added support for cupsPJLCharset attribute in PPD files
which specifies the character set that is used in PJL
strings (STR #1969)
- Moved the definition of the (private) _http_s structure
to http-private.h; code that directly accesses the
http_t members will no longer compile!
- Added support for setting the document-format-default
attribute on a per-printer basis.
- Added support for IntelliBar label printers.
- 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)
+635
Ver Arquivo
@@ -0,0 +1,635 @@
# 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.
+12 -5
Ver Arquivo
@@ -1,9 +1,10 @@
CREDITS.txt - 2007-09-10
CREDITS.txt - 2016-06-21
------------------------
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.
@@ -17,27 +18,33 @@ like to thank the following individuals for their contributions:
Wang Jian - CUPS RPM corrections.
Roderick Johnstone - Beta tester of the millenium.
Till Kamppeter - Bug fixes, beta testing, evangelism.
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.
Naruiko Ogasawara - Japanese localization.
Giulio Orsero - Bug fixes and testing.
Michal Osowiecki - Polish localization.
Citra Paska - Indonesian localization.
Kurt Pfeifle - Bug fixes, beta testing, evangelism.
Vincenzo Reale - Italian localization.
Petter Reinholdtsen - HP-UX compiler stuff.
Juan Pablo González Riopedre - Spanish localization.
Juan Pablo González Riopedre - Spanish localization.
Giovanni Scafora - Italian localization.
Opher Shachar - Hebrew localization.
Stuart Stevens - HP JetDirect IPP information.
Andrea Suatoni - IRIX desktop integration and testing.
Teppo Turlianen - Finnish localization.
Teppo Turliainen - Finnish localization.
Tim Waugh - Lots of patches, testing, and Linux
integration.
Yugami - LDAP browsing support.
+115 -84
Ver Arquivo
@@ -1,84 +1,77 @@
INSTALL - CUPS v1.3.2 - 2007-09-18
INSTALL - CUPS v2.2b2 - 2016-06-24
----------------------------------
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".
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".
**** IF YOU HAVE A NON-POSTSCRIPT PRINTER AND ARE NOT ****
**** RUNNING MAC OS X, YOU WILL ALSO NEED TO INSTALL GPL ****
**** GHOSTSCRIPT WITH THE "cups" DRIVER AFTER YOU INSTALL ****
**** CUPS. ****
*******************************************************************************
*******************************************************************************
**** ****
**** 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 Bourne shell. The GNU compiler tools work well -
we've tested the current CUPS code against several versions
of GCC with excellent results.
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 all
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).
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 the JPEG, PNG, TIFF, and ZLIB
libraries for image support, the CDSA, GNU TLS, or OpenSSL
libraries for encryption support, and the OpenLDAP and
OpenSLP libraries for directory services support. CUPS will
compile and run without these, however you'll miss out on
many of the features provided by CUPS.
Besides these tools you'll want 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.
Kerberos support requires a very recent version of the MIT
implementation with the krb5_cc_new_unique() function or the
Heimdal implementation, along with the corresponding GSSAPI
pieces.
Also, please note that CUPS no longer includes the
Ghostscript- based pstoraster filter. You *must* download
GPL Ghostscript separately from the CUPS web site if you want
to print PostScript files to non-PostScript printers on
operating systems other than Mac OS X.
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.
COMPILING FROM SUBVERSION
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.52 or higher) before compiling the
software from Subversion:
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 -f
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:
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:
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:
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:
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"
@@ -96,6 +89,20 @@ CONFIGURATION
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" ...
Once you have configured things, just type:
make ENTER
@@ -107,11 +114,26 @@ CONFIGURATION
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:
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
@@ -119,12 +141,14 @@ INSTALLING THE SOFTWARE
gmake 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 - we use
EPM to build all of our binary distributions.
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:
@@ -132,7 +156,7 @@ INSTALLING THE SOFTWARE
The EPM software is available at:
http://www.easysw.com/epm/
http://www.msweet.org/
CREATING BINARY DISTRIBUTIONS WITH EPM
@@ -146,37 +170,44 @@ CREATING BINARY DISTRIBUTIONS WITH EPM
gmake <format> ENTER
for FreeBSD, NetBSD, and OpenBSD. The <format> target is one of
the following:
for FreeBSD, NetBSD, and OpenBSD. The <format> target is one of the
following:
epm - Builds a script + tarfile package
aix - Builds an AIX package
bsd - Builds a *BSD package
deb - Builds a Debian package
depot - Builds a HP-UX package (also swinstall)
inst - Builds an IRIX package (also tardist)
osx - Builds a MacOS X package
pkg - Builds a Solaris package
rpm - Builds a RPM package
setld - Build a Tru64 UNIX package
slackware - Build a Slackware package
swinstall - Build a HP-UX package (also depot)
tardist - Builds an IRIX package (also inst)
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 "cups.general" forum at:
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/newsgroups.php
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.
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.
If you are running a version of Linux, be sure to provide the Linux
distribution you have, too.
+29 -32
Ver Arquivo
@@ -1,6 +1,6 @@
Common UNIX Printing System License Agreement
CUPS License Agreement
Copyright 2007 by Apple Inc.
Copyright 2007-2016 by Apple Inc.
1 Infinite Loop
Cupertino, CA 95014 USA
@@ -9,18 +9,15 @@
INTRODUCTION
The Common UNIX Printing System(tm), ("CUPS(tm)"), is provided
under the GNU General Public License ("GPL") and GNU Library
General Public License ("LGPL"), Version 2, with exceptions for
Apple operating systems and the OpenSSL toolkit. A copy of the
exceptions and licenses follow this introduction.
CUPS(tm) is provided under the GNU General Public License ("GPL")
and GNU Library General Public License ("LGPL"), Version 2, with an
exception for Apple operating systems. A copy of the exception and
licenses follow this introduction.
The GNU LGPL applies to the CUPS and CUPS Imaging libraries
located in the "cups" and "filter" subdirectories of the CUPS
source distribution and in the "cups" include directory and
library files in the binary distributions. The GNU GPL applies to
the remainder of the CUPS distribution, including the "pdftops"
filter which is based upon Xpdf.
source distribution and the files in the "test" subdirectory. The
GNU GPL applies to the remainder of the CUPS distribution.
For those not familiar with the GNU GPL, the license basically
allows you to:
@@ -48,7 +45,7 @@ application, driver, or filter.
LICENSE EXCEPTIONS
In addition, as the copyright holder of CUPS, Apple Inc. grants
the following special exceptions:
the following special exception:
1. Apple Operating System Development License Exception;
@@ -71,11 +68,11 @@ the following special exceptions:
source code of the Apple OS-Developed Software.
b. An Apple Operating System means any operating system
software developed and/or marketed by Apple Computer,
Inc., including but not limited to all existing
releases and versions of Apple's Darwin, Mac OS X,
and Mac OS X Server products and all follow-on
releases and future versions thereof.
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 thereof.
c. This exception is only available for Apple
OS-Developed Software and does not apply to software
@@ -89,14 +86,8 @@ the following special exceptions:
This file is subject to the Apple OS-Developed
Software exception.
2. OpenSSL Toolkit License Exception;
a. Apple Inc. explicitly allows the compilation and
distribution of the CUPS software with the OpenSSL
Toolkit.
No developer is required to provide these exceptions in a
derived work.
No developer is required to provide this exception in a derived
work.
KERBEROS SUPPORT CODE
@@ -132,17 +123,23 @@ redistribute it freely, subject to the following restrictions:
software.
3. This notice may not be removed or altered from any source
distribution.
distribution.
TRADEMARKS
Apple Inc. has trademarked the Common UNIX Printing System, CUPS,
and CUPS logo. You may use these names and logos in any direct port
or binary distribution of CUPS. Please contact Apple Inc. for written
permission to use them in derivative products. Our intention is to
protect the value of these trademarks and ensure that any derivative
product meets the same high-quality standards as the original.
CUPS and the CUPS logo (the "CUPS Marks") are trademarks of Apple
Inc. Apple grants you a non-exclusive and non-transferable right
to use the CUPS Marks in any direct port or binary distribution
incorporating CUPS software and in any promotional material
therefor. You agree that your products will meet the highest
levels of quality and integrity for similar goods, not be unlawful,
and be developed, manufactured, and distributed in compliance with
this license. You will not interfere with Apple's rights in the
CUPS Marks, and all use of the CUPS Marks shall inure to the
benefit of Apple. This license does not apply to use of the CUPS
Marks in a derivative products, which requires prior written
permission from Apple Inc.
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
+76 -91
Ver Arquivo
@@ -1,16 +1,14 @@
#
# "$Id$"
# Common makefile definitions for CUPS.
#
# Common makefile definitions for the Common UNIX Printing System (CUPS).
# Copyright 2007-2014 by Apple Inc.
# Copyright 1997-2007 by Easy Software Products, all rights reserved.
#
# Copyright 2007 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
# file is missing or damaged, see the license at "http://www.cups.org/".
# These coded instructions, statements, and computer programs are the
# property of Apple Inc. and are protected by Federal copyright
# law. Distribution and use rights are outlined in the file "LICENSE.txt"
# which should have been included with this file. If this file is
# file is missing or damaged, see the license at "http://www.cups.org/".
#
#
@@ -20,33 +18,34 @@
AR = @AR@
AWK = @AWK@
CC = @LIBTOOL@ @CC@
CHMOD = @CHMOD@
CXX = @LIBTOOL@ @CXX@
DSO = @DSO@
HTMLDOC = @HTMLDOC@
DSOXX = @DSOXX@
GZIP = @GZIP@
INSTALL = @INSTALL@
LD = @LD@
LIBTOOL = @LIBTOOL@
LN = @LN@ -sf
MV = @MV@
PHPCONFIG = @PHPCONFIG@
RANLIB = @RANLIB@
RM = @RM@ -f
RMDIR = @RMDIR@
SED = @SED@
SHELL = /bin/sh
STRIP = @STRIP@
#
# Installation programs...
#
INSTALL_BIN = $(LIBTOOL) $(INSTALL) -m 755
INSTALL_CONFIG = $(INSTALL) -m @CUPS_CONFIG_FILE_PERM@
INSTALL_DATA = $(INSTALL) -m 644
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) -m 755
INSTALL_MAN = $(INSTALL) -m 644
INSTALL_SCRIPT = $(INSTALL) -m 755
INSTALL_LIB = $(LIBTOOL) $(INSTALL) -c -m 555 @INSTALL_STRIP@
INSTALL_MAN = $(INSTALL) -c -m 444
INSTALL_SCRIPT = $(INSTALL) -c -m 555
#
# Default user, group, and system groups for the scheduler...
@@ -62,6 +61,7 @@ CUPS_PRIMARY_SYSTEM_GROUP = @CUPS_PRIMARY_SYSTEM_GROUP@
#
CUPS_CONFIG_FILE_PERM = @CUPS_CONFIG_FILE_PERM@
CUPS_CUPSD_FILE_PERM = @CUPS_CUPSD_FILE_PERM@
CUPS_LOG_FILE_PERM = @CUPS_LOG_FILE_PERM@
#
@@ -77,15 +77,17 @@ UNINSTALL_LANGUAGES = @UNINSTALL_LANGUAGES@
#
LIBCUPS = @LIBCUPS@
LIBCUPSCGI = @LIBCUPSCGI@
LIBCUPSIMAGE = @LIBCUPSIMAGE@
LIBJPEG = @LIBJPEG@
LIBLDAP = @LIBLDAP@
LIBMALLOC = @LIBMALLOC@
LIBPAPER = @LIBPAPER@
LIBPNG = @LIBPNG@
LIBSLP = @LIBSLP@
LIBCUPSMIME = @LIBCUPSMIME@
LIBCUPSPPDC = @LIBCUPSPPDC@
LIBCUPSSTATIC = @LIBCUPSSTATIC@
LIBGSSAPI = @LIBGSSAPI@
LIBTIFF = @LIBTIFF@
LIBMALLOC = @LIBMALLOC@
LIBMXML = @LIBMXML@
LIBPAPER = @LIBPAPER@
LIBUSB = @LIBUSB@
LIBWRAP = @LIBWRAP@
LIBZ = @LIBZ@
#
@@ -94,75 +96,64 @@ LIBZ = @LIBZ@
INSTALLSTATIC = @INSTALLSTATIC@
#
# IPP backend aliases...
#
IPPALIASES = @IPPALIASES@
#
# Install XPC backends?
#
INSTALLXPC = @INSTALLXPC@
#
# Program options...
#
# ARCHFLAGS Defines the default architecture build options.
# ARCH32FLAGS Defines the 32-bit architecture build options, used
# when compiling separate 32/64-bit libraries.
# ARCH64FLAGS Defines the 64-bit architecture build options, used
# when compiling separate 32/64-bit libraries.
# OPTIM Defines the common compiler optimization/debugging options
# for all architectures.
# OPTIONS Defines other compile-time options (currently only -DDEBUG
# for extra debug info)
#
ALL_CFLAGS = $(SSLFLAGS) @LARGEFILE@ @PTHREAD_FLAGS@ \
$(OPTIONS) $(CFLAGS)
ALL_CFLAGS = -I.. -D_CUPS_SOURCE $(CFLAGS) $(SSLFLAGS) \
@LARGEFILE@ @PTHREAD_FLAGS@ $(ONDEMANDFLAGS) $(OPTIONS)
ALL_CXXFLAGS = -I.. -D_CUPS_SOURCE $(CXXFLAGS) $(SSLFLAGS) \
@LARGEFILE@ @PTHREAD_FLAGS@ $(ONDEMANDFLAGS) $(OPTIONS)
ARCHFLAGS = @ARCHFLAGS@
ARFLAGS = @ARFLAGS@
BACKLIBS = @BACKLIBS@
CFLAGS = -I.. @CPPFLAGS@ @CFLAGS@ \
@LARGEFILE@ @PTHREAD_FLAGS@ $(OPTIONS)
BUILDDIRS = @BUILDDIRS@
CFLAGS = @CPPFLAGS@ @CFLAGS@
COMMONLIBS = @LIBS@
CUPSDLIBS = @CUPSDLIBS@
CXXFLAGS = -I.. $(SSLFLAGS) @CPPFLAGS@ @CXXFLAGS@ \
@LARGEFILE@ @PTHREAD_FLAGS@ $(OPTIONS)
CXXFLAGS = @CPPFLAGS@ @CXXFLAGS@
CXXLIBS = @CXXLIBS@
DSOFLAGS = @DSOFLAGS@
DBUS_NOTIFIER = @DBUS_NOTIFIER@
DBUS_NOTIFIERLIBS = @DBUS_NOTIFIERLIBS@
DNSSD_BACKEND = @DNSSD_BACKEND@
DSOFLAGS = -L../cups @DSOFLAGS@
DSOLIBS = @DSOLIBS@ $(COMMONLIBS)
DNSSDLIBS = @DNSSDLIBS@
FONTS = @FONTS@
IMGLIBS = @IMGLIBS@
IMGFILTERS = @IMGFILTERS@
LAUNCHDLIBS = @LAUNCHDLIBS@
LDFLAGS = -L../cups -L../filter @LDARCHFLAGS@ \
IPPFIND_BIN = @IPPFIND_BIN@
IPPFIND_MAN = @IPPFIND_MAN@
LDFLAGS = -L../cgi-bin -L../cups -L../filter -L../ppdc \
-L../scheduler @LDARCHFLAGS@ \
@LDFLAGS@ @RELROFLAGS@ @PIEFLAGS@ $(OPTIM)
LEGACY_BACKENDS = @LEGACY_BACKENDS@
LIBCUPSORDER = @LIBCUPSORDER@
LIBCUPSIMAGEORDER = @LIBCUPSIMAGEORDER@
LINKCUPS = @LINKCUPS@ $(SSLLIBS)
LINKCUPS = @LINKCUPS@ $(LIBGSSAPI) $(DNSSDLIBS) $(LIBZ)
LINKCUPSIMAGE = @LINKCUPSIMAGE@
LIBS = $(LINKCUPS) $(COMMONLIBS)
ONDEMANDFLAGS = @ONDEMANDFLAGS@
ONDEMANDLIBS = @ONDEMANDLIBS@
OPTIM = @OPTIM@
OPTIONS =
PAMLIBS = @PAMLIBS@
PAP = @PAP@
PDFTOPS = @PDFTOPS@
PHPDIR = @PHPDIR@
SERVERLIBS = @SERVERLIBS@
SSLFLAGS = @SSLFLAGS@
SSLLIBS = @SSLLIBS@
UNITTESTS = @UNITTESTS@
#
# Separate 32/64-bit library support...
#
ARCH32FLAGS = @ARCH32FLAGS@
DSO32FLAGS = @DSO32FLAGS@
INSTALL32 = @INSTALL32@
LIB32CUPS = @LIB32CUPS@
LIB32CUPSIMAGE = @LIB32CUPSIMAGE@
LIB32DIR = $(BUILDROOT)@LIB32DIR@
UNINSTALL32 = @UNINSTALL32@
ARCH64FLAGS = @ARCH64FLAGS@
DSO64FLAGS = @DSO64FLAGS@
INSTALL64 = @INSTALL64@
LIB64CUPS = @LIB64CUPS@
LIB64CUPSIMAGE = @LIB64CUPSIMAGE@
LIB64DIR = $(BUILDROOT)@LIB64DIR@
UNINSTALL64 = @UNINSTALL64@
#
# Directories...
@@ -191,6 +182,7 @@ localstatedir = @localstatedir@
mandir = @mandir@
oldincludedir = @oldincludedir@
prefix = @prefix@
privateinclude = @privateinclude@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
@@ -201,19 +193,19 @@ BUILDROOT = $(DSTROOT)
AMANDIR = $(BUILDROOT)@AMANDIR@
BINDIR = $(BUILDROOT)@bindir@
BUNDLEDIR = @CUPS_BUNDLEDIR@
CACHEDIR = $(BUILDROOT)@CUPS_CACHEDIR@
DATADIR = $(BUILDROOT)@CUPS_DATADIR@
DOCDIR = $(BUILDROOT)@CUPS_DOCROOT@
ICONDIR = @ICONDIR@
INCLUDEDIR = $(BUILDROOT)$(includedir)
INITDIR = @INITDIR@
INITDDIR = @INITDDIR@
LIBDIR = $(BUILDROOT)$(libdir)
LOCALEDIR = $(BUILDROOT)@CUPS_LOCALEDIR@
LOGDIR = $(BUILDROOT)@CUPS_LOGDIR@
MANDIR = $(BUILDROOT)@mandir@
MENUDIR = @MENUDIR@
PMANDIR = $(BUILDROOT)@PMANDIR@
PRIVATEINCLUDE = $(BUILDROOT)@PRIVATEINCLUDE@
RCLEVELS = @RCLEVELS@
RCSTART = @RCSTART@
RCSTOP = @RCSTOP@
@@ -222,7 +214,6 @@ SBINDIR = $(BUILDROOT)@sbindir@
SERVERBIN = $(BUILDROOT)@CUPS_SERVERBIN@
SERVERROOT = $(BUILDROOT)@CUPS_SERVERROOT@
STATEDIR = $(BUILDROOT)@CUPS_STATEDIR@
XINETD = @XINETD@
MAN1EXT = @MAN1EXT@
MAN5EXT = @MAN5EXT@
@@ -233,8 +224,15 @@ MAN8DIR = @MAN8DIR@
PAMDIR = @PAMDIR@
PAMFILE = @PAMFILE@
DEFAULT_LAUNCHD_CONF = @DEFAULT_LAUNCHD_CONF@
DBUSDIR = @DBUSDIR@
INITDIR = @INITDIR@
INITDDIR = @INITDDIR@
LAUNCHD_DIR = @LAUNCHD_DIR@
SMFMANIFESTDIR = @SMFMANIFESTDIR@
SYSTEMD_DIR = @SYSTEMD_DIR@
XINETD = @XINETD@
USBQUIRKS = @USBQUIRKS@
#
@@ -242,35 +240,22 @@ DBUSDIR = @DBUSDIR@
#
.SILENT:
.SUFFIXES: .1 .1.gz .1m .1m.gz .5 .5.gz .7 .7.gz .8 .8.gz .a .c .cxx .h .man .o .32.o .64.o .gz
.SUFFIXES: .1 .1.gz .1m .1m.gz .3 .3.gz .5 .5.gz .7 .7.gz .8 .8.gz .a .c .cxx .h .man .o .gz
.c.o:
echo Compiling $<...
$(CC) $(ARCHFLAGS) $(OPTIM) $(ALL_CFLAGS) -c $<
.c.32.o:
echo Compiling 32-bit $<...
$(CC) $(ARCH32FLAGS) $(OPTIM) $(ALL_CFLAGS) -c -o $@ $<
.c.64.o:
echo Compiling 64-bit $<...
$(CC) $(ARCH64FLAGS) $(OPTIM) $(ALL_CFLAGS) -c -o $@ $<
$(CC) $(ARCHFLAGS) $(OPTIM) $(ALL_CFLAGS) -c -o $@ $<
.cxx.o:
echo Compiling $<...
$(CXX) $(ARCHFLAGS) $(OPTIM) $(CXXFLAGS) -c $<
$(CXX) $(ARCHFLAGS) $(OPTIM) $(ALL_CXXFLAGS) -c -o $@ $<
.man.1 .man.1m .man.5 .man.7 .man.8:
.man.1 .man.1m .man.3 .man.5 .man.7 .man.8:
echo Linking $<...
$(RM) $@
$(LN) $< $@
.man.1.gz .man.1m.gz .man.5.gz .man.7.gz .man.8.gz .man.gz:
.man.1.gz .man.1m.gz .man.3.gz .man.5.gz .man.7.gz .man.8.gz .man.gz:
echo -n Compressing $<...
$(RM) $@
gzip -v9 <$< >$@
#
# End of "$Id$"
#
+207 -157
Ver Arquivo
@@ -1,28 +1,24 @@
#
# "$Id$"
# Top-level Makefile for CUPS.
#
# Top-level Makefile for the Common UNIX Printing System (CUPS).
# Copyright 2007-2016 by Apple Inc.
# Copyright 1997-2007 by Easy Software Products, all rights reserved.
#
# Copyright 2007 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
# file is missing or damaged, see the license at "http://www.cups.org/".
# These coded instructions, statements, and computer programs are the
# property of Apple Inc. and are protected by Federal copyright
# law. Distribution and use rights are outlined in the file "LICENSE.txt"
# which should have been included with this file. If this file is
# file is missing or damaged, see the license at "http://www.cups.org/".
#
include Makedefs
#
# Directories to make...
#
DIRS = cups backend berkeley cgi-bin filter locale man monitor \
notifier $(PDFTOPS) scheduler systemv test \
$(PHPDIR) \
conf data doc $(FONTS) ppd templates
DIRS = cups test $(BUILDDIRS)
#
@@ -31,9 +27,55 @@ DIRS = cups backend berkeley cgi-bin filter locale man monitor \
all:
chmod +x cups-config
echo Using ARCHFLAGS="$(ARCHFLAGS)"
echo Using ALL_CFLAGS="$(ALL_CFLAGS)"
echo Using ALL_CXXFLAGS="$(ALL_CXXFLAGS)"
echo Using CC="$(CC)"
echo Using CXX="$(CC)"
echo Using DSOFLAGS="$(DSOFLAGS)"
echo Using LDFLAGS="$(LDFLAGS)"
echo Using LIBS="$(LIBS)"
for dir in $(DIRS); do\
echo Making all in $$dir... ;\
(cd $$dir ; $(MAKE) $(MFLAGS)) || exit 1;\
(cd $$dir ; $(MAKE) $(MFLAGS) all $(UNITTESTS)) || exit 1;\
done
#
# Make library targets...
#
libs:
echo Using ARCHFLAGS="$(ARCHFLAGS)"
echo Using ALL_CFLAGS="$(ALL_CFLAGS)"
echo Using ALL_CXXFLAGS="$(ALL_CXXFLAGS)"
echo Using CC="$(CC)"
echo Using CXX="$(CC)"
echo Using DSOFLAGS="$(DSOFLAGS)"
echo Using LDFLAGS="$(LDFLAGS)"
echo Using LIBS="$(LIBS)"
for dir in $(DIRS); do\
echo Making libraries in $$dir... ;\
(cd $$dir ; $(MAKE) $(MFLAGS) libs) || exit 1;\
done
#
# Make unit test targets...
#
unittests:
echo Using ARCHFLAGS="$(ARCHFLAGS)"
echo Using ALL_CFLAGS="$(ALL_CFLAGS)"
echo Using ALL_CXXFLAGS="$(ALL_CXXFLAGS)"
echo Using CC="$(CC)"
echo Using CXX="$(CC)"
echo Using DSOFLAGS="$(DSOFLAGS)"
echo Using LDFLAGS="$(LDFLAGS)"
echo Using LIBS="$(LIBS)"
for dir in $(DIRS); do\
echo Making all in $$dir... ;\
(cd $$dir ; $(MAKE) $(MFLAGS) unittests) || exit 1;\
done
@@ -54,19 +96,18 @@ clean:
distclean: clean
$(RM) Makedefs config.h config.log config.status
$(RM) cups-config conf/cupsd.conf conf/pam.std
$(RM) doc/help/ref-cupsd-conf.html doc/help/standard.html
$(RM) conf/cups-files.conf conf/cupsd.conf conf/mime.convs conf/pam.std conf/snmp.conf
$(RM) cups-config
$(RM) data/testprint
$(RM) desktop/cups.desktop
$(RM) doc/index.html
$(RM) init/cups.sh init/cups-lpd
$(RM) man/client.conf.man
$(RM) man/cups-deviced.man man/cups-driverd.man
$(RM) man/cups-lpd.man man/cupsaddsmb.man man/cupsd.man
$(RM) man/cupsd.conf.man man/lpoptions.man
$(RM) 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
$(RM) packaging/cups.list
$(RM) scheduler/cups-lpd.xinetd scheduler/cups.sh scheduler/cups.xml scheduler/org.cups.cups-lpd.plist scheduler/org.cups.cups-lpdAT.service scheduler/org.cups.cupsd.path scheduler/org.cups.cupsd.service scheduler/org.cups.cupsd.socket
$(RM) templates/header.tmpl
-$(RM) doc/*/index.html
-$(RM) templates/*/header.tmpl
-$(RM) -r autom4te*.cache
-$(RM) -r autom4te*.cache clang cups/charmaps cups/locale
#
@@ -80,6 +121,45 @@ depend:
done
#
# Run the Clang static code analysis tool on the sources, available here:
#
# http://clang-analyzer.llvm.org
#
# 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:
$(RM) -r clang
scan-build -V -k -o `pwd`/clang $(MAKE) $(MFLAGS) clean all
clang-changes:
scan-build -V -k -o `pwd`/clang $(MAKE) $(MFLAGS) all
#
# Run the STACK tool on the sources, available here:
#
# http://css.csail.mit.edu/stack/
#
# Do the following to pass options to configure:
#
# make CONFIGFLAGS="--foo --bar" stack
#
.PHONY: stack
stack:
stack-build ./configure $(CONFIGFLAGS)
stack-build $(MAKE) $(MFLAGS) clean all
poptck
$(MAKE) $(MFLAGS) distclean
$(RM) */*.ll
$(RM) */*.ll.out
#
# Generate a ctags file...
#
@@ -89,97 +169,64 @@ ctags:
#
# Install object and target files...
# Install everything...
#
install: installhdrs
install: install-data install-headers install-libs install-exec
#
# Install data files...
#
install-data:
echo Making all in cups...
(cd cups; $(MAKE) $(MFLAGS) all)
for dir in $(DIRS); do\
echo Installing in $$dir... ;\
(cd $$dir; $(MAKE) $(MFLAGS) install) || exit 1;\
echo Installing data files in $$dir... ;\
(cd $$dir; $(MAKE) $(MFLAGS) install-data) || exit 1;\
done
echo Installing cups-config script...
$(INSTALL_DIR) -m 755 $(BINDIR)
$(INSTALL_SCRIPT) cups-config $(BINDIR)/cups-config
if test "x$(INITDIR)" != x; then \
echo Installing init scripts...; \
$(INSTALL_DIR) -m 755 $(BUILDROOT)$(INITDIR)/init.d; \
$(INSTALL_SCRIPT) init/cups.sh $(BUILDROOT)$(INITDIR)/init.d/cups; \
for level in $(RCLEVELS); do \
$(INSTALL_DIR) -m 755 $(BUILDROOT)$(INITDIR)/rc$${level}.d; \
$(LN) ../init.d/cups $(BUILDROOT)$(INITDIR)/rc$${level}.d/S$(RCSTART)cups; \
if test `uname` = HP-UX; then \
level=`expr $$level - 1`; \
$(INSTALL_DIR) -m 755 $(BUILDROOT)$(INITDIR)/rc$${level}.d; \
fi; \
$(LN) ../init.d/cups $(BUILDROOT)$(INITDIR)/rc$${level}.d/K$(RCSTOP)cups; \
done; \
$(INSTALL_DIR) -m 755 $(BUILDROOT)$(INITDIR)/rc0.d; \
$(LN) ../init.d/cups $(BUILDROOT)$(INITDIR)/rc0.d/K$(RCSTOP)cups; \
fi
if test "x$(INITDIR)" = x -a "x$(INITDDIR)" != x; then \
$(INSTALL_DIR) $(BUILDROOT)$(INITDDIR); \
if test "$(INITDDIR)" = "/System/Library/StartupItems/PrintingServices"; then \
echo Installing StartupItems files...; \
$(INSTALL_SCRIPT) init/PrintingServices $(BUILDROOT)$(INITDDIR)/PrintingServices; \
$(INSTALL_DATA) init/StartupParameters.plist $(BUILDROOT)$(INITDDIR)/StartupParameters.plist; \
$(INSTALL_DIR) $(BUILDROOT)$(INITDDIR)/Resources/English.lproj; \
$(INSTALL_DATA) init/Localizable.strings $(BUILDROOT)$(INITDDIR)/Resources/English.lproj/Localizable.strings; \
elif test "$(INITDDIR)" = "/System/Library/LaunchDaemons"; then \
echo Installing LaunchDaemons configuration files...; \
$(INSTALL_DATA) init/org.cups.cupsd.plist $(BUILDROOT)$(DEFAULT_LAUNCHD_CONF); \
$(INSTALL_DATA) init/org.cups.cups-lpd.plist $(BUILDROOT)/System/Library/LaunchDaemons; \
case `uname -r` in \
8.*) \
$(INSTALL_DIR) $(BUILDROOT)/System/Library/StartupItems/PrintingServices; \
$(INSTALL_SCRIPT) init/PrintingServices.launchd $(BUILDROOT)/System/Library/StartupItems/PrintingServices/PrintingServices; \
$(INSTALL_DATA) init/StartupParameters.plist $(BUILDROOT)/System/Library/StartupItems/PrintingServices/StartupParameters.plist; \
$(INSTALL_DIR) $(BUILDROOT)/System/Library/StartupItems/PrintingServices/Resources/English.lproj; \
$(INSTALL_DATA) init/Localizable.strings $(BUILDROOT)/System/Library/StartupItems/PrintingServices/Resources/English.lproj/Localizable.strings; \
;; \
esac \
else \
echo Installing RC script...; \
$(INSTALL_SCRIPT) init/cups.sh $(BUILDROOT)$(INITDDIR)/cups; \
fi \
fi
if test "x$(DBUSDIR)" != x; then \
echo Installing cups.conf in $(DBUSDIR)...;\
$(INSTALL_DIR) -m 755 $(BUILDROOT)$(DBUSDIR)/system.d; \
$(INSTALL_DATA) packaging/cups-dbus.conf $(BUILDROOT)$(DBUSDIR)/system.d/cups.conf; \
fi
if test "x$(XINETD)" != x; then \
echo Installing xinetd configuration file for cups-lpd...; \
$(INSTALL_DIR) -m 755 $(BUILDROOT)$(XINETD); \
$(INSTALL_DATA) init/cups-lpd $(BUILDROOT)$(XINETD)/cups-lpd; \
fi
if test "x$(MENUDIR)" != x; then \
echo Installing desktop menu...; \
$(INSTALL_DIR) -m 755 $(BUILDROOT)$(MENUDIR); \
$(INSTALL_DATA) desktop/cups.desktop $(BUILDROOT)$(MENUDIR); \
fi
if test "x$(ICONDIR)" != x; then \
echo Installing desktop icons...; \
$(INSTALL_DIR) -m 755 $(BUILDROOT)$(ICONDIR)/hicolor/16x16/apps; \
$(INSTALL_DATA) desktop/cups-16.png $(BUILDROOT)$(ICONDIR)/hicolor/16x16/apps/cups.png; \
$(INSTALL_DIR) -m 755 $(BUILDROOT)$(ICONDIR)/hicolor/32x32/apps; \
$(INSTALL_DATA) desktop/cups-32.png $(BUILDROOT)$(ICONDIR)/hicolor/32x32/apps/cups.png; \
$(INSTALL_DIR) -m 755 $(BUILDROOT)$(ICONDIR)/hicolor/64x64/apps; \
$(INSTALL_DATA) desktop/cups-64.png $(BUILDROOT)$(ICONDIR)/hicolor/64x64/apps/cups.png; \
$(INSTALL_DIR) -m 755 $(BUILDROOT)$(ICONDIR)/hicolor/128x128/apps; \
$(INSTALL_DATA) desktop/cups-128.png $(BUILDROOT)$(ICONDIR)/hicolor/128x128/apps/cups.png; \
#
# Install header files...
#
install-headers:
for dir in $(DIRS); do\
echo Installing header files in $$dir... ;\
(cd $$dir; $(MAKE) $(MFLAGS) install-headers) || exit 1;\
done
if test "x$(privateinclude)" != x; then \
echo Installing config.h into $(PRIVATEINCLUDE)...; \
$(INSTALL_DIR) -m 755 $(PRIVATEINCLUDE); \
$(INSTALL_DATA) config.h $(PRIVATEINCLUDE)/config.h; \
fi
#
# Install source and header files...
# Install programs...
#
installsrc:
gnutar --dereference --exclude=.svn -cf - . | gnutar -C $(SRCROOT) -xf -
install-exec: all
for dir in $(DIRS); do\
echo Installing programs in $$dir... ;\
(cd $$dir; $(MAKE) $(MFLAGS) install-exec) || exit 1;\
done
installhdrs:
(cd cups ; $(MAKE) $(MFLAGS) installhdrs) || exit 1;\
(cd filter ; $(MAKE) $(MFLAGS) installhdrs) || exit 1;
#
# Install libraries...
#
install-libs: libs
for dir in $(DIRS); do\
echo Installing libraries in $$dir... ;\
(cd $$dir; $(MAKE) $(MFLAGS) install-libs) || exit 1;\
done
#
@@ -194,92 +241,95 @@ uninstall:
echo Uninstalling cups-config script...
$(RM) $(BINDIR)/cups-config
-$(RMDIR) $(BINDIR)
echo Uninstalling startup script...
if test "x$(INITDIR)" != x; then \
$(RM) $(BUILDROOT)$(INITDIR)/init.d/cups; \
$(RMDIR) $(BUILDROOT)$(INITDIR)/init.d; \
$(RM) $(BUILDROOT)$(INITDIR)/rc0.d/K00cups; \
$(RMDIR) $(BUILDROOT)$(INITDIR)/rc0.d; \
$(RM) $(BUILDROOT)$(INITDIR)/rc2.d/S99cups; \
$(RMDIR) $(BUILDROOT)$(INITDIR)/rc2.d; \
$(RM) $(BUILDROOT)$(INITDIR)/rc3.d/S99cups; \
$(RMDIR) $(BUILDROOT)$(INITDIR)/rc3.d; \
$(RM) $(BUILDROOT)$(INITDIR)/rc5.d/S99cups; \
$(RMDIR) $(BUILDROOT)$(INITDIR)/rc5.d; \
fi
if test "x$(INITDIR)" = x -a "x$(INITDDIR)" != x; then \
if test "$(INITDDIR)" = "/System/Library/StartupItems/PrintingServices"; then \
$(RM) $(BUILDROOT)$(INITDDIR)/PrintingServices; \
$(RM) $(BUILDROOT)$(INITDDIR)/StartupParameters.plist; \
$(RM) $(BUILDROOT)$(INITDDIR)/Resources/English.lproj/Localizable.strings; \
$(RMDIR) $(BUILDROOT)$(INITDDIR)/Resources/English.lproj; \
elif test "$(INITDDIR)" = "/System/Library/LaunchDaemons"; then \
$(RM) $(BUILDROOT)$(INITDDIR)/org.cups.cupsd.plist; \
$(RM) $(BUILDROOT)$(INITDDIR)/org.cups.cups-lpd.plist; \
$(RMDIR) $(BUILDROOT)/System/Library/StartupItems/PrintingServices; \
else \
$(INSTALL_SCRIPT) init/cups.sh $(BUILDROOT)$(INITDDIR)/cups; \
fi \
$(RMDIR) $(BUILDROOT)$(INITDDIR); \
fi
if test "x$(DBUSDIR)" != x; then \
echo Uninstalling cups.conf in $(DBUSDIR)...;\
$(RM) $(BUILDROOT)$(DBUSDIR)/cups.conf; \
$(RMDIR) $(BUILDROOT)$(DBUSDIR); \
fi
$(RM) $(BUILDROOT)/etc/xinetd.d/cups-lpd
$(RM) $(BUILDROOT)/usr/share/applications/cups.desktop
$(RM) $(BUILDROOT)/usr/share/icons/hicolor/16x16/apps/cups.png
$(RM) $(BUILDROOT)/usr/share/icons/hicolor/32x32/apps/cups.png
$(RM) $(BUILDROOT)/usr/share/icons/hicolor/64x64/apps/cups.png
$(RM) $(BUILDROOT)/usr/share/icons/hicolor/128x128/apps/cups.png
#
# Run the test suite...
#
test: all
test: all unittests
echo Running CUPS test suite...
cd test; ./run-stp-tests.sh
check: all
check: all unittests
echo Running CUPS test suite with defaults...
cd test; ./run-stp-tests.sh 1 0 n
cd test; ./run-stp-tests.sh 1 0 n n
debugcheck: all unittests
echo Running CUPS test suite with debug printfs...
cd test; ./run-stp-tests.sh 1 0 n y
#
# Make software distributions using EPM (http://www.easysw.com/epm/)...
# Create HTML documentation using Mini-XML's mxmldoc (http://www.msweet.org/)...
#
apihelp:
for dir in cups filter; do\
echo Generating API help in $$dir... ;\
(cd $$dir; $(MAKE) $(MFLAGS) apihelp) || exit 1;\
done
#
# Create an Xcode docset using Mini-XML's mxmldoc (http://www.msweet.org/)...
#
docset: apihelp
echo Generating docset directory tree...
$(RM) -r org.cups.docset
mkdir -p org.cups.docset/Contents/Resources/Documentation/help
mkdir -p org.cups.docset/Contents/Resources/Documentation/images
cd man; $(MAKE) $(MFLAGS) html
cd doc; $(MAKE) $(MFLAGS) docset
cd cgi-bin; $(MAKE) $(MFLAGS) makedocset
cgi-bin/makedocset org.cups.docset \
`svnversion . | sed -e '1,$$s/[a-zA-Z]//g'` \
doc/help/api-*.tokens
$(RM) doc/help/api-*.tokens
echo Indexing docset...
/Applications/Xcode.app/Contents/Developer/usr/bin/docsetutil index org.cups.docset
echo Generating docset archive and feed...
$(RM) org.cups.docset.atom
/Applications/Xcode.app/Contents/Developer/usr/bin/docsetutil package --output org.cups.docset.xar \
--atom org.cups.docset.atom \
--download-url http://www.cups.org/org.cups.docset.xar \
org.cups.docset
#
# Lines of code computation...
#
sloc:
for dir in cups scheduler; do \
(cd $$dir; $(MAKE) $(MFLAGS) sloc) || exit 1;\
done
#
# Make software distributions using EPM (http://www.msweet.org/)...
#
EPMFLAGS = -v --output-dir dist $(EPMARCH)
aix bsd deb depot inst pkg setld slackware swinstall tardist:
bsd deb epm pkg rpm slackware:
epm $(EPMFLAGS) -f $@ cups packaging/cups.list
epm:
epm $(EPMFLAGS) -s packaging/installer.gif cups packaging/cups.list
osx:
epm $(EPMFLAGS) -f osx -s packaging/installer.tif 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;; \
IRIX*) $(MAKE) $(MFLAGS) tardist;; \
Linux*) $(MAKE) $(MFLAGS) rpm;; \
Linux*) test ! -x /usr/bin/rpm || $(MAKE) $(MFLAGS) rpm;; \
SunOS*) $(MAKE) $(MFLAGS) pkg;; \
esac
#
# End of "$Id$".
# Don't run top-level build targets in parallel...
#
.NOTPARALLEL:
+84 -106
Ver Arquivo
@@ -1,174 +1,152 @@
README - CUPS v1.3.2 - 2007-09-18
README - CUPS v2.2b2 - 2016-06-24
---------------------------------
Looking for compile instructions? Read the file "INSTALL.txt"
instead...
Looking for compile instructions? Read the file "INSTALL.txt" instead...
INTRODUCTION
CUPS provides a portable printing layer for UNIX(r)-based
operating systems. It was developed by Easy Software Products
and is now owned and maintained by Apple Inc. to promote a
standard printing solution for all UNIX vendors and users. CUPS
provides the System V and Berkeley command-line interfaces.
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!
CUPS uses the Internet Printing Protocol ("IPP") as the basis
for managing print jobs and queues. The Line Printer Daemon
("LPD") Server Message Block ("SMB"), and AppSocket (a.k.a.
JetDirect) protocols are also supported with reduced
functionality. CUPS adds network printer browsing and
PostScript Printer Description ("PPD") based printing options
to support real-world printing under UNIX.
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 includes an image file RIP that supports printing of
image files to non-PostScript printers. GPL Ghostscript now
includes the "cups" driver to support printing of PostScript
files within the CUPS driver framework. Sample drivers for
Dymo, EPSON, HP, OKIDATA, and Zebra printers are included that
use these filters.
CUPS is licensed under the GNU General Public License and GNU
Library General Public License versions 2.
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) on-line at:
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.
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 many discussion forums which are available at:
If you have problems, READ THE DOCUMENTATION FIRST! We also provide two
mailing lists which are available at:
http://www.cups.org/newsgroups.php
http://www.cups.org/lists.php
See the CUPS web site at "http://www.cups.org/" for other
site links.
See the CUPS web site at "http://www.cups.org/" for other resources.
SETTING UP PRINTER QUEUES USING YOUR WEB BROWSER
CUPS 1.3 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:
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.
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 group on your system)
when performing any administrative function.
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 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 File
----------------------------- ------------
Dymo Label Printers dymo.ppd
Intellitech Intellibar intelbar.ppd
EPSON Stylus Color Series stcolor.ppd
EPSON Stylus Photo Series stphoto.ppd
EPSON Stylus New Color Series stcolor2.ppd
EPSON Stylus New Photo Series stphoto2.ppd
EPSON 9-pin Series epson9.ppd
EPSON 24-pin Series epson24.ppd
HP DeskJet Series deskjet.ppd
HP LaserJet Series laserjet.ppd
OKIDATA 9-Pin Series okidata9.ppd
OKIDATA 24-Pin Series okidat24.ppd
Zebra CPCL Label Printer zebracpl.ppd
Zebra EPL1 Label Printer zebraep1.ppd
Zebra EPL2 Label Printer zebraep2.ppd
Zebra ZPL Label Printer zebra.ppd
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" command to list the available printers:
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:
Then use the correct URI to add the printer using the "lpadmin" command:
lpadmin -p printername -E -v URI -m filename.ppd
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 filename.ppd
lpadmin -p printername -E -v lpd://11.22.33.44/ -m filename.ppd
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.
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:
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:
Both the "lp" and "lpr" commands support printing options for the driver:
lp -omedia=A4 -oresolution=600dpi filename
lpr -omedia=A4 -oresolution=600dpi filename
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, HP-GL/2, and text files, so you can print those
files directly rather than through an application.
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:
If you have an application that generates output specifically for your
printer then you need to use the "-oraw" or "-l" options:
lp -oraw filename
lp -o raw filename
lpr -l filename
This will prevent the filters from misinterpreting your print
file.
This will prevent the filters from misinterpreting your print file.
LEGAL STUFF
CUPS is Copyright 2007 by Apple Inc. CUPS, the CUPS logo, and
the Common UNIX Printing System are the trademark property of
Apple Inc.
CUPS is Copyright 2007-2016 by Apple Inc. CUPS and the CUPS logo are
trademarks of Apple Inc.
The MD5 Digest code is Copyright 1999 Aladdin Enterprises.
The PDF filter (pdftops) is based on the Xpdf software,
Copyright 1996-2005 by Derek B. Noonburg.
This software is based in part on the work of the Independent
JPEG Group.
CUPS is provided under the terms 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.
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.
+72 -50
Ver Arquivo
@@ -1,50 +1,72 @@
# DO NOT DELETE THIS LINE -- make depend depends on it.
betest.o: betest.c ../cups/string.h ../config.h
ipp.o: ipp.c ../cups/http-private.h ../config.h ../cups/http.h \
../cups/md5.h ../cups/ipp-private.h ../cups/ipp.h ../cups/backend.h \
../cups/cups.h ../cups/ppd.h ../cups/array.h ../cups/file.h \
../cups/language.h ../cups/language.h ../cups/i18n.h \
../cups/transcode.h ../cups/string.h
lpd.o: lpd.c ../cups/backend.h ../cups/http-private.h ../config.h \
../cups/http.h ../cups/md5.h ../cups/ipp-private.h ../cups/ipp.h \
../cups/cups.h ../cups/ppd.h ../cups/array.h ../cups/file.h \
../cups/language.h ../cups/i18n.h ../cups/transcode.h ../cups/string.h
pap.o: pap.c ../config.h ../cups/cups.h ../cups/ipp.h ../cups/http.h \
../cups/ppd.h ../cups/array.h ../cups/file.h ../cups/language.h \
../cups/backend.h ../cups/sidechannel.h ../cups/i18n.h \
../cups/transcode.h
parallel.o: parallel.c backend-private.h ../cups/backend.h \
../cups/sidechannel.h ../cups/cups.h ../cups/ipp.h ../cups/http.h \
../cups/ppd.h ../cups/array.h ../cups/file.h ../cups/language.h \
../cups/debug.h ../cups/i18n.h ../cups/transcode.h ../cups/string.h \
../config.h
scsi.o: scsi.c ../cups/backend.h ../cups/cups.h ../cups/ipp.h \
../cups/http.h ../cups/ppd.h ../cups/array.h ../cups/file.h \
../cups/language.h ../cups/i18n.h ../cups/transcode.h ../cups/string.h \
../config.h scsi-linux.c
serial.o: serial.c backend-private.h ../cups/backend.h \
../cups/sidechannel.h ../cups/cups.h ../cups/ipp.h ../cups/http.h \
../cups/ppd.h ../cups/array.h ../cups/file.h ../cups/language.h \
../cups/debug.h ../cups/i18n.h ../cups/transcode.h ../cups/string.h \
../config.h
snmp.o: snmp.c ../cups/http-private.h ../config.h ../cups/http.h \
../cups/md5.h ../cups/ipp-private.h ../cups/ipp.h backend-private.h \
../cups/backend.h ../cups/sidechannel.h ../cups/cups.h ../cups/ppd.h \
../cups/array.h ../cups/file.h ../cups/language.h ../cups/debug.h \
../cups/i18n.h ../cups/transcode.h ../cups/string.h ../cups/array.h \
../cups/file.h
socket.o: socket.c ../cups/http-private.h ../config.h ../cups/http.h \
../cups/md5.h ../cups/ipp-private.h ../cups/ipp.h backend-private.h \
../cups/backend.h ../cups/sidechannel.h ../cups/cups.h ../cups/ppd.h \
../cups/array.h ../cups/file.h ../cups/language.h ../cups/debug.h \
../cups/i18n.h ../cups/transcode.h ../cups/string.h
test1284.o: test1284.c ../cups/string.h ../config.h ieee1284.c \
backend-private.h ../cups/backend.h ../cups/sidechannel.h \
../cups/cups.h ../cups/ipp.h ../cups/http.h ../cups/ppd.h \
../cups/array.h ../cups/file.h ../cups/language.h ../cups/debug.h \
../cups/i18n.h ../cups/transcode.h
usb.o: usb.c ../cups/backend.h ../cups/cups.h ../cups/ipp.h \
../cups/http.h ../cups/ppd.h ../cups/array.h ../cups/file.h \
../cups/language.h ../cups/string.h ../config.h ../cups/i18n.h \
../cups/transcode.h usb-unix.c ieee1284.c backend-private.h \
../cups/sidechannel.h ../cups/debug.h
ipp.o: ipp.c backend-private.h ../cups/cups-private.h \
../cups/string-private.h ../config.h ../cups/debug-private.h \
../cups/versioning.h ../cups/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
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
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
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
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
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
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 \
../cups/sidechannel.h
testsupplies.o: testsupplies.c backend-private.h ../cups/cups-private.h \
../cups/string-private.h ../config.h ../cups/debug-private.h \
../cups/versioning.h ../cups/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.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
+188 -93
Ver Arquivo
@@ -1,28 +1,63 @@
#
# "$Id$"
# Backend makefile for CUPS.
#
# Backend makefile for the Common UNIX Printing System (CUPS).
# Copyright 2007-2016 by Apple Inc.
# Copyright 1997-2007 by Easy Software Products, all rights reserved.
#
# Copyright 2007 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
# file is missing or damaged, see the license at "http://www.cups.org/".
#
# These coded instructions, statements, and computer programs are the
# property of Apple Inc. and are protected by Federal copyright
# law. Distribution and use rights are outlined in the file "LICENSE.txt"
# which should have been included with this file. If this file is
# file is missing or damaged, see the license at "http://www.cups.org/".
#
# This file is subject to the Apple OS-Developed Software exception.
# This file is subject to the Apple OS-Developed Software exception.
#
include ../Makedefs
RBACKENDS = ipp lpd
UBACKENDS = $(PAP) $(LEGACY_BACKENDS) serial snmp socket usb
TARGETS = betest test1284 libbackend.a $(RBACKENDS) $(UBACKENDS)
LIBOBJS = ieee1284.o runloop.o
OBJS = betest.o ipp.o lpd.o pap.o parallel.o scsi.o \
serial.o snmp.o socket.o test1284.o usb.o
#
# Object files...
#
# RBACKENDS are installed mode 0700 so cupsd will run them as root...
#
# UBACKENDS and ULBACKENDS are installed mode 0755 so cupsd will run them as
# an unprivileged user...
#
# See http://www.cups.org/documentation.php/api-filter.html for more info...
RBACKENDS = \
ipp \
lpd \
$(DNSSD_BACKEND)
UBACKENDS = \
snmp \
socket
ULBACKENDS = \
usb
UNITTESTS = \
test1284 \
testbackend \
testsupplies
TARGETS = \
libbackend.a \
$(RBACKENDS) \
$(UBACKENDS) \
$(ULBACKENDS)
LIBOBJS = \
ieee1284.o \
network.o \
runloop.o \
snmp-supplies.o
OBJS = \
ipp.o \
lpd.o \
dnssd.o \
snmp.o \
socket.o \
test1284.o \
testbackend.o \
testsupplies.o \
usb.o
#
@@ -32,12 +67,26 @@ OBJS = betest.o ipp.o lpd.o pap.o parallel.o scsi.o \
all: $(TARGETS)
#
# Make library targets...
#
libs: $(ULBACKENDS)
#
# Make unit tests...
#
unittests: $(UNITTESTS)
#
# Clean all object files...
#
clean:
$(RM) $(OBJS) $(TARGETS) $(LIBOBJS) http
$(RM) $(OBJS) $(TARGETS) $(UNITTESTS) $(LIBOBJS) http https ipps mdns socket-static
#
@@ -45,27 +94,89 @@ clean:
#
depend:
makedepend -Y -I.. -fDependencies $(OBJS:.o=.c) >/dev/null 2>&1
$(CC) -MM $(ALL_CFLAGS) $(OBJS:.o=.c) >Dependencies
#
# Install all targets...
#
install: all
install: all install-data install-headers install-libs install-exec
#
# Install data files...
#
install-data:
if test "x$(USBQUIRKS)" != x; then \
echo Installing USB quirks in $(USBQUIRKS); \
$(INSTALL_DIR) -m 755 $(USBQUIRKS); \
$(INSTALL_DATA) org.cups.usb-quirks $(USBQUIRKS); \
fi
#
# Install programs...
#
install-exec: $(INSTALLXPC)
echo Installing backends in $(SERVERBIN)/backend
$(INSTALL_DIR) -m 755 $(SERVERBIN)/backend
for file in $(RBACKENDS); do \
$(LIBTOOL) $(INSTALL) -m 700 $$file $(SERVERBIN)/backend; \
$(LIBTOOL) $(INSTALL_BIN) -m 700 $$file $(SERVERBIN)/backend; \
done
for file in $(UBACKENDS); do \
$(INSTALL_BIN) $$file $(SERVERBIN)/backend; \
done
$(RM) $(SERVERBIN)/backend/http
$(LN) ipp $(SERVERBIN)/backend/http
for file in $(IPPALIASES); do \
$(RM) $(SERVERBIN)/backend/$$file; \
$(LN) ipp $(SERVERBIN)/backend/$$file; \
done
if test "x$(DNSSD_BACKEND)" != x -a `uname` = Darwin; then \
$(RM) $(SERVERBIN)/backend/mdns; \
$(LN) $(DNSSD_BACKEND) $(SERVERBIN)/backend/mdns; \
fi
if test "x$(SYMROOT)" != "x"; then \
$(INSTALL_DIR) $(SYMROOT); \
for file in $(TARGETS); do \
for file in $(RBACKENDS) $(UBACKENDS); do \
cp $$file $(SYMROOT); \
dsymutil $(SYMROOT)/$$file; \
done \
fi
install-xpc: ipp
echo Installing XPC backends in $(SERVERBIN)/apple
$(INSTALL_DIR) -m 755 $(SERVERBIN)/apple
$(LIBTOOL) $(INSTALL_BIN) ipp $(SERVERBIN)/apple
for file in $(IPPALIASES); do \
$(RM) $(SERVERBIN)/apple/$$file; \
$(LN) ipp $(SERVERBIN)/apple/$$file; \
done
#
# Install headers...
#
install-headers:
#
# Install libraries...
#
install-libs:
echo Installing backends in $(SERVERBIN)/backend
$(INSTALL_DIR) -m 755 $(SERVERBIN)/backend
for file in $(ULBACKENDS); do \
$(INSTALL_BIN) $$file $(SERVERBIN)/backend; \
done
if test "x$(SYMROOT)" != "x"; then \
$(INSTALL_DIR) $(SYMROOT); \
for file in $(ULBACKENDS); do \
cp $$file $(SYMROOT); \
dsymutil $(SYMROOT)/$$file; \
done \
fi
@@ -75,31 +186,50 @@ install: all
#
uninstall:
for file in $(RBACKENDS) $(UBACKENDS); do \
$(RM) $(SERVERBIN)/apple/ipp
for file in $(IPPALIASES); do \
$(RM) $(SERVERBIN)/apple/$$file; \
done
-$(RMDIR) $(SERVERBIN)/apple
for file in $(RBACKENDS) $(UBACKENDS) $(ULBACKENDS); do \
$(RM) $(SERVERBIN)/backend/$$file; \
done
for file in $(IPPALIASES); do \
$(RM) $(SERVERBIN)/backend/$$file; \
done
$(RM) $(SERVERBIN)/backend/http
-$(RMDIR) $(SERVERBIN)/backend
-$(RMDIR) $(SERVERBIN)
#
# betest
#
betest: betest.o ../cups/$(LIBCUPS)
echo Linking $@...
$(CC) $(LDFLAGS) -o betest betest.o $(LIBS)
#
# test1284
#
test1284: test1284.o ../cups/libcups.a
test1284: test1284.o ../cups/$(LIBCUPSSTATIC)
echo Linking $@...
$(CC) $(LDFLAGS) -o test1284 test1284.o ../cups/libcups.a \
$(SSLLIBS) $(COMMONLIBS) $(LIBZ)
$(CC) $(LDFLAGS) -o test1284 test1284.o ../cups/$(LIBCUPSSTATIC) \
$(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) $(COMMONLIBS) $(LIBZ)
#
# testbackend
#
testbackend: testbackend.o ../cups/$(LIBCUPSSTATIC)
echo Linking $@...
$(CC) $(LDFLAGS) -o testbackend testbackend.o ../cups/$(LIBCUPSSTATIC) \
$(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) $(COMMONLIBS) $(LIBZ)
#
# testsupplies
#
testsupplies: testsupplies.o libbackend.a ../cups/$(LIBCUPSSTATIC)
echo Linking $@...
$(CC) $(LDFLAGS) -o testsupplies testsupplies.o libbackend.a \
../cups/$(LIBCUPSSTATIC) $(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) \
$(COMMONLIBS) $(LIBZ)
#
@@ -114,24 +244,25 @@ libbackend.a: $(LIBOBJS)
#
# ieee1394
# dnssd
#
ieee1394: ieee1394.o ieee1394-linux.o
dnssd: dnssd.o ../cups/$(LIBCUPS) libbackend.a
echo Linking $@...
$(CC) $(LDFLAGS) -o ieee1394 ieee1394.o ieee1394-linux.o -lraw1394 $(LIBS)
ieee1394.o: ieee1394.h
ieee1394-linux.o: ieee1394.h
$(CC) $(LDFLAGS) -o dnssd dnssd.o libbackend.a $(LIBS)
if test `uname` = Darwin; then \
$(RM) mdns; \
$(LN) dnssd mdns; \
fi
#
# ipp
#
ipp: ipp.o ../cups/$(LIBCUPS)
ipp: ipp.o ../cups/$(LIBCUPS) libbackend.a
echo Linking $@...
$(CC) $(LDFLAGS) -o ipp ipp.o $(LIBS)
$(CC) $(LDFLAGS) -o ipp ipp.o libbackend.a $(LIBS)
$(RM) http
$(LN) ipp http
@@ -140,47 +271,9 @@ ipp: ipp.o ../cups/$(LIBCUPS)
# lpd
#
lpd: lpd.o ../cups/$(LIBCUPS)
lpd: lpd.o ../cups/$(LIBCUPS) libbackend.a
echo Linking $@...
$(CC) $(LDFLAGS) -o lpd lpd.o $(LIBS)
#
# pap
#
pap: pap.o ../cups/$(LIBCUPS)
echo Linking $@...
$(CC) $(LDFLAGS) -o pap pap.o $(BACKLIBS) $(LIBS) -framework AppleTalk
#
# parallel
#
parallel: parallel.o ../cups/$(LIBCUPS) libbackend.a
echo Linking $@...
$(CC) $(LDFLAGS) -o parallel parallel.o libbackend.a $(LIBS)
#
# scsi
#
scsi: scsi.o ../cups/$(LIBCUPS)
echo Linking $@...
$(CC) $(LDFLAGS) -o scsi scsi.o $(LIBS)
scsi.o: scsi.c scsi-irix.c scsi-linux.c
#
# serial
#
serial: serial.o ../cups/$(LIBCUPS) libbackend.a
echo Linking $@...
$(CC) $(LDFLAGS) -o serial serial.o libbackend.a $(BACKLIBS) $(LIBS)
$(CC) $(LDFLAGS) -o lpd lpd.o libbackend.a $(LIBS)
#
@@ -200,6 +293,12 @@ 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
@@ -207,8 +306,9 @@ socket: socket.o ../cups/$(LIBCUPS) libbackend.a
usb: usb.o ../cups/$(LIBCUPS) libbackend.a
echo Linking $@...
$(CC) $(LDFLAGS) -o usb usb.o libbackend.a $(BACKLIBS) $(LIBS)
usb.o: usb.c usb-darwin.c usb-unix.c
$(CC) $(ARCHFLAGS) $(LDFLAGS) -o usb usb.o libbackend.a $(LIBUSB) \
$(BACKLIBS) $(LIBS)
usb.o: usb.c usb-darwin.c usb-libusb.c usb-unix.c
#
@@ -216,8 +316,3 @@ usb.o: usb.c usb-darwin.c usb-unix.c
#
include Dependencies
#
# End of "$Id$".
#
+293 -31
Ver Arquivo
@@ -1,18 +1,16 @@
/*
* "$Id$"
* Backend support definitions for CUPS.
*
* Backend support definitions for the Common UNIX Printing System (CUPS).
* Copyright 2007-2014 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
*
* Copyright 2007 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
* "LICENSE" which should have been included with this file. If this
* file is missing or damaged, see the license at "http://www.cups.org/".
*
* 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.
* This file is subject to the Apple OS-Developed Software exception.
*/
#ifndef _CUPS_BACKEND_PRIVATE_H_
@@ -23,16 +21,32 @@
* Include necessary headers.
*/
# include <cups/cups-private.h>
# include <cups/snmp-private.h>
# include <cups/backend.h>
# include <cups/sidechannel.h>
# include <cups/cups.h>
# include <cups/debug.h>
# include <cups/i18n.h>
# include <stdlib.h>
# include <errno.h>
# include <cups/string.h>
# include <signal.h>
# ifdef __linux
# include <sys/ioctl.h>
# include <linux/lp.h>
# define IOCNR_GET_DEVICE_ID 1
# define LPIOC_GET_DEVICE_ID(len) _IOC(_IOC_READ, 'P', IOCNR_GET_DEVICE_ID, len)
# include <linux/parport.h>
# include <linux/ppdev.h>
# include <unistd.h>
# include <fcntl.h>
# endif /* __linux */
# ifdef __sun
# ifdef __sparc
# include <sys/ecppio.h>
# else
# include <sys/ioccom.h>
# include <sys/ecppsys.h>
# endif /* __sparc */
# endif /* __sun */
/*
* C++ magic...
@@ -43,27 +57,275 @@ extern "C" {
# endif /* __cplusplus */
/*
* OID constants...
*/
/* Host MIB */
#define CUPS_OID_mib2 1,3,6,1,2,1
#define CUPS_OID_system CUPS_OID_mib2,1
#define CUPS_OID_sysLocation CUPS_OID_system,6
#define CUPS_OID_host CUPS_OID_mib2,25
#define CUPS_OID_hrSystem CUPS_OID_host,1
#define CUPS_OID_hrStorage CUPS_OID_host,2
#define CUPS_OID_hrDevice CUPS_OID_host,3
#define CUPS_OID_hrDeviceTable CUPS_OID_hrDevice,2
#define CUPS_OID_hrDeviceEntry CUPS_OID_hrDeviceTable,1
#define CUPS_OID_hrDeviceIndex CUPS_OID_hrDeviceEntry,1
#define CUPS_OID_hrDeviceType CUPS_OID_hrDeviceEntry,2
#define CUPS_OID_hrDeviceDescr CUPS_OID_hrDeviceEntry,3
#define CUPS_OID_hrPrinterTable CUPS_OID_hrDevice,5
#define CUPS_OID_hrPrinterEntry CUPS_OID_hrPrinterTable,1
#define CUPS_OID_hrPrinterStatus CUPS_OID_hrPrinterEntry,1
#define CUPS_OID_hrPrinterDetectedErrorState CUPS_OID_hrPrinterEntry,2
/* Printer MIB */
#define CUPS_OID_printmib CUPS_OID_mib2,43
#define CUPS_OID_prtGeneral CUPS_OID_printmib,5
#define CUPS_OID_prtGeneralTable CUPS_OID_prtGeneral,1
#define CUPS_OID_prtGeneralEntry CUPS_OID_prtGeneralTable,1
#define CUPS_OID_prtGeneralCurrentLocalization CUPS_OID_prtGeneralEntry,2
#define CUPS_OID_prtGeneralPrinterName CUPS_OID_prtGeneralEntry,16
#define CUPS_OID_prtGeneralSerialNumber CUPS_OID_prtGeneralEntry,17
#define CUPS_OID_prtCover CUPS_OID_printmib,6
#define CUPS_OID_prtCoverTable CUPS_OID_prtCover,1
#define CUPS_OID_prtCoverEntry CUPS_OID_prtCoverTable,1
#define CUPS_OID_prtCoverDescription CUPS_OID_prtCoverEntry,2
#define CUPS_OID_prtCoverStatus CUPS_OID_prtCoverEntry,3
#define CUPS_OID_prtLocalization CUPS_OID_printmib,7
#define CUPS_OID_prtLocalizationTable CUPS_OID_prtLocalization,1
#define CUPS_OID_prtLocalizationEntry CUPS_OID_prtLocalizationTable,1
#define CUPS_OID_prtLocalizationCharacterSet CUPS_OID_prtLocalizationEntry,4
#define CUPS_OID_prtMarker CUPS_OID_printmib,10
#define CUPS_OID_prtMarkerTable CUPS_OID_prtMarker,2
#define CUPS_OID_prtMarkerEntry CUPS_OID_prtMarkerTable,1
#define CUPS_OID_prtMarkerLifeCount CUPS_OID_prtMarkerEntry,4
#define CUPS_OID_prtMarkerSupplies CUPS_OID_printmib,11
#define CUPS_OID_prtMarkerSuppliesTable CUPS_OID_prtMarkerSupplies,1
#define CUPS_OID_prtMarkerSuppliesEntry CUPS_OID_prtMarkerSuppliesTable,1
#define CUPS_OID_prtMarkerSuppliesIndex CUPS_OID_prtMarkerSuppliesEntry,1
#define CUPS_OID_prtMarkerSuppliesMarkerIndex CUPS_OID_prtMarkerSuppliesEntry,2
#define CUPS_OID_prtMarkerSuppliesColorantIndex CUPS_OID_prtMarkerSuppliesEntry,3
#define CUPS_OID_prtMarkerSuppliesClass CUPS_OID_prtMarkerSuppliesEntry,4
#define CUPS_OID_prtMarkerSuppliesType CUPS_OID_prtMarkerSuppliesEntry,5
#define CUPS_OID_prtMarkerSuppliesDescription CUPS_OID_prtMarkerSuppliesEntry,6
#define CUPS_OID_prtMarkerSuppliesSupplyUnit CUPS_OID_prtMarkerSuppliesEntry,7
#define CUPS_OID_prtMarkerSuppliesMaxCapacity CUPS_OID_prtMarkerSuppliesEntry,8
#define CUPS_OID_prtMarkerSuppliesLevel CUPS_OID_prtMarkerSuppliesEntry,9
#define CUPS_OID_prtMarkerColorant CUPS_OID_printmib,12
#define CUPS_OID_prtMarkerColorantTable CUPS_OID_prtMarkerColorant,1
#define CUPS_OID_prtMarkerColorantEntry CUPS_OID_prtMarkerColorantTable,1
#define CUPS_OID_prtMarkerColorantIndex CUPS_OID_prtMarkerColorantEntry,1
#define CUPS_OID_prtMarkerColorantMarkerIndex CUPS_OID_prtMarkerColorantEntry,2
#define CUPS_OID_prtMarkerColorantRole CUPS_OID_prtMarkerColorantEntry,3
#define CUPS_OID_prtMarkerColorantValue CUPS_OID_prtMarkerColorantEntry,4
#define CUPS_OID_prtMarkerColorantTonality CUPS_OID_prtMarkerColorantEntry,5
#define CUPS_OID_prtInterpreter CUPS_OID_printmib,15
#define CUPS_OID_prtInterpreterTable CUPS_OID_prtInterpreter,1
#define CUPS_OID_prtInterpreterEntry CUPS_OID_prtInterpreterTable,1
#define CUPS_OID_prtInterpreterLangFamily CUPS_OID_prtInterpreterEntry,2
#define CUPS_OID_prtInterpreterLangLevel CUPS_OID_prtInterpreterEntry,3
/* Printer Port Monitor MIB */
#define CUPS_OID_enterprises 1,3,6,1,4,1
#define CUPS_OID_pwg CUPS_OID_enterprises,2699,1
#define CUPS_OID_ppmMIB CUPS_OID_pwg,2
#define CUPS_OID_ppmMIBObjects CUPS_OID_ppmMIB,1
#define CUPS_OID_ppmGeneral CUPS_OID_ppmMIBObjects,1
#define CUPS_OID_ppmPrinter CUPS_OID_ppmMIBObjects,2
#define CUPS_OID_ppmPrinterTable CUPS_OID_ppmPrinter,1
#define CUPS_OID_ppmPrinterEntry CUPS_OID_ppmPrinterTable,1
#define CUPS_OID_ppmPrinterIndex CUPS_OID_ppmPrinterEntry,1
#define CUPS_OID_ppmPrinterName CUPS_OID_ppmPrinterEntry,2
#define CUPS_OID_ppmPrinterIEEE1284DeviceId CUPS_OID_ppmPrinterEntry,3
#define CUPS_OID_ppmPrinterNumberOfPorts CUPS_OID_ppmPrinterEntry,4
#define CUPS_OID_ppmPrinterPreferredPortIndex CUPS_OID_ppmPrinterEntry,5
#define CUPS_OID_ppmPrinterHrDeviceIndex CUPS_OID_ppmPrinterEntry,6
#define CUPS_OID_ppmPrinterSnmpCommunityName CUPS_OID_ppmPrinterEntry,7
#define CUPS_OID_ppmPrinterSnmpQueryEnabled CUPS_OID_ppmPrinterEntry,8
#define CUPS_OID_ppmPort CUPS_OID_ppmMIBObjects,3
#define CUPS_OID_ppmPortTable CUPS_OID_ppmPort,1
#define CUPS_OID_ppmPortEntry CUPS_OID_ppmPortTable,1
#define CUPS_OID_ppmPortIndex CUPS_OID_ppmPortEntry,1
#define CUPS_OID_ppmPortEnabled CUPS_OID_ppmPortEntry,2
#define CUPS_OID_ppmPortName CUPS_OID_ppmPortEntry,3
#define CUPS_OID_ppmPortServiceNameOrURI CUPS_OID_ppmPortEntry,4
#define CUPS_OID_ppmPortProtocolType CUPS_OID_ppmPortEntry,5
#define CUPS_OID_ppmPortProtocolTargetPort CUPS_OID_ppmPortEntry,6
#define CUPS_OID_ppmPortProtocolAltSourceEnabled CUPS_OID_ppmPortEntry,7
#define CUPS_OID_ppmPortPrtChannelIndex CUPS_OID_ppmPortEntry,8
#define CUPS_OID_ppmPortLprByteCountEnabled CUPS_OID_ppmPortEntry,9
/*
* State constants...
*/
#define CUPS_TC_other 1
#define CUPS_TC_unknown 2
#define CUPS_TC_idle 3
#define CUPS_TC_printing 4
#define CUPS_TC_warmup 5
/* These come from the hrPrinterDetectedErrorState OCTET-STRING */
#define CUPS_TC_lowPaper 0x8000
#define CUPS_TC_noPaper 0x4000
#define CUPS_TC_lowToner 0x2000
#define CUPS_TC_noToner 0x1000
#define CUPS_TC_doorOpen 0x0800
#define CUPS_TC_jammed 0x0400
#define CUPS_TC_offline 0x0200
#define CUPS_TC_serviceRequested 0x0100
#define CUPS_TC_inputTrayMissing 0x0080
#define CUPS_TC_outputTrayMissing 0x0040
#define CUPS_TC_markerSupplyMissing 0x0020
#define CUPS_TC_outputNearFull 0x0010
#define CUPS_TC_outputFull 0x0008
#define CUPS_TC_inputTrayEmpty 0x0004
#define CUPS_TC_overduePreventMaint 0x0002
#define CUPS_TC_prtCoverStatus_coverOpen 3
#define CUPS_TC_prtCoverStatus_coverClosed 4
#define CUPS_TC_prtCoverStatus_interlockOpen 5
#define CUPS_TC_prtCoverStatus_interlockClosed 6
#define CUPS_TC_langPCL 3
#define CUPS_TC_langHPGL 4
#define CUPS_TC_langPJL 5
#define CUPS_TC_langPS 6
#define CUPS_TC_langEscapeP 9
#define CUPS_TC_langCCITT 26
#define CUPS_TC_langLIPS 39
#define CUPS_TC_langTIFF 40
#define CUPS_TC_langPCLXL 47
#define CUPS_TC_langPDF 54
#define CUPS_TC_langJPEG 61
#define CUPS_TC_supplyThatIsConsumed 3
#define CUPS_TC_receptacleThatIsFilled 4
#define CUPS_TC_process 3
#define CUPS_TC_spot 4
#define CUPS_TC_toner 3
#define CUPS_TC_wasteToner 4
#define CUPS_TC_ink 5
#define CUPS_TC_inkCartridge 6
#define CUPS_TC_inkRibbon 7
#define CUPS_TC_wasteInk 8
#define CUPS_TC_opc 9
#define CUPS_TC_developer 10
#define CUPS_TC_fuserOil 11
#define CUPS_TC_solidWax 12
#define CUPS_TC_ribbonWax 13
#define CUPS_TC_wasteWax 14
#define CUPS_TC_fuser 15
#define CUPS_TC_coronaWire 16
#define CUPS_TC_fuserOilWick 17
#define CUPS_TC_cleanerUnit 18
#define CUPS_TC_fuserCleaningPad 19
#define CUPS_TC_transferUnit 20
#define CUPS_TC_tonerCartridge 21
#define CUPS_TC_fuserOiler 22
#define CUPS_TC_water 23
#define CUPS_TC_wasteWater 24
#define CUPS_TC_glueWaterAdditive 25
#define CUPS_TC_wastePaper 26
#define CUPS_TC_bindingSupply 27
#define CUPS_TC_bandingSupply 28
#define CUPS_TC_stitchingWire 29
#define CUPS_TC_shrinkWrap 30
#define CUPS_TC_paperWrap 31
#define CUPS_TC_staples 32
#define CUPS_TC_inserts 33
#define CUPS_TC_covers 34
#define CUPS_TC_tenThousandthsOfInches 3
#define CUPS_TC_micrometers 4
#define CUPS_TC_impressions 7
#define CUPS_TC_sheets 8
#define CUPS_TC_hours 11
#define CUPS_TC_thousandthsOfOunces 12
#define CUPS_TC_tenthsOfGrams 13
#define CUPS_TC_hundrethsOfFluidOunces 14
#define CUPS_TC_tenthsOfMilliliters 15
#define CUPS_TC_feet 16
#define CUPS_TC_meters 17
#define CUPS_TC_items 18
#define CUPS_TC_percent 19
/* These come from RFC 3808 to define character sets we support */
/* Also see http://www.iana.org/assignments/character-sets */
#define CUPS_TC_csASCII 3
#define CUPS_TC_csISOLatin1 4
#define CUPS_TC_csShiftJIS 17
#define CUPS_TC_csUTF8 106
#define CUPS_TC_csUnicode 1000 /* UCS2 BE */
#define CUPS_TC_csUCS4 1001 /* UCS4 BE */
#define CUPS_TC_csUnicodeASCII 1002
#define CUPS_TC_csUnicodeLatin1 1003
#define CUPS_TC_csUTF16BE 1013
#define CUPS_TC_csUTF16LE 1014
#define CUPS_TC_csUTF32 1017
#define CUPS_TC_csUTF32BE 1018
#define CUPS_TC_csUTF32LE 1019
#define CUPS_TC_csWindows31J 2024
/*
* Types...
*/
typedef int (*_cups_sccb_t)(int print_fd, int device_fd, int snmp_fd,
http_addr_t *addr, int use_bc);
/*
* Prototypes...
*/
extern int backendDrainOutput(int print_fd, int device_fd);
extern int backendGetDeviceID(int fd, char *device_id, int device_id_size,
char *make_model, int make_model_size,
const char *scheme, char *uri, int uri_size);
extern int backendGetMakeModel(const char *device_id, char *make_model,
int make_model_size);
extern ssize_t backendRunLoop(int print_fd, int device_fd, int use_bc,
void (*side_cb)(int print_fd, int device_fd,
int use_bc));
extern void backendCheckSideChannel(int snmp_fd, http_addr_t *addr);
extern int backendDrainOutput(int print_fd, int device_fd);
extern int backendGetDeviceID(int fd, char *device_id,
int device_id_size,
char *make_model,
int make_model_size,
const char *scheme, char *uri,
int uri_size);
extern int backendGetMakeModel(const char *device_id,
char *make_model,
size_t make_model_size);
extern int backendNetworkSideCB(int print_fd, int device_fd,
int snmp_fd, http_addr_t *addr,
int use_bc);
extern ssize_t backendRunLoop(int print_fd, int device_fd, int snmp_fd,
http_addr_t *addr, int use_bc,
int update_state, _cups_sccb_t side_cb);
extern int backendSNMPSupplies(int snmp_fd, http_addr_t *addr,
int *page_count,
int *printer_state);
extern int backendWaitLoop(int snmp_fd, http_addr_t *addr,
int use_bc, _cups_sccb_t side_cb);
# ifdef __cplusplus
}
# endif /* __cplusplus */
#endif /* !_CUPS_BACKEND_PRIVATE_H_ */
/*
* End of "$Id$".
*/
-78
Ver Arquivo
@@ -1,78 +0,0 @@
/*
* "$Id$"
*
* Backend test program for the Common UNIX Printing System (CUPS).
*
* Copyright 2007 by Apple Inc.
* Copyright 1997-2005 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
* "LICENSE" which should have been included with this file. If this
* file is missing or damaged, see the license at "http://www.cups.org/".
*
* This file is subject to the Apple OS-Developed Software exception.
*
* Contents:
*
* main() - Run the named backend.
*/
/*
* Include necessary headers.
*/
#include <stdio.h>
#include <stdlib.h>
#include <cups/string.h>
#include <unistd.h>
/*
* 'main()' - Run the named backend.
*
* Usage:
*
* betest device-uri job-id user title copies options [file]
*/
int /* O - Exit status */
main(int argc, /* I - Number of command-line arguments (7 or 8) */
char *argv[]) /* I - Command-line arguments */
{
char backend[255]; /* Method in URI */
if (argc < 7 || argc > 8)
{
fputs("Usage: betest device-uri job-id user title copies options [file]\n",
stderr);
return (1);
}
/*
* Extract the method from the device-uri - that's the program we want to
* execute.
*/
if (sscanf(argv[1], "%254[^:]", backend) != 1)
{
fputs("betest: Bad device-uri - no colon!\n", stderr);
return (1);
}
/*
* Execute and return
*/
execl(backend, argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7],
NULL);
return (1);
}
/*
* End of "$Id$".
*/
+1315
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
-71
Ver Arquivo
@@ -1,71 +0,0 @@
Preliminary Design for CUPS Firewire Printer Backend - 03/19/2002
-----------------------------------------------------------------
OVERVIEW
Easy Software Products will develop an IEEE-1394, a.k.a.
Firewire, printing interface for its Common UNIX Printing
System ("CUPS") for initial use under the Linux operating
system. A follow-on implementation for MacOS X is
anticipated as well.
The operating system interfaces for IEEE-1394 ports vary
widely; the CUPS printing interface will abstract the OS
layer to a simpler interface geared towards discovering,
opening, reading from, writing to, and closing IEEE-1394
printers.
The initial development of the CUPS backend will be targeted
at the EPSON Stylus Pro 10000 large format printer, which
requires the bandwidth provided by Firewire in order to
print at full speed. This printer supports printing via
Serial Bus Protocol 2 (SBP-2) using the SCSI and PWG command
sets. The CUPS backend will implement the PWG command set on
LUN 0 only.
OS ABSTRACTION LAYER
The OS abstraction layer will be a thin client library that
implements the following functions:
ieee1394_list
ieee1394_open
ieee1394_close
ieee1394_read
ieee1394_write
ieee1394_error
The "ieee1394_list" function will list all of the available
printer devices on the bus. The device information will
consist of the device URI (ieee1394:/something) used to
access the device and the make and model information, if
available, for the device ("EPSON Stylus Printer").
The "ieee1394_open" and "ieee1394_close" functions will open
and close a connection to the printer, respectively.
The "ieee1394_read" and "ieee1394_write" functions will read
and write data to and from the printer, respectively. The
read function will be non-blocking, returning data only if
there is data coming back from the printer.
The "ieee1394_error" function will return a string
describing the last error or NULL if no error occurred.
The library will be responsible for creating any background
threads that are needed to monitor the connection to the
printer.
CUPS BACKEND
The CUPS backend will use the OS abstraction layer to list
and access the Firewire printers. The "main" function will
read and write printer data, while the "list_devices"
function will be called as necessary to identify the
available devices.
The CUPS 1.1 backend will record any status information in
the error log file, while the 1.2 backend will supply it to
the printer driver process.
-35
Ver Arquivo
@@ -1,35 +0,0 @@
Easy Software Products
44141 Airport View Drive
Suite 204
Hollywood, Maryland 20636
+1.301.373.9600
March 8, 2002
Subject: EPSON Firewire Printer Driver for Linux
Currently, no Firewire printer support exists for Linux. Since
the latest EPSON printer products depend on the Firewire
interface to print at full speed, a solution is needed to
support customers using Linux as their server platform.
The Linux Firewire subsystem provides a user-mode driver
interface that allows driver programs to access Firewire
devices. Easy Software Products will utilize this interface to
develop a "backend" program for the Common UNIX Printing System
that will allow users to print to EPSON printers using the
Firewire interface.
After examining the Linux interface, we estimate that it will
require approximately 30 hours of development time to write,
test, and document the Firewire backend, for a total cost of
$3,000. The new backend will become a standard part of the CUPS
software distribution and will be included with at least the
following Linux distributions:
- Caldera Linux
- Mandrake Linux
- Red Hat Linux
- SuSE Linux
ESP will provide EPSON with binaries for Red Hat Linux 7.2.
+275 -300
Ver Arquivo
@@ -1,24 +1,16 @@
/*
* "$Id$"
* IEEE-1284 support functions for CUPS.
*
* IEEE-1284 support functions for the Common UNIX Printing System (CUPS).
* Copyright 2007-2015 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
*
* Copyright 2007 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
* "LICENSE" which should have been included with this file. If this
* file is missing or damaged, see the license at "http://www.cups.org/".
*
* 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:
*
* backendGetDeviceID() - Get the IEEE-1284 device ID string and
* corresponding URI.
* backendGetMakeModel() - Get the make and model string from the device ID.
* This file is subject to the Apple OS-Developed Software exception.
*/
/*
@@ -26,22 +18,7 @@
*/
#include "backend-private.h"
#ifdef __linux
# include <sys/ioctl.h>
# include <linux/lp.h>
# define IOCNR_GET_DEVICE_ID 1
# define LPIOC_GET_DEVICE_ID(len) _IOC(_IOC_READ, 'P', IOCNR_GET_DEVICE_ID, len)
#endif /* __linux */
#ifdef __sun
# ifdef __sparc
# include <sys/ecppio.h>
# else
# include <sys/ioccom.h>
# include <sys/ecppsys.h>
# endif /* __sparc */
#endif /* __sun */
#include <cups/ppd-private.h>
/*
@@ -60,18 +37,27 @@ backendGetDeviceID(
char *uri, /* O - Device URI */
int uri_size) /* I - Size of buffer */
{
char *attr, /* 1284 attribute */
*delim, /* 1284 delimiter */
*uriptr, /* Pointer into URI */
manufacturer[256], /* Manufacturer string */
serial_number[1024]; /* Serial number string */
int manulen; /* Length of manufacturer string */
#ifdef __linux
#ifdef __APPLE__ /* This function is a no-op */
(void)fd;
(void)device_id;
(void)device_id_size;
(void)make_model;
(void)make_model_size;
(void)scheme;
(void)uri;
(void)uri_size;
return (-1);
#else /* Get the device ID from the specified file descriptor... */
# ifdef __linux
int length; /* Length of device ID info */
#endif /* __linux */
#if defined(__sun) && defined(ECPPIOC_GETDEVID)
int got_id = 0;
# endif /* __linux */
# if defined(__sun) && defined(ECPPIOC_GETDEVID)
struct ecpp_device_id did; /* Device ID buffer */
#endif /* __sun && ECPPIOC_GETDEVID */
# endif /* __sun && ECPPIOC_GETDEVID */
char *ptr; /* Pointer into device ID */
DEBUG_printf(("backendGetDeviceID(fd=%d, device_id=%p, device_id_size=%d, "
@@ -93,9 +79,6 @@ backendGetDeviceID(
if (make_model)
*make_model = '\0';
if (uri)
*uri = '\0';
if (fd >= 0)
{
/*
@@ -104,16 +87,89 @@ backendGetDeviceID(
*device_id = '\0';
#ifdef __linux
if (!ioctl(fd, LPIOC_GET_DEVICE_ID(device_id_size), device_id))
# ifdef __linux
if (ioctl(fd, LPIOC_GET_DEVICE_ID(device_id_size), device_id))
{
/*
* Linux has to implement things differently for every device it seems.
* Since the standard parallel port driver does not provide a simple
* ioctl() to get the 1284 device ID, we have to open the "raw" parallel
* device corresponding to this port and do some negotiation trickery
* to get the current device ID.
*/
if (uri && !strncmp(uri, "parallel:/dev/", 14))
{
char devparport[16]; /* /dev/parportN */
int devparportfd, /* File descriptor for raw device */
mode; /* Port mode */
/*
* Since the Linux parallel backend only supports 4 parallel port
* devices, just grab the trailing digit and use it to construct a
* /dev/parportN filename...
*/
snprintf(devparport, sizeof(devparport), "/dev/parport%s",
uri + strlen(uri) - 1);
if ((devparportfd = open(devparport, O_RDWR | O_NOCTTY)) != -1)
{
/*
* Claim the device...
*/
if (!ioctl(devparportfd, PPCLAIM))
{
fcntl(devparportfd, F_SETFL, fcntl(devparportfd, F_GETFL) | O_NONBLOCK);
mode = IEEE1284_MODE_COMPAT;
if (!ioctl(devparportfd, PPNEGOT, &mode))
{
/*
* Put the device into Device ID mode...
*/
mode = IEEE1284_MODE_NIBBLE | IEEE1284_DEVICEID;
if (!ioctl(devparportfd, PPNEGOT, &mode))
{
/*
* Read the 1284 device ID...
*/
if ((length = read(devparportfd, device_id, (size_t)device_id_size - 1)) >= 2)
{
device_id[length] = '\0';
got_id = 1;
}
}
}
/*
* Release the device...
*/
ioctl(devparportfd, PPRELEASE);
}
close(devparportfd);
}
}
}
else
got_id = 1;
if (got_id)
{
/*
* Extract the length of the device ID string from the first two
* bytes. The 1284 spec says the length is stored MSB first...
*/
length = (((unsigned)device_id[0] & 255) << 8) +
((unsigned)device_id[1] & 255);
length = (int)((((unsigned)device_id[0] & 255) << 8) + ((unsigned)device_id[1] & 255));
/*
* Check to see if the length is larger than our buffer; first
@@ -121,28 +177,52 @@ backendGetDeviceID(
* and then limit the length to the size of our buffer...
*/
if (length > (device_id_size - 2))
length = (((unsigned)device_id[1] & 255) << 8) +
((unsigned)device_id[0] & 255);
if (length > device_id_size || length < 14)
length = (int)((((unsigned)device_id[1] & 255) << 8) + ((unsigned)device_id[0] & 255));
if (length > (device_id_size - 2))
length = device_id_size - 2;
if (length > device_id_size)
length = device_id_size;
/*
* Copy the device ID text to the beginning of the buffer and
* nul-terminate.
* The length field counts the number of bytes in the string
* including the length field itself (2 bytes). The minimum
* length for a valid/usable device ID is 14 bytes:
*
* <LENGTH> MFG: <MFG> ;MDL: <MDL> ;
* 2 + 4 + 1 + 5 + 1 + 1
*/
memmove(device_id, device_id + 2, length);
device_id[length] = '\0';
}
# ifdef DEBUG
else
printf("backendGetDeviceID: ioctl failed - %s\n", strerror(errno));
# endif /* DEBUG */
#endif /* __linux */
if (length < 14)
{
/*
* Can't use this device ID, so don't try to copy it...
*/
#if defined(__sun) && defined(ECPPIOC_GETDEVID)
device_id[0] = '\0';
got_id = 0;
}
else
{
/*
* Copy the device ID text to the beginning of the buffer and
* nul-terminate.
*/
length -= 2;
memmove(device_id, device_id + 2, (size_t)length);
device_id[length] = '\0';
}
}
else
{
DEBUG_printf(("backendGetDeviceID: ioctl failed - %s\n",
strerror(errno)));
*device_id = '\0';
}
# endif /* __linux */
# if defined(__sun) && defined(ECPPIOC_GETDEVID)
did.mode = ECPP_CENTRONICS;
did.len = device_id_size - 1;
did.rlen = 0;
@@ -159,15 +239,35 @@ backendGetDeviceID(
else
device_id[device_id_size - 1] = '\0';
}
# ifdef DEBUG
# ifdef DEBUG
else
printf("backendGetDeviceID: ioctl failed - %s\n", strerror(errno));
# endif /* DEBUG */
#endif /* __sun && ECPPIOC_GETDEVID */
DEBUG_printf(("backendGetDeviceID: ioctl failed - %s\n",
strerror(errno)));
# endif /* DEBUG */
# endif /* __sun && ECPPIOC_GETDEVID */
}
/*
* Check whether device ID is valid. Turn line breaks and tabs to spaces and
* reject device IDs with non-printable characters.
*/
for (ptr = device_id; *ptr; ptr ++)
if (_cups_isspace(*ptr))
*ptr = ' ';
else if ((*ptr & 255) < ' ' || *ptr == 127)
{
DEBUG_printf(("backendGetDeviceID: Bad device_id character %d.",
*ptr & 255));
*device_id = '\0';
break;
}
DEBUG_printf(("backendGetDeviceID: device_id=\"%s\"\n", device_id));
if (scheme && uri)
*uri = '\0';
if (!*device_id)
return (-1);
@@ -176,7 +276,7 @@ backendGetDeviceID(
*/
if (make_model)
backendGetMakeModel(device_id, make_model, make_model_size);
backendGetMakeModel(device_id, make_model, (size_t)make_model_size);
/*
* Then generate a device URI...
@@ -184,111 +284,72 @@ backendGetDeviceID(
if (scheme && uri && uri_size > 32)
{
int num_values; /* Number of keys and values */
cups_option_t *values; /* Keys and values in device ID */
const char *mfg, /* Manufacturer */
*mdl, /* Model */
*sern; /* Serial number */
char temp[256], /* Temporary manufacturer string */
*tempptr; /* Pointer into temp string */
/*
* Look for the serial number field...
* Get the make, model, and serial numbers...
*/
if ((attr = strstr(device_id, "SERN:")) != NULL)
attr += 5;
else if ((attr = strstr(device_id, "SERIALNUMBER:")) != NULL)
attr += 13;
else if ((attr = strstr(device_id, ";SN:")) != NULL)
attr += 4;
num_values = _cupsGet1284Values(device_id, &values);
if (attr)
if ((sern = cupsGetOption("SERIALNUMBER", num_values, values)) == NULL)
if ((sern = cupsGetOption("SERN", num_values, values)) == NULL)
sern = cupsGetOption("SN", num_values, values);
if ((mfg = cupsGetOption("MANUFACTURER", num_values, values)) == NULL)
mfg = cupsGetOption("MFG", num_values, values);
if ((mdl = cupsGetOption("MODEL", num_values, values)) == NULL)
mdl = cupsGetOption("MDL", num_values, values);
if (mfg)
{
strlcpy(serial_number, attr, sizeof(serial_number));
if ((delim = strchr(serial_number, ';')) != NULL)
*delim = '\0';
if (!_cups_strcasecmp(mfg, "Hewlett-Packard"))
mfg = "HP";
else if (!_cups_strcasecmp(mfg, "Lexmark International"))
mfg = "Lexmark";
}
else
serial_number[0] = '\0';
{
strlcpy(temp, make_model, sizeof(temp));
if ((tempptr = strchr(temp, ' ')) != NULL)
*tempptr = '\0';
mfg = temp;
}
if (!mdl)
mdl = "";
if (!_cups_strncasecmp(mdl, mfg, strlen(mfg)))
{
mdl += strlen(mfg);
while (isspace(*mdl & 255))
mdl ++;
}
/*
* Generate the device URI from the manufacturer, make_model, and
* serial number strings.
*/
snprintf(uri, uri_size, "%s://", scheme);
httpAssembleURIf(HTTP_URI_CODING_ALL, uri, uri_size, scheme, NULL, mfg, 0,
"/%s%s%s", mdl, sern ? "?serial=" : "", sern ? sern : "");
if ((attr = strstr(device_id, "MANUFACTURER:")) != NULL)
attr += 13;
else if ((attr = strstr(device_id, "Manufacturer:")) != NULL)
attr += 13;
else if ((attr = strstr(device_id, "MFG:")) != NULL)
attr += 4;
if (attr)
{
strlcpy(manufacturer, attr, sizeof(manufacturer));
if ((delim = strchr(manufacturer, ';')) != NULL)
*delim = '\0';
if (!strcasecmp(manufacturer, "Hewlett-Packard"))
strcpy(manufacturer, "HP");
else if (!strcasecmp(manufacturer, "Lexmark International"))
strcpy(manufacturer, "Lexmark");
}
else
{
strlcpy(manufacturer, make_model, sizeof(manufacturer));
if ((delim = strchr(manufacturer, ' ')) != NULL)
*delim = '\0';
}
manulen = strlen(manufacturer);
for (uriptr = uri + strlen(uri), delim = manufacturer;
*delim && uriptr < (uri + uri_size - 3);
delim ++)
if (*delim == ' ')
{
*uriptr++ = '%';
*uriptr++ = '2';
*uriptr++ = '0';
}
else
*uriptr++ = *delim;
*uriptr++ = '/';
if (!strncasecmp(make_model, manufacturer, manulen))
{
delim = make_model + manulen;
while (isspace(*delim & 255))
delim ++;
}
else
delim = make_model;
for (; *delim && uriptr < (uri + uri_size - 3); delim ++)
if (*delim == ' ')
{
*uriptr++ = '%';
*uriptr++ = '2';
*uriptr++ = '0';
}
else
*uriptr++ = *delim;
if (serial_number[0])
{
/*
* Add the serial number to the URI...
*/
strlcpy(uriptr, "?serial=", uri_size - (uriptr - uri));
strlcat(uriptr, serial_number, uri_size - (uriptr - uri));
}
else
*uriptr = '\0';
cupsFreeOptions(num_values, values);
}
return (0);
#endif /* __APPLE__ */
}
@@ -300,17 +361,16 @@ int /* O - 0 on success, -1 on failure */
backendGetMakeModel(
const char *device_id, /* O - 1284 device ID */
char *make_model, /* O - Make/model */
int make_model_size) /* I - Size of buffer */
size_t make_model_size) /* I - Size of buffer */
{
char *attr, /* 1284 attribute */
*delim, /* 1284 delimiter */
*mfg, /* Manufacturer string */
*mdl; /* Model string */
int num_values; /* Number of keys and values */
cups_option_t *values; /* Keys and values */
const char *mfg, /* Manufacturer string */
*mdl, /* Model string */
*des; /* Description string */
DEBUG_printf(("backendGetMakeModel(device_id=\"%s\", "
"make_model=%p, make_model_size=%d)\n", device_id,
make_model, make_model_size));
DEBUG_printf(("backendGetMakeModel(device_id=\"%s\", make_model=%p, make_model_size=" CUPS_LLFMT ")\n", device_id, make_model, CUPS_LLCAST make_model_size));
/*
* Range check input...
@@ -328,12 +388,43 @@ backendGetMakeModel(
* Look for the description field...
*/
if ((attr = strstr(device_id, "DES:")) != NULL)
attr += 4;
else if ((attr = strstr(device_id, "DESCRIPTION:")) != NULL)
attr += 12;
num_values = _cupsGet1284Values(device_id, &values);
if (attr)
if ((mdl = cupsGetOption("MODEL", num_values, values)) == NULL)
mdl = cupsGetOption("MDL", num_values, values);
if (mdl)
{
/*
* Build a make-model string from the manufacturer and model attributes...
*/
if ((mfg = cupsGetOption("MANUFACTURER", num_values, values)) == NULL)
mfg = cupsGetOption("MFG", num_values, values);
if (!mfg || !_cups_strncasecmp(mdl, mfg, strlen(mfg)))
{
/*
* Just copy the model string, since it has the manufacturer...
*/
_ppdNormalizeMakeAndModel(mdl, make_model, make_model_size);
}
else
{
/*
* Concatenate the make and model...
*/
char temp[1024]; /* Temporary make and model */
snprintf(temp, sizeof(temp), "%s %s", mfg, mdl);
_ppdNormalizeMakeAndModel(temp, make_model, make_model_size);
}
}
else if ((des = cupsGetOption("DESCRIPTION", num_values, values)) != NULL ||
(des = cupsGetOption("DES", num_values, values)) != NULL)
{
/*
* Make sure the description contains something useful, since some
@@ -344,119 +435,30 @@ backendGetMakeModel(
* containing at least one space and one letter.
*/
if ((delim = strchr(attr, ';')) == NULL)
delim = attr + strlen(attr);
if ((delim - attr) < 8)
attr = NULL;
else
if (strlen(des) >= 8)
{
char *ptr; /* Pointer into description */
int letters, /* Number of letters seen */
spaces; /* Number of spaces seen */
const char *ptr; /* Pointer into description */
int letters, /* Number of letters seen */
spaces; /* Number of spaces seen */
for (ptr = attr, letters = 0, spaces = 0; ptr < delim; ptr ++)
for (ptr = des, letters = 0, spaces = 0; *ptr; ptr ++)
{
if (isspace(*ptr & 255))
if (isspace(*ptr & 255))
spaces ++;
else if (isalpha(*ptr & 255))
letters ++;
if (spaces && letters)
if (spaces && letters)
break;
}
if (!spaces || !letters)
attr = NULL;
if (spaces && letters)
_ppdNormalizeMakeAndModel(des, make_model, make_model_size);
}
}
if ((mfg = strstr(device_id, "MANUFACTURER:")) != NULL)
mfg += 13;
else if ((mfg = strstr(device_id, "Manufacturer:")) != NULL)
mfg += 13;
else if ((mfg = strstr(device_id, "MFG:")) != NULL)
mfg += 4;
if ((mdl = strstr(device_id, "MODEL:")) != NULL)
mdl += 6;
else if ((mdl = strstr(device_id, "Model:")) != NULL)
mdl += 6;
else if ((mdl = strstr(device_id, "MDL:")) != NULL)
mdl += 4;
if (mdl)
{
/*
* Build a make-model string from the manufacturer and model attributes...
*/
if (mfg)
{
if (!strncasecmp(mfg, "Hewlett-Packard", 15))
strlcpy(make_model, "HP", make_model_size);
else if (!strncasecmp(mfg, "Lexmark International", 21))
strlcpy(make_model, "Lexmark", make_model_size);
else
strlcpy(make_model, mfg, make_model_size);
if ((delim = strchr(make_model, ';')) != NULL)
*delim = '\0';
if (!strncasecmp(make_model, mdl, strlen(make_model)))
{
/*
* Just copy model string, since it has the manufacturer...
*/
strlcpy(make_model, mdl, make_model_size);
}
else
{
/*
* Concatenate the make and model...
*/
strlcat(make_model, " ", make_model_size);
strlcat(make_model, mdl, make_model_size);
}
}
else
{
/*
* Just copy model string, since it has the manufacturer...
*/
strlcpy(make_model, mdl, make_model_size);
}
}
else if (attr)
{
/*
* Use description...
*/
if (!strncasecmp(attr, "Hewlett-Packard hp ", 19))
{
/*
* Check for a common HP bug...
*/
strlcpy(make_model, "HP ", make_model_size);
strlcpy(make_model + 3, attr + 19, make_model_size - 3);
}
else if (!strncasecmp(attr, "Hewlett-Packard ", 16))
{
strlcpy(make_model, "HP ", make_model_size);
strlcpy(make_model + 3, attr + 16, make_model_size - 3);
}
else
{
strlcpy(make_model, attr, make_model_size);
}
}
else
if (!make_model[0])
{
/*
* Use "Unknown" as the printer make and model...
@@ -465,34 +467,7 @@ backendGetMakeModel(
strlcpy(make_model, "Unknown", make_model_size);
}
/*
* Strip trailing data...
*/
cupsFreeOptions(num_values, values);
if ((delim = strchr(make_model, ';')) != NULL)
*delim = '\0';
/*
* Strip trailing whitespace...
*/
for (delim = make_model + strlen(make_model) - 1; delim >= make_model; delim --)
if (isspace(*delim & 255))
*delim = '\0';
else
break;
/*
* Return...
*/
if (make_model[0])
return (0);
else
return (-1);
return (0);
}
/*
* End of "$Id$".
*/
-878
Ver Arquivo
@@ -1,878 +0,0 @@
/*
* "$Id$"
*
* Linux IEEE-1394 glue for the Common UNIX Printing System (CUPS).
*
* Copyright 2007 by Apple Inc.
* Copyright 2002 by Easy Software Products, all rights reserved.
*
* Redistribution and use in source and binary forms, with or
* without modification, are permitted provided that the
* following conditions are met:
*
* 1. Redistributions of source code must retain the above
* copyright notice, this list of conditions and the
* following disclaimer.
*
* 2. Redistributions in binary form must reproduce the
* above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or
* other materials provided with the distribution.
*
* 3. All advertising materials mentioning features or use
* of this software must display the following
* acknowledgement:
*
* This product includes software developed by Easy
* Software Products.
*
* 4. The name of Easy Software Products may not be used to
* endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
* BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
* DAMAGE.
*
* Contents:
*
* get_device_id() - Get the IEEE-1284 device ID for a node...
* get_unit_type() - Get the unit type for a node...
* show_data() - Show a data node...
* show_dir() - Show a directory list...
* ieee1394_list() - List the available printer devices.
* ieee1394_open() - Open a printer device.
* ieee1394_close() - Close a printer device.
* ieee1394_read() - Read from a printer device.
* ieee1394_write() - Write data to a printer device.
* ieee1394_error() - Return the last error.
*/
/*
* Include necessary headers.
*/
#include "ieee1394.h"
#include <cups/debug.h>
#include <libraw1394/raw1394.h>
#include <libraw1394/csr.h>
/*
* Limits...
*/
#define MAX_NODES 100
/*
* Structures...
*/
typedef struct
{
char uri[HTTP_MAX_URI],/* URI for this node... */
description[128],/* Description of port */
make_model[128];/* Make and model */
int port, /* Port where this node is found */
node; /* Node number */
unsigned long long addr; /* Management address */
} linux1394_node_t;
typedef struct
{
raw1394handle_t handle; /* Handle for printer device */
int node; /* Node number for printer device */
unsigned long long addr; /* Management address */
} linux1394_dev_t;
/*
* ORB messages for communication with the device...
*/
typedef struct /**** Login ORB Message */
{
unsigned char passwd_addr[8]; /* Password address */
unsigned char resp_addr[8]; /* Login response address */
unsigned char notify_excl; /* Notify and exclusive bits */
unsigned char recon_func; /* Reconnect time and function */
unsigned char lun[2]; /* Logical unit number */
unsigned char passwd_len[2]; /* Length of password */
unsigned char resp_len[2]; /* Length of login response */
unsigned char fifo_addr[8]; /* Local status FIFO address */
} login_orb_t;
typedef struct /**** Login Response Message ****/
{
unsigned char length[2]; /* Length of response */
unsigned char login_id[2]; /* Login ID */
unsigned char cmd_addr[8]; /* Command block agent address */
unsigned char reserved[2]; /* Reserved (0) */
unsigned char recon_hold[2]; /* Number of seconds to hold login */
} login_resp_t;
/*
* Local globals...
*/
static char error_string[1024] = "";
static int num_nodes;
static linux1394_node_t nodes[MAX_NODES];
/*
* 'get_device_id()' - Get the IEEE-1284 device ID for a node...
*/
static char * /* O - Device ID */
get_device_id(raw1394handle_t handle,/* I - Handle for device */
int node, /* I - Node number */
unsigned long long offset,/* I - Offset to directory */
char *id, /* O - ID string */
int idlen) /* I - Size of ID string */
{
unsigned char data[1024], /* Data from ROM */
*dataptr; /* Pointer into data */
int length; /* Length of directory */
int datalen; /* Length of data */
unsigned long long dataoff; /* Offset of data */
DEBUG_printf(("get_device_id(handle = %p, node = %d, offset = %llx, id = %p, idlen = %d)\n",
handle, node, offset, id, idlen));
*id = '\0';
/*
* Read the directory length from the first quadlet...
*/
if (raw1394_read(handle, 0xffc0 | node, offset, 4, (quadlet_t *)data) < 0)
return (NULL);
offset += 4;
/*
* The length is in the upper 16 bits...
*/
length = (data[0] << 8) | data[1];
DEBUG_printf((" length = %d\n", length));
/*
* Then read the directory, looking for unit directory or device tags...
*/
while (length > 0)
{
if (raw1394_read(handle, 0xffc0 | node, offset, 4, (quadlet_t *)data) < 0)
return (NULL);
DEBUG_printf((" data = %02X %02X %02X %02X\n", data[0], data[1],
data[2], data[3]));
if (data[0] == 0xd1)
{
/*
* Found the unit directory...
*/
offset += ((((data[1] << 8) | data[2]) << 8) | data[3]) << 2;
return (get_device_id(handle, node, offset, id, idlen));
}
else if (data[0] == 0x81)
{
/*
* Found potential IEEE-1284 device ID...
*/
dataoff = offset + (((((data[1] << 8) | data[2]) << 8) | data[3]) << 2);
if (raw1394_read(handle, 0xffc0 | node, dataoff, 4, (quadlet_t *)data) < 0)
return (NULL);
dataoff += 4;
/*
* Read the leaf value...
*/
datalen = (data[0] << 8) | data[1];
if (datalen > (sizeof(data) / 4))
datalen = sizeof(data) / 4;
for (dataptr = data; datalen > 0; datalen --, dataptr += 4, dataoff += 4)
if (raw1394_read(handle, 0xffc0 | node, dataoff, 4,
(quadlet_t *)dataptr) < 0)
return (NULL);
if (data[0] == 0 && memcmp(data + 8, "MFG:", 4) == 0)
{
/*
* Found the device ID...
*/
datalen = dataptr - data - 8;
if (datalen >= idlen)
datalen --;
memcpy(id, data + 8, datalen);
id[datalen] = '\0';
return (id);
}
}
offset += 4;
length --;
}
return (NULL);
}
/*
* 'get_man_addr()' - Get the management address for a node...
*/
static int /* O - Unit type */
get_man_addr(raw1394handle_t handle, /* I - Handle for device */
int node, /* I - Node number */
unsigned long long offset) /* I - Offset to directory */
{
unsigned char data[4]; /* Data from ROM */
int length; /* Length of directory */
DEBUG_printf(("get_man_addr(handle = %p, node = %d, offset = %llx)\n",
handle, node, offset));
/*
* Read the directory length from the first quadlet...
*/
if (raw1394_read(handle, 0xffc0 | node, offset, 4, (quadlet_t *)data) < 0)
return (-1);
offset += 4;
/*
* The length is in the upper 16 bits...
*/
length = (data[0] << 8) | data[1];
DEBUG_printf((" length = %d\n", length));
/*
* Then read the directory, looking for unit directory or type tags...
*/
while (length > 0)
{
if (raw1394_read(handle, 0xffc0 | node, offset, 4, (quadlet_t *)data) < 0)
return (-1);
DEBUG_printf((" data = %02X %02X %02X %02X\n", data[0], data[1],
data[2], data[3]));
if (data[0] == 0xd1)
{
/*
* Found the unit directory...
*/
offset += ((((data[1] << 8) | data[2]) << 8) | data[3]) << 2;
return (get_man_addr(handle, node, offset));
}
else if (data[0] == 0x54)
{
/*
* Found the management address...
*/
return (((((data[1] << 8) | data[2]) << 8) | data[3]) << 2);
}
offset += 4;
length --;
}
return (-1);
}
/*
* 'get_unit_type()' - Get the unit type for a node...
*/
static int /* O - Unit type */
get_unit_type(raw1394handle_t handle,/* I - Handle for device */
int node, /* I - Node number */
unsigned long long offset)/* I - Offset to directory */
{
unsigned char data[4]; /* Data from ROM */
int length; /* Length of directory */
DEBUG_printf(("get_unit_type(handle = %p, node = %d, offset = %llx)\n",
handle, node, offset));
/*
* Read the directory length from the first quadlet...
*/
if (raw1394_read(handle, 0xffc0 | node, offset, 4, (quadlet_t *)data) < 0)
return (-1);
offset += 4;
/*
* The length is in the upper 16 bits...
*/
length = (data[0] << 8) | data[1];
DEBUG_printf((" length = %d\n", length));
/*
* Then read the directory, looking for unit directory or type tags...
*/
while (length > 0)
{
if (raw1394_read(handle, 0xffc0 | node, offset, 4, (quadlet_t *)data) < 0)
return (-1);
DEBUG_printf((" data = %02X %02X %02X %02X\n", data[0], data[1],
data[2], data[3]));
if (data[0] == 0xd1)
{
/*
* Found the unit directory...
*/
offset += ((((data[1] << 8) | data[2]) << 8) | data[3]) << 2;
return (get_unit_type(handle, node, offset));
}
else if (data[0] == 0x14)
{
/*
* Found the unit type...
*/
return (data[1] & 0x1f);
}
offset += 4;
length --;
}
return (-1);
}
#ifdef DEBUG
/*
* 'show_data()' - Show a data node...
*/
static void
show_data(raw1394handle_t handle, /* I - Handle for device */
int node, /* I - Node number */
unsigned long long offset, /* I - Offset to directory */
int indent) /* Amount to indent */
{
int i; /* Looping var */
unsigned char data[4]; /* Data from ROM */
int length; /* Length of data */
/*
* Read the data length from the first quadlet...
*/
if (raw1394_read(handle, 0xffc0 | node, offset, 4, (quadlet_t *)data) < 0)
return;
offset += 4;
/*
* The length is in the upper 16 bits...
*/
length = (data[0] << 8) | data[1];
/*
* Then read the data...
*/
for (i = 0; i < indent; i ++)
putchar(' ');
printf("LEAF (%d quadlets)\n", length);
while (length > 0)
{
if (raw1394_read(handle, 0xffc0 | node, offset, 4, (quadlet_t *)data) < 0)
return;
for (i = 0; i < indent; i ++)
putchar(' ');
printf("%02X %02X %02X %02X '%c%c%c%c'\n",
data[0], data[1], data[2], data[3],
(data[0] < ' ' || data[0] >= 0x7f) ? '.' : data[0],
(data[1] < ' ' || data[1] >= 0x7f) ? '.' : data[1],
(data[2] < ' ' || data[2] >= 0x7f) ? '.' : data[2],
(data[3] < ' ' || data[3] >= 0x7f) ? '.' : data[3]);
offset += 4;
length --;
}
}
/*
* 'show_dir()' - Show a directory list...
*/
static void
show_dir(raw1394handle_t handle, /* I - Handle for device */
int node, /* I - Node number */
unsigned long long offset, /* I - Offset to directory */
int indent) /* Amount to indent */
{
int i; /* Looping var */
unsigned char data[4]; /* Data from ROM */
int length; /* Length of directory */
int value; /* Value in directory */
/*
* Read the directory length from the first quadlet...
*/
if (raw1394_read(handle, 0xffc0 | node, offset, 4, (quadlet_t *)data) < 0)
return;
offset += 4;
/*
* The length is in the upper 16 bits...
*/
length = (data[0] << 8) | data[1];
/*
* Then read the directory...
*/
while (length > 0)
{
if (raw1394_read(handle, 0xffc0 | node, offset, 4, (quadlet_t *)data) < 0)
return;
for (i = 0; i < indent; i ++)
putchar(' ');
printf("%02X %02X %02X %02X\n", data[0], data[1], data[2], data[3]);
value = (((data[1] << 8) | data[2]) << 8) | data[3];
switch (data[0] & 0xc0)
{
case 0x00 :
for (i = -4; i < indent; i ++)
putchar(' ');
printf("IMMEDIATE %d\n", value);
break;
case 0x40 :
for (i = -4; i < indent; i ++)
putchar(' ');
printf("CSR OFFSET +%06X\n", value);
break;
case 0x80 :
show_data(handle, node, offset + value * 4, indent + 4);
break;
case 0xc0 :
show_dir(handle, node, offset + value * 4, indent + 4);
break;
}
offset += 4;
length --;
}
}
#endif /* DEBUG */
/*
* 'ieee1394_list()' - List the available printer devices.
*/
ieee1394_info_t * /* O - Printer information */
ieee1394_list(int *num_devices) /* O - Number of printers */
{
int i, j; /* Looping vars */
raw1394handle_t handle; /* 1394 handle */
int num_ports; /* Number of ports */
struct raw1394_portinfo ports[100]; /* Port data... */
unsigned char guid[8]; /* Global unique ID */
int vendor; /* Vendor portion of GUID */
int unit_type; /* Unit type */
int addr; /* Management address offset */
char id[1024], /* Device ID string */
*idptr, /* Pointer into ID string */
*idsep; /* Pointer to separator */
ieee1394_info_t *devices; /* Device list */
/*
* Connect to the user-mode driver interface...
*/
handle = raw1394_new_handle();
num_ports = raw1394_get_port_info(handle, ports,
sizeof(ports) / sizeof(ports[0]));
DEBUG_printf(("num_ports = %d\n", num_ports));
/*
* Loop through the ports to discover what nodes are available.
*/
num_nodes = 0;
for (i = 0; i < num_ports; i ++)
{
DEBUG_printf(("ports[%d] = { nodes = %d, name = \"%s\" }\n", i,
ports[i].nodes, ports[i].name));
raw1394_set_port(handle, i);
for (j = 0; j < ports[i].nodes; j ++)
{
if (raw1394_read(handle, 0xffc0 | j,
CSR_REGISTER_BASE + CSR_CONFIG_ROM + 12, 4,
(quadlet_t *)guid) < 0)
{
DEBUG_printf((" Node #%d: Unable to contact (%s)!\n", j,
strerror(errno)));
continue;
}
else
{
raw1394_read(handle, 0xffc0 | j,
CSR_REGISTER_BASE + CSR_CONFIG_ROM + 16, 4,
(quadlet_t *)(guid + 4));
DEBUG_printf((" Node #%d: GUID = %02X%02X%02X%02X%02X%02X%02X%02X\n",
j, guid[0], guid[1], guid[2], guid[3], guid[4],
guid[5], guid[6], guid[7]));
vendor = (((guid[0] << 8) | guid[1]) << 8) | guid[2];
unit_type = get_unit_type(handle, j,
CSR_REGISTER_BASE + CSR_CONFIG_ROM + 20);
DEBUG_printf(("vendor = %x, unit_type = %d\n", vendor, unit_type));
if (unit_type == 2 && num_nodes < MAX_NODES)
{
/*
* Found a printer device; add it to the nodes list...
*/
#ifdef DEBUG
show_dir(handle, j, CSR_REGISTER_BASE + CSR_CONFIG_ROM + 20, 0);
#endif /* DEBUG */
memset(nodes + num_nodes, 0, sizeof(linux1394_node_t));
sprintf(nodes[num_nodes].uri, "ieee1394://%02X%02X%02X%02X%02X%02X%02X%02X",
guid[0], guid[1], guid[2], guid[3], guid[4],
guid[5], guid[6], guid[7]);
nodes[num_nodes].port = i;
nodes[num_nodes].node = j;
addr = get_man_addr(handle, j, CSR_REGISTER_BASE + CSR_CONFIG_ROM + 20);
if (addr < 0)
continue;
nodes[num_nodes].addr = CSR_REGISTER_BASE + addr;
DEBUG_printf(("Node address = %llx\n", nodes[num_nodes].addr));
get_device_id(handle, j, CSR_REGISTER_BASE + CSR_CONFIG_ROM + 20,
id, sizeof(id));
if (id[0])
{
/*
* Grab the manufacturer and model name from the device ID
* string...
*/
idptr = id + 4;
idsep = strchr(id, ';');
if (idsep)
*idsep++ = '\0';
else
idsep = idptr;
snprintf(nodes[num_nodes].description,
sizeof(nodes[num_nodes].description),
"%s Firewire Printer", idptr);
if ((idptr = strstr(idsep, "DES:")) == NULL)
idptr = strstr(idsep, "MDL:");
if (idptr == NULL)
strcpy(nodes[num_nodes].make_model, "Unknown");
else
{
/*
* Grab the DES or MDL code...
*/
idptr += 4;
idsep = strchr(idptr, ';');
if (idsep)
*idsep = '\0';
if (strncmp(id + 4, idptr, strlen(id + 4)) == 0)
{
/*
* Use the description directly...
*/
strlcpy(nodes[num_nodes].make_model, idptr,
sizeof(nodes[num_nodes].make_model));
}
else
{
/*
* Add the manufacturer to the front of the name...
*/
snprintf(nodes[num_nodes].make_model,
sizeof(nodes[num_nodes].make_model),
"%s %s", id + 4, idptr);
}
}
}
else
{
/*
* Flag it as an unknown printer...
*/
sprintf(nodes[num_nodes].description,
"Unknown%06X Firewire Printer", vendor);
strcpy(nodes[num_nodes].make_model, "Unknown");
}
num_nodes ++;
}
}
}
}
/*
* Done querying the Firewire bus...
*/
raw1394_destroy_handle(handle);
/*
* Build an array of device info structures as needed...
*/
if (num_devices == NULL)
return (NULL);
*num_devices = num_nodes;
if (num_nodes)
{
if ((devices = calloc(sizeof(ieee1394_info_t), num_nodes)) != NULL)
{
for (i = 0; i < num_nodes; i ++)
{
strcpy(devices[i].uri, nodes[i].uri);
strcpy(devices[i].description, nodes[i].description);
strcpy(devices[i].make_model, nodes[i].make_model);
}
}
return (devices);
}
else
return (NULL);
}
/*
* 'ieee1394_open()' - Open a printer device.
*/
ieee1394_dev_t /* O - Printer device or NULL */
ieee1394_open(const char *uri) /* I - Device URI */
{
int i; /* Looping var */
linux1394_dev_t *ldev; /* Linux device */
/*
* Return early if we can't see any printers...
*/
if (num_nodes == 0)
ieee1394_list(NULL);
if (num_nodes == 0)
{
strcpy(error_string, "No IEEE-1394 printers found!");
return (NULL);
}
/*
* Look for the URI...
*/
for (i = 0; i < num_nodes; i ++)
if (strcmp(nodes[i].uri, uri) == 0)
break;
if (i >= num_nodes)
{
snprintf(error_string, sizeof(error_string), "Device %s not found!", uri);
return (NULL);
}
/*
* Now create a new device structure...
*/
if ((ldev = calloc(sizeof(linux1394_dev_t), 1)) == NULL)
{
strcpy(error_string, "Out of memory!");
return (NULL);
}
ldev->handle = raw1394_new_handle();
ldev->node = nodes[i].node;
ldev->addr = nodes[i].addr;
raw1394_set_port(ldev->handle, nodes[i].port);
error_string[0] = '\0';
return ((ieee1394_dev_t)ldev);
}
/*
* 'ieee1394_close()' - Close a printer device.
*/
int /* O - 0 on success, -1 on failure */
ieee1394_close(ieee1394_dev_t dev) /* I - Printer device */
{
linux1394_dev_t *ldev; /* Linux device */
ldev = (linux1394_dev_t *)dev;
raw1394_destroy_handle(ldev->handle);
free(ldev);
return (0);
}
/*
* 'ieee1394_read()' - Read from a printer device.
*/
int /* O - Number of bytes read or -1 */
ieee1394_read(ieee1394_dev_t dev, /* I - Printer device */
char *buffer, /* I - Read buffer */
int len) /* I - Max bytes to read */
{
linux1394_dev_t *ldev; /* Linux device */
ldev = (linux1394_dev_t *)dev;
return (0);
}
/*
* 'ieee1394_write()' - Write data to a printer device.
*/
int /* O - Number of bytes written or -1 */
ieee1394_write(ieee1394_dev_t dev, /* I - Printer device */
char *buffer, /* I - Buffer to write */
int len) /* I - Number of bytes to write */
{
linux1394_dev_t *ldev; /* Linux device */
ldev = (linux1394_dev_t *)dev;
/* if (raw1394_write(handle, 0xffc0 | j, 0, ,
(quadlet_t *)guid) < 0)*/
return (len);
}
/*
* 'ieee1394_error()' - Return the last error.
*/
const char * /* O - Error string or NULL */
ieee1394_error(void)
{
if (error_string[0])
return (error_string);
else
return (NULL);
}
/*
* End of "$Id$".
*/
-268
Ver Arquivo
@@ -1,268 +0,0 @@
/*
* "$Id$"
*
* IEEE-1394 backend for the Common UNIX Printing System (CUPS).
*
* Copyright 2007 by Apple Inc.
* Copyright 2002 by Easy Software Products, all rights reserved.
*
* Redistribution and use in source and binary forms, with or
* without modification, are permitted provided that the
* following conditions are met:
*
* 1. Redistributions of source code must retain the above
* copyright notice, this list of conditions and the
* following disclaimer.
*
* 2. Redistributions in binary form must reproduce the
* above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or
* other materials provided with the distribution.
*
* 3. All advertising materials mentioning features or use
* of this software must display the following
* acknowledgement:
*
* This product includes software developed by Easy
* Software Products.
*
* 4. The name of Easy Software Products may not be used to
* endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
* BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
* DAMAGE.
*
* Contents:
*
* main() - Send a file to the printer.
* list_devices() - List all known printer devices...
*/
/*
* Include necessary headers.
*/
#include "ieee1394.h"
/*
* Local functions...
*/
void list_devices(void);
/*
* 'main()' - Send a file to the printer.
*
* Usage:
*
* printer-uri job-id user title copies options [file]
*/
int /* O - Exit status */
main(int argc, /* I - Number of command-line arguments (6 or 7) */
char *argv[]) /* I - Command-line arguments */
{
ieee1394_dev_t dev; /* Printer device */
int fp; /* Print file */
int copies; /* Number of copies to print */
int rbytes; /* Number of bytes read from device */
size_t nbytes, /* Number of bytes read from file */
tbytes; /* Total number of bytes written */
char buffer[8192]; /* Input/output buffer */
#if defined(HAVE_SIGACTION) && !defined(HAVE_SIGSET)
struct sigaction action; /* Actions for POSIX signals */
#endif /* HAVE_SIGACTION && !HAVE_SIGSET */
/*
* Make sure status messages are not buffered...
*/
setbuf(stderr, NULL);
/*
* Check command-line...
*/
if (argc == 1)
{
list_devices();
return (0);
}
else if (argc < 6 || argc > 7)
{
fprintf(stderr, "Usage: %s job-id user title copies options [file]\n",
argv[0]);
return (1);
}
/*
* If we have 7 arguments, print the file named on the command-line.
* Otherwise, send stdin instead...
*/
if (argc == 6)
{
fp = 0;
copies = 1;
}
else
{
/*
* Try to open the print file...
*/
if ((fp = open(argv[6], O_RDONLY)) < 0)
{
perror("ERROR: unable to open print file");
return (1);
}
copies = atoi(argv[4]);
}
/*
* Try to open the printer device...
*/
fputs("STATE: +connecting-to-device\n", stderr);
do
{
if ((dev = ieee1394_open(argv[0])) == NULL)
{
fputs("INFO: Firewire printer busy; will retry in 30 seconds...\n", stderr);
sleep(30);
}
}
while (dev == NULL);
fputs("STATE: -connecting-to-device\n", stderr);
/*
* Now that we are "connected" to the port, ignore SIGTERM so that we
* can finish out any page data the driver sends (e.g. to eject the
* current page... Only ignore SIGTERM if we are printing data from
* stdin (otherwise you can't cancel raw jobs...)
*/
if (argc < 7)
{
#ifdef HAVE_SIGSET /* Use System V signals over POSIX to avoid bugs */
sigset(SIGTERM, SIG_IGN);
#elif defined(HAVE_SIGACTION)
memset(&action, 0, sizeof(action));
sigemptyset(&action.sa_mask);
action.sa_handler = SIG_IGN;
sigaction(SIGTERM, &action, NULL);
#else
signal(SIGTERM, SIG_IGN);
#endif /* HAVE_SIGSET */
}
/*
* Finally, send the print file...
*/
while (copies > 0)
{
copies --;
if (fp != 0)
{
fputs("PAGE: 1 1\n", stderr);
lseek(fp, 0, SEEK_SET);
}
tbytes = 0;
while ((nbytes = read(fp, buffer, sizeof(buffer))) > 0)
{
/*
* Write the print data to the printer...
*/
tbytes += nbytes;
if (ieee1394_write(dev, buffer, nbytes) < 0)
{
perror("ERROR: Unable to send print file to printer");
break;
}
if ((rbytes = ieee1394_read(dev, buffer, sizeof(buffer))) > 0)
fprintf(stderr, "INFO: Read %d bytes from printer...\n", rbytes);
if (argc > 6)
fprintf(stderr, "INFO: Sending print file, %lu bytes...\n",
(unsigned long)tbytes);
}
}
/*
* Close the printer device and input file and return...
*/
ieee1394_close(dev);
if (fp != 0)
close(fp);
fputs("INFO: Ready to print.\n", stderr);
return (0);
}
/*
* 'list_devices()' - List all known devices...
*/
void
list_devices(void)
{
int i, /* Looping var */
num_info; /* Number of devices */
ieee1394_info_t *info; /* Devices... */
/*
* Get the available devices...
*/
info = ieee1394_list(&num_info);
/*
* List them as needed...
*/
if (num_info > 0)
{
for (i = 0; i < num_info; i ++)
printf("direct %s \"%s\" \"%s\"\n", info[i].uri,
info[i].make_model, info[i].description);
free(info);
}
}
/*
* End of "$Id$".
*/
-104
Ver Arquivo
@@ -1,104 +0,0 @@
/*
* "$Id$"
*
* IEEE-1394 header for the Common UNIX Printing System (CUPS).
*
* Copyright 2007 by Apple Inc.
* Copyright 2002 by Easy Software Products, all rights reserved.
*
* Redistribution and use in source and binary forms, with or
* without modification, are permitted provided that the
* following conditions are met:
*
* 1. Redistributions of source code must retain the above
* copyright notice, this list of conditions and the
* following disclaimer.
*
* 2. Redistributions in binary form must reproduce the
* above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or
* other materials provided with the distribution.
*
* 3. All advertising materials mentioning features or use
* of this software must display the following
* acknowledgement:
*
* This product includes software developed by Easy
* Software Products.
*
* 4. The name of Easy Software Products may not be used to
* endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
* BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
* DAMAGE.
*/
/*
* Include necessary headers.
*/
#include <cups/cups.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include <cups/string.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <signal.h>
#ifdef WIN32
# include <io.h>
#else
# include <unistd.h>
# include <fcntl.h>
#endif /* WIN32 */
/*
* Device information structure...
*/
typedef struct
{
char uri[HTTP_MAX_URI], /* Device URI */
description[128], /* Description of port */
make_model[128]; /* Make and model */
} ieee1394_info_t;
/*
* Private device connection information...
*/
typedef void *ieee1394_dev_t;
/*
* Prototypes for standard IEEE-1394 interface...
*/
extern ieee1394_info_t *ieee1394_list(int *num_devices);
extern ieee1394_dev_t ieee1394_open(const char *uri);
extern int ieee1394_close(ieee1394_dev_t dev);
extern int ieee1394_read(ieee1394_dev_t dev, char *buffer, int len);
extern int ieee1394_write(ieee1394_dev_t dev, char *buffer, int len);
extern const char *ieee1394_error(void);
/*
* End of "$Id$".
*/
+2641 -874
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+461 -467
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+301
Ver Arquivo
@@ -0,0 +1,301 @@
/*
* Common backend network APIs for CUPS.
*
* 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
* 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.
*/
/*
* Include necessary headers.
*/
#include "backend-private.h"
#include <limits.h>
#include <sys/select.h>
/*
* 'backendCheckSideChannel()' - Check the side-channel for pending requests.
*/
void
backendCheckSideChannel(
int snmp_fd, /* I - SNMP socket */
http_addr_t *addr) /* I - Address of device */
{
fd_set input; /* Select input set */
struct timeval timeout; /* Select timeout */
FD_ZERO(&input);
FD_SET(CUPS_SC_FD, &input);
timeout.tv_sec = timeout.tv_usec = 0;
if (select(CUPS_SC_FD + 1, &input, NULL, NULL, &timeout) > 0)
backendNetworkSideCB(-1, -1, snmp_fd, addr, 0);
}
/*
* 'backendNetworkSideCB()' - Handle common network side-channel commands.
*/
int /* O - -1 on error, 0 on success */
backendNetworkSideCB(
int print_fd, /* I - Print file or -1 */
int device_fd, /* I - Device file or -1 */
int snmp_fd, /* I - SNMP socket */
http_addr_t *addr, /* I - Address of device */
int use_bc) /* I - Use back-channel data? */
{
cups_sc_command_t command; /* Request command */
cups_sc_status_t status; /* Request/response status */
char data[65536]; /* Request/response data */
int datalen; /* Request/response data size */
const char *device_id; /* 1284DEVICEID env var */
datalen = sizeof(data);
if (cupsSideChannelRead(&command, &status, data, &datalen, 1.0))
return (-1);
switch (command)
{
case CUPS_SC_CMD_DRAIN_OUTPUT :
/*
* Our sockets disable the Nagle algorithm and data is sent immediately.
*/
if (device_fd < 0)
status = CUPS_SC_STATUS_NOT_IMPLEMENTED;
else if (backendDrainOutput(print_fd, device_fd))
status = CUPS_SC_STATUS_IO_ERROR;
else
status = CUPS_SC_STATUS_OK;
datalen = 0;
break;
case CUPS_SC_CMD_GET_BIDI :
status = CUPS_SC_STATUS_OK;
data[0] = (char)use_bc;
datalen = 1;
break;
case CUPS_SC_CMD_SNMP_GET :
case CUPS_SC_CMD_SNMP_GET_NEXT :
fprintf(stderr, "DEBUG: CUPS_SC_CMD_SNMP_%s: %d (%s)\n",
command == CUPS_SC_CMD_SNMP_GET ? "GET" : "GET_NEXT", datalen,
data);
if (datalen < 2)
{
status = CUPS_SC_STATUS_BAD_MESSAGE;
datalen = 0;
break;
}
if (snmp_fd >= 0)
{
char *dataptr; /* Pointer into data */
cups_snmp_t packet; /* Packet from printer */
const char *snmp_value; /* CUPS_SNMP_VALUE env var */
if ((snmp_value = getenv("CUPS_SNMP_VALUE")) != NULL)
{
const char *snmp_count; /* CUPS_SNMP_COUNT env var */
int count; /* Repetition count */
if ((snmp_count = getenv("CUPS_SNMP_COUNT")) != NULL)
{
if ((count = atoi(snmp_count)) <= 0)
count = 1;
}
else
count = 1;
for (dataptr = data + strlen(data) + 1;
count > 0 && dataptr < (data + sizeof(data) - 1);
count --, dataptr += strlen(dataptr))
strlcpy(dataptr, snmp_value, sizeof(data) - (size_t)(dataptr - data));
fprintf(stderr, "DEBUG: Returning %s %s\n", data,
data + strlen(data) + 1);
status = CUPS_SC_STATUS_OK;
datalen = (int)(dataptr - data);
break;
}
if (!_cupsSNMPStringToOID(data, packet.object_name, CUPS_SNMP_MAX_OID))
{
status = CUPS_SC_STATUS_BAD_MESSAGE;
datalen = 0;
break;
}
status = CUPS_SC_STATUS_IO_ERROR;
datalen = 0;
if (_cupsSNMPWrite(snmp_fd, addr, CUPS_SNMP_VERSION_1,
_cupsSNMPDefaultCommunity(),
command == CUPS_SC_CMD_SNMP_GET ?
CUPS_ASN1_GET_REQUEST :
CUPS_ASN1_GET_NEXT_REQUEST, 1,
packet.object_name))
{
if (_cupsSNMPRead(snmp_fd, &packet, 1.0))
{
size_t i; /* Looping var */
if (!_cupsSNMPOIDToString(packet.object_name, data, sizeof(data)))
{
fputs("DEBUG: Bad OID returned!\n", stderr);
break;
}
datalen = (int)strlen(data) + 1;
dataptr = data + datalen;
switch (packet.object_type)
{
case CUPS_ASN1_BOOLEAN :
snprintf(dataptr, sizeof(data) - (size_t)(dataptr - data), "%d", packet.object_value.boolean);
datalen += (int)strlen(dataptr);
break;
case CUPS_ASN1_INTEGER :
snprintf(dataptr, sizeof(data) - (size_t)(dataptr - data), "%d",
packet.object_value.integer);
datalen += (int)strlen(dataptr);
break;
case CUPS_ASN1_BIT_STRING :
case CUPS_ASN1_OCTET_STRING :
if (packet.object_value.string.num_bytes < (sizeof(data) - (size_t)(dataptr - data)))
i = packet.object_value.string.num_bytes;
else
i = sizeof(data) - (size_t)(dataptr - data);
memcpy(dataptr, packet.object_value.string.bytes, i);
datalen += (int)i;
break;
case CUPS_ASN1_OID :
_cupsSNMPOIDToString(packet.object_value.oid, dataptr,
sizeof(data) - (size_t)(dataptr - data));
datalen += (int)strlen(dataptr);
break;
case CUPS_ASN1_HEX_STRING :
for (i = 0;
i < packet.object_value.string.num_bytes &&
dataptr < (data + sizeof(data) - 3);
i ++, dataptr += 2)
sprintf(dataptr, "%02X", packet.object_value.string.bytes[i]);
datalen += (int)strlen(dataptr);
break;
case CUPS_ASN1_COUNTER :
snprintf(dataptr, sizeof(data) - (size_t)(dataptr - data), "%u", packet.object_value.counter);
datalen += (int)strlen(dataptr);
break;
case CUPS_ASN1_GAUGE :
snprintf(dataptr, sizeof(data) - (size_t)(dataptr - data), "%u", packet.object_value.gauge);
datalen += (int)strlen(dataptr);
break;
case CUPS_ASN1_TIMETICKS :
snprintf(dataptr, sizeof(data) - (size_t)(dataptr - data), "%u", packet.object_value.timeticks);
datalen += (int)strlen(dataptr);
break;
default :
fprintf(stderr, "DEBUG: Unknown OID value type %02X.\n", packet.object_type);
case CUPS_ASN1_NULL_VALUE :
dataptr[0] = '\0';
break;
}
fprintf(stderr, "DEBUG: Returning %s %s\n", data, data + datalen);
status = CUPS_SC_STATUS_OK;
}
else
fputs("DEBUG: SNMP read error...\n", stderr);
}
else
fputs("DEBUG: SNMP write error...\n", stderr);
break;
}
status = CUPS_SC_STATUS_NOT_IMPLEMENTED;
datalen = 0;
break;
case CUPS_SC_CMD_GET_CONNECTED :
status = CUPS_SC_STATUS_OK;
data[0] = device_fd != -1;
datalen = 1;
break;
case CUPS_SC_CMD_GET_DEVICE_ID :
if (snmp_fd >= 0)
{
cups_snmp_t packet; /* Packet from printer */
static const int ppmPrinterIEEE1284DeviceId[] =
{ CUPS_OID_ppmPrinterIEEE1284DeviceId,1,-1 };
status = CUPS_SC_STATUS_IO_ERROR;
datalen = 0;
if (_cupsSNMPWrite(snmp_fd, addr, CUPS_SNMP_VERSION_1,
_cupsSNMPDefaultCommunity(),
CUPS_ASN1_GET_REQUEST, 1,
ppmPrinterIEEE1284DeviceId))
{
if (_cupsSNMPRead(snmp_fd, &packet, 1.0) &&
packet.object_type == CUPS_ASN1_OCTET_STRING)
{
strlcpy(data, (char *)packet.object_value.string.bytes,
sizeof(data));
datalen = (int)strlen(data);
status = CUPS_SC_STATUS_OK;
}
}
break;
}
if ((device_id = getenv("1284DEVICEID")) != NULL)
{
strlcpy(data, device_id, sizeof(data));
datalen = (int)strlen(data);
status = CUPS_SC_STATUS_OK;
break;
}
default :
status = CUPS_SC_STATUS_NOT_IMPLEMENTED;
datalen = 0;
break;
}
return (cupsSideChannelWrite(command, status, data, datalen, 1.0));
}
+249
Ver Arquivo
@@ -0,0 +1,249 @@
# USB backend 'quirks' file.
#
# This file lists known issues with various vendors or printers. Each
# line contains either a comment (starting with #) or the USB vendor ID,
# product ID (omit for all vendor products), and a list of known issues:
#
# blacklist The printer is not functional with the USB backend.
# 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
# usb-init Needs vendor USB initialization string.
# vendor-class Uses vendor-specific class or subclass.
# whitelist The printer is functional with the USB backend.
# HP DeskJet 895C
0x03f0 0x0004 unidir
# HP DeskJet 880C
0x03f0 0x0104 unidir
# HP DeskJet 815C
0x03f0 0x0204 unidir
# HP DeskJet 810C/812C
0x03f0 0x0304 unidir
# HP DeskJet 830C
0x03f0 0x0404 unidir
# HP DeskJet 885C
0x03f0 0x0504 unidir
# HP DeskJet 840C
0x03f0 0x0604 unidir
# HP DeskJet 816C
0x03f0 0x0804 unidir
# HP Deskjet 959C
0x03f0 0x1104 unidir
# NEC Picty900 (HP OEM)
0x0409 0xefbe unidir
# NEC Picty760 (HP OEM)
0x0409 0xbef4 unidir
# NEC Picty920 (HP OEM)
0x0409 0xf0be unidir
# NEC Picty800 (HP OEM)
0x0409 0xf1be unidir
# Lexmark International, Inc. (e250d) (https://bugs.launchpad.net/bugs/1084164)
0x043d 0x00f3 no-reattach
# Kyocera Mita FS 820, by zut <kernel@zut.de>
0x0482 0x0010 unidir
# Canon, Inc. PIXMA iP6000D Printer (https://bugs.launchpad.net/bugs/1160638)
0x04a9 0x1095 unidir
# Canon, Inc. PIXMA iP4200 Printer (Issue #4155)
0x04a9 0x10a2 unidir
# Canon, Inc. PIXMA iP4300 Printer (https://bugs.launchpad.net/bugs/1032385)
0x04a9 0x10b6 unidir
# Canon, Inc. MP210 (https://bugzilla.redhat.com/show_bug.cgi?id=847923#c53)
0x04a9 0x1721 unidir
# Canon, Inc. MP500 Printer (https://bugs.launchpad.net/bugs/1032456)
0x04a9 0x170c unidir
# Canon, Inc. MP510 Printer (https://bugs.launchpad.net/bugs/1050009)
0x04a9 0x1717 unidir
# Canon, Inc. MP550 Printer (Issue #4155)
0x04a9 0x173d unidir
# Canon, Inc. MP560 Printer (Issue #4155)
0x04a9 0x173e unidir
# 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)
0x04f9 0x0007 no-reattach
# Brother Industries, Ltd HL-1430 Laser Printer (https://bugs.launchpad.net/bugs/1038695)
0x04f9 0x001a no-reattach
# Brother Industries, Ltd HL-1440 Laser Printer (https://bugs.launchpad.net/bugs/1000253)
0x04f9 0x000d no-reattach unidir
# Brother Industries, Ltd HL-1450 Laser Printer (https://bugs.launchpad.net/bugs/1000253)
0x04f9 0x000e no-reattach unidir
# Oki Data Corp. Okipage 14ex Printer (https://bugs.launchpad.net/bugs/872483)
0x06bc 0x000b no-reattach
# Oki Data Corp. B410d (https://bugs.launchpad.net/bugs/872483)
0x06bc 0x01c7 no-reattach
# Seiko Epson Corp. Stylus Color 740 / Photo 750 (http://bugs.debian.org/697970)
0x04b8 0x0001 no-reattach unidir
# Seiko Epson Corp. Stylus Color 670 (https://bugs.launchpad.net/bugs/872483)
0x04b8 0x0005 no-reattach
# Seiko Epson Receipt Printer M129C
0x04b8 0x0202 vendor-class
# Prolific Technology, Inc. PL2305 Parallel Port (USB -> Parallel adapter) (https://bugs.launchpad.net/bugs/987485)
0x067b 0x2305 no-reattach soft-reset unidir
# Xerox Phaser 3124 https://bugzilla.redhat.com/show_bug.cgi?id=867392
0x0924 0x3ce9 no-reattach
# Xerox WorkCentre 3210 https://bugs.launchpad.net/bugs/1102470
0x0924 0x4293 no-reattach
# QinHeng Electronics CH340S (USB -> Parallel adapter) (https://bugs.launchpad.net/bugs/1000253)
0x1a86 0x7584 no-reattach
# All Samsung devices (https://bugs.launchpad.net/bugs/1032456)
0x04e8 soft-reset
# All Zebra devices (https://bugs.launchpad.net/bugs/1001028)
0x0a5f unidir
# Canon CP-10
0x04a9 0x304a blacklist
# Canon CP-100
0x04a9 0x3063 blacklist
# Canon CP-200
0x04a9 0x307c blacklist
# Canon CP-300
0x04a9 0x307d blacklist
# Canon CP-220
0x04a9 0x30bd blacklist
# Canon CP-330
0x04a9 0x30be blacklist
# Canon SELPHY CP400
0x04a9 0x30f6 blacklist
# Canon SELPHY CP600
0x04a9 0x310b blacklist
# Canon SELPHY CP710
0x04a9 0x3127 blacklist
# Canon SELPHY CP510
0x04a9 0x3128 blacklist
# Canon SELPHY ES1
0x04a9 0x3141 blacklist
# Canon SELPHY CP730
0x04a9 0x3142 blacklist
# Canon SELPHY CP720
0x04a9 0x3143 blacklist
# Canon SELPHY CP750
0x04a9 0x3170 blacklist
# Canon SELPHY CP740
0x04a9 0x3171 blacklist
# Canon SELPHY ES2
0x04a9 0x3185 blacklist
# Canon SELPHY ES20
0x04a9 0x3186 blacklist
# Canon SELPHY CP770
0x04a9 0x31aa blacklist
# Canon SELPHY CP760
0x04a9 0x31ab blacklist
# Canon SELPHY ES30
0x04a9 0x31b0 blacklist
# Canon SELPHY CP780
0x04a9 0x31dd blacklist
# Canon SELPHY ES40
0x04a9 0x31ee blacklist
# Canon SELPHY CP800
0x04a9 0x3214 blacklist
# Canon SELPHY CP900
0x04a9 0x3255 blacklist
# Canon SELPHY CP810
0x04a9 0x3256 blacklist
# Canon SELPHY CP500
0x04a9 0x30f5 blacklist
# Canon SELPHY ES3
0x04a9 0x31af blacklist
# Canon SELPHY CP780
0x04a9 0x31dd blacklist
# Lexmark E238 (<rdar://problem/14493054>)
0x043d 0x00d7 no-reattach
# Lexmark E238 (Issue #4448)
0x043d 0x009a no-reattach
# Canon MX310 (Issue #4482)
0x04a9 0x1728 unidir
# Canon MX320 (Issue #4482)
0x04A9 0x1736 unidir
# All Intermec devices (Issue #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
-1688
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
-671
Ver Arquivo
@@ -1,671 +0,0 @@
/*
* "$Id$"
*
* Parallel port backend for the Common UNIX Printing System (CUPS).
*
* Copyright 2007 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
* "LICENSE" which should have been included with this file. If this
* file is missing or damaged, see the license at "http://www.cups.org/".
*
* This file is subject to the Apple OS-Developed Software exception.
*
* Contents:
*
* main() - Send a file to the specified parallel port.
* list_devices() - List all parallel devices.
* side_cb() - Handle side-channel requests...
*/
/*
* Include necessary headers.
*/
#include "backend-private.h"
#ifdef __hpux
# include <sys/time.h>
#else
# include <sys/select.h>
#endif /* __hpux */
#ifdef WIN32
# include <io.h>
#else
# include <unistd.h>
# include <fcntl.h>
# include <termios.h>
# include <sys/socket.h>
#endif /* WIN32 */
#ifdef __sgi
# include <invent.h>
# ifndef INV_EPP_ECP_PLP
# define INV_EPP_ECP_PLP 6 /* From 6.3/6.4/6.5 sys/invent.h */
# define INV_ASO_SERIAL 14 /* serial portion of SGI ASO board */
# define INV_IOC3_DMA 16 /* DMA mode IOC3 serial */
# define INV_IOC3_PIO 17 /* PIO mode IOC3 serial */
# define INV_ISA_DMA 19 /* DMA mode ISA serial -- O2 */
# endif /* !INV_EPP_ECP_PLP */
#endif /* __sgi */
/*
* Local functions...
*/
static void list_devices(void);
static void side_cb(int print_fd, int device_fd, int use_bc);
/*
* 'main()' - Send a file to the specified parallel port.
*
* Usage:
*
* printer-uri job-id user title copies options [file]
*/
int /* O - Exit status */
main(int argc, /* I - Number of command-line arguments (6 or 7) */
char *argv[]) /* I - Command-line arguments */
{
char method[255], /* Method in URI */
hostname[1024], /* Hostname */
username[255], /* Username info (not used) */
resource[1024], /* Resource info (device and options) */
*options; /* Pointer to options */
int port; /* Port number (not used) */
int print_fd, /* Print file */
device_fd, /* Parallel device */
use_bc; /* Read back-channel data? */
int copies; /* Number of copies to print */
size_t tbytes; /* Total number of bytes written */
struct termios opts; /* Parallel port options */
#if defined(HAVE_SIGACTION) && !defined(HAVE_SIGSET)
struct sigaction action; /* Actions for POSIX signals */
#endif /* HAVE_SIGACTION && !HAVE_SIGSET */
/*
* Make sure status messages are not buffered...
*/
setbuf(stderr, NULL);
/*
* Ignore SIGPIPE signals...
*/
#ifdef HAVE_SIGSET
sigset(SIGPIPE, SIG_IGN);
#elif defined(HAVE_SIGACTION)
memset(&action, 0, sizeof(action));
action.sa_handler = SIG_IGN;
sigaction(SIGPIPE, &action, NULL);
#else
signal(SIGPIPE, SIG_IGN);
#endif /* HAVE_SIGSET */
/*
* Check command-line...
*/
if (argc == 1)
{
list_devices();
return (CUPS_BACKEND_OK);
}
else if (argc < 6 || argc > 7)
{
_cupsLangPrintf(stderr,
_("Usage: %s job-id user title copies options [file]\n"),
argv[0]);
return (CUPS_BACKEND_FAILED);
}
/*
* If we have 7 arguments, print the file named on the command-line.
* Otherwise, send stdin instead...
*/
if (argc == 6)
{
print_fd = 0;
copies = 1;
}
else
{
/*
* Try to open the print file...
*/
if ((print_fd = open(argv[6], O_RDONLY)) < 0)
{
perror("ERROR: unable to open print file");
return (CUPS_BACKEND_FAILED);
}
copies = atoi(argv[4]);
}
/*
* Extract the device name and options from the URI...
*/
httpSeparateURI(HTTP_URI_CODING_ALL, cupsBackendDeviceURI(argv),
method, sizeof(method), username, sizeof(username),
hostname, sizeof(hostname), &port,
resource, sizeof(resource));
/*
* See if there are any options...
*/
if ((options = strchr(resource, '?')) != NULL)
{
/*
* Yup, terminate the device name string and move to the first
* character of the options...
*/
*options++ = '\0';
}
/*
* Open the parallel port device...
*/
fputs("STATE: +connecting-to-device\n", stderr);
do
{
#if defined(__linux) || defined(__FreeBSD__)
/*
* The Linux and FreeBSD parallel port drivers currently are broken WRT
* select() and bidirection I/O...
*/
device_fd = open(resource, O_WRONLY | O_EXCL);
use_bc = 0;
#else
if ((device_fd = open(resource, O_RDWR | O_EXCL)) < 0)
{
device_fd = open(resource, O_WRONLY | O_EXCL);
use_bc = 0;
}
else
use_bc = 1;
#endif /* __linux || __FreeBSD__ */
if (device_fd == -1)
{
if (getenv("CLASS") != NULL)
{
/*
* If the CLASS environment variable is set, the job was submitted
* to a class and not to a specific queue. In this case, we want
* to abort immediately so that the job can be requeued on the next
* available printer in the class.
*/
_cupsLangPuts(stderr,
_("INFO: Unable to contact printer, queuing on next "
"printer in class...\n"));
/*
* Sleep 5 seconds to keep the job from requeuing too rapidly...
*/
sleep(5);
return (CUPS_BACKEND_FAILED);
}
if (errno == EBUSY)
{
_cupsLangPuts(stderr,
_("INFO: Printer busy; will retry in 30 seconds...\n"));
sleep(30);
}
else if (errno == ENXIO || errno == EIO || errno == ENOENT)
{
_cupsLangPuts(stderr,
_("INFO: Printer not connected; will retry in 30 "
"seconds...\n"));
sleep(30);
}
else
{
_cupsLangPrintf(stderr,
_("ERROR: Unable to open device file \"%s\": %s\n"),
resource, strerror(errno));
return (CUPS_BACKEND_FAILED);
}
}
}
while (device_fd < 0);
fputs("STATE: -connecting-to-device\n", stderr);
/*
* Set any options provided...
*/
tcgetattr(device_fd, &opts);
opts.c_lflag &= ~(ICANON | ECHO | ISIG); /* Raw mode */
/**** No options supported yet ****/
tcsetattr(device_fd, TCSANOW, &opts);
/*
* Finally, send the print file...
*/
tbytes = 0;
while (copies > 0 && tbytes >= 0)
{
copies --;
if (print_fd != 0)
{
fputs("PAGE: 1 1\n", stderr);
lseek(print_fd, 0, SEEK_SET);
}
tbytes = backendRunLoop(print_fd, device_fd, use_bc, side_cb);
if (print_fd != 0 && tbytes >= 0)
_cupsLangPrintf(stderr,
#ifdef HAVE_LONG_LONG
_("INFO: Sent print file, %lld bytes...\n"),
#else
_("INFO: Sent print file, %ld bytes...\n"),
#endif /* HAVE_LONG_LONG */
CUPS_LLCAST tbytes);
}
/*
* Close the socket connection and input file and return...
*/
close(device_fd);
if (print_fd != 0)
close(print_fd);
return (tbytes < 0 ? CUPS_BACKEND_FAILED : CUPS_BACKEND_OK);
}
/*
* 'list_devices()' - List all parallel devices.
*/
static void
list_devices(void)
{
#if defined(__hpux) || defined(__sgi) || defined(__sun)
static char *funky_hex = "0123456789abcdefghijklmnopqrstuvwxyz";
/* Funky hex numbering used for some devices */
#endif /* __hpux || __sgi || __sun */
#ifdef __linux
int i; /* Looping var */
int fd; /* File descriptor */
char device[255], /* Device filename */
basedevice[255], /* Base device filename for ports */
device_id[1024], /* Device ID string */
make_model[1024]; /* Make and model */
if (!access("/dev/parallel/", 0))
strcpy(basedevice, "/dev/parallel/");
else if (!access("/dev/printers/", 0))
strcpy(basedevice, "/dev/printers/");
else
strcpy(basedevice, "/dev/lp");
for (i = 0; i < 4; i ++)
{
/*
* Open the port, if available...
*/
sprintf(device, "%s%d", basedevice, i);
if ((fd = open(device, O_RDWR | O_EXCL)) < 0)
fd = open(device, O_WRONLY);
if (fd >= 0)
{
/*
* Now grab the IEEE 1284 device ID string...
*/
if (!backendGetDeviceID(fd, device_id, sizeof(device_id),
make_model, sizeof(make_model),
NULL, NULL, 0))
printf("direct parallel:%s \"%s\" \"%s LPT #%d\" \"%s\"\n", device,
make_model, make_model, i + 1, device_id);
else
printf("direct parallel:%s \"Unknown\" \"LPT #%d\"\n", device, i + 1);
close(fd);
}
}
#elif defined(__sgi)
int i, j, n; /* Looping vars */
char device[255]; /* Device filename */
inventory_t *inv; /* Hardware inventory info */
/*
* IRIX maintains a hardware inventory of most devices...
*/
setinvent();
while ((inv = getinvent()) != NULL)
{
if (inv->inv_class == INV_PARALLEL &&
(inv->inv_type == INV_ONBOARD_PLP ||
inv->inv_type == INV_EPP_ECP_PLP))
{
/*
* Standard parallel port...
*/
puts("direct parallel:/dev/plp \"Unknown\" \"Onboard Parallel Port\"");
}
else if (inv->inv_class == INV_PARALLEL &&
inv->inv_type == INV_EPC_PLP)
{
/*
* EPC parallel port...
*/
printf("direct parallel:/dev/plp%d \"Unknown\" \"Integral EPC parallel port, Ebus slot %d\"\n",
inv->inv_controller, inv->inv_controller);
}
}
endinvent();
/*
* Central Data makes serial and parallel "servers" that can be
* connected in a number of ways. Look for ports...
*/
for (i = 0; i < 10; i ++)
for (j = 0; j < 8; j ++)
for (n = 0; n < 32; n ++)
{
if (i == 8) /* EtherLite */
sprintf(device, "/dev/lpn%d%c", j, funky_hex[n]);
else if (i == 9) /* PCI */
sprintf(device, "/dev/lpp%d%c", j, funky_hex[n]);
else /* SCSI */
sprintf(device, "/dev/lp%d%d%c", i, j, funky_hex[n]);
if (access(device, 0) == 0)
{
if (i == 8)
printf("direct parallel:%s \"Unknown\" \"Central Data EtherLite Parallel Port, ID %d, port %d\"\n",
device, j, n);
else if (i == 9)
printf("direct parallel:%s \"Unknown\" \"Central Data PCI Parallel Port, ID %d, port %d\"\n",
device, j, n);
else
printf("direct parallel:%s \"Unknown\" \"Central Data SCSI Parallel Port, logical bus %d, ID %d, port %d\"\n",
device, i, j, n);
}
}
#elif defined(__sun)
int i, j, n; /* Looping vars */
char device[255]; /* Device filename */
/*
* Standard parallel ports...
*/
for (i = 0; i < 10; i ++)
{
sprintf(device, "/dev/ecpp%d", i);
if (access(device, 0) == 0)
printf("direct parallel:%s \"Unknown\" \"Sun IEEE-1284 Parallel Port #%d\"\n",
device, i + 1);
}
for (i = 0; i < 10; i ++)
{
sprintf(device, "/dev/bpp%d", i);
if (access(device, 0) == 0)
printf("direct parallel:%s \"Unknown\" \"Sun Standard Parallel Port #%d\"\n",
device, i + 1);
}
for (i = 0; i < 3; i ++)
{
sprintf(device, "/dev/lp%d", i);
if (access(device, 0) == 0)
printf("direct parallel:%s \"Unknown\" \"PC Parallel Port #%d\"\n",
device, i + 1);
}
/*
* MAGMA parallel ports...
*/
for (i = 0; i < 40; i ++)
{
sprintf(device, "/dev/pm%02d", i);
if (access(device, 0) == 0)
printf("direct parallel:%s \"Unknown\" \"MAGMA Parallel Board #%d Port #%d\"\n",
device, (i / 10) + 1, (i % 10) + 1);
}
/*
* Central Data parallel ports...
*/
for (i = 0; i < 9; i ++)
for (j = 0; j < 8; j ++)
for (n = 0; n < 32; n ++)
{
if (i == 8) /* EtherLite */
sprintf(device, "/dev/sts/lpN%d%c", j, funky_hex[n]);
else
sprintf(device, "/dev/sts/lp%c%d%c", i + 'C', j,
funky_hex[n]);
if (access(device, 0) == 0)
{
if (i == 8)
printf("direct parallel:%s \"Unknown\" \"Central Data EtherLite Parallel Port, ID %d, port %d\"\n",
device, j, n);
else
printf("direct parallel:%s \"Unknown\" \"Central Data SCSI Parallel Port, logical bus %d, ID %d, port %d\"\n",
device, i, j, n);
}
}
#elif defined(__hpux)
int i, j, n; /* Looping vars */
char device[255]; /* Device filename */
/*
* Standard parallel ports...
*/
if (access("/dev/rlp", 0) == 0)
puts("direct parallel:/dev/rlp \"Unknown\" \"Standard Parallel Port (/dev/rlp)\"");
for (i = 0; i < 7; i ++)
for (j = 0; j < 7; j ++)
{
sprintf(device, "/dev/c%dt%dd0_lp", i, j);
if (access(device, 0) == 0)
printf("direct parallel:%s \"Unknown\" \"Parallel Port #%d,%d\"\n",
device, i, j);
}
/*
* Central Data parallel ports...
*/
for (i = 0; i < 9; i ++)
for (j = 0; j < 8; j ++)
for (n = 0; n < 32; n ++)
{
if (i == 8) /* EtherLite */
sprintf(device, "/dev/lpN%d%c", j, funky_hex[n]);
else
sprintf(device, "/dev/lp%c%d%c", i + 'C', j,
funky_hex[n]);
if (access(device, 0) == 0)
{
if (i == 8)
printf("direct parallel:%s \"Unknown\" \"Central Data EtherLite Parallel Port, ID %d, port %d\"\n",
device, j, n);
else
printf("direct parallel:%s \"Unknown\" \"Central Data SCSI Parallel Port, logical bus %d, ID %d, port %d\"\n",
device, i, j, n);
}
}
#elif defined(__osf__)
int i; /* Looping var */
int fd; /* File descriptor */
char device[255]; /* Device filename */
for (i = 0; i < 3; i ++)
{
sprintf(device, "/dev/lp%d", i);
if ((fd = open(device, O_WRONLY)) >= 0)
{
close(fd);
printf("direct parallel:%s \"Unknown\" \"Parallel Port #%d\"\n", device, i + 1);
}
}
#elif defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__) || defined(__DragonFly__)
int i; /* Looping var */
int fd; /* File descriptor */
char device[255]; /* Device filename */
for (i = 0; i < 3; i ++)
{
sprintf(device, "/dev/lpt%d", i);
if ((fd = open(device, O_WRONLY)) >= 0)
{
close(fd);
printf("direct parallel:%s \"Unknown\" \"Parallel Port #%d (interrupt-driven)\"\n", device, i + 1);
}
sprintf(device, "/dev/lpa%d", i);
if ((fd = open(device, O_WRONLY)) >= 0)
{
close(fd);
printf("direct parallel:%s \"Unknown\" \"Parallel Port #%d (polled)\"\n", device, i + 1);
}
}
#elif defined(_AIX)
int i; /* Looping var */
int fd; /* File descriptor */
char device[255]; /* Device filename */
for (i = 0; i < 8; i ++)
{
sprintf(device, "/dev/lp%d", i);
if ((fd = open(device, O_WRONLY)) >= 0)
{
close(fd);
printf("direct parallel:%s \"Unknown\" \"Parallel Port #%d\"\n", device, i + 1);
}
}
#endif
}
/*
* 'side_cb()' - Handle side-channel requests...
*/
static void
side_cb(int print_fd, /* I - Print file */
int device_fd, /* I - Device file */
int use_bc) /* I - Using back-channel? */
{
cups_sc_command_t command; /* Request command */
cups_sc_status_t status; /* Request/response status */
char data[2048]; /* Request/response data */
int datalen; /* Request/response data size */
datalen = sizeof(data);
if (cupsSideChannelRead(&command, &status, data, &datalen, 1.0))
{
_cupsLangPuts(stderr, _("WARNING: Failed to read side-channel request!\n"));
return;
}
switch (command)
{
case CUPS_SC_CMD_DRAIN_OUTPUT :
if (backendDrainOutput(print_fd, device_fd))
status = CUPS_SC_STATUS_IO_ERROR;
else if (tcdrain(device_fd))
status = CUPS_SC_STATUS_IO_ERROR;
else
status = CUPS_SC_STATUS_OK;
datalen = 0;
break;
case CUPS_SC_CMD_GET_BIDI :
data[0] = use_bc;
datalen = 1;
break;
case CUPS_SC_CMD_GET_DEVICE_ID :
memset(data, 0, sizeof(data));
if (backendGetDeviceID(device_fd, data, sizeof(data) - 1,
NULL, 0, NULL, NULL, 0))
{
status = CUPS_SC_STATUS_NOT_IMPLEMENTED;
datalen = 0;
}
else
{
status = CUPS_SC_STATUS_OK;
datalen = strlen(data);
}
break;
default :
status = CUPS_SC_STATUS_NOT_IMPLEMENTED;
datalen = 0;
break;
}
cupsSideChannelWrite(command, status, data, datalen, 1.0);
}
/*
* End of "$Id$".
*/
+24
Ver Arquivo
@@ -0,0 +1,24 @@
#!/bin/sh
#
# Psuedo-backend for CUPS testing purposes.
#
# Copyright 2011 by Apple Inc.
#
# These coded instructions, statements, and computer programs are the
# property of Apple Inc. and are protected by Federal copyright
# law. Distribution and use rights are outlined in the file "LICENSE.txt"
# which should have been included with this file. If this file is
# file is missing or damaged, see the license at "http://www.cups.org/".
#
# This file is subject to the Apple OS-Developed Software exception.
#
if test $# = 0; then
echo 'direct pseudo:///deskjet "HP DeskJet" "HP DeskJet (pseudo)" "MFG:HP;MDL:DeskJet;CMD:PCL;" "Nowhere"'
echo 'direct pseudo:///laserjet "HP LaserJet" "HP LaserJet (pseudo)" "MFG:HP;MDL:LaserJet;CMD:PCL;" "Nowhere"'
exit 0
fi
cat $6 >/dev/null
sleep 5
exit 0
+205 -58
Ver Arquivo
@@ -1,23 +1,16 @@
/*
* "$Id$"
* Common run loop APIs for CUPS backends.
*
* Common run loop APIs for the Common UNIX Printing System (CUPS).
* Copyright 2007-2014 by Apple Inc.
* Copyright 2006-2007 by Easy Software Products, all rights reserved.
*
* Copyright 2007 by Apple Inc.
* Copyright 2006-2007 by Easy Software Products, all rights reserved.
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
* "LICENSE" which should have been included with this file. If this
* file is missing or damaged, see the license at "http://www.cups.org/".
*
* 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:
*
* backendDrainOutput() - Drain pending print data to the device.
* backendRunLoop() - Read and write print and back-channel data.
* This file is subject to the Apple OS-Developed Software exception.
*/
/*
@@ -25,11 +18,8 @@
*/
#include "backend-private.h"
#ifdef __hpux
# include <sys/time.h>
#else
# include <sys/select.h>
#endif /* __hpux */
#include <limits.h>
#include <sys/select.h>
/*
@@ -89,7 +79,8 @@ backendDrainOutput(int print_fd, /* I - Print file descriptor */
if (errno != EAGAIN || errno != EINTR)
{
perror("ERROR: Unable to read print data");
fprintf(stderr, "DEBUG: Read failed: %s\n", strerror(errno));
_cupsLangPrintFilter(stderr, "ERROR", _("Unable to read print data."));
return (-1);
}
@@ -109,7 +100,7 @@ backendDrainOutput(int print_fd, /* I - Print file descriptor */
for (print_ptr = print_buffer; print_bytes > 0;)
{
if ((bytes = write(device_fd, print_ptr, print_bytes)) < 0)
if ((bytes = write(device_fd, print_ptr, (size_t)print_bytes)) < 0)
{
/*
* Write error - bail if we don't see an error we can retry...
@@ -118,8 +109,7 @@ backendDrainOutput(int print_fd, /* I - Print file descriptor */
if (errno != ENOSPC && errno != ENXIO && errno != EAGAIN &&
errno != EINTR && errno != ENOTTY)
{
_cupsLangPrintf(stderr, _("ERROR: Unable to write print data: %s\n"),
strerror(errno));
_cupsLangPrintError("ERROR", _("Unable to write print data"));
return (-1);
}
}
@@ -141,10 +131,13 @@ backendDrainOutput(int print_fd, /* I - Print file descriptor */
ssize_t /* O - Total bytes on success, -1 on error */
backendRunLoop(
int print_fd, /* I - Print file descriptor */
int device_fd, /* I - Device file descriptor */
int use_bc, /* I - Use back-channel? */
void (*side_cb)(int, int, int)) /* I - Side-channel callback */
int print_fd, /* I - Print file descriptor */
int device_fd, /* I - Device file descriptor */
int snmp_fd, /* I - SNMP socket or -1 if none */
http_addr_t *addr, /* I - Address of device */
int use_bc, /* I - Use back-channel? */
int update_state, /* I - Update printer-state-reasons? */
_cups_sccb_t side_cb) /* I - Side-channel callback */
{
int nfds; /* Maximum file descriptor value + 1 */
fd_set input, /* Input set for reading */
@@ -158,15 +151,18 @@ backendRunLoop(
char print_buffer[8192], /* Print data buffer */
*print_ptr, /* Pointer into print data buffer */
bc_buffer[1024]; /* Back-channel data buffer */
struct timeval timeout; /* Timeout for select() */
time_t curtime, /* Current time */
snmp_update = 0;
#if defined(HAVE_SIGACTION) && !defined(HAVE_SIGSET)
struct sigaction action; /* Actions for POSIX signals */
#endif /* HAVE_SIGACTION && !HAVE_SIGSET */
fprintf(stderr,
"DEBUG: backendRunLoop(print_fd=%d, device_fd=%d, use_bc=%d, "
"side_cb=%p)\n",
print_fd, device_fd, use_bc, side_cb);
"DEBUG: backendRunLoop(print_fd=%d, device_fd=%d, snmp_fd=%d, "
"addr=%p, use_bc=%d, side_cb=%p)\n",
print_fd, device_fd, snmp_fd, addr, use_bc, side_cb);
/*
* If we are printing data from a print driver on stdin, ignore SIGTERM
@@ -189,6 +185,14 @@ backendRunLoop(
signal(SIGTERM, SIG_IGN);
#endif /* HAVE_SIGSET */
}
else if (print_fd < 0)
{
/*
* Copy print data from stdin, but don't mess with the signal handlers...
*/
print_fd = 0;
}
/*
* Figure out the maximum file descriptor value to use with select()...
@@ -212,31 +216,35 @@ backendRunLoop(
FD_SET(print_fd, &input);
if (use_bc)
FD_SET(device_fd, &input);
if (side_cb)
if (!print_bytes && side_cb)
FD_SET(CUPS_SC_FD, &input);
FD_ZERO(&output);
if (print_bytes || !use_bc)
if (print_bytes || (!use_bc && !side_cb))
FD_SET(device_fd, &output);
if (use_bc || side_cb)
{
if (select(nfds, &input, &output, NULL, NULL) < 0)
timeout.tv_sec = 5;
timeout.tv_usec = 0;
if (select(nfds, &input, &output, NULL, &timeout) < 0)
{
/*
* Pause printing to clear any pending errors...
*/
if (errno == ENXIO && offline != 1)
if (errno == ENXIO && offline != 1 && update_state)
{
fputs("STATE: +offline-error\n", stderr);
_cupsLangPuts(stderr, _("INFO: Printer is currently off-line.\n"));
fputs("STATE: +offline-report\n", stderr);
_cupsLangPrintFilter(stderr, "INFO",
_("The printer is not connected."));
offline = 1;
}
else if (errno == EINTR && total_bytes == 0)
{
fputs("DEBUG: Received an interrupt before any bytes were "
"written, aborting!\n", stderr);
"written, aborting.\n", stderr);
return (0);
}
@@ -250,7 +258,16 @@ backendRunLoop(
*/
if (side_cb && FD_ISSET(CUPS_SC_FD, &input))
(*side_cb)(print_fd, device_fd, use_bc);
{
/*
* Do the side-channel request, then start back over in the select
* loop since it may have read from print_fd...
*/
if ((*side_cb)(print_fd, device_fd, snmp_fd, addr, use_bc))
side_cb = NULL;
continue;
}
/*
* Check if we have back-channel data ready...
@@ -261,10 +278,18 @@ backendRunLoop(
if ((bc_bytes = read(device_fd, bc_buffer, sizeof(bc_buffer))) > 0)
{
fprintf(stderr,
"DEBUG: Received " CUPS_LLFMT " bytes of back-channel data!\n",
"DEBUG: Received " CUPS_LLFMT " bytes of back-channel data\n",
CUPS_LLCAST bc_bytes);
cupsBackChannelWrite(bc_buffer, bc_bytes, 1.0);
cupsBackChannelWrite(bc_buffer, (size_t)bc_bytes, 1.0);
}
else if (bc_bytes < 0 && errno != EAGAIN && errno != EINTR)
{
fprintf(stderr, "DEBUG: Error reading back-channel data: %s\n",
strerror(errno));
use_bc = 0;
}
else if (bc_bytes == 0)
use_bc = 0;
}
/*
@@ -282,7 +307,9 @@ backendRunLoop(
if (errno != EAGAIN || errno != EINTR)
{
perror("ERROR: Unable to read print data");
fprintf(stderr, "DEBUG: Read failed: %s\n", strerror(errno));
_cupsLangPrintFilter(stderr, "ERROR",
_("Unable to read print data."));
return (-1);
}
@@ -310,7 +337,7 @@ backendRunLoop(
if (print_bytes && FD_ISSET(device_fd, &output))
{
if ((bytes = write(device_fd, print_ptr, print_bytes)) < 0)
if ((bytes = write(device_fd, print_ptr, (size_t)print_bytes)) < 0)
{
/*
* Write error - bail if we don't see an error we can retry...
@@ -318,41 +345,42 @@ backendRunLoop(
if (errno == ENOSPC)
{
if (paperout != 1)
if (paperout != 1 && update_state)
{
fputs("STATE: +media-empty-error\n", stderr);
_cupsLangPuts(stderr, _("ERROR: Out of paper!\n"));
fputs("STATE: +media-empty-warning\n", stderr);
fputs("DEBUG: Out of paper\n", stderr);
paperout = 1;
}
}
else if (errno == ENXIO)
{
if (offline != 1)
if (offline != 1 && update_state)
{
fputs("STATE: +offline-error\n", stderr);
_cupsLangPuts(stderr, _("INFO: Printer is currently off-line.\n"));
fputs("STATE: +offline-report\n", stderr);
_cupsLangPrintFilter(stderr, "INFO",
_("The printer is not connected."));
offline = 1;
}
}
else if (errno != EAGAIN && errno != EINTR && errno != ENOTTY)
{
fprintf(stderr, _("ERROR: Unable to write print data: %s\n"),
strerror(errno));
_cupsLangPrintError("ERROR", _("Unable to write print data"));
return (-1);
}
}
else
{
if (paperout)
if (paperout && update_state)
{
fputs("STATE: -media-empty-error\n", stderr);
fputs("STATE: -media-empty-warning\n", stderr);
paperout = 0;
}
if (offline)
if (offline && update_state)
{
fputs("STATE: -offline-error\n", stderr);
_cupsLangPuts(stderr, _("INFO: Printer is now on-line.\n"));
fputs("STATE: -offline-report\n", stderr);
_cupsLangPrintFilter(stderr, "INFO",
_("The printer is now connected."));
offline = 0;
}
@@ -363,6 +391,18 @@ backendRunLoop(
total_bytes += bytes;
}
}
/*
* Do SNMP updates periodically...
*/
if (snmp_fd >= 0 && time(&curtime) >= snmp_update)
{
if (backendSNMPSupplies(snmp_fd, addr, NULL, NULL))
snmp_update = INT_MAX;
else
snmp_update = curtime + 5;
}
}
/*
@@ -374,5 +414,112 @@ backendRunLoop(
/*
* End of "$Id$".
* 'backendWaitLoop()' - Wait for input from stdin while handling side-channel
* queries.
*/
int /* O - 1 if data is ready, 0 if not */
backendWaitLoop(
int snmp_fd, /* I - SNMP socket or -1 if none */
http_addr_t *addr, /* I - Address of device */
int use_bc, /* I - Use back-channel? */
_cups_sccb_t side_cb) /* I - Side-channel callback */
{
int nfds; /* Number of file descriptors */
fd_set input; /* Input set for reading */
time_t curtime = 0, /* Current time */
snmp_update = 0;/* Last SNMP status update */
struct timeval timeout; /* Timeout for select() */
fprintf(stderr, "DEBUG: backendWaitLoop(snmp_fd=%d, addr=%p, side_cb=%p)\n",
snmp_fd, addr, side_cb);
/*
* Now loop until we receive data from stdin...
*/
if (snmp_fd >= 0)
snmp_update = time(NULL) + 5;
for (;;)
{
/*
* Use select() to determine whether we have data to copy around...
*/
FD_ZERO(&input);
FD_SET(0, &input);
if (side_cb)
FD_SET(CUPS_SC_FD, &input);
if (snmp_fd >= 0)
{
curtime = time(NULL);
timeout.tv_sec = curtime >= snmp_update ? 0 : snmp_update - curtime;
timeout.tv_usec = 0;
nfds = select(CUPS_SC_FD + 1, &input, NULL, NULL, &timeout);
}
else
nfds = select(CUPS_SC_FD + 1, &input, NULL, NULL, NULL);
if (nfds < 0)
{
/*
* Pause printing to clear any pending errors...
*/
if (errno == EINTR)
{
fputs("DEBUG: Received an interrupt before any bytes were "
"written, aborting.\n", stderr);
return (0);
}
sleep(1);
continue;
}
/*
* Check for input on stdin...
*/
if (FD_ISSET(0, &input))
break;
/*
* Check if we have a side-channel request ready...
*/
if (side_cb && FD_ISSET(CUPS_SC_FD, &input))
{
/*
* Do the side-channel request, then start back over in the select
* loop since it may have read from print_fd...
*/
if ((*side_cb)(0, -1, snmp_fd, addr, use_bc))
side_cb = NULL;
continue;
}
/*
* Do SNMP updates periodically...
*/
if (snmp_fd >= 0 && curtime >= snmp_update)
{
if (backendSNMPSupplies(snmp_fd, addr, NULL, NULL))
snmp_fd = -1;
else
snmp_update = curtime + 5;
}
}
/*
* Return with success...
*/
return (1);
}
-240
Ver Arquivo
@@ -1,240 +0,0 @@
/*
* "$Id$"
*
* IRIX SCSI printer support for the Common UNIX Printing System (CUPS).
*
* Copyright 2007 by Apple Inc.
* Copyright 2003-2005 by Easy Software Products, all rights reserved.
*
* Redistribution and use in source and binary forms, with or
* without modification, are permitted provided that the
* following conditions are met:
*
* 1. Redistributions of source code must retain the above
* copyright notice, this list of conditions and the
* following disclaimer.
*
* 2. Redistributions in binary form must reproduce the
* above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or
* other materials provided with the distribution.
*
* 3. All advertising materials mentioning features or use
* of this software must display the following
* acknowledgement:
*
* This product includes software developed by Easy
* Software Products.
*
* 4. The name of Easy Software Products may not be used to
* endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
* BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
* DAMAGE.
*
* Contents:
*
* list_devices() - List the available SCSI printer devices.
* print_device() - Print a file to a SCSI device.
*/
/*
* Include necessary headers.
*/
#include <bstring.h> /* memcpy() and friends */
#include <sys/dsreq.h> /* SCSI interface stuff */
/*
* 'list_devices()' - List the available SCSI printer devices.
*/
void
list_devices(void)
{
puts("direct scsi \"Unknown\" \"SCSI Printer\"");
}
/*
* 'print_device()' - Print a file to a SCSI device.
*/
int /* O - Print status */
print_device(const char *resource, /* I - SCSI device */
int fd, /* I - File to print */
int copies) /* I - Number of copies to print */
{
int scsi_fd; /* SCSI file descriptor */
char buffer[8192]; /* Data buffer */
int bytes; /* Number of bytes */
int try; /* Current try */
dsreq_t scsi_req; /* SCSI request */
char scsi_cmd[6]; /* SCSI command data */
#if defined(HAVE_SIGACTION) && !defined(HAVE_SIGSET)
struct sigaction action; /* Actions for POSIX signals */
#endif /* HAVE_SIGACTION && !HAVE_SIGSET */
/*
* Make sure we have a valid resource name...
*/
if (strncmp(resource, "/dev/scsi/", 10) != 0)
{
_cupsLangPrintf(stderr, _("ERROR: Bad SCSI device file \"%s\"!\n"),
resource);
return (CUPS_BACKEND_STOP);
}
/*
* Open the SCSI device file...
*/
fputs("STATE: +connecting-to-device\n", stderr);
do
{
if ((scsi_fd = open(resource, O_RDWR | O_EXCL)) == -1)
{
if (getenv("CLASS") != NULL)
{
/*
* If the CLASS environment variable is set, the job was submitted
* to a class and not to a specific queue. In this case, we want
* to abort immediately so that the job can be requeued on the next
* available printer in the class.
*/
_cupsLangPuts(stderr,
_("INFO: Unable to contact printer, queuing on next "
"printer in class...\n"));
/*
* Sleep 5 seconds to keep the job from requeuing too rapidly...
*/
sleep(5);
return (1);
}
if (errno != EAGAIN && errno != EBUSY)
{
_cupsLangPrintf(stderr,
_("ERROR: Unable to open device file \"%s\": %s\n"),
resource, strerror(errno));
return (CUPS_BACKEND_FAILED);
}
else
{
_cupsLangPuts(stderr,
_("INFO: Printer busy; will retry in 30 seconds...\n"));
sleep(30);
}
}
}
while (scsi_fd == -1);
fputs("STATE: -connecting-to-device\n", stderr);
/*
* Now that we are "connected" to the port, ignore SIGTERM so that we
* can finish out any page data the driver sends (e.g. to eject the
* current page... Only ignore SIGTERM if we are printing data from
* stdin (otherwise you can't cancel raw jobs...)
*/
if (fd != 0)
{
#ifdef HAVE_SIGSET /* Use System V signals over POSIX to avoid bugs */
sigset(SIGTERM, SIG_IGN);
#elif defined(HAVE_SIGACTION)
memset(&action, 0, sizeof(action));
sigemptyset(&action.sa_mask);
action.sa_handler = SIG_IGN;
sigaction(SIGTERM, &action, NULL);
#else
signal(SIGTERM, SIG_IGN);
#endif /* HAVE_SIGSET */
}
/*
* Copy the print file to the device...
*/
while (copies > 0)
{
if (fd != 0)
lseek(fd, 0, SEEK_SET);
while ((bytes = read(fd, buffer, sizeof(buffer))) > 0)
{
memset(&scsi_req, 0, sizeof(scsi_req));
scsi_req.ds_flags = DSRQ_WRITE;
scsi_req.ds_time = 60 * 1000;
scsi_req.ds_cmdbuf = scsi_cmd;
scsi_req.ds_cmdlen = 6;
scsi_req.ds_databuf = buffer;
scsi_req.ds_datalen = bytes;
scsi_cmd[0] = 0x0a; /* Group 0 print command */
scsi_cmd[1] = 0x00;
scsi_cmd[2] = bytes / 65536;
scsi_cmd[3] = bytes / 256;
scsi_cmd[4] = bytes;
scsi_cmd[5] = 0x00;
for (try = 0; try < 10; try ++)
if (ioctl(scsi_fd, DS_ENTER, &scsi_req) < 0 ||
scsi_req.ds_status != 0)
{
_cupsLangPrintf(stderr,
_("WARNING: SCSI command timed out (%d); "
"retrying...\n"), scsi_req.ds_status);
sleep(try + 1);
}
else
break;
if (try >= 10)
{
_cupsLangPrintf(stderr, _("ERROR: Unable to send print data (%d)\n"),
scsi_req.ds_status);
close(scsi_fd);
return (CUPS_BACKEND_FAILED);
}
}
copies --;
}
/*
* Close the device and return...
*/
close(fd);
return (CUPS_BACKEND_OK);
}
/*
* End of "$Id$".
*/
-259
Ver Arquivo
@@ -1,259 +0,0 @@
/*
* "$Id$"
*
* Linux SCSI printer support for the Common UNIX Printing System (CUPS).
*
* Copyright 2007 by Apple Inc.
* Copyright 2003-2005 by Easy Software Products, all rights reserved.
*
* Redistribution and use in source and binary forms, with or
* without modification, are permitted provided that the
* following conditions are met:
*
* 1. Redistributions of source code must retain the above
* copyright notice, this list of conditions and the
* following disclaimer.
*
* 2. Redistributions in binary form must reproduce the
* above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or
* other materials provided with the distribution.
*
* 3. All advertising materials mentioning features or use
* of this software must display the following
* acknowledgement:
*
* This product includes software developed by Easy
* Software Products.
*
* 4. The name of Easy Software Products may not be used to
* endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
* BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
* DAMAGE.
*
* Contents:
*
* list_devices() - List the available SCSI printer devices.
* print_device() - Print a file to a SCSI device.
*/
/*
* Include necessary headers.
*/
#include <scsi/sg.h>
#include <cups/i18n.h>
/*
* We currently only support the Linux 2.4 generic SCSI interface.
*/
#ifndef SG_DXFER_TO_DEV
/*
* Dummy functions that do nothing on unsupported platforms...
*/
void list_devices(void) {}
int print_device(const char *resource, int fd, int copies) { return (1); }
#else
/*
* 'list_devices()' - List the available SCSI printer devices.
*/
void
list_devices(void)
{
puts("direct scsi \"Unknown\" \"SCSI Printer\"");
}
/*
* 'print_device()' - Print a file to a SCSI device.
*/
int /* O - Print status */
print_device(const char *resource, /* I - SCSI device */
int fd, /* I - File to print */
int copies) /* I - Number of copies to print */
{
int scsi_fd; /* SCSI file descriptor */
char buffer[8192]; /* Data buffer */
int bytes; /* Number of bytes */
int try; /* Current try */
sg_io_hdr_t scsi_req; /* SCSI request */
unsigned char scsi_cmd[6], /* SCSI command data */
scsi_sense[32]; /* SCSI sense data */
# if defined(HAVE_SIGACTION) && !defined(HAVE_SIGSET)
struct sigaction action; /* Actions for POSIX signals */
# endif /* HAVE_SIGACTION && !HAVE_SIGSET */
/*
* Make sure we have a valid resource name...
*/
if (strncmp(resource, "/dev/sg", 7) != 0)
{
_cupsLangPrintf(stderr, _("ERROR: Bad SCSI device file \"%s\"!\n"),
resource);
return (CUPS_BACKEND_STOP);
}
/*
* Open the SCSI device file...
*/
fputs("STATE: +connecting-to-device\n", stderr);
do
{
if ((scsi_fd = open(resource, O_RDWR | O_EXCL)) == -1)
{
if (getenv("CLASS") != NULL)
{
/*
* If the CLASS environment variable is set, the job was submitted
* to a class and not to a specific queue. In this case, we want
* to abort immediately so that the job can be requeued on the next
* available printer in the class.
*/
_cupsLangPuts(stderr,
_("INFO: Unable to contact printer, queuing on next "
"printer in class...\n"));
/*
* Sleep 5 seconds to keep the job from requeuing too rapidly...
*/
sleep(5);
return (CUPS_BACKEND_FAILED);
}
if (errno != EAGAIN && errno != EBUSY)
{
_cupsLangPrintf(stderr,
_("ERROR: Unable to open device file \"%s\": %s\n"),
resource, strerror(errno));
return (CUPS_BACKEND_FAILED);
}
else
{
_cupsLangPuts(stderr,
_("INFO: Printer busy; will retry in 30 seconds...\n"));
sleep(30);
}
}
}
while (scsi_fd == -1);
fputs("STATE: -connecting-to-device\n", stderr);
/*
* Now that we are "connected" to the port, ignore SIGTERM so that we
* can finish out any page data the driver sends (e.g. to eject the
* current page... Only ignore SIGTERM if we are printing data from
* stdin (otherwise you can't cancel raw jobs...)
*/
if (fd != 0)
{
# ifdef HAVE_SIGSET /* Use System V signals over POSIX to avoid bugs */
sigset(SIGTERM, SIG_IGN);
# elif defined(HAVE_SIGACTION)
memset(&action, 0, sizeof(action));
sigemptyset(&action.sa_mask);
action.sa_handler = SIG_IGN;
sigaction(SIGTERM, &action, NULL);
# else
signal(SIGTERM, SIG_IGN);
# endif /* HAVE_SIGSET */
}
/*
* Copy the print file to the device...
*/
while (copies > 0)
{
if (fd != 0)
lseek(fd, 0, SEEK_SET);
while ((bytes = read(fd, buffer, sizeof(buffer))) > 0)
{
memset(&scsi_req, 0, sizeof(scsi_req));
scsi_req.interface_id = 'S';
scsi_req.dxfer_direction = SG_DXFER_TO_DEV;
scsi_req.cmd_len = 6;
scsi_req.mx_sb_len = sizeof(scsi_sense);
scsi_req.iovec_count = 0;
scsi_req.dxfer_len = bytes;
scsi_req.dxferp = buffer;
scsi_req.cmdp = scsi_cmd;
scsi_req.sbp = scsi_sense;
scsi_req.timeout = 60 * 1000;
scsi_cmd[0] = 0x0a; /* Group 0 print command */
scsi_cmd[1] = 0x00;
scsi_cmd[2] = bytes / 65536;
scsi_cmd[3] = bytes / 256;
scsi_cmd[4] = bytes;
scsi_cmd[5] = 0x00;
for (try = 0; try < 10; try ++)
if (ioctl(scsi_fd, SG_IO, &scsi_req) < 0 ||
scsi_req.status != 0)
{
_cupsLangPrintf(stderr,
_("WARNING: SCSI command timed out (%d); "
"retrying...\n"), scsi_req.status);
sleep(try + 1);
}
else
break;
if (try >= 10)
{
_cupsLangPrintf(stderr, _("ERROR: Unable to send print data (%d)\n"),
scsi_req.status);
close(scsi_fd);
return (CUPS_BACKEND_FAILED);
}
}
copies --;
}
/*
* Close the device and return...
*/
close(fd);
return (CUPS_BACKEND_OK);
}
#endif /* !SG_DXFER_TO_DEV */
/*
* End of "$Id$".
*/
-229
Ver Arquivo
@@ -1,229 +0,0 @@
/*
* "$Id$"
*
* SCSI printer backend for the Common UNIX Printing System (CUPS).
*
* Copyright 2007 by Apple Inc.
* Copyright 2003-2006 by Easy Software Products, all rights reserved.
*
* Redistribution and use in source and binary forms, with or
* without modification, are permitted provided that the
* following conditions are met:
*
* 1. Redistributions of source code must retain the above
* copyright notice, this list of conditions and the
* following disclaimer.
*
* 2. Redistributions in binary form must reproduce the
* above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or
* other materials provided with the distribution.
*
* 3. All advertising materials mentioning features or use
* of this software must display the following
* acknowledgement:
*
* This product includes software developed by Easy
* Software Products.
*
* 4. The name of Easy Software Products may not be used to
* endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
* BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
* DAMAGE.
*
* Contents:
*
* main() - Send a file to the specified SCSI printer.
*/
/*
* Include necessary headers.
*/
#include <cups/backend.h>
#include <cups/cups.h>
#include <cups/i18n.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <cups/string.h>
#include <cups/i18n.h>
#include <signal.h>
#ifdef WIN32
# include <io.h>
#else
# include <unistd.h>
# include <fcntl.h>
# ifdef HAVE_SYS_IOCTL_H
# include <sys/ioctl.h>
# endif /* HAVE_SYS_IOCTL_H */
#endif /* WIN32 */
/*
* Local functions...
*/
void list_devices(void);
int print_device(const char *resource, int fd, int copies);
#if defined(__linux__) && defined(HAVE_SCSI_SG_H)
# include "scsi-linux.c"
#elif defined(__sgi)
# include "scsi-irix.c"
#else
/*
* Dummy functions that do nothing on unsupported platforms...
*/
void list_devices(void) {}
int print_device(const char *resource, int fd, int copies) { return (CUPS_BACKEND_FAILED); }
#endif /* __linux && HAVE_SCSI_SG_H */
/*
* 'main()' - Send a file to the specified SCSI printer.
*
* Usage:
*
* printer-uri job-id user title copies options [file]
*/
int /* O - Exit status */
main(int argc, /* I - Number of command-line arguments (6 or 7) */
char *argv[]) /* I - Command-line arguments */
{
char method[255], /* Method in URI */
hostname[1024], /* Hostname */
username[255], /* Username info (not used) */
resource[1024], /* Resource info (device and options) */
*options; /* Pointer to options */
int port; /* Port number (not used) */
int fp; /* Print file */
int copies; /* Number of copies to print */
int status; /* Exit status */
#if defined(HAVE_SIGACTION) && !defined(HAVE_SIGSET)
struct sigaction action; /* Actions for POSIX signals */
#endif /* HAVE_SIGACTION && !HAVE_SIGSET */
/*
* Make sure status messages are not buffered...
*/
setbuf(stderr, NULL);
/*
* Ignore SIGPIPE signals...
*/
#ifdef HAVE_SIGSET
sigset(SIGPIPE, SIG_IGN);
#elif defined(HAVE_SIGACTION)
memset(&action, 0, sizeof(action));
action.sa_handler = SIG_IGN;
sigaction(SIGPIPE, &action, NULL);
#else
signal(SIGPIPE, SIG_IGN);
#endif /* HAVE_SIGSET */
/*
* Check command-line...
*/
if (argc == 1)
{
list_devices();
return (CUPS_BACKEND_OK);
}
else if (argc < 6 || argc > 7)
{
_cupsLangPrintf(stderr,
_("Usage: %s job-id user title copies options [file]\n"),
argv[0]);
return (CUPS_BACKEND_FAILED);
}
/*
* If we have 7 arguments, print the file named on the command-line.
* Otherwise, send stdin instead...
*/
if (argc == 6)
{
fp = 0;
copies = 1;
}
else
{
/*
* Try to open the print file...
*/
if ((fp = open(argv[6], O_RDONLY)) < 0)
{
perror("ERROR: unable to open print file");
return (CUPS_BACKEND_FAILED);
}
copies = atoi(argv[4]);
}
/*
* Extract the device name and options from the URI...
*/
httpSeparateURI(HTTP_URI_CODING_ALL, cupsBackendDeviceURI(argv),
method, sizeof(method), username, sizeof(username),
hostname, sizeof(hostname), &port,
resource, sizeof(resource));
/*
* See if there are any options...
*/
if ((options = strchr(resource, '?')) != NULL)
{
/*
* Yup, terminate the device name string and move to the first
* character of the options...
*/
*options++ = '\0';
}
/*
* Finally, send the print file...
*/
status = print_device(resource, fp, copies);
/*
* Close input file and return...
*/
if (fp != 0)
close(fp);
return (status);
}
/*
* End of "$Id$".
*/
-1290
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+337 -1232
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+150 -173
Ver Arquivo
@@ -1,24 +1,16 @@
/*
* "$Id$"
* AppSocket backend for CUPS.
*
* AppSocket backend for the Common UNIX Printing System (CUPS).
* Copyright 2007-2014 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
*
* Copyright 2007 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
* "LICENSE" which should have been included with this file. If this
* file is missing or damaged, see the license at "http://www.cups.org/".
*
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
* "LICENSE" which should have been included with this file. If this
* file is missing or damaged, see the license at "http://www.cups.org/".
*
* This file is subject to the Apple OS-Developed Software exception.
*
* Contents:
*
* main() - Send a file to the printer or server.
* side_cb() - Handle side-channel requests...
* wait_bc() - Wait for back-channel data...
* This file is subject to the Apple OS-Developed Software exception.
*/
/*
@@ -47,8 +39,7 @@
* Local functions...
*/
static void side_cb(int print_fd, int device_fd, int use_bc);
static int wait_bc(int device_fd, int secs);
static ssize_t wait_bc(int device_fd, int secs);
/*
@@ -63,7 +54,8 @@ int /* O - Exit status */
main(int argc, /* I - Number of command-line arguments (6 or 7) */
char *argv[]) /* I - Command-line arguments */
{
char method[255], /* Method in URI */
const char *device_uri; /* Device URI */
char scheme[255], /* Scheme in URI */
hostname[1024], /* Hostname */
username[255], /* Username info (not used) */
resource[1024], /* Resource info (not used) */
@@ -74,7 +66,6 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
int print_fd; /* Print file */
int copies; /* Number of copies to print */
time_t start_time; /* Time of first connect */
int recoverable; /* Recoverable error shown? */
int contimeout; /* Connection timeout */
int waiteof; /* Wait for end-of-file? */
int port; /* Port number */
@@ -85,7 +76,14 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
http_addrlist_t *addrlist, /* Address list */
*addr; /* Connected address */
char addrname[256]; /* Address name */
ssize_t tbytes; /* Total number of bytes written */
int snmp_enabled = 1; /* Is SNMP enabled? */
int snmp_fd, /* SNMP socket */
start_count, /* Page count via SNMP at start */
page_count, /* Page count via SNMP */
have_supplies; /* Printer supports supply levels? */
ssize_t bytes = 0, /* Initial bytes read */
tbytes; /* Total number of bytes written */
char buffer[1024]; /* Initial print buffer */
#if defined(HAVE_SIGACTION) && !defined(HAVE_SIGSET)
struct sigaction action; /* Actions for POSIX signals */
#endif /* HAVE_SIGACTION && !HAVE_SIGSET */
@@ -117,13 +115,14 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
if (argc == 1)
{
puts("network socket \"Unknown\" \"AppSocket/HP JetDirect\"");
printf("network socket \"Unknown\" \"%s\"\n",
_cupsLangString(cupsLangDefault(), _("AppSocket/HP JetDirect")));
return (CUPS_BACKEND_OK);
}
else if (argc < 6 || argc > 7)
{
_cupsLangPrintf(stderr,
_("Usage: %s job-id user title copies options [file]\n"),
_("Usage: %s job-id user title copies options [file]"),
argv[0]);
return (CUPS_BACKEND_FAILED);
}
@@ -146,7 +145,7 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
if ((print_fd = open(argv[6], O_RDONLY)) < 0)
{
perror("ERROR: unable to open print file");
_cupsLangPrintError("ERROR", _("Unable to open print file"));
return (CUPS_BACKEND_FAILED);
}
@@ -157,9 +156,17 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
* Extract the hostname and port number from the URI...
*/
httpSeparateURI(HTTP_URI_CODING_ALL, cupsBackendDeviceURI(argv),
method, sizeof(method), username, sizeof(username),
hostname, sizeof(hostname), &port,
while ((device_uri = cupsBackendDeviceURI(argv)) == NULL)
{
_cupsLangPrintFilter(stderr, "INFO", _("Unable to locate printer."));
sleep(10);
if (getenv("CLASS") != NULL)
return (CUPS_BACKEND_FAILED);
}
httpSeparateURI(HTTP_URI_CODING_ALL, device_uri, scheme, sizeof(scheme),
username, sizeof(username), hostname, sizeof(hostname), &port,
resource, sizeof(resource));
if (port == 0)
@@ -220,16 +227,26 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
* Process the option...
*/
if (!strcasecmp(name, "waiteof"))
if (!_cups_strcasecmp(name, "waiteof"))
{
/*
* Set the wait-for-eof value...
*/
waiteof = !value[0] || !strcasecmp(value, "on") ||
!strcasecmp(value, "yes") || !strcasecmp(value, "true");
waiteof = !value[0] || !_cups_strcasecmp(value, "on") ||
!_cups_strcasecmp(value, "yes") || !_cups_strcasecmp(value, "true");
}
else if (!strcasecmp(name, "contimeout"))
else if (!_cups_strcasecmp(name, "snmp"))
{
/*
* Enable/disable SNMP stuff...
*/
snmp_enabled = !value[0] || !_cups_strcasecmp(value, "on") ||
!_cups_strcasecmp(value, "yes") ||
!_cups_strcasecmp(value, "true");
}
else if (!_cups_strcasecmp(name, "contimeout"))
{
/*
* Set the connection timeout...
@@ -242,26 +259,62 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
}
/*
* Then try to connect to the remote host...
* Then try finding the remote host...
*/
recoverable = 0;
start_time = time(NULL);
start_time = time(NULL);
sprintf(portname, "%d", port);
if ((addrlist = httpAddrGetList(hostname, AF_UNSPEC, portname)) == NULL)
fputs("STATE: +connecting-to-device\n", stderr);
fprintf(stderr, "DEBUG: Looking up \"%s\"...\n", hostname);
while ((addrlist = httpAddrGetList(hostname, AF_UNSPEC, portname)) == NULL)
{
_cupsLangPrintf(stderr, _("ERROR: Unable to locate printer \'%s\'!\n"),
hostname);
return (CUPS_BACKEND_STOP);
_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);
}
}
_cupsLangPrintf(stderr,
_("INFO: Attempting to connect to host %s on port %d\n"),
hostname, port);
/*
* See if the printer supports SNMP...
*/
fputs("STATE: +connecting-to-device\n", stderr);
if (snmp_enabled)
snmp_fd = _cupsSNMPOpen(addrlist->addr.addr.sa_family);
else
snmp_fd = -1;
if (snmp_fd >= 0)
have_supplies = !backendSNMPSupplies(snmp_fd, &(addrlist->addr),
&start_count, NULL);
else
have_supplies = start_count = 0;
/*
* Wait for data from the filter...
*/
if (print_fd == 0)
{
if (!backendWaitLoop(snmp_fd, &(addrlist->addr), 1, backendNetworkSideCB))
return (CUPS_BACKEND_OK);
else if ((bytes = read(0, buffer, sizeof(buffer))) <= 0)
return (CUPS_BACKEND_OK);
}
/*
* Connect to the printer...
*/
fprintf(stderr, "DEBUG: Connecting to %s:%d\n", hostname, port);
_cupsLangPrintFilter(stderr, "INFO", _("Connecting to printer."));
for (delay = 5;;)
{
@@ -279,9 +332,9 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
* available printer in the class.
*/
_cupsLangPuts(stderr,
_("INFO: Unable to contact printer, queuing on next "
"printer in class...\n"));
_cupsLangPrintFilter(stderr, "INFO",
_("Unable to contact printer, queuing on next "
"printer in class."));
/*
* Sleep 5 seconds to keep the job from requeuing too rapidly...
@@ -292,36 +345,48 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
return (CUPS_BACKEND_FAILED);
}
fprintf(stderr, "DEBUG: Connection error: %s\n", strerror(error));
if (error == ECONNREFUSED || error == EHOSTDOWN ||
error == EHOSTUNREACH)
{
if (contimeout && (time(NULL) - start_time) > contimeout)
{
_cupsLangPuts(stderr, _("ERROR: Printer not responding!\n"));
_cupsLangPrintFilter(stderr, "ERROR",
_("The printer is not responding."));
return (CUPS_BACKEND_FAILED);
}
recoverable = 1;
switch (error)
{
case EHOSTDOWN :
_cupsLangPrintFilter(stderr, "WARNING",
_("The printer may not exist or "
"is unavailable at this time."));
break;
_cupsLangPrintf(stderr,
_("WARNING: recoverable: Network host \'%s\' is busy; "
"will retry in %d seconds...\n"),
hostname, delay);
case EHOSTUNREACH :
_cupsLangPrintFilter(stderr, "WARNING",
_("The printer is unreachable at this "
"time."));
break;
sleep(delay);
case ECONNREFUSED :
default :
_cupsLangPrintFilter(stderr, "WARNING",
_("The printer is in use."));
break;
}
sleep((unsigned)delay);
if (delay < 30)
delay += 5;
}
else
{
recoverable = 1;
_cupsLangPrintf(stderr, "DEBUG: Connection error: %s\n",
strerror(errno));
_cupsLangPuts(stderr,
_("ERROR: recoverable: Unable to connect to printer; "
"will retry in 30 seconds...\n"));
_cupsLangPrintFilter(stderr, "ERROR",
_("The printer is not responding."));
sleep(30);
}
}
@@ -329,32 +394,12 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
break;
}
if (recoverable)
{
/*
* If we've shown a recoverable error make sure the printer proxies
* have a chance to see the recovered message. Not pretty but
* necessary for now...
*/
fputs("INFO: recovered: \n", stderr);
sleep(5);
}
fputs("STATE: -connecting-to-device\n", stderr);
_cupsLangPrintf(stderr, _("INFO: Connected to %s...\n"), hostname);
_cupsLangPrintFilter(stderr, "INFO", _("Connected to printer."));
#ifdef AF_INET6
if (addr->addr.addr.sa_family == AF_INET6)
fprintf(stderr, "DEBUG: Connected to [%s]:%d (IPv6)...\n",
httpAddrString(&addr->addr, addrname, sizeof(addrname)),
ntohs(addr->addr.ipv6.sin6_port));
else
#endif /* AF_INET6 */
if (addr->addr.addr.sa_family == AF_INET)
fprintf(stderr, "DEBUG: Connected to %s:%d (IPv4)...\n",
httpAddrString(&addr->addr, addrname, sizeof(addrname)),
ntohs(addr->addr.ipv4.sin_port));
fprintf(stderr, "DEBUG: Connected to %s:%d...\n",
httpAddrString(&(addr->addr), addrname, sizeof(addrname)),
httpAddrPort(&(addr->addr)));
/*
* Print everything...
@@ -362,6 +407,9 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
tbytes = 0;
if (bytes > 0)
tbytes += write(device_fd, buffer, (size_t)bytes);
while (copies > 0 && tbytes >= 0)
{
copies --;
@@ -372,23 +420,14 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
lseek(print_fd, 0, SEEK_SET);
}
tbytes = backendRunLoop(print_fd, device_fd, 1, side_cb);
tbytes = backendRunLoop(print_fd, device_fd, snmp_fd, &(addrlist->addr), 1,
0, backendNetworkSideCB);
if (print_fd != 0 && tbytes >= 0)
_cupsLangPrintf(stderr,
#ifdef HAVE_LONG_LONG
_("INFO: Sent print file, %lld bytes...\n"),
#else
_("INFO: Sent print file, %ld bytes...\n"),
#endif /* HAVE_LONG_LONG */
CUPS_LLCAST tbytes);
_cupsLangPrintFilter(stderr, "INFO", _("Print file sent."));
}
/*
* Get any pending back-channel data...
*/
while (wait_bc(device_fd, 5) > 0);
fputs("STATE: +cups-waiting-for-job-completed\n", stderr);
if (waiteof)
{
@@ -396,14 +435,22 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
* Shutdown the socket and wait for the other end to finish...
*/
_cupsLangPuts(stderr,
_("INFO: Print file sent, waiting for printer to finish...\n"));
_cupsLangPrintFilter(stderr, "INFO", _("Waiting for printer to finish."));
shutdown(device_fd, 1);
while (wait_bc(device_fd, 90) > 0);
}
/*
* Collect the final page count as needed...
*/
if (have_supplies &&
!backendSNMPSupplies(snmp_fd, &(addrlist->addr), &page_count, NULL) &&
page_count > start_count)
fprintf(stderr, "PAGE: total %d\n", page_count - start_count);
/*
* Close the socket connection...
*/
@@ -419,72 +466,7 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
if (print_fd != 0)
close(print_fd);
if (tbytes >= 0)
_cupsLangPuts(stderr, _("INFO: Ready to print.\n"));
return (tbytes < 0 ? CUPS_BACKEND_FAILED : CUPS_BACKEND_OK);
}
/*
* 'side_cb()' - Handle side-channel requests...
*/
static void
side_cb(int print_fd, /* I - Print file */
int device_fd, /* I - Device file */
int use_bc) /* I - Using back-channel? */
{
cups_sc_command_t command; /* Request command */
cups_sc_status_t status; /* Request/response status */
char data[2048]; /* Request/response data */
int datalen; /* Request/response data size */
const char *device_id; /* 1284DEVICEID env var */
datalen = sizeof(data);
if (cupsSideChannelRead(&command, &status, data, &datalen, 1.0))
{
_cupsLangPuts(stderr, _("WARNING: Failed to read side-channel request!\n"));
return;
}
switch (command)
{
case CUPS_SC_CMD_DRAIN_OUTPUT :
/*
* Our sockets disable the Nagle algorithm and data is sent immediately.
*/
if (backendDrainOutput(print_fd, device_fd))
status = CUPS_SC_STATUS_IO_ERROR;
else
status = CUPS_SC_STATUS_OK;
datalen = 0;
break;
case CUPS_SC_CMD_GET_BIDI :
data[0] = use_bc;
datalen = 1;
break;
case CUPS_SC_CMD_GET_DEVICE_ID :
if ((device_id = getenv("1284DEVICEID")) != NULL)
{
strlcpy(data, device_id, sizeof(data));
datalen = (int)strlen(data);
break;
}
default :
status = CUPS_SC_STATUS_NOT_IMPLEMENTED;
datalen = 0;
break;
}
cupsSideChannelWrite(command, status, data, datalen, 1.0);
return (CUPS_BACKEND_OK);
}
@@ -492,7 +474,7 @@ side_cb(int print_fd, /* I - Print file */
* 'wait_bc()' - Wait for back-channel data...
*/
static int /* O - # bytes read or -1 on error */
static ssize_t /* O - # bytes read or -1 on error */
wait_bc(int device_fd, /* I - Socket */
int secs) /* I - Seconds to wait */
{
@@ -520,9 +502,9 @@ wait_bc(int device_fd, /* I - Socket */
if ((bytes = read(device_fd, buffer, sizeof(buffer))) > 0)
{
fprintf(stderr, "DEBUG: Received %d bytes of back-channel data!\n",
fprintf(stderr, "DEBUG: Received %d bytes of back-channel data\n",
(int)bytes);
cupsBackChannelWrite(buffer, bytes, 1.0);
cupsBackChannelWrite(buffer, (size_t)bytes, 1.0);
}
return (bytes);
@@ -530,8 +512,3 @@ wait_bc(int device_fd, /* I - Socket */
else
return (-1);
}
/*
* End of "$Id$".
*/
+10 -25
Ver Arquivo
@@ -1,32 +1,23 @@
/*
* "$Id$"
* IEEE-1284 support functions test program for CUPS.
*
* IEEE-1284 support functions test program for the Common UNIX Printing
* System (CUPS).
* Copyright 2007-2010 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products, all rights reserved.
*
* Copyright 2007 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"
* "LICENSE" which should have been included with this file. If this
* file is missing or damaged, see the license at "http://www.cups.org/".
*
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
* "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.
* This file is subject to the Apple OS-Developed Software exception.
*/
/*
* Include necessary headers.
*/
#include <cups/string.h>
#include <stdlib.h>
#include <errno.h>
#include <cups/string-private.h>
#ifdef WIN32
# include <io.h>
#else
@@ -34,7 +25,6 @@
# include <fcntl.h>
#endif /* WIN32 */
#define DEBUG
#include "ieee1284.c"
@@ -81,8 +71,3 @@ main(int argc, /* I - Number of command-line args */
return (0);
}
/*
* End of "$Id$".
*/
+677
Ver Arquivo
@@ -0,0 +1,677 @@
/*
* Backend test program for CUPS.
*
* Copyright 2007-2014 by Apple Inc.
* Copyright 1997-2005 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
* "LICENSE" which should have been included with this file. If this
* file is missing or damaged, see the license at "http://www.cups.org/".
*
* This file is subject to the Apple OS-Developed Software exception.
*/
/*
* Include necessary headers.
*/
#include <cups/string-private.h>
#include <cups/cups.h>
#include <cups/sidechannel.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/wait.h>
#include <signal.h>
/*
* Local globals...
*/
static int job_canceled = 0;
/*
* Local functions...
*/
static void sigterm_handler(int sig);
static void usage(void) __attribute__((noreturn));
static void walk_cb(const char *oid, const char *data, int datalen,
void *context);
/*
* 'main()' - Run the named backend.
*
* Usage:
*
* testbackend [-s] [-t] device-uri job-id user title copies options [file]
*/
int /* O - Exit status */
main(int argc, /* I - Number of command-line args */
char *argv[]) /* I - Command-line arguments */
{
int first_arg, /* First argument for backend */
do_cancel = 0, /* Simulate a cancel-job via SIGTERM */
do_ps = 0, /* Do PostScript query+test? */
do_pcl = 0, /* Do PCL query+test? */
do_side_tests = 0, /* Test side-channel ops? */
do_trickle = 0, /* Trickle data to backend */
do_walk = 0, /* Do OID lookup (0) or walking (1) */
show_log = 0; /* Show log messages from backends? */
const char *oid = ".1.3.6.1.2.1.43.10.2.1.4.1.1";
/* OID to lookup or walk */
char scheme[255], /* Scheme in URI == backend */
backend[1024], /* Backend path */
libpath[1024], /* Path for libcups */
*ptr; /* Pointer into path */
const char *serverbin; /* CUPS_SERVERBIN environment variable */
int fd, /* Temporary file descriptor */
back_fds[2], /* Back-channel pipe */
side_fds[2], /* Side-channel socket */
data_fds[2], /* Data pipe */
back_pid = -1, /* Backend process ID */
data_pid = -1, /* Trickle process ID */
pid, /* Process ID */
status; /* Exit status */
/*
* Get the current directory and point the run-time linker at the "cups"
* subdirectory...
*/
if (getcwd(libpath, sizeof(libpath)) &&
(ptr = strrchr(libpath, '/')) != NULL && !strcmp(ptr, "/backend"))
{
strlcpy(ptr, "/cups", sizeof(libpath) - (size_t)(ptr - libpath));
if (!access(libpath, 0))
{
#ifdef __APPLE__
fprintf(stderr, "Setting DYLD_LIBRARY_PATH to \"%s\".\n", libpath);
setenv("DYLD_LIBRARY_PATH", libpath, 1);
#else
fprintf(stderr, "Setting LD_LIBRARY_PATH to \"%s\".\n", libpath);
setenv("LD_LIBRARY_PATH", libpath, 1);
#endif /* __APPLE__ */
}
else
perror(libpath);
}
/*
* See if we have side-channel tests to do...
*/
for (first_arg = 1;
argv[first_arg] && argv[first_arg][0] == '-';
first_arg ++)
if (!strcmp(argv[first_arg], "-d"))
show_log = 1;
else if (!strcmp(argv[first_arg], "-cancel"))
do_cancel = 1;
else if (!strcmp(argv[first_arg], "-pcl"))
do_pcl = 1;
else if (!strcmp(argv[first_arg], "-ps"))
do_ps = 1;
else if (!strcmp(argv[first_arg], "-s"))
do_side_tests = 1;
else if (!strcmp(argv[first_arg], "-t"))
do_trickle = 1;
else if (!strcmp(argv[first_arg], "-get") && (first_arg + 1) < argc)
{
first_arg ++;
do_side_tests = 1;
oid = argv[first_arg];
}
else if (!strcmp(argv[first_arg], "-walk") && (first_arg + 1) < argc)
{
first_arg ++;
do_side_tests = 1;
do_walk = 1;
oid = argv[first_arg];
}
else
usage();
argc -= first_arg;
if (argc < 6 || argc > 7 || (argc == 7 && do_trickle))
usage();
/*
* Extract the scheme from the device-uri - that's the program we want to
* execute.
*/
if (sscanf(argv[first_arg], "%254[^:]", scheme) != 1)
{
fputs("testbackend: Bad device-uri - no colon!\n", stderr);
return (1);
}
if (!access(scheme, X_OK))
strlcpy(backend, scheme, sizeof(backend));
else
{
if ((serverbin = getenv("CUPS_SERVERBIN")) == NULL)
serverbin = CUPS_SERVERBIN;
snprintf(backend, sizeof(backend), "%s/backend/%s", serverbin, scheme);
if (access(backend, X_OK))
{
fprintf(stderr, "testbackend: Unknown device scheme \"%s\"!\n", scheme);
return (1);
}
}
/*
* Create the back-channel pipe and side-channel socket...
*/
open("/dev/null", O_WRONLY); /* Make sure fd 3 and 4 are used */
open("/dev/null", O_WRONLY);
pipe(back_fds);
fcntl(back_fds[0], F_SETFL, fcntl(back_fds[0], F_GETFL) | O_NONBLOCK);
fcntl(back_fds[1], F_SETFL, fcntl(back_fds[1], F_GETFL) | O_NONBLOCK);
socketpair(AF_LOCAL, SOCK_STREAM, 0, side_fds);
fcntl(side_fds[0], F_SETFL, fcntl(side_fds[0], F_GETFL) | O_NONBLOCK);
fcntl(side_fds[1], F_SETFL, fcntl(side_fds[1], F_GETFL) | O_NONBLOCK);
/*
* Execute the trickle process as needed...
*/
if (do_trickle || do_pcl || do_ps || do_cancel)
{
pipe(data_fds);
signal(SIGTERM, sigterm_handler);
if ((data_pid = fork()) == 0)
{
/*
* Trickle/query child comes here. Rearrange file descriptors so that
* FD 1, 3, and 4 point to the backend...
*/
if ((fd = open("/dev/null", O_RDONLY)) != 0)
{
dup2(fd, 0);
close(fd);
}
if (data_fds[1] != 1)
{
dup2(data_fds[1], 1);
close(data_fds[1]);
}
close(data_fds[0]);
if (back_fds[0] != 3)
{
dup2(back_fds[0], 3);
close(back_fds[0]);
}
close(back_fds[1]);
if (side_fds[0] != 4)
{
dup2(side_fds[0], 4);
close(side_fds[0]);
}
close(side_fds[1]);
if (do_trickle)
{
/*
* Write 10 spaces, 1 per second...
*/
int i; /* Looping var */
for (i = 0; i < 10; i ++)
{
write(1, " ", 1);
sleep(1);
}
}
else if (do_cancel)
{
/*
* Write PS or PCL lines until we see SIGTERM...
*/
int line = 0, page = 0; /* Current line and page */
ssize_t bytes; /* Number of bytes of response data */
char buffer[1024]; /* Output buffer */
if (do_pcl)
write(1, "\033E", 2);
else
write(1, "%!\n/Courier findfont 12 scalefont setfont 0 setgray\n", 52);
while (!job_canceled)
{
if (line == 0)
{
page ++;
if (do_pcl)
snprintf(buffer, sizeof(buffer), "PCL Page %d\r\n\r\n", page);
else
snprintf(buffer, sizeof(buffer),
"18 732 moveto (PS Page %d) show\n", page);
write(1, buffer, strlen(buffer));
}
line ++;
if (do_pcl)
snprintf(buffer, sizeof(buffer), "Line %d\r\n", line);
else
snprintf(buffer, sizeof(buffer), "18 %d moveto (Line %d) show\n",
720 - line * 12, line);
write(1, buffer, strlen(buffer));
if (line >= 55)
{
/*
* Eject after 55 lines...
*/
line = 0;
if (do_pcl)
write(1, "\014", 1);
else
write(1, "showpage\n", 9);
}
/*
* Check for back-channel data...
*/
if ((bytes = cupsBackChannelRead(buffer, sizeof(buffer), 0)) > 0)
write(2, buffer, (size_t)bytes);
/*
* Throttle output to ~100hz...
*/
usleep(10000);
}
/*
* Eject current page with info...
*/
if (do_pcl)
snprintf(buffer, sizeof(buffer),
"Canceled on line %d of page %d\r\n\014\033E", line, page);
else
snprintf(buffer, sizeof(buffer),
"\n18 %d moveto (Canceled on line %d of page %d)\nshowpage\n",
720 - line * 12, line, page);
write(1, buffer, strlen(buffer));
/*
* See if we get any back-channel data...
*/
while ((bytes = cupsBackChannelRead(buffer, sizeof(buffer), 5.0)) > 0)
write(2, buffer, (size_t)bytes);
exit(0);
}
else
{
/*
* Do PS or PCL query + test pages.
*/
char buffer[1024]; /* Buffer for response data */
ssize_t bytes; /* Number of bytes of response data */
double timeout; /* Timeout */
const char *data; /* Data to send */
static const char *pcl_data = /* PCL data */
"\033%-12345X@PJL\r\n"
"@PJL JOB NAME = \"Hello, World!\"\r\n"
"@PJL INFO USTATUS\r\n"
"@PJL ENTER LANGUAGE = PCL\r\n"
"\033E"
"Hello, World!\n"
"\014"
"\033%-12345X@PJL\r\n"
"@PJL EOJ NAME=\"Hello, World!\"\r\n"
"\033%-12345X";
static const char *ps_data = /* PostScript data */
"%!\n"
"save\n"
"product = flush\n"
"currentpagedevice /PageSize get aload pop\n"
"2 copy gt {exch} if\n"
"(Unknown)\n"
"19 dict\n"
"dup [612 792] (Letter) put\n"
"dup [612 1008] (Legal) put\n"
"dup [612 935] (w612h935) put\n"
"dup [522 756] (Executive) put\n"
"dup [595 842] (A4) put\n"
"dup [420 595] (A5) put\n"
"dup [499 709] (ISOB5) put\n"
"dup [516 728] (B5) put\n"
"dup [612 936] (w612h936) put\n"
"dup [284 419] (Postcard) put\n"
"dup [419.5 567] (DoublePostcard) put\n"
"dup [558 774] (w558h774) put\n"
"dup [553 765] (w553h765) put\n"
"dup [522 737] (w522h737) put\n"
"dup [499 709] (EnvISOB5) put\n"
"dup [297 684] (Env10) put\n"
"dup [459 649] (EnvC5) put\n"
"dup [312 624] (EnvDL) put\n"
"dup [279 540] (EnvMonarch) put\n"
"{ exch aload pop 4 index sub abs 5 le exch\n"
" 5 index sub abs 5 le and\n"
" {exch pop exit} {pop} ifelse\n"
"} bind forall\n"
"= flush pop pop\n"
"/Courier findfont 12 scalefont setfont\n"
"0 setgray 36 720 moveto (Hello, ) show product show (!) show\n"
"showpage\n"
"restore\n"
"\004";
if (do_pcl)
data = pcl_data;
else
data = ps_data;
write(1, data, strlen(data));
write(2, "DEBUG: START\n", 13);
timeout = 60.0;
while ((bytes = cupsBackChannelRead(buffer, sizeof(buffer),
timeout)) > 0)
{
write(2, buffer, (size_t)bytes);
timeout = 5.0;
}
write(2, "\nDEBUG: END\n", 12);
}
exit(0);
}
else if (data_pid < 0)
{
perror("testbackend: Unable to fork");
return (1);
}
}
else
data_fds[0] = data_fds[1] = -1;
/*
* Execute the backend...
*/
if ((back_pid = fork()) == 0)
{
/*
* Child comes here...
*/
if (do_trickle || do_ps || do_pcl || do_cancel)
{
if (data_fds[0] != 0)
{
dup2(data_fds[0], 0);
close(data_fds[0]);
}
close(data_fds[1]);
}
if (!show_log)
{
if ((fd = open("/dev/null", O_WRONLY)) != 2)
{
dup2(fd, 2);
close(fd);
}
}
if (back_fds[1] != 3)
{
dup2(back_fds[1], 3);
close(back_fds[0]);
}
close(back_fds[1]);
if (side_fds[1] != 4)
{
dup2(side_fds[1], 4);
close(side_fds[0]);
}
close(side_fds[1]);
execv(backend, argv + first_arg);
fprintf(stderr, "testbackend: Unable to execute \"%s\": %s\n", backend,
strerror(errno));
return (errno);
}
else if (back_pid < 0)
{
perror("testbackend: Unable to fork");
return (1);
}
/*
* Parent comes here, setup back and side channel file descriptors...
*/
if (do_trickle || do_ps || do_pcl || do_cancel)
{
close(data_fds[0]);
close(data_fds[1]);
}
if (back_fds[0] != 3)
{
dup2(back_fds[0], 3);
close(back_fds[0]);
}
close(back_fds[1]);
if (side_fds[0] != 4)
{
dup2(side_fds[0], 4);
close(side_fds[0]);
}
close(side_fds[1]);
/*
* Do side-channel tests as needed, then wait for the backend...
*/
if (do_side_tests)
{
int length; /* Length of buffer */
char buffer[2049]; /* Buffer for reponse */
cups_sc_status_t scstatus; /* Status of side-channel command */
static const char * const statuses[] =
{
"CUPS_SC_STATUS_NONE", /* No status */
"CUPS_SC_STATUS_OK", /* Operation succeeded */
"CUPS_SC_STATUS_IO_ERROR", /* An I/O error occurred */
"CUPS_SC_STATUS_TIMEOUT", /* The backend did not respond */
"CUPS_SC_STATUS_NO_RESPONSE", /* The device did not respond */
"CUPS_SC_STATUS_BAD_MESSAGE", /* The command/response message was invalid */
"CUPS_SC_STATUS_TOO_BIG", /* Response too big */
"CUPS_SC_STATUS_NOT_IMPLEMENTED" /* Command not implemented */
};
sleep(2);
length = 0;
scstatus = cupsSideChannelDoRequest(CUPS_SC_CMD_DRAIN_OUTPUT, buffer,
&length, 60.0);
printf("CUPS_SC_CMD_DRAIN_OUTPUT returned %s\n", statuses[scstatus]);
length = 1;
scstatus = cupsSideChannelDoRequest(CUPS_SC_CMD_GET_BIDI, buffer,
&length, 5.0);
printf("CUPS_SC_CMD_GET_BIDI returned %s, %d\n", statuses[scstatus], buffer[0]);
length = sizeof(buffer) - 1;
scstatus = cupsSideChannelDoRequest(CUPS_SC_CMD_GET_DEVICE_ID, buffer,
&length, 5.0);
buffer[length] = '\0';
printf("CUPS_SC_CMD_GET_DEVICE_ID returned %s, \"%s\"\n",
statuses[scstatus], buffer);
length = 1;
scstatus = cupsSideChannelDoRequest(CUPS_SC_CMD_GET_STATE, buffer,
&length, 5.0);
printf("CUPS_SC_CMD_GET_STATE returned %s, %02X\n", statuses[scstatus],
buffer[0] & 255);
if (do_walk)
{
/*
* Walk the OID tree...
*/
scstatus = cupsSideChannelSNMPWalk(oid, 5.0, walk_cb, NULL);
printf("CUPS_SC_CMD_SNMP_WALK returned %s\n", statuses[scstatus]);
}
else
{
/*
* Lookup the same OID twice...
*/
length = sizeof(buffer);
scstatus = cupsSideChannelSNMPGet(oid, buffer, &length, 5.0);
printf("CUPS_SC_CMD_SNMP_GET %s returned %s, %d bytes (%s)\n", oid,
statuses[scstatus], (int)length, buffer);
length = sizeof(buffer);
scstatus = cupsSideChannelSNMPGet(oid, buffer, &length, 5.0);
printf("CUPS_SC_CMD_SNMP_GET %s returned %s, %d bytes (%s)\n", oid,
statuses[scstatus], (int)length, buffer);
}
length = 0;
scstatus = cupsSideChannelDoRequest(CUPS_SC_CMD_SOFT_RESET, buffer,
&length, 5.0);
printf("CUPS_SC_CMD_SOFT_RESET returned %s\n", statuses[scstatus]);
}
if (do_cancel)
{
sleep(1);
kill(data_pid, SIGTERM);
kill(back_pid, SIGTERM);
}
while ((pid = wait(&status)) > 0)
{
if (status)
{
if (WIFEXITED(status))
printf("%s exited with status %d!\n",
pid == back_pid ? backend : "test",
WEXITSTATUS(status));
else
printf("%s crashed with signal %d!\n",
pid == back_pid ? backend : "test",
WTERMSIG(status));
}
}
/*
* Exit accordingly...
*/
return (status != 0);
}
/*
* 'sigterm_handler()' - Flag when we get SIGTERM.
*/
static void
sigterm_handler(int sig) /* I - Signal */
{
(void)sig;
job_canceled = 1;
}
/*
* 'usage()' - Show usage information.
*/
static void
usage(void)
{
puts("Usage: testbackend [-cancel] [-d] [-ps | -pcl] [-s [-get OID] "
"[-walk OID]] [-t] device-uri job-id user title copies options [file]");
puts("");
puts("Options:");
puts(" -cancel Simulate a canceled print job after 2 seconds.");
puts(" -d Show log messages from backend.");
puts(" -get OID Lookup the specified SNMP OID.");
puts(" (.1.3.6.1.2.1.43.10.2.1.4.1.1 is a good one for printers)");
puts(" -pcl Send PCL+PJL query and test page to backend.");
puts(" -ps Send PostScript query and test page to backend.");
puts(" -s Do side-channel + SNMP tests.");
puts(" -t Send spaces slowly to backend ('trickle').");
puts(" -walk OID Walk the specified SNMP OID.");
puts(" (.1.3.6.1.2.1.43 is a good one for printers)");
exit(1);
}
/*
* 'walk_cb()' - Show results of cupsSideChannelSNMPWalk...
*/
static void
walk_cb(const char *oid, /* I - OID */
const char *data, /* I - Data */
int datalen, /* I - Length of data */
void *context) /* I - Context (unused) */
{
char temp[80];
(void)context;
if ((size_t)datalen > (sizeof(temp) - 1))
{
memcpy(temp, data, sizeof(temp) - 1);
temp[sizeof(temp) - 1] = '\0';
}
else
{
memcpy(temp, data, (size_t)datalen);
temp[datalen] = '\0';
}
printf("CUPS_SC_CMD_SNMP_WALK %s, %d bytes (%s)\n", oid, datalen, temp);
}
+72
Ver Arquivo
@@ -0,0 +1,72 @@
/*
* SNMP supplies test program for CUPS.
*
* Copyright 2008-2011 by Apple Inc.
*
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
* 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.
*/
/*
* Include necessary headers.
*/
#include "backend-private.h"
/*
* 'main()' - Show the supplies state of a printer.
*/
int /* O - Exit status */
main(int argc, /* I - Number of command-line args */
char *argv[]) /* I - Command-line arguments */
{
http_addrlist_t *host; /* Host addresses */
int snmp_fd; /* SNMP socket */
int page_count, /* Current page count */
printer_state; /* Current printer state */
if (argc != 2)
{
puts("Usage: testsupplies ip-or-hostname");
return (1);
}
if ((host = httpAddrGetList(argv[1], AF_UNSPEC, "9100")) == NULL)
{
perror(argv[1]);
return (1);
}
if ((snmp_fd = _cupsSNMPOpen(host->addr.addr.sa_family)) < 0)
{
perror(argv[1]);
return (1);
}
for (;;)
{
fputs("backendSNMPSupplies: ", stdout);
if (backendSNMPSupplies(snmp_fd, &(host->addr), &page_count,
&printer_state))
{
puts("FAIL");
return (1);
}
printf("backendSNMPSupplies: %s (page_count=%d, printer_state=%d)\n",
page_count < 0 || printer_state < CUPS_TC_other ||
printer_state > CUPS_TC_warmup ? "FAIL" : "PASS",
page_count, printer_state);
sleep(5);
}
}
+1179 -697
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+68 -87
Ver Arquivo
@@ -1,34 +1,24 @@
/*
* "$Id$"
* USB port backend for CUPS.
*
* USB port backend for the Common UNIX Printing System (CUPS).
* This file is included from "usb.c" when compiled on UNIX/Linux.
*
* This file is included from "usb.c" when compiled on UNIX/Linux.
* Copyright 2007-2013 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
*
* Copyright 2007 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
* "LICENSE" which should have been included with this file. If this
* file is missing or damaged, see the license at "http://www.cups.org/".
*
* 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:
*
* print_device() - Print a file to a USB device.
* list_devices() - List all USB devices.
* open_device() - Open a USB device...
* side_cb() - Handle side-channel requests...
* This file is subject to the Apple OS-Developed Software exception.
*/
/*
* Include necessary headers.
*/
#include "ieee1284.c"
#include <sys/select.h>
@@ -37,7 +27,8 @@
*/
static int open_device(const char *uri, int *use_bc);
static void side_cb(int print_fd, int device_fd, int use_bc);
static int side_cb(int print_fd, int device_fd, int snmp_fd,
http_addr_t *addr, int use_bc);
/*
@@ -56,7 +47,7 @@ print_device(const char *uri, /* I - Device URI */
{
int use_bc; /* Use backchannel path? */
int device_fd; /* USB device */
size_t tbytes; /* Total number of bytes written */
ssize_t tbytes; /* Total number of bytes written */
struct termios opts; /* Parallel port options */
@@ -80,6 +71,14 @@ print_device(const char *uri, /* I - Device URI */
use_bc = 0;
#elif defined(__sun)
/*
* CUPS STR #3028: Solaris' usbprn driver apparently does not support
* select() or poll(), so we can't support backchannel...
*/
use_bc = 0;
#else
/*
* Disable backchannel data when printing to Brother, Canon, or
@@ -88,10 +87,10 @@ print_device(const char *uri, /* I - Device URI */
* a read request...
*/
use_bc = strcasecmp(hostname, "Brother") &&
strcasecmp(hostname, "Canon") &&
strcasecmp(hostname, "Konica Minolta") &&
strcasecmp(hostname, "Minolta");
use_bc = _cups_strcasecmp(hostname, "Brother") &&
_cups_strcasecmp(hostname, "Canon") &&
_cups_strncasecmp(hostname, "Konica", 6) &&
_cups_strncasecmp(hostname, "Minolta", 7);
#endif /* __FreeBSD__ || __NetBSD__ || __OpenBSD__ || __DragonFly__ */
if ((device_fd = open_device(uri, &use_bc)) == -1)
@@ -105,9 +104,9 @@ print_device(const char *uri, /* I - Device URI */
* available printer in the class.
*/
_cupsLangPuts(stderr,
_("INFO: Unable to contact printer, queuing on next "
"printer in class...\n"));
_cupsLangPrintFilter(stderr, "INFO",
_("Unable to contact printer, queuing on next "
"printer in class."));
/*
* Sleep 5 seconds to keep the job from requeuing too rapidly...
@@ -120,23 +119,17 @@ print_device(const char *uri, /* I - Device URI */
if (errno == EBUSY)
{
_cupsLangPuts(stderr,
_("INFO: Printer busy; will retry in 10 seconds...\n"));
_cupsLangPrintFilter(stderr, "INFO", _("The printer is in use."));
sleep(10);
}
else if (errno == ENXIO || errno == EIO || errno == ENOENT ||
errno == ENODEV)
{
_cupsLangPuts(stderr,
_("INFO: Printer not connected; will retry in 30 "
"seconds...\n"));
sleep(30);
}
else
{
_cupsLangPrintf(stderr,
_("ERROR: Unable to open device file \"%s\": %s\n"),
resource, strerror(errno));
_cupsLangPrintError("ERROR", _("Unable to open device file"));
return (CUPS_BACKEND_FAILED);
}
}
@@ -151,7 +144,7 @@ print_device(const char *uri, /* I - Device URI */
tcgetattr(device_fd, &opts);
opts.c_lflag &= ~(ICANON | ECHO | ISIG); /* Raw mode */
opts.c_lflag &= ~(unsigned)(ICANON | ECHO | ISIG); /* Raw mode */
/**** No options supported yet ****/
@@ -173,16 +166,20 @@ print_device(const char *uri, /* I - Device URI */
lseek(print_fd, 0, SEEK_SET);
}
tbytes = backendRunLoop(print_fd, device_fd, use_bc, side_cb);
#ifdef __sun
/*
* CUPS STR #3028: Solaris' usbprn driver apparently does not support
* select() or poll(), so we can't support the sidechannel either...
*/
tbytes = backendRunLoop(print_fd, device_fd, -1, NULL, use_bc, 1, NULL);
#else
tbytes = backendRunLoop(print_fd, device_fd, -1, NULL, use_bc, 1, side_cb);
#endif /* __sun */
if (print_fd != 0 && tbytes >= 0)
_cupsLangPrintf(stderr,
#ifdef HAVE_LONG_LONG
_("INFO: Sent print file, %lld bytes...\n"),
#else
_("INFO: Sent print file, %ld bytes...\n"),
#endif /* HAVE_LONG_LONG */
CUPS_LLCAST tbytes);
_cupsLangPrintFilter(stderr, "INFO", _("Print file sent."));
}
/*
@@ -191,7 +188,7 @@ print_device(const char *uri, /* I - Device URI */
close(device_fd);
return (tbytes < 0 ? CUPS_BACKEND_FAILED : CUPS_BACKEND_OK);
return (CUPS_BACKEND_OK);
}
@@ -210,6 +207,7 @@ list_devices(void)
device_uri[1024], /* Device URI string */
make_model[1024]; /* Make and model */
/*
* Try to open each USB device...
*/
@@ -245,12 +243,11 @@ list_devices(void)
if (!backendGetDeviceID(fd, device_id, sizeof(device_id),
make_model, sizeof(make_model),
"usb", device_uri, sizeof(device_uri)))
printf("direct %s \"%s\" \"%s USB #%d\" \"%s\"\n", device_uri,
make_model, make_model, i + 1, device_id);
cupsBackendReport("direct", device_uri, make_model, make_model,
device_id, NULL);
close(fd);
}
#elif defined(__sgi)
#elif defined(__sun) && defined(ECPPIOC_GETDEVID)
int i; /* Looping var */
int fd; /* File descriptor */
@@ -273,15 +270,13 @@ list_devices(void)
if (!backendGetDeviceID(fd, device_id, sizeof(device_id),
make_model, sizeof(make_model),
"usb", device_uri, sizeof(device_uri)))
printf("direct %s \"%s\" \"%s USB #%d\" \"%s\"\n", device_uri,
make_model, make_model, i + 1, device_id);
cupsBackendReport("direct", device_uri, make_model, make_model,
device_id, NULL);
close(fd);
}
}
#elif defined(__hpux)
#elif defined(__osf)
#elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__)
#elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) || defined(__FreeBSD_kernel__)
int i; /* Looping var */
char device[255]; /* Device filename */
@@ -345,7 +340,7 @@ open_device(const char *uri, /* I - Device URI */
* Find the correct USB device...
*/
do
for (;;)
{
for (busy = 0, i = 0; i < 16; i ++)
{
@@ -414,21 +409,10 @@ open_device(const char *uri, /* I - Device URI */
*/
if (busy)
{
_cupsLangPuts(stderr,
_("INFO: Printer busy; will retry in 5 seconds...\n"));
sleep(5);
}
_cupsLangPrintFilter(stderr, "INFO", _("The printer is in use."));
sleep(5);
}
while (busy);
/*
* Couldn't find the printer, return "no such device or address"...
*/
errno = ENODEV;
return (-1);
}
#elif defined(__sun) && defined(ECPPIOC_GETDEVID)
{
@@ -508,8 +492,7 @@ open_device(const char *uri, /* I - Device URI */
if (busy)
{
_cupsLangPuts(stderr,
_("INFO: Printer is busy; will retry in 5 seconds...\n"));
_cupsLangPrintFilter(stderr, "INFO", _("The printer is in use."));
sleep(5);
}
}
@@ -525,7 +508,7 @@ open_device(const char *uri, /* I - Device URI */
}
#else
{
if (use_bc)
if (*use_bc)
fd = open(uri + 4, O_RDWR | O_EXCL);
else
fd = -1;
@@ -551,10 +534,12 @@ open_device(const char *uri, /* I - Device URI */
* 'side_cb()' - Handle side-channel requests...
*/
static void
side_cb(int print_fd, /* I - Print file */
int device_fd, /* I - Device file */
int use_bc) /* I - Using back-channel? */
static int /* O - 0 on success, -1 on error */
side_cb(int print_fd, /* I - Print file */
int device_fd, /* I - Device file */
int snmp_fd, /* I - SNMP socket (unused) */
http_addr_t *addr, /* I - Device address (unused) */
int use_bc) /* I - Using back-channel? */
{
cups_sc_command_t command; /* Request command */
cups_sc_status_t status; /* Request/response status */
@@ -562,13 +547,13 @@ side_cb(int print_fd, /* I - Print file */
int datalen; /* Request/response data size */
(void)snmp_fd;
(void)addr;
datalen = sizeof(data);
if (cupsSideChannelRead(&command, &status, data, &datalen, 1.0))
{
_cupsLangPuts(stderr, _("WARNING: Failed to read side-channel request!\n"));
return;
}
return (-1);
switch (command)
{
@@ -584,6 +569,7 @@ side_cb(int print_fd, /* I - Print file */
break;
case CUPS_SC_CMD_GET_BIDI :
status = CUPS_SC_STATUS_OK;
data[0] = use_bc;
datalen = 1;
break;
@@ -610,10 +596,5 @@ side_cb(int print_fd, /* I - Print file */
break;
}
cupsSideChannelWrite(command, status, data, datalen, 1.0);
return (cupsSideChannelWrite(command, status, data, datalen, 1.0));
}
/*
* End of "$Id$".
*/
+20 -39
Ver Arquivo
@@ -1,24 +1,16 @@
/*
* "$Id$"
* USB printer backend for CUPS.
*
* USB port backend for the Common UNIX Printing System (CUPS).
* Copyright 2007-2012 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
*
* Copyright 2007 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
* "LICENSE" which should have been included with this file. If this
* file is missing or damaged, see the license at "http://www.cups.org/".
*
* 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.
* This file is subject to the Apple OS-Developed Software exception.
*/
/*
@@ -30,14 +22,7 @@
# include <ApplicationServices/ApplicationServices.h>
#endif /* __APPLE__ */
#include <cups/backend.h>
#include <cups/cups.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <cups/string.h>
#include <cups/i18n.h>
#include <signal.h>
#include "backend-private.h"
#ifdef WIN32
# include <io.h>
@@ -62,9 +47,11 @@ int print_device(const char *uri, const char *hostname,
* Include the vendor-specific USB implementation...
*/
#ifdef __APPLE__
#ifdef HAVE_LIBUSB
# include "usb-libusb.c"
#elif defined(__APPLE__)
# include "usb-darwin.c"
#elif defined(__linux) || defined(__sun) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__)
#elif defined(__linux) || defined(__sun) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) || defined(__FreeBSD_kernel__)
# include "usb-unix.c"
#else
/*
@@ -123,7 +110,7 @@ print_device(const char *uri, /* I - Device URI */
return (CUPS_BACKEND_FAILED);
}
#endif /* __APPLE__ */
#endif /* HAVE_LIBUSB */
/*
@@ -185,7 +172,7 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
else if (argc < 6 || argc > 7)
{
_cupsLangPrintf(stderr,
_("Usage: %s job-id user title copies options [file]\n"),
_("Usage: %s job-id user title copies options [file]"),
argv[0]);
return (CUPS_BACKEND_FAILED);
}
@@ -201,9 +188,9 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
hostname, sizeof(hostname), &port,
resource, sizeof(resource)) < HTTP_URI_OK)
{
_cupsLangPuts(stderr,
_("ERROR: No device URI found in argv[0] or in DEVICE_URI "
"environment variable!\n"));
_cupsLangPrintFilter(stderr, "ERROR",
_("No device URI found in argv[0] or in DEVICE_URI "
"environment variable."));
return (1);
}
@@ -239,8 +226,7 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
if ((print_fd = open(argv[6], O_RDONLY)) < 0)
{
_cupsLangPrintf(stderr, _("ERROR: Unable to open print file %s - %s\n"),
argv[6], strerror(errno));
_cupsLangPrintError("ERROR", _("Unable to open print file"));
return (CUPS_BACKEND_FAILED);
}
@@ -263,8 +249,3 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
return (status);
}
/*
* End of "$Id$".
*/
+25 -13
Ver Arquivo
@@ -1,13 +1,25 @@
# DO NOT DELETE THIS LINE -- make depend depends on it.
lpc.o: lpc.c ../cups/cups.h ../cups/ipp.h ../cups/http.h ../cups/ppd.h \
../cups/array.h ../cups/file.h ../cups/language.h ../cups/i18n.h \
../cups/transcode.h ../cups/debug.h ../cups/string.h ../config.h
lpq.o: lpq.c ../cups/string.h ../config.h ../cups/cups.h ../cups/ipp.h \
../cups/http.h ../cups/ppd.h ../cups/array.h ../cups/file.h \
../cups/language.h ../cups/i18n.h ../cups/transcode.h ../cups/debug.h
lpr.o: lpr.c ../cups/string.h ../config.h ../cups/cups.h ../cups/ipp.h \
../cups/http.h ../cups/ppd.h ../cups/array.h ../cups/file.h \
../cups/language.h ../cups/i18n.h ../cups/transcode.h
lprm.o: lprm.c ../cups/cups.h ../cups/ipp.h ../cups/http.h ../cups/ppd.h \
../cups/array.h ../cups/file.h ../cups/language.h ../cups/i18n.h \
../cups/transcode.h ../cups/string.h ../config.h
lpc.o: lpc.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
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
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
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
+56 -17
Ver Arquivo
@@ -1,20 +1,19 @@
#
# "$Id$"
# Berkeley commands makefile for CUPS.
#
# Berkeley commands makefile for the Common UNIX Printing System (CUPS).
# Copyright 2007-2012 by Apple Inc.
# Copyright 1997-2006 by Easy Software Products, all rights reserved.
#
# Copyright 2007 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/".
# 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
TARGETS = lpc lpq lpr lprm
OBJS = lpc.o lpq.o lpr.o lprm.o
@@ -26,6 +25,20 @@ OBJS = lpc.o lpq.o lpr.o lprm.o
all: $(TARGETS)
#
# Make library targets...
#
libs:
#
# Make unit tests...
#
unittests:
#
# Clean all object files...
#
@@ -39,28 +52,59 @@ clean:
#
depend:
makedepend -Y -I.. -fDependencies $(OBJS:.o=.c) >/dev/null 2>&1
$(CC) -MM $(ALL_CFLAGS) $(OBJS:.o=.c) >Dependencies
#
# Install all targets...
#
install: all
install: all install-data install-headers install-libs install-exec
#
# Install data files...
#
install-data:
#
# Install programs...
#
install-exec:
echo Installing Berkeley user printing commands in $(BINDIR)...
$(INSTALL_DIR) -m 755 $(BINDIR)
$(INSTALL_BIN) lpq $(BINDIR)
$(INSTALL_BIN) lpr $(BINDIR)
$(INSTALL_BIN) lprm $(BINDIR)
echo Installing Berkeley admin printing commands in $(BINDIR)...
$(INSTALL_DIR) -m 755 $(SBINDIR)
$(INSTALL_BIN) lpc $(SBINDIR)
if test "x$(SYMROOT)" != "x"; then \
$(INSTALL_DIR) $(SYMROOT); \
for file in $(TARGETS); do \
cp $$file $(SYMROOT); \
dsymutil $(SYMROOT)/$$file; \
done \
fi
#
# Install headers...
#
install-headers:
#
# Install libraries...
#
install-libs:
#
# Uninstall all targets...
#
@@ -115,8 +159,3 @@ lprm: lprm.o ../cups/$(LIBCUPS)
#
include Dependencies
#
# End of "$Id$".
#
+32 -63
Ver Arquivo
@@ -1,43 +1,28 @@
/*
* "$Id$"
* "lpc" command for CUPS.
*
* "lpc" command for the Common UNIX Printing System (CUPS).
* Copyright 2007-2014 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products.
*
* Copyright 2007 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 commands.
* compare_strings() - Compare two command-line strings.
* do_command() - Do an lpc command...
* show_help() - Show help messages.
* show_status() - Show printers.
* 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 necessary headers...
*/
#include <stdio.h>
#include <stdlib.h>
#include <cups/cups.h>
#include <cups/i18n.h>
#include <cups/debug.h>
#include <cups/string.h>
#include <cups/cups-private.h>
/*
* Local functions...
*/
static int compare_strings(const char *, const char *, int);
static int compare_strings(const char *, const char *, size_t);
static void do_command(http_t *, const char *, const char *);
static void show_help(const char *);
static void show_status(http_t *, const char *);
@@ -78,7 +63,7 @@ main(int argc, /* I - Number of command-line arguments */
* Do the command prompt thing...
*/
_cupsLangPuts(stdout, _("lpc> "));
_cupsLangPuts(stdout, _("lpc> ")); /* TODO: Need no-newline version */
while (fgets(line, sizeof(line), stdin) != NULL)
{
/*
@@ -106,7 +91,7 @@ main(int argc, /* I - Number of command-line arguments */
* Nothing left, just show a prompt...
*/
_cupsLangPuts(stdout, _("lpc> "));
_cupsLangPuts(stdout, _("lpc> ")); /* TODO: Need no newline version */
continue;
}
@@ -142,7 +127,7 @@ main(int argc, /* I - Number of command-line arguments */
* Put another prompt out to the user...
*/
_cupsLangPuts(stdout, _("lpc> "));
_cupsLangPuts(stdout, _("lpc> ")); /* TODO: Need no newline version */
}
}
@@ -163,9 +148,9 @@ main(int argc, /* I - Number of command-line arguments */
static int /* O - -1 or 1 = no match, 0 = match */
compare_strings(const char *s, /* I - Command-line string */
const char *t, /* I - Option string */
int tmin) /* I - Minimum number of unique chars in option */
size_t tmin) /* I - Minimum number of unique chars in option */
{
int slen; /* Length of command-line string */
size_t slen; /* Length of command-line string */
slen = strlen(s);
@@ -191,7 +176,7 @@ do_command(http_t *http, /* I - HTTP connection to server */
show_help(params);
else
_cupsLangPrintf(stdout,
_("%s is not implemented by the CUPS version of lpc.\n"),
_("%s is not implemented by the CUPS version of lpc."),
command);
}
@@ -208,14 +193,14 @@ show_help(const char *command) /* I - Command to describe or NULL */
_cupsLangPrintf(stdout,
_("Commands may be abbreviated. Commands are:\n"
"\n"
"exit help quit status ?\n"));
"exit help quit status ?"));
}
else if (!compare_strings(command, "help", 1) || !strcmp(command, "?"))
_cupsLangPrintf(stdout, _("help\t\tget help on commands\n"));
_cupsLangPrintf(stdout, _("help\t\tGet help on commands."));
else if (!compare_strings(command, "status", 4))
_cupsLangPrintf(stdout, _("status\t\tshow status of daemon and queue\n"));
_cupsLangPrintf(stdout, _("status\t\tShow status of daemon and queue."));
else
_cupsLangPrintf(stdout, _("?Invalid help command unknown\n"));
_cupsLangPrintf(stdout, _("?Invalid help command unknown."));
}
@@ -230,7 +215,6 @@ show_status(http_t *http, /* I - HTTP connection to server */
ipp_t *request, /* IPP Request */
*response; /* IPP Response */
ipp_attribute_t *attr; /* Current attribute */
cups_lang_t *language; /* Default language */
char *printer, /* Printer name */
*device, /* Device URI */
*delimiter; /* Char search result */
@@ -263,18 +247,7 @@ show_status(http_t *http, /* I - HTTP connection to server */
* attributes-natural-language
*/
request = ippNew();
request->request.op.operation_id = CUPS_GET_PRINTERS;
request->request.op.request_id = 1;
language = cupsLangDefault();
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_CHARSET,
"attributes-charset", NULL, cupsLangEncoding(language));
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE,
"attributes-natural-language", NULL, language->language);
request = ippNewRequest(CUPS_GET_PRINTERS);
ippAddStrings(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD,
"requested-attributes", sizeof(requested) / sizeof(requested[0]),
@@ -381,7 +354,8 @@ show_status(http_t *http, /* I - HTTP connection to server */
for (ptr = printer;
*ptr != '\0' && *dptr != '\0' && *ptr == *dptr;
ptr ++, dptr ++);
ptr ++, dptr ++)
/* do nothing */;
if (*ptr == '\0' && (*dptr == '\0' || *dptr == ',' ||
isspace(*dptr & 255)))
@@ -417,7 +391,7 @@ show_status(http_t *http, /* I - HTTP connection to server */
printf("%s:\n", printer);
if (!strncmp(device, "file:", 5))
_cupsLangPrintf(stdout,
_("\tprinter is on device \'%s\' speed -1\n"),
_("\tprinter is on device \'%s\' speed -1"),
device + 5);
else
{
@@ -429,27 +403,27 @@ show_status(http_t *http, /* I - HTTP connection to server */
{
*delimiter = '\0';
_cupsLangPrintf(stdout,
_("\tprinter is on device \'%s\' speed -1\n"),
_("\tprinter is on device \'%s\' speed -1"),
device);
}
}
if (accepting)
_cupsLangPuts(stdout, _("\tqueuing is enabled\n"));
_cupsLangPuts(stdout, _("\tqueuing is enabled"));
else
_cupsLangPuts(stdout, _("\tqueuing is disabled\n"));
_cupsLangPuts(stdout, _("\tqueuing is disabled"));
if (pstate != IPP_PRINTER_STOPPED)
_cupsLangPuts(stdout, _("\tprinting is enabled\n"));
_cupsLangPuts(stdout, _("\tprinting is enabled"));
else
_cupsLangPuts(stdout, _("\tprinting is disabled\n"));
_cupsLangPuts(stdout, _("\tprinting is disabled"));
if (jobcount == 0)
_cupsLangPuts(stdout, _("\tno entries\n"));
_cupsLangPuts(stdout, _("\tno entries"));
else
_cupsLangPrintf(stdout, _("\t%d entries\n"), jobcount);
_cupsLangPrintf(stdout, _("\t%d entries"), jobcount);
_cupsLangPuts(stdout, _("\tdaemon present\n"));
_cupsLangPuts(stdout, _("\tdaemon present"));
}
if (attr == NULL)
@@ -459,8 +433,3 @@ show_status(http_t *http, /* I - HTTP connection to server */
ippDelete(response);
}
}
/*
* End of "$Id$".
*/
+180 -202
Ver Arquivo
@@ -1,39 +1,21 @@
/*
* "$Id$"
* "lpq" command for CUPS.
*
* "lpq" command for the Common UNIX Printing System (CUPS).
* Copyright 2007-2016 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products.
*
* Copyright 2007 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 commands.
* show_jobs() - Show jobs.
* show_printer() - Show printer status.
* usage() - Show program usage.
* 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 necessary headers...
*/
/*
* Include necessary headers...
*/
#include <stdio.h>
#include <stdlib.h>
#include <cups/string.h>
#include <cups/cups.h>
#include <cups/i18n.h>
#include <cups/debug.h>
#include <cups/cups-private.h>
/*
@@ -44,7 +26,7 @@ static http_t *connect_server(const char *, http_t *);
static int show_jobs(const char *, http_t *, const char *,
const char *, const int, const int);
static void show_printer(const char *, http_t *, const char *);
static void usage(void);
static void usage(void) __attribute__((noreturn));
/*
@@ -57,7 +39,8 @@ main(int argc, /* I - Number of command-line arguments */
{
int i; /* Looping var */
http_t *http; /* Connection to server */
const char *dest, /* Desired printer */
const char *opt, /* Option pointer */
*dest, /* Desired printer */
*user, /* Desired user */
*val; /* Environment variable name */
char *instance; /* Printer instance */
@@ -65,8 +48,7 @@ main(int argc, /* I - Number of command-line arguments */
all, /* All printers */
interval, /* Reporting interval */
longstatus; /* Show file details */
int num_dests; /* Number of destinations */
cups_dest_t *dests; /* Destinations */
cups_dest_t *named_dest; /* Named destination */
_cupsSetLocale(argv);
@@ -82,149 +64,156 @@ main(int argc, /* I - Number of command-line arguments */
interval = 0;
longstatus = 0;
all = 0;
num_dests = 0;
dests = NULL;
for (i = 1; i < argc; i ++)
{
if (argv[i][0] == '+')
{
interval = atoi(argv[i] + 1);
}
else if (argv[i][0] == '-')
{
switch (argv[i][1])
for (opt = argv[i] + 1; *opt; opt ++)
{
case 'E' : /* Encrypt */
switch (*opt)
{
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 compiled in!\n"),
argv[0]);
_cupsLangPrintf(stderr, _("%s: Sorry, no encryption support."), argv[0]);
#endif /* HAVE_SSL */
break;
break;
case 'U' : /* Username */
if (argv[i][2] != '\0')
cupsSetUser(argv[i] + 2);
else
{
i ++;
if (i >= argc)
case 'U' : /* Username */
if (opt[1] != '\0')
{
_cupsLangPrintf(stderr,
_("%s: Error - expected username after "
"\'-U\' option!\n"),
argv[0]);
return (1);
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];
}
cupsSetUser(argv[i]);
}
break;
case 'P' : /* Printer */
if (argv[i][2])
dest = argv[i] + 2;
else
{
i ++;
if ((instance = strchr(dest, '/')) != NULL)
*instance++ = '\0';
if (i >= argc)
http = connect_server(argv[0], http);
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);
cupsFreeDests(num_dests, dests);
usage();
http = NULL;
}
dest = argv[i];
}
if ((instance = strchr(dest, '/')) != NULL)
*instance++ = '\0';
http = connect_server(argv[0], http);
if (num_dests == 0)
num_dests = cupsGetDests2(http, &dests);
if (cupsGetDest(dest, instance, num_dests, dests) == NULL)
{
if (instance)
_cupsLangPrintf(stderr,
_("%s: Error - unknown destination \"%s/%s\"!\n"),
argv[0], dest, instance);
else
_cupsLangPrintf(stderr,
_("%s: Unknown destination \"%s\"!\n"),
argv[0], dest);
return (1);
}
break;
case 'a' : /* All printers */
all = 1;
break;
case 'h' : /* Connect to host */
if (http)
{
httpClose(http);
http = NULL;
}
if (argv[i][2] != '\0')
cupsSetServer(argv[i] + 2);
else
{
i ++;
if (i >= argc)
if (opt[1] != '\0')
{
_cupsLangPrintf(stderr,
_("%s: Error - expected hostname after "
"\'-h\' option!\n"),
argv[0]);
return (1);
}
cupsSetServer(opt + 1);
opt += strlen(opt) - 1;
}
else
cupsSetServer(argv[i]);
}
break;
{
i ++;
case 'l' : /* Long status */
longstatus = 1;
break;
if (i >= argc)
{
_cupsLangPrintf(stderr, _("%s: Error - expected hostname after \"-h\" option."), argv[0]);
return (1);
}
else
cupsSetServer(argv[i]);
}
break;
default :
httpClose(http);
cupsFreeDests(num_dests, dests);
case 'l' : /* Long status */
longstatus = 1;
break;
usage();
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);
if (dest == NULL && !all)
{
if (num_dests == 0)
num_dests = cupsGetDests2(http, &dests);
for (i = 0; i < num_dests; i ++)
if (dests[i].is_default)
dest = dests[i].name;
if (dest == NULL)
if ((named_dest = cupsGetNamedDest(http, NULL, NULL)) == NULL)
{
if (cupsLastError() == IPP_STATUS_ERROR_BAD_REQUEST ||
cupsLastError() == IPP_STATUS_ERROR_VERSION_NOT_SUPPORTED)
{
_cupsLangPrintf(stderr,
_("%s: Error - add '/version=1.1' to server name."),
argv[0]);
return (1);
}
val = NULL;
if ((dest = getenv("LPDEST")) == NULL)
@@ -240,19 +229,20 @@ main(int argc, /* I - Number of command-line arguments */
else
val = "LPDEST";
if (dest && !cupsGetDest(dest, NULL, num_dests, dests))
if (dest && val)
_cupsLangPrintf(stderr,
_("%s: error - %s environment variable names "
"non-existent destination \"%s\"!\n"),
argv[0], val, dest);
_("%s: Error - %s environment variable names "
"non-existent destination \"%s\"."), argv[0], val,
dest);
else
_cupsLangPrintf(stderr,
_("%s: error - no default destination available.\n"),
_("%s: Error - no default destination available."),
argv[0]);
httpClose(http);
cupsFreeDests(num_dests, dests);
return (1);
}
dest = named_dest->name;
}
/*
@@ -269,7 +259,7 @@ main(int argc, /* I - Number of command-line arguments */
if (i && interval)
{
fflush(stdout);
sleep(interval);
sleep((unsigned)interval);
}
else
break;
@@ -279,7 +269,6 @@ main(int argc, /* I - Number of command-line arguments */
* Close the connection to the server and return...
*/
cupsFreeDests(num_dests, dests);
httpClose(http);
return (0);
@@ -301,7 +290,7 @@ connect_server(const char *command, /* I - Command name */
if (http == NULL)
{
_cupsLangPrintf(stderr, _("%s: Unable to connect to server\n"), command);
_cupsLangPrintf(stderr, _("%s: Unable to connect to server."), command);
exit(1);
}
}
@@ -331,16 +320,24 @@ show_jobs(const char *command, /* I - Command name */
ipp_jstate_t jobstate; /* job-state */
int jobid, /* job-id */
jobsize, /* job-k-octets */
#ifdef __osf__
jobpriority, /* job-priority */
#endif /* __osf__ */
jobcount, /* Number of jobs */
jobcopies, /* Number of copies */
rank; /* Rank of job */
char resource[1024]; /* Resource string */
char rankstr[255]; /* Rank string */
char namestr[1024]; /* Job name string */
static const char *ranks[10] = /* Ranking strings */
static const char * const jobattrs[] =/* Job attributes we want to see */
{
"copies",
"job-id",
"job-k-octets",
"job-name",
"job-originating-user-name",
"job-printer-uri",
"job-priority",
"job-state"
};
static const char * const ranks[10] = /* Ranking strings */
{
"th",
"st",
@@ -355,8 +352,8 @@ show_jobs(const char *command, /* I - Command name */
};
DEBUG_printf(("show_jobs(%08x, %08x, %08x, %d, %d)\n", http, dest, user, id,
longstatus));
DEBUG_printf(("show_jobs(http=%p, dest=%p, user=%p, id=%d, longstatus%d)\n",
http, dest, user, id, longstatus));
if (http == NULL)
return (0);
@@ -368,21 +365,19 @@ show_jobs(const char *command, /* I - Command name */
* attributes-charset
* attributes-natural-language
* job-uri or printer-uri
* requested-attributes
* requesting-user-name
*/
request = ippNewRequest(id ? IPP_GET_JOB_ATTRIBUTES : IPP_GET_JOBS);
if (dest == NULL)
if (id)
{
if (id)
sprintf(resource, "ipp://localhost/jobs/%d", id);
else
strcpy(resource, "ipp://localhost/jobs");
snprintf(resource, sizeof(resource), "ipp://localhost/jobs/%d", id);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "job-uri",
NULL, resource);
}
else
else if (dest)
{
httpAssembleURIf(HTTP_URI_CODING_ALL, resource, sizeof(resource), "ipp",
NULL, "localhost", 0, "/printers/%s", dest);
@@ -390,6 +385,9 @@ show_jobs(const char *command, /* I - Command name */
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
NULL, resource);
}
else
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
NULL, "ipp://localhost/");
if (user)
{
@@ -397,6 +395,13 @@ show_jobs(const char *command, /* I - Command name */
"requesting-user-name", NULL, user);
ippAddBoolean(request, IPP_TAG_OPERATION, "my-jobs", 1);
}
else
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME,
"requesting-user-name", NULL, cupsUser());
ippAddStrings(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD,
"requested-attributes",
(int)(sizeof(jobattrs) / sizeof(jobattrs[0])), NULL, jobattrs);
/*
* Do the request and get back a response...
@@ -408,7 +413,7 @@ show_jobs(const char *command, /* I - Command name */
{
if (response->request.status.status_code > IPP_OK_CONFLICT)
{
_cupsLangPrintf(stderr, "%s: %s\n", command, cupsLastErrorString());
_cupsLangPrintf(stderr, "%s: %s", command, cupsLastErrorString());
ippDelete(response);
return (0);
}
@@ -437,12 +442,9 @@ show_jobs(const char *command, /* I - Command name */
jobid = 0;
jobsize = 0;
#ifdef __osf__
jobpriority = 50;
#endif /* __osf__ */
jobstate = IPP_JOB_PENDING;
jobname = "untitled";
jobuser = NULL;
jobname = "unknown";
jobuser = "unknown";
jobdest = NULL;
jobcopies = 1;
@@ -456,12 +458,6 @@ show_jobs(const char *command, /* I - Command name */
attr->value_tag == IPP_TAG_INTEGER)
jobsize = attr->values[0].integer;
#ifdef __osf__
if (!strcmp(attr->name, "job-priority") &&
attr->value_tag == IPP_TAG_INTEGER)
jobpriority = attr->values[0].integer;
#endif /* __osf__ */
if (!strcmp(attr->name, "job-state") &&
attr->value_tag == IPP_TAG_ENUM)
jobstate = (ipp_jstate_t)attr->values[0].integer;
@@ -499,15 +495,9 @@ show_jobs(const char *command, /* I - Command name */
}
if (!longstatus && jobcount == 0)
#ifdef __osf__
_cupsLangPuts(stdout,
_("Rank Owner Pri Job Files"
" Total Size\n"));
#else
_cupsLangPuts(stdout,
_("Rank Owner Job File(s)"
" Total Size\n"));
#endif /* __osf__ */
" Total Size"));
jobcount ++;
@@ -516,7 +506,7 @@ show_jobs(const char *command, /* I - Command name */
*/
if (jobstate == IPP_JOB_PROCESSING)
strcpy(rankstr, "active");
strlcpy(rankstr, "active", sizeof(rankstr));
else
{
/*
@@ -542,22 +532,15 @@ show_jobs(const char *command, /* I - Command name */
else
strlcpy(namestr, jobname, sizeof(namestr));
_cupsLangPrintf(stdout, _("%s: %-33.33s [job %d localhost]\n"),
_cupsLangPrintf(stdout, _("%s: %-33.33s [job %d localhost]"),
jobuser, rankstr, jobid);
_cupsLangPrintf(stdout, _(" %-39.39s %.0f bytes\n"),
_cupsLangPrintf(stdout, _(" %-39.39s %.0f bytes"),
namestr, 1024.0 * jobsize);
}
else
#ifdef __osf__
_cupsLangPrintf(stdout,
_("%-6s %-10.10s %-4d %-10d %-27.27s %.0f bytes\n"),
rankstr, jobuser, jobpriority, jobid, jobname,
1024.0 * jobsize);
#else
_cupsLangPrintf(stdout,
_("%-7s %-7.7s %-7d %-31.31s %.0f bytes\n"),
_("%-7s %-7.7s %-7d %-31.31s %.0f bytes"),
rankstr, jobuser, jobid, jobname, 1024.0 * jobsize);
#endif /* __osf */
if (attr == NULL)
break;
@@ -567,12 +550,12 @@ show_jobs(const char *command, /* I - Command name */
}
else
{
_cupsLangPrintf(stderr, "%s: %s\n", command, cupsLastErrorString());
_cupsLangPrintf(stderr, "%s: %s", command, cupsLastErrorString());
return (0);
}
if (jobcount == 0)
_cupsLangPuts(stdout, _("no entries\n"));
_cupsLangPuts(stdout, _("no entries"));
return (jobcount);
}
@@ -621,7 +604,7 @@ show_printer(const char *command, /* I - Command name */
{
if (response->request.status.status_code > IPP_OK_CONFLICT)
{
_cupsLangPrintf(stderr, "%s: %s\n", command, cupsLastErrorString());
_cupsLangPrintf(stderr, "%s: %s", command, cupsLastErrorString());
ippDelete(response);
return;
}
@@ -634,21 +617,21 @@ show_printer(const char *command, /* I - Command name */
switch (state)
{
case IPP_PRINTER_IDLE :
_cupsLangPrintf(stdout, _("%s is ready\n"), dest);
_cupsLangPrintf(stdout, _("%s is ready"), dest);
break;
case IPP_PRINTER_PROCESSING :
_cupsLangPrintf(stdout, _("%s is ready and printing\n"),
_cupsLangPrintf(stdout, _("%s is ready and printing"),
dest);
break;
case IPP_PRINTER_STOPPED :
_cupsLangPrintf(stdout, _("%s is not ready\n"), dest);
_cupsLangPrintf(stdout, _("%s is not ready"), dest);
break;
}
ippDelete(response);
}
else
_cupsLangPrintf(stderr, "%s: %s\n", command, cupsLastErrorString());
_cupsLangPrintf(stderr, "%s: %s", command, cupsLastErrorString());
}
@@ -661,11 +644,6 @@ usage(void)
{
_cupsLangPuts(stderr,
_("Usage: lpq [-P dest] [-U username] [-h hostname[:port]] "
"[-l] [+interval]\n"));
"[-l] [+interval]"));
exit(1);
}
/*
* End of "$Id$".
*/
+266 -352
Ver Arquivo
@@ -1,53 +1,21 @@
/*
* "$Id$"
* "lpr" command for CUPS.
*
* "lpr" command for the Common UNIX Printing System (CUPS).
* Copyright 2007-2016 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products.
*
* Copyright 2007 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() - Parse options and send files for printing.
* sighandler() - Signal catcher for when we print from stdin...
* 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 necessary headers...
*/
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <cups/string.h>
#include <cups/cups.h>
#include <cups/i18n.h>
#ifndef WIN32
# include <unistd.h>
# include <signal.h>
/*
* Local functions.
*/
void sighandler(int);
#endif /* !WIN32 */
/*
* Globals...
*/
char tempfile[1024]; /* Temporary file for printing from stdin */
#include <cups/cups-private.h>
/*
@@ -62,264 +30,262 @@ 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 */
*instance, /* Instance */
*opt; /* Option pointer */
const char *title, /* Job title */
*val; /* Environment variable name */
int num_copies; /* Number of copies per file */
int num_files; /* Number of files to print */
const char *files[1000]; /* Files to print */
int num_dests; /* Number of destinations */
cups_dest_t *dests, /* Destinations */
*dest; /* Selected destination */
cups_dest_t *dest; /* Selected destination */
int num_options; /* Number of options */
cups_option_t *options; /* Options */
int deletefile; /* Delete file after print? */
char buffer[8192]; /* Copy buffer */
ssize_t bytes; /* Bytes copied */
off_t filesize; /* Size of temp file */
int temp; /* Temporary file descriptor */
#if defined(HAVE_SIGACTION) && !defined(HAVE_SIGSET)
struct sigaction action; /* Signal action */
struct sigaction oldaction; /* Old signal action */
#endif /* HAVE_SIGACTION && !HAVE_SIGSET */
_cupsSetLocale(argv);
deletefile = 0;
printer = NULL;
num_dests = 0;
dests = NULL;
dest = NULL;
num_options = 0;
options = NULL;
num_files = 0;
title = NULL;
for (i = 1; i < argc; i ++)
{
if (argv[i][0] == '-')
switch (ch = argv[i][1])
{
for (opt = argv[i] + 1; *opt; opt ++)
{
case 'E' : /* Encrypt */
switch (ch = *opt)
{
case 'E' : /* Encrypt */
#ifdef HAVE_SSL
cupsSetEncryption(HTTP_ENCRYPT_REQUIRED);
cupsSetEncryption(HTTP_ENCRYPT_REQUIRED);
#else
_cupsLangPrintf(stderr,
_("%s: Sorry, no encryption support compiled in!\n"),
argv[0]);
_cupsLangPrintf(stderr, _("%s: Sorry, no encryption support."), argv[0]);
#endif /* HAVE_SSL */
break;
break;
case 'U' : /* Username */
if (argv[i][2] != '\0')
cupsSetUser(argv[i] + 2);
else
{
i ++;
if (i >= argc)
case 'U' : /* Username */
if (opt[1] != '\0')
{
_cupsLangPrintf(stderr,
_("%s: Error - expected username after "
"\'-U\' option!\n"),
argv[0]);
return (1);
cupsSetUser(opt + 1);
opt += strlen(opt) - 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!\n"),
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)
{
_cupsLangPrintf(stderr,
_("%s: Error - expected value after \'-%c\' "
"option!\n"), argv[0], ch);
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]);
return (1);
}
}
break;
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!\n"),
argv[0], ch);
break;
case 'o' : /* Option */
if (argv[i][2] != '\0')
num_options = cupsParseOptions(argv[i] + 2, num_options, &options);
else
{
i ++;
if (i >= argc)
case '#' : /* Number of copies */
if (opt[1] != '\0')
{
_cupsLangPrintf(stderr,
_("%s: error - expected option=value after "
"\'-o\' option!\n"),
argv[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);
}
num_copies = atoi(argv[i]);
}
if (num_copies < 1)
{
_cupsLangPrintf(stderr, _("%s: Error - copies must be 1 or more."), argv[0]);
return (1);
}
num_options = cupsParseOptions(argv[i], num_options, &options);
}
break;
sprintf(buffer, "%d", num_copies);
num_options = cupsAddOption("copies", buffer, num_options, &options);
break;
case 'l' : /* Literal/raw */
num_options = cupsAddOption("raw", "", num_options, &options);
break;
case 'p' : /* Prettyprint */
num_options = cupsAddOption("prettyprint", "", 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)
case 'C' : /* Class */
case 'J' : /* Job name */
case 'T' : /* Title */
if (opt[1] != '\0')
{
_cupsLangPrintf(stderr,
_("%s: Error - expected destination after "
"\'-P\' option!\n"),
argv[0]);
return (1);
title = opt + 1;
opt += strlen(opt) - 1;
}
printer = argv[i];
}
if ((instance = strrchr(printer, '/')) != NULL)
*instance++ = '\0';
if (num_dests == 0)
num_dests = cupsGetDests(&dests);
if ((dest = cupsGetDest(printer, instance, num_dests, dests)) != 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);
}
break;
case '#' : /* Number of copies */
if (argv[i][2] != '\0')
num_copies = atoi(argv[i] + 2);
else
{
i ++;
if (i >= argc)
else
{
_cupsLangPrintf(stderr,
_("%s: Error - expected copy count after "
"\'-#\' option!\n"),
argv[0]);
return (1);
i ++;
if (i >= argc)
{
_cupsLangPrintf(stderr, _("%s: Error - expected name after \"-%c\" option."), argv[0], ch);
return (1);
}
title = argv[i];
}
break;
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!\n"), argv[0], ch);
return (1);
}
title = argv[i];
}
break;
default :
_cupsLangPrintf(stderr,
_("%s: Error - unknown option \'%c\'!\n"),
argv[0], argv[i][1]);
return (1);
default :
_cupsLangPrintf(stderr, _("%s: Error - unknown option \"%c\"."), argv[0], *opt);
return (1);
}
}
}
else if (num_files < 1000)
{
/*
@@ -329,7 +295,7 @@ main(int argc, /* I - Number of command-line arguments */
if (access(argv[i], R_OK) != 0)
{
_cupsLangPrintf(stderr,
_("%s: Error - unable to access \"%s\" - %s\n"),
_("%s: Error - unable to access \"%s\" - %s"),
argv[0], argv[i], strerror(errno));
return (1);
}
@@ -346,19 +312,18 @@ main(int argc, /* I - Number of command-line arguments */
}
}
else
_cupsLangPrintf(stderr,
_("%s: Error - too many files - \"%s\"\n"),
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...
*/
if (printer == NULL)
{
if (num_dests == 0)
num_dests = cupsGetDests(&dests);
if ((dest = cupsGetDest(NULL, NULL, num_dests, dests)) != NULL)
if ((dest = cupsGetNamedDest(NULL, NULL, NULL)) != NULL)
{
printer = dest->name;
@@ -368,6 +333,14 @@ main(int argc, /* I - Number of command-line arguments */
dest->options[j].value,
num_options, &options);
}
else if (cupsLastError() == IPP_STATUS_ERROR_BAD_REQUEST ||
cupsLastError() == IPP_STATUS_ERROR_VERSION_NOT_SUPPORTED)
{
_cupsLangPrintf(stderr,
_("%s: Error - add '/version=1.1' to server "
"name."), argv[0]);
return (1);
}
}
if (printer == NULL)
@@ -387,18 +360,17 @@ main(int argc, /* I - Number of command-line arguments */
else
val = "LPDEST";
if (printer && !cupsGetDest(printer, NULL, num_dests, dests))
if (printer && !cupsGetNamedDest(NULL, printer, NULL))
_cupsLangPrintf(stderr,
_("%s: Error - %s environment variable names "
"non-existent destination \"%s\"!\n"),
argv[0], val, printer);
"non-existent destination \"%s\"."), argv[0], val,
printer);
else if (cupsLastError() == IPP_NOT_FOUND)
_cupsLangPrintf(stderr,
_("%s: Error - no default destination available.\n"),
_("%s: Error - no default destination available."),
argv[0]);
else
_cupsLangPrintf(stderr,
_("%s: Error - scheduler not responding!\n"),
_cupsLangPrintf(stderr, _("%s: Error - scheduler not responding."),
argv[0]);
return (1);
@@ -418,107 +390,49 @@ main(int argc, /* I - Number of command-line arguments */
unlink(files[i]);
}
}
else
else if ((job_id = cupsCreateJob(CUPS_HTTP_DEFAULT, printer,
title ? title : "(stdin)",
num_options, options)) > 0)
{
num_files = 1;
http_status_t status; /* Write status */
const char *format; /* Document format */
ssize_t bytes; /* Bytes read */
#ifndef WIN32
# if defined(HAVE_SIGSET)
sigset(SIGHUP, sighandler);
if (sigset(SIGINT, sighandler) == SIG_IGN)
sigset(SIGINT, SIG_IGN);
sigset(SIGTERM, sighandler);
# elif defined(HAVE_SIGACTION)
memset(&action, 0, sizeof(action));
action.sa_handler = sighandler;
if (cupsGetOption("raw", num_options, options))
format = CUPS_FORMAT_RAW;
else if ((format = cupsGetOption("document-format", num_options,
options)) == NULL)
format = CUPS_FORMAT_AUTO;
sigaction(SIGHUP, &action, NULL);
sigaction(SIGINT, NULL, &oldaction);
if (oldaction.sa_handler != SIG_IGN)
sigaction(SIGINT, &action, NULL);
sigaction(SIGTERM, &action, NULL);
# else
signal(SIGHUP, sighandler);
if (signal(SIGINT, sighandler) == SIG_IGN)
signal(SIGINT, SIG_IGN);
signal(SIGTERM, sighandler);
# endif
#endif /* !WIN32 */
status = cupsStartDocument(CUPS_HTTP_DEFAULT, printer, job_id, NULL,
format, 1);
if ((temp = cupsTempFd(tempfile, sizeof(tempfile))) < 0)
while (status == HTTP_CONTINUE &&
(bytes = read(0, buffer, sizeof(buffer))) > 0)
status = cupsWriteRequestData(CUPS_HTTP_DEFAULT, buffer, (size_t)bytes);
if (status != HTTP_CONTINUE)
{
_cupsLangPrintf(stderr,
_("%s: Error - unable to create temporary file "
"\"%s\" - %s\n"),
argv[0], tempfile, strerror(errno));
_cupsLangPrintf(stderr, _("%s: Error - unable to queue from stdin - %s."),
argv[0], httpStatus(status));
cupsFinishDocument(CUPS_HTTP_DEFAULT, printer);
cupsCancelJob2(CUPS_HTTP_DEFAULT, printer, job_id, 0);
return (1);
}
while ((bytes = read(0, buffer, sizeof(buffer))) > 0)
if (write(temp, buffer, bytes) < 0)
{
_cupsLangPrintf(stderr,
_("%s: Error - unable to write to temporary file "
"\"%s\" - %s\n"),
argv[0], tempfile, strerror(errno));
close(temp);
unlink(tempfile);
return (1);
}
filesize = lseek(temp, 0, SEEK_CUR);
close(temp);
if (filesize <= 0)
if (cupsFinishDocument(CUPS_HTTP_DEFAULT, printer) != IPP_OK)
{
_cupsLangPrintf(stderr,
_("%s: Error - stdin is empty, so no job has been sent.\n"),
argv[0]);
unlink(tempfile);
_cupsLangPrintf(stderr, "%s: %s", argv[0], cupsLastErrorString());
cupsCancelJob2(CUPS_HTTP_DEFAULT, printer, job_id, 0);
return (1);
}
if (title)
job_id = cupsPrintFile(printer, tempfile, title, num_options, options);
else
job_id = cupsPrintFile(printer, tempfile, "(stdin)", num_options, options);
unlink(tempfile);
}
if (job_id < 1)
{
_cupsLangPrintf(stderr, "%s: %s\n", argv[0], cupsLastErrorString());
_cupsLangPrintf(stderr, "%s: %s", argv[0], cupsLastErrorString());
return (1);
}
return (0);
}
#ifndef WIN32
/*
* 'sighandler()' - Signal catcher for when we print from stdin...
*/
void
sighandler(int s) /* I - Signal number */
{
/*
* Remove the temporary file we're using to print from stdin...
*/
unlink(tempfile);
/*
* Exit...
*/
exit(s);
}
#endif /* !WIN32 */
/*
* End of "$Id$".
*/
+125 -200
Ver Arquivo
@@ -1,32 +1,21 @@
/*
* "$Id$"
* "lprm" command for CUPS.
*
* "lprm" command for the Common UNIX Printing System (CUPS).
* Copyright 2007-2016 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products.
*
* Copyright 2007 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.
* 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 necessary headers...
*/
#include <stdio.h>
#include <stdlib.h>
#include <cups/cups.h>
#include <cups/i18n.h>
#include <cups/string.h>
#include <cups/cups-private.h>
/*
@@ -37,19 +26,14 @@ int /* O - Exit status */
main(int argc, /* I - Number of command-line arguments */
char *argv[]) /* I - Command-line arguments */
{
http_t *http; /* HTTP connection to server */
int i; /* Looping var */
int job_id; /* Job ID */
const char *dest; /* Destination printer */
char *instance; /* Pointer to instance name */
char uri[1024]; /* Printer or job URI */
ipp_t *request; /* IPP request */
ipp_t *response; /* IPP response */
ipp_op_t op; /* Operation */
int num_dests; /* Number of destinations */
cups_dest_t *dests, /* Destinations */
const char *name; /* Destination printer */
char *instance, /* Pointer to instance name */
*opt; /* Option pointer */
cups_dest_t *dest, /* Destination */
*defdest; /* Default destination */
http_encryption_t encryption; /* Encryption? */
int did_cancel; /* Did we cancel something? */
_cupsSetLocale(argv);
@@ -58,143 +42,122 @@ main(int argc, /* I - Number of command-line arguments */
* Setup to cancel individual print jobs...
*/
op = IPP_CANCEL_JOB;
job_id = 0;
dest = NULL;
response = NULL;
http = NULL;
encryption = cupsEncryption();
/*
* Open a connection to the server...
*/
if ((http = httpConnectEncrypt(cupsServer(), ippPort(), encryption)) == NULL)
{
_cupsLangPuts(stderr, _("lprm: Unable to contact server!\n"));
return (1);
}
num_dests = cupsGetDests2(http, &dests);
defdest = cupsGetDest(NULL, NULL, num_dests, dests);
dest = defdest ? defdest->name : NULL;
did_cancel = 0;
defdest = cupsGetNamedDest(CUPS_HTTP_DEFAULT, NULL, NULL);
name = defdest ? defdest->name : NULL;
/*
* Process command-line arguments...
*/
for (i = 1; i < argc; i ++)
{
if (argv[i][0] == '-' && argv[i][1] != '\0')
switch (argv[i][1])
{
for (opt = argv[i] + 1; *opt; opt ++)
{
case 'E' : /* Encrypt */
switch (*opt)
{
case 'E' : /* Encrypt */
#ifdef HAVE_SSL
encryption = HTTP_ENCRYPT_REQUIRED;
httpEncryption(http, encryption);
cupsSetEncryption(encryption);
cupsSetEncryption(HTTP_ENCRYPT_REQUIRED);
#else
_cupsLangPrintf(stderr,
_("%s: Sorry, no encryption support compiled in!\n"),
argv[0]);
_cupsLangPrintf(stderr, _("%s: Sorry, no encryption support."), argv[0]);
#endif /* HAVE_SSL */
break;
break;
case 'P' : /* Cancel jobs on a printer */
if (argv[i][2])
dest = argv[i] + 2;
else
{
i ++;
dest = argv[i];
}
if ((instance = strchr(dest, '/')) != NULL)
*instance = '\0';
if (cupsGetDest(dest, NULL, num_dests, dests) == NULL)
{
_cupsLangPrintf(stderr,
_("%s: Error - unknown destination \"%s\"!\n"),
argv[0], dest);
cupsFreeDests(num_dests, dests);
httpClose(http);
return(1);
}
break;
case 'U' : /* Username */
if (argv[i][2] != '\0')
cupsSetUser(argv[i] + 2);
else
{
i ++;
if (i >= argc)
case 'P' : /* Cancel jobs on a printer */
if (opt[1] != '\0')
{
_cupsLangPrintf(stderr,
_("%s: Error - expected username after "
"\'-U\' option!\n"),
argv[0]);
return (1);
name = opt + 1;
opt += strlen(opt) - 1;
}
else
{
i ++;
name = argv[i];
}
cupsSetUser(argv[i]);
}
break;
case 'h' : /* Connect to host */
if (argv[i][2] != '\0')
cupsSetServer(argv[i] + 2);
else
{
i ++;
if ((instance = strchr(name, '/')) != NULL)
*instance = '\0';
if (i >= argc)
if ((dest = cupsGetNamedDest(CUPS_HTTP_DEFAULT, name, NULL)) == NULL)
{
_cupsLangPrintf(stderr,
_("%s: Error - expected hostname after "
"\'-h\' option!\n"),
argv[0]);
return (1);
}
_cupsLangPrintf(stderr, _("%s: Error - unknown destination \"%s\"."), argv[0], name);
goto error;
}
cupsFreeDests(1, dest);
break;
case 'U' : /* Username */
if (opt[1] != '\0')
{
cupsSetUser(opt + 1);
opt += strlen(opt) - 1;
}
else
cupsSetServer(argv[i]);
}
{
i ++;
if (i >= argc)
{
_cupsLangPrintf(stderr, _("%s: Error - expected username after \"-U\" option."), argv[0]);
goto error;
}
httpClose(http);
cupsFreeDests(num_dests, dests);
cupsSetUser(argv[i]);
}
break;
if ((http = httpConnectEncrypt(cupsServer(), ippPort(),
encryption)) == NULL)
{
_cupsLangPuts(stderr, _("lprm: Unable to contact server!\n"));
return (1);
}
case 'h' : /* Connect to host */
if (opt[1] != '\0')
{
cupsSetServer(opt + 1);
opt += strlen(opt) - 1;
}
else
{
i ++;
num_dests = cupsGetDests2(http, &dests);
defdest = cupsGetDest(NULL, NULL, num_dests, dests);
dest = 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]);
}
default :
_cupsLangPrintf(stderr,
_("%s: Error - unknown option \'%c\'!\n"),
argv[0], argv[i][1]);
cupsFreeDests(num_dests, dests);
httpClose(http);
return (1);
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;
}
}
}
else
{
/*
* Cancel a job or printer...
*/
if (isdigit(argv[i][0] & 255) &&
cupsGetDest(argv[i], NULL, num_dests, dests) == NULL)
if ((dest = cupsGetNamedDest(CUPS_HTTP_DEFAULT, argv[i], NULL)) != NULL)
cupsFreeDests(1, dest);
if (dest)
{
dest = NULL;
op = IPP_CANCEL_JOB;
name = argv[i];
job_id = 0;
}
else if (isdigit(argv[i][0] & 255))
{
name = NULL;
job_id = atoi(argv[i]);
}
else if (!strcmp(argv[i], "-"))
@@ -203,87 +166,49 @@ main(int argc, /* I - Number of command-line arguments */
* Cancel all jobs
*/
op = IPP_PURGE_JOBS;
job_id = -1;
}
else
{
dest = argv[i];
job_id = 0;
_cupsLangPrintf(stderr, _("%s: Error - unknown destination \"%s\"."),
argv[0], argv[i]);
goto error;
}
/*
* Build an IPP request, which requires the following
* attributes:
*
* attributes-charset
* attributes-natural-language
* printer-uri + job-id *or* job-uri
* [requesting-user-name]
*/
request = ippNewRequest(op);
if (dest)
if (cupsCancelJob2(CUPS_HTTP_DEFAULT, name, job_id, 0) != IPP_OK)
{
httpAssembleURIf(HTTP_URI_CODING_ALL, uri, sizeof(uri), "ipp", NULL,
"localhost", 0, "/printers/%s", dest);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI,
"printer-uri", NULL, uri);
ippAddInteger(request, IPP_TAG_OPERATION, IPP_TAG_INTEGER, "job-id",
job_id);
}
else
{
sprintf(uri, "ipp://localhost/jobs/%d", job_id);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "job-uri", NULL,
uri);
_cupsLangPrintf(stderr, "%s: %s", argv[0], cupsLastErrorString());
goto error;
}
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME,
"requesting-user-name", NULL, cupsUser());
/*
* Do the request and get back a response...
*/
if (op == IPP_PURGE_JOBS)
response = cupsDoRequest(http, request, "/admin/");
else
response = cupsDoRequest(http, request, "/jobs/");
ippDelete(response);
if (cupsLastError() > IPP_OK_CONFLICT)
{
_cupsLangPrintf(stderr, "%s: %s\n", argv[0], cupsLastErrorString());
cupsFreeDests(num_dests, dests);
httpClose(http);
return (1);
}
did_cancel = 1;
}
}
/*
* If nothing has been canceled yet, cancel the current job on the specified
* (or default) printer...
*/
if (response == NULL)
if (!cupsCancelJob(dest, 0))
if (!did_cancel && cupsCancelJob2(CUPS_HTTP_DEFAULT, name, 0, 0) != IPP_OK)
{
_cupsLangPrintf(stderr, "%s: %s\n", argv[0], cupsLastErrorString());
cupsFreeDests(num_dests, dests);
httpClose(http);
return (1);
_cupsLangPrintf(stderr, "%s: %s", argv[0], cupsLastErrorString());
goto error;
}
cupsFreeDests(num_dests, dests);
httpClose(http);
if (defdest)
cupsFreeDests(1, defdest);
return (0);
/*
* If we get here there was an error, so clean up...
*/
error:
if (defdest)
cupsFreeDests(1, defdest);
return (1);
}
/*
* End of "$Id$".
*/
+73 -55
Ver Arquivo
@@ -1,56 +1,74 @@
# DO NOT DELETE THIS LINE -- make depend depends on it.
help-index.o: help-index.c cgi-private.h cgi.h ../cups/cups.h \
../cups/ipp.h ../cups/http.h ../cups/ppd.h ../cups/array.h \
../cups/file.h ../cups/language.h ../cups/array.h help-index.h \
../cups/debug.h ../cups/i18n.h ../cups/transcode.h ../cups/string.h \
../config.h ../cups/dir.h
html.o: html.c cgi-private.h cgi.h ../cups/cups.h ../cups/ipp.h \
../cups/http.h ../cups/ppd.h ../cups/array.h ../cups/file.h \
../cups/language.h ../cups/array.h help-index.h ../cups/debug.h \
../cups/i18n.h ../cups/transcode.h ../cups/string.h ../config.h
ipp-var.o: ipp-var.c cgi-private.h cgi.h ../cups/cups.h ../cups/ipp.h \
../cups/http.h ../cups/ppd.h ../cups/array.h ../cups/file.h \
../cups/language.h ../cups/array.h help-index.h ../cups/debug.h \
../cups/i18n.h ../cups/transcode.h ../cups/string.h ../config.h
search.o: search.c cgi-private.h cgi.h ../cups/cups.h ../cups/ipp.h \
../cups/http.h ../cups/ppd.h ../cups/array.h ../cups/file.h \
../cups/language.h ../cups/array.h help-index.h ../cups/debug.h \
../cups/i18n.h ../cups/transcode.h ../cups/string.h ../config.h
template.o: template.c cgi-private.h cgi.h ../cups/cups.h ../cups/ipp.h \
../cups/http.h ../cups/ppd.h ../cups/array.h ../cups/file.h \
../cups/language.h ../cups/array.h help-index.h ../cups/debug.h \
../cups/i18n.h ../cups/transcode.h ../cups/string.h ../config.h
var.o: var.c cgi-private.h cgi.h ../cups/cups.h ../cups/ipp.h \
../cups/http.h ../cups/ppd.h ../cups/array.h ../cups/file.h \
../cups/language.h ../cups/array.h help-index.h ../cups/debug.h \
../cups/i18n.h ../cups/transcode.h ../cups/string.h ../config.h
admin.o: admin.c cgi-private.h cgi.h ../cups/cups.h ../cups/ipp.h \
../cups/http.h ../cups/ppd.h ../cups/array.h ../cups/file.h \
../cups/language.h ../cups/array.h help-index.h ../cups/debug.h \
../cups/i18n.h ../cups/transcode.h ../cups/string.h ../config.h \
../cups/adminutil.h ../cups/cups.h ../cups/file.h
classes.o: classes.c cgi-private.h cgi.h ../cups/cups.h ../cups/ipp.h \
../cups/http.h ../cups/ppd.h ../cups/array.h ../cups/file.h \
../cups/language.h ../cups/array.h help-index.h ../cups/debug.h \
../cups/i18n.h ../cups/transcode.h ../cups/string.h ../config.h
help.o: help.c cgi-private.h cgi.h ../cups/cups.h ../cups/ipp.h \
../cups/http.h ../cups/ppd.h ../cups/array.h ../cups/file.h \
../cups/language.h ../cups/array.h help-index.h ../cups/debug.h \
../cups/i18n.h ../cups/transcode.h ../cups/string.h ../config.h
jobs.o: jobs.c cgi-private.h cgi.h ../cups/cups.h ../cups/ipp.h \
../cups/http.h ../cups/ppd.h ../cups/array.h ../cups/file.h \
../cups/language.h ../cups/array.h help-index.h ../cups/debug.h \
../cups/i18n.h ../cups/transcode.h ../cups/string.h ../config.h
printers.o: printers.c cgi-private.h cgi.h ../cups/cups.h ../cups/ipp.h \
../cups/http.h ../cups/ppd.h ../cups/array.h ../cups/file.h \
../cups/language.h ../cups/array.h help-index.h ../cups/debug.h \
../cups/i18n.h ../cups/transcode.h ../cups/string.h ../config.h
testcgi.o: testcgi.c cgi.h ../cups/cups.h ../cups/ipp.h ../cups/http.h \
../cups/ppd.h ../cups/array.h ../cups/file.h ../cups/language.h \
../cups/array.h help-index.h
testhi.o: testhi.c cgi.h ../cups/cups.h ../cups/ipp.h ../cups/http.h \
../cups/ppd.h ../cups/array.h ../cups/file.h ../cups/language.h \
../cups/array.h help-index.h
testtemplate.o: testtemplate.c cgi.h ../cups/cups.h ../cups/ipp.h \
../cups/http.h ../cups/ppd.h ../cups/array.h ../cups/file.h \
../cups/language.h ../cups/array.h help-index.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 ../cups/language-private.h ../cups/transcode.h \
../cups/string-private.h ../config.h ../cups/ipp-private.h \
../cups/dir.h
html.o: html.c cgi-private.h cgi.h ../cups/cups.h ../cups/file.h \
../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
../cups/language.h ../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
ipp-var.o: ipp-var.c cgi-private.h cgi.h ../cups/cups.h ../cups/file.h \
../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
../cups/language.h ../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
search.o: search.c cgi-private.h cgi.h ../cups/cups.h ../cups/file.h \
../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
../cups/language.h ../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
template.o: template.c cgi-private.h cgi.h ../cups/cups.h ../cups/file.h \
../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
../cups/language.h ../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
var.o: var.c cgi-private.h cgi.h ../cups/cups.h ../cups/file.h \
../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
../cups/language.h ../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/md5-private.h
admin.o: admin.c cgi-private.h cgi.h ../cups/cups.h ../cups/file.h \
../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
../cups/language.h ../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
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 \
../cups/language-private.h ../cups/transcode.h \
../cups/string-private.h ../config.h ../cups/ipp-private.h
help.o: help.c cgi-private.h cgi.h ../cups/cups.h ../cups/file.h \
../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
../cups/language.h ../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
jobs.o: jobs.c cgi-private.h cgi.h ../cups/cups.h ../cups/file.h \
../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
../cups/language.h ../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
makedocset.o: makedocset.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 ../cups/language-private.h ../cups/transcode.h \
../cups/string-private.h ../config.h ../cups/ipp-private.h
printers.o: printers.c cgi-private.h cgi.h ../cups/cups.h ../cups/file.h \
../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
../cups/language.h ../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
testcgi.o: testcgi.c cgi.h ../cups/cups.h ../cups/file.h \
../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
../cups/language.h ../cups/pwg.h help-index.h
testhi.o: testhi.c cgi.h ../cups/cups.h ../cups/file.h \
../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
../cups/language.h ../cups/pwg.h help-index.h
testtemplate.o: testtemplate.c cgi.h ../cups/cups.h ../cups/file.h \
../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
../cups/language.h ../cups/pwg.h help-index.h
+207 -45
Ver Arquivo
@@ -1,25 +1,54 @@
#
# "$Id$"
# CGI makefile for CUPS.
#
# CGI makefile for the Common UNIX Printing System (CUPS).
# Copyright 2007-2016 by Apple Inc.
# Copyright 1997-2006 by Easy Software Products.
#
# Copyright 2007 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/".
# 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
CGIS = admin.cgi classes.cgi help.cgi jobs.cgi printers.cgi
TARGETS = libcgi.a $(CGIS) testcgi testhi testtemplate
LIBOBJS = help-index.o html.o ipp-var.o search.o template.o var.o
OBJS = $(LIBOBJS) admin.o classes.o help.o \
jobs.o printers.o testcgi.o testhi.o testtemplate.o
LIBOBJS = \
help-index.o \
html.o \
ipp-var.o \
search.o \
template.o \
var.o
OBJS = \
$(LIBOBJS) \
admin.o \
classes.o \
help.o \
jobs.o \
makedocset.o \
printers.o \
testcgi.o \
testhi.o \
testtemplate.o
CGIS = \
admin.cgi \
classes.cgi \
help.cgi \
jobs.cgi \
printers.cgi
LIBTARGETS = \
libcupscgi.a \
$(LIBCUPSCGI)
UNITTARGETS = \
testcgi \
testhi \
testtemplate
TARGETS = \
$(LIBTARGETS) \
$(CGIS)
#
@@ -29,12 +58,27 @@ OBJS = $(LIBOBJS) admin.o classes.o help.o \
all: $(TARGETS)
#
# Make library targets...
#
libs: $(LIBTARGETS) $(UNITTESTS)
#
# Make unit tests...
#
unittests: $(UNITTARGETS)
#
# Clean all object files...
#
clean:
$(RM) $(OBJS) $(TARGETS)
$(RM) $(OBJS) $(TARGETS) $(UNITTARGETS) makedocset
$(RM) libcupscgi.so libcupscgi.dylib
#
@@ -42,26 +86,84 @@ clean:
#
depend:
makedepend -Y -I.. -fDependencies $(OBJS:.o=.c) >/dev/null 2>&1
$(CC) -MM $(ALL_CFLAGS) $(OBJS:.o=.c) >Dependencies
#
# Install all targets...
#
install: all
install: all install-data install-headers install-libs install-exec
#
# Install data files...
#
install-data:
#
# Install programs...
#
install-exec:
$(INSTALL_DIR) -m 755 $(SERVERBIN)/cgi-bin
for file in $(CGIS); do \
$(INSTALL_BIN) $$file $(SERVERBIN)/cgi-bin; \
done
if test "x$(SYMROOT)" != "x"; then \
$(INSTALL_DIR) $(SYMROOT); \
for file in $(TARGETS); do \
for file in $(CGIS); do \
cp $$file $(SYMROOT); \
dsymutil $(SYMROOT)/$$file; \
done \
fi
#
# Install headers...
#
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
#
# Install libraries...
#
install-libs: $(INSTALLSTATIC)
echo Installing libraries in $(LIBDIR)...
$(INSTALL_DIR) -m 755 $(LIBDIR)
$(INSTALL_LIB) $(LIBCUPSCGI) $(LIBDIR)
if test $(LIBCUPSCGI) = "libcupscgi.so.1"; then \
$(RM) $(LIBDIR)/`basename $(LIBCUPSCGI) .1`; \
$(LN) $(LIBCUPSCGI) $(LIBDIR)/`basename $(LIBCUPSCGI) .1`; \
fi
if test $(LIBCUPSCGI) = "libcupscgi.1.dylib"; then \
$(RM) $(LIBDIR)/libcupscgi.dylib; \
$(LN) $(LIBCUPSCGI) $(LIBDIR)/libcupscgi.dylib; \
fi
if test "x$(SYMROOT)" != "x"; then \
$(INSTALL_DIR) $(SYMROOT); \
cp $(LIBCUPSCGI) $(SYMROOT); \
dsymutil $(SYMROOT)/$(LIBCUPSCGI); \
fi
installstatic:
$(INSTALL_DIR) -m 755 $(LIBDIR)
$(INSTALL_LIB) -m 755 libcupscgi.a $(LIBDIR)
$(RANLIB) $(LIBDIR)/libcupscgi.a
$(CHMOD) 555 $(LIBDIR)/libcupscgi.a
#
# Uninstall all targets...
#
@@ -71,13 +173,61 @@ uninstall:
$(RM) $(SERVERBIN)/cgi-bin/$$file; \
done
-$(RMDIR) $(SERVERBIN)/cgi-bin
$(RM) $(LIBDIR)/libcupscgi.1.dylib
$(RM) $(LIBDIR)/libcupscgi.a
$(RM) $(LIBDIR)/libcupscgi.dylib
$(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
#
# libcgi.a
# libcupscgi.so.1
#
libcgi.a: $(LIBOBJS)
libcupscgi.so.1: $(LIBOBJS)
echo Linking $@...
$(DSO) $(ARCHFLAGS) $(DSOFLAGS) -o $@ $(LIBOBJS) $(LIBS)
$(RM) `basename $@ .1`
$(LN) $@ `basename $@ .1`
#
# libcupscgi.1.dylib
#
libcupscgi.1.dylib: $(LIBOBJS) libcupscgi.exp
echo Linking $@...
$(DSO) $(ARCHFLAGS) $(DSOFLAGS) -o $@ \
-install_name $(libdir)/$@ \
-current_version 1.0.0 \
-compatibility_version 1.0.0 \
-exported_symbols_list libcupscgi.exp \
$(LIBOBJS) $(LIBS)
$(RM) libcupscgi.dylib
$(LN) $@ libcupscgi.dylib
#
# libcupscgi.la
#
libcupscgi.la: $(LIBOBJS)
echo Linking $@...
$(CC) $(ARCHFLAGS) $(DSOFLAGS) -o $@ $(LIBOBJS:.o=.lo) -rpath $(LIBDIR) \
-version-info 1:0 $(LIBS)
#
# libcupscgi.a
#
libcupscgi.a: $(LIBOBJS)
echo Archiving $@...
$(RM) $@
$(AR) $(ARFLAGS) $@ $(LIBOBJS)
@@ -88,75 +238,92 @@ libcgi.a: $(LIBOBJS)
# admin.cgi
#
admin.cgi: admin.o ../Makedefs ../cups/$(LIBCUPS) libcgi.a
admin.cgi: admin.o ../Makedefs ../cups/$(LIBCUPS) $(LIBCUPSCGI)
echo Linking $@...
$(CC) $(LDFLAGS) -o $@ admin.o libcgi.a $(LIBS)
$(CC) $(LDFLAGS) -o $@ admin.o -lcupscgi $(LIBS)
#
# classes.cgi
#
classes.cgi: classes.o ../Makedefs ../cups/$(LIBCUPS) libcgi.a
classes.cgi: classes.o ../Makedefs ../cups/$(LIBCUPS) $(LIBCUPSCGI)
echo Linking $@...
$(CC) $(LDFLAGS) -o $@ classes.o libcgi.a $(LIBS)
$(CC) $(LDFLAGS) -o $@ classes.o -lcupscgi $(LIBS)
#
# help.cgi
#
help.cgi: help.o ../Makedefs libcgi.a
help.cgi: help.o ../Makedefs ../cups/$(LIBCUPS) $(LIBCUPSCGI)
echo Linking $@...
$(CC) $(LDFLAGS) -o $@ help.o libcgi.a $(LIBS)
$(CC) $(LDFLAGS) -o $@ help.o -lcupscgi $(LIBS)
#
# jobs.cgi
#
jobs.cgi: jobs.o ../Makedefs ../cups/$(LIBCUPS) libcgi.a
jobs.cgi: jobs.o ../Makedefs ../cups/$(LIBCUPS) $(LIBCUPSCGI)
echo Linking $@...
$(CC) $(LDFLAGS) -o $@ jobs.o libcgi.a $(LIBS)
$(CC) $(LDFLAGS) -o $@ jobs.o -lcupscgi $(LIBS)
#
# makedocset
#
makedocset: makedocset.o ../Makedefs libcupscgi.a ../cups/$(LIBCUPSSTATIC)
echo Linking $@...
$(CC) $(ARCHFLAGS) $(LDFLAGS) -o $@ makedocset.o libcupscgi.a \
../cups/$(LIBCUPSSTATIC) $(COMMONLIBS) $(SSLLIBS) $(DNSSDLIBS) \
$(LIBZ) $(LIBGSSAPI)
#
# printers.cgi
#
printers.cgi: printers.o ../Makedefs ../cups/$(LIBCUPS) libcgi.a
printers.cgi: printers.o ../Makedefs ../cups/$(LIBCUPS) $(LIBCUPSCGI)
echo Linking $@...
$(CC) $(LDFLAGS) -o $@ printers.o libcgi.a $(LIBS)
$(CC) $(LDFLAGS) -o $@ printers.o -L. -lcupscgi $(LIBS)
#
# testcgi
#
testcgi: testcgi.o ../Makedefs libcgi.a ../cups/libcups.a
testcgi: testcgi.o ../Makedefs libcupscgi.a ../cups/$(LIBCUPSSTATIC)
echo Linking $@...
$(CC) $(LDFLAGS) -o $@ testcgi.o libcgi.a ../cups/libcups.a \
$(COMMONLIBS) $(SSLLIBS) $(LIBZ) $(LIBGSSAPI)
$(CC) $(ARCHFLAGS) $(LDFLAGS) -o $@ testcgi.o libcupscgi.a \
../cups/$(LIBCUPSSTATIC) $(COMMONLIBS) $(SSLLIBS) $(DNSSDLIBS) \
$(LIBZ) $(LIBGSSAPI)
echo Testing CGI API...
./testcgi
#
# testhi
#
testhi: testhi.o ../Makedefs libcgi.a ../cups/libcups.a
testhi: testhi.o ../Makedefs libcupscgi.a ../cups/$(LIBCUPSSTATIC)
echo Linking $@...
$(CC) $(LDFLAGS) -o $@ testhi.o libcgi.a ../cups/libcups.a \
$(COMMONLIBS) $(SSLLIBS) $(LIBZ) $(LIBGSSAPI)
$(CC) $(ARCHFLAGS) $(LDFLAGS) -o $@ testhi.o libcupscgi.a \
../cups/$(LIBCUPSSTATIC) $(COMMONLIBS) $(SSLLIBS) $(DNSSDLIBS) \
$(LIBZ) $(LIBGSSAPI)
echo Testing help index API...
./testhi
#
# testtemplate
#
testtemplate: testtemplate.o ../Makedefs libcgi.a ../cups/libcups.a
testtemplate: testtemplate.o ../Makedefs libcupscgi.a ../cups/$(LIBCUPSSTATIC)
echo Linking $@...
$(CC) $(LDFLAGS) -o $@ testtemplate.o libcgi.a ../cups/libcups.a \
$(COMMONLIBS) $(SSLLIBS) $(LIBZ) $(LIBGSSAPI)
$(CC) $(LDFLAGS) -o $@ testtemplate.o libcupscgi.a ../cups/$(LIBCUPSSTATIC) \
$(COMMONLIBS) $(SSLLIBS) $(DNSSDLIBS) $(LIBZ) $(LIBGSSAPI)
#
@@ -164,8 +331,3 @@ testtemplate: testtemplate.o ../Makedefs libcgi.a ../cups/libcups.a
#
include Dependencies
#
# End of "$Id$".
#
+1602 -744
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+13 -19
Ver Arquivo
@@ -1,16 +1,14 @@
/*
* "$Id$"
* Private CGI definitions for CUPS.
*
* Private CGI definitions for the Common UNIX Printing System (CUPS).
* Copyright 2007-2011 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products.
*
* Copyright 2007 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/".
* 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/".
*/
/*
@@ -18,18 +16,14 @@
*/
#include "cgi.h"
#include <cups/debug.h>
#include <cups/i18n.h>
#include <cups/string.h>
#include <cups/debug-private.h>
#include <cups/language-private.h>
#include <cups/string-private.h>
#include <cups/ipp-private.h> /* TODO: Update so we don't need this */
/*
* Limits...
*/
#define CUPS_PAGE_MAX 10 /* Maximum items per page */
/*
* End of "$Id$".
*/
#define CUPS_PAGE_MAX 100 /* Maximum items per page */
+29 -16
Ver Arquivo
@@ -1,16 +1,14 @@
/*
* "$Id$"
* CGI support library definitions for CUPS.
*
* CGI support library definitions.
* Copyright 2007-2010 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products.
*
* Copyright 2007 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/".
* 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_
@@ -33,6 +31,14 @@
# include "help-index.h"
/*
* C++ magic...
*/
# ifdef __cplusplus
extern "C" {
# endif /* __cplusplus */
/*
* Types...
*/
@@ -54,16 +60,19 @@ typedef struct cgi_file_s /**** Uploaded file data ****/
extern void cgiAbort(const char *title, const char *stylesheet,
const char *format, ...);
extern int cgiCheckVariables(const char *names);
extern void cgiClearVariables(void);
extern void *cgiCompileSearch(const char *query);
extern void cgiCopyTemplateFile(FILE *out, const char *tmpl);
extern void cgiCopyTemplateLang(const char *tmpl);
extern int cgiDoSearch(void *search, const char *text);
extern void cgiEndHTML(void);
extern char *cgiFormEncode(char *dst, const char *src, size_t dstsize);
extern void cgiEndMultipart(void);
extern char *cgiFormEncode(char *dst, const char *src,
size_t dstsize);
extern void cgiFreeSearch(void *search);
extern const char *cgiGetArray(const char *name, int element);
extern void cgiGetAttributes(ipp_t *request, const char *tmpl);
extern char *cgiGetCookie(const char *name, char *buf, int buflen);
extern const char *cgiGetCookie(const char *name);
extern const cgi_file_t *cgiGetFile(void);
extern cups_array_t *cgiGetIPPObjects(ipp_t *response, void *search);
extern int cgiGetSize(const char *name);
@@ -72,6 +81,8 @@ extern const char *cgiGetVariable(const char *name);
extern int cgiInitialize(void);
extern int cgiIsPOST(void);
extern void cgiMoveJobs(http_t *http, const char *dest, int job_id);
extern void cgiPrintCommand(http_t *http, const char *dest,
const char *command, const char *title);
extern void cgiPrintTestPage(http_t *http, const char *dest);
extern char *cgiRewriteURL(const char *uri, char *url, int urlsize,
const char *newresource);
@@ -91,10 +102,12 @@ extern void cgiSetVariable(const char *name, const char *value);
extern void cgiShowIPPError(const char *message);
extern void cgiShowJobs(http_t *http, const char *dest);
extern void cgiStartHTML(const char *title);
extern void cgiStartMultipart(void);
extern int cgiSupportsMultipart(void);
extern const char *cgiText(const char *message);
#endif /* !_CUPS_CGI_H_ */
# ifdef __cplusplus
}
# endif /* __cplusplus */
/*
* End of "$Id$".
*/
#endif /* !_CUPS_CGI_H_ */
+172 -97
Ver Arquivo
@@ -1,22 +1,14 @@
/*
* "$Id$"
* Class status CGI for CUPS.
*
* Class status CGI for the Common UNIX Printing System (CUPS).
* Copyright 2007-2016 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products.
*
* Copyright 2007 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.
* show_all_classes() - Show all classes...
* show_class() - Show a single class.
* 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/".
*/
/*
@@ -30,8 +22,10 @@
* Local functions...
*/
void show_all_classes(http_t *http, const char *username);
void show_class(http_t *http, const char *printer);
static void do_class_op(http_t *http, const char *printer, ipp_op_t op,
const char *title);
static void show_all_classes(http_t *http, const char *username);
static void show_class(http_t *http, const char *printer);
/*
@@ -39,8 +33,7 @@ void show_class(http_t *http, const char *printer);
*/
int /* O - Exit status */
main(int argc, /* I - Number of command-line arguments */
char *argv[]) /* I - Command-line arguments */
main(void)
{
const char *pclass; /* Class name */
const char *user; /* Username */
@@ -69,6 +62,7 @@ main(int argc, /* I - Number of command-line arguments */
*/
cgiSetVariable("SECTION", "classes");
cgiSetVariable("REFRESH_PAGE", "");
/*
* See if we are displaying a printer or all classes...
@@ -80,6 +74,9 @@ main(int argc, /* I - Number of command-line arguments */
if (!*pclass)
pclass = NULL;
if (pclass)
cgiSetVariable("PRINTER_NAME", pclass);
}
/*
@@ -98,7 +95,7 @@ main(int argc, /* I - Number of command-line arguments */
* Get the default printer...
*/
if (!op)
if (!op || !cgiIsPOST())
{
/*
* Get the default destination...
@@ -138,21 +135,54 @@ main(int argc, /* I - Number of command-line arguments */
else
show_class(http, pclass);
}
else if (!strcasecmp(op, "print-test-page") && pclass)
cgiPrintTestPage(http, pclass);
else if (!strcasecmp(op, "move-jobs") && pclass)
cgiMoveJobs(http, pclass, 0);
else if (pclass)
{
if (!*op)
{
const char *server_port = getenv("SERVER_PORT");
/* Port number string */
int port = atoi(server_port ? server_port : "0");
/* Port number */
char uri[1024]; /* URL */
httpAssembleURIf(HTTP_URI_CODING_ALL, uri, sizeof(uri),
getenv("HTTPS") ? "https" : "http", NULL,
getenv("SERVER_NAME"), port, "/classes/%s", pclass);
printf("Location: %s\n\n", uri);
}
else if (!strcmp(op, "start-class"))
do_class_op(http, pclass, IPP_RESUME_PRINTER, cgiText(_("Resume Class")));
else if (!strcmp(op, "stop-class"))
do_class_op(http, pclass, IPP_PAUSE_PRINTER, cgiText(_("Pause Class")));
else if (!strcmp(op, "accept-jobs"))
do_class_op(http, pclass, CUPS_ACCEPT_JOBS, cgiText(_("Accept Jobs")));
else if (!strcmp(op, "reject-jobs"))
do_class_op(http, pclass, CUPS_REJECT_JOBS, cgiText(_("Reject Jobs")));
else if (!strcmp(op, "cancel-jobs"))
do_class_op(http, pclass, IPP_OP_CANCEL_JOBS, cgiText(_("Cancel Jobs")));
else if (!_cups_strcasecmp(op, "print-test-page"))
cgiPrintTestPage(http, pclass);
else if (!_cups_strcasecmp(op, "move-jobs"))
cgiMoveJobs(http, pclass, 0);
else
{
/*
* Unknown/bad operation...
*/
cgiStartHTML(pclass);
cgiCopyTemplateLang("error-op.tmpl");
cgiEndHTML();
}
}
else
{
/*
* Unknown/bad operation...
*/
if (pclass)
cgiStartHTML(pclass);
else
cgiStartHTML(cgiText(_("Classes")));
cgiStartHTML(cgiText(_("Classes")));
cgiCopyTemplateLang("error-op.tmpl");
cgiEndHTML();
}
@@ -171,11 +201,94 @@ main(int argc, /* I - Number of command-line arguments */
}
/*
* 'do_class_op()' - Do a class operation.
*/
static void
do_class_op(http_t *http, /* I - HTTP connection */
const char *printer, /* I - Printer name */
ipp_op_t op, /* I - Operation to perform */
const char *title) /* I - Title of page */
{
ipp_t *request; /* IPP request */
char uri[HTTP_MAX_URI], /* Printer URI */
resource[HTTP_MAX_URI]; /* Path for request */
/*
* Build a printer request, which requires the following
* attributes:
*
* attributes-charset
* attributes-natural-language
* printer-uri
*/
request = ippNewRequest(op);
httpAssembleURIf(HTTP_URI_CODING_ALL, uri, sizeof(uri), "ipp", NULL,
"localhost", 0, "/classes/%s", printer);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
NULL, uri);
/*
* Do the request and get back a response...
*/
snprintf(resource, sizeof(resource), "/classes/%s", printer);
ippDelete(cupsDoRequest(http, request, resource));
if (cupsLastError() == IPP_NOT_AUTHORIZED)
{
puts("Status: 401\n");
exit(0);
}
else if (cupsLastError() > IPP_OK_CONFLICT)
{
cgiStartHTML(title);
cgiShowIPPError(_("Unable to do maintenance command"));
}
else
{
/*
* Redirect successful updates back to the printer page...
*/
char url[1024], /* Printer/class URL */
refresh[1024]; /* Refresh URL */
cgiRewriteURL(uri, url, sizeof(url), NULL);
cgiFormEncode(uri, url, sizeof(uri));
snprintf(refresh, sizeof(refresh), "5;URL=%s", uri);
cgiSetVariable("refresh_page", refresh);
cgiStartHTML(title);
cgiSetVariable("IS_CLASS", "YES");
if (op == IPP_PAUSE_PRINTER)
cgiCopyTemplateLang("printer-stop.tmpl");
else if (op == IPP_RESUME_PRINTER)
cgiCopyTemplateLang("printer-start.tmpl");
else if (op == CUPS_ACCEPT_JOBS)
cgiCopyTemplateLang("printer-accept.tmpl");
else if (op == CUPS_REJECT_JOBS)
cgiCopyTemplateLang("printer-reject.tmpl");
else if (op == IPP_OP_CANCEL_JOBS)
cgiCopyTemplateLang("printer-cancel-jobs.tmpl");
}
cgiEndHTML();
}
/*
* 'show_all_classes()' - Show all classes...
*/
void
static void
show_all_classes(http_t *http, /* I - Connection to server */
const char *user) /* I - Username */
{
@@ -184,14 +297,11 @@ 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 ascending, /* Order of classes (0 = descending) */
first, /* First class to show */
int first, /* First class to show */
count; /* Number of classes */
const char *var; /* Form variable */
void *search; /* Search data */
char url[1024], /* URL for prev/next/this */
*urlptr, /* Position in URL */
*urlend; /* End of URL */
char val[1024]; /* Form variable */
/*
@@ -227,7 +337,8 @@ show_all_classes(http_t *http, /* I - Connection to server */
* Get a list of matching job objects.
*/
if ((var = cgiGetVariable("QUERY")) != NULL)
if ((var = cgiGetVariable("QUERY")) != NULL &&
!cgiGetVariable("CLEAR"))
search = cgiCompileSearch(var);
else
search = NULL;
@@ -255,67 +366,36 @@ show_all_classes(http_t *http, /* I - Connection to server */
if (first < 0)
first = 0;
sprintf(url, "%d", count);
cgiSetVariable("TOTAL", url);
sprintf(val, "%d", count);
cgiSetVariable("TOTAL", val);
if ((var = cgiGetVariable("ORDER")) != NULL)
ascending = !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);
}
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);
/*
* Save navigation URLs...
*/
urlend = url + sizeof(url);
if ((var = cgiGetVariable("QUERY")) != NULL)
{
strlcpy(url, "/classes/?QUERY=", sizeof(url));
urlptr = url + strlen(url);
cgiFormEncode(urlptr, var, urlend - urlptr);
urlptr += strlen(urlptr);
strlcpy(urlptr, "&", urlend - urlptr);
urlptr += strlen(urlptr);
}
else
{
strlcpy(url, "/classes/?", sizeof(url));
urlptr = url + strlen(url);
}
snprintf(urlptr, urlend - urlptr, "FIRST=%d", first);
cgiSetVariable("THISURL", url);
cgiSetVariable("THISURL", "/classes/");
if (first > 0)
{
snprintf(urlptr, urlend - urlptr, "FIRST=%d&ORDER=%s",
first - CUPS_PAGE_MAX, ascending ? "asc" : "dec");
cgiSetVariable("PREVURL", url);
sprintf(val, "%d", first - CUPS_PAGE_MAX);
cgiSetVariable("PREV", val);
}
if ((first + CUPS_PAGE_MAX) < count)
{
snprintf(urlptr, urlend - urlptr, "FIRST=%d&ORDER=%s",
first + CUPS_PAGE_MAX, ascending ? "asc" : "dec");
cgiSetVariable("NEXTURL", url);
sprintf(val, "%d", first + CUPS_PAGE_MAX);
cgiSetVariable("NEXT", val);
}
if (count > CUPS_PAGE_MAX)
{
snprintf(val, sizeof(val), "%d", CUPS_PAGE_MAX * (count / CUPS_PAGE_MAX));
cgiSetVariable("LAST", val);
}
/*
@@ -326,12 +406,12 @@ show_all_classes(http_t *http, /* I - Connection to server */
cgiCopyTemplateLang("classes-header.tmpl");
if (count > 0)
if (count > CUPS_PAGE_MAX)
cgiCopyTemplateLang("pager.tmpl");
cgiCopyTemplateLang("classes.tmpl");
if (count > 0)
if (count > CUPS_PAGE_MAX)
cgiCopyTemplateLang("pager.tmpl");
/*
@@ -347,7 +427,7 @@ show_all_classes(http_t *http, /* I - Connection to server */
* Show the error...
*/
cgiShowIPPError(_("Unable to get class list:"));
cgiShowIPPError(_("Unable to get class list"));
}
cgiEndHTML();
@@ -358,7 +438,7 @@ show_all_classes(http_t *http, /* I - Connection to server */
* 'show_class()' - Show a single class.
*/
void
static void
show_class(http_t *http, /* I - Connection to server */
const char *pclass) /* I - Name of class */
{
@@ -385,7 +465,7 @@ show_class(http_t *http, /* I - Connection to server */
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri", NULL,
uri);
cgiGetAttributes(request, "classes.tmpl");
cgiGetAttributes(request, "class.tmpl");
/*
* Do the request and get back a response...
@@ -430,7 +510,7 @@ show_class(http_t *http, /* I - Connection to server */
* Show the class status...
*/
cgiCopyTemplateLang("classes.tmpl");
cgiCopyTemplateLang("class.tmpl");
/*
* Show jobs for the specified class...
@@ -446,13 +526,8 @@ show_class(http_t *http, /* I - Connection to server */
*/
cgiStartHTML(pclass);
cgiShowIPPError(_("Unable to get class status:"));
cgiShowIPPError(_("Unable to get class status"));
}
cgiEndHTML();
}
/*
* End of "$Id$".
*/
+54 -82
Ver Arquivo
@@ -1,34 +1,14 @@
/*
* "$Id$"
* Online help index routines for CUPS.
*
* On-line help index routines for the Common UNIX Printing System (CUPS).
* Copyright 2007-2015 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products.
*
* Copyright 2007 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:
*
* helpDeleteIndex() - Delete an index, freeing all memory used.
* helpFindNode() - Find a node in an index.
* helpLoadIndex() - Load a help index from disk.
* helpSaveIndex() - Save a help index to disk.
* helpSearchIndex() - Search an index.
* help_add_word() - Add a word to a node.
* help_compile_search() - Convert a search string into a regular expression.
* help_delete_node() - Free all memory used by a node.
* help_delete_word() - Free all memory used by a word.
* help_load_directory() - Load a directory of files into an index.
* help_load_file() - Load a HTML files into an index.
* help_new_node() - Create a new node and add it to an index.
* help_sort_nodes_by_name() - Sort nodes by section, filename, and anchor.
* help_sort_nodes_by_score() - Sort nodes by score and text.
* help_sort_words() - Sort words alphabetically.
* 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/".
*/
/*
@@ -161,7 +141,8 @@ static int help_load_file(help_index_t *hi,
static help_node_t *help_new_node(const char *filename, const char *anchor,
const char *section, const char *text,
time_t mtime, off_t offset,
size_t length);
size_t length)
__attribute__((nonnull(1,3,4)));
static int help_sort_by_name(help_node_t *p1, help_node_t *p2);
static int help_sort_by_score(help_node_t *p1, help_node_t *p2);
static int help_sort_words(help_word_t *w1, help_word_t *w2);
@@ -177,7 +158,7 @@ helpDeleteIndex(help_index_t *hi) /* I - Help index */
help_node_t *node; /* Current node */
DEBUG_printf(("helpDeleteIndex(hi=%p)\n", hi));
DEBUG_printf(("helpDeleteIndex(hi=%p)", hi));
if (!hi)
return;
@@ -209,8 +190,8 @@ helpFindNode(help_index_t *hi, /* I - Index */
help_node_t key; /* Search key */
DEBUG_printf(("helpFindNode(hi=%p, filename=\"%s\", anchor=\"%s\")\n",
hi, filename ? filename : "(nil)", anchor ? anchor : "(nil)"));
DEBUG_printf(("helpFindNode(hi=%p, filename=\"%s\", anchor=\"%s\")",
hi, filename, anchor));
/*
* Range check input...
@@ -259,7 +240,7 @@ helpLoadIndex(const char *hifile, /* I - Index filename */
help_word_t *word; /* Current word */
DEBUG_printf(("helpLoadIndex(hifile=\"%s\", directory=\"%s\")\n",
DEBUG_printf(("helpLoadIndex(hifile=\"%s\", directory=\"%s\")",
hifile, directory));
/*
@@ -345,7 +326,7 @@ helpLoadIndex(const char *hifile, /* I - Index filename */
mtime = strtol(ptr, &ptr, 10);
offset = strtoll(ptr, &ptr, 10);
length = strtoll(ptr, &ptr, 10);
length = (size_t)strtoll(ptr, &ptr, 10);
while (isspace(*ptr & 255))
ptr ++;
@@ -464,7 +445,7 @@ helpSaveIndex(help_index_t *hi, /* I - Index */
help_word_t *word; /* Current word */
DEBUG_printf(("helpSaveIndex(hi=%p, hifile=\"%s\")\n", hi, hifile));
DEBUG_printf(("helpSaveIndex(hi=%p, hifile=\"%s\")", hi, hifile));
/*
* Try creating a new index file...
@@ -500,7 +481,7 @@ helpSaveIndex(help_index_t *hi, /* I - Index */
else
{
if (cupsFilePrintf(fp, "%s %d " CUPS_LLFMT " " CUPS_LLFMT " \"%s\" \"%s\"\n",
node->filename, node->mtime,
node->filename, (int)node->mtime,
CUPS_LLCAST node->offset, CUPS_LLCAST node->length,
node->section ? node->section : "", node->text) < 0)
break;
@@ -545,9 +526,8 @@ helpSearchIndex(help_index_t *hi, /* I - Index */
int matches; /* Number of matches */
DEBUG_printf(("helpSearchIndex(hi=%p, query=\"%s\", filename=\"%s\")\n",
hi, query ? query : "(nil)",
filename ? filename : "(nil)"));
DEBUG_printf(("helpSearchIndex(hi=%p, query=\"%s\", filename=\"%s\")",
hi, query, filename));
/*
* Range check...
@@ -599,7 +579,7 @@ helpSearchIndex(help_index_t *hi, /* I - Index */
search->nodes = cupsArrayNew((cups_array_func_t)help_sort_by_name, NULL);
search->sorted = cupsArrayNew((cups_array_func_t)help_sort_by_score, NULL);
if (!search->nodes || !search->sorted)
{
cupsArrayDelete(search->nodes);
@@ -639,8 +619,8 @@ helpSearchIndex(help_index_t *hi, /* I - Index */
node->score = matches;
cupsArrayAdd(search->nodes, node);
cupsArrayAdd(search->sorted, node);
cupsArrayAdd(search->nodes, node);
cupsArrayAdd(search->sorted, node);
}
}
@@ -670,7 +650,7 @@ help_add_word(help_node_t *n, /* I - Node */
key; /* Search key */
DEBUG_printf(("help_add_word(n=%p, text=\"%s\")\n", n, text));
DEBUG_printf(("2help_add_word(n=%p, text=\"%s\")", n, text));
/*
* Create the words array as needed...
@@ -723,7 +703,7 @@ help_delete_node(help_node_t *n) /* I - Node */
help_word_t *w; /* Current word */
DEBUG_printf(("help_delete_node(n=%p)\n", n));
DEBUG_printf(("2help_delete_node(n=%p)", n));
if (!n)
return;
@@ -758,7 +738,7 @@ help_delete_node(help_node_t *n) /* I - Node */
static void
help_delete_word(help_word_t *w) /* I - Word */
{
DEBUG_printf(("help_delete_word(w=%p)\n", w));
DEBUG_printf(("2help_delete_word(w=%p)", w));
if (!w)
return;
@@ -789,8 +769,8 @@ help_load_directory(
help_node_t *node; /* Current node */
DEBUG_printf(("help_load_directory(hi=%p, directory=\"%s\", relative=\"%s\")\n",
hi, directory ? directory : "(nil)", relative ? relative : "(nil)"));
DEBUG_printf(("2help_load_directory(hi=%p, directory=\"%s\", relative=\"%s\")",
hi, directory, relative));
/*
* Open the directory and scan it...
@@ -901,9 +881,8 @@ help_load_file(
int wordlen; /* Length of word */
DEBUG_printf(("help_load_file(hi=%p, filename=\"%s\", relative=\"%s\", mtime=%ld)\n",
hi, filename ? filename : "(nil)",
relative ? relative : "(nil)", mtime));
DEBUG_printf(("2help_load_file(hi=%p, filename=\"%s\", relative=\"%s\", "
"mtime=%ld)", hi, filename, relative, (long)mtime));
if ((fp = cupsFileOpen(filename, "r")) == NULL)
return (-1);
@@ -911,7 +890,7 @@ help_load_file(
node = NULL;
offset = 0;
strcpy(section, "Other");
strlcpy(section, "Other", sizeof(section));
while (cupsFileGets(fp, line, sizeof(line)))
{
@@ -919,7 +898,7 @@ help_load_file(
* Look for "<TITLE>", "<A NAME", or "<!-- SECTION:" prefix...
*/
if (!strncasecmp(line, "<!-- SECTION:", 13))
if (!_cups_strncasecmp(line, "<!-- SECTION:", 13))
{
/*
* Got section line, copy it!
@@ -946,7 +925,7 @@ help_load_file(
{
ptr ++;
if (!strncasecmp(ptr, "TITLE>", 6))
if (!_cups_strncasecmp(ptr, "TITLE>", 6))
{
/*
* Found the title...
@@ -955,7 +934,7 @@ help_load_file(
anchor = NULL;
ptr += 6;
}
else if (!strncasecmp(ptr, "A NAME=", 7))
else if (!_cups_strncasecmp(ptr, "A NAME=", 7))
{
/*
* Found an anchor...
@@ -1020,14 +999,14 @@ help_load_file(
*ptr++ = ' ';
if (!cupsFileGets(fp, ptr, sizeof(line) - (ptr - line) - 1))
if (!cupsFileGets(fp, ptr, sizeof(line) - (size_t)(ptr - line) - 1))
break;
}
*ptr = '\0';
if (node)
node->length = offset - node->offset;
node->length = (size_t)(offset - node->offset);
if (!*text)
{
@@ -1180,9 +1159,9 @@ help_load_file(
for (text = ptr, ptr ++; *ptr && isalnum(*ptr & 255); ptr ++);
wordlen = ptr - text;
wordlen = (int)(ptr - text);
memcpy(temp, text, wordlen);
memcpy(temp, text, (size_t)wordlen);
temp[wordlen] = '\0';
ptr --;
@@ -1192,7 +1171,7 @@ help_load_file(
sizeof(help_common_words[0])),
sizeof(help_common_words[0]),
(int (*)(const void *, const void *))
strcasecmp))
_cups_strcasecmp))
help_add_word(node, temp);
}
}
@@ -1207,7 +1186,7 @@ help_load_file(
cupsFileClose(fp);
if (node)
node->length = offset - node->offset;
node->length = (size_t)(offset - node->offset);
return (0);
}
@@ -1229,11 +1208,9 @@ help_new_node(const char *filename, /* I - Filename */
help_node_t *n; /* Node */
DEBUG_printf(("help_new_node(filename=\"%s\", anchor=\"%s\", text=\"%s\", "
"mtime=%ld, offset=%ld, length=%ld)\n",
filename ? filename : "(nil)", anchor ? anchor : "(nil)",
text ? text : "(nil)", (long)mtime, (long)offset,
(long)length));
DEBUG_printf(("2help_new_node(filename=\"%s\", anchor=\"%s\", text=\"%s\", "
"mtime=%ld, offset=%ld, length=%ld)", filename, anchor, text,
(long)mtime, (long)offset, (long)length));
n = (help_node_t *)calloc(1, sizeof(help_node_t));
if (!n)
@@ -1241,7 +1218,7 @@ help_new_node(const char *filename, /* I - Filename */
n->filename = strdup(filename);
n->anchor = anchor ? strdup(anchor) : NULL;
n->section = (section && *section) ? strdup(section) : NULL;
n->section = *section ? strdup(section) : NULL;
n->text = strdup(text);
n->mtime = mtime;
n->offset = offset;
@@ -1262,9 +1239,9 @@ help_sort_by_name(help_node_t *n1, /* I - First node */
int diff; /* Difference */
DEBUG_printf(("help_sort_by_name(n1=%p(%s#%s), n2=%p(%s#%s)\n",
n1, n1->filename, n1->anchor ? n1->anchor : "",
n2, n2->filename, n2->anchor ? n2->anchor : ""));
DEBUG_printf(("2help_sort_by_name(n1=%p(%s#%s), n2=%p(%s#%s)",
n1, n1->filename, n1->anchor,
n2, n2->filename, n2->anchor));
if ((diff = strcmp(n1->filename, n2->filename)) != 0)
return (diff);
@@ -1291,13 +1268,13 @@ help_sort_by_score(help_node_t *n1, /* I - First node */
int diff; /* Difference */
DEBUG_printf(("help_sort_by_score(n1=%p(%d \"%s\" \"%s\"), "
"n2=%p(%d \"%s\" \"%s\")\n",
n1, n1->score, n1->section ? n1->section : "", n1->text,
n2, n2->score, n2->section ? n2->section : "", n2->text));
DEBUG_printf(("2help_sort_by_score(n1=%p(%d \"%s\" \"%s\"), "
"n2=%p(%d \"%s\" \"%s\")",
n1, n1->score, n1->section, n1->text,
n2, n2->score, n2->section, n2->text));
if (n1->score != n2->score)
return (n1->score - n2->score);
return (n2->score - n1->score);
if (n1->section && !n2->section)
return (1);
@@ -1307,7 +1284,7 @@ help_sort_by_score(help_node_t *n1, /* I - First node */
(diff = strcmp(n1->section, n2->section)) != 0)
return (diff);
return (strcasecmp(n1->text, n2->text));
return (_cups_strcasecmp(n1->text, n2->text));
}
@@ -1319,13 +1296,8 @@ static int /* O - Difference */
help_sort_words(help_word_t *w1, /* I - Second word */
help_word_t *w2) /* I - Second word */
{
DEBUG_printf(("help_sort_words(w1=%p(\"%s\"), w2=%p(\"%s\"))\n",
DEBUG_printf(("2help_sort_words(w1=%p(\"%s\"), w2=%p(\"%s\"))",
w1, w1->text, w2, w2->text));
return (strcasecmp(w1->text, w2->text));
return (_cups_strcasecmp(w1->text, w2->text));
}
/*
* End of "$Id$".
*/
+20 -14
Ver Arquivo
@@ -1,16 +1,14 @@
/*
* "$Id$"
* Online help index definitions for CUPS.
*
* On-line help index definitions for the Common UNIX Printing System (CUPS).
* Copyright 2007-2011 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products.
*
* Copyright 2007 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/".
* 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_
@@ -23,6 +21,14 @@
# include <cups/array.h>
/*
* C++ magic...
*/
# ifdef __cplusplus
extern "C" {
# endif /* __cplusplus */
/*
* Data structures...
*/
@@ -68,8 +74,8 @@ extern help_index_t *helpSearchIndex(help_index_t *hi, const char *query,
const char *filename);
#endif /* !_CUPS_HELP_INDEX_H_ */
# ifdef __cplusplus
}
# endif /* __cplusplus */
/*
* End of "$Id$".
*/
#endif /* !_CUPS_HELP_INDEX_H_ */
+43 -36
Ver Arquivo
@@ -1,20 +1,14 @@
/*
* "$Id$"
* Online help CGI for CUPS.
*
* On-line help CGI for the Common UNIX Printing System (CUPS).
* Copyright 2007-2011 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products.
*
* Copyright 2007 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.
* 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/".
*/
/*
@@ -39,7 +33,8 @@ main(int argc, /* I - Number of command-line arguments */
const char *query; /* Search query */
const char *cache_dir; /* CUPS_CACHEDIR environment variable */
const char *docroot; /* CUPS_DOCROOT environment variable */
const char *helpfile; /* Current help file */
const char *helpfile, /* Current help file */
*helptitle = NULL; /* Current help title */
const char *topic; /* Current topic */
char topic_data[1024]; /* Topic form data */
const char *section; /* Current section */
@@ -63,6 +58,7 @@ main(int argc, /* I - Number of command-line arguments */
*/
cgiSetVariable("SECTION", "help");
cgiSetVariable("REFRESH_PAGE", "");
/*
* Load the help index...
@@ -86,8 +82,8 @@ main(int argc, /* I - Number of command-line arguments */
{
perror(filename);
cgiStartHTML(cgiText(_("Help")));
cgiSetVariable("ERROR", "Unable to load help index!");
cgiStartHTML(cgiText(_("Online Help")));
cgiSetVariable("ERROR", cgiText(_("Unable to load help index.")));
cgiCopyTemplateLang("error.tmpl");
cgiEndHTML();
@@ -102,7 +98,7 @@ main(int argc, /* I - Number of command-line arguments */
*/
for (i = 0; i < argc; i ++)
fprintf(stderr, "argv[%d]=\"%s\"\n", i, argv[i]);
fprintf(stderr, "DEBUG: argv[%d]=\"%s\"\n", i, argv[i]);
if ((helpfile = getenv("PATH_INFO")) != NULL)
{
@@ -127,8 +123,8 @@ main(int argc, /* I - Number of command-line arguments */
{
perror(filename);
cgiStartHTML(cgiText(_("Help")));
cgiSetVariable("ERROR", "Unable to access help file!");
cgiStartHTML(cgiText(_("Online Help")));
cgiSetVariable("ERROR", cgiText(_("Unable to access help file.")));
cgiCopyTemplateLang("error.tmpl");
cgiEndHTML();
@@ -137,8 +133,8 @@ main(int argc, /* I - Number of command-line arguments */
if ((n = helpFindNode(hi, helpfile, NULL)) == NULL)
{
cgiStartHTML(cgiText(_("Help")));
cgiSetVariable("ERROR", "Help file not in index!");
cgiStartHTML(cgiText(_("Online Help")));
cgiSetVariable("ERROR", cgiText(_("Help file not in index.")));
cgiCopyTemplateLang("error.tmpl");
cgiEndHTML();
@@ -146,12 +142,11 @@ main(int argc, /* I - Number of command-line arguments */
}
/*
* Set the page title and save the help file...
* Save the page title and help file...
*/
cgiSetVariable("HELPFILE", helpfile);
cgiSetVariable("HELPTITLE", n->text);
cgiSetVariable("TOPIC", n->section);
helptitle = n->text;
topic = n->section;
/*
* Send a standard page header...
@@ -168,17 +163,31 @@ main(int argc, /* I - Number of command-line arguments */
* Send a standard page header...
*/
cgiStartHTML(cgiText(_("Help")));
cgiStartHTML(cgiText(_("Online Help")));
topic = cgiGetVariable("TOPIC");
}
/*
* Do a search as needed...
*/
if (cgiGetVariable("CLEAR"))
cgiSetVariable("QUERY", "");
query = cgiGetVariable("QUERY");
topic = cgiGetVariable("TOPIC");
si = helpSearchIndex(hi, query, topic, helpfile);
cgiClearVariables();
if (query)
cgiSetVariable("QUERY", query);
if (topic)
cgiSetVariable("TOPIC", topic);
if (helpfile)
cgiSetVariable("HELPFILE", helpfile);
if (helptitle)
cgiSetVariable("HELPTITLE", helptitle);
fprintf(stderr, "DEBUG: query=\"%s\", topic=\"%s\"\n",
query ? query : "(null)", topic ? topic : "(null)");
@@ -332,12 +341,12 @@ main(int argc, /* I - Number of command-line arguments */
{
if (inbody)
{
if (!strncasecmp(line, "</BODY>", 7))
if (!_cups_strncasecmp(line, "</BODY>", 7))
break;
printf("%s\n", line);
}
else if (!strncasecmp(line, "<BODY", 5))
else if (!_cups_strncasecmp(line, "<BODY", 5))
inbody = 1;
}
@@ -346,7 +355,7 @@ main(int argc, /* I - Number of command-line arguments */
else
{
perror(filename);
cgiSetVariable("ERROR", "Unable to open help file.");
cgiSetVariable("ERROR", cgiText(_("Unable to open help file.")));
cgiCopyTemplateLang("error.tmpl");
}
}
@@ -356,7 +365,10 @@ main(int argc, /* I - Number of command-line arguments */
*/
if (!printable)
{
cgiCopyTemplateLang("help-trailer.tmpl");
cgiEndHTML();
}
else
puts("</BODY>\n</HTML>");
@@ -372,8 +384,3 @@ main(int argc, /* I - Number of command-line arguments */
return (0);
}
/*
* End of "$Id$".
*/
+67 -23
Ver Arquivo
@@ -1,23 +1,14 @@
/*
* "$Id$"
* HTML support functions for CUPS.
*
* HTML support functions for the Common UNIX Printing System (CUPS).
* Copyright 2007-2011 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products.
*
* Copyright 2007 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.
* cgiFormEncode() - Encode a string as a form variable...
* cgiStartHTML() - Start a HTML page.
* cgi_null_passwd() - Return a NULL password for authentication.
* 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,6 +18,14 @@
#include "cgi-private.h"
/*
* Local globals...
*/
static const char *cgi_multipart = NULL;
/* Multipart separator, if any */
/*
* Local functions...
*/
@@ -50,7 +49,22 @@ cgiEndHTML(void)
/*
* 'cgiFormEncode()' - Encode a string as a form variable...
* 'cgiEndMultipart()' - End the delivery of a multipart web page.
*/
void
cgiEndMultipart(void)
{
if (cgi_multipart)
{
printf("\n%s--\n", cgi_multipart);
fflush(stdout);
}
}
/*
* 'cgiFormEncode()' - Encode a string as a form variable.
*/
char * /* O - Destination string */
@@ -144,6 +158,9 @@ cgiStartHTML(const char *title) /* I - Title of page */
* Tell the client to expect UTF-8 encoded HTML...
*/
if (cgi_multipart)
puts(cgi_multipart);
puts("Content-Type: text/html;charset=utf-8\n");
/*
@@ -157,6 +174,38 @@ cgiStartHTML(const char *title) /* I - Title of page */
}
/*
* 'cgiStartMultipart()' - Start a multipart delivery of a web page.
*/
void
cgiStartMultipart(void)
{
puts("MIME-Version: 1.0\n"
"Content-Type: multipart/x-mixed-replace; boundary=\"CUPS-MULTIPART\"\n");
fflush(stdout);
cgi_multipart = "--CUPS-MULTIPART";
}
/*
* 'cgiSupportsMultipart()' - Does the browser support multi-part documents?
*/
int /* O - 1 if multi-part supported, 0 otherwise */
cgiSupportsMultipart(void)
{
/*
* Too many bug reports for browsers that don't support it, and too much pain
* to whitelist known-good browsers, so for now we just punt on multi-part
* support... :(
*/
return (0);
}
/*
* 'cgi_null_passwd()' - Return a NULL password for authentication.
*/
@@ -171,8 +220,3 @@ cgi_null_passwd(const char *prompt) /* I - Prompt string (unused) */
return (NULL);
}
/*
* End of "$Id$".
*/
+319 -200
Ver Arquivo
@@ -1,30 +1,14 @@
/*
* "$Id$"
* CGI <-> IPP variable routines for CUPS.
*
* CGI <-> IPP variable routines for the Common UNIX Printing System (CUPS).
* Copyright 2007-2016 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products.
*
* Copyright 2007 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:
*
* cgiGetAttributes() - Get the list of attributes that are needed
* by the template file.
* cgiGetIPPObjects() - Get the objects in an IPP response.
* cgiMoveJobs() - Move one or more jobs.
* cgiPrintTestPage() - Print a test page.
* cgiRewriteURL() - Rewrite a printer URI into a web browser URL...
* cgiSetIPPObjectVars() - Set CGI variables from an IPP object.
* cgiSetIPPVars() - Set CGI variables from an IPP response.
* cgiShowIPPError() - Show the last IPP error message.
* cgiShowJobs() - Show print jobs.
* cgiText() - Return localized text.
* 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/".
*/
/*
@@ -64,7 +48,7 @@ cgiGetAttributes(ipp_t *request, /* I - IPP request */
{
for (i = 0; lang[i] && i < 15; i ++)
if (isalnum(lang[i] & 255))
locale[i] = tolower(lang[i]);
locale[i] = (char)tolower(lang[i]);
else
locale[i] = '_';
@@ -106,14 +90,14 @@ cgiGetAttributes(ipp_t *request, /* I - IPP request */
while ((ch = getc(in)) != EOF)
if (ch == '\\')
getc(in);
else if (ch == '{' && num_attrs < (sizeof(attrs) / sizeof(attrs[0])))
else if (ch == '{' && num_attrs < (int)(sizeof(attrs) / sizeof(attrs[0])))
{
/*
* Grab the name...
*/
for (nameptr = name; (ch = getc(in)) != EOF;)
if (strchr("}]<>=! \t\n", ch))
if (strchr("}]<>=!~ \t\n", ch))
break;
else if (nameptr > name && ch == '?')
break;
@@ -122,13 +106,13 @@ cgiGetAttributes(ipp_t *request, /* I - IPP request */
if (ch == '_')
*nameptr++ = '-';
else
*nameptr++ = ch;
*nameptr++ = (char)ch;
}
*nameptr = '\0';
if (!strncmp(name, "printer_state_history", 21))
strcpy(name, "printer_state_history");
strlcpy(name, "printer_state_history", sizeof(name));
/*
* Possibly add it to the list of attributes...
@@ -158,6 +142,8 @@ cgiGetAttributes(ipp_t *request, /* I - IPP request */
for (i = 0; i < num_attrs; i ++)
free(attrs[i]);
}
fclose(in);
}
@@ -234,6 +220,9 @@ 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 */
@@ -282,11 +271,14 @@ cgiMoveJobs(http_t *http, /* I - Connection to server */
/*
* See who is logged in...
* Make sure we have a username...
*/
if ((user = getenv("REMOTE_USER")) == NULL)
user = "guest";
{
puts("Status: 401\n");
exit(0);
}
/*
* See if the user has already selected a new destination...
@@ -331,7 +323,7 @@ cgiMoveJobs(http_t *http, /* I - Connection to server */
NULL, job_uri);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD,
"requested-attributes", NULL, "job-printer-uri");
if ((response = cupsDoRequest(http, request, "/")) != NULL)
{
if ((attr = ippFindAttribute(response, "job-printer-uri",
@@ -356,7 +348,7 @@ cgiMoveJobs(http_t *http, /* I - Connection to server */
*/
cgiStartHTML(cgiText(_("Move Job")));
cgiShowIPPError(_("Unable to find destination for job!"));
cgiShowIPPError(_("Unable to find destination for job"));
cgiEndHTML();
return;
}
@@ -371,8 +363,14 @@ cgiMoveJobs(http_t *http, /* I - Connection to server */
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD,
"requested-attributes", NULL, "printer-uri-supported");
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME,
"requesting-user-name", NULL, user);
if (user)
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME,
"requesting-user-name", NULL, user);
ippAddInteger(request, IPP_TAG_OPERATION, IPP_TAG_ENUM, "printer-type",
CUPS_PRINTER_LOCAL);
ippAddInteger(request, IPP_TAG_OPERATION, IPP_TAG_ENUM, "printer-type-mask",
CUPS_PRINTER_SCANNER);
if ((response = cupsDoRequest(http, request, "/")) != NULL)
{
@@ -392,7 +390,7 @@ cgiMoveJobs(http_t *http, /* I - Connection to server */
* If the name is not the same as the current destination, add it!
*/
if (strcasecmp(name, dest))
if (_cups_strcasecmp(name, dest))
{
cgiSetArray("JOB_PRINTER_URI", i, attr->values[0].string.text);
cgiSetArray("JOB_PRINTER_NAME", i, name);
@@ -412,7 +410,18 @@ cgiMoveJobs(http_t *http, /* I - Connection to server */
else
cgiStartHTML(cgiText(_("Move All Jobs")));
cgiCopyTemplateLang("job-move.tmpl");
if (cgiGetSize("JOB_PRINTER_NAME") > 0)
cgiCopyTemplateLang("job-move.tmpl");
else
{
if (job_id)
cgiSetVariable("MESSAGE", cgiText(_("Unable to move job")));
else
cgiSetVariable("MESSAGE", cgiText(_("Unable to move jobs")));
cgiSetVariable("ERROR", cgiText(_("No destinations added.")));
cgiCopyTemplateLang("error.tmpl");
}
}
else
{
@@ -472,10 +481,19 @@ cgiMoveJobs(http_t *http, /* I - Connection to server */
if (cupsLastError() <= IPP_OK_CONFLICT)
{
cgiRewriteURL(job_printer_uri, resource, sizeof(resource), NULL);
cgiFormEncode(uri, resource, sizeof(uri));
snprintf(refresh, sizeof(refresh), "2;URL=%s", uri);
cgiSetVariable("refresh_page", refresh);
const char *path = strstr(job_printer_uri, "/printers/");
if (!path)
{
path = strstr(job_printer_uri, "/classes/");
cgiSetVariable("IS_CLASS", "YES");
}
if (path)
{
cgiFormEncode(uri, path, sizeof(uri));
snprintf(refresh, sizeof(refresh), "2;URL=%s", uri);
cgiSetVariable("refresh_page", refresh);
}
}
if (job_id)
@@ -501,6 +519,168 @@ cgiMoveJobs(http_t *http, /* I - Connection to server */
}
/*
* 'cgiPrintCommand()' - Print a CUPS command job.
*/
void
cgiPrintCommand(http_t *http, /* I - Connection to server */
const char *dest, /* I - Destination printer */
const char *command, /* I - Command to send */
const char *title) /* I - Page/job title */
{
int job_id; /* Command file job */
char uri[HTTP_MAX_URI], /* Job URI */
resource[1024], /* Printer resource path */
refresh[1024], /* Refresh URL */
command_file[1024]; /* Command "file" */
http_status_t status; /* Document status */
cups_option_t hold_option; /* job-hold-until option */
const char *user; /* User name */
ipp_t *request, /* Get-Job-Attributes request */
*response; /* Get-Job-Attributes response */
ipp_attribute_t *attr; /* Current job attribute */
static const char * const job_attrs[] =/* Job attributes we want */
{
"job-state",
"job-printer-state-message"
};
/*
* Create the CUPS command file...
*/
snprintf(command_file, sizeof(command_file), "#CUPS-COMMAND\n%s\n", command);
/*
* Show status...
*/
if (cgiSupportsMultipart())
{
cgiStartMultipart();
cgiStartHTML(title);
cgiCopyTemplateLang("command.tmpl");
cgiEndHTML();
fflush(stdout);
}
/*
* Send the command file job...
*/
hold_option.name = "job-hold-until";
hold_option.value = "no-hold";
if ((user = getenv("REMOTE_USER")) != NULL)
cupsSetUser(user);
else
cupsSetUser("anonymous");
if ((job_id = cupsCreateJob(http, dest, title,
1, &hold_option)) < 1)
{
cgiSetVariable("MESSAGE", cgiText(_("Unable to send command to printer driver")));
cgiSetVariable("ERROR", cupsLastErrorString());
cgiStartHTML(title);
cgiCopyTemplateLang("error.tmpl");
cgiEndHTML();
if (cgiSupportsMultipart())
cgiEndMultipart();
return;
}
status = cupsStartDocument(http, dest, job_id, NULL, CUPS_FORMAT_COMMAND, 1);
if (status == HTTP_CONTINUE)
status = cupsWriteRequestData(http, command_file,
strlen(command_file));
if (status == HTTP_CONTINUE)
cupsFinishDocument(http, dest);
if (cupsLastError() >= IPP_REDIRECTION_OTHER_SITE)
{
cgiSetVariable("MESSAGE", cgiText(_("Unable to send command to printer driver")));
cgiSetVariable("ERROR", cupsLastErrorString());
cgiStartHTML(title);
cgiCopyTemplateLang("error.tmpl");
cgiEndHTML();
if (cgiSupportsMultipart())
cgiEndMultipart();
cupsCancelJob(dest, job_id);
return;
}
/*
* Wait for the job to complete...
*/
if (cgiSupportsMultipart())
{
for (;;)
{
/*
* Get the current job state...
*/
snprintf(uri, sizeof(uri), "ipp://localhost/jobs/%d", job_id);
request = ippNewRequest(IPP_GET_JOB_ATTRIBUTES);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "job-uri",
NULL, uri);
if (user)
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME,
"requesting-user-name", NULL, user);
ippAddStrings(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD,
"requested-attributes", 2, NULL, job_attrs);
if ((response = cupsDoRequest(http, request, "/")) != NULL)
cgiSetIPPVars(response, NULL, NULL, NULL, 0);
attr = ippFindAttribute(response, "job-state", IPP_TAG_ENUM);
if (!attr || attr->values[0].integer >= IPP_JOB_STOPPED ||
attr->values[0].integer == IPP_JOB_HELD)
{
ippDelete(response);
break;
}
/*
* Job not complete, so update the status...
*/
ippDelete(response);
cgiStartHTML(title);
cgiCopyTemplateLang("command.tmpl");
cgiEndHTML();
fflush(stdout);
sleep(5);
}
}
/*
* Send the final page that reloads the printer's page...
*/
snprintf(resource, sizeof(resource), "/printers/%s", dest);
cgiFormEncode(uri, resource, sizeof(uri));
snprintf(refresh, sizeof(refresh), "5;URL=%s", uri);
cgiSetVariable("refresh_page", refresh);
cgiStartHTML(title);
cgiCopyTemplateLang("command.tmpl");
cgiEndHTML();
if (cgiSupportsMultipart())
cgiEndMultipart();
}
/*
* 'cgiPrintTestPage()' - Print a test page.
*/
@@ -523,8 +703,7 @@ cgiPrintTestPage(http_t *http, /* I - Connection to server */
* See who is logged in...
*/
if ((user = getenv("REMOTE_USER")) == NULL)
user = "guest";
user = getenv("REMOTE_USER");
/*
* Locate the test page file...
@@ -533,7 +712,7 @@ cgiPrintTestPage(http_t *http, /* I - Connection to server */
if ((datadir = getenv("CUPS_DATADIR")) == NULL)
datadir = CUPS_DATADIR;
snprintf(filename, sizeof(filename), "%s/data/testprint.ps", datadir);
snprintf(filename, sizeof(filename), "%s/data/testprint", datadir);
/*
* Point to the printer/class...
@@ -554,7 +733,6 @@ cgiPrintTestPage(http_t *http, /* I - Connection to server */
* attributes-natural-language
* printer-uri
* requesting-user-name
* document-format
*/
request = ippNewRequest(IPP_PRINT_JOB);
@@ -562,15 +740,13 @@ cgiPrintTestPage(http_t *http, /* I - Connection to server */
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
NULL, uri);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME,
"requesting-user-name", NULL, user);
if (user)
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME,
"requesting-user-name", NULL, user);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "job-name",
NULL, "Test Page");
ippAddString(request, IPP_TAG_JOB, IPP_TAG_MIMETYPE, "document-format",
NULL, "application/postscript");
/*
* Do the request and get back a response...
*/
@@ -593,11 +769,16 @@ cgiPrintTestPage(http_t *http, /* I - Connection to server */
snprintf(refresh, sizeof(refresh), "2;URL=%s", uri);
cgiSetVariable("refresh_page", refresh);
}
else if (cupsLastError() == IPP_NOT_AUTHORIZED)
{
puts("Status: 401\n");
exit(0);
}
cgiStartHTML(cgiText(_("Print Test Page")));
if (cupsLastError() > IPP_OK_CONFLICT)
cgiShowIPPError(_("Unable to print test page:"));
cgiShowIPPError(_("Unable to print test page"));
else
{
cgiSetVariable("PRINTER_NAME", dest);
@@ -619,7 +800,7 @@ cgiRewriteURL(const char *uri, /* I - Current URI */
int urlsize, /* I - Size of URL buffer */
const char *newresource) /* I - Replacement resource */
{
char method[HTTP_MAX_URI],
char scheme[HTTP_MAX_URI],
userpass[HTTP_MAX_URI],
hostname[HTTP_MAX_URI],
rawresource[HTTP_MAX_URI],
@@ -666,13 +847,13 @@ cgiRewriteURL(const char *uri, /* I - Current URI */
* Convert the URI to a URL...
*/
httpSeparateURI(HTTP_URI_CODING_ALL, uri, method, sizeof(method), userpass,
httpSeparateURI(HTTP_URI_CODING_ALL, uri, scheme, sizeof(scheme), userpass,
sizeof(userpass), hostname, sizeof(hostname), &port,
rawresource, sizeof(rawresource));
if (!strcmp(method, "ipp") ||
!strcmp(method, "http") ||
!strcmp(method, "https"))
if (!strcmp(scheme, "ipp") ||
!strcmp(scheme, "http") ||
!strcmp(scheme, "https"))
{
if (newresource)
{
@@ -711,16 +892,18 @@ cgiRewriteURL(const char *uri, /* I - Current URI */
* Map local access to a local URI...
*/
if (!strcasecmp(hostname, "localhost") ||
!strncasecmp(hostname, "localhost.", 10) ||
!strcasecmp(hostname, server) ||
!strcasecmp(hostname, servername))
if (!_cups_strcasecmp(hostname, "127.0.0.1") ||
!_cups_strcasecmp(hostname, "[::1]") ||
!_cups_strcasecmp(hostname, "localhost") ||
!_cups_strncasecmp(hostname, "localhost.", 10) ||
!_cups_strcasecmp(hostname, server) ||
!_cups_strcasecmp(hostname, servername))
{
/*
* Make URI relative to the current server...
*/
strlcpy(url, resource, urlsize);
strlcpy(url, resource, (size_t)urlsize);
}
else
{
@@ -729,17 +912,13 @@ cgiRewriteURL(const char *uri, /* I - Current URI */
*/
if (userpass[0])
snprintf(url, urlsize, "%s://%s@%s:%d%s",
ishttps ? "https" : "http",
userpass, hostname, port, resource);
snprintf(url, (size_t)urlsize, "%s://%s@%s:%d%s", ishttps ? "https" : "http", userpass, hostname, port, resource);
else
snprintf(url, urlsize, "%s://%s:%d%s",
ishttps ? "https" : "http",
hostname, port, resource);
snprintf(url, (size_t)urlsize, "%s://%s:%d%s", ishttps ? "https" : "http", hostname, port, resource);
}
}
else
strlcpy(url, uri, urlsize);
strlcpy(url, uri, (size_t)urlsize);
return (url);
}
@@ -761,7 +940,6 @@ cgiSetIPPObjectVars(
*nameptr, /* Pointer into name */
value[16384], /* Value(s) */
*valptr; /* Pointer into value */
struct tm *date; /* Date information */
fprintf(stderr, "DEBUG2: cgiSetIPPObjectVars(obj=%p, prefix=\"%s\", "
@@ -842,10 +1020,10 @@ cgiSetIPPObjectVars(
*valptr++ = ' ';
}
remaining = sizeof(value) - (valptr - value);
remaining = sizeof(value) - (size_t)(valptr - value);
if (!strcmp(attr->values[i].string.text, "printer-stopped"))
strlcpy(valptr, _("Printer Stopped"), remaining);
strlcpy(valptr, _("Printer Paused"), remaining);
else if (!strcmp(attr->values[i].string.text, "printer-added"))
strlcpy(valptr, _("Printer Added"), remaining);
else if (!strcmp(attr->values[i].string.text, "printer-modified"))
@@ -980,7 +1158,7 @@ cgiSetIPPObjectVars(
for (i = 0; i < attr->num_values; i ++)
{
if (i)
strlcat(valptr, ",", sizeof(value) - (valptr - value));
strlcat(valptr, ", ", sizeof(value) - (size_t)(valptr - value));
valptr += strlen(valptr);
@@ -989,40 +1167,32 @@ cgiSetIPPObjectVars(
case IPP_TAG_INTEGER :
case IPP_TAG_ENUM :
if (strncmp(name, "time_at_", 8) == 0)
{
time_t t; /* Temporary time value */
t = (time_t)attr->values[i].integer;
date = localtime(&t);
strftime(valptr, sizeof(value) - (valptr - value), "%c", date);
}
_cupsStrDate(valptr, sizeof(value) - (size_t)(valptr - value), (time_t)ippGetInteger(attr, i));
else
snprintf(valptr, sizeof(value) - (valptr - value),
"%d", attr->values[i].integer);
snprintf(valptr, sizeof(value) - (size_t)(valptr - value), "%d", ippGetInteger(attr, i));
break;
case IPP_TAG_BOOLEAN :
snprintf(valptr, sizeof(value) - (valptr - value),
snprintf(valptr, sizeof(value) - (size_t)(valptr - value),
"%d", attr->values[i].boolean);
break;
case IPP_TAG_NOVALUE :
strlcat(valptr, "novalue", sizeof(value) - (valptr - value));
strlcat(valptr, "novalue", sizeof(value) - (size_t)(valptr - value));
break;
case IPP_TAG_RANGE :
snprintf(valptr, sizeof(value) - (valptr - value),
snprintf(valptr, sizeof(value) - (size_t)(valptr - value),
"%d-%d", attr->values[i].range.lower,
attr->values[i].range.upper);
break;
case IPP_TAG_RESOLUTION :
snprintf(valptr, sizeof(value) - (valptr - value),
snprintf(valptr, sizeof(value) - (size_t)(valptr - value),
"%dx%d%s", attr->values[i].resolution.xres,
attr->values[i].resolution.yres,
attr->values[i].resolution.units == IPP_RES_PER_INCH ?
"dpi" : "dpc");
"dpi" : "dpcm");
break;
case IPP_TAG_URI :
@@ -1033,21 +1203,7 @@ cgiSetIPPObjectVars(
* Rewrite URIs...
*/
if (!strcmp(name, "member_uris"))
{
char url[1024]; /* URL for class member... */
cgiRewriteURL(attr->values[i].string.text, url,
sizeof(url), NULL);
snprintf(valptr, sizeof(value) - (valptr - value),
"<A HREF=\"%s\">%s</A>", url,
strrchr(attr->values[i].string.text, '/') + 1);
}
else
cgiRewriteURL(attr->values[i].string.text, valptr,
sizeof(value) - (valptr - value), NULL);
cgiRewriteURL(attr->values[i].string.text, valptr, (int)(sizeof(value) - (size_t)(valptr - value)), NULL);
break;
}
@@ -1059,7 +1215,7 @@ cgiSetIPPObjectVars(
case IPP_TAG_LANGUAGE :
case IPP_TAG_MIMETYPE :
strlcat(valptr, attr->values[i].string.text,
sizeof(value) - (valptr - value));
sizeof(value) - (size_t)(valptr - value));
break;
case IPP_TAG_BEGIN_COLLECTION :
@@ -1150,7 +1306,7 @@ cgiSetIPPVars(ipp_t *response, /* I - Response data to be copied... */
(filter->value_tag >= IPP_TAG_TEXTLANG &&
filter->value_tag <= IPP_TAG_MIMETYPE)) &&
filter->values[0].string.text != NULL &&
!strcasecmp(filter->values[0].string.text, filter_value))
!_cups_strcasecmp(filter->values[0].string.text, filter_value))
break;
if (!filter)
@@ -1167,7 +1323,7 @@ cgiSetIPPVars(ipp_t *response, /* I - Response data to be copied... */
attr = cgiSetIPPObjectVars(attr, prefix, element);
}
fprintf(stderr, "DEBUG2: Returing %d from cgiSetIPPVars()...\n", element);
fprintf(stderr, "DEBUG2: Returning %d from cgiSetIPPVars()...\n", element);
return (element);
}
@@ -1202,14 +1358,14 @@ 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 ascending, /* Order of jobs (0 = descending) */
first, /* First job to show */
int first, /* First job to show */
count; /* Number of jobs */
const char *var; /* Form variable */
const char *var, /* Form variable */
*query, /* Query string */
*section; /* Section in web interface */
void *search; /* Search data */
char url[1024], /* URL for prev/next/this */
*urlptr, /* Position in URL */
*urlend; /* End of URL */
char url[1024], /* Printer URI */
val[1024]; /* Form variable */
/*
@@ -1231,13 +1387,24 @@ cgiShowJobs(http_t *http, /* I - Connection to server */
NULL, url);
}
else
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "job-uri", NULL,
"ipp://localhost/jobs");
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri", NULL,
"ipp://localhost/");
if ((which_jobs = cgiGetVariable("which_jobs")) != NULL)
if ((which_jobs = cgiGetVariable("which_jobs")) != NULL && *which_jobs)
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");
/*
@@ -1250,13 +1417,17 @@ cgiShowJobs(http_t *http, /* I - Connection to server */
* Get a list of matching job objects.
*/
if ((var = cgiGetVariable("QUERY")) != NULL)
search = cgiCompileSearch(var);
if ((query = cgiGetVariable("QUERY")) != NULL &&
!cgiGetVariable("CLEAR"))
search = cgiCompileSearch(query);
else
{
query = NULL;
search = NULL;
}
jobs = cgiGetIPPObjects(response, search);
count = cupsArrayCount(jobs);
count = cupsArrayCount(jobs) + first;
if (search)
cgiFreeSearch(search);
@@ -1265,104 +1436,57 @@ 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;
section = cgiGetVariable("SECTION");
if (first >= count)
first = count - CUPS_PAGE_MAX;
cgiClearVariables();
first = (first / CUPS_PAGE_MAX) * CUPS_PAGE_MAX;
if (query)
cgiSetVariable("QUERY", query);
if (first < 0)
first = 0;
cgiSetVariable("SECTION", section);
sprintf(url, "%d", count);
cgiSetVariable("TOTAL", url);
sprintf(val, "%d", count);
cgiSetVariable("TOTAL", val);
if ((var = cgiGetVariable("ORDER")) != NULL)
ascending = !strcasecmp(var, "asc");
else
{
ascending = !which_jobs || !strcasecmp(which_jobs, "not-completed");
cgiSetVariable("ORDER", ascending ? "asc" : "dec");
}
if (which_jobs)
cgiSetVariable("WHICH_JOBS", which_jobs);
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);
}
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);
/*
* Save navigation URLs...
*/
urlend = url + sizeof(url);
if ((var = cgiGetVariable("QUERY")) != NULL)
if (dest)
{
if (dest)
snprintf(url, sizeof(url), "/%s/%s?QUERY=", cgiGetVariable("SECTION"),
dest);
else
strlcpy(url, "/jobs/?QUERY=", sizeof(url));
urlptr = url + strlen(url);
cgiFormEncode(urlptr, var, urlend - urlptr);
urlptr += strlen(urlptr);
strlcpy(urlptr, "&", urlend - urlptr);
urlptr += strlen(urlptr);
snprintf(val, sizeof(val), "/%s/%s", section, dest);
cgiSetVariable("PRINTER_NAME", dest);
cgiSetVariable("PRINTER_URI_SUPPORTED", val);
}
else
{
if (dest)
snprintf(url, sizeof(url), "/%s/%s?", cgiGetVariable("SECTION"), dest);
else
strlcpy(url, "/jobs/?", sizeof(url));
strlcpy(val, "/jobs/", sizeof(val));
urlptr = url + strlen(url);
}
if (which_jobs)
{
strlcpy(urlptr, "WHICH_JOBS=", urlend - urlptr);
urlptr += strlen(urlptr);
cgiFormEncode(urlptr, which_jobs, urlend - urlptr);
urlptr += strlen(urlptr);
strlcpy(urlptr, "&", urlend - urlptr);
urlptr += strlen(urlptr);
}
snprintf(urlptr, urlend - urlptr, "FIRST=%d", first);
cgiSetVariable("THISURL", url);
cgiSetVariable("THISURL", val);
if (first > 0)
{
snprintf(urlptr, urlend - urlptr, "FIRST=%d&ORDER=%s",
first - CUPS_PAGE_MAX, ascending ? "asc" : "dec");
cgiSetVariable("PREVURL", url);
sprintf(val, "%d", first - CUPS_PAGE_MAX);
cgiSetVariable("PREV", val);
}
if ((first + CUPS_PAGE_MAX) < count)
{
snprintf(urlptr, urlend - urlptr, "FIRST=%d&ORDER=%s",
first + CUPS_PAGE_MAX, ascending ? "asc" : "dec");
cgiSetVariable("NEXTURL", url);
sprintf(val, "%d", first + CUPS_PAGE_MAX);
cgiSetVariable("NEXT", val);
}
if (count > CUPS_PAGE_MAX)
{
snprintf(val, sizeof(val), "%d", CUPS_PAGE_MAX * (count / CUPS_PAGE_MAX));
cgiSetVariable("LAST", val);
}
/*
@@ -1376,12 +1500,12 @@ cgiShowJobs(http_t *http, /* I - Connection to server */
cgiCopyTemplateLang("jobs-header.tmpl");
if (count > 0)
if (count > CUPS_PAGE_MAX)
cgiCopyTemplateLang("pager.tmpl");
cgiCopyTemplateLang("jobs.tmpl");
if (count > 0)
if (count > CUPS_PAGE_MAX)
cgiCopyTemplateLang("pager.tmpl");
cupsArrayDelete(jobs);
@@ -1406,8 +1530,3 @@ cgiText(const char *message) /* I - Message */
return (_cupsLangString(language, message));
}
/*
* End of "$Id$".
*/
+18 -25
Ver Arquivo
@@ -1,21 +1,14 @@
/*
* "$Id$"
* Job status CGI for CUPS.
*
* Job status CGI for the Common UNIX Printing System (CUPS).
* Copyright 2007-2014 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products.
*
* Copyright 2007 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.
* do_job_op() - Do a job operation.
* 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/".
*/
/*
@@ -37,8 +30,7 @@ static void do_job_op(http_t *http, int job_id, ipp_op_t op);
*/
int /* O - Exit status */
main(int argc, /* I - Number of command-line arguments */
char *argv[]) /* I - Command-line arguments */
main(void)
{
http_t *http; /* Connection to the server */
const char *op; /* Operation name */
@@ -57,6 +49,7 @@ main(int argc, /* I - Number of command-line arguments */
*/
cgiSetVariable("SECTION", "jobs");
cgiSetVariable("REFRESH_PAGE", "");
/*
* Connect to the HTTP server...
@@ -77,7 +70,7 @@ main(int argc, /* I - Number of command-line arguments */
* Do the operation...
*/
if ((op = cgiGetVariable("OP")) != NULL && job_id > 0)
if ((op = cgiGetVariable("OP")) != NULL && job_id > 0 && cgiIsPOST())
{
/*
* Do the operation...
@@ -181,15 +174,20 @@ do_job_op(http_t *http, /* I - HTTP connection */
char url[1024]; /* Encoded URL */
strcpy(url, "5;URL=");
strlcpy(url, "5;URL=", sizeof(url));
cgiFormEncode(url + 6, getenv("HTTP_REFERER"), sizeof(url) - 6);
cgiSetVariable("refresh_page", url);
}
else if (cupsLastError() == IPP_NOT_AUTHORIZED)
{
puts("Status: 401\n");
exit(0);
}
cgiStartHTML(cgiText(_("Jobs")));
if (cupsLastError() > IPP_OK_CONFLICT)
cgiShowIPPError(_("Job operation failed:"));
cgiShowIPPError(_("Job operation failed"));
else if (op == IPP_CANCEL_JOB)
cgiCopyTemplateLang("job-cancel.tmpl");
else if (op == IPP_HOLD_JOB)
@@ -201,8 +199,3 @@ do_job_op(http_t *http, /* I - HTTP connection */
cgiEndHTML();
}
/*
* End of "$Id$".
*/
+42
Ver Arquivo
@@ -0,0 +1,42 @@
_cgiCheckVariables
_cgiClearVariables
_cgiCompileSearch
_cgiCopyTemplateFile
_cgiCopyTemplateLang
_cgiDoSearch
_cgiEndHTML
_cgiEndMultipart
_cgiFormEncode
_cgiFreeSearch
_cgiGetArray
_cgiGetAttributes
_cgiGetCookie
_cgiGetFile
_cgiGetIPPObjects
_cgiGetSize
_cgiGetTemplateDir
_cgiGetVariable
_cgiInitialize
_cgiIsPOST
_cgiMoveJobs
_cgiPrintCommand
_cgiPrintTestPage
_cgiRewriteURL
_cgiSetArray
_cgiSetIPPObjectVars
_cgiSetIPPVars
_cgiSetCookie
_cgiSetServerVersion
_cgiSetSize
_cgiSetVariable
_cgiShowIPPError
_cgiShowJobs
_cgiStartHTML
_cgiStartMultipart
_cgiSupportsMultipart
_cgiText
_helpDeleteIndex
_helpFindNode
_helpLoadIndex
_helpSaveIndex
_helpSearchIndex
+469
Ver Arquivo
@@ -0,0 +1,469 @@
/*
* Xcode documentation set generator.
*
* 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
*/
/*
* Include necessary headers...
*/
#include "cgi-private.h"
#include <errno.h>
/*
* Local structures...
*/
typedef struct _cups_html_s /**** Help file ****/
{
char *path; /* Path to help file */
char *title; /* Title of help file */
} _cups_html_t;
typedef struct _cups_section_s /**** Help section ****/
{
char *name; /* Section name */
cups_array_t *files; /* Files in this section */
} _cups_section_t;
/*
* Local functions...
*/
static int compare_html(_cups_html_t *a, _cups_html_t *b);
static int compare_sections(_cups_section_t *a, _cups_section_t *b);
static int compare_sections_files(_cups_section_t *a, _cups_section_t *b);
static void write_index(const char *path, help_index_t *hi);
static void write_info(const char *path, const char *revision);
static void write_nodes(const char *path, help_index_t *hi);
/*
* 'main()' - Test the help index code.
*/
int /* O - Exit status */
main(int argc, /* I - Number of command-line args */
char *argv[]) /* I - Command-line arguments */
{
int i; /* Looping var */
char path[1024], /* Path to documentation */
line[1024]; /* Line from file */
help_index_t *hi; /* Help index */
cups_file_t *tokens, /* Tokens.xml file */
*fp; /* Current file */
if (argc < 4)
{
puts("Usage: makedocset directory revision *.tokens");
return (1);
}
/*
* Index the help documents...
*/
snprintf(path, sizeof(path), "%s/Contents/Resources/Documentation", argv[1]);
if ((hi = helpLoadIndex(NULL, path)) == NULL)
{
fputs("makedocset: Unable to index help files!\n", stderr);
return (1);
}
snprintf(path, sizeof(path), "%s/Contents/Resources/Documentation/index.html",
argv[1]);
write_index(path, hi);
snprintf(path, sizeof(path), "%s/Contents/Resources/Nodes.xml", argv[1]);
write_nodes(path, hi);
/*
* Write the Info.plist file...
*/
snprintf(path, sizeof(path), "%s/Contents/Info.plist", argv[1]);
write_info(path, argv[2]);
/*
* Merge the Tokens.xml files...
*/
snprintf(path, sizeof(path), "%s/Contents/Resources/Tokens.xml", argv[1]);
if ((tokens = cupsFileOpen(path, "w")) == NULL)
{
fprintf(stderr, "makedocset: Unable to create \"%s\": %s\n", path,
strerror(errno));
return (1);
}
cupsFilePuts(tokens, "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
cupsFilePuts(tokens, "<Tokens version=\"1.0\">\n");
for (i = 3; i < argc; i ++)
{
if ((fp = cupsFileOpen(argv[i], "r")) == NULL)
{
fprintf(stderr, "makedocset: Unable to open \"%s\": %s\n", argv[i],
strerror(errno));
return (1);
}
if (!cupsFileGets(fp, line, sizeof(line)) || strncmp(line, "<?xml ", 6) ||
!cupsFileGets(fp, line, sizeof(line)) || strncmp(line, "<Tokens ", 8))
{
fprintf(stderr, "makedocset: Bad Tokens.xml file \"%s\"!\n", argv[i]);
return (1);
}
while (cupsFileGets(fp, line, sizeof(line)))
{
if (strcmp(line, "</Tokens>"))
cupsFilePrintf(tokens, "%s\n", line);
}
cupsFileClose(fp);
}
cupsFilePuts(tokens, "</Tokens>\n");
cupsFileClose(tokens);
/*
* Return with no errors...
*/
return (0);
}
/*
* 'compare_html()' - Compare the titles of two HTML files.
*/
static int /* O - Result of comparison */
compare_html(_cups_html_t *a, /* I - First file */
_cups_html_t *b) /* I - Second file */
{
return (_cups_strcasecmp(a->title, b->title));
}
/*
* 'compare_sections()' - Compare the names of two help sections.
*/
static int /* O - Result of comparison */
compare_sections(_cups_section_t *a, /* I - First section */
_cups_section_t *b) /* I - Second section */
{
return (_cups_strcasecmp(a->name, b->name));
}
/*
* 'compare_sections_files()' - Compare the number of files and section names.
*/
static int /* O - Result of comparison */
compare_sections_files(
_cups_section_t *a, /* I - First section */
_cups_section_t *b) /* I - Second section */
{
int ret = cupsArrayCount(b->files) - cupsArrayCount(a->files);
if (ret)
return (ret);
else
return (_cups_strcasecmp(a->name, b->name));
}
/*
* 'write_index()' - Write an index file for the CUPS help.
*/
static void
write_index(const char *path, /* I - File to write */
help_index_t *hi) /* I - Index of files */
{
cups_file_t *fp; /* Output file */
help_node_t *node; /* Current help node */
_cups_section_t *section, /* Current section */
key; /* Section search key */
_cups_html_t *html; /* Current HTML file */
cups_array_t *sections, /* Sections in index */
*sections_files,/* Sections sorted by size */
*columns[3]; /* Columns in final HTML file */
int column, /* Current column */
lines[3], /* Number of lines in each column */
min_column, /* Smallest column */
min_lines; /* Smallest number of lines */
/*
* Build an array of sections and their files.
*/
sections = cupsArrayNew((cups_array_func_t)compare_sections, NULL);
for (node = (help_node_t *)cupsArrayFirst(hi->nodes);
node;
node = (help_node_t *)cupsArrayNext(hi->nodes))
{
if (node->anchor)
continue;
key.name = node->section ? node->section : "Miscellaneous";
if ((section = (_cups_section_t *)cupsArrayFind(sections, &key)) == NULL)
{
section = (_cups_section_t *)calloc(1, sizeof(_cups_section_t));
section->name = key.name;
section->files = cupsArrayNew((cups_array_func_t)compare_html, NULL);
cupsArrayAdd(sections, section);
}
html = (_cups_html_t *)calloc(1, sizeof(_cups_html_t));
html->path = node->filename;
html->title = node->text;
cupsArrayAdd(section->files, html);
}
/*
* Build a sorted list of sections based on the number of files in each section
* and the section name...
*/
sections_files = cupsArrayNew((cups_array_func_t)compare_sections_files,
NULL);
for (section = (_cups_section_t *)cupsArrayFirst(sections);
section;
section = (_cups_section_t *)cupsArrayNext(sections))
cupsArrayAdd(sections_files, section);
/*
* Then build three columns to hold everything, trying to balance the number of
* lines in each column...
*/
for (column = 0; column < 3; column ++)
{
columns[column] = cupsArrayNew((cups_array_func_t)compare_sections, NULL);
lines[column] = 0;
}
for (section = (_cups_section_t *)cupsArrayFirst(sections_files);
section;
section = (_cups_section_t *)cupsArrayNext(sections_files))
{
for (min_column = 0, min_lines = lines[0], column = 1;
column < 3;
column ++)
{
if (lines[column] < min_lines)
{
min_column = column;
min_lines = lines[column];
}
}
cupsArrayAdd(columns[min_column], section);
lines[min_column] += cupsArrayCount(section->files) + 2;
}
/*
* Write the HTML file...
*/
if ((fp = cupsFileOpen(path, "w")) == NULL)
{
fprintf(stderr, "makedocset: Unable to create %s: %s\n", path,
strerror(errno));
exit(1);
}
cupsFilePuts(fp, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 "
"Transitional//EN\" "
"\"http://www.w3.org/TR/html4/loose.dtd\">\n"
"<html>\n"
"<head>\n"
"<title>CUPS Documentation</title>\n"
"<link rel='stylesheet' type='text/css' "
"href='cups-printable.css'>\n"
"</head>\n"
"<body>\n"
"<h1 class='title'>CUPS Documentation</h1>\n"
"<table width='100%' summary=''>\n"
"<tr>\n");
for (column = 0; column < 3; column ++)
{
if (column)
cupsFilePuts(fp, "<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>\n");
cupsFilePuts(fp, "<td valign='top' width='33%'>");
for (section = (_cups_section_t *)cupsArrayFirst(columns[column]);
section;
section = (_cups_section_t *)cupsArrayNext(columns[column]))
{
cupsFilePrintf(fp, "<h2 class='title'>%s</h2>\n", section->name);
for (html = (_cups_html_t *)cupsArrayFirst(section->files);
html;
html = (_cups_html_t *)cupsArrayNext(section->files))
cupsFilePrintf(fp, "<p class='compact'><a href='%s'>%s</a></p>\n",
html->path, html->title);
}
cupsFilePuts(fp, "</td>\n");
}
cupsFilePuts(fp, "</tr>\n"
"</table>\n"
"</body>\n"
"</html>\n");
cupsFileClose(fp);
}
/*
* 'write_info()' - Write the Info.plist file.
*/
static void
write_info(const char *path, /* I - File to write */
const char *revision) /* I - Subversion revision number */
{
cups_file_t *fp; /* File */
if ((fp = cupsFileOpen(path, "w")) == NULL)
{
fprintf(stderr, "makedocset: Unable to create %s: %s\n", path,
strerror(errno));
exit(1);
}
cupsFilePrintf(fp, "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
"<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" "
"\"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n"
"<plist version=\"1.0\">\n"
"<dict>\n"
"\t<key>CFBundleIdentifier</key>\n"
"\t<string>org.cups.docset</string>\n"
"\t<key>CFBundleName</key>\n"
"\t<string>CUPS Documentation</string>\n"
"\t<key>CFBundleVersion</key>\n"
"\t<string>%d.%d.%s</string>\n"
"\t<key>CFBundleShortVersionString</key>\n"
"\t<string>%d.%d.%d</string>\n"
"\t<key>DocSetFeedName</key>\n"
"\t<string>cups.org</string>\n"
"\t<key>DocSetFeedURL</key>\n"
"\t<string>http://www.cups.org/org.cups.docset.atom"
"</string>\n"
"\t<key>DocSetPublisherIdentifier</key>\n"
"\t<string>org.cups</string>\n"
"\t<key>DocSetPublisherName</key>\n"
"\t<string>CUPS</string>\n"
"</dict>\n"
"</plist>\n",
CUPS_VERSION_MAJOR, CUPS_VERSION_MINOR, revision,
CUPS_VERSION_MAJOR, CUPS_VERSION_MINOR, CUPS_VERSION_PATCH);
cupsFileClose(fp);
}
/*
* 'write_nodes()' - Write the Nodes.xml file.
*/
static void
write_nodes(const char *path, /* I - File to write */
help_index_t *hi) /* I - Index of files */
{
cups_file_t *fp; /* Output file */
int id; /* Current node ID */
help_node_t *node; /* Current help node */
int subnodes; /* Currently in Subnodes for file? */
int needclose; /* Need to close the current node? */
if ((fp = cupsFileOpen(path, "w")) == NULL)
{
fprintf(stderr, "makedocset: Unable to create %s: %s\n", path,
strerror(errno));
exit(1);
}
cupsFilePuts(fp, "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
"<DocSetNodes version=\"1.0\">\n"
"<TOC>\n"
"<Node id=\"0\">\n"
"<Name>CUPS Documentation</Name>\n"
"<Path>Documentation/index.html</Path>\n"
"</Node>\n");
for (node = (help_node_t *)cupsArrayFirst(hi->nodes), id = 1, subnodes = 0,
needclose = 0;
node;
node = (help_node_t *)cupsArrayNext(hi->nodes), id ++)
{
if (node->anchor)
{
if (!subnodes)
{
cupsFilePuts(fp, "<Subnodes>\n");
subnodes = 1;
}
cupsFilePrintf(fp, "<Node id=\"%d\">\n"
"<Path>Documentation/%s</Path>\n"
"<Anchor>%s</Anchor>\n"
"<Name>%s</Name>\n"
"</Node>\n", id, node->filename, node->anchor,
node->text);
}
else
{
if (subnodes)
{
cupsFilePuts(fp, "</Subnodes>\n");
subnodes = 0;
}
if (needclose)
cupsFilePuts(fp, "</Node>\n");
cupsFilePrintf(fp, "<Node id=\"%d\">\n"
"<Path>Documentation/%s</Path>\n"
"<Name>%s</Name>\n", id, node->filename, node->text);
needclose = 1;
}
}
if (subnodes)
cupsFilePuts(fp, "</Subnodes>\n");
if (needclose)
cupsFilePuts(fp, "</Node>\n");
cupsFilePuts(fp, "</TOC>\n"
"</DocSetNodes>\n");
cupsFileClose(fp);
}
+143 -223
Ver Arquivo
@@ -1,23 +1,14 @@
/*
* "$Id$"
* Printer status CGI for CUPS.
*
* Printer status CGI for the Common UNIX Printing System (CUPS).
* Copyright 2007-2016 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products.
*
* Copyright 2007 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.
* print_command() - Send a print command to the printer.
* show_all_printers() - Show all printers...
* show_printer() - Show a single printer.
* 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/".
*/
/*
@@ -32,9 +23,10 @@
* Local functions...
*/
void print_command(http_t *http, const char *printer, const char *command);
void show_all_printers(http_t *http, const char *username);
void show_printer(http_t *http, const char *printer);
static void do_printer_op(http_t *http, const char *printer, ipp_op_t op,
const char *title);
static void show_all_printers(http_t *http, const char *username);
static void show_printer(http_t *http, const char *printer);
/*
@@ -42,8 +34,7 @@ void show_printer(http_t *http, const char *printer);
*/
int /* O - Exit status */
main(int argc, /* I - Number of command-line arguments */
char *argv[]) /* I - Command-line arguments */
main(void)
{
const char *printer; /* Printer name */
const char *user; /* Username */
@@ -72,6 +63,7 @@ main(int argc, /* I - Number of command-line arguments */
*/
cgiSetVariable("SECTION", "printers");
cgiSetVariable("REFRESH_PAGE", "");
/*
* See if we are displaying a printer or all printers...
@@ -83,6 +75,9 @@ main(int argc, /* I - Number of command-line arguments */
if (!*printer)
printer = NULL;
if (printer)
cgiSetVariable("PRINTER_NAME", printer);
}
/*
@@ -101,7 +96,7 @@ main(int argc, /* I - Number of command-line arguments */
* Get the default printer...
*/
if (!op)
if (!op || !cgiIsPOST())
{
/*
* Get the default destination...
@@ -141,25 +136,62 @@ main(int argc, /* I - Number of command-line arguments */
else
show_printer(http, printer);
}
else if (!strcasecmp(op, "print-self-test-page") && printer)
print_command(http, printer, "PrintSelfTestPage");
else if (!strcasecmp(op, "clean-print-heads") && printer)
print_command(http, printer, "Clean all");
else if (!strcasecmp(op, "print-test-page") && printer)
cgiPrintTestPage(http, printer);
else if (!strcasecmp(op, "move-jobs") && printer)
cgiMoveJobs(http, printer, 0);
else if (printer)
{
if (!*op)
{
const char *server_port = getenv("SERVER_PORT");
/* Port number string */
int port = atoi(server_port ? server_port : "0");
/* Port number */
char uri[1024]; /* URL */
httpAssembleURIf(HTTP_URI_CODING_ALL, uri, sizeof(uri),
getenv("HTTPS") ? "https" : "http", NULL,
getenv("SERVER_NAME"), port, "/printers/%s", printer);
printf("Location: %s\n\n", uri);
}
else if (!strcmp(op, "start-printer"))
do_printer_op(http, printer, IPP_RESUME_PRINTER,
cgiText(_("Resume Printer")));
else if (!strcmp(op, "stop-printer"))
do_printer_op(http, printer, IPP_PAUSE_PRINTER,
cgiText(_("Pause Printer")));
else if (!strcmp(op, "accept-jobs"))
do_printer_op(http, printer, CUPS_ACCEPT_JOBS, cgiText(_("Accept Jobs")));
else if (!strcmp(op, "reject-jobs"))
do_printer_op(http, printer, CUPS_REJECT_JOBS, cgiText(_("Reject Jobs")));
else if (!strcmp(op, "cancel-jobs"))
do_printer_op(http, printer, IPP_OP_CANCEL_JOBS, cgiText(_("Cancel Jobs")));
else if (!_cups_strcasecmp(op, "print-self-test-page"))
cgiPrintCommand(http, printer, "PrintSelfTestPage",
cgiText(_("Print Self-Test Page")));
else if (!_cups_strcasecmp(op, "clean-print-heads"))
cgiPrintCommand(http, printer, "Clean all",
cgiText(_("Clean Print Heads")));
else if (!_cups_strcasecmp(op, "print-test-page"))
cgiPrintTestPage(http, printer);
else if (!_cups_strcasecmp(op, "move-jobs"))
cgiMoveJobs(http, printer, 0);
else
{
/*
* Unknown/bad operation...
*/
cgiStartHTML(printer);
cgiCopyTemplateLang("error-op.tmpl");
cgiEndHTML();
}
}
else
{
/*
* Unknown/bad operation...
*/
if (printer)
cgiStartHTML(printer);
else
cgiStartHTML(cgiText(_("Printers")));
cgiStartHTML(cgiText(_("Printers")));
cgiCopyTemplateLang("error-op.tmpl");
cgiEndHTML();
}
@@ -179,117 +211,80 @@ main(int argc, /* I - Number of command-line arguments */
/*
* 'print_command()' - Send a print command to the printer.
* 'do_printer_op()' - Do a printer operation.
*/
void
print_command(http_t *http, /* I - Connection to server */
const char *printer, /* I - Printer */
const char *command) /* I - Command to send */
static void
do_printer_op(http_t *http, /* I - HTTP connection */
const char *printer, /* I - Printer name */
ipp_op_t op, /* I - Operation to perform */
const char *title) /* I - Title of page */
{
cups_file_t *fp; /* File pointer */
char filename[1024]; /* Temporary file */
ipp_t *request, /* IPP request */
*response; /* IPP response */
ipp_t *request; /* IPP request */
char uri[HTTP_MAX_URI], /* Printer URI */
resource[1024], /* POST resource path */
refresh[1024]; /* Refresh URL */
const char *user; /* Username */
resource[HTTP_MAX_URI]; /* Path for request */
/*
* See who is logged in...
*/
if ((user = getenv("REMOTE_USER")) == NULL)
user = "guest";
/*
* Create the CUPS command file to print...
*/
if ((fp = cupsTempFile2(filename, sizeof(filename))) == NULL)
{
cgiStartHTML(cgiText(_("Printer Maintenance")));
cgiSetVariable("MESSAGE", _("Unable to create temporary file:"));
cgiSetVariable("ERROR", strerror(errno));
cgiCopyTemplateLang("error.tmpl");
cgiEndHTML();
return;
}
cupsFilePuts(fp, "#CUPS-COMMAND\n");
cupsFilePrintf(fp, "%s\n", command);
cupsFileClose(fp);
/*
* Point to the printer...
*/
snprintf(resource, sizeof(resource), "/printers/%s", printer);
httpAssembleURIf(HTTP_URI_CODING_ALL, uri, sizeof(uri), "ipp", NULL,
"localhost", ippPort(), "/printers/%s", printer);
/*
* Build an IPP_PRINT_JOB request, which requires the following
* Build a printer request, which requires the following
* attributes:
*
* attributes-charset
* attributes-natural-language
* printer-uri
* requesting-user-name
* document-format
*/
request = ippNewRequest(IPP_PRINT_JOB);
request = ippNewRequest(op);
httpAssembleURIf(HTTP_URI_CODING_ALL, uri, sizeof(uri), "ipp", NULL,
"localhost", 0, "/printers/%s", printer);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
NULL, uri);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME,
"requesting-user-name", NULL, user);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "job-name",
NULL, "Printer Maintenance");
ippAddString(request, IPP_TAG_JOB, IPP_TAG_MIMETYPE, "document-format",
NULL, "application/postscript");
/*
* Do the request and get back a response...
*/
if ((response = cupsDoFileRequest(http, request, resource,
filename)) != NULL)
snprintf(resource, sizeof(resource), "/printers/%s", printer);
ippDelete(cupsDoRequest(http, request, resource));
if (cupsLastError() == IPP_NOT_AUTHORIZED)
{
cgiSetIPPVars(response, NULL, NULL, NULL, 0);
ippDelete(response);
puts("Status: 401\n");
exit(0);
}
unlink(filename);
if (cupsLastError() <= IPP_OK_CONFLICT)
else if (cupsLastError() > IPP_OK_CONFLICT)
{
/*
* Automatically reload the printer status page...
*/
cgiFormEncode(uri, resource, sizeof(uri));
snprintf(refresh, sizeof(refresh), "2;URL=%s", uri);
cgiSetVariable("refresh_page", refresh);
cgiStartHTML(title);
cgiShowIPPError(_("Unable to do maintenance command"));
}
cgiStartHTML(cgiText(_("Printer Maintenance")));
if (cupsLastError() > IPP_OK_CONFLICT)
cgiShowIPPError(_("Unable to send maintenance job:"));
else
{
cgiSetVariable("PRINTER_NAME", printer);
/*
* Redirect successful updates back to the printer page...
*/
cgiCopyTemplateLang("maintenance.tmpl");
char url[1024], /* Printer/class URL */
refresh[1024]; /* Refresh URL */
cgiRewriteURL(uri, url, sizeof(url), NULL);
cgiFormEncode(uri, url, sizeof(uri));
snprintf(refresh, sizeof(refresh), "5;URL=%s", uri);
cgiSetVariable("refresh_page", refresh);
cgiStartHTML(title);
if (op == IPP_PAUSE_PRINTER)
cgiCopyTemplateLang("printer-stop.tmpl");
else if (op == IPP_RESUME_PRINTER)
cgiCopyTemplateLang("printer-start.tmpl");
else if (op == CUPS_ACCEPT_JOBS)
cgiCopyTemplateLang("printer-accept.tmpl");
else if (op == CUPS_REJECT_JOBS)
cgiCopyTemplateLang("printer-reject.tmpl");
else if (op == IPP_OP_CANCEL_JOBS)
cgiCopyTemplateLang("printer-cancel-jobs.tmpl");
}
cgiEndHTML();
@@ -300,7 +295,7 @@ print_command(http_t *http, /* I - Connection to server */
* 'show_all_printers()' - Show all printers...
*/
void
static void
show_all_printers(http_t *http, /* I - Connection to server */
const char *user) /* I - Username */
{
@@ -308,16 +303,12 @@ show_all_printers(http_t *http, /* I - Connection to server */
ipp_t *request, /* IPP request */
*response; /* IPP response */
cups_array_t *printers; /* Array of printer objects */
ipp_attribute_t *printer, /* Printer object */
*attr; /* Current attribute */
int ascending, /* Order of printers (0 = descending) */
first, /* First printer to show */
ipp_attribute_t *printer; /* Printer object */
int first, /* First printer to show */
count; /* Number of printers */
const char *var; /* Form variable */
void *search; /* Search data */
char url[1024], /* URL for prev/next/this */
*urlptr, /* Position in URL */
*urlend; /* End of URL */
char val[1024]; /* Form variable */
fprintf(stderr, "DEBUG: show_all_printers(http=%p, user=\"%s\")\n",
@@ -363,7 +354,8 @@ show_all_printers(http_t *http, /* I - Connection to server */
* Get a list of matching job objects.
*/
if ((var = cgiGetVariable("QUERY")) != NULL)
if ((var = cgiGetVariable("QUERY")) != NULL &&
!cgiGetVariable("CLEAR"))
search = cgiCompileSearch(var);
else
search = NULL;
@@ -391,95 +383,36 @@ show_all_printers(http_t *http, /* I - Connection to server */
if (first < 0)
first = 0;
sprintf(url, "%d", count);
cgiSetVariable("TOTAL", url);
sprintf(val, "%d", count);
cgiSetVariable("TOTAL", val);
if ((var = cgiGetVariable("ORDER")) != NULL)
ascending = !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);
cgiSetArray("cupscommand", i, "0");
for (attr = printer; attr; attr = attr->next)
if (attr->group_tag != IPP_TAG_PRINTER || !attr->name)
break;
else if (!strcmp(attr->name, "printer-type"))
{
if (attr->values[0].integer & CUPS_PRINTER_COMMANDS)
cgiSetArray("cupscommand", i, "1");
break;
}
}
}
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);
cgiSetArray("cupscommand", i, "0");
for (attr = printer; attr; attr = attr->next)
if (attr->group_tag == IPP_TAG_ZERO || !attr->name)
break;
else if (!strcmp(attr->name, "printer-type"))
{
if (attr->values[0].integer & CUPS_PRINTER_COMMANDS)
cgiSetArray("cupscommand", i, "1");
break;
}
}
}
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);
/*
* Save navigation URLs...
*/
urlend = url + sizeof(url);
if ((var = cgiGetVariable("QUERY")) != NULL)
{
strlcpy(url, "/printers/?QUERY=", sizeof(url));
urlptr = url + strlen(url);
cgiFormEncode(urlptr, var, urlend - urlptr);
urlptr += strlen(urlptr);
strlcpy(urlptr, "&", urlend - urlptr);
urlptr += strlen(urlptr);
}
else
{
strlcpy(url, "/printers/?", sizeof(url));
urlptr = url + strlen(url);
}
snprintf(urlptr, urlend - urlptr, "FIRST=%d", first);
cgiSetVariable("THISURL", url);
cgiSetVariable("THISURL", "/printers/");
if (first > 0)
{
snprintf(urlptr, urlend - urlptr, "FIRST=%d&ORDER=%s",
first - CUPS_PAGE_MAX, ascending ? "asc" : "dec");
cgiSetVariable("PREVURL", url);
sprintf(val, "%d", first - CUPS_PAGE_MAX);
cgiSetVariable("PREV", val);
}
if ((first + CUPS_PAGE_MAX) < count)
{
snprintf(urlptr, urlend - urlptr, "FIRST=%d&ORDER=%s",
first + CUPS_PAGE_MAX, ascending ? "asc" : "dec");
cgiSetVariable("NEXTURL", url);
sprintf(val, "%d", first + CUPS_PAGE_MAX);
cgiSetVariable("NEXT", val);
}
if (count > CUPS_PAGE_MAX)
{
snprintf(val, sizeof(val), "%d", CUPS_PAGE_MAX * (count / CUPS_PAGE_MAX));
cgiSetVariable("LAST", val);
}
/*
@@ -490,12 +423,12 @@ show_all_printers(http_t *http, /* I - Connection to server */
cgiCopyTemplateLang("printers-header.tmpl");
if (count > 0)
if (count > CUPS_PAGE_MAX)
cgiCopyTemplateLang("pager.tmpl");
cgiCopyTemplateLang("printers.tmpl");
if (count > 0)
if (count > CUPS_PAGE_MAX)
cgiCopyTemplateLang("pager.tmpl");
/*
@@ -511,7 +444,7 @@ show_all_printers(http_t *http, /* I - Connection to server */
* Show the error...
*/
cgiShowIPPError(_("Unable to get printer list:"));
cgiShowIPPError(_("Unable to get printer list"));
}
cgiEndHTML();
@@ -522,7 +455,7 @@ show_all_printers(http_t *http, /* I - Connection to server */
* 'show_printer()' - Show a single printer.
*/
void
static void
show_printer(http_t *http, /* I - Connection to server */
const char *printer) /* I - Name of printer */
{
@@ -552,7 +485,7 @@ show_printer(http_t *http, /* I - Connection to server */
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri", NULL,
uri);
cgiGetAttributes(request, "printers.tmpl");
cgiGetAttributes(request, "printer.tmpl");
/*
* Do the request and get back a response...
@@ -567,14 +500,6 @@ show_printer(http_t *http, /* I - Connection to server */
cgiSetIPPVars(response, NULL, NULL, NULL, 0);
if ((attr = ippFindAttribute(response, "printer-type",
IPP_TAG_ENUM)) != NULL)
{
cgiSetVariable("cupscommand",
(attr->values[0].integer & CUPS_PRINTER_COMMANDS) ?
"1" : "0");
}
if (printer && (attr = ippFindAttribute(response, "printer-state",
IPP_TAG_ENUM)) != NULL &&
attr->values[0].integer == IPP_PRINTER_PROCESSING)
@@ -605,7 +530,7 @@ show_printer(http_t *http, /* I - Connection to server */
* Show the printer status...
*/
cgiCopyTemplateLang("printers.tmpl");
cgiCopyTemplateLang("printer.tmpl");
/*
* Show jobs for the specified printer...
@@ -621,13 +546,8 @@ show_printer(http_t *http, /* I - Connection to server */
*/
cgiStartHTML(printer);
cgiShowIPPError(_("Unable to get printer status:"));
cgiShowIPPError(_("Unable to get printer status"));
}
cgiEndHTML();
}
/*
* End of "$Id$".
*/
+44 -37
Ver Arquivo
@@ -1,22 +1,14 @@
/*
* "$Id$"
* Search routines for CUPS.
*
* Search routines for the Common UNIX Printing System (CUPS).
* Copyright 2007-2014 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products.
*
* Copyright 2007 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:
*
* cgiCompileSearch() - Compile a search string.
* cgiDoSearch() - Do a search of some text.
* cgiFreeSearch() - Free a compiled search context.
* 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/".
*/
/*
@@ -38,22 +30,30 @@ cgiCompileSearch(const char *query) /* I - Query string */
char *s, /* Regular expression string */
*sptr, /* Pointer into RE string */
*sword; /* Pointer to start of word */
int slen; /* Allocated size of RE string */
size_t slen; /* Allocated size of RE string */
const char *qptr, /* Pointer into query string */
*qend; /* End of current word */
const char *prefix; /* Prefix to add to next word */
int quoted; /* Word is quoted */
int wlen; /* Word length */
size_t wlen; /* Word length */
char *lword; /* Last word in query */
DEBUG_printf(("help_compile_search(query=\"%s\")\n", query ? query : "(nil)"));
DEBUG_printf(("cgiCompileSearch(query=\"%s\")\n", query));
/*
* Range check input...
*/
if (!query)
return (NULL);
/*
* Allocate a regular expression storage structure...
*/
re = (regex_t *)calloc(1, sizeof(regex_t));
if ((re = (regex_t *)calloc(1, sizeof(regex_t))) == NULL)
return (NULL);
/*
* Allocate a buffer to hold the regular expression string, starting
@@ -65,7 +65,11 @@ cgiCompileSearch(const char *query) /* I - Query string */
if (slen < 1024)
slen = 1024;
s = (char *)malloc(slen);
if ((s = (char *)malloc(slen)) == NULL)
{
free(re);
return (NULL);
}
/*
* Copy the query string to the regular expression, handling basic
@@ -127,13 +131,13 @@ cgiCompileSearch(const char *query) /* I - Query string */
for (qend = qptr + 1; *qend && !isspace(*qend); qend ++);
}
wlen = qend - qptr;
wlen = (size_t)(qend - qptr);
/*
* Look for logic words: AND, OR
*/
if (wlen == 3 && !strncasecmp(qptr, "AND", 3))
if (wlen == 3 && !_cups_strncasecmp(qptr, "AND", 3))
{
/*
* Logical AND with the following text...
@@ -144,7 +148,7 @@ cgiCompileSearch(const char *query) /* I - Query string */
qptr = qend;
}
else if (wlen == 2 && !strncasecmp(qptr, "OR", 2))
else if (wlen == 2 && !_cups_strncasecmp(qptr, "OR", 2))
{
/*
* Logical OR with the following text...
@@ -162,7 +166,9 @@ cgiCompileSearch(const char *query) /* I - Query string */
* string + RE overhead...
*/
wlen = (sptr - s) + 4 * wlen + 2 * strlen(prefix) + 4;
wlen = (size_t)(sptr - s) + 2 * 4 * wlen + 2 * strlen(prefix) + 11;
if (lword)
wlen += strlen(lword);
if (wlen > slen)
{
@@ -194,7 +200,7 @@ cgiCompileSearch(const char *query) /* I - Query string */
* Add the prefix string...
*/
strcpy(sptr, prefix);
memcpy(sptr, prefix, strlen(prefix) + 1);
sptr += strlen(sptr);
/*
@@ -227,18 +233,24 @@ cgiCompileSearch(const char *query) /* I - Query string */
char *lword2; /* New "last word" */
lword2 = strdup(sword);
if ((lword2 = strdup(sword)) == NULL)
{
free(lword);
free(s);
free(re);
return (NULL);
}
strcpy(sptr, ".*|.*");
memcpy(sptr, ".*|.*", 6);
sptr += 5;
strcpy(sptr, lword2);
memcpy(sptr, lword2, strlen(lword2) + 1);
sptr += strlen(sptr);
strcpy(sptr, ".*");
memcpy(sptr, ".*", 3);
sptr += 2;
strcpy(sptr, lword);
memcpy(sptr, lword, strlen(lword) + 1);
sptr += strlen(sptr);
free(lword);
@@ -267,7 +279,7 @@ cgiCompileSearch(const char *query) /* I - Query string */
free(lword);
if (sptr > s)
strcpy(sptr, ".*");
memcpy(sptr, ".*", 3);
else
{
/*
@@ -354,8 +366,3 @@ cgiFreeSearch(void *search) /* I - Search context */
{
regfree((regex_t *)search);
}
/*
* End of "$Id$".
*/
+93 -77
Ver Arquivo
@@ -1,31 +1,19 @@
/*
* "$Id$"
* CGI template function.
*
* CGI template function.
* Copyright 2007-2015 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products.
*
* Copyright 2007 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:
*
* cgiCopyTemplateFile() - Copy a template file and replace all the
* '{variable}' strings with the variable value.
* cgiCopyTemplateLang() - Copy a template file using a language...
* cgiGetTemplateDir() - Get the templates directory...
* cgiSetServerVersion() - Set the server name and CUPS version...
* cgi_copy() - Copy the template file, substituting as needed...
* cgi_puts() - Put a string to the output file, quoting as
* needed...
* 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 "cgi-private.h"
#include <errno.h>
#include <regex.h>
/*
@@ -53,6 +41,13 @@ cgiCopyTemplateFile(FILE *out, /* I - Output file */
fprintf(stderr, "DEBUG2: cgiCopyTemplateFile(out=%p, tmpl=\"%s\")\n", out,
tmpl ? tmpl : "(null)");
/*
* Range check input...
*/
if (!tmpl || !out)
return;
/*
* Open the template file...
*/
@@ -111,7 +106,7 @@ cgiCopyTemplateLang(const char *tmpl) /* I - Base filename */
*locptr = '\0'; /* Strip charset */
}
fprintf(stderr, "DEBUG: lang=\"%s\", locale=\"%s\"...\n",
fprintf(stderr, "DEBUG2: lang=\"%s\", locale=\"%s\"...\n",
lang ? lang : "(null)", locale);
/*
@@ -229,6 +224,7 @@ cgi_copy(FILE *out, /* I - Output file */
compare[1024]; /* Comparison string */
int result; /* Result of comparison */
int uriencode; /* Encode as URI */
regex_t re; /* Regular expression to match */
fprintf(stderr, "DEBUG2: %*sStarting at file position %ld...\n", indent, "",
@@ -250,14 +246,14 @@ cgi_copy(FILE *out, /* I - Output file */
uriencode = 0;
for (s = name; (ch = getc(in)) != EOF;)
if (strchr("}]<>=! \t\n", ch))
if (strchr("}]<>=!~ \t\n", ch))
break;
else if (s == name && ch == '%')
uriencode = 1;
else if (s > name && ch == '?')
break;
else if (s < (name + sizeof(name) - 1))
*s++ = ch;
*s++ = (char)ch;
*s = '\0';
@@ -360,6 +356,20 @@ cgi_copy(FILE *out, /* I - Output file */
continue;
}
else if (name[0] == '$')
{
/*
* Insert cookie value or nothing if not defined.
*/
if ((value = cgiGetCookie(name + 1)) != NULL)
outptr = value;
else
{
outval[0] = '\0';
outptr = outval;
}
}
else
{
/*
@@ -400,7 +410,7 @@ cgi_copy(FILE *out, /* I - Output file */
{
if (uriencode)
cgi_puturi(outptr, out);
else if (!strcasecmp(name, "?cupsdconf_default"))
else if (!_cups_strcasecmp(name, "?cupsdconf_default"))
fputs(outptr, stdout);
else
cgi_puts(outptr, out);
@@ -417,9 +427,10 @@ cgi_copy(FILE *out, /* I - Output file */
* {name<value?true:false} Less than
* {name>value?true:false} Greater than
* {name!value?true:false} Not equal
* {name~refex?true:false} Regex match
*/
op = ch;
op = (char)ch;
if (ch == '?')
{
@@ -427,7 +438,14 @@ cgi_copy(FILE *out, /* I - Output file */
* Test for existance...
*/
result = cgiGetArray(name, element) != NULL && outptr[0];
if (name[0] == '?')
result = cgiGetArray(name + 1, element) != NULL;
else if (name[0] == '#')
result = cgiGetVariable(name + 1) != NULL;
else
result = cgiGetArray(name, element) != NULL;
result = result && outptr[0];
compare[0] = '\0';
}
else
@@ -455,7 +473,7 @@ cgi_copy(FILE *out, /* I - Output file */
innerptr = innername;
while ((ch = getc(in)) != EOF && ch != '}')
if (innerptr < (innername + sizeof(innername) - 1))
*innerptr++ = ch;
*innerptr++ = (char)ch;
*innerptr = '\0';
if (innername[0] == '#')
@@ -467,26 +485,26 @@ cgi_copy(FILE *out, /* I - Output file */
if ((innerval = cgiGetArray(innername, atoi(innerptr) - 1)) == NULL)
*s = '\0';
else
strlcpy(s, innerval, sizeof(compare) - (s - compare));
strlcpy(s, innerval, sizeof(compare) - (size_t)(s - compare));
}
else if (innername[0] == '?')
{
if ((innerval = cgiGetArray(innername + 1, element)) == NULL)
*s = '\0';
else
strlcpy(s, innerval, sizeof(compare) - (s - compare));
strlcpy(s, innerval, sizeof(compare) - (size_t)(s - compare));
}
else if ((innerval = cgiGetArray(innername, element)) == NULL)
snprintf(s, sizeof(compare) - (s - compare), "{%s}", innername);
snprintf(s, sizeof(compare) - (size_t)(s - compare), "{%s}", innername);
else
strlcpy(s, innerval, sizeof(compare) - (s - compare));
strlcpy(s, innerval, sizeof(compare) - (size_t)(s - compare));
s += strlen(s);
}
else if (ch == '\\')
*s++ = getc(in);
*s++ = (char)getc(in);
else
*s++ = ch;
*s++ = (char)ch;
*s = '\0';
@@ -505,16 +523,49 @@ cgi_copy(FILE *out, /* I - Output file */
switch (op)
{
case '<' :
result = strcasecmp(outptr, compare) < 0;
result = _cups_strcasecmp(outptr, compare) < 0;
break;
case '>' :
result = strcasecmp(outptr, compare) > 0;
result = _cups_strcasecmp(outptr, compare) > 0;
break;
case '=' :
result = strcasecmp(outptr, compare) == 0;
result = _cups_strcasecmp(outptr, compare) == 0;
break;
case '!' :
result = strcasecmp(outptr, compare) != 0;
result = _cups_strcasecmp(outptr, compare) != 0;
break;
case '~' :
fprintf(stderr, "DEBUG: Regular expression \"%s\"\n", compare);
if (regcomp(&re, compare, REG_EXTENDED | REG_ICASE))
{
fprintf(stderr,
"ERROR: Unable to compile regular expression \"%s\"!\n",
compare);
result = 0;
}
else
{
regmatch_t matches[10];
result = 0;
if (!regexec(&re, outptr, 10, matches, 0))
{
int i;
for (i = 0; i < 10; i ++)
{
fprintf(stderr, "DEBUG: matches[%d].rm_so=%d\n", i,
(int)matches[i].rm_so);
if (matches[i].rm_so < 0)
break;
result ++;
}
}
regfree(&re);
}
break;
default :
result = 1;
@@ -595,43 +646,13 @@ cgi_puts(const char *s, /* I - String to output */
while (*s)
{
if (*s == '<')
{
/*
* Pass <A HREF="url"> and </A>, otherwise quote it...
*/
if (!strncasecmp(s, "<A HREF=\"", 9))
{
fputs("<A HREF=\"", out);
s += 9;
while (*s && *s != '\"')
{
if (*s == '&')
fputs("&amp;", out);
else
putc(*s, out);
s ++;
}
if (*s)
s ++;
fputs("\">", out);
}
else if (!strncasecmp(s, "</A>", 4))
{
fputs("</A>", out);
s += 3;
}
else
fputs("&lt;", out);
}
fputs("&lt;", out);
else if (*s == '>')
fputs("&gt;", out);
else if (*s == '\"')
fputs("&quot;", out);
else if (*s == '\'')
fputs("&#39;", out);
else if (*s == '&')
fputs("&amp;", out);
else
@@ -652,7 +673,7 @@ cgi_puturi(const char *s, /* I - String to output */
{
while (*s)
{
if (strchr("%&+ <>#=", *s) || *s & 128)
if (strchr("%@&+ <>#=", *s) || *s < ' ' || *s & 128)
fprintf(out, "%%%02X", *s & 255);
else
putc(*s, out);
@@ -660,8 +681,3 @@ cgi_puturi(const char *s, /* I - String to output */
s ++;
}
}
/*
* End of "$Id$".
*/
+10 -23
Ver Arquivo
@@ -1,21 +1,14 @@
/*
* "$Id$"
* CGI test program for CUPS.
*
* CGI test program for the Common UNIX Printing System (CUPS).
* Copyright 2007-2014 by Apple Inc.
* Copyright 1997-2005 by Easy Software Products.
*
* Copyright 2007 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
* 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...
* 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/".
*/
/*
@@ -30,8 +23,7 @@
*/
int /* O - Exit status */
main(int argc, /* I - Number of command-line arguments */
char *argv[]) /* I - Command-line arguments */
main(void)
{
/*
* Test file upload/multi-part submissions...
@@ -61,15 +53,10 @@ main(int argc, /* I - Number of command-line arguments */
}
else
puts("FAIL (init)");
/*
* Return with no errors...
*/
return (0);
}
/*
* End of "$Id$".
*/
+8 -20
Ver Arquivo
@@ -1,21 +1,14 @@
/*
* "$Id$"
* Help index test program for CUPS.
*
* Help index test program for the Common UNIX Printing System (CUPS).
* Copyright 2007-2011 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products.
*
* Copyright 2007 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...
* 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/".
*/
/*
@@ -106,8 +99,3 @@ list_nodes(const char *title, /* I - Title string */
printf(" (%d words)\n", cupsArrayCount(node->words));
}
}
/*
* End of "$Id$".
*/
+8 -19
Ver Arquivo
@@ -1,20 +1,14 @@
/*
* "$Id$"
* CGI template test program for CUPS.
*
* CGI template test program for the Common UNIX Printing System (CUPS).
* Copyright 2007-2011 by Apple Inc.
* Copyright 2006 by Easy Software Products.
*
* Copyright 2007 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.
* 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/".
*/
/*
@@ -96,8 +90,3 @@ main(int argc, /* I - Number of command-line arguments */
return (0);
}
/*
* End of "$Id$".
*/
+391 -119
Ver Arquivo
@@ -1,44 +1,31 @@
/*
* "$Id$"
* CGI form variable and array functions for CUPS.
*
* CGI form variable and array functions.
* Copyright 2007-2015 by Apple Inc.
* Copyright 1997-2005 by Easy Software Products.
*
* Copyright 2007 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
* file is missing or damaged, see the license at "http://www.cups.org/".
*
* Contents:
*
* cgiCheckVariables() - Check for the presence of "required" variables.
* cgiGetArray() - Get an element from a form array...
* cgiGetFile() - Get the file (if any) that was submitted in the form.
* cgiGetSize() - Get the size of a form array value.
* cgiGetVariable() - Get a CGI variable from the database...
* cgiInitialize() - Initialize the CGI variable "database"...
* cgiIsPOST() - Determine whether this page was POSTed.
* cgiSetArray() - Set array element N to the specified string.
* cgiSetSize() - Set the array size.
* cgiSetVariable() - Set a CGI variable in the database...
* cgi_add_variable() - Add a form variable.
* cgi_compare_variables() - Compare two variables.
* cgi_find_variable() - Find a variable...
* cgi_initialize_get() - Initialize form variables using the GET method.
* cgi_initialize_multipart() - Initialize variables and file using the POST method.
* cgi_initialize_post() - Initialize variables using the POST method.
* cgi_initialize_string() - Initialize form variables from a string.
* cgi_passwd() - Catch authentication requests and notify the server.
* cgi_sort_variables() - Sort all form variables for faster lookup.
* cgi_unlink_file() - Remove the uploaded form.
* 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 necessary headers...
*/
/*#define DEBUG*/
#include "cgi-private.h"
#include <errno.h>
#include <cups/http.h>
#include <cups/md5-private.h>
/*
* Session ID name
*/
#define CUPS_SID "org.cups.sid"
/*
@@ -58,6 +45,8 @@ typedef struct /**** Form variable structure ****/
* Local globals...
*/
static int num_cookies = 0;/* Number of cookies */
static cups_option_t *cookies = NULL;/* Cookies */
static int form_count = 0, /* Form variable count */
form_alloc = 0; /* Number of variables allocated */
static _cgi_var_t *form_vars = NULL;
@@ -75,11 +64,13 @@ static void cgi_add_variable(const char *name, int element,
static int cgi_compare_variables(const _cgi_var_t *v1,
const _cgi_var_t *v2);
static _cgi_var_t *cgi_find_variable(const char *name);
static void cgi_initialize_cookies(void);
static int cgi_initialize_get(void);
static int cgi_initialize_multipart(const char *boundary);
static int cgi_initialize_post(void);
static int cgi_initialize_string(const char *data);
static const char *cgi_passwd(const char *prompt);
static const char *cgi_set_sid(void);
static void cgi_sort_variables(void);
static void cgi_unlink_file(void);
@@ -135,7 +126,34 @@ cgiCheckVariables(const char *names) /* I - Variables to look for */
/*
* 'cgiGetArray()' - Get an element from a form array...
* 'cgiClearVariables()' - Clear all form variables.
*/
void
cgiClearVariables(void)
{
int i, j; /* Looping vars */
_cgi_var_t *v; /* Current variable */
fputs("DEBUG: cgiClearVariables called.\n", stderr);
for (v = form_vars, i = form_count; i > 0; v ++, i --)
{
_cupsStrFree(v->name);
for (j = 0; j < v->nvalues; j ++)
if (v->values[j])
_cupsStrFree(v->values[j]);
}
form_count = 0;
cgi_unlink_file();
}
/*
* 'cgiGetArray()' - Get an element from a form array.
*/
const char * /* O - Element value or NULL */
@@ -148,13 +166,21 @@ cgiGetArray(const char *name, /* I - Name of array variable */
if ((var = cgi_find_variable(name)) == NULL)
return (NULL);
if (var->nvalues == 1)
return (var->values[0]);
if (element < 0 || element >= var->nvalues)
return (NULL);
return (var->values[element]);
return (_cupsStrRetain(var->values[element]));
}
/*
* 'cgiGetCookie()' - Get a cookie value.
*/
const char * /* O - Value or NULL */
cgiGetCookie(const char *name) /* I - Name of cookie */
{
return (cupsGetOption(name, num_cookies, cookies));
}
@@ -187,10 +213,10 @@ cgiGetSize(const char *name) /* I - Name of variable */
/*
* 'cgiGetVariable()' - Get a CGI variable from the database...
* 'cgiGetVariable()' - Get a CGI variable from the database.
*
* Returns NULL if the variable doesn't exist. If the variable is an
* array of values, returns the last element...
* array of values, returns the last element.
*/
const char * /* O - Value of variable */
@@ -203,25 +229,27 @@ cgiGetVariable(const char *name) /* I - Name of variable */
#ifdef DEBUG
if (var == NULL)
printf("cgiGetVariable(\"%s\") is returning NULL...\n", name);
DEBUG_printf(("cgiGetVariable(\"%s\") is returning NULL...\n", name));
else
printf("cgiGetVariable(\"%s\") is returning \"%s\"...\n", name,
var->values[var->nvalues - 1]);
DEBUG_printf(("cgiGetVariable(\"%s\") is returning \"%s\"...\n", name,
var->values[var->nvalues - 1]));
#endif /* DEBUG */
return ((var == NULL) ? NULL : var->values[var->nvalues - 1]);
return ((var == NULL) ? NULL : _cupsStrRetain(var->values[var->nvalues - 1]));
}
/*
* 'cgiInitialize()' - Initialize the CGI variable "database"...
* 'cgiInitialize()' - Initialize the CGI variable "database".
*/
int /* O - Non-zero if there was form data */
cgiInitialize(void)
{
const char *method; /* Form posting method */
const char *content_type; /* Content-Type of post data */
const char *method, /* Form posting method */
*content_type, /* Content-Type of post data */
*cups_sid_cookie, /* SID cookie */
*cups_sid_form; /* SID form variable */
/*
@@ -242,9 +270,22 @@ cgiInitialize(void)
*/
setbuf(stdout, NULL);
puts("Content-type: text/plain\n");
#endif /* DEBUG */
/*
* Get cookies...
*/
cgi_initialize_cookies();
if ((cups_sid_cookie = cgiGetCookie(CUPS_SID)) == NULL)
{
fputs("DEBUG: " CUPS_SID " cookie not found, initializing!\n", stderr);
cups_sid_cookie = cgi_set_sid();
}
fprintf(stderr, "DEBUG: " CUPS_SID " cookie is \"%s\"\n", cups_sid_cookie);
/*
* Get the request method (GET or POST)...
*/
@@ -258,9 +299,9 @@ cgiInitialize(void)
* Grab form data from the corresponding location...
*/
if (!strcasecmp(method, "GET"))
if (!_cups_strcasecmp(method, "GET"))
return (cgi_initialize_get());
else if (!strcasecmp(method, "POST") && content_type)
else if (!_cups_strcasecmp(method, "POST") && content_type)
{
const char *boundary = strstr(content_type, "boundary=");
@@ -268,9 +309,27 @@ cgiInitialize(void)
boundary += 9;
if (content_type && !strncmp(content_type, "multipart/form-data; ", 21))
return (cgi_initialize_multipart(boundary));
{
if (!cgi_initialize_multipart(boundary))
return (0);
}
else if (!cgi_initialize_post())
return (0);
if ((cups_sid_form = cgiGetVariable(CUPS_SID)) == NULL ||
strcmp(cups_sid_cookie, cups_sid_form))
{
if (cups_sid_form)
fprintf(stderr, "DEBUG: " CUPS_SID " form variable is \"%s\"\n",
cups_sid_form);
else
fputs("DEBUG: " CUPS_SID " form variable is not present.\n", stderr);
cgiClearVariables();
return (0);
}
else
return (cgi_initialize_post());
return (1);
}
else
return (0);
@@ -313,6 +372,8 @@ cgiSetArray(const char *name, /* I - Name of variable */
if (name == NULL || value == NULL || element < 0 || element > 100000)
return;
fprintf(stderr, "DEBUG: cgiSetArray: %s[%d]=\"%s\"\n", name, element, value);
if ((var = cgi_find_variable(name)) == NULL)
{
cgi_add_variable(name, element, value);
@@ -322,9 +383,15 @@ cgiSetArray(const char *name, /* I - Name of variable */
{
if (element >= var->avalues)
{
const char **temp; /* Temporary pointer */
temp = (const char **)realloc((void *)(var->values),
sizeof(char *) * (size_t)(element + 16));
if (!temp)
return;
var->avalues = element + 16;
var->values = (const char **)realloc((void *)(var->values),
sizeof(char *) * var->avalues);
var->values = temp;
}
if (element >= var->nvalues)
@@ -335,13 +402,45 @@ cgiSetArray(const char *name, /* I - Name of variable */
var->nvalues = element + 1;
}
else if (var->values[element])
free((char *)var->values[element]);
_cupsStrFree((char *)var->values[element]);
var->values[element] = strdup(value);
var->values[element] = _cupsStrAlloc(value);
}
}
/*
* 'cgiSetCookie()' - Set a cookie value.
*/
void
cgiSetCookie(const char *name, /* I - Name */
const char *value, /* I - Value */
const char *path, /* I - Path (typically "/") */
const char *domain, /* I - Domain name */
time_t expires, /* I - Expiration date (0 for session) */
int secure) /* I - Require SSL */
{
num_cookies = cupsAddOption(name, value, num_cookies, &cookies);
printf("Set-Cookie: %s=%s;", name, value);
if (path)
printf(" path=%s;", path);
if (domain)
printf(" domain=%s;", domain);
if (expires)
{
char date[256]; /* Date string */
printf(" expires=%s;", httpGetDateString2(expires, date, sizeof(date)));
}
if (secure)
puts(" httponly; secure;");
else
puts(" httponly;");
}
/*
* 'cgiSetSize()' - Set the array size.
*/
@@ -362,9 +461,15 @@ cgiSetSize(const char *name, /* I - Name of variable */
if (size >= var->avalues)
{
const char **temp; /* Temporary pointer */
temp = (const char **)realloc((void *)(var->values),
sizeof(char *) * (size_t)(size + 16));
if (!temp)
return;
var->avalues = size + 16;
var->values = (const char **)realloc((void *)(var->values),
sizeof(char *) * var->avalues);
var->values = temp;
}
if (size > var->nvalues)
@@ -376,7 +481,7 @@ cgiSetSize(const char *name, /* I - Name of variable */
{
for (i = size; i < var->nvalues; i ++)
if (var->values[i])
free((void *)(var->values[i]));
_cupsStrFree((void *)(var->values[i]));
}
var->nvalues = size;
@@ -384,7 +489,7 @@ cgiSetSize(const char *name, /* I - Name of variable */
/*
* 'cgiSetVariable()' - Set a CGI variable in the database...
* 'cgiSetVariable()' - Set a CGI variable in the database.
*
* If the variable is an array, this truncates the array to a single element.
*/
@@ -400,6 +505,8 @@ cgiSetVariable(const char *name, /* I - Name of variable */
if (name == NULL || value == NULL)
return;
fprintf(stderr, "cgiSetVariable: %s=\"%s\"\n", name, value);
if ((var = cgi_find_variable(name)) == NULL)
{
cgi_add_variable(name, 0, value);
@@ -409,9 +516,9 @@ cgiSetVariable(const char *name, /* I - Name of variable */
{
for (i = 0; i < var->nvalues; i ++)
if (var->values[i])
free((char *)var->values[i]);
_cupsStrFree((char *)var->values[i]);
var->values[0] = strdup(value);
var->values[0] = _cupsStrAlloc(value);
var->nvalues = 1;
}
}
@@ -426,32 +533,41 @@ cgi_add_variable(const char *name, /* I - Variable name */
int element, /* I - Array element number */
const char *value) /* I - Variable value */
{
_cgi_var_t *var; /* New variable */
_cgi_var_t *var; /* New variable */
if (name == NULL || value == NULL || element < 0 || element > 100000)
return;
#ifdef DEBUG
printf("Adding variable \'%s\' with value \'%s\'...\n", name, value);
#endif /* DEBUG */
DEBUG_printf(("cgi_add_variable: Adding variable \'%s\' with value "
"\'%s\'...\n", name, value));
if (form_count >= form_alloc)
{
if (form_alloc == 0)
form_vars = malloc(sizeof(_cgi_var_t) * 16);
else
form_vars = realloc(form_vars, (form_alloc + 16) * sizeof(_cgi_var_t));
_cgi_var_t *temp_vars; /* Temporary form pointer */
if (form_alloc == 0)
temp_vars = malloc(sizeof(_cgi_var_t) * 16);
else
temp_vars = realloc(form_vars, (size_t)(form_alloc + 16) * sizeof(_cgi_var_t));
if (!temp_vars)
return;
form_vars = temp_vars;
form_alloc += 16;
}
var = form_vars + form_count;
var->name = strdup(name);
var = form_vars + form_count;
if ((var->values = calloc((size_t)element + 1, sizeof(char *))) == NULL)
return;
var->name = _cupsStrAlloc(name);
var->nvalues = element + 1;
var->avalues = element + 1;
var->values = calloc(element + 1, sizeof(char *));
var->values[element] = strdup(value);
var->values[element] = _cupsStrAlloc(value);
form_count ++;
}
@@ -466,12 +582,12 @@ cgi_compare_variables(
const _cgi_var_t *v1, /* I - First variable */
const _cgi_var_t *v2) /* I - Second variable */
{
return (strcasecmp(v1->name, v2->name));
return (_cups_strcasecmp(v1->name, v2->name));
}
/*
* 'cgi_find_variable()' - Find a variable...
* 'cgi_find_variable()' - Find a variable.
*/
static _cgi_var_t * /* O - Variable pointer or NULL */
@@ -485,11 +601,115 @@ cgi_find_variable(const char *name) /* I - Name of variable */
key.name = name;
return ((_cgi_var_t *)bsearch(&key, form_vars, form_count, sizeof(_cgi_var_t),
return ((_cgi_var_t *)bsearch(&key, form_vars, (size_t)form_count, sizeof(_cgi_var_t),
(int (*)(const void *, const void *))cgi_compare_variables));
}
/*
* 'cgi_initialize_cookies()' - Initialize cookies.
*/
static void
cgi_initialize_cookies(void)
{
const char *cookie; /* HTTP_COOKIE environment variable */
char name[128], /* Name string */
value[512], /* Value string */
*ptr; /* Pointer into name/value */
if ((cookie = getenv("HTTP_COOKIE")) == NULL)
return;
while (*cookie)
{
int skip = 0; /* Skip this cookie? */
/*
* Skip leading whitespace...
*/
while (isspace(*cookie & 255))
cookie ++;
if (!*cookie)
break;
/*
* Copy the name...
*/
for (ptr = name; *cookie && *cookie != '=';)
if (ptr < (name + sizeof(name) - 1))
{
*ptr++ = *cookie++;
}
else
{
skip = 1;
cookie ++;
}
if (*cookie != '=')
break;
*ptr = '\0';
cookie ++;
/*
* Then the value...
*/
if (*cookie == '\"')
{
for (cookie ++, ptr = value; *cookie && *cookie != '\"';)
if (ptr < (value + sizeof(value) - 1))
{
*ptr++ = *cookie++;
}
else
{
skip = 1;
cookie ++;
}
if (*cookie == '\"')
cookie ++;
else
skip = 1;
}
else
{
for (ptr = value; *cookie && *cookie != ';';)
if (ptr < (value + sizeof(value) - 1))
{
*ptr++ = *cookie++;
}
else
{
skip = 1;
cookie ++;
}
}
if (*cookie == ';')
cookie ++;
else if (*cookie)
skip = 1;
*ptr = '\0';
/*
* Then add the cookie to an array as long as the name doesn't start with
* "$"...
*/
if (name[0] != '$' && !skip)
num_cookies = cupsAddOption(name, value, num_cookies, &cookies);
}
}
/*
* 'cgi_initialize_get()' - Initialize form variables using the GET method.
*/
@@ -500,9 +720,7 @@ cgi_initialize_get(void)
char *data; /* Pointer to form data string */
#ifdef DEBUG
puts("Initializing variables using GET method...");
#endif /* DEBUG */
DEBUG_puts("cgi_initialize_get: Initializing variables using GET method...");
/*
* Check to see if there is anything for us to read...
@@ -521,7 +739,8 @@ cgi_initialize_get(void)
/*
* 'cgi_initialize_multipart()' - Initialize variables and file using the POST method.
* 'cgi_initialize_multipart()' - Initialize variables and file using the POST
* method.
*
* TODO: Update to support files > 2GB.
*/
@@ -538,8 +757,8 @@ cgi_initialize_multipart(
*ptr, /* Pointer into name/filename */
*end; /* End of buffer */
int ch, /* Character from file */
fd, /* Temporary file descriptor */
blen; /* Length of boundary string */
fd; /* Temporary file descriptor */
size_t blen; /* Length of boundary string */
DEBUG_printf(("cgi_initialize_multipart(boundary=\"%s\")\n", boundary));
@@ -599,27 +818,27 @@ cgi_initialize_multipart(
/*
* Copy file data to the temp file...
*/
ptr = line;
while ((ch = getchar()) != EOF)
{
*ptr++ = ch;
*ptr++ = (char)ch;
if ((ptr - line) >= blen && !memcmp(ptr - blen, bstring, blen))
if ((size_t)(ptr - line) >= blen && !memcmp(ptr - blen, bstring, blen))
{
ptr -= blen;
break;
}
if ((ptr - line - blen) >= 8192)
if ((ptr - line - (int)blen) >= 8192)
{
/*
* Write out the first 8k of the buffer...
*/
write(fd, line, 8192);
memmove(line, line + 8192, ptr - line - 8192);
memmove(line, line + 8192, (size_t)(ptr - line - 8192));
ptr -= 8192;
}
}
@@ -629,7 +848,7 @@ cgi_initialize_multipart(
*/
if (ptr > line)
write(fd, line, ptr - line);
write(fd, line, (size_t)(ptr - line));
close(fd);
}
@@ -646,9 +865,9 @@ cgi_initialize_multipart(
while ((ch = getchar()) != EOF)
{
if (ptr < end)
*ptr++ = ch;
*ptr++ = (char)ch;
if ((ptr - line) >= blen && !memcmp(ptr - blen, bstring, blen))
if ((size_t)(ptr - line) >= blen && !memcmp(ptr - blen, bstring, blen))
{
ptr -= blen;
break;
@@ -703,7 +922,7 @@ cgi_initialize_multipart(
filename[0] = '\0';
mimetype[0] = '\0';
}
else if (!strncasecmp(line, "Content-Disposition:", 20))
else if (!_cups_strncasecmp(line, "Content-Disposition:", 20))
{
if ((ptr = strstr(line + 20, " name=\"")) != NULL)
{
@@ -721,7 +940,7 @@ cgi_initialize_multipart(
*ptr = '\0';
}
}
else if (!strncasecmp(line, "Content-Type:", 13))
else if (!_cups_strncasecmp(line, "Content-Type:", 13))
{
for (ptr = line + 13; isspace(*ptr & 255); ptr ++);
@@ -748,17 +967,15 @@ cgi_initialize_multipart(
static int /* O - 1 if form data was read */
cgi_initialize_post(void)
{
char *content_length, /* Length of input data (string) */
*data; /* Pointer to form data string */
int length, /* Length of input data */
nbytes, /* Number of bytes read this read() */
tbytes, /* Total number of bytes read */
status; /* Return status */
char *content_length, /* Length of input data (string) */
*data; /* Pointer to form data string */
size_t length, /* Length of input data */
tbytes; /* Total number of bytes read */
ssize_t nbytes; /* Number of bytes read this read() */
int status; /* Return status */
#ifdef DEBUG
puts("Initializing variables using POST method...");
#endif /* DEBUG */
DEBUG_puts("cgi_initialize_post: Initializing variables using POST method...");
/*
* Check to see if there is anything for us to read...
@@ -772,7 +989,7 @@ cgi_initialize_post(void)
* Get the length of the input stream and allocate a buffer for it...
*/
length = atoi(content_length);
length = (size_t)strtol(content_length, NULL, 10);
data = malloc(length + 1);
if (data == NULL)
@@ -782,13 +999,29 @@ cgi_initialize_post(void)
* Read the data into the buffer...
*/
for (tbytes = 0; tbytes < length; tbytes += nbytes)
if ((nbytes = read(0, data + tbytes, length - tbytes)) < 0)
for (tbytes = 0; tbytes < length; tbytes += (size_t)nbytes)
if ((nbytes = read(0, data + tbytes, (size_t)(length - tbytes))) < 0)
{
if (errno != EAGAIN)
{
free(data);
return (0);
}
else
nbytes = 0;
}
else if (nbytes == 0)
{
/*
* CUPS STR #3176: OpenBSD: Early end-of-file on POST data causes 100% CPU
*
* This should never happen, but does on OpenBSD. If we see early end-of-
* file, treat this as an error and process no data.
*/
free(data);
return (0);
}
data[length] = '\0';
@@ -819,7 +1052,7 @@ cgi_initialize_string(const char *data) /* I - Form data string */
char *s, /* Pointer to current form string */
ch, /* Temporary character */
name[255], /* Name of form variable */
value[65536]; /* Variable value... */
value[65536]; /* Variable value */
/*
@@ -872,13 +1105,16 @@ cgi_initialize_string(const char *data) /* I - Form data string */
* Read the hex code...
*/
if (!isxdigit(data[1] & 255) || !isxdigit(data[2] & 255))
return (0);
if (s < (value + sizeof(value) - 1))
{
data ++;
ch = *data - '0';
if (ch > 9)
ch -= 7;
*s = ch << 4;
*s = (char)(ch << 4);
data ++;
ch = *data - '0';
@@ -905,7 +1141,7 @@ cgi_initialize_string(const char *data) /* I - Form data string */
if (s > value)
s --;
while (s >= value && *s == ' ')
while (s >= value && isspace(*s & 255))
*s-- = '\0';
/*
@@ -959,6 +1195,46 @@ cgi_passwd(const char *prompt) /* I - Prompt (not used) */
}
/*
* 'cgi_set_sid()' - Set the CUPS session ID.
*/
static const char * /* O - New session ID */
cgi_set_sid(void)
{
char buffer[512], /* SID data */
sid[33]; /* SID string */
_cups_md5_state_t md5; /* MD5 state */
unsigned char sum[16]; /* MD5 sum */
const char *remote_addr, /* REMOTE_ADDR */
*server_name, /* SERVER_NAME */
*server_port; /* SERVER_PORT */
if ((remote_addr = getenv("REMOTE_ADDR")) == NULL)
remote_addr = "REMOTE_ADDR";
if ((server_name = getenv("SERVER_NAME")) == NULL)
server_name = "SERVER_NAME";
if ((server_port = getenv("SERVER_PORT")) == NULL)
server_port = "SERVER_PORT";
CUPS_SRAND(time(NULL));
snprintf(buffer, sizeof(buffer), "%s:%s:%s:%02X%02X%02X%02X%02X%02X%02X%02X",
remote_addr, server_name, server_port,
(unsigned)CUPS_RAND() & 255, (unsigned)CUPS_RAND() & 255,
(unsigned)CUPS_RAND() & 255, (unsigned)CUPS_RAND() & 255,
(unsigned)CUPS_RAND() & 255, (unsigned)CUPS_RAND() & 255,
(unsigned)CUPS_RAND() & 255, (unsigned)CUPS_RAND() & 255);
_cupsMD5Init(&md5);
_cupsMD5Append(&md5, (unsigned char *)buffer, (int)strlen(buffer));
_cupsMD5Finish(&md5, sum);
cgiSetCookie(CUPS_SID, httpMD5String(sum, sid), "/", NULL, 0, 0);
return (cupsGetOption(CUPS_SID, num_cookies, cookies));
}
/*
* 'cgi_sort_variables()' - Sort all form variables for faster lookup.
*/
@@ -970,20 +1246,21 @@ cgi_sort_variables(void)
int i;
puts("Sorting variables...");
DEBUG_puts("cgi_sort_variables: Sorting variables...");
#endif /* DEBUG */
if (form_count < 2)
return;
qsort(form_vars, form_count, sizeof(_cgi_var_t),
qsort(form_vars, (size_t)form_count, sizeof(_cgi_var_t),
(int (*)(const void *, const void *))cgi_compare_variables);
#ifdef DEBUG
puts("Sorted variable list is:");
DEBUG_puts("cgi_sort_variables: Sorted variable list is:");
for (i = 0; i < form_count; i ++)
printf("%d: %s (%d) = \"%s\" ...\n", i, form_vars[i].name,
form_vars[i].nvalues, form_vars[i].values[0]);
DEBUG_printf(("cgi_sort_variables: %d: %s (%d) = \"%s\" ...\n", i,
form_vars[i].name, form_vars[i].nvalues,
form_vars[i].values[0]));
#endif /* DEBUG */
}
@@ -1015,8 +1292,3 @@ cgi_unlink_file(void)
form_file = NULL;
}
}
/*
* End of "$Id$".
*/
+68 -29
Ver Arquivo
@@ -1,16 +1,14 @@
#
# "$Id$"
# Configuration file makefile for CUPS.
#
# Configuration file makefile for the Common UNIX Printing System (CUPS).
# Copyright 2007-2015 by Apple Inc.
# Copyright 1993-2006 by Easy Software Products.
#
# Copyright 2007 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/".
# 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
@@ -19,7 +17,7 @@ include ../Makedefs
# Config files...
#
KEEP = cupsd.conf snmp.conf
KEEP = cups-files.conf cupsd.conf snmp.conf
REPLACE = mime.convs mime.types
@@ -30,6 +28,20 @@ REPLACE = mime.convs mime.types
all:
#
# Make library targets...
#
libs:
#
# Make unit tests...
#
unittests:
#
# Clean all config and object files...
#
@@ -45,31 +57,38 @@ depend:
#
# Install files...
# Install all targets...
#
install: all
$(INSTALL_DIR) -m 755 $(SERVERROOT)
install: all install-data install-headers install-libs install-exec
#
# Install data files...
#
install-data:
for file in $(KEEP); do \
if test -r $(SERVERROOT)/$$file ; then \
$(INSTALL_CONFIG) $$file $(SERVERROOT)/$$file.N ; \
chgrp $(CUPS_GROUP) $(SERVERROOT)/$$file.N || true; \
$(INSTALL_CONFIG) -g $(CUPS_GROUP) $$file $(SERVERROOT)/$$file.N ; \
else \
$(INSTALL_CONFIG) $$file $(SERVERROOT) ; \
chgrp $(CUPS_GROUP) $(SERVERROOT)/$$file || true; \
$(INSTALL_CONFIG) -g $(CUPS_GROUP) $$file $(SERVERROOT) ; \
fi ; \
$(INSTALL_CONFIG) -g $(CUPS_GROUP) $$file $(SERVERROOT)/$$file.default; \
done
$(INSTALL_CONFIG) cupsd.conf $(SERVERROOT)/cupsd.conf.default
-chgrp $(CUPS_GROUP) $(SERVERROOT)/cupsd.conf.default
$(INSTALL_DIR) -m 755 $(DATADIR)/mime
for file in $(REPLACE); do \
if test -r $(SERVERROOT)/$$file ; then \
$(MV) $(SERVERROOT)/$$file $(SERVERROOT)/$$file.O ; \
if test -r $(DATADIR)/mime/$$file ; then \
$(MV) $(DATADIR)/mime/$$file $(DATADIR)/mime/$$file.O ; \
fi ; \
$(INSTALL_DATA) $$file $(SERVERROOT) ; \
if test -r $(SERVERROOT)/$$file ; then \
$(MV) $(SERVERROOT)/$$file $(DATADIR)/mime/$$file.O ; \
fi ; \
$(INSTALL_DATA) $$file $(DATADIR)/mime ; \
done
-if test x$(PAMDIR) != x; then \
$(INSTALL_DIR) -m 755 $(BUILDROOT)$(PAMDIR); \
if test -r $(BUILDROOT)$(PAMDIR)/cups/$(PAMFILE) ; then \
if test -r $(BUILDROOT)$(PAMDIR)/cups ; then \
$(INSTALL_DATA) $(PAMFILE) $(BUILDROOT)$(PAMDIR)/cups.N ; \
else \
$(INSTALL_DATA) $(PAMFILE) $(BUILDROOT)$(PAMDIR)/cups ; \
@@ -77,6 +96,27 @@ install: all
fi
#
# Install programs...
#
install-exec:
#
# Install headers...
#
install-headers:
#
# Install libraries...
#
install-libs:
#
# Uninstall files...
#
@@ -86,12 +126,11 @@ uninstall:
$(RM) $(SERVERROOT)/$$file; \
done
-$(RMDIR) $(SERVERROOT)
for file in $(REPLACE); do \
$(RM) $(DATADIR)/mime/$$file; \
done
-$(RMDIR) $(DATADIR)/mime
-if test x$(PAMDIR) != x; then \
$(RM) $(BUILDROOT)$(PAMDIR)/cups; \
$(RMDIR) $(BUILDROOT)$(PAMDIR); \
fi
#
# End of "$Id$".
#
+93
Ver Arquivo
@@ -0,0 +1,93 @@
#
# File/directory/user/group configuration file for the CUPS scheduler.
# See "man cups-files.conf" for a complete description of this file.
#
# List of events that are considered fatal errors for the scheduler...
#FatalErrors @CUPS_FATAL_ERRORS@
# Do we call fsync() after writing configuration or status files?
#SyncOnClose No
# Default user and group for filters/backends/helper programs; this cannot be
# any user or group that resolves to ID 0 for security reasons...
#User @CUPS_USER@
#Group @CUPS_GROUP@
# Administrator user group, used to match @SYSTEM in cupsd.conf policy rules...
# This cannot contain the Group value for security reasons...
SystemGroup @CUPS_SYSTEM_GROUPS@
@CUPS_SYSTEM_AUTHKEY@
# User that is substituted for unauthenticated (remote) root accesses...
#RemoteRoot remroot
# Do we allow file: device URIs other than to /dev/null?
#FileDevice No
# Permissions for configuration and log files...
#ConfigFilePerm 0@CUPS_CONFIG_FILE_PERM@
#LogFilePerm 0@CUPS_LOG_FILE_PERM@
# Location of the file logging all access to the scheduler; may be the name
# "syslog". If not an absolute path, the value of ServerRoot is used as the
# root directory. Also see the "AccessLogLevel" directive in cupsd.conf.
AccessLog @CUPS_LOGDIR@/access_log
# Location of cache files used by the scheduler...
#CacheDir @CUPS_CACHEDIR@
# Location of data files used by the scheduler...
#DataDir @CUPS_DATADIR@
# Location of the static web content served by the scheduler...
#DocumentRoot @CUPS_DOCROOT@
# Location of the file logging all messages produced by the scheduler and any
# helper programs; may be the name "syslog". If not an absolute path, the value
# of ServerRoot is used as the root directory. Also see the "LogLevel"
# directive in cupsd.conf.
ErrorLog @CUPS_LOGDIR@/error_log
# Location of fonts used by older print filters...
#FontPath @CUPS_FONTPATH@
# Location of LPD configuration
#LPDConfigFile @CUPS_DEFAULT_LPD_CONFIG_FILE@
# Location of the file logging all pages printed by the scheduler and any
# helper programs; may be the name "syslog". If not an absolute path, the value
# of ServerRoot is used as the root directory. Also see the "PageLogFormat"
# directive in cupsd.conf.
PageLog @CUPS_LOGDIR@/page_log
# Location of the file listing all of the local printers...
#Printcap @CUPS_DEFAULT_PRINTCAP@
# Format of the Printcap file...
#PrintcapFormat bsd
#PrintcapFormat plist
#PrintcapFormat solaris
# Location of all spool files...
#RequestRoot @CUPS_REQUESTS@
# Location of helper programs...
#ServerBin @CUPS_SERVERBIN@
# SSL/TLS keychain for the scheduler...
#ServerKeychain @CUPS_SERVERKEYCHAIN@
# Location of other configuration files...
#ServerRoot @CUPS_SERVERROOT@
# Location of Samba configuration file...
#SMBConfigFile @CUPS_DEFAULT_SMB_CONFIG_FILE@
# Location of scheduler state files...
#StateDir @CUPS_STATEDIR@
# Location of scheduler/helper temporary files. This directory is emptied on
# scheduler startup and cannot be one of the standard (public) temporary
# directory locations for security reasons...
#TempDir @CUPS_REQUESTS@/tmp
+77 -26
Ver Arquivo
@@ -1,18 +1,12 @@
#
# "$Id$"
#
# Sample configuration file for the Common UNIX Printing System (CUPS)
# scheduler. See "man cupsd.conf" for a complete description of this
# file.
# Configuration file for the CUPS scheduler. See "man cupsd.conf" for a
# complete description of this file.
#
# Log general information in error_log - change "info" to "debug" for
# troubleshooting...
LogLevel info
# Administrator user group...
SystemGroup @CUPS_SYSTEM_GROUPS@
@CUPS_SYSTEM_AUTHKEY@
# Log general information in error_log - change "@CUPS_LOG_LEVEL@" to "debug"
# for troubleshooting...
LogLevel @CUPS_LOG_LEVEL@
@CUPS_PAGE_LOG_FORMAT@
# Only listen for connections from the local machine.
Listen localhost:@DEFAULT_IPP_PORT@
@@ -20,23 +14,22 @@ Listen localhost:@DEFAULT_IPP_PORT@
# Show shared printers on the local network.
Browsing On
BrowseOrder allow,deny
BrowseAllow all
BrowseLocalProtocols @CUPS_BROWSE_LOCAL_PROTOCOLS@
# Default authentication type, when authentication is required...
DefaultAuthType Basic
# Web interface setting...
WebInterface @CUPS_WEBIF@
# Restrict access to the server...
<Location />
Order allow,deny
Allow localhost
</Location>
# Restrict access to the admin pages...
<Location /admin>
@ENCRYPTION_REQUIRED@
Order allow,deny
Allow localhost
</Location>
# Restrict access to configuration files...
@@ -44,13 +37,74 @@ DefaultAuthType Basic
AuthType Default
Require user @SYSTEM
Order allow,deny
Allow localhost
</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...
JobPrivateAccess default
JobPrivateValues default
SubscriptionPrivateAccess default
SubscriptionPrivateValues default
# Job-related operations must be done by the owner or an administrator...
<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 CUPS-Move-Job>
<Limit Create-Job Print-Job Print-URI Validate-Job>
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>
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 CUPS-Get-Devices>
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>
Require user @OWNER @CUPS_DEFAULT_PRINTOPERATOR_AUTH@
Order deny,allow
</Limit>
<Limit All>
Order deny,allow
</Limit>
</Policy>
# Set the authenticated printer/job policies...
<Policy authenticated>
# 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 Default
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 Default
Require user @OWNER @SYSTEM
Order deny,allow
</Limit>
@@ -63,15 +117,16 @@ DefaultAuthType Basic
</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 CUPS-Accept-Jobs CUPS-Reject-Jobs>
<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_PRINTADMIN_AUTH@
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>
Require user @OWNER @CUPS_DEFAULT_PRINTADMIN_AUTH@
AuthType Default
Require user @OWNER @CUPS_DEFAULT_PRINTOPERATOR_AUTH@
Order deny,allow
</Limit>
@@ -79,7 +134,3 @@ DefaultAuthType Basic
Order deny,allow
</Limit>
</Policy>
#
# End of "$Id$".
#
+5 -55
Ver Arquivo
@@ -5,9 +5,9 @@
# VERSIONS OF CUPS. Instead, create a "local.convs" file that
# reflects your local configuration changes.
#
# MIME converts file for the Common UNIX Printing System (CUPS).
# Base MIME conversions file for CUPS.
#
# Copyright 2007 by Apple Inc.
# Copyright 2007-2011 by Apple Inc.
# Copyright 1997-2007 by Easy Software Products.
#
# These coded instructions, statements, and computer programs are the
@@ -38,65 +38,15 @@
# PostScript filters
#
application/pdf application/postscript 33 pdftops
application/postscript application/vnd.cups-postscript 66 pstops
application/vnd.hp-HPGL application/postscript 66 hpgltops
application/x-cshell application/postscript 33 texttops
application/x-csource application/postscript 33 texttops
application/x-perl application/postscript 33 texttops
application/x-shell application/postscript 33 texttops
text/plain application/postscript 33 texttops
text/html application/postscript 33 texttops
image/gif application/vnd.cups-postscript 66 imagetops
image/png application/vnd.cups-postscript 66 imagetops
image/jpeg application/vnd.cups-postscript 66 imagetops
image/tiff application/vnd.cups-postscript 66 imagetops
image/x-bitmap application/vnd.cups-postscript 66 imagetops
image/x-photocd application/vnd.cups-postscript 66 imagetops
image/x-portable-anymap application/vnd.cups-postscript 66 imagetops
image/x-portable-bitmap application/vnd.cups-postscript 66 imagetops
image/x-portable-graymap application/vnd.cups-postscript 66 imagetops
image/x-portable-pixmap application/vnd.cups-postscript 66 imagetops
image/x-sgi-rgb application/vnd.cups-postscript 66 imagetops
image/x-xbitmap application/vnd.cups-postscript 66 imagetops
image/x-xpixmap application/vnd.cups-postscript 66 imagetops
#image/x-xwindowdump application/vnd.cups-postscript 66 imagetops
image/x-sun-raster application/vnd.cups-postscript 66 imagetops
########################################################################
#
# Form filter...
#
# This filter does not currently exist, but the file format is defined
# in the IDD and registered with the IANA for future use...
#
#application/vnd.cups-form application/vnd.cups-postscript 33 formtops
application/postscript application/vnd.cups-postscript 66 pstops
########################################################################
#
# Raster filters...
#
image/gif application/vnd.cups-raster 100 imagetoraster
image/png application/vnd.cups-raster 100 imagetoraster
image/jpeg application/vnd.cups-raster 100 imagetoraster
image/tiff application/vnd.cups-raster 100 imagetoraster
image/x-bitmap application/vnd.cups-raster 100 imagetoraster
image/x-photocd application/vnd.cups-raster 100 imagetoraster
image/x-portable-anymap application/vnd.cups-raster 100 imagetoraster
image/x-portable-bitmap application/vnd.cups-raster 100 imagetoraster
image/x-portable-graymap application/vnd.cups-raster 100 imagetoraster
image/x-portable-pixmap application/vnd.cups-raster 100 imagetoraster
image/x-sgi-rgb application/vnd.cups-raster 100 imagetoraster
image/x-xbitmap application/vnd.cups-raster 100 imagetoraster
image/x-xpixmap application/vnd.cups-raster 100 imagetoraster
#image/x-xwindowdump application/vnd.cups-raster 100 imagetoraster
image/x-sun-raster application/vnd.cups-raster 100 imagetoraster
# pstoraster is part of GPL Ghostscript...
application/vnd.cups-postscript application/vnd.cups-raster 100 pstoraster
# PWG Raster filter for IPP Everywhere...
application/vnd.cups-raster image/pwg-raster 100 rastertopwg
########################################################################
#
+38 -31
Ver Arquivo
@@ -1,20 +1,20 @@
#
# "$Id: mime.types 6649 2007-07-11 21:46:42Z mike $"
# "$Id: mime.types 7670 2008-06-17 22:42:08Z mike $"
#
# MIME types file for the Common UNIX Printing System (CUPS).
# 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.
# 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 by Apple Inc.
# Copyright 1997-2007 by Easy Software Products.
# 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
# file is missing or damaged, see the license at "http://www.cups.org/".
# These coded instructions, statements, and computer programs are the
# property of Apple Inc. and are protected by Federal copyright
# law. Distribution and use rights are outlined in the file "LICENSE.txt"
# which should have been included with this file. If this file is
# file is missing or damaged, see the license at "http://www.cups.org/".
#
########################################################################
@@ -33,8 +33,11 @@
# extension Pattern match on "*.extension"
# ascii(offset,length) True if bytes are valid printable ASCII
# (CR, NL, TAB, BS, 32-126)
# priority(number) Sets priority of type (0=lowest,
# 100=default, 200=highest)
# printable(offset,length) True if bytes are printable 8-bit chars
# (CR, NL, TAB, BS, 32-126, 128-254)
# regex(offset,"regex") True if bytes match regular expression
# string(offset,"string") True if bytes are identical to string
# istring(offset,"string") True if bytes are identical to
# case-insensitive string
@@ -48,10 +51,12 @@
#
# MIME type names are case-insensitive. Internally they are converted
# to lowercase. Multiple occurrences of a type will cause the provided
# rules to be appended to the existing definition. Type names are sorted
# in ascending order, so if two types use the same rules to resolve a type
# (e.g. doc extension for two types), the returned type will be the first
# type in the sorted list.
# rules to be appended to the existing definition. If two types use the same
# rules to resolve a type and have the same priority, e.g. "doc" extension for
# "text/bar" and "text/foo", the returned type will be the first type as
# sorted in alphanumerically ascending order without regard to case. Thus,
# the "text/bar" type will match the "doc" extension first unless the
# "text/foo" type has specified a higher priority.
#
# The "printable" rule differs from the "ascii" rule in that it also
# accepts 8-bit characters in the range 128-255.
@@ -66,7 +71,7 @@
#
#application/msword doc string(0,<D0CF11E0A1B11AE1>)
application/pdf pdf string(0,%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") \
@@ -75,14 +80,13 @@ application/postscript ai eps ps string(0,%!) string(0,<04>%!) \
contains(0,4096,"LANGUAGE = POSTSCRIPT") \
(contains(0,4096,<0a>%!) + \
!contains(0,4096,"ENTER LANGUAGE")))
application/vnd.hp-HPGL hpgl \
string(0,<1B>E<1B>%0B) \
string(0,<1B>%-1B) string(0,<201B>)\
string(0,BP;) string(0,IN;) string(0,DF;) \
string(0,BPINPS;) \
(contains(0,128,<1B>%-12345X) + \
(contains(0,4096,"LANGUAGE=HPGL") \
contains(0,4096,"LANGUAGE = HPGL")))
application/g-code gcode
application/sla stl string(0,"solid ") + contains(0,4096,"facet") + contains(0,4096,"vertex")
application/vnd.makerbot-s3g x3g
model/amf amf
model/vnd.collada+xml dae
########################################################################
#
@@ -91,11 +95,12 @@ application/vnd.hp-HPGL hpgl \
image/gif gif string(0,GIF87a) string(0,GIF89a)
image/png png string(0,<89>PNG)
image/jpeg jpeg jpg jpe string(0,<FFD8FF>) &&\
image/jpeg jpeg jpg jpe string(0,<FFD8FF>) +\
(char(3,0xe0) char(3,0xe1) char(3,0xe2) char(3,0xe3)\
char(3,0xe4) char(3,0xe5) char(3,0xe6) char(3,0xe7)\
char(3,0xe8) char(3,0xe9) char(3,0xea) char(3,0xeb)\
char(3,0xec) char(3,0xed) char(3,0xee) char(3,0xef))
image/pwg-raster string(0,"RaS2") + string(4,PwgRaster<00>) priority(150)
image/tiff tiff tif string(0,MM<002A>) string(0,II<2A00>)
image/x-photocd pcd string(2048,PCD_IPI)
image/x-portable-anymap pnm
@@ -110,7 +115,7 @@ image/x-sun-raster ras string(0,<59a66a95>)
#image/fpx fpx
image/x-alias pix short(8,8) short(8,24)
image/x-bitmap bmp string(0,BM) && !printable(2,14)
image/x-bitmap bmp string(0,BM) + !printable(2,14)
image/x-icon ico
########################################################################
@@ -126,7 +131,7 @@ application/x-shell sh printable(0,1024) + string(0,#!) +\
(contains(2,80,/bash) contains(2,80,/ksh)\
contains(2,80,/sh) contains(2,80,/zsh))
application/x-csource c cxx cpp cc C h hpp \
printable(0,1024) + \
printable(0,1024) + ! css + \
(string(0,/*) string(0,//)
string(0,#include) contains(0,1024,<0a>#include) \
string(0,#define) contains(0,1024,<0a>#define))
@@ -149,12 +154,14 @@ application/rss+xml rss
# CUPS-specific types...
#
application/vnd.cups-banner string(0,'#CUPS-BANNER')
application/vnd.cups-command string(0,'#CUPS-COMMAND')
application/vnd.cups-form string(0,"<CUPSFORM>")
application/vnd.cups-pdf
application/vnd.cups-postscript
application/vnd.cups-ppd ppd string(0,"*PPD-Adobe:")
application/vnd.cups-raster string(0,"RaSt") string(0,"tSaR")
application/vnd.cups-raster string(0,"RaSt") string(0,"tSaR") \
(string(0,"RaS2") + !string(4,PwgRaster<00>)) string(0,"2SaR") \
string(0,"RaS3") string(0,"3SaR")
application/vnd.cups-raw (string(0,<1B>E) + !string(2,<1B>%0B)) \
string(0,<1B>@) \
(contains(0,128,<1B>%-12345X) + \
@@ -171,5 +178,5 @@ application/vnd.cups-raw (string(0,<1B>E) + !string(2,<1B>%0B)) \
application/octet-stream
#
# End of "$Id: mime.types 6649 2007-07-11 21:46:42Z mike $".
# End of "$Id: mime.types 7670 2008-06-17 22:42:08Z mike $".
#
-3
Ver Arquivo
@@ -1,3 +0,0 @@
#%PAM-1.0
auth required pam_unix.so shadow nodelay nullok
account required pam_unix.so
+5
Ver Arquivo
@@ -0,0 +1,5 @@
# cups: auth account password session
auth required pam_opendirectory.so
account required pam_permit.so
password required pam_deny.so
session required pam_permit.so
+1 -1
Ver Arquivo
@@ -1,2 +1,2 @@
auth required @PAMMOD@ nullok shadow
auth required @PAMMODAUTH@
account required @PAMMOD@
+2 -8
Ver Arquivo
@@ -1,13 +1,7 @@
#
# "$Id$"
#
# Sample SNMP configuration file for CUPS. See "man smnp.conf" for a
# complete description of this file.
# SNMP configuration file for CUPS. See "man cups-snmp.conf" for a complete
# description of this file.
#
@CUPS_SNMP_ADDRESS@
@CUPS_SNMP_COMMUNITY@
#
# End of "$Id$".
#
-140
Ver Arquivo
@@ -1,140 +0,0 @@
dnl
dnl "$Id$"
dnl
dnl 32/64-bit library support stuff for the Common UNIX Printing System (CUPS).
dnl
dnl Copyright 2007 by Apple Inc.
dnl Copyright 1997-2006 by Easy Software Products, all rights reserved.
dnl
dnl These coded instructions, statements, and computer programs are the
dnl property of Apple Inc. and are protected by Federal copyright
dnl law. Distribution and use rights are outlined in the file "LICENSE.txt"
dnl which should have been included with this file. If this file is
dnl file is missing or damaged, see the license at "http://www.cups.org/".
dnl
dnl Setup support for separate 32/64-bit library generation...
AC_ARG_ENABLE(32bit, [ --enable-32bit generate 32-bit libraries on 32/64-bit systems, default=no])
INSTALL32=""
LIB32CUPS=""
LIB32CUPSIMAGE=""
LIB32DIR=""
UNINSTALL32=""
AC_SUBST(INSTALL32)
AC_SUBST(LIB32CUPS)
AC_SUBST(LIB32CUPSIMAGE)
AC_SUBST(LIB32DIR)
AC_SUBST(UNINSTALL32)
AC_ARG_ENABLE(64bit, [ --enable-64bit generate 64-bit libraries on 32/64-bit systems, default=no])
INSTALL64=""
LIB64CUPS=""
LIB64CUPSIMAGE=""
LIB64DIR=""
UNINSTALL64=""
AC_SUBST(INSTALL64)
AC_SUBST(LIB64CUPS)
AC_SUBST(LIB64CUPSIMAGE)
AC_SUBST(LIB64DIR)
AC_SUBST(UNINSTALL64)
case "$uname" in
HP-UX*)
if test "x$enable_32bit" = xyes; then
# Build 32-bit libraries, 64-bit base...
INSTALL32="install32bit"
LIB32CUPS="32bit/libcups.so.2"
LIB32CUPSIMAGE="32bit/libcupsimage.so.2"
LIB32DIR="$exec_prefix/lib"
if test -d /usr/lib/hpux32; then
LIB32DIR="${LIB32DIR}/hpux32"
fi
UNINSTALL32="uninstall32bit"
fi
if test "x$enable_64bit" = xyes; then
# Build 64-bit libraries, 32-bit base...
INSTALL64="install64bit"
LIB64CUPS="64bit/libcups.so.2"
LIB64CUPSIMAGE="64bit/libcupsimage.so.2"
LIB64DIR="$exec_prefix/lib"
if test -d /usr/lib/hpux64; then
LIB64DIR="${LIB64DIR}/hpux64"
fi
UNINSTALL64="uninstall64bit"
fi
;;
IRIX)
if test "x$enable_32bit" = xyes; then
INSTALL32="install32bit"
LIB32CUPS="32bit/libcups.so.2"
LIB32CUPSIMAGE="32bit/libcupsimage.so.2"
LIB32DIR="$prefix/lib32"
UNINSTALL32="uninstall32bit"
fi
if test "x$enable_64bit" = xyes; then
# Build 64-bit libraries, 32-bit base...
INSTALL64="install64bit"
LIB64CUPS="64bit/libcups.so.2"
LIB64CUPSIMAGE="64bit/libcupsimage.so.2"
LIB64DIR="$prefix/lib64"
UNINSTALL64="uninstall64bit"
fi
;;
Linux*)
if test "x$enable_32bit" = xyes; then
# Build 32-bit libraries, 64-bit base...
INSTALL32="install32bit"
LIB32CUPS="32bit/libcups.so.2"
LIB32CUPSIMAGE="32bit/libcupsimage.so.2"
LIB32DIR="$exec_prefix/lib"
if test -d /usr/lib32; then
LIB32DIR="${LIB32DIR}32"
fi
UNINSTALL32="uninstall32bit"
fi
if test "x$enable_64bit" = xyes; then
# Build 64-bit libraries, 32-bit base...
INSTALL64="install64bit"
LIB64CUPS="64bit/libcups.so.2"
LIB64CUPSIMAGE="64bit/libcupsimage.so.2"
LIB64DIR="$exec_prefix/lib"
if test -d /usr/lib64; then
LIB64DIR="${LIB64DIR}64"
fi
UNINSTALL64="uninstall64bit"
fi
;;
SunOS*)
if test "x$enable_32bit" = xyes; then
# Build 32-bit libraries, 64-bit base...
INSTALL32="install32bit"
LIB32CUPS="32bit/libcups.so.2"
LIB32CUPSIMAGE="32bit/libcupsimage.so.2"
LIB32DIR="$exec_prefix/lib/32"
UNINSTALL32="uninstall32bit"
fi
if test "x$enable_64bit" = xyes; then
# Build 64-bit libraries, 32-bit base...
INSTALL64="install64bit"
LIB64CUPS="64bit/libcups.so.2"
LIB64CUPSIMAGE="64bit/libcupsimage.so.2"
LIB64DIR="$exec_prefix/lib/64"
UNINSTALL64="uninstall64bit"
fi
;;
esac
dnl
dnl End of "$Id$".
dnl
+291 -121
Ver Arquivo
@@ -1,35 +1,32 @@
dnl
dnl "$Id: cups-common.m4 6981 2007-09-19 21:51:55Z mike $"
dnl Common configuration stuff for CUPS.
dnl
dnl Common configuration stuff for the Common UNIX Printing System (CUPS).
dnl Copyright 2007-2016 by Apple Inc.
dnl Copyright 1997-2007 by Easy Software Products, all rights reserved.
dnl
dnl Copyright 2007 by Apple Inc.
dnl Copyright 1997-2007 by Easy Software Products, all rights reserved.
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 These coded instructions, statements, and computer programs are the
dnl property of Apple Inc. and are protected by Federal copyright
dnl law. Distribution and use rights are outlined in the file "LICENSE.txt"
dnl which should have been included with this file. If this file is
dnl file is missing or damaged, see the license at "http://www.cups.org/".
dnl
dnl We need at least autoconf 2.60...
AC_PREREQ(2.60)
dnl Set the name of the config header file...
AC_CONFIG_HEADER(config.h)
dnl Versio number information...
CUPS_VERSION="1.3.3"
dnl Version number information...
CUPS_VERSION="AC_PACKAGE_VERSION"
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 ],
CUPS_BUILD="$withval")
AC_SUBST(CUPS_VERSION)
AC_SUBST(CUPS_REVISION)
AC_DEFINE_UNQUOTED(CUPS_SVERSION, "CUPS v$CUPS_VERSION$CUPS_REVISION")
AC_DEFINE_UNQUOTED(CUPS_MINIMAL, "CUPS/$CUPS_VERSION$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")
dnl Default compiler flags...
CFLAGS="${CFLAGS:=}"
@@ -39,24 +36,31 @@ LDFLAGS="${LDFLAGS:=}"
dnl Checks for programs...
AC_PROG_AWK
AC_PROG_CC
AC_PROG_CXX
AC_PROG_CC(clang cc gcc)
AC_PROG_CPP
AC_PROG_INSTALL
if test "$INSTALL" = "$ac_install_sh"; then
# Use full path to install-sh script...
INSTALL="`pwd`/install-sh -c"
fi
AC_PROG_CXX(clang++ c++ g++)
AC_PROG_RANLIB
AC_PATH_PROG(AR,ar)
AC_PATH_PROG(HTMLDOC,htmldoc)
AC_PATH_PROG(CHMOD,chmod)
AC_PATH_PROG(GZIP,gzip)
AC_PATH_PROG(LD,ld)
AC_PATH_PROG(LN,ln)
AC_PATH_PROG(MV,mv)
AC_PATH_PROG(RM,rm)
AC_PATH_PROG(RMDIR,rmdir)
AC_PATH_PROG(SED,sed)
AC_PATH_PROG(STRIP,strip)
AC_PATH_PROG(XDGOPEN,xdg-open)
if test "x$XDGOPEN" = x; then
CUPS_HTMLVIEW="htmlview"
else
CUPS_HTMLVIEW="$XDGOPEN"
fi
AC_SUBST(CUPS_HTMLVIEW)
AC_MSG_CHECKING(for install-sh script)
INSTALL="`pwd`/install-sh"
AC_SUBST(INSTALL)
AC_MSG_RESULT(using $INSTALL)
if test "x$AR" = x; then
AC_MSG_ERROR([Unable to find required library archive command.])
@@ -64,13 +68,10 @@ fi
if test "x$CC" = x; then
AC_MSG_ERROR([Unable to find required C compiler command.])
fi
if test "x$CXX" = x; then
AC_MSG_ERROR([Unable to find required C++ compiler command.])
fi
dnl Static library option...
INSTALLSTATIC=""
AC_ARG_ENABLE(static, [ --enable-static install static libraries, default=no])
AC_ARG_ENABLE(static, [ --enable-static install static libraries])
if test x$enable_static = xyes; then
echo Installing static libraries...
@@ -79,28 +80,30 @@ fi
AC_SUBST(INSTALLSTATIC)
dnl Check for pkg-config, which is used for some other tests later on...
AC_PATH_TOOL(PKGCONFIG, pkg-config)
dnl Check for libraries...
AC_SEARCH_LIBS(abs, m, AC_DEFINE(HAVE_ABS))
AC_SEARCH_LIBS(crypt, crypt)
AC_SEARCH_LIBS(fmod, m)
AC_SEARCH_LIBS(getspent, sec gen)
LIBMALLOC=""
AC_ARG_ENABLE(mallinfo, [ --enable-mallinfo turn on malloc debug information, default=no])
AC_ARG_ENABLE(mallinfo, [ --enable-mallinfo build with malloc debug logging])
if test x$enable_mallinfo = xyes; then
AC_CHECK_LIB(c,mallinfo,LIBS="$LIBS"; AC_DEFINE(HAVE_MALLINFO),LIBS="$LIBS")
if test "$ac_cv_lib_c_mallinfo" = "no"; then
AC_CHECK_LIB(malloc,mallinfo,
LIBS="$LIBS"
LIBMALLOC="-lmalloc"
AC_DEFINE(HAVE_MALLINFO),
LIBS="$LIBS")
fi
SAVELIBS="$LIBS"
LIBS=""
AC_SEARCH_LIBS(mallinfo, malloc, AC_DEFINE(HAVE_MALLINFO))
LIBMALLOC="$LIBS"
LIBS="$SAVELIBS"
fi
AC_SUBST(LIBMALLOC)
dnl Check for libpaper support...
AC_ARG_ENABLE(libpaper, [ --enable-libpaper turn on libpaper support, default=no])
AC_ARG_ENABLE(libpaper, [ --enable-libpaper build with libpaper support])
if test x$enable_libpaper = xyes; then
AC_CHECK_LIB(paper,systempapername,
@@ -114,33 +117,66 @@ AC_SUBST(LIBPAPER)
dnl Checks for header files.
AC_HEADER_STDC
AC_CHECK_HEADER(stdlib.h,AC_DEFINE(HAVE_STDLIB_H))
AC_CHECK_HEADER(crypt.h,AC_DEFINE(HAVE_CRYPT_H))
AC_CHECK_HEADER(langinfo.h,AC_DEFINE(HAVE_LANGINFO_H))
AC_CHECK_HEADER(malloc.h,AC_DEFINE(HAVE_MALLOC_H))
AC_CHECK_HEADER(shadow.h,AC_DEFINE(HAVE_SHADOW_H))
AC_CHECK_HEADER(stdint.h,AC_DEFINE(HAVE_STDINT_H))
AC_CHECK_HEADER(string.h,AC_DEFINE(HAVE_STRING_H))
AC_CHECK_HEADER(strings.h,AC_DEFINE(HAVE_STRINGS_H))
AC_CHECK_HEADER(bstring.h,AC_DEFINE(HAVE_BSTRING_H))
AC_CHECK_HEADER(usersec.h,AC_DEFINE(HAVE_USERSEC_H))
AC_CHECK_HEADER(sys/ioctl.h,AC_DEFINE(HAVE_SYS_IOCTL_H))
AC_CHECK_HEADER(sys/param.h,AC_DEFINE(HAVE_SYS_PARAM_H))
AC_CHECK_HEADER(sys/ucred.h,AC_DEFINE(HAVE_SYS_UCRED_H))
AC_CHECK_HEADER(scsi/sg.h,AC_DEFINE(HAVE_SCSI_SG_H))
AC_CHECK_HEADER(asl.h,AC_DEFINE(HAVE_ASL_H))
dnl Checks for iconv.h and iconv_open
AC_CHECK_HEADER(iconv.h,
SAVELIBS="$LIBS"
LIBS=""
AC_SEARCH_LIBS(iconv_open,iconv,
AC_DEFINE(HAVE_ICONV_H)
SAVELIBS="$SAVELIBS $LIBS")
AC_SEARCH_LIBS(libiconv_open,iconv,
AC_DEFINE(HAVE_ICONV_H)
SAVELIBS="$SAVELIBS $LIBS")
LIBS="$SAVELIBS")
dnl Checks for Mini-XML (www.minixml.org)...
LIBMXML=""
AC_CHECK_HEADER(mxml.h,
SAVELIBS="$LIBS"
AC_SEARCH_LIBS(mmxlNewElement,mxml,
AC_DEFINE(HAVE_MXML_H)
LIBMXML="-lmxml")
LIBS="$SAVELIBS")
AC_SUBST(LIBMXML)
dnl Checks for statfs and its many headers...
AC_CHECK_HEADER(sys/mount.h,AC_DEFINE(HAVE_SYS_MOUNT_H))
AC_CHECK_HEADER(sys/statfs.h,AC_DEFINE(HAVE_SYS_STATFS_H))
AC_CHECK_HEADER(sys/statvfs.h,AC_DEFINE(HAVE_SYS_STATVFS_H))
AC_CHECK_HEADER(sys/vfs.h,AC_DEFINE(HAVE_SYS_VFS_H))
AC_CHECK_FUNCS(statfs statvfs)
dnl Checks for string functions.
AC_CHECK_FUNCS(strdup strcasecmp strncasecmp strlcat strlcpy)
AC_CHECK_FUNCS(strdup strlcat strlcpy)
if test "$uname" = "HP-UX" -a "$uversion" = "1020"; then
echo Forcing snprintf emulation for HP-UX.
else
AC_CHECK_FUNCS(snprintf vsnprintf)
fi
dnl Checks for mkstemp and mkstemps functions.
AC_CHECK_FUNCS(mkstemp mkstemps)
dnl Check for random number functions...
AC_CHECK_FUNCS(random lrand48 arc4random)
dnl Check for geteuid function.
AC_CHECK_FUNCS(geteuid)
dnl Check for setpgid function.
AC_CHECK_FUNCS(setpgid)
dnl Check for vsyslog function.
AC_CHECK_FUNCS(vsyslog)
@@ -160,6 +196,12 @@ AC_CHECK_FUNCS(sigaction)
dnl Checks for wait functions.
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;
@@ -168,9 +210,73 @@ AC_TRY_COMPILE([#include <time.h>],[struct tm t;
AC_DEFINE(HAVE_TM_GMTOFF),
AC_MSG_RESULT(no))
dnl See if the stat structure has the st_gen member...
AC_MSG_CHECKING(for st_gen member in stat structure)
AC_TRY_COMPILE([#include <sys/stat.h>],[struct stat t;
int o = t.st_gen;],
AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_ST_GEN),
AC_MSG_RESULT(no))
dnl See if we have the removefile(3) function for securely removing files
AC_CHECK_FUNCS(removefile)
dnl See if we have libusb...
AC_ARG_ENABLE(libusb, [ --enable-libusb use libusb for USB printing])
LIBUSB=""
USBQUIRKS=""
AC_SUBST(LIBUSB)
AC_SUBST(USBQUIRKS)
if test "x$PKGCONFIG" != x; then
if test x$enable_libusb != xno -a $uname != Darwin; then
AC_MSG_CHECKING(for libusb-1.0)
if $PKGCONFIG --exists libusb-1.0; then
AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_LIBUSB)
CFLAGS="$CFLAGS `$PKGCONFIG --cflags libusb-1.0`"
LIBUSB="`$PKGCONFIG --libs libusb-1.0`"
USBQUIRKS="\$(DATADIR)/usb"
else
AC_MSG_RESULT(no)
if test x$enable_libusb = xyes; then
AC_MSG_ERROR(libusb required for --enable-libusb.)
fi
fi
fi
elif test x$enable_libusb = xyes; then
AC_MSG_ERROR(Need pkg-config to enable libusb support.)
fi
dnl See if we have libwrap for TCP wrappers support...
AC_ARG_ENABLE(tcp_wrappers, [ --enable-tcp-wrappers use libwrap for TCP wrappers support])
LIBWRAP=""
AC_SUBST(LIBWRAP)
if test x$enable_tcp_wrappers = xyes; then
AC_CHECK_LIB(wrap, hosts_access,[
AC_CHECK_HEADER(tcpd.h,
AC_DEFINE(HAVE_TCPD_H)
LIBWRAP="-lwrap")])
fi
dnl ZLIB
INSTALL_GZIP=""
LIBZ=""
AC_CHECK_HEADER(zlib.h,
AC_CHECK_LIB(z, gzgets,
AC_DEFINE(HAVE_LIBZ)
LIBZ="-lz"
LIBS="$LIBS -lz"
AC_CHECK_LIB(z, inflateCopy, AC_DEFINE(HAVE_INFLATECOPY))
if test "x$GZIP" != z; then
INSTALL_GZIP="-z"
fi))
AC_SUBST(INSTALL_GZIP)
AC_SUBST(LIBZ)
dnl Flags for "ar" command...
case $uname in
Darwin* | *BSD*)
@@ -183,42 +289,80 @@ esac
AC_SUBST(ARFLAGS)
dnl Extra platform-specific libraries...
dnl Prep libraries specifically for cupsd and backends...
BACKLIBS=""
CUPSDLIBS=""
SERVERLIBS=""
AC_SUBST(BACKLIBS)
AC_SUBST(SERVERLIBS)
dnl See if we have POSIX ACL support...
SAVELIBS="$LIBS"
LIBS=""
AC_ARG_ENABLE(acl, [ --enable-acl build with POSIX ACL support])
if test "x$enable_acl" != xno; then
AC_SEARCH_LIBS(acl_init, acl, AC_DEFINE(HAVE_ACL_INIT))
SERVERLIBS="$SERVERLIBS $LIBS"
fi
LIBS="$SAVELIBS"
dnl Check for DBUS support
AC_ARG_ENABLE(dbus, [ --disable-dbus build without DBUS support])
AC_ARG_WITH(dbusdir, [ --with-dbusdir set DBUS configuration directory ],
DBUSDIR="$withval")
DBUSDIR=""
CUPS_DEFAULT_PRINTADMIN_AUTH="@SYSTEM"
DBUS_NOTIFIER=""
DBUS_NOTIFIERLIBS=""
if test "x$enable_dbus" != xno -a "x$PKGCONFIG" != x -a "x$uname" != xDarwin; then
AC_MSG_CHECKING(for DBUS)
if $PKGCONFIG --exists dbus-1; then
AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_DBUS)
CFLAGS="$CFLAGS `$PKGCONFIG --cflags dbus-1` -DDBUS_API_SUBJECT_TO_CHANGE"
SERVERLIBS="$SERVERLIBS `$PKGCONFIG --libs dbus-1`"
DBUS_NOTIFIER="dbus"
DBUS_NOTIFIERLIBS="`$PKGCONFIG --libs dbus-1`"
SAVELIBS="$LIBS"
LIBS="$LIBS $DBUS_NOTIFIERLIBS"
AC_CHECK_FUNC(dbus_message_iter_init_append,
AC_DEFINE(HAVE_DBUS_MESSAGE_ITER_INIT_APPEND))
AC_CHECK_FUNC(dbus_threads_init,
AC_DEFINE(HAVE_DBUS_THREADS_INIT))
LIBS="$SAVELIBS"
if test -d /etc/dbus-1; then
DBUSDIR="/etc/dbus-1"
fi
else
AC_MSG_RESULT(no)
fi
fi
AC_SUBST(DBUSDIR)
AC_SUBST(DBUS_NOTIFIER)
AC_SUBST(DBUS_NOTIFIERLIBS)
dnl Extra platform-specific libraries...
CUPS_DEFAULT_PRINTOPERATOR_AUTH="@SYSTEM"
CUPS_DEFAULT_SYSTEM_AUTHKEY=""
CUPS_SYSTEM_AUTHKEY=""
AC_ARG_ENABLE(dbus, [ --enable-dbus enable DBUS support, default=auto])
FONTS="fonts"
AC_SUBST(FONTS)
LEGACY_BACKENDS="parallel scsi"
AC_SUBST(LEGACY_BACKENDS)
INSTALLXPC=""
case $uname in
Darwin*)
FONTS=""
LEGACY_BACKENDS=""
BACKLIBS="-framework IOKit"
CUPSDLIBS="-sectorder __TEXT __text cupsd.order -e start -framework IOKit -framework SystemConfiguration"
LIBS="-framework CoreFoundation $LIBS"
dnl Check for CFLocaleCreateCanonicalLocaleIdentifierFromString...
AC_MSG_CHECKING(for CFLocaleCreateCanonicalLocaleIdentifierFromString)
if test "$uname" = "Darwin" -a $uversion -ge 70; then
AC_DEFINE(HAVE_CF_LOCALE_ID)
AC_MSG_RESULT(yes)
else
AC_MSG_RESULT(no)
fi
BACKLIBS="$BACKLIBS -framework IOKit"
SERVERLIBS="$SERVERLIBS -framework IOKit -weak_framework ApplicationServices"
LIBS="-framework SystemConfiguration -framework CoreFoundation -framework Security $LIBS"
dnl Check for framework headers...
AC_CHECK_HEADER(ApplicationServices/ApplicationServices.h,AC_DEFINE(HAVE_APPLICATIONSERVICES_H))
AC_CHECK_HEADER(CoreFoundation/CoreFoundation.h,AC_DEFINE(HAVE_COREFOUNDATION_H))
AC_CHECK_HEADER(CoreFoundation/CFPriv.h,AC_DEFINE(HAVE_CFPRIV_H))
AC_CHECK_HEADER(CoreFoundation/CFBundlePriv.h,AC_DEFINE(HAVE_CFBUNDLEPRIV_H))
dnl Check for dynamic store function...
AC_CHECK_FUNCS(SCDynamicStoreCopyComputerName)
dnl Check for the new membership functions in MacOSX 10.4...
AC_CHECK_HEADER(membership.h,AC_DEFINE(HAVE_MEMBERSHIP_H))
AC_CHECK_HEADER(membershipPriv.h,AC_DEFINE(HAVE_MEMBERSHIPPRIV_H))
@@ -232,60 +376,86 @@ case $uname in
AC_CHECK_FUNCS(notify_post)
dnl Check for Authorization Services support
AC_ARG_WITH(adminkey, [ --with-adminkey set the default SystemAuthKey value],
default_adminkey="$withval",
default_adminkey="default")
AC_ARG_WITH(operkey, [ --with-operkey set the default operator @AUTHKEY value],
default_operkey="$withval",
default_operkey="default")
AC_CHECK_HEADER(Security/Authorization.h, [
AC_DEFINE(HAVE_AUTHORIZATION_H)
CUPS_DEFAULT_PRINTADMIN_AUTH="@AUTHKEY(system.print.admin) @admin @lpadmin"
CUPS_SYSTEM_AUTHKEY="SystemGroupAuthKey system.preferences"])
AC_CHECK_HEADER(Security/SecBasePriv.h,AC_DEFINE(HAVE_SECBASEPRIV_H))
;;
Linux*)
dnl Check for DBUS support
if test "x$enable_dbus" != xno; then
AC_PATH_PROG(PKGCONFIG, pkg-config)
if test "x$PKGCONFIG" != x; then
AC_MSG_CHECKING(for DBUS)
if $PKGCONFIG --exists dbus-1; then
AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_DBUS)
CFLAGS="$CFLAGS `$PKGCONFIG --cflags dbus-1` -DDBUS_API_SUBJECT_TO_CHANGE"
CUPSDLIBS="`$PKGCONFIG --libs dbus-1`"
AC_ARG_WITH(dbusdir, [ --with-dbusdir set DBUS configuration directory ], dbusdir="$withval", dbusdir="/etc/dbus-1")
DBUSDIR="$dbusdir"
AC_CHECK_LIB(dbus-1,
dbus_message_iter_init_append,
AC_DEFINE(HAVE_DBUS_MESSAGE_ITER_INIT_APPEND))
else
AC_MSG_RESULT(no)
fi
if test "x$default_adminkey" != xdefault; then
CUPS_SYSTEM_AUTHKEY="SystemGroupAuthKey $default_adminkey"
CUPS_DEFAULT_SYSTEM_AUTHKEY="$default_adminkey"
elif grep -q system.print.operator /etc/authorization; then
CUPS_SYSTEM_AUTHKEY="SystemGroupAuthKey system.print.admin"
CUPS_DEFAULT_SYSTEM_AUTHKEY="system.print.admin"
else
CUPS_SYSTEM_AUTHKEY="SystemGroupAuthKey system.preferences"
CUPS_DEFAULT_SYSTEM_AUTHKEY="system.preferences"
fi
if test "x$default_operkey" != xdefault; then
CUPS_DEFAULT_PRINTOPERATOR_AUTH="@AUTHKEY($default_operkey) @admin @lpadmin"
elif grep -q system.print.operator /etc/authorization; then
CUPS_DEFAULT_PRINTOPERATOR_AUTH="@AUTHKEY(system.print.operator) @admin @lpadmin"
else
CUPS_DEFAULT_PRINTOPERATOR_AUTH="@AUTHKEY(system.print.admin) @admin @lpadmin"
fi])
AC_CHECK_HEADER(Security/SecBasePriv.h,AC_DEFINE(HAVE_SECBASEPRIV_H))
dnl Check for sandbox/Seatbelt support
if test $uversion -ge 100; then
AC_CHECK_HEADER(sandbox.h,AC_DEFINE(HAVE_SANDBOX_H))
fi
if test $uversion -ge 110 -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
AC_MSG_RESULT(yes)
else
AC_MSG_RESULT(no)
AC_MSG_ERROR(Run 'sudo mkdir -p /usr/local/include/sandbox' and 'sudo touch /usr/local/include/sandbox/private.h' to build CUPS.)
fi
fi
dnl Check for XPC support
AC_CHECK_HEADER(xpc/xpc.h,
AC_DEFINE(HAVE_XPC)
INSTALLXPC="install-xpc")
AC_CHECK_HEADER(xpc/private.h,
AC_DEFINE(HAVE_XPC_PRIVATE_H))
;;
esac
AC_SUBST(CUPS_DEFAULT_PRINTOPERATOR_AUTH)
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_PRINTOPERATOR_AUTH, "$CUPS_DEFAULT_PRINTOPERATOR_AUTH")
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_SYSTEM_AUTHKEY, "$CUPS_DEFAULT_SYSTEM_AUTHKEY")
AC_SUBST(CUPS_SYSTEM_AUTHKEY)
AC_SUBST(INSTALLXPC)
dnl Check for build components
COMPONENTS="all"
AC_ARG_WITH(components, [ --with-components set components to build:
- "all" (default) builds everything
- "core" builds libcups and ipptool],
COMPONENTS="$withval")
case "$COMPONENTS" in
all)
BUILDDIRS="filter backend berkeley cgi-bin monitor notifier ppdc scheduler systemv conf data desktop locale man doc examples templates"
;;
core)
BUILDDIRS="data locale"
;;
*)
AC_MSG_ERROR([Bad build component "$COMPONENT" specified!])
;;
esac
AC_SUBST(CUPS_DEFAULT_PRINTADMIN_AUTH)
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_PRINTADMIN_AUTH, "$CUPS_DEFAULT_PRINTADMIN_AUTH")
AC_SUBST(CUPS_SYSTEM_AUTHKEY)
dnl See if we have POSIX ACL support...
SAVELIBS="$LIBS"
LIBS=""
AC_SEARCH_LIBS(acl_init, acl, AC_DEFINE(HAVE_ACL_INIT))
CUPSDLIBS="$CUPSDLIBS $LIBS"
LIBS="$SAVELIBS"
AC_SUBST(BACKLIBS)
AC_SUBST(CUPSDLIBS)
AC_SUBST(DBUSDIR)
dnl New default port definition for IPP...
AC_ARG_WITH(ipp-port, [ --with-ipp-port set default port number for IPP ],
DEFAULT_IPP_PORT="$withval",
DEFAULT_IPP_PORT="631")
AC_SUBST(DEFAULT_IPP_PORT)
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_IPP_PORT,$DEFAULT_IPP_PORT)
dnl
dnl End of "$Id: cups-common.m4 6981 2007-09-19 21:51:55Z mike $".
dnl
AC_SUBST(BUILDDIRS)
+149 -407
Ver Arquivo
@@ -1,69 +1,86 @@
dnl
dnl "$Id: cups-compiler.m4 6976 2007-09-18 20:39:31Z mike $"
dnl Compiler stuff for CUPS.
dnl
dnl Compiler stuff for the Common UNIX Printing System (CUPS).
dnl Copyright 2007-2014 by Apple Inc.
dnl Copyright 1997-2007 by Easy Software Products, all rights reserved.
dnl
dnl Copyright 2007 by Apple Inc.
dnl Copyright 1997-2007 by Easy Software Products, all rights reserved.
dnl
dnl These coded instructions, statements, and computer programs are the
dnl property of Apple Inc. and are protected by Federal copyright
dnl law. Distribution and use rights are outlined in the file "LICENSE.txt"
dnl which should have been included with this file. If this file is
dnl file is missing or damaged, see the license at "http://www.cups.org/".
dnl These coded instructions, statements, and computer programs are the
dnl property of Apple Inc. and are protected by Federal copyright
dnl law. Distribution and use rights are outlined in the file "LICENSE.txt"
dnl which should have been included with this file. If this file is
dnl file is missing or damaged, see the license at "http://www.cups.org/".
dnl
dnl Clear the debugging and non-shared library options unless the user asks
dnl for them...
INSTALL_STRIP=""
OPTIM=""
AC_SUBST(INSTALL_STRIP)
AC_SUBST(OPTIM)
AC_ARG_WITH(optim, [ --with-optim="flags" set optimization flags ])
AC_ARG_ENABLE(debug, [ --enable-debug turn on debugging, default=no],
[if test x$enable_debug = xyes; then
OPTIM="-g"
fi])
AC_ARG_WITH(optim, [ --with-optim set optimization flags ])
AC_ARG_ENABLE(debug, [ --enable-debug build with debugging symbols])
AC_ARG_ENABLE(debug_guards, [ --enable-debug-guards build with memory allocation guards])
AC_ARG_ENABLE(debug_printfs, [ --enable-debug-printfs build with CUPS_DEBUG_LOG support])
AC_ARG_ENABLE(unit_tests, [ --enable-unit-tests build and run unit tests])
dnl For debugging, keep symbols, otherwise strip them...
if test x$enable_debug = xyes; then
OPTIM="-g"
else
INSTALL_STRIP="-s"
fi
dnl Debug printfs can slow things down, so provide a separate option for that
if test x$enable_debug_printfs = xyes; then
CFLAGS="$CFLAGS -DDEBUG"
CXXFLAGS="$CXXFLAGS -DDEBUG"
fi
dnl Debug guards use an extra 4 bytes for some structures like strings in the
dnl string pool, so provide a separate option for that
if test x$enable_debug_guards = xyes; then
CFLAGS="$CFLAGS -DDEBUG_GUARDS"
CXXFLAGS="$CXXFLAGS -DDEBUG_GUARDS"
fi
dnl Unit tests take up time during a compile...
if test x$enable_unit_tests = xyes; then
UNITTESTS="unittests"
else
UNITTESTS=""
fi
AC_SUBST(UNITTESTS)
dnl Setup general architecture flags...
AC_ARG_WITH(archflags, [ --with-archflags="flags"
set default architecture flags ])
AC_ARG_WITH(archflags, [ --with-archflags set default architecture flags ])
AC_ARG_WITH(ldarchflags, [ --with-ldarchflags set program architecture flags ])
if test -z "$with_archflags"; then
ARCHFLAGS=""
LDARCHFLAGS=""
else
ARCHFLAGS="$with_archflags"
fi
if test -z "$with_ldarchflags"; then
if test "$uname" = Darwin; then
# Only link 32-bit programs - 64-bit is for the shared
# libraries...
LDARCHFLAGS="`echo $ARCHFLAGS | sed -e '1,$s/-arch x86_64//' -e '1,$s/-arch ppc64//'`"
# Only create Intel programs by default
LDARCHFLAGS="`echo $ARCHFLAGS | sed -e '1,$s/-arch ppc64//'`"
else
LDARCHFLAGS="$ARCHFLAGS"
fi
else
LDARCHFLAGS="$with_ldarchflags"
fi
AC_SUBST(ARCHFLAGS)
AC_SUBST(LDARCHFLAGS)
dnl Setup support for separate 32/64-bit library generation...
AC_ARG_WITH(arch32flags, [ --with-arch32flags="flags"
specifies 32-bit architecture flags])
ARCH32FLAGS=""
AC_SUBST(ARCH32FLAGS)
AC_ARG_WITH(arch64flags, [ --with-arch64flags="flags"
specifies 64-bit architecture flags])
ARCH64FLAGS=""
AC_SUBST(ARCH64FLAGS)
dnl Position-Independent Executable support on Linux...
AC_ARG_ENABLE(pie, [ --enable-pie use GCC -fPIE option, default=no])
dnl Read-only data/program support on Linux...
AC_ARG_ENABLE(relro, [ --enable-relro use GCC relro option, default=no])
AC_ARG_ENABLE(relro, [ --enable-relro build with the GCC relro option])
dnl Update compiler options...
CXXLIBS=""
CXXLIBS="${CXXLIBS:=}"
AC_SUBST(CXXLIBS)
PIEFLAGS=""
@@ -72,21 +89,6 @@ AC_SUBST(PIEFLAGS)
RELROFLAGS=""
AC_SUBST(RELROFLAGS)
LIBCUPSORDER="libcups.order"
AC_ARG_WITH(libcupsorder, [ --with-libcupsorder libcups secorder file, default=libcups.order],
if test -f "$withval"; then
LIBCUPSORDER="$withval"
fi)
AC_SUBST(LIBCUPSORDER)
LIBCUPSIMAGEORDER="libcupsimage.order"
AC_ARG_WITH(libcupsimageorder, [ --with-libcupsimagesorder
libcupsimage secorder file, default=libcupsimage.order],
if test -f "$withval"; then
LIBCUPSIMAGEORDER="$withval"
fi)
AC_SUBST(LIBCUPSIMAGEORDER)
if test -n "$GCC"; then
# Add GCC-specific compiler options...
if test -z "$OPTIM"; then
@@ -98,301 +100,114 @@ if test -n "$GCC"; then
fi
fi
if test $PICFLAG = 1 -a $uname != AIX; then
# Generate position-independent code as needed...
if test $PICFLAG = 1; then
OPTIM="-fPIC $OPTIM"
fi
case $uname in
Linux*)
if test x$enable_pie = xyes; then
PIEFLAGS="-pie -fPIE"
fi
# The -fstack-protector option is available with some versions of
# GCC and adds "stack canaries" which detect when the return address
# has been overwritten, preventing many types of exploit attacks.
AC_MSG_CHECKING(whether compiler supports -fstack-protector)
OLDCFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -fstack-protector"
AC_TRY_LINK(,,
if test "x$LSB_BUILD" = xy; then
# Can't use stack-protector with LSB binaries...
OPTIM="$OPTIM -fno-stack-protector"
else
OPTIM="$OPTIM -fstack-protector"
fi
AC_MSG_RESULT(yes),
AC_MSG_RESULT(no))
CFLAGS="$OLDCFLAGS"
if test x$enable_relro = xyes; then
RELROFLAGS="-Wl,-z,relro"
fi
;;
if test "x$LSB_BUILD" != xy; then
# The -fPIE option is available with some versions of GCC and
# adds randomization of addresses, which avoids another class of
# exploits that depend on a fixed address for common functions.
#
# Not available to LSB binaries...
AC_MSG_CHECKING(whether compiler supports -fPIE)
OLDCFLAGS="$CFLAGS"
case "$uname" in
Darwin*)
CFLAGS="$CFLAGS -fPIE -Wl,-pie"
AC_TRY_COMPILE(,,[
PIEFLAGS="-fPIE -Wl,-pie"
AC_MSG_RESULT(yes)],
AC_MSG_RESULT(no))
;;
*)
if test x$enable_pie = xyes; then
echo "Sorry, --enable-pie is not supported on this OS!"
fi
;;
esac
*)
CFLAGS="$CFLAGS -fPIE -pie"
AC_TRY_COMPILE(,,[
PIEFLAGS="-fPIE -pie"
AC_MSG_RESULT(yes)],
AC_MSG_RESULT(no))
;;
esac
CFLAGS="$OLDCFLAGS"
fi
if test "x$with_optim" = x; then
# Add useful warning options for tracking down problems...
OPTIM="-Wall -Wno-format-y2k $OPTIM"
# Additional warning options for alpha testing...
OPTIM="-Wshadow -Wunused $OPTIM"
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"
AC_TRY_COMPILE(,,
[OPTIM="$OPTIM -Wsign-conversion"
AC_MSG_RESULT(yes)],
AC_MSG_RESULT(no))
CFLAGS="$OLDCFLAGS"
AC_MSG_CHECKING(whether compiler supports -Wno-tautological-compare)
OLDCFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -Werror -Wno-tautological-compare"
AC_TRY_COMPILE(,,
[OPTIM="$OPTIM -Wno-tautological-compare"
AC_MSG_RESULT(yes)],
AC_MSG_RESULT(no))
CFLAGS="$OLDCFLAGS"
# Additional warning options for development testing...
if test -d .svn; then
OPTIM="-Werror $OPTIM"
fi
fi
case "$uname" in
HP-UX*)
if test "x$enable_32bit" = xyes; then
# Build 32-bit libraries, 64-bit base...
if test -z "$with_arch32flags"; then
ARCH32FLAGS="-milp32"
else
ARCH32FLAGS="$with_arch32flags"
fi
if test -z "$with_archflags"; then
if test -z "$with_arch64flags"; then
ARCHFLAGS="-mlp64"
else
ARCHFLAGS="$with_arch64flags"
fi
fi
fi
if test "x$enable_64bit" = xyes; then
# Build 64-bit libraries, 32-bit base...
if test -z "$with_arch64flags"; then
ARCH64FLAGS="-mlp64"
else
ARCH64FLAGS="$with_arch64flags"
fi
if test -z "$with_archflags"; then
if test -z "$with_arch32flags"; then
ARCHFLAGS="-milp32"
else
ARCHFLAGS="$with_arch32flags"
fi
fi
fi
;;
IRIX)
if test "x$enable_32bit" = xyes; then
# Build 32-bit libraries, 64-bit base...
if test -z "$with_arch32flags"; then
ARCH32FLAGS="-n32 -mips3"
else
ARCH32FLAGS="$with_arch32flags"
fi
if test -z "$with_archflags"; then
if test -z "$with_arch64flags"; then
ARCHFLAGS="-64 -mips4"
else
ARCHFLAGS="$with_arch64flags"
fi
fi
fi
if test "x$enable_64bit" = xyes; then
# Build 64-bit libraries, 32-bit base...
if test -z "$with_arch64flags"; then
ARCH64FLAGS="-64 -mips4"
else
ARCH64FLAGS="$with_arch64flags"
fi
if test -z "$with_archflags"; then
if test -z "$with_arch32flags"; then
ARCHFLAGS="-n32 -mips3"
else
ARCHFLAGS="$with_arch32flags"
fi
fi
fi
Darwin*)
# -D_FORTIFY_SOURCE=2 adds additional object size
# checking, basically wrapping all string functions
# with buffer-limited ones. Not strictly needed for
# CUPS since we already use buffer-limited calls, but
# this will catch any additions that are broken.
CFLAGS="$CFLAGS -D_FORTIFY_SOURCE=2"
;;
Linux*)
if test "x$enable_32bit" = xyes; then
# Build 32-bit libraries, 64-bit base...
if test -z "$with_arch32flags"; then
ARCH32FLAGS="-m32"
else
ARCH32FLAGS="$with_arch32flags"
fi
if test -z "$with_archflags"; then
if test -z "$with_arch64flags"; then
ARCHFLAGS="-m64"
else
ARCHFLAGS="$with_arch64flags"
fi
fi
fi
if test "x$enable_64bit" = xyes; then
# Build 64-bit libraries, 32-bit base...
if test -z "$with_arch64flags"; then
ARCH64FLAGS="-m64"
else
ARCH64FLAGS="$with_arch64flags"
fi
if test -z "$with_archflags"; then
if test -z "$with_arch32flags"; then
ARCHFLAGS="-m32"
else
ARCHFLAGS="$with_arch32flags"
fi
fi
fi
;;
SunOS*)
if test "x$enable_32bit" = xyes; then
# Build 32-bit libraries, 64-bit base...
if test -z "$with_arch32flags"; then
ARCH32FLAGS="-m32"
else
ARCH32FLAGS="$with_arch32flags"
fi
if test -z "$with_archflags"; then
if test -z "$with_arch64flags"; then
ARCHFLAGS="-m64"
else
ARCHFLAGS="$with_arch64flags"
fi
fi
fi
if test "x$enable_64bit" = xyes; then
# Build 64-bit libraries, 32-bit base...
if test -z "$with_arch64flags"; then
ARCH64FLAGS="-m64"
else
ARCH64FLAGS="$with_arch64flags"
fi
if test -z "$with_archflags"; then
if test -z "$with_arch32flags"; then
ARCHFLAGS="-m32"
else
ARCHFLAGS="$with_arch32flags"
fi
fi
# The -z relro option is provided by the Linux linker command to
# make relocatable data read-only.
if test x$enable_relro = xyes; then
RELROFLAGS="-Wl,-z,relro,-z,now"
fi
;;
esac
else
# Add vendor-specific compiler options...
case $uname in
AIX*)
if test -z "$OPTIM"; then
if test "x$with_optim" = x; then
OPTIM="-O2 -qmaxmem=6000"
else
OPTIM="$with_optim $OPTIM"
fi
fi
;;
HP-UX*)
if test -z "$OPTIM"; then
if test "x$with_optim" = x; then
OPTIM="+O2"
else
OPTIM="$with_optim $OPTIM"
fi
fi
CFLAGS="-Ae $CFLAGS"
# Warning 336 is "empty translation unit"
# Warning 829 is passing constant string as char *
CXXFLAGS="+W336,829 $CXXFLAGS"
if test $PICFLAG = 1; then
OPTIM="+z $OPTIM"
fi
if test "x$enable_32bit" = xyes; then
# Build 32-bit libraries, 64-bit base...
if test -z "$with_arch32flags"; then
ARCH32FLAGS="+DD32"
else
ARCH32FLAGS="$with_arch32flags"
fi
if test -z "$with_archflags"; then
if test -z "$with_arch64flags"; then
ARCHFLAGS="+DD64"
else
ARCHFLAGS="$with_arch64flags"
fi
fi
fi
if test "x$enable_64bit" = xyes; then
# Build 64-bit libraries, 32-bit base...
if test -z "$with_arch64flags"; then
ARCH64FLAGS="+DD64"
else
ARCH64FLAGS="$with_arch64flags"
fi
if test -z "$with_archflags"; then
if test -z "$with_arch32flags"; then
ARCHFLAGS="+DD32"
else
ARCHFLAGS="$with_arch32flags"
fi
fi
fi
;;
IRIX)
if test -z "$OPTIM"; then
if test "x$with_optim" = x; then
OPTIM="-O2"
else
OPTIM="$with_optim $OPTIM"
fi
fi
if test "x$with_optim" = x; then
OPTIM="-fullwarn -woff 1183,1209,1349,1506,3201 $OPTIM"
fi
if test "x$enable_32bit" = xyes; then
# Build 32-bit libraries, 64-bit base...
if test -z "$with_arch32flags"; then
ARCH32FLAGS="-n32 -mips3"
else
ARCH32FLAGS="$with_arch32flags"
fi
if test -z "$with_archflags"; then
if test -z "$with_arch64flags"; then
ARCHFLAGS="-64 -mips4"
else
ARCHFLAGS="$with_arch64flags"
fi
fi
fi
if test "x$enable_64bit" = xyes; then
# Build 64-bit libraries, 32-bit base...
if test -z "$with_arch64flags"; then
ARCH64FLAGS="-64 -mips4"
else
ARCH64FLAGS="$with_arch64flags"
fi
if test -z "$with_archflags"; then
if test -z "$with_arch32flags"; then
ARCHFLAGS="-n32 -mips3"
else
ARCHFLAGS="$with_arch32flags"
fi
fi
fi
;;
OSF*)
# Tru64 UNIX aka Digital UNIX aka OSF/1
if test -z "$OPTIM"; then
if test "x$with_optim" = x; then
OPTIM="-O"
else
OPTIM="$with_optim"
fi
fi
;;
SunOS*)
# Solaris
if test -z "$OPTIM"; then
@@ -403,61 +218,6 @@ else
fi
fi
if test $PICFLAG = 1; then
OPTIM="-KPIC $OPTIM"
fi
if test "x$enable_32bit" = xyes; then
# Compiling on a Solaris system, build 64-bit
# binaries with separate 32-bit libraries...
ARCH32FLAGS="-xarch=generic"
if test "x$with_optim" = x; then
# Suppress all of Sun's questionable
# warning messages, and default to
# 64-bit compiles of everything else...
OPTIM="-w $OPTIM"
fi
if test -z "$with_archflags"; then
if test -z "$with_arch64flags"; then
ARCHFLAGS="-xarch=generic64"
else
ARCHFLAGS="$with_arch64flags"
fi
fi
else
if test "x$enable_64bit" = xyes; then
# Build 64-bit libraries...
ARCH64FLAGS="-xarch=generic64"
fi
if test "x$with_optim" = x; then
# Suppress all of Sun's questionable
# warning messages, and default to
# 32-bit compiles of everything else...
OPTIM="-w $OPTIM"
fi
if test -z "$with_archflags"; then
if test -z "$with_arch32flags"; then
ARCHFLAGS="-xarch=generic"
else
ARCHFLAGS="$with_arch32flags"
fi
fi
fi
;;
UNIX_SVR*)
# UnixWare
if test -z "$OPTIM"; then
if test "x$with_optim" = x; then
OPTIM="-O"
else
OPTIM="$with_optim $OPTIM"
fi
fi
if test $PICFLAG = 1; then
OPTIM="-KPIC $OPTIM"
fi
@@ -467,36 +227,18 @@ else
# should contribute the necessary options to
# cups-support@cups.org...
echo "Building CUPS with default compiler optimizations; contact"
echo "cups-bugs@cups.org with uname and compiler options needed"
echo "for your platform, or set the CFLAGS and CXXFLAGS"
echo "environment variable before running configure."
echo "cups-devel@cups.org with uname and compiler options needed"
echo "for your platform, or set the CFLAGS and LDFLAGS environment"
echo "variables before running configure."
;;
esac
fi
# Add general compiler options per platform...
case $uname in
HP-UX*)
# HP-UX 10.20 (at least) needs this definition to get the
# h_errno global...
OPTIM="$OPTIM -D_XOPEN_SOURCE_EXTENDED"
# HP-UX 11.00 (at least) needs this definition to get the
# u_short type used by the IP headers...
OPTIM="$OPTIM -D_INCLUDE_HPUX_SOURCE"
# HP-UX 11.23 (at least) needs this definition to get the
# IPv6 header to work...
OPTIM="$OPTIM -D_HPUX_SOURCE"
;;
OSF*)
# Tru64 UNIX aka Digital UNIX aka OSF/1 need to be told
# to be POSIX-compliant...
OPTIM="$OPTIM -D_XOPEN_SOURCE=500 -D_XOPEN_SOURCE_EXTENDED -D_OSF_SOURCE"
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 6976 2007-09-18 20:39:31Z mike $".
dnl
+172 -107
Ver Arquivo
@@ -1,21 +1,18 @@
dnl
dnl "$Id: cups-defaults.m4 6754 2007-08-01 19:00:07Z mike $"
dnl Default cupsd configuration settings for CUPS.
dnl
dnl Default cupsd configuration settings for the Common UNIX Printing System
dnl (CUPS).
dnl Copyright 2007-2015 by Apple Inc.
dnl Copyright 2006-2007 by Easy Software Products, all rights reserved.
dnl
dnl Copyright 2007 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 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...
LANGUAGES="`ls -1 locale/*.po | sed -e '1,$s/locale\/cups_//' -e '1,$s/\.po//' | tr '\n' ' '`"
LANGUAGES="`ls -1 locale/cups_*.po 2>/dev/null | sed -e '1,$s/locale\/cups_//' -e '1,$s/\.po//' | tr '\n' ' '`"
AC_ARG_WITH(languages, [ --with-languages set installed languages, default=all ],[
case "$withval" in
@@ -25,6 +22,21 @@ 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 ],
CUPS_BUNDLEDIR="$withval",
if test "x$uname" = xDarwin -a $uversion -ge 100; then
CUPS_BUNDLEDIR="/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/PrintCore.framework/Versions/A"
LANGUAGES=""
else
CUPS_BUNDLEDIR=""
fi)
AC_SUBST(CUPS_BUNDLEDIR)
if test "x$CUPS_BUNDLEDIR" != x; then
AC_DEFINE_UNQUOTED(CUPS_BUNDLEDIR, "$CUPS_BUNDLEDIR")
fi
dnl Default ConfigFilePerm
AC_ARG_WITH(config_file_perm, [ --with-config-file-perm set default ConfigFilePerm value, default=0640],
CUPS_CONFIG_FILE_PERM="$withval",
@@ -36,6 +48,12 @@ AC_ARG_WITH(config_file_perm, [ --with-config-file-perm set default ConfigFileP
AC_SUBST(CUPS_CONFIG_FILE_PERM)
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_CONFIG_FILE_PERM, 0$CUPS_CONFIG_FILE_PERM)
dnl Default permissions for cupsd
AC_ARG_WITH(cupsd_file_perm, [ --with-cupsd-file-perm set default cupsd permissions, default=0500],
CUPS_CUPSD_FILE_PERM="$withval",
CUPS_CUPSD_FILE_PERM="500")
AC_SUBST(CUPS_CUPSD_FILE_PERM)
dnl Default LogFilePerm
AC_ARG_WITH(log_file_perm, [ --with-log-file-perm set default LogFilePerm value, default=0644],
CUPS_LOG_FILE_PERM="$withval",
@@ -43,8 +61,38 @@ AC_ARG_WITH(log_file_perm, [ --with-log-file-perm set default LogFilePerm va
AC_SUBST(CUPS_LOG_FILE_PERM)
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_LOG_FILE_PERM, 0$CUPS_LOG_FILE_PERM)
dnl Default FatalErrors
AC_ARG_WITH(fatal_errors, [ --with-fatal-errors set default FatalErrors value, default=config],
CUPS_FATAL_ERRORS="$withval",
CUPS_FATAL_ERRORS="config")
AC_SUBST(CUPS_FATAL_ERRORS)
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_FATAL_ERRORS, "$CUPS_FATAL_ERRORS")
dnl Default LogLevel
AC_ARG_WITH(log_level, [ --with-log-level set default LogLevel value, default=warn],
CUPS_LOG_LEVEL="$withval",
CUPS_LOG_LEVEL="warn")
AC_SUBST(CUPS_LOG_LEVEL)
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_LOG_LEVEL, "$CUPS_LOG_LEVEL")
dnl Default AccessLogLevel
AC_ARG_WITH(access_log_level, [ --with-access-log-level set default AccessLogLevel value, default=none],
CUPS_ACCESS_LOG_LEVEL="$withval",
CUPS_ACCESS_LOG_LEVEL="none")
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])
if test "x$enable_page_logging" = xyes; then
CUPS_PAGE_LOG_FORMAT=""
else
CUPS_PAGE_LOG_FORMAT="PageLogFormat"
fi
AC_SUBST(CUPS_PAGE_LOG_FORMAT)
dnl Default Browsing
AC_ARG_ENABLE(browsing, [ --enable-browsing enable Browsing by default, default=yes])
AC_ARG_ENABLE(browsing, [ --disable-browsing disable Browsing by default])
if test "x$enable_browsing" = xno; then
CUPS_BROWSING="No"
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_BROWSING, 0)
@@ -55,16 +103,16 @@ fi
AC_SUBST(CUPS_BROWSING)
dnl Default BrowseLocalProtocols
AC_ARG_WITH(local_protocols, [ --with-local-protocols set default BrowseLocalProtocols, default="CUPS"],
AC_ARG_WITH(local_protocols, [ --with-local-protocols set default BrowseLocalProtocols, default=""],
default_local_protocols="$withval",
default_local_protocols="default")
if test x$with_local_protocols != xno; then
if test "x$default_local_protocols" = "xdefault"; then
if test "x$DNSSDLIBS" != "x"; then
CUPS_BROWSE_LOCAL_PROTOCOLS="CUPS dnssd"
else
CUPS_BROWSE_LOCAL_PROTOCOLS="CUPS"
if test "x$DNSSD_BACKEND" != "x"; then
CUPS_BROWSE_LOCAL_PROTOCOLS="dnssd"
else
CUPS_BROWSE_LOCAL_PROTOCOLS=""
fi
else
CUPS_BROWSE_LOCAL_PROTOCOLS="$default_local_protocols"
@@ -77,43 +125,9 @@ AC_SUBST(CUPS_BROWSE_LOCAL_PROTOCOLS)
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_BROWSE_LOCAL_PROTOCOLS,
"$CUPS_BROWSE_LOCAL_PROTOCOLS")
dnl Default BrowseRemoteProtocols
AC_ARG_WITH(remote_protocols, [ --with-remote-protocols set default BrowseRemoteProtocols, default="CUPS"],
default_remote_protocols="$withval",
default_remote_protocols="default")
if test x$with_remote_protocols != xno; then
if test "x$default_remote_protocols" = "xdefault"; then
if test "$uname" = "Darwin" -a $uversion -ge 90; then
CUPS_BROWSE_REMOTE_PROTOCOLS=""
else
CUPS_BROWSE_REMOTE_PROTOCOLS="CUPS"
fi
else
CUPS_BROWSE_REMOTE_PROTOCOLS="$default_remote_protocols"
fi
else
CUPS_BROWSE_REMOTE_PROTOCOLS=""
fi
AC_SUBST(CUPS_BROWSE_REMOTE_PROTOCOLS)
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_BROWSE_REMOTE_PROTOCOLS,
"$CUPS_BROWSE_REMOTE_PROTOCOLS")
dnl Default BrowseShortNames
AC_ARG_ENABLE(browse_short, [ --enable-browse-short-names
enable BrowseShortNames by default, default=yes])
if test "x$enable_browse_short" = xno; then
CUPS_BROWSE_SHORT_NAMES="No"
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_BROWSE_SHORT_NAMES, 0)
else
CUPS_BROWSE_SHORT_NAMES="Yes"
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_BROWSE_SHORT_NAMES, 1)
fi
AC_SUBST(CUPS_BROWSE_SHORT_NAMES)
dnl Default DefaultShared
AC_ARG_ENABLE(default_shared, [ --enable-default-shared enable DefaultShared by default, default=yes])
AC_ARG_ENABLE(default_shared, [ --disable-default-shared
disable DefaultShared by default])
if test "x$enable_default_shared" = xno; then
CUPS_DEFAULT_SHARED="No"
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_DEFAULT_SHARED, 0)
@@ -123,38 +137,6 @@ else
fi
AC_SUBST(CUPS_DEFAULT_SHARED)
dnl Default ImplicitClasses
AC_ARG_ENABLE(implicit, [ --enable-implicit-classes
enable ImplicitClasses by default, default=yes])
if test "x$enable_implicit" = xno; then
CUPS_IMPLICIT_CLASSES="No"
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_IMPLICIT_CLASSES, 0)
else
CUPS_IMPLICIT_CLASSES="Yes"
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_IMPLICIT_CLASSES, 1)
fi
AC_SUBST(CUPS_IMPLICIT_CLASSES)
dnl Default UseNetworkDefault
AC_ARG_ENABLE(use_network_default, [ --enable-use-network-default
enable UseNetworkDefault by default, default=auto])
if test "x$enable_use_network_default" != xno; then
AC_MSG_CHECKING(whether to use network default printers)
if test "x$enable_use_network_default" = xyes -o $uname != Darwin; then
CUPS_USE_NETWORK_DEFAULT="Yes"
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_USE_NETWORK_DEFAULT, 1)
AC_MSG_RESULT(yes)
else
CUPS_USE_NETWORK_DEFAULT="No"
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_USE_NETWORK_DEFAULT, 0)
AC_MSG_RESULT(no)
fi
else
CUPS_USE_NETWORK_DEFAULT="No"
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_USE_NETWORK_DEFAULT, 0)
fi
AC_SUBST(CUPS_USE_NETWORK_DEFAULT)
dnl Determine the correct username and group for this OS...
AC_ARG_WITH(cups_user, [ --with-cups-user set default user for CUPS],
CUPS_USER="$withval",
@@ -185,6 +167,10 @@ AC_ARG_WITH(cups_user, [ --with-cups-user set default user for CUPS],
AC_MSG_RESULT(no password file, using "$CUPS_USER")
fi)
if test "x$CUPS_USER" = "xroot" -o "x$CUPS_USER" = "x0"; then
AC_MSG_ERROR([The default user for CUPS cannot be root!])
fi
AC_ARG_WITH(cups_group, [ --with-cups-group set default group for CUPS],
CUPS_GROUP="$withval",
AC_MSG_CHECKING(for default print group)
@@ -215,6 +201,10 @@ AC_ARG_WITH(cups_group, [ --with-cups-group set default group for CUPS],
AC_MSG_RESULT(no group file, using "$CUPS_GROUP")
fi)
if test "x$CUPS_GROUP" = "xroot" -o "x$CUPS_GROUP" = "xwheel" -o "x$CUPS_GROUP" = "x0"; then
AC_MSG_ERROR([The default group for CUPS cannot be root!])
fi
AC_ARG_WITH(system_groups, [ --with-system-groups set default system groups for CUPS],
CUPS_SYSTEM_GROUPS="$withval",
if test x$uname = xDarwin; then
@@ -246,9 +236,14 @@ AC_ARG_WITH(system_groups, [ --with-system-groups set default system groups
fi
fi)
CUPS_PRIMARY_SYSTEM_GROUP="`echo $CUPS_SYSTEM_GROUPS | awk '{print $1}'`"
for group in $CUPS_SYSTEM_GROUPS; do
if test "x$CUPS_GROUP" = "x$group"; then
AC_MSG_ERROR([The default system groups cannot contain the default CUPS group!])
fi
done
AC_SUBST(CUPS_USER)
AC_SUBST(CUPS_GROUP)
AC_SUBST(CUPS_SYSTEM_GROUPS)
@@ -268,7 +263,7 @@ if test x$default_printcap != xno; then
case $uname in
Darwin*)
if test $uversion -ge 90; then
CUPS_DEFAULT_PRINTCAP=""
CUPS_DEFAULT_PRINTCAP="/Library/Preferences/org.cups.printers.plist"
else
CUPS_DEFAULT_PRINTCAP="/etc/printcap"
fi
@@ -287,31 +282,72 @@ else
CUPS_DEFAULT_PRINTCAP=""
fi
AC_SUBST(CUPS_DEFAULT_PRINTCAP)
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_PRINTCAP, "$CUPS_DEFAULT_PRINTCAP")
dnl Default MaxCopies value...
AC_ARG_WITH(max-copies, [ --with-max-copies set max copies value, default=100 ],
CUPS_MAX_COPIES="$withval",
if test "x$uname" = xDarwin; then
CUPS_MAX_COPIES="999"
dnl Default LPD config file...
AC_ARG_WITH(lpdconfigfile, [ --with-lpdconfigfile set default LPDConfigFile URI],
default_lpdconfigfile="$withval",
default_lpdconfigfile="default")
if test x$default_lpdconfigfile != xno; then
if test "x$default_lpdconfigfile" = "xdefault"; then
case $uname in
Darwin*)
CUPS_DEFAULT_LPD_CONFIG_FILE="launchd:///System/Library/LaunchDaemons/org.cups.cups-lpd.plist"
;;
*)
if test "x$XINETD" != x; then
CUPS_DEFAULT_LPD_CONFIG_FILE="xinetd://$XINETD/cups-lpd"
else
CUPS_DEFAULT_LPD_CONFIG_FILE=""
fi
;;
esac
else
CUPS_MAX_COPIES="100"
fi)
CUPS_DEFAULT_LPD_CONFIG_FILE="$default_lpdconfigfile"
fi
else
CUPS_DEFAULT_LPD_CONFIG_FILE=""
fi
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_LPD_CONFIG_FILE, "$CUPS_DEFAULT_LPD_CONFIG_FILE")
AC_SUBST(CUPS_DEFAULT_LPD_CONFIG_FILE)
dnl Default SMB config file...
AC_ARG_WITH(smbconfigfile, [ --with-smbconfigfile set default SMBConfigFile URI],
default_smbconfigfile="$withval",
default_smbconfigfile="default")
if test x$default_smbconfigfile != xno; then
if test "x$default_smbconfigfile" = "xdefault"; then
if test -f /etc/smb.conf; then
CUPS_DEFAULT_SMB_CONFIG_FILE="samba:///etc/smb.conf"
else
CUPS_DEFAULT_SMB_CONFIG_FILE=""
fi
else
CUPS_DEFAULT_SMB_CONFIG_FILE="$default_smbconfigfile"
fi
else
CUPS_DEFAULT_SMB_CONFIG_FILE=""
fi
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_SMB_CONFIG_FILE, "$CUPS_DEFAULT_SMB_CONFIG_FILE")
AC_SUBST(CUPS_DEFAULT_SMB_CONFIG_FILE)
dnl Default MaxCopies value...
AC_ARG_WITH(max-copies, [ --with-max-copies set default max copies value, default=9999 ],
CUPS_MAX_COPIES="$withval",
CUPS_MAX_COPIES="9999")
AC_SUBST(CUPS_MAX_COPIES)
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_MAX_COPIES, $CUPS_MAX_COPIES)
dnl Default raw printing state
AC_ARG_ENABLE(raw_printing, [ --enable-raw-printing enable raw printing by default, default=auto])
AC_ARG_ENABLE(raw_printing, [ --disable-raw-printing do not allow raw printing by default])
if test "x$enable_raw_printing" != xno; then
AC_MSG_CHECKING(whether to enable raw printing)
if test "x$enable_raw_printing" = xyes -o $uname = Darwin; then
DEFAULT_RAW_PRINTING=""
AC_MSG_RESULT(yes)
else
DEFAULT_RAW_PRINTING="#"
AC_MSG_RESULT(no)
fi
DEFAULT_RAW_PRINTING=""
else
DEFAULT_RAW_PRINTING="#"
fi
@@ -337,6 +373,35 @@ AC_ARG_WITH(snmp-community, [ --with-snmp-community set SNMP community, defau
AC_SUBST(CUPS_SNMP_ADDRESS)
AC_SUBST(CUPS_SNMP_COMMUNITY)
dnl
dnl End of "$Id: cups-defaults.m4 6754 2007-08-01 19:00:07Z mike $".
dnl
dnl New default port definition for IPP...
AC_ARG_WITH(ipp-port, [ --with-ipp-port set port number for IPP, default=631 ],
DEFAULT_IPP_PORT="$withval",
DEFAULT_IPP_PORT="631")
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])
case "x$enable_webif" in
xno)
CUPS_WEBIF=No
CUPS_DEFAULT_WEBIF=0
;;
xyes)
CUPS_WEBIF=Yes
CUPS_DEFAULT_WEBIF=1
;;
*)
if test $uname = Darwin; then
CUPS_WEBIF=No
CUPS_DEFAULT_WEBIF=0
else
CUPS_WEBIF=Yes
CUPS_DEFAULT_WEBIF=1
fi
;;
esac
AC_SUBST(CUPS_WEBIF)
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_WEBIF, $CUPS_DEFAULT_WEBIF)
+70 -138
Ver Arquivo
@@ -1,16 +1,14 @@
dnl
dnl "$Id: cups-directories.m4 6976 2007-09-18 20:39:31Z mike $"
dnl Directory stuff for CUPS.
dnl
dnl Directory stuff for the Common UNIX Printing System (CUPS).
dnl Copyright 2007-2016 by Apple Inc.
dnl Copyright 1997-2007 by Easy Software Products, all rights reserved.
dnl
dnl Copyright 2007 by Apple Inc.
dnl Copyright 1997-2007 by Easy Software Products, all rights reserved.
dnl
dnl These coded instructions, statements, and computer programs are the
dnl property of Apple Inc. and are protected by Federal copyright
dnl law. Distribution and use rights are outlined in the file "LICENSE.txt"
dnl which should have been included with this file. If this file is
dnl file is missing or damaged, see the license at "http://www.cups.org/".
dnl These coded instructions, statements, and computer programs are the
dnl property of Apple Inc. and are protected by Federal copyright
dnl law. Distribution and use rights are outlined in the file "LICENSE.txt"
dnl which should have been included with this file. If this file is
dnl file is missing or damaged, see the license at "http://www.cups.org/".
dnl
AC_PREFIX_DEFAULT(/)
@@ -102,132 +100,65 @@ fi
dnl Fix "libdir" variable...
if test "$libdir" = "\${exec_prefix}/lib"; then
case "$uname" in
IRIX*)
libdir="$exec_prefix/lib32"
;;
Linux*)
if test -d /usr/lib64; then
if test -d /usr/lib64 -a ! -d /usr/lib64/fakeroot; then
libdir="$exec_prefix/lib64"
fi
;;
HP-UX*)
if test -d /usr/lib/hpux32; then
libdir="$exec_prefix/lib/hpux32"
fi
;;
esac
fi
dnl Setup init.d locations...
AC_ARG_WITH(rcdir, [ --with-rcdir set path for rc scripts],rcdir="$withval",rcdir="")
AC_ARG_WITH(rclevels, [ --with-rclevels set run levels for rc scripts],rclevels="$withval",rclevels="2 3 5")
AC_ARG_WITH(rcstart, [ --with-rcstart set start number for rc scripts],rcstart="$withval",rcstart="99")
AC_ARG_WITH(rcstop, [ --with-rcstop set stop number for rc scripts],rcstop="$withval",rcstop="00")
INITDIR=""
INITDDIR=""
RCLEVELS="$rclevels"
RCSTART="$rcstart"
RCSTOP="$rcstop"
if test x$rcdir = x; then
case "$uname" in
AIX*)
INITDIR="/etc/rc.d"
;;
Darwin*)
# Darwin and MacOS X...
if test -x /sbin/launchd; then
INITDDIR="/System/Library/LaunchDaemons"
else
INITDDIR="/System/Library/StartupItems/PrintingServices"
fi
;;
FreeBSD* | OpenBSD* | MirBSD* | ekkoBSD*)
# FreeBSD and OpenBSD
;;
HP-UX*)
INITDIR="/sbin"
RCLEVELS="2"
RCSTART="380"
RCSTOP="620"
;;
IRIX*)
# IRIX
INITDIR="/etc"
RCSTART="60"
RCSTOP="25"
;;
Linux | GNU)
# Linux/HURD seems to choose an init.d directory at random...
if test -d /sbin/init.d; then
# SuSE
INITDIR="/sbin/init.d"
else
if test -d /etc/init.d; then
# Others
INITDIR="/etc"
else
# RedHat
INITDIR="/etc/rc.d"
fi
fi
RCSTART="81"
RCSTOP="36"
;;
NetBSD*)
# NetBSD
INITDDIR="/etc/rc.d"
;;
OSF1*)
INITDIR="/sbin"
;;
SunOS*)
# Solaris
INITDIR="/etc"
RCSTART="81"
;;
*)
INITDIR="/etc"
;;
esac
dnl Setup private include directory...
AC_ARG_WITH(privateinclude, [ --with-privateinclude set path for private include files, default=none],privateinclude="$withval",privateinclude="")
if test "x$privateinclude" != x -a "x$privateinclude" != xnone; then
PRIVATEINCLUDE="$privateinclude/cups"
else
if test "x$rclevels" = x; then
INITDDIR="$rcdir"
else
INITDIR="$rcdir"
privateinclude=""
PRIVATEINCLUDE=""
fi
AC_SUBST(privateinclude)
AC_SUBST(PRIVATEINCLUDE)
dnl LPD sharing support...
AC_ARG_WITH(lpdconfig, [ --with-lpdconfig set URI for LPD config file],
LPDCONFIG="$withval", LPDCONFIG="")
if test "x$LPDCONFIG" = x; then
if test -f /System/Library/LaunchDaemons/org.cups.cups-lpd.plist; then
LPDCONFIG="launchd:///System/Library/LaunchDaemons/org.cups.cups-lpd.plist"
elif test "x$XINETD" != x; then
LPDCONFIG="xinetd://$XINETD/cups-lpd"
fi
fi
AC_SUBST(INITDIR)
AC_SUBST(INITDDIR)
AC_SUBST(RCLEVELS)
AC_SUBST(RCSTART)
AC_SUBST(RCSTOP)
dnl Xinetd support...
AC_ARG_WITH(xinetd, [ --with-xinetd set path for xinetd config files],XINETD="$withval",XINETD="")
if test "x$XINETD" = x -a ! -x /sbin/launchd; then
for dir in /private/etc/xinetd.d /etc/xinetd.d /usr/local/etc/xinetd.d; do
if test -d $dir; then
XINETD="$dir"
break
fi
done
if test "x$LPDCONFIG" = xoff; then
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_LPD_CONFIG, "")
else
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_LPD_CONFIG, "$LPDCONFIG")
fi
AC_SUBST(XINETD)
dnl SMB sharing support...
AC_ARG_WITH(smbconfig, [ --with-smbconfig set URI for Samba config file],
SMBCONFIG="$withval", SMBCONFIG="")
if test "x$SMBCONFIG" = x; then
if test -f /System/Library/LaunchDaemons/smbd.plist; then
SMBCONFIG="launchd:///System/Library/LaunchDaemons/smbd.plist"
else
for dir in /etc /etc/samba /usr/local/etc; do
if test -f $dir/smb.conf; then
SMBCONFIG="samba://$dir/smb.conf"
break
fi
done
fi
fi
if test "x$SMBCONFIG" = xoff; then
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_SMB_CONFIG, "")
else
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_SMB_CONFIG, "$SMBCONFIG")
fi
dnl Setup default locations...
# Cache data...
@@ -297,16 +228,11 @@ fi
AC_SUBST(CUPS_FONTPATH)
AC_DEFINE_UNQUOTED(CUPS_FONTPATH, "$CUPS_FONTPATH")
# Locale data (initial assignment allows us not to require autoconf 2.60)
localedir="${localedir:=}"
if test "$localedir" = "\${datarootdir}/locale" -o "$localedir" = ""; then
# Locale data
if test "$localedir" = "\${datarootdir}/locale"; then
case "$uname" in
Linux | GNU | *BSD* | Darwin*)
CUPS_LOCALEDIR="$datadir/locale"
;;
OSF1* | AIX*)
CUPS_LOCALEDIR="$exec_prefix/lib/nls/msg"
CUPS_LOCALEDIR="$datarootdir/locale"
;;
*)
@@ -341,7 +267,7 @@ AC_SUBST(CUPS_REQUESTS)
# Server executables...
case "$uname" in
*BSD* | Darwin*)
# *BSD and Darwin (MacOS X)
# *BSD and Darwin (macOS)
INSTALL_SYSV=""
CUPS_SERVERBIN="$exec_prefix/libexec/cups"
;;
@@ -362,10 +288,16 @@ AC_DEFINE_UNQUOTED(CUPS_SERVERROOT, "$sysconfdir/cups")
AC_SUBST(CUPS_SERVERROOT)
# Transient run-time state
CUPS_STATEDIR="$localstatedir/run/cups"
AC_DEFINE_UNQUOTED(CUPS_STATEDIR, "$localstatedir/run/cups")
AC_ARG_WITH(rundir, [ --with-rundir set transient run-time state directory],CUPS_STATEDIR="$withval",[
case "$uname" in
Darwin*)
# Darwin (macOS)
CUPS_STATEDIR="$CUPS_SERVERROOT"
;;
*)
# All others
CUPS_STATEDIR="$localstatedir/run/cups"
;;
esac])
AC_DEFINE_UNQUOTED(CUPS_STATEDIR, "$CUPS_STATEDIR")
AC_SUBST(CUPS_STATEDIR)
dnl
dnl End of "$Id: cups-directories.m4 6976 2007-09-18 20:39:31Z mike $".
dnl
+52 -26
Ver Arquivo
@@ -1,54 +1,80 @@
dnl
dnl "$Id$"
dnl DNS Service Discovery (aka Bonjour) stuff for CUPS.
dnl
dnl DNS Service Discovery (aka Bonjour) stuff for the Common UNIX Printing System (CUPS).
dnl Copyright 2007-2016 by Apple Inc.
dnl
dnl http://www.dns-sd.org
dnl http://www.multicastdns.org/
dnl http://developer.apple.com/networking/bonjour/
dnl
dnl Copyright 2007 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 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(dnssd, [ --enable-dnssd turn on DNS Service Discovery support, default=yes])
AC_ARG_ENABLE(avahi, [ --disable-avahi disable DNS Service Discovery support using Avahi])
AC_ARG_ENABLE(dnssd, [ --disable-dnssd disable DNS Service Discovery support using mDNSResponder])
AC_ARG_WITH(dnssd-libs, [ --with-dnssd-libs set directory for DNS Service Discovery library],
LDFLAGS="-L$withval $LDFLAGS"
DSOFLAGS="-L$withval $DSOFLAGS",)
AC_ARG_WITH(dnssd-includes, [ --with-dnssd-includes set directory for DNS Service Discovery includes],
CFLAGS="-I$withval $CFLAGS"
CXXFLAGS="-I$withval $CXXFLAGS"
CPPFLAGS="-I$withval $CPPFLAGS",)
DNSSDLIBS=""
DNSSD_BACKEND=""
IPPFIND_BIN=""
IPPFIND_MAN=""
if test x$enable_dnssd != xno; then
if test "x$PKGCONFIG" != x -a x$enable_avahi != xno -a x$uname != xDarwin; then
AC_MSG_CHECKING(for Avahi)
if $PKGCONFIG --exists avahi-client; then
AC_MSG_RESULT(yes)
CFLAGS="$CFLAGS `$PKGCONFIG --cflags avahi-client`"
DNSSDLIBS="`$PKGCONFIG --libs avahi-client`"
DNSSD_BACKEND="dnssd"
IPPFIND_BIN="ippfind"
IPPFIND_MAN="ippfind.\$(MAN1EXT)"
AC_DEFINE(HAVE_AVAHI)
else
AC_MSG_RESULT(no)
fi
fi
if test "x$DNSSD_BACKEND" = x -a x$enable_dnssd != xno; then
AC_CHECK_HEADER(dns_sd.h, [
case "$uname" in
Darwin*)
# Darwin and MacOS X...
DNSSDLIBS="-framework CoreFoundation -framework SystemConfiguration"
# Darwin and macOS...
AC_DEFINE(HAVE_DNSSD)
AC_DEFINE(HAVE_COREFOUNDATION)
AC_DEFINE(HAVE_SYSTEMCONFIGURATION)
DNSSDLIBS="-framework CoreFoundation -framework SystemConfiguration"
DNSSD_BACKEND="dnssd"
IPPFIND_BIN="ippfind"
IPPFIND_MAN="ippfind.\$(MAN1EXT)"
;;
*)
# All others...
AC_CHECK_LIB(dns_sd,DNSServiceProcessResult,
AC_MSG_CHECKING(for current version of dns_sd library)
SAVELIBS="$LIBS"
LIBS="$LIBS -ldns_sd"
AC_TRY_COMPILE([#include <dns_sd.h>],
[int constant = kDNSServiceFlagsShareConnection;
unsigned char txtRecord[100];
uint8_t valueLen;
TXTRecordGetValuePtr(sizeof(txtRecord),
txtRecord, "value", &valueLen);],
AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_DNSSD)
DNSSDLIBS="-ldns_sd")
DNSSDLIBS="-ldns_sd"
DNSSD_BACKEND="dnssd",
IPPFIND_BIN="ippfind"
IPPFIND_MAN="ippfind.\$(MAN1EXT)"
AC_MSG_RESULT(no))
LIBS="$SAVELIBS"
;;
esac
])
fi
AC_SUBST(DNSSDLIBS)
dnl
dnl End of "$Id$".
dnl
AC_SUBST(DNSSD_BACKEND)
AC_SUBST(IPPFIND_BIN)
AC_SUBST(IPPFIND_MAN)
+59 -43
Ver Arquivo
@@ -1,36 +1,54 @@
dnl
dnl "$Id$"
dnl GSSAPI/Kerberos library detection for CUPS.
dnl
dnl GSSAPI/Kerberos library detection.
dnl Copyright 2007-2013 by Apple Inc.
dnl Copyright 2006-2007 by Easy Software Products.
dnl
dnl Copyright 2007 by Apple Inc.
dnl Copyright 2006-2007 by Easy Software Products.
dnl This file contains Kerberos support code, copyright 2006 by
dnl Jelmer Vernooij.
dnl
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 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, [ --enable-gssapi turn on GSSAPI support, default=yes])
AC_ARG_ENABLE(gssapi, [ --disable-gssapi disable GSSAPI support])
LIBGSSAPI=""
AC_SUBST(LIBGSSAPI)
if test x$enable_gssapi != xno; then
AC_PATH_PROG(KRB5CONFIG, krb5-config)
AC_PATH_TOOL(KRB5CONFIG, krb5-config)
if test "x$KRB5CONFIG" != x; then
if test "x$uname" = "xDarwin"; then
# Mac OS X weak-links to the Kerberos framework...
LIBGSSAPI="-weak_framework Kerberos"
else
CFLAGS="`$KRB5CONFIG --cflags gssapi` $CFLAGS"
CPPFLAGS="`$KRB5CONFIG --cflags gssapi` $CPPFLAGS"
LIBGSSAPI="`$KRB5CONFIG --libs gssapi`"
fi
case "$uname" in
Darwin)
# macOS 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
AC_MSG_RESULT(yes)
LIBGSSAPI="$LIBGSSAPI -weak_framework GSS"
else
AC_MSG_RESULT(no)
fi
;;
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])
CFLAGS="`$KRB5CONFIG --cflags` $CFLAGS"
CPPFLAGS="`$KRB5CONFIG --cflags` $CPPFLAGS"
LIBGSSAPI="-lgss `$KRB5CONFIG --libs`")
;;
*)
# Other platforms just ask for GSSAPI
CFLAGS="`$KRB5CONFIG --cflags gssapi` $CFLAGS"
CPPFLAGS="`$KRB5CONFIG --cflags gssapi` $CPPFLAGS"
LIBGSSAPI="`$KRB5CONFIG --libs gssapi`"
;;
esac
AC_DEFINE(HAVE_GSSAPI, 1, [Whether GSSAPI is available])
else
# Check for vendor-specific implementations...
@@ -50,25 +68,34 @@ if test x$enable_gssapi != xno; then
if test "x$LIBGSSAPI" != x; then
AC_CHECK_HEADER(krb5.h, AC_DEFINE(HAVE_KRB5_H))
AC_CHECK_HEADER(gssapi.h, AC_DEFINE(HAVE_GSSAPI_H))
AC_CHECK_HEADER(gssapi/gssapi.h, AC_DEFINE(HAVE_GSSAPI_GSSAPI_H))
AC_CHECK_HEADER(gssapi/gssapi_generic.h, AC_DEFINE(HAVE_GSSAPI_GSSAPI_GENERIC_H))
AC_CHECK_HEADER(gssapi/gssapi_krb5.h, AC_DEFINE(HAVE_GSSAPI_GSSAPI_KRB5_H))
if test -d /System/Library/Frameworks/GSS.framework; then
AC_CHECK_HEADER(GSS/gssapi.h, AC_DEFINE(HAVE_GSS_GSSAPI_H))
AC_CHECK_HEADER(GSS/gssapi_generic.h, AC_DEFINE(HAVE_GSS_GSSAPI_GENERIC_H))
AC_CHECK_HEADER(GSS/gssapi_spi.h, AC_DEFINE(HAVE_GSS_GSSAPI_SPI_H))
else
AC_CHECK_HEADER(gssapi.h, AC_DEFINE(HAVE_GSSAPI_H))
AC_CHECK_HEADER(gssapi/gssapi.h, AC_DEFINE(HAVE_GSSAPI_GSSAPI_H))
fi
SAVELIBS="$LIBS"
LIBS="$LIBS $LIBGSSAPI"
AC_CHECK_FUNC(gsskrb5_register_acceptor_identity,
AC_DEFINE(HAVE_GSSKRB5_REGISTER_ACCEPTOR_IDENTITY))
AC_CHECK_FUNC(krb5_cc_new_unique, AC_DEFINE(HAVE_KRB5_CC_NEW_UNIQUE))
AC_CHECK_FUNC(__ApplePrivate_gss_acquire_cred_ex_f,
AC_DEFINE(HAVE_GSS_ACQUIRE_CRED_EX_F))
AC_MSG_CHECKING(for GSS_C_NT_HOSTBASED_SERVICE)
if test $ac_cv_header_gssapi_gssapi_h = yes; then
if test x$ac_cv_header_gssapi_gssapi_h = xyes; then
AC_TRY_COMPILE([ #include <gssapi/gssapi.h> ],
[ gss_OID foo = GSS_C_NT_HOSTBASED_SERVICE; ],
AC_DEFINE(HAVE_GSS_C_NT_HOSTBASED_SERVICE)
AC_MSG_RESULT(yes),
AC_MSG_RESULT(no))
elif test x$ac_cv_header_gss_gssapi_h = xyes; then
AC_TRY_COMPILE([ #include <GSS/gssapi.h> ],
[ gss_OID foo = GSS_C_NT_HOSTBASED_SERVICE; ],
AC_DEFINE(HAVE_GSS_C_NT_HOSTBASED_SERVICE)
AC_MSG_RESULT(yes),
AC_MSG_RESULT(no))
else
AC_TRY_COMPILE([ #include <gssapi.h> ],
[ gss_OID foo = GSS_C_NT_HOSTBASED_SERVICE; ],
@@ -78,13 +105,6 @@ if test x$enable_gssapi != xno; then
fi
LIBS="$SAVELIBS"
AC_MSG_CHECKING(for Heimdal Kerberos)
AC_TRY_COMPILE([ #include <krb5.h> ],
[ char *tmp = heimdal_version; ],
AC_DEFINE(HAVE_HEIMDAL)
AC_MSG_RESULT(yes),
AC_MSG_RESULT(no))
fi
fi
@@ -95,7 +115,7 @@ AC_ARG_WITH(gssservicename, [ --with-gssservicename set default gss service n
if test x$default_gssservicename != xno; then
if test "x$default_gssservicename" = "xdefault"; then
CUPS_DEFAULT_GSSSERVICENAME="ipp"
CUPS_DEFAULT_GSSSERVICENAME="host"
else
CUPS_DEFAULT_GSSSERVICENAME="$default_gssservicename"
fi
@@ -103,9 +123,5 @@ else
CUPS_DEFAULT_GSSSERVICENAME=""
fi
AC_SUBST(LIBGSSAPI)
AC_SUBST(CUPS_DEFAULT_GSSSERVICENAME)
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_GSSSERVICENAME, "$CUPS_DEFAULT_GSSSERVICENAME")
dnl
dnl End of "$Id$".
dnl
-109
Ver Arquivo
@@ -1,109 +0,0 @@
dnl
dnl "$Id: cups-image.m4 6649 2007-07-11 21:46:42Z mike $"
dnl
dnl Image library/filter stuff for the Common UNIX Printing System (CUPS).
dnl
dnl Copyright 2007 by Apple Inc.
dnl Copyright 1997-2006 by Easy Software Products, all rights reserved.
dnl
dnl These coded instructions, statements, and computer programs are the
dnl property of Apple Inc. and are protected by Federal copyright
dnl law. Distribution and use rights are outlined in the file "LICENSE.txt"
dnl which should have been included with this file. If this file is
dnl file is missing or damaged, see the license at "http://www.cups.org/".
dnl
dnl See if we want the image filters included at all...
AC_ARG_ENABLE(image, [ --enable-image turn on image filters, default=auto])
IMGFILTERS=""
if test "x$enable_image" != xno; then
AC_MSG_CHECKING(whether to build image filters)
if test "x$enable_image" = xyes -o $uname != Darwin; then
IMGFILTERS="imagetops imagetoraster"
AC_MSG_RESULT(yes)
else
AC_MSG_RESULT(no)
fi
fi
AC_SUBST(IMGFILTERS)
dnl Check for image libraries...
AC_ARG_ENABLE(jpeg, [ --enable-jpeg turn on JPEG support, default=yes])
AC_ARG_ENABLE(png, [ --enable-png turn on PNG support, default=yes])
AC_ARG_ENABLE(tiff, [ --enable-tiff turn on TIFF support, default=yes])
LIBJPEG=""
LIBPNG=""
LIBTIFF=""
LIBZ=""
AC_SUBST(LIBJPEG)
AC_SUBST(LIBPNG)
AC_SUBST(LIBTIFF)
AC_SUBST(LIBZ)
dnl Image libraries use math library functions...
AC_SEARCH_LIBS(pow, m)
dnl Save the current libraries since we don't want the image libraries
dnl included with every program...
SAVELIBS="$LIBS"
dnl JPEG library...
if test x$enable_jpeg != xno; then
AC_CHECK_HEADER(jpeglib.h,
AC_CHECK_LIB(jpeg, jpeg_destroy_decompress,
AC_DEFINE(HAVE_LIBJPEG)
LIBJPEG="-ljpeg"
LIBS="$LIBS -ljpeg"))
else
AC_MSG_NOTICE([JPEG support disabled with --disable-jpeg.])
fi
dnl ZLIB library...
AC_CHECK_HEADER(zlib.h,
AC_CHECK_LIB(z, gzgets,
AC_DEFINE(HAVE_LIBZ)
LIBZ="-lz"
LIBS="$LIBS -lz"))
dnl PNG library...
if test x$enable_png != xno; then
AC_CHECK_HEADER(png.h,
AC_CHECK_LIB(png, png_create_read_struct,
AC_DEFINE(HAVE_LIBPNG)
LIBPNG="-lpng"))
else
AC_MSG_NOTICE([PNG support disabled with --disable-png.])
fi
dnl TIFF library...
if test x$enable_tiff != xno; then
AC_CHECK_HEADER(tiff.h,
AC_CHECK_LIB(tiff, TIFFReadScanline,
AC_DEFINE(HAVE_LIBTIFF)
LIBTIFF="-ltiff"))
else
AC_MSG_NOTICE([TIFF support disabled with --disable-tiff.])
fi
dnl Restore original LIBS settings...
LIBS="$SAVELIBS"
EXPORT_LIBJPEG="$LIBJPEG"
EXPORT_LIBPNG="$LIBPNG"
EXPORT_LIBTIFF="$LIBTIFF"
EXPORT_LIBZ="$LIBZ"
AC_SUBST(EXPORT_LIBJPEG)
AC_SUBST(EXPORT_LIBPNG)
AC_SUBST(EXPORT_LIBTIFF)
AC_SUBST(EXPORT_LIBZ)
AC_CHECK_HEADER(stdlib.h,AC_DEFINE(HAVE_STDLIB_H))
dnl
dnl End of "$Id: cups-image.m4 6649 2007-07-11 21:46:42Z mike $".
dnl
+8 -14
Ver Arquivo
@@ -1,16 +1,14 @@
dnl
dnl "$Id: cups-largefile.m4 6649 2007-07-11 21:46:42Z mike $"
dnl Large file support stuff for CUPS.
dnl
dnl Large file support stuff for the Common UNIX Printing System (CUPS).
dnl Copyright 2007-2011 by Apple Inc.
dnl Copyright 1997-2005 by Easy Software Products, all rights reserved.
dnl
dnl Copyright 2007 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 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...
@@ -46,7 +44,3 @@ 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 6649 2007-07-11 21:46:42Z mike $".
dnl
-44
Ver Arquivo
@@ -1,44 +0,0 @@
dnl
dnl "$Id: cups-launchd.m4 6649 2007-07-11 21:46:42Z mike $"
dnl
dnl launchd stuff for the Common UNIX Printing System (CUPS).
dnl
dnl Copyright 2007 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(launchd, [ --enable-launchd turn on launchd support, default=yes])
DEFAULT_LAUNCHD_CONF=""
LAUNCHDLIBS=""
if test x$enable_launchd != xno; then
AC_CHECK_FUNC(launch_msg, AC_DEFINE(HAVE_LAUNCHD))
AC_CHECK_HEADER(launch.h, AC_DEFINE(HAVE_LAUNCH_H))
case "$uname" in
Darwin*)
# Darwin, MacOS X
DEFAULT_LAUNCHD_CONF="/System/Library/LaunchDaemons/org.cups.cupsd.plist"
# liblaunch is already part of libSystem
;;
*)
# All others; this test will need to be updated
;;
esac
fi
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_LAUNCHD_CONF, "$DEFAULT_LAUNCHD_CONF")
AC_SUBST(DEFAULT_LAUNCHD_CONF)
AC_SUBST(LAUNCHDLIBS)
dnl
dnl End of "$Id: cups-launchd.m4 6649 2007-07-11 21:46:42Z mike $".
dnl
-41
Ver Arquivo
@@ -1,41 +0,0 @@
dnl
dnl "$Id: cups-ldap.m4 6649 2007-07-11 21:46:42Z mike $"
dnl
dnl LDAP configuration stuff for the Common UNIX Printing System (CUPS).
dnl
dnl Copyright 2007 by Apple Inc.
dnl Copyright 2003-2006 by Easy Software Products, all rights reserved.
dnl
dnl These coded instructions, statements, and computer programs are the
dnl property of Apple Inc. and are protected by Federal copyright
dnl law. Distribution and use rights are outlined in the file "LICENSE.txt"
dnl which should have been included with this file. If this file is
dnl file is missing or damaged, see the license at "http://www.cups.org/".
dnl
AC_ARG_ENABLE(ldap, [ --enable-ldap turn on LDAP support, default=yes])
AC_ARG_WITH(openldap-libs, [ --with-openldap-libs set directory for OpenLDAP library],
LDFLAGS="-L$withval $LDFLAGS"
DSOFLAGS="-L$withval $DSOFLAGS",)
AC_ARG_WITH(openldap-includes, [ --with-openldap-includes
set directory for OpenLDAP includes],
CFLAGS="-I$withval $CFLAGS"
CXXFLAGS="-I$withval $CXXFLAGS"
CPPFLAGS="-I$withval $CPPFLAGS",)
LIBLDAP=""
if test x$enable_ldap != xno; then
AC_CHECK_HEADER(ldap.h,
AC_CHECK_LIB(ldap, ldap_initialize,
AC_DEFINE(HAVE_LDAP)
AC_DEFINE(HAVE_OPENLDAP)
LIBLDAP="-lldap"))
fi
AC_SUBST(LIBLDAP)
dnl
dnl End of "$Id: cups-ldap.m4 6649 2007-07-11 21:46:42Z mike $".
dnl
+12 -19
Ver Arquivo
@@ -1,26 +1,23 @@
dnl
dnl "$Id: cups-libtool.m4 6649 2007-07-11 21:46:42Z mike $"
dnl Libtool stuff for CUPS.
dnl
dnl Libtool stuff for the Common UNIX Printing System (CUPS).
dnl Copyright 2007-2011 by Apple Inc.
dnl Copyright 1997-2005 by Easy Software Products, all rights reserved.
dnl
dnl Copyright 2007 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 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=LIBTOOL_PATH
turn on building with libtool (UNSUPPORTED!), default=no],
AC_ARG_ENABLE(libtool_unsupported, [ --enable-libtool-unsupported
build with libtool (UNSUPPORTED!)],
[if test x$enable_libtool_unsupported != xno; then
LIBTOOL="$enable_libtool_unsupported"
enable_shared=no
echo "WARNING: libtool is not supported or endorsed by Easy Software Products."
echo " WE DO NOT PROVIDE TECHNICAL SUPPORT FOR LIBTOOL PROBLEMS."
echo " (even if you have a support contract)"
echo "WARNING: libtool is not supported or endorsed by Apple Inc."
echo " WE DO NOT PROVIDE SUPPORT FOR LIBTOOL PROBLEMS."
else
LIBTOOL=""
fi])
@@ -34,7 +31,3 @@ if test x$LIBTOOL != x; then
LINKCUPSIMAGE="../filter/\$(LIBCUPSIMAGE)"
DSO="\$(CC)"
fi
dnl
dnl End of "$Id: cups-libtool.m4 6649 2007-07-11 21:46:42Z mike $".
dnl

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