Comparar commits
377 Commits
| Autor | SHA1 | Data | |
|---|---|---|---|
| 71f63681cb | |||
| 61515785f7 | |||
| 75efa1051d | |||
| f9d9f12690 | |||
| 7416dfe99a | |||
| dd0eea8e71 | |||
| 0c229544f4 | |||
| b3533f112d | |||
| 3b2526b366 | |||
| ba38d7d9dc | |||
| 4bdbabf76b | |||
| 64e918f26a | |||
| 111ff13a26 | |||
| f4515965b3 | |||
| c7233aabe5 | |||
| 8eabd901fe | |||
| 1d708564b3 | |||
| e5d9b5e191 | |||
| 00c4573088 | |||
| 27efcd61e0 | |||
| 06cefec35c | |||
| c2def0ced7 | |||
| e9152ac713 | |||
| 3d3f64a982 | |||
| 4ecc320364 | |||
| 60c3ee0499 | |||
| 305331a392 | |||
| 40e88e9009 | |||
| 5f19ab52fe | |||
| 4a842d5397 | |||
| 75ff7c7fea | |||
| ee8618f3fd | |||
| dfc4cea4be | |||
| f253405029 | |||
| f6008c81b9 | |||
| 9941cf57f2 | |||
| fde3d2df54 | |||
| 4972f4feee | |||
| f593fc1f91 | |||
| 8a25966925 | |||
| 1d670c3987 | |||
| 1523f10d81 | |||
| 0d4d48ad63 | |||
| f902c56223 | |||
| e826f56b16 | |||
| 80360a5e4c | |||
| 737b017edf | |||
| 483fc76b98 | |||
| d939104ddc | |||
| 7d1419a770 | |||
| e1a3eca81c | |||
| f8f52a9058 | |||
| 89a653066e | |||
| 0c4bedc42d | |||
| e924ce801a | |||
| f9a12035df | |||
| f8e23ef7e7 | |||
| 54f63cdfb5 | |||
| ac0ec51ba0 | |||
| 990c79d278 | |||
| cca2420513 | |||
| 1505041083 | |||
| f0ccfab317 | |||
| 6c78e3f887 | |||
| bc0305b0b9 | |||
| ad0357ca1d | |||
| 75b9ea1c3a | |||
| 24a8828edd | |||
| 7a712c54f8 | |||
| 3f786819c8 | |||
| 567f49cba3 | |||
| ffa2ca90d5 | |||
| 9520743f2d | |||
| bf500a5653 | |||
| a782e5574a | |||
| c606bcae4e | |||
| 83385e2997 | |||
| 8a78aa3778 | |||
| 94446c2699 | |||
| 7374e9e5d4 | |||
| d48a10026a | |||
| 9c0e8e5d83 | |||
| d1f0f86b73 | |||
| 7bf181980c | |||
| 223bdaa186 | |||
| 25f3e1eef0 | |||
| ad29aeab8c | |||
| 7e5023ddea | |||
| b63a0d90da | |||
| 5489ad4342 | |||
| 3699c6372c | |||
| d680d3826c | |||
| e666fe5e38 | |||
| ff862e509f | |||
| 71f294cef9 | |||
| 56cd8959f0 | |||
| 94b4b4a07d | |||
| e5528d423b | |||
| b34254bcf1 | |||
| 4875b2f3f6 | |||
| 83f65dd609 | |||
| e4e5666b10 | |||
| 2d0a0f48e7 | |||
| 70752071b3 | |||
| a505eef406 | |||
| 4174320042 | |||
| c4aa297584 | |||
| 4ffc419764 | |||
| 766a822957 | |||
| 69518a8578 | |||
| bac0799207 | |||
| 26340b35e8 | |||
| 1bc82dd928 | |||
| 21f36711d9 | |||
| 0687ea6984 | |||
| f2d18633e2 | |||
| 23ef1cac65 | |||
| 86c809d99c | |||
| 4fcfa0cf96 | |||
| ee8d237de0 | |||
| 06399b6e0d | |||
| 890a10b7de | |||
| 1d47b929b0 | |||
| 9475ec92d8 | |||
| 2a241c9efc | |||
| 90c6ec2104 | |||
| a8109fbe78 | |||
| 94436c5a61 | |||
| 6961465fb2 | |||
| cb7f98ee7f | |||
| c5b24bfa98 | |||
| db8b865d20 | |||
| 0cb67df369 | |||
| 0fa6c7fa54 | |||
| c1420c8744 | |||
| c41769ffd0 | |||
| a469f8a576 | |||
| 76aa1ac14c | |||
| 3dd9c34058 | |||
| 5a9febac19 | |||
| 37e7e6e0b2 | |||
| a29fd7ddb5 | |||
| f3c17241a4 | |||
| 271780fb87 | |||
| 82cc1f9ac3 | |||
| 3e7fe0ca76 | |||
| bb0d23b21b | |||
| 3ee4274c97 | |||
| 12f89d241c | |||
| dcb445bcf3 | |||
| 9c80ffa289 | |||
| a2326b5b72 | |||
| d7225fc298 | |||
| 9b66acc599 | |||
| 10ddcf65af | |||
| 83e0800111 | |||
| 85dda01c84 | |||
| a48458814a | |||
| 771bd8cbff | |||
| bd8b6777d6 | |||
| f99f369831 | |||
| d4d033982c | |||
| f228370c3f | |||
| 88f9aafc49 | |||
| 321d8d57da | |||
| eac3a0a01b | |||
| 22c9029b44 | |||
| 07ed0e9a43 | |||
| 84315f460a | |||
| 82f972324d | |||
| 31db8dedac | |||
| f14324a792 | |||
| c8fef167ba | |||
| e60ec91f3e | |||
| 515b46cde4 | |||
| 0268488e2f | |||
| c779abb06a | |||
| 229681c188 | |||
| 0837b7e828 | |||
| 1106b00e75 | |||
| 10d09e334a | |||
| 6c48a6cafc | |||
| 7cf5915ead | |||
| 030ae6a14e | |||
| 4220952d4d | |||
| c7017eccd2 | |||
| cc75483441 | |||
| 6d2f911bdd | |||
| 39ff2fe72b | |||
| aaf19ab07e | |||
| e2d18a01cc | |||
| 5180a04ce8 | |||
| 61e2aeb0be | |||
| a480a1b6b4 | |||
| 71e160228f | |||
| 54afec3350 | |||
| ba55dc12de | |||
| 5a6b583acf | |||
| f8b3a85b79 | |||
| 4168188389 | |||
| 5a662dc060 | |||
| ef55b74533 | |||
| 3fb9c47ea6 | |||
| 101decd054 | |||
| 4d301e694f | |||
| b226ab9913 | |||
| 18ecb42821 | |||
| 7a0cbd5e57 | |||
| ee6ddad257 | |||
| 4a4b4f9914 | |||
| f701418f7b | |||
| 60198c6dba | |||
| e38f5e9c4d | |||
| 85b5d1dfa7 | |||
| 4e6f60f000 | |||
| acb056cb17 | |||
| 97c9a8d722 | |||
| 393ac6abae | |||
| b0f6947b4d | |||
| 68b10830fa | |||
| 536bc2c652 | |||
| 6c663ae27a | |||
| 178cb7369d | |||
| f11a948a02 | |||
| e07d4801f9 | |||
| 38e73f8781 | |||
| 94da7e344c | |||
| 238c383265 | |||
| 8b116e6004 | |||
| 9aff70cc17 | |||
| d7871c8c7f | |||
| 1340db2dab | |||
| b9faaae17c | |||
| ede613e028 | |||
| f0ab5bff8a | |||
| bf3816c7ed | |||
| 745129beeb | |||
| dfd5680b87 | |||
| d1c13e1686 | |||
| d2354e6397 | |||
| c168a833ca | |||
| 557dde9fbc | |||
| 426c6a5959 | |||
| 8b450588f4 | |||
| ed6e7faf3e | |||
| 52f6f666c3 | |||
| 9380acaa78 | |||
| 4b3f67ff4c | |||
| e6013cfab0 | |||
| e4572d571c | |||
| 28b9d139c0 | |||
| 6e8b116d7f | |||
| 758a062feb | |||
| 02797ade68 | |||
| 61cf44e2b7 | |||
| 076fd0e4fb | |||
| 58dc193312 | |||
| f2245c695c | |||
| cda47a960f | |||
| 1f6f3dbcf9 | |||
| 0af14961a8 | |||
| b19ccc9e27 | |||
| 49d8745278 | |||
| c5571a1d68 | |||
| 9a4f8274e9 | |||
| 5f64df2982 | |||
| 247efae55f | |||
| 06d4e77b9b | |||
| 1ff0402e47 | |||
| 9f5eb9be66 | |||
| ee571f261a | |||
| 749b1e90a8 | |||
| 005dd1eb9e | |||
| 5d6412a9f1 | |||
| e78998dfeb | |||
| 66ab9486ef | |||
| 1f0275e3cc | |||
| 4509bb4933 | |||
| 75bd9771f6 | |||
| dd1abb6b5f | |||
| c934a06cde | |||
| 79e1d494ec | |||
| 8922323b9f | |||
| bdd6c45b5e | |||
| 20fbc90347 | |||
| 47879b8b63 | |||
| 5eb9da713f | |||
| 01ce6322ca | |||
| 3c8c76971a | |||
| c9fc04c6ec | |||
| 969307f096 | |||
| a0f6818ebf | |||
| d8bcaa3c4c | |||
| 7a14d7682b | |||
| a4f1b3dff2 | |||
| 634763e80e | |||
| 3dfe78b336 | |||
| ae71f5deb4 | |||
| 839a51c83c | |||
| 50fe720154 | |||
| db0bd74adb | |||
| 64a69576c8 | |||
| a603edef72 | |||
| 568fa3faf1 | |||
| d6943d1d31 | |||
| ac884b6a1c | |||
| 5a738aeaea | |||
| d9bca400be | |||
| 5bd77a735f | |||
| 91c84a3551 | |||
| 080811b190 | |||
| 3d052e4330 | |||
| a4924f6c45 | |||
| 0a6827453a | |||
| a41f09e265 | |||
| e94d2f1068 | |||
| 2fb7629816 | |||
| cc9a7e967e | |||
| 65a152d3f1 | |||
| 183ee7626a | |||
| 2e4ff8afcb | |||
| 56ab62c60c | |||
| 7dfedb921d | |||
| c277e2f802 | |||
| db1f069b7f | |||
| 76cd9e37aa | |||
| 7ff4fea9bc | |||
| c24d21342f | |||
| 355e94dc85 | |||
| cc0d019f5e | |||
| bc44d92092 | |||
| 09a101d671 | |||
| 3d8365b8dc | |||
| b94498cfba | |||
| 323c5de1e8 | |||
| c0e1af835b | |||
| f42414bf8a | |||
| f899b12170 | |||
| 7594b2247b | |||
| f7deaa1a21 | |||
| b86bc4cf57 | |||
| 411affcf6a | |||
| 26d47ec688 | |||
| 2abf387cae | |||
| 07725fee41 | |||
| d09495fadd | |||
| 8ca02f3c05 | |||
| f7faf1f5c3 | |||
| c07d5b2daf | |||
| ed48691112 | |||
| 9e22304f01 | |||
| 7a6a01ddca | |||
| 3608048605 | |||
| f301802fc2 | |||
| a9252913e7 | |||
| a74454a757 | |||
| 89d46774ee | |||
| e53920b922 | |||
| d6ae789d92 | |||
| 80ca45929e | |||
| e1d6a77454 | |||
| 480ef0fe29 | |||
| 757d2cad8f | |||
| 4744bd907e | |||
| b423cd4cb9 | |||
| ecdc06282a | |||
| bd7854cb4d | |||
| 4400e98de2 | |||
| e00b005a05 | |||
| ffb6300882 | |||
| a4d045870e | |||
| 09ec001812 | |||
| 923edb689d | |||
| fa73b22906 | |||
| 4a09f02d10 | |||
| ef416fc25c | |||
| 9ec11526e1 |
@@ -1,10 +1,47 @@
|
||||
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.
|
||||
|
||||
+11
-2
@@ -1,11 +1,20 @@
|
||||
CHANGES-IPPTOOL.txt - 2013-05-02
|
||||
CHANGES-IPPTOOL.txt - 2014-03-28
|
||||
--------------------------------
|
||||
|
||||
This file provides a list of changes to the ipptool binary distribution posted
|
||||
on cups.org.
|
||||
|
||||
2013-05-02
|
||||
2014-03-28
|
||||
|
||||
- Fixed SSL support on Windows (STR #4358)
|
||||
|
||||
|
||||
2013-07-15
|
||||
|
||||
- New ippfind tool now included with ipptool.
|
||||
- Added support for automatically extending the timeout when all of the
|
||||
request data has not yet been written (all platforms but Windows
|
||||
which does not support it...)
|
||||
- Fixed several ipptool test files that used old STATUS names.
|
||||
|
||||
|
||||
|
||||
+150
-1
@@ -1,6 +1,155 @@
|
||||
CHANGES.txt - 1.7b1 - 2013-04-18
|
||||
CHANGES.txt - 1.7.2 - 2014-04-10
|
||||
--------------------------------
|
||||
|
||||
CHANGES IN CUPS V1.7.2
|
||||
|
||||
- Security: The scheduler now blocks URLs containing embedded HTML
|
||||
(STR #4356)
|
||||
- Documentation fixes (STR #3259, STR #4346, STR #4355)
|
||||
- Fixed the Japanese localization (STR #4385)
|
||||
- Added a German localization (STR #4363)
|
||||
- The cupsfilter command incorrectly read the cupsd.conf file; it now
|
||||
reads the cups-files.conf file instead.
|
||||
- Fixed OS X builds with Xcode 5.x (<rdar://problem/15914959>)
|
||||
- Fixed SSL support on Windows (STR #4358)
|
||||
- Fixed documentation and naming of Create-Job/Printer-Subscriptions
|
||||
operations (STR #4389)
|
||||
- Phone numbers in fax jobs were not properly filtered for IPP FaxOut
|
||||
(<rdar://problem/16351701>)
|
||||
- Fixed a memory leak in the label printer driver (STR #4393)
|
||||
- Updated Linux "relro" support (STR #4349)
|
||||
- cupsEnumDests did not set the "is_default" field (STR #4332)
|
||||
- cupsDoIORequest could miss the server status, causing failed lpadmin
|
||||
and other administrative commands (STR #4386)
|
||||
- cupsEnumDests didn't always call the callback function (STR #4380)
|
||||
- "lp -i job-id -H hold" did not work (STR #nnn)
|
||||
- CUPS didn't compile on older platforms (STR #4338)
|
||||
- Several libcups files did not have the Apple license exception
|
||||
notice (STR #4361)
|
||||
- Fixed a D-BUS threading issue that caused the scheduler to crash
|
||||
(STR #4347)
|
||||
- The scheduler now automatically reconnects to Avahi as needed
|
||||
(STR #4370, STR #4373)
|
||||
- The scheduler did not handle GET requests for the log files properly
|
||||
(STR #3265)
|
||||
- The dnssd backend did not always report all discovered printers using
|
||||
Avahi (STR #4365)
|
||||
- The Zebra printer driver did not properly handle negative "label top"
|
||||
values (STR #4354)
|
||||
- The scheduler did not always update the MakeModel value in
|
||||
printers.conf after updating the driver (STR #4264)
|
||||
- The LPD mini daemon did not support print jobs larger than 2GB
|
||||
(STR #4351)
|
||||
- Fixed a bug in the status reading code when sending a compressed data
|
||||
stream to an IPP printer/server (<rdar://problem/16019623>)
|
||||
- The IPP backend might not include all job attributes in Validate-Job
|
||||
operations (<rdar://problem/16025435>)
|
||||
- Fixed some clang-reported issues (<rdar://problem/15936066>)
|
||||
|
||||
|
||||
CHANGES IN CUPS V1.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 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
|
||||
|
||||
+2
-1
@@ -1,4 +1,4 @@
|
||||
CREDITS.txt - 2012-07-16
|
||||
CREDITS.txt - 2013-07-23
|
||||
------------------------
|
||||
|
||||
Few projects are completed by one person, and CUPS is no exception. We'd
|
||||
@@ -39,6 +39,7 @@ like to thank the following individuals for their contributions:
|
||||
Vincenzo Reale - Italian localization.
|
||||
Petter Reinholdtsen - HP-UX compiler stuff.
|
||||
Juan Pablo González Riopedre - Spanish localization.
|
||||
Giovanni Scafora - Italian localization.
|
||||
Opher Shachar - Hebrew localization.
|
||||
Stuart Stevens - HP JetDirect IPP information.
|
||||
Andrea Suatoni - IRIX desktop integration and testing.
|
||||
|
||||
+4
-5
@@ -1,4 +1,4 @@
|
||||
INSTALL - CUPS v1.7b1 - 2013-04-18
|
||||
INSTALL - CUPS v1.7.2 - 2014-04-10
|
||||
----------------------------------
|
||||
|
||||
This file describes how to compile and install CUPS from source code. For more
|
||||
@@ -147,7 +147,7 @@ INSTALLING THE SOFTWARE
|
||||
|
||||
The EPM software is available at:
|
||||
|
||||
http://www.epmhome.org/
|
||||
http://www.msweet.org/
|
||||
|
||||
|
||||
CREATING BINARY DISTRIBUTIONS WITH EPM
|
||||
@@ -197,10 +197,9 @@ GETTING DEBUG LOGGING FROM CUPS
|
||||
REPORTING PROBLEMS
|
||||
|
||||
If you have problems, READ THE DOCUMENTATION FIRST! If the documentation
|
||||
does not solve your problems, please post a message on the "cups.general"
|
||||
forum at:
|
||||
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
|
||||
|
||||
+53
-30
@@ -1,4 +1,4 @@
|
||||
IPPTOOL.txt - 2013-05-02
|
||||
IPPTOOL.txt - 2014-04-10
|
||||
------------------------
|
||||
|
||||
See the file CHANGES-IPPTOOL.txt for a list of changes to this software.
|
||||
@@ -6,14 +6,46 @@ See the file CHANGES-IPPTOOL.txt for a list of changes to this software.
|
||||
|
||||
INTRODUCTION
|
||||
|
||||
CUPS includes a user program called ipptool that can be used to send
|
||||
arbitrary IPP requests to a CUPS server or IPP printer. This tool started
|
||||
life as part of the CUPS automated test suite and has grown to support
|
||||
complex conformance tests and a simple way to query printer, job, and
|
||||
subscription attributes.
|
||||
CUPS includes two user programs for IPP printers. The first is called
|
||||
ipptool and can be used to send arbitrary IPP requests to a CUPS server or
|
||||
IPP printer. This tool started life as part of the CUPS automated test
|
||||
suite and has grown to support complex conformance tests and a simple way
|
||||
to query printer, job, and subscription attributes.
|
||||
|
||||
The second program called ippfind that can be used to find IPP printers
|
||||
that have registered themselves using Bonjour (DNS-SD, mDNS, and Zeroconf)
|
||||
and run commands such as ipptool.
|
||||
|
||||
|
||||
BASIC USAGE
|
||||
READING THE DOCUMENTATION
|
||||
|
||||
Full documentation on the ipptool command can be found in the
|
||||
"man-ipptool.html" and "man-ipptoolfile.html" files; the latter describes
|
||||
the test file format supported by ipptool.
|
||||
|
||||
Full documentation on the ippfind command can be found in the
|
||||
"man-ippfind.html" file.
|
||||
|
||||
|
||||
IPPFIND BASIC USAGE
|
||||
|
||||
The ippfind command can be used to discover IPP printers on your network.
|
||||
For example, the following command prints the printer URI of registered IPP
|
||||
printers:
|
||||
|
||||
ippfind
|
||||
|
||||
To find all color IPP printers, run:
|
||||
|
||||
ippfind --txt-color T
|
||||
|
||||
And to run the IPP Everywhere conformance test file on every registered IPP
|
||||
printer, run the following command:
|
||||
|
||||
ippfind _ipp._tcp,_print --exec ipptool -t '{}' ipp-everywhere.test \;
|
||||
|
||||
|
||||
IPPTOOL BASIC USAGE
|
||||
|
||||
The ipptool command requires a printer URI and one or more "test" files that
|
||||
describe the operations, attributes to display, and expected status and
|
||||
@@ -151,37 +183,28 @@ IPP EVERYWHERE TESTING
|
||||
372 pages including the 90 pages produced by the regular IPP test suite.
|
||||
|
||||
|
||||
READING THE DOCUMENTATION
|
||||
|
||||
The command usage is described in the ipptest(1) man page, while the file
|
||||
format is described in the ipptestfile(5) man page. Both are provided in
|
||||
HTML format with the standalone releases of ipptool.
|
||||
|
||||
|
||||
GETTING SUPPORT AND OTHER RESOURCES
|
||||
|
||||
If you have problems, READ THE DOCUMENTATION FIRST! We also provide many
|
||||
If you have problems, READ THE DOCUMENTATION FIRST! We also provide
|
||||
discussion forums which are available at:
|
||||
|
||||
http://www.cups.org/newsgroups.php
|
||||
|
||||
See the CUPS web site at "http://www.cups.org/" for other resources.
|
||||
http://www.cups.org/
|
||||
|
||||
|
||||
REPORTING BUGS
|
||||
|
||||
If you believe you have discovered a bug in ipptool, please fill out the
|
||||
bug form at:
|
||||
If you believe you have discovered a bug in ippfind or ipptool, please fill
|
||||
out the bug form at:
|
||||
|
||||
http://www.cups.org/str.php
|
||||
|
||||
Be sure to identify the version of CUPS and ipptool (if you downloaded the
|
||||
standalone version) you are using, the printer (if any) and firmware
|
||||
version, and include any files that apply.
|
||||
Be sure to identify the version of CUPS and ippfind/ipptool (if you
|
||||
downloaded the standalone version) you are using, the printer (if any) and
|
||||
firmware version, and include any files that apply.
|
||||
|
||||
If you downloaded the standalone version of ipptool, please also re-run the
|
||||
test with debug logging enabled. Run the following commands on Windows to
|
||||
enable debug logging:
|
||||
If you downloaded the standalone version of ippfind/ipptool, please also
|
||||
re-run the command with debug logging enabled. Run the following commands
|
||||
on Windows to enable debug logging:
|
||||
|
||||
setdebug.bat
|
||||
|
||||
@@ -190,14 +213,14 @@ REPORTING BUGS
|
||||
CUPS_DEBUG_LOG=ipptool.log; export CUPS_DEBUG_LOG
|
||||
CUPS_DEBUG_LEVEL=6; export CUPS_DEBUG_LEVEL
|
||||
|
||||
Then when you run the ipptool command a new "ipptool.log" file will be
|
||||
created with detailed information - attach this file to the bug you file
|
||||
as well.
|
||||
Then when you run the ippfind or ipptool command a new "ipptool.log" file
|
||||
will be created with detailed information - attach this file to the bug you
|
||||
file as well.
|
||||
|
||||
|
||||
LEGAL STUFF
|
||||
|
||||
CUPS is Copyright 2007-2013 by Apple Inc. CUPS and the CUPS logo are
|
||||
CUPS is Copyright 2007-2014 by Apple Inc. CUPS and the CUPS logo are
|
||||
trademarks of Apple Inc.
|
||||
|
||||
The MD5 Digest code is Copyright 1999 Aladdin Enterprises.
|
||||
|
||||
+6
-3
@@ -1,9 +1,9 @@
|
||||
#
|
||||
# "$Id$"
|
||||
# "$Id: Makedefs.in 11154 2013-07-17 15:21:18Z msweet $"
|
||||
#
|
||||
# Common makefile definitions for CUPS.
|
||||
#
|
||||
# Copyright 2007-2012 by Apple Inc.
|
||||
# Copyright 2007-2013 by Apple Inc.
|
||||
# Copyright 1997-2007 by Easy Software Products, all rights reserved.
|
||||
#
|
||||
# These coded instructions, statements, and computer programs are the
|
||||
@@ -138,6 +138,8 @@ DNSSD_BACKEND = @DNSSD_BACKEND@
|
||||
DSOFLAGS = -L../cups @DSOFLAGS@
|
||||
DSOLIBS = @DSOLIBS@ $(COMMONLIBS)
|
||||
DNSSDLIBS = @DNSSDLIBS@
|
||||
IPPFIND_BIN = @IPPFIND_BIN@
|
||||
IPPFIND_MAN = @IPPFIND_MAN@
|
||||
LAUNCHDLIBS = @LAUNCHDLIBS@
|
||||
LDFLAGS = -L../cgi-bin -L../cups -L../filter -L../ppdc \
|
||||
-L../scheduler @LDARCHFLAGS@ \
|
||||
@@ -216,6 +218,7 @@ SERVERBIN = $(BUILDROOT)@CUPS_SERVERBIN@
|
||||
SERVERROOT = $(BUILDROOT)@CUPS_SERVERROOT@
|
||||
SMFMANIFESTDIR = @SMFMANIFESTDIR@
|
||||
STATEDIR = $(BUILDROOT)@CUPS_STATEDIR@
|
||||
USBQUIRKS = @USBQUIRKS@
|
||||
XINETD = @XINETD@
|
||||
|
||||
MAN1EXT = @MAN1EXT@
|
||||
@@ -258,5 +261,5 @@ DBUSDIR = @DBUSDIR@
|
||||
|
||||
|
||||
#
|
||||
# End of "$Id$"
|
||||
# End of "$Id: Makedefs.in 11154 2013-07-17 15:21:18Z msweet $"
|
||||
#
|
||||
|
||||
+31
-8
@@ -1,9 +1,9 @@
|
||||
#
|
||||
# "$Id$"
|
||||
# "$Id: Makefile 11370 2013-10-30 15:08:29Z msweet $"
|
||||
#
|
||||
# Top-level Makefile for CUPS.
|
||||
#
|
||||
# Copyright 2007-2012 by Apple Inc.
|
||||
# Copyright 2007-2013 by Apple Inc.
|
||||
# Copyright 1997-2007 by Easy Software Products, all rights reserved.
|
||||
#
|
||||
# These coded instructions, statements, and computer programs are the
|
||||
@@ -128,8 +128,11 @@ depend:
|
||||
|
||||
|
||||
#
|
||||
# Run the clang.llvm.org static code analysis tool on the C sources.
|
||||
# (at least checker-231 is required for scan-build to work this way)
|
||||
# Run the Clang static code analysis tool on the sources, available here:
|
||||
#
|
||||
# http://clang-analyzer.llvm.org
|
||||
#
|
||||
# At least checker-231 is required.
|
||||
#
|
||||
|
||||
.PHONY: clang clang-changes
|
||||
@@ -140,6 +143,26 @@ 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...
|
||||
#
|
||||
@@ -242,7 +265,7 @@ debugcheck: all unittests
|
||||
|
||||
|
||||
#
|
||||
# Create HTML documentation...
|
||||
# Create HTML documentation using Mini-XML's mxmldoc (http://www.msweet.org/)...
|
||||
#
|
||||
|
||||
apihelp:
|
||||
@@ -259,7 +282,7 @@ framedhelp:
|
||||
|
||||
|
||||
#
|
||||
# Create an Xcode docset...
|
||||
# Create an Xcode docset using Mini-XML's mxmldoc (http://www.msweet.org/)...
|
||||
#
|
||||
|
||||
docset: apihelp
|
||||
@@ -295,7 +318,7 @@ sloc:
|
||||
|
||||
|
||||
#
|
||||
# Make software distributions using EPM (http://www.epmhome.org/)...
|
||||
# Make software distributions using EPM (http://www.msweet.org/)...
|
||||
#
|
||||
|
||||
EPMFLAGS = -v --output-dir dist $(EPMARCH)
|
||||
@@ -329,5 +352,5 @@ dist: all
|
||||
|
||||
|
||||
#
|
||||
# End of "$Id$".
|
||||
# End of "$Id: Makefile 11370 2013-10-30 15:08:29Z msweet $".
|
||||
#
|
||||
|
||||
+2
-10
@@ -1,14 +1,6 @@
|
||||
README - CUPS v1.7b1 - 2013-04-18
|
||||
README - CUPS v1.7.2 - 2014-04-10
|
||||
---------------------------------
|
||||
|
||||
************************************************
|
||||
************************************************
|
||||
**** ****
|
||||
**** BETA SOFTWARE - USE AT YOUR OWN RISK ****
|
||||
**** ****
|
||||
************************************************
|
||||
************************************************
|
||||
|
||||
Looking for compile instructions? Read the file "INSTALL.txt" instead...
|
||||
|
||||
|
||||
@@ -157,7 +149,7 @@ PRINTING FILES
|
||||
|
||||
LEGAL STUFF
|
||||
|
||||
CUPS is Copyright 2007-2013 by Apple Inc. CUPS and the CUPS logo are
|
||||
CUPS is Copyright 2007-2014 by Apple Inc. CUPS and the CUPS logo are
|
||||
trademarks of Apple Inc.
|
||||
|
||||
The MD5 Digest code is Copyright 1999 Aladdin Enterprises.
|
||||
|
||||
+8
-3
@@ -1,9 +1,9 @@
|
||||
#
|
||||
# "$Id$"
|
||||
# "$Id: Makefile 11154 2013-07-17 15:21:18Z msweet $"
|
||||
#
|
||||
# Backend makefile for CUPS.
|
||||
#
|
||||
# Copyright 2007-2012 by Apple Inc.
|
||||
# Copyright 2007-2013 by Apple Inc.
|
||||
# Copyright 1997-2007 by Easy Software Products, all rights reserved.
|
||||
#
|
||||
# These coded instructions, statements, and computer programs are the
|
||||
@@ -109,6 +109,11 @@ install: all install-data install-headers install-libs install-exec
|
||||
#
|
||||
|
||||
install-data:
|
||||
if test "x$(USBQUIRKS)" != x; then \
|
||||
echo Installing USB quirks in $(USBQUIRKS); \
|
||||
$(INSTALL_DIR) -m 755 $(USBQUIRKS); \
|
||||
$(INSTALL_DATA) org.cups.usb-quirks $(USBQUIRKS); \
|
||||
fi
|
||||
|
||||
|
||||
#
|
||||
@@ -296,5 +301,5 @@ include Dependencies
|
||||
|
||||
|
||||
#
|
||||
# End of "$Id$".
|
||||
# End of "$Id: Makefile 11154 2013-07-17 15:21:18Z msweet $".
|
||||
#
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* "$Id: backend-private.h 10996 2013-05-29 11:51:34Z msweet $"
|
||||
*
|
||||
* Backend support definitions for CUPS.
|
||||
*
|
||||
@@ -334,5 +334,5 @@ extern int backendWaitLoop(int snmp_fd, http_addr_t *addr,
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
* End of "$Id: backend-private.h 10996 2013-05-29 11:51:34Z msweet $".
|
||||
*/
|
||||
|
||||
+12
-3
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* "$Id: dnssd.c 11623 2014-02-19 20:18:10Z msweet $"
|
||||
*
|
||||
* DNS-SD discovery backend for CUPS.
|
||||
*
|
||||
@@ -95,6 +95,7 @@ static int job_canceled = 0;
|
||||
static AvahiSimplePoll *simple_poll = NULL;
|
||||
/* Poll information */
|
||||
static int got_data = 0; /* Got data from poll? */
|
||||
static int browsers = 0; /* Number of running browsers */
|
||||
#endif /* HAVE_AVAHI */
|
||||
|
||||
|
||||
@@ -345,6 +346,7 @@ main(int argc, /* I - Number of command-line args */
|
||||
return (1);
|
||||
}
|
||||
|
||||
browsers = 6;
|
||||
avahi_service_browser_new(client, AVAHI_IF_UNSPEC,
|
||||
AVAHI_PROTO_UNSPEC,
|
||||
"_fax-ipp._tcp", NULL, 0,
|
||||
@@ -558,7 +560,11 @@ main(int argc, /* I - Number of command-line args */
|
||||
|
||||
fprintf(stderr, "DEBUG: sent=%d, count=%d\n", sent, count);
|
||||
|
||||
#ifdef HAVE_AVAHI
|
||||
if (sent == cupsArrayCount(devices) && browsers == 0)
|
||||
#else
|
||||
if (sent == cupsArrayCount(devices))
|
||||
#endif /* HAVE_AVAHI */
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -710,9 +716,12 @@ browse_callback(
|
||||
break;
|
||||
|
||||
case AVAHI_BROWSER_REMOVE:
|
||||
case AVAHI_BROWSER_ALL_FOR_NOW:
|
||||
case AVAHI_BROWSER_CACHE_EXHAUSTED:
|
||||
break;
|
||||
|
||||
case AVAHI_BROWSER_ALL_FOR_NOW:
|
||||
browsers--;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1320,5 +1329,5 @@ unquote(char *dst, /* I - Destination buffer */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
* End of "$Id: dnssd.c 11623 2014-02-19 20:18:10Z msweet $".
|
||||
*/
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* "$Id: ieee1284.c 10996 2013-05-29 11:51:34Z msweet $"
|
||||
*
|
||||
* IEEE-1284 support functions for CUPS.
|
||||
*
|
||||
@@ -487,5 +487,5 @@ backendGetMakeModel(
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
* End of "$Id: ieee1284.c 10996 2013-05-29 11:51:34Z msweet $".
|
||||
*/
|
||||
|
||||
+105
-72
@@ -1,36 +1,18 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* "$Id: ipp.c 11779 2014-03-28 20:48:44Z msweet $"
|
||||
*
|
||||
* IPP backend for CUPS.
|
||||
* IPP backend for CUPS.
|
||||
*
|
||||
* Copyright 2007-2013 by Apple Inc.
|
||||
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
|
||||
* Copyright 2007-2013 by Apple Inc.
|
||||
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
* 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.
|
||||
* cancel_job() - Cancel a print job.
|
||||
* check_printer_state() - Check the printer state.
|
||||
* monitor_printer() - Monitor the printer state.
|
||||
* new_request() - Create a new print creation or validation
|
||||
* request.
|
||||
* password_cb() - Disable the password prompt for
|
||||
* cupsDoFileRequest().
|
||||
* quote_string() - Quote a string value.
|
||||
* report_attr() - Report an IPP attribute value.
|
||||
* report_printer_state() - Report the printer state.
|
||||
* run_as_user() - Run the IPP backend as the printing user.
|
||||
* sigterm_handler() - Handle 'terminate' signals that stop the backend.
|
||||
* timeout_cb() - Handle HTTP timeouts.
|
||||
* update_reasons() - Update the printer-state-reasons values.
|
||||
* This file is subject to the Apple OS-Developed Software exception.
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -133,6 +115,7 @@ static const char * const pattrs[] = /* Printer attributes we want */
|
||||
"media-col-supported",
|
||||
"multiple-document-handling-supported",
|
||||
"operations-supported",
|
||||
"print-color-mode-supported",
|
||||
"printer-alert",
|
||||
"printer-alert-description",
|
||||
"printer-is-accepting-jobs",
|
||||
@@ -180,7 +163,7 @@ static ipp_t *new_request(ipp_op_t op, int version, const char *uri,
|
||||
ppd_file_t *ppd,
|
||||
ipp_attribute_t *media_col_sup,
|
||||
ipp_attribute_t *doc_handling_sup,
|
||||
int print_color_mode);
|
||||
ipp_attribute_t *print_color_mode_sup);
|
||||
static const char *password_cb(const char *prompt, http_t *http,
|
||||
const char *method, const char *resource,
|
||||
int *user_data);
|
||||
@@ -267,12 +250,12 @@ main(int argc, /* I - Number of command-line args */
|
||||
ipp_attribute_t *doc_handling_sup; /* multiple-document-handling-supported */
|
||||
ipp_attribute_t *printer_state; /* printer-state attribute */
|
||||
ipp_attribute_t *printer_accepting; /* printer-is-accepting-jobs */
|
||||
ipp_attribute_t *print_color_mode_sup;/* Does printer support print-color-mode? */
|
||||
int create_job = 0, /* Does printer support Create-Job? */
|
||||
get_job_attrs = 0, /* Does printer support Get-Job-Attributes? */
|
||||
send_document = 0, /* Does printer support Send-Document? */
|
||||
validate_job = 0, /* Does printer support Validate-Job? */
|
||||
print_color_mode = 0; /* Does printer support print-color-mode? */
|
||||
int copies, /* Number of copies for job */
|
||||
copies, /* Number of copies for job */
|
||||
copies_remaining; /* Number of copies remaining */
|
||||
const char *content_type, /* CONTENT_TYPE environment variable */
|
||||
*final_content_type, /* FINAL_CONTENT_TYPE environment var */
|
||||
@@ -366,7 +349,8 @@ main(int argc, /* I - Number of command-line args */
|
||||
* that way.
|
||||
*/
|
||||
|
||||
if (!getuid() && (value = getenv("AUTH_UID")) != NULL)
|
||||
if (!getuid() && (value = getenv("AUTH_UID")) != NULL &&
|
||||
!getenv("AUTH_PASSWORD"))
|
||||
{
|
||||
uid_t uid = (uid_t)atoi(value);
|
||||
/* User ID */
|
||||
@@ -1040,7 +1024,8 @@ main(int argc, /* I - Number of command-line args */
|
||||
delay = _cupsNextDelay(delay, &prev_delay);
|
||||
|
||||
ippDelete(supported);
|
||||
supported = NULL;
|
||||
supported = NULL;
|
||||
ipp_status = IPP_STATUS_ERROR_BUSY;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
@@ -1116,9 +1101,7 @@ main(int argc, /* I - Number of command-line args */
|
||||
media_col_sup->values[i].string.text);
|
||||
}
|
||||
|
||||
print_color_mode = ippFindAttribute(supported,
|
||||
"print-color-mode-supported",
|
||||
IPP_TAG_KEYWORD) != NULL;
|
||||
print_color_mode_sup = ippFindAttribute(supported, "print-color-mode-supported", IPP_TAG_KEYWORD);
|
||||
|
||||
if ((operations_sup = ippFindAttribute(supported, "operations-supported",
|
||||
IPP_TAG_ENUM)) != NULL)
|
||||
@@ -1400,7 +1383,7 @@ main(int argc, /* I - Number of command-line args */
|
||||
request = new_request(IPP_VALIDATE_JOB, version, uri, argv[2],
|
||||
monitor.job_name, num_options, options, compression,
|
||||
copies_sup ? copies : 1, document_format, pc, ppd,
|
||||
media_col_sup, doc_handling_sup, print_color_mode);
|
||||
media_col_sup, doc_handling_sup, print_color_mode_sup);
|
||||
|
||||
response = cupsDoRequest(http, request, resource);
|
||||
|
||||
@@ -1486,7 +1469,7 @@ main(int argc, /* I - Number of command-line args */
|
||||
version, uri, argv[2], monitor.job_name, num_options,
|
||||
options, compression, copies_sup ? copies : 1,
|
||||
document_format, pc, ppd, media_col_sup,
|
||||
doc_handling_sup, print_color_mode);
|
||||
doc_handling_sup, print_color_mode_sup);
|
||||
|
||||
/*
|
||||
* Do the request...
|
||||
@@ -1698,8 +1681,8 @@ main(int argc, /* I - Number of command-line args */
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME,
|
||||
"requesting-user-name", NULL, argv[2]);
|
||||
|
||||
if ((i + 1) >= num_files)
|
||||
ippAddBoolean(request, IPP_TAG_OPERATION, "last-document", 1);
|
||||
ippAddBoolean(request, IPP_TAG_OPERATION, "last-document",
|
||||
(i + 1) >= num_files);
|
||||
|
||||
if (document_format)
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_MIMETYPE,
|
||||
@@ -2499,7 +2482,8 @@ new_request(
|
||||
ppd_file_t *ppd, /* I - PPD file data */
|
||||
ipp_attribute_t *media_col_sup, /* I - media-col-supported values */
|
||||
ipp_attribute_t *doc_handling_sup, /* I - multiple-document-handling-supported values */
|
||||
int print_color_mode) /* I - Printer supports print-color-mode */
|
||||
ipp_attribute_t *print_color_mode_sup)
|
||||
/* I - Printer supports print-color-mode */
|
||||
{
|
||||
int i; /* Looping var */
|
||||
ipp_t *request; /* Request data */
|
||||
@@ -2601,17 +2585,27 @@ new_request(
|
||||
"job-password-encryption", NULL, keyword);
|
||||
}
|
||||
|
||||
if (pc->account_id &&
|
||||
(keyword = cupsGetOption("job-account-id", num_options,
|
||||
options)) != NULL)
|
||||
ippAddString(request, IPP_TAG_JOB, IPP_TAG_NAME, "job-account-id",
|
||||
NULL, keyword);
|
||||
if (pc->account_id)
|
||||
{
|
||||
if ((keyword = cupsGetOption("job-account-id", num_options,
|
||||
options)) == NULL)
|
||||
keyword = cupsGetOption("job-billing", num_options, options);
|
||||
|
||||
if (pc->accounting_user_id &&
|
||||
(keyword = cupsGetOption("job-accounting-user-id", num_options,
|
||||
options)) != NULL)
|
||||
ippAddString(request, IPP_TAG_JOB, IPP_TAG_NAME,
|
||||
"job-accounting-user-id", NULL, keyword);
|
||||
if (keyword)
|
||||
ippAddString(request, IPP_TAG_JOB, IPP_TAG_NAME, "job-account-id",
|
||||
NULL, keyword);
|
||||
}
|
||||
|
||||
if (pc->accounting_user_id)
|
||||
{
|
||||
if ((keyword = cupsGetOption("job-accounting-user-id", num_options,
|
||||
options)) == NULL)
|
||||
keyword = user;
|
||||
|
||||
if (keyword)
|
||||
ippAddString(request, IPP_TAG_JOB, IPP_TAG_NAME,
|
||||
"job-accounting-user-id", NULL, keyword);
|
||||
}
|
||||
|
||||
for (mandatory = (char *)cupsArrayFirst(pc->mandatory);
|
||||
mandatory;
|
||||
@@ -2664,6 +2658,14 @@ new_request(
|
||||
strlen(keyword));
|
||||
break;
|
||||
default :
|
||||
if (!strcmp(mandatory, "print-color-mode") && !strcmp(keyword, "monochrome"))
|
||||
{
|
||||
if (ippContainsString(print_color_mode_sup, "auto-monochrome"))
|
||||
keyword = "auto-monochrome";
|
||||
else if (ippContainsString(print_color_mode_sup, "process-monochrome") && !ippContainsString(print_color_mode_sup, "monochrome"))
|
||||
keyword = "process-monochrome";
|
||||
}
|
||||
|
||||
ippAddString(request, IPP_TAG_JOB, value_tag, mandatory,
|
||||
NULL, keyword);
|
||||
break;
|
||||
@@ -2738,21 +2740,31 @@ new_request(
|
||||
ippAddString(request, IPP_TAG_JOB, IPP_TAG_KEYWORD, "output-bin",
|
||||
NULL, keyword);
|
||||
|
||||
color_attr_name = print_color_mode ? "print-color-mode" : "output-mode";
|
||||
color_attr_name = print_color_mode_sup ? "print-color-mode" : "output-mode";
|
||||
|
||||
if ((keyword = cupsGetOption("print-color-mode", num_options,
|
||||
options)) != NULL)
|
||||
options)) == NULL)
|
||||
{
|
||||
if ((choice = ppdFindMarkedChoice(ppd, "ColorModel")) != NULL)
|
||||
{
|
||||
if (!_cups_strcasecmp(choice->choice, "Gray"))
|
||||
keyword = "monochrome";
|
||||
else
|
||||
keyword = "color";
|
||||
}
|
||||
}
|
||||
|
||||
if (keyword && !strcmp(keyword, "monochrome"))
|
||||
{
|
||||
if (ippContainsString(print_color_mode_sup, "auto-monochrome"))
|
||||
keyword = "auto-monochrome";
|
||||
else if (ippContainsString(print_color_mode_sup, "process-monochrome") && !ippContainsString(print_color_mode_sup, "monochrome"))
|
||||
keyword = "process-monochrome";
|
||||
}
|
||||
|
||||
if (keyword)
|
||||
ippAddString(request, IPP_TAG_JOB, IPP_TAG_KEYWORD, color_attr_name,
|
||||
NULL, keyword);
|
||||
else if ((choice = ppdFindMarkedChoice(ppd, "ColorModel")) != NULL)
|
||||
{
|
||||
if (!_cups_strcasecmp(choice->choice, "Gray"))
|
||||
ippAddString(request, IPP_TAG_JOB, IPP_TAG_KEYWORD,
|
||||
color_attr_name, NULL, "monochrome");
|
||||
else
|
||||
ippAddString(request, IPP_TAG_JOB, IPP_TAG_KEYWORD,
|
||||
color_attr_name, NULL, "color");
|
||||
}
|
||||
|
||||
if ((keyword = cupsGetOption("print-quality", num_options,
|
||||
options)) != NULL)
|
||||
@@ -2865,19 +2877,39 @@ new_request(
|
||||
if ((keyword = cupsGetOption("phone", num_options, options)) != NULL)
|
||||
{
|
||||
ipp_t *destination; /* destination collection */
|
||||
char tel_uri[1024]; /* tel: URI */
|
||||
char phone[1024], /* Phone number string */
|
||||
*ptr, /* Pointer into string */
|
||||
tel_uri[1024]; /* tel: URI */
|
||||
static const char * const allowed = "0123456789#*-+.()";
|
||||
/* Allowed characters */
|
||||
|
||||
destination = ippNew();
|
||||
|
||||
httpAssembleURI(HTTP_URI_CODING_ALL, tel_uri, sizeof(tel_uri), "tel",
|
||||
NULL, NULL, 0, keyword);
|
||||
ippAddString(destination, IPP_TAG_JOB, IPP_TAG_URI, "destination-uri",
|
||||
NULL, tel_uri);
|
||||
/*
|
||||
* Unescape and filter out spaces and other characters that are not
|
||||
* allowed in a tel: URI.
|
||||
*/
|
||||
|
||||
_httpDecodeURI(phone, keyword, sizeof(phone));
|
||||
for (ptr = phone; *ptr;)
|
||||
{
|
||||
if (!strchr(allowed, *ptr))
|
||||
_cups_strcpy(ptr, ptr + 1);
|
||||
else
|
||||
ptr ++;
|
||||
}
|
||||
|
||||
httpAssembleURI(HTTP_URI_CODING_ALL, tel_uri, sizeof(tel_uri), "tel", NULL, NULL, 0, phone);
|
||||
ippAddString(destination, IPP_TAG_JOB, IPP_TAG_URI, "destination-uri", NULL, tel_uri);
|
||||
|
||||
if ((keyword = cupsGetOption("faxPrefix", num_options,
|
||||
options)) != NULL && *keyword)
|
||||
ippAddString(destination, IPP_TAG_JOB, IPP_TAG_TEXT,
|
||||
"pre-dial-string", NULL, keyword);
|
||||
{
|
||||
char predial[1024]; /* Pre-dial string */
|
||||
|
||||
_httpDecodeURI(predial, keyword, sizeof(predial));
|
||||
ippAddString(destination, IPP_TAG_JOB, IPP_TAG_TEXT, "pre-dial-string", NULL, predial);
|
||||
}
|
||||
|
||||
ippAddCollection(request, IPP_TAG_JOB, "destination-uris", destination);
|
||||
ippDelete(destination);
|
||||
@@ -2973,6 +3005,8 @@ password_cb(const char *prompt, /* I - Prompt (not used) */
|
||||
{
|
||||
(*password_tries) ++;
|
||||
|
||||
cupsSetUser(username);
|
||||
|
||||
return (password);
|
||||
}
|
||||
else
|
||||
@@ -3015,7 +3049,7 @@ quote_string(const char *s, /* I - String */
|
||||
{
|
||||
if (*s == '\\' || *s == '\"' || *s == '\'')
|
||||
{
|
||||
if (q < (qend - 3))
|
||||
if (qptr < (qend - 4))
|
||||
{
|
||||
*qptr++ = '\\';
|
||||
*qptr++ = '\\';
|
||||
@@ -3403,7 +3437,6 @@ run_as_user(char *argv[], /* I - Command-line arguments */
|
||||
|
||||
if (conn)
|
||||
{
|
||||
xpc_connection_suspend(conn);
|
||||
xpc_connection_cancel(conn);
|
||||
xpc_release(conn);
|
||||
}
|
||||
@@ -3669,5 +3702,5 @@ update_reasons(ipp_attribute_t *attr, /* I - printer-state-reasons or NULL */
|
||||
}
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
* End of "$Id: ipp.c 11779 2014-03-28 20:48:44Z msweet $".
|
||||
*/
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* "$Id: lpd.c 10996 2013-05-29 11:51:34Z msweet $"
|
||||
*
|
||||
* Line Printer Daemon backend for CUPS.
|
||||
*
|
||||
@@ -1331,5 +1331,5 @@ sigterm_handler(int sig) /* I - Signal */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
* End of "$Id: lpd.c 10996 2013-05-29 11:51:34Z msweet $".
|
||||
*/
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* "$Id: network.c 3755 2012-03-30 05:59:14Z msweet $"
|
||||
*
|
||||
* Common backend network APIs for CUPS.
|
||||
*
|
||||
@@ -322,5 +322,5 @@ backendNetworkSideCB(
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
* End of "$Id: network.c 3755 2012-03-30 05:59:14Z msweet $".
|
||||
*/
|
||||
|
||||
@@ -0,0 +1,214 @@
|
||||
# USB backend 'quirks' file.
|
||||
#
|
||||
# This file lists known issues with various vendors or printers. Each
|
||||
# line contains either a comment (starting with #) or the USB vendor ID,
|
||||
# product ID (omit for all vendor products), and a list of known issues:
|
||||
#
|
||||
# blacklist The printer is not functional with the USB backend.
|
||||
# no-reattach Do no re-attach usblp kernel module after printing.
|
||||
# soft-reset Do a soft reset after printing for cleanup.
|
||||
# unidir Only supported unidirectional I/O
|
||||
# usb-init Needs vendor USB initialization string.
|
||||
# vendor-class Uses vendor-specific class or subclass.
|
||||
# whitelist The printer is functional with the USB backend.
|
||||
|
||||
# HP DeskJet 895C
|
||||
0x03f0 0x0004 unidir
|
||||
|
||||
# HP DeskJet 880C
|
||||
0x03f0 0x0104 unidir
|
||||
|
||||
# HP DeskJet 815C
|
||||
0x03f0 0x0204 unidir
|
||||
|
||||
# HP DeskJet 810C/812C
|
||||
0x03f0 0x0304 unidir
|
||||
|
||||
# HP DeskJet 830C
|
||||
0x03f0 0x0404 unidir
|
||||
|
||||
# HP DeskJet 885C
|
||||
0x03f0 0x0504 unidir
|
||||
|
||||
# HP DeskJet 840C
|
||||
0x03f0 0x0604 unidir
|
||||
|
||||
# HP DeskJet 816C
|
||||
0x03f0 0x0804 unidir
|
||||
|
||||
# HP Deskjet 959C
|
||||
0x03f0 0x1104 unidir
|
||||
|
||||
# NEC Picty900 (HP OEM)
|
||||
0x0409 0xefbe unidir
|
||||
|
||||
# NEC Picty760 (HP OEM)
|
||||
0x0409 0xbef4 unidir
|
||||
|
||||
# NEC Picty920 (HP OEM)
|
||||
0x0409 0xf0be unidir
|
||||
|
||||
# NEC Picty800 (HP OEM)
|
||||
0x0409 0xf1be unidir
|
||||
|
||||
# Lexmark International, Inc. (e250d), https://bugs.launchpad.net/bugs/1084164
|
||||
0x043d 0x00f3 no-reattach
|
||||
|
||||
# Kyocera Mita FS 820, by zut <kernel@zut.de>
|
||||
0x0482 0x0010 unidir
|
||||
|
||||
# Canon, Inc. PIXMA iP6000D Printer, https://bugs.launchpad.net/bugs/1160638
|
||||
0x04a9 0x1095 unidir
|
||||
|
||||
# Canon, Inc. PIXMA iP4200 Printer, http://www.cups.org/str.php?L4155
|
||||
0x04a9 0x10a2 unidir
|
||||
|
||||
# Canon, Inc. PIXMA iP4300 Printer, https://bugs.launchpad.net/bugs/1032385
|
||||
0x04a9 0x10b6 unidir
|
||||
|
||||
# Canon, Inc. MP210 https://bugzilla.redhat.com/show_bug.cgi?id=847923#c53
|
||||
0x04a9 0x1721 unidir
|
||||
|
||||
# Canon, Inc. MP500 Printer, https://bugs.launchpad.net/bugs/1032456
|
||||
0x04a9 0x170c unidir
|
||||
|
||||
# Canon, Inc. MP510 Printer, https://bugs.launchpad.net/bugs/1050009
|
||||
0x04a9 0x1717 unidir
|
||||
|
||||
# Canon, Inc. MP550 Printer, http://www.cups.org/str.php?L4155
|
||||
0x04a9 0x173d unidir
|
||||
|
||||
# Canon, Inc. MP560 Printer, http://www.cups.org/str.php?L4155
|
||||
0x04a9 0x173e unidir
|
||||
|
||||
# Canon, Inc. MF4150 Printer, https://bugs.launchpad.net/bugs/1160638
|
||||
0x04a9 0x26a3 no-reattach
|
||||
|
||||
# Brother Industries, Ltd HL-1430 Laser Printer, https://bugs.launchpad.net/bugs/1038695
|
||||
0x04f9 0x001a no-reattach
|
||||
|
||||
# Brother Industries, Ltd HL-1440 Laser Printer, https://bugs.launchpad.net/bugs/1000253
|
||||
0x04f9 0x000d no-reattach unidir
|
||||
|
||||
# Brother Industries, Ltd HL-1450 Laser Printer, https://bugs.launchpad.net/bugs/1000253
|
||||
0x04f9 0x000e no-reattach unidir
|
||||
|
||||
# Oki Data Corp. Okipage 14ex Printer, https://bugs.launchpad.net/bugs/872483
|
||||
0x06bc 0x000b no-reattach
|
||||
|
||||
# Oki Data Corp. B410d, https://bugs.launchpad.net/bugs/872483
|
||||
0x06bc 0x01c7 no-reattach
|
||||
|
||||
# Seiko Epson Corp. Stylus Color 740 / Photo 750, http://bugs.debian.org/697970
|
||||
0x04b8 0x0001 no-reattach unidir
|
||||
|
||||
# Seiko Epson Corp. Stylus Color 670, https://bugs.launchpad.net/bugs/872483
|
||||
0x04b8 0x0005 no-reattach
|
||||
|
||||
# Seiko Epson Receipt Printer M129C
|
||||
0x04b8 0x0202 vendor-class
|
||||
|
||||
# Prolific Technology, Inc. PL2305 Parallel Port (USB -> Parallel adapter), https://bugs.launchpad.net/bugs/987485
|
||||
0x067b 0x2305 no-reattach soft-reset unidir
|
||||
|
||||
# Xerox Phaser 3124 https://bugzilla.redhat.com/show_bug.cgi?id=867392
|
||||
0x0924 0x3ce9 no-reattach
|
||||
|
||||
# Xerox WorkCentre 3210 https://bugs.launchpad.net/bugs/1102470
|
||||
0x0924 0x4293 no-reattach
|
||||
|
||||
# QinHeng Electronics CH340S (USB -> Parallel adapter), https://bugs.launchpad.net/bugs/1000253
|
||||
0x1a86 0x7584 no-reattach
|
||||
|
||||
# All Samsung devices, https://bugs.launchpad.net/bugs/1032456
|
||||
0x04e8 soft-reset
|
||||
|
||||
# All Zebra devices, https://bugs.launchpad.net/bugs/1001028
|
||||
0x0a5f unidir
|
||||
|
||||
# Canon CP-10
|
||||
0x04a9 0x304a blacklist
|
||||
|
||||
# Canon CP-100
|
||||
0x04a9 0x3063 blacklist
|
||||
|
||||
# Canon CP-200
|
||||
0x04a9 0x307c blacklist
|
||||
|
||||
# Canon CP-300
|
||||
0x04a9 0x307d blacklist
|
||||
|
||||
# Canon CP-220
|
||||
0x04a9 0x30bd blacklist
|
||||
|
||||
# Canon CP-330
|
||||
0x04a9 0x30be blacklist
|
||||
|
||||
# Canon SELPHY CP400
|
||||
0x04a9 0x30f6 blacklist
|
||||
|
||||
# Canon SELPHY CP600
|
||||
0x04a9 0x310b blacklist
|
||||
|
||||
# Canon SELPHY CP710
|
||||
0x04a9 0x3127 blacklist
|
||||
|
||||
# Canon SELPHY CP510
|
||||
0x04a9 0x3128 blacklist
|
||||
|
||||
# Canon SELPHY ES1
|
||||
0x04a9 0x3141 blacklist
|
||||
|
||||
# Canon SELPHY CP730
|
||||
0x04a9 0x3142 blacklist
|
||||
|
||||
# Canon SELPHY CP720
|
||||
0x04a9 0x3143 blacklist
|
||||
|
||||
# Canon SELPHY CP750
|
||||
0x04a9 0x3170 blacklist
|
||||
|
||||
# Canon SELPHY CP740
|
||||
0x04a9 0x3171 blacklist
|
||||
|
||||
# Canon SELPHY ES2
|
||||
0x04a9 0x3185 blacklist
|
||||
|
||||
# Canon SELPHY ES20
|
||||
0x04a9 0x3186 blacklist
|
||||
|
||||
# Canon SELPHY CP770
|
||||
0x04a9 0x31aa blacklist
|
||||
|
||||
# Canon SELPHY CP760
|
||||
0x04a9 0x31ab blacklist
|
||||
|
||||
# Canon SELPHY ES30
|
||||
0x04a9 0x31b0 blacklist
|
||||
|
||||
# Canon SELPHY CP780
|
||||
0x04a9 0x31dd blacklist
|
||||
|
||||
# Canon SELPHY ES40
|
||||
0x04a9 0x31ee blacklist
|
||||
|
||||
# Canon SELPHY CP800
|
||||
0x04a9 0x3214 blacklist
|
||||
|
||||
# Canon SELPHY CP900
|
||||
0x04a9 0x3255 blacklist
|
||||
|
||||
# Canon SELPHY CP810
|
||||
0x04a9 0x3256 blacklist
|
||||
|
||||
# Canon SELPHY CP500
|
||||
0x04a9 0x30f5 blacklist
|
||||
|
||||
# Canon SELPHY ES3
|
||||
0x04a9 0x31af blacklist
|
||||
|
||||
# Canon SELPHY CP780
|
||||
0x04a9 0x31dd blacklist
|
||||
|
||||
# Lexmark E238 (<rdar://problem/14493054>)
|
||||
0x043d 0x00d7 no-reattach
|
||||
Arquivo executável → Arquivo normal
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* "$Id: runloop.c 10996 2013-05-29 11:51:34Z msweet $"
|
||||
*
|
||||
* Common run loop APIs for CUPS backends.
|
||||
*
|
||||
@@ -539,5 +539,5 @@ backendWaitLoop(
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
* End of "$Id: runloop.c 10996 2013-05-29 11:51:34Z msweet $".
|
||||
*/
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* "$Id: snmp-supplies.c 11319 2013-09-27 16:18:26Z msweet $"
|
||||
*
|
||||
* SNMP supplies functions for CUPS.
|
||||
*
|
||||
* Copyright 2008-2012 by Apple Inc.
|
||||
* Copyright 2008-2013 by Apple Inc.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
* property of Apple Inc. and are protected by Federal copyright
|
||||
@@ -62,6 +62,7 @@ typedef struct /**** Printer supply data ****/
|
||||
char name[CUPS_SNMP_MAX_STRING], /* Name of supply */
|
||||
color[8]; /* Color: "#RRGGBB" or "none" */
|
||||
int colorant, /* Colorant index */
|
||||
sclass, /* Supply class */
|
||||
type, /* Supply type */
|
||||
max_capacity, /* Maximum capacity */
|
||||
level; /* Current level value */
|
||||
@@ -148,6 +149,13 @@ static const int prtMarkerSuppliesMaxCapacity[] =
|
||||
(sizeof(prtMarkerSuppliesMaxCapacity) /
|
||||
sizeof(prtMarkerSuppliesMaxCapacity[0]));
|
||||
/* Offset to supply index */
|
||||
static const int prtMarkerSuppliesClass[] =
|
||||
{ CUPS_OID_prtMarkerSuppliesClass, -1 },
|
||||
/* Class OID */
|
||||
prtMarkerSuppliesClassOffset =
|
||||
(sizeof(prtMarkerSuppliesClass) /
|
||||
sizeof(prtMarkerSuppliesClass[0]));
|
||||
/* Offset to supply index */
|
||||
static const int prtMarkerSuppliesType[] =
|
||||
{ CUPS_OID_prtMarkerSuppliesType, -1 },
|
||||
/* Type OID */
|
||||
@@ -257,6 +265,9 @@ backendSNMPSupplies(
|
||||
else
|
||||
percent = 50;
|
||||
|
||||
if (supplies[i].sclass == CUPS_TC_receptacleThatIsFilled)
|
||||
percent = 100 - percent;
|
||||
|
||||
if (percent <= 5)
|
||||
{
|
||||
switch (supplies[i].type)
|
||||
@@ -561,14 +572,14 @@ backend_init_supplies(
|
||||
/*
|
||||
* Yes, read the cache file:
|
||||
*
|
||||
* 2 num_supplies charset
|
||||
* 3 num_supplies charset
|
||||
* device description
|
||||
* supply structures...
|
||||
*/
|
||||
|
||||
if (cupsFileGets(cachefile, value, sizeof(value)))
|
||||
{
|
||||
if (sscanf(value, "2 %d%d", &num_supplies, &charset) == 2 &&
|
||||
if (sscanf(value, "3 %d%d", &num_supplies, &charset) == 2 &&
|
||||
num_supplies <= CUPS_MAX_SUPPLIES &&
|
||||
cupsFileGets(cachefile, value, sizeof(value)))
|
||||
{
|
||||
@@ -664,7 +675,7 @@ backend_init_supplies(
|
||||
|
||||
if ((cachefile = cupsFileOpen(cachefilename, "w")) != NULL)
|
||||
{
|
||||
cupsFilePrintf(cachefile, "2 %d %d\n", num_supplies, charset);
|
||||
cupsFilePrintf(cachefile, "3 %d %d\n", num_supplies, charset);
|
||||
cupsFilePrintf(cachefile, "%s\n", description);
|
||||
|
||||
if (num_supplies > 0)
|
||||
@@ -969,6 +980,25 @@ backend_walk_cb(cups_snmp_t *packet, /* I - SNMP packet */
|
||||
packet->object_value.integer > 0)
|
||||
supplies[i - 1].max_capacity = packet->object_value.integer;
|
||||
}
|
||||
else if (_cupsSNMPIsOIDPrefixed(packet, prtMarkerSuppliesClass))
|
||||
{
|
||||
/*
|
||||
* Get marker class...
|
||||
*/
|
||||
|
||||
i = packet->object_name[prtMarkerSuppliesClassOffset];
|
||||
if (i < 1 || i > CUPS_MAX_SUPPLIES ||
|
||||
packet->object_type != CUPS_ASN1_INTEGER)
|
||||
return;
|
||||
|
||||
fprintf(stderr, "DEBUG2: prtMarkerSuppliesClass.1.%d = %d\n", i,
|
||||
packet->object_value.integer);
|
||||
|
||||
if (i > num_supplies)
|
||||
num_supplies = i;
|
||||
|
||||
supplies[i - 1].sclass = packet->object_value.integer;
|
||||
}
|
||||
else if (_cupsSNMPIsOIDPrefixed(packet, prtMarkerSuppliesType))
|
||||
{
|
||||
/*
|
||||
@@ -1073,5 +1103,5 @@ utf16_to_utf8(
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
* End of "$Id: snmp-supplies.c 11319 2013-09-27 16:18:26Z msweet $".
|
||||
*/
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* "$Id: snmp.c 10996 2013-05-29 11:51:34Z msweet $"
|
||||
*
|
||||
* SNMP discovery backend for CUPS.
|
||||
*
|
||||
@@ -1391,5 +1391,5 @@ update_cache(snmp_cache_t *device, /* I - Device */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
* End of "$Id: snmp.c 10996 2013-05-29 11:51:34Z msweet $".
|
||||
*/
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* "$Id: socket.c 10996 2013-05-29 11:51:34Z msweet $"
|
||||
*
|
||||
* AppSocket backend for CUPS.
|
||||
*
|
||||
@@ -520,5 +520,5 @@ wait_bc(int device_fd, /* I - Socket */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
* End of "$Id: socket.c 10996 2013-05-29 11:51:34Z msweet $".
|
||||
*/
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* "$Id: test1284.c 10996 2013-05-29 11:51:34Z msweet $"
|
||||
*
|
||||
* IEEE-1284 support functions test program for CUPS.
|
||||
*
|
||||
@@ -80,5 +80,5 @@ main(int argc, /* I - Number of command-line args */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
* End of "$Id: test1284.c 10996 2013-05-29 11:51:34Z msweet $".
|
||||
*/
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* "$Id: testbackend.c 4297 2013-05-10 16:04:59Z msweet $"
|
||||
*
|
||||
* Backend test program for CUPS.
|
||||
*
|
||||
@@ -684,5 +684,5 @@ walk_cb(const char *oid, /* I - OID */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
* End of "$Id: testbackend.c 4297 2013-05-10 16:04:59Z msweet $".
|
||||
*/
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* "$Id: testsupplies.c 3247 2011-05-12 06:22:31Z msweet $"
|
||||
*
|
||||
* SNMP supplies test program for CUPS.
|
||||
*
|
||||
@@ -79,5 +79,5 @@ main(int argc, /* I - Number of command-line args */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
* End of "$Id: testsupplies.c 3247 2011-05-12 06:22:31Z msweet $".
|
||||
*/
|
||||
|
||||
+43
-36
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* "$Id: usb-darwin.c 11670 2014-03-04 14:53:59Z msweet $"
|
||||
*
|
||||
* Copyright 2005-2013 Apple Inc. All rights reserved.
|
||||
* Copyright 2005-2014 Apple Inc. All rights reserved.
|
||||
*
|
||||
* IMPORTANT: This Apple software is supplied to you by Apple Computer,
|
||||
* Inc. ("Apple") in consideration of your agreement to the following
|
||||
@@ -40,35 +40,6 @@
|
||||
* AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE),
|
||||
* STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* Contents:
|
||||
*
|
||||
* list_devices() - List all USB devices.
|
||||
* print_device() - Print a file to a USB device.
|
||||
* read_thread() - Thread to read the backchannel data on.
|
||||
* sidechannel_thread() - Handle side-channel requests.
|
||||
* iterate_printers() - Iterate over all the printers.
|
||||
* device_added() - Device added notifier.
|
||||
* list_device_cb() - list_device iterator callback.
|
||||
* find_device_cb() - print_device iterator callback.
|
||||
* status_timer_cb() - Status timer callback.
|
||||
* copy_deviceinfo() - Copy strings from the 1284 device ID.
|
||||
* release_deviceinfo() - Release deviceinfo strings.
|
||||
* load_classdriver() - Load a classdriver.
|
||||
* unload_classdriver() - Unload a classdriver.
|
||||
* load_printerdriver() - Load vendor's classdriver.
|
||||
* registry_open() - Open a connection to the printer.
|
||||
* registry_close() - Close the connection to the printer.
|
||||
* copy_deviceid() - Copy the 1284 device id string.
|
||||
* copy_devicestring() - Copy the 1284 device id string.
|
||||
* copy_value_for_key() - Copy value string associated with a key.
|
||||
* cfstr_create_trim() - Create CFString and trim whitespace characters.
|
||||
* parse_options() - Parse URI options.
|
||||
* sigterm_handler() - SIGTERM handler.
|
||||
* next_line() - Find the next line in a buffer.
|
||||
* parse_pserror() - Scan the backchannel data for postscript errors.
|
||||
* soft_reset() - Send a soft reset to the device.
|
||||
* get_device_id() - Return IEEE-1284 device ID.
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -97,7 +68,7 @@
|
||||
#include <IOKit/usb/IOUSBLib.h>
|
||||
#include <IOKit/IOCFPlugIn.h>
|
||||
#include <libproc.h>
|
||||
|
||||
#include <asl.h>
|
||||
#include <spawn.h>
|
||||
#include <pthread.h>
|
||||
|
||||
@@ -309,6 +280,9 @@ static void release_deviceinfo(CFStringRef *make, CFStringRef *model, CFStringRe
|
||||
static void setup_cfLanguage(void);
|
||||
static void soft_reset(void);
|
||||
static void status_timer_cb(CFRunLoopTimerRef timer, void *info);
|
||||
static void log_usb_class_driver(int is_64bit);
|
||||
#define IS_64BIT 1
|
||||
#define IS_NOT_64BIT 0
|
||||
|
||||
#if defined(__i386__) || defined(__x86_64__)
|
||||
static pid_t child_pid; /* Child PID */
|
||||
@@ -477,6 +451,11 @@ print_device(const char *uri, /* I - Device URI */
|
||||
return (CUPS_BACKEND_STOP);
|
||||
}
|
||||
|
||||
#ifdef __x86_64__
|
||||
if (status == noErr && driverBundlePath != NULL && CFStringCompare(driverBundlePath, kUSBGenericTOPrinterClassDriver, 0) != kCFCompareEqualTo)
|
||||
log_usb_class_driver(IS_64BIT);
|
||||
#endif /* __x86_64__ */
|
||||
|
||||
if (driverBundlePath)
|
||||
CFRelease(driverBundlePath);
|
||||
|
||||
@@ -1607,7 +1586,7 @@ static OSStatus copy_deviceid(classdriver_t **classdriver,
|
||||
CFStringRef deviceMake = NULL;
|
||||
CFStringRef deviceModel = NULL;
|
||||
CFStringRef deviceSerial = NULL;
|
||||
|
||||
|
||||
*deviceID = NULL;
|
||||
|
||||
OSStatus err = (*classdriver)->GetDeviceID(classdriver, &devID, DEFAULT_TIMEOUT);
|
||||
@@ -1682,13 +1661,13 @@ static OSStatus copy_deviceid(classdriver_t **classdriver,
|
||||
CFRange range = (deviceSerial != NULL ? CFStringFind(deviceSerial, CFSTR("+"), 0) : CFRangeMake(0, 0));
|
||||
if (range.length == 1) {
|
||||
range = CFStringFind(*deviceID, deviceSerial, 0);
|
||||
|
||||
|
||||
CFMutableStringRef deviceIDString = CFStringCreateMutableCopy(NULL, 0, *deviceID);
|
||||
CFStringFindAndReplace(deviceIDString, CFSTR("+"), CFSTR(""), range, 0);
|
||||
CFRelease(*deviceID);
|
||||
*deviceID = deviceIDString;
|
||||
}
|
||||
|
||||
|
||||
release_deviceinfo(&deviceMake, &deviceModel, &deviceSerial);
|
||||
|
||||
return err;
|
||||
@@ -1976,6 +1955,8 @@ static void run_legacy_backend(int argc,
|
||||
|
||||
if (!usb_legacy_status)
|
||||
{
|
||||
log_usb_class_driver(IS_NOT_64BIT);
|
||||
|
||||
/*
|
||||
* Setup a SIGTERM handler then block it before forking...
|
||||
*/
|
||||
@@ -2338,6 +2319,32 @@ static void get_device_id(cups_sc_status_t *status,
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
log_usb_class_driver(int is_64bit) /* I - Is the USB class driver 64-bit? */
|
||||
{
|
||||
/*
|
||||
* Report the usage of legacy USB class drivers to Apple if the user opts into providing
|
||||
* feedback to Apple...
|
||||
*/
|
||||
|
||||
aslmsg aslm = asl_new(ASL_TYPE_MSG);
|
||||
if (aslm)
|
||||
{
|
||||
ppd_file_t *ppd = ppdOpenFile(getenv("PPD"));
|
||||
const char *make_model = ppd ? ppd->nickname : NULL;
|
||||
ppd_attr_t *version = ppdFindAttr(ppd, "FileVersion", "");
|
||||
|
||||
asl_set(aslm, "com.apple.message.domain", "com.apple.printing.usb.64bit");
|
||||
asl_set(aslm, "com.apple.message.result", is_64bit ? "yes" : "no");
|
||||
asl_set(aslm, "com.apple.message.signature", make_model ? make_model : "Unknown");
|
||||
asl_set(aslm, "com.apple.message.signature2", version ? version->value : "?.?");
|
||||
asl_set(aslm, "com.apple.message.summarize", "YES");
|
||||
asl_log(NULL, aslm, ASL_LEVEL_NOTICE, "");
|
||||
asl_free(aslm);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
* End of "$Id: usb-darwin.c 11670 2014-03-04 14:53:59Z msweet $".
|
||||
*/
|
||||
|
||||
+259
-211
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* "$Id: usb-libusb.c 11456 2013-12-09 19:26:47Z msweet $"
|
||||
*
|
||||
* LIBUSB interface code for CUPS.
|
||||
*
|
||||
@@ -16,18 +16,20 @@
|
||||
* list_devices() - List the available printers.
|
||||
* print_device() - Print a file to a USB device.
|
||||
* close_device() - Close the connection to the USB printer.
|
||||
* compare_quirks() - Compare two quirks entries.
|
||||
* find_device() - Find or enumerate USB printers.
|
||||
* find_quirks() - Find the quirks for the given printer, if any.
|
||||
* get_device_id() - Get the IEEE-1284 device ID for the printer.
|
||||
* list_cb() - List USB printers for discovery.
|
||||
* load_quirks() - Load all quirks files in the /usr/share/cups/usb
|
||||
* directory.
|
||||
* make_device_uri() - Create a device URI for a USB printer.
|
||||
* open_device() - Open a connection to the USB printer.
|
||||
* print_cb() - Find a USB printer for printing.
|
||||
* printer_class_soft_reset()' - Do the soft reset request specific to
|
||||
* printers
|
||||
* quirks() - Get the known quirks of a given printer model
|
||||
* read_thread() - Thread to read the backchannel data on.
|
||||
* sidechannel_thread() - Handle side-channel requests.
|
||||
* soft_reset() - Send a soft reset to the device.
|
||||
* soft_reset_printer() - Do the soft reset request specific to printers
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -36,6 +38,7 @@
|
||||
|
||||
#include <libusb.h>
|
||||
#include <cups/cups-private.h>
|
||||
#include <cups/dir.h>
|
||||
#include <pthread.h>
|
||||
#include <sys/select.h>
|
||||
#include <sys/types.h>
|
||||
@@ -70,15 +73,15 @@ typedef struct usb_printer_s /**** USB Printer Data ****/
|
||||
read_endp, /* Read endpoint */
|
||||
protocol, /* Protocol: 1 = Uni-di, 2 = Bi-di. */
|
||||
usblp_attached, /* "usblp" kernel module attached? */
|
||||
reset_after_job; /* Set to 1 by print_device() */
|
||||
unsigned int quirks; /* Quirks flags */
|
||||
reset_after_job;/* Set to 1 by print_device() */
|
||||
unsigned quirks; /* Quirks flags */
|
||||
struct libusb_device_handle *handle; /* Open handle to device */
|
||||
} usb_printer_t;
|
||||
|
||||
typedef int (*usb_cb_t)(usb_printer_t *, const char *, const char *,
|
||||
const void *);
|
||||
|
||||
typedef struct usb_globals_s
|
||||
typedef struct usb_globals_s /* Global USB printer information */
|
||||
{
|
||||
usb_printer_t *printer; /* Printer */
|
||||
|
||||
@@ -105,143 +108,41 @@ typedef struct usb_globals_s
|
||||
} usb_globals_t;
|
||||
|
||||
/*
|
||||
* Quirks: various printer quirks are handled by this table & its flags.
|
||||
* Quirks: various printer quirks are handled by this structure and its flags.
|
||||
*
|
||||
* This is copied from the usblp kernel module. So we can easily copy and paste
|
||||
* new quirks from the module.
|
||||
* The quirks table used to be compiled into the backend but is now loaded from
|
||||
* one or more files in the /usr/share/cups/usb directory.
|
||||
*/
|
||||
|
||||
struct quirk_printer_struct {
|
||||
int vendorId;
|
||||
int productId;
|
||||
unsigned int quirks;
|
||||
};
|
||||
|
||||
#define USBLP_QUIRK_BIDIR 0x1 /* reports bidir but requires
|
||||
unidirectional mode (no INs/reads) */
|
||||
#define USBLP_QUIRK_USB_INIT 0x2 /* needs vendor USB init string */
|
||||
#define USBLP_QUIRK_BAD_CLASS 0x4 /* descriptor uses vendor-specific
|
||||
Class or SubClass */
|
||||
#define USBLP_QUIRK_BLACKLIST 0x8 /* these printers do not conform to the USB print spec */
|
||||
#define USBLP_QUIRK_RESET 0x4000 /* After printing do a reset
|
||||
for clean-up */
|
||||
#define USBLP_QUIRK_NO_REATTACH 0x8000 /* After printing we cannot re-attach
|
||||
#define USB_QUIRK_BLACKLIST 0x0001 /* Does not conform to the spec */
|
||||
#define USB_QUIRK_NO_REATTACH 0x0002 /* After printing we cannot re-attach
|
||||
the usblp kernel module */
|
||||
#define USB_QUIRK_SOFT_RESET 0x0004 /* After printing do a soft reset
|
||||
for clean-up */
|
||||
#define USB_QUIRK_UNIDIR 0x0008 /* Requires unidirectional mode */
|
||||
#define USB_QUIRK_USB_INIT 0x0010 /* Needs vendor USB init string */
|
||||
#define USB_QUIRK_VENDOR_CLASS 0x0020 /* Descriptor uses vendor-specific
|
||||
Class or SubClass */
|
||||
#define USB_QUIRK_WHITELIST 0x0000 /* no quirks */
|
||||
|
||||
|
||||
typedef struct usb_quirk_s /* USB "quirk" information */
|
||||
{
|
||||
int vendor_id, /* Affected vendor ID */
|
||||
product_id; /* Affected product ID or 0 for all */
|
||||
unsigned quirks; /* Quirks bitfield */
|
||||
} usb_quirk_t;
|
||||
|
||||
|
||||
static const struct quirk_printer_struct quirk_printers[] = {
|
||||
{ 0x03f0, 0x0004, USBLP_QUIRK_BIDIR }, /* HP DeskJet 895C */
|
||||
{ 0x03f0, 0x0104, USBLP_QUIRK_BIDIR }, /* HP DeskJet 880C */
|
||||
{ 0x03f0, 0x0204, USBLP_QUIRK_BIDIR }, /* HP DeskJet 815C */
|
||||
{ 0x03f0, 0x0304, USBLP_QUIRK_BIDIR }, /* HP DeskJet 810C/812C */
|
||||
{ 0x03f0, 0x0404, USBLP_QUIRK_BIDIR }, /* HP DeskJet 830C */
|
||||
{ 0x03f0, 0x0504, USBLP_QUIRK_BIDIR }, /* HP DeskJet 885C */
|
||||
{ 0x03f0, 0x0604, USBLP_QUIRK_BIDIR }, /* HP DeskJet 840C */
|
||||
{ 0x03f0, 0x0804, USBLP_QUIRK_BIDIR }, /* HP DeskJet 816C */
|
||||
{ 0x03f0, 0x1104, USBLP_QUIRK_BIDIR }, /* HP Deskjet 959C */
|
||||
{ 0x0409, 0xefbe, USBLP_QUIRK_BIDIR }, /* NEC Picty900 (HP OEM) */
|
||||
{ 0x0409, 0xbef4, USBLP_QUIRK_BIDIR }, /* NEC Picty760 (HP OEM) */
|
||||
{ 0x0409, 0xf0be, USBLP_QUIRK_BIDIR }, /* NEC Picty920 (HP OEM) */
|
||||
{ 0x0409, 0xf1be, USBLP_QUIRK_BIDIR }, /* NEC Picty800 (HP OEM) */
|
||||
{ 0x043d, 0x00f3, USBLP_QUIRK_NO_REATTACH }, /* Lexmark International,
|
||||
Inc. (e250d), https://bugs.launchpad.net/bugs/1084164 */
|
||||
{ 0x0482, 0x0010, USBLP_QUIRK_BIDIR }, /* Kyocera Mita FS 820,
|
||||
by zut <kernel@zut.de> */
|
||||
{ 0x04a9, 0x1095, USBLP_QUIRK_BIDIR }, /* Canon, Inc. PIXMA iP6000D
|
||||
Printer, https://bugs.launchpad.net/bugs/1160638 */
|
||||
{ 0x04a9, 0x10a2, USBLP_QUIRK_BIDIR }, /* Canon, Inc. PIXMA iP4200
|
||||
Printer, http://www.cups.org/str.php?L4155 */
|
||||
{ 0x04a9, 0x10b6, USBLP_QUIRK_BIDIR }, /* Canon, Inc. PIXMA iP4300
|
||||
Printer, https://bugs.launchpad.net/bugs/1032385 */
|
||||
{ 0x04a9, 0x1721, USBLP_QUIRK_BIDIR }, /* Canon, Inc. MP210
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=847923#c53 */
|
||||
{ 0x04a9, 0x170c, USBLP_QUIRK_BIDIR }, /* Canon, Inc. MP500
|
||||
Printer, https://bugs.launchpad.net/bugs/1032456 */
|
||||
{ 0x04a9, 0x1717, USBLP_QUIRK_BIDIR }, /* Canon, Inc. MP510
|
||||
Printer, https://bugs.launchpad.net/bugs/1050009 */
|
||||
{ 0x04a9, 0x173d, USBLP_QUIRK_BIDIR }, /* Canon, Inc. MP550
|
||||
Printer, http://www.cups.org/str.php?L4155 */
|
||||
{ 0x04a9, 0x173e, USBLP_QUIRK_BIDIR }, /* Canon, Inc. MP560
|
||||
Printer, http://www.cups.org/str.php?L4155 */
|
||||
{ 0x04a9, 0x26a3, USBLP_QUIRK_NO_REATTACH }, /* Canon, Inc. MF4150
|
||||
Printer, https://bugs.launchpad.net/bugs/1160638 */
|
||||
{ 0x04f9, 0x001a, USBLP_QUIRK_NO_REATTACH }, /* Brother Industries, Ltd
|
||||
HL-1430 Laser Printer,
|
||||
https://bugs.launchpad.net/bugs/1038695 */
|
||||
{ 0x04f9, 0x000d, USBLP_QUIRK_BIDIR |
|
||||
USBLP_QUIRK_NO_REATTACH }, /* Brother Industries, Ltd
|
||||
HL-1440 Laser Printer,
|
||||
https://bugs.launchpad.net/bugs/1000253 */
|
||||
{ 0x04f9, 0x000e, USBLP_QUIRK_BIDIR |
|
||||
USBLP_QUIRK_NO_REATTACH }, /* Brother Industries, Ltd
|
||||
HL-1450 Laser Printer,
|
||||
https://bugs.launchpad.net/bugs/1000253 */
|
||||
{ 0x06bc, 0x000b, USBLP_QUIRK_NO_REATTACH }, /* Oki Data Corp.
|
||||
Okipage 14ex Printer,
|
||||
https://bugs.launchpad.net/bugs/872483 */
|
||||
{ 0x06bc, 0x01c7, USBLP_QUIRK_NO_REATTACH }, /* Oki Data Corp. B410d,
|
||||
https://bugs.launchpad.net/bugs/872483 */
|
||||
{ 0x04b8, 0x0001, USBLP_QUIRK_BIDIR |
|
||||
USBLP_QUIRK_NO_REATTACH }, /* Seiko Epson Corp. Stylus Color 740 / Photo 750,
|
||||
http://bugs.debian.org/697970 */
|
||||
{ 0x04b8, 0x0005, USBLP_QUIRK_NO_REATTACH }, /* Seiko Epson Corp. Stylus Color 670,
|
||||
https://bugs.launchpad.net/bugs/872483 */
|
||||
{ 0x04b8, 0x0202, USBLP_QUIRK_BAD_CLASS }, /* Seiko Epson Receipt
|
||||
Printer M129C */
|
||||
{ 0x067b, 0x2305, USBLP_QUIRK_BIDIR |
|
||||
USBLP_QUIRK_NO_REATTACH |
|
||||
USBLP_QUIRK_RESET },
|
||||
/* Prolific Technology, Inc. PL2305 Parallel Port
|
||||
(USB -> Parallel adapter), https://bugs.launchpad.net/bugs/987485 */
|
||||
{ 0x0924, 0x3ce9, USBLP_QUIRK_NO_REATTACH }, /* Xerox Phaser 3124
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=867392 */
|
||||
{ 0x0924, 0x4293, USBLP_QUIRK_NO_REATTACH }, /* Xerox WorkCentre 3210
|
||||
https://bugs.launchpad.net/bugs/1102470 */
|
||||
{ 0x1a86, 0x7584, USBLP_QUIRK_NO_REATTACH }, /* QinHeng Electronics
|
||||
CH340S (USB -> Parallel adapter), https://bugs.launchpad.net/bugs/1000253 */
|
||||
{ 0x04e8, 0x0000, USBLP_QUIRK_RESET }, /* All Samsung devices,
|
||||
https://bugs.launchpad.net/bugs/1032456 */
|
||||
{ 0x0a5f, 0x0000, USBLP_QUIRK_BIDIR }, /* All Zebra devices,
|
||||
https://bugs.launchpad.net/bugs/1001028 */
|
||||
/* Canon */
|
||||
{ 0x04a9, 0x304a, USBLP_QUIRK_BLACKLIST }, /* Canon CP-10 */
|
||||
{ 0x04a9, 0x3063, USBLP_QUIRK_BLACKLIST }, /* Canon CP-100 */
|
||||
{ 0x04a9, 0x307c, USBLP_QUIRK_BLACKLIST }, /* Canon CP-200 */
|
||||
{ 0x04a9, 0x307d, USBLP_QUIRK_BLACKLIST }, /* Canon CP-300 */
|
||||
{ 0x04a9, 0x30bd, USBLP_QUIRK_BLACKLIST }, /* Canon CP-220 */
|
||||
{ 0x04a9, 0x30be, USBLP_QUIRK_BLACKLIST }, /* Canon CP-330 */
|
||||
{ 0x04a9, 0x30f6, USBLP_QUIRK_BLACKLIST }, /* Canon SELPHY CP400 */
|
||||
{ 0x04a9, 0x310b, USBLP_QUIRK_BLACKLIST }, /* Canon SELPHY CP600 */
|
||||
{ 0x04a9, 0x3127, USBLP_QUIRK_BLACKLIST }, /* Canon SELPHY CP710 */
|
||||
{ 0x04a9, 0x3128, USBLP_QUIRK_BLACKLIST }, /* Canon SELPHY CP510 */
|
||||
{ 0x04a9, 0x3141, USBLP_QUIRK_BLACKLIST }, /* Canon SELPHY ES1 */
|
||||
{ 0x04a9, 0x3142, USBLP_QUIRK_BLACKLIST }, /* Canon SELPHY CP730 */
|
||||
{ 0x04a9, 0x3143, USBLP_QUIRK_BLACKLIST }, /* Canon SELPHY CP720 */
|
||||
{ 0x04a9, 0x3170, USBLP_QUIRK_BLACKLIST }, /* Canon SELPHY CP750 */
|
||||
{ 0x04a9, 0x3171, USBLP_QUIRK_BLACKLIST }, /* Canon SELPHY CP740 */
|
||||
{ 0x04a9, 0x3185, USBLP_QUIRK_BLACKLIST }, /* Canon SELPHY ES2 */
|
||||
{ 0x04a9, 0x3186, USBLP_QUIRK_BLACKLIST }, /* Canon SELPHY ES20 */
|
||||
{ 0x04a9, 0x31aa, USBLP_QUIRK_BLACKLIST }, /* Canon SELPHY CP770 */
|
||||
{ 0x04a9, 0x31ab, USBLP_QUIRK_BLACKLIST }, /* Canon SELPHY CP760 */
|
||||
{ 0x04a9, 0x31b0, USBLP_QUIRK_BLACKLIST }, /* Canon SELPHY ES30 */
|
||||
{ 0x04a9, 0x31dd, USBLP_QUIRK_BLACKLIST }, /* Canon SELPHY CP780 */
|
||||
{ 0x04a9, 0x31ee, USBLP_QUIRK_BLACKLIST }, /* Canon SELPHY ES40 */
|
||||
{ 0x04a9, 0x3214, USBLP_QUIRK_BLACKLIST }, /* Canon SELPHY CP800 */
|
||||
{ 0x04a9, 0x3255, USBLP_QUIRK_BLACKLIST }, /* Canon SELPHY CP900 */
|
||||
{ 0x04a9, 0x3256, USBLP_QUIRK_BLACKLIST }, /* Canon SELPHY CP810 */
|
||||
{ 0x04a9, 0x30F5, USBLP_QUIRK_BLACKLIST }, /* Canon SELPHY CP500 */
|
||||
{ 0x04a9, 0x31AF, USBLP_QUIRK_BLACKLIST }, /* Canon SELPHY ES3 */
|
||||
{ 0x04a9, 0x31DD, USBLP_QUIRK_BLACKLIST }, /* Canon SELPHY CP780 */
|
||||
/* MISSING PIDs: CP520, CP530, CP790 */
|
||||
{ 0, 0 }
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* Globals...
|
||||
*/
|
||||
|
||||
cups_array_t *all_quirks; /* Array of printer quirks */
|
||||
usb_globals_t g = { 0 }; /* Globals */
|
||||
libusb_device **list; /* List of connected USB devices */
|
||||
libusb_device **all_list; /* List of connected USB devices */
|
||||
|
||||
|
||||
/*
|
||||
@@ -249,22 +150,24 @@ libusb_device **list; /* List of connected USB devices */
|
||||
*/
|
||||
|
||||
static int close_device(usb_printer_t *printer);
|
||||
static int compare_quirks(usb_quirk_t *a, usb_quirk_t *b);
|
||||
static usb_printer_t *find_device(usb_cb_t cb, const void *data);
|
||||
static unsigned find_quirks(int vendor_id, int product_id);
|
||||
static int get_device_id(usb_printer_t *printer, char *buffer,
|
||||
size_t bufsize);
|
||||
static int list_cb(usb_printer_t *printer, const char *device_uri,
|
||||
const char *device_id, const void *data);
|
||||
static void load_quirks(void);
|
||||
static char *make_device_uri(usb_printer_t *printer,
|
||||
const char *device_id,
|
||||
char *uri, size_t uri_size);
|
||||
static int open_device(usb_printer_t *printer, int verbose);
|
||||
static int print_cb(usb_printer_t *printer, const char *device_uri,
|
||||
const char *device_id, const void *data);
|
||||
static int printer_class_soft_reset(usb_printer_t *printer);
|
||||
static unsigned int quirks(int vendor, int product);
|
||||
static void *read_thread(void *reference);
|
||||
static void *sidechannel_thread(void *reference);
|
||||
static void soft_reset(void);
|
||||
static int soft_reset_printer(usb_printer_t *printer);
|
||||
|
||||
|
||||
/*
|
||||
@@ -274,6 +177,8 @@ static void soft_reset(void);
|
||||
void
|
||||
list_devices(void)
|
||||
{
|
||||
load_quirks();
|
||||
|
||||
fputs("DEBUG: list_devices\n", stderr);
|
||||
find_device(list_cb, NULL);
|
||||
}
|
||||
@@ -316,6 +221,8 @@ print_device(const char *uri, /* I - Device URI */
|
||||
const char *val; /* Option value */
|
||||
|
||||
|
||||
load_quirks();
|
||||
|
||||
/*
|
||||
* See if the side-channel descriptor is valid...
|
||||
*/
|
||||
@@ -341,9 +248,9 @@ print_device(const char *uri, /* I - Device URI */
|
||||
|
||||
/*
|
||||
* Some devices need a reset after finishing a job, these devices are
|
||||
* marked with the USBLP_QUIRK_RESET quirk.
|
||||
* marked with the USB_QUIRK_SOFT_RESET quirk.
|
||||
*/
|
||||
g.printer->reset_after_job = (g.printer->quirks & USBLP_QUIRK_RESET ? 1 : 0);
|
||||
g.printer->reset_after_job = (g.printer->quirks & USB_QUIRK_SOFT_RESET ? 1 : 0);
|
||||
|
||||
/*
|
||||
* If we are printing data from a print driver on stdin, ignore SIGTERM
|
||||
@@ -589,7 +496,7 @@ print_device(const char *uri, /* I - Device URI */
|
||||
iostatus = libusb_bulk_transfer(g.printer->handle,
|
||||
g.printer->write_endp,
|
||||
print_buffer, g.print_bytes,
|
||||
&bytes, 60000);
|
||||
&bytes, 0);
|
||||
/*
|
||||
* Ignore timeout errors, but retain the number of bytes written to
|
||||
* avoid sending duplicate data...
|
||||
@@ -612,7 +519,7 @@ print_device(const char *uri, /* I - Device URI */
|
||||
iostatus = libusb_bulk_transfer(g.printer->handle,
|
||||
g.printer->write_endp,
|
||||
print_buffer, g.print_bytes,
|
||||
&bytes, 60000);
|
||||
&bytes, 0);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -627,7 +534,7 @@ print_device(const char *uri, /* I - Device URI */
|
||||
iostatus = libusb_bulk_transfer(g.printer->handle,
|
||||
g.printer->write_endp,
|
||||
print_buffer, g.print_bytes,
|
||||
&bytes, 60000);
|
||||
&bytes, 0);
|
||||
}
|
||||
|
||||
if (iostatus)
|
||||
@@ -760,7 +667,7 @@ print_device(const char *uri, /* I - Device URI */
|
||||
* Clean up ....
|
||||
*/
|
||||
|
||||
libusb_free_device_list(list, 1);
|
||||
libusb_free_device_list(all_list, 1);
|
||||
libusb_exit(NULL);
|
||||
|
||||
return (status);
|
||||
@@ -879,6 +786,23 @@ close_device(usb_printer_t *printer) /* I - Printer */
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'compare_quirks()' - Compare two quirks entries.
|
||||
*/
|
||||
|
||||
static int /* O - Result of comparison */
|
||||
compare_quirks(usb_quirk_t *a, /* I - First quirk entry */
|
||||
usb_quirk_t *b) /* I - Second quirk entry */
|
||||
{
|
||||
int result; /* Result of comparison */
|
||||
|
||||
if ((result = b->vendor_id - a->vendor_id) == 0)
|
||||
result = b->product_id - a->product_id;
|
||||
|
||||
return (result);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'find_device()' - Find or enumerate USB printers.
|
||||
*/
|
||||
@@ -899,7 +823,8 @@ find_device(usb_cb_t cb, /* I - Callback function */
|
||||
/* Pointer to current alternate setting */
|
||||
const struct libusb_endpoint_descriptor *endpptr = NULL;
|
||||
/* Pointer to current endpoint */
|
||||
ssize_t numdevs, /* number of connected devices */
|
||||
ssize_t err = 0, /* Error code */
|
||||
numdevs, /* number of connected devices */
|
||||
i = 0;
|
||||
uint8_t conf, /* Current configuration */
|
||||
iface, /* Current interface */
|
||||
@@ -918,7 +843,14 @@ find_device(usb_cb_t cb, /* I - Callback function */
|
||||
* Initialize libusb...
|
||||
*/
|
||||
|
||||
libusb_init(NULL);
|
||||
err = libusb_init(NULL);
|
||||
if (err)
|
||||
{
|
||||
fprintf(stderr, "DEBUG: Unable to initialize USB access via libusb, "
|
||||
"libusb error %i\n", (int)err);
|
||||
return (NULL);
|
||||
}
|
||||
|
||||
numdevs = libusb_get_device_list(NULL, &list);
|
||||
fprintf(stderr, "DEBUG: libusb_get_device_list=%d\n", (int)numdevs);
|
||||
|
||||
@@ -943,13 +875,13 @@ find_device(usb_cb_t cb, /* I - Callback function */
|
||||
!devdesc.idProduct)
|
||||
continue;
|
||||
|
||||
printer.quirks = quirks(devdesc.idVendor, devdesc.idProduct);
|
||||
printer.quirks = find_quirks(devdesc.idVendor, devdesc.idProduct);
|
||||
|
||||
/*
|
||||
* Ignore blacklisted printers...
|
||||
*/
|
||||
|
||||
if (printer.quirks & USBLP_QUIRK_BLACKLIST)
|
||||
if (printer.quirks & USB_QUIRK_BLACKLIST)
|
||||
continue;
|
||||
|
||||
for (conf = 0; conf < devdesc.bNumConfigurations; conf ++)
|
||||
@@ -978,13 +910,13 @@ find_device(usb_cb_t cb, /* I - Callback function */
|
||||
|
||||
if (((altptr->bInterfaceClass != LIBUSB_CLASS_PRINTER ||
|
||||
altptr->bInterfaceSubClass != 1) &&
|
||||
((printer.quirks & USBLP_QUIRK_BAD_CLASS) == 0)) ||
|
||||
((printer.quirks & USB_QUIRK_VENDOR_CLASS) == 0)) ||
|
||||
(altptr->bInterfaceProtocol != 1 && /* Unidirectional */
|
||||
altptr->bInterfaceProtocol != 2) || /* Bidirectional */
|
||||
altptr->bInterfaceProtocol < protocol)
|
||||
continue;
|
||||
|
||||
if (printer.quirks & USBLP_QUIRK_BAD_CLASS)
|
||||
if (printer.quirks & USB_QUIRK_VENDOR_CLASS)
|
||||
fprintf(stderr, "DEBUG: Printer does not report class 7 and/or "
|
||||
"subclass 1 but works as a printer anyway\n");
|
||||
|
||||
@@ -1041,7 +973,7 @@ find_device(usb_cb_t cb, /* I - Callback function */
|
||||
{
|
||||
fprintf(stderr, "DEBUG: Device protocol: %d\n",
|
||||
printer.protocol);
|
||||
if (printer.quirks & USBLP_QUIRK_BIDIR)
|
||||
if (printer.quirks & USB_QUIRK_UNIDIR)
|
||||
{
|
||||
printer.read_endp = -1;
|
||||
fprintf(stderr, "DEBUG: Printer reports bi-di support "
|
||||
@@ -1061,7 +993,7 @@ find_device(usb_cb_t cb, /* I - Callback function */
|
||||
altsetting[printer.altset].
|
||||
endpoint[printer.write_endp].
|
||||
bEndpointAddress;
|
||||
if (printer.quirks & USBLP_QUIRK_NO_REATTACH)
|
||||
if (printer.quirks & USB_QUIRK_NO_REATTACH)
|
||||
{
|
||||
printer.usblp_attached = 0;
|
||||
fprintf(stderr, "DEBUG: Printer does not like usblp "
|
||||
@@ -1088,13 +1020,43 @@ find_device(usb_cb_t cb, /* I - Callback function */
|
||||
* Clean up ....
|
||||
*/
|
||||
|
||||
libusb_free_device_list(list, 1);
|
||||
if (numdevs >= 0)
|
||||
libusb_free_device_list(list, 1);
|
||||
libusb_exit(NULL);
|
||||
|
||||
return (NULL);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'find_quirks()' - Find the quirks for the given printer, if any.
|
||||
*
|
||||
* First looks for an exact match, then looks for the vendor ID wildcard match.
|
||||
*/
|
||||
|
||||
static unsigned /* O - Quirks flags */
|
||||
find_quirks(int vendor_id, /* I - Vendor ID */
|
||||
int product_id) /* I - Product ID */
|
||||
{
|
||||
usb_quirk_t key, /* Search key */
|
||||
*match; /* Matching quirk entry */
|
||||
|
||||
|
||||
key.vendor_id = vendor_id;
|
||||
key.product_id = product_id;
|
||||
|
||||
if ((match = cupsArrayFind(all_quirks, &key)) != NULL)
|
||||
return (match->quirks);
|
||||
|
||||
key.product_id = 0;
|
||||
|
||||
if ((match = cupsArrayFind(all_quirks, &key)) != NULL)
|
||||
return (match->quirks);
|
||||
|
||||
return (USB_QUIRK_WHITELIST);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'get_device_id()' - Get the IEEE-1284 device ID for the printer.
|
||||
*/
|
||||
@@ -1200,6 +1162,104 @@ list_cb(usb_printer_t *printer, /* I - Printer */
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'load_quirks()' - Load all quirks files in the /usr/share/cups/usb directory.
|
||||
*/
|
||||
|
||||
static void
|
||||
load_quirks(void)
|
||||
{
|
||||
const char *datadir; /* CUPS_DATADIR environment variable */
|
||||
char filename[1024], /* Filename */
|
||||
line[1024]; /* Line from file */
|
||||
cups_dir_t *dir; /* Directory */
|
||||
cups_dentry_t *dent; /* Directory entry */
|
||||
cups_file_t *fp; /* Quirks file */
|
||||
usb_quirk_t *quirk; /* New quirk */
|
||||
|
||||
|
||||
all_quirks = cupsArrayNew((cups_array_func_t)compare_quirks, NULL);
|
||||
|
||||
if ((datadir = getenv("CUPS_DATADIR")) == NULL)
|
||||
datadir = CUPS_DATADIR;
|
||||
|
||||
snprintf(filename, sizeof(filename), "%s/usb", datadir);
|
||||
if ((dir = cupsDirOpen(filename)) == NULL)
|
||||
{
|
||||
perror(filename);
|
||||
return;
|
||||
}
|
||||
|
||||
fprintf(stderr, "DEBUG: Loading USB quirks from \"%s\".\n", filename);
|
||||
|
||||
while ((dent = cupsDirRead(dir)) != NULL)
|
||||
{
|
||||
if (!S_ISREG(dent->fileinfo.st_mode))
|
||||
continue;
|
||||
|
||||
snprintf(filename, sizeof(filename), "%s/usb/%s", datadir, dent->filename);
|
||||
if ((fp = cupsFileOpen(filename, "r")) == NULL)
|
||||
{
|
||||
perror(filename);
|
||||
continue;
|
||||
}
|
||||
|
||||
while (cupsFileGets(fp, line, sizeof(line)))
|
||||
{
|
||||
/*
|
||||
* Skip blank and comment lines...
|
||||
*/
|
||||
|
||||
if (line[0] == '#' || !line[0])
|
||||
continue;
|
||||
|
||||
/*
|
||||
* Add a quirk...
|
||||
*/
|
||||
|
||||
if ((quirk = calloc(1, sizeof(usb_quirk_t))) == NULL)
|
||||
{
|
||||
perror("DEBUG: Unable to allocate memory for quirk");
|
||||
break;
|
||||
}
|
||||
|
||||
if (sscanf(line, "%x%x", &quirk->vendor_id, &quirk->product_id) < 1)
|
||||
{
|
||||
fprintf(stderr, "DEBUG: Bad line: %s\n", line);
|
||||
free(quirk);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (strstr(line, " blacklist"))
|
||||
quirk->quirks |= USB_QUIRK_BLACKLIST;
|
||||
|
||||
if (strstr(line, " no-reattach"))
|
||||
quirk->quirks |= USB_QUIRK_NO_REATTACH;
|
||||
|
||||
if (strstr(line, " soft-reset"))
|
||||
quirk->quirks |= USB_QUIRK_SOFT_RESET;
|
||||
|
||||
if (strstr(line, " unidir"))
|
||||
quirk->quirks |= USB_QUIRK_UNIDIR;
|
||||
|
||||
if (strstr(line, " usb-init"))
|
||||
quirk->quirks |= USB_QUIRK_USB_INIT;
|
||||
|
||||
if (strstr(line, " vendor-class"))
|
||||
quirk->quirks |= USB_QUIRK_VENDOR_CLASS;
|
||||
|
||||
cupsArrayAdd(all_quirks, quirk);
|
||||
}
|
||||
|
||||
cupsFileClose(fp);
|
||||
}
|
||||
|
||||
fprintf(stderr, "DEBUG: Loaded %d quirks.\n", cupsArrayCount(all_quirks));
|
||||
|
||||
cupsDirClose(dir);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'make_device_uri()' - Create a device URI for a USB printer.
|
||||
*/
|
||||
@@ -1626,65 +1686,6 @@ print_cb(usb_printer_t *printer, /* I - Printer */
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'printer_class_soft_reset()' - Do the soft reset request specific to printers
|
||||
*
|
||||
* This soft reset is specific to the printer device class and is much less
|
||||
* invasive than the general USB reset libusb_reset_device(). Especially it
|
||||
* does never happen that the USB addressing and configuration changes. What
|
||||
* is actually done is that all buffers get flushed and the bulk IN and OUT
|
||||
* pipes get reset to their default states. This clears all stall conditions.
|
||||
* See http://cholla.mmto.org/computers/linux/usb/usbprint11.pdf
|
||||
*/
|
||||
|
||||
static int /* O - 0 on success, < 0 on error */
|
||||
printer_class_soft_reset(usb_printer_t *printer) /* I - Printer */
|
||||
{
|
||||
struct libusb_config_descriptor *confptr = NULL;
|
||||
/* Pointer to current configuration */
|
||||
int interface,
|
||||
errcode;
|
||||
|
||||
if (libusb_get_config_descriptor(printer->device, printer->conf, &confptr)
|
||||
< 0)
|
||||
interface = printer->iface;
|
||||
else
|
||||
interface = confptr->interface[printer->iface].
|
||||
altsetting[printer->altset].bInterfaceNumber;
|
||||
libusb_free_config_descriptor(confptr);
|
||||
if ((errcode = libusb_control_transfer(printer->handle,
|
||||
LIBUSB_REQUEST_TYPE_CLASS |
|
||||
LIBUSB_ENDPOINT_OUT |
|
||||
LIBUSB_RECIPIENT_OTHER,
|
||||
2, 0, interface, NULL, 0, 5000)) < 0)
|
||||
errcode = libusb_control_transfer(printer->handle,
|
||||
LIBUSB_REQUEST_TYPE_CLASS |
|
||||
LIBUSB_ENDPOINT_OUT |
|
||||
LIBUSB_RECIPIENT_INTERFACE,
|
||||
2, 0, interface, NULL, 0, 5000);
|
||||
return errcode;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'quirks()' - Get the known quirks of a given printer model
|
||||
*/
|
||||
|
||||
static unsigned int quirks(int vendor, int product)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; quirk_printers[i].vendorId; i++)
|
||||
{
|
||||
if (vendor == quirk_printers[i].vendorId &&
|
||||
(quirk_printers[i].productId == 0x0000 ||
|
||||
product == quirk_printers[i].productId))
|
||||
return quirk_printers[i].quirks;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'read_thread()' - Thread to read the backchannel data on.
|
||||
*/
|
||||
@@ -1908,13 +1909,15 @@ sidechannel_thread(void *reference)
|
||||
* 'soft_reset()' - Send a soft reset to the device.
|
||||
*/
|
||||
|
||||
static void soft_reset(void)
|
||||
static void
|
||||
soft_reset(void)
|
||||
{
|
||||
fd_set input_set; /* Input set for select() */
|
||||
struct timeval tv; /* Time value */
|
||||
char buffer[2048]; /* Buffer */
|
||||
struct timespec cond_timeout; /* pthread condition timeout */
|
||||
|
||||
|
||||
/*
|
||||
* Send an abort once a second until the I/O lock is released by the main
|
||||
* thread...
|
||||
@@ -1959,7 +1962,7 @@ static void soft_reset(void)
|
||||
* Send the reset...
|
||||
*/
|
||||
|
||||
printer_class_soft_reset(g.printer);
|
||||
soft_reset_printer(g.printer);
|
||||
|
||||
/*
|
||||
* Release the I/O lock...
|
||||
@@ -1973,6 +1976,51 @@ static void soft_reset(void)
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
* 'soft_reset_printer()' - Do the soft reset request specific to printers
|
||||
*
|
||||
* This soft reset is specific to the printer device class and is much less
|
||||
* invasive than the general USB reset libusb_reset_device(). Especially it
|
||||
* does never happen that the USB addressing and configuration changes. What
|
||||
* is actually done is that all buffers get flushed and the bulk IN and OUT
|
||||
* pipes get reset to their default states. This clears all stall conditions.
|
||||
* See http://cholla.mmto.org/computers/linux/usb/usbprint11.pdf
|
||||
*/
|
||||
|
||||
static int /* O - 0 on success, < 0 on error */
|
||||
soft_reset_printer(
|
||||
usb_printer_t *printer) /* I - Printer */
|
||||
{
|
||||
struct libusb_config_descriptor *confptr = NULL;
|
||||
/* Pointer to current configuration */
|
||||
int interface, /* Interface to reset */
|
||||
errcode; /* Error code */
|
||||
|
||||
|
||||
if (libusb_get_config_descriptor(printer->device, printer->conf,
|
||||
&confptr) < 0)
|
||||
interface = printer->iface;
|
||||
else
|
||||
interface = confptr->interface[printer->iface].
|
||||
altsetting[printer->altset].bInterfaceNumber;
|
||||
|
||||
libusb_free_config_descriptor(confptr);
|
||||
|
||||
if ((errcode = libusb_control_transfer(printer->handle,
|
||||
LIBUSB_REQUEST_TYPE_CLASS |
|
||||
LIBUSB_ENDPOINT_OUT |
|
||||
LIBUSB_RECIPIENT_OTHER,
|
||||
2, 0, interface, NULL, 0, 5000)) < 0)
|
||||
errcode = libusb_control_transfer(printer->handle,
|
||||
LIBUSB_REQUEST_TYPE_CLASS |
|
||||
LIBUSB_ENDPOINT_OUT |
|
||||
LIBUSB_RECIPIENT_INTERFACE,
|
||||
2, 0, interface, NULL, 0, 5000);
|
||||
|
||||
return (errcode);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id: usb-libusb.c 11456 2013-12-09 19:26:47Z msweet $".
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* "$Id: usb-unix.c 10996 2013-05-29 11:51:34Z msweet $"
|
||||
*
|
||||
* USB port backend for CUPS.
|
||||
*
|
||||
@@ -612,5 +612,5 @@ side_cb(int print_fd, /* I - Print file */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
* End of "$Id: usb-unix.c 10996 2013-05-29 11:51:34Z msweet $".
|
||||
*/
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* "$Id: usb.c 10996 2013-05-29 11:51:34Z msweet $"
|
||||
*
|
||||
* USB port backend for CUPS.
|
||||
*
|
||||
@@ -260,5 +260,5 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
* End of "$Id: usb.c 10996 2013-05-29 11:51:34Z msweet $".
|
||||
*/
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# "$Id$"
|
||||
# "$Id: Makefile 10996 2013-05-29 11:51:34Z msweet $"
|
||||
#
|
||||
# Berkeley commands makefile for CUPS.
|
||||
#
|
||||
@@ -164,5 +164,5 @@ include Dependencies
|
||||
|
||||
|
||||
#
|
||||
# End of "$Id$".
|
||||
# End of "$Id: Makefile 10996 2013-05-29 11:51:34Z msweet $".
|
||||
#
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* "$Id: lpc.c 10996 2013-05-29 11:51:34Z msweet $"
|
||||
*
|
||||
* "lpc" command for CUPS.
|
||||
*
|
||||
@@ -446,5 +446,5 @@ show_status(http_t *http, /* I - HTTP connection to server */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
* End of "$Id: lpc.c 10996 2013-05-29 11:51:34Z msweet $".
|
||||
*/
|
||||
|
||||
+26
-25
@@ -1,9 +1,9 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* "$Id: lpq.c 11101 2013-07-08 11:20:33Z msweet $"
|
||||
*
|
||||
* "lpq" command for CUPS.
|
||||
*
|
||||
* Copyright 2007-2012 by Apple Inc.
|
||||
* Copyright 2007-2013 by Apple Inc.
|
||||
* Copyright 1997-2006 by Easy Software Products.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
@@ -60,8 +60,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);
|
||||
@@ -77,8 +76,6 @@ 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] == '+')
|
||||
@@ -127,7 +124,6 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
if (i >= argc)
|
||||
{
|
||||
httpClose(http);
|
||||
cupsFreeDests(num_dests, dests);
|
||||
|
||||
usage();
|
||||
}
|
||||
@@ -140,12 +136,14 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
|
||||
http = connect_server(argv[0], http);
|
||||
|
||||
if (num_dests == 0)
|
||||
num_dests = cupsGetDests2(http, &dests);
|
||||
|
||||
if (cupsGetDest(dest, instance, num_dests, dests) == NULL)
|
||||
if ((named_dest = cupsGetNamedDest(http, dest, instance)) == NULL)
|
||||
{
|
||||
if (instance)
|
||||
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);
|
||||
@@ -155,6 +153,8 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
|
||||
return (1);
|
||||
}
|
||||
|
||||
cupsFreeDests(1, named_dest);
|
||||
break;
|
||||
|
||||
case 'a' : /* All printers */
|
||||
@@ -192,7 +192,6 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
|
||||
default :
|
||||
httpClose(http);
|
||||
cupsFreeDests(num_dests, dests);
|
||||
|
||||
usage();
|
||||
break;
|
||||
@@ -207,15 +206,17 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
|
||||
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)
|
||||
@@ -231,7 +232,7 @@ 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\"."), argv[0], val,
|
||||
@@ -241,9 +242,10 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
_("%s: Error - no default destination available."),
|
||||
argv[0]);
|
||||
httpClose(http);
|
||||
cupsFreeDests(num_dests, dests);
|
||||
return (1);
|
||||
}
|
||||
|
||||
dest = named_dest->name;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -270,7 +272,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);
|
||||
@@ -678,5 +679,5 @@ usage(void)
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
* End of "$Id: lpq.c 11101 2013-07-08 11:20:33Z msweet $".
|
||||
*/
|
||||
|
||||
+21
-3
@@ -1,9 +1,9 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* "$Id: lpr.c 11101 2013-07-08 11:20:33Z msweet $"
|
||||
*
|
||||
* "lpr" command for CUPS.
|
||||
*
|
||||
* Copyright 2007-2012 by Apple Inc.
|
||||
* Copyright 2007-2013 by Apple Inc.
|
||||
* Copyright 1997-2007 by Easy Software Products.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
@@ -61,6 +61,7 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
|
||||
for (i = 1; i < argc; i ++)
|
||||
if (argv[i][0] == '-')
|
||||
{
|
||||
switch (ch = argv[i][1])
|
||||
{
|
||||
case 'E' : /* Encrypt */
|
||||
@@ -226,6 +227,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);
|
||||
}
|
||||
break;
|
||||
|
||||
case '#' : /* Number of copies */
|
||||
@@ -275,6 +284,7 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
argv[i][1]);
|
||||
return (1);
|
||||
}
|
||||
}
|
||||
else if (num_files < 1000)
|
||||
{
|
||||
/*
|
||||
@@ -320,6 +330,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)
|
||||
@@ -418,5 +436,5 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
* End of "$Id: lpr.c 11101 2013-07-08 11:20:33Z msweet $".
|
||||
*/
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* "$Id: lprm.c 10996 2013-05-29 11:51:34Z msweet $"
|
||||
*
|
||||
* "lprm" command for CUPS.
|
||||
*
|
||||
@@ -213,5 +213,5 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
* End of "$Id: lprm.c 10996 2013-05-29 11:51:34Z msweet $".
|
||||
*/
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# "$Id$"
|
||||
# "$Id: Makefile 10996 2013-05-29 11:51:34Z msweet $"
|
||||
#
|
||||
# CGI makefile for CUPS.
|
||||
#
|
||||
@@ -380,5 +380,5 @@ include Dependencies
|
||||
|
||||
|
||||
#
|
||||
# End of "$Id$".
|
||||
# End of "$Id: Makefile 10996 2013-05-29 11:51:34Z msweet $".
|
||||
#
|
||||
|
||||
+10
-10
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* "$Id: admin.c 11345 2013-10-18 21:14:52Z msweet $"
|
||||
*
|
||||
* Administration CGI for CUPS.
|
||||
*
|
||||
@@ -1348,20 +1348,20 @@ do_am_printer(http_t *http, /* I - HTTP connection */
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
|
||||
NULL, uri);
|
||||
|
||||
if (!file)
|
||||
{
|
||||
var = cgiGetVariable("PPD_NAME");
|
||||
if (strcmp(var, "__no_change__"))
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "ppd-name",
|
||||
NULL, var);
|
||||
}
|
||||
|
||||
ippAddString(request, IPP_TAG_PRINTER, IPP_TAG_TEXT, "printer-location",
|
||||
NULL, cgiGetVariable("PRINTER_LOCATION"));
|
||||
|
||||
ippAddString(request, IPP_TAG_PRINTER, IPP_TAG_TEXT, "printer-info",
|
||||
NULL, cgiGetVariable("PRINTER_INFO"));
|
||||
|
||||
if (!file)
|
||||
{
|
||||
var = cgiGetVariable("PPD_NAME");
|
||||
if (strcmp(var, "__no_change__"))
|
||||
ippAddString(request, IPP_TAG_PRINTER, IPP_TAG_NAME, "ppd-name",
|
||||
NULL, var);
|
||||
}
|
||||
|
||||
strlcpy(uri, cgiGetVariable("DEVICE_URI"), sizeof(uri));
|
||||
|
||||
/*
|
||||
@@ -4218,5 +4218,5 @@ get_points(double number, /* I - Original number */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
* End of "$Id: admin.c 11345 2013-10-18 21:14:52Z msweet $".
|
||||
*/
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* "$Id: cgi-private.h 10996 2013-05-29 11:51:34Z msweet $"
|
||||
*
|
||||
* Private CGI definitions for CUPS.
|
||||
*
|
||||
@@ -32,5 +32,5 @@
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
* End of "$Id: cgi-private.h 10996 2013-05-29 11:51:34Z msweet $".
|
||||
*/
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* "$Id: cgi.h 10996 2013-05-29 11:51:34Z msweet $"
|
||||
*
|
||||
* CGI support library definitions for CUPS.
|
||||
*
|
||||
@@ -115,5 +115,5 @@ extern const char *cgiText(const char *message);
|
||||
#endif /* !_CUPS_CGI_H_ */
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
* End of "$Id: cgi.h 10996 2013-05-29 11:51:34Z msweet $".
|
||||
*/
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* "$Id: classes.c 10996 2013-05-29 11:51:34Z msweet $"
|
||||
*
|
||||
* Class status CGI for CUPS.
|
||||
*
|
||||
@@ -554,5 +554,5 @@ show_class(http_t *http, /* I - Connection to server */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
* End of "$Id: classes.c 10996 2013-05-29 11:51:34Z msweet $".
|
||||
*/
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* "$Id: help-index.c 10996 2013-05-29 11:51:34Z msweet $"
|
||||
*
|
||||
* Online help index routines for CUPS.
|
||||
*
|
||||
@@ -1324,5 +1324,5 @@ help_sort_words(help_word_t *w1, /* I - Second word */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
* End of "$Id: help-index.c 10996 2013-05-29 11:51:34Z msweet $".
|
||||
*/
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* "$Id: help-index.h 10996 2013-05-29 11:51:34Z msweet $"
|
||||
*
|
||||
* Online help index definitions for CUPS.
|
||||
*
|
||||
@@ -83,5 +83,5 @@ extern help_index_t *helpSearchIndex(help_index_t *hi, const char *query,
|
||||
#endif /* !_CUPS_HELP_INDEX_H_ */
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
* End of "$Id: help-index.h 10996 2013-05-29 11:51:34Z msweet $".
|
||||
*/
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* "$Id: help.c 10996 2013-05-29 11:51:34Z msweet $"
|
||||
*
|
||||
* Online help CGI for CUPS.
|
||||
*
|
||||
@@ -393,5 +393,5 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
* End of "$Id: help.c 10996 2013-05-29 11:51:34Z msweet $".
|
||||
*/
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* "$Id: html.c 10996 2013-05-29 11:51:34Z msweet $"
|
||||
*
|
||||
* HTML support functions for CUPS.
|
||||
*
|
||||
@@ -235,5 +235,5 @@ cgi_null_passwd(const char *prompt) /* I - Prompt string (unused) */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
* End of "$Id: html.c 10996 2013-05-29 11:51:34Z msweet $".
|
||||
*/
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* "$Id: ipp-var.c 10996 2013-05-29 11:51:34Z msweet $"
|
||||
*
|
||||
* CGI <-> IPP variable routines for CUPS.
|
||||
*
|
||||
@@ -1589,5 +1589,5 @@ cgiText(const char *message) /* I - Message */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
* End of "$Id: ipp-var.c 10996 2013-05-29 11:51:34Z msweet $".
|
||||
*/
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* "$Id: jobs.c 10996 2013-05-29 11:51:34Z msweet $"
|
||||
*
|
||||
* Job status CGI for CUPS.
|
||||
*
|
||||
@@ -210,5 +210,5 @@ do_job_op(http_t *http, /* I - HTTP connection */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
* End of "$Id: jobs.c 10996 2013-05-29 11:51:34Z msweet $".
|
||||
*/
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* "$Id: makedocset.c 3833 2012-05-23 22:51:18Z msweet $"
|
||||
*
|
||||
* Xcode documentation set generator.
|
||||
*
|
||||
@@ -482,5 +482,5 @@ write_nodes(const char *path, /* I - File to write */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
* End of "$Id: makedocset.c 3833 2012-05-23 22:51:18Z msweet $".
|
||||
*/
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* "$Id: printers.c 10996 2013-05-29 11:51:34Z msweet $"
|
||||
*
|
||||
* Printer status CGI for CUPS.
|
||||
*
|
||||
@@ -574,5 +574,5 @@ show_printer(http_t *http, /* I - Connection to server */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
* End of "$Id: printers.c 10996 2013-05-29 11:51:34Z msweet $".
|
||||
*/
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* "$Id: search.c 10996 2013-05-29 11:51:34Z msweet $"
|
||||
*
|
||||
* Search routines for CUPS.
|
||||
*
|
||||
@@ -377,5 +377,5 @@ cgiFreeSearch(void *search) /* I - Search context */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
* End of "$Id: search.c 10996 2013-05-29 11:51:34Z msweet $".
|
||||
*/
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* "$Id: template.c 11688 2014-03-05 21:11:32Z msweet $"
|
||||
*
|
||||
* CGI template function.
|
||||
*
|
||||
@@ -553,7 +553,7 @@ cgi_copy(FILE *out, /* I - Output file */
|
||||
if (regcomp(&re, compare, REG_EXTENDED | REG_ICASE))
|
||||
{
|
||||
fprintf(stderr,
|
||||
"ERROR: Unable to compile regular expresion \"%s\"!\n",
|
||||
"ERROR: Unable to compile regular expression \"%s\"!\n",
|
||||
compare);
|
||||
result = 0;
|
||||
}
|
||||
@@ -729,5 +729,5 @@ cgi_puturi(const char *s, /* I - String to output */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
* End of "$Id: template.c 11688 2014-03-05 21:11:32Z msweet $".
|
||||
*/
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* "$Id: testcgi.c 10996 2013-05-29 11:51:34Z msweet $"
|
||||
*
|
||||
* CGI test program for CUPS.
|
||||
*
|
||||
@@ -71,5 +71,5 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
* End of "$Id: testcgi.c 10996 2013-05-29 11:51:34Z msweet $".
|
||||
*/
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* "$Id: testhi.c 10996 2013-05-29 11:51:34Z msweet $"
|
||||
*
|
||||
* Help index test program for CUPS.
|
||||
*
|
||||
@@ -109,5 +109,5 @@ list_nodes(const char *title, /* I - Title string */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
* End of "$Id: testhi.c 10996 2013-05-29 11:51:34Z msweet $".
|
||||
*/
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* "$Id: testtemplate.c 10996 2013-05-29 11:51:34Z msweet $"
|
||||
*
|
||||
* CGI template test program for CUPS.
|
||||
*
|
||||
@@ -99,5 +99,5 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
* End of "$Id: testtemplate.c 10996 2013-05-29 11:51:34Z msweet $".
|
||||
*/
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* "$Id: var.c 10996 2013-05-29 11:51:34Z msweet $"
|
||||
*
|
||||
* CGI form variable and array functions for CUPS.
|
||||
*
|
||||
@@ -1307,5 +1307,5 @@ cgi_unlink_file(void)
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
* End of "$Id: var.c 10996 2013-05-29 11:51:34Z msweet $".
|
||||
*/
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* "$Id: websearch.c 1531 2009-05-22 21:50:50Z msweet $"
|
||||
*
|
||||
* Web search program for www.cups.org.
|
||||
*
|
||||
@@ -112,5 +112,5 @@ list_nodes(help_index_t *hi, /* I - Help index */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
* End of "$Id: websearch.c 1531 2009-05-22 21:50:50Z msweet $".
|
||||
*/
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# "$Id$"
|
||||
# "$Id: Makefile 10996 2013-05-29 11:51:34Z msweet $"
|
||||
#
|
||||
# Configuration file makefile for CUPS.
|
||||
#
|
||||
@@ -139,5 +139,5 @@ uninstall:
|
||||
|
||||
|
||||
#
|
||||
# End of "$Id$".
|
||||
# End of "$Id: Makefile 10996 2013-05-29 11:51:34Z msweet $".
|
||||
#
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# "$Id$"
|
||||
# "$Id: cups-files.conf.in 11201 2013-07-26 21:27:27Z msweet $"
|
||||
#
|
||||
# Sample file/directory/user/group configuration file for the CUPS scheduler.
|
||||
# See "man cups-files.conf" for a complete description of this file.
|
||||
@@ -8,6 +8,9 @@
|
||||
# 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@
|
||||
@@ -94,5 +97,5 @@ PageLog @CUPS_LOGDIR@/page_log
|
||||
#TempDir @CUPS_REQUESTS@/tmp
|
||||
|
||||
#
|
||||
# End of "$Id$".
|
||||
# End of "$Id: cups-files.conf.in 11201 2013-07-26 21:27:27Z msweet $".
|
||||
#
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# "$Id$"
|
||||
# "$Id: cupsd.conf.in 11025 2013-06-07 01:00:33Z msweet $"
|
||||
#
|
||||
# Sample configuration file for the CUPS scheduler. See "man cupsd.conf" for a
|
||||
# complete description of this file.
|
||||
@@ -130,5 +130,5 @@ WebInterface @CUPS_WEBIF@
|
||||
</Policy>
|
||||
|
||||
#
|
||||
# End of "$Id$".
|
||||
# End of "$Id: cupsd.conf.in 11025 2013-06-07 01:00:33Z msweet $".
|
||||
#
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# "$Id$"
|
||||
# "$Id: mime.convs.in 11025 2013-06-07 01:00:33Z msweet $"
|
||||
#
|
||||
# DO NOT EDIT THIS FILE, AS IT IS OVERWRITTEN WHEN YOU INSTALL NEW
|
||||
# VERSIONS OF CUPS. Instead, create a "local.convs" file that
|
||||
@@ -59,5 +59,5 @@ application/vnd.cups-raster image/pwg-raster 100 rastertopwg
|
||||
@DEFAULT_RAW_PRINTING@application/octet-stream application/vnd.cups-raw 0 -
|
||||
|
||||
#
|
||||
# End of "$Id$".
|
||||
# End of "$Id: mime.convs.in 11025 2013-06-07 01:00:33Z msweet $".
|
||||
#
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# "$Id$"
|
||||
# "$Id: mime.types 7670 2008-06-17 22:42:08Z mike $"
|
||||
#
|
||||
# Base MIME types file for CUPS.
|
||||
#
|
||||
@@ -170,5 +170,5 @@ application/vnd.cups-raw (string(0,<1B>E) + !string(2,<1B>%0B)) \
|
||||
application/octet-stream
|
||||
|
||||
#
|
||||
# End of "$Id$".
|
||||
# End of "$Id: mime.types 7670 2008-06-17 22:42:08Z mike $".
|
||||
#
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# "$Id$"
|
||||
# "$Id: snmp.conf.in 11025 2013-06-07 01:00:33Z msweet $"
|
||||
#
|
||||
# Sample SNMP configuration file for CUPS. See "man cups-snmp.conf" for a
|
||||
# complete description of this file.
|
||||
@@ -9,5 +9,5 @@
|
||||
@CUPS_SNMP_COMMUNITY@
|
||||
|
||||
#
|
||||
# End of "$Id$".
|
||||
# End of "$Id: snmp.conf.in 11025 2013-06-07 01:00:33Z msweet $".
|
||||
#
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
dnl
|
||||
dnl "$Id$"
|
||||
dnl "$Id: cups-common.m4 8781 2009-08-28 17:34:54Z mike $"
|
||||
dnl
|
||||
dnl Common configuration stuff for CUPS.
|
||||
dnl Common configuration stuff for CUPS.
|
||||
dnl
|
||||
dnl Copyright 2007-2013 by Apple Inc.
|
||||
dnl Copyright 1997-2007 by Easy Software Products, all rights reserved.
|
||||
dnl Copyright 2007-2014 by Apple Inc.
|
||||
dnl Copyright 1997-2007 by Easy Software Products, all rights reserved.
|
||||
dnl
|
||||
dnl These coded instructions, statements, and computer programs are the
|
||||
dnl property of Apple Inc. and are protected by Federal copyright
|
||||
dnl law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
dnl which should have been included with this file. If this file is
|
||||
dnl file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
dnl These coded instructions, statements, and computer programs are the
|
||||
dnl property of Apple Inc. and are protected by Federal copyright
|
||||
dnl law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
dnl which should have been included with this file. If this file is
|
||||
dnl file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
dnl
|
||||
|
||||
dnl We need at least autoconf 2.60...
|
||||
@@ -20,8 +20,8 @@ dnl Set the name of the config header file...
|
||||
AC_CONFIG_HEADER(config.h)
|
||||
|
||||
dnl Version number information...
|
||||
CUPS_VERSION="1.7b1"
|
||||
CUPS_REVISION=""
|
||||
CUPS_VERSION=1.7.2
|
||||
CUPS_REVISION=
|
||||
#if test -z "$CUPS_REVISION" -a -d .svn; then
|
||||
# CUPS_REVISION="-r`svnversion . | awk -F: '{print $NF}' | sed -e '1,$s/[[a-zA-Z]]*//g'`"
|
||||
#fi
|
||||
@@ -225,7 +225,9 @@ dnl See if we have libusb...
|
||||
AC_ARG_ENABLE(libusb, [ --enable-libusb use libusb for USB printing])
|
||||
|
||||
LIBUSB=""
|
||||
USBQUIRKS=""
|
||||
AC_SUBST(LIBUSB)
|
||||
AC_SUBST(USBQUIRKS)
|
||||
|
||||
if test "x$PKGCONFIG" != x; then
|
||||
if test x$enable_libusb = xyes -o $uname != Darwin; then
|
||||
@@ -235,6 +237,7 @@ if test "x$PKGCONFIG" != x; then
|
||||
AC_DEFINE(HAVE_LIBUSB)
|
||||
CFLAGS="$CFLAGS `$PKGCONFIG --cflags libusb-1.0`"
|
||||
LIBUSB="`$PKGCONFIG --libs libusb-1.0`"
|
||||
USBQUIRKS="\$(DATADIR)/usb"
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
fi
|
||||
@@ -300,16 +303,11 @@ fi
|
||||
LIBS="$SAVELIBS"
|
||||
|
||||
dnl Check for DBUS support
|
||||
if test -d /etc/dbus-1; then
|
||||
DBUSDIR="/etc/dbus-1"
|
||||
else
|
||||
DBUSDIR=""
|
||||
fi
|
||||
|
||||
AC_ARG_ENABLE(dbus, [ --disable-dbus build without DBUS support])
|
||||
AC_ARG_WITH(dbusdir, [ --with-dbusdir set DBUS configuration directory ],
|
||||
DBUSDIR="$withval")
|
||||
|
||||
DBUSDIR=""
|
||||
DBUS_NOTIFIER=""
|
||||
DBUS_NOTIFIERLIBS=""
|
||||
|
||||
@@ -326,7 +324,12 @@ if test "x$enable_dbus" != xno -a "x$PKGCONFIG" != x; then
|
||||
LIBS="$LIBS $DBUS_NOTIFIERLIBS"
|
||||
AC_CHECK_FUNC(dbus_message_iter_init_append,
|
||||
AC_DEFINE(HAVE_DBUS_MESSAGE_ITER_INIT_APPEND))
|
||||
AC_CHECK_FUNC(dbus_threads_init,
|
||||
AC_DEFINE(HAVE_DBUS_THREADS_INIT))
|
||||
LIBS="$SAVELIBS"
|
||||
if test -d /etc/dbus-1; then
|
||||
DBUSDIR="/etc/dbus-1"
|
||||
fi
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
fi
|
||||
@@ -459,5 +462,5 @@ esac
|
||||
AC_SUBST(BUILDDIRS)
|
||||
|
||||
dnl
|
||||
dnl End of "$Id$".
|
||||
dnl End of "$Id: cups-common.m4 8781 2009-08-28 17:34:54Z mike $".
|
||||
dnl
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
dnl
|
||||
dnl "$Id$"
|
||||
dnl "$Id: cups-compiler.m4 7871 2008-08-27 21:12:43Z mike $"
|
||||
dnl
|
||||
dnl Compiler stuff for CUPS.
|
||||
dnl Compiler stuff for CUPS.
|
||||
dnl
|
||||
dnl Copyright 2007-2013 by Apple Inc.
|
||||
dnl Copyright 1997-2007 by Easy Software Products, all rights reserved.
|
||||
dnl Copyright 2007-2014 by Apple Inc.
|
||||
dnl Copyright 1997-2007 by Easy Software Products, all rights reserved.
|
||||
dnl
|
||||
dnl These coded instructions, statements, and computer programs are the
|
||||
dnl property of Apple Inc. and are protected by Federal copyright
|
||||
dnl law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
dnl which should have been included with this file. If this file is
|
||||
dnl 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
|
||||
@@ -132,18 +132,23 @@ if test -n "$GCC"; then
|
||||
# Not available to LSB binaries...
|
||||
AC_MSG_CHECKING(if GCC supports -fPIE)
|
||||
OLDCFLAGS="$CFLAGS"
|
||||
CFLAGS="$CFLAGS -fPIE"
|
||||
AC_TRY_COMPILE(,,
|
||||
[case "$CC" in
|
||||
*clang)
|
||||
case "$uname" in
|
||||
Darwin*)
|
||||
CFLAGS="$CFLAGS -fPIE -Wl,-pie"
|
||||
AC_TRY_COMPILE(,,[
|
||||
PIEFLAGS="-fPIE -Wl,-pie"
|
||||
;;
|
||||
*)
|
||||
AC_MSG_RESULT(yes)],
|
||||
AC_MSG_RESULT(no))
|
||||
;;
|
||||
|
||||
*)
|
||||
CFLAGS="$CFLAGS -fPIE -pie"
|
||||
AC_TRY_COMPILE(,,[
|
||||
PIEFLAGS="-fPIE -pie"
|
||||
;;
|
||||
esac
|
||||
AC_MSG_RESULT(yes)],
|
||||
AC_MSG_RESULT(no))
|
||||
AC_MSG_RESULT(yes)],
|
||||
AC_MSG_RESULT(no))
|
||||
;;
|
||||
esac
|
||||
CFLAGS="$OLDCFLAGS"
|
||||
fi
|
||||
|
||||
@@ -180,7 +185,7 @@ if test -n "$GCC"; then
|
||||
# The -z relro option is provided by the Linux linker command to
|
||||
# make relocatable data read-only.
|
||||
if test x$enable_relro = xyes; then
|
||||
RELROFLAGS="-Wl,-z,relro"
|
||||
RELROFLAGS="-Wl,-z,relro,-z,now"
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
@@ -291,5 +296,5 @@ case $uname in
|
||||
esac
|
||||
|
||||
dnl
|
||||
dnl End of "$Id$".
|
||||
dnl End of "$Id: cups-compiler.m4 7871 2008-08-27 21:12:43Z mike $".
|
||||
dnl
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
dnl
|
||||
dnl "$Id$"
|
||||
dnl "$Id: cups-defaults.m4 7959 2008-09-17 19:30:58Z mike $"
|
||||
dnl
|
||||
dnl Default cupsd configuration settings for CUPS.
|
||||
dnl
|
||||
@@ -400,5 +400,5 @@ AC_SUBST(CUPS_WEBIF)
|
||||
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_WEBIF, $CUPS_DEFAULT_WEBIF)
|
||||
|
||||
dnl
|
||||
dnl End of "$Id$".
|
||||
dnl End of "$Id: cups-defaults.m4 7959 2008-09-17 19:30:58Z mike $".
|
||||
dnl
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
dnl
|
||||
dnl "$Id$"
|
||||
dnl "$Id: cups-directories.m4 7799 2008-07-25 20:06:08Z mike $"
|
||||
dnl
|
||||
dnl Directory stuff for CUPS.
|
||||
dnl
|
||||
@@ -427,5 +427,5 @@ AC_DEFINE_UNQUOTED(CUPS_STATEDIR, "$CUPS_STATEDIR")
|
||||
AC_SUBST(CUPS_STATEDIR)
|
||||
|
||||
dnl
|
||||
dnl End of "$Id$".
|
||||
dnl End of "$Id: cups-directories.m4 7799 2008-07-25 20:06:08Z mike $".
|
||||
dnl
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
dnl
|
||||
dnl "$Id$"
|
||||
dnl "$Id: cups-dnssd.m4 7890 2008-08-29 22:19:39Z mike $"
|
||||
dnl
|
||||
dnl DNS Service Discovery (aka Bonjour) stuff for CUPS.
|
||||
dnl
|
||||
@@ -23,6 +23,8 @@ AC_ARG_WITH(dnssd-includes, [ --with-dnssd-includes set directory for DNS Ser
|
||||
|
||||
DNSSDLIBS=""
|
||||
DNSSD_BACKEND=""
|
||||
IPPFIND_BIN=""
|
||||
IPPFIND_MAN=""
|
||||
|
||||
if test "x$PKGCONFIG" != x -a x$enable_avahi != xno; then
|
||||
AC_MSG_CHECKING(for Avahi)
|
||||
@@ -31,6 +33,8 @@ if test "x$PKGCONFIG" != x -a x$enable_avahi != xno; then
|
||||
CFLAGS="$CFLAGS `$PKGCONFIG --cflags avahi-client`"
|
||||
DNSSDLIBS="`$PKGCONFIG --libs avahi-client`"
|
||||
DNSSD_BACKEND="dnssd"
|
||||
IPPFIND_BIN="ippfind"
|
||||
IPPFIND_MAN="ippfind.\$(MAN1EXT)"
|
||||
AC_DEFINE(HAVE_AVAHI)
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
@@ -45,6 +49,8 @@ if test "x$DNSSD_BACKEND" = x -a x$enable_dnssd != xno; then
|
||||
AC_DEFINE(HAVE_DNSSD)
|
||||
DNSSDLIBS="-framework CoreFoundation -framework SystemConfiguration"
|
||||
DNSSD_BACKEND="dnssd"
|
||||
IPPFIND_BIN="ippfind"
|
||||
IPPFIND_MAN="ippfind.\$(MAN1EXT)"
|
||||
;;
|
||||
*)
|
||||
# All others...
|
||||
@@ -61,6 +67,8 @@ if test "x$DNSSD_BACKEND" = x -a x$enable_dnssd != xno; then
|
||||
AC_DEFINE(HAVE_DNSSD)
|
||||
DNSSDLIBS="-ldns_sd"
|
||||
DNSSD_BACKEND="dnssd",
|
||||
IPPFIND_BIN="ippfind"
|
||||
IPPFIND_MAN="ippfind.\$(MAN1EXT)"
|
||||
AC_MSG_RESULT(no))
|
||||
LIBS="$SAVELIBS"
|
||||
;;
|
||||
@@ -70,7 +78,9 @@ fi
|
||||
|
||||
AC_SUBST(DNSSDLIBS)
|
||||
AC_SUBST(DNSSD_BACKEND)
|
||||
AC_SUBST(IPPFIND_BIN)
|
||||
AC_SUBST(IPPFIND_MAN)
|
||||
|
||||
dnl
|
||||
dnl End of "$Id$".
|
||||
dnl End of "$Id: cups-dnssd.m4 7890 2008-08-29 22:19:39Z mike $".
|
||||
dnl
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
dnl
|
||||
dnl "$Id$"
|
||||
dnl "$Id: cups-gssapi.m4 11324 2013-10-04 03:11:42Z msweet $"
|
||||
dnl
|
||||
dnl GSSAPI/Kerberos library detection for CUPS.
|
||||
dnl
|
||||
dnl Copyright 2007-2012 by Apple Inc.
|
||||
dnl Copyright 2007-2013 by Apple Inc.
|
||||
dnl Copyright 2006-2007 by Easy Software Products.
|
||||
dnl
|
||||
dnl This file contains Kerberos support code, copyright 2006 by
|
||||
@@ -71,38 +71,9 @@ if test x$enable_gssapi != xno; then
|
||||
if test "x$LIBGSSAPI" != x; then
|
||||
AC_CHECK_HEADER(krb5.h, AC_DEFINE(HAVE_KRB5_H))
|
||||
if test -d /System/Library/Frameworks/GSS.framework; then
|
||||
gssdir="/System/Library/Frameworks/GSS.framework"
|
||||
AC_MSG_CHECKING(for GSS/gssapi.h presence)
|
||||
if test -f $gssdir/Headers/gssapi.h; then
|
||||
AC_DEFINE(HAVE_GSS_GSSAPI_H)
|
||||
AC_MSG_RESULT(yes)
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
fi
|
||||
AC_MSG_CHECKING(for GSS/gssapi_generic.h presence)
|
||||
if test -f $gssdir/Headers/gssapi_generic.h; then
|
||||
AC_DEFINE(HAVE_GSSAPI_GENERIC_H)
|
||||
AC_MSG_RESULT(yes)
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
fi
|
||||
AC_MSG_CHECKING(for GSS/gssapi_spi.h presence)
|
||||
if test -f $gssdir/PrivateHeaders/gssapi_spi.h; then
|
||||
AC_MSG_RESULT(yes)
|
||||
AC_MSG_CHECKING(for GSS/gssapi_spi.h usability)
|
||||
if test -s $gssdir/PrivateHeaders/gssapi_spi.h; then
|
||||
AC_MSG_RESULT(yes)
|
||||
AC_DEFINE(HAVE_GSS_GSSAPI_SPI_H)
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
fi
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
if test $uversion -ge 110 -a $uversion -lt 120; then
|
||||
# Broken public headers in 10.7.x...
|
||||
AC_MSG_ERROR(Run 'sudo mkdir -p $gssdir/PrivateHeaders' and 'sudo touch $gssdir/PrivateHeaders/gssapi_spi.h' to build CUPS.)
|
||||
fi
|
||||
fi
|
||||
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))
|
||||
@@ -158,5 +129,5 @@ AC_SUBST(CUPS_DEFAULT_GSSSERVICENAME)
|
||||
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_GSSSERVICENAME, "$CUPS_DEFAULT_GSSSERVICENAME")
|
||||
|
||||
dnl
|
||||
dnl End of "$Id$".
|
||||
dnl End of "$Id: cups-gssapi.m4 11324 2013-10-04 03:11:42Z msweet $".
|
||||
dnl
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
dnl
|
||||
dnl "$Id$"
|
||||
dnl "$Id: cups-largefile.m4 6649 2007-07-11 21:46:42Z mike $"
|
||||
dnl
|
||||
dnl Large file support stuff for CUPS.
|
||||
dnl
|
||||
@@ -48,5 +48,5 @@ fi
|
||||
AC_CHECK_FUNC(strtoll, AC_DEFINE(HAVE_STRTOLL))
|
||||
|
||||
dnl
|
||||
dnl End of "$Id$".
|
||||
dnl End of "$Id: cups-largefile.m4 6649 2007-07-11 21:46:42Z mike $".
|
||||
dnl
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
dnl
|
||||
dnl "$Id$"
|
||||
dnl "$Id: cups-launchd.m4 6649 2007-07-11 21:46:42Z mike $"
|
||||
dnl
|
||||
dnl launchd stuff for CUPS.
|
||||
dnl
|
||||
@@ -39,5 +39,5 @@ AC_SUBST(DEFAULT_LAUNCHD_CONF)
|
||||
AC_SUBST(LAUNCHDLIBS)
|
||||
|
||||
dnl
|
||||
dnl End of "$Id$".
|
||||
dnl End of "$Id: cups-launchd.m4 6649 2007-07-11 21:46:42Z mike $".
|
||||
dnl
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
dnl
|
||||
dnl "$Id$"
|
||||
dnl "$Id: cups-libtool.m4 6649 2007-07-11 21:46:42Z mike $"
|
||||
dnl
|
||||
dnl Libtool stuff for CUPS.
|
||||
dnl
|
||||
@@ -35,5 +35,5 @@ if test x$LIBTOOL != x; then
|
||||
fi
|
||||
|
||||
dnl
|
||||
dnl End of "$Id$".
|
||||
dnl End of "$Id: cups-libtool.m4 6649 2007-07-11 21:46:42Z mike $".
|
||||
dnl
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
dnl
|
||||
dnl "$Id$"
|
||||
dnl "$Id: cups-manpages.m4 6649 2007-07-11 21:46:42Z mike $"
|
||||
dnl
|
||||
dnl Manpage stuff for CUPS.
|
||||
dnl
|
||||
@@ -78,5 +78,5 @@ AC_SUBST(MAN8EXT)
|
||||
AC_SUBST(MAN8DIR)
|
||||
|
||||
dnl
|
||||
dnl End of "$Id$".
|
||||
dnl End of "$Id: cups-manpages.m4 6649 2007-07-11 21:46:42Z mike $".
|
||||
dnl
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
dnl
|
||||
dnl "$Id$"
|
||||
dnl "$Id: cups-network.m4 7918 2008-09-08 22:03:01Z mike $"
|
||||
dnl
|
||||
dnl Networking stuff for CUPS.
|
||||
dnl
|
||||
@@ -70,5 +70,5 @@ AC_CHECK_HEADERS(AppleTalk/at_proto.h,AC_DEFINE(HAVE_APPLETALK_AT_PROTO_H),,
|
||||
[#include <netat/appletalk.h>])
|
||||
|
||||
dnl
|
||||
dnl End of "$Id$".
|
||||
dnl End of "$Id: cups-network.m4 7918 2008-09-08 22:03:01Z mike $".
|
||||
dnl
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
dnl
|
||||
dnl "$Id$"
|
||||
dnl "$Id: cups-opsys.m4 6649 2007-07-11 21:46:42Z mike $"
|
||||
dnl
|
||||
dnl Operating system stuff for CUPS.
|
||||
dnl
|
||||
@@ -35,5 +35,5 @@ case "$uname" in
|
||||
esac
|
||||
|
||||
dnl
|
||||
dnl "$Id$"
|
||||
dnl "$Id: cups-opsys.m4 6649 2007-07-11 21:46:42Z mike $"
|
||||
dnl
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
dnl
|
||||
dnl "$Id$"
|
||||
dnl "$Id: cups-pam.m4 7960 2008-09-17 19:42:02Z mike $"
|
||||
dnl
|
||||
dnl PAM stuff for CUPS.
|
||||
dnl
|
||||
@@ -98,5 +98,5 @@ AC_SUBST(PAMMOD)
|
||||
AC_SUBST(PAMMODAUTH)
|
||||
|
||||
dnl
|
||||
dnl End of "$Id$".
|
||||
dnl End of "$Id: cups-pam.m4 7960 2008-09-17 19:42:02Z mike $".
|
||||
dnl
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
dnl
|
||||
dnl "$Id$"
|
||||
dnl "$Id: cups-scripting.m4 7915 2008-09-07 22:18:29Z mike $"
|
||||
dnl
|
||||
dnl Scripting configuration stuff for CUPS.
|
||||
dnl
|
||||
@@ -85,5 +85,5 @@ if test "x$CUPS_PYTHON" != x; then
|
||||
fi
|
||||
|
||||
dnl
|
||||
dnl End of "$Id$".
|
||||
dnl End of "$Id: cups-scripting.m4 7915 2008-09-07 22:18:29Z mike $".
|
||||
dnl
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
dnl
|
||||
dnl "$Id$"
|
||||
dnl "$Id: cups-sharedlibs.m4 7630 2008-06-09 22:31:44Z mike $"
|
||||
dnl
|
||||
dnl Shared library support for CUPS.
|
||||
dnl
|
||||
@@ -234,5 +234,5 @@ AC_SUBST(IMGLIBS)
|
||||
AC_SUBST(EXPORT_LDFLAGS)
|
||||
|
||||
dnl
|
||||
dnl End of "$Id$".
|
||||
dnl End of "$Id: cups-sharedlibs.m4 7630 2008-06-09 22:31:44Z mike $".
|
||||
dnl
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
dnl
|
||||
dnl "$Id$"
|
||||
dnl "$Id: cups-ssl.m4 7241 2008-01-22 22:34:52Z mike $"
|
||||
dnl
|
||||
dnl OpenSSL/GNUTLS stuff for CUPS.
|
||||
dnl
|
||||
@@ -157,5 +157,5 @@ EXPORT_SSLLIBS="$SSLLIBS"
|
||||
AC_SUBST(EXPORT_SSLLIBS)
|
||||
|
||||
dnl
|
||||
dnl End of "$Id$".
|
||||
dnl End of "$Id: cups-ssl.m4 7241 2008-01-22 22:34:52Z mike $".
|
||||
dnl
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
dnl
|
||||
dnl "$Id$"
|
||||
dnl "$Id: cups-threads.m4 6649 2007-07-11 21:46:42Z mike $"
|
||||
dnl
|
||||
dnl Threading stuff for CUPS.
|
||||
dnl
|
||||
@@ -50,5 +50,5 @@ fi
|
||||
AC_SUBST(PTHREAD_FLAGS)
|
||||
|
||||
dnl
|
||||
dnl End of "$Id$".
|
||||
dnl End of "$Id: cups-threads.m4 6649 2007-07-11 21:46:42Z mike $".
|
||||
dnl
|
||||
|
||||
+3
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* "$Id: config.h.in 11642 2014-02-27 15:57:59Z msweet $"
|
||||
*
|
||||
* Configuration file for CUPS.
|
||||
*
|
||||
@@ -535,6 +535,7 @@
|
||||
|
||||
#undef HAVE_DBUS
|
||||
#undef HAVE_DBUS_MESSAGE_ITER_INIT_APPEND
|
||||
#undef HAVE_DBUS_THREADS_INIT
|
||||
|
||||
|
||||
/*
|
||||
@@ -706,5 +707,5 @@ static __inline int _cups_abs(int i) { return (i < 0 ? -i : i); }
|
||||
#endif /* !_CUPS_CONFIG_H_ */
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
* End of "$Id: config.h.in 11642 2014-02-27 15:57:59Z msweet $".
|
||||
*/
|
||||
|
||||
+11405
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
+2
-3
@@ -1,5 +1,5 @@
|
||||
dnl
|
||||
dnl "$Id$"
|
||||
dnl "$Id: configure.in 11109 2013-07-08 21:15:13Z msweet $"
|
||||
dnl
|
||||
dnl Configuration script for CUPS.
|
||||
dnl
|
||||
@@ -70,7 +70,6 @@ AC_OUTPUT(Makedefs
|
||||
desktop/cups.desktop
|
||||
doc/help/ref-cups-files-conf.html
|
||||
doc/help/ref-cupsd-conf.html
|
||||
doc/help/standard.html
|
||||
doc/index.html
|
||||
man/client.conf.man
|
||||
man/cups-deviced.man
|
||||
@@ -93,5 +92,5 @@ AC_OUTPUT(Makedefs
|
||||
chmod +x cups-config
|
||||
|
||||
dnl
|
||||
dnl End of "$Id$".
|
||||
dnl End of "$Id: configure.in 11109 2013-07-08 21:15:13Z msweet $".
|
||||
dnl
|
||||
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
#! /bin/sh
|
||||
#
|
||||
# "$Id$"
|
||||
# "$Id: cups-config.in 10996 2013-05-29 11:51:34Z msweet $"
|
||||
#
|
||||
# CUPS configuration utility.
|
||||
#
|
||||
@@ -142,5 +142,5 @@ while test $# -gt 0; do
|
||||
done
|
||||
|
||||
#
|
||||
# End of "$Id$".
|
||||
# End of "$Id: cups-config.in 10996 2013-05-29 11:51:34Z msweet $".
|
||||
#
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# "$Id$"
|
||||
# "$Id: Makefile 10996 2013-05-29 11:51:34Z msweet $"
|
||||
#
|
||||
# API library Makefile for CUPS.
|
||||
#
|
||||
@@ -639,5 +639,5 @@ include Dependencies
|
||||
|
||||
|
||||
#
|
||||
# End of "$Id$".
|
||||
# End of "$Id: Makefile 10996 2013-05-29 11:51:34Z msweet $".
|
||||
#
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* "$Id: adminutil.c 10996 2013-05-29 11:51:34Z msweet $"
|
||||
*
|
||||
* Administration utility API definitions for CUPS.
|
||||
*
|
||||
@@ -2337,5 +2337,5 @@ write_option(cups_file_t *dstfp, /* I - PPD file */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
* End of "$Id: adminutil.c 10996 2013-05-29 11:51:34Z msweet $".
|
||||
*/
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* "$Id: adminutil.h 10996 2013-05-29 11:51:34Z msweet $"
|
||||
*
|
||||
* Administration utility API definitions for CUPS.
|
||||
*
|
||||
@@ -77,5 +77,5 @@ extern int cupsAdminSetServerSettings(http_t *http,
|
||||
#endif /* !_CUPS_ADMINUTIL_H_ */
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
* End of "$Id: adminutil.h 10996 2013-05-29 11:51:34Z msweet $".
|
||||
*/
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!--
|
||||
"$Id$"
|
||||
"$Id: api-array.header 7266 2008-01-29 02:15:29Z mike $"
|
||||
|
||||
Array API header for CUPS.
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!--
|
||||
"$Id$"
|
||||
"$Id: api-array.shtml 7616 2008-05-28 00:34:13Z mike $"
|
||||
|
||||
Array API introduction for CUPS.
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!--
|
||||
"$Id$"
|
||||
"$Id: api-cups.header 7279 2008-01-31 01:50:44Z mike $"
|
||||
|
||||
CUPS API header for CUPS.
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<!--
|
||||
"$Id$"
|
||||
"$Id: api-cups.shtml 7337 2008-02-22 04:44:04Z mike $"
|
||||
|
||||
API introduction for CUPS.
|
||||
|
||||
Copyright 2007-2011 by Apple Inc.
|
||||
Copyright 2007-2013 by Apple Inc.
|
||||
Copyright 1997-2006 by Easy Software Products, all rights reserved.
|
||||
|
||||
These coded instructions, statements, and computer programs are the
|
||||
@@ -183,7 +183,7 @@ int num_options = 0;
|
||||
<a href='#cups_option_t'>cups_option_t</a> *options = NULL;
|
||||
<a href='#cups_dest_t'>cups_dest_t</a> *dest;
|
||||
|
||||
for (i = 0; i < dest->num_options; i ++)
|
||||
for (i = 0; i < dest->num_options; i ++)
|
||||
num_options = <a href='#cupsAddOption'>cupsAddOption</a>(dest->options[i].name, dest->options[i].value,
|
||||
num_options, &options);
|
||||
</pre>
|
||||
@@ -235,7 +235,7 @@ job_id = <a href='#cupsPrintFiles'>cupsPrintFiles</a>(dest->name, 3, files, "Tes
|
||||
|
||||
<p>Finally, the <a href='#cupsCreateJob'><code>cupsCreateJob</code></a>
|
||||
function creates a new job with no files in it. Files are added using the
|
||||
<a href='#cupsStartDocument'><code>cupsStartDocument</code></a>,
|
||||
<a href='#cupsStartDocument'><code>cupsStartDocument</code></a>,
|
||||
<a href='api-httpipp.html#cupsWriteRequestData'><code>cupsWriteRequestData</code></a>,
|
||||
and <a href='#cupsFinishDocument'><code>cupsFinishDocument</code></a> functions.
|
||||
The following example creates a job with 10 text files for printing:</p>
|
||||
@@ -299,7 +299,7 @@ int num_jobs;
|
||||
<a href='#cups_job_t'>cups_job_t</a> *jobs;
|
||||
int i;
|
||||
ipp_jstate_t job_state = IPP_JOB_PENDING;
|
||||
|
||||
|
||||
while (job_state < IPP_JOB_STOPPED)
|
||||
{
|
||||
/* Get my jobs (1) with any state (-1) */
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!--
|
||||
"$Id$"
|
||||
"$Id: api-filedir.header 7279 2008-01-31 01:50:44Z mike $"
|
||||
|
||||
File and Directory API header for CUPS.
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!--
|
||||
"$Id$"
|
||||
"$Id: api-filedir.shtml 7279 2008-01-31 01:50:44Z mike $"
|
||||
|
||||
File and directory API introduction for CUPS.
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<!--
|
||||
"$Id$"
|
||||
"$Id: api-filter.header 7616 2008-05-28 00:34:13Z mike $"
|
||||
|
||||
Filter and backend programming header for CUPS.
|
||||
|
||||
Copyright 2008-2011 by Apple Inc.
|
||||
Copyright 2008-2014 by Apple Inc.
|
||||
|
||||
These coded instructions, statements, and computer programs are the
|
||||
property of Apple Inc. and are protected by Federal copyright
|
||||
|
||||
+101
-12
@@ -1,9 +1,9 @@
|
||||
<!--
|
||||
"$Id$"
|
||||
"$Id: api-filter.shtml 7677 2008-06-19 23:22:19Z mike $"
|
||||
|
||||
Filter and backend programming introduction for CUPS.
|
||||
|
||||
Copyright 2007-2012 by Apple Inc.
|
||||
Copyright 2007-2013 by Apple Inc.
|
||||
Copyright 1997-2006 by Easy Software Products, all rights reserved.
|
||||
|
||||
These coded instructions, statements, and computer programs are the
|
||||
@@ -237,7 +237,7 @@ prefix strings:</p>
|
||||
<code>marker-types</code>, <code>printer-alert</code>, and
|
||||
<code>printer-alert-description</code> printer attributes. Standard
|
||||
<code>marker-types</code> values are listed in <a href='#TABLE1'>Table
|
||||
1</a>.</dd>
|
||||
1</a>. String values need special handling - see <a href="#ATTR_STRINGS">Reporting Attribute String Values</a> below.</dd>
|
||||
|
||||
<dt>CRIT: message</dt>
|
||||
<dd>Sets the printer-state-message attribute and adds the specified
|
||||
@@ -320,11 +320,11 @@ the "DEBUG:" prefix string.</p>
|
||||
<td>Fuser unit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>fuserCleaningPad</td>
|
||||
<td>fuser-cleaning-pad</td>
|
||||
<td>Fuser cleaning pad</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>fuserOil</td>
|
||||
<td>fuser-oil</td>
|
||||
<td>Fuser oil</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -336,7 +336,7 @@ the "DEBUG:" prefix string.</p>
|
||||
<td>Photo conductor</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>solidWax</td>
|
||||
<td>solid-wax</td>
|
||||
<td>Wax supply</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -348,19 +348,19 @@ the "DEBUG:" prefix string.</p>
|
||||
<td>Toner supply</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>transferUnit</td>
|
||||
<td>transfer-unit</td>
|
||||
<td>Transfer unit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>wasteInk</td>
|
||||
<td>waste-ink</td>
|
||||
<td>Waste ink tank</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>wasteToner</td>
|
||||
<td>waste-toner</td>
|
||||
<td>Waste toner tank</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>wasteWax</td>
|
||||
<td>waste-wax</td>
|
||||
<td>Waste wax tank</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
@@ -440,6 +440,95 @@ the "DEBUG:" prefix string.</p>
|
||||
</tbody>
|
||||
</table></div>
|
||||
|
||||
|
||||
<h4><a name="ATTR_STRINGS">Reporting Attribute String Values</a></h4>
|
||||
|
||||
<p>When reporting string values using "ATTR:" messages, a filter or backend must take special care to appropriately quote those values. The scheduler uses the CUPS option parsing code for attributes, so the general syntax is:</p>
|
||||
|
||||
<pre class="example">
|
||||
name=simple
|
||||
name=simple,simple,...
|
||||
name='complex value'
|
||||
name="complex value"
|
||||
name='"complex value"','"complex value"',...
|
||||
</pre>
|
||||
|
||||
<p>Simple values are strings that do not contain spaces, quotes, backslashes, or the comma and can be placed verbatim in the "ATTR:" message, for example:</p>
|
||||
|
||||
<pre class="example">
|
||||
int levels[4] = { 40, 50, 60, 70 }; /* CMYK */
|
||||
|
||||
fputs("ATTR: marker-colors=#00FFFF,#FF00FF,#FFFF00,#000000\n", stderr);
|
||||
fputs("ATTR: marker-high-levels=100,100,100,100\n", stderr);
|
||||
fprintf(stderr, "ATTR: marker-levels=%d,%d,%d,%d\n", levels[0], levels[1],
|
||||
levels[2], levels[3], levels[4]);
|
||||
fputs("ATTR: marker-low-levels=5,5,5,5\n", stderr);
|
||||
fputs("ATTR: marker-types=toner,toner,toner,toner\n", stderr);
|
||||
</pre>
|
||||
|
||||
<p>Complex values that contains spaces, quotes, backslashes, or the comma must be quoted. For a single value a single set of quotes is sufficient:</p>
|
||||
|
||||
<pre class="example">
|
||||
fputs("ATTR: marker-message='Levels shown are approximate.'\n", stderr);
|
||||
</pre>
|
||||
|
||||
<p>When multiple values are reported, each value must be enclosed by a set of single and double quotes:</p>
|
||||
|
||||
<pre class="example">
|
||||
fputs("ATTR: marker-names='\"Cyan Toner\"','\"Magenta Toner\"',"
|
||||
"'\"Yellow Toner\"','\"Black Toner\"'\n", stderr);
|
||||
</pre>
|
||||
|
||||
<p>The IPP backend includes a <var>quote_string</var> function that may be used to properly quote a complex value in an "ATTR:" message:</p>
|
||||
|
||||
<pre class="example">
|
||||
static const char * /* O - Quoted string */
|
||||
quote_string(const char *s, /* I - String */
|
||||
char *q, /* I - Quoted string buffer */
|
||||
size_t qsize) /* I - Size of quoted string buffer */
|
||||
{
|
||||
char *qptr, /* Pointer into string buffer */
|
||||
*qend; /* End of string buffer */
|
||||
|
||||
|
||||
qptr = q;
|
||||
qend = q + qsize - 5;
|
||||
|
||||
if (qend < q)
|
||||
{
|
||||
*q = '\0';
|
||||
return (q);
|
||||
}
|
||||
|
||||
*qptr++ = '\'';
|
||||
*qptr++ = '\"';
|
||||
|
||||
while (*s && qptr < qend)
|
||||
{
|
||||
if (*s == '\\' || *s == '\"' || *s == '\'')
|
||||
{
|
||||
if (qptr < (qend - 4))
|
||||
{
|
||||
*qptr++ = '\\';
|
||||
*qptr++ = '\\';
|
||||
*qptr++ = '\\';
|
||||
}
|
||||
else
|
||||
break;
|
||||
}
|
||||
|
||||
*qptr++ = *s++;
|
||||
}
|
||||
|
||||
*qptr++ = '\"';
|
||||
*qptr++ = '\'';
|
||||
*qptr = '\0';
|
||||
|
||||
return (q);
|
||||
}
|
||||
</pre>
|
||||
|
||||
|
||||
<h4><a name="MANAGING_STATE">Managing Printer State in a Filter</a></h4>
|
||||
|
||||
<p>Filters are responsible for managing the state keywords they set using
|
||||
@@ -488,7 +577,7 @@ from localizing the vendor-prefixed keyword in the PPD file - otherwise both
|
||||
the generic and vendor-specific keyword will be shown in the user
|
||||
interface.</p>
|
||||
|
||||
</blockquote></dd>
|
||||
</blockquote>
|
||||
|
||||
<h4><a name="REPORTING_SUPPLIES">Reporting Supply Levels</a></h4>
|
||||
|
||||
@@ -613,7 +702,7 @@ datalen = sizeof(data) - 1;
|
||||
status = <a href="#cupsSideChannelDoRequest">cupsSideChannelDoRequest</a>(CUPS_SC_CMD_GET_DEVICE_ID, data, &datalen, 1.0);
|
||||
|
||||
/* Use the returned value if OK was returned and the length is non-zero */
|
||||
if (status == CUPS_SC_STATUS_OK && datalen > 0)
|
||||
if (status == CUPS_SC_STATUS_OK && datalen > 0)
|
||||
data[datalen] = '\0';
|
||||
else
|
||||
data[0] = '\0';
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!--
|
||||
"$Id$"
|
||||
"$Id: api-httpipp.header 7258 2008-01-28 00:15:05Z mike $"
|
||||
|
||||
HTTP and IPP API header for CUPS.
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!--
|
||||
"$Id$"
|
||||
"$Id: api-httpipp.shtml 7684 2008-06-23 16:47:38Z mike $"
|
||||
|
||||
HTTP and IPP API introduction for CUPS.
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!--
|
||||
"$Id$"
|
||||
"$Id: api-ppd.header 7616 2008-05-28 00:34:13Z mike $"
|
||||
|
||||
PPD API header for CUPS.
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!--
|
||||
"$Id$"
|
||||
"$Id: api-ppd.shtml 7616 2008-05-28 00:34:13Z mike $"
|
||||
|
||||
PPD API introduction for CUPS.
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* "$Id: array-private.h 3933 2012-10-01 03:01:10Z msweet $"
|
||||
*
|
||||
* Private array definitions for CUPS.
|
||||
*
|
||||
@@ -48,5 +48,5 @@ extern cups_array_t *_cupsArrayNewStrings(const char *s, char delim)
|
||||
#endif /* !_CUPS_ARRAY_PRIVATE_H_ */
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
* End of "$Id: array-private.h 3933 2012-10-01 03:01:10Z msweet $".
|
||||
*/
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* "$Id: array.c 10996 2013-05-29 11:51:34Z msweet $"
|
||||
*
|
||||
* Sorted array routines for CUPS.
|
||||
*
|
||||
@@ -1362,5 +1362,5 @@ cups_array_find(cups_array_t *a, /* I - Array */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
* End of "$Id: array.c 10996 2013-05-29 11:51:34Z msweet $".
|
||||
*/
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* "$Id: array.h 10996 2013-05-29 11:51:34Z msweet $"
|
||||
*
|
||||
* Sorted array definitions for CUPS.
|
||||
*
|
||||
@@ -88,5 +88,5 @@ extern void *cupsArrayUserData(cups_array_t *a) _CUPS_API_1_2;
|
||||
#endif /* !_CUPS_ARRAY_H_ */
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
* End of "$Id: array.h 10996 2013-05-29 11:51:34Z msweet $".
|
||||
*/
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* "$Id: attr.c 10996 2013-05-29 11:51:34Z msweet $"
|
||||
*
|
||||
* PPD model-specific attribute routines for CUPS.
|
||||
*
|
||||
@@ -331,5 +331,5 @@ _ppdNormalizeMakeAndModel(
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
* End of "$Id: attr.c 10996 2013-05-29 11:51:34Z msweet $".
|
||||
*/
|
||||
|
||||
Alguns arquivos não foram exibidos porque demasiados arquivos foram alterados neste diff Mostrar Mais
Referência em uma Nova Issue
Bloquear um usuário