Comparar commits
1590 Commits
branch-2.1
...
xform
| Autor | SHA1 | Data | |
|---|---|---|---|
| 1539283f98 | |||
| a6dd739c02 | |||
| 929486aa64 | |||
| 579a5525e8 | |||
| f66b1d85f8 | |||
| 2c4c9ada65 | |||
| e1ac3f36d0 | |||
| c95282ef08 | |||
| 9e838da3db | |||
| 0d92ec1c6f | |||
| beb37da67b | |||
| fd32084d40 | |||
| ac9e295f23 | |||
| 778759a48f | |||
| ac79576a7f | |||
| 76d2c4481f | |||
| 1660d61202 | |||
| 3eb5ec664f | |||
| a17ce1d474 | |||
| 1e01455aeb | |||
| 5c2c2ab6a3 | |||
| 06a5a4d332 | |||
| 4cadd6202f | |||
| 2de7c5f81c | |||
| 8127ebd190 | |||
| e5fee178d9 | |||
| 077bd665bd | |||
| dfe5f3b95c | |||
| 616f3f56dd | |||
| f594a3db6d | |||
| d3ab37abea | |||
| 619d6d95eb | |||
| b95156db4c | |||
| ff82ce17bf | |||
| af62b316e7 | |||
| 073b3929a1 | |||
| 17cc92f131 | |||
| bd4b5b3ee1 | |||
| c77dede2ed | |||
| 4e02be68c1 | |||
| 0873f681e4 | |||
| c1de912d13 | |||
| fbcc927ded | |||
| 4feb1fe2e5 | |||
| c944b62ba8 | |||
| 44cb0dd233 | |||
| 3581e03de5 | |||
| 56f0cbeb27 | |||
| 656c109a1c | |||
| 159e027902 | |||
| 7271db11d2 | |||
| d07cb8d5dc | |||
| 15fe2ddc7f | |||
| df59b110ad | |||
| b056061b24 | |||
| 86d93a7539 | |||
| 4b4895dfe7 | |||
| b25f3cf080 | |||
| 63f8dcbd47 | |||
| 6a76f435d8 | |||
| d0bfbc98b6 | |||
| 561e0647a8 | |||
| 0fb02fb9ce | |||
| 187b9322c8 | |||
| 5192eac3e6 | |||
| 34646e298e | |||
| 3f72eb0187 | |||
| ada35e599c | |||
| 003c1790e9 | |||
| 73c6236f2c | |||
| 8aecb2299e | |||
| 658c64bf2e | |||
| 84047a015c | |||
| 739ad3f3ea | |||
| afd96090b5 | |||
| a0fccd8044 | |||
| 95f319b9dd | |||
| 13ceaad273 | |||
| 32987439c3 | |||
| e6062e8e9c | |||
| 0dfe699052 | |||
| 367068f32a | |||
| 0c7f533afd | |||
| 0fea18126c | |||
| ca75cc1354 | |||
| c6dbbca1f5 | |||
| ea95f7fe1a | |||
| b0bb6caa3a | |||
| cff3f79fb2 | |||
| f1b7e5634d | |||
| 516dacf7d3 | |||
| a9e8acf53d | |||
| 18dfe3cbe7 | |||
| 30df0a0309 | |||
| 818bbe7af2 | |||
| 9b440f8a5c | |||
| 3cd7b5e053 | |||
| 449f30b03d | |||
| c2532688fb | |||
| 08e8f007f4 | |||
| ead626d781 | |||
| 60bb47475a | |||
| ddf2ec7348 | |||
| 706a0485c5 | |||
| c65e1c4ffd | |||
| bb54b17e78 | |||
| c64170e5f6 | |||
| 0bb02bfa09 | |||
| 66d471becb | |||
| fe1a430545 | |||
| 53f8d64f84 | |||
| eb61cb5bf0 | |||
| a7aabde8fe | |||
| 699fe02075 | |||
| 19186c8bae | |||
| 7d26bf7d6c | |||
| d6ddd199f4 | |||
| a468069a20 | |||
| ab89234de2 | |||
| afad2da22d | |||
| 191be31cf1 | |||
| f28728ee32 | |||
| c5b7774cb8 | |||
| e22f464e37 | |||
| e28345e78d | |||
| f17549fbb4 | |||
| 06e1afc39b | |||
| a166e9337a | |||
| 7f4d7b8a51 | |||
| 564cd57de8 | |||
| 7c8fb0fc01 | |||
| 22974c5f32 | |||
| 092db1e29e | |||
| f6e7a0c53a | |||
| 728fd81076 | |||
| 27551f043a | |||
| b969d5af2b | |||
| 2da2477dac | |||
| dd6a3fd2ba | |||
| aed3d896a7 | |||
| a492d345e8 | |||
| 8e2e09c1e2 | |||
| b87ec78957 | |||
| 081027767a | |||
| fd96ad89ff | |||
| efb40dcacf | |||
| ab8a07ec22 | |||
| 6f7bfae71c | |||
| 123979a9db | |||
| 342395f9d1 | |||
| 314e45c21a | |||
| c283f46deb | |||
| 7b98191acd | |||
| f61dfc0df4 | |||
| 1055deceda | |||
| 117bf0d144 | |||
| 4ef3ee3749 | |||
| 7c91db71b3 | |||
| a8b28f1844 | |||
| 43bcc47b51 | |||
| 3145b7e6a8 | |||
| 6a3d63e638 | |||
| 6bfe0be46a | |||
| 378eeedf0f | |||
| a20d0ea003 | |||
| c4faa907bc | |||
| 625bb9ded6 | |||
| f89686dd3f | |||
| ead6e4884a | |||
| e16130570f | |||
| 141c8f96be | |||
| eb1573431f | |||
| 2fc81be235 | |||
| 7917399e29 | |||
| 60da78baeb | |||
| 4a9942a2f0 | |||
| 33baffa2a9 | |||
| 9bebe8c90d | |||
| 82341b0b45 | |||
| 77401306b8 | |||
| a0b79d3ad5 | |||
| 60645dd1d8 | |||
| 2fa1ba3cc0 | |||
| 3d90ace317 | |||
| fd21ed5d82 | |||
| cfd375ad10 | |||
| c88f441f94 | |||
| 3f76968f99 | |||
| 5e1c3dff00 | |||
| 9e44dfbe6c | |||
| 9661b11263 | |||
| 7ca56f9982 | |||
| 91bc88ebf7 | |||
| dda99de928 | |||
| 89f3668e0b | |||
| 336b669e2e | |||
| 841a2216d9 | |||
| 8d59b9f749 | |||
| c5f5c5a768 | |||
| db0c6e1dc6 | |||
| 67091b1b0e | |||
| 0e4593c0be | |||
| 6d14c1bbc6 | |||
| f84606244b | |||
| cfa8aa69a5 | |||
| 034b06df8f | |||
| aa0309120d | |||
| 060016a056 | |||
| 253dc4fceb | |||
| 01dee74c61 | |||
| c4c3624180 | |||
| accedcf822 | |||
| ac05c63065 | |||
| 1576d09baf | |||
| f05177e23d | |||
| f306ad4d32 | |||
| fce9ddcbee | |||
| 42a5ae2af8 | |||
| ec1305170b | |||
| 454619c757 | |||
| 0f32ec93ad | |||
| edf09ba912 | |||
| 84de5e9234 | |||
| 63b75fbef9 | |||
| 71dc43af7a | |||
| 982be458e6 | |||
| 7e38261379 | |||
| 704499ddee | |||
| 7118716713 | |||
| 4f63d6cdaf | |||
| 27ee2c4dd7 | |||
| 4b9c510fd7 | |||
| 7f9a23b9bf | |||
| 13696eb2c6 | |||
| 4f98c13cc3 | |||
| 89550f3f33 | |||
| 9fafba54bf | |||
| cd5cb66598 | |||
| 4b042bf6e3 | |||
| da9ffe2329 | |||
| e944dbd40f | |||
| 363746937a | |||
| 312370bd75 | |||
| 7be499d208 | |||
| 3d468ced3d | |||
| eb2cb9b09f | |||
| d56216499e | |||
| 105b26dede | |||
| e310189747 | |||
| 0e743fdf62 | |||
| a236979ee3 | |||
| 7ec1163068 | |||
| 054eee9cd0 | |||
| 6f2b9f6274 | |||
| 9bfae9a772 | |||
| 7db9341466 | |||
| 8f1fbdecb4 | |||
| 513f1b621c | |||
| d7b386888e | |||
| 6646208ba5 | |||
| c5d2b23327 | |||
| 47386fc106 | |||
| 3aca6b555e | |||
| d6db9ea1dc | |||
| 409f54979f | |||
| 25140c63ec | |||
| 7a16b8b30a | |||
| 87de8b54d7 | |||
| f1547f121c | |||
| d0df9cd337 | |||
| b00c84094b | |||
| 98491ecc6f | |||
| 4d8e89a654 | |||
| 11143dcf5b | |||
| 18a1649286 | |||
| 58c3683023 | |||
| 303be29243 | |||
| 275af5ac7b | |||
| d821d89415 | |||
| 6579c998c4 | |||
| 1377fb858c | |||
| f9ee3b81e1 | |||
| 7e50a735a8 | |||
| 56b62a3b54 | |||
| 02773ede84 | |||
| ec9996719f | |||
| affaf0737f | |||
| 49fa4983f2 | |||
| 34be0e8038 | |||
| ce0d9679a4 | |||
| fad821594f | |||
| f8913c6d2c | |||
| a75c0e5961 | |||
| 5ee613bbc6 | |||
| 02c88e673e | |||
| 46a7b416ee | |||
| c61b78bd84 | |||
| 0ae5b012b2 | |||
| 15bba96c30 | |||
| bea3713442 | |||
| 5639a7b41c | |||
| 360e815a88 | |||
| c00282bb43 | |||
| 3a16bd9c9d | |||
| a7cdcd19b8 | |||
| 79424d8b9a | |||
| 5889fea75a | |||
| 16389be3ba | |||
| f97678f279 | |||
| 979804902c | |||
| b889560c05 | |||
| c9e9d0e810 | |||
| a5dd746bd0 | |||
| 6b33281c3e | |||
| 9554d4e748 | |||
| c0a47c1101 | |||
| 4cf66fef48 | |||
| b17b635a37 | |||
| 5d8b7d2665 | |||
| e4e371946b | |||
| 46d22fe908 | |||
| 9d4ae311cb | |||
| 2cf3a36a4e | |||
| fd2f0a7af7 | |||
| aa2a77dec8 | |||
| f0f4e0366c | |||
| 4279822fe4 | |||
| c6990c1ed5 | |||
| c31737b031 | |||
| 2d947886ad | |||
| 116c301f23 | |||
| b908d72cac | |||
| 2cb1fda9fe | |||
| 0728c89bcf | |||
| 123cfe0202 | |||
| d2123aee55 | |||
| ea4dcf9ff4 | |||
| b39dd420c6 | |||
| 5614f45d77 | |||
| 5229ea1a41 | |||
| b72c5bf2ed | |||
| befbadcef6 | |||
| 7b0a28e38f | |||
| e78c14f7ea | |||
| e146105294 | |||
| e37405ea8e | |||
| 5535551fd9 | |||
| 7f14a29798 | |||
| 4b16c717e5 | |||
| 240a27f93b | |||
| 75e1a17cad | |||
| 40cc612af4 | |||
| 9449dd948a | |||
| 2793a478d0 | |||
| 5b6caf71b8 | |||
| b10aebb1d3 | |||
| 9964a31a77 | |||
| 7c7347a346 | |||
| b337f966e8 | |||
| e9b2d701da | |||
| 91d748b919 | |||
| fa76bc3dc0 | |||
| 4f272af7bb | |||
| b770b18d0f | |||
| b0a1b229b3 | |||
| 997db40489 | |||
| 07911378c0 | |||
| 345e10ca71 | |||
| 41c0a57318 | |||
| 10f9350b7e | |||
| 03bc3ef4c2 | |||
| 7e7a13a32e | |||
| 60716f946c | |||
| e34d348250 | |||
| ada3421240 | |||
| a2a13afb48 | |||
| 259b03bc46 | |||
| a375587b8c | |||
| 0bc1a539f4 | |||
| 86390cbf57 | |||
| ced9dda826 | |||
| e9faaeef18 | |||
| c9dbe83d17 | |||
| e3b9d1f520 | |||
| 9f573d7be9 | |||
| 5cc8588e8c | |||
| f198f7e1e7 | |||
| 5e59cd062f | |||
| bee711586d | |||
| e7729c5a14 | |||
| 9eb416ee89 | |||
| b74b285e47 | |||
| 48dfd9a9a2 | |||
| 4174429905 | |||
| 13be9452da | |||
| a9357c9da4 | |||
| 44b3f16133 | |||
| c536b6c583 | |||
| 03d3907a33 | |||
| 76ae98d657 | |||
| 6d086e08e4 | |||
| 49f495c32e | |||
| f8a5ad9bde | |||
| 07cb72471a | |||
| b94f7488e8 | |||
| d2d605ff77 | |||
| 6eda776e8a | |||
| a621d151e7 | |||
| 3a1e6b10c5 | |||
| 7a0e5acde2 | |||
| c5755caf42 | |||
| e44bdfe7e3 | |||
| b2f85109da | |||
| fb963b8dd1 | |||
| fdc80a913f | |||
| 1a9743f9d7 | |||
| 534dfe8e94 | |||
| f1175a5a9d | |||
| db5424ea51 | |||
| cac6b6562c | |||
| b67c2dd202 | |||
| b3f6f8d202 | |||
| 4fac83763d | |||
| 2650d637dc | |||
| 070e33a4c9 | |||
| 1da024d1a7 | |||
| 6ad44eebc7 | |||
| 89c924d590 | |||
| e38ab40b22 | |||
| f2e8714723 | |||
| 8d7d268f61 | |||
| ca9e55c9b5 | |||
| b0fb2d75d3 | |||
| c9a0ff6208 | |||
| 296cd66b68 | |||
| 90c67342b6 | |||
| 956bb1274c | |||
| ae7225e576 | |||
| c838ec5a3b | |||
| 6df8f83339 | |||
| 76b7b95c9e | |||
| 058582b4b5 | |||
| 5c476bf970 | |||
| ef338d0c83 | |||
| 12b798a070 | |||
| 49b6c6af76 | |||
| de4966cb9b | |||
| 7f500d8988 | |||
| f34c1c99cd | |||
| 64447b5696 | |||
| 4466c8ca87 | |||
| 134d057955 | |||
| 827bf9ce2d | |||
| 3a6962171c | |||
| d4a895f856 | |||
| 75105fbdfb | |||
| d2f1a784c4 | |||
| 62825d3445 | |||
| a537431a13 | |||
| 35fc224370 | |||
| 2a75f21b6a | |||
| ac032efa3e | |||
| 08566de251 | |||
| f1dd3a3976 | |||
| 96a5df6235 | |||
| 65bebeac76 | |||
| 5cb94b289a | |||
| 98d88c8d47 | |||
| 0668b48c10 | |||
| 718ee2fff3 | |||
| 500fca270a | |||
| e1ba078bdc | |||
| 78ac829c63 | |||
| ceea93e3d8 | |||
| c907de064d | |||
| 30afb232cd | |||
| 0ebee56929 | |||
| 9a4e273486 | |||
| 163a773e5b | |||
| 7c4b136b4f | |||
| bb719eb39a | |||
| 53af7f2160 | |||
| f50db552c5 | |||
| 4cfbd5f897 | |||
| fe4e5d67c5 | |||
| 82c719981b | |||
| 4a36625117 | |||
| 9022d60bbd | |||
| f8d0ab6d14 | |||
| 4b17d76f2a | |||
| e1bb4a6e98 | |||
| 167e0655b7 | |||
| 42deee7eaf | |||
| b497414286 | |||
| 7536de1a4a | |||
| d2817c9f02 | |||
| 143286bced | |||
| 95633d6282 | |||
| 2a20b51245 | |||
| 0d7cb94a77 | |||
| 9c44e2cb72 | |||
| e1c797efc7 | |||
| 869c206051 | |||
| 798d6e2934 | |||
| ac3015ba1a | |||
| 105922ec6d | |||
| 442e03eff1 | |||
| efa72f6100 | |||
| 3fae3b337d | |||
| 657c5b5f91 | |||
| a2187a6342 | |||
| 57543d87b6 | |||
| abacc52be4 | |||
| 17acb46909 | |||
| cceb9291b0 | |||
| 1f3f503a2b | |||
| 875ef65a9e | |||
| 845913bd5d | |||
| 87f340512c | |||
| dc8364753b | |||
| 0b1399a2c1 | |||
| afd25c346a | |||
| 1636510491 | |||
| 5423798c61 | |||
| a740a8491b | |||
| 16b0b41131 | |||
| 4886d6747e | |||
| 42dc144c44 | |||
| a946858f0c | |||
| 3ae6282d0e | |||
| 3b6c3c8e9d | |||
| 40c808603a | |||
| 84e3828d7d | |||
| 30be6424f0 | |||
| 1fbd0cabfb | |||
| 9c0c89124b | |||
| 4888dff95c | |||
| b393bc25e2 | |||
| 45eb1e5efc | |||
| 8a984948f3 | |||
| 87e9bb5508 | |||
| 68d5f6b8a4 | |||
| 83bf1f7b59 | |||
| 887fbb5445 | |||
| c245abfeb8 | |||
| e8a1fa03d0 | |||
| 14fdcd7a14 | |||
| 454708a4b9 | |||
| 905010801a | |||
| fc1fb7e4eb | |||
| 2b7e87a33c | |||
| feb7c00ab5 | |||
| f02c7d66b6 | |||
| 37a8aac243 | |||
| 3f7aa00618 | |||
| f9b1f57c71 | |||
| 316c332fa0 | |||
| ed6f435e1c | |||
| 1cd31069e2 | |||
| a401c2733a | |||
| 2e69b2483e | |||
| bd5a2f28fc | |||
| 2fb75ad2a7 | |||
| 57b7b66b58 | |||
| da18a4b093 | |||
| de19d5ceeb | |||
| 3c39fd6db8 | |||
| a2f30a72f7 | |||
| 3942a9c815 | |||
| 884b7ed153 | |||
| 149eecf6ef | |||
| b9121a022d | |||
| 97374a7259 | |||
| 1999164de0 | |||
| afa80cb2b4 | |||
| 7852449fe2 | |||
| 3980a9c100 | |||
| 10887d272a | |||
| 07428f6a64 | |||
| 1add233756 | |||
| 7fad1ee92c | |||
| 073e58a9fb | |||
| 49c5929363 | |||
| 61b7ebde7c | |||
| 5dcbe84df8 | |||
| 27a5af3ec8 | |||
| 98f204f442 | |||
| 3be8e02692 | |||
| bd31658d04 | |||
| 5048d3ba8d | |||
| cd3a03682f | |||
| f5cffc18d1 | |||
| 0fa88e19c4 | |||
| d4259b45a4 | |||
| 22ae2896dd | |||
| a268a6c985 | |||
| fa857b2058 | |||
| 29500e14c7 | |||
| 47eb8d30ac | |||
| 23862bc625 | |||
| 670172eae1 | |||
| 64683d9769 | |||
| 05fa7028da | |||
| dffb0ea882 | |||
| 2a8afc201c | |||
| 437b31cabe | |||
| ba361bcd36 | |||
| 8b3724f85f | |||
| 26fc28a21a | |||
| c7505715ca | |||
| 3af27fc59e | |||
| 250bb8a9d6 | |||
| c6a9dc36b7 | |||
| b0a1368dc2 | |||
| ed7af823cb | |||
| 95e00ac365 | |||
| f261df73b5 | |||
| a7b8e4cab4 | |||
| a6580b70a3 | |||
| 9e754f4bad | |||
| a624133944 | |||
| 5babee86cb | |||
| 880facb6d7 | |||
| a3ed22ee48 | |||
| 7a1e526688 | |||
| 2c56466851 | |||
| cd3cce09ff | |||
| b7c2fb9237 | |||
| d5badecd7f | |||
| 83afb9612c | |||
| b2e0131860 | |||
| 08ddb22c64 | |||
| 29723fffa5 | |||
| adffc54541 | |||
| 79c4c4add6 | |||
| 21d8d62bdb | |||
| d9b21b6336 | |||
| 1515fed2bf | |||
| 012c38428b | |||
| fdc3c81a67 | |||
| f093225bc4 | |||
| 04964cdd4d | |||
| 7b98e44eef | |||
| 22867df4e7 | |||
| 0ca77b3e89 | |||
| 523f6bd9ad | |||
| 4454992303 | |||
| 7a455fccaa | |||
| 6ccb19f35d | |||
| bb6ea21b41 | |||
| 0ebe8e7c41 | |||
| efed05629f | |||
| a54ac5353d | |||
| 7de5b8df7c | |||
| e8916f41d8 | |||
| f8e196812c | |||
| 4daf7e97e6 | |||
| 59e9781df8 | |||
| fe33927d75 | |||
| 6720d4f40f | |||
| 4c3f8a9b89 | |||
| a34680b295 | |||
| 7aeb36153a | |||
| e5aa186c43 | |||
| c1bd5ac440 | |||
| e06e4eb5f3 | |||
| 3ebcafd1ec | |||
| 6e1bb6ef2e | |||
| 26598dbacc | |||
| aa747d186f | |||
| 21aa3f379f | |||
| 488449f04c | |||
| d84348da11 | |||
| 3db0754003 | |||
| 4a971b9142 | |||
| 5c7cfc77cd | |||
| 0de71d3615 | |||
| 5ff02b0da2 | |||
| 26b2bef2a8 | |||
| f0b589f768 | |||
| 837dc15e51 | |||
| bfbcda7ec1 | |||
| 5004c05666 | |||
| c3355394bf | |||
| 0cb0ff0535 | |||
| 9880f818cf | |||
| 0f2f21af96 | |||
| 45b043725a | |||
| 8e03cb2b01 | |||
| 08d027c3b6 | |||
| f689a8a955 | |||
| 34e36d9102 | |||
| 0b64fc4599 | |||
| 1166bf5866 | |||
| 6ee5217845 | |||
| d48749331d | |||
| b2e6c32580 | |||
| 8072030b3c | |||
| 9e5e2ceff5 | |||
| c4412c12a7 | |||
| 6dae042496 | |||
| 3cf02fdb08 | |||
| 1b87331da5 | |||
| 42e3781598 | |||
| eda95e0fab | |||
| e9c38c480b | |||
| b9370705d8 | |||
| 14a71491b6 | |||
| 63c5db7d32 | |||
| 3539b9d3bb | |||
| 83d8789dc6 | |||
| 329cfeb013 | |||
| ad7daa2593 | |||
| 34facc5ce0 | |||
| 29cb7da9b9 | |||
| 3bd2e63087 | |||
| eee24e7df5 | |||
| 441de8b2e0 | |||
| 26c14fa6e1 | |||
| c187d9abe7 | |||
| d58c26292f | |||
| b9574f5a28 | |||
| 681399ba79 | |||
| bdbfacc73e | |||
| 9e6d7a0f87 | |||
| dffa3c7438 | |||
| 34016d2a5d | |||
| 0eff12fa6b | |||
| 08d56b1fb9 | |||
| 71d227bf28 | |||
| 75c86da7a7 | |||
| 6eb98aee93 | |||
| 92de7dd269 | |||
| 11b24fee62 | |||
| a6fd57bc66 | |||
| 8d7608ec3a | |||
| c6e4e71234 | |||
| e0f489cd21 | |||
| 1e56f93b01 | |||
| 423e6ddbf3 | |||
| ce6198ad7c | |||
| 40df01c1b5 | |||
| 91f7a0f3d9 | |||
| abc9d50f97 | |||
| ef8c0810a4 | |||
| 30ea77599b | |||
| c08865231f | |||
| 6fb588e01a | |||
| 4fcc17293b | |||
| c7e7d55529 | |||
| 091b6ecbda | |||
| d928965bc2 | |||
| 88d45155d6 | |||
| 7744ab5957 | |||
| f7b064491c | |||
| 52df502b7d | |||
| 5558a2e267 | |||
| de8c34f8bd | |||
| 8457264a12 | |||
| 6b4bf984e5 | |||
| 68c4690a3b | |||
| e00dad7cd7 | |||
| c82a6251a5 | |||
| b052deedae | |||
| e7a78c92a6 | |||
| 2274d26beb | |||
| 68a36223d0 | |||
| c6a37af863 | |||
| 2c913ee0fc | |||
| 2434317389 | |||
| d825017aa0 | |||
| 27453efb87 | |||
| e1f8967599 | |||
| 709a49805d | |||
| 7abd22c180 | |||
| 258bf33c02 | |||
| 503b54c930 | |||
| e34d1ec4b9 | |||
| fc4bbb58d6 | |||
| 558883c6dd | |||
| b0c14d0a51 | |||
| 1a7059a095 | |||
| a395099703 | |||
| fcea7df43c | |||
| bb94e24caf | |||
| 879ee463ea | |||
| f358533bb9 | |||
| b73a566ce7 | |||
| 515c3db932 | |||
| 9688061e94 | |||
| 233715a8d3 | |||
| f80e6f383c | |||
| 138d4f6d54 | |||
| 5eb7439254 | |||
| 21f92a3cfd | |||
| 508de6790c | |||
| f73476aed9 | |||
| 1a00f9bf9e | |||
| 2c9bf31eaf | |||
| 09534eb005 | |||
| b89522333d | |||
| 5925ce336b | |||
| 961a8a3730 | |||
| 807315e64e | |||
| 6ef28fe572 | |||
| 110be0221b | |||
| 8cd7e4da2b | |||
| d8ace9c1a6 | |||
| 9d7291518c | |||
| c7a9698e0b | |||
| d9f356c545 | |||
| f13db65e41 | |||
| 5a4c3fcf03 | |||
| cd1a83eac8 | |||
| 8ddb0f601e | |||
| 788d7a15c5 | |||
| f7c7eff771 | |||
| ac7c59abca | |||
| d71488ecdd | |||
| 8be431f216 | |||
| c7d89253a0 | |||
| 4ce9510966 | |||
| 3e679a2968 | |||
| c585706d00 | |||
| 4db7fceecf | |||
| 46385a1a17 | |||
| 830cfed95a | |||
| 95ece0cb8d | |||
| 724f2615e5 | |||
| 1ae693e31e | |||
| 7ae00c352c | |||
| 3b43301028 | |||
| 34a63bd98a | |||
| 83f1674e70 | |||
| d649be59fe | |||
| 549fc0f192 | |||
| 85df117dd8 | |||
| f07c012184 | |||
| f76916f6e3 | |||
| 14fa491e7a | |||
| 2dd940185b | |||
| 3517cb2348 | |||
| f3d8ceb685 | |||
| 3e6c46ea77 | |||
| 3867aed599 | |||
| 23abf279d8 | |||
| 79d3cd17cc | |||
| 6d7669cc0a | |||
| a6a4a2f5b6 | |||
| 4a78452e73 | |||
| a8db9df8b3 | |||
| 6c49fde65c | |||
| 684d1464e6 | |||
| 6e5a57e8af | |||
| e7f4e0e9c0 | |||
| d5cc05c96d | |||
| 8935a80bd0 | |||
| 966773c540 | |||
| f787e1e3ff | |||
| 7f2dc952e0 | |||
| 634c6c927d | |||
| c47d48694a | |||
| 3ce45fb70a | |||
| 5ae9fbb3dd | |||
| 71a78e2fe4 | |||
| 7dc6f91d5e | |||
| 9924fab816 | |||
| dd1360c1fe | |||
| 8719e9dbf5 | |||
| c1bc6894eb | |||
| 044af446cd | |||
| 28af862a1c | |||
| be939dc257 | |||
| eb93498a8c | |||
| e0a0bd781b | |||
| db3b30894c | |||
| 40e7858e19 | |||
| 1b01c393d2 | |||
| 5947e9d5ad | |||
| ffe3267303 | |||
| 546400fd70 | |||
| c26ceab084 | |||
| fcad603269 | |||
| d8a60ef8de | |||
| 992d991815 | |||
| b9ce33c5b0 | |||
| 40150539e8 | |||
| 1b6c727889 | |||
| 59189c00d2 | |||
| 3a555a4f30 | |||
| fd5ce3a47b | |||
| a4708bb06c | |||
| f94d4e7f01 | |||
| 34c67f13d6 | |||
| 96a9a53ee3 | |||
| 58e9f2680f | |||
| f433237632 | |||
| 3c0659cd0f | |||
| 1261ca01ce | |||
| 2a0197fe83 | |||
| e67e2f9e9f | |||
| 29d379ccb6 | |||
| f024f448c0 | |||
| 89b7fd552d | |||
| a07bfaea4e | |||
| dd37b5bcf9 | |||
| 1a8ca4fab2 | |||
| 499aa6cd12 | |||
| f81d652010 | |||
| 1c5f75579f | |||
| d0e96b4a79 | |||
| 7385c337ac | |||
| 3f93806957 | |||
| a906a73123 | |||
| f495e905dd | |||
| 0b2b24c558 | |||
| fbfee7a844 | |||
| 6a638e3289 | |||
| 44ee459098 | |||
| 55516fd3bc | |||
| 5315d269f0 | |||
| dd3fdd2c59 | |||
| ff455bc67f | |||
| e87a99684f | |||
| 7470f0c7dc | |||
| 71d1039982 | |||
| 6922317779 | |||
| 3647435025 | |||
| 63efa61613 | |||
| 7fd8cbfadb | |||
| 9610a474e2 | |||
| 88da9d7351 | |||
| bd3e2e22b9 | |||
| 15a9714c6c | |||
| 591b26322a | |||
| e6330e6da1 | |||
| ea99768e29 | |||
| 183552bee5 | |||
| 3fc450cdce | |||
| fac77c5b2d | |||
| c1de66f911 | |||
| 1ade8dd9b0 | |||
| 7c91f59a7f | |||
| bbbdd14100 | |||
| 4b9daaf451 | |||
| 149e8707cf | |||
| f1ebe30e92 | |||
| 7530b13a2e | |||
| 08b1b9ba47 | |||
| f91fdb4275 | |||
| 36ac4374ed | |||
| db7d774183 | |||
| cdd90b5ce3 | |||
| 6fe0e36094 | |||
| 4bdf6dfacf | |||
| 845cd48759 | |||
| 8ef06c795f | |||
| 5252fc7ae2 | |||
| 67fe5048b9 | |||
| 71936a32a1 | |||
| 945bef5290 | |||
| 0d53bff197 | |||
| 286755bd68 | |||
| 6d3a75901c | |||
| 93d3b4feef | |||
| 911cdc0da8 | |||
| 3b20f9f50c | |||
| f7c0e88013 | |||
| a5425f93fa | |||
| d9564ec707 | |||
| 590e44a4d3 | |||
| e87e23e76e | |||
| 7b61970288 | |||
| f97ae2c64e | |||
| 5a08320a77 | |||
| 08f269f9b9 | |||
| 03e56bef25 | |||
| d4aaf2e540 | |||
| 0d1174843a | |||
| 1134a63299 | |||
| 22ba99842c | |||
| 59fd9df986 | |||
| 763a0aed16 | |||
| 5e6c3df7c0 | |||
| c59e07c674 | |||
| ebaf274807 | |||
| 87f8ade3e3 | |||
| 370e42d343 | |||
| a990ad13c7 | |||
| 42dccd4272 | |||
| a1797929b6 | |||
| 47ddc81271 | |||
| 0dc4a6bf8c | |||
| 5e7464ec5e | |||
| 45bfe940ea | |||
| d1db56d49c | |||
| 89665c51ed | |||
| 4ea83fb2e4 | |||
| 4492316e9c | |||
| de3edeba17 | |||
| 72aa7cb4b5 | |||
| 9514a192a5 | |||
| 9b4bd602fb | |||
| 520fe1dee4 | |||
| 315db3ecd6 | |||
| 9b5440d8a9 | |||
| cab9f682cd | |||
| f0cd6a7ce2 | |||
| 8e333c29c6 | |||
| bfa448ff84 | |||
| 838bcb9292 | |||
| 58796d4932 | |||
| bdc4056cff | |||
| b37d45d9ed | |||
| ee6226a5cb | |||
| 3bb5973159 | |||
| b81c7a3272 | |||
| b2250eaa0b | |||
| 88da3fd755 | |||
| 3363e7596f | |||
| fb9d90d672 | |||
| 72b9a3131a | |||
| 79a3732626 | |||
| d25e43cfbe | |||
| f64b32d934 | |||
| 560634d338 | |||
| fab4b71e38 | |||
| d4cda727d5 | |||
| 6d8021f4bd | |||
| dc991142c4 | |||
| ea614873ca | |||
| bb00c43fcc | |||
| 2906719433 | |||
| c130ea1d81 | |||
| 33076d249b | |||
| d2df9aeddb | |||
| 61c9d9f825 | |||
| d201ec2b11 | |||
| d2ff46225c | |||
| 3606a6d61f | |||
| 367377293a | |||
| c8fdb00125 | |||
| cbf9404a5a | |||
| 50752acba9 | |||
| 8326c12921 | |||
| f8e5a7b498 | |||
| 94d5dc4814 | |||
| f8f7636ed6 | |||
| c4496252d6 | |||
| 77b80b0d76 | |||
| fd40cbc4d1 | |||
| ea72cf2b56 | |||
| 6ee8dca8b5 | |||
| fe750b8658 | |||
| 5629a813c4 | |||
| 0907c437d2 | |||
| fb458c34bf | |||
| fb2d54701f | |||
| fffed08915 | |||
| 8bd1a2e1ef | |||
| d9fc71e456 | |||
| 14537a4db8 | |||
| e3138ca407 | |||
| 4463881125 | |||
| 8e732f4a20 | |||
| 974ad7dfd4 | |||
| 64dda3963f | |||
| 543507bea2 | |||
| 2cf627f029 | |||
| a21c36fa82 | |||
| 1ec50c42bd | |||
| e83646d5c2 | |||
| eb92c2e74b | |||
| 3abb875b96 | |||
| eb098ba20b | |||
| 08c7d54404 | |||
| df9bc0b7f8 | |||
| cefc2beec5 | |||
| a7616fe837 | |||
| a6534de898 | |||
| ba7900a529 | |||
| e9f9e650da | |||
| c07e5e20f8 | |||
| f775e78ae9 | |||
| 3644808db7 | |||
| 726429cbd4 | |||
| 12f009bb47 | |||
| 62bd8d9187 | |||
| 4eff94092d | |||
| 0940626b54 | |||
| eb5c9ea320 | |||
| f099325eb2 | |||
| 07eca067cf | |||
| 4c97c06fa1 | |||
| 222753d9fb | |||
| 79d7d84abf | |||
| 20529d535e | |||
| 6e6611efe9 | |||
| 69889dcff4 | |||
| c178ac6149 | |||
| 3ae465e71c | |||
| 352d5a7db5 | |||
| 6884f8da96 | |||
| a112444032 | |||
| ef14694020 | |||
| f25ce75f36 | |||
| da5f55b560 | |||
| 6f260d7d72 | |||
| 8f8d5cd468 | |||
| e0f0a3d5c7 | |||
| f70e9f2c35 | |||
| 35a242864a | |||
| e7061482c0 | |||
| 6015e919ce | |||
| 95dd887665 | |||
| a891ff4cc9 | |||
| 00d3a9af03 | |||
| 37d9646b92 | |||
| 237b42e933 | |||
| a33b4a6cc1 | |||
| 1d58a957e3 | |||
| 3b5b1841db | |||
| c4a1d4a533 | |||
| 5e1504aa1e | |||
| 12f1eda99b | |||
| 2274af3819 | |||
| ce7d367df7 | |||
| cf1d728186 | |||
| ce861325f4 | |||
| aac48e5f50 | |||
| 341efe62ec | |||
| cadceea851 | |||
| 52958fdb98 | |||
| 4f2935a856 | |||
| c70c356152 | |||
| e10c6901cd | |||
| 758c3b305b | |||
| abcf164745 | |||
| 0a15691ae7 | |||
| 0c124a183a | |||
| 22ebb7d0ba | |||
| e0646a95d8 | |||
| 770f94bc2d | |||
| 8d5b58f632 | |||
| 56138cae8a | |||
| 765bf3beb5 | |||
| 426184cbf4 | |||
| 95fcd65c91 | |||
| c5f27b8891 | |||
| 20aa0765bd | |||
| 51e07447b2 | |||
| 19ba687883 | |||
| c989e789ea | |||
| a27984635c | |||
| caff6dbab1 | |||
| b2656447ce | |||
| 6028693e0d | |||
| 93a5da07d5 | |||
| 938816b84c | |||
| 73174bb3ba | |||
| a0e8382185 | |||
| 242b936ad7 | |||
| 1b3b9aa995 | |||
| 108f75052d | |||
| bb80072ca4 | |||
| d627bfa00d | |||
| 5513588c77 | |||
| 49c81c17e3 | |||
| 3d2fdf3863 | |||
| ed26f50fbb | |||
| 4978eed9c0 | |||
| bf766888c7 | |||
| cae3816ebe | |||
| af38c1b354 | |||
| 451d5797fa | |||
| 241474b0d9 | |||
| 9b9c3de281 | |||
| 0627e8695c | |||
| c9c515e478 | |||
| 5c460b65dc | |||
| 63aefcd517 | |||
| 84245a8a38 | |||
| d65637395c | |||
| 3315fb2d4e | |||
| f28a1eafa2 | |||
| 2c69d4628c | |||
| 92ee0d7c02 | |||
| fab9a59a3b | |||
| c7aa86b042 | |||
| 91f22d1157 | |||
| 1960468b6b | |||
| 159df568e1 | |||
| 270f2d4279 | |||
| e2f8e83152 | |||
| 388b2b4d83 | |||
| e49523c508 | |||
| 075b444be3 | |||
| 2711d8657a | |||
| 9e8e57a558 | |||
| ebb24a07bb | |||
| 484798d807 | |||
| 6e6adc4fa3 | |||
| 9aed20a59e | |||
| da720f3b9a | |||
| b32e625662 | |||
| 12f73e6f2b | |||
| 1deb86fdaf | |||
| 1b6d468c9a | |||
| 3c08d65244 | |||
| 015214aada | |||
| 1e564ac849 | |||
| 193013f909 | |||
| 6ca7b7a8e7 | |||
| f098fcf0ff | |||
| c6cc3553c8 | |||
| 20104c4c13 | |||
| 83ce8172d2 | |||
| f9f18a7425 | |||
| e7312eb40a | |||
| 7d5824d6a8 | |||
| 3bc376ee94 | |||
| 9483577ff8 | |||
| b972ab5a76 | |||
| 276762cd09 | |||
| 0e4445e91b | |||
| fe202ff462 | |||
| 8288bfd0d9 | |||
| 04f71e64cf | |||
| 952fa13df6 | |||
| a5a8d71629 | |||
| 112fc3c0bd | |||
| 1252ae2760 | |||
| 4403acbb9f | |||
| 404dde30f1 | |||
| a654c79d10 | |||
| ff6403d63d | |||
| 55fb2687e9 | |||
| abcaca5754 | |||
| 59aa494417 | |||
| 8e8d3a7117 | |||
| dd47aa7db8 | |||
| 10ff1f8852 | |||
| e3a57e0be3 | |||
| 0b5ce83f88 | |||
| 27347f86a5 | |||
| 4a83808817 | |||
| e1f19878c6 | |||
| 58fce51f9f | |||
| c2c30ebc03 | |||
| 2cadf0f454 | |||
| 92df50e696 | |||
| 82d1ebb9c6 | |||
| dc69e13abd | |||
| 117466cd93 | |||
| c297995574 | |||
| dd32079c83 | |||
| d95bd167bc | |||
| 240214ef23 | |||
| c034d390f2 | |||
| eb4b1b5696 | |||
| f16ea703e1 | |||
| eec1fbc36f | |||
| 2a8db0cddf | |||
| 23c665995a | |||
| 053939b362 | |||
| 2e667a52c6 | |||
| 9e92ab1978 | |||
| 13713f49a4 | |||
| a2751f30e7 | |||
| 26435c51e6 | |||
| 81827f7547 | |||
| 74ac5fe799 | |||
| 52770f63a2 | |||
| 9041146f32 | |||
| 17eecbf1d8 | |||
| e32497ad0c | |||
| adad9dd69b | |||
| d777d26d19 | |||
| 195c1f2d5e | |||
| 6abe9327bf | |||
| 6c2b2b1944 | |||
| 9870d12b8f | |||
| 4128527fd1 | |||
| 33c9220c0a | |||
| 95d03f3375 | |||
| 2ece34a9f8 | |||
| bdc8d1ad53 | |||
| 1b1b177663 | |||
| 2875da6cee | |||
| ff82e16936 | |||
| 005f7f1f4c | |||
| f79731e7b3 | |||
| fba14c7f86 | |||
| 77d314e60f | |||
| d0facf4886 | |||
| f3211b6d64 | |||
| 8db75d57ea | |||
| abdd2bb172 | |||
| 36618f454d | |||
| f93b32b62c | |||
| a94fe6cf47 | |||
| d367062cea | |||
| ca979496f3 | |||
| a15960a192 | |||
| f394e0f7c8 | |||
| 172bdf5d74 | |||
| fb3777ccd1 | |||
| 2adbc9df5c | |||
| bde350ea9e | |||
| f5f2e19e88 | |||
| b0206260c7 | |||
| 84465c7c28 | |||
| 08bb59b417 | |||
| 8a986d2738 | |||
| 175bc7986c | |||
| 6e4925fbe6 | |||
| 99328a65fc | |||
| 52f7b14a1a | |||
| 1d8db48d90 | |||
| 546e096b26 | |||
| b8f01dbcf4 | |||
| 5f1456afb4 | |||
| b960a3cf9b | |||
| 96be8b6c6e | |||
| b4a8492a63 | |||
| 53480915ef | |||
| 27e0d6f8ec | |||
| 6e12033b28 | |||
| cfa19b58e6 | |||
| 0d1da748db | |||
| bf1bc4c6d3 | |||
| 25d0c3feab | |||
| 8ac5fc54a8 | |||
| ce0ddeb244 | |||
| 6b2419da85 | |||
| cffefbacf1 | |||
| 93e3d3f5aa | |||
| 5a58240905 | |||
| e94cac038d | |||
| c4b264d40b | |||
| 8757020d7a | |||
| 995b120a06 | |||
| 85cbdbc74a | |||
| ddf95fe678 | |||
| 554aa7b749 | |||
| cf3d4dd6dc | |||
| e639770bd4 | |||
| eceee985ef | |||
| 6a87b7d7ea | |||
| 104fd4ae9f | |||
| ae26bf708c | |||
| 0033909448 | |||
| 9fcdd2507f | |||
| 5b69e934ac | |||
| 4cecbbe836 | |||
| 8441e27ce4 | |||
| a19c48e0d0 | |||
| b4f46ff54c | |||
| 67dde2ccb9 | |||
| 88a9886677 | |||
| 651e0a226e | |||
| d3d824a355 | |||
| 82bf228397 | |||
| 38a68cfbee | |||
| 291e472758 | |||
| f51f3773d1 | |||
| 524c65e662 | |||
| 355ddf4188 | |||
| 7d58a105fb | |||
| e13ce0be7a | |||
| 88f1e9c8ca | |||
| 2573136055 | |||
| c52d341f7e | |||
| 3c218cf569 | |||
| d489df6a97 | |||
| 376d7c6937 | |||
| 6be126d133 | |||
| c3ebc4c673 | |||
| 9653cfdfbb | |||
| 2dabbdab04 | |||
| f9988e18ec | |||
| da51650158 | |||
| d2001a49cc | |||
| c390f212cb | |||
| 7131e2853a | |||
| 6b13fa61b6 | |||
| 9498f97a9c | |||
| be76a9737d | |||
| 698fa0aa4a | |||
| 2909c66c50 | |||
| bfbd0197bd | |||
| c9dcc485c5 | |||
| f2a31e2181 | |||
| 0a393e6a40 | |||
| 1dd965f62b | |||
| 3b94e1e1cd | |||
| f387542e11 | |||
| e066087949 | |||
| a99f5c6a05 | |||
| 969af9354e | |||
| 84987361cb | |||
| ef66db4b1b | |||
| d7484965df | |||
| b5b025cf56 | |||
| ca6b43fc04 | |||
| cfeac714b4 | |||
| 1e9586e168 | |||
| 6347efdfb6 | |||
| 7cad9d0f81 | |||
| 654051c554 | |||
| ad6f549048 | |||
| 60bc88e136 | |||
| 42404685b7 | |||
| 343276df2e | |||
| ab428cc05e | |||
| a10bb5f65f | |||
| 1b30cc97ab | |||
| f463b80ca2 | |||
| 071b290622 | |||
| 8c29c8906c | |||
| 5950e7bd5e | |||
| e7f455a5b3 | |||
| 5d62953211 | |||
| db6ac61559 | |||
| 1720786e61 | |||
| f2b8078bd6 | |||
| 9ca6ba8fcb | |||
| 4745f485c4 | |||
| c12b983aa4 | |||
| 3f4342fa09 | |||
| fa84ca4b57 | |||
| ebd5991b0f | |||
| 4db417411a | |||
| 6daf363669 | |||
| 9ee955fecb | |||
| f627443d1b | |||
| fa17c11e8a | |||
| c51dcb4892 | |||
| c277f98cbc | |||
| b846cf0155 | |||
| 0e53e7d1bd | |||
| 96964950c6 | |||
| d9183105e4 | |||
| 6e83de0532 | |||
| 8a6466eba5 | |||
| 80693400b1 | |||
| e54d62b280 | |||
| 3b3a130ad9 | |||
| 9fb65b8971 | |||
| 951665081c | |||
| 21459fa1fa | |||
| e7dc514dc6 | |||
| 8e67b75b88 | |||
| d309dce32a | |||
| 4c6277cc72 | |||
| 3a43047f18 | |||
| 8dd318e55b | |||
| 6539a0afd5 | |||
| 0cf0c416ec | |||
| bb0a112b94 | |||
| 209cc9b629 | |||
| 5353e5ee00 | |||
| 7b466f29e8 | |||
| 1216300668 | |||
| 2644cfc5f2 | |||
| d6ea1b93c5 | |||
| ffb3d9d39f | |||
| d423d83d10 | |||
| a27a134a70 | |||
| 777e09f895 | |||
| e26851264d | |||
| 5e787d6f9c | |||
| 7364ba24ec | |||
| bcc4b65596 | |||
| df0f06aec1 | |||
| 5096353d12 | |||
| 076239869a | |||
| 02f3db8a51 | |||
| 392aa79d2d | |||
| ea77c0117d | |||
| 3e4dcdb951 | |||
| 28c194b081 | |||
| 5a757074a3 | |||
| 8fe0183a71 | |||
| 8f787fcac9 | |||
| e3adfc1f0f | |||
| c82f05eadb | |||
| 7e86f2f686 | |||
| b1564baed9 | |||
| 95d1f98299 | |||
| b2b9911d6d | |||
| 739a2093b0 | |||
| 8aaeeaa9eb | |||
| 5bc8ea6613 | |||
| 27d0ed525f | |||
| 46cc8b817f | |||
| c2b391f776 | |||
| 4541d836ce | |||
| b933058eb6 | |||
| e9dd00a00d | |||
| e584c0683d | |||
| 84ec3a8445 | |||
| f2a7bf2a93 | |||
| eb383c319d | |||
| 878389c8cd | |||
| 83bc2aac57 | |||
| a80b2360c9 | |||
| ebeb3268e4 | |||
| c913d72625 | |||
| eb66bc71be | |||
| bfb0ab1327 | |||
| 8a4b51bb6c | |||
| ebc0869ce2 | |||
| 2eefda5ea5 | |||
| 41e0907c48 | |||
| c0459938a5 | |||
| 097488cff0 | |||
| 3af9ac9e69 | |||
| cd3614ae67 | |||
| 5a1adc8db8 | |||
| f4047845ec | |||
| dafebafde5 | |||
| 0042c0d7c2 | |||
| 72d05bc912 | |||
| 23ee1efa40 | |||
| 380e29d55c | |||
| 2bf2b8e94a | |||
| 724e1819b1 | |||
| 59ac438c6b | |||
| 3aec6cf0fe | |||
| e3dfbe13b3 | |||
| 1e3e80bb39 | |||
| 581dae2da0 | |||
| a866043016 | |||
| 4f2b0ae1c9 | |||
| 79a784c4d6 | |||
| dd3326384f | |||
| 462b6e746c | |||
| 93aa5239a0 | |||
| 7f5ce42e30 | |||
| 7d6442889d | |||
| 72f5017073 | |||
| da00323434 | |||
| d726db79c5 | |||
| 148d36993e | |||
| e12bb97dc5 | |||
| ff2b08f99c | |||
| d226322162 | |||
| 3463c27a30 | |||
| 13e6b94700 | |||
| dfc45c1b97 | |||
| e52a144303 | |||
| 43dcaf3bb6 | |||
| b0f269389e | |||
| 0d40cb1e4d | |||
| 5a1d7a1769 | |||
| 7855ab5635 | |||
| d3d894744d | |||
| 2c85b75239 | |||
| 87e9839293 | |||
| a73ca01e07 | |||
| e200616a7b | |||
| d21dc0ed72 | |||
| 48bd1142c9 | |||
| 5ec1fd3d9e | |||
| e6b1a6a976 | |||
| 996acce876 | |||
| 5f8f4499da | |||
| f7e3306ab0 | |||
| 28a463e028 | |||
| 928b43f75e | |||
| c6fc9716eb | |||
| 9d66195840 | |||
| 61893d0b8e | |||
| ebaac3df80 | |||
| 982069db84 | |||
| 9c47743020 | |||
| 91123e2c82 | |||
| 81441dd34a | |||
| 6ee54c0729 | |||
| 2c3f586529 | |||
| e1578ed9a4 | |||
| cccd10cb5b | |||
| a552bd55af | |||
| 75c167a25a | |||
| 41e6c1f1fd | |||
| 38bb3cf454 | |||
| 9d94692945 | |||
| 1763b7e380 | |||
| 621ca63a7b |
@@ -0,0 +1,3 @@
|
||||
.git* export-ignore
|
||||
.mailmap export-ignore
|
||||
tools export-ignore
|
||||
+158
@@ -0,0 +1,158 @@
|
||||
*.a
|
||||
*.bck
|
||||
*.cgi
|
||||
*.dylib
|
||||
*.gz
|
||||
*.o
|
||||
*.so
|
||||
*.so.*
|
||||
*.tokens
|
||||
.buildrev
|
||||
autom4te.cache
|
||||
config.h
|
||||
config.log
|
||||
config.status
|
||||
cups-config
|
||||
Makedefs
|
||||
backend/dnssd
|
||||
backend/http
|
||||
backend/ipp
|
||||
backend/lpd
|
||||
backend/mdns
|
||||
backend/snmp
|
||||
backend/socket
|
||||
backend/test1284
|
||||
backend/testbackend
|
||||
backend/testsupplies
|
||||
backend/usb
|
||||
berkeley/lpc
|
||||
berkeley/lpq
|
||||
berkeley/lpr
|
||||
berkeley/lprm
|
||||
cgi-bin/makedocset
|
||||
cgi-bin/testcgi
|
||||
cgi-bin/testhi
|
||||
cgi-bin/testhi.index
|
||||
cgi-bin/testtemplate
|
||||
conf/cups-files.conf
|
||||
conf/cupsd.conf
|
||||
conf/mime.convs
|
||||
conf/pam.std
|
||||
conf/snmp.conf
|
||||
cups/locale/
|
||||
cups/rasterbench
|
||||
cups/test.pwg
|
||||
cups/test.raster
|
||||
cups/testadmin
|
||||
cups/testarray
|
||||
cups/testcache
|
||||
cups/testclient
|
||||
cups/testconflicts
|
||||
cups/testcreds
|
||||
cups/testcups
|
||||
cups/testdest
|
||||
cups/testfile
|
||||
cups/testgetdests
|
||||
cups/testhttp
|
||||
cups/testi18n
|
||||
cups/testipp
|
||||
cups/testlang
|
||||
cups/testoptions
|
||||
cups/testppd
|
||||
cups/testpwg
|
||||
cups/testraster
|
||||
cups/testsnmp
|
||||
cups/tlscheck
|
||||
desktop/cups.desktop
|
||||
doc/index.html
|
||||
doc/*/index.html
|
||||
filter/commandtops
|
||||
filter/gziptoany
|
||||
filter/pstops
|
||||
filter/rastertoepson
|
||||
filter/rastertohp
|
||||
filter/rastertolabel
|
||||
filter/rastertopwg
|
||||
locale/checkpo
|
||||
locale/po2strings
|
||||
locale/strings2po
|
||||
man/client.conf.man
|
||||
man/cups-files.conf.man
|
||||
man/cups-lpd.man
|
||||
man/cups-snmp.man
|
||||
man/cupsaddsmb.man
|
||||
man/cupsd.conf.man
|
||||
man/cupsd.man
|
||||
man/lpoptions.man
|
||||
man/mantohtml
|
||||
monitor/bcp
|
||||
monitor/tbcp
|
||||
notifier/dbus
|
||||
notifier/mailto
|
||||
notifier/rss
|
||||
notifier/testnotify
|
||||
packaging/cups.list
|
||||
org.cups.docset*
|
||||
patches
|
||||
ppdc/genstrings
|
||||
ppdc/ppd/
|
||||
ppdc/ppd2/
|
||||
ppdc/ppdc
|
||||
ppdc/ppdc-static
|
||||
ppdc/ppdhtml
|
||||
ppdc/ppdi
|
||||
ppdc/ppdi-static
|
||||
ppdc/ppdmerge
|
||||
ppdc/ppdpo
|
||||
ppdc/sample-import.drv
|
||||
ppdc/sample.c
|
||||
ppdc/testcatalog
|
||||
scheduler/convert
|
||||
scheduler/cups-deviced
|
||||
scheduler/cups-driverd
|
||||
scheduler/cups-exec
|
||||
scheduler/cups-lpd
|
||||
scheduler/cups-lpd.xinetd
|
||||
scheduler/cups.sh
|
||||
scheduler/cups.xml
|
||||
scheduler/cupsd
|
||||
scheduler/cupsfilter
|
||||
scheduler/org.cups.cups-lpdAT.service
|
||||
scheduler/org.cups.cupsd.path
|
||||
scheduler/org.cups.cupsd.service
|
||||
scheduler/org.cups.cupsd.socket
|
||||
scheduler/testlpd
|
||||
scheduler/testmime
|
||||
scheduler/testspeed
|
||||
scheduler/testsub
|
||||
systemv/accept
|
||||
systemv/cancel
|
||||
systemv/cupsaccept
|
||||
systemv/cupsaddsmb
|
||||
systemv/cupsctl
|
||||
systemv/cupsdisable
|
||||
systemv/cupsenable
|
||||
systemv/cupsreject
|
||||
systemv/cupstestdsc
|
||||
systemv/cupstestppd
|
||||
systemv/lp
|
||||
systemv/lpadmin
|
||||
systemv/lpinfo
|
||||
systemv/lpmove
|
||||
systemv/lpoptions
|
||||
systemv/lpstat
|
||||
systemv/reject
|
||||
templates/header.tmpl
|
||||
templates/*/header.tmpl
|
||||
test/cups-str-*.html
|
||||
test/*_log-*
|
||||
test/ippfind
|
||||
test/ippfind-static
|
||||
test/ippserver
|
||||
test/ippserver-shared
|
||||
test/ipptool
|
||||
test/ipptool-static
|
||||
test/pwg-raster-samples-*
|
||||
xcode/CUPS.xcodeproj/project.xcworkspace/
|
||||
xcode/CUPS.xcodeproj/xcuserdata/
|
||||
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
# Prevent git from showing duplicate names with commands like "git shortlog"
|
||||
# See the manpage of git-shortlog for details.
|
||||
# The syntax is:
|
||||
# Name that should be used <email that should be used> Bad name <bad email>
|
||||
#
|
||||
# You can skip Bad name if it is the same as the one that should be used, and is unique.
|
||||
#
|
||||
# This file is up-to-date if the command git log --format="%aN <%aE>" | sort -u
|
||||
# gives no duplicates.
|
||||
Michael R Sweet <michaelrsweet@gmail.com> msweet <msweet@a1ca3aef-8c08-0410-bb20-df032aa958be>
|
||||
Michael R Sweet <michaelrsweet@gmail.com> Michael Sweet <msweet@msweet-imac.local>
|
||||
@@ -1,217 +0,0 @@
|
||||
CHANGES-1.0.txt
|
||||
---------------
|
||||
|
||||
CHANGES IN CUPS v1.0.5
|
||||
|
||||
- The HP-GL/2 filter did not correctly set the pen color
|
||||
for pens other than #1.
|
||||
- The scheduler would only accept 26 simultaneous jobs
|
||||
under some OS releases (mkstemp() limitation.) It now
|
||||
handles up to 2^32 simultaneous jobs.
|
||||
- The PostScript filter loaded the printer's PPD file
|
||||
twice.
|
||||
- The PAM authentication code now uses pam_strerror() to
|
||||
provide a textual error message in the error_log file.
|
||||
- The scheduler now copies PPD and interface script
|
||||
files instead of moving them; this fixes installations
|
||||
with a separate requests directory.
|
||||
- The PostScript RIP did not generate correct 6-color
|
||||
output.
|
||||
- Several filters were marking PPD options twice when
|
||||
they didn't need to.
|
||||
- The scheduler did not save the printer or class state
|
||||
after an accept-jobs or reject-jobs operation.
|
||||
- The cupsGetDefault() function now ignores the PRINTER
|
||||
environment variable if it is set to "lp".
|
||||
- New ippErrorString() function to get textual error
|
||||
messages.
|
||||
- Better error reporting in the System V commands.
|
||||
- The lpadmin and lpstat commands always tried to
|
||||
connect to the default server.
|
||||
- The text filter didn't load the charset files from the
|
||||
correct location.
|
||||
- Wasn't sending a WWW-Authenticate: field to HTTP
|
||||
clients when authentication was required.
|
||||
- httpSeparate() didn't always set the default port
|
||||
number for known methods.
|
||||
- The HP-GL/2 filter now looks for "PSwidth,length"
|
||||
instead of (the correct) "PSlength,width" as
|
||||
documented by HP. It appears that many major CAD
|
||||
applications are broken and this change allows the
|
||||
auto-rotation to work with them.
|
||||
- The IPP "printer-resolution" option was not being
|
||||
translated.
|
||||
- The charset files did not include the Microsoft
|
||||
"standard" characters from 128 to 159 (unused by the
|
||||
ISO-8859-x charsets)
|
||||
- The scheduler was chunking the Content-Type field from
|
||||
CGI programs; this problem was most noticeable with
|
||||
Microsoft Internet Explorer 5.
|
||||
- By popular demand, the printers, jobs, and classes
|
||||
CGIs no longer force a reload of the page every 10/30
|
||||
seconds.
|
||||
- The scheduler incorrectly required that the IPP client
|
||||
provide a document-format attribute for the
|
||||
validate-job operation.
|
||||
- Clients that sent bad IPP requests without the
|
||||
required attributes-natural-language and
|
||||
attributes-charset attributes would crash the
|
||||
scheduler.
|
||||
|
||||
|
||||
CHANGES IN CUPS v1.0.4
|
||||
|
||||
- Documentation updates.
|
||||
- Jobs would get stuck in the queue and wouldn't print
|
||||
until you enabled the queue.
|
||||
- The lp and lpr commands now catch SIGHUP and SIGINTR.
|
||||
- The lp and lpr commands now use sigaction or sigset
|
||||
when available.
|
||||
- CUPS library updates for WIN32/OS-2
|
||||
|
||||
|
||||
CHANGES IN CUPS v1.0.3
|
||||
|
||||
- Documentation updates.
|
||||
- The lpq man page was missing.
|
||||
- The configure script was not properly detecting the
|
||||
image libraries.
|
||||
- The top-level makefile was calling "make" instead of
|
||||
"$(MAKE)".
|
||||
- PostScript filter fixes for number-up, OutputOrder,
|
||||
and %Trailer.
|
||||
- The imagetops filter didn't end the base-85 encoding
|
||||
properly if the image data was not a multiple of 4
|
||||
bytes in length.
|
||||
- The imagetoraster filter didn't generate good banded
|
||||
RGB or CMY data (was dividing the line width by 4
|
||||
instead of 3...)
|
||||
- The imagetoraster filter now records the bounding
|
||||
box of the image on the page.
|
||||
- The CUPS image library cache code wasn't working as
|
||||
designed; images larger than the maximum RIP cache
|
||||
would eventually thrash using the same cache tile.
|
||||
- The CUPS image library TIFF loading code didn't
|
||||
handle unknown resolution units properly; the fixed
|
||||
code uses a default resolution of 128 PPI.
|
||||
- cupsGetClasses() and cupsGetPrinters() did not free
|
||||
existing strings if they ran out of memory.
|
||||
- The scheduler logs incorrectly contained 3 digits for
|
||||
the timezone offset instead of 4.
|
||||
- The scheduler now does a lookup for the default user
|
||||
and group ID; the previous hardcoded values caused
|
||||
problems with the LPD backend.
|
||||
- The cancel-job operation now allows any user in the
|
||||
system group to cancel any job.
|
||||
- The cancel-job operation stopped the print queue if
|
||||
the job was being printed.
|
||||
- Now only stop printers if the backend fails. If the
|
||||
filter fails then the failure is noted in the
|
||||
error_log and printing continues with the next file in
|
||||
the queue.
|
||||
- Now log whether a filter fails because of a signal
|
||||
or because it returned a non-zero exit status.
|
||||
- The root user now always passes the system group test.
|
||||
- Printers with an interface script and remote printers
|
||||
and classes didn't have a printer-make-and-model
|
||||
attribute.
|
||||
- Added logging of lost/timed-out remote printers.
|
||||
- The HP-GL/2 filter was scaling the pen width twice.
|
||||
- Updated the HP-GL/2 filter to use a single SP (Set
|
||||
Pen) procedure. This makes the output smaller and is
|
||||
more appropriate since the filter keeps track of the
|
||||
pen states already.
|
||||
- The scheduler didn't handle passwords with spaces.
|
||||
- The IPP backend now does multiple copies and retries
|
||||
if the destination server requires it (e.g. HP
|
||||
JetDirect.)
|
||||
- The disable command didn't implement the "-c" option
|
||||
(cancel all jobs.)
|
||||
- Changed the CMYK generation function for the image file
|
||||
and PostScript RIPs.
|
||||
- The lp command didn't support the "-h" option as
|
||||
documented.
|
||||
- The AppSocket, IPP, and LPD backends now retry on all
|
||||
network errors. This should prevent stopped queues
|
||||
caused by a printer being disconnected from the
|
||||
network or powered off.
|
||||
- The scheduler now restarts a job if the corresponding
|
||||
printer is modified.
|
||||
- The image RIPs now rotate the image if needed to fit
|
||||
on the page.
|
||||
|
||||
|
||||
CHANGES IN CUPS v1.0.2
|
||||
|
||||
- The HP-GL/2 filter didn't always scale the output
|
||||
correctly.
|
||||
- The HP-GL/2 filter now supports changing the page size
|
||||
automatically when the "fitplot" option is not used.
|
||||
- The cancel-job operation was expecting a resource name
|
||||
of the form "/job/#" instead of "/jobs/#"; this
|
||||
prevented the cancel and lprm commands from working.
|
||||
- The backends didn't log pages when files were printed
|
||||
using the "-oraw" option.
|
||||
- The authorization code did not work with the Slackware
|
||||
long shadow password package because its crypt() can
|
||||
return NULL.
|
||||
- The chunking code didn't work for reading the response
|
||||
of a POST request.
|
||||
- cupsGetPPD() now does authentication as needed.
|
||||
- The N-up code in the PostScript filter didn't work
|
||||
with some printers (grestoreall would restore the
|
||||
default blank page and device settings).
|
||||
- The N-up code in the PostScript filter didn't scale
|
||||
the pages to fit within the imageable area of the
|
||||
page.
|
||||
- Wasn't doing an fchown() on the request files. This
|
||||
caused problems when the default root account group
|
||||
and CUPS group were not the same.
|
||||
|
||||
|
||||
CHANGES IN CUPS v1.0.1
|
||||
|
||||
- Documentation updates.
|
||||
- Fixed a bunch of possible buffer-overflow conditions.
|
||||
- The scheduler now supports authentication using PAM.
|
||||
- Updated the Italian message file.
|
||||
- httpEncode64() didn't add an extra "=" if there was
|
||||
only one byte in the last three-byte group.
|
||||
- Now drop any trailing character set from the locale
|
||||
string (e.g. "en_US.ISO_8859-1" becomes "en_US")
|
||||
- Fixed "timezone" vs "tm_gmtoff" usage for BSD-based
|
||||
operating systems.
|
||||
- Updated IPP security so that "get" operations can be
|
||||
done from any resource name; this allows the CGIs to
|
||||
work with printer authentication enabled so long as
|
||||
authentication isn't turned on for the whole "site".
|
||||
- The IPP code didn't properly handle the "unsupported"
|
||||
group; this caused problems with the HP JetDirect since
|
||||
it doesn't seem to support the "copies" attribute.
|
||||
- The HTTP chunking code was missing a CR LF pair at the
|
||||
end of a 0-length chunk.
|
||||
- The httpSeparate() function didn't handle embedded
|
||||
usernames and passwords in the URI properly.
|
||||
- Doing "lpadmin -p printer -E" didn't restart printing
|
||||
if there were pending jobs.
|
||||
- The cancel-job operation now requires either a
|
||||
requesting-user-name attribute or an authenticated
|
||||
username.
|
||||
- The add-printer code did not report errors if the
|
||||
interface script or PPD file could not be renamed.
|
||||
- Request files are now created without world read
|
||||
permissions.
|
||||
- Added a cupsLastError() function to the CUPS API to
|
||||
retrieve the IPP error code from the last request.
|
||||
- Options are now case-insensitive.
|
||||
- The lpq command now provides 10 characters for the
|
||||
username instead of the original (Berkeley standard)
|
||||
7.
|
||||
- The cancel command needed a local CUPS server to work
|
||||
(or the appropriate ServerName in cupsd.conf)
|
||||
- The cancel and lprm commands didn't report the IPP
|
||||
error if the job could not be cancelled.
|
||||
- The lp and lpr commands didn't intercept SIGTERM to
|
||||
remove temporary files when printing from stdin.
|
||||
- The lp and lpr commands didn't report the IPP error if
|
||||
the job could not be printed.
|
||||
-3462
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
-1261
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
@@ -1,856 +0,0 @@
|
||||
CHANGES-1.3.txt
|
||||
---------------
|
||||
|
||||
CHANGES IN CUPS V1.3.11
|
||||
|
||||
- The scheduler did not prevent nested classes (STR #3211)
|
||||
- The scheduler did not reprint processing jobs that were moved to
|
||||
another destination (STR #3222)
|
||||
- The scheduler did not reset the current job file when stopping a
|
||||
printer (STR #3226)
|
||||
- The scheduler did not handle POSTs to custom CGIs properly (STR #3221)
|
||||
- The pdftops filter did not print landscape PDF pages properly
|
||||
(STR #2881)
|
||||
- The scheduler did not handle partial header lines properly from CGI
|
||||
programs (STR #3194)
|
||||
- The web interface could hang on OpenBSD (STR #3176, STR #3196)
|
||||
- The scheduler and cupsfilter utility did not handle rules starting
|
||||
with a negation operator properly (STR #3160)
|
||||
- The scheduler and cupsfilter utility would crash with certain MIME
|
||||
.types rules (STR #3159)
|
||||
- httpSetField wasn't bracketing IPv6 numeric addresses for the Host:
|
||||
field (STR #3164)
|
||||
- The ServerName, if specified, was not treated as a valid alias for the
|
||||
local system (STR #3167)
|
||||
- "make epm" did not work (STR #3166)
|
||||
- "lpstat -h server" showed non-shared printers (STR #3147)
|
||||
- "make check" did not work on Linux (STR #3161)
|
||||
|
||||
|
||||
CHANGES IN CUPS V1.3.10
|
||||
|
||||
- Documentation fixes (STR #2994, STR #2995, STR #3008, STR #3056,
|
||||
STR #3057)
|
||||
- SECURITY: The scheduler now protects against DNS rebinding attacks
|
||||
(STR #3118)
|
||||
- SECURITY: Fixed TIFF integer overflow in image filters (STR #3031)
|
||||
- The scheduler did not support the job-hold-until attribute with the
|
||||
Restart-Job operation (STR #3130)
|
||||
- SECURITY: The PNG image reading code did not validate the
|
||||
image size properly, leading to a potential buffer overflow
|
||||
(STR #2974)
|
||||
- The rastertohp driver did not set the 1-sided printing mode when
|
||||
needed (STR #3131)
|
||||
- Now use a wrapper program instead of our fork of the Xpdf code to
|
||||
support printing of PDF files. The new wrapper supports using Xpdf,
|
||||
poppler, or Ghostscript to convert PDF files to PostScript (STR #3129)
|
||||
- Long job names caused problems with some PJL printers (STR #3125)
|
||||
- The lpq command did not work when showing all destinations (STR #3117)
|
||||
- The scheduler used a codeset name of UTF8 which is not supported on
|
||||
Solaris (STR #3113)
|
||||
- cupsGetJobs() did not work with a NULL destination (STR #3107)
|
||||
- Fixed a localization problem for option choices (incorrectly) named
|
||||
"Custom" (STR #3106)
|
||||
- The fallback OpenSSL random number seeding would not work (STR #3079)
|
||||
- The scheduler might miss a child signal, causing high CPU usage.
|
||||
- The scheduler did not enforce quotas after the job history was
|
||||
unloaded (STR #3078)
|
||||
- The job-k-limit, job-page-limit, and job-quota-period attributes
|
||||
could not be set using the lpadmin command (STR #3077)
|
||||
- httpSeparateURI() did not error out on URIs with a missing port
|
||||
number after a colon.
|
||||
- Fixed a Valgrind-detected initialization error when creating a
|
||||
missing directory on startup.
|
||||
- The scheduler did not always read all of the HTTP headers from a
|
||||
CGI script/program.
|
||||
- The scheduler did not always set the "air" property in Bonjour/DNS-SD
|
||||
registrations.
|
||||
- The scheduler incorrectly compared Mac OS X UUIDs for access
|
||||
control, preventing access in certain configurations.
|
||||
- The IPP backend incorrectly reset the required authentication
|
||||
to Kerberos when authentication failed.
|
||||
- The scheduler no longer looks up the local hostname by default;
|
||||
turn on hostname lookups to restore the previous behavior.
|
||||
- The scheduler did not always load MIME type rules correctly
|
||||
(STR #3059)
|
||||
- The test page did not format correctly on A4 paper (STR #3060)
|
||||
- The web interface sometimes incorrectly redirected users to
|
||||
127.0.0.1 (STR #3022)
|
||||
- cupsPrintFile*() did not send the document filename for single
|
||||
file submissions (STR #3055)
|
||||
- The scheduler did not update the member-names attribute when
|
||||
removing the last printer from a class.
|
||||
- The scheduler did not report PPD Products with parenthesis
|
||||
in them properly (STR #3046)
|
||||
- The wrong italic fonts were listed in the UTF-8 charset file
|
||||
for the text filter.
|
||||
- The backends did not return an OK status for the
|
||||
CUPS_SC_CMD_GET_BIDI side-channel command (STR #3029)
|
||||
- The scheduler did not purge jobs that were missing a
|
||||
time-at-creation attribute, indicating a bad job control file
|
||||
(STR #3030)
|
||||
- The "-o job-hold-until=week-end" option did not work properly
|
||||
(STR #3025)
|
||||
- The Solaris USB printer device does not support select or poll
|
||||
(STR #3028)
|
||||
- The scheduler would crash if you exceeded the MaxSubscriptions
|
||||
limit.
|
||||
- The lp "-H immediate" option did not specify that the job
|
||||
should not be held (STR #3013)
|
||||
- The scheduler did not support the "Connection: close"
|
||||
HTTP header (STR #3010)
|
||||
- The mailto notifier didn't terminate messages properly
|
||||
(STR #3011)
|
||||
- Backends could spin trying to read back-channel data
|
||||
(STR #3001)
|
||||
- The HP-GL/2 filter was using the wrong default colors
|
||||
(STR #2966)
|
||||
- The scheduler incorrectly allowed Get-Jobs operations without a
|
||||
printer-uri (STR #2996)
|
||||
- The compression option was not being encoded properly
|
||||
(STR #2997)
|
||||
- Added a missing character map for JIS-X0213/ShiftJIS.
|
||||
- The scheduler now rejects ATTR: messages with empty values.
|
||||
- The scheduler could consume all CPU handling closed connections
|
||||
(STR #2988)
|
||||
- Fixed some configure script bugs with rc/xinetd directories
|
||||
(STR #2970)
|
||||
- The Epson sample driver PPDs contained errors (STR #2979)
|
||||
|
||||
|
||||
CHANGES IN CUPS V1.3.9
|
||||
|
||||
- SECURITY: The HP-GL/2 filter did not range check pen numbers
|
||||
(STR #2911)
|
||||
- SECURITY: The SGI image file reader did not range check
|
||||
16-bit run lengths (STR #2918)
|
||||
- SECURITY: The text filter did not range check cpi, lpi, or
|
||||
column values (STR #2919)
|
||||
- Documentation updates (STR #2904, STR #2944)
|
||||
- The French web admin page was never updated (STR #2963)
|
||||
- The IPP backend did not retry print jobs when the printer
|
||||
reported itself as busy or unavailable (STR #2951)
|
||||
- The "Set Allowed Users" web interface did not handle trailing
|
||||
whitespace correctly (STR #2956)
|
||||
- The PostScript filter did not work with Adobe applications
|
||||
using custom page sizes (STR #2968)
|
||||
- The Mac OS X USB backend did not work with some printers
|
||||
that reported a bad 1284 device ID.
|
||||
- The scheduler incorrectly resolved the client connection
|
||||
address when HostNameLookups was set to Off (STR #2946)
|
||||
- The IPP backend incorrectly stopped the local queue if
|
||||
the remote server reported the "paused" state.
|
||||
- The cupsGetDests() function did not catch all types of
|
||||
request errors.
|
||||
- The scheduler did not always log "job queued" messages
|
||||
(STR #2943)
|
||||
- The scheduler did not support destination filtering using
|
||||
the printer-location attribute properly (STR #2945)
|
||||
- The scheduler did not send the server-started,
|
||||
server-restarted, or server-stopped events (STR #2927)
|
||||
- The scheduler no longer enforces configuration file
|
||||
permissions on symlinked files (STR #2937)
|
||||
- CUPS now reinitializes the DNS resolver on failures
|
||||
(STR #2920)
|
||||
- The CUPS desktop menu item was broken (STR #2924)
|
||||
- The PPD parser was too strict about missing keyword
|
||||
values in "relaxed" mode.
|
||||
- The PostScript filter incorrectly mirrored landscape
|
||||
documents.
|
||||
- The scheduler did not correctly update the
|
||||
auth-info-required value(s) if the AuthType was Default.
|
||||
- The scheduler required Kerberos authentication for
|
||||
all operations on remote Kerberized printers instead
|
||||
of just for the operations that needed it.
|
||||
- The socket backend could wait indefinitely for back-
|
||||
channel data with some devices.
|
||||
- PJL panel messages were not reset correctly on older
|
||||
printers (STR #2909)
|
||||
- cupsfilter used the wrong default path (STR #2908)
|
||||
- Fixed address matching for "BrowseAddress @IF(name)"
|
||||
(STR #2910)
|
||||
- Fixed compiles on AIX.
|
||||
- Firefox 3 did not work with the CUPS web interface in SSL
|
||||
mode (STR #2892)
|
||||
- Custom options with multiple parameters were not emitted
|
||||
correctly.
|
||||
- Refined the cupstestppd utility.
|
||||
- ppdEmit*() did not support custom JCL options (STR #2889)
|
||||
- The cupstestppd utility incorrectly reported missing
|
||||
"en" base translations (STR #2887)
|
||||
|
||||
|
||||
CHANGES IN CUPS V1.3.8
|
||||
|
||||
- Documentation updates (STR #2785, STR #2861, STR #2862)
|
||||
- The scheduler did not add the ending job sheet when the
|
||||
job was released.
|
||||
- The IPP backend did not relay marker-* attributes.
|
||||
- The CUPS GNOME/KDE menu item was not localized for
|
||||
Chinese (STR #2880)
|
||||
- The CUPS GNOME/KDE menu item was not localized for
|
||||
Japanese (STR #2876)
|
||||
- The cupstestppd utility reported mixed line endings for
|
||||
Mac OS and Windows PPD files (STR #2874)
|
||||
- The pdftops filter did not print landscape orientation PDF
|
||||
pages correctly on all printers (STR #2850)
|
||||
- The scheduler did not handle expiring of implicit classes
|
||||
or their members properly, leading to a configuration where
|
||||
one of the members would have a short name (STR #2766)
|
||||
- The scheduler and cupstestppd utilities did not support
|
||||
cupsFilter and cupsPreFilter programs with spaces in their
|
||||
names (STR #2866)
|
||||
- Removed unused variables and assignments found by the
|
||||
LLVM "clang" tool.
|
||||
- Added NULL checks recommended by the LLVM "clang" tool.
|
||||
- The scheduler would crash if you started a printer that
|
||||
pointed to a backend that did not exist (STR #2865)
|
||||
- The ppdLocalize functions incorrectly mapped all generic
|
||||
locales to country-specific locales.
|
||||
- The cups-driverd program did not support Simplified Chinese
|
||||
or Traditional Chinese language version strings (STR #2851)
|
||||
- Added an Indonesian translation (STR #2792)
|
||||
- Fixed a timing issue in the backends that could cause data
|
||||
corruption with the CUPS_SC_CMD_DRAIN_OUTPUT side-channel
|
||||
command (STR #2858)
|
||||
- The scheduler did not support "HostNameLookups" with all of
|
||||
the boolean names (STR #2861)
|
||||
- Fixed a compile problem with glibc 2.8 (STR #2860)
|
||||
- The scheduler incorrectly filtered out queues with ACLs and
|
||||
authentication.
|
||||
- The PostScript filter did not support %%IncludeFeature lines
|
||||
in the page setup section of each page (STR #2831)
|
||||
- The scheduler did not generate printer-state events when the
|
||||
default printer was changed (STR #2764)
|
||||
- cupstestppd incorrectly reported a warning about the PPD format
|
||||
version in some locales (STR #2854)
|
||||
- cupsGetPPD() and friends incorrectly returned a PPD file for
|
||||
a class with no printers.
|
||||
- The member-uris values for local printers in a class returned
|
||||
by the scheduler did not reflect the connected hostname or
|
||||
port.
|
||||
- The CUPS PHP extension was not thread-safe (STR #2828)
|
||||
- The scheduler incorrectly added the document-format-default
|
||||
attribute to the list of "common" printer attributes, which
|
||||
over time would slow down the printing system (STR #2755,
|
||||
STR #2836)
|
||||
- The cups-deviced and cups-driverd helper programs did not set
|
||||
the CFProcessPath environment variable on Mac OS X (STR #2837)
|
||||
- "lpstat -p" could report the wrong job as printing (STR #2845)
|
||||
- The scheduler would crash when some cupsd.conf directives
|
||||
were missing values (STR #2849)
|
||||
- The web interface "move jobs" operation redirected users to
|
||||
the wrong URL (STR #2815)
|
||||
- The Polish web interface translation contained errors
|
||||
(STR #2815)
|
||||
- The scheduler did not report PostScript printer PPDs with
|
||||
filters as PostScript devices.
|
||||
- The scheduler did not set the job document-format attribute
|
||||
for jobs submitted using Create-Job and Send-Document.
|
||||
- cupsFileTell() did not work for log files opened in append
|
||||
mode (STR #2810)
|
||||
- The scheduler did not set QUERY_STRING all of the time
|
||||
for CGI scripts (STR #2781, STR #2816)
|
||||
- The scheduler now returns an error for bad job-sheets
|
||||
values (STR #2775)
|
||||
- Authenticated remote printing did not work over domain
|
||||
sockets (STR #2750)
|
||||
- The scheduler incorrectly logged errors for print filters
|
||||
when a job was canceled (STR #2806, #2808)
|
||||
- The scheduler no longer allows multiple RSS subscriptions
|
||||
with the same URI (STR #2789)
|
||||
- The scheduler now supports Kerberized printing with
|
||||
multiple server names (STR #2783)
|
||||
- "Satisfy any" did not work in IPP policies (STR #2782)
|
||||
- The CUPS imaging library would crash with very large
|
||||
images - more than 16Mx16M pixels (STR #2805)
|
||||
- The PNG image loading code would crash with large images
|
||||
(STR #2790)
|
||||
- The scheduler did not limit the total number of filters.
|
||||
- The scheduler now ensures that the RSS directory has
|
||||
the correct permissions.
|
||||
- The RSS notifier did not quote the feed URL in the RSS
|
||||
file it created (STR #2801)
|
||||
- The web interface allowed the creation and cancellation
|
||||
of RSS subscriptions without a username (STR #2774)
|
||||
- Increased the default MaxCopies value on Mac OS X to
|
||||
9999 to match the limit imposed by the print dialog.
|
||||
- The scheduler did not reject requests with an empty
|
||||
Content-Length field (STR #2787)
|
||||
- The scheduler did not log the current date and time and
|
||||
did not escape special characters in request URIs when
|
||||
logging bad requests to the access_log file (STR #2788)
|
||||
|
||||
|
||||
CHANGES IN CUPS V1.3.7
|
||||
|
||||
- CVE-2008-0047: cgiCompileSearch buffer overflow (STR #2729)
|
||||
- CVE-2008-1373: CUPS GIF image filter overflow (STR #2765)
|
||||
- Updated the "make check" tests to do a more thorough
|
||||
automated test.
|
||||
- cups-driverd complained about missing directories (STR
|
||||
#2777)
|
||||
- cupsaddsmb would leave the Samba username and password on
|
||||
disk if no Windows drivers were installed (STR #2779)
|
||||
- The Linux USB backend used 100% CPU when a printer was
|
||||
disconnected (STR #2769)
|
||||
- The sample raster drivers did not properly handle SIGTERM
|
||||
(STR #2770)
|
||||
- The scheduler sent notify_post() messages too often on
|
||||
Mac OS X.
|
||||
- Kerberos access to the web interface did not work
|
||||
(STR #2748)
|
||||
- The scheduler did not support "AuthType Default" in IPP
|
||||
policies (STR #2749)
|
||||
- The scheduler did not support the "HideImplicitMembers"
|
||||
directive as documented (STR #2760)
|
||||
- "make check" didn't return a non-zero exit code on
|
||||
error (STR #2758)
|
||||
- The scheduler incorrectly logged AUTH_foo environment
|
||||
variables in debug mode (STR #2751)
|
||||
- The image filters inverted PBM files (STR #2746)
|
||||
- cupsctl would crash if the scheduler was not running
|
||||
(STR #2741)
|
||||
- The scheduler could crash when printing using a port
|
||||
monitor (STR #2742)
|
||||
- The scheduler would crash if PAM was broken (STR #2734)
|
||||
- The image filters did not work with some CMYK JPEG files
|
||||
produced by Adobe applications (STR #2727)
|
||||
- The Mac OS X USB backend did not work with printers that
|
||||
did not report a make or model.
|
||||
- The job-sheets option was not encoded properly (STR #2715)
|
||||
- The scheduler incorrectly complained about missing LSB
|
||||
PPD directories.
|
||||
|
||||
|
||||
CHANGES IN CUPS V1.3.6
|
||||
|
||||
- Documentation updates (STR #2646, STR #2647, STR #2649)
|
||||
- Fixed a problem with the web interface "Use Kerberos
|
||||
Authentication" check box (STR #2703)
|
||||
- The scheduler unconditionally overwrote the printer-state-
|
||||
message with "process-name failed" when a filter or backend
|
||||
failed, preventing a useful error message from being shown
|
||||
to the user.
|
||||
- Policies on CUPS-Move-Job didn't work as expected (STR
|
||||
#2699)
|
||||
- The configure script only supported D-BUS on Linux
|
||||
(STR #2702)
|
||||
- The scheduler did not support </LimitExcept> (STR #2701)
|
||||
- The scheduler did not reset the job-hold-until attribute
|
||||
after a job's hold time was reached.
|
||||
- The scheduler did not support printer supply attributes
|
||||
(STR #1307)
|
||||
- The Kerberos credentials provided by some Windows KDCs
|
||||
were still too large - now use a dynamic buffer to
|
||||
support credentials up to 64k in size (STR #2695)
|
||||
- Printing a test page from the web interface incorrectly
|
||||
defaulted to the "guest" user (STR #2688)
|
||||
- The cupsEncodeOptions2() function did not parse multiple-
|
||||
value attribute values properly (STR #2690)
|
||||
- The scheduler incorrectly sent printer-stopped events for
|
||||
status updates from the print filters (STR #2680)
|
||||
- The IPP backend could crash when handling printer errors
|
||||
(STR #2667)
|
||||
- Multi-file jobs did not print to remote CUPS servers
|
||||
(STR #2673)
|
||||
- The scheduler did not provide the Apple language ID to
|
||||
job filters.
|
||||
- Kerberos authentication did not work with the web
|
||||
interface (STR #2606, STR #2669)
|
||||
- The requesing-user-name-allowed and -denied functionality
|
||||
did not work for Kerberos-authenticated usernames (STR
|
||||
#2670)
|
||||
- CUPS didn't compile on HP-UX 11i (STR #2679)
|
||||
- cupsEncodeOptions2() did not handle option values like
|
||||
"What's up, doc?" properly.
|
||||
- Added lots of memory allocation checks (Fortify)
|
||||
- The scheduler would crash if it was unable to add a job
|
||||
file (Fortify)
|
||||
- ppdOpen*() did not check all memory allocations (Coverity)
|
||||
- ippReadIO() did not check all memory allocations (Coverity)
|
||||
- The PostScript filter did not detect read errors (Coverity)
|
||||
- The scheduler did not check for a missing job-sheets-completed
|
||||
attribute when sending an event notification (Coverity)
|
||||
- "Set Printer Options" might not work with raw queues (Coverity)
|
||||
- cupsRasterInterpretPPD() could crash on certain PostScript
|
||||
errors (Coverity)
|
||||
- The USB backend did not check for back-channel support
|
||||
properly on all systems (Coverity)
|
||||
- Fixed memory leaks in the GIF and PNM image loading code
|
||||
(Coverity)
|
||||
- Removed some dead code in the CUPS API and scheduler (Coverity)
|
||||
- Fixed two overflow bugs in the HP-GL/2 filter (Coverity)
|
||||
- Fixed another ASN1 string parsing bug (STR #2665)
|
||||
- The RSS notifier directory was not installed with the
|
||||
correct permissions.
|
||||
- The standard CUPS backends could use 100% CPU while waiting
|
||||
for print data (STR #2664)
|
||||
- Filename-based MIME rules did not work (STR #2659)
|
||||
- The cups-polld program did not exit if the scheduler crashed
|
||||
(STR #2640)
|
||||
- The scheduler would crash if you tried to set the port-monitor
|
||||
on a raw queue (STR #2639)
|
||||
- The scheduler could crash if a polled remote printer was
|
||||
converted to a class (STR #2656)
|
||||
- The web interface and cupsctl did not correctly reflect
|
||||
the "allow printing from the Internet" state (STR #2650)
|
||||
- The scheduler incorrectly treated MIME types as case-
|
||||
sensitive (STR #2657)
|
||||
- The Java support classes did not send UTF-8 strings to
|
||||
the scheduler (STR #2651)
|
||||
- The CGI code did not handle interrupted POST requests
|
||||
properly (STR #2652)
|
||||
- The PostScript filter incorrectly handled number-up when
|
||||
the number of pages was evenly divisible by the number-up
|
||||
value.
|
||||
- The PDF filter incorrectly filtered pages when page-ranges
|
||||
and number-up were both specified (STR #2643)
|
||||
- The IPP backend did not handle printing of pictwps files
|
||||
to a non-Mac CUPS server properly.
|
||||
- The scheduler did not detect network interface changes
|
||||
on operating systems other than Mac OS X (STR #2631)
|
||||
- The scheduler now logs the UNIX error message when it
|
||||
is unable to create a request file such as a print job.
|
||||
- Added support for --enable-pie on Mac OS X.
|
||||
|
||||
|
||||
CHANGES IN CUPS V1.3.5
|
||||
|
||||
- The SNMP backend did not check for negative string
|
||||
lengths (STR #2589)
|
||||
- The scheduler incorrectly removed auth-info attributes,
|
||||
potentially leading to a loss of all options for a job.
|
||||
- The scheduler stopped sending CUPS browse packets on a
|
||||
restart when using fixed addresses (STR #2618)
|
||||
- Fixed PDF filter security issues (CVE-2007-4352
|
||||
CVE-2007-5392 CVE-2007-5393)
|
||||
- Changing settings would always change the DefaultAuthType
|
||||
and Allow lines (STR #2580)
|
||||
- The scheduler would crash when submitting an undefined
|
||||
format file from Samba with LogLevel debug2 (STR #2600)
|
||||
- The scheduler did not use poll() when epoll() was not
|
||||
supported by the running kernel (STR #2582)
|
||||
- Fixed a compile problem with Heimdal Kerberos (STR #2592)
|
||||
- The USB backend now retries connections to a printer
|
||||
indefinitely rather than stopping the queue.
|
||||
- Printers with untranslated JCL options were not exported
|
||||
to Samba correctly (STR #2570)
|
||||
- The USB backend did not work with some Minolta USB
|
||||
printers (STR #2604)
|
||||
- The strcasecmp() emulation code did not compile (STR
|
||||
#2612)
|
||||
- The scheduler would crash if a job was sent to an empty
|
||||
class (STR #2605)
|
||||
- The lpc command did not work in non-UTF-8 locales (STR
|
||||
#2595)
|
||||
- Subscriptions for printer-stopped events also received
|
||||
other state changes (STR #2572)
|
||||
- cupstestppd incorrectly reported translation errors for
|
||||
the "en" locale.
|
||||
- ppdOpen() did not handle custom options properly when the
|
||||
Custom attribute appeared before the OpenUI for that
|
||||
option.
|
||||
- The scheduler could crash when deleting a printer or
|
||||
listing old jobs.
|
||||
- The Mac OS X USB backend did not allow for requeuing of
|
||||
jobs submitted to a class.
|
||||
- lpmove didn't accept a job ID by itself.
|
||||
- The scheduler incorrectly removed job history information
|
||||
for remote print jobs.
|
||||
- The scheduler incorrectly sent the
|
||||
"com.apple.printerListChanged" message for printer state
|
||||
changes.
|
||||
- The PostScript filter drew the page borders (when enabled)
|
||||
outside the imageable area.
|
||||
- The LPD and IPP backends did not default to the correct
|
||||
port numbers when using alternate scheme names.
|
||||
- The scheduler incorrectly deleted hardwired remote
|
||||
printers on system sleep.
|
||||
- The scheduler would abort if a bad browse protocol name
|
||||
was listed in the cupsd.conf file.
|
||||
- The online cupsd.conf help file incorrectly showed
|
||||
"dns-sd" instead of "dnssd" for Bonjour sharing.
|
||||
- The scheduler could crash changing the port-monitor value.
|
||||
- The scheduler generated CoreFoundation errors when run as
|
||||
a background process.
|
||||
- When printing with number-up > 1, it was possible to get
|
||||
an extra blank page.
|
||||
|
||||
|
||||
CHANGES IN CUPS V1.3.4
|
||||
|
||||
- Documentation updates (STR #2560, STR #2563, STR #2569)
|
||||
- CUPS now maps the "nb" locale to "no" on all platforms
|
||||
(STR #2575)
|
||||
- CUPS did not work with a Windows 2003 R2 KDC (STR #2568)
|
||||
- ippReadIO() could read past the end of a buffer (STR
|
||||
#2561)
|
||||
- The scheduler would crash on shutdown if it was unable
|
||||
to create a Kerberos context.
|
||||
- Multiple AuthTypes in cupsd.conf did not work (STR
|
||||
#2545)
|
||||
- The snmp.conf file referenced the wrong man page (STR
|
||||
#2564)
|
||||
- The cupsaddsmb program didn't handle domain sockets
|
||||
properly (STR #2556)
|
||||
- The scheduler now validates device URIs when adding
|
||||
printers.
|
||||
- Updated httpSeparateURI() to support hostnames with
|
||||
the backslash character.
|
||||
- Updated the Japanese localization (STR #2546)
|
||||
- The parallel backend now gets the current IEEE-1284
|
||||
device ID string on Linux (STR #2553)
|
||||
- The IPP backend now checks the job status at
|
||||
variable intervals (from 1 to 10 seconds) instead
|
||||
of every 10 seconds for faster remote printing
|
||||
(STR #2548)
|
||||
- "lpr -p" and "lpr -l" did not work (STR #2544)
|
||||
- Compilation failed when a previous version of CUPS
|
||||
was installed and was included in the SSL include
|
||||
path (STR #2538)
|
||||
- The scheduler did not reject requests with charsets
|
||||
other than US-ASCII or UTF-8, and the CUPS API
|
||||
incorrectly passed the locale charset to the scheduler
|
||||
instead of UTF-8 (STR #2537)
|
||||
- cups-deviced did not filter out duplicate devices.
|
||||
- The AppleTalk backend incorrectly added a scheme
|
||||
listing when AppleTalk was disabled or no printers
|
||||
were found.
|
||||
- The PostScript filter generated N^2 copies when the
|
||||
printer supported collated copies and user requested
|
||||
reverse-order output.
|
||||
- The scheduler did not reprint all of the files in a
|
||||
job that was held.
|
||||
- The scheduler did not update the printcap file after
|
||||
removing stale remote queues.
|
||||
- The cupsd.conf man page incorrectly referenced
|
||||
"AuthType Kerberos" instead of "AuthType Negotiate".
|
||||
|
||||
|
||||
CHANGES IN CUPS V1.3.3
|
||||
|
||||
- The scheduler did not use the attributes-natural-language
|
||||
attribute when passing the LANG environment variable to
|
||||
cups-deviced or cups-driverd.
|
||||
- The scheduler did not use the printer-op-policy when
|
||||
modifying classes or printers (STR #2525)
|
||||
- The auth-info-required attribute was not always updated
|
||||
for remote queues that required authentication.
|
||||
- The German web interface localization contained errors
|
||||
(STR #2523)
|
||||
- The Swedish localization contained errors (STR #2522)
|
||||
|
||||
|
||||
CHANGES IN CUPS V1.3.2
|
||||
|
||||
- The 1.3.1 release was incorrectly created from the
|
||||
1.4.x source tree (STR #2519)
|
||||
- Added support for 32/64-bit libraries on HP-UX
|
||||
(STR #2520)
|
||||
- The scheduler incorrectly used portrait as the default
|
||||
orientation (STR #2513)
|
||||
- The scheduler no longer writes the printcap file for
|
||||
every remote printer update (STR #2512)
|
||||
- Remote raw printing with multiple copies did not work
|
||||
(STR #2518)
|
||||
- Updated the configure script to require at least autoconf
|
||||
2.60 (STR #2515)
|
||||
- Some gzip'd PPD files were not read in their entirety
|
||||
(STR #2510)
|
||||
|
||||
|
||||
CHANGES IN CUPS V1.3.1
|
||||
|
||||
- Documentation updates.
|
||||
- The USB backend on Mac OS X could hang if the driver and
|
||||
printer did not match.
|
||||
- Delegated Kerberos credentials were not working.
|
||||
- "make distclean" incorrectly removed the edit-config.tmpl
|
||||
files (STR #2508)
|
||||
- Fix compile problem on HP-UX (STR #2501)
|
||||
- The cupstestppd utility now tests for resolutions greater
|
||||
than 99999 DPI to detect a missing "x" between the X and Y
|
||||
resolutions.
|
||||
- Fixed many problems in the various translations and added
|
||||
a new "checkpo" utility to validate them.
|
||||
- The cupstestppd utility now tests the custom page size code
|
||||
for CUPS raster drivers.
|
||||
- cupsLangDefault() did not attempt to return a language that
|
||||
was supported by the calling application.
|
||||
- If a remote printer stopped while a job was being sent, the
|
||||
local queue would also get stopped and the job re-queued,
|
||||
resulting in duplicate prints in some cases.
|
||||
- A few Apple-specific job options needed to be omitted when
|
||||
printing a banner page.
|
||||
- The new peer credential support did not compile on FreeBSD
|
||||
(STR #2495)
|
||||
- Direct links to help files did not set the current section
|
||||
so the table-of-contents was not shown.
|
||||
- The configure script did not support --localedir=foo (STR #2488)
|
||||
- The backends were not displaying their localized messages.
|
||||
- CUPS-Authenticate-Job did not require Kerberos authentication
|
||||
on queues protected by Kerberos.
|
||||
- The Zebra ZPL driver did not work with Brady label printers
|
||||
(STR #2487)
|
||||
- Norwegian wasn't localized on Mac OS X.
|
||||
- getnameinfo() returns an error on some systems when DNS is
|
||||
not available, leading to numerous problems (STR #2486)
|
||||
- The cupsfilter command did not work properly on Mac OS X.
|
||||
- The scheduler makefile contained a typo (STR #2483)
|
||||
- The TBCP and BCP port monitors did not handle the trailing
|
||||
CTRL-D in some PostScript output properly.
|
||||
- Fixed the localization instructions and German template for
|
||||
the "Find New Printers" button (STR #2478)
|
||||
- The web interface did not work with the Chinese localization
|
||||
(STR #2477)
|
||||
- The web interface home page did not work for languages that
|
||||
were only partially localized (STR #2472)
|
||||
- Updated the Spanish web interface localization (STR #2473)
|
||||
- ppdLocalize() did not work for country-specific localizations.
|
||||
|
||||
|
||||
CHANGES IN CUPS V1.3.0
|
||||
|
||||
- The scheduler did not handle out-of-file conditions
|
||||
gracefully when accepting new connections, leading to
|
||||
heavy CPU usage.
|
||||
- The scheduler did not detect ServerBin misconfigurations
|
||||
(STR #2470)
|
||||
- "AuthType Default" did not work as expected when the
|
||||
"DefaultAuthType foo" line appeared after it in the
|
||||
cupsd.conf file.
|
||||
- The on-line help did not describe many common printing
|
||||
options (STR #1846)
|
||||
- The IPP backend did not return the "auth required" status
|
||||
when printing to a Kerberos-protected queue.
|
||||
- The scheduler was not looking in the correct directories
|
||||
for LSB PPD files (STR #2464)
|
||||
- Changed references to ESP Ghostscript to GPL Ghostscript
|
||||
(STR #2463)
|
||||
- The PostScript filter did not cleanly terminate when
|
||||
the job was canceled or stopped.
|
||||
- Fixed generation of Kerberos credentials for remote
|
||||
printing. Note that this requires a recent version of
|
||||
MIT Kerberos with a working krb5_cc_new_unique()
|
||||
function or Heimdal Kerberos.
|
||||
- Added Portuguese and updated Italian message catalogs.
|
||||
|
||||
|
||||
CHANGES IN CUPS V1.3rc2
|
||||
|
||||
- Added more range checking to the pdftops filter.
|
||||
- The scheduler would crash if a remote IPP queue was stopped
|
||||
(STR #2460)
|
||||
- The scheduler did not allow "DefaultAuthType None".
|
||||
|
||||
|
||||
CHANGES IN CUPS V1.3rc1
|
||||
|
||||
- Updated the German localization (STR #2443)
|
||||
- cupsAdminGetServerSettings() did not handle </Foo> properly.
|
||||
- When lprm and cancel are run with no job ID, they now will
|
||||
cancel the first stopped job if no pending or processing
|
||||
jobs are left in the queue.
|
||||
- The scheduler now logs successful print jobs, filter
|
||||
failures, and the job file types at the default log
|
||||
level (STR #2458)
|
||||
- The scheduler now logs the usernames it is using for
|
||||
authorization at LogLevel debug instead of debug2 (STR #2448)
|
||||
- Added Intellitech Intellibar and Zebra CPCL PPDs to the list
|
||||
of installed PPDs.
|
||||
- Added 6" and 8" wide label sizes for the Zebra ZPL Label
|
||||
Printer driver (STR #2442)
|
||||
- The cupsaddsmb program and web interface now support
|
||||
exporting of 64-bit Windows drivers, when available
|
||||
(STR #2439)
|
||||
- Moving a job that was printing did not stop the job on the
|
||||
original printer (STR #2262)
|
||||
- The cups-lpd mini-daemon did not work on Mac OS X server.
|
||||
- Added httpGetAuthString() and httpSetAuthString() APIs to get
|
||||
and set the current (cached) authorization string to use for
|
||||
HTTP requests.
|
||||
- Updated the default cupsd.conf policy to list the
|
||||
"administrative" operations separately from the "printer
|
||||
control" operations so that it is easier to define a
|
||||
group of users that are "printer operators".
|
||||
- The web interface now pulls the default cupsd.conf file
|
||||
from cupsd.conf.default in the CUPS config directory.
|
||||
- Added a help file for using Kerberos with CUPS.
|
||||
- The scheduler now strips the "@KDC" portion of Kerberos
|
||||
usernames since those usernames typically do not appear in
|
||||
the group membership lists used by CUPS.
|
||||
- cupsMarkOptions() could (incorrectly) leave multiple option
|
||||
choices marked.
|
||||
- Backends could (incorrectly) run as root during discovery
|
||||
(STR #2454)
|
||||
- Avahi is now supported for DNS-SD (Bonjour) printer sharing
|
||||
(STR #2455)
|
||||
- The default cupsd.conf file had typos and old operation names
|
||||
(STR #2450)
|
||||
- The scheduler now erases authentication cache files using the
|
||||
7-pass US DoD algorithm.
|
||||
- Delegated Kerberos credentials (proxy authentication) did not
|
||||
work.
|
||||
- The filter makefile did not optimize the libcupsimage.2.dylib
|
||||
with a sectorder file.
|
||||
- The IPP backend incorrectly wrote an empty printer message
|
||||
when processing the "none" state reason.
|
||||
- The USB backend could deadlock on Mac OS X while performing
|
||||
a side-channel command.
|
||||
- The scheduler did not prevent remote queues from being
|
||||
shared/published.
|
||||
- The scheduler did not remove the temporary request file on
|
||||
authentication errors.
|
||||
- ppdLocalizeIPPReason() did not handle "scheme:" schemes or
|
||||
"file" URLs.
|
||||
- ppdLocalizeIPPReason() was not exported on Mac OS X.
|
||||
|
||||
|
||||
CHANGES IN CUPS V1.3b1
|
||||
|
||||
- Copyright updates - CUPS is now owned by Apple Inc.
|
||||
- Documentation updates (STR #1775, STR #2027, STR #2130,
|
||||
STR #2131, STR #2263, STR #2356, STR #2397)
|
||||
- Added new cupsfilter utility (STR #1734)
|
||||
- Added new job-printer-state-message and
|
||||
job-printer-state-reasons attributes to jobs (STR #2418)
|
||||
- Added LDAP+SSL support (STR #1967)
|
||||
- CUPS now supports authentication via peer credentials
|
||||
over domain sockets (STR #2242, STR #2277)
|
||||
- The CUPS sample driver PPDs are now generated by the PPD
|
||||
compiler and include all of the localized languages by
|
||||
default (STR #2164)
|
||||
- You can now specify "AuthType Default" in the cupsd.conf
|
||||
file to use the default authentication defined by the
|
||||
DefaultAuthType directive.
|
||||
- The SNMP backend no longer adds a default Address line
|
||||
when none is specified in the snmp.conf file; this allows
|
||||
the backend to be easily disabled as needed (STR #2434)
|
||||
- Added a new cupsctl command for doing basic changes to
|
||||
the cupsd.conf file (STR #1777)
|
||||
- Added a new ppdLocalizeIPPReason() function to get the
|
||||
localized text/URI for a given IPP reason keyword for a
|
||||
driver.
|
||||
- Removed the deskjet2.ppd driver, as it only worked with
|
||||
a very small subset of HP DeskJet printers and was
|
||||
confusing to users. The rastertohp driver still
|
||||
supports the deskjet2.ppd options for existing queues.
|
||||
- The scheduler did not add a trailing banner page if a
|
||||
client did not specify the last document in a job (STR
|
||||
#1711)
|
||||
- The scheduler did not report Bonjour shared printers as
|
||||
remote printers (STR #2384)
|
||||
- Added new -R and -W options to the cupstestppd program
|
||||
for greater control over the testing of PPDs.
|
||||
- Added a new cupsGetServerPPD() function for getting
|
||||
an available PPD from the server (STR #2334)
|
||||
- Added a new cupsDoIORequest() function for reading
|
||||
and writing files via IPP requests (STR #2334)
|
||||
- Added a new CUPS_GET_PPD operation for getting an
|
||||
available PPD file on the server (STR #2334)
|
||||
- CUPS_GET_PPDS now reports multiple ppd-product values
|
||||
based on the PPD ModelName and Product strings (STR
|
||||
#2334, STR #2383)
|
||||
- CUPS_GET_PPDS now reports the PSVersion attributes
|
||||
from a PPD file in the ppd-psversion attribute
|
||||
(STR #2334)
|
||||
- CUPS_GET_PPDS now reports the cupsModelNumber attribute
|
||||
from a PPD file in the ppd-model-number attribute (STR
|
||||
#2383)
|
||||
- CUPS_GET_PPDS now reports a driver type string in the
|
||||
ppd-type attribute based on the cupsFax and cupsFilter
|
||||
attributes in a PPD file (STR #2383)
|
||||
- Added a new printer attribute called "cups-version"
|
||||
which reports the version of CUPS that is running
|
||||
(STR #2240)
|
||||
- backendRunLoop() now aborts immediately on SIGTERM
|
||||
if no data has been written yet (STR #2103)
|
||||
- Due to poor IPP support from the vendors, the SNMP
|
||||
backend no longer tries IPP connections; instead,
|
||||
it now uses a lookup file with fallback to port 9100
|
||||
(socket://address) and 515 (lpd://address) printing
|
||||
(STR #2035, STR #2354)
|
||||
- The scheduler now recreates the CUPS log directory as
|
||||
needed (STR #2353)
|
||||
- cupsLangDefault() now maps new-style Apple locale names
|
||||
to the traditional ll_CC form (STR #2357)
|
||||
- Add new cupsArrayNew2() API to support hashed lookups
|
||||
of array elements (STR #2358)
|
||||
- ppdConflicts() optimizations (STR #2358)
|
||||
- The cupstestppd program now tests for existing filters,
|
||||
icons, profiles, and dialog extensions (STR #2326)
|
||||
- The web interface no longer lists new printers on the
|
||||
main administration page. Instead, a new "List Available
|
||||
Printers" button is provided that shows a separate page
|
||||
with the list of printers.
|
||||
- The web interface now supports setting the banner and
|
||||
policy options on raw printers and classes (STR #2238)
|
||||
- The socket backend now reads any pending back-channel
|
||||
data before shutting down the socket (STR #2325)
|
||||
- Added a new ErrorPolicy directive in the cupsd.conf
|
||||
file (STR #1871)
|
||||
- Printers that use JCL options are now exported to Samba
|
||||
correctly (STR #1985)
|
||||
- The IPP backend now relays printer-state-message values
|
||||
from the server to the client (STR #2109)
|
||||
- Added support for the PWG printer-alert and
|
||||
printer-alert-description attributes (STR #2088)
|
||||
- Added support for LPD "stream" mode (STR #2036)
|
||||
- The scheduler now reports the PostScript product string
|
||||
from PPD files in CUPS-Get-PPDs responses (STR #1900)
|
||||
- Raw printing with queues pointing to the file pseudo-
|
||||
device and multiple files and/or banners now works (STR
|
||||
#1933)
|
||||
- Added new public cupsAdminGetServerSettings() and
|
||||
cupsAdminSetServerSettings() APIs.
|
||||
- Added new "makebuttons" script in the "tools" directory
|
||||
for creating web interface buttons (STR #2231)
|
||||
- Added support for DNS-SD (aka "Bonjour") printer sharing
|
||||
(STR #1171)
|
||||
- Job operations (cancel, hold, release, etc.) from the
|
||||
web interface now return back to the original page (STR
|
||||
#2239)
|
||||
- The classes or printers list is now shown after a
|
||||
successful deletion from the web interface (STR #1999)
|
||||
- The default configuration now allows browse packets from
|
||||
any address (STR #2008)
|
||||
- The web interface now provides an "allow printing from the
|
||||
Internet" check box (STR #1897)
|
||||
- The notify-events-default and
|
||||
notify-lease-duration-default attributes can now be set
|
||||
(STR #1671)
|
||||
- Server-side default options are now sent to clients when
|
||||
the "printer-defaults" attribute group is requested (STR
|
||||
#1923)
|
||||
- Added support for Linux "relro" linker option (STR #1614)
|
||||
- CUPS now validates the number-up option value (STR #1329)
|
||||
- The on-line help now provides better search capabilities
|
||||
(STR #1701)
|
||||
- The web interface "Add This Printer" button now allows you
|
||||
to change the printer name, description, and location
|
||||
(STR #1646)
|
||||
- Added support for Mac OS X authorization services
|
||||
(STR #2206)
|
||||
- Added support for driver-specific pre-filters (STR #2108)
|
||||
- Added a new side-channel API for drivers and backends
|
||||
for basic device control and information queries (STR
|
||||
#1898)
|
||||
- The scheduler now uses poll(), epoll(), or /dev/kqueue
|
||||
instead of select() when possible (STR #1261)
|
||||
- Added new cupsArrayGetIndex() and cupsArrayGetInsert()
|
||||
functions to get the current index and insertion
|
||||
positions of an array.
|
||||
- Added a new --with-max-copies configure option (STR
|
||||
#2090)
|
||||
- Added new cupsRemoveDest() and cupsSetDefaultDest()
|
||||
functions.
|
||||
- Added support for cupsPJLCharset attribute in PPD files
|
||||
which specifies the character set that is used in PJL
|
||||
strings (STR #1969)
|
||||
- Moved the definition of the (private) _http_s structure
|
||||
to http-private.h; code that directly accesses the
|
||||
http_t members will no longer compile!
|
||||
- Added support for setting the document-format-default
|
||||
attribute on a per-printer basis.
|
||||
- Added support for IntelliBar label printers.
|
||||
@@ -1,843 +0,0 @@
|
||||
CHANGES-1.4.txt
|
||||
---------------
|
||||
|
||||
CHANGES IN CUPS V1.4.8
|
||||
|
||||
- The scheduler would delete job data files when restarted (STR #3880)
|
||||
- The network backends could crash if a printer returned a value of 0
|
||||
for the maximum capacity for a supply (STR #3875)
|
||||
|
||||
|
||||
CHANGES IN CUPS V1.4.7
|
||||
|
||||
- Documentation changes (STR #3710, STR #3720, STR #3745, STR #3750,
|
||||
STR #3757, STR #3758, STR #3782, STR #3826, STR #3829, STR #3837)
|
||||
- Web interface fixes (STR #3412, STR #3345, STR #3455, STR #3707,
|
||||
STR #3755, STR #3769, STR #3783)
|
||||
- Configure script fixes (STR #3659, STR #3691)
|
||||
- Compilation fixes (STR #3718, STR #3771, STR #3774)
|
||||
- The imageto* filters could crash with bad GIF files (STR #3867)
|
||||
- The scheduler might leave old job data files in the spool directory
|
||||
(STR #3795)
|
||||
- CUPS did not work with locales using the ASCII character set
|
||||
(STR #3832)
|
||||
- httpAddrString() did not return a URI-style IPv6 numeric address
|
||||
(STR #3814)
|
||||
- Fixed an issue when reading compressed CUPS raster streams (STR #3812)
|
||||
- Fixed an issue with PostScript printer auto-configuration (STR #3443)
|
||||
- Fixed some compatibility issues with the libusb-based USB backend
|
||||
(STR #3799)
|
||||
- The network backends no longer try to collect SNMP supply and status
|
||||
information for raw queues (STR #3809)
|
||||
- The DBUS notifier did not report job state changes (STR #3805)
|
||||
- The scheduler did not always report that the "normal" print-quality
|
||||
value was supported (STR #3803)
|
||||
- The gziptoany filter did not report the correct error if it was unable
|
||||
to write the uncompressed document to the next filter or backend in
|
||||
the chain (STR #3797)
|
||||
- The Epson and Oki 9-pin drivers had a bad resolution option
|
||||
(STR #3798)
|
||||
- The scheduler did not always register the correct default ICC profile
|
||||
on Mac OS X.
|
||||
- The scheduler did not use the job owner when authorizing access for
|
||||
the CUPS-Get-Document operation, preventing non-admins from accessing
|
||||
their own jobs.
|
||||
- CUPS did not work with some printers that incorrectly implemented the
|
||||
HTTP/1.1 standard (STR #3778, STR #3791)
|
||||
- The scheduler did not retry fax jobs properly.
|
||||
- The scheduler now recognizes an empty cupsCommands PPD keyword as
|
||||
meaning that CUPS commands are not supported for a printer (STR #3773)
|
||||
- Fixed a crash bug in the scheduler when the application/octet-stream
|
||||
MIME type was not defined (STR #3690)
|
||||
- Polled printers were advertised more slowly than necessary (STR #3574)
|
||||
- cupsResolveConflicts() did not handle resolving multiple UIConstraints
|
||||
issues (STR #3705)
|
||||
- The SetEnv and PassEnv directives had no effect (STR #3664)
|
||||
- The libusb-based USB backend printed slowly to the LaserJet 1300 and
|
||||
other printers (STR #3405)
|
||||
- "lp" and "lpr" failed to print with Kerberos enabled (STR #3768)
|
||||
- The cupsctl program now displays an error if you try to directly set
|
||||
the Port or Listen directives (STR #3749)
|
||||
- PPD files with "*JobPatchFile: bla" no longer fail to load in relaxed
|
||||
conformance mode (STR #3747)
|
||||
- The scheduler generated a bad notify-text string for printer state
|
||||
change notifications (STR #3739)
|
||||
- The scheduler incorrectly updated printers.conf when it really needed
|
||||
to update classes.conf or remote.cache (STR #3726)
|
||||
- Hardwired remote printers with options did not work (STR #3717)
|
||||
- Accessing the CUPS web interface using a CNAME-based hostname would
|
||||
sometimes fail due to redirection to the actual hostname (STR #3701)
|
||||
- Subscription events had a misspelled attribute (STR #3693)
|
||||
- "make check" failed if LC_MESSAGES was set (STR #3765)
|
||||
- Fixed the configure script to always look for the pkg-config script
|
||||
(STR #3761)
|
||||
- The scheduler now only looks up interface hostnames if HostNameLookups
|
||||
are enabled (STR #3737)
|
||||
- Fixed a compilation problem on DragonFly BSD (STR #3738)
|
||||
- The default PageLogFormat value had the username and job ID swapped
|
||||
from CUPS 1.3.x (STR #3727)
|
||||
- The scheduler could crash if a browsed printer times out while a job
|
||||
is printing (STR #3754)
|
||||
- The scheduler incorrectly mapped custom page sizes to standard sizes
|
||||
(STR #3764)
|
||||
- cupsfilter and pstops did not map IPP attributes to PPD options due to
|
||||
a change in cupsMarkOptions (STR #3756)
|
||||
- The scheduler did not always show the most recent status message from
|
||||
the print filters (STR #3731)
|
||||
- The PostScript filter did not apply the mirror and number-up options
|
||||
properly, leading to offset and clipped output (STR #3732)
|
||||
- The network backends always reported "low toner" or "out of toner"
|
||||
states, even for inkjet printers (STR #3733)
|
||||
|
||||
|
||||
CHANGES IN CUPS V1.4.6
|
||||
|
||||
- Fixed a "make check" issue on Solaris (STR #3729)
|
||||
- Regression: The pstops filter did not support landscape printing of
|
||||
PostScript files (STR #3722)
|
||||
- The scheduler killed retried (fax) jobs after restarting them
|
||||
(STR #3697)
|
||||
- The cupsAdminSetServerSettings() function disabled sharing when
|
||||
debug logging was enabled (STR #3712)
|
||||
|
||||
|
||||
CHANGES IN CUPS V1.4.5
|
||||
|
||||
- Documentation fixes (STR #3542, STR #3650)
|
||||
- Localization fixes (STR #3635, STR #3636, STR #3647, STR #3666)
|
||||
- Security: Fixed a memory corruption bug reported in CVE-2010-2941
|
||||
(STR #3648)
|
||||
- The CUPS API incorrectly mapped the HTTP_UNAUTHORIZED status to the
|
||||
IPP_NOT_AUTHORIZED status code, when IPP_NOT_AUTHENTICATED would be
|
||||
the correct mapping (STR #3684)
|
||||
- The scheduler would restart jobs while shutting down (STR #3679)
|
||||
- Fixed a PPD loader bug that could cause a crash in cupsd (STR #3680)
|
||||
- Improved the mapping of non-standard PPD and PWG names (STR #3671)
|
||||
- The scheduler did not initialize Kerberos in all cases (STR #3662)
|
||||
- cupsAdminSetServerSettings duplicated Listen and Order lines
|
||||
(STR #3645)
|
||||
- Added DeviceN colorspace support to the CUPS Raster format (STR #3419)
|
||||
- ppdMarkDefaults() did not clear the marked field of the previous
|
||||
choices (STR #3642)
|
||||
- The serial backend would not allow a raw job to be canceled
|
||||
(STR #3649)
|
||||
- The socket backend could go into an infinite loop with certain
|
||||
printers (STR #3622)
|
||||
- Setting the PRINTER or LPDEST environment variables to "name/instance"
|
||||
did not work (STR #3485)
|
||||
- The scheduler did not handle the JobRetryLimit setting properly
|
||||
(STR #3466)
|
||||
- The lpstat command always showed a remote job ID of 0 for shared
|
||||
printers (STR #3627)
|
||||
- Increased the write timeout for the libusb-based USB backend to 5
|
||||
minutes (STR #3595)
|
||||
- The libusb-base USB backend did not check whether the printer has a
|
||||
serial number (STR #3590)
|
||||
- The lpadmin command did not support setting of custom option values
|
||||
(STR #3631)
|
||||
- The lpadmin command did not support setting of the location or
|
||||
description of a class (STR #3613)
|
||||
- The cupsaddsmb command did not give up after too many failed attempts
|
||||
(STR #3615)
|
||||
- The CUPS library no longer uses certain problematic ctype macros that
|
||||
change based on the locale's character set.
|
||||
- PJL value substitution of more than 9 values was broken (STR #3621)
|
||||
- Custom options with missing string values caused ppdEmit* to segfault
|
||||
(STR #3620)
|
||||
- Fixed an issue with the Italian version of the web interface
|
||||
(STR #3624)
|
||||
- Fixed the Solaris SMF configuration file for cups-lpd (STR #3611)
|
||||
- The scheduler did not set the notify-subscribed-event attribute when
|
||||
delivering printer-added or printer-modified events (STR #3608)
|
||||
- The mailto notifier could get into an infinite loop (STR #3609)
|
||||
- Date/time information was not shown in banner pages.
|
||||
- Relational operators were broken in #if/#elif/#else/#endif expressions
|
||||
for the PPD compiler.
|
||||
- Moving a job via the web interface failed without asking for
|
||||
authentication (STR #3559)
|
||||
- The scheduler now clears the printer-state-reasons when the driver is
|
||||
changed (STR #3570)
|
||||
- The web interface did not allow a user to change the driver
|
||||
(STR #3537, STR #3601)
|
||||
- The scheduler was not setting the PATH_INFO environment variable when
|
||||
needed (STR #3600)
|
||||
- The scheduler incorrectly set the CUPSD_AUTH_TYPE environment
|
||||
variable instead of AUTH_TYPE (STR #3599)
|
||||
- Fixed a buffer overrun in the PPD compiler (STR #3594)
|
||||
- Fixed some additional IPP job template attribute mapping issues in the
|
||||
scheduler.
|
||||
|
||||
|
||||
CHANGES IN CUPS V1.4.4
|
||||
|
||||
- Documentation updates (STR #3453, STR #3527, STR #3528, STR #3529)
|
||||
- Security: The fix for CVE-2009-3553 was incomplete (STR #3490)
|
||||
- Security: The texttops filter did not check the results of allocations
|
||||
(STR #3516)
|
||||
- Security: The web admin interface could disclose the contents of
|
||||
memory (STR #3577)
|
||||
- Security: CUPS could overwrite files as root in directories owned or
|
||||
writable by non-root users (STR #3510)
|
||||
- The cups-config utility did not return the correct linker options on
|
||||
AIX (STR #3587)
|
||||
- Fixed some IPP conformance issues with the scheduler's
|
||||
ippget-event-life, operations-supported, output-bin, and sides
|
||||
attributes (STR #3554)
|
||||
- The OpenSSL interfaces have been made thread-safe and the GNU TLS
|
||||
interface is explicitly forbidden when threading is enabled
|
||||
(STR #3461)
|
||||
- Fixed an IPP conformance issue with the scheduler's Send-Document
|
||||
implementation (STR #3514)
|
||||
- Added additional validation checks for the 1284 device ID (STR #3534)
|
||||
- Fixed a problem with the RPM spec file (STR #3544)
|
||||
- The lpstat command did not limit the job list to the specified
|
||||
printers (STR #3541)
|
||||
- The cupsfilter command did not set the RIP_MAX_CACHE environment
|
||||
variable (STR #3531)
|
||||
- Fixed support for media-col and page size variants (STR #3394)
|
||||
- The PostScript filter did not support all media selection options for
|
||||
the first page (STR #3525)
|
||||
- The scheduler did not always remove job control files (STR #3425)
|
||||
- The scheduler could crash on restart if classes were defined
|
||||
(STR #3524)
|
||||
- The scheduler no longer looks up network interface hostnames by
|
||||
default on Mac OS X (STR #3523)
|
||||
- ippWriteIO did not write collection (member) attributes properly in
|
||||
all cases (STR #3521)
|
||||
- The "cupsctl --remote-any" and corresponding web interface check box
|
||||
(allow printing from the Internet) did not work reliably (STR #3520)
|
||||
- The lpq and lpr commands would sometimes choose different default
|
||||
printers (STR #3503)
|
||||
- cupsDo*Request did not flush error text, leading to multiple issues
|
||||
(STR #3325, STR #3519)
|
||||
- cupsDoAuthentication did not cancel password authentication after 3
|
||||
failures (STR #3518)
|
||||
- Fixed several LDAP browsing bugs (STR #3392)
|
||||
- The Dymo driver did not support copies (STR #3457)
|
||||
- The scheduler did not update the classes.conf file when deleting a
|
||||
printer belonging to a class (STR #3505)
|
||||
- The lppasswd command did not use localized password prompts
|
||||
(STR #3492)
|
||||
- The socket backend no longer waits for back-channel data on platforms
|
||||
other than Mac OS X (STR #3495)
|
||||
- The scheduler didn't send events when a printer started accepting or
|
||||
rejecting jobs (STR #3480)
|
||||
- The web interface now includes additional CSRF protection (STR #3498)
|
||||
|
||||
|
||||
CHANGES IN CUPS V1.4.3
|
||||
|
||||
- SECURITY: The scheduler could try responding on a closed client
|
||||
connection, leading to a crash (STR #3200)
|
||||
- SECURITY: The lppasswd program allowed the localization files to be
|
||||
overridden when running in setuid mode (STR #3482)
|
||||
- Localization updates (STR #3352, STR #3409, STR #3422, STR #3452,
|
||||
STR #3473, STR #3502)
|
||||
- Documentation updates (STR #3451, STR #3504)
|
||||
- The IPP backend now sets the printer-state-message to "Ready to
|
||||
print." at the end of a successful job (STR #3460)
|
||||
- The PPD compiler did not correctly add the manufacturer to the output
|
||||
filename when using the "-m" option (STR #3469)
|
||||
- The IPP backend did not handle authentication properly for the Get-
|
||||
Printer-Attributes operation (STR 3458)
|
||||
- Getting SNMP values larger than 127 bytes did not work.
|
||||
- IPP conformance: Get-Jobs has a default value for requested-attributes
|
||||
(STR #3383)
|
||||
- cupsPrintFiles() did not report all errors (STR #3449)
|
||||
- cupsAddDest() could read freed memory (STR #3448)
|
||||
- The DBUS notifier did not build (STR #3447)
|
||||
- The scheduler would crash when an active printer was deleted.
|
||||
- The snmp backend did not work with some printers (STR #3413)
|
||||
- The web interface did not show the conflicting values when setting
|
||||
options (STR #3440)
|
||||
- Setting options in the web interface did not always work (STR #3439)
|
||||
- The scheduler did not use the Get-Job-Attributes policy for a printer
|
||||
(STR #3431)
|
||||
- The scheduler added two job-name attributes to each job object
|
||||
(STR #3428)
|
||||
- CSS files would not print (STR #3442)
|
||||
- The scheduler did not clean out completed jobs when PreserveJobHistory
|
||||
was turned off (STR #3425)
|
||||
- The web interface did not show completed jobs for a printer
|
||||
(STR #3436)
|
||||
- Authenticated printing did not always work when printing directly to
|
||||
a remote server (STR #3435)
|
||||
- The USB backend did not work on Solaris (STR #3423)
|
||||
- cupstestppd didn't catch problems with JobPatchFile definitions
|
||||
(STR #3421)
|
||||
- The socket backend could crash if a SNMP string had a negative length.
|
||||
- Fixed some termination issues with the USB backend on Mac OS X.
|
||||
- The side-channel APIs did not handle interrupts properly.
|
||||
- The network backends incorrectly cleared the media-empty-warning
|
||||
state.
|
||||
- The web interface did not allow users to successfully add serial
|
||||
printers (STR #3391)
|
||||
- cupsTempFd() did not work in some situations (STR #3382)
|
||||
- Some C API headers were missing C++ wrapper logic.
|
||||
- The PPD compiler did not localize single-language PPD options properly
|
||||
(STR #3386)
|
||||
- Modifying a printer from the web interface sometimes caused the wrong
|
||||
driver to be selected (STR #3418)
|
||||
- The scheduler did not handle out-of-memory conditions properly when
|
||||
loading a job (STR #3407)
|
||||
- When adding printers from the web interface, the dynamic updates of
|
||||
the device list made it hard to pick a device (STR #3406)
|
||||
- Fixed a typo in the web interface admin page template (STR 3403)
|
||||
- The web interface did not preserve the "printer is shared" state when
|
||||
modifying a printer (STR #3390)
|
||||
- The PPD compiler incorrectly inserted translations of empty strings
|
||||
(STR #3411)
|
||||
- The scheduler did not reset the SIGPIPE handler of child processes
|
||||
(STR #3399)
|
||||
- cupsGetNamedDest() incorrectly returned the default printer if the
|
||||
named printer did not exist (STR #3397)
|
||||
- Fixed a GNU TLS error handling bug (STR #3381)
|
||||
|
||||
|
||||
CHANGES IN CUPS V1.4.2
|
||||
|
||||
- SECURITY: The CUPS web interface was vulnerable to several XSS and
|
||||
HTTP header/body attacks via attribute injection (STR #3367,
|
||||
STR #3401)
|
||||
- Fixed localization errors (STR #3359, STR #3372, STR #3380, STR #3387)
|
||||
- The documentation for classes.conf and printers.conf did not provide
|
||||
the correct instructions for manual changes (STR #3351)
|
||||
- The scheduler did not always rebuild printer cache files when the
|
||||
driver was changed (STR #3356)
|
||||
- The documentation makefile failed to install localizations when using
|
||||
newer versions of Bash (STR #3360)
|
||||
- The configure script did not use the --with-xinetd value for the
|
||||
default LPD configuration path (STR #3347)
|
||||
- The configure script incorrectly required glib for DBUS support
|
||||
(STR #3346)
|
||||
- The cupstestppd program incorrectly reported filters with bad
|
||||
permisssions as missing (STR #3363)
|
||||
- The cups.desktop file used the wrong locale names (STR #3358)
|
||||
- cupsSideChannelRead() did not return an error for short reads.
|
||||
- The installed PAM configuration file did not use the correct options
|
||||
with the pam_unix2 module (STR #3313)
|
||||
- The scheduler did not preserve default options that contained special
|
||||
characters (STR #3340)
|
||||
- The scheduler did not remove old pre-filters when updating a printer
|
||||
driver (STR #3342)
|
||||
- The HP/GL-2 filter did not check for early end-of-file (STR #3319)
|
||||
- The USB backend did not compile on some platforms (STR #3332)
|
||||
- cupsSideChannelSNMPWalk() could go into an infinite loop with broken
|
||||
SNMP implementations.
|
||||
|
||||
|
||||
CHANGES IN CUPS V1.4.1
|
||||
|
||||
- Documention fixes (STR #3296)
|
||||
- SNMP supply levels and states were wrong for some printers.
|
||||
- The IPP backend did not update the auth-info-required value.
|
||||
- The libusb-based USB backend would hang at the end of the job
|
||||
(STR #3315, STR #3318)
|
||||
- DNS-SD registrations for raw queues had an empty "ty" key (STR #3299)
|
||||
- The JPEG and BMP MIME type rules were broken (STR #3284)
|
||||
- cupsGetNamedDest returned the default printer when the named
|
||||
destination did not exist (STR #3285)
|
||||
- The JobKillDelay was not triggered for canceled jobs (STR #3292)
|
||||
- The PPD compiler could get in an infinite loop (STR #3293)
|
||||
- The configure check for dns-sd.h was broken (STR #3297)
|
||||
- The "Query Printer for Default Options" page did not go away if the
|
||||
query job was held (STR #3302)
|
||||
- Boolean options did not show up as selected in the web interface
|
||||
(STR #3303)
|
||||
- The scheduler did not cache or report driver information files
|
||||
correctly, leading to a variety of issues (STR #3283, STR #3297,
|
||||
STR #3305)
|
||||
- cupsDoIORequest() did not abort on permanent errors (STR #3311)
|
||||
- Modifying a class in the web interface did not work (STR #3312)
|
||||
- BrowseLocalProtocols could be cleared when changing the sharing
|
||||
setting (STR #3287)
|
||||
- The scheduler could return an empty supported document format
|
||||
(STR #3308)
|
||||
- The PPD compiler generated invalid PPD files when the locale used
|
||||
something other than "." for the decimal point (STR #3300)
|
||||
- The IPP backend did not handle some non-comforming IPP printer
|
||||
implementations (STR #3262)
|
||||
- The scheduler leaked three file descriptors to each job filter
|
||||
(STR #3263)
|
||||
- The scheduler now uses a default CUPS-Get-Devices timeout of 15
|
||||
seconds (STR #3307)
|
||||
|
||||
|
||||
CHANGES IN CUPS V1.4.0
|
||||
|
||||
- Localization updates (STR #3223, STR #3246, STR #3248, STR #3250)
|
||||
- Documentation updates (STR #3225, STR #3230, STR #3242, STR #3260)
|
||||
- The --with-pdftops configure option did not accept a full path to the
|
||||
filter (STR #3278)
|
||||
- The banner filter did not position the back side image correctly
|
||||
(STR #3277)
|
||||
- The dnssd backend could crash (STR #3272)
|
||||
- The 1284 device ID sometimes contained trailing garbage (STR #3266)
|
||||
- The USB backend returned different URIs for some printers than in
|
||||
CUPS 1.3 (STR #3259)
|
||||
- The scheduler did not do local job-hold-until processing for remote
|
||||
queues (STR #3258)
|
||||
- The scheduler did not try all possible SSL certificates on Mac OS X.
|
||||
- The scheduler did not always remove a file descriptor when using the
|
||||
kqueue interface (STR #3256)
|
||||
- The scheduler did not protect against bad job control files in all
|
||||
cases (STR #3253)
|
||||
- The scheduler did not encode "+" in model names (STR #3254)
|
||||
- The web interface didn't show the default options (STR #3244)
|
||||
- The IPP and LPD backends needed print data before they would do an
|
||||
SNMP query.
|
||||
- Fixed a GNU TLS compatibility issue (STR #3231)
|
||||
- Fixed a HTML error in the add and modify printer web interface
|
||||
templates (STR #3229)
|
||||
- The scheduler did not minimize the number of printer state events that
|
||||
were generated by filter STATE: messages, which could lead to poor
|
||||
performance.
|
||||
- The USB backend on Mac OS X did not cleanly cancel a job.
|
||||
- The network backends now set the connecting-to-device printer-state-
|
||||
reasons value when looking up the address and copying the print data
|
||||
for consistency.
|
||||
- The scheduler now supports the com.apple.print.recoverable-warning
|
||||
reason on all platforms.
|
||||
|
||||
|
||||
CHANGES IN CUPS V1.4rc1
|
||||
|
||||
- The PPD compiler documentation was missing information on localization
|
||||
(STR #3212)
|
||||
- The IPP backend now reconnects after every request when talking to
|
||||
printers that claim IPP support but only use HTTP/1.0.
|
||||
- The PPD compiler crashed when both "Resolution" and "Group foo Option
|
||||
Resolution" were specified in the .drv file.
|
||||
- The PPD compiler's #if/#elif/#else/#endif did not work for undefined
|
||||
variables (STR #3210)
|
||||
- Static libraries could not be installed by a non-root user on systems
|
||||
needing a ranlib program (STR #3209)
|
||||
- The scheduler incorrectly always tried to copy Kerberos credentials
|
||||
for print jobs.
|
||||
- Updated the Spanish localization (STR #3204)
|
||||
- The scheduler crashed when getting the default paper size from
|
||||
libpaper (STR #3205, STR #3206)
|
||||
- The PPD compiler now defines six variables: CUPS_VERSION,
|
||||
CUPS_VERSION_MAJOR, CUPS_VERSION_MINOR, CUPS_VERSION_PATCH,
|
||||
PLATFORM_NAME, and PLATFORM_ARCH (STR #3203)
|
||||
- Fixed a whitespace skipping bug in cupsRasterInterpretPPD.
|
||||
- The scheduler did not return HTTP 403 (Forbidden) for authenticated
|
||||
users that were not authorized to do IPP operations (STR #3193)
|
||||
- The scheduler did not report more than 8 Product strings from a PPD
|
||||
file. Some PPD files have as many as 24.
|
||||
- ppdOpen*() could crash if a keyword had no value string (something
|
||||
that cupstestppd looks for...)
|
||||
- cupsLangDefault() did not return the correct language on Mac OS X.
|
||||
- The Mac OS X USB backend did not handle aborted or stalled pipe
|
||||
conditions properly, which prevented drivers from ejecting partial
|
||||
pages when a job was canceled or held.
|
||||
|
||||
|
||||
CHANGES IN CUPS V1.4b3
|
||||
|
||||
- Documentation fixes (STR #3044, STR #3057, STR #3153, STR #3158,
|
||||
STR #3173)
|
||||
- Added complete localizations for German, Japanese, Polish, and
|
||||
Russian and partial localizations for Chinese, Danish, Finnish,
|
||||
French, Italian, Korean, Norwegian, Portuguese, and Swedish
|
||||
(STR #3096, STR #3098, STR #3109, STR #3111, STR #3141)
|
||||
- Updated the configure check for -fstack-protector (STR #3198)
|
||||
- The network backends now correctly convert SNMP supply descriptions to
|
||||
UTF-8 encoding as needed.
|
||||
- The scheduler could crash when deleting an attribute (STR #3197)
|
||||
- The cups-driverd program did not detect symlink loops (STR #3185)
|
||||
- The EPSON 24-pin series driver should now feed the correct amount
|
||||
(STR #2624)
|
||||
- The scheduler now automatically logs the last N debug messages for
|
||||
failed print jobs.
|
||||
- You can now modify a raw print queue (STR #3133)
|
||||
- Fixed a number of ppdi issues and added a unit test to validate that
|
||||
ppdc + ppdi can generate and import the same data (STR #3152)
|
||||
- Moving jobs in the web interface now shows an error if you only have
|
||||
one printer or class added (STR #3094)
|
||||
- Since classes have never truly supported the printer-error-policy
|
||||
stuff added in CUPS 1.2, update the code to reflect the current
|
||||
reality and support only the retry-current-job policy for now
|
||||
(STR #3171)
|
||||
- Revised the password callback support (STR #2953)
|
||||
- ppdEmit*() did not choose between PageSize and PageRegion properly.
|
||||
- Make some fairly substantial changes to the Kerberos support code so
|
||||
that CUPS can work in multi-realm environments and does not require
|
||||
delegatable credentials. Shared printing still requires delegation,
|
||||
however "delegation by policy" can be enabled in the KDC to make this
|
||||
all work.
|
||||
- "AccessLogLevel actions" did not hide client-error-not-found errors.
|
||||
- AP_FIRST_InputSlot did not work with number-up.
|
||||
- cupsBackChannelRead() and cupsBackChannelWrite() could fail due to a
|
||||
lack of kernel buffers.
|
||||
- The IPP and LPD backends did not respond to side-channel requests
|
||||
while copying print data to a temporary file.
|
||||
- cupsWriteRequestData() flushed the output buffer unnecessarily,
|
||||
causing reduced performance in some situations.
|
||||
- If a CGI process died before sending its MIME headers, the request
|
||||
would hang on the client.
|
||||
- The printer/class/job search feature on the web interface did not
|
||||
work (STR #3132)
|
||||
- The scheduler did not write the printers out for classes.
|
||||
- CUPS-Get-PPDs did not work properly when filtering by language,
|
||||
product, or psversion (STR #3136)
|
||||
- The scheduler now kills job filters when it takes more than 30 seconds
|
||||
(configurable) to cancel or hold the job.
|
||||
- The cupstestppd program did not validate the capitalization of
|
||||
filenames in the PPD file.
|
||||
- The cupstestppd program did not validate the PageSize and PageRegion
|
||||
values.
|
||||
- The cups-deviced helper program could miss reporting some backend
|
||||
devices (STR #3108)
|
||||
- The cupsSideChannelSNMP* functions did not work.
|
||||
- The scheduler could consume 100% CPU when jobs were canceled.
|
||||
- Clicking on "Select Another Make/Manufacturer" in the web interface
|
||||
incorrectly added the printer (STR #3095)
|
||||
- The scheduler no longer uses programs with insecure file
|
||||
permissions.
|
||||
- httpAssembleURI*() did not escape backslashes in hostnames.
|
||||
- The dnssd backend did not unquote "full names" before creating the
|
||||
device URI.
|
||||
- The scheduler now supports JobRetryInterval values less than 10
|
||||
seconds.
|
||||
- Updated the Spanish localization (STR #3090)
|
||||
- The scheduler did not redo Bonjour/DNS-SD registrations when updating
|
||||
them failed.
|
||||
- The "authenticated" policy incorrectly required authentication for
|
||||
status operations.
|
||||
- ppdOpen*() incorrectly loaded PPDs with multiple JobPatchFile
|
||||
keywords.
|
||||
- The network backends no longer report the SNMP "offline" or
|
||||
maintenance status bits since they are inconsistently implemented and
|
||||
often unreliable.
|
||||
- The scheduler no longer logs child processes killed via SIGKILL as
|
||||
"crashed".
|
||||
- The printer link shown on the "job moved" template was bad (STR #3085)
|
||||
- Updated the HTML templates to use the final HTML 4 DOCTYPE (STR #3086)
|
||||
- The scheduler did not track the "paused" reason properly if a
|
||||
printer had other reasons associated with it.
|
||||
- cupsSendRequest() did not clear old local certificate auth data.
|
||||
- The PPD compiler did not search for localization files properly
|
||||
(STR #3084)
|
||||
- cupsGetNamedDest() did not use the fallback default like
|
||||
cupsGetDests*() (STR #3082)
|
||||
- The scheduler now provides a LogTimeFormat directive to enable
|
||||
microseconds in the date and time that are logged.
|
||||
- The scheduler now provides a MultipleOperationTimeout directive to
|
||||
control the timeout for multi-file print jobs.
|
||||
- The configure script incorrectly allowed Avahi to be used for DNS-SD
|
||||
printer discovery (STR #3065)
|
||||
- The web interface and scheduler did not support URIs up to 1024 bytes
|
||||
in length (STR #3072)
|
||||
- Fixed pdftops issues with page sizes (STR #3063)
|
||||
- Fixed pdftops issues with Ghostscript (STR #3062)
|
||||
- The scheduler incorrectly registered default profiles for PostScript
|
||||
printers with no specified colorspace.
|
||||
- The scheduler incorrectly created an empty org.cups.printers.plist
|
||||
file on Mac OS X.
|
||||
- cupsGetPPD3() did not look for local PPDs in the right directory.
|
||||
- SNMP lookups via side-channel did not work for NULL-VALUE and
|
||||
and OCTET-STRING OIDs containing nul characters.
|
||||
- The libusb-based USB backend did not work.
|
||||
- The scheduler did not set the printer-commands attribute correctly
|
||||
for some PPDs.
|
||||
- The ppdi utility did not work.
|
||||
- The web interface no longer uses multi-part output with old or broken
|
||||
web browsers (STR #3049)
|
||||
- CUPS now conforms to the draft IPP/2.0 and IPP/2.1 specification.
|
||||
- Added a new cupsGetConflicts() API to get a list of conflicting
|
||||
options.
|
||||
- The PPD compiler didn't localize options or choices that did not
|
||||
have associated translation text (STR #3045)
|
||||
- Updated the Spanish localization (STR #3043)
|
||||
- Fixed build problems (STR #3040, STR #3047)
|
||||
- cupsResolveConflicts() did not resolve using the default option
|
||||
choice in some cases due to the mirror UIConstraints that are
|
||||
present in most PPD files.
|
||||
- The scheduler did not honor MIME type priorities.
|
||||
- The commandtops filter incorrectly used the JCLBegin code to end
|
||||
its jobs.
|
||||
- The default BrowseLocalProtocols value was not set properly.
|
||||
- Since the commandtops filter does not actually support ReportLevels
|
||||
all on its own, don't list that printer command by default for PS
|
||||
printers.
|
||||
- The scheduler did not give filters a chance to log errors or update
|
||||
printer attributes when a job was canceled.
|
||||
- The scheduler did not clear the "connecting-to-device" reason keyword
|
||||
when a job finished.
|
||||
|
||||
|
||||
CHANGES IN CUPS V1.4b2
|
||||
|
||||
- Documentation updates (STR #2983, STR #2998, STR #3021)
|
||||
- The cupstestppd utility now validates the FileVersion and
|
||||
FormatVersion values in PPD files.
|
||||
- The default cupsd.conf file did not reflect the
|
||||
--with-local-protocols value set at compile-time (STR #3037)
|
||||
- The cupsGetPPD* APIs now create symlinks to local PPD files
|
||||
rather than copying them whenever possible.
|
||||
- Various performance optimizations in the string pool, dests, and
|
||||
options implementations.
|
||||
- The cupsGetDests* APIs now return the marker and printer-commands
|
||||
attributes.
|
||||
- Side-channel SNMP lookups would not work when cupsSNMPSupplies
|
||||
was set to False in the PPD file.
|
||||
- Localized the device descriptions for the SCSI, serial,
|
||||
and network backends (STR #3014)
|
||||
- Added a Spanish localization (STR #3015)
|
||||
- Added support for marker-low-levels and marker-high-levels
|
||||
attributes.
|
||||
- The scheduler could hang writing a long log line.
|
||||
- The cupsGetDevices() function now has an "include_schemes"
|
||||
parameter.
|
||||
- The lpinfo command now supports --include-schemes and
|
||||
--exclude-schemes options.
|
||||
- The CUPS-Get-PPDs operation now supports the include-schemes
|
||||
and exclude-schemes attributes.
|
||||
- The CUPS-Get-Devices operation now supports the include-schemes
|
||||
attribute.
|
||||
- The print filters now support a replacement for the fitplot
|
||||
option called "fit-to-page".
|
||||
- The LPD backend no longer tries to collect page accounting
|
||||
information since the LPD protocol does not allow us to
|
||||
prevent race conditions.
|
||||
- The scheduler did not save the last marker-change-time value.
|
||||
- Fixed a problem with printing to some IPP printers, including
|
||||
CUPS 1.1.x.
|
||||
- Fixed a redirection problem with the printer web page (STR #3012)
|
||||
- Fixed a PPD compiler problem with the loading of message
|
||||
catalogs (STR #2990)
|
||||
- Fixed a PPD compiler problem with the loading of .strings files
|
||||
(STR #2989)
|
||||
- The cupsfilter utility did not set the CONTENT_TYPE environment
|
||||
variable when running filters.
|
||||
- The scheduler now waits to allow system sleep until the jobs
|
||||
have all stopped.
|
||||
- The IPP, LPD, and socket backends used different "connecting"
|
||||
progress messages.
|
||||
|
||||
|
||||
CHANGES IN CUPS V1.4b1
|
||||
|
||||
- Documentation updates (STR #2567)
|
||||
- The PPD compiler now allows local message catalogs to
|
||||
override the standard CUPS translations (STR #2642)
|
||||
- The ppdmerge command did not merge custom option strings
|
||||
(STR #2863)
|
||||
- The scheduler now supports the Hold-New-Jobs and
|
||||
Release-Held-New-Jobs operations; these are exposed via the
|
||||
cupsdisable and cupsenable commands (STR #2332)
|
||||
- The lpstat command is now much faster when displaying the
|
||||
status of a single printer (STR #2843)
|
||||
- The scheduler now caches information from PPD files to provide
|
||||
significantly faster startup time with large numbers of PPDs
|
||||
(STR #1293)
|
||||
- CUPS-Get-Driver now provides much better driver matching based
|
||||
on the IEEE-1284 device ID and make/model strings (STR #2707)
|
||||
- Now support the cupsSNMPSupplies keyword to control whether
|
||||
the network backends query the SNMP Printer MIB for supply
|
||||
levels.
|
||||
- Now support and use a new banner file format for better text
|
||||
support and easier customization (STR #2490)
|
||||
- The scheduler now sets the PRINTER_INFO and PRINTER_LOCATION
|
||||
environment variables from the corresponding IPP attributes.
|
||||
- The ippRead*() and ippWrite*() functions no longer use a
|
||||
stack-based buffer (STR #2388)
|
||||
- The CUPS-Add-Modify-Printer operation now allows you to set
|
||||
the printer-state-reasons attribute.
|
||||
- The "set printer options" page now supports auto-configuration
|
||||
of printer options (STR #1440)
|
||||
- The web interface now provides an advanced server settings
|
||||
form.
|
||||
- The web interface's "modify printer" pages now make it
|
||||
easier to change just one setting (STR #1919)
|
||||
- The scheduler now supports a plist PrintcapFormat.
|
||||
- The scheduler now supports multiple addresses in Allow and
|
||||
Deny lines, just like Apache (STR #2947)
|
||||
- Added CUPS_JOBTYPE environment variable for job filters so
|
||||
they know whether they are printing a banner or document
|
||||
file (STR #2799)
|
||||
- Added support for printer filtering by the cupsfilter
|
||||
command (STR #2562)
|
||||
- Added a SSLOptions directive to allow Windows clients to
|
||||
talk to CUPS in FIPS mode (STR #2827)
|
||||
- Renamed the accept and reject commands to cupsaccept and
|
||||
cupsreject; the old names are still available (STR #2936)
|
||||
- The locale/translate utility needed an update to work with
|
||||
Google (STR #2882)
|
||||
- The lpstat command now supports a -H option to display the
|
||||
default server (STR #2833)
|
||||
- The scheduler now supports a FatalErrors directive to control
|
||||
which errors should cause the scheduler to exit (STR #2536)
|
||||
- The scheduler now uses the php-cgi program if it is available
|
||||
(STR #2923)
|
||||
- The scheduler now supports a DefaultPaperSize directive
|
||||
(STR #2848)
|
||||
- The scheduler now passes the job-originating-host-name
|
||||
value to filters in the options argument (STR #2558)
|
||||
- CUPS now supports job tickets in PDF files (STR #2903)
|
||||
- Added a DBUS notifier (STR #2529)
|
||||
- The LPD mini-daemon now passes the document name when queuing
|
||||
print jobs (STR #2482)
|
||||
- The IPP backend did not relay com.apple.print.recoverable-message
|
||||
values.
|
||||
- The scheduler now supports a job-media-progress attribute to
|
||||
track the progress of individual pages.
|
||||
- The sample HP driver now supports A5 (STR #2798)
|
||||
- The CUPS web interface menu item now uses the xdg-open
|
||||
command, when available (STR #2724)
|
||||
- The cups-lpd program now supports the -h option (STR #2794)
|
||||
- The scheduler now sets the PAM_TTY parameter and the
|
||||
PAM_ESTABLISH_CRED credential flag (STR #2745)
|
||||
- The scheduler now logs unsuccessful requests to the error_log
|
||||
file as errors (STR #2616)
|
||||
- Added support for a "retry-current-job" error policy that
|
||||
retries the current job immediately when the backend encounters
|
||||
an error (STR #2555)
|
||||
- The scheduler now returns a "forbidden" error when a user
|
||||
correctly authenticates but does not have permission to
|
||||
continue further (STR #2101)
|
||||
- The scheduler now loads both the server and CA certificates
|
||||
(if present) from the ServerCertificate file (STR #2146)
|
||||
- New RSS subscriptions now create their feed files immediately
|
||||
(STR #2853)
|
||||
- Added support for a device-location attribute which provides
|
||||
the physical location of a printer device.
|
||||
- Added a cupsBackendReport() API which handles quoting of the
|
||||
device data by a backend.
|
||||
- Added support for custom options in the web interface
|
||||
(STR #1729)
|
||||
- Added support for Mozilla LDAP, reconnection to LDAP servers,
|
||||
and improved LDAP performance (STR #1962)
|
||||
- Added Solaris SMF support (STR #1477)
|
||||
- Added optional support for using TCP wrappers to limit access
|
||||
to CUPS (STR #263)
|
||||
- Added ppdPageSizeLimits API.
|
||||
- Added support for new cupsMediaQualifier2, cupsMediaQualifier3,
|
||||
cupsMinSize, and cupsMaxSize attributes.
|
||||
- Added cupsResolveConflicts and ppdInstallableConflict APIs.
|
||||
- Added support for new cupsUIConstraints and cupsUIResolver
|
||||
attributes for better option conflict detection and
|
||||
resolution.
|
||||
- Increased the maximum size of 1284 device ID strings to
|
||||
256 bytes (STR #2877)
|
||||
- Added an AccessLogLevel directive to cupsd.conf to control
|
||||
what is logged to the access_log file.
|
||||
- The default LogLevel is now "warn" instead of "info" to reduce
|
||||
the amount of logging that is done to disk by default.
|
||||
- The PPD compiler did not include OID query keywords in PPD
|
||||
files (STR #2871)
|
||||
- The cups-driverd helper program now directly supports driver
|
||||
information files.
|
||||
- The USB backend now uses libusb when available (STR #1575)
|
||||
- Added ppdLocalizeAttr function to get the localized version
|
||||
of an attribute.
|
||||
- MIME types now support a priority() attribute (STR #2719)
|
||||
- The standard MIME types are now installed in
|
||||
DataDir/mime (STR #2719)
|
||||
- The lpoptions command now describes custom options and
|
||||
the necessary parameters (STR #2660)
|
||||
- The ppdmerge program did not support Simplified Chinese
|
||||
or Traditional Chinese language version strings (STR #2851)
|
||||
- The PPD compiler now supports localizable attributes
|
||||
(STR #2738)
|
||||
- The ppdpo utility now includes cupsIPPReasons values in
|
||||
the message catalogs it generates (STR #2754)
|
||||
- The PPD compiler now supports conditional directives
|
||||
(STR #2636)
|
||||
- The ppdc utility now supports a "-t" option to test PPD
|
||||
files (STR #2739)
|
||||
- The ppdc utility now supports a "-m" option to use the
|
||||
ModelName value as the output filename.
|
||||
- The ppdc utility now supports a FileName directive to
|
||||
set an alternate output filename (STR #2740)
|
||||
- The side-channel API now supports SNMP queries for the
|
||||
standard network backends.
|
||||
- Added a PageLogFormat directive to the cupsd.conf file to
|
||||
control the format of lines in the page_log file.
|
||||
- Filters can now send PPD: messages to stderr to set PPD
|
||||
keywords like DefaultPageSize while a job is printing.
|
||||
- Added a mdns backend for discovery and printing to printers
|
||||
that advertise themselves via DNS-SD (Bonjour)
|
||||
- The ipp, lpd, and socket backends now support DNS-SD service
|
||||
name resolution.
|
||||
- The scheduler now uses a single shared file descriptor for
|
||||
all DNS-SD registrations (STR #2674)
|
||||
- The ipp, lpd, and socket backends now support SNMP-based
|
||||
page accounting and supply level monitoring (STR #1655)
|
||||
- Added support for cupsPJLDisplay attribute to control what
|
||||
PJL commands are used to display the job information.
|
||||
- Driver information files can now be installed in
|
||||
/Library/Printers/PPDs.drv on Mac OS X.
|
||||
- The CUPS image library now supports reading images larger
|
||||
than 2GB.
|
||||
- The scheduler now delays writing config and state files to
|
||||
reduce disk activity (STR #2684)
|
||||
- The CUPS-Get-Devices operation now supports the
|
||||
exclude-schemes and timeout attributes to control which
|
||||
backends are polled and for how long.
|
||||
- The cups-deviced helper application now runs backends in
|
||||
parallel to get the list of devices faster.
|
||||
- Added --enable-pap configure option.
|
||||
- The default cupsd.conf file now includes an "authenticated"
|
||||
policy which requires authentication for remote print jobs.
|
||||
- Added support for Czech and Hungarian in PPD files
|
||||
(STR #2735, STR #2736)
|
||||
- The PPD compiler tools now support Mac OS X .strings files
|
||||
for localization (STR #2737)
|
||||
- ppdOpen*() now default the colorspace member to PPD_CS_N
|
||||
when no DefaultColorSpace attribute is present in the PPD
|
||||
file.
|
||||
- The build system has been updated to support separate
|
||||
installation of data, program, header, and library files.
|
||||
- All support libraries are now built as shared libraries
|
||||
by default.
|
||||
- The scheduler now manages ICC color profiles on Mac OS X.
|
||||
- The network backends (ipp, lpd, socket) now support
|
||||
SNMP-based supply and page count monitoring (STR #1655)
|
||||
- The lppasswd program is no longer installed setuid to
|
||||
root to make the default installation more secure.
|
||||
- Added a new ppdLocalizeMarkerName() function to get
|
||||
the localized version of a marker-names value.
|
||||
- The scheduler now provides the printer-dns-sd-name
|
||||
attribute for printers shared via DNS-SD/Bonjour.
|
||||
- The pdftops filter now executes the Xpdf or poppler
|
||||
pdftops utility to convert PDF files (STR #1471)
|
||||
- Bonjour printer registrations now advertise as local or
|
||||
global based on the current access policies for the
|
||||
printer.
|
||||
- cupsGetDests*() and cupsSetDests*() now track the last
|
||||
used printer preference on Mac OS X.
|
||||
- Added a new streaming request API (STR #2261)
|
||||
- Added a new cupsGetNamedDest() function to the CUPS
|
||||
library for faster printing with lp and lpr (STR #2638)
|
||||
- The scheduler now sets the PAM RHOST value on systems
|
||||
that support it (STR #2637)
|
||||
- The scheduler now sandboxes child processes when
|
||||
possible.
|
||||
- The Cancel-Job operation now supports a purge-job
|
||||
attriibute to purge a specified job.
|
||||
- ppdEmit* and ppdCollect* now use the NonUIOrderDependency
|
||||
attributes for custom option selections.
|
||||
- The web interface now enables/disables the printer
|
||||
sharing (formerly publishing) controls based on the
|
||||
server-is-sharing-printers state (STR #2233)
|
||||
- The scheduler now tracks printer sharing via the
|
||||
server-is-sharing-printers attribute, and manages LPD
|
||||
and SMB sharing as well (STR #2233)
|
||||
- The web interface now allows you to go back to the make/
|
||||
manufacturer page if there is no matching printer driver
|
||||
on the model page (STR #2436)
|
||||
- The printer list now shows the default media, banner, and
|
||||
duplex options as well as the color and duplex capabilities
|
||||
of printers (STR #1175)
|
||||
- The web interface look-n-feel has been updated (STR #2492)
|
||||
- The scheduler now supports a CUPS-Get-Document operation
|
||||
that returns the specified print job document (STR #118)
|
||||
- The cupsfilter utility now supports a "-J jobid" option
|
||||
to filter the document from the specified job.
|
||||
- The scheduler (cupsd) now supports a new option (-t) to
|
||||
do a syntax check of the cupsd.conf file (STR #2003)
|
||||
- Added new cupsGetPPD3() API to allow applications to
|
||||
cache PPDs safely (STR #1473)
|
||||
- Added generic PostScript and PCL printer driver PPDs.
|
||||
@@ -1,312 +0,0 @@
|
||||
CHANGES-1.5.txt
|
||||
---------------
|
||||
|
||||
CHANGES IN CUPS V1.5.4
|
||||
|
||||
- Documentation updates (STR #4112, STR #4130, STR #4134)
|
||||
- Fixes for libusb-based USB backend (STR #4128)
|
||||
- The lpq command did not show the owner or title of jobs unless passed
|
||||
a username on the command-line (STR #4135)
|
||||
- Localized empty strings contained the message catalog metadata
|
||||
(STR #4119)
|
||||
- Fixed a crash in the libusb-based USB backend (STR #4099)
|
||||
- The cups-lpd mini-daemon no longer handled jobs with multiple copies
|
||||
(STR #4118)
|
||||
- Multiple libusb backend fixes (STR #4098, STR #4100)
|
||||
- The IPP backend no longer tries to get the job status for printers
|
||||
that do not implement the required operation (STR #4083)
|
||||
- Sending a document in an unsupported format to an IPP printer now
|
||||
automatically cancels the job (STR #4093)
|
||||
- Fix some error reporting issues when printing from /dev/null and
|
||||
other unusual situations (STR #4015)
|
||||
- The scheduler now sets the CUPS_MAX_MESSAGE environment variable for
|
||||
filters (STR #4074)
|
||||
- Fixed a build issue when using older versions of autoconf (STR #4084)
|
||||
- The IPP backend now treats the client-error-not-possible status code
|
||||
as a job history issue, allowing IPP printing to Windows to work
|
||||
(STR #4047)
|
||||
- The IPP backend incorrectly included the document-format and
|
||||
compression attributes in Create-Job requests (STR #4086)
|
||||
- The libusb-based USB backend did not work on non-Linux platforms
|
||||
(STR #4088)
|
||||
|
||||
|
||||
CHANGES IN CUPS V1.5.3
|
||||
|
||||
- httpReconnect() did not reset the read/write buffers (STR #4065)
|
||||
- Compiling without threading support failed (STR #4060)
|
||||
- Fixed compile problem with old versions of OpenSSL (STR #4036)
|
||||
- The network backends did not check SNMP supply levels regularly
|
||||
(STR #4040)
|
||||
- The online help always included the "help on help" text (STR #4042)
|
||||
- Fixed a SSL handshake issue on OS X (STR #4045)
|
||||
- The scheduler could crash if a PPD file contained an invalid paper
|
||||
size (STR #4049)
|
||||
- The CUPS polling daemon did not reinitialize its connection to the
|
||||
remote server on errors in all cases (STR #4031)
|
||||
- PostScript auto-configuration was slow and unreliable with some
|
||||
printers (STR #4028)
|
||||
- Missing localizations caused empty output (STR #4033)
|
||||
- The cups-driverd program could temporarily "forget" a PPD file if it
|
||||
was updated in place.
|
||||
- The dnssd backend now prefers IPPS over IPP.
|
||||
- The USB backend now uses and requires LIBUSB 1.0 or later (STR #3477)
|
||||
- The LIBUSB-based USB backend now supports the back-channel (STR #2890)
|
||||
- Changed how timeouts are implemented in the LPD backend (STR #4013)
|
||||
- Added more supported color names for SNMP supplies (STR #3981)
|
||||
- The default InputSlot setting was never used (STR #3957)
|
||||
- POSIX ACLs are now set properly on certificate files (STR #3970)
|
||||
- Supplies with commas in their names were not reported correctly
|
||||
(STR #4020)
|
||||
- The cupsGetPPD3() function created a temporary file when one was not
|
||||
needed (STR #4018)
|
||||
- The scheduler now ensures that job notifications contain a value for
|
||||
the notify-printer-uri attribute (STR #4014)
|
||||
- The lp and lpr commands did not cancel jobs queued from stdin on an
|
||||
error (STR #4015)
|
||||
- Fixed the IPP backend's handling of HTTP/1.0 compatibility (STR #3988)
|
||||
- The IPP backend did not always setup username/password authentication
|
||||
for printers (STR #3985)
|
||||
- The IPP backend no longer re-queues print jobs that are too large for
|
||||
the printer/server (STR #3977)
|
||||
- The RPM spec file did not work (STR #4021, STR #4057)
|
||||
- Encryption did not work when the server name ended with "."
|
||||
(STR #4011)
|
||||
- The multi-purpose tray is now mapped to the IPP "by-pass-tray"
|
||||
(STR #4009)
|
||||
- The correct media size was not always passed to IPP printers
|
||||
(STR #4001)
|
||||
- Finishing options were not passed to IPP printers (STR #3995)
|
||||
- Fixed iCloud-based Back to My Mac printing (STR #3996)
|
||||
|
||||
|
||||
CHANGES IN CUPS V1.5.2
|
||||
|
||||
- Reposted what should have been CUPS 1.5.1.
|
||||
|
||||
|
||||
CHANGES IN CUPS V1.5.1
|
||||
|
||||
- Documentation updates (STR #3885, STR #3886, STR #3946, STR #3969)
|
||||
- Localization updates (STR #3840, STR #3989, STR #3997)
|
||||
- Build fixes (STR #3956, STR #3999)
|
||||
- The SNMP backend did not validate the device URIs reported by printers
|
||||
(STR #4004)
|
||||
- cupsBackendReport() did not handle newlines in 1284 Device IDs
|
||||
(STR #4005)
|
||||
- USB backend fixes for libusb (STR #3965, STR #3978)
|
||||
- The DBUS notifier did not validate string parameters (STR #3984)
|
||||
- Group quota ACLs did not work with Kerberos (STR #3972)
|
||||
- The IPP backend did not retry when a printer responded with
|
||||
client-error-not-possible (STR #3963)
|
||||
- PostScript PPDs with filters used the wrong command filter (STR #3973)
|
||||
- The scheduler incorrectly used free() on a POSIX ACL value, which
|
||||
could cause a crash (STR #3970)
|
||||
- PPD files using the MacStandard encoding did not work.
|
||||
- The web interface did not work on some platforms (STR #3902)
|
||||
- The lpstat command would crash when then "-u" option was used by a
|
||||
non-administrator (STR #3953)
|
||||
- Japanese supply level reporting did not always work.
|
||||
- The DBUS notifier could crash (STR #3947)
|
||||
- Relaxed some of the page size checks in cupstestppd.
|
||||
- The ipptool program now reports attributes that are repeated within
|
||||
the same attribute group.
|
||||
- Updated the PWG raster support to match the current draft
|
||||
specification.
|
||||
- Fixed some IPP conformance issues in the scheduler.
|
||||
- Added ipptool support for repeating requests.
|
||||
- Added IPP/2.2 conformance tests and greatly improved the IPP/1.1,
|
||||
IPP/2.0, and IPP/2.1 conformance testing.
|
||||
- IPP messages containing mixed integer/rangeOfInteger values did not
|
||||
work (STR #3942)
|
||||
- The ipptool program now provides additional diagnostics for badly-
|
||||
formatted responses (STR #3857)
|
||||
- When possible, the IPP backend now stops sending job data early on a
|
||||
cancel.
|
||||
- cupsSendRequest and cupsWriteRequestData did not properly read all
|
||||
HTTP headers, preventing authentication and encryption upgrades from
|
||||
working in all cases.
|
||||
- The client.conf Server directive is no longer supported on Mac OS X
|
||||
10.7 and later.
|
||||
- The IPP backend sent the wrong margins in media-col.
|
||||
- The scheduler did not save or restore large Kerberos credentials for
|
||||
jobs.
|
||||
- The dnssd backend did not properly browse for secure IPP printers.
|
||||
- httpAssembleURI* did not properly escape all special characters in the
|
||||
username/password field.
|
||||
- The scheduler now logs config file errors to stderr (STR #3936)
|
||||
- The configure script incorrectly used bundle-based localizations on
|
||||
Linux (STR #3938)
|
||||
- The cups-driverd helper program did not cache .drv files properly,
|
||||
sometimes leading to a crash (STR #3921)
|
||||
- CUPS did not build on stock Mac OS X installations.
|
||||
- Encryption was broken with OpenSSL.
|
||||
- ipptool's XML output used date/time values with timezone offsets,
|
||||
which are not supported by Mac OS X's NSDate class.
|
||||
- Several programs did not support the cupsFilter2 keyword in PPD files.
|
||||
- The IPP backend incorrectly reported spool-area-full states.
|
||||
- cupsMarkOptions() did not protect against a bad PPD that was missing
|
||||
one or more standard Duplex options.
|
||||
- The PostScript filter did not mirror N-up output properly.
|
||||
- The ipptool program did not validate UTF-8 strings in XML output.
|
||||
- Fixed supply level reporting for some printers.
|
||||
- The scheduler no longer automatically logs debug messages for jobs
|
||||
that were held or canceled.
|
||||
- The cupsSendRequest function did not flush remaining response data
|
||||
from a previous request, leading to apparent chunking issues.
|
||||
- The scheduler did not report the correct version in the Server: header
|
||||
(STR #3903)
|
||||
- The scheduler did not support 1284 device IDs reported by driver
|
||||
interface programs longer than 127 characters (STR #3871)
|
||||
- The image filters did not support loading images larger than the
|
||||
RIPCache setting (STR #3901)
|
||||
- "PAGE: total NNN" messages did not get logged properly (STR #3887)
|
||||
- Updated the PWG Raster support to conform to the current draft of the
|
||||
PWG Raster Format specification.
|
||||
- The PWG Raster filter did not always write the correct number of
|
||||
padding lines on the bottom of the page (STR #3904)
|
||||
- When reporting a denial-of-service attack from the domain socket, the
|
||||
address reported does not always contain the correct path (STR #3888)
|
||||
- Badly formed GIF files could cause the image filters to crash
|
||||
(STR #3914)
|
||||
- Jobs canceled at the printer were retried by the IPP backend.
|
||||
- "cupsfilter -u" deleted the input file instead of the PPD file.
|
||||
- The scheduler did not compute the cost of PPD filters defined using
|
||||
the cupsFilter2 keyword properly.
|
||||
- The scheduler did not correctly support the maxsize() attribute for
|
||||
PPD filters.
|
||||
|
||||
|
||||
CHANGES IN CUPS V1.5.0
|
||||
|
||||
- Documentation updates.
|
||||
- Localization update (STR #3865)
|
||||
- Needed to limit TLS to v1.0 on some versions of Mac OS X.
|
||||
- The snmp backend did not work with some printers.
|
||||
|
||||
|
||||
CHANGES IN CUPS V1.5rc1
|
||||
|
||||
- Compile fixes (STR #3849, STR #3850)
|
||||
- The scheduler didn't check for empty values for several configuration
|
||||
directives (STR #3861)
|
||||
- ipptool didn't generate valid XML when a test was skipped.
|
||||
- Added additional error checking to the 1284 device ID code (STR #3858)
|
||||
- Fixed some compatibility issues migrating from the old usblp backend
|
||||
to the libusb backend (STR #3860)
|
||||
- Fixed the wake-from-sleep printing behavior on Mac OS X.
|
||||
- The scheduler incorrectly allowed jobs to be held from a terminating
|
||||
state.
|
||||
- The cups-driverd program could crash when a PPD was renamed.
|
||||
- The dnssd backend took too long to discover printers on large or busy
|
||||
networks with the new default timeout used by lpinfo and the web
|
||||
interface. This resulted in "lost" printers.
|
||||
|
||||
|
||||
CHANGES IN CUPS V1.5b2
|
||||
|
||||
- Documentation updates.
|
||||
- Localization updates (STR #3845)
|
||||
- Compiler warning cleanup.
|
||||
- Fixed PIE support for Linux (STR #3846)
|
||||
- Made httpSetTimeout API public and use it in the IPP backend to avoid
|
||||
timeout errors.
|
||||
- The scheduler incorrectly set the "authenticated" printer-type bit for
|
||||
remote queues using authentication.
|
||||
|
||||
|
||||
CHANGES IN CUPS V1.5b1
|
||||
|
||||
- The CUPS library now supports per-connection HTTP timeouts and
|
||||
callbacks.
|
||||
- The CUPS library now supports (limited) SSL/TLS X.509 certificate
|
||||
validation and revocation (STR #1616)
|
||||
- Updated the PostScript filter to support IncludeFeature in more
|
||||
circumstances (STR #3417)
|
||||
- The schedule did not correctly parse some IPv6 addresses and masks in
|
||||
the cupsd.conf file (STR #3533)
|
||||
- Fixed a case-insensitive string comparison issue for locales that do
|
||||
not treat "I" and "i" as equivalent (STR #3800)
|
||||
- The scheduler reported an incorrect job-printer-uri value when sharing
|
||||
was not enabled (STR #3639)
|
||||
- The scheduler now allows the ServerAlias directive to contain multiple
|
||||
hostnames separated by spaces or commas (STR #3813)
|
||||
- The scheduler now sets the process group for child processes and
|
||||
manages the group (STR #2829)
|
||||
- Fixed some minor issues discovered by a Coverity scan (STR #3838)
|
||||
- The scheduler now more carefully creates and removes configuration,
|
||||
cache, and state files (STR #3715)
|
||||
- The lpadmin command now allows default option values to be deleted
|
||||
(STR #2959)
|
||||
- The lpadmin command now allows the cupsIPPSupplies and
|
||||
cupsSNMPSupplies keywords to be set in a PPD file (STR #3825)
|
||||
- Moving a held job no longer releases it (STR #3839)
|
||||
- Restored support for GNU TLS and OpenSSL with threading enabled
|
||||
(STR #3605)
|
||||
- Fixed a confusing error message from cups-polld (STR #3806)
|
||||
- Increased the default RIPCache value to 128MB (STR #3535)
|
||||
- MIME errors are now routed to the error_log file (STR #2410)
|
||||
- Updated PDF filter to support new Ghostscript ps2write device
|
||||
(STR #3766)
|
||||
- Updated PDF filter to support new Poppler option to preserve page
|
||||
sizes in PDF files when the user has not selected a particular media
|
||||
size (STR #3689)
|
||||
- Added new PWG Raster filter for IPP Everywhere printer support.
|
||||
- Added job-uuid, printer-uuid, and subscription-uuid attributes.
|
||||
- Added support for the cupsSingleFile PPD keyword.
|
||||
- Dropped support for the printer-state-history attribute (STR #3654)
|
||||
- Added support for a new cupsIPPSupplies keyword in PPD files to allow
|
||||
drivers to disable IPP supply level reporting.
|
||||
- Added support for a new cupsFilter2 keyword in PPD files to allow for
|
||||
the propagation of the actual MIME media type produced by a filter.
|
||||
- The scheduler did not always get the correct Kerberos username when
|
||||
authenticating (STR #3670)
|
||||
- Added new cupsRasterOpenIO function and CUPS_RASTER_WRITE_PWG to the
|
||||
CUPS imaging library to support printing to IPP Everywhere raster
|
||||
printers.
|
||||
- The scheduler now provides default values for the pages-per-minute and
|
||||
pages-per-minute-color attributes for PPD files that lack a
|
||||
Throughput keyword.
|
||||
- Email notifications did not work on Mac OS X.
|
||||
- The cupstestppd program now shows an error for files missing a
|
||||
CloseGroup keyword (STR #3668)
|
||||
- Name resolution errors no longer cause queues to stop (STR #3719,
|
||||
STR #3753)
|
||||
- Added a new cups-exec helper program that applies security profiles
|
||||
to filters, port monitors, backends, CGI programs, and mini-daemons.
|
||||
- The web interface can now be disabled using the WebInterface directive
|
||||
in cupsd.conf (STR #2625)
|
||||
- The scheduler now provides privacy controls for jobs and subscriptions
|
||||
(STR #2969)
|
||||
- Added new cupsArrayNew3 API which offers memory management of array
|
||||
elements.
|
||||
- Added several new color spaces to the CUPS raster format (STR #3419)
|
||||
- The Validate-Job operation now uses the same policy as Print-Job by
|
||||
default.
|
||||
- CUPS now uses iconv to implement all of its character encoding
|
||||
support (STR #3097)
|
||||
- The scheduler now implements the Cancel-Jobs, Cancel-My-Jobs, and
|
||||
Close-Job operations along with the job-ids operation attribute from
|
||||
PWG 5100.11.
|
||||
- The main CUPS header (<cups/cups.h>) no longer includes the PPD header
|
||||
(<cups/ppd.h>).
|
||||
- The scheduler and CUPS API now support the print-quality job template
|
||||
attribute.
|
||||
- The scheduler no longer supports the old Mac OS X Server quota
|
||||
plugin.
|
||||
- The scheduler now allows writing to /Users/Shared from print filters
|
||||
on Mac OS X.
|
||||
- CUPS no longer supports the old ~/.cupsrc or ~/.lpoptions files from
|
||||
CUPS 1.1.x. The ~/.cups/client.conf and ~/.cups/lpoptions files that
|
||||
were introduced in CUPS 1.2 must now be used.
|
||||
- The ipptest tool is now a first-class user program and has several
|
||||
improvements along with new documentation (STR #3484)
|
||||
- The cupstestppd tool now warns about non-unique filenames and
|
||||
provides a way to ignore all filename warnings.
|
||||
- Dropped support for the recoverable: and recovered: message prefixes.
|
||||
- The scheduler now requires that filters and backends have group write
|
||||
permissions disabled.
|
||||
- The PPD compiler now checks for overlapping filenames when writing
|
||||
PPD files.
|
||||
- The HP-GL/2 filter is no longer included with CUPS (STR #3322)
|
||||
- The SCSI backend is no longer included with CUPS (STR #3500)
|
||||
@@ -1,242 +0,0 @@
|
||||
CHANGES-1.6.txt
|
||||
---------------
|
||||
|
||||
CHANGES IN CUPS V1.6.4
|
||||
|
||||
- The IPP backend did not add the "last-document" attribute
|
||||
(<rdar://problem/114660379>)
|
||||
- Added a SyncOnClose directive to cups-files.conf to force cupsd to
|
||||
call fsync before closing any configuration/state files it writes
|
||||
(<rdar://problem/14523043>)
|
||||
- Added USB quirk rule for Lexmark E238 (<rdar://problem/14493054>)
|
||||
- Closed server connections were still not always detected
|
||||
(<rdar://problem/14484313>)
|
||||
- The libusb-based USB backend now loads its list of quirks from files
|
||||
in /usr/share/cups/usb instead of using a hardcoded table
|
||||
(<rdar://problem/14442769>)
|
||||
- The scheduler did not properly register ICC color profiles with
|
||||
colord (<rdar://problem/14455625>)
|
||||
|
||||
|
||||
CHANGES IN CUPS V1.6.3
|
||||
|
||||
- The configure script now prefers Clang over GCC.
|
||||
- Fixed a compile problem on AIX (STR #4307)
|
||||
- The default IPP version did not always get set before creating a new
|
||||
IPP request message (<rdar://problem/14401718>)
|
||||
- The lp, lpq, lpr, and lpstat now display an error message advising the
|
||||
use of the /version=1.1 ServerName option (<rdar://problem/14290628>)
|
||||
- Added documentation about the /version=1.1 option to ServerName in
|
||||
client.conf (<rdar://problem/14216262>)
|
||||
- httpStatus(HTTP_ERROR) did not return a useful error message
|
||||
(<rdar://problem/14217326>)
|
||||
- The lp, lpq, lpr, and lpstat commands incorrectly ignored the default
|
||||
printer set in the lpoptions file (<rdar://problem/14216472>)
|
||||
- Fixed a URI encoding issue for hostnames containing the ` (backquote)
|
||||
character (<rdar://problem/14243133>)
|
||||
- Added support for RFC 6874's IPv6 link local address format in URIs
|
||||
(<rdar://problem/13979453>)
|
||||
- The USB backend could crash on libusb-based systems if USB was
|
||||
disabled in the BIOS (<rdar://problem/13875729>)
|
||||
- Fixed a rounding error in the PWG media size mapping code
|
||||
(<rdar://problem/13493241>)
|
||||
- Fixed several ipptool test files that used old STATUS names.
|
||||
- Kerberos credentials could get truncated when printing to a shared
|
||||
printer.
|
||||
- Printing using "ipps" URIs was not encrypted.
|
||||
- Insecure ICC profiles prevented installation of user profiles for a
|
||||
printer on OS X.
|
||||
- Added more USB quirks for the libusb-based backend (STR #4311,
|
||||
<rdar://problem/13736470>)
|
||||
- The Russian web interface templates were broken (STR #4310)
|
||||
- The scheduler no longer tries to do Kerberos authentication over the
|
||||
loopback interface.
|
||||
- The IPP backend could fail to pause a job for authentication
|
||||
(STR #4298)
|
||||
- Fixed a regression on the handling of auth keys on OS X if the
|
||||
cups-files.conf was not present or did not contain a SystemAuthKey
|
||||
value.
|
||||
- The scheduler incorrectly did a reverse lookup of the server address
|
||||
when HostNameLookups was turned off (STR #4302)
|
||||
- The scheduler incorrectly computed the final content type value when
|
||||
null filters were present.
|
||||
|
||||
|
||||
CHANGES IN CUPS V1.6.2
|
||||
|
||||
- Documentation fixes (STR #4229, STR #4239, STR #4234, STR #4248,
|
||||
STR #4259)
|
||||
- Security: All file, directory, user, and group settings are now stored
|
||||
in a separate cups-files.conf configuration file that cannot be set
|
||||
through the CUPS web interface or APIs (STR #4223)
|
||||
- Added a Czech localization (STR #4201)
|
||||
- Added a French localization (STR #4247)
|
||||
- Added a Russian localization (STR #4228, STR #4285)
|
||||
- Updated the Catalan localization (STR #4202)
|
||||
- Local certificate authentication did not guard against an empty
|
||||
certification file (STR #4293)
|
||||
- The scheduler did not reject device URIs with spaces.
|
||||
- Added USB quirk rule for Epson Stylus Photo 750 (STR #4286)
|
||||
- The IPP backend could crash if the printer disconnects early
|
||||
(STR #4284)
|
||||
- cupsGetPPD did not work with statically-configured CUPS shared
|
||||
queues (STR #4178)
|
||||
- The scheduler did not support long MIME media types (STR #4270)
|
||||
- The cupsfilter command did not set the CHARSET environment variable
|
||||
for the text filters (STR #4273)
|
||||
- The lp command did not show errors for unknown "--foo" (STR #4261)
|
||||
- Bad IPP responses could crash ipptool (STR #4262)
|
||||
- Updated USB quirk rules for Canon and Xerox printers (STR #4217,
|
||||
STR #4263)
|
||||
- Added USB blacklisting for printers that require a custom backend
|
||||
(STR #4218)
|
||||
- The PPD compiler did not correctly JCL options (STR #4115, STR #4203)
|
||||
- The ipptool program now supports DEFINE-MATCH and DEFINE-NO-MATCH
|
||||
predicates for STATUS directives.
|
||||
- Fixed a problem with local Kerberos authentication (STR #4140)
|
||||
- Coverity scan: fixed some minor issues (STR #4242)
|
||||
- The scheduler did not remove color profiles after deleting a printer
|
||||
(STR #4232, STR #4276)
|
||||
- The CUPS library did not always detect a timed out connection to the
|
||||
server which could cause temporary loss of printing from applications
|
||||
(STR #4187)
|
||||
- The ipptool program now supports variable substitution in OPERATION
|
||||
and DELAY directives (STR #4175)
|
||||
- The IPP backend now stops queues when the server configuration
|
||||
prevents successful job submission (STR #4125)
|
||||
- The XML output of ipptool contained empty dictionaries (STR #4136)
|
||||
- The scheduler did not delete job control backup files (STR #4244)
|
||||
- cupsGetPPD3 could return a local PPD instead of the correct remote
|
||||
PPD.
|
||||
- The scheduler incorrectly advertised auth-info-required for local
|
||||
queues needing local authentication (STR #4205)
|
||||
- CUPS 1.6 clients using the ServerName directive in client.conf did not
|
||||
work with CUPS 1.3.x or older servers (STR #4231, STR #4291)
|
||||
- The SNMP backend now tries to work around broken printers that use a
|
||||
newline to separate key/value pairs.
|
||||
- The IPP backend did not send a cancel request to printers when a job
|
||||
was canceled and the printer did not support Create-Job.
|
||||
- Fixed EPM packaging files (STR #4199)
|
||||
- OpenBSD build fix (STR #4195, STR #4196, STR #4197)
|
||||
- The scheduler could crash when using Avahi (STR #4183, STR #4192,
|
||||
STR #4200, STR #4213)
|
||||
- The IPP backend could get stuck in an endless loop on certain network
|
||||
errors (STR #4194)
|
||||
- 32-bit builds failed on Debian (STR #4133)
|
||||
- The scheduler no longer accepts or sends job description attributes.
|
||||
- The IPP backend now works around some conformance issues for broken
|
||||
printers (STR #4190)
|
||||
- cupsBackendReport() now filters out all control characters from the
|
||||
reported 1284 device IDs (STR #4124)
|
||||
- The scheduler no longer allows job-name values that are not valid
|
||||
network Unicode strings (STR #4072)
|
||||
- The web interface did not preserve the order of classes, jobs, or
|
||||
printers (STR #4170)
|
||||
- The network backends now support disabling of SNMP supply level
|
||||
queries via the "snmp" URI option (STR #4106)
|
||||
- The IPP backend did not specify the compression used (STR #4181)
|
||||
- ipptool did not support octetString values.
|
||||
- The scheduler did not recognize dnssd: or ipps: URIs as Bonjour shared
|
||||
queues (STR #4158)
|
||||
- Applications could not get the PPD file for statically-configured
|
||||
Bonjour-shared print queues (STR #4159)
|
||||
- The cupsd.conf file included obsolete browsing directives (STR #4157)
|
||||
- Fixed a USB backend compatibility issue on systems using libusb
|
||||
(STR #4155, STR #4191)
|
||||
- Some Bonjour features were not available on systems with Avahi
|
||||
(STR #4156)
|
||||
- CUPS now includes the port number in the Host: header for HTTP
|
||||
requests.
|
||||
- Fixed REPEAT-MATCH for STATUS and EXPECT - was incorrectly erroring
|
||||
out.
|
||||
|
||||
|
||||
CHANGES IN CUPS V1.6.1
|
||||
|
||||
- Documentation fix (STR #4149)
|
||||
- RPM packaging fixes (STR #4129, #4145)
|
||||
- The Japanese and English web interface headers were swapped
|
||||
(STR #4148)
|
||||
|
||||
|
||||
CHANGES IN CUPS V1.6.0
|
||||
|
||||
- Document changes (STR #4131)
|
||||
- Added new Catalan (STR #4107) and Spanish (STR #4137) localizations.
|
||||
|
||||
|
||||
CHANGES IN CUPS V1.6rc1
|
||||
|
||||
- Added a new Japanese localization (STR #4122)
|
||||
- The SNMP backend no longer exits if it is unable to obtain an IPv6
|
||||
socket (STR #4109)
|
||||
- The LPD backend incorrectly used "localhost" in the control file
|
||||
instead of the current hostname.
|
||||
|
||||
|
||||
CHANGES IN CUPS V1.6b1
|
||||
|
||||
- Documentation updates (STR #3927, STR #3980, STR #4010, STR #4068)
|
||||
- The scheduler now consolidates all PPD updates from filters at the
|
||||
end of the job (STR #4075)
|
||||
- CUPS now supports color management using colord (STR #3808)
|
||||
- CUPS now supports Bonjour using Avahi (STR #3066)
|
||||
- The PreserveJobFiles and PreserveJobHistory directives now support
|
||||
specification of a time interval (STR #3143)
|
||||
- PPD files can now be archived in (gzip'd) tar files to further reduce
|
||||
the disk space used by PPD files (STR #3772)
|
||||
- The network backends now deal with printers that report their levels
|
||||
in percent but do not specify a maximum capacity of 100 (STR #3551)
|
||||
- The network backends now report full/almost-full waste bins in
|
||||
printers along with end-of-life for cleaning pads (STR #4017)
|
||||
- Added a configure option to set the permissions of the installed
|
||||
cupsd (STR #3459)
|
||||
- Added a new WITH-ALL-VALUES directive to ipptool EXPECT predicates
|
||||
(STR #3949)
|
||||
- CUPS now supports a User directive in client.conf and the CUPS_USER
|
||||
environment variable for overriding the default username (STR #3114)
|
||||
- Now set the PJL USERNAME variable as needed (STR #3100)
|
||||
- Added support for usernames and passwords longer than 32 characters
|
||||
(STR #2856)
|
||||
- Added a new MaxHoldTime directive to automatically cancel jobs that
|
||||
have been held indefinitely after a specific number of seconds
|
||||
(STR #2291)
|
||||
- The LPD backend now uses the originating host name when it is not the
|
||||
local system (STR #2053)
|
||||
- CUPS now prefers the suffix "dpcm" when reporting resolution in dots-
|
||||
per-centimeter (STR #4006)
|
||||
- The configure script and build system no longer support building of
|
||||
separate 32-bit and 64-bit libraries.
|
||||
- The "brightness", "columns", "fitplot", "gamma", "hue",
|
||||
"natural-scaling", "penwidth", "position", "ppi", "saturation", and
|
||||
"scaling" options are not longer supported (STR #4010)
|
||||
- The "page-bottom", "page-left", "page-right", "page-top",
|
||||
"prettyprint", and "wrap" options have been deprecated (STR #4010)
|
||||
- The scheduler now reports the standard "number-of-documents" attribute
|
||||
instead of the CUPS-specific "document-count" attribute in
|
||||
job objects.
|
||||
- Added new destination connection and enumeration functions (STR #3924)
|
||||
- Added new option, localization, and job submission functions that do
|
||||
not depend on PPD files (STR #3925)
|
||||
- Added a new MaxJobTime directive for cupsd that specifies the maximum
|
||||
amount of time allowed for a job to complete before it is canceled.
|
||||
- The default password callback now supports passwords up to 127
|
||||
characters.
|
||||
- The scheduler now supports a DefaultAuthType of "auto" to
|
||||
automatically choose between Basic (username/password) and Negotiate
|
||||
(Kerberos) authentication.
|
||||
- cupsSideChannelSNMPGet/Walk now support OIDs and values up to 64k in
|
||||
length.
|
||||
- CUPS no longer supports automatic remote printers or implicit classes
|
||||
via the CUPS, LDAP, or SLP protocols (STR #3922, STR #3923)
|
||||
- The PPD APIs are now deprecated and will be removed in a future
|
||||
version of CUPS (STR #3927)
|
||||
- The default IPP version for requests is now 2.0 (STR #3929)
|
||||
- The IPP APIs no longer expose the ipp_t or ipp_attribute_t structures
|
||||
and instead provide accessor functions (STR #3928)
|
||||
- The scheduler will no longer run programs with group write permission.
|
||||
- The PHP module has been removed (STR #3932)
|
||||
- The bannertops, commandtoescpx, commandtopclx, imagetops,
|
||||
imagetoraster, pdftops, rastertoescpx, rastertopclx, and texttops
|
||||
filters have been removed (STR #3930)
|
||||
- The serial and parallel backends have been removed (STR 3935)
|
||||
@@ -1,162 +0,0 @@
|
||||
CHANGES-IPPTOOL.txt - 2013-07-15
|
||||
--------------------------------
|
||||
|
||||
This file provides a list of changes to the ipptool binary distribution posted
|
||||
on cups.org.
|
||||
|
||||
2013-07-15
|
||||
|
||||
- New ippfind tool now included with ipptool.
|
||||
- Added support for automatically extending the timeout when all of the
|
||||
request data has not yet been written (all platforms but Windows
|
||||
which does not support it...)
|
||||
- Fixed several ipptool test files that used old STATUS names.
|
||||
|
||||
|
||||
2013-04-18
|
||||
|
||||
- Fixed some HTTP issues with authentication and compression.
|
||||
- The IPP/1.1 test file did not allow for sufficient retries when
|
||||
printing.
|
||||
- The IPP/1.1 test file did not allow for empty printer-name values.
|
||||
- The IPP Everywhere test file contained numerous errors.
|
||||
- The color.jpg test file used a progressive mode instead of the
|
||||
baseline JPEG mode.
|
||||
- The IPP/1.1 test file referenced "color.jpeg" instead of "color.jpg".
|
||||
|
||||
|
||||
2013-01-31
|
||||
|
||||
- Added support for DEFINE-MATCH and DEFINE-NO-MATCH as STATUS
|
||||
predicates.
|
||||
- Added support for WITH-VALUE and resolution values.
|
||||
- Added support for SKIP-IF-MISSING (skip test if file is missing)
|
||||
- Added support for octetString values.
|
||||
- Added support for document compression in Print-Job and Send-Document
|
||||
requests.
|
||||
- Fixed REPEAT-MATCH for STATUS and EXPECT - was incorrectly erroring
|
||||
out.
|
||||
- Fixed a bug where bad IPP responses would cause ipptool to crash.
|
||||
|
||||
|
||||
2012-02-28
|
||||
|
||||
- Changed behavior of WITH-VALUES "/regex/" to not require all values to
|
||||
match.
|
||||
- Added WITH-ALL-VALUES directive for EXPECT predicates that require all
|
||||
values to match.
|
||||
- Updated test files to use WITH-ALL-VALUES where necessary.
|
||||
- Updated test files to use new ABNF for media names from PWG Media
|
||||
Names 2.0.
|
||||
|
||||
|
||||
2012-02-06
|
||||
|
||||
- Fixed the packaging of ipptool on Windows (removed unnecessary DLLs)
|
||||
- Fixed an crash in ipptool when mixing DISPLAY with -I and a failed
|
||||
request.
|
||||
- Added a Print-Job test file.
|
||||
- Added a "setdebug" batch file for Windows
|
||||
- Added support for a CUPS_DISABLE_ASYNC_CONNECT environment variable.
|
||||
|
||||
|
||||
2012-01-10
|
||||
|
||||
- Fixed an issue with the IPP/1.1 test file where the "waiting for job
|
||||
completion" test did not work.
|
||||
- The attribute groups out of order error was not shown for the
|
||||
operation-attributes-tag group.
|
||||
|
||||
|
||||
2011-12-02
|
||||
|
||||
- Fixed a truncated XML output bug that would happen for certain errors.
|
||||
- Fixed the order-of-groups tests.
|
||||
- Fixed "WITH-VALUE >N" for rangeOfInteger attributes.
|
||||
- The Windows installer was missing the get-printer-attributes.test
|
||||
file.
|
||||
- The Linux binaries are now compiled for all LSB 4.x-compliant Linux
|
||||
distributions.
|
||||
- The Linux binaries no longer support SSL or TLS.
|
||||
|
||||
|
||||
2011-10-05
|
||||
|
||||
- Fixed a crasher bug that showed up on Windows.
|
||||
- The IPP/1.1 test would hang if the initial Print-Job test failed.
|
||||
- Fixed a typo in the IPP/2.0 test.
|
||||
|
||||
|
||||
2011-10-03
|
||||
|
||||
- Using OF-TYPE with the "no-value" or "unknown" out-of-band value tags
|
||||
now works without special WITH-VALUE strings.
|
||||
- ipptool now shows an error when an attribute appears more than once
|
||||
within the same attribute group.
|
||||
- ipptool did not display attributes as specified by the DISPLAY
|
||||
directive when a test error failed.
|
||||
- Fixed one spot where DEFINE-VALUE was still treated as an error when
|
||||
the EXPECT test failed.
|
||||
- uriScheme values were not displayed properly.
|
||||
- Updated the IPP/1.1 tests to properly validate support for
|
||||
job-hold-until-default and job-hold-until-supported when the Hold-Job
|
||||
operation is supported.
|
||||
- Updated the IPP/1.1 tests to properly check for the various standard
|
||||
media sizes for the printing tests.
|
||||
- Updated the IPP/1.1 tests to accept "no-value" for media-default an
|
||||
orientation-requested-default.
|
||||
- Updated the IPP/1.1 tests to accept "unknown" for job-state.
|
||||
- Updated the IPP/1.1 tests to not perform the bogus URI printing tests
|
||||
unless the "document-uri" variable is defined.
|
||||
- Updated the IPP/2.0 tests to properly validate media-col
|
||||
"media-xxx-supported" attributes.
|
||||
- Updated the IPP/2.2 tests to properly validate media-ready and
|
||||
media-col-ready.
|
||||
|
||||
|
||||
2011-09-28
|
||||
|
||||
- Test output now includes a summary and overall score at the end.
|
||||
- The MATCH-VALUE predicate now correctly deals with a failed EXPECT
|
||||
condition.
|
||||
- The IPP/1.1 test suite now looks for legacy media names and uses them
|
||||
if the corresponding PWG standard names are not present.
|
||||
- The IPP/1.1 test suite now tests the Print-Job+Release-Job when the
|
||||
printer supports the job-hold-until attribute, Hold-Job operation, and
|
||||
Release-Job operation.
|
||||
|
||||
|
||||
2011-09-21
|
||||
|
||||
- Fixes for HTTP chunking, timeout, and encryption issues reported by
|
||||
various users.
|
||||
- Greatly improved IPP tests with added IPP/2.2 tests.
|
||||
- New test documents - 1-page and 4-page mixed A4/Letter PDF/PS and a
|
||||
couple JPEGs.
|
||||
- New REPEAT directives to programmatically repeat tests as needed.
|
||||
|
||||
|
||||
2011-08-16
|
||||
|
||||
- The Windows version no longer requires Visual Studio to be installed.
|
||||
- The Windows version now supports SSL.
|
||||
- Added "ipps" URI support.
|
||||
- Added a new "-T" option.
|
||||
- Added support for fractional seconds for the -i option and DELAY
|
||||
directive.
|
||||
- Added support for authentication.
|
||||
- Added DEFINE-MATCH, DEFINE-NO-MATCH, DEFINE-VALUE, IF-NOT-DEFINED,
|
||||
IGNORE-ERRORS, SKIP-IF-DEFINED, SKIP-IF-NOT-DEFINED,
|
||||
SKIP-PREVIOUS-ERROR directives.
|
||||
- WITH-VALUE now supports variable expansion.
|
||||
- Updated the IPP/1.1 conformance test to skip the "my-jobs different
|
||||
user" test if the printer URI contains a username.
|
||||
- Updated the IPP conformance tests to validate media, media-default,
|
||||
and media-supported values.
|
||||
- No longer error out if a Printer returns a different version number in
|
||||
the response when the request contains the version 0.0.
|
||||
|
||||
|
||||
2010-10-16
|
||||
|
||||
- Initial release of standalone binary.
|
||||
+170
@@ -0,0 +1,170 @@
|
||||
CHANGES - 2.3b6 - 2018-06-05
|
||||
============================
|
||||
|
||||
Changes in CUPS v2.3b6
|
||||
----------------------
|
||||
|
||||
- Fixed a memory leak for some IPP (extension) syntaxes.
|
||||
|
||||
|
||||
Changes in CUPS v2.3b5
|
||||
----------------------
|
||||
|
||||
- The `ipptool` program no longer checks for duplicate attributes when running
|
||||
in list or CSV mode (Issue #5278)
|
||||
- The `cupsCreateJob`, `cupsPrintFile2`, and `cupsPrintFiles2` APIs did not use
|
||||
the supplied HTTP connection (Issue #5288)
|
||||
- Fixed another crash in the scheduler when adding an IPP Everywhere printer
|
||||
(Issue #5290)
|
||||
- Added a workaround for certain web browsers that do not support multiple
|
||||
authentication schemes in a single response header (Issue #5289)
|
||||
- Fixed policy limits containing the `All` operation (Issue #5296)
|
||||
- The scheduler was always restarted after idle-exit with systemd (Issue #5297)
|
||||
- Added a USB quirks rule for the HP LaserJet P1102 (Issue #5310)
|
||||
- The mailto notifier did not wait for the welcome message (Issue #5312)
|
||||
- Fixed a parsing bug in the pstops filter (Issue #5321)
|
||||
- Documentation updates (Issue #5299, Issue #5301, Issue #5306)
|
||||
- Localization updates (Issue #5317)
|
||||
- The scheduler allowed environment variables to be specified in the
|
||||
`cupsd.conf` file (rdar://37836779, rdar://37836995, rdar://37837252,
|
||||
rdar://37837581)
|
||||
- Fax queues did not support pause (p) or wait-for-dialtone (w) characters
|
||||
(rdar://39212256)
|
||||
- The scheduler did not validate notify-recipient-uri values properly
|
||||
(rdar://40068936)
|
||||
- The IPP parser allowed invalid group tags (rdar://40442124)
|
||||
- Fixed a parsing bug in the new authentication code.
|
||||
|
||||
|
||||
Changes in CUPS v2.3b4
|
||||
----------------------
|
||||
|
||||
- NOTICE: Printer drivers are now deprecated (Issue #5270)
|
||||
- Kerberized printing to another CUPS server did not work correctly
|
||||
(Issue #5233)
|
||||
- Fixed printing to some IPP Everywhere printers (Issue #5238)
|
||||
- Fixed installation of filters (Issue #5247)
|
||||
- The scheduler now supports using temporary print queues for older IPP/1.1
|
||||
print queues like those shared by CUPS 1.3 and earlier (Issue #5241)
|
||||
- Star Micronics printers need the "unidir" USB quirk rule (Issue #5251)
|
||||
- Documentation fixes (Issue #5252)
|
||||
- Fixed a compile issue when PAM is not available (Issue #5253)
|
||||
- Label printers supported by the rastertolabel driver don't support SNMP, so
|
||||
don't delay printing to test it (Issue #5256)
|
||||
- The scheduler could crash while adding an IPP Everywhere printer (Issue #5258)
|
||||
- The Lexmark Optra E310 printer needs the "no-reattach" USB quirk rule
|
||||
(Issue #5259)
|
||||
- Systemd did not restart cupsd when configuration changes were made that
|
||||
required a restart (Issue #5263)
|
||||
- The IPP Everywhere PPD generator did not include the `cupsJobPassword`
|
||||
keyword, when supported (Issue #5265)
|
||||
- Fixed an Avahi crash bug in the scheduler (Issue #5268)
|
||||
- Raw print queues are now deprecated (Issue #5269)
|
||||
- Fixed an RPM packaging problem (Issue #5276)
|
||||
- The IPP backend did not properly detect failed PDF prints (rdar://34055474)
|
||||
- TLS connections now properly timeout (rdar://34938533)
|
||||
- Temp files could not be created in some sandboxed applications
|
||||
(rdar://37789645)
|
||||
- The ipptool `--ippserver` option did not encode out-of-band attributes
|
||||
correctly.
|
||||
- Added public `cupsEncodeOption` API for encoding a single option as an IPP
|
||||
attribute.
|
||||
- Removed support for the `-D_PPD_DEPRECATED=""` developer cheat - the PPD API
|
||||
should no longer be used.
|
||||
- Removed support for `-D_IPP_PRIVATE_STRUCTURES=1` developer cheat - the IPP
|
||||
accessor functions should be used instead.
|
||||
|
||||
|
||||
Changes in CUPS v2.3b3
|
||||
----------------------
|
||||
|
||||
- More fixes for printing to old CUPS servers (Issue #5211)
|
||||
- The IPP Everywhere PPD generator did not support deep grayscale or 8-bit per
|
||||
component AdobeRGB (Issue #5227)
|
||||
- Additional changes for the scheduler to substitute default values for invalid
|
||||
job attributes when running in "relaxed conformance" mode (Issue #5229)
|
||||
- Localization changes (Issue #5232, rdar://37068158)
|
||||
- The `cupsCopyDestInfo` function did not work with all print queues
|
||||
(Issue #5235)
|
||||
|
||||
|
||||
Changes in CUPS v2.3b2
|
||||
----------------------
|
||||
|
||||
- Localization changes (Issue #5210)
|
||||
- Build fixes (Issue #5217)
|
||||
- IPP Everywhere PPDs were not localized to English (Issue #5205)
|
||||
- The `cupsGetDests` and `cupsEnumDests` functions no longer filter out local
|
||||
print services like IPP USB devices (Issue #5206)
|
||||
- The `cupsCopyDest` function now correctly copies the `is_default` value
|
||||
(Issue #5208)
|
||||
- Printing to old CUPS servers has been fixed (Issue #5211)
|
||||
- The `ppdInstallableConflict` tested too many constraints (Issue #5213)
|
||||
- All HTTP field values can now be longer than `HTTP_MAX_VALUE` bytes
|
||||
(Issue #5216)
|
||||
- Added a USB quirk rule for Canon MP280 series printers (Issue #5221)
|
||||
- The `cupsRasterWritePixels` function did not correctly swap bytes for some
|
||||
formats (Issue #5225)
|
||||
- Fixed an issue with mapping finishing options (rdar://34250727)
|
||||
- The `ppdLocalizeIPPReason` function incorrectly returned a localized version
|
||||
of "none" (rdar://36566269)
|
||||
- The scheduler did not add ".local" to the default DNS-SD host name when
|
||||
needed.
|
||||
|
||||
|
||||
Changes in CUPS v2.3b1
|
||||
----------------------
|
||||
|
||||
- CUPS is now provided under the Apache License, Version 2.0.
|
||||
- Documentation updates (Issue #4580, Issue #5177, Issue #5192)
|
||||
- The `cupsCopyDestConflicts` function now handles collection attribute
|
||||
("media-col", "finishings-col", etc.) constraints (Issue #4096)
|
||||
- The `lpoptions` command incorrectly saved default options (Issue #4717)
|
||||
- The `lpstat` command now reports when new jobs are being held (Issue #4761)
|
||||
- The `ippfind` command now supports finding printers whose name starts with an
|
||||
underscore (Issue #4833)
|
||||
- The CUPS library now supports the latest HTTP Digest authentication
|
||||
specification including support for SHA-256 (Issue #4862)
|
||||
- The scheduler now supports the "printer-id" attribute (Issue #4868)
|
||||
- No longer support backslash, question mark, or quotes in printer names
|
||||
(Issue #4966)
|
||||
- The scheduler no longer logs pages as they are printed, instead just logging
|
||||
a total of the pages printed at job completion (Issue #4991)
|
||||
- Dropped RSS subscription management from the web interface (Issue #5012)
|
||||
- Bonjour printer sharing now uses the DNS-SD hostname (or ServerName value if
|
||||
none is defined) when registering shared printers on the network (Issue #5071)
|
||||
- The `ipptool` command now supports writing `ippserver` attributes files
|
||||
(Issue #5093)
|
||||
- The `lp` and `lpr` commands now provide better error messages when the default
|
||||
printer cannot be found (Issue #5096)
|
||||
- The `lpadmin` command now provides a better error message when an unsupported
|
||||
System V interface script is used (Issue #5111)
|
||||
- The scheduler did not write out dirty configuration and state files if there
|
||||
were open client connections (Issue #5118)
|
||||
- The `SSLOptions` directive now supports `MinTLS` and `MaxTLS` options to
|
||||
control the minimum and maximum TLS versions that will be allowed,
|
||||
respectively (Issue #5119)
|
||||
- Dropped hard-coded CGI scripting language support (Issue #5124)
|
||||
- The `cupsEnumDests` function did not include options from the lpoptions
|
||||
files (Issue #5144)
|
||||
- Fixed the `ippserver` sample code when threading is disabled or unavailable
|
||||
(Issue #5154)
|
||||
- Added label markup to checkbox and radio button controls in the web interface
|
||||
templates (Issue #5161)
|
||||
- Fixed group validation on OpenBSD (Issue #5166)
|
||||
- Improved IPP Everywhere media support, including a new
|
||||
`cupsAddDestMediaOptions` function (Issue #5167)
|
||||
- IPP Everywhere PPDs now include localizations of printer-specific media types,
|
||||
when available (Issue #5168)
|
||||
- The cups-driverd program incorrectly stopped scanning PPDs as soon as a loop
|
||||
was seen (Issue #5170)
|
||||
- IPP Everywhere PPDs now support IPP job presets (Issue #5179)
|
||||
- IPP Everywhere PPDs now support finishing templates (Issue #5180)
|
||||
- Fixed a journald support bug in the scheduler (Issue #5181)
|
||||
- Fixed PAM module detection and added support for the common PAM definitions
|
||||
(Issue #5185)
|
||||
- The scheduler now substitutes default values for invalid job attributes when
|
||||
running in "relaxed conformance" mode (Issue #5186)
|
||||
- The scheduler did not work with older versions of uClibc (Issue #5188)
|
||||
- The scheduler now generates a strings file for localizing PPD options
|
||||
(Issue #5194)
|
||||
@@ -1,91 +0,0 @@
|
||||
CHANGES.txt - 1.7.0 - 2013-08-01
|
||||
--------------------------------
|
||||
|
||||
CHANGES IN CUPS V1.7.0
|
||||
|
||||
- The scheduler did not respond using the hostname specified by the
|
||||
client (<rdar://problem/14583574>)
|
||||
- Fax queues did not work when shared via Bonjour
|
||||
(<rdar://problem/14498310>)
|
||||
- Error messages from the scheduler were not localized using the
|
||||
language specified in the client's IPP request
|
||||
(<rdar://problem/14128011>)
|
||||
- Added an Italian localization (<rdar://problem/14481578>)
|
||||
- Fixed a couple memory leaks in ippfind that were reported by Clang.
|
||||
- Fixed a compile issue on 64-bit Linux with Clang - need to use the
|
||||
-pie option instead of -Wl,-pie now (<rdar://problem/14480938>)
|
||||
- The ippfind utility reported the wrong port numbers when compiled
|
||||
against Avahi (<rdar://problem/14508324>)
|
||||
- httpGetFd, httpGetFile, httpPutFd, and httpPutFile did not
|
||||
automatically reconnect if the server closed the connecion after the
|
||||
previous response.
|
||||
- Fixed a compile error in libcups (<rdar://problem/14467141>)
|
||||
- The scheduler incorrectly did not pass a FINAL_CONTENT_TYPE
|
||||
environment variable to the filters or backend
|
||||
(<rdar://problem/14355011>)
|
||||
- The cups-exec helper program could fail randomly on OS X due to
|
||||
sandbox violations when closing excess file descriptors
|
||||
(<rdar://problem/14421943>)
|
||||
- The scheduler incorrectly did not use the kqueue interface on OS X.
|
||||
|
||||
|
||||
CHANGES IN CUPS V1.7rc1
|
||||
|
||||
- Printer xxx-default values were not reported by Get-Printer-Attributes
|
||||
or lpoptions (<rdar://problem/14401795>)
|
||||
- Fixed deprecation warnings for many functions on OS X so they are tied
|
||||
to the deployment version when building (<rdar://problem/14210079>)
|
||||
- Fixed a build issue on ARM-based Linux systems - unable to validate
|
||||
va_list arguments.
|
||||
- Added a new ippfind tool for finding IPP printers and other Bonjour
|
||||
services (<rdar://problem/13876199>)
|
||||
- Fixed some issues with conversion of PWG media size names to
|
||||
hundredths of millimeters (<rdar://problem/14065748>)
|
||||
- The IPP backend could crash on OS X when printing to a Kerberized
|
||||
printer (<rdar://problem/14040186>)
|
||||
- The ipptool program now automatically extends timeouts when the
|
||||
output buffer is filled (<rdar://problem/14016099>)
|
||||
- The ipptool program now supports the --help and --version options.
|
||||
- The ipptool program did not continue past include file errors by
|
||||
default (<rdar://problem/13875803>)
|
||||
- The ipptool program now supports FILE-ID and TEST-ID directives and
|
||||
includes their values in its XML output (<rdar://problem/13876038>)
|
||||
- The ipptool program now supports WITH-HOSTNAME, WITH-RESOURCE, and
|
||||
WITH-SCHEME expect predicates to compare the corresponding URI
|
||||
components (<rdar://problem/13876091>)
|
||||
|
||||
|
||||
CHANGES IN CUPS V1.7b1
|
||||
|
||||
- The configure script now supports a --with-rundir option to change
|
||||
the transient run-time state directory from the default to other
|
||||
locations like /run/cups (STR #4306)
|
||||
- The scheduler now supports PPD lookups for classes (STR #4296)
|
||||
- The cupsfilter program did not set the FINAL_CONTENT_TYPE
|
||||
environment variable for filters.
|
||||
- Added a new "-x" option to the cancel command (STR #4103)
|
||||
- Made the PWG media handling APIs public (STR #4267)
|
||||
- Implemented ready media support for the cupsGetDestMediaXxx APIs
|
||||
(STR #4289)
|
||||
- Added new cupsFindDestDefault, cupsFindDestReady, and
|
||||
cupsFindDestSupported APIs (STR #4289)
|
||||
- Added new cupsGetDestMediaByIndex, cupsGetDestMediaCount, and
|
||||
cupsGetDestMediaDefault APIs (STR #4289)
|
||||
- Added new ippGet/SetOctetString APIs for getting and setting an
|
||||
octetString value (STR #4289)
|
||||
- Added new ippCreateRequestedArray API for generating a array of
|
||||
attributes from the requested-attributes attribute.
|
||||
- The ipptool utility now supports compression, conditional tests based
|
||||
on the presence of files, and new DEFINE predicates for STATUS.
|
||||
- Added new IPP APIs for checking values (STR #4167)
|
||||
- Added new IPP APis for adding and setting formatted strings.
|
||||
- Added new HTTP APIs to support basic server functionality via libcups.
|
||||
- The dnssd backend now generates a 1284 device ID as needed (STR #3702)
|
||||
- CUPS now supports compressing and decompressing streamed data
|
||||
(STR #4168)
|
||||
- CUPS now supports higher-level PIN printing, external accounting
|
||||
systems, and "print here" printing environments (STR #4169)
|
||||
- IRIX is no longer a supported operating system (STR #4092)
|
||||
- The PPD compiler now supports JCL options properly (STR #4115)
|
||||
- The web interface now checks whether the web browser has cookies
|
||||
enabled and displays a suitable error message (STR #4141)
|
||||
@@ -0,0 +1,14 @@
|
||||
Contributing to CUPS
|
||||
====================
|
||||
|
||||
CUPS is developed by Apple Inc. and distributed as open source software under
|
||||
the Apache License, Version 2.0. Significant contributions to CUPS must be
|
||||
licensed to Apple using the Apple Contributor Agreement:
|
||||
|
||||
https://www.cups.org/AppleContributorAgreement_2011-03-10.pdf
|
||||
|
||||
Contributions should be submitted as attachments to bug reports on the CUPS web
|
||||
site. Changes to existing source files should be submitted as unified diffs
|
||||
(both Subversion and Git produce this format by default) while new source files
|
||||
should be provided as-is or in an archive. Github pull requests can also be
|
||||
used to submit changes.
|
||||
@@ -1,9 +1,10 @@
|
||||
CREDITS.txt - 2013-07-23
|
||||
------------------------
|
||||
CREDITS - 2017-05-01
|
||||
====================
|
||||
|
||||
Few projects are completed by one person, and CUPS is no exception. We'd
|
||||
like to thank the following individuals for their contributions:
|
||||
Few projects are completed by one person, and CUPS is no exception. We'd like
|
||||
to thank the following individuals for their contributions:
|
||||
|
||||
Niklas 'Nille' Åkerström - Swedish localization.
|
||||
Nathaniel Barbour - Lots of testing and feedback.
|
||||
N. Becker - setsid().
|
||||
Philippe Combes - French localization and buttons script.
|
||||
@@ -17,20 +18,20 @@ like to thank the following individuals for their contributions:
|
||||
Wang Jian - CUPS RPM corrections.
|
||||
Roderick Johnstone - Beta tester of the millenium.
|
||||
Till Kamppeter - Bug fixes, beta testing, evangelism.
|
||||
Iñaki Larrañaga - Basque localization.
|
||||
Kenshi Muto - Japanese localization, patches, and
|
||||
testing.
|
||||
Tomohiro Kato - Japanese localization.
|
||||
Kiko - Bug fixes.
|
||||
Sergey V. Kovalyov - ESP Print Pro and CUPS beta tester.
|
||||
Marek Laane - Estonian translation.
|
||||
Iñaki Larrañaga - Basque localization.
|
||||
Mark Lawrence - Microsoft interoperability testing.
|
||||
Jeff Licquia - Bug fixes, beta testing, evangelism.
|
||||
Jason McMullan - Original CUPS RPM distributions.
|
||||
Àngel Mompó - Catalan localization.
|
||||
Wes Morgan - *BSD fixes.
|
||||
Kenshi Muto - Japanese localization, patches, and
|
||||
testing.
|
||||
Brian Norris - Upstart support.
|
||||
Daniel Nylander - Swedish localization.
|
||||
Niklas 'Nille' Åkerström - Swedish localization.
|
||||
Naruiko Ogasawara - Japanese localization.
|
||||
Giulio Orsero - Bug fixes and testing.
|
||||
Michal Osowiecki - Polish localization.
|
||||
@@ -40,6 +41,7 @@ like to thank the following individuals for their contributions:
|
||||
Petter Reinholdtsen - HP-UX compiler stuff.
|
||||
Juan Pablo González Riopedre - Spanish localization.
|
||||
Giovanni Scafora - Italian localization.
|
||||
Joachim Schwender - German localization.
|
||||
Opher Shachar - Hebrew localization.
|
||||
Stuart Stevens - HP JetDirect IPP information.
|
||||
Andrea Suatoni - IRIX desktop integration and testing.
|
||||
+618
@@ -0,0 +1,618 @@
|
||||
Developing for CUPS
|
||||
===================
|
||||
|
||||
Please see the [Contributing to CUPS](CONTRIBUTING.md) file for information on
|
||||
contributing to the CUPS project.
|
||||
|
||||
|
||||
How To Contact The Developers
|
||||
-----------------------------
|
||||
|
||||
The CUPS mailing lists are the primary means of asking questions and informally
|
||||
discussing issues and feature requests with the CUPS developers and other
|
||||
experienced CUPS users and developers. The "cups" mailing list is intended for
|
||||
CUPS usage questions and new software announcements while the "cups-devel"
|
||||
mailing list provides a forum for CUPS developers and monitoring new bugs.
|
||||
|
||||
|
||||
Interfaces
|
||||
----------
|
||||
|
||||
CUPS interfaces, including the C APIs and command-line arguments, environment
|
||||
variables, configuration files, and output format, are stable across patch
|
||||
versions and are generally backwards-compatible with interfaces used in prior
|
||||
major and minor versions. However, program interfaces such as those used by
|
||||
the scheduler to run filter, port monitor, and backend processes for job
|
||||
processing should only be considered stable from the point of view of a
|
||||
filter, port monitor, or backend. Software that simulates the scheduler in
|
||||
order to run those programs outside of CUPS must necessarily be updated when
|
||||
the corresponding interface is changed in a subsequent CUPS release, otherwise
|
||||
undefined behavior can occur.
|
||||
|
||||
CUPS C APIs starting with an underscore (`_`) are considered to be private to
|
||||
CUPS and are not subject to the normal guarantees of stability between CUPS
|
||||
releases and must never be used in non-CUPS source code. Similarly,
|
||||
configuration and state files written by CUPS are considered private if a
|
||||
corresponding man page is not provided with the CUPS release. Never rely on
|
||||
undocumented files or formats when developing software for CUPS. Always use a
|
||||
published C API to access data stored in a file to avoid compatibility problems
|
||||
in the future.
|
||||
|
||||
|
||||
Build System
|
||||
------------
|
||||
|
||||
The CUPS build system uses GNU autoconf to tailor the library to the local
|
||||
operating system. Project files for the current release of Microsoft Visual
|
||||
Studio are also provided for Microsoft Windows®. To improve portability,
|
||||
makefiles must not make use of features unique to GNU make. See the MAKEFILE
|
||||
GUIDELINES section for a description of the allowed make features and makefile
|
||||
guidelines.
|
||||
|
||||
Additional GNU build programs such as GNU automake and GNU libtool must not be
|
||||
used. GNU automake produces non-portable makefiles which depend on GNU-
|
||||
specific extensions, and GNU libtool is not portable or reliable enough for
|
||||
CUPS.
|
||||
|
||||
|
||||
Version Numbering
|
||||
-----------------
|
||||
|
||||
CUPS uses a three-part version number separated by periods to represent the
|
||||
major, minor, and patch release numbers. Major release numbers indicate large
|
||||
design changes or backwards-incompatible changes to the CUPS API or CUPS
|
||||
Imaging API. Minor release numbers indicate new features and other smaller
|
||||
changes which are backwards-compatible with previous CUPS releases. Patch
|
||||
numbers indicate bug fixes to the previous feature or patch release.
|
||||
|
||||
> Note:
|
||||
>
|
||||
> When we talk about compatibility, we are talking about binary compatibility
|
||||
> for public APIs and output format compatibility for program interfaces.
|
||||
> Changes to configuration file formats or the default behavior of programs
|
||||
> are not generally considered incompatible as the upgrade process can
|
||||
> normally address such changes gracefully.
|
||||
|
||||
Production releases use the plain version numbers:
|
||||
|
||||
MAJOR.MINOR.PATCH
|
||||
1.0.0
|
||||
...
|
||||
1.1.0
|
||||
...
|
||||
1.1.23
|
||||
...
|
||||
2.0.0
|
||||
...
|
||||
2.1.0
|
||||
2.1.1
|
||||
2.1.2
|
||||
2.1.3
|
||||
|
||||
The first production release in a MAJOR.MINOR series (MAJOR.MINOR.0) is called
|
||||
a feature release. Feature releases are the only releases that may contain new
|
||||
features. Subsequent production releases in a MAJOR.MINOR series may only
|
||||
contain bug fixes.
|
||||
|
||||
Beta-test releases are identified by appending the letter B to the major and
|
||||
minor version numbers followed by the beta release number:
|
||||
|
||||
MAJOR.MINORbNUMBER
|
||||
2.2b1
|
||||
|
||||
Release candidates are identified by appending the letters RC to the major and
|
||||
minor version numbers followed by the release candidate number:
|
||||
|
||||
MAJOR.MINORrcNUMBER
|
||||
2.2rc1
|
||||
|
||||
|
||||
Coding Guidelines
|
||||
-----------------
|
||||
|
||||
Contributed source code must follow the guidelines below. While the examples
|
||||
are for C and C++ source files, source code for other languages should conform
|
||||
to the same guidelines as allowed by the language.
|
||||
|
||||
|
||||
### Source Files
|
||||
|
||||
All source files names must be 16 characters or less in length to ensure
|
||||
compatibility with older UNIX filesystems. Source files containing functions
|
||||
have an extension of ".c" for C and ".cxx" for C++ source files. All other
|
||||
"include" files have an extension of ".h". Tabs are set to 8 characters or
|
||||
columns.
|
||||
|
||||
> Note:
|
||||
>
|
||||
> The ".cxx" extension is used because it is the only common C++ extension
|
||||
> between Linux, macOS, UNIX, and Windows.
|
||||
|
||||
The top of each source file contains a header giving the purpose or nature of
|
||||
the source file and the copyright and licensing notice:
|
||||
|
||||
/*
|
||||
* Description of file contents.
|
||||
*
|
||||
* Copyright 2017 by Apple Inc.
|
||||
*
|
||||
* Licensed under Apache License v2.0. See the file "LICENSE" for more
|
||||
* information.
|
||||
*/
|
||||
|
||||
|
||||
### Header Files
|
||||
|
||||
All public header files must include the "versioning.h" header file, or a header
|
||||
that does so. Function declarations are then "decorated" with the correct
|
||||
`_CUPS_API_major_minor` macro to define its availability based on the build
|
||||
environment, for example:
|
||||
|
||||
extern int cupsDoThis(int foo, int bar) _CUPS_API_2_2;
|
||||
|
||||
Private API header files must be named with the suffix "-private", for example
|
||||
the "cups.h" header file defines all of the public CUPS APIs while the
|
||||
"cups-private.h" header file defines all of the private CUPS APIs as well.
|
||||
Typically a private API header file will include the corresponding public API
|
||||
header file.
|
||||
|
||||
|
||||
### Comments
|
||||
|
||||
All source code utilizes block comments within functions to describe the
|
||||
operations being performed by a group of statements; avoid putting a comment
|
||||
per line unless absolutely necessary, and then consider refactoring the code
|
||||
so that it is not necessary. C source files use the block comment format
|
||||
("/* comment */") since many vendor C compilers still do not support C99/C++
|
||||
comments ("// comment"):
|
||||
|
||||
/*
|
||||
* Clear the state array before we begin...
|
||||
*/
|
||||
|
||||
for (i = 0; i < (sizeof(array) / sizeof(sizeof(array[0])); i ++)
|
||||
array[i] = CUPS_STATE_IDLE;
|
||||
|
||||
/*
|
||||
* Wait for state changes on another thread...
|
||||
*/
|
||||
|
||||
do
|
||||
{
|
||||
for (i = 0; i < (sizeof(array) / sizeof(sizeof(array[0])); i ++)
|
||||
if (array[i] != CUPS_STATE_IDLE)
|
||||
break;
|
||||
|
||||
if (i == (sizeof(array) / sizeof(array[0])))
|
||||
sleep(1);
|
||||
} while (i == (sizeof(array) / sizeof(array[0])));
|
||||
|
||||
|
||||
### Indentation
|
||||
|
||||
All code blocks enclosed by brackets begin with the opening brace on a new
|
||||
line. The code then follows starting on a new line after the brace and is
|
||||
indented 2 spaces. The closing brace is then placed on a new line following
|
||||
the code at the original indentation:
|
||||
|
||||
{
|
||||
int i; /* Looping var */
|
||||
|
||||
/*
|
||||
* Process foobar values from 0 to 999...
|
||||
*/
|
||||
|
||||
for (i = 0; i < 1000; i ++)
|
||||
{
|
||||
do_this(i);
|
||||
do_that(i);
|
||||
}
|
||||
}
|
||||
|
||||
Single-line statements following "do", "else", "for", "if", and "while" are
|
||||
indented 2 spaces as well. Blocks of code in a "switch" block are indented 4
|
||||
spaces after each "case" and "default" case:
|
||||
|
||||
switch (array[i])
|
||||
{
|
||||
case CUPS_STATE_IDLE :
|
||||
do_this(i);
|
||||
do_that(i);
|
||||
break;
|
||||
|
||||
default :
|
||||
do_nothing(i);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
### Spacing
|
||||
|
||||
A space follows each reserved word such as `if`, `while`, etc. Spaces are not
|
||||
inserted between a function name and the arguments in parenthesis.
|
||||
|
||||
|
||||
### Return Values
|
||||
|
||||
Parenthesis surround values returned from a function:
|
||||
|
||||
return (CUPS_STATE_IDLE);
|
||||
|
||||
|
||||
### Functions
|
||||
|
||||
Functions with a global scope have a lowercase prefix followed by capitalized
|
||||
words, e.g., `cupsDoThis`, `cupsDoThat`, `cupsDoSomethingElse`, etc. Private
|
||||
global functions begin with a leading underscore, e.g., `_cupsDoThis`,
|
||||
`_cupsDoThat`, etc.
|
||||
|
||||
Functions with a local scope are declared static with lowercase names and
|
||||
underscores between words, e.g., `do_this`, `do_that`, `do_something_else`, etc.
|
||||
|
||||
Each function begins with a comment header describing what the function does,
|
||||
the possible input limits (if any), the possible output values (if any), and
|
||||
any special information needed:
|
||||
|
||||
/*
|
||||
* 'do_this()' - Compute y = this(x).
|
||||
*
|
||||
* Notes: none.
|
||||
*/
|
||||
|
||||
static float /* O - Inverse power value, 0.0 <= y <= 1.1 */
|
||||
do_this(float x) /* I - Power value (0.0 <= x <= 1.1) */
|
||||
{
|
||||
...
|
||||
return (y);
|
||||
}
|
||||
|
||||
Return/output values are indicated using an "O" prefix, input values are
|
||||
indicated using the "I" prefix, and values that are both input and output use
|
||||
the "IO" prefix for the corresponding in-line comment.
|
||||
|
||||
The Mini-XML documentation generator also understands the following special
|
||||
text in the function description comment:
|
||||
|
||||
@deprecated@ - Marks the function as deprecated (not recommended
|
||||
for new development and scheduled for removal)
|
||||
@since CUPS version@ - Marks the function as new in the specified version
|
||||
of CUPS.
|
||||
@private@ - Marks the function as private (same as starting the
|
||||
function name with an underscore)
|
||||
|
||||
|
||||
### Variables
|
||||
|
||||
Variables with a global scope are capitalized, e.g., `ThisVariable`,
|
||||
`ThatVariable`, `ThisStateVariable`, etc. Globals in CUPS libraries are either
|
||||
part of the per-thread global values managed by the `_cupsGlobals` function
|
||||
or are suitably protected for concurrent access. Global variables should be
|
||||
replaced by function arguments whenever possible.
|
||||
|
||||
Variables with a local scope are lowercase with underscores between words,
|
||||
e.g., `this_variable`, `that_variable`, etc. Any "local global" variables
|
||||
shared by functions within a source file are declared static. As for global
|
||||
variables, local static variables are suitably protected for concurrent access.
|
||||
|
||||
Each variable is declared on a separate line and is immediately followed by a
|
||||
comment block describing the variable:
|
||||
|
||||
int ThisVariable; /* The current state of this */
|
||||
static int that_variable; /* The current state of that */
|
||||
|
||||
|
||||
### Types
|
||||
|
||||
All type names are lowercase with underscores between words and `_t` appended
|
||||
to the end of the name, e.g., `cups_this_type_t`, `cups_that_type_t`, etc.
|
||||
Type names start with a prefix, typically `cups` or the name of the program,
|
||||
to avoid conflicts with system types. Private type names start with an
|
||||
underscore, e.g., `_cups_this_t`, `_cups_that_t`, etc.
|
||||
|
||||
Each type has a comment block immediately after the typedef:
|
||||
|
||||
typedef int cups_this_type_t; /* This type is for CUPS foobar options. */
|
||||
|
||||
|
||||
### Structures
|
||||
|
||||
All structure names are lowercase with underscores between words and `_s`
|
||||
appended to the end of the name, e.g., `cups_this_s`, `cups_that_s`, etc.
|
||||
Structure names start with a prefix, typically `cups` or the name of the
|
||||
program, to avoid conflicts with system types. Private structure names start
|
||||
with an underscore, e.g., `_cups_this_s`, `_cups_that_s`, etc.
|
||||
|
||||
Each structure has a comment block immediately after the struct and each member
|
||||
is documented similar to the variable naming policy above:
|
||||
|
||||
struct cups_this_struct_s /* This structure is for CUPS foobar options. */
|
||||
{
|
||||
int this_member; /* Current state for this */
|
||||
int that_member; /* Current state for that */
|
||||
};
|
||||
|
||||
|
||||
### Constants
|
||||
|
||||
All constant names are uppercase with underscores between words, e.g.,
|
||||
`CUPS_THIS_CONSTANT`, `CUPS_THAT_CONSTANT`, etc. Constants begin with an
|
||||
uppercase prefix, typically `CUPS_` or the program or type name. Private
|
||||
constants start with an underscore, e.g., `_CUPS_THIS_CONSTANT`,
|
||||
`_CUPS_THAT_CONSTANT`, etc.
|
||||
|
||||
Typed enumerations should be used whenever possible to allow for type checking
|
||||
by the compiler.
|
||||
|
||||
Comment blocks immediately follow each constant:
|
||||
|
||||
typedef enum cups_tray_e /* Tray enumerations */
|
||||
{
|
||||
CUPS_TRAY_THIS, /* This tray */
|
||||
CUPS_TRAY_THAT /* That tray */
|
||||
} cups_tray_t;
|
||||
|
||||
|
||||
## Makefile Guidelines
|
||||
|
||||
The following is a guide to the makefile-based build system used by CUPS.
|
||||
These standards have been developed over the years to allow CUPS to be built on
|
||||
as many systems and environments as possible.
|
||||
|
||||
|
||||
### General Organization
|
||||
|
||||
The CUPS source code is organized functionally into a top-level makefile,
|
||||
include file, and subdirectories each with their own makefile and dependencies
|
||||
files. The ".in" files are template files for the autoconf software and are
|
||||
used to generate a static version of the corresponding file.
|
||||
|
||||
|
||||
### Makefile Documentation
|
||||
|
||||
Each makefile starts with the standard CUPS header containing the description
|
||||
of the file, and CUPS copyright and license notice:
|
||||
|
||||
#
|
||||
# Makefile for ...
|
||||
#
|
||||
# Copyright 2017 by Apple Inc.
|
||||
#
|
||||
# Licensed under Apache License v2.0. See the file "LICENSE" for more
|
||||
# information.
|
||||
#
|
||||
|
||||
|
||||
### Portable Makefile Construction
|
||||
|
||||
CUPS uses a common subset of make program syntax to ensure that the software
|
||||
can be compiled "out of the box" on as many systems as possible. The following
|
||||
is a list of assumptions we follow when constructing makefiles:
|
||||
|
||||
- Targets; we assume that the make program supports the notion of simple
|
||||
targets of the form "name:" that perform tab-indented commands that follow
|
||||
the target, e.g.:
|
||||
|
||||
target:
|
||||
TAB target commands
|
||||
|
||||
- Dependencies; we assume that the make program supports recursive dependencies
|
||||
on targets, e.g.:
|
||||
|
||||
target: foo bar
|
||||
TAB target commands
|
||||
|
||||
foo: bla
|
||||
TAB foo commands
|
||||
|
||||
bar:
|
||||
TAB bar commands
|
||||
|
||||
bla:
|
||||
TAB bla commands
|
||||
|
||||
- Variable Definition; we assume that the make program supports variable
|
||||
definition on the command-line or in the makefile using the following form:
|
||||
|
||||
name=value
|
||||
|
||||
- Variable Substitution; we assume that the make program supports variable
|
||||
substitution using the following forms:
|
||||
|
||||
- `$(name)`; substitutes the value of "name",
|
||||
- `$(name:.old=.new)`; substitutes the value of "name" with the filename
|
||||
extension ".old" changed to ".new",
|
||||
- `$(MAKEFLAGS)`; substitutes the command-line options passed to the
|
||||
program without the leading hyphen (-),
|
||||
- `$$`; substitutes a single $ character,
|
||||
- `$<`; substitutes the current source file or dependency, and
|
||||
- `$@`; substitutes the current target name.
|
||||
|
||||
- Suffixes; we assume that the make program supports filename suffixes with
|
||||
assumed dependencies, e.g.:
|
||||
|
||||
.SUFFIXES: .c .o
|
||||
.c.o:
|
||||
TAB $(CC) $(CFLAGS) -o $@ -c $<
|
||||
|
||||
- Include Files; we assume that the make program supports the include
|
||||
directive, e.g.:
|
||||
|
||||
include ../Makedefs
|
||||
include Dependencies
|
||||
|
||||
- Comments; we assume that comments begin with a # character and proceed to the
|
||||
end of the current line.
|
||||
|
||||
- Line Length; we assume that there is no practical limit to the length of
|
||||
lines.
|
||||
|
||||
- Continuation of long lines; we assume that the `\` character may be placed at
|
||||
the end of a line to concatenate two or more lines in a makefile to form a
|
||||
single long line.
|
||||
|
||||
- Shell; we assume a POSIX-compatible shell is present on the build system.
|
||||
|
||||
|
||||
### Standard Variables
|
||||
|
||||
The following variables are defined in the "Makedefs" file generated by the
|
||||
autoconf software:
|
||||
|
||||
- `ALL_CFLAGS`; the combined C compiler options,
|
||||
- `ALL_CXXFLAGS`; the combined C++ compiler options,
|
||||
- `AMANDIR`; the administrative man page installation directory (section 8/1m
|
||||
depending on the platform),
|
||||
- `AR`; the library archiver command,
|
||||
- `ARFLAGS`; options for the library archiver command,
|
||||
- `AWK`; the local awk command,
|
||||
- `BINDIR`; the binary installation directory,
|
||||
- `BUILDROOT`; optional installation prefix (defaults to DSTROOT),
|
||||
- `CC`; the C compiler command,
|
||||
- `CFLAGS`; options for the C compiler command,
|
||||
- `CHMOD`; the chmod command,
|
||||
- `CXX`; the C++ compiler command,
|
||||
- `CXXFLAGS`; options for the C++ compiler command,
|
||||
- `DATADIR`; the data file installation directory,
|
||||
- `DSO`; the C shared library building command,
|
||||
- `DSOXX`; the C++ shared library building command,
|
||||
- `DSOFLAGS`; options for the shared library building command,
|
||||
- `INCLUDEDIR`; the public header file installation directory,
|
||||
- `INSTALL`; the install command,
|
||||
- `INSTALL_BIN`; the program installation command,
|
||||
- `INSTALL_COMPDATA`; the compressed data file installation command,
|
||||
- `INSTALL_CONFIG`; the configuration file installation command,
|
||||
- `INSTALL_DATA`; the data file installation command,
|
||||
- `INSTALL_DIR`; the directory installation command,
|
||||
- `INSTALL_LIB`; the library installation command,
|
||||
- `INSTALL_MAN`; the documentation installation command,
|
||||
- `INSTALL_SCRIPT`; the shell script installation command,
|
||||
- `LD`; the linker command,
|
||||
- `LDFLAGS`; options for the linker,
|
||||
- `LIBDIR`; the library installation directory,
|
||||
- `LIBS`; libraries for all programs,
|
||||
- `LN`; the ln command,
|
||||
- `MAN1EXT`; extension for man pages in section 1,
|
||||
- `MAN3EXT`; extension for man pages in section 3,
|
||||
- `MAN5EXT`; extension for man pages in section 5,
|
||||
- `MAN7EXT`; extension for man pages in section 7,
|
||||
- `MAN8DIR`; subdirectory for man pages in section 8,
|
||||
- `MAN8EXT`; extension for man pages in section 8,
|
||||
- `MANDIR`; the man page installation directory,
|
||||
- `OPTIM`; common compiler optimization options,
|
||||
- `PRIVATEINCLUDE`; the private header file installation directory,
|
||||
- `RM`; the rm command,
|
||||
- `SHELL`; the sh (POSIX shell) command,
|
||||
- `STRIP`; the strip command,
|
||||
- `srcdir`; the source directory.
|
||||
|
||||
|
||||
### Standard Targets
|
||||
|
||||
The following standard targets are defined in each makefile:
|
||||
|
||||
- `all`; creates all target programs, libraries, and documentation files,
|
||||
- `clean`; removes all target programs libraries, documentation files, and object
|
||||
files,
|
||||
- `depend`; generates automatic dependencies for any C or C++ source files (also
|
||||
see "DEPENDENCIES"),
|
||||
- `distclean`; removes autoconf-generated files in addition to those removed by
|
||||
the "clean" target,
|
||||
- `install`; installs all distribution files in their corresponding locations
|
||||
(also see "INSTALL/UNINSTALL SUPPORT"),
|
||||
- `install-data`; installs all data files in their corresponding locations (also
|
||||
see "INSTALL/UNINSTALL SUPPORT"),
|
||||
- `install-exec`; installs all executable files in their corresponding locations
|
||||
(also see "INSTALL/UNINSTALL SUPPORT"),
|
||||
- `install-headers`; installs all include files in their corresponding locations
|
||||
(also see "INSTALL/UNINSTALL SUPPORT"),
|
||||
- `install-libs`; installs all library files in their corresponding locations
|
||||
(also see "INSTALL/UNINSTALL SUPPORT"), and
|
||||
- `uninstall`; removes all distribution files from their corresponding locations
|
||||
(also see "INSTALL/UNINSTALL SUPPORT").
|
||||
|
||||
|
||||
### Object Files
|
||||
|
||||
Object files (the result of compiling a C or C++ source file) have the
|
||||
extension ".o".
|
||||
|
||||
|
||||
### Programs
|
||||
|
||||
Program files are the result of linking object files and libraries together to
|
||||
form an executable file. A typical program target looks like:
|
||||
|
||||
program: $(OBJS)
|
||||
TAB echo Linking $@...
|
||||
TAB $(CC) $(LDFLAGS) -o $@ $(OBJS) $(LIBS)
|
||||
|
||||
### Static Libraries
|
||||
|
||||
Static libraries have a prefix of "lib" and the extension ".a". A typical
|
||||
static library target looks like:
|
||||
|
||||
libname.a: $(OBJECTS)
|
||||
TAB echo Creating $@...
|
||||
TAB $(RM) $@
|
||||
TAB $(AR) $(ARFLAGS) $@ $(OBJECTS)
|
||||
TAB $(RANLIB) $@
|
||||
|
||||
### Shared Libraries
|
||||
|
||||
Shared libraries have a prefix of "lib" and the extension ".dylib" or ".so"
|
||||
depending on the operating system. A typical shared library is composed of
|
||||
several targets that look like:
|
||||
|
||||
libname.so: $(OBJECTS)
|
||||
TAB echo $(DSOCOMMAND) libname.so.$(DSOVERSION) ...
|
||||
TAB $(DSOCOMMAND) libname.so.$(DSOVERSION) $(OBJECTS)
|
||||
TAB $(RM) libname.so libname.so.$(DSOMAJOR)
|
||||
TAB $(LN) libname.so.$(DSOVERSION) libname.so.$(DSOMAJOR)
|
||||
TAB $(LN) libname.so.$(DSOVERSION) libname.so
|
||||
|
||||
libname.dylib: $(OBJECTS)
|
||||
TAB echo $(DSOCOMMAND) libname.$(DSOVERSION).dylib ...
|
||||
TAB $(DSOCOMMAND) libname.$(DSOVERSION).dylib \
|
||||
TAB TAB -install_name $(libdir)/libname.$(DSOMAJOR).dylib \
|
||||
TAB TAB -current_version libname.$(DSOVERSION).dylib \
|
||||
TAB TAB -compatibility_version $(DSOMAJOR).0 \
|
||||
TAB TAB $(OBJECTS) $(LIBS)
|
||||
TAB $(RM) libname.dylib
|
||||
TAB $(RM) libname.$(DSOMAJOR).dylib
|
||||
TAB $(LN) libname.$(DSOVERSION).dylib libname.$(DSOMAJOR).dylib
|
||||
TAB $(LN) libname.$(DSOVERSION).dylib libname.dylib
|
||||
|
||||
### Dependencies
|
||||
|
||||
Static dependencies are expressed in each makefile following the target, for
|
||||
example:
|
||||
|
||||
foo: bar
|
||||
|
||||
Static dependencies are only used when it is not possible to automatically
|
||||
generate them. Automatic dependencies are stored in a file named
|
||||
"Dependencies" and included at the end of the makefile. The following "depend"
|
||||
target rule is used to create the automatic dependencies:
|
||||
|
||||
depend:
|
||||
TAB $(CC) -MM $(ALL_CFLAGS) $(OBJS:.o=.c) >Dependencies
|
||||
|
||||
We regenerate the automatic dependencies on an macOS system and express any
|
||||
non-macOS dependencies statically in the makefile.
|
||||
|
||||
|
||||
### Install/Uninstall Support
|
||||
|
||||
All makefiles contains install and uninstall rules which install or remove the
|
||||
corresponding software. These rules must use the $(BUILDROOT) variable as a
|
||||
prefix to any installation directory so that CUPS can be installed in a
|
||||
temporary location for packaging by programs like rpmbuild.
|
||||
|
||||
The `INSTALL_BIN`, `INSTALL_COMPDATA`, `INSTALL_CONFIG`, `INSTALL_DATA`,
|
||||
`INSTALL_DIR`, `INSTALL_LIB`, `INSTALL_MAN`, and `INSTALL_SCRIPT` variables
|
||||
must be used when installing files so that the proper ownership and permissions
|
||||
are set on the installed files.
|
||||
|
||||
The `$(RANLIB)` command must be run on any static libraries after installation
|
||||
since the symbol table is invalidated when the library is copied on some
|
||||
platforms.
|
||||
+227
@@ -0,0 +1,227 @@
|
||||
INSTALL - CUPS v2.3b5 - 2018-06-05
|
||||
==================================
|
||||
|
||||
This file describes how to compile and install CUPS from source code. For more
|
||||
information on CUPS see the file called "README.md". A complete change log can
|
||||
be found in "CHANGES.md".
|
||||
|
||||
Using CUPS requires additional third-party support software and printer drivers.
|
||||
These are typically included with your operating system distribution. Apple
|
||||
does not endorse or support third-party support software for CUPS.
|
||||
|
||||
> Note: Current versions of macOS DO NOT allow installation to /usr with the
|
||||
> default System Integrity Protection (SIP) settings. In addition, we do not
|
||||
> recommend replacing the CUPS supplied with macOS because:
|
||||
>
|
||||
> a. not all versions of CUPS are compatible with every macOS release,
|
||||
>
|
||||
> b. code signing prevents replacement of system libraries and access to the
|
||||
> system keychain (needed for encrypted printer sharing), and
|
||||
>
|
||||
> c. software updates will often replace parts of your local installation,
|
||||
> potentially rendering your system unusable.
|
||||
>
|
||||
> Apple only supports using the Clang supplied with Xcode to build CUPS on
|
||||
> macOS.
|
||||
|
||||
|
||||
BEFORE YOU BEGIN
|
||||
----------------
|
||||
|
||||
You'll need ANSI-compliant C and C++ compilers, plus a make program and POSIX-
|
||||
compliant shell (/bin/sh). The GNU compiler tools and Bash work well and we
|
||||
have tested the current CUPS code against several versions of GCC with excellent
|
||||
results.
|
||||
|
||||
The makefiles used by the project should work with most versions of make. We've
|
||||
tested them with GNU make as well as the make programs shipped by Compaq, HP,
|
||||
SGI, and Sun. BSD users should use GNU make (gmake) since BSD make does not
|
||||
support "include".
|
||||
|
||||
Besides these tools you'll want ZLIB library for compression support, the GNU
|
||||
TLS library for encryption support on platforms other than iOS, macOS, or
|
||||
Windows, and either MIT (1.6.3 or higher) or Heimdal Kerberos for Kerberos
|
||||
support. CUPS will compile and run without these, however you'll miss out on
|
||||
many of the features provided by CUPS.
|
||||
|
||||
On a stock Ubuntu install, the following command will install the required
|
||||
prerequisites:
|
||||
|
||||
sudo apt-get install autoconf build-essential libavahi-client-dev \
|
||||
libgnutls28-dev libkrb5-dev libnss-mdns libpam-dev \
|
||||
libsystemd-dev libusb-1.0-0-dev zlib1g-dev
|
||||
|
||||
Also, please note that CUPS does not include print filters to support PDF or
|
||||
raster printing. You *must* download GPL Ghostscript and/or the Open Printing
|
||||
CUPS filters package separately to print on operating systems other than macOS.
|
||||
|
||||
|
||||
CONFIGURATION
|
||||
-------------
|
||||
|
||||
CUPS uses GNU autoconf, so you should find the usual "configure" script in the
|
||||
main CUPS source directory. To configure CUPS for your system, type:
|
||||
|
||||
./configure
|
||||
|
||||
The default installation will put the CUPS software in the "/etc", "/usr", and
|
||||
"/var" directories on your system, which will overwrite any existing printing
|
||||
commands on your system. Use the `--prefix` option to install the CUPS software
|
||||
in another location:
|
||||
|
||||
./configure --prefix=/some/directory
|
||||
|
||||
> Note: Current versions of macOS DO NOT allow installation to /usr with the
|
||||
> default System Integrity Protection (SIP) settings.
|
||||
|
||||
To see a complete list of configuration options, use the `--help` option:
|
||||
|
||||
./configure --help
|
||||
|
||||
If any of the dependent libraries are not installed in a system default location
|
||||
(typically "/usr/include" and "/usr/lib") you'll need to set the CFLAGS,
|
||||
CPPFLAGS, CXXFLAGS, DSOFLAGS, and LDFLAGS environment variables prior to running
|
||||
configure:
|
||||
|
||||
setenv CFLAGS "-I/some/directory"
|
||||
setenv CPPFLAGS "-I/some/directory"
|
||||
setenv CXXFLAGS "-I/some/directory"
|
||||
setenv DSOFLAGS "-L/some/directory"
|
||||
setenv LDFLAGS "-L/some/directory"
|
||||
./configure ...
|
||||
|
||||
or:
|
||||
|
||||
CFLAGS="-I/some/directory" \
|
||||
CPPFLAGS="-I/some/directory" \
|
||||
CXXFLAGS="-I/some/directory" \
|
||||
DSOFLAGS="-L/some/directory" \
|
||||
LDFLAGS="-L/some/directory" \
|
||||
./configure ...
|
||||
|
||||
The `--enable-debug` option compiles CUPS with debugging information enabled.
|
||||
Additional debug logging support can be enabled using the
|
||||
`--enable-debug-printfs` option - these debug messages are enabled using the
|
||||
`CUPS_DEBUG_xxx` environment variables at run-time.
|
||||
|
||||
CUPS also includes an extensive set of unit tests that can be used to find and
|
||||
diagnose a variety of common problems - use the "--enable-unit-tests" configure
|
||||
option to run them at build time.
|
||||
|
||||
On macOS, use the `--with-archflags` option to build with the correct set of
|
||||
architectures:
|
||||
|
||||
./configure --with-archflags="-arch i386 -arch x86_64" ...
|
||||
|
||||
Once you have configured things, just type:
|
||||
|
||||
make ENTER
|
||||
|
||||
or if you have FreeBSD, NetBSD, or OpenBSD type:
|
||||
|
||||
gmake ENTER
|
||||
|
||||
to build the software.
|
||||
|
||||
|
||||
TESTING THE SOFTWARE
|
||||
--------------------
|
||||
|
||||
Aside from the built-in unit tests, CUPS includes an automated test framework
|
||||
for testing the entire printing system. To run the tests, just type:
|
||||
|
||||
make check ENTER
|
||||
|
||||
or if you have FreeBSD, NetBSD, or OpenBSD type:
|
||||
|
||||
gmake check ENTER
|
||||
|
||||
The test framework runs a copy of the CUPS scheduler (cupsd) on port 8631 in
|
||||
/tmp/cups-$USER and produces a nice HTML report of the results.
|
||||
|
||||
|
||||
INSTALLING THE SOFTWARE
|
||||
-----------------------
|
||||
|
||||
Once you have built the software you need to install it. The "install" target
|
||||
provides a quick way to install the software on your local system:
|
||||
|
||||
make install ENTER
|
||||
|
||||
or for FreeBSD, NetBSD, or OpenBSD:
|
||||
|
||||
gmake install ENTER
|
||||
|
||||
Use the BUILDROOT variable to install to an alternate root directory:
|
||||
|
||||
make BUILDROOT=/some/other/root/directory install ENTER
|
||||
|
||||
You can also build binary packages that can be installed on other machines using
|
||||
the RPM spec file ("packaging/cups.spec") or EPM list file
|
||||
("packaging/cups.list"). The latter also supports building of binary RPMs, so
|
||||
it may be more convenient to use.
|
||||
|
||||
You can find the RPM software at:
|
||||
|
||||
http://www.rpm.org/
|
||||
|
||||
The EPM software is available at:
|
||||
|
||||
https://michaelrsweet.github.io/epm
|
||||
|
||||
|
||||
CREATING BINARY DISTRIBUTIONS WITH EPM
|
||||
--------------------------------------
|
||||
|
||||
The top level makefile supports generation of many types of binary distributions
|
||||
using EPM. To build a binary distribution type:
|
||||
|
||||
make <format> ENTER
|
||||
|
||||
or
|
||||
|
||||
gmake <format> ENTER
|
||||
|
||||
for FreeBSD, NetBSD, and OpenBSD. The <format> target is one of the following:
|
||||
|
||||
- "epm": Builds a script + tarfile package
|
||||
- "bsd": Builds a *BSD package
|
||||
- "deb": Builds a Debian package
|
||||
- "pkg": Builds a Solaris package
|
||||
- "rpm": Builds a RPM package
|
||||
- "slackware": Build a Slackware package
|
||||
|
||||
|
||||
GETTING DEBUG LOGGING FROM CUPS
|
||||
-------------------------------
|
||||
|
||||
When configured with the `--enable-debug-printfs` option, CUPS compiles in
|
||||
additional debug logging support in the scheduler, CUPS API, and CUPS Imaging
|
||||
API. The following environment variables are used to enable and control debug
|
||||
logging:
|
||||
|
||||
- `CUPS_DEBUG_FILTER`: Specifies a POSIX regular expression to control which
|
||||
messages are logged.
|
||||
- `CUPS_DEBUG_LEVEL`: Specifies a number from 0 to 9 to control the verbosity of
|
||||
the logging. The default level is 1.
|
||||
- `CUPS_DEBUG_LOG`: Specifies a log file to use. Specify the name "-" to send
|
||||
the messages to stderr. Prefix a filename with "+" to append to an existing
|
||||
file. You can include a single "%d" in the filename to embed the current
|
||||
process ID.
|
||||
|
||||
|
||||
REPORTING PROBLEMS
|
||||
------------------
|
||||
|
||||
If you have problems, *read the documentation first*! If the documentation does
|
||||
not solve your problems, please post a message on the users forum at:
|
||||
|
||||
https://www.cups.org/
|
||||
|
||||
Include your operating system and version, compiler and version, and any errors
|
||||
or problems you've run into. The "config.log" file and the output from the
|
||||
configure script and make should also be sent, as it often helps to determine
|
||||
the cause of your problem.
|
||||
|
||||
If you are running a version of Linux, be sure to provide the Linux distribution
|
||||
you have, too.
|
||||
-210
@@ -1,210 +0,0 @@
|
||||
INSTALL - CUPS v1.7.0 - 2013-07-16
|
||||
----------------------------------
|
||||
|
||||
This file describes how to compile and install CUPS from source code. For more
|
||||
information on CUPS see the file called "README.txt". A complete change log can
|
||||
be found in "CHANGES.txt".
|
||||
|
||||
*******************************************************************************
|
||||
*******************************************************************************
|
||||
**** ****
|
||||
**** USING CUPS REQUIRES ADDITIONAL THIRD-PARTY SUPPORT SOFTWARE AND ****
|
||||
**** PRINTER DRIVERS. THESE ARE TYPICALLY INCLUDED WITH YOUR OPERATING ****
|
||||
**** SYSTEM DISTRIBUTION. APPLE DOES NOT ENDORSE OR SUPPORT THIRD-PARTY ****
|
||||
**** SUPPORT SOFTWARE FOR CUPS. ****
|
||||
**** ****
|
||||
*******************************************************************************
|
||||
*******************************************************************************
|
||||
|
||||
|
||||
BEFORE YOU BEGIN
|
||||
|
||||
You'll need ANSI-compliant C and C++ compilers, plus a make program and
|
||||
POSIX-compliant shell (/bin/sh). The GNU compiler tools and Bash work well
|
||||
and we have tested the current CUPS code against several versions of GCC
|
||||
with excellent results.
|
||||
|
||||
The makefiles used by the project should work with most versions of make.
|
||||
We've tested them with GNU make as well as the make programs shipped by
|
||||
Compaq, HP, SGI, and Sun. BSD users should use GNU make (gmake) since BSD
|
||||
make does not support "include".
|
||||
|
||||
Besides these tools you'll want ZLIB library for compression support, the
|
||||
CDSA, GNU TLS, or OpenSSL libraries for encryption support, and either MIT
|
||||
(1.6.3 or higher) or Heimdal Kerberos for Kerberos support. CUPS will
|
||||
compile and run without these, however you'll miss out on many of the
|
||||
features provided by CUPS.
|
||||
|
||||
Also, please note that CUPS does not include print filters to support PDF
|
||||
or raster printing. You *must* download GPL Ghostscript and/or the Open
|
||||
Printing CUPS filters package separately to print on operating systems
|
||||
other than OS X.
|
||||
|
||||
|
||||
COMPILING THE SUBVERSION REPOSITORY CODE
|
||||
|
||||
The CUPS Subversion repository doesn't hold a copy of the pre-built
|
||||
configure script. You'll need to run the GNU autoconf software (2.60 or
|
||||
higher) to create it:
|
||||
|
||||
autoconf
|
||||
|
||||
|
||||
CONFIGURATION
|
||||
|
||||
CUPS uses GNU autoconf, so you should find the usual "configure" script in
|
||||
the main CUPS source directory. To configure CUPS for your system, type:
|
||||
|
||||
./configure
|
||||
|
||||
The default installation will put the CUPS software in the "/etc", "/usr",
|
||||
and "/var" directories on your system, which will overwrite any existing
|
||||
printing commands on your system. Use the "--prefix" option to install the
|
||||
CUPS software in another location:
|
||||
|
||||
./configure --prefix=/some/directory
|
||||
|
||||
To see a complete list of configuration options, use the --help option:
|
||||
|
||||
./configure --help
|
||||
|
||||
If any of the dependent libraries are not installed in a system default
|
||||
location (typically "/usr/include" and "/usr/lib") you'll need to set the
|
||||
CFLAGS, CPPFLAGS, CXXFLAGS, DSOFLAGS, and LDFLAGS environment variables
|
||||
prior to running configure:
|
||||
|
||||
setenv CFLAGS "-I/some/directory"
|
||||
setenv CPPFLAGS "-I/some/directory"
|
||||
setenv CXXFLAGS "-I/some/directory"
|
||||
setenv DSOFLAGS "-L/some/directory"
|
||||
setenv LDFLAGS "-L/some/directory"
|
||||
./configure ...
|
||||
|
||||
or:
|
||||
|
||||
CFLAGS="-I/some/directory" \
|
||||
CPPFLAGS="-I/some/directory" \
|
||||
CXXFLAGS="-I/some/directory" \
|
||||
DSOFLAGS="-L/some/directory" \
|
||||
LDFLAGS="-L/some/directory" \
|
||||
./configure ...
|
||||
|
||||
The "--enable-debug" option compiles CUPS with debugging information
|
||||
enabled. Additional debug logging support can be enabled using the
|
||||
"--enable-debug-printfs" option - these debug messages are enabled using the
|
||||
CUPS_DEBUG_LOG environment variable at run-time.
|
||||
|
||||
CUPS also includes an extensive set of unit tests that can be used to find
|
||||
and diagnose a variety of common problems - use the "--enable-unit-tests"
|
||||
configure option to run them at build time.
|
||||
|
||||
Once you have configured things, just type:
|
||||
|
||||
make ENTER
|
||||
|
||||
or if you have FreeBSD, NetBSD, or OpenBSD type:
|
||||
|
||||
gmake ENTER
|
||||
|
||||
to build the software.
|
||||
|
||||
|
||||
TESTING THE SOFTWARE
|
||||
|
||||
Aside from the built-in unit tests, CUPS includes an automated test
|
||||
framework for testing the entire printing system. To run the tests, just
|
||||
type:
|
||||
|
||||
make check ENTER
|
||||
|
||||
or if you have FreeBSD, NetBSD, or OpenBSD type:
|
||||
|
||||
gmake check ENTER
|
||||
|
||||
The test framework runs a copy of the CUPS scheduler (cupsd) on port 8631
|
||||
in /tmp/cups-$USER and produces a nice HTML report of the results.
|
||||
|
||||
|
||||
INSTALLING THE SOFTWARE
|
||||
|
||||
Once you have built the software you need to install it. The "install"
|
||||
target provides a quick way to install the software on your local system:
|
||||
|
||||
make install ENTER
|
||||
|
||||
or for FreeBSD, NetBSD, or OpenBSD:
|
||||
|
||||
gmake install ENTER
|
||||
|
||||
You can also build binary packages that can be installed on other machines
|
||||
using the RPM spec file ("packaging/cups.spec") or EPM list file
|
||||
("packaging/cups.list"). The latter also supports building of binary RPMs,
|
||||
so it may be more convenient to use.
|
||||
|
||||
You can find the RPM software at:
|
||||
|
||||
http://www.rpm.org/
|
||||
|
||||
The EPM software is available at:
|
||||
|
||||
http://www.msweet.org/
|
||||
|
||||
|
||||
CREATING BINARY DISTRIBUTIONS WITH EPM
|
||||
|
||||
The top level makefile supports generation of many types of binary
|
||||
distributions using EPM. To build a binary distribution type:
|
||||
|
||||
make <format> ENTER
|
||||
|
||||
or
|
||||
|
||||
gmake <format> ENTER
|
||||
|
||||
for FreeBSD, NetBSD, and OpenBSD. The <format> target is one of the
|
||||
following:
|
||||
|
||||
epm - Builds a script + tarfile package
|
||||
aix - Builds an AIX package
|
||||
bsd - Builds a *BSD package
|
||||
deb - Builds a Debian package
|
||||
depot - Builds a HP-UX package (also swinstall)
|
||||
inst - Builds an IRIX package (also tardist)
|
||||
pkg - Builds a Solaris package
|
||||
rpm - Builds a RPM package
|
||||
setld - Build a Tru64 UNIX package
|
||||
slackware - Build a Slackware package
|
||||
swinstall - Build a HP-UX package (also depot)
|
||||
tardist - Builds an IRIX package (also inst)
|
||||
|
||||
|
||||
GETTING DEBUG LOGGING FROM CUPS
|
||||
|
||||
When configured with the "--enable-debug-printfs" option, CUPS compiles in
|
||||
additional debug logging support in the scheduler, CUPS API, and CUPS
|
||||
Imaging API. The following environment variables are used to enable and
|
||||
control debug logging:
|
||||
|
||||
CUPS_DEBUG_FILTER Specifies a POSIX regular expression to control
|
||||
which messages are logged.
|
||||
CUPS_DEBUG_LEVEL Specifies a number from 0 to 9 to control the
|
||||
verbosity of the logging. The default level is 1.
|
||||
CUPS_DEBUG_LOG Specifies a log file to use. Specify the name "-"
|
||||
to send the messages to stderr. Prefix a filename
|
||||
with "+" to append to an existing file.
|
||||
|
||||
|
||||
REPORTING PROBLEMS
|
||||
|
||||
If you have problems, READ THE DOCUMENTATION FIRST! If the documentation
|
||||
does not solve your problems, please post a message on the users forum at:
|
||||
|
||||
http://www.cups.org/
|
||||
|
||||
Include your operating system and version, compiler and version, and any
|
||||
errors or problems you've run into. The "config.log" file and the output
|
||||
from the configure script and make should also be sent, as it often helps to
|
||||
determine the cause of your problem.
|
||||
|
||||
If you are running a version of Linux, be sure to provide the Linux
|
||||
distribution you have, too.
|
||||
-232
@@ -1,232 +0,0 @@
|
||||
IPPTOOL.txt - 2013-07-15
|
||||
------------------------
|
||||
|
||||
See the file CHANGES-IPPTOOL.txt for a list of changes to this software.
|
||||
|
||||
|
||||
INTRODUCTION
|
||||
|
||||
CUPS includes two user programs for IPP printers. The first is called
|
||||
ipptool and can be used to send arbitrary IPP requests to a CUPS server or
|
||||
IPP printer. This tool started life as part of the CUPS automated test
|
||||
suite and has grown to support complex conformance tests and a simple way
|
||||
to query printer, job, and subscription attributes.
|
||||
|
||||
The second program called ippfind that can be used to find IPP printers
|
||||
that have registered themselves using Bonjour (DNS-SD, mDNS, and Zeroconf)
|
||||
and run commands such as ipptool.
|
||||
|
||||
|
||||
READING THE DOCUMENTATION
|
||||
|
||||
Full documentation on the ipptool command can be found in the
|
||||
"man-ipptool.html" and "man-ipptoolfile.html" files; the latter describes
|
||||
the test file format supported by ipptool.
|
||||
|
||||
Full documentation on the ippfind command can be found in the
|
||||
"man-ippfind.html" file.
|
||||
|
||||
|
||||
IPPFIND BASIC USAGE
|
||||
|
||||
The ippfind command can be used to discover IPP printers on your network.
|
||||
For example, the following command prints the printer URI of registered IPP
|
||||
printers:
|
||||
|
||||
ippfind
|
||||
|
||||
To find all color IPP printers, run:
|
||||
|
||||
ippfind --txt-color T
|
||||
|
||||
And to run the IPP Everywhere conformance test file on every registered IPP
|
||||
printer, run the following command:
|
||||
|
||||
ippfind _ipp._tcp,_print --exec ipptool -t '{}' ipp-everywhere.test \;
|
||||
|
||||
|
||||
IPPTOOL BASIC USAGE
|
||||
|
||||
The ipptool command requires a printer URI and one or more "test" files that
|
||||
describe the operations, attributes to display, and expected status and
|
||||
attribute values. Several standard files are included with CUPS, for example
|
||||
to show a list of pending print jobs on a CUPS printer called "myprinter"
|
||||
you'd run:
|
||||
|
||||
ipptool ipp://localhost/printers/myprinter get-jobs.test
|
||||
|
||||
which would produce something like this:
|
||||
|
||||
job-id job-state job-name job-originating-user-name
|
||||
------ ------------ ------------ -------------------------
|
||||
72 pending testfile.pdf msweet
|
||||
73 pending testfile.ps msweet
|
||||
74 pending-held testfile.jpg msweet
|
||||
75 pending-held testfile.txt msweet
|
||||
|
||||
To get output suitable for import into a spreadsheet, use the "-c" (CSV)
|
||||
option:
|
||||
|
||||
ipptool -c ipp://localhost/printers/myprinter get-jobs.test
|
||||
|
||||
which will produce something like this:
|
||||
|
||||
job-id,job-state,job-name,job-originating-user-name
|
||||
72,pending,testfile.pdf,msweet
|
||||
73,pending,testfile.ps,msweet
|
||||
74,pending-held,testfile.jpg,msweet
|
||||
75,pending-held,testfile.txt,msweet
|
||||
|
||||
|
||||
STANDARD TEST FILES
|
||||
|
||||
The following standard test files are included with ipptool:
|
||||
|
||||
create-printer-subscription.test Creates a printer subscription for
|
||||
state change notifications
|
||||
get-completed-jobs.test Shows a list of completed jobs
|
||||
get-jobs.test Shows a list of pending jobs
|
||||
get-notifications.test Shows events for an ippget
|
||||
subscription.
|
||||
get-printer-attributes.test Shows printer attributes
|
||||
get-subscriptions.test Shows a list of subscriptions
|
||||
ipp-1.1.test IPP/1.1 conformance test suite
|
||||
ipp-2.0.test IPP/2.0 conformance test suite
|
||||
ipp-2.1.test IPP/2.1 conformance test suite
|
||||
ipp-2.2.test IPP/2.2 conformance test suite
|
||||
ipp-everywhere.test IPP Everywhere conformance test
|
||||
suite
|
||||
print-job.test Prints a file
|
||||
print-job-deflate.test Prints a file, compressing with
|
||||
deflate.
|
||||
print-job-gzip.test Prints a file, compressing with gzip
|
||||
validate-job.test Validates attributes for a job
|
||||
submission.
|
||||
|
||||
|
||||
CONFORMANCE TESTS
|
||||
|
||||
We provide basic IPP conformance tests for IPP/1.1, IPP/2.0, IPP/2.1,
|
||||
IPP/2.2, and IPP Everywhere. For a given printer URI, the following
|
||||
commands perform tests at each level:
|
||||
|
||||
ipptool -tf filename [options] -I printer-uri ipp-1.1.test
|
||||
ipptool -tf filename [options] -I -V 2.0 printer-uri ipp-2.0.test
|
||||
ipptool -tf filename [options] -I -V 2.1 printer-uri ipp-2.1.test
|
||||
ipptool -tf filename [options] -I -V 2.2 printer-uri ipp-2.2.test
|
||||
|
||||
The filename must use a format supported by the printer; ipptool will guess
|
||||
the MIME media type using the extension, otherwise application/octet stream
|
||||
will be used. The following standard test files are included:
|
||||
|
||||
color.jpg
|
||||
document-a4.pdf
|
||||
document-a4.ps
|
||||
document-letter.pdf
|
||||
document-letter.ps
|
||||
gray.jpg
|
||||
onepage-a4.pdf
|
||||
onepage-a4.ps
|
||||
onepage-letter.pdf
|
||||
onepage-letter.ps
|
||||
testfile.jpg
|
||||
testfile.pcl
|
||||
testfile.pdf
|
||||
testfile.ps
|
||||
testfile.txt
|
||||
|
||||
Useful options include the following:
|
||||
|
||||
-4 Connect using IPv4
|
||||
-6 Connect using IPv6
|
||||
-C Send chunked requests (default)
|
||||
-d name=val Define a variable
|
||||
-E Test IPP with HTTP Upgrade to TLS
|
||||
-L Send requests using the Content-Length header (HTTP/1.0)
|
||||
-S Test IPP over HTTPS (default for ipps: URIs)
|
||||
-T seconds Set a timeout for responses in seconds
|
||||
-v Be verbose, showing all attributes sent and received
|
||||
-X Produce XML (Apple plist) output
|
||||
|
||||
The printer-uri must be a URI supported by the printer using the "ipp" or
|
||||
"ipps" scheme, for example:
|
||||
|
||||
ipp://192.168.0.1/ipp
|
||||
ipps://192.168.0.1/ipp/print
|
||||
|
||||
Print-by-reference (URL) printing can be tested by defining the document-uri
|
||||
variable as a URL, for example:
|
||||
|
||||
ipptool -tf filename -d document-uri=url -I printer-uri ipp-1.1.test
|
||||
|
||||
The standard test files are available on cups.org under the "test"
|
||||
directory, for example:
|
||||
|
||||
ipptool -tf document-a4.pdf \
|
||||
-d document-uri=http://www.cups.org/test/document-a4.pdf \
|
||||
ipp://192.168.0.1/ipp -I -V 2.0 ipp-2.0.test
|
||||
|
||||
The "document" test files contain 4 pages each. Doing the IPP conformance
|
||||
tests will will produce up to 90 pages on various media, depending on the
|
||||
printer.
|
||||
|
||||
|
||||
IPP EVERYWHERE TESTING
|
||||
|
||||
The IPP Everywhere tests use sample PWG raster files available from:
|
||||
|
||||
ftp://ftp.pwg.org/pub/pwg/ipp/examples
|
||||
|
||||
Extract the corresponding ZIP archives into the current directory before
|
||||
running the ipp-everywhere.test file. The test file will attempt to print
|
||||
each PWG Raster file that is supported by the printer being tested - up to
|
||||
372 pages including the 90 pages produced by the regular IPP test suite.
|
||||
|
||||
|
||||
GETTING SUPPORT AND OTHER RESOURCES
|
||||
|
||||
If you have problems, READ THE DOCUMENTATION FIRST! We also provide
|
||||
discussion forums which are available at:
|
||||
|
||||
http://www.cups.org/
|
||||
|
||||
|
||||
REPORTING BUGS
|
||||
|
||||
If you believe you have discovered a bug in ippfind or ipptool, please fill
|
||||
out the bug form at:
|
||||
|
||||
http://www.cups.org/str.php
|
||||
|
||||
Be sure to identify the version of CUPS and ippfind/ipptool (if you
|
||||
downloaded the standalone version) you are using, the printer (if any) and
|
||||
firmware version, and include any files that apply.
|
||||
|
||||
If you downloaded the standalone version of ippfind/ipptool, please also
|
||||
re-run the command with debug logging enabled. Run the following commands
|
||||
on Windows to enable debug logging:
|
||||
|
||||
setdebug.bat
|
||||
|
||||
For Linux and Mac OS X use:
|
||||
|
||||
CUPS_DEBUG_LOG=ipptool.log; export CUPS_DEBUG_LOG
|
||||
CUPS_DEBUG_LEVEL=6; export CUPS_DEBUG_LEVEL
|
||||
|
||||
Then when you run the ippfind or ipptool command a new "ipptool.log" file
|
||||
will be created with detailed information - attach this file to the bug you
|
||||
file as well.
|
||||
|
||||
|
||||
LEGAL STUFF
|
||||
|
||||
CUPS is Copyright 2007-2013 by Apple Inc. CUPS and the CUPS logo are
|
||||
trademarks of Apple Inc.
|
||||
|
||||
The MD5 Digest code is Copyright 1999 Aladdin Enterprises.
|
||||
|
||||
CUPS is provided under the terms of version 2 of the GNU General Public
|
||||
License and GNU Library General Public License. This program is distributed
|
||||
in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
|
||||
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
See the "doc/help/license.html" or "LICENSE.txt" files for more information.
|
||||
+202
@@ -0,0 +1,202 @@
|
||||
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-971
@@ -1,971 +0,0 @@
|
||||
CUPS License Agreement
|
||||
|
||||
Copyright 2007-2012 by Apple Inc.
|
||||
1 Infinite Loop
|
||||
Cupertino, CA 95014 USA
|
||||
|
||||
WWW: http://www.cups.org/
|
||||
|
||||
|
||||
INTRODUCTION
|
||||
|
||||
CUPS(tm) is provided under the GNU General Public License ("GPL")
|
||||
and GNU Library General Public License ("LGPL"), Version 2, with
|
||||
exceptions for Apple operating systems and the OpenSSL toolkit. A
|
||||
copy of the exceptions and licenses follow this introduction.
|
||||
|
||||
The GNU LGPL applies to the CUPS and CUPS Imaging libraries
|
||||
located in the "cups" and "filter" subdirectories of the CUPS
|
||||
source distribution and the files in the "test" subdirectory. The
|
||||
GNU GPL applies to the remainder of the CUPS distribution.
|
||||
|
||||
For those not familiar with the GNU GPL, the license basically
|
||||
allows you to:
|
||||
|
||||
- Use the CUPS software at no charge.
|
||||
- Distribute verbatim copies of the software in source or
|
||||
binary form.
|
||||
- Sell verbatim copies of the software for a media fee, or
|
||||
sell support for the software.
|
||||
|
||||
What this license *does not* allow you to do is make changes or
|
||||
add features to CUPS and then sell a binary distribution without
|
||||
source code. You must provide source for any changes or additions
|
||||
to the software, and all code must be provided under the GPL or
|
||||
LGPL as appropriate. The only exceptions to this are the portions
|
||||
of the CUPS software covered by the Apple operating system
|
||||
license exceptions outlined later in this license agreement.
|
||||
|
||||
The GNU LGPL relaxes the "link-to" restriction, allowing you to
|
||||
develop applications that use the CUPS and CUPS Imaging libraries
|
||||
under other licenses and/or conditions as appropriate for your
|
||||
application, driver, or filter.
|
||||
|
||||
|
||||
LICENSE EXCEPTIONS
|
||||
|
||||
In addition, as the copyright holder of CUPS, Apple Inc. grants
|
||||
the following special exceptions:
|
||||
|
||||
1. Apple Operating System Development License Exception;
|
||||
|
||||
a. Software that is developed by any person or entity
|
||||
for an Apple Operating System ("Apple OS-Developed
|
||||
Software"), including but not limited to Apple and
|
||||
third party printer drivers, filters, and backends
|
||||
for an Apple Operating System, that is linked to the
|
||||
CUPS imaging library or based on any sample filters
|
||||
or backends provided with CUPS shall not be
|
||||
considered to be a derivative work or collective work
|
||||
based on the CUPS program and is exempt from the
|
||||
mandatory source code release clauses of the GNU GPL.
|
||||
You may therefore distribute linked combinations of
|
||||
the CUPS imaging library with Apple OS-Developed
|
||||
Software without releasing the source code of the
|
||||
Apple OS-Developed Software. You may also use sample
|
||||
filters and backends provided with CUPS to develop
|
||||
Apple OS-Developed Software without releasing the
|
||||
source code of the Apple OS-Developed Software.
|
||||
|
||||
b. An Apple Operating System means any operating system
|
||||
software developed and/or marketed by Apple Inc.,
|
||||
including but not limited to all existing releases and
|
||||
versions of Apple's Darwin, OS X, and OS X Server
|
||||
products and all follow-on releases and future
|
||||
versions thereof.
|
||||
|
||||
c. This exception is only available for Apple
|
||||
OS-Developed Software and does not apply to software
|
||||
that is distributed for use on other operating
|
||||
systems.
|
||||
|
||||
d. All CUPS software that falls under this license
|
||||
exception have the following text at the top of each
|
||||
source file:
|
||||
|
||||
This file is subject to the Apple OS-Developed
|
||||
Software exception.
|
||||
|
||||
2. OpenSSL Toolkit License Exception;
|
||||
|
||||
a. Apple Inc. explicitly allows the compilation and
|
||||
distribution of the CUPS software with the OpenSSL
|
||||
Toolkit.
|
||||
|
||||
No developer is required to provide these exceptions in a
|
||||
derived work.
|
||||
|
||||
|
||||
KERBEROS SUPPORT CODE
|
||||
|
||||
The Kerberos support code ("KSC") is copyright 2006 by Jelmer
|
||||
Vernooij and is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the author or Apple Inc. be held
|
||||
liable for any damages arising from the use of the KSC.
|
||||
|
||||
Sources files containing KSC have the following text at the top
|
||||
of each source file:
|
||||
|
||||
This file contains Kerberos support code, copyright 2006 by
|
||||
Jelmer Vernooij.
|
||||
|
||||
The KSC copyright and license apply only to Kerberos-related
|
||||
feature code in CUPS. Such code is typically conditionally
|
||||
compiled based on the present of the HAVE_GSSAPI preprocessor
|
||||
definition.
|
||||
|
||||
Permission is granted to anyone to use the KSC for any purpose,
|
||||
including commercial applications, and to alter it and
|
||||
redistribute it freely, subject to the following restrictions:
|
||||
|
||||
1. The origin of the KSC must not be misrepresented; you
|
||||
must not claim that you wrote the original software. If
|
||||
you use the KSC in a product, an acknowledgment in the
|
||||
product documentation would be appreciated but is not
|
||||
required.
|
||||
|
||||
2. Altered source versions must be plainly marked as such,
|
||||
and must not be misrepresented as being the original
|
||||
software.
|
||||
|
||||
3. This notice may not be removed or altered from any source
|
||||
distribution.
|
||||
|
||||
|
||||
TRADEMARKS
|
||||
|
||||
CUPS and the CUPS logo (the "CUPS Marks") are trademarks of Apple
|
||||
Inc. Apple grants you a non-exclusive and non-transferable right
|
||||
to use the CUPS Marks in any direct port or binary distribution
|
||||
incorporating CUPS software and in any promotional material
|
||||
therefor. You agree that your products will meet the highest
|
||||
levels of quality and integrity for similar goods, not be unlawful,
|
||||
and be developed, manufactured, and distributed in compliance with
|
||||
this license. You will not interfere with Apple's rights in the
|
||||
CUPS Marks, and all use of the CUPS Marks shall inure to the
|
||||
benefit of Apple. This license does not apply to use of the CUPS
|
||||
Marks in a derivative products, which requires prior written
|
||||
permission from Apple Inc.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Library General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
Whether that is true depends on what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
received the program in object code or executable form with such
|
||||
an offer, in accord with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Program by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
Appendix: How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) 19yy <name of author>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
|
||||
Gnomovision version 69, Copyright (C) 19yy name of author
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, the commands you use may
|
||||
be called something other than `show w' and `show c'; they could even be
|
||||
mouse-clicks or menu items--whatever suits your program.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
|
||||
This General Public License does not permit incorporating your program into
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with the
|
||||
library. If this is what you want to do, use the GNU Library General
|
||||
Public License instead of this License.
|
||||
|
||||
GNU LIBRARY GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1991 Free Software Foundation, Inc.
|
||||
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
[This is the first released version of the library GPL. It is
|
||||
numbered 2 because it goes with version 2 of the ordinary GPL.]
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
Licenses are intended to guarantee your freedom to share and change
|
||||
free software--to make sure the software is free for all its users.
|
||||
|
||||
This license, the Library General Public License, applies to some
|
||||
specially designated Free Software Foundation software, and to any
|
||||
other libraries whose authors decide to use it. You can use it for
|
||||
your libraries, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if
|
||||
you distribute copies of the library, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of the library, whether gratis
|
||||
or for a fee, you must give the recipients all the rights that we gave
|
||||
you. You must make sure that they, too, receive or can get the source
|
||||
code. If you link a program with the library, you must provide
|
||||
complete object files to the recipients so that they can relink them
|
||||
with the library, after making changes to the library and recompiling
|
||||
it. And you must show them these terms so they know their rights.
|
||||
|
||||
Our method of protecting your rights has two steps: (1) copyright
|
||||
the library, and (2) offer you this license which gives you legal
|
||||
permission to copy, distribute and/or modify the library.
|
||||
|
||||
Also, for each distributor's protection, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
library. If the library is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original
|
||||
version, so that any problems introduced by others will not reflect on
|
||||
the original authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that companies distributing free
|
||||
software will individually obtain patent licenses, thus in effect
|
||||
transforming the program into proprietary software. To prevent this,
|
||||
we have made it clear that any patent must be licensed for everyone's
|
||||
free use or not licensed at all.
|
||||
|
||||
Most GNU software, including some libraries, is covered by the ordinary
|
||||
GNU General Public License, which was designed for utility programs. This
|
||||
license, the GNU Library General Public License, applies to certain
|
||||
designated libraries. This license is quite different from the ordinary
|
||||
one; be sure to read it in full, and don't assume that anything in it is
|
||||
the same as in the ordinary license.
|
||||
|
||||
The reason we have a separate public license for some libraries is that
|
||||
they blur the distinction we usually make between modifying or adding to a
|
||||
program and simply using it. Linking a program with a library, without
|
||||
changing the library, is in some sense simply using the library, and is
|
||||
analogous to running a utility program or application program. However, in
|
||||
a textual and legal sense, the linked executable is a combined work, a
|
||||
derivative of the original library, and the ordinary General Public License
|
||||
treats it as such.
|
||||
|
||||
Because of this blurred distinction, using the ordinary General
|
||||
Public License for libraries did not effectively promote software
|
||||
sharing, because most developers did not use the libraries. We
|
||||
concluded that weaker conditions might promote sharing better.
|
||||
|
||||
However, unrestricted linking of non-free programs would deprive the
|
||||
users of those programs of all benefit from the free status of the
|
||||
libraries themselves. This Library General Public License is intended to
|
||||
permit developers of non-free programs to use free libraries, while
|
||||
preserving your freedom as a user of such programs to change the free
|
||||
libraries that are incorporated in them. (We have not seen how to achieve
|
||||
this as regards changes in header files, but we have achieved it as regards
|
||||
changes in the actual functions of the Library.) The hope is that this
|
||||
will lead to faster development of free libraries.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow. Pay close attention to the difference between a
|
||||
"work based on the library" and a "work that uses the library". The
|
||||
former contains code derived from the library, while the latter only
|
||||
works together with the library.
|
||||
|
||||
Note that it is possible for a library to be covered by the ordinary
|
||||
General Public License rather than by this special one.
|
||||
|
||||
GNU LIBRARY GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License Agreement applies to any software library which
|
||||
contains a notice placed by the copyright holder or other authorized
|
||||
party saying it may be distributed under the terms of this Library
|
||||
General Public License (also called "this License"). Each licensee is
|
||||
addressed as "you".
|
||||
|
||||
A "library" means a collection of software functions and/or data
|
||||
prepared so as to be conveniently linked with application programs
|
||||
(which use some of those functions and data) to form executables.
|
||||
|
||||
The "Library", below, refers to any such software library or work
|
||||
which has been distributed under these terms. A "work based on the
|
||||
Library" means either the Library or any derivative work under
|
||||
copyright law: that is to say, a work containing the Library or a
|
||||
portion of it, either verbatim or with modifications and/or translated
|
||||
straightforwardly into another language. (Hereinafter, translation is
|
||||
included without limitation in the term "modification".)
|
||||
|
||||
"Source code" for a work means the preferred form of the work for
|
||||
making modifications to it. For a library, complete source code means
|
||||
all the source code for all modules it contains, plus any associated
|
||||
interface definition files, plus the scripts used to control compilation
|
||||
and installation of the library.
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running a program using the Library is not restricted, and output from
|
||||
such a program is covered only if its contents constitute a work based
|
||||
on the Library (independent of the use of the Library in a tool for
|
||||
writing it). Whether that is true depends on what the Library does
|
||||
and what the program that uses the Library does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Library's
|
||||
complete source code as you receive it, in any medium, provided that
|
||||
you conspicuously and appropriately publish on each copy an
|
||||
appropriate copyright notice and disclaimer of warranty; keep intact
|
||||
all the notices that refer to this License and to the absence of any
|
||||
warranty; and distribute a copy of this License along with the
|
||||
Library.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy,
|
||||
and you may at your option offer warranty protection in exchange for a
|
||||
fee.
|
||||
|
||||
2. You may modify your copy or copies of the Library or any portion
|
||||
of it, thus forming a work based on the Library, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) The modified work must itself be a software library.
|
||||
|
||||
b) You must cause the files modified to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
c) You must cause the whole of the work to be licensed at no
|
||||
charge to all third parties under the terms of this License.
|
||||
|
||||
d) If a facility in the modified Library refers to a function or a
|
||||
table of data to be supplied by an application program that uses
|
||||
the facility, other than as an argument passed when the facility
|
||||
is invoked, then you must make a good faith effort to ensure that,
|
||||
in the event an application does not supply such function or
|
||||
table, the facility still operates, and performs whatever part of
|
||||
its purpose remains meaningful.
|
||||
|
||||
(For example, a function in a library to compute square roots has
|
||||
a purpose that is entirely well-defined independent of the
|
||||
application. Therefore, Subsection 2d requires that any
|
||||
application-supplied function or table used by this function must
|
||||
be optional: if the application does not supply it, the square
|
||||
root function must still compute square roots.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Library,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Library, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote
|
||||
it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Library.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Library
|
||||
with the Library (or with a work based on the Library) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may opt to apply the terms of the ordinary GNU General Public
|
||||
License instead of this License to a given copy of the Library. To do
|
||||
this, you must alter all the notices that refer to this License, so
|
||||
that they refer to the ordinary GNU General Public License, version 2,
|
||||
instead of to this License. (If a newer version than version 2 of the
|
||||
ordinary GNU General Public License has appeared, then you can specify
|
||||
that version instead if you wish.) Do not make any other change in
|
||||
these notices.
|
||||
|
||||
Once this change is made in a given copy, it is irreversible for
|
||||
that copy, so the ordinary GNU General Public License applies to all
|
||||
subsequent copies and derivative works made from that copy.
|
||||
|
||||
This option is useful when you wish to copy part of the code of
|
||||
the Library into a program that is not a library.
|
||||
|
||||
4. You may copy and distribute the Library (or a portion or
|
||||
derivative of it, under Section 2) in object code or executable form
|
||||
under the terms of Sections 1 and 2 above provided that you accompany
|
||||
it with the complete corresponding machine-readable source code, which
|
||||
must be distributed under the terms of Sections 1 and 2 above on a
|
||||
medium customarily used for software interchange.
|
||||
|
||||
If distribution of object code is made by offering access to copy
|
||||
from a designated place, then offering equivalent access to copy the
|
||||
source code from the same place satisfies the requirement to
|
||||
distribute the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
5. A program that contains no derivative of any portion of the
|
||||
Library, but is designed to work with the Library by being compiled or
|
||||
linked with it, is called a "work that uses the Library". Such a
|
||||
work, in isolation, is not a derivative work of the Library, and
|
||||
therefore falls outside the scope of this License.
|
||||
|
||||
However, linking a "work that uses the Library" with the Library
|
||||
creates an executable that is a derivative of the Library (because it
|
||||
contains portions of the Library), rather than a "work that uses the
|
||||
library". The executable is therefore covered by this License.
|
||||
Section 6 states terms for distribution of such executables.
|
||||
|
||||
When a "work that uses the Library" uses material from a header file
|
||||
that is part of the Library, the object code for the work may be a
|
||||
derivative work of the Library even though the source code is not.
|
||||
Whether this is true is especially significant if the work can be
|
||||
linked without the Library, or if the work is itself a library. The
|
||||
threshold for this to be true is not precisely defined by law.
|
||||
|
||||
If such an object file uses only numerical parameters, data
|
||||
structure layouts and accessors, and small macros and small inline
|
||||
functions (ten lines or less in length), then the use of the object
|
||||
file is unrestricted, regardless of whether it is legally a derivative
|
||||
work. (Executables containing this object code plus portions of the
|
||||
Library will still fall under Section 6.)
|
||||
|
||||
Otherwise, if the work is a derivative of the Library, you may
|
||||
distribute the object code for the work under the terms of Section 6.
|
||||
Any executables containing that work also fall under Section 6,
|
||||
whether or not they are linked directly with the Library itself.
|
||||
|
||||
6. As an exception to the Sections above, you may also compile or
|
||||
link a "work that uses the Library" with the Library to produce a
|
||||
work containing portions of the Library, and distribute that work
|
||||
under terms of your choice, provided that the terms permit
|
||||
modification of the work for the customer's own use and reverse
|
||||
engineering for debugging such modifications.
|
||||
|
||||
You must give prominent notice with each copy of the work that the
|
||||
Library is used in it and that the Library and its use are covered by
|
||||
this License. You must supply a copy of this License. If the work
|
||||
during execution displays copyright notices, you must include the
|
||||
copyright notice for the Library among them, as well as a reference
|
||||
directing the user to the copy of this License. Also, you must do one
|
||||
of these things:
|
||||
|
||||
a) Accompany the work with the complete corresponding
|
||||
machine-readable source code for the Library including whatever
|
||||
changes were used in the work (which must be distributed under
|
||||
Sections 1 and 2 above); and, if the work is an executable linked
|
||||
with the Library, with the complete machine-readable "work that
|
||||
uses the Library", as object code and/or source code, so that the
|
||||
user can modify the Library and then relink to produce a modified
|
||||
executable containing the modified Library. (It is understood
|
||||
that the user who changes the contents of definitions files in the
|
||||
Library will not necessarily be able to recompile the application
|
||||
to use the modified definitions.)
|
||||
|
||||
b) Accompany the work with a written offer, valid for at
|
||||
least three years, to give the same user the materials
|
||||
specified in Subsection 6a, above, for a charge no more
|
||||
than the cost of performing this distribution.
|
||||
|
||||
c) If distribution of the work is made by offering access to copy
|
||||
from a designated place, offer equivalent access to copy the above
|
||||
specified materials from the same place.
|
||||
|
||||
d) Verify that the user has already received a copy of these
|
||||
materials or that you have already sent this user a copy.
|
||||
|
||||
For an executable, the required form of the "work that uses the
|
||||
Library" must include any data and utility programs needed for
|
||||
reproducing the executable from it. However, as a special exception,
|
||||
the source code distributed need not include anything that is normally
|
||||
distributed (in either source or binary form) with the major
|
||||
components (compiler, kernel, and so on) of the operating system on
|
||||
which the executable runs, unless that component itself accompanies
|
||||
the executable.
|
||||
|
||||
It may happen that this requirement contradicts the license
|
||||
restrictions of other proprietary libraries that do not normally
|
||||
accompany the operating system. Such a contradiction means you cannot
|
||||
use both them and the Library together in an executable that you
|
||||
distribute.
|
||||
|
||||
7. You may place library facilities that are a work based on the
|
||||
Library side-by-side in a single library together with other library
|
||||
facilities not covered by this License, and distribute such a combined
|
||||
library, provided that the separate distribution of the work based on
|
||||
the Library and of the other library facilities is otherwise
|
||||
permitted, and provided that you do these two things:
|
||||
|
||||
a) Accompany the combined library with a copy of the same work
|
||||
based on the Library, uncombined with any other library
|
||||
facilities. This must be distributed under the terms of the
|
||||
Sections above.
|
||||
|
||||
b) Give prominent notice with the combined library of the fact
|
||||
that part of it is a work based on the Library, and explaining
|
||||
where to find the accompanying uncombined form of the same work.
|
||||
|
||||
8. You may not copy, modify, sublicense, link with, or distribute
|
||||
the Library except as expressly provided under this License. Any
|
||||
attempt otherwise to copy, modify, sublicense, link with, or
|
||||
distribute the Library is void, and will automatically terminate your
|
||||
rights under this License. However, parties who have received copies,
|
||||
or rights, from you under this License will not have their licenses
|
||||
terminated so long as such parties remain in full compliance.
|
||||
|
||||
9. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Library or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Library (or any work based on the
|
||||
Library), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Library or works based on it.
|
||||
|
||||
10. Each time you redistribute the Library (or any work based on the
|
||||
Library), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute, link with or modify the Library
|
||||
subject to these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
11. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Library at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Library by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Library.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under any
|
||||
particular circumstance, the balance of the section is intended to apply,
|
||||
and the section as a whole is intended to apply in other circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
12. If the distribution and/or use of the Library is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Library under this License may add
|
||||
an explicit geographical distribution limitation excluding those countries,
|
||||
so that distribution is permitted only in or among countries not thus
|
||||
excluded. In such case, this License incorporates the limitation as if
|
||||
written in the body of this License.
|
||||
|
||||
13. The Free Software Foundation may publish revised and/or new
|
||||
versions of the Library General Public License from time to time.
|
||||
Such new versions will be similar in spirit to the present version,
|
||||
but may differ in detail to address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Library
|
||||
specifies a version number of this License which applies to it and
|
||||
"any later version", you have the option of following the terms and
|
||||
conditions either of that version or of any later version published by
|
||||
the Free Software Foundation. If the Library does not specify a
|
||||
license version number, you may choose any version ever published by
|
||||
the Free Software Foundation.
|
||||
|
||||
14. If you wish to incorporate parts of the Library into other free
|
||||
programs whose distribution conditions are incompatible with these,
|
||||
write to the author to ask for permission. For software which is
|
||||
copyrighted by the Free Software Foundation, write to the Free
|
||||
Software Foundation; we sometimes make exceptions for this. Our
|
||||
decision will be guided by the two goals of preserving the free status
|
||||
of all derivatives of our free software and of promoting the sharing
|
||||
and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
|
||||
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
|
||||
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
|
||||
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
|
||||
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
|
||||
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
|
||||
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
|
||||
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
|
||||
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
|
||||
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
|
||||
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
|
||||
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
|
||||
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
|
||||
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
|
||||
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
|
||||
DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
Appendix: How to Apply These Terms to Your New Libraries
|
||||
|
||||
If you develop a new library, and you want it to be of the greatest
|
||||
possible use to the public, we recommend making it free software that
|
||||
everyone can redistribute and change. You can do so by permitting
|
||||
redistribution under these terms (or, alternatively, under the terms of the
|
||||
ordinary General Public License).
|
||||
|
||||
To apply these terms, attach the following notices to the library. It is
|
||||
safest to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least the
|
||||
"copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the library's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with this library; if not, write to the Free
|
||||
Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the library, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the
|
||||
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1990
|
||||
Ty Coon, President of Vice
|
||||
|
||||
That's all there is to it!
|
||||
+39
-29
@@ -1,17 +1,18 @@
|
||||
#
|
||||
# "$Id$"
|
||||
# Common makefile definitions for CUPS.
|
||||
#
|
||||
# Common makefile definitions for CUPS.
|
||||
# Copyright 2007-2017 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.
|
||||
# Licensed under Apache License v2.0. See the file "LICENSE" for more information.
|
||||
#
|
||||
# These coded instructions, statements, and computer programs are the
|
||||
# property of Apple Inc. and are protected by Federal copyright
|
||||
# law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
# which should have been included with this file. If this file is
|
||||
# file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
|
||||
#
|
||||
# CUPS version...
|
||||
#
|
||||
|
||||
CUPS_VERSION = @CUPS_VERSION@
|
||||
|
||||
|
||||
#
|
||||
# Programs...
|
||||
@@ -19,16 +20,19 @@
|
||||
|
||||
AR = @AR@
|
||||
AWK = @AWK@
|
||||
CC = @LIBTOOL@ @CC@
|
||||
CC = @LIBTOOL_CC@ @CC@
|
||||
CHMOD = @CHMOD@
|
||||
CXX = @LIBTOOL@ @CXX@
|
||||
CXX = @LIBTOOL_CXX@ @CXX@
|
||||
DSO = @DSO@
|
||||
DSOXX = @DSOXX@
|
||||
GZIP = @GZIP@
|
||||
INSTALL = @INSTALL@
|
||||
LD = @LD@
|
||||
LD_CC = @LD_CC@
|
||||
LD_CXX = @LD_CXX@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
LN = @LN@ -sf
|
||||
MKDIR = @MKDIR@ -p
|
||||
MV = @MV@
|
||||
RANLIB = @RANLIB@
|
||||
RM = @RM@ -f
|
||||
@@ -40,14 +44,14 @@ SHELL = /bin/sh
|
||||
# Installation programs...
|
||||
#
|
||||
|
||||
INSTALL_BIN = $(LIBTOOL) $(INSTALL) -c -m 555 @INSTALL_STRIP@
|
||||
INSTALL_BIN = @LIBTOOL_INSTALL@ $(INSTALL) -c -m @CUPS_EXE_FILE_PERM@ @INSTALL_STRIP@
|
||||
INSTALL_COMPDATA = $(INSTALL) -c -m 444 @INSTALL_GZIP@
|
||||
INSTALL_CONFIG = $(INSTALL) -c -m @CUPS_CONFIG_FILE_PERM@
|
||||
INSTALL_DATA = $(INSTALL) -c -m 444
|
||||
INSTALL_DIR = $(INSTALL) -d
|
||||
INSTALL_LIB = $(LIBTOOL) $(INSTALL) -c -m 555 @INSTALL_STRIP@
|
||||
INSTALL_LIB = @LIBTOOL_INSTALL@ $(INSTALL) -c -m @CUPS_EXE_FILE_PERM@ @INSTALL_STRIP@
|
||||
INSTALL_MAN = $(INSTALL) -c -m 444
|
||||
INSTALL_SCRIPT = $(INSTALL) -c -m 555
|
||||
INSTALL_SCRIPT = $(INSTALL) -c -m @CUPS_EXE_FILE_PERM@
|
||||
|
||||
#
|
||||
# Default user, group, and system groups for the scheduler...
|
||||
@@ -74,6 +78,14 @@ LANGUAGES = @LANGUAGES@
|
||||
INSTALL_LANGUAGES = @INSTALL_LANGUAGES@
|
||||
UNINSTALL_LANGUAGES = @UNINSTALL_LANGUAGES@
|
||||
|
||||
#
|
||||
# Cross-compilation support: "local" target is used for any tools that are
|
||||
# built and run locally.
|
||||
#
|
||||
|
||||
LOCALTARGET = @LOCALTARGET@
|
||||
|
||||
|
||||
#
|
||||
# Libraries...
|
||||
#
|
||||
@@ -121,9 +133,9 @@ INSTALLXPC = @INSTALLXPC@
|
||||
#
|
||||
|
||||
ALL_CFLAGS = -I.. -D_CUPS_SOURCE $(CFLAGS) $(SSLFLAGS) \
|
||||
@LARGEFILE@ @PTHREAD_FLAGS@ $(OPTIONS)
|
||||
@LARGEFILE@ @PTHREAD_FLAGS@ $(ONDEMANDFLAGS) $(OPTIONS)
|
||||
ALL_CXXFLAGS = -I.. -D_CUPS_SOURCE $(CXXFLAGS) $(SSLFLAGS) \
|
||||
@LARGEFILE@ @PTHREAD_FLAGS@ $(OPTIONS)
|
||||
@LARGEFILE@ @PTHREAD_FLAGS@ $(ONDEMANDFLAGS) $(OPTIONS)
|
||||
ARCHFLAGS = @ARCHFLAGS@
|
||||
ARFLAGS = @ARFLAGS@
|
||||
BACKLIBS = @BACKLIBS@
|
||||
@@ -140,13 +152,14 @@ 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@ \
|
||||
@LDFLAGS@ @RELROFLAGS@ @PIEFLAGS@ $(OPTIM)
|
||||
LINKCUPS = @LINKCUPS@ $(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) $(LIBZ)
|
||||
LINKCUPS = @LINKCUPS@ $(LIBGSSAPI) $(DNSSDLIBS) $(SSLLIBS) $(LIBZ)
|
||||
LINKCUPSIMAGE = @LINKCUPSIMAGE@
|
||||
LIBS = $(LINKCUPS) $(COMMONLIBS)
|
||||
ONDEMANDFLAGS = @ONDEMANDFLAGS@
|
||||
ONDEMANDLIBS = @ONDEMANDLIBS@
|
||||
OPTIM = @OPTIM@
|
||||
OPTIONS =
|
||||
PAMLIBS = @PAMLIBS@
|
||||
@@ -200,8 +213,6 @@ DATADIR = $(BUILDROOT)@CUPS_DATADIR@
|
||||
DOCDIR = $(BUILDROOT)@CUPS_DOCROOT@
|
||||
ICONDIR = @ICONDIR@
|
||||
INCLUDEDIR = $(BUILDROOT)$(includedir)
|
||||
INITDIR = @INITDIR@
|
||||
INITDDIR = @INITDDIR@
|
||||
LIBDIR = $(BUILDROOT)$(libdir)
|
||||
LOCALEDIR = $(BUILDROOT)@CUPS_LOCALEDIR@
|
||||
LOGDIR = $(BUILDROOT)@CUPS_LOGDIR@
|
||||
@@ -216,10 +227,7 @@ REQUESTS = $(BUILDROOT)@CUPS_REQUESTS@
|
||||
SBINDIR = $(BUILDROOT)@sbindir@
|
||||
SERVERBIN = $(BUILDROOT)@CUPS_SERVERBIN@
|
||||
SERVERROOT = $(BUILDROOT)@CUPS_SERVERROOT@
|
||||
SMFMANIFESTDIR = @SMFMANIFESTDIR@
|
||||
STATEDIR = $(BUILDROOT)@CUPS_STATEDIR@
|
||||
USBQUIRKS = @USBQUIRKS@
|
||||
XINETD = @XINETD@
|
||||
|
||||
MAN1EXT = @MAN1EXT@
|
||||
MAN5EXT = @MAN5EXT@
|
||||
@@ -230,8 +238,15 @@ MAN8DIR = @MAN8DIR@
|
||||
PAMDIR = @PAMDIR@
|
||||
PAMFILE = @PAMFILE@
|
||||
|
||||
DEFAULT_LAUNCHD_CONF = @DEFAULT_LAUNCHD_CONF@
|
||||
DBUSDIR = @DBUSDIR@
|
||||
INITDIR = @INITDIR@
|
||||
INITDDIR = @INITDDIR@
|
||||
LAUNCHD_DIR = @LAUNCHD_DIR@
|
||||
SMFMANIFESTDIR = @SMFMANIFESTDIR@
|
||||
SYSTEMD_DIR = @SYSTEMD_DIR@
|
||||
XINETD = @XINETD@
|
||||
|
||||
USBQUIRKS = @USBQUIRKS@
|
||||
|
||||
|
||||
#
|
||||
@@ -258,8 +273,3 @@ DBUSDIR = @DBUSDIR@
|
||||
echo -n Compressing $<...
|
||||
$(RM) $@
|
||||
gzip -v9 <$< >$@
|
||||
|
||||
|
||||
#
|
||||
# End of "$Id$"
|
||||
#
|
||||
|
||||
+43
-45
@@ -1,16 +1,10 @@
|
||||
#
|
||||
# "$Id$"
|
||||
# Top-level Makefile for CUPS.
|
||||
#
|
||||
# Top-level Makefile for CUPS.
|
||||
# Copyright 2007-2016 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"
|
||||
# which should have been included with this file. If this file is
|
||||
# file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
# Licensed under Apache License v2.0. See the file "LICENSE" for more information.
|
||||
#
|
||||
|
||||
include Makedefs
|
||||
@@ -98,22 +92,18 @@ clean:
|
||||
|
||||
distclean: clean
|
||||
$(RM) Makedefs config.h config.log config.status
|
||||
$(RM) conf/cups-files.conf conf/cupsd.conf conf/mime.convs conf/pam.std conf/snmp.conf
|
||||
$(RM) cups-config
|
||||
$(RM) conf/cupsd.conf conf/mime.convs conf/pam.std conf/snmp.conf
|
||||
$(RM) doc/help/ref-cupsd-conf.html doc/help/standard.html doc/index.html
|
||||
$(RM) man/client.conf.man
|
||||
$(RM) man/cups-deviced.man man/cups-driverd.man
|
||||
$(RM) man/cups-lpd.man man/cupsaddsmb.man man/cupsd.man
|
||||
$(RM) man/cupsd.conf.man man/drv.man man/lpoptions.man
|
||||
$(RM) packaging/cups.list
|
||||
$(RM) packaging/cups-desc.plist packaging/cups-info.plist
|
||||
$(RM) templates/header.tmpl
|
||||
$(RM) data/testprint
|
||||
$(RM) desktop/cups.desktop
|
||||
$(RM) scheduler/cups.sh scheduler/cups-lpd.xinetd
|
||||
$(RM) scheduler/org.cups.cups-lpd.plist scheduler/cups.xml
|
||||
$(RM) doc/index.html
|
||||
$(RM) man/client.conf.man man/cups-files.conf.man man/cups-lpd.man man/cups-snmp.man man/cupsaddsmb.man man/cupsd.conf.man man/cupsd.man man/lpoptions.man
|
||||
$(RM) packaging/cups.list
|
||||
$(RM) scheduler/cups-lpd.xinetd scheduler/cups.sh scheduler/cups.xml scheduler/org.cups.cups-lpd.plist scheduler/org.cups.cups-lpdAT.service scheduler/org.cups.cupsd.path scheduler/org.cups.cupsd.service scheduler/org.cups.cupsd.socket
|
||||
$(RM) templates/header.tmpl
|
||||
-$(RM) doc/*/index.html
|
||||
-$(RM) templates/*/header.tmpl
|
||||
-$(RM) -r autom4te*.cache clang cups/charmaps cups/locale driver/test
|
||||
-$(RM) -r autom4te*.cache clang cups/charmaps cups/locale
|
||||
|
||||
|
||||
#
|
||||
@@ -128,8 +118,14 @@ 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.
|
||||
#
|
||||
# Alternatively, use "--analyze -Xanalyzer -analyzer-output=text" for OPTIM (text
|
||||
# output instead of HTML...)
|
||||
#
|
||||
|
||||
.PHONY: clang clang-changes
|
||||
@@ -140,6 +136,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...
|
||||
#
|
||||
@@ -246,17 +262,11 @@ debugcheck: all unittests
|
||||
#
|
||||
|
||||
apihelp:
|
||||
for dir in cgi-bin cups filter ppdc scheduler; do\
|
||||
for dir in cups filter; do\
|
||||
echo Generating API help in $$dir... ;\
|
||||
(cd $$dir; $(MAKE) $(MFLAGS) apihelp) || exit 1;\
|
||||
done
|
||||
|
||||
framedhelp:
|
||||
for dir in cgi-bin cups filter ppdc scheduler; do\
|
||||
echo Generating framed API help in $$dir... ;\
|
||||
(cd $$dir; $(MAKE) $(MFLAGS) framedhelp) || exit 1;\
|
||||
done
|
||||
|
||||
|
||||
#
|
||||
# Create an Xcode docset using Mini-XML's mxmldoc (http://www.msweet.org/)...
|
||||
@@ -300,22 +310,15 @@ sloc:
|
||||
|
||||
EPMFLAGS = -v --output-dir dist $(EPMARCH)
|
||||
|
||||
aix bsd deb depot inst pkg setld slackware swinstall tardist:
|
||||
bsd deb epm pkg rpm slackware:
|
||||
epm $(EPMFLAGS) -f $@ cups packaging/cups.list
|
||||
|
||||
epm:
|
||||
epm $(EPMFLAGS) -s packaging/installer.gif cups packaging/cups.list
|
||||
|
||||
rpm:
|
||||
epm $(EPMFLAGS) -f rpm -s packaging/installer.gif cups packaging/cups.list
|
||||
|
||||
.PHONEY: dist
|
||||
.PHONY: dist
|
||||
dist: all
|
||||
$(RM) -r dist
|
||||
$(MAKE) $(MFLAGS) epm
|
||||
case `uname` in \
|
||||
*BSD*) $(MAKE) $(MFLAGS) bsd;; \
|
||||
Darwin*) $(MAKE) $(MFLAGS) osx;; \
|
||||
Linux*) test ! -x /usr/bin/rpm || $(MAKE) $(MFLAGS) rpm;; \
|
||||
SunOS*) $(MAKE) $(MFLAGS) pkg;; \
|
||||
esac
|
||||
@@ -326,8 +329,3 @@ dist: all
|
||||
#
|
||||
|
||||
.NOTPARALLEL:
|
||||
|
||||
|
||||
#
|
||||
# End of "$Id$".
|
||||
#
|
||||
|
||||
+34
@@ -0,0 +1,34 @@
|
||||
CUPS
|
||||
|
||||
Copyright © 2007-2018 by Apple Inc.
|
||||
Copyright © 1997-2007 by Easy Software Products.
|
||||
|
||||
CUPS and the CUPS logo are trademarks of Apple Inc.
|
||||
|
||||
The MD5 Digest code is Copyright 1999 Aladdin Enterprises.
|
||||
|
||||
The Kerberos support code ("KSC") is copyright 2006 by Jelmer Vernooij and is
|
||||
provided 'as-is', without any express or implied warranty. In no event will the
|
||||
author or Apple Inc. be held liable for any damages arising from the use of the
|
||||
KSC.
|
||||
|
||||
Sources files containing KSC have the following text at the top of each source
|
||||
file:
|
||||
|
||||
This file contains Kerberos support code, copyright 2006 by Jelmer Vernooij.
|
||||
|
||||
The KSC copyright and license apply only to Kerberos-related feature code in
|
||||
CUPS. Such code is typically conditionally compiled based on the present of the
|
||||
HAVE_GSSAPI preprocessor definition.
|
||||
|
||||
Permission is granted to anyone to use the KSC for any purpose, including
|
||||
commercial applications, and to alter it and redistribute it freely, subject to
|
||||
the following restrictions:
|
||||
|
||||
1. The origin of the KSC must not be misrepresented; you must not claim that
|
||||
you wrote the original software. If you use the KSC in a product, an
|
||||
acknowledgment in the product documentation would be appreciated but is not
|
||||
required.
|
||||
2. Altered source versions must be plainly marked as such, and must not be
|
||||
misrepresented as being the original software.
|
||||
3. This notice may not be removed or altered from any source distribution.
|
||||
+161
@@ -0,0 +1,161 @@
|
||||
README - CUPS v2.3b5 - 2018-06-05
|
||||
=================================
|
||||
|
||||
Looking for compile instructions? Read the file `INSTALL.md` instead...
|
||||
|
||||
|
||||
INTRODUCTION
|
||||
------------
|
||||
|
||||
|
||||
CUPS is a standards-based, open source printing system developed by Apple Inc.
|
||||
for macOS® and other UNIX®-like operating systems. CUPS uses the Internet
|
||||
Printing Protocol ("IPP") and provides System V and Berkeley command-line
|
||||
interfaces, a web interface, and a C API to manage printers and print jobs. It
|
||||
supports printing to both local (parallel, serial, USB) and networked printers,
|
||||
and printers can be shared from one computer to another, even over the Internet!
|
||||
|
||||
Internally, CUPS uses PostScript Printer Description ("PPD") files to describe
|
||||
printer capabilities and features and a wide variety of generic and device-
|
||||
specific programs to convert and print many types of files. Sample drivers are
|
||||
included with CUPS to support many Dymo, EPSON, HP, Intellitech, OKIDATA, and
|
||||
Zebra printers. Many more drivers are available online and (in some cases) on
|
||||
the driver CD-ROM that came with your printer.
|
||||
|
||||
CUPS is licensed under the Apache License Version 2.0. See the file
|
||||
"LICENSE" for more information.
|
||||
|
||||
|
||||
READING THE DOCUMENTATION
|
||||
-------------------------
|
||||
|
||||
Once you have installed the software you can access the documentation (and a
|
||||
bunch of other stuff) online at <http://localhost:631/>.
|
||||
|
||||
If you're having trouble getting that far, the documentation is located under
|
||||
the `doc/help` and `man` directories.
|
||||
|
||||
Please read the documentation before asking questions.
|
||||
|
||||
|
||||
GETTING SUPPORT AND OTHER RESOURCES
|
||||
-----------------------------------
|
||||
|
||||
If you have problems, *read the documentation first!* We also provide two
|
||||
mailing lists which are available at <https://lists.cups.org/mailman/listinfo>.
|
||||
|
||||
See the CUPS web site at <https://www.cups.org/> for other resources.
|
||||
|
||||
|
||||
SETTING UP PRINTER QUEUES USING YOUR WEB BROWSER
|
||||
------------------------------------------------
|
||||
|
||||
CUPS includes a web-based administration tool that allows you to manage
|
||||
printers, classes, and jobs on your server. Open <http://localhost:631/admin/>
|
||||
in your browser to access the printer administration tools:
|
||||
|
||||
*Do not* use the hostname for your machine - it will not work with the default
|
||||
CUPS configuration. To enable administration access on other addresses, check
|
||||
the `Allow Remote Administration` box and click on the `Change Settings button.
|
||||
|
||||
You will be asked for the administration password (root or any other user in the
|
||||
sys/system/root/admin/lpadmin group on your system) when performing any
|
||||
administrative function.
|
||||
|
||||
|
||||
SETTING UP PRINTER QUEUES FROM THE COMMAND-LINE
|
||||
-----------------------------------------------
|
||||
|
||||
CUPS currently uses PPD (PostScript Printer Description) files that describe
|
||||
printer capabilities and driver programs needed for each printer. The
|
||||
`everywhere` PPD is used for nearly all modern networks printers sold since
|
||||
about 2009. For example, the following command creates a print queue for a
|
||||
printer at address 11.22.33.44:
|
||||
|
||||
lpadmin -p printername -E -v ipp://11.22.33.44/ipp/print -m everywhere
|
||||
|
||||
CUPS also includes several sample PPD files you can use for "legacy" printers:
|
||||
|
||||
Driver PPD Name
|
||||
----------------------------- ------------------------------
|
||||
Dymo Label Printers drv:///sample.drv/dymo.ppd
|
||||
Intellitech Intellibar drv:///sample.drv/intelbar.ppd
|
||||
EPSON 9-pin Series drv:///sample.drv/epson9.ppd
|
||||
EPSON 24-pin Series drv:///sample.drv/epson24.ppd
|
||||
Generic PCL Laser Printer drv:///sample.drv/generpcl.ppd
|
||||
Generic PostScript Printer drv:///sample.drv/generic.ppd
|
||||
HP DeskJet Series drv:///sample.drv/deskjet.ppd
|
||||
HP LaserJet Series drv:///sample.drv/laserjet.ppd
|
||||
OKIDATA 9-Pin Series drv:///sample.drv/okidata9.ppd
|
||||
OKIDATA 24-Pin Series drv:///sample.drv/okidat24.ppd
|
||||
Zebra CPCL Label Printer drv:///sample.drv/zebracpl.ppd
|
||||
Zebra EPL1 Label Printer drv:///sample.drv/zebraep1.ppd
|
||||
Zebra EPL2 Label Printer drv:///sample.drv/zebraep2.ppd
|
||||
Zebra ZPL Label Printer drv:///sample.drv/zebra.ppd
|
||||
|
||||
You can run the `lpinfo -m` command to list all of the available drivers:
|
||||
|
||||
lpinfo -m
|
||||
|
||||
Run the `lpinfo -v` command to list the available printers:
|
||||
|
||||
lpinfo -v
|
||||
|
||||
Then use the correct URI to add the printer using the `lpadmin` command:
|
||||
|
||||
lpadmin -p printername -E -v device-uri -m ppd-name
|
||||
|
||||
Current network printers typically use `ipp` or `ipps` URIS:
|
||||
|
||||
lpadmin -p printername -E -v ipp://11.22.33.44/ipp/print -m everywhere
|
||||
lpadmin -p printername -E -v ipps://11.22.33.44/ipp/print -m everywhere
|
||||
|
||||
Older network printers typically use `socket` or `lpd` URIs:
|
||||
|
||||
lpadmin -p printername -E -v socket://11.22.33.44 -m ppd-name
|
||||
lpadmin -p printername -E -v lpd://11.22.33.44/ -m ppd-name
|
||||
|
||||
The sample drivers provide basic printing capabilities, but generally do not
|
||||
exercise the full potential of the printers or CUPS. Other drivers provide
|
||||
greater printing capabilities.
|
||||
|
||||
|
||||
PRINTING FILES
|
||||
--------------
|
||||
|
||||
CUPS provides both the System V `lp` and Berkeley `lpr` commands for printing:
|
||||
|
||||
lp filename
|
||||
lpr filename
|
||||
|
||||
Both the `lp` and `lpr` commands support printing options for the driver:
|
||||
|
||||
lp -o media=A4 -o resolution=600dpi filename
|
||||
lpr -o media=A4 -o resolution=600dpi filename
|
||||
|
||||
CUPS recognizes many types of images files as well as PDF, PostScript, and text
|
||||
files, so you can print those files directly rather than through an application.
|
||||
|
||||
If you have an application that generates output specifically for your printer
|
||||
then you need to use the `-oraw` or `-l` options:
|
||||
|
||||
lp -o raw filename
|
||||
lpr -l filename
|
||||
|
||||
This will prevent the filters from misinterpreting your print file.
|
||||
|
||||
|
||||
LEGAL STUFF
|
||||
-----------
|
||||
|
||||
Copyright © 2007-2018 by Apple Inc.
|
||||
Copyright © 1997-2007 by Easy Software Products.
|
||||
|
||||
CUPS is provided under the terms of the Apache License, Version 2.0. A copy of
|
||||
this license can be found in the file `LICENSE`. Additional legal information
|
||||
is provided in the file `NOTICE`.
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software distributed
|
||||
under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
|
||||
CONDITIONS OF ANY KIND, either express or implied. See the License for the
|
||||
specific language governing permissions and limitations under the License.
|
||||
-163
@@ -1,163 +0,0 @@
|
||||
README - CUPS v1.7.0 - 2013-07-16
|
||||
---------------------------------
|
||||
|
||||
Looking for compile instructions? Read the file "INSTALL.txt" instead...
|
||||
|
||||
|
||||
INTRODUCTION
|
||||
|
||||
CUPS is a standards-based, open source printing system developed by Apple
|
||||
Inc. for OS® X and other UNIX®-like operating systems. CUPS uses the
|
||||
Internet Printing Protocol ("IPP") and provides System V and Berkeley
|
||||
command-line interfaces, a web interface, and a C API to manage printers and
|
||||
print jobs. It supports printing to both local (parallel, serial, USB) and
|
||||
networked printers, and printers can be shared from one computer to another,
|
||||
even over the Internet!
|
||||
|
||||
Internally, CUPS uses PostScript Printer Description ("PPD") files to
|
||||
describe printer capabilities and features and a wide variety of generic
|
||||
and device-specific programs to convert and print many types of files.
|
||||
Sample drivers are included with CUPS to support many Dymo, EPSON, HP,
|
||||
Intellitech, OKIDATA, and Zebra printers. Many more drivers are available
|
||||
online and (in some cases) on the driver CD-ROM that came with your printer.
|
||||
|
||||
CUPS is licensed under the GNU General Public License and GNU Library
|
||||
General Public License versions 2. See the file "LICENSE.txt" for more
|
||||
information.
|
||||
|
||||
|
||||
READING THE DOCUMENTATION
|
||||
|
||||
Once you have installed the software you can access the documentation (and
|
||||
a bunch of other stuff) online at:
|
||||
|
||||
http://localhost:631/
|
||||
|
||||
If you're having trouble getting that far, the documentation is located
|
||||
under the "doc/help" directory.
|
||||
|
||||
Please read the documentation before asking questions.
|
||||
|
||||
|
||||
GETTING SUPPORT AND OTHER RESOURCES
|
||||
|
||||
If you have problems, READ THE DOCUMENTATION FIRST! We also provide many
|
||||
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.
|
||||
|
||||
|
||||
SETTING UP PRINTER QUEUES USING YOUR WEB BROWSER
|
||||
|
||||
CUPS includes a web-based administration tool that allows you to manage
|
||||
printers, classes, and jobs on your server. Open the following URL in your
|
||||
browser to access the printer administration tools:
|
||||
|
||||
http://localhost:631/admin/
|
||||
|
||||
DO NOT use the hostname for your machine - it will not work with the default
|
||||
CUPS configuration. To enable administration access on other addresses,
|
||||
check the "Allow Remote Administration" box and click on the "Change
|
||||
Settings" button.
|
||||
|
||||
You will be asked for the administration password (root or any other user in
|
||||
the sys/system/root/admin/lpadmin group on your system) when performing any
|
||||
administrative function.
|
||||
|
||||
|
||||
SETTING UP PRINTER QUEUES FROM THE COMMAND-LINE
|
||||
|
||||
CUPS works best with PPD (PostScript Printer Description) files. In a pinch
|
||||
you can also use System V style printer interface scripts.
|
||||
|
||||
CUPS includes several sample PPD files you can use:
|
||||
|
||||
Driver PPD Name
|
||||
----------------------------- ------------------------------
|
||||
Dymo Label Printers drv:///sample.drv/dymo.ppd
|
||||
Intellitech Intellibar drv:///sample.drv/intelbar.ppd
|
||||
EPSON Stylus Color Series drv:///sample.drv/stcolor.ppd
|
||||
EPSON Stylus Photo Series drv:///sample.drv/stphoto.ppd
|
||||
EPSON Stylus New Color Series drv:///sample.drv/stcolor2.ppd
|
||||
EPSON Stylus New Photo Series drv:///sample.drv/stphoto2.ppd
|
||||
EPSON 9-pin Series drv:///sample.drv/epson9.ppd
|
||||
EPSON 24-pin Series drv:///sample.drv/epson24.ppd
|
||||
Generic PCL Laser Printer drv:///sample.drv/generpcl.ppd
|
||||
Generic PostScript Printer drv:///sample.drv/generic.ppd
|
||||
HP DeskJet Series drv:///sample.drv/deskjet.ppd
|
||||
HP LaserJet Series drv:///sample.drv/laserjet.ppd
|
||||
OKIDATA 9-Pin Series drv:///sample.drv/okidata9.ppd
|
||||
OKIDATA 24-Pin Series drv:///sample.drv/okidat24.ppd
|
||||
Zebra CPCL Label Printer drv:///sample.drv/zebracpl.ppd
|
||||
Zebra EPL1 Label Printer drv:///sample.drv/zebraep1.ppd
|
||||
Zebra EPL2 Label Printer drv:///sample.drv/zebraep2.ppd
|
||||
Zebra ZPL Label Printer drv:///sample.drv/zebra.ppd
|
||||
|
||||
Run the "lpinfo -m" command to list the available drivers:
|
||||
|
||||
lpinfo -m
|
||||
|
||||
Run the "lpinfo -v" command to list the available printers:
|
||||
|
||||
lpinfo -v
|
||||
|
||||
Then use the correct URI to add the printer using the "lpadmin" command:
|
||||
|
||||
lpadmin -p printername -E -v device-uri -m ppd-name
|
||||
|
||||
Network printers typically use "socket" or "lpd" URIs:
|
||||
|
||||
lpadmin -p printername -E -v socket://11.22.33.44 -m ppd-name
|
||||
lpadmin -p printername -E -v lpd://11.22.33.44/ -m ppd-name
|
||||
|
||||
The sample drivers provide basic printing capabilities, but generally do not
|
||||
exercise the full potential of the printers or CUPS. The CUPS web site
|
||||
provides links and drivers:
|
||||
|
||||
http://www.cups.org/ppd.php PPD files
|
||||
http://www.cups.org/links.php Links to other drivers
|
||||
|
||||
|
||||
PRINTING FILES
|
||||
|
||||
CUPS provides both the System V "lp" and Berkeley "lpr" commands for
|
||||
printing:
|
||||
|
||||
lp filename
|
||||
lpr filename
|
||||
|
||||
Both the "lp" and "lpr" commands support printing options for the driver:
|
||||
|
||||
lp -o media=A4 -o resolution=600dpi filename
|
||||
lpr -o media=A4 -o resolution=600dpi filename
|
||||
|
||||
CUPS recognizes many types of images files as well as PDF, PostScript,
|
||||
HP-GL/2, and text files, so you can print those files directly rather than
|
||||
through an application.
|
||||
|
||||
If you have an application that generates output specifically for your
|
||||
printer then you need to use the "-oraw" or "-l" options:
|
||||
|
||||
lp -o raw filename
|
||||
lpr -l filename
|
||||
|
||||
This will prevent the filters from misinterpreting your print
|
||||
file.
|
||||
|
||||
|
||||
LEGAL STUFF
|
||||
|
||||
CUPS is Copyright 2007-2013 by Apple Inc. CUPS and the CUPS logo are
|
||||
trademarks of Apple Inc.
|
||||
|
||||
The MD5 Digest code is Copyright 1999 Aladdin Enterprises.
|
||||
|
||||
This software is based in part on the work of the Independent JPEG Group.
|
||||
|
||||
CUPS is provided under the terms of version 2 of the GNU General Public
|
||||
License and GNU Library General Public License. This program is distributed
|
||||
in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
|
||||
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
See the "doc/help/license.html" or "LICENSE.txt" files for more information.
|
||||
+56
-55
@@ -1,70 +1,71 @@
|
||||
ipp.o: ipp.c backend-private.h ../cups/cups-private.h \
|
||||
../cups/string-private.h ../config.h ../cups/debug-private.h \
|
||||
../cups/versioning.h ../cups/ipp-private.h ../cups/ipp.h \
|
||||
../cups/http.h ../cups/array.h ../cups/http-private.h \
|
||||
../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
|
||||
../cups/language.h ../cups/pwg-private.h ../cups/cups.h ../cups/file.h \
|
||||
../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h \
|
||||
../cups/snmp-private.h ../cups/backend.h ../cups/sidechannel.h \
|
||||
../cups/array-private.h
|
||||
lpd.o: lpd.c ../cups/http-private.h ../config.h ../cups/http.h \
|
||||
../cups/versioning.h ../cups/array.h ../cups/md5-private.h \
|
||||
../cups/ipp-private.h ../cups/ipp.h backend-private.h \
|
||||
../cups/cups-private.h ../cups/string-private.h \
|
||||
../cups/debug-private.h ../cups/language-private.h ../cups/transcode.h \
|
||||
../cups/language.h ../cups/pwg-private.h ../cups/cups.h ../cups/file.h \
|
||||
../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h \
|
||||
../cups/snmp-private.h ../cups/backend.h ../cups/sidechannel.h
|
||||
../cups/versioning.h ../cups/array-private.h ../cups/array.h \
|
||||
../cups/ipp-private.h ../cups/cups.h ../cups/file.h ../cups/ipp.h \
|
||||
../cups/http.h ../cups/language.h ../cups/pwg.h ../cups/http-private.h \
|
||||
../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
|
||||
../cups/thread-private.h ../cups/snmp-private.h ../cups/backend.h \
|
||||
../cups/sidechannel.h ../cups/ppd-private.h ../cups/ppd.h \
|
||||
../cups/raster.h
|
||||
lpd.o: lpd.c ../cups/http-private.h ../config.h ../cups/language.h \
|
||||
../cups/array.h ../cups/versioning.h ../cups/http.h \
|
||||
../cups/ipp-private.h ../cups/cups.h ../cups/file.h ../cups/ipp.h \
|
||||
../cups/pwg.h backend-private.h ../cups/cups-private.h \
|
||||
../cups/string-private.h ../cups/debug-private.h \
|
||||
../cups/array-private.h ../cups/language-private.h ../cups/transcode.h \
|
||||
../cups/pwg-private.h ../cups/thread-private.h ../cups/snmp-private.h \
|
||||
../cups/backend.h ../cups/sidechannel.h
|
||||
dnssd.o: dnssd.c backend-private.h ../cups/cups-private.h \
|
||||
../cups/string-private.h ../config.h ../cups/debug-private.h \
|
||||
../cups/versioning.h ../cups/ipp-private.h ../cups/ipp.h \
|
||||
../cups/http.h ../cups/array.h ../cups/http-private.h \
|
||||
../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
|
||||
../cups/language.h ../cups/pwg-private.h ../cups/cups.h ../cups/file.h \
|
||||
../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h \
|
||||
../cups/snmp-private.h ../cups/backend.h ../cups/sidechannel.h
|
||||
../cups/versioning.h ../cups/array-private.h ../cups/array.h \
|
||||
../cups/ipp-private.h ../cups/cups.h ../cups/file.h ../cups/ipp.h \
|
||||
../cups/http.h ../cups/language.h ../cups/pwg.h ../cups/http-private.h \
|
||||
../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
|
||||
../cups/thread-private.h ../cups/snmp-private.h ../cups/backend.h \
|
||||
../cups/sidechannel.h
|
||||
snmp.o: snmp.c backend-private.h ../cups/cups-private.h \
|
||||
../cups/string-private.h ../config.h ../cups/debug-private.h \
|
||||
../cups/versioning.h ../cups/ipp-private.h ../cups/ipp.h \
|
||||
../cups/http.h ../cups/array.h ../cups/http-private.h \
|
||||
../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
|
||||
../cups/language.h ../cups/pwg-private.h ../cups/cups.h ../cups/file.h \
|
||||
../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h \
|
||||
../cups/snmp-private.h ../cups/backend.h ../cups/sidechannel.h
|
||||
socket.o: socket.c ../cups/http-private.h ../config.h ../cups/http.h \
|
||||
../cups/versioning.h ../cups/array.h ../cups/md5-private.h \
|
||||
../cups/ipp-private.h ../cups/ipp.h backend-private.h \
|
||||
../cups/cups-private.h ../cups/string-private.h \
|
||||
../cups/debug-private.h ../cups/language-private.h ../cups/transcode.h \
|
||||
../cups/language.h ../cups/pwg-private.h ../cups/cups.h ../cups/file.h \
|
||||
../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h \
|
||||
../cups/snmp-private.h ../cups/backend.h ../cups/sidechannel.h
|
||||
../cups/versioning.h ../cups/array-private.h ../cups/array.h \
|
||||
../cups/ipp-private.h ../cups/cups.h ../cups/file.h ../cups/ipp.h \
|
||||
../cups/http.h ../cups/language.h ../cups/pwg.h ../cups/http-private.h \
|
||||
../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
|
||||
../cups/thread-private.h ../cups/snmp-private.h ../cups/backend.h \
|
||||
../cups/sidechannel.h
|
||||
socket.o: socket.c ../cups/http-private.h ../config.h ../cups/language.h \
|
||||
../cups/array.h ../cups/versioning.h ../cups/http.h \
|
||||
../cups/ipp-private.h ../cups/cups.h ../cups/file.h ../cups/ipp.h \
|
||||
../cups/pwg.h backend-private.h ../cups/cups-private.h \
|
||||
../cups/string-private.h ../cups/debug-private.h \
|
||||
../cups/array-private.h ../cups/language-private.h ../cups/transcode.h \
|
||||
../cups/pwg-private.h ../cups/thread-private.h ../cups/snmp-private.h \
|
||||
../cups/backend.h ../cups/sidechannel.h
|
||||
test1284.o: test1284.c ../cups/string-private.h ../config.h ieee1284.c \
|
||||
backend-private.h ../cups/cups-private.h ../cups/debug-private.h \
|
||||
../cups/versioning.h ../cups/ipp-private.h ../cups/ipp.h \
|
||||
../cups/http.h ../cups/array.h ../cups/http-private.h \
|
||||
../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
|
||||
../cups/language.h ../cups/pwg-private.h ../cups/cups.h ../cups/file.h \
|
||||
../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h \
|
||||
../cups/snmp-private.h ../cups/backend.h ../cups/sidechannel.h
|
||||
../cups/versioning.h ../cups/array-private.h ../cups/array.h \
|
||||
../cups/ipp-private.h ../cups/cups.h ../cups/file.h ../cups/ipp.h \
|
||||
../cups/http.h ../cups/language.h ../cups/pwg.h ../cups/http-private.h \
|
||||
../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
|
||||
../cups/thread-private.h ../cups/snmp-private.h ../cups/backend.h \
|
||||
../cups/sidechannel.h ../cups/ppd-private.h ../cups/ppd.h \
|
||||
../cups/raster.h
|
||||
testbackend.o: testbackend.c ../cups/string-private.h ../config.h \
|
||||
../cups/cups.h ../cups/file.h ../cups/versioning.h ../cups/ipp.h \
|
||||
../cups/http.h ../cups/array.h ../cups/language.h \
|
||||
../cups/http.h ../cups/array.h ../cups/language.h ../cups/pwg.h \
|
||||
../cups/sidechannel.h
|
||||
testsupplies.o: testsupplies.c backend-private.h ../cups/cups-private.h \
|
||||
../cups/string-private.h ../config.h ../cups/debug-private.h \
|
||||
../cups/versioning.h ../cups/ipp-private.h ../cups/ipp.h \
|
||||
../cups/http.h ../cups/array.h ../cups/http-private.h \
|
||||
../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
|
||||
../cups/language.h ../cups/pwg-private.h ../cups/cups.h ../cups/file.h \
|
||||
../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h \
|
||||
../cups/snmp-private.h ../cups/backend.h ../cups/sidechannel.h
|
||||
../cups/versioning.h ../cups/array-private.h ../cups/array.h \
|
||||
../cups/ipp-private.h ../cups/cups.h ../cups/file.h ../cups/ipp.h \
|
||||
../cups/http.h ../cups/language.h ../cups/pwg.h ../cups/http-private.h \
|
||||
../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
|
||||
../cups/thread-private.h ../cups/snmp-private.h ../cups/backend.h \
|
||||
../cups/sidechannel.h
|
||||
usb.o: usb.c backend-private.h ../cups/cups-private.h \
|
||||
../cups/string-private.h ../config.h ../cups/debug-private.h \
|
||||
../cups/versioning.h ../cups/ipp-private.h ../cups/ipp.h \
|
||||
../cups/http.h ../cups/array.h ../cups/http-private.h \
|
||||
../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
|
||||
../cups/language.h ../cups/pwg-private.h ../cups/cups.h ../cups/file.h \
|
||||
../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h \
|
||||
../cups/snmp-private.h ../cups/backend.h ../cups/sidechannel.h \
|
||||
usb-darwin.c ../cups/file-private.h
|
||||
../cups/versioning.h ../cups/array-private.h ../cups/array.h \
|
||||
../cups/ipp-private.h ../cups/cups.h ../cups/file.h ../cups/ipp.h \
|
||||
../cups/http.h ../cups/language.h ../cups/pwg.h ../cups/http-private.h \
|
||||
../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
|
||||
../cups/thread-private.h ../cups/snmp-private.h ../cups/backend.h \
|
||||
../cups/sidechannel.h usb-darwin.c ../cups/file-private.h \
|
||||
../cups/ppd-private.h ../cups/ppd.h ../cups/raster.h
|
||||
|
||||
+41
-34
@@ -1,18 +1,10 @@
|
||||
#
|
||||
# "$Id$"
|
||||
# Backend makefile for CUPS.
|
||||
#
|
||||
# Backend makefile for CUPS.
|
||||
# Copyright 2007-2017 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"
|
||||
# which should have been included with this file. If this file is
|
||||
# file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
#
|
||||
# This file is subject to the Apple OS-Developed Software exception.
|
||||
# Licensed under Apache License v2.0. See the file "LICENSE" for more information.
|
||||
#
|
||||
|
||||
include ../Makedefs
|
||||
@@ -23,17 +15,18 @@ include ../Makedefs
|
||||
|
||||
# RBACKENDS are installed mode 0700 so cupsd will run them as root...
|
||||
#
|
||||
# UBACKENDS are installed mode 0755 so cupsd will run them as an unprivileged
|
||||
# user...
|
||||
# UBACKENDS and ULBACKENDS are installed mode 0755 so cupsd will run them as
|
||||
# an unprivileged user...
|
||||
#
|
||||
# See http://www.cups.org/documentation.php/api-filter.html for more info...
|
||||
# See http://www.cups.org/doc/api-filter.html for more info...
|
||||
RBACKENDS = \
|
||||
ipp \
|
||||
lpd \
|
||||
$(DNSSD_BACKEND)
|
||||
UBACKENDS = \
|
||||
snmp \
|
||||
socket \
|
||||
socket
|
||||
ULBACKENDS = \
|
||||
usb
|
||||
UNITTESTS = \
|
||||
test1284 \
|
||||
@@ -42,7 +35,8 @@ UNITTESTS = \
|
||||
TARGETS = \
|
||||
libbackend.a \
|
||||
$(RBACKENDS) \
|
||||
$(UBACKENDS)
|
||||
$(UBACKENDS) \
|
||||
$(ULBACKENDS)
|
||||
LIBOBJS = \
|
||||
ieee1284.o \
|
||||
network.o \
|
||||
@@ -71,7 +65,7 @@ all: $(TARGETS)
|
||||
# Make library targets...
|
||||
#
|
||||
|
||||
libs:
|
||||
libs: $(ULBACKENDS)
|
||||
|
||||
|
||||
#
|
||||
@@ -86,7 +80,7 @@ unittests: $(UNITTESTS)
|
||||
#
|
||||
|
||||
clean:
|
||||
$(RM) $(OBJS) $(TARGETS) $(UNITTESTS) $(LIBOBJS) http https ipps mdns
|
||||
$(RM) $(OBJS) $(TARGETS) $(UNITTESTS) $(LIBOBJS) http https ipps mdns socket-static
|
||||
|
||||
|
||||
#
|
||||
@@ -167,6 +161,18 @@ install-headers:
|
||||
#
|
||||
|
||||
install-libs:
|
||||
echo Installing backends in $(SERVERBIN)/backend
|
||||
$(INSTALL_DIR) -m 755 $(SERVERBIN)/backend
|
||||
for file in $(ULBACKENDS); do \
|
||||
$(INSTALL_BIN) $$file $(SERVERBIN)/backend; \
|
||||
done
|
||||
if test "x$(SYMROOT)" != "x"; then \
|
||||
$(INSTALL_DIR) $(SYMROOT); \
|
||||
for file in $(ULBACKENDS); do \
|
||||
cp $$file $(SYMROOT); \
|
||||
dsymutil $(SYMROOT)/$$file; \
|
||||
done \
|
||||
fi
|
||||
|
||||
|
||||
#
|
||||
@@ -179,7 +185,7 @@ uninstall:
|
||||
$(RM) $(SERVERBIN)/apple/$$file; \
|
||||
done
|
||||
-$(RMDIR) $(SERVERBIN)/apple
|
||||
for file in $(RBACKENDS) $(UBACKENDS); do \
|
||||
for file in $(RBACKENDS) $(UBACKENDS) $(ULBACKENDS); do \
|
||||
$(RM) $(SERVERBIN)/backend/$$file; \
|
||||
done
|
||||
for file in $(IPPALIASES); do \
|
||||
@@ -195,7 +201,7 @@ uninstall:
|
||||
|
||||
test1284: test1284.o ../cups/$(LIBCUPSSTATIC)
|
||||
echo Linking $@...
|
||||
$(CC) $(LDFLAGS) -o test1284 test1284.o ../cups/$(LIBCUPSSTATIC) \
|
||||
$(LD_CC) $(LDFLAGS) -o test1284 test1284.o ../cups/$(LIBCUPSSTATIC) \
|
||||
$(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) $(COMMONLIBS) $(LIBZ)
|
||||
|
||||
|
||||
@@ -205,7 +211,7 @@ test1284: test1284.o ../cups/$(LIBCUPSSTATIC)
|
||||
|
||||
testbackend: testbackend.o ../cups/$(LIBCUPSSTATIC)
|
||||
echo Linking $@...
|
||||
$(CC) $(LDFLAGS) -o testbackend testbackend.o ../cups/$(LIBCUPSSTATIC) \
|
||||
$(LD_CC) $(LDFLAGS) -o testbackend testbackend.o ../cups/$(LIBCUPSSTATIC) \
|
||||
$(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) $(COMMONLIBS) $(LIBZ)
|
||||
|
||||
|
||||
@@ -215,7 +221,7 @@ testbackend: testbackend.o ../cups/$(LIBCUPSSTATIC)
|
||||
|
||||
testsupplies: testsupplies.o libbackend.a ../cups/$(LIBCUPSSTATIC)
|
||||
echo Linking $@...
|
||||
$(CC) $(LDFLAGS) -o testsupplies testsupplies.o libbackend.a \
|
||||
$(LD_CC) $(LDFLAGS) -o testsupplies testsupplies.o libbackend.a \
|
||||
../cups/$(LIBCUPSSTATIC) $(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) \
|
||||
$(COMMONLIBS) $(LIBZ)
|
||||
|
||||
@@ -237,7 +243,7 @@ libbackend.a: $(LIBOBJS)
|
||||
|
||||
dnssd: dnssd.o ../cups/$(LIBCUPS) libbackend.a
|
||||
echo Linking $@...
|
||||
$(CC) $(LDFLAGS) -o dnssd dnssd.o libbackend.a $(LIBS)
|
||||
$(LD_CC) $(LDFLAGS) -o dnssd dnssd.o libbackend.a $(LIBS)
|
||||
if test `uname` = Darwin; then \
|
||||
$(RM) mdns; \
|
||||
$(LN) dnssd mdns; \
|
||||
@@ -250,7 +256,7 @@ dnssd: dnssd.o ../cups/$(LIBCUPS) libbackend.a
|
||||
|
||||
ipp: ipp.o ../cups/$(LIBCUPS) libbackend.a
|
||||
echo Linking $@...
|
||||
$(CC) $(LDFLAGS) -o ipp ipp.o libbackend.a $(LIBS)
|
||||
$(LD_CC) $(LDFLAGS) -o ipp ipp.o libbackend.a $(LIBS)
|
||||
$(RM) http
|
||||
$(LN) ipp http
|
||||
|
||||
@@ -261,7 +267,7 @@ ipp: ipp.o ../cups/$(LIBCUPS) libbackend.a
|
||||
|
||||
lpd: lpd.o ../cups/$(LIBCUPS) libbackend.a
|
||||
echo Linking $@...
|
||||
$(CC) $(LDFLAGS) -o lpd lpd.o libbackend.a $(LIBS)
|
||||
$(LD_CC) $(LDFLAGS) -o lpd lpd.o libbackend.a $(LIBS)
|
||||
|
||||
|
||||
#
|
||||
@@ -270,7 +276,7 @@ lpd: lpd.o ../cups/$(LIBCUPS) libbackend.a
|
||||
|
||||
snmp: snmp.o ../cups/$(LIBCUPS) libbackend.a
|
||||
echo Linking $@...
|
||||
$(CC) $(LDFLAGS) -o snmp snmp.o libbackend.a $(LIBS)
|
||||
$(LD_CC) $(LDFLAGS) -o snmp snmp.o libbackend.a $(LIBS)
|
||||
|
||||
|
||||
#
|
||||
@@ -279,7 +285,13 @@ snmp: snmp.o ../cups/$(LIBCUPS) libbackend.a
|
||||
|
||||
socket: socket.o ../cups/$(LIBCUPS) libbackend.a
|
||||
echo Linking $@...
|
||||
$(CC) $(LDFLAGS) -o socket socket.o libbackend.a $(LIBS)
|
||||
$(LD_CC) $(LDFLAGS) -o socket socket.o libbackend.a $(LIBS)
|
||||
|
||||
socket-static: socket.o ../cups/$(LIBCUPSSTATIC) libbackend.a
|
||||
echo Linking $@...
|
||||
$(LD_CC) $(LDFLAGS) -o socket-static socket.o libbackend.a \
|
||||
../cups/$(LIBCUPSSTATIC) $(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) \
|
||||
$(COMMONLIBS) $(LIBZ)
|
||||
|
||||
|
||||
#
|
||||
@@ -288,7 +300,7 @@ socket: socket.o ../cups/$(LIBCUPS) libbackend.a
|
||||
|
||||
usb: usb.o ../cups/$(LIBCUPS) libbackend.a
|
||||
echo Linking $@...
|
||||
$(CC) $(ARCHFLAGS) $(LDFLAGS) -o usb usb.o libbackend.a $(LIBUSB) \
|
||||
$(LD_CC) $(ARCHFLAGS) $(LDFLAGS) -o usb usb.o libbackend.a $(LIBUSB) \
|
||||
$(BACKLIBS) $(LIBS)
|
||||
usb.o: usb.c usb-darwin.c usb-libusb.c usb-unix.c
|
||||
|
||||
@@ -298,8 +310,3 @@ usb.o: usb.c usb-darwin.c usb-libusb.c usb-unix.c
|
||||
#
|
||||
|
||||
include Dependencies
|
||||
|
||||
|
||||
#
|
||||
# End of "$Id$".
|
||||
#
|
||||
|
||||
@@ -1,18 +1,11 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* Backend support definitions for CUPS.
|
||||
*
|
||||
* Backend support definitions for CUPS.
|
||||
* Copyright © 2007-2014 by Apple Inc.
|
||||
* Copyright © 1997-2007 by Easy Software Products, all rights reserved.
|
||||
*
|
||||
* Copyright 2007-2012 by Apple Inc.
|
||||
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
* 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.
|
||||
* Licensed under Apache License v2.0. See the file "LICENSE" for more
|
||||
* information.
|
||||
*/
|
||||
|
||||
#ifndef _CUPS_BACKEND_PRIVATE_H_
|
||||
@@ -313,7 +306,8 @@ extern int backendGetDeviceID(int fd, char *device_id,
|
||||
int uri_size);
|
||||
extern int backendGetMakeModel(const char *device_id,
|
||||
char *make_model,
|
||||
int make_model_size);
|
||||
size_t make_model_size);
|
||||
extern http_addrlist_t *backendLookup(const char *hostname, int port, int *cancel);
|
||||
extern int backendNetworkSideCB(int print_fd, int device_fd,
|
||||
int snmp_fd, http_addr_t *addr,
|
||||
int use_bc);
|
||||
@@ -331,8 +325,3 @@ extern int backendWaitLoop(int snmp_fd, http_addr_t *addr,
|
||||
}
|
||||
# endif /* __cplusplus */
|
||||
#endif /* !_CUPS_BACKEND_PRIVATE_H_ */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+55
-69
@@ -1,33 +1,10 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* DNS-SD discovery backend for CUPS.
|
||||
*
|
||||
* DNS-SD discovery backend for CUPS.
|
||||
* Copyright © 2008-2017 by Apple Inc.
|
||||
*
|
||||
* Copyright 2008-2012 by Apple Inc.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
* property of Apple Inc. and are protected by Federal copyright
|
||||
* 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() - Browse for printers.
|
||||
* browse_callback() - Browse devices.
|
||||
* browse_local_callback() - Browse local devices.
|
||||
* client_callback() - Avahi client callback function.
|
||||
* compare_devices() - Compare two devices.
|
||||
* exec_backend() - Execute the backend that corresponds to the
|
||||
* resolved service name.
|
||||
* device_type() - Get DNS-SD type enumeration from string.
|
||||
* get_device() - Create or update a device.
|
||||
* query_callback() - Process query data.
|
||||
* find_device() - Find a device from its name and domain.
|
||||
* sigterm_handler() - Handle termination signals.
|
||||
* unquote() - Unquote a name string.
|
||||
* Licensed under Apache License v2.0. See the file "LICENSE" for more
|
||||
* information.
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -77,7 +54,8 @@ typedef struct
|
||||
*domain, /* Domain name */
|
||||
*fullName, /* Full name */
|
||||
*make_and_model, /* Make and model from TXT record */
|
||||
*device_id; /* 1284 device ID from TXT record */
|
||||
*device_id, /* 1284 device ID from TXT record */
|
||||
*uuid; /* UUID from TXT record */
|
||||
cups_devtype_t type; /* Device registration type */
|
||||
int priority, /* Priority associated with type */
|
||||
cups_shared, /* CUPS shared printer? */
|
||||
@@ -95,6 +73,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 */
|
||||
|
||||
|
||||
@@ -137,7 +116,7 @@ static void client_callback(AvahiClient *client,
|
||||
#endif /* HAVE_AVAHI */
|
||||
|
||||
static int compare_devices(cups_device_t *a, cups_device_t *b);
|
||||
static void exec_backend(char **argv);
|
||||
static void exec_backend(char **argv) __attribute__((noreturn));
|
||||
static cups_device_t *get_device(cups_array_t *devices,
|
||||
const char *serviceName,
|
||||
const char *regtype,
|
||||
@@ -332,7 +311,7 @@ main(int argc, /* I - Number of command-line args */
|
||||
if ((simple_poll = avahi_simple_poll_new()) == NULL)
|
||||
{
|
||||
fputs("DEBUG: Unable to create Avahi simple poll object.\n", stderr);
|
||||
return (1);
|
||||
return (0);
|
||||
}
|
||||
|
||||
avahi_simple_poll_set_func(simple_poll, poll_callback, NULL);
|
||||
@@ -342,9 +321,10 @@ main(int argc, /* I - Number of command-line args */
|
||||
if (!client)
|
||||
{
|
||||
fputs("DEBUG: Unable to create Avahi client.\n", stderr);
|
||||
return (1);
|
||||
return (0);
|
||||
}
|
||||
|
||||
browsers = 6;
|
||||
avahi_service_browser_new(client, AVAHI_IF_UNSPEC,
|
||||
AVAHI_PROTO_UNSPEC,
|
||||
"_fax-ipp._tcp", NULL, 0,
|
||||
@@ -513,9 +493,15 @@ main(int argc, /* I - Number of command-line args */
|
||||
{
|
||||
unquote(uriName, best->fullName, sizeof(uriName));
|
||||
|
||||
httpAssembleURI(HTTP_URI_CODING_ALL, device_uri, sizeof(device_uri),
|
||||
"dnssd", NULL, uriName, 0,
|
||||
best->cups_shared ? "/cups" : "/");
|
||||
if (best->uuid)
|
||||
httpAssembleURIf(HTTP_URI_CODING_ALL, device_uri,
|
||||
sizeof(device_uri), "dnssd", NULL, uriName, 0,
|
||||
best->cups_shared ? "/cups?uuid=%s" : "/?uuid=%s",
|
||||
best->uuid);
|
||||
else
|
||||
httpAssembleURI(HTTP_URI_CODING_ALL, device_uri,
|
||||
sizeof(device_uri), "dnssd", NULL, uriName, 0,
|
||||
best->cups_shared ? "/cups" : "/");
|
||||
|
||||
cupsBackendReport("network", device_uri, best->make_and_model,
|
||||
best->name, best->device_id, NULL);
|
||||
@@ -546,9 +532,15 @@ main(int argc, /* I - Number of command-line args */
|
||||
{
|
||||
unquote(uriName, best->fullName, sizeof(uriName));
|
||||
|
||||
httpAssembleURI(HTTP_URI_CODING_ALL, device_uri, sizeof(device_uri),
|
||||
"dnssd", NULL, uriName, 0,
|
||||
best->cups_shared ? "/cups" : "/");
|
||||
if (best->uuid)
|
||||
httpAssembleURIf(HTTP_URI_CODING_ALL, device_uri,
|
||||
sizeof(device_uri), "dnssd", NULL, uriName, 0,
|
||||
best->cups_shared ? "/cups?uuid=%s" : "/?uuid=%s",
|
||||
best->uuid);
|
||||
else
|
||||
httpAssembleURI(HTTP_URI_CODING_ALL, device_uri,
|
||||
sizeof(device_uri), "dnssd", NULL, uriName, 0,
|
||||
best->cups_shared ? "/cups" : "/");
|
||||
|
||||
cupsBackendReport("network", device_uri, best->make_and_model,
|
||||
best->name, best->device_id, NULL);
|
||||
@@ -558,7 +550,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 +706,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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -824,8 +823,8 @@ exec_backend(char **argv) /* I - Command-line arguments */
|
||||
* 'device_type()' - Get DNS-SD type enumeration from string.
|
||||
*/
|
||||
|
||||
static int
|
||||
device_type(const char *regtype)
|
||||
static cups_devtype_t /* O - Device type */
|
||||
device_type(const char *regtype) /* I - Service registration type */
|
||||
{
|
||||
#ifdef HAVE_AVAHI
|
||||
if (!strcmp(regtype, "_ipp._tcp"))
|
||||
@@ -915,9 +914,6 @@ get_device(cups_array_t *devices, /* I - Device array */
|
||||
* Yes, add the device...
|
||||
*/
|
||||
|
||||
fprintf(stderr, "DEBUG: Found \"%s.%s%s\"...\n", serviceName, regtype,
|
||||
replyDomain);
|
||||
|
||||
device = calloc(sizeof(cups_device_t), 1);
|
||||
device->name = strdup(serviceName);
|
||||
device->domain = strdup(replyDomain);
|
||||
@@ -933,8 +929,7 @@ get_device(cups_array_t *devices, /* I - Device array */
|
||||
#ifdef HAVE_DNSSD
|
||||
DNSServiceConstructFullName(fullName, serviceName, regtype, replyDomain);
|
||||
#else /* HAVE_AVAHI */
|
||||
avahi_service_name_join(fullName, kDNSServiceMaxDomainName,
|
||||
serviceName, regtype, replyDomain);
|
||||
avahi_service_name_join(fullName, kDNSServiceMaxDomainName, serviceName, regtype, replyDomain);
|
||||
#endif /* HAVE_DNSSD */
|
||||
|
||||
device->fullName = strdup(fullName);
|
||||
@@ -949,7 +944,7 @@ get_device(cups_array_t *devices, /* I - Device array */
|
||||
*
|
||||
* Note: This function is needed because avahi_simple_poll_iterate is broken
|
||||
* and always uses a timeout of 0 (!) milliseconds.
|
||||
* (Avahi Ticket #364)
|
||||
* (https://github.com/lathiat/avahi/issues/127)
|
||||
*/
|
||||
|
||||
static int /* O - Number of file descriptors matching */
|
||||
@@ -1040,9 +1035,7 @@ query_callback(
|
||||
"interfaceIndex=%d, errorCode=%d, fullName=\"%s\", "
|
||||
"rrtype=%u, rrclass=%u, rdlen=%u, rdata=%p, ttl=%u, "
|
||||
"context=%p)\n",
|
||||
sdRef, flags, interfaceIndex, errorCode,
|
||||
fullName ? fullName : "(null)", rrtype, rrclass, rdlen, rdata, ttl,
|
||||
context);
|
||||
sdRef, flags, interfaceIndex, errorCode, fullName, rrtype, rrclass, rdlen, rdata, ttl, context);
|
||||
|
||||
/*
|
||||
* Only process "add" data...
|
||||
@@ -1055,9 +1048,7 @@ query_callback(
|
||||
fprintf(stderr, "DEBUG2: query_callback(browser=%p, interfaceIndex=%d, "
|
||||
"protocol=%d, event=%d, fullName=\"%s\", rrclass=%u, "
|
||||
"rrtype=%u, rdata=%p, rdlen=%u, flags=%x, context=%p)\n",
|
||||
browser, interfaceIndex, protocol, event,
|
||||
fullName ? fullName : "(null)", rrclass, rrtype, rdata,
|
||||
(unsigned)rdlen, flags, context);
|
||||
browser, interfaceIndex, protocol, event, fullName, rrclass, rrtype, rdata, (unsigned)rdlen, flags, context);
|
||||
|
||||
/*
|
||||
* Only process "add" data...
|
||||
@@ -1102,7 +1093,7 @@ query_callback(
|
||||
datanext = data + datalen;
|
||||
|
||||
for (ptr = key; data < datanext && *data != '='; data ++)
|
||||
*ptr++ = *data;
|
||||
*ptr++ = (char)*data;
|
||||
*ptr = '\0';
|
||||
|
||||
if (data < datanext && *data == '=')
|
||||
@@ -1110,7 +1101,7 @@ query_callback(
|
||||
data ++;
|
||||
|
||||
if (data < datanext)
|
||||
memcpy(value, data, datanext - data);
|
||||
memcpy(value, data, (size_t)(datanext - data));
|
||||
value[datanext - data] = '\0';
|
||||
|
||||
fprintf(stderr, "DEBUG2: query_callback: \"%s=%s\".\n",
|
||||
@@ -1130,8 +1121,7 @@ query_callback(
|
||||
*/
|
||||
|
||||
ptr = device_id + strlen(device_id);
|
||||
snprintf(ptr, sizeof(device_id) - (ptr - device_id), "%s:%s;",
|
||||
key + 4, value);
|
||||
snprintf(ptr, sizeof(device_id) - (size_t)(ptr - device_id), "%s:%s;", key + 4, value);
|
||||
}
|
||||
|
||||
if (!_cups_strcasecmp(key, "usb_MFG") || !_cups_strcasecmp(key, "usb_MANU") ||
|
||||
@@ -1180,6 +1170,8 @@ query_callback(
|
||||
if (device->type == CUPS_DEVICE_PRINTER)
|
||||
device->sent = 1;
|
||||
}
|
||||
else if (!_cups_strcasecmp(key, "UUID"))
|
||||
device->uuid = strdup(value);
|
||||
}
|
||||
|
||||
if (device->device_id)
|
||||
@@ -1191,19 +1183,19 @@ query_callback(
|
||||
snprintf(device_id, sizeof(device_id), "MFG:%s;MDL:%s;",
|
||||
make_and_model, model);
|
||||
else if (!_cups_strncasecmp(model, "designjet ", 10))
|
||||
snprintf(device_id, sizeof(device_id), "MFG:HP;MDL:%s", model + 10);
|
||||
snprintf(device_id, sizeof(device_id), "MFG:HP;MDL:%s;", model + 10);
|
||||
else if (!_cups_strncasecmp(model, "stylus ", 7))
|
||||
snprintf(device_id, sizeof(device_id), "MFG:EPSON;MDL:%s", model + 7);
|
||||
snprintf(device_id, sizeof(device_id), "MFG:EPSON;MDL:%s;", model + 7);
|
||||
else if ((ptr = strchr(model, ' ')) != NULL)
|
||||
{
|
||||
/*
|
||||
* Assume the first word is the make...
|
||||
*/
|
||||
|
||||
memcpy(make_and_model, model, ptr - model);
|
||||
memcpy(make_and_model, model, (size_t)(ptr - model));
|
||||
make_and_model[ptr - model] = '\0';
|
||||
|
||||
snprintf(device_id, sizeof(device_id), "MFG:%s;MDL:%s",
|
||||
snprintf(device_id, sizeof(device_id), "MFG:%s;MDL:%s;",
|
||||
make_and_model, ptr + 1);
|
||||
}
|
||||
}
|
||||
@@ -1235,7 +1227,7 @@ query_callback(
|
||||
while (isalnum(*ptr & 255) || *ptr == '-' || *ptr == '.')
|
||||
{
|
||||
if (isalnum(*ptr & 255) && valptr < (value + sizeof(value) - 1))
|
||||
*valptr++ = toupper(*ptr++ & 255);
|
||||
*valptr++ = (char)toupper(*ptr++ & 255);
|
||||
else
|
||||
break;
|
||||
}
|
||||
@@ -1244,8 +1236,7 @@ query_callback(
|
||||
}
|
||||
|
||||
ptr = device_id + strlen(device_id);
|
||||
snprintf(ptr, sizeof(device_id) - (ptr - device_id), "CMD:%s;",
|
||||
value + 1);
|
||||
snprintf(ptr, sizeof(device_id) - (size_t)(ptr - device_id), "CMD:%s;", value + 1);
|
||||
}
|
||||
|
||||
if (device_id[0])
|
||||
@@ -1279,7 +1270,7 @@ sigterm_handler(int sig) /* I - Signal number (unused) */
|
||||
(void)sig;
|
||||
|
||||
if (job_canceled)
|
||||
exit(CUPS_BACKEND_OK);
|
||||
_exit(CUPS_BACKEND_OK);
|
||||
else
|
||||
job_canceled = 1;
|
||||
}
|
||||
@@ -1317,8 +1308,3 @@ unquote(char *dst, /* I - Destination buffer */
|
||||
|
||||
*dst = '\0';
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+14
-37
@@ -1,24 +1,11 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* IEEE-1284 support functions for CUPS.
|
||||
*
|
||||
* IEEE-1284 support functions for CUPS.
|
||||
* Copyright © 2007-2015 by Apple Inc.
|
||||
* Copyright © 1997-2007 by Easy Software Products, all rights reserved.
|
||||
*
|
||||
* Copyright 2007-2011 by Apple Inc.
|
||||
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
* property of Apple Inc. and are protected by Federal copyright
|
||||
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
* "LICENSE" which should have been included with this file. If this
|
||||
* file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
*
|
||||
* This file is subject to the Apple OS-Developed Software exception.
|
||||
*
|
||||
* Contents:
|
||||
*
|
||||
* backendGetDeviceID() - Get the IEEE-1284 device ID string and
|
||||
* corresponding URI.
|
||||
* backendGetMakeModel() - Get the make and model string from the device ID.
|
||||
* Licensed under Apache License v2.0. See the file "LICENSE" for more
|
||||
* information.
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -26,7 +13,7 @@
|
||||
*/
|
||||
|
||||
#include "backend-private.h"
|
||||
#include <cups/cups-private.h>
|
||||
#include <cups/ppd-private.h>
|
||||
|
||||
|
||||
/*
|
||||
@@ -96,7 +83,7 @@ backendGetDeviceID(
|
||||
*device_id = '\0';
|
||||
|
||||
# ifdef __linux
|
||||
if (ioctl(fd, LPIOC_GET_DEVICE_ID(device_id_size), device_id))
|
||||
if (ioctl(fd, LPIOC_GET_DEVICE_ID((unsigned)device_id_size), device_id))
|
||||
{
|
||||
/*
|
||||
* Linux has to implement things differently for every device it seems.
|
||||
@@ -148,8 +135,7 @@ backendGetDeviceID(
|
||||
* Read the 1284 device ID...
|
||||
*/
|
||||
|
||||
if ((length = read(devparportfd, device_id,
|
||||
device_id_size - 1)) >= 2)
|
||||
if ((length = read(devparportfd, device_id, (size_t)device_id_size - 1)) >= 2)
|
||||
{
|
||||
device_id[length] = '\0';
|
||||
got_id = 1;
|
||||
@@ -178,8 +164,7 @@ backendGetDeviceID(
|
||||
* bytes. The 1284 spec says the length is stored MSB first...
|
||||
*/
|
||||
|
||||
length = (((unsigned)device_id[0] & 255) << 8) +
|
||||
((unsigned)device_id[1] & 255);
|
||||
length = (int)((((unsigned)device_id[0] & 255) << 8) + ((unsigned)device_id[1] & 255));
|
||||
|
||||
/*
|
||||
* Check to see if the length is larger than our buffer; first
|
||||
@@ -188,8 +173,7 @@ backendGetDeviceID(
|
||||
*/
|
||||
|
||||
if (length > device_id_size || length < 14)
|
||||
length = (((unsigned)device_id[1] & 255) << 8) +
|
||||
((unsigned)device_id[0] & 255);
|
||||
length = (int)((((unsigned)device_id[1] & 255) << 8) + ((unsigned)device_id[0] & 255));
|
||||
|
||||
if (length > device_id_size)
|
||||
length = device_id_size;
|
||||
@@ -221,7 +205,7 @@ backendGetDeviceID(
|
||||
|
||||
length -= 2;
|
||||
|
||||
memmove(device_id, device_id + 2, length);
|
||||
memmove(device_id, device_id + 2, (size_t)length);
|
||||
device_id[length] = '\0';
|
||||
}
|
||||
}
|
||||
@@ -287,7 +271,7 @@ backendGetDeviceID(
|
||||
*/
|
||||
|
||||
if (make_model)
|
||||
backendGetMakeModel(device_id, make_model, make_model_size);
|
||||
backendGetMakeModel(device_id, make_model, (size_t)make_model_size);
|
||||
|
||||
/*
|
||||
* Then generate a device URI...
|
||||
@@ -372,7 +356,7 @@ int /* O - 0 on success, -1 on failure */
|
||||
backendGetMakeModel(
|
||||
const char *device_id, /* O - 1284 device ID */
|
||||
char *make_model, /* O - Make/model */
|
||||
int make_model_size) /* I - Size of buffer */
|
||||
size_t make_model_size) /* I - Size of buffer */
|
||||
{
|
||||
int num_values; /* Number of keys and values */
|
||||
cups_option_t *values; /* Keys and values */
|
||||
@@ -381,9 +365,7 @@ backendGetMakeModel(
|
||||
*des; /* Description string */
|
||||
|
||||
|
||||
DEBUG_printf(("backendGetMakeModel(device_id=\"%s\", "
|
||||
"make_model=%p, make_model_size=%d)\n", device_id,
|
||||
make_model, make_model_size));
|
||||
DEBUG_printf(("backendGetMakeModel(device_id=\"%s\", make_model=%p, make_model_size=" CUPS_LLFMT ")\n", device_id, make_model, CUPS_LLCAST make_model_size));
|
||||
|
||||
/*
|
||||
* Range check input...
|
||||
@@ -484,8 +466,3 @@ backendGetMakeModel(
|
||||
|
||||
return (0);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+448
-535
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
+125
-166
@@ -1,27 +1,11 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* Line Printer Daemon backend for CUPS.
|
||||
*
|
||||
* Line Printer Daemon backend for CUPS.
|
||||
* Copyright © 2007-2016 by Apple Inc.
|
||||
* Copyright © 1997-2007 by Easy Software Products, all rights reserved.
|
||||
*
|
||||
* Copyright 2007-2012 by Apple Inc.
|
||||
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
* 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.
|
||||
* lpd_command() - Send an LPR command sequence and wait for a reply.
|
||||
* lpd_queue() - Queue a file using the Line Printer Daemon protocol.
|
||||
* lpd_write() - Write a buffer of data to an LPD server.
|
||||
* rresvport_af() - A simple implementation of rresvport_af().
|
||||
* sigterm_handler() - Handle 'terminate' signals that stop the backend.
|
||||
* Licensed under Apache License v2.0. See the file "LICENSE" for more
|
||||
* information.
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -86,6 +70,7 @@ static int abort_job = 0; /* Non-zero if we get SIGTERM */
|
||||
* Local functions...
|
||||
*/
|
||||
|
||||
static int cups_rresvport(int *port, int family);
|
||||
static int lpd_command(int lpd_fd, char *format, ...);
|
||||
static int lpd_queue(const char *hostname, http_addrlist_t *addrlist,
|
||||
const char *printer, int print_fd, int snmp_fd,
|
||||
@@ -93,10 +78,7 @@ static int lpd_queue(const char *hostname, http_addrlist_t *addrlist,
|
||||
int copies, int banner, int format, int order,
|
||||
int reserve, int manual_copies, int timeout,
|
||||
int contimeout, const char *orighost);
|
||||
static int lpd_write(int lpd_fd, char *buffer, int length);
|
||||
#ifndef HAVE_RRESVPORT_AF
|
||||
static int rresvport_af(int *port, int family);
|
||||
#endif /* !HAVE_RRESVPORT_AF */
|
||||
static ssize_t lpd_write(int lpd_fd, char *buffer, size_t length);
|
||||
static void sigterm_handler(int sig);
|
||||
|
||||
|
||||
@@ -124,7 +106,6 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
|
||||
*filename, /* File to print */
|
||||
title[256]; /* Title string */
|
||||
int port; /* Port number */
|
||||
char portname[256]; /* Port name (string) */
|
||||
http_addrlist_t *addrlist; /* List of addresses for printer */
|
||||
int snmp_enabled = 1; /* Is SNMP enabled? */
|
||||
int snmp_fd; /* SNMP socket */
|
||||
@@ -393,8 +374,8 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
|
||||
*/
|
||||
|
||||
snmp_enabled = !value[0] || !_cups_strcasecmp(value, "on") ||
|
||||
_cups_strcasecmp(value, "yes") ||
|
||||
_cups_strcasecmp(value, "true");
|
||||
!_cups_strcasecmp(value, "yes") ||
|
||||
!_cups_strcasecmp(value, "true");
|
||||
}
|
||||
else if (!_cups_strcasecmp(name, "timeout"))
|
||||
{
|
||||
@@ -424,23 +405,11 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
|
||||
* Find the printer...
|
||||
*/
|
||||
|
||||
snprintf(portname, sizeof(portname), "%d", port);
|
||||
addrlist = backendLookup(hostname, port, NULL);
|
||||
|
||||
fputs("STATE: +connecting-to-device\n", stderr);
|
||||
fprintf(stderr, "DEBUG: Looking up \"%s\"...\n", hostname);
|
||||
|
||||
while ((addrlist = httpAddrGetList(hostname, AF_UNSPEC, portname)) == NULL)
|
||||
{
|
||||
_cupsLangPrintFilter(stderr, "INFO",
|
||||
_("Unable to locate printer \"%s\"."), hostname);
|
||||
sleep(10);
|
||||
|
||||
if (getenv("CLASS") != NULL)
|
||||
{
|
||||
fputs("STATE: -connecting-to-device\n", stderr);
|
||||
exit(CUPS_BACKEND_FAILED);
|
||||
}
|
||||
}
|
||||
/*
|
||||
* See if the printer supports SNMP...
|
||||
*/
|
||||
|
||||
if (snmp_enabled)
|
||||
snmp_fd = _cupsSNMPOpen(addrlist->addr.addr.sa_family);
|
||||
@@ -481,7 +450,7 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
|
||||
_cupsLangPrintFilter(stderr, "INFO", _("Copying print data."));
|
||||
|
||||
if (bytes > 0)
|
||||
write(fd, buffer, bytes);
|
||||
write(fd, buffer, (size_t)bytes);
|
||||
|
||||
backendRunLoop(-1, fd, snmp_fd, &(addrlist->addr), 0, 0,
|
||||
backendNetworkSideCB);
|
||||
@@ -581,6 +550,84 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'cups_rresvport()' - A simple implementation of rresvport_af().
|
||||
*/
|
||||
|
||||
static int /* O - Socket or -1 on error */
|
||||
cups_rresvport(int *port, /* IO - Port number to bind to */
|
||||
int family) /* I - Address family */
|
||||
{
|
||||
http_addr_t addr; /* Socket address */
|
||||
int fd; /* Socket file descriptor */
|
||||
|
||||
|
||||
/*
|
||||
* Try to create an IPv4 socket...
|
||||
*/
|
||||
|
||||
if ((fd = socket(family, SOCK_STREAM, 0)) < 0)
|
||||
return (-1);
|
||||
|
||||
/*
|
||||
* Initialize the address buffer...
|
||||
*/
|
||||
|
||||
memset(&addr, 0, sizeof(addr));
|
||||
addr.addr.sa_family = (sa_family_t)family;
|
||||
|
||||
/*
|
||||
* Try to bind the socket to a reserved port...
|
||||
*/
|
||||
|
||||
while (*port > 511)
|
||||
{
|
||||
/*
|
||||
* Set the port number...
|
||||
*/
|
||||
|
||||
_httpAddrSetPort(&addr, *port);
|
||||
|
||||
/*
|
||||
* Try binding the port to the socket; return if all is OK...
|
||||
*/
|
||||
|
||||
if (!bind(fd, (struct sockaddr *)&addr, (socklen_t)httpAddrLength(&addr)))
|
||||
return (fd);
|
||||
|
||||
/*
|
||||
* Stop if we have any error other than "address already in use"...
|
||||
*/
|
||||
|
||||
if (errno != EADDRINUSE)
|
||||
{
|
||||
httpAddrClose(NULL, fd);
|
||||
|
||||
return (-1);
|
||||
}
|
||||
|
||||
/*
|
||||
* Try the next port...
|
||||
*/
|
||||
|
||||
(*port)--;
|
||||
}
|
||||
|
||||
/*
|
||||
* Wasn't able to bind to a reserved port, so close the socket and return
|
||||
* -1...
|
||||
*/
|
||||
|
||||
#ifdef WIN32
|
||||
closesocket(fd);
|
||||
#else
|
||||
close(fd);
|
||||
#endif /* WIN32 */
|
||||
|
||||
return (-1);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'lpd_command()' - Send an LPR command sequence and wait for a reply.
|
||||
*/
|
||||
@@ -592,7 +639,7 @@ lpd_command(int fd, /* I - Socket connection to LPD host */
|
||||
{
|
||||
va_list ap; /* Argument pointer */
|
||||
char buf[1024]; /* Output buffer */
|
||||
int bytes; /* Number of bytes to output */
|
||||
ssize_t bytes; /* Number of bytes to output */
|
||||
char status; /* Status from command */
|
||||
|
||||
|
||||
@@ -617,9 +664,9 @@ lpd_command(int fd, /* I - Socket connection to LPD host */
|
||||
* Send the command...
|
||||
*/
|
||||
|
||||
fprintf(stderr, "DEBUG: Sending command string (%d bytes)...\n", bytes);
|
||||
fprintf(stderr, "DEBUG: Sending command string (" CUPS_LLFMT " bytes)...\n", CUPS_LLCAST bytes);
|
||||
|
||||
if (lpd_write(fd, buf, bytes) < bytes)
|
||||
if (lpd_write(fd, buf, (size_t)bytes) < bytes)
|
||||
{
|
||||
perror("DEBUG: Unable to send LPD command");
|
||||
return (-1);
|
||||
@@ -634,7 +681,7 @@ lpd_command(int fd, /* I - Socket connection to LPD host */
|
||||
if (recv(fd, &status, 1, 0) < 1)
|
||||
{
|
||||
_cupsLangPrintFilter(stderr, "WARNING", _("The printer did not respond."));
|
||||
status = errno;
|
||||
status = (char)errno;
|
||||
}
|
||||
|
||||
fprintf(stderr, "DEBUG: lpd_command returning %d\n", status);
|
||||
@@ -680,7 +727,7 @@ lpd_queue(const char *hostname, /* I - Host to connect to */
|
||||
int have_supplies; /* Printer supports supply levels? */
|
||||
int copy; /* Copies written */
|
||||
time_t start_time; /* Time of first connect */
|
||||
size_t nbytes; /* Number of bytes written */
|
||||
ssize_t nbytes; /* Number of bytes written */
|
||||
off_t tbytes; /* Total bytes written */
|
||||
char buffer[32768]; /* Output buffer */
|
||||
#ifdef WIN32
|
||||
@@ -762,7 +809,7 @@ lpd_queue(const char *hostname, /* I - Host to connect to */
|
||||
* priviledged lport between 721 and 731...
|
||||
*/
|
||||
|
||||
if ((fd = rresvport_af(&lport, addr->addr.addr.sa_family)) < 0)
|
||||
if ((fd = cups_rresvport(&lport, addr->addr.addr.sa_family)) < 0)
|
||||
{
|
||||
perror("DEBUG: Unable to reserve port");
|
||||
sleep(1);
|
||||
@@ -782,7 +829,7 @@ lpd_queue(const char *hostname, /* I - Host to connect to */
|
||||
return (CUPS_BACKEND_FAILED);
|
||||
}
|
||||
|
||||
if (!connect(fd, &(addr->addr.addr), httpAddrLength(&(addr->addr))))
|
||||
if (!connect(fd, &(addr->addr.addr), (socklen_t)httpAddrLength(&(addr->addr))))
|
||||
break;
|
||||
|
||||
error = errno;
|
||||
@@ -815,8 +862,7 @@ lpd_queue(const char *hostname, /* I - Host to connect to */
|
||||
|
||||
fprintf(stderr, "DEBUG: Connection error: %s\n", strerror(error));
|
||||
|
||||
if (error == ECONNREFUSED || error == EHOSTDOWN ||
|
||||
error == EHOSTUNREACH)
|
||||
if (errno == ECONNREFUSED || errno == EHOSTDOWN || errno == EHOSTUNREACH || errno == ETIMEDOUT || errno == ENOTCONN)
|
||||
{
|
||||
if (contimeout && (time(NULL) - start_time) > contimeout)
|
||||
{
|
||||
@@ -834,19 +880,19 @@ lpd_queue(const char *hostname, /* I - Host to connect to */
|
||||
break;
|
||||
|
||||
case EHOSTUNREACH :
|
||||
default :
|
||||
_cupsLangPrintFilter(stderr, "WARNING",
|
||||
_("The printer is unreachable at "
|
||||
"this time."));
|
||||
break;
|
||||
|
||||
case ECONNREFUSED :
|
||||
default :
|
||||
_cupsLangPrintFilter(stderr, "WARNING",
|
||||
_("The printer is in use."));
|
||||
break;
|
||||
}
|
||||
|
||||
sleep(delay);
|
||||
sleep((unsigned)delay);
|
||||
|
||||
if (delay < 30)
|
||||
delay += 5;
|
||||
@@ -967,7 +1013,7 @@ lpd_queue(const char *hostname, /* I - Host to connect to */
|
||||
|
||||
if (banner)
|
||||
{
|
||||
snprintf(cptr, sizeof(control) - (cptr - control),
|
||||
snprintf(cptr, sizeof(control) - (size_t)(cptr - control),
|
||||
"C%.31s\n" /* RFC 1179, Section 7.2 - class name <= 31 chars */
|
||||
"L%s\n",
|
||||
localhost, user);
|
||||
@@ -976,13 +1022,13 @@ lpd_queue(const char *hostname, /* I - Host to connect to */
|
||||
|
||||
while (copies > 0)
|
||||
{
|
||||
snprintf(cptr, sizeof(control) - (cptr - control), "%cdfA%03d%.15s\n",
|
||||
snprintf(cptr, sizeof(control) - (size_t)(cptr - control), "%cdfA%03d%.15s\n",
|
||||
format, (int)getpid() % 1000, localhost);
|
||||
cptr += strlen(cptr);
|
||||
copies --;
|
||||
}
|
||||
|
||||
snprintf(cptr, sizeof(control) - (cptr - control),
|
||||
snprintf(cptr, sizeof(control) - (size_t)(cptr - control),
|
||||
"UdfA%03d%.15s\n"
|
||||
"N%.131s\n", /* RFC 1179, Section 7.2 - sourcefile name <= 131 chars */
|
||||
(int)getpid() % 1000, localhost, title);
|
||||
@@ -1012,9 +1058,9 @@ lpd_queue(const char *hostname, /* I - Host to connect to */
|
||||
fprintf(stderr, "DEBUG: Sending control file (%u bytes)\n",
|
||||
(unsigned)strlen(control));
|
||||
|
||||
if (lpd_write(fd, control, strlen(control) + 1) < (strlen(control) + 1))
|
||||
if ((size_t)lpd_write(fd, control, strlen(control) + 1) < (strlen(control) + 1))
|
||||
{
|
||||
status = errno;
|
||||
status = (char)errno;
|
||||
perror("DEBUG: Unable to write control file");
|
||||
|
||||
}
|
||||
@@ -1024,7 +1070,7 @@ lpd_queue(const char *hostname, /* I - Host to connect to */
|
||||
{
|
||||
_cupsLangPrintFilter(stderr, "WARNING",
|
||||
_("The printer did not respond."));
|
||||
status = errno;
|
||||
status = (char)errno;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1074,7 +1120,7 @@ lpd_queue(const char *hostname, /* I - Host to connect to */
|
||||
_("Spooling job, %.0f%% complete."),
|
||||
100.0 * tbytes / filestats.st_size);
|
||||
|
||||
if (lpd_write(fd, buffer, nbytes) < nbytes)
|
||||
if (lpd_write(fd, buffer, (size_t)nbytes) < nbytes)
|
||||
{
|
||||
perror("DEBUG: Unable to send print file to printer");
|
||||
break;
|
||||
@@ -1087,11 +1133,11 @@ lpd_queue(const char *hostname, /* I - Host to connect to */
|
||||
if (mode == MODE_STANDARD)
|
||||
{
|
||||
if (tbytes < filestats.st_size)
|
||||
status = errno;
|
||||
status = (char)errno;
|
||||
else if (lpd_write(fd, "", 1) < 1)
|
||||
{
|
||||
perror("DEBUG: Unable to send trailing nul to printer");
|
||||
status = errno;
|
||||
status = (char)errno;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1145,9 +1191,9 @@ lpd_queue(const char *hostname, /* I - Host to connect to */
|
||||
fprintf(stderr, "DEBUG: Sending control file (%lu bytes)\n",
|
||||
(unsigned long)strlen(control));
|
||||
|
||||
if (lpd_write(fd, control, strlen(control) + 1) < (strlen(control) + 1))
|
||||
if ((size_t)lpd_write(fd, control, strlen(control) + 1) < (strlen(control) + 1))
|
||||
{
|
||||
status = errno;
|
||||
status = (char)errno;
|
||||
perror("DEBUG: Unable to write control file");
|
||||
}
|
||||
else
|
||||
@@ -1156,7 +1202,7 @@ lpd_queue(const char *hostname, /* I - Host to connect to */
|
||||
{
|
||||
_cupsLangPrintFilter(stderr, "WARNING",
|
||||
_("The printer did not respond."));
|
||||
status = errno;
|
||||
status = (char)errno;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1169,6 +1215,8 @@ lpd_queue(const char *hostname, /* I - Host to connect to */
|
||||
_("Control file sent successfully."));
|
||||
}
|
||||
|
||||
fputs("STATE: +cups-waiting-for-job-completed\n", stderr);
|
||||
|
||||
/*
|
||||
* Collect the final supply levels as needed...
|
||||
*/
|
||||
@@ -1204,119 +1252,35 @@ lpd_queue(const char *hostname, /* I - Host to connect to */
|
||||
* 'lpd_write()' - Write a buffer of data to an LPD server.
|
||||
*/
|
||||
|
||||
static int /* O - Number of bytes written or -1 on error */
|
||||
lpd_write(int lpd_fd, /* I - LPD socket */
|
||||
char *buffer, /* I - Buffer to write */
|
||||
int length) /* I - Number of bytes to write */
|
||||
static ssize_t /* O - Number of bytes written or -1 on error */
|
||||
lpd_write(int lpd_fd, /* I - LPD socket */
|
||||
char *buffer, /* I - Buffer to write */
|
||||
size_t length) /* I - Number of bytes to write */
|
||||
{
|
||||
int bytes, /* Number of bytes written */
|
||||
total; /* Total number of bytes written */
|
||||
ssize_t bytes, /* Number of bytes written */
|
||||
total; /* Total number of bytes written */
|
||||
|
||||
|
||||
if (abort_job)
|
||||
return (-1);
|
||||
|
||||
total = 0;
|
||||
while ((bytes = send(lpd_fd, buffer, length - total, 0)) >= 0)
|
||||
while ((bytes = send(lpd_fd, buffer, length - (size_t)total, 0)) >= 0)
|
||||
{
|
||||
total += bytes;
|
||||
buffer += bytes;
|
||||
|
||||
if (total == length)
|
||||
if ((size_t)total == length)
|
||||
break;
|
||||
}
|
||||
|
||||
if (bytes < 0)
|
||||
return (-1);
|
||||
else
|
||||
return (length);
|
||||
return (total);
|
||||
}
|
||||
|
||||
|
||||
#ifndef HAVE_RRESVPORT_AF
|
||||
/*
|
||||
* 'rresvport_af()' - A simple implementation of rresvport_af().
|
||||
*/
|
||||
|
||||
static int /* O - Socket or -1 on error */
|
||||
rresvport_af(int *port, /* IO - Port number to bind to */
|
||||
int family) /* I - Address family */
|
||||
{
|
||||
http_addr_t addr; /* Socket address */
|
||||
int fd; /* Socket file descriptor */
|
||||
|
||||
|
||||
/*
|
||||
* Try to create an IPv4 socket...
|
||||
*/
|
||||
|
||||
if ((fd = socket(family, SOCK_STREAM, 0)) < 0)
|
||||
return (-1);
|
||||
|
||||
/*
|
||||
* Initialize the address buffer...
|
||||
*/
|
||||
|
||||
memset(&addr, 0, sizeof(addr));
|
||||
addr.addr.sa_family = family;
|
||||
|
||||
/*
|
||||
* Try to bind the socket to a reserved port...
|
||||
*/
|
||||
|
||||
while (*port > 511)
|
||||
{
|
||||
/*
|
||||
* Set the port number...
|
||||
*/
|
||||
|
||||
_httpAddrSetPort(&addr, *port);
|
||||
|
||||
/*
|
||||
* Try binding the port to the socket; return if all is OK...
|
||||
*/
|
||||
|
||||
if (!bind(fd, (struct sockaddr *)&addr, sizeof(addr)))
|
||||
return (fd);
|
||||
|
||||
/*
|
||||
* Stop if we have any error other than "address already in use"...
|
||||
*/
|
||||
|
||||
if (errno != EADDRINUSE)
|
||||
{
|
||||
# ifdef WIN32
|
||||
closesocket(fd);
|
||||
# else
|
||||
close(fd);
|
||||
# endif /* WIN32 */
|
||||
|
||||
return (-1);
|
||||
}
|
||||
|
||||
/*
|
||||
* Try the next port...
|
||||
*/
|
||||
|
||||
(*port)--;
|
||||
}
|
||||
|
||||
/*
|
||||
* Wasn't able to bind to a reserved port, so close the socket and return
|
||||
* -1...
|
||||
*/
|
||||
|
||||
# ifdef WIN32
|
||||
closesocket(fd);
|
||||
# else
|
||||
close(fd);
|
||||
# endif /* WIN32 */
|
||||
|
||||
return (-1);
|
||||
}
|
||||
#endif /* !HAVE_RRESVPORT_AF */
|
||||
|
||||
|
||||
/*
|
||||
* 'sigterm_handler()' - Handle 'terminate' signals that stop the backend.
|
||||
*/
|
||||
@@ -1328,8 +1292,3 @@ sigterm_handler(int sig) /* I - Signal */
|
||||
|
||||
abort_job = 1;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+86
-58
@@ -1,23 +1,11 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* Common backend network APIs for CUPS.
|
||||
*
|
||||
* Common backend network APIs for CUPS.
|
||||
* Copyright © 2007-2016 by Apple Inc.
|
||||
* Copyright © 2006-2007 by Easy Software Products, all rights reserved.
|
||||
*
|
||||
* Copyright 2007-2011 by Apple Inc.
|
||||
* Copyright 2006-2007 by Easy Software Products, all rights reserved.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
* property of Apple Inc. and are protected by Federal copyright
|
||||
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
* "LICENSE" which should have been included with this file. If this
|
||||
* file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
*
|
||||
* This file is subject to the Apple OS-Developed Software exception.
|
||||
*
|
||||
* Contents:
|
||||
*
|
||||
* backendCheckSideChannel() - Check the side-channel for pending requests.
|
||||
* backendNetworkSideCB() - Handle common network side-channel commands.
|
||||
* Licensed under Apache License v2.0. See the file "LICENSE" for more
|
||||
* information.
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -26,18 +14,13 @@
|
||||
|
||||
#include "backend-private.h"
|
||||
#include <limits.h>
|
||||
#ifdef __hpux
|
||||
# include <sys/time.h>
|
||||
#else
|
||||
# include <sys/select.h>
|
||||
#endif /* __hpux */
|
||||
#include <sys/select.h>
|
||||
|
||||
|
||||
/*
|
||||
* 'backendCheckSideChannel()' - Check the side-channel for pending requests.
|
||||
*/
|
||||
|
||||
|
||||
void
|
||||
backendCheckSideChannel(
|
||||
int snmp_fd, /* I - SNMP socket */
|
||||
@@ -57,6 +40,65 @@ backendCheckSideChannel(
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'backendLookup()' - Lookup the given host and log addresses.
|
||||
*/
|
||||
|
||||
http_addrlist_t * /* O - List of addresses or NULL */
|
||||
backendLookup(const char *hostname, /* I - Hostname */
|
||||
int port, /* I - Port number */
|
||||
int *cancel) /* I - Variable to watch for job cancel */
|
||||
{
|
||||
char portname[32], /* Port number as string */
|
||||
addrname[256]; /* Address as string */
|
||||
http_addrlist_t *addrlist, /* List of addresses */
|
||||
*current; /* Current address */
|
||||
|
||||
|
||||
/*
|
||||
* Lookup the address for the named host...
|
||||
*/
|
||||
|
||||
snprintf(portname, sizeof(portname), "%d", port);
|
||||
|
||||
fputs("STATE: +connecting-to-device\n", stderr);
|
||||
fprintf(stderr, "DEBUG: Looking up \"%s\"...\n", hostname);
|
||||
|
||||
while ((addrlist = httpAddrGetList(hostname, AF_UNSPEC, portname)) == NULL)
|
||||
{
|
||||
_cupsLangPrintFilter(stderr, "INFO", _("Unable to locate printer \"%s\"."), hostname);
|
||||
sleep(10);
|
||||
|
||||
if (getenv("CLASS") != NULL)
|
||||
{
|
||||
fputs("STATE: -connecting-to-device\n", stderr);
|
||||
exit(CUPS_BACKEND_STOP);
|
||||
}
|
||||
|
||||
if (cancel && *cancel)
|
||||
{
|
||||
fputs("STATE: -connecting-to-device\n", stderr);
|
||||
exit(CUPS_BACKEND_OK);
|
||||
}
|
||||
}
|
||||
|
||||
fputs("STATE: -connecting-to-device\n", stderr);
|
||||
|
||||
/*
|
||||
* Log the addresses we got...
|
||||
*/
|
||||
|
||||
for (current = addrlist; current; current = current->next)
|
||||
fprintf(stderr, "DEBUG: %s=%s\n", hostname, httpAddrString(¤t->addr, addrname, sizeof(addrname)));
|
||||
|
||||
/*
|
||||
* Return...
|
||||
*/
|
||||
|
||||
return (addrlist);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'backendNetworkSideCB()' - Handle common network side-channel commands.
|
||||
*/
|
||||
@@ -100,7 +142,7 @@ backendNetworkSideCB(
|
||||
|
||||
case CUPS_SC_CMD_GET_BIDI :
|
||||
status = CUPS_SC_STATUS_OK;
|
||||
data[0] = use_bc;
|
||||
data[0] = (char)use_bc;
|
||||
datalen = 1;
|
||||
break;
|
||||
|
||||
@@ -139,13 +181,13 @@ backendNetworkSideCB(
|
||||
for (dataptr = data + strlen(data) + 1;
|
||||
count > 0 && dataptr < (data + sizeof(data) - 1);
|
||||
count --, dataptr += strlen(dataptr))
|
||||
strlcpy(dataptr, snmp_value, sizeof(data) - (dataptr - data));
|
||||
strlcpy(dataptr, snmp_value, sizeof(data) - (size_t)(dataptr - data));
|
||||
|
||||
fprintf(stderr, "DEBUG: Returning %s %s\n", data,
|
||||
data + strlen(data) + 1);
|
||||
|
||||
status = CUPS_SC_STATUS_OK;
|
||||
datalen = dataptr - data;
|
||||
datalen = (int)(dataptr - data);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -168,7 +210,7 @@ backendNetworkSideCB(
|
||||
{
|
||||
if (_cupsSNMPRead(snmp_fd, &packet, 1.0))
|
||||
{
|
||||
int i; /* Looping var */
|
||||
size_t i; /* Looping var */
|
||||
|
||||
|
||||
if (!_cupsSNMPOIDToString(packet.object_name, data, sizeof(data)))
|
||||
@@ -183,35 +225,31 @@ backendNetworkSideCB(
|
||||
switch (packet.object_type)
|
||||
{
|
||||
case CUPS_ASN1_BOOLEAN :
|
||||
snprintf(dataptr, sizeof(data) - (dataptr - data), "%d",
|
||||
packet.object_value.boolean);
|
||||
snprintf(dataptr, sizeof(data) - (size_t)(dataptr - data), "%d", packet.object_value.boolean);
|
||||
datalen += (int)strlen(dataptr);
|
||||
break;
|
||||
|
||||
case CUPS_ASN1_INTEGER :
|
||||
snprintf(dataptr, sizeof(data) - (dataptr - data), "%d",
|
||||
snprintf(dataptr, sizeof(data) - (size_t)(dataptr - data), "%d",
|
||||
packet.object_value.integer);
|
||||
datalen += (int)strlen(dataptr);
|
||||
break;
|
||||
|
||||
case CUPS_ASN1_BIT_STRING :
|
||||
case CUPS_ASN1_OCTET_STRING :
|
||||
if (packet.object_value.string.num_bytes < 0)
|
||||
i = 0;
|
||||
else if (packet.object_value.string.num_bytes <
|
||||
(sizeof(data) - (dataptr - data)))
|
||||
if (packet.object_value.string.num_bytes < (sizeof(data) - (size_t)(dataptr - data)))
|
||||
i = packet.object_value.string.num_bytes;
|
||||
else
|
||||
i = (int)(sizeof(data) - (dataptr - data));
|
||||
i = sizeof(data) - (size_t)(dataptr - data);
|
||||
|
||||
memcpy(dataptr, packet.object_value.string.bytes, i);
|
||||
|
||||
datalen += i;
|
||||
datalen += (int)i;
|
||||
break;
|
||||
|
||||
case CUPS_ASN1_OID :
|
||||
_cupsSNMPOIDToString(packet.object_value.oid, dataptr,
|
||||
sizeof(data) - (dataptr - data));
|
||||
sizeof(data) - (size_t)(dataptr - data));
|
||||
datalen += (int)strlen(dataptr);
|
||||
break;
|
||||
|
||||
@@ -220,32 +258,27 @@ backendNetworkSideCB(
|
||||
i < packet.object_value.string.num_bytes &&
|
||||
dataptr < (data + sizeof(data) - 3);
|
||||
i ++, dataptr += 2)
|
||||
sprintf(dataptr, "%02X",
|
||||
packet.object_value.string.bytes[i]);
|
||||
sprintf(dataptr, "%02X", packet.object_value.string.bytes[i]);
|
||||
datalen += (int)strlen(dataptr);
|
||||
break;
|
||||
|
||||
case CUPS_ASN1_COUNTER :
|
||||
snprintf(dataptr, sizeof(data) - (dataptr - data), "%d",
|
||||
packet.object_value.counter);
|
||||
snprintf(dataptr, sizeof(data) - (size_t)(dataptr - data), "%u", packet.object_value.counter);
|
||||
datalen += (int)strlen(dataptr);
|
||||
break;
|
||||
|
||||
case CUPS_ASN1_GAUGE :
|
||||
snprintf(dataptr, sizeof(data) - (dataptr - data), "%u",
|
||||
packet.object_value.gauge);
|
||||
snprintf(dataptr, sizeof(data) - (size_t)(dataptr - data), "%u", packet.object_value.gauge);
|
||||
datalen += (int)strlen(dataptr);
|
||||
break;
|
||||
|
||||
case CUPS_ASN1_TIMETICKS :
|
||||
snprintf(dataptr, sizeof(data) - (dataptr - data), "%u",
|
||||
packet.object_value.timeticks);
|
||||
snprintf(dataptr, sizeof(data) - (size_t)(dataptr - data), "%u", packet.object_value.timeticks);
|
||||
datalen += (int)strlen(dataptr);
|
||||
break;
|
||||
|
||||
default :
|
||||
fprintf(stderr, "DEBUG: Unknown OID value type %02X!\n",
|
||||
packet.object_type);
|
||||
fprintf(stderr, "DEBUG: Unknown OID value type %02X.\n", packet.object_type);
|
||||
|
||||
case CUPS_ASN1_NULL_VALUE :
|
||||
dataptr[0] = '\0';
|
||||
@@ -268,6 +301,12 @@ backendNetworkSideCB(
|
||||
datalen = 0;
|
||||
break;
|
||||
|
||||
case CUPS_SC_CMD_GET_CONNECTED :
|
||||
status = CUPS_SC_STATUS_OK;
|
||||
data[0] = device_fd != -1;
|
||||
datalen = 1;
|
||||
break;
|
||||
|
||||
case CUPS_SC_CMD_GET_DEVICE_ID :
|
||||
if (snmp_fd >= 0)
|
||||
{
|
||||
@@ -305,12 +344,6 @@ backendNetworkSideCB(
|
||||
break;
|
||||
}
|
||||
|
||||
case CUPS_SC_CMD_GET_CONNECTED :
|
||||
status = CUPS_SC_STATUS_OK;
|
||||
data[0] = device_fd != -1;
|
||||
datalen = 1;
|
||||
break;
|
||||
|
||||
default :
|
||||
status = CUPS_SC_STATUS_NOT_IMPLEMENTED;
|
||||
datalen = 0;
|
||||
@@ -319,8 +352,3 @@ backendNetworkSideCB(
|
||||
|
||||
return (cupsSideChannelWrite(command, status, data, datalen, 1.0));
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
@@ -5,12 +5,20 @@
|
||||
# product ID (omit for all vendor products), and a list of known issues:
|
||||
#
|
||||
# blacklist The printer is not functional with the USB backend.
|
||||
# delay-close Delay close/reset of selected interface
|
||||
# no-reattach Do no re-attach usblp kernel module after printing.
|
||||
# soft-reset Do a soft reset after printing for cleanup.
|
||||
# unidir Only supported unidirectional I/O
|
||||
# unidir Only supports 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.
|
||||
#
|
||||
# To get the USB vendor and product IDs for a given printer, run the "lsusb"
|
||||
# command, which will show something like the following:
|
||||
#
|
||||
# Bus 002 Device 003: ID ab21:34dc Acme Example Printer
|
||||
#
|
||||
# The "ab21:34dc" is the vendor and product ID, separated by a colon.
|
||||
|
||||
# HP DeskJet 895C
|
||||
0x03f0 0x0004 unidir
|
||||
@@ -51,64 +59,70 @@
|
||||
# NEC Picty800 (HP OEM)
|
||||
0x0409 0xf1be unidir
|
||||
|
||||
# Lexmark International, Inc. (e250d), https://bugs.launchpad.net/bugs/1084164
|
||||
# Lexmark International, Inc. (e250d) (https://bugs.launchpad.net/bugs/1084164)
|
||||
0x043d 0x00f3 no-reattach
|
||||
|
||||
# Kyocera Mita FS 820, by zut <kernel@zut.de>
|
||||
0x0482 0x0010 unidir
|
||||
|
||||
# Canon, Inc. PIXMA iP6000D Printer, https://bugs.launchpad.net/bugs/1160638
|
||||
# Canon, Inc. PIXMA iP6000D Printer (https://bugs.launchpad.net/bugs/1160638)
|
||||
0x04a9 0x1095 unidir
|
||||
|
||||
# Canon, Inc. PIXMA iP4200 Printer, http://www.cups.org/str.php?L4155
|
||||
# Canon, Inc. PIXMA iP4200 Printer (Issue #4155)
|
||||
0x04a9 0x10a2 unidir
|
||||
|
||||
# Canon, Inc. PIXMA iP4300 Printer, https://bugs.launchpad.net/bugs/1032385
|
||||
# Canon, Inc. PIXMA iP4300 Printer (https://bugs.launchpad.net/bugs/1032385)
|
||||
0x04a9 0x10b6 unidir
|
||||
|
||||
# Canon, Inc. MP210 https://bugzilla.redhat.com/show_bug.cgi?id=847923#c53
|
||||
# Canon, Inc. MP210 (https://bugzilla.redhat.com/show_bug.cgi?id=847923#c53)
|
||||
0x04a9 0x1721 unidir
|
||||
|
||||
# Canon, Inc. MP500 Printer, https://bugs.launchpad.net/bugs/1032456
|
||||
# Canon, Inc. MP500 Printer (https://bugs.launchpad.net/bugs/1032456)
|
||||
0x04a9 0x170c unidir
|
||||
|
||||
# Canon, Inc. MP510 Printer, https://bugs.launchpad.net/bugs/1050009
|
||||
# Canon, Inc. MP510 Printer (https://bugs.launchpad.net/bugs/1050009)
|
||||
0x04a9 0x1717 unidir
|
||||
|
||||
# Canon, Inc. MP550 Printer, http://www.cups.org/str.php?L4155
|
||||
# Canon, Inc. MP540 Printer, https://bugzilla.redhat.com/967873
|
||||
0x04a9 0x1730 unidir
|
||||
|
||||
# Canon, Inc. MP550 Printer (Issue #4155)
|
||||
0x04a9 0x173d unidir
|
||||
|
||||
# Canon, Inc. MP560 Printer, http://www.cups.org/str.php?L4155
|
||||
# Canon, Inc. MP560 Printer (Issue #4155)
|
||||
0x04a9 0x173e unidir
|
||||
|
||||
# Canon, Inc. MF4150 Printer, https://bugs.launchpad.net/bugs/1160638
|
||||
# Canon, Inc. MF4150 Printer (https://bugs.launchpad.net/bugs/1160638)
|
||||
0x04a9 0x26a3 no-reattach
|
||||
|
||||
# Brother Industries, Ltd HL-1430 Laser Printer, https://bugs.launchpad.net/bugs/1038695
|
||||
# Brother Industries, Ltd HL-1250 Laser Printer (https://bugs.debian.org/712512)
|
||||
0x04f9 0x0007 no-reattach
|
||||
|
||||
# Brother Industries, Ltd HL-1430 Laser Printer (https://bugs.launchpad.net/bugs/1038695)
|
||||
0x04f9 0x001a no-reattach
|
||||
|
||||
# Brother Industries, Ltd HL-1440 Laser Printer, https://bugs.launchpad.net/bugs/1000253
|
||||
# Brother Industries, Ltd HL-1440 Laser Printer (https://bugs.launchpad.net/bugs/1000253)
|
||||
0x04f9 0x000d no-reattach unidir
|
||||
|
||||
# Brother Industries, Ltd HL-1450 Laser Printer, https://bugs.launchpad.net/bugs/1000253
|
||||
# Brother Industries, Ltd HL-1450 Laser Printer (https://bugs.launchpad.net/bugs/1000253)
|
||||
0x04f9 0x000e no-reattach unidir
|
||||
|
||||
# Oki Data Corp. Okipage 14ex Printer, https://bugs.launchpad.net/bugs/872483
|
||||
# Oki Data Corp. Okipage 14ex Printer (https://bugs.launchpad.net/bugs/872483)
|
||||
0x06bc 0x000b no-reattach
|
||||
|
||||
# Oki Data Corp. B410d, https://bugs.launchpad.net/bugs/872483
|
||||
# Oki Data Corp. B410d (https://bugs.launchpad.net/bugs/872483)
|
||||
0x06bc 0x01c7 no-reattach
|
||||
|
||||
# Seiko Epson Corp. Stylus Color 740 / Photo 750, http://bugs.debian.org/697970
|
||||
# Seiko Epson Corp. Stylus Color 740 / Photo 750 (http://bugs.debian.org/697970)
|
||||
0x04b8 0x0001 no-reattach unidir
|
||||
|
||||
# Seiko Epson Corp. Stylus Color 670, https://bugs.launchpad.net/bugs/872483
|
||||
# Seiko Epson Corp. Stylus Color 670 (https://bugs.launchpad.net/bugs/872483)
|
||||
0x04b8 0x0005 no-reattach
|
||||
|
||||
# Seiko Epson Receipt Printer M129C
|
||||
0x04b8 0x0202 vendor-class
|
||||
|
||||
# Prolific Technology, Inc. PL2305 Parallel Port (USB -> Parallel adapter), https://bugs.launchpad.net/bugs/987485
|
||||
# Prolific Technology, Inc. PL2305 Parallel Port (USB -> Parallel adapter) (https://bugs.launchpad.net/bugs/987485)
|
||||
0x067b 0x2305 no-reattach soft-reset unidir
|
||||
|
||||
# Xerox Phaser 3124 https://bugzilla.redhat.com/show_bug.cgi?id=867392
|
||||
@@ -117,13 +131,16 @@
|
||||
# Xerox WorkCentre 3210 https://bugs.launchpad.net/bugs/1102470
|
||||
0x0924 0x4293 no-reattach
|
||||
|
||||
# QinHeng Electronics CH340S (USB -> Parallel adapter), https://bugs.launchpad.net/bugs/1000253
|
||||
# QinHeng Electronics CH340S (USB -> Parallel adapter) (https://bugs.launchpad.net/bugs/1000253)
|
||||
0x1a86 0x7584 no-reattach
|
||||
|
||||
# All Samsung devices, https://bugs.launchpad.net/bugs/1032456
|
||||
# All Samsung devices (https://bugs.launchpad.net/bugs/1032456)
|
||||
0x04e8 soft-reset
|
||||
|
||||
# All Zebra devices, https://bugs.launchpad.net/bugs/1001028
|
||||
# Samsung ML-2160 Series (https://bugzilla.redhat.com/show_bug.cgi?id=873123)
|
||||
0x04e8 0x330f unidir
|
||||
|
||||
# All Zebra devices (https://bugs.launchpad.net/bugs/1001028)
|
||||
0x0a5f unidir
|
||||
|
||||
# Canon CP-10
|
||||
@@ -212,3 +229,58 @@
|
||||
|
||||
# Lexmark E238 (<rdar://problem/14493054>)
|
||||
0x043d 0x00d7 no-reattach
|
||||
|
||||
# Lexmark E238 (Issue #4448)
|
||||
0x043d 0x009a no-reattach
|
||||
|
||||
# Canon MX310 (Issue #4482)
|
||||
0x04a9 0x1728 unidir
|
||||
|
||||
# Canon MX320 (Issue #4482)
|
||||
0x04A9 0x1736 unidir
|
||||
|
||||
# All Intermec devices (Issue #4553)
|
||||
0x067e no-reattach
|
||||
|
||||
# HP LaserJet 1150 (Issue #4549)
|
||||
0x03f0 0x0f17 delay-close
|
||||
|
||||
# HP LaserJet 1300 (Issue #4549)
|
||||
0x03f0 0x1017 delay-close
|
||||
0x03f0 0x1117 delay-close
|
||||
|
||||
# HP LaserJet 1320 (Issue #4549)
|
||||
0x03f0 0x1d17 delay-close
|
||||
|
||||
# Canon, Inc. MP530 Printer
|
||||
0x04a9 0x1712 unidir
|
||||
|
||||
# Xerox WorkCentre 3220 (https://bugs.launchpad.net/bugs/1406203, Issue #4789)
|
||||
0x0924 0x4294 no-reattach
|
||||
|
||||
# Lexmark C540n (Issue #4778)
|
||||
0x043d 0x0139 no-reattach
|
||||
|
||||
# Kyocera Ecosys P6026cdn (Issue #4900)
|
||||
0x0482 0x063f no-reattach
|
||||
|
||||
# Kyocera Ecosys P6130cdn (Issue #5102)
|
||||
0x0482 0x0677 no-reattach
|
||||
|
||||
# Lexmark E260dn (Issue #4994)
|
||||
0x043d 0x0123 no-reattach
|
||||
|
||||
# HP LaserJet 1160 (Issue #5121)
|
||||
0x03f0 0x1e17 delay-close
|
||||
|
||||
# Canon, Inc. MP280 series (Issue #5221)
|
||||
0x04a9 0x1746 unidir
|
||||
|
||||
# Star Micronics printers (Issue #5251)
|
||||
0x0519 unidir
|
||||
|
||||
# Lexmark Optra E310 (Issue #5259)
|
||||
0x043d 0x000c no-reattach
|
||||
|
||||
# HP LaserJet P1102 (Issue #5310)
|
||||
0x03F0 0x002A no-reattach
|
||||
|
||||
+8
-14
@@ -1,18 +1,16 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# "$Id$"
|
||||
# Psuedo-backend for CUPS testing purposes.
|
||||
#
|
||||
# Psuedo-backend for CUPS testing purposes.
|
||||
# Copyright 2011 by Apple Inc.
|
||||
#
|
||||
# Copyright 2011 by Apple Inc.
|
||||
# These coded instructions, statements, and computer programs are the
|
||||
# property of Apple Inc. and are protected by Federal copyright
|
||||
# law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
# which should have been included with this file. If this file is
|
||||
# file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
#
|
||||
# These coded instructions, statements, and computer programs are the
|
||||
# property of Apple Inc. and are protected by Federal copyright
|
||||
# law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
# which should have been included with this file. If this file is
|
||||
# file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
#
|
||||
# This file is subject to the Apple OS-Developed Software exception.
|
||||
# This file is subject to the Apple OS-Developed Software exception.
|
||||
#
|
||||
|
||||
if test $# = 0; then
|
||||
@@ -24,7 +22,3 @@ fi
|
||||
cat $6 >/dev/null
|
||||
sleep 5
|
||||
exit 0
|
||||
|
||||
#
|
||||
# End of "$Id$".
|
||||
#
|
||||
|
||||
+11
-34
@@ -1,25 +1,11 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* Common run loop APIs for CUPS backends.
|
||||
*
|
||||
* Common run loop APIs for CUPS backends.
|
||||
* Copyright © 2007-2014 by Apple Inc.
|
||||
* Copyright © 2006-2007 by Easy Software Products, all rights reserved.
|
||||
*
|
||||
* Copyright 2007-2012 by Apple Inc.
|
||||
* Copyright 2006-2007 by Easy Software Products, all rights reserved.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
* property of Apple Inc. and are protected by Federal copyright
|
||||
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
* "LICENSE" which should have been included with this file. If this
|
||||
* file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
*
|
||||
* This file is subject to the Apple OS-Developed Software exception.
|
||||
*
|
||||
* Contents:
|
||||
*
|
||||
* backendDrainOutput() - Drain pending print data to the device.
|
||||
* backendRunLoop() - Read and write print and back-channel data.
|
||||
* backendWaitLoop() - Wait for input from stdin while handling
|
||||
* side-channel queries.
|
||||
* Licensed under Apache License v2.0. See the file "LICENSE" for more
|
||||
* information.
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -28,11 +14,7 @@
|
||||
|
||||
#include "backend-private.h"
|
||||
#include <limits.h>
|
||||
#ifdef __hpux
|
||||
# include <sys/time.h>
|
||||
#else
|
||||
# include <sys/select.h>
|
||||
#endif /* __hpux */
|
||||
#include <sys/select.h>
|
||||
|
||||
|
||||
/*
|
||||
@@ -90,7 +72,7 @@ backendDrainOutput(int print_fd, /* I - Print file descriptor */
|
||||
* Read error - bail if we don't see EAGAIN or EINTR...
|
||||
*/
|
||||
|
||||
if (errno != EAGAIN || errno != EINTR)
|
||||
if (errno != EAGAIN && errno != EINTR)
|
||||
{
|
||||
fprintf(stderr, "DEBUG: Read failed: %s\n", strerror(errno));
|
||||
_cupsLangPrintFilter(stderr, "ERROR", _("Unable to read print data."));
|
||||
@@ -113,7 +95,7 @@ backendDrainOutput(int print_fd, /* I - Print file descriptor */
|
||||
|
||||
for (print_ptr = print_buffer; print_bytes > 0;)
|
||||
{
|
||||
if ((bytes = write(device_fd, print_ptr, print_bytes)) < 0)
|
||||
if ((bytes = write(device_fd, print_ptr, (size_t)print_bytes)) < 0)
|
||||
{
|
||||
/*
|
||||
* Write error - bail if we don't see an error we can retry...
|
||||
@@ -293,7 +275,7 @@ backendRunLoop(
|
||||
fprintf(stderr,
|
||||
"DEBUG: Received " CUPS_LLFMT " bytes of back-channel data\n",
|
||||
CUPS_LLCAST bc_bytes);
|
||||
cupsBackChannelWrite(bc_buffer, bc_bytes, 1.0);
|
||||
cupsBackChannelWrite(bc_buffer, (size_t)bc_bytes, 1.0);
|
||||
}
|
||||
else if (bc_bytes < 0 && errno != EAGAIN && errno != EINTR)
|
||||
{
|
||||
@@ -318,7 +300,7 @@ backendRunLoop(
|
||||
* Read error - bail if we don't see EAGAIN or EINTR...
|
||||
*/
|
||||
|
||||
if (errno != EAGAIN || errno != EINTR)
|
||||
if (errno != EAGAIN && errno != EINTR)
|
||||
{
|
||||
fprintf(stderr, "DEBUG: Read failed: %s\n", strerror(errno));
|
||||
_cupsLangPrintFilter(stderr, "ERROR",
|
||||
@@ -350,7 +332,7 @@ backendRunLoop(
|
||||
|
||||
if (print_bytes && FD_ISSET(device_fd, &output))
|
||||
{
|
||||
if ((bytes = write(device_fd, print_ptr, print_bytes)) < 0)
|
||||
if ((bytes = write(device_fd, print_ptr, (size_t)print_bytes)) < 0)
|
||||
{
|
||||
/*
|
||||
* Write error - bail if we don't see an error we can retry...
|
||||
@@ -536,8 +518,3 @@ backendWaitLoop(
|
||||
|
||||
return (1);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+53
-39
@@ -1,24 +1,10 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* SNMP supplies functions for CUPS.
|
||||
*
|
||||
* SNMP supplies functions for CUPS.
|
||||
* Copyright © 2008-2015 by Apple Inc.
|
||||
*
|
||||
* Copyright 2008-2012 by Apple Inc.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
* property of Apple Inc. and are protected by Federal copyright
|
||||
* 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:
|
||||
*
|
||||
* backendSNMPSupplies() - Get the current supplies for a device.
|
||||
* backend_init_supplies() - Initialize the supplies list.
|
||||
* backend_walk_cb() - Interpret the supply value responses.
|
||||
* utf16_to_utf8() - Convert UTF-16 text to UTF-8.
|
||||
* Licensed under Apache License v2.0. See the file "LICENSE" for more
|
||||
* information.
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -26,6 +12,7 @@
|
||||
*/
|
||||
|
||||
#include "backend-private.h"
|
||||
#include <cups/ppd-private.h>
|
||||
#include <cups/array.h>
|
||||
|
||||
|
||||
@@ -62,6 +49,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 +136,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 +252,9 @@ backendSNMPSupplies(
|
||||
else
|
||||
percent = 50;
|
||||
|
||||
if (supplies[i].sclass == CUPS_TC_receptacleThatIsFilled)
|
||||
percent = 100 - percent;
|
||||
|
||||
if (percent <= 5)
|
||||
{
|
||||
switch (supplies[i].type)
|
||||
@@ -293,6 +291,7 @@ backendSNMPSupplies(
|
||||
else
|
||||
new_supply_state |= CUPS_OPC_NEAR_EOL;
|
||||
break;
|
||||
#if 0 /* Because no two vendors report waste containers the same, disable SNMP reporting of same */
|
||||
case CUPS_TC_wasteInk :
|
||||
case CUPS_TC_wastePaper :
|
||||
case CUPS_TC_wasteToner :
|
||||
@@ -303,6 +302,7 @@ backendSNMPSupplies(
|
||||
else
|
||||
new_supply_state |= CUPS_WASTE_ALMOST_FULL;
|
||||
break;
|
||||
#endif /* 0 */
|
||||
case CUPS_TC_cleanerUnit :
|
||||
case CUPS_TC_fuserCleaningPad :
|
||||
if (percent <= 1)
|
||||
@@ -318,9 +318,9 @@ backendSNMPSupplies(
|
||||
|
||||
if ((supplies[i].max_capacity > 0 || (quirks & CUPS_SNMP_CAPACITY)) &&
|
||||
supplies[i].level >= 0)
|
||||
snprintf(ptr, sizeof(value) - (ptr - value), "%d", percent);
|
||||
snprintf(ptr, sizeof(value) - (size_t)(ptr - value), "%d", percent);
|
||||
else
|
||||
strlcpy(ptr, "-1", sizeof(value) - (ptr - value));
|
||||
strlcpy(ptr, "-1", sizeof(value) - (size_t)(ptr - value));
|
||||
}
|
||||
|
||||
fprintf(stderr, "ATTR: marker-levels=%s\n", value);
|
||||
@@ -561,20 +561,20 @@ 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)))
|
||||
{
|
||||
if (!strcmp(description, value))
|
||||
cupsFileRead(cachefile, (char *)supplies,
|
||||
num_supplies * sizeof(backend_supplies_t));
|
||||
(size_t)num_supplies * sizeof(backend_supplies_t));
|
||||
else
|
||||
{
|
||||
num_supplies = -1;
|
||||
@@ -664,12 +664,12 @@ 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)
|
||||
cupsFileWrite(cachefile, (char *)supplies,
|
||||
num_supplies * sizeof(backend_supplies_t));
|
||||
(size_t)num_supplies * sizeof(backend_supplies_t));
|
||||
|
||||
cupsFileClose(cachefile);
|
||||
}
|
||||
@@ -697,7 +697,7 @@ backend_init_supplies(
|
||||
if (i)
|
||||
*ptr++ = ',';
|
||||
|
||||
strlcpy(ptr, supplies[i].color, sizeof(value) - (ptr - value));
|
||||
strlcpy(ptr, supplies[i].color, sizeof(value) - (size_t)(ptr - value));
|
||||
}
|
||||
|
||||
fprintf(stderr, "ATTR: marker-colors=%s\n", value);
|
||||
@@ -745,9 +745,9 @@ backend_init_supplies(
|
||||
type = supplies[i].type;
|
||||
|
||||
if (type < CUPS_TC_other || type > CUPS_TC_covers)
|
||||
strlcpy(ptr, "unknown", sizeof(value) - (ptr - value));
|
||||
strlcpy(ptr, "unknown", sizeof(value) - (size_t)(ptr - value));
|
||||
else
|
||||
strlcpy(ptr, types[type - CUPS_TC_other], sizeof(value) - (ptr - value));
|
||||
strlcpy(ptr, types[type - CUPS_TC_other], sizeof(value) - (size_t)(ptr - value));
|
||||
}
|
||||
|
||||
fprintf(stderr, "ATTR: marker-types=%s\n", value);
|
||||
@@ -969,6 +969,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))
|
||||
{
|
||||
/*
|
||||
@@ -1032,9 +1051,9 @@ utf16_to_utf8(
|
||||
for (ptr = temp; srcsize >= 2;)
|
||||
{
|
||||
if (le)
|
||||
ch = src[0] | (src[1] << 8);
|
||||
ch = (cups_utf32_t)(src[0] | (src[1] << 8));
|
||||
else
|
||||
ch = (src[0] << 8) | src[1];
|
||||
ch = (cups_utf32_t)((src[0] << 8) | src[1]);
|
||||
|
||||
src += 2;
|
||||
srcsize -= 2;
|
||||
@@ -1045,13 +1064,13 @@ utf16_to_utf8(
|
||||
* Multi-word UTF-16 char...
|
||||
*/
|
||||
|
||||
int lch; /* Lower word */
|
||||
cups_utf32_t lch; /* Lower word */
|
||||
|
||||
|
||||
if (le)
|
||||
lch = src[0] | (src[1] << 8);
|
||||
lch = (cups_utf32_t)(src[0] | (src[1] << 8));
|
||||
else
|
||||
lch = (src[0] << 8) | src[1];
|
||||
lch = (cups_utf32_t)((src[0] << 8) | src[1]);
|
||||
|
||||
if (lch >= 0xdc00 && lch <= 0xdfff)
|
||||
{
|
||||
@@ -1068,10 +1087,5 @@ utf16_to_utf8(
|
||||
|
||||
*ptr = '\0';
|
||||
|
||||
cupsUTF32ToUTF8(dst, temp, dstsize);
|
||||
cupsUTF32ToUTF8(dst, temp, (int)dstsize);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+14
-53
@@ -1,44 +1,11 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* SNMP discovery backend for CUPS.
|
||||
*
|
||||
* SNMP discovery backend for CUPS.
|
||||
* Copyright © 2007-2014 by Apple Inc.
|
||||
* Copyright © 2006-2007 by Easy Software Products, all rights reserved.
|
||||
*
|
||||
* Copyright 2007-2012 by Apple Inc.
|
||||
* Copyright 2006-2007 by Easy Software Products, all rights reserved.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
* property of Apple Inc. and are protected by Federal copyright
|
||||
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
* "LICENSE" which should have been included with this file. If this
|
||||
* file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
*
|
||||
* This file is subject to the Apple OS-Developed Software exception.
|
||||
*
|
||||
* Contents:
|
||||
*
|
||||
* main() - Discover printers via SNMP.
|
||||
* add_array() - Add a string to an array.
|
||||
* add_cache() - Add a cached device...
|
||||
* add_device_uri() - Add a device URI to the cache.
|
||||
* alarm_handler() - Handle alarm signals...
|
||||
* compare_cache() - Compare two cache entries.
|
||||
* debug_printf() - Display some debugging information.
|
||||
* fix_make_model() - Fix common problems in the make-and-model
|
||||
* string.
|
||||
* free_array() - Free an array of strings.
|
||||
* free_cache() - Free the array of cached devices.
|
||||
* get_interface_addresses() - Get the broadcast address(es) associated with
|
||||
* an interface.
|
||||
* list_device() - List a device we found...
|
||||
* password_cb() - Handle authentication requests.
|
||||
* probe_device() - Probe a device to discover whether it is a
|
||||
* printer.
|
||||
* read_snmp_conf() - Read the snmp.conf file.
|
||||
* read_snmp_response() - Read and parse a SNMP response...
|
||||
* run_time() - Return the total running time...
|
||||
* scan_devices() - Scan for devices using SNMP.
|
||||
* try_connect() - Try connecting on a port...
|
||||
* update_cache() - Update a cached device...
|
||||
* Licensed under Apache License v2.0. See the file "LICENSE" for more
|
||||
* information.
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -532,17 +499,16 @@ fix_make_model(
|
||||
make_model[0] = 'H';
|
||||
make_model[1] = 'P';
|
||||
make_model[2] = ' ';
|
||||
strlcpy(make_model + 3, mmptr, make_model_size - 3);
|
||||
strlcpy(make_model + 3, mmptr, (size_t)make_model_size - 3);
|
||||
}
|
||||
else if (!_cups_strncasecmp(old_make_model, "deskjet", 7))
|
||||
snprintf(make_model, make_model_size, "HP DeskJet%s", old_make_model + 7);
|
||||
snprintf(make_model, (size_t)make_model_size, "HP DeskJet%s", old_make_model + 7);
|
||||
else if (!_cups_strncasecmp(old_make_model, "officejet", 9))
|
||||
snprintf(make_model, make_model_size, "HP OfficeJet%s", old_make_model + 9);
|
||||
snprintf(make_model, (size_t)make_model_size, "HP OfficeJet%s", old_make_model + 9);
|
||||
else if (!_cups_strncasecmp(old_make_model, "stylus_pro_", 11))
|
||||
snprintf(make_model, make_model_size, "EPSON Stylus Pro %s",
|
||||
old_make_model + 11);
|
||||
snprintf(make_model, (size_t)make_model_size, "EPSON Stylus Pro %s", old_make_model + 11);
|
||||
else
|
||||
strlcpy(make_model, old_make_model, make_model_size);
|
||||
strlcpy(make_model, old_make_model, (size_t)make_model_size);
|
||||
|
||||
if ((mmptr = strstr(make_model, ", Inc.,")) != NULL)
|
||||
{
|
||||
@@ -753,7 +719,7 @@ probe_device(snmp_cache_t *device) /* I - Device */
|
||||
* Insert hostname/address...
|
||||
*/
|
||||
|
||||
strlcpy(uriptr, device->addrname, sizeof(uri) - (uriptr - uri));
|
||||
strlcpy(uriptr, device->addrname, sizeof(uri) - (size_t)(uriptr - uri));
|
||||
uriptr += strlen(uriptr);
|
||||
format += 2;
|
||||
}
|
||||
@@ -1233,7 +1199,7 @@ scan_devices(int ipv4, /* I - SNMP IPv4 socket */
|
||||
for (addr = addrs; addr; addr = addr->next)
|
||||
{
|
||||
#ifdef AF_INET6
|
||||
if (_httpAddrFamily(&(addr->addr)) == AF_INET6)
|
||||
if (httpAddrFamily(&(addr->addr)) == AF_INET6)
|
||||
fd = ipv6;
|
||||
else
|
||||
#endif /* AF_INET6 */
|
||||
@@ -1335,7 +1301,7 @@ try_connect(http_addr_t *addr, /* I - Socket address */
|
||||
debug_printf("DEBUG: %.3f Trying %s://%s:%d...\n", run_time(),
|
||||
port == 515 ? "lpd" : "socket", addrname, port);
|
||||
|
||||
if ((fd = socket(_httpAddrFamily(addr), SOCK_STREAM, 0)) < 0)
|
||||
if ((fd = socket(httpAddrFamily(addr), SOCK_STREAM, 0)) < 0)
|
||||
{
|
||||
fprintf(stderr, "ERROR: Unable to create socket: %s\n",
|
||||
strerror(errno));
|
||||
@@ -1346,7 +1312,7 @@ try_connect(http_addr_t *addr, /* I - Socket address */
|
||||
|
||||
alarm(1);
|
||||
|
||||
status = connect(fd, (void *)addr, httpAddrLength(addr));
|
||||
status = connect(fd, (void *)addr, (socklen_t)httpAddrLength(addr));
|
||||
|
||||
close(fd);
|
||||
alarm(0);
|
||||
@@ -1388,8 +1354,3 @@ update_cache(snmp_cache_t *device, /* I - Device */
|
||||
|
||||
list_device(device);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+17
-50
@@ -1,23 +1,11 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* AppSocket backend for CUPS.
|
||||
*
|
||||
* AppSocket backend for CUPS.
|
||||
* Copyright © 2007-2016 by Apple Inc.
|
||||
* Copyright © 1997-2007 by Easy Software Products, all rights reserved.
|
||||
*
|
||||
* Copyright 2007-2012 by Apple Inc.
|
||||
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
* 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.
|
||||
* wait_bc() - Wait for back-channel data...
|
||||
* Licensed under Apache License v2.0. See the file "LICENSE" for more
|
||||
* information.
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -46,7 +34,7 @@
|
||||
* Local functions...
|
||||
*/
|
||||
|
||||
static int wait_bc(int device_fd, int secs);
|
||||
static ssize_t wait_bc(int device_fd, int secs);
|
||||
|
||||
|
||||
/*
|
||||
@@ -76,7 +64,6 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
|
||||
int contimeout; /* Connection timeout */
|
||||
int waiteof; /* Wait for end-of-file? */
|
||||
int port; /* Port number */
|
||||
char portname[255]; /* Port name */
|
||||
int delay; /* Delay for retries... */
|
||||
int device_fd; /* AppSocket */
|
||||
int error; /* Error code (if any) */
|
||||
@@ -250,8 +237,8 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
|
||||
*/
|
||||
|
||||
snmp_enabled = !value[0] || !_cups_strcasecmp(value, "on") ||
|
||||
_cups_strcasecmp(value, "yes") ||
|
||||
_cups_strcasecmp(value, "true");
|
||||
!_cups_strcasecmp(value, "yes") ||
|
||||
!_cups_strcasecmp(value, "true");
|
||||
}
|
||||
else if (!_cups_strcasecmp(name, "contimeout"))
|
||||
{
|
||||
@@ -271,23 +258,7 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
|
||||
|
||||
start_time = time(NULL);
|
||||
|
||||
sprintf(portname, "%d", port);
|
||||
|
||||
fputs("STATE: +connecting-to-device\n", stderr);
|
||||
fprintf(stderr, "DEBUG: Looking up \"%s\"...\n", hostname);
|
||||
|
||||
while ((addrlist = httpAddrGetList(hostname, AF_UNSPEC, portname)) == NULL)
|
||||
{
|
||||
_cupsLangPrintFilter(stderr, "INFO",
|
||||
_("Unable to locate printer \"%s\"."), hostname);
|
||||
sleep(10);
|
||||
|
||||
if (getenv("CLASS") != NULL)
|
||||
{
|
||||
fputs("STATE: -connecting-to-device\n", stderr);
|
||||
return (CUPS_BACKEND_STOP);
|
||||
}
|
||||
}
|
||||
addrlist = backendLookup(hostname, port, NULL);
|
||||
|
||||
/*
|
||||
* See if the printer supports SNMP...
|
||||
@@ -354,8 +325,7 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
|
||||
|
||||
fprintf(stderr, "DEBUG: Connection error: %s\n", strerror(error));
|
||||
|
||||
if (error == ECONNREFUSED || error == EHOSTDOWN ||
|
||||
error == EHOSTUNREACH)
|
||||
if (errno == ECONNREFUSED || errno == EHOSTDOWN || errno == EHOSTUNREACH || errno == ETIMEDOUT || errno == ENOTCONN)
|
||||
{
|
||||
if (contimeout && (time(NULL) - start_time) > contimeout)
|
||||
{
|
||||
@@ -373,19 +343,19 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
|
||||
break;
|
||||
|
||||
case EHOSTUNREACH :
|
||||
default :
|
||||
_cupsLangPrintFilter(stderr, "WARNING",
|
||||
_("The printer is unreachable at this "
|
||||
"time."));
|
||||
break;
|
||||
|
||||
case ECONNREFUSED :
|
||||
default :
|
||||
_cupsLangPrintFilter(stderr, "WARNING",
|
||||
_("The printer is in use."));
|
||||
break;
|
||||
}
|
||||
|
||||
sleep(delay);
|
||||
sleep((unsigned)delay);
|
||||
|
||||
if (delay < 30)
|
||||
delay += 5;
|
||||
@@ -415,7 +385,7 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
|
||||
tbytes = 0;
|
||||
|
||||
if (bytes > 0)
|
||||
tbytes += write(device_fd, buffer, bytes);
|
||||
tbytes += write(device_fd, buffer, (size_t)bytes);
|
||||
|
||||
while (copies > 0 && tbytes >= 0)
|
||||
{
|
||||
@@ -434,6 +404,8 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
|
||||
_cupsLangPrintFilter(stderr, "INFO", _("Print file sent."));
|
||||
}
|
||||
|
||||
fputs("STATE: +cups-waiting-for-job-completed\n", stderr);
|
||||
|
||||
if (waiteof)
|
||||
{
|
||||
/*
|
||||
@@ -479,7 +451,7 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
|
||||
* 'wait_bc()' - Wait for back-channel data...
|
||||
*/
|
||||
|
||||
static int /* O - # bytes read or -1 on error */
|
||||
static ssize_t /* O - # bytes read or -1 on error */
|
||||
wait_bc(int device_fd, /* I - Socket */
|
||||
int secs) /* I - Seconds to wait */
|
||||
{
|
||||
@@ -509,7 +481,7 @@ wait_bc(int device_fd, /* I - Socket */
|
||||
{
|
||||
fprintf(stderr, "DEBUG: Received %d bytes of back-channel data\n",
|
||||
(int)bytes);
|
||||
cupsBackChannelWrite(buffer, bytes, 1.0);
|
||||
cupsBackChannelWrite(buffer, (size_t)bytes, 1.0);
|
||||
}
|
||||
|
||||
return (bytes);
|
||||
@@ -517,8 +489,3 @@ wait_bc(int device_fd, /* I - Socket */
|
||||
else
|
||||
return (-1);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+5
-21
@@ -1,22 +1,11 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* IEEE-1284 support functions test program for CUPS.
|
||||
*
|
||||
* IEEE-1284 support functions test program for CUPS.
|
||||
* Copyright © 2007-2010 by Apple Inc.
|
||||
* Copyright © 1997-2006 by Easy Software Products, all rights reserved.
|
||||
*
|
||||
* Copyright 2007-2010 by Apple Inc.
|
||||
* Copyright 1997-2006 by Easy Software Products, all rights reserved.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
* property of Apple Inc. and are protected by Federal copyright
|
||||
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
* "LICENSE" which should have been included with this file. If this
|
||||
* file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
*
|
||||
* This file is subject to the Apple OS-Developed Software exception.
|
||||
*
|
||||
* Contents:
|
||||
*
|
||||
* main() - Test the device-ID functions.
|
||||
* Licensed under Apache License v2.0. See the file "LICENSE" for more
|
||||
* information.
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -77,8 +66,3 @@ main(int argc, /* I - Number of command-line args */
|
||||
|
||||
return (0);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+14
-30
@@ -1,25 +1,11 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* Backend test program for CUPS.
|
||||
*
|
||||
* Backend test program for CUPS.
|
||||
* Copyright © 2007-2014 by Apple Inc.
|
||||
* Copyright © 1997-2005 by Easy Software Products, all rights reserved.
|
||||
*
|
||||
* Copyright 2007-2012 by Apple Inc.
|
||||
* Copyright 1997-2005 by Easy Software Products, all rights reserved.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
* property of Apple Inc. and are protected by Federal copyright
|
||||
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
* "LICENSE" which should have been included with this file. If this
|
||||
* file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
*
|
||||
* This file is subject to the Apple OS-Developed Software exception.
|
||||
*
|
||||
* Contents:
|
||||
*
|
||||
* main() - Run the named backend.
|
||||
* sigterm_handler() - Flag when we get SIGTERM.
|
||||
* usage() - Show usage information.
|
||||
* walk_cb() - Show results of cupsSideChannelSNMPWalk...
|
||||
* Licensed under Apache License v2.0. See the file "LICENSE" for more
|
||||
* information.
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -97,7 +83,7 @@ main(int argc, /* I - Number of command-line args */
|
||||
if (getcwd(libpath, sizeof(libpath)) &&
|
||||
(ptr = strrchr(libpath, '/')) != NULL && !strcmp(ptr, "/backend"))
|
||||
{
|
||||
strlcpy(ptr, "/cups", sizeof(libpath) - (ptr - libpath));
|
||||
strlcpy(ptr, "/cups", sizeof(libpath) - (size_t)(ptr - libpath));
|
||||
if (!access(libpath, 0))
|
||||
{
|
||||
#ifdef __APPLE__
|
||||
@@ -311,7 +297,7 @@ main(int argc, /* I - Number of command-line args */
|
||||
*/
|
||||
|
||||
if ((bytes = cupsBackChannelRead(buffer, sizeof(buffer), 0)) > 0)
|
||||
write(2, buffer, bytes);
|
||||
write(2, buffer, (size_t)bytes);
|
||||
|
||||
/*
|
||||
* Throttle output to ~100hz...
|
||||
@@ -339,7 +325,7 @@ main(int argc, /* I - Number of command-line args */
|
||||
*/
|
||||
|
||||
while ((bytes = cupsBackChannelRead(buffer, sizeof(buffer), 5.0)) > 0)
|
||||
write(2, buffer, bytes);
|
||||
write(2, buffer, (size_t)bytes);
|
||||
|
||||
exit(0);
|
||||
}
|
||||
@@ -414,7 +400,7 @@ main(int argc, /* I - Number of command-line args */
|
||||
while ((bytes = cupsBackChannelRead(buffer, sizeof(buffer),
|
||||
timeout)) > 0)
|
||||
{
|
||||
write(2, buffer, bytes);
|
||||
write(2, buffer, (size_t)bytes);
|
||||
timeout = 5.0;
|
||||
}
|
||||
write(2, "\nDEBUG: END\n", 12);
|
||||
@@ -668,21 +654,19 @@ walk_cb(const char *oid, /* I - OID */
|
||||
void *context) /* I - Context (unused) */
|
||||
{
|
||||
char temp[80];
|
||||
if (datalen > (sizeof(temp) - 1))
|
||||
|
||||
(void)context;
|
||||
|
||||
if ((size_t)datalen > (sizeof(temp) - 1))
|
||||
{
|
||||
memcpy(temp, data, sizeof(temp) - 1);
|
||||
temp[sizeof(temp) - 1] = '\0';
|
||||
}
|
||||
else
|
||||
{
|
||||
memcpy(temp, data, datalen);
|
||||
memcpy(temp, data, (size_t)datalen);
|
||||
temp[datalen] = '\0';
|
||||
}
|
||||
|
||||
printf("CUPS_SC_CMD_SNMP_WALK %s, %d bytes (%s)\n", oid, datalen, temp);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
@@ -1,21 +1,10 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* SNMP supplies test program for CUPS.
|
||||
*
|
||||
* SNMP supplies test program for CUPS.
|
||||
* Copyright © 2008-2011 by Apple Inc.
|
||||
*
|
||||
* Copyright 2008-2011 by Apple Inc.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
* property of Apple Inc. and are protected by Federal copyright
|
||||
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
* "LICENSE" which should have been included with this file. If this
|
||||
* file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
*
|
||||
* This file is subject to the Apple OS-Developed Software exception.
|
||||
*
|
||||
* Contents:
|
||||
*
|
||||
* main() - Show the supplies state of a printer.
|
||||
* Licensed under Apache License v2.0. See the file "LICENSE" for more
|
||||
* information.
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -76,8 +65,3 @@ main(int argc, /* I - Number of command-line args */
|
||||
sleep(5);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+577
-451
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
+39
-50
@@ -1,35 +1,9 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* LIBUSB interface code for CUPS.
|
||||
*
|
||||
* LIBUSB interface code for CUPS.
|
||||
* Copyright 2007-2015 by Apple Inc.
|
||||
*
|
||||
* Copyright 2007-2013 by Apple Inc.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
* property of Apple Inc. and are protected by Federal copyright
|
||||
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
* which should have been included with this file. If this file is
|
||||
* file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
*
|
||||
* Contents:
|
||||
*
|
||||
* 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.
|
||||
* 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
|
||||
* Licensed under Apache License v2.0. See the file "LICENSE" for more information.
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -38,6 +12,7 @@
|
||||
|
||||
#include <libusb.h>
|
||||
#include <cups/cups-private.h>
|
||||
#include <cups/ppd-private.h>
|
||||
#include <cups/dir.h>
|
||||
#include <pthread.h>
|
||||
#include <sys/select.h>
|
||||
@@ -123,6 +98,7 @@ typedef struct usb_globals_s /* Global USB printer information */
|
||||
#define USB_QUIRK_USB_INIT 0x0010 /* Needs vendor USB init string */
|
||||
#define USB_QUIRK_VENDOR_CLASS 0x0020 /* Descriptor uses vendor-specific
|
||||
Class or SubClass */
|
||||
#define USB_QUIRK_DELAY_CLOSE 0x0040 /* Delay close */
|
||||
#define USB_QUIRK_WHITELIST 0x0000 /* no quirks */
|
||||
|
||||
|
||||
@@ -496,7 +472,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...
|
||||
@@ -519,7 +495,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);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -534,7 +510,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)
|
||||
@@ -661,6 +637,9 @@ print_device(const char *uri, /* I - Device URI */
|
||||
* Close the connection and input file and general clean up...
|
||||
*/
|
||||
|
||||
if (g.printer->quirks & USB_QUIRK_DELAY_CLOSE)
|
||||
sleep(1);
|
||||
|
||||
close_device(g.printer);
|
||||
|
||||
/*
|
||||
@@ -920,8 +899,8 @@ find_device(usb_cb_t cb, /* I - Callback function */
|
||||
fprintf(stderr, "DEBUG: Printer does not report class 7 and/or "
|
||||
"subclass 1 but works as a printer anyway\n");
|
||||
|
||||
read_endp = -1;
|
||||
write_endp = -1;
|
||||
read_endp = 0xff;
|
||||
write_endp = 0xff;
|
||||
|
||||
for (endp = 0, endpptr = altptr->endpoint;
|
||||
endp < altptr->bNumEndpoints;
|
||||
@@ -935,7 +914,7 @@ find_device(usb_cb_t cb, /* I - Callback function */
|
||||
write_endp = endp;
|
||||
}
|
||||
|
||||
if (write_endp >= 0)
|
||||
if (write_endp != 0xff)
|
||||
{
|
||||
/*
|
||||
* Save the best match so far...
|
||||
@@ -1085,8 +1064,7 @@ get_device_id(usb_printer_t *printer, /* I - Printer */
|
||||
* bytes. The 1284 spec says the length is stored MSB first...
|
||||
*/
|
||||
|
||||
length = (((unsigned)buffer[0] & 255) << 8) |
|
||||
((unsigned)buffer[1] & 255);
|
||||
length = (int)((((unsigned)buffer[0] & 255) << 8) | ((unsigned)buffer[1] & 255));
|
||||
|
||||
/*
|
||||
* Check to see if the length is larger than our buffer or less than 14 bytes
|
||||
@@ -1097,8 +1075,7 @@ get_device_id(usb_printer_t *printer, /* I - Printer */
|
||||
*/
|
||||
|
||||
if (length > bufsize || length < 14)
|
||||
length = (((unsigned)buffer[1] & 255) << 8) |
|
||||
((unsigned)buffer[0] & 255);
|
||||
length = (int)((((unsigned)buffer[1] & 255) << 8) | ((unsigned)buffer[0] & 255));
|
||||
|
||||
if (length > bufsize)
|
||||
length = bufsize;
|
||||
@@ -1120,7 +1097,7 @@ get_device_id(usb_printer_t *printer, /* I - Printer */
|
||||
* nul-terminate.
|
||||
*/
|
||||
|
||||
memmove(buffer, buffer + 2, length);
|
||||
memmove(buffer, buffer + 2, (size_t)length);
|
||||
buffer[length] = '\0';
|
||||
|
||||
return (0);
|
||||
@@ -1233,6 +1210,9 @@ load_quirks(void)
|
||||
if (strstr(line, " blacklist"))
|
||||
quirk->quirks |= USB_QUIRK_BLACKLIST;
|
||||
|
||||
if (strstr(line, " delay-close"))
|
||||
quirk->quirks |= USB_QUIRK_DELAY_CLOSE;
|
||||
|
||||
if (strstr(line, " no-reattach"))
|
||||
quirk->quirks |= USB_QUIRK_NO_REATTACH;
|
||||
|
||||
@@ -1473,9 +1453,14 @@ open_device(usb_printer_t *printer, /* I - Printer */
|
||||
else
|
||||
{
|
||||
printer->usblp_attached = 0;
|
||||
fprintf(stderr, "DEBUG: Failed to check whether %04x:%04x has the \"usblp\" kernel module attached\n",
|
||||
devdesc.idVendor, devdesc.idProduct);
|
||||
goto error;
|
||||
|
||||
if (errcode != LIBUSB_ERROR_NOT_SUPPORTED)
|
||||
{
|
||||
fprintf(stderr,
|
||||
"DEBUG: Failed to check whether %04x:%04x has the \"usblp\" "
|
||||
"kernel module attached\n", devdesc.idVendor, devdesc.idProduct);
|
||||
goto error;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -1539,6 +1524,16 @@ open_device(usb_printer_t *printer, /* I - Printer */
|
||||
|
||||
goto error;
|
||||
}
|
||||
else if ((errcode = libusb_detach_kernel_driver(printer->handle, printer->iface)) < 0)
|
||||
{
|
||||
fprintf(stderr,
|
||||
"DEBUG: Failed to detach \"usblp\" module from %04x:%04x\n",
|
||||
devdesc.idVendor, devdesc.idProduct);
|
||||
|
||||
goto error;
|
||||
}
|
||||
|
||||
sleep (1);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -1734,7 +1729,7 @@ static void *read_thread(void *reference)
|
||||
{
|
||||
fprintf(stderr, "DEBUG: Read %d bytes of back-channel data...\n",
|
||||
(int)rbytes);
|
||||
cupsBackChannelWrite((const char *)readbuffer, rbytes, 1.0);
|
||||
cupsBackChannelWrite((const char *)readbuffer, (size_t)rbytes, 1.0);
|
||||
}
|
||||
else if (readstatus == LIBUSB_ERROR_TIMEOUT)
|
||||
fputs("DEBUG: Got USB transaction timeout during read.\n", stderr);
|
||||
@@ -2018,9 +2013,3 @@ soft_reset_printer(
|
||||
|
||||
return (errcode);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
|
||||
+7
-28
@@ -1,27 +1,13 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* USB port backend for CUPS.
|
||||
*
|
||||
* USB port backend for CUPS.
|
||||
* This file is included from "usb.c" when compiled on UNIX/Linux.
|
||||
*
|
||||
* This file is included from "usb.c" when compiled on UNIX/Linux.
|
||||
* Copyright © 2007-2013 by Apple Inc.
|
||||
* Copyright © 1997-2007 by Easy Software Products, all rights reserved.
|
||||
*
|
||||
* Copyright 2007-2012 by Apple Inc.
|
||||
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
* property of Apple Inc. and are protected by Federal copyright
|
||||
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
* "LICENSE" which should have been included with this file. If this
|
||||
* file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
*
|
||||
* This file is subject to the Apple OS-Developed Software exception.
|
||||
*
|
||||
* Contents:
|
||||
*
|
||||
* print_device() - Print a file to a USB device.
|
||||
* list_devices() - List all USB devices.
|
||||
* open_device() - Open a USB device...
|
||||
* side_cb() - Handle side-channel requests...
|
||||
* Licensed under Apache License v2.0. See the file "LICENSE" for more
|
||||
* information.
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -153,7 +139,7 @@ print_device(const char *uri, /* I - Device URI */
|
||||
|
||||
tcgetattr(device_fd, &opts);
|
||||
|
||||
opts.c_lflag &= ~(ICANON | ECHO | ISIG); /* Raw mode */
|
||||
opts.c_lflag &= ~(unsigned)(ICANON | ECHO | ISIG); /* Raw mode */
|
||||
|
||||
/**** No options supported yet ****/
|
||||
|
||||
@@ -285,8 +271,6 @@ list_devices(void)
|
||||
close(fd);
|
||||
}
|
||||
}
|
||||
#elif defined(__hpux)
|
||||
#elif defined(__osf)
|
||||
#elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) || defined(__FreeBSD_kernel__)
|
||||
int i; /* Looping var */
|
||||
char device[255]; /* Device filename */
|
||||
@@ -609,8 +593,3 @@ side_cb(int print_fd, /* I - Print file */
|
||||
|
||||
return (cupsSideChannelWrite(command, status, data, datalen, 1.0));
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+5
-23
@@ -1,24 +1,11 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* USB printer backend for CUPS.
|
||||
*
|
||||
* USB port backend for CUPS.
|
||||
* Copyright © 2007-2012 by Apple Inc.
|
||||
* Copyright © 1997-2007 by Easy Software Products, all rights reserved.
|
||||
*
|
||||
* Copyright 2007-2012 by Apple Inc.
|
||||
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
* property of Apple Inc. and are protected by Federal copyright
|
||||
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
* "LICENSE" which should have been included with this file. If this
|
||||
* file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
*
|
||||
* This file is subject to the Apple OS-Developed Software exception.
|
||||
*
|
||||
* Contents:
|
||||
*
|
||||
* list_devices() - List all available USB devices to stdout.
|
||||
* print_device() - Print a file to a USB device.
|
||||
* main() - Send a file to the specified USB port.
|
||||
* Licensed under Apache License v2.0. See the file "LICENSE" for more
|
||||
* information.
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -257,8 +244,3 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
|
||||
|
||||
return (status);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+20
-20
@@ -1,25 +1,25 @@
|
||||
lpc.o: lpc.c ../cups/cups-private.h ../cups/string-private.h ../config.h \
|
||||
../cups/debug-private.h ../cups/versioning.h ../cups/ipp-private.h \
|
||||
../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/http-private.h \
|
||||
../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
|
||||
../cups/language.h ../cups/pwg-private.h ../cups/cups.h ../cups/file.h \
|
||||
../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h
|
||||
../cups/debug-private.h ../cups/versioning.h ../cups/array-private.h \
|
||||
../cups/array.h ../cups/ipp-private.h ../cups/cups.h ../cups/file.h \
|
||||
../cups/ipp.h ../cups/http.h ../cups/language.h ../cups/pwg.h \
|
||||
../cups/http-private.h ../cups/language-private.h ../cups/transcode.h \
|
||||
../cups/pwg-private.h ../cups/thread-private.h
|
||||
lpq.o: lpq.c ../cups/cups-private.h ../cups/string-private.h ../config.h \
|
||||
../cups/debug-private.h ../cups/versioning.h ../cups/ipp-private.h \
|
||||
../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/http-private.h \
|
||||
../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
|
||||
../cups/language.h ../cups/pwg-private.h ../cups/cups.h ../cups/file.h \
|
||||
../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h
|
||||
../cups/debug-private.h ../cups/versioning.h ../cups/array-private.h \
|
||||
../cups/array.h ../cups/ipp-private.h ../cups/cups.h ../cups/file.h \
|
||||
../cups/ipp.h ../cups/http.h ../cups/language.h ../cups/pwg.h \
|
||||
../cups/http-private.h ../cups/language-private.h ../cups/transcode.h \
|
||||
../cups/pwg-private.h ../cups/thread-private.h
|
||||
lpr.o: lpr.c ../cups/cups-private.h ../cups/string-private.h ../config.h \
|
||||
../cups/debug-private.h ../cups/versioning.h ../cups/ipp-private.h \
|
||||
../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/http-private.h \
|
||||
../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
|
||||
../cups/language.h ../cups/pwg-private.h ../cups/cups.h ../cups/file.h \
|
||||
../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h
|
||||
../cups/debug-private.h ../cups/versioning.h ../cups/array-private.h \
|
||||
../cups/array.h ../cups/ipp-private.h ../cups/cups.h ../cups/file.h \
|
||||
../cups/ipp.h ../cups/http.h ../cups/language.h ../cups/pwg.h \
|
||||
../cups/http-private.h ../cups/language-private.h ../cups/transcode.h \
|
||||
../cups/pwg-private.h ../cups/thread-private.h
|
||||
lprm.o: lprm.c ../cups/cups-private.h ../cups/string-private.h \
|
||||
../config.h ../cups/debug-private.h ../cups/versioning.h \
|
||||
../cups/ipp-private.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
|
||||
../cups/http-private.h ../cups/md5-private.h \
|
||||
../cups/language-private.h ../cups/transcode.h ../cups/language.h \
|
||||
../cups/pwg-private.h ../cups/cups.h ../cups/file.h \
|
||||
../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h
|
||||
../cups/array-private.h ../cups/array.h ../cups/ipp-private.h \
|
||||
../cups/cups.h ../cups/file.h ../cups/ipp.h ../cups/http.h \
|
||||
../cups/language.h ../cups/pwg.h ../cups/http-private.h \
|
||||
../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
|
||||
../cups/thread-private.h
|
||||
|
||||
+8
-19
@@ -1,16 +1,10 @@
|
||||
#
|
||||
# "$Id$"
|
||||
# Berkeley commands makefile for CUPS.
|
||||
#
|
||||
# Berkeley commands makefile for CUPS.
|
||||
# Copyright 2007-2017 by Apple Inc.
|
||||
# Copyright 1997-2006 by Easy Software Products, all rights reserved.
|
||||
#
|
||||
# Copyright 2007-2012 by Apple Inc.
|
||||
# Copyright 1997-2006 by Easy Software Products, all rights reserved.
|
||||
#
|
||||
# These coded instructions, statements, and computer programs are the
|
||||
# property of Apple Inc. and are protected by Federal copyright
|
||||
# law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
# which should have been included with this file. If this file is
|
||||
# file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
# Licensed under Apache License v2.0. See the file "LICENSE" for more information.
|
||||
#
|
||||
|
||||
include ../Makedefs
|
||||
@@ -126,7 +120,7 @@ uninstall:
|
||||
|
||||
lpc: lpc.o ../cups/$(LIBCUPS)
|
||||
echo Linking $@...
|
||||
$(CC) $(LDFLAGS) -o lpc lpc.o $(LIBS)
|
||||
$(LD_CC) $(LDFLAGS) -o lpc lpc.o $(LIBS)
|
||||
|
||||
|
||||
#
|
||||
@@ -135,7 +129,7 @@ lpc: lpc.o ../cups/$(LIBCUPS)
|
||||
|
||||
lpq: lpq.o ../cups/$(LIBCUPS)
|
||||
echo Linking $@...
|
||||
$(CC) $(LDFLAGS) -o lpq lpq.o $(LIBS)
|
||||
$(LD_CC) $(LDFLAGS) -o lpq lpq.o $(LIBS)
|
||||
|
||||
|
||||
#
|
||||
@@ -144,7 +138,7 @@ lpq: lpq.o ../cups/$(LIBCUPS)
|
||||
|
||||
lpr: lpr.o ../cups/$(LIBCUPS)
|
||||
echo Linking $@...
|
||||
$(CC) $(LDFLAGS) -o lpr lpr.o $(LIBS)
|
||||
$(LD_CC) $(LDFLAGS) -o lpr lpr.o $(LIBS)
|
||||
|
||||
|
||||
#
|
||||
@@ -153,7 +147,7 @@ lpr: lpr.o ../cups/$(LIBCUPS)
|
||||
|
||||
lprm: lprm.o ../cups/$(LIBCUPS)
|
||||
echo Linking $@...
|
||||
$(CC) $(LDFLAGS) -o lprm lprm.o $(LIBS)
|
||||
$(LD_CC) $(LDFLAGS) -o lprm lprm.o $(LIBS)
|
||||
|
||||
|
||||
#
|
||||
@@ -161,8 +155,3 @@ lprm: lprm.o ../cups/$(LIBCUPS)
|
||||
#
|
||||
|
||||
include Dependencies
|
||||
|
||||
|
||||
#
|
||||
# End of "$Id$".
|
||||
#
|
||||
|
||||
+7
-26
@@ -1,24 +1,10 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* "lpc" command for CUPS.
|
||||
*
|
||||
* "lpc" command for CUPS.
|
||||
* Copyright 2007-2014 by Apple Inc.
|
||||
* Copyright 1997-2006 by Easy Software Products.
|
||||
*
|
||||
* Copyright 2007-2012 by Apple Inc.
|
||||
* Copyright 1997-2006 by Easy Software Products.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
* property of Apple Inc. and are protected by Federal copyright
|
||||
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
* which should have been included with this file. If this file is
|
||||
* file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
*
|
||||
* Contents:
|
||||
*
|
||||
* main() - Parse options and commands.
|
||||
* compare_strings() - Compare two command-line strings.
|
||||
* do_command() - Do an lpc command...
|
||||
* show_help() - Show help messages.
|
||||
* show_status() - Show printers.
|
||||
* Licensed under Apache License v2.0. See the file "LICENSE" for more information.
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -32,7 +18,7 @@
|
||||
* Local functions...
|
||||
*/
|
||||
|
||||
static int compare_strings(const char *, const char *, int);
|
||||
static int compare_strings(const char *, const char *, size_t);
|
||||
static void do_command(http_t *, const char *, const char *);
|
||||
static void show_help(const char *);
|
||||
static void show_status(http_t *, const char *);
|
||||
@@ -158,9 +144,9 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
static int /* O - -1 or 1 = no match, 0 = match */
|
||||
compare_strings(const char *s, /* I - Command-line string */
|
||||
const char *t, /* I - Option string */
|
||||
int tmin) /* I - Minimum number of unique chars in option */
|
||||
size_t tmin) /* I - Minimum number of unique chars in option */
|
||||
{
|
||||
int slen; /* Length of command-line string */
|
||||
size_t slen; /* Length of command-line string */
|
||||
|
||||
|
||||
slen = strlen(s);
|
||||
@@ -443,8 +429,3 @@ show_status(http_t *http, /* I - HTTP connection to server */
|
||||
ippDelete(response);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+109
-147
@@ -1,27 +1,10 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* "lpq" command for CUPS.
|
||||
*
|
||||
* "lpq" command for CUPS.
|
||||
* Copyright 2007-2016 by Apple Inc.
|
||||
* Copyright 1997-2006 by Easy Software Products.
|
||||
*
|
||||
* Copyright 2007-2013 by Apple Inc.
|
||||
* Copyright 1997-2006 by Easy Software Products.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
* property of Apple Inc. and are protected by Federal copyright
|
||||
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
* which should have been included with this file. If this file is
|
||||
* file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
*
|
||||
* Contents:
|
||||
*
|
||||
* main() - Parse options and commands.
|
||||
* show_jobs() - Show jobs.
|
||||
* show_printer() - Show printer status.
|
||||
* usage() - Show program usage.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include necessary headers...
|
||||
* Licensed under Apache License v2.0. See the file "LICENSE" for more information.
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -52,7 +35,8 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
{
|
||||
int i; /* Looping var */
|
||||
http_t *http; /* Connection to server */
|
||||
const char *dest, /* Desired printer */
|
||||
const char *opt, /* Option pointer */
|
||||
*dest, /* Desired printer */
|
||||
*user, /* Desired user */
|
||||
*val; /* Environment variable name */
|
||||
char *instance; /* Printer instance */
|
||||
@@ -78,129 +62,138 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
all = 0;
|
||||
|
||||
for (i = 1; i < argc; i ++)
|
||||
{
|
||||
if (argv[i][0] == '+')
|
||||
{
|
||||
interval = atoi(argv[i] + 1);
|
||||
}
|
||||
else if (argv[i][0] == '-')
|
||||
{
|
||||
switch (argv[i][1])
|
||||
for (opt = argv[i] + 1; *opt; opt ++)
|
||||
{
|
||||
case 'E' : /* Encrypt */
|
||||
switch (*opt)
|
||||
{
|
||||
case 'E' : /* Encrypt */
|
||||
#ifdef HAVE_SSL
|
||||
cupsSetEncryption(HTTP_ENCRYPT_REQUIRED);
|
||||
cupsSetEncryption(HTTP_ENCRYPT_REQUIRED);
|
||||
|
||||
if (http)
|
||||
httpEncryption(http, HTTP_ENCRYPT_REQUIRED);
|
||||
if (http)
|
||||
httpEncryption(http, HTTP_ENCRYPT_REQUIRED);
|
||||
#else
|
||||
_cupsLangPrintf(stderr, _("%s: Sorry, no encryption support."),
|
||||
argv[0]);
|
||||
_cupsLangPrintf(stderr, _("%s: Sorry, no encryption support."), argv[0]);
|
||||
#endif /* HAVE_SSL */
|
||||
break;
|
||||
break;
|
||||
|
||||
case 'U' : /* Username */
|
||||
if (argv[i][2] != '\0')
|
||||
cupsSetUser(argv[i] + 2);
|
||||
else
|
||||
{
|
||||
i ++;
|
||||
if (i >= argc)
|
||||
case 'U' : /* Username */
|
||||
if (opt[1] != '\0')
|
||||
{
|
||||
_cupsLangPrintf(stderr,
|
||||
_("%s: Error - expected username after "
|
||||
"\"-U\" option."), argv[0]);
|
||||
return (1);
|
||||
cupsSetUser(opt + 1);
|
||||
opt += strlen(opt) - 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
i ++;
|
||||
if (i >= argc)
|
||||
{
|
||||
_cupsLangPrintf(stderr, _("%s: Error - expected username after \"-U\" option."), argv[0]);
|
||||
return (1);
|
||||
}
|
||||
|
||||
cupsSetUser(argv[i]);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'P' : /* Printer */
|
||||
if (opt[1] != '\0')
|
||||
{
|
||||
dest = opt + 1;
|
||||
opt += strlen(opt) - 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
i ++;
|
||||
|
||||
if (i >= argc)
|
||||
{
|
||||
httpClose(http);
|
||||
|
||||
usage();
|
||||
}
|
||||
|
||||
dest = argv[i];
|
||||
}
|
||||
|
||||
cupsSetUser(argv[i]);
|
||||
}
|
||||
break;
|
||||
if ((instance = strchr(dest, '/')) != NULL)
|
||||
*instance++ = '\0';
|
||||
|
||||
case 'P' : /* Printer */
|
||||
if (argv[i][2])
|
||||
dest = argv[i] + 2;
|
||||
else
|
||||
{
|
||||
i ++;
|
||||
http = connect_server(argv[0], http);
|
||||
|
||||
if (i >= argc)
|
||||
if ((named_dest = cupsGetNamedDest(http, dest, instance)) == NULL)
|
||||
{
|
||||
if (cupsLastError() == IPP_STATUS_ERROR_BAD_REQUEST ||
|
||||
cupsLastError() == IPP_STATUS_ERROR_VERSION_NOT_SUPPORTED)
|
||||
_cupsLangPrintf(stderr, _("%s: Error - add '/version=1.1' to server name."), argv[0]);
|
||||
else if (instance)
|
||||
_cupsLangPrintf(stderr, _("%s: Error - unknown destination \"%s/%s\"."), argv[0], dest, instance);
|
||||
else
|
||||
_cupsLangPrintf(stderr, _("%s: Unknown destination \"%s\"."), argv[0], dest);
|
||||
|
||||
return (1);
|
||||
}
|
||||
|
||||
cupsFreeDests(1, named_dest);
|
||||
break;
|
||||
|
||||
case 'a' : /* All printers */
|
||||
all = 1;
|
||||
break;
|
||||
|
||||
case 'h' : /* Connect to host */
|
||||
if (http)
|
||||
{
|
||||
httpClose(http);
|
||||
|
||||
usage();
|
||||
http = NULL;
|
||||
}
|
||||
|
||||
dest = argv[i];
|
||||
}
|
||||
|
||||
if ((instance = strchr(dest, '/')) != NULL)
|
||||
*instance++ = '\0';
|
||||
|
||||
http = connect_server(argv[0], http);
|
||||
|
||||
if ((named_dest = cupsGetNamedDest(http, dest, instance)) == NULL)
|
||||
{
|
||||
if (cupsLastError() == IPP_STATUS_ERROR_BAD_REQUEST ||
|
||||
cupsLastError() == IPP_STATUS_ERROR_VERSION_NOT_SUPPORTED)
|
||||
_cupsLangPrintf(stderr,
|
||||
_("%s: Error - add '/version=1.1' to server "
|
||||
"name."), argv[0]);
|
||||
else if (instance)
|
||||
_cupsLangPrintf(stderr,
|
||||
_("%s: Error - unknown destination \"%s/%s\"."),
|
||||
argv[0], dest, instance);
|
||||
else
|
||||
_cupsLangPrintf(stderr, _("%s: Unknown destination \"%s\"."),
|
||||
argv[0], dest);
|
||||
|
||||
return (1);
|
||||
}
|
||||
|
||||
cupsFreeDests(1, named_dest);
|
||||
break;
|
||||
|
||||
case 'a' : /* All printers */
|
||||
all = 1;
|
||||
break;
|
||||
|
||||
case 'h' : /* Connect to host */
|
||||
if (http)
|
||||
{
|
||||
httpClose(http);
|
||||
http = NULL;
|
||||
}
|
||||
|
||||
if (argv[i][2] != '\0')
|
||||
cupsSetServer(argv[i] + 2);
|
||||
else
|
||||
{
|
||||
i ++;
|
||||
|
||||
if (i >= argc)
|
||||
if (opt[1] != '\0')
|
||||
{
|
||||
_cupsLangPrintf(stderr,
|
||||
_("%s: Error - expected hostname after "
|
||||
"\"-h\" option."), argv[0]);
|
||||
return (1);
|
||||
}
|
||||
cupsSetServer(opt + 1);
|
||||
opt += strlen(opt) - 1;
|
||||
}
|
||||
else
|
||||
cupsSetServer(argv[i]);
|
||||
}
|
||||
break;
|
||||
{
|
||||
i ++;
|
||||
|
||||
case 'l' : /* Long status */
|
||||
longstatus = 1;
|
||||
break;
|
||||
if (i >= argc)
|
||||
{
|
||||
_cupsLangPrintf(stderr, _("%s: Error - expected hostname after \"-h\" option."), argv[0]);
|
||||
return (1);
|
||||
}
|
||||
else
|
||||
cupsSetServer(argv[i]);
|
||||
}
|
||||
break;
|
||||
|
||||
default :
|
||||
httpClose(http);
|
||||
case 'l' : /* Long status */
|
||||
longstatus = 1;
|
||||
break;
|
||||
|
||||
usage();
|
||||
break;
|
||||
default :
|
||||
httpClose(http);
|
||||
|
||||
usage();
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (isdigit(argv[i][0] & 255))
|
||||
{
|
||||
id = atoi(argv[i]);
|
||||
}
|
||||
else
|
||||
{
|
||||
user = argv[i];
|
||||
}
|
||||
}
|
||||
|
||||
http = connect_server(argv[0], http);
|
||||
|
||||
@@ -262,7 +255,7 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
if (i && interval)
|
||||
{
|
||||
fflush(stdout);
|
||||
sleep(interval);
|
||||
sleep((unsigned)interval);
|
||||
}
|
||||
else
|
||||
break;
|
||||
@@ -323,9 +316,6 @@ show_jobs(const char *command, /* I - Command name */
|
||||
ipp_jstate_t jobstate; /* job-state */
|
||||
int jobid, /* job-id */
|
||||
jobsize, /* job-k-octets */
|
||||
#ifdef __osf__
|
||||
jobpriority, /* job-priority */
|
||||
#endif /* __osf__ */
|
||||
jobcount, /* Number of jobs */
|
||||
jobcopies, /* Number of copies */
|
||||
rank; /* Rank of job */
|
||||
@@ -448,9 +438,6 @@ show_jobs(const char *command, /* I - Command name */
|
||||
|
||||
jobid = 0;
|
||||
jobsize = 0;
|
||||
#ifdef __osf__
|
||||
jobpriority = 50;
|
||||
#endif /* __osf__ */
|
||||
jobstate = IPP_JOB_PENDING;
|
||||
jobname = "unknown";
|
||||
jobuser = "unknown";
|
||||
@@ -467,12 +454,6 @@ show_jobs(const char *command, /* I - Command name */
|
||||
attr->value_tag == IPP_TAG_INTEGER)
|
||||
jobsize = attr->values[0].integer;
|
||||
|
||||
#ifdef __osf__
|
||||
if (!strcmp(attr->name, "job-priority") &&
|
||||
attr->value_tag == IPP_TAG_INTEGER)
|
||||
jobpriority = attr->values[0].integer;
|
||||
#endif /* __osf__ */
|
||||
|
||||
if (!strcmp(attr->name, "job-state") &&
|
||||
attr->value_tag == IPP_TAG_ENUM)
|
||||
jobstate = (ipp_jstate_t)attr->values[0].integer;
|
||||
@@ -510,16 +491,9 @@ show_jobs(const char *command, /* I - Command name */
|
||||
}
|
||||
|
||||
if (!longstatus && jobcount == 0)
|
||||
#ifdef __osf__
|
||||
_cupsLangPuts(stdout,
|
||||
/* TRANSLATORS: Pri is job priority. */
|
||||
_("Rank Owner Pri Job Files"
|
||||
" Total Size"));
|
||||
#else
|
||||
_cupsLangPuts(stdout,
|
||||
_("Rank Owner Job File(s)"
|
||||
" Total Size"));
|
||||
#endif /* __osf__ */
|
||||
|
||||
jobcount ++;
|
||||
|
||||
@@ -560,16 +534,9 @@ show_jobs(const char *command, /* I - Command name */
|
||||
namestr, 1024.0 * jobsize);
|
||||
}
|
||||
else
|
||||
#ifdef __osf__
|
||||
_cupsLangPrintf(stdout,
|
||||
_("%-6s %-10.10s %-4d %-10d %-27.27s %.0f bytes"),
|
||||
rankstr, jobuser, jobpriority, jobid, jobname,
|
||||
1024.0 * jobsize);
|
||||
#else
|
||||
_cupsLangPrintf(stdout,
|
||||
_("%-7s %-7.7s %-7d %-31.31s %.0f bytes"),
|
||||
rankstr, jobuser, jobid, jobname, 1024.0 * jobsize);
|
||||
#endif /* __osf */
|
||||
|
||||
if (attr == NULL)
|
||||
break;
|
||||
@@ -676,8 +643,3 @@ usage(void)
|
||||
"[-l] [+interval]"));
|
||||
exit(1);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+221
-251
@@ -1,20 +1,10 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* "lpr" command for CUPS.
|
||||
*
|
||||
* "lpr" command for CUPS.
|
||||
* Copyright 2007-2017 by Apple Inc.
|
||||
* Copyright 1997-2007 by Easy Software Products.
|
||||
*
|
||||
* Copyright 2007-2013 by Apple Inc.
|
||||
* Copyright 1997-2007 by Easy Software Products.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
* property of Apple Inc. and are protected by Federal copyright
|
||||
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
* which should have been included with this file. If this file is
|
||||
* file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
*
|
||||
* Contents:
|
||||
*
|
||||
* main() - Parse options and send files for printing.
|
||||
* Licensed under Apache License v2.0. See the file "LICENSE" for more information.
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -36,9 +26,9 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
int job_id; /* Job ID */
|
||||
char ch; /* Option character */
|
||||
char *printer, /* Destination printer or class */
|
||||
*instance; /* Instance */
|
||||
const char *title, /* Job title */
|
||||
*val; /* Environment variable name */
|
||||
*instance, /* Instance */
|
||||
*opt; /* Option pointer */
|
||||
const char *title; /* Job title */
|
||||
int num_copies; /* Number of copies per file */
|
||||
int num_files; /* Number of files to print */
|
||||
const char *files[1000]; /* Files to print */
|
||||
@@ -60,229 +50,235 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
title = NULL;
|
||||
|
||||
for (i = 1; i < argc; i ++)
|
||||
{
|
||||
if (argv[i][0] == '-')
|
||||
{
|
||||
switch (ch = argv[i][1])
|
||||
for (opt = argv[i] + 1; *opt; opt ++)
|
||||
{
|
||||
case 'E' : /* Encrypt */
|
||||
switch (ch = *opt)
|
||||
{
|
||||
case 'E' : /* Encrypt */
|
||||
#ifdef HAVE_SSL
|
||||
cupsSetEncryption(HTTP_ENCRYPT_REQUIRED);
|
||||
cupsSetEncryption(HTTP_ENCRYPT_REQUIRED);
|
||||
#else
|
||||
_cupsLangPrintf(stderr, _("%s: Sorry, no encryption support."),
|
||||
argv[0]);
|
||||
_cupsLangPrintf(stderr, _("%s: Sorry, no encryption support."), argv[0]);
|
||||
#endif /* HAVE_SSL */
|
||||
break;
|
||||
break;
|
||||
|
||||
case 'U' : /* Username */
|
||||
if (argv[i][2] != '\0')
|
||||
cupsSetUser(argv[i] + 2);
|
||||
else
|
||||
{
|
||||
i ++;
|
||||
if (i >= argc)
|
||||
case 'U' : /* Username */
|
||||
if (opt[1] != '\0')
|
||||
{
|
||||
_cupsLangPrintf(stderr,
|
||||
_("%s: Error - expected username after "
|
||||
"\"-U\" option."), argv[0]);
|
||||
return (1);
|
||||
cupsSetUser(opt + 1);
|
||||
opt += strlen(opt) - 1;
|
||||
}
|
||||
|
||||
cupsSetUser(argv[i]);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'H' : /* Connect to host */
|
||||
if (argv[i][2] != '\0')
|
||||
cupsSetServer(argv[i] + 2);
|
||||
else
|
||||
{
|
||||
i ++;
|
||||
|
||||
if (i >= argc)
|
||||
{
|
||||
_cupsLangPrintf(stderr,
|
||||
_("%s: Error - expected hostname after "
|
||||
"\"-H\" option."), argv[0]);
|
||||
return (1);
|
||||
}
|
||||
else
|
||||
cupsSetServer(argv[i]);
|
||||
}
|
||||
break;
|
||||
|
||||
case '1' : /* TROFF font set 1 */
|
||||
case '2' : /* TROFF font set 2 */
|
||||
case '3' : /* TROFF font set 3 */
|
||||
case '4' : /* TROFF font set 4 */
|
||||
case 'i' : /* indent */
|
||||
case 'w' : /* width */
|
||||
if (argv[i][2] == '\0')
|
||||
{
|
||||
i ++;
|
||||
|
||||
if (i >= argc)
|
||||
{
|
||||
_cupsLangPrintf(stderr,
|
||||
_("%s: Error - expected value after \"-%c\" "
|
||||
"option."), argv[0], ch);
|
||||
i ++;
|
||||
if (i >= argc)
|
||||
{
|
||||
_cupsLangPrintf(stderr, _("%s: Error - expected username after \"-U\" option."), argv[0]);
|
||||
return (1);
|
||||
}
|
||||
|
||||
cupsSetUser(argv[i]);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'H' : /* Connect to host */
|
||||
if (opt[1] != '\0')
|
||||
{
|
||||
cupsSetServer(opt + 1);
|
||||
opt += strlen(opt) - 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
i ++;
|
||||
|
||||
if (i >= argc)
|
||||
{
|
||||
_cupsLangPrintf(stderr, _("%s: Error - expected hostname after \"-H\" option."), argv[0]);
|
||||
return (1);
|
||||
}
|
||||
else
|
||||
cupsSetServer(argv[i]);
|
||||
}
|
||||
break;
|
||||
|
||||
case '1' : /* TROFF font set 1 */
|
||||
case '2' : /* TROFF font set 2 */
|
||||
case '3' : /* TROFF font set 3 */
|
||||
case '4' : /* TROFF font set 4 */
|
||||
case 'i' : /* indent */
|
||||
case 'w' : /* width */
|
||||
if (opt[1] != '\0')
|
||||
{
|
||||
opt += strlen(opt) - 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
i ++;
|
||||
|
||||
if (i >= argc)
|
||||
{
|
||||
_cupsLangPrintf(stderr,
|
||||
_("%s: Error - expected value after \"-%c\" "
|
||||
"option."), argv[0], ch);
|
||||
return (1);
|
||||
}
|
||||
}
|
||||
|
||||
case 'c' : /* CIFPLOT */
|
||||
case 'd' : /* DVI */
|
||||
case 'f' : /* FORTRAN */
|
||||
case 'g' : /* plot */
|
||||
case 'n' : /* Ditroff */
|
||||
case 't' : /* Troff */
|
||||
case 'v' : /* Raster image */
|
||||
_cupsLangPrintf(stderr, _("%s: Warning - \"%c\" format modifier not supported - output may not be correct."), argv[0], ch);
|
||||
break;
|
||||
|
||||
case 'o' : /* Option */
|
||||
if (opt[1] != '\0')
|
||||
{
|
||||
num_options = cupsParseOptions(opt + 1, num_options, &options);
|
||||
opt += strlen(opt) - 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
i ++;
|
||||
if (i >= argc)
|
||||
{
|
||||
_cupsLangPrintf(stderr, _("%s: Error - expected option=value after \"-o\" option."), argv[0]);
|
||||
return (1);
|
||||
}
|
||||
|
||||
num_options = cupsParseOptions(argv[i], num_options, &options);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'l' : /* Literal/raw */
|
||||
num_options = cupsAddOption("raw", "true", num_options, &options);
|
||||
break;
|
||||
|
||||
case 'p' : /* Prettyprint */
|
||||
num_options = cupsAddOption("prettyprint", "true", num_options, &options);
|
||||
break;
|
||||
|
||||
case 'h' : /* Suppress burst page */
|
||||
num_options = cupsAddOption("job-sheets", "none", num_options, &options);
|
||||
break;
|
||||
|
||||
case 's' : /* Don't use symlinks */
|
||||
break;
|
||||
|
||||
case 'm' : /* Mail on completion */
|
||||
{
|
||||
char email[1024]; /* EMail address */
|
||||
|
||||
snprintf(email, sizeof(email), "mailto:%s@%s", cupsUser(), httpGetHostname(NULL, buffer, sizeof(buffer)));
|
||||
num_options = cupsAddOption("notify-recipient-uri", email, num_options, &options);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'q' : /* Queue file but don't print */
|
||||
num_options = cupsAddOption("job-hold-until", "indefinite", num_options, &options);
|
||||
break;
|
||||
|
||||
case 'r' : /* Remove file after printing */
|
||||
deletefile = 1;
|
||||
break;
|
||||
|
||||
case 'P' : /* Destination printer or class */
|
||||
if (opt[1] != '\0')
|
||||
{
|
||||
printer = opt + 1;
|
||||
opt += strlen(opt) - 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
i ++;
|
||||
if (i >= argc)
|
||||
{
|
||||
_cupsLangPrintf(stderr, _("%s: Error - expected destination after \"-P\" option."), argv[0]);
|
||||
return (1);
|
||||
}
|
||||
|
||||
printer = argv[i];
|
||||
}
|
||||
|
||||
if ((instance = strrchr(printer, '/')) != NULL)
|
||||
*instance++ = '\0';
|
||||
|
||||
if ((dest = cupsGetNamedDest(NULL, printer, instance)) != NULL)
|
||||
{
|
||||
for (j = 0; j < dest->num_options; j ++)
|
||||
if (cupsGetOption(dest->options[j].name, num_options,
|
||||
options) == NULL)
|
||||
num_options = cupsAddOption(dest->options[j].name,
|
||||
dest->options[j].value,
|
||||
num_options, &options);
|
||||
}
|
||||
else if (cupsLastError() == IPP_STATUS_ERROR_BAD_REQUEST ||
|
||||
cupsLastError() == IPP_STATUS_ERROR_VERSION_NOT_SUPPORTED)
|
||||
{
|
||||
_cupsLangPrintf(stderr, _("%s: Error - add '/version=1.1' to server name."), argv[0]);
|
||||
return (1);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case 'c' : /* CIFPLOT */
|
||||
case 'd' : /* DVI */
|
||||
case 'f' : /* FORTRAN */
|
||||
case 'g' : /* plot */
|
||||
case 'n' : /* Ditroff */
|
||||
case 't' : /* Troff */
|
||||
case 'v' : /* Raster image */
|
||||
_cupsLangPrintf(stderr,
|
||||
_("%s: Warning - \"%c\" format modifier not "
|
||||
"supported - output may not be correct."),
|
||||
argv[0], ch);
|
||||
break;
|
||||
|
||||
case 'o' : /* Option */
|
||||
if (argv[i][2] != '\0')
|
||||
num_options = cupsParseOptions(argv[i] + 2, num_options, &options);
|
||||
else
|
||||
{
|
||||
i ++;
|
||||
if (i >= argc)
|
||||
case '#' : /* Number of copies */
|
||||
if (opt[1] != '\0')
|
||||
{
|
||||
_cupsLangPrintf(stderr,
|
||||
_("%s: Error - expected option=value after "
|
||||
"\"-o\" option."), argv[0]);
|
||||
num_copies = atoi(opt + 1);
|
||||
opt += strlen(opt) - 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
i ++;
|
||||
if (i >= argc)
|
||||
{
|
||||
_cupsLangPrintf(stderr, _("%s: Error - expected copies after \"-#\" option."), argv[0]);
|
||||
return (1);
|
||||
}
|
||||
|
||||
num_copies = atoi(argv[i]);
|
||||
}
|
||||
|
||||
if (num_copies < 1)
|
||||
{
|
||||
_cupsLangPrintf(stderr, _("%s: Error - copies must be 1 or more."), argv[0]);
|
||||
return (1);
|
||||
}
|
||||
|
||||
num_options = cupsParseOptions(argv[i], num_options, &options);
|
||||
}
|
||||
break;
|
||||
sprintf(buffer, "%d", num_copies);
|
||||
num_options = cupsAddOption("copies", buffer, num_options, &options);
|
||||
break;
|
||||
|
||||
case 'l' : /* Literal/raw */
|
||||
num_options = cupsAddOption("raw", "true", num_options, &options);
|
||||
break;
|
||||
|
||||
case 'p' : /* Prettyprint */
|
||||
num_options = cupsAddOption("prettyprint", "true", num_options,
|
||||
&options);
|
||||
break;
|
||||
|
||||
case 'h' : /* Suppress burst page */
|
||||
num_options = cupsAddOption("job-sheets", "none", num_options,
|
||||
&options);
|
||||
break;
|
||||
|
||||
case 's' : /* Don't use symlinks */
|
||||
break;
|
||||
|
||||
case 'm' : /* Mail on completion */
|
||||
{
|
||||
char email[1024]; /* EMail address */
|
||||
|
||||
|
||||
snprintf(email, sizeof(email), "mailto:%s@%s", cupsUser(),
|
||||
httpGetHostname(NULL, buffer, sizeof(buffer)));
|
||||
num_options = cupsAddOption("notify-recipient-uri", email,
|
||||
num_options, &options);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'q' : /* Queue file but don't print */
|
||||
num_options = cupsAddOption("job-hold-until", "indefinite",
|
||||
num_options, &options);
|
||||
break;
|
||||
|
||||
case 'r' : /* Remove file after printing */
|
||||
deletefile = 1;
|
||||
break;
|
||||
|
||||
case 'P' : /* Destination printer or class */
|
||||
if (argv[i][2] != '\0')
|
||||
printer = argv[i] + 2;
|
||||
else
|
||||
{
|
||||
i ++;
|
||||
if (i >= argc)
|
||||
case 'C' : /* Class */
|
||||
case 'J' : /* Job name */
|
||||
case 'T' : /* Title */
|
||||
if (opt[1] != '\0')
|
||||
{
|
||||
_cupsLangPrintf(stderr,
|
||||
_("%s: Error - expected destination after "
|
||||
"\"-P\" option."), argv[0]);
|
||||
return (1);
|
||||
title = opt + 1;
|
||||
opt += strlen(opt) - 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
i ++;
|
||||
if (i >= argc)
|
||||
{
|
||||
_cupsLangPrintf(stderr, _("%s: Error - expected name after \"-%c\" option."), argv[0], ch);
|
||||
return (1);
|
||||
}
|
||||
|
||||
printer = argv[i];
|
||||
}
|
||||
title = argv[i];
|
||||
}
|
||||
break;
|
||||
|
||||
if ((instance = strrchr(printer, '/')) != NULL)
|
||||
*instance++ = '\0';
|
||||
|
||||
if ((dest = cupsGetNamedDest(NULL, printer, instance)) != NULL)
|
||||
{
|
||||
for (j = 0; j < dest->num_options; j ++)
|
||||
if (cupsGetOption(dest->options[j].name, num_options,
|
||||
options) == NULL)
|
||||
num_options = cupsAddOption(dest->options[j].name,
|
||||
dest->options[j].value,
|
||||
num_options, &options);
|
||||
}
|
||||
else if (cupsLastError() == IPP_STATUS_ERROR_BAD_REQUEST ||
|
||||
cupsLastError() == IPP_STATUS_ERROR_VERSION_NOT_SUPPORTED)
|
||||
{
|
||||
_cupsLangPrintf(stderr,
|
||||
_("%s: Error - add '/version=1.1' to server "
|
||||
"name."), argv[0]);
|
||||
default :
|
||||
_cupsLangPrintf(stderr, _("%s: Error - unknown option \"%c\"."), argv[0], *opt);
|
||||
return (1);
|
||||
}
|
||||
break;
|
||||
|
||||
case '#' : /* Number of copies */
|
||||
if (argv[i][2] != '\0')
|
||||
num_copies = atoi(argv[i] + 2);
|
||||
else
|
||||
{
|
||||
i ++;
|
||||
if (i >= argc)
|
||||
{
|
||||
_cupsLangPrintf(stderr,
|
||||
_("%s: Error - expected copies after "
|
||||
"\"-#\" option."), argv[0]);
|
||||
return (1);
|
||||
}
|
||||
|
||||
num_copies = atoi(argv[i]);
|
||||
}
|
||||
|
||||
sprintf(buffer, "%d", num_copies);
|
||||
num_options = cupsAddOption("copies", buffer, num_options, &options);
|
||||
break;
|
||||
|
||||
case 'C' : /* Class */
|
||||
case 'J' : /* Job name */
|
||||
case 'T' : /* Title */
|
||||
if (argv[i][2] != '\0')
|
||||
title = argv[i] + 2;
|
||||
else
|
||||
{
|
||||
i ++;
|
||||
if (i >= argc)
|
||||
{
|
||||
_cupsLangPrintf(stderr,
|
||||
_("%s: Error - expected name after \"-%c\" "
|
||||
"option."), argv[0], ch);
|
||||
return (1);
|
||||
}
|
||||
|
||||
title = argv[i];
|
||||
}
|
||||
break;
|
||||
|
||||
default :
|
||||
_cupsLangPrintf(stderr,
|
||||
_("%s: Error - unknown option \"%c\"."), argv[0],
|
||||
argv[i][1]);
|
||||
return (1);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (num_files < 1000)
|
||||
@@ -311,9 +307,11 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
}
|
||||
}
|
||||
else
|
||||
_cupsLangPrintf(stderr,
|
||||
_("%s: Error - too many files - \"%s\"."), argv[0],
|
||||
argv[i]);
|
||||
{
|
||||
_cupsLangPrintf(stderr, _("%s: Error - too many files - \"%s\"."), argv[0], argv[i]);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* See if we have any files to print; if not, print from stdin...
|
||||
*/
|
||||
@@ -342,33 +340,10 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
|
||||
if (printer == NULL)
|
||||
{
|
||||
val = NULL;
|
||||
|
||||
if ((printer = getenv("LPDEST")) == NULL)
|
||||
{
|
||||
if ((printer = getenv("PRINTER")) != NULL)
|
||||
{
|
||||
if (!strcmp(printer, "lp"))
|
||||
printer = NULL;
|
||||
else
|
||||
val = "PRINTER";
|
||||
}
|
||||
}
|
||||
if (!cupsGetNamedDest(NULL, NULL, NULL) && cupsLastError() == IPP_STATUS_ERROR_NOT_FOUND)
|
||||
_cupsLangPrintf(stderr, _("%s: Error - %s"), argv[0], cupsLastErrorString());
|
||||
else
|
||||
val = "LPDEST";
|
||||
|
||||
if (printer && !cupsGetNamedDest(NULL, printer, NULL))
|
||||
_cupsLangPrintf(stderr,
|
||||
_("%s: Error - %s environment variable names "
|
||||
"non-existent destination \"%s\"."), argv[0], val,
|
||||
printer);
|
||||
else if (cupsLastError() == IPP_NOT_FOUND)
|
||||
_cupsLangPrintf(stderr,
|
||||
_("%s: Error - no default destination available."),
|
||||
argv[0]);
|
||||
else
|
||||
_cupsLangPrintf(stderr, _("%s: Error - scheduler not responding."),
|
||||
argv[0]);
|
||||
_cupsLangPrintf(stderr, _("%s: Error - scheduler not responding."), argv[0]);
|
||||
|
||||
return (1);
|
||||
}
|
||||
@@ -406,7 +381,7 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
|
||||
while (status == HTTP_CONTINUE &&
|
||||
(bytes = read(0, buffer, sizeof(buffer))) > 0)
|
||||
status = cupsWriteRequestData(CUPS_HTTP_DEFAULT, buffer, bytes);
|
||||
status = cupsWriteRequestData(CUPS_HTTP_DEFAULT, buffer, (size_t)bytes);
|
||||
|
||||
if (status != HTTP_CONTINUE)
|
||||
{
|
||||
@@ -433,8 +408,3 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
|
||||
return (0);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+80
-87
@@ -1,20 +1,10 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* "lprm" command for CUPS.
|
||||
*
|
||||
* "lprm" command for CUPS.
|
||||
* Copyright 2007-2016 by Apple Inc.
|
||||
* Copyright 1997-2006 by Easy Software Products.
|
||||
*
|
||||
* Copyright 2007-2010 by Apple Inc.
|
||||
* Copyright 1997-2006 by Easy Software Products.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
* property of Apple Inc. and are protected by Federal copyright
|
||||
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
* which should have been included with this file. If this file is
|
||||
* file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
*
|
||||
* Contents:
|
||||
*
|
||||
* main() - Parse options and cancel jobs.
|
||||
* Licensed under Apache License v2.0. See the file "LICENSE" for more information.
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -35,7 +25,8 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
int i; /* Looping var */
|
||||
int job_id; /* Job ID */
|
||||
const char *name; /* Destination printer */
|
||||
char *instance; /* Pointer to instance name */
|
||||
char *instance, /* Pointer to instance name */
|
||||
*opt; /* Option pointer */
|
||||
cups_dest_t *dest, /* Destination */
|
||||
*defdest; /* Default destination */
|
||||
int did_cancel; /* Did we cancel something? */
|
||||
@@ -56,90 +47,96 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
*/
|
||||
|
||||
for (i = 1; i < argc; i ++)
|
||||
{
|
||||
if (argv[i][0] == '-' && argv[i][1] != '\0')
|
||||
switch (argv[i][1])
|
||||
{
|
||||
for (opt = argv[i] + 1; *opt; opt ++)
|
||||
{
|
||||
case 'E' : /* Encrypt */
|
||||
switch (*opt)
|
||||
{
|
||||
case 'E' : /* Encrypt */
|
||||
#ifdef HAVE_SSL
|
||||
cupsSetEncryption(HTTP_ENCRYPT_REQUIRED);
|
||||
cupsSetEncryption(HTTP_ENCRYPT_REQUIRED);
|
||||
#else
|
||||
_cupsLangPrintf(stderr,
|
||||
_("%s: Sorry, no encryption support."), argv[0]);
|
||||
_cupsLangPrintf(stderr, _("%s: Sorry, no encryption support."), argv[0]);
|
||||
#endif /* HAVE_SSL */
|
||||
break;
|
||||
break;
|
||||
|
||||
case 'P' : /* Cancel jobs on a printer */
|
||||
if (argv[i][2])
|
||||
name = argv[i] + 2;
|
||||
else
|
||||
{
|
||||
i ++;
|
||||
name = argv[i];
|
||||
}
|
||||
|
||||
if ((instance = strchr(name, '/')) != NULL)
|
||||
*instance = '\0';
|
||||
|
||||
if ((dest = cupsGetNamedDest(CUPS_HTTP_DEFAULT, name,
|
||||
NULL)) == NULL)
|
||||
{
|
||||
_cupsLangPrintf(stderr,
|
||||
_("%s: Error - unknown destination \"%s\"."),
|
||||
argv[0], name);
|
||||
goto error;
|
||||
}
|
||||
|
||||
cupsFreeDests(1, dest);
|
||||
break;
|
||||
|
||||
case 'U' : /* Username */
|
||||
if (argv[i][2] != '\0')
|
||||
cupsSetUser(argv[i] + 2);
|
||||
else
|
||||
{
|
||||
i ++;
|
||||
if (i >= argc)
|
||||
case 'P' : /* Cancel jobs on a printer */
|
||||
if (opt[1] != '\0')
|
||||
{
|
||||
_cupsLangPrintf(stderr,
|
||||
_("%s: Error - expected username after "
|
||||
"\"-U\" option."), argv[0]);
|
||||
goto error;
|
||||
name = opt + 1;
|
||||
opt += strlen(opt) - 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
i ++;
|
||||
name = argv[i];
|
||||
}
|
||||
|
||||
cupsSetUser(argv[i]);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'h' : /* Connect to host */
|
||||
if (argv[i][2] != '\0')
|
||||
cupsSetServer(argv[i] + 2);
|
||||
else
|
||||
{
|
||||
i ++;
|
||||
if ((instance = strchr(name, '/')) != NULL)
|
||||
*instance = '\0';
|
||||
|
||||
if (i >= argc)
|
||||
if ((dest = cupsGetNamedDest(CUPS_HTTP_DEFAULT, name, NULL)) == NULL)
|
||||
{
|
||||
_cupsLangPrintf(stderr,
|
||||
_("%s: Error - expected hostname after "
|
||||
"\"-h\" option."), argv[0]);
|
||||
_cupsLangPrintf(stderr, _("%s: Error - unknown destination \"%s\"."), argv[0], name);
|
||||
goto error;
|
||||
}
|
||||
}
|
||||
|
||||
cupsFreeDests(1, dest);
|
||||
break;
|
||||
|
||||
case 'U' : /* Username */
|
||||
if (opt[1] != '\0')
|
||||
{
|
||||
cupsSetUser(opt + 1);
|
||||
opt += strlen(opt) - 1;
|
||||
}
|
||||
else
|
||||
cupsSetServer(argv[i]);
|
||||
}
|
||||
{
|
||||
i ++;
|
||||
if (i >= argc)
|
||||
{
|
||||
_cupsLangPrintf(stderr, _("%s: Error - expected username after \"-U\" option."), argv[0]);
|
||||
goto error;
|
||||
}
|
||||
|
||||
if (defdest)
|
||||
cupsFreeDests(1, defdest);
|
||||
cupsSetUser(argv[i]);
|
||||
}
|
||||
break;
|
||||
|
||||
defdest = cupsGetNamedDest(CUPS_HTTP_DEFAULT, NULL, NULL);
|
||||
name = defdest ? defdest->name : NULL;
|
||||
break;
|
||||
case 'h' : /* Connect to host */
|
||||
if (opt[1] != '\0')
|
||||
{
|
||||
cupsSetServer(opt + 1);
|
||||
opt += strlen(opt) - 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
i ++;
|
||||
|
||||
default :
|
||||
_cupsLangPrintf(stderr, _("%s: Error - unknown option \"%c\"."),
|
||||
argv[0], argv[i][1]);
|
||||
goto error;
|
||||
if (i >= argc)
|
||||
{
|
||||
_cupsLangPrintf(stderr, _("%s: Error - expected hostname after \"-h\" option."), argv[0]);
|
||||
goto error;
|
||||
}
|
||||
else
|
||||
cupsSetServer(argv[i]);
|
||||
}
|
||||
|
||||
if (defdest)
|
||||
cupsFreeDests(1, defdest);
|
||||
|
||||
defdest = cupsGetNamedDest(CUPS_HTTP_DEFAULT, NULL, NULL);
|
||||
name = defdest ? defdest->name : NULL;
|
||||
break;
|
||||
|
||||
default :
|
||||
_cupsLangPrintf(stderr, _("%s: Error - unknown option \"%c\"."), argv[0], *opt);
|
||||
goto error;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/*
|
||||
@@ -182,6 +179,7 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
|
||||
did_cancel = 1;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* If nothing has been canceled yet, cancel the current job on the specified
|
||||
@@ -210,8 +208,3 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
|
||||
return (1);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+22
-23
@@ -1,73 +1,72 @@
|
||||
help-index.o: help-index.c cgi-private.h cgi.h ../cups/cups.h \
|
||||
../cups/file.h ../cups/versioning.h ../cups/ipp.h ../cups/http.h \
|
||||
../cups/array.h ../cups/language.h help-index.h \
|
||||
../cups/array.h ../cups/language.h ../cups/pwg.h help-index.h \
|
||||
../cups/debug-private.h ../cups/language-private.h ../cups/transcode.h \
|
||||
../cups/string-private.h ../config.h ../cups/ipp-private.h \
|
||||
../cups/dir.h
|
||||
html.o: html.c cgi-private.h cgi.h ../cups/cups.h ../cups/file.h \
|
||||
../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
|
||||
../cups/language.h help-index.h ../cups/debug-private.h \
|
||||
../cups/language.h ../cups/pwg.h help-index.h ../cups/debug-private.h \
|
||||
../cups/language-private.h ../cups/transcode.h \
|
||||
../cups/string-private.h ../config.h ../cups/ipp-private.h
|
||||
ipp-var.o: ipp-var.c cgi-private.h cgi.h ../cups/cups.h ../cups/file.h \
|
||||
../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
|
||||
../cups/language.h help-index.h ../cups/debug-private.h \
|
||||
../cups/language.h ../cups/pwg.h help-index.h ../cups/debug-private.h \
|
||||
../cups/language-private.h ../cups/transcode.h \
|
||||
../cups/string-private.h ../config.h ../cups/ipp-private.h
|
||||
search.o: search.c cgi-private.h cgi.h ../cups/cups.h ../cups/file.h \
|
||||
../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
|
||||
../cups/language.h help-index.h ../cups/debug-private.h \
|
||||
../cups/language.h ../cups/pwg.h help-index.h ../cups/debug-private.h \
|
||||
../cups/language-private.h ../cups/transcode.h \
|
||||
../cups/string-private.h ../config.h ../cups/ipp-private.h
|
||||
template.o: template.c cgi-private.h cgi.h ../cups/cups.h ../cups/file.h \
|
||||
../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
|
||||
../cups/language.h help-index.h ../cups/debug-private.h \
|
||||
../cups/language.h ../cups/pwg.h help-index.h ../cups/debug-private.h \
|
||||
../cups/language-private.h ../cups/transcode.h \
|
||||
../cups/string-private.h ../config.h ../cups/ipp-private.h
|
||||
var.o: var.c cgi-private.h cgi.h ../cups/cups.h ../cups/file.h \
|
||||
../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
|
||||
../cups/language.h help-index.h ../cups/debug-private.h \
|
||||
../cups/language.h ../cups/pwg.h help-index.h ../cups/debug-private.h \
|
||||
../cups/language-private.h ../cups/transcode.h \
|
||||
../cups/string-private.h ../config.h ../cups/ipp-private.h \
|
||||
../cups/md5-private.h
|
||||
../cups/string-private.h ../config.h ../cups/ipp-private.h
|
||||
admin.o: admin.c cgi-private.h cgi.h ../cups/cups.h ../cups/file.h \
|
||||
../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
|
||||
../cups/language.h help-index.h ../cups/debug-private.h \
|
||||
../cups/language.h ../cups/pwg.h help-index.h ../cups/debug-private.h \
|
||||
../cups/language-private.h ../cups/transcode.h \
|
||||
../cups/string-private.h ../config.h ../cups/ipp-private.h \
|
||||
../cups/adminutil.h ../cups/ppd.h
|
||||
../cups/http-private.h ../cups/ppd-private.h ../cups/ppd.h \
|
||||
../cups/raster.h ../cups/pwg-private.h ../cups/adminutil.h
|
||||
classes.o: classes.c cgi-private.h cgi.h ../cups/cups.h ../cups/file.h \
|
||||
../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
|
||||
../cups/language.h help-index.h ../cups/debug-private.h \
|
||||
../cups/language.h ../cups/pwg.h help-index.h ../cups/debug-private.h \
|
||||
../cups/language-private.h ../cups/transcode.h \
|
||||
../cups/string-private.h ../config.h ../cups/ipp-private.h
|
||||
help.o: help.c cgi-private.h cgi.h ../cups/cups.h ../cups/file.h \
|
||||
../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
|
||||
../cups/language.h help-index.h ../cups/debug-private.h \
|
||||
../cups/language.h ../cups/pwg.h help-index.h ../cups/debug-private.h \
|
||||
../cups/language-private.h ../cups/transcode.h \
|
||||
../cups/string-private.h ../config.h ../cups/ipp-private.h
|
||||
jobs.o: jobs.c cgi-private.h cgi.h ../cups/cups.h ../cups/file.h \
|
||||
../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
|
||||
../cups/language.h help-index.h ../cups/debug-private.h \
|
||||
../cups/language.h ../cups/pwg.h help-index.h ../cups/debug-private.h \
|
||||
../cups/language-private.h ../cups/transcode.h \
|
||||
../cups/string-private.h ../config.h ../cups/ipp-private.h
|
||||
makedocset.o: makedocset.c cgi.h ../cups/cups.h ../cups/file.h \
|
||||
../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
|
||||
../cups/language.h help-index.h
|
||||
makedocset.o: makedocset.c cgi-private.h cgi.h ../cups/cups.h \
|
||||
../cups/file.h ../cups/versioning.h ../cups/ipp.h ../cups/http.h \
|
||||
../cups/array.h ../cups/language.h ../cups/pwg.h help-index.h \
|
||||
../cups/debug-private.h ../cups/language-private.h ../cups/transcode.h \
|
||||
../cups/string-private.h ../config.h ../cups/ipp-private.h
|
||||
printers.o: printers.c cgi-private.h cgi.h ../cups/cups.h ../cups/file.h \
|
||||
../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
|
||||
../cups/language.h help-index.h ../cups/debug-private.h \
|
||||
../cups/language.h ../cups/pwg.h help-index.h ../cups/debug-private.h \
|
||||
../cups/language-private.h ../cups/transcode.h \
|
||||
../cups/string-private.h ../config.h ../cups/ipp-private.h
|
||||
testcgi.o: testcgi.c cgi.h ../cups/cups.h ../cups/file.h \
|
||||
../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
|
||||
../cups/language.h help-index.h
|
||||
../cups/language.h ../cups/pwg.h help-index.h
|
||||
testhi.o: testhi.c cgi.h ../cups/cups.h ../cups/file.h \
|
||||
../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
|
||||
../cups/language.h help-index.h
|
||||
../cups/language.h ../cups/pwg.h help-index.h
|
||||
testtemplate.o: testtemplate.c cgi.h ../cups/cups.h ../cups/file.h \
|
||||
../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
|
||||
../cups/language.h help-index.h
|
||||
websearch.o: websearch.c cgi.h ../cups/cups.h ../cups/file.h \
|
||||
../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
|
||||
../cups/language.h help-index.h
|
||||
../cups/language.h ../cups/pwg.h help-index.h
|
||||
|
||||
+32
-87
@@ -1,16 +1,10 @@
|
||||
#
|
||||
# "$Id$"
|
||||
# CGI makefile for CUPS.
|
||||
#
|
||||
# CGI makefile for CUPS.
|
||||
# Copyright 2007-2017 by Apple Inc.
|
||||
# Copyright 1997-2006 by Easy Software Products.
|
||||
#
|
||||
# Copyright 2007-2012 by Apple Inc.
|
||||
# Copyright 1997-2006 by Easy Software Products.
|
||||
#
|
||||
# These coded instructions, statements, and computer programs are the
|
||||
# property of Apple Inc. and are protected by Federal copyright
|
||||
# law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
# which should have been included with this file. If this file is
|
||||
# file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
# Licensed under Apache License v2.0. See the file "LICENSE" for more information.
|
||||
#
|
||||
|
||||
include ../Makedefs
|
||||
@@ -32,8 +26,7 @@ OBJS = \
|
||||
printers.o \
|
||||
testcgi.o \
|
||||
testhi.o \
|
||||
testtemplate.o \
|
||||
websearch.o
|
||||
testtemplate.o
|
||||
CGIS = \
|
||||
admin.cgi \
|
||||
classes.cgi \
|
||||
@@ -42,8 +35,7 @@ CGIS = \
|
||||
printers.cgi
|
||||
LIBTARGETS = \
|
||||
libcupscgi.a \
|
||||
$(LIBCUPSCGI) \
|
||||
websearch
|
||||
$(LIBCUPSCGI)
|
||||
|
||||
UNITTARGETS = \
|
||||
testcgi \
|
||||
@@ -82,7 +74,7 @@ unittests: $(UNITTARGETS)
|
||||
|
||||
clean:
|
||||
$(RM) $(OBJS) $(TARGETS) $(UNITTARGETS) makedocset
|
||||
$(RM) libcupscgi.so libcupscgi.sl libcupscgi.dylib
|
||||
$(RM) libcupscgi.so libcupscgi.dylib
|
||||
|
||||
|
||||
#
|
||||
@@ -130,10 +122,13 @@ install-exec:
|
||||
#
|
||||
|
||||
install-headers:
|
||||
echo Installing header files in $(INCLUDEDIR)/cups...
|
||||
$(INSTALL_DIR) -m 755 $(INCLUDEDIR)/cups
|
||||
$(INSTALL_DATA) cgi.h $(INCLUDEDIR)/cups
|
||||
$(INSTALL_DATA) help-index.h $(INCLUDEDIR)/cups
|
||||
if test "x$(privateinclude)" != x; then \
|
||||
echo Installing private header files into $(PRIVATEINCLUDE)...; \
|
||||
$(INSTALL_DIR) -m 755 $(PRIVATEINCLUDE); \
|
||||
for file in cgi.h help-index.h; do \
|
||||
$(INSTALL_DATA) $$file $(PRIVATEINCLUDE); \
|
||||
done; \
|
||||
fi
|
||||
|
||||
|
||||
#
|
||||
@@ -144,7 +139,7 @@ install-libs: $(INSTALLSTATIC)
|
||||
echo Installing libraries in $(LIBDIR)...
|
||||
$(INSTALL_DIR) -m 755 $(LIBDIR)
|
||||
$(INSTALL_LIB) $(LIBCUPSCGI) $(LIBDIR)
|
||||
if test $(LIBCUPSCGI) = "libcupscgi.so.1" -o $(LIBCUPSCGI) = "libcupscgi.sl.1"; then \
|
||||
if test $(LIBCUPSCGI) = "libcupscgi.so.1"; then \
|
||||
$(RM) $(LIBDIR)/`basename $(LIBCUPSCGI) .1`; \
|
||||
$(LN) $(LIBCUPSCGI) $(LIBDIR)/`basename $(LIBCUPSCGI) .1`; \
|
||||
fi
|
||||
@@ -177,44 +172,21 @@ uninstall:
|
||||
$(RM) $(LIBDIR)/libcupscgi.1.dylib
|
||||
$(RM) $(LIBDIR)/libcupscgi.a
|
||||
$(RM) $(LIBDIR)/libcupscgi.dylib
|
||||
$(RM) $(LIBDIR)/libcupscgi_s.a
|
||||
$(RM) $(LIBDIR)/libcupscgi.sl
|
||||
$(RM) $(LIBDIR)/libcupscgi.sl.1
|
||||
$(RM) $(LIBDIR)/libcupscgi.so
|
||||
$(RM) $(LIBDIR)/libcupscgi.so.1
|
||||
-$(RMDIR) $(LIBDIR)
|
||||
$(RM) $(INCLUDEDIR)/cups/cgi.h
|
||||
$(RM) $(INCLUDEDIR)/cups/help-index.h
|
||||
-$(RMDIR) $(INCLUDEDIR)/cups
|
||||
-if test "x$(privateinclude)" != x; then \
|
||||
$(RM) $(PRIVATEINCLUDE)/cgi.h; \
|
||||
$(RM) $(PRIVATEINCLUDE)/help-index.h; \
|
||||
$(RMDIR) $(PRIVATEINCLUDE); \
|
||||
fi
|
||||
|
||||
|
||||
#
|
||||
# Automatic API help files...
|
||||
# libcupscgi.so.1
|
||||
#
|
||||
|
||||
apihelp:
|
||||
mxmldoc --section "Programming" \
|
||||
--title "CGI API" \
|
||||
--css ../doc/cups-printable.css \
|
||||
--header api-cgi.header --intro api-cgi.shtml \
|
||||
cgi.h help-index.h $(LIBOBJS:.o=.c) >../doc/help/api-cgi.html
|
||||
mxmldoc --tokens help/api-cgi.html api-cgi.xml >../doc/help/api-cgi.tokens
|
||||
$(RM) api-cgi.xml
|
||||
|
||||
framedhelp:
|
||||
mxmldoc --framed api-cgi \
|
||||
--section "Programming" \
|
||||
--title "CGI API" \
|
||||
--css ../doc/cups-printable.css \
|
||||
--header api-cgi.header --intro api-cgi.shtml \
|
||||
cgi.h help-index.h $(LIBOBJS:.o=.c)
|
||||
|
||||
|
||||
#
|
||||
# libcupscgi.so.1, libcupscgi.sl.1
|
||||
#
|
||||
|
||||
libcupscgi.so.1 libcupscgi.sl.1: $(LIBOBJS)
|
||||
libcupscgi.so.1: $(LIBOBJS)
|
||||
echo Linking $@...
|
||||
$(DSO) $(ARCHFLAGS) $(DSOFLAGS) -o $@ $(LIBOBJS) $(LIBS)
|
||||
$(RM) `basename $@ .1`
|
||||
@@ -237,24 +209,13 @@ libcupscgi.1.dylib: $(LIBOBJS) libcupscgi.exp
|
||||
$(LN) $@ libcupscgi.dylib
|
||||
|
||||
|
||||
#
|
||||
# libcupscgi_s.a
|
||||
#
|
||||
|
||||
libcupscgi_s.a: $(LIBOBJS)
|
||||
echo Creating $@...
|
||||
$(DSO) $(DSOFLAGS) -o libcupscgi_s.o $(LIBOBJS) $(LIBS)
|
||||
$(RM) $@
|
||||
$(AR) $(ARFLAGS) $@ libcupscgi_s.o
|
||||
|
||||
|
||||
#
|
||||
# libcupscgi.la
|
||||
#
|
||||
|
||||
libcupscgi.la: $(LIBOBJS)
|
||||
echo Linking $@...
|
||||
$(CC) $(ARCHFLAGS) $(DSOFLAGS) -o $@ $(LIBOBJS:.o=.lo) -rpath $(LIBDIR) \
|
||||
$(LD_CC) $(ARCHFLAGS) $(DSOFLAGS) -o $@ $(LIBOBJS:.o=.lo) -rpath $(LIBDIR) \
|
||||
-version-info 1:0 $(LIBS)
|
||||
|
||||
|
||||
@@ -275,7 +236,7 @@ libcupscgi.a: $(LIBOBJS)
|
||||
|
||||
admin.cgi: admin.o ../Makedefs ../cups/$(LIBCUPS) $(LIBCUPSCGI)
|
||||
echo Linking $@...
|
||||
$(CC) $(LDFLAGS) -o $@ admin.o -lcupscgi $(LIBS)
|
||||
$(LD_CC) $(LDFLAGS) -o $@ admin.o -lcupscgi $(LIBS)
|
||||
|
||||
|
||||
#
|
||||
@@ -284,7 +245,7 @@ admin.cgi: admin.o ../Makedefs ../cups/$(LIBCUPS) $(LIBCUPSCGI)
|
||||
|
||||
classes.cgi: classes.o ../Makedefs ../cups/$(LIBCUPS) $(LIBCUPSCGI)
|
||||
echo Linking $@...
|
||||
$(CC) $(LDFLAGS) -o $@ classes.o -lcupscgi $(LIBS)
|
||||
$(LD_CC) $(LDFLAGS) -o $@ classes.o -lcupscgi $(LIBS)
|
||||
|
||||
|
||||
#
|
||||
@@ -293,7 +254,7 @@ classes.cgi: classes.o ../Makedefs ../cups/$(LIBCUPS) $(LIBCUPSCGI)
|
||||
|
||||
help.cgi: help.o ../Makedefs ../cups/$(LIBCUPS) $(LIBCUPSCGI)
|
||||
echo Linking $@...
|
||||
$(CC) $(LDFLAGS) -o $@ help.o -lcupscgi $(LIBS)
|
||||
$(LD_CC) $(LDFLAGS) -o $@ help.o -lcupscgi $(LIBS)
|
||||
|
||||
|
||||
#
|
||||
@@ -302,7 +263,7 @@ help.cgi: help.o ../Makedefs ../cups/$(LIBCUPS) $(LIBCUPSCGI)
|
||||
|
||||
jobs.cgi: jobs.o ../Makedefs ../cups/$(LIBCUPS) $(LIBCUPSCGI)
|
||||
echo Linking $@...
|
||||
$(CC) $(LDFLAGS) -o $@ jobs.o -lcupscgi $(LIBS)
|
||||
$(LD_CC) $(LDFLAGS) -o $@ jobs.o -lcupscgi $(LIBS)
|
||||
|
||||
|
||||
#
|
||||
@@ -311,7 +272,7 @@ jobs.cgi: jobs.o ../Makedefs ../cups/$(LIBCUPS) $(LIBCUPSCGI)
|
||||
|
||||
makedocset: makedocset.o ../Makedefs libcupscgi.a ../cups/$(LIBCUPSSTATIC)
|
||||
echo Linking $@...
|
||||
$(CC) $(ARCHFLAGS) $(LDFLAGS) -o $@ makedocset.o libcupscgi.a \
|
||||
$(LD_CC) $(ARCHFLAGS) $(LDFLAGS) -o $@ makedocset.o libcupscgi.a \
|
||||
../cups/$(LIBCUPSSTATIC) $(COMMONLIBS) $(SSLLIBS) $(DNSSDLIBS) \
|
||||
$(LIBZ) $(LIBGSSAPI)
|
||||
|
||||
@@ -322,7 +283,7 @@ makedocset: makedocset.o ../Makedefs libcupscgi.a ../cups/$(LIBCUPSSTATIC)
|
||||
|
||||
printers.cgi: printers.o ../Makedefs ../cups/$(LIBCUPS) $(LIBCUPSCGI)
|
||||
echo Linking $@...
|
||||
$(CC) $(LDFLAGS) -o $@ printers.o -L. -lcupscgi $(LIBS)
|
||||
$(LD_CC) $(LDFLAGS) -o $@ printers.o -L. -lcupscgi $(LIBS)
|
||||
|
||||
|
||||
#
|
||||
@@ -331,7 +292,7 @@ printers.cgi: printers.o ../Makedefs ../cups/$(LIBCUPS) $(LIBCUPSCGI)
|
||||
|
||||
testcgi: testcgi.o ../Makedefs libcupscgi.a ../cups/$(LIBCUPSSTATIC)
|
||||
echo Linking $@...
|
||||
$(CC) $(ARCHFLAGS) $(LDFLAGS) -o $@ testcgi.o libcupscgi.a \
|
||||
$(LD_CC) $(ARCHFLAGS) $(LDFLAGS) -o $@ testcgi.o libcupscgi.a \
|
||||
../cups/$(LIBCUPSSTATIC) $(COMMONLIBS) $(SSLLIBS) $(DNSSDLIBS) \
|
||||
$(LIBZ) $(LIBGSSAPI)
|
||||
echo Testing CGI API...
|
||||
@@ -344,7 +305,7 @@ testcgi: testcgi.o ../Makedefs libcupscgi.a ../cups/$(LIBCUPSSTATIC)
|
||||
|
||||
testhi: testhi.o ../Makedefs libcupscgi.a ../cups/$(LIBCUPSSTATIC)
|
||||
echo Linking $@...
|
||||
$(CC) $(ARCHFLAGS) $(LDFLAGS) -o $@ testhi.o libcupscgi.a \
|
||||
$(LD_CC) $(ARCHFLAGS) $(LDFLAGS) -o $@ testhi.o libcupscgi.a \
|
||||
../cups/$(LIBCUPSSTATIC) $(COMMONLIBS) $(SSLLIBS) $(DNSSDLIBS) \
|
||||
$(LIBZ) $(LIBGSSAPI)
|
||||
echo Testing help index API...
|
||||
@@ -357,28 +318,12 @@ testhi: testhi.o ../Makedefs libcupscgi.a ../cups/$(LIBCUPSSTATIC)
|
||||
|
||||
testtemplate: testtemplate.o ../Makedefs libcupscgi.a ../cups/$(LIBCUPSSTATIC)
|
||||
echo Linking $@...
|
||||
$(CC) $(LDFLAGS) -o $@ testtemplate.o libcupscgi.a ../cups/$(LIBCUPSSTATIC) \
|
||||
$(LD_CC) $(LDFLAGS) -o $@ testtemplate.o libcupscgi.a ../cups/$(LIBCUPSSTATIC) \
|
||||
$(COMMONLIBS) $(SSLLIBS) $(DNSSDLIBS) $(LIBZ) $(LIBGSSAPI)
|
||||
|
||||
|
||||
#
|
||||
# websearch
|
||||
#
|
||||
|
||||
websearch: websearch.o ../Makedefs libcupscgi.a ../cups/$(LIBCUPSSTATIC)
|
||||
echo Linking $@...
|
||||
$(CC) $(ARCHFLAGS) $(LDFLAGS) -o $@ websearch.o libcupscgi.a \
|
||||
../cups/$(LIBCUPSSTATIC) $(COMMONLIBS) $(SSLLIBS) $(DNSSDLIBS) \
|
||||
$(LIBZ) $(LIBGSSAPI)
|
||||
|
||||
|
||||
#
|
||||
# Dependencies...
|
||||
#
|
||||
|
||||
include Dependencies
|
||||
|
||||
|
||||
#
|
||||
# End of "$Id$".
|
||||
#
|
||||
|
||||
+115
-354
@@ -1,37 +1,10 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* Administration CGI for CUPS.
|
||||
*
|
||||
* Administration CGI for CUPS.
|
||||
* Copyright 2007-2017 by Apple Inc.
|
||||
* Copyright 1997-2007 by Easy Software Products.
|
||||
*
|
||||
* Copyright 2007-2012 by Apple Inc.
|
||||
* Copyright 1997-2007 by Easy Software Products.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
* property of Apple Inc. and are protected by Federal copyright
|
||||
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
* which should have been included with this file. If this file is
|
||||
* file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
*
|
||||
* Contents:
|
||||
*
|
||||
* main() - Main entry for CGI.
|
||||
* choose_device_cb() - Add a device to the device selection page.
|
||||
* do_add_rss_subscription() - Add a RSS subscription.
|
||||
* do_am_class() - Add or modify a class.
|
||||
* do_am_printer() - Add or modify a printer.
|
||||
* do_cancel_subscription() - Cancel a subscription.
|
||||
* do_config_server() - Configure server settings.
|
||||
* do_delete_class() - Delete a class.
|
||||
* do_delete_printer() - Delete a printer.
|
||||
* do_export() - Export printers to Samba.
|
||||
* do_list_printers() - List available printers.
|
||||
* do_menu() - Show the main menu.
|
||||
* do_set_allowed_users() - Set the allowed/denied users for a queue.
|
||||
* do_set_default() - Set the server default printer/class.
|
||||
* do_set_options() - Configure the default options for a queue.
|
||||
* do_set_sharing() - Set printer-is-shared value.
|
||||
* get_option_value() - Return the value of an option.
|
||||
* get_points() - Get a value in points.
|
||||
* Licensed under Apache License v2.0. See the file "LICENSE" for more information.
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -39,6 +12,8 @@
|
||||
*/
|
||||
|
||||
#include "cgi-private.h"
|
||||
#include <cups/http-private.h>
|
||||
#include <cups/ppd-private.h>
|
||||
#include <cups/adminutil.h>
|
||||
#include <cups/ppd.h>
|
||||
#include <errno.h>
|
||||
@@ -59,16 +34,9 @@ static int current_device = 0; /* Current device shown */
|
||||
* Local functions...
|
||||
*/
|
||||
|
||||
static void choose_device_cb(const char *device_class,
|
||||
const char *device_id, const char *device_info,
|
||||
const char *device_make_and_model,
|
||||
const char *device_uri,
|
||||
const char *device_location,
|
||||
const char *title);
|
||||
static void do_add_rss_subscription(http_t *http);
|
||||
static void choose_device_cb(const char *device_class, const char *device_id, const char *device_info, const char *device_make_and_model, const char *device_uri, const char *device_location, const char *title);
|
||||
static void do_am_class(http_t *http, int modify);
|
||||
static void do_am_printer(http_t *http, int modify);
|
||||
static void do_cancel_subscription(http_t *http);
|
||||
static void do_config_server(http_t *http);
|
||||
static void do_delete_class(http_t *http);
|
||||
static void do_delete_printer(http_t *http);
|
||||
@@ -82,6 +50,7 @@ static void do_set_sharing(http_t *http);
|
||||
static char *get_option_value(ppd_file_t *ppd, const char *name,
|
||||
char *buffer, size_t bufsize);
|
||||
static double get_points(double number, const char *uval);
|
||||
static char *get_printer_ppd(const char *uri, char *buffer, size_t bufsize);
|
||||
|
||||
|
||||
/*
|
||||
@@ -89,8 +58,7 @@ static double get_points(double number, const char *uval);
|
||||
*/
|
||||
|
||||
int /* O - Exit status */
|
||||
main(int argc, /* I - Number of command-line arguments */
|
||||
char *argv[]) /* I - Command-line arguments */
|
||||
main(void)
|
||||
{
|
||||
http_t *http; /* Connection to the server */
|
||||
const char *op; /* Operation name */
|
||||
@@ -197,10 +165,6 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
do_config_server(http);
|
||||
else if (!strcmp(op, "export-samba"))
|
||||
do_export(http);
|
||||
else if (!strcmp(op, "add-rss-subscription"))
|
||||
do_add_rss_subscription(http);
|
||||
else if (!strcmp(op, "cancel-subscription"))
|
||||
do_cancel_subscription(http);
|
||||
else
|
||||
{
|
||||
/*
|
||||
@@ -344,202 +308,6 @@ choose_device_cb(
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'do_add_rss_subscription()' - Add a RSS subscription.
|
||||
*/
|
||||
|
||||
static void
|
||||
do_add_rss_subscription(http_t *http) /* I - HTTP connection */
|
||||
{
|
||||
ipp_t *request, /* IPP request data */
|
||||
*response; /* IPP response data */
|
||||
char rss_uri[1024]; /* RSS notify-recipient URI */
|
||||
int num_events; /* Number of events */
|
||||
const char *events[12], /* Subscribed events */
|
||||
*subscription_name, /* Subscription name */
|
||||
*printer_uri, /* Printer URI */
|
||||
*ptr, /* Pointer into name */
|
||||
*user; /* Username */
|
||||
int max_events; /* Maximum number of events */
|
||||
|
||||
|
||||
/*
|
||||
* See if we have all of the required information...
|
||||
*/
|
||||
|
||||
subscription_name = cgiGetVariable("SUBSCRIPTION_NAME");
|
||||
printer_uri = cgiGetVariable("PRINTER_URI");
|
||||
num_events = 0;
|
||||
|
||||
if (cgiGetVariable("EVENT_JOB_CREATED"))
|
||||
events[num_events ++] = "job-created";
|
||||
if (cgiGetVariable("EVENT_JOB_COMPLETED"))
|
||||
events[num_events ++] = "job-completed";
|
||||
if (cgiGetVariable("EVENT_JOB_STOPPED"))
|
||||
events[num_events ++] = "job-stopped";
|
||||
if (cgiGetVariable("EVENT_JOB_CONFIG_CHANGED"))
|
||||
events[num_events ++] = "job-config-changed";
|
||||
if (cgiGetVariable("EVENT_PRINTER_STOPPED"))
|
||||
events[num_events ++] = "printer-stopped";
|
||||
if (cgiGetVariable("EVENT_PRINTER_ADDED"))
|
||||
events[num_events ++] = "printer-added";
|
||||
if (cgiGetVariable("EVENT_PRINTER_MODIFIED"))
|
||||
events[num_events ++] = "printer-modified";
|
||||
if (cgiGetVariable("EVENT_PRINTER_DELETED"))
|
||||
events[num_events ++] = "printer-deleted";
|
||||
if (cgiGetVariable("EVENT_SERVER_STARTED"))
|
||||
events[num_events ++] = "server-started";
|
||||
if (cgiGetVariable("EVENT_SERVER_STOPPED"))
|
||||
events[num_events ++] = "server-stopped";
|
||||
if (cgiGetVariable("EVENT_SERVER_RESTARTED"))
|
||||
events[num_events ++] = "server-restarted";
|
||||
if (cgiGetVariable("EVENT_SERVER_AUDIT"))
|
||||
events[num_events ++] = "server-audit";
|
||||
|
||||
if ((ptr = cgiGetVariable("MAX_EVENTS")) != NULL)
|
||||
max_events = atoi(ptr);
|
||||
else
|
||||
max_events = 0;
|
||||
|
||||
if (!subscription_name || !printer_uri || !num_events ||
|
||||
max_events <= 0 || max_events > 9999)
|
||||
{
|
||||
/*
|
||||
* Don't have everything we need, so get the available printers
|
||||
* and classes and (re)show the add page...
|
||||
*/
|
||||
|
||||
if (cgiGetVariable("EVENT_JOB_CREATED"))
|
||||
cgiSetVariable("EVENT_JOB_CREATED", "CHECKED");
|
||||
if (cgiGetVariable("EVENT_JOB_COMPLETED"))
|
||||
cgiSetVariable("EVENT_JOB_COMPLETED", "CHECKED");
|
||||
if (cgiGetVariable("EVENT_JOB_STOPPED"))
|
||||
cgiSetVariable("EVENT_JOB_STOPPED", "CHECKED");
|
||||
if (cgiGetVariable("EVENT_JOB_CONFIG_CHANGED"))
|
||||
cgiSetVariable("EVENT_JOB_CONFIG_CHANGED", "CHECKED");
|
||||
if (cgiGetVariable("EVENT_PRINTER_STOPPED"))
|
||||
cgiSetVariable("EVENT_PRINTER_STOPPED", "CHECKED");
|
||||
if (cgiGetVariable("EVENT_PRINTER_ADDED"))
|
||||
cgiSetVariable("EVENT_PRINTER_ADDED", "CHECKED");
|
||||
if (cgiGetVariable("EVENT_PRINTER_MODIFIED"))
|
||||
cgiSetVariable("EVENT_PRINTER_MODIFIED", "CHECKED");
|
||||
if (cgiGetVariable("EVENT_PRINTER_DELETED"))
|
||||
cgiSetVariable("EVENT_PRINTER_DELETED", "CHECKED");
|
||||
if (cgiGetVariable("EVENT_SERVER_STARTED"))
|
||||
cgiSetVariable("EVENT_SERVER_STARTED", "CHECKED");
|
||||
if (cgiGetVariable("EVENT_SERVER_STOPPED"))
|
||||
cgiSetVariable("EVENT_SERVER_STOPPED", "CHECKED");
|
||||
if (cgiGetVariable("EVENT_SERVER_RESTARTED"))
|
||||
cgiSetVariable("EVENT_SERVER_RESTARTED", "CHECKED");
|
||||
if (cgiGetVariable("EVENT_SERVER_AUDIT"))
|
||||
cgiSetVariable("EVENT_SERVER_AUDIT", "CHECKED");
|
||||
|
||||
request = ippNewRequest(CUPS_GET_PRINTERS);
|
||||
response = cupsDoRequest(http, request, "/");
|
||||
|
||||
cgiSetIPPVars(response, NULL, NULL, NULL, 0);
|
||||
|
||||
ippDelete(response);
|
||||
|
||||
cgiStartHTML(cgiText(_("Add RSS Subscription")));
|
||||
|
||||
cgiCopyTemplateLang("add-rss-subscription.tmpl");
|
||||
|
||||
cgiEndHTML();
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* Make sure we have a username...
|
||||
*/
|
||||
|
||||
if ((user = getenv("REMOTE_USER")) == NULL)
|
||||
{
|
||||
puts("Status: 401\n");
|
||||
exit(0);
|
||||
}
|
||||
|
||||
/*
|
||||
* Validate the subscription name...
|
||||
*/
|
||||
|
||||
for (ptr = subscription_name; *ptr; ptr ++)
|
||||
if ((*ptr >= 0 && *ptr <= ' ') || *ptr == 127 || *ptr == '/' ||
|
||||
*ptr == '?' || *ptr == '#')
|
||||
break;
|
||||
|
||||
if (*ptr)
|
||||
{
|
||||
cgiSetVariable("ERROR",
|
||||
cgiText(_("The subscription name may not "
|
||||
"contain spaces, slashes (/), question marks (?), "
|
||||
"or the pound sign (#).")));
|
||||
cgiStartHTML(_("Add RSS Subscription"));
|
||||
cgiCopyTemplateLang("error.tmpl");
|
||||
cgiEndHTML();
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* Add the subscription...
|
||||
*/
|
||||
|
||||
ptr = subscription_name + strlen(subscription_name) - 4;
|
||||
if (ptr < subscription_name || strcmp(ptr, ".rss"))
|
||||
httpAssembleURIf(HTTP_URI_CODING_ALL, rss_uri, sizeof(rss_uri), "rss",
|
||||
NULL, NULL, 0, "/%s.rss?max_events=%d", subscription_name,
|
||||
max_events);
|
||||
else
|
||||
httpAssembleURIf(HTTP_URI_CODING_ALL, rss_uri, sizeof(rss_uri), "rss",
|
||||
NULL, NULL, 0, "/%s?max_events=%d", subscription_name,
|
||||
max_events);
|
||||
|
||||
request = ippNewRequest(IPP_CREATE_PRINTER_SUBSCRIPTION);
|
||||
|
||||
if (!_cups_strcasecmp(printer_uri, "#ALL#"))
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
|
||||
NULL, "ipp://localhost/");
|
||||
else
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
|
||||
NULL, printer_uri);
|
||||
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "requesting-user-name",
|
||||
NULL, user);
|
||||
|
||||
ippAddString(request, IPP_TAG_SUBSCRIPTION, IPP_TAG_URI,
|
||||
"notify-recipient-uri", NULL, rss_uri);
|
||||
ippAddStrings(request, IPP_TAG_SUBSCRIPTION, IPP_TAG_KEYWORD, "notify-events",
|
||||
num_events, NULL, events);
|
||||
ippAddInteger(request, IPP_TAG_SUBSCRIPTION, IPP_TAG_INTEGER,
|
||||
"notify-lease-duration", 0);
|
||||
|
||||
ippDelete(cupsDoRequest(http, request, "/"));
|
||||
|
||||
if (cupsLastError() == IPP_NOT_AUTHORIZED)
|
||||
{
|
||||
puts("Status: 401\n");
|
||||
exit(0);
|
||||
}
|
||||
else if (cupsLastError() > IPP_OK_CONFLICT)
|
||||
{
|
||||
cgiStartHTML(_("Add RSS Subscription"));
|
||||
cgiShowIPPError(_("Unable to add RSS subscription"));
|
||||
}
|
||||
else
|
||||
{
|
||||
/*
|
||||
* Redirect successful updates back to the admin page...
|
||||
*/
|
||||
|
||||
cgiSetVariable("refresh_page", "5;URL=/admin");
|
||||
cgiStartHTML(_("Add RSS Subscription"));
|
||||
cgiCopyTemplateLang("subscription-added.tmpl");
|
||||
}
|
||||
|
||||
cgiEndHTML();
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'do_am_class()' - Add or modify a class.
|
||||
*/
|
||||
@@ -854,7 +622,8 @@ do_am_printer(http_t *http, /* I - HTTP connection */
|
||||
const cgi_file_t *file; /* Uploaded file, if any */
|
||||
const char *var; /* CGI variable */
|
||||
char uri[HTTP_MAX_URI], /* Device or printer URI */
|
||||
*uriptr; /* Pointer into URI */
|
||||
*uriptr, /* Pointer into URI */
|
||||
evefile[1024] = ""; /* IPP Everywhere PPD file */
|
||||
int maxrate; /* Maximum baud rate */
|
||||
char baudrate[255]; /* Baud rate string */
|
||||
const char *name, /* Pointer to class name */
|
||||
@@ -922,16 +691,13 @@ do_am_printer(http_t *http, /* I - HTTP connection */
|
||||
if ((name = cgiGetVariable("PRINTER_NAME")) != NULL)
|
||||
{
|
||||
for (ptr = name; *ptr; ptr ++)
|
||||
if ((*ptr >= 0 && *ptr <= ' ') || *ptr == 127 || *ptr == '/' || *ptr == '#')
|
||||
if ((*ptr >= 0 && *ptr <= ' ') || *ptr == 127 || *ptr == '/' || *ptr == '\\' || *ptr == '?' || *ptr == '\'' || *ptr == '\"' || *ptr == '#')
|
||||
break;
|
||||
|
||||
if (*ptr || ptr == name || strlen(name) > 127)
|
||||
{
|
||||
cgiSetVariable("ERROR",
|
||||
cgiText(_("The printer name may only contain up to "
|
||||
"127 printable characters and may not "
|
||||
"contain spaces, slashes (/), or the "
|
||||
"pound sign (#).")));
|
||||
cgiText(_("The printer name may only contain up to 127 printable characters and may not contain spaces, slashes (/ \\), quotes (' \"), question mark (?), or the pound sign (#).")));
|
||||
cgiStartHTML(title);
|
||||
cgiCopyTemplateLang("error.tmpl");
|
||||
cgiEndHTML();
|
||||
@@ -1172,7 +938,7 @@ do_am_printer(http_t *http, /* I - HTTP connection */
|
||||
char filename[1024]; /* PPD filename */
|
||||
ppd_file_t *ppd; /* PPD information */
|
||||
char buffer[1024]; /* Buffer */
|
||||
int bytes; /* Number of bytes */
|
||||
ssize_t bytes; /* Number of bytes */
|
||||
http_status_t get_status; /* Status of GET */
|
||||
|
||||
|
||||
@@ -1194,7 +960,7 @@ do_am_printer(http_t *http, /* I - HTTP connection */
|
||||
else if ((fd = cupsTempFd(filename, sizeof(filename))) >= 0)
|
||||
{
|
||||
while ((bytes = httpRead2(http, buffer, sizeof(buffer))) > 0)
|
||||
write(fd, buffer, bytes);
|
||||
write(fd, buffer, (size_t)bytes);
|
||||
|
||||
close(fd);
|
||||
|
||||
@@ -1211,8 +977,10 @@ do_am_printer(http_t *http, /* I - HTTP connection */
|
||||
}
|
||||
else
|
||||
{
|
||||
int linenum; /* Line number */
|
||||
|
||||
fprintf(stderr, "ERROR: Unable to open PPD file %s: %s\n",
|
||||
filename, ppdErrorString(ppdLastError(&bytes)));
|
||||
filename, ppdErrorString(ppdLastError(&linenum)));
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -1348,20 +1116,22 @@ 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, "everywhere"))
|
||||
get_printer_ppd(cgiGetVariable("DEVICE_URI"), evefile, sizeof(evefile));
|
||||
else if (strcmp(var, "__no_change__"))
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "ppd-name",
|
||||
NULL, var);
|
||||
}
|
||||
|
||||
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));
|
||||
|
||||
/*
|
||||
@@ -1380,7 +1150,7 @@ do_am_printer(http_t *http, /* I - HTTP connection */
|
||||
if ((uriptr = strchr(uri, '?')) == NULL)
|
||||
uriptr = uri + strlen(uri);
|
||||
|
||||
snprintf(uriptr, sizeof(uri) - (uriptr - uri),
|
||||
snprintf(uriptr, sizeof(uri) - (size_t)(uriptr - uri),
|
||||
"?baud=%s+bits=%s+parity=%s+flow=%s",
|
||||
cgiGetVariable("BAUDRATE"), cgiGetVariable("BITS"),
|
||||
cgiGetVariable("PARITY"), cgiGetVariable("FLOW"));
|
||||
@@ -1404,6 +1174,11 @@ do_am_printer(http_t *http, /* I - HTTP connection */
|
||||
|
||||
if (file)
|
||||
ippDelete(cupsDoFileRequest(http, request, "/admin/", file->tempfile));
|
||||
else if (evefile[0])
|
||||
{
|
||||
ippDelete(cupsDoFileRequest(http, request, "/admin/", evefile));
|
||||
unlink(evefile);
|
||||
}
|
||||
else
|
||||
ippDelete(cupsDoRequest(http, request, "/admin/"));
|
||||
|
||||
@@ -1457,88 +1232,6 @@ do_am_printer(http_t *http, /* I - HTTP connection */
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'do_cancel_subscription()' - Cancel a subscription.
|
||||
*/
|
||||
|
||||
static void
|
||||
do_cancel_subscription(http_t *http)/* I - HTTP connection */
|
||||
{
|
||||
ipp_t *request; /* IPP request data */
|
||||
const char *var, /* Form variable */
|
||||
*user; /* Username */
|
||||
int id; /* Subscription ID */
|
||||
|
||||
|
||||
/*
|
||||
* See if we have all of the required information...
|
||||
*/
|
||||
|
||||
if ((var = cgiGetVariable("NOTIFY_SUBSCRIPTION_ID")) != NULL)
|
||||
id = atoi(var);
|
||||
else
|
||||
id = 0;
|
||||
|
||||
if (id <= 0)
|
||||
{
|
||||
cgiSetVariable("ERROR", cgiText(_("Bad subscription ID")));
|
||||
cgiStartHTML(_("Cancel RSS Subscription"));
|
||||
cgiCopyTemplateLang("error.tmpl");
|
||||
cgiEndHTML();
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* Require a username...
|
||||
*/
|
||||
|
||||
if ((user = getenv("REMOTE_USER")) == NULL)
|
||||
{
|
||||
puts("Status: 401\n");
|
||||
exit(0);
|
||||
}
|
||||
|
||||
/*
|
||||
* Cancel the subscription...
|
||||
*/
|
||||
|
||||
request = ippNewRequest(IPP_CANCEL_SUBSCRIPTION);
|
||||
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
|
||||
NULL, "ipp://localhost/");
|
||||
ippAddInteger(request, IPP_TAG_OPERATION, IPP_TAG_INTEGER,
|
||||
"notify-subscription-id", id);
|
||||
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "requesting-user-name",
|
||||
NULL, user);
|
||||
|
||||
ippDelete(cupsDoRequest(http, request, "/"));
|
||||
|
||||
if (cupsLastError() == IPP_NOT_AUTHORIZED)
|
||||
{
|
||||
puts("Status: 401\n");
|
||||
exit(0);
|
||||
}
|
||||
else if (cupsLastError() > IPP_OK_CONFLICT)
|
||||
{
|
||||
cgiStartHTML(_("Cancel RSS Subscription"));
|
||||
cgiShowIPPError(_("Unable to cancel RSS subscription"));
|
||||
}
|
||||
else
|
||||
{
|
||||
/*
|
||||
* Redirect successful updates back to the admin page...
|
||||
*/
|
||||
|
||||
cgiSetVariable("refresh_page", "5;URL=/admin");
|
||||
cgiStartHTML(_("Cancel RSS Subscription"));
|
||||
cgiCopyTemplateLang("subscription-canceled.tmpl");
|
||||
}
|
||||
|
||||
cgiEndHTML();
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'do_config_server()' - Configure server settings.
|
||||
*/
|
||||
@@ -1881,7 +1574,7 @@ do_config_server(http_t *http) /* I - HTTP connection */
|
||||
if ((end = strstr(start, "\n")) == NULL)
|
||||
end = start + strlen(start);
|
||||
|
||||
cupsFileWrite(temp, start, end - start);
|
||||
cupsFileWrite(temp, start, (size_t)(end - start));
|
||||
cupsFilePutChar(temp, '\n');
|
||||
|
||||
if (*end == '\r')
|
||||
@@ -1917,7 +1610,7 @@ do_config_server(http_t *http) /* I - HTTP connection */
|
||||
}
|
||||
else
|
||||
{
|
||||
cgiSetVariable("refresh_page", "5;URL=/admin/?OP=redirect");
|
||||
cgiSetVariable("refresh_page", "5;URL=/admin/");
|
||||
|
||||
cgiStartHTML(cgiText(_("Edit Configuration File")));
|
||||
cgiCopyTemplateLang("restart.tmpl");
|
||||
@@ -2006,9 +1699,9 @@ do_config_server(http_t *http) /* I - HTTP connection */
|
||||
* Allocate memory and load the file into a string buffer...
|
||||
*/
|
||||
|
||||
if ((buffer = calloc(1, info.st_size + 1)) != NULL)
|
||||
if ((buffer = calloc(1, (size_t)info.st_size + 1)) != NULL)
|
||||
{
|
||||
cupsFileRead(cupsd, buffer, info.st_size);
|
||||
cupsFileRead(cupsd, buffer, (size_t)info.st_size);
|
||||
cgiSetVariable("CUPSDCONF", buffer);
|
||||
free(buffer);
|
||||
}
|
||||
@@ -2025,7 +1718,7 @@ do_config_server(http_t *http) /* I - HTTP connection */
|
||||
if (!stat(filename, &info) && info.st_size < (1024 * 1024) &&
|
||||
(cupsd = cupsFileOpen(filename, "r")) != NULL)
|
||||
{
|
||||
if ((buffer = calloc(1, 2 * info.st_size + 1)) != NULL)
|
||||
if ((buffer = calloc(1, 2 * (size_t)info.st_size + 1)) != NULL)
|
||||
{
|
||||
bufend = buffer + 2 * info.st_size - 1;
|
||||
|
||||
@@ -2035,7 +1728,7 @@ do_config_server(http_t *http) /* I - HTTP connection */
|
||||
if (ch == '\\' || ch == '\"')
|
||||
{
|
||||
*bufptr++ = '\\';
|
||||
*bufptr++ = ch;
|
||||
*bufptr++ = (char)ch;
|
||||
}
|
||||
else if (ch == '\n')
|
||||
{
|
||||
@@ -2048,7 +1741,7 @@ do_config_server(http_t *http) /* I - HTTP connection */
|
||||
*bufptr++ = 't';
|
||||
}
|
||||
else if (ch >= ' ')
|
||||
*bufptr++ = ch;
|
||||
*bufptr++ = (char)ch;
|
||||
}
|
||||
|
||||
*bufptr = '\0';
|
||||
@@ -3882,7 +3575,7 @@ do_set_sharing(http_t *http) /* I - HTTP connection */
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
|
||||
NULL, uri);
|
||||
|
||||
ippAddBoolean(request, IPP_TAG_OPERATION, "printer-is-shared", atoi(shared));
|
||||
ippAddBoolean(request, IPP_TAG_OPERATION, "printer-is-shared", (char)atoi(shared));
|
||||
|
||||
/*
|
||||
* Do the request and get back a response...
|
||||
@@ -4096,7 +3789,7 @@ get_option_value(
|
||||
if ((val = cgiGetVariable(keyword)) == NULL)
|
||||
return (NULL);
|
||||
|
||||
snprintf(bufptr, bufend - bufptr, "%s%s=", prefix, cparam->name);
|
||||
snprintf(bufptr, (size_t)(bufend - bufptr), "%s%s=", prefix, cparam->name);
|
||||
bufptr += strlen(bufptr);
|
||||
prefix = " ";
|
||||
|
||||
@@ -4110,7 +3803,7 @@ get_option_value(
|
||||
number > cparam->maximum.custom_real)
|
||||
return (NULL);
|
||||
|
||||
snprintf(bufptr, bufend - bufptr, "%g", number);
|
||||
snprintf(bufptr, (size_t)(bufend - bufptr), "%g", number);
|
||||
break;
|
||||
|
||||
case PPD_CUSTOM_INT :
|
||||
@@ -4120,7 +3813,7 @@ get_option_value(
|
||||
integer > cparam->maximum.custom_int)
|
||||
return (NULL);
|
||||
|
||||
snprintf(bufptr, bufend - bufptr, "%ld", integer);
|
||||
snprintf(bufptr, (size_t)(bufend - bufptr), "%ld", integer);
|
||||
break;
|
||||
|
||||
case PPD_CUSTOM_POINTS :
|
||||
@@ -4138,7 +3831,7 @@ get_option_value(
|
||||
number_points > cparam->maximum.custom_points)
|
||||
return (NULL);
|
||||
|
||||
snprintf(bufptr, bufend - bufptr, "%g%s", number, uval);
|
||||
snprintf(bufptr, (size_t)(bufend - bufptr), "%g%s", number, uval);
|
||||
break;
|
||||
|
||||
case PPD_CUSTOM_PASSCODE :
|
||||
@@ -4218,5 +3911,73 @@ get_points(double number, /* I - Original number */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
* 'get_printer_ppd()' - Get an IPP Everywhere PPD file for the given URI.
|
||||
*/
|
||||
|
||||
static char * /* O - Filename or NULL */
|
||||
get_printer_ppd(const char *uri, /* I - Printer URI */
|
||||
char *buffer, /* I - Filename buffer */
|
||||
size_t bufsize) /* I - Size of filename buffer */
|
||||
{
|
||||
http_t *http; /* Connection to printer */
|
||||
ipp_t *request, /* Get-Printer-Attributes request */
|
||||
*response; /* Get-Printer-Attributes response */
|
||||
char resolved[1024], /* Resolved URI */
|
||||
scheme[32], /* URI scheme */
|
||||
userpass[256], /* Username:password */
|
||||
host[256], /* Hostname */
|
||||
resource[256]; /* Resource path */
|
||||
int port; /* Port number */
|
||||
|
||||
|
||||
/*
|
||||
* Connect to the printer...
|
||||
*/
|
||||
|
||||
if (strstr(uri, "._tcp"))
|
||||
{
|
||||
/*
|
||||
* Resolve URI...
|
||||
*/
|
||||
|
||||
if (!_httpResolveURI(uri, resolved, sizeof(resolved), _HTTP_RESOLVE_DEFAULT, NULL, NULL))
|
||||
{
|
||||
fprintf(stderr, "ERROR: Unable to resolve \"%s\".\n", uri);
|
||||
return (NULL);
|
||||
}
|
||||
|
||||
uri = resolved;
|
||||
}
|
||||
|
||||
if (httpSeparateURI(HTTP_URI_CODING_ALL, uri, scheme, sizeof(scheme), userpass, sizeof(userpass), host, sizeof(host), &port, resource, sizeof(resource)) < HTTP_URI_STATUS_OK)
|
||||
{
|
||||
fprintf(stderr, "ERROR: Bad printer URI \"%s\".\n", uri);
|
||||
return (NULL);
|
||||
}
|
||||
|
||||
http = httpConnect2(host, port, NULL, AF_UNSPEC, !strcmp(scheme, "ipps") ? HTTP_ENCRYPTION_ALWAYS : HTTP_ENCRYPTION_IF_REQUESTED, 1, 30000, NULL);
|
||||
if (!http)
|
||||
{
|
||||
fprintf(stderr, "ERROR: Unable to connect to \"%s:%d\": %s\n", host, port, cupsLastErrorString());
|
||||
return (NULL);
|
||||
}
|
||||
|
||||
/*
|
||||
* Send a Get-Printer-Attributes request...
|
||||
*/
|
||||
|
||||
request = ippNewRequest(IPP_OP_GET_PRINTER_ATTRIBUTES);
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri", NULL, uri);
|
||||
response = cupsDoRequest(http, request, resource);
|
||||
|
||||
if (!_ppdCreateFromIPP(buffer, bufsize, response))
|
||||
fprintf(stderr, "ERROR: Unable to create PPD file: %s\n", strerror(errno));
|
||||
|
||||
ippDelete(response);
|
||||
httpClose(http);
|
||||
|
||||
if (buffer[0])
|
||||
return (buffer);
|
||||
else
|
||||
return (NULL);
|
||||
}
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
<!--
|
||||
"$Id: api-array.header 8087 2008-10-27 21:37:05Z mike $"
|
||||
|
||||
CGI API header for CUPS.
|
||||
|
||||
Copyright 2009 by Apple Inc.
|
||||
|
||||
These coded instructions, statements, and computer programs are the
|
||||
property of Apple Inc. and are protected by Federal copyright
|
||||
law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
which should have been included with this file. If this file is
|
||||
file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
-->
|
||||
|
||||
<h1 class='title'>CGI API</h1>
|
||||
|
||||
<div class='summary'><table summary='General Information'>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Header</th>
|
||||
<th>cups/cgi.h</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>Library</th>
|
||||
<td>-lcupscgi</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>See Also</th>
|
||||
<td>Programming: <a href='api-overview.html' target='_top'>Introduction to CUPS Programming</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table></div>
|
||||
@@ -1,17 +0,0 @@
|
||||
<!--
|
||||
"$Id: api-array.shtml 7616 2008-05-28 00:34:13Z mike $"
|
||||
|
||||
CGI API introduction for CUPS.
|
||||
|
||||
Copyright 2009 by Apple Inc.
|
||||
|
||||
These coded instructions, statements, and computer programs are the
|
||||
property of Apple Inc. and are protected by Federal copyright
|
||||
law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
which should have been included with this file. If this file is
|
||||
file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
-->
|
||||
|
||||
<h2 class='title'><a name='OVERVIEW'>Overview</a></h2>
|
||||
|
||||
<p>The CGI API provides Common Gateway Interface functions for CUPS.</p>
|
||||
+4
-15
@@ -1,16 +1,10 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* Private CGI definitions for CUPS.
|
||||
*
|
||||
* Private CGI definitions for CUPS.
|
||||
* Copyright 2007-2011 by Apple Inc.
|
||||
* Copyright 1997-2006 by Easy Software Products.
|
||||
*
|
||||
* Copyright 2007-2011 by Apple Inc.
|
||||
* Copyright 1997-2006 by Easy Software Products.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
* property of Apple Inc. and are protected by Federal copyright
|
||||
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
* which should have been included with this file. If this file is
|
||||
* file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
* Licensed under Apache License v2.0. See the file "LICENSE" for more information.
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -29,8 +23,3 @@
|
||||
*/
|
||||
|
||||
#define CUPS_PAGE_MAX 100 /* Maximum items per page */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+4
-14
@@ -1,16 +1,10 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* CGI support library definitions for CUPS.
|
||||
*
|
||||
* CGI support library definitions for CUPS.
|
||||
* Copyright 2007-2010 by Apple Inc.
|
||||
* Copyright 1997-2006 by Easy Software Products.
|
||||
*
|
||||
* Copyright 2007-2010 by Apple Inc.
|
||||
* Copyright 1997-2006 by Easy Software Products.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
* property of Apple Inc. and are protected by Federal copyright
|
||||
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
* which should have been included with this file. If this file is
|
||||
* file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
* Licensed under Apache License v2.0. See the file "LICENSE" for more information.
|
||||
*/
|
||||
|
||||
#ifndef _CUPS_CGI_H_
|
||||
@@ -113,7 +107,3 @@ extern const char *cgiText(const char *message);
|
||||
# endif /* __cplusplus */
|
||||
|
||||
#endif /* !_CUPS_CGI_H_ */
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+20
-49
@@ -1,23 +1,10 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* Class status CGI for CUPS.
|
||||
*
|
||||
* Class status CGI for CUPS.
|
||||
* Copyright 2007-2016 by Apple Inc.
|
||||
* Copyright 1997-2006 by Easy Software Products.
|
||||
*
|
||||
* Copyright 2007-2012 by Apple Inc.
|
||||
* Copyright 1997-2006 by Easy Software Products.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
* property of Apple Inc. and are protected by Federal copyright
|
||||
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
* which should have been included with this file. If this file is
|
||||
* file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
*
|
||||
* Contents:
|
||||
*
|
||||
* main() - Main entry for CGI.
|
||||
* do_class_op() - Do a class operation.
|
||||
* show_all_classes() - Show all classes...
|
||||
* show_class() - Show a single class.
|
||||
* Licensed under Apache License v2.0. See the file "LICENSE" for more information.
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -42,8 +29,7 @@ static void show_class(http_t *http, const char *printer);
|
||||
*/
|
||||
|
||||
int /* O - Exit status */
|
||||
main(int argc, /* I - Number of command-line arguments */
|
||||
char *argv[]) /* I - Command-line arguments */
|
||||
main(void)
|
||||
{
|
||||
const char *pclass; /* Class name */
|
||||
const char *user; /* Username */
|
||||
@@ -169,8 +155,8 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
do_class_op(http, pclass, CUPS_ACCEPT_JOBS, cgiText(_("Accept Jobs")));
|
||||
else if (!strcmp(op, "reject-jobs"))
|
||||
do_class_op(http, pclass, CUPS_REJECT_JOBS, cgiText(_("Reject Jobs")));
|
||||
else if (!strcmp(op, "purge-jobs"))
|
||||
do_class_op(http, pclass, IPP_PURGE_JOBS, cgiText(_("Purge Jobs")));
|
||||
else if (!strcmp(op, "cancel-jobs"))
|
||||
do_class_op(http, pclass, IPP_OP_CANCEL_JOBS, cgiText(_("Cancel Jobs")));
|
||||
else if (!_cups_strcasecmp(op, "print-test-page"))
|
||||
cgiPrintTestPage(http, pclass);
|
||||
else if (!_cups_strcasecmp(op, "move-jobs"))
|
||||
@@ -286,8 +272,8 @@ do_class_op(http_t *http, /* I - HTTP connection */
|
||||
cgiCopyTemplateLang("printer-accept.tmpl");
|
||||
else if (op == CUPS_REJECT_JOBS)
|
||||
cgiCopyTemplateLang("printer-reject.tmpl");
|
||||
else if (op == IPP_PURGE_JOBS)
|
||||
cgiCopyTemplateLang("printer-purge.tmpl");
|
||||
else if (op == IPP_OP_CANCEL_JOBS)
|
||||
cgiCopyTemplateLang("printer-cancel-jobs.tmpl");
|
||||
}
|
||||
|
||||
cgiEndHTML();
|
||||
@@ -307,8 +293,7 @@ show_all_classes(http_t *http, /* I - Connection to server */
|
||||
*response; /* IPP response */
|
||||
cups_array_t *classes; /* Array of class objects */
|
||||
ipp_attribute_t *pclass; /* Class object */
|
||||
int ascending, /* Order of classes (0 = descending) */
|
||||
first, /* First class to show */
|
||||
int first, /* First class to show */
|
||||
count; /* Number of classes */
|
||||
const char *var; /* Form variable */
|
||||
void *search; /* Search data */
|
||||
@@ -380,25 +365,10 @@ show_all_classes(http_t *http, /* I - Connection to server */
|
||||
sprintf(val, "%d", count);
|
||||
cgiSetVariable("TOTAL", val);
|
||||
|
||||
if ((var = cgiGetVariable("ORDER")) != NULL && *var)
|
||||
ascending = !_cups_strcasecmp(var, "asc");
|
||||
else
|
||||
ascending = 1;
|
||||
|
||||
if (ascending)
|
||||
{
|
||||
for (i = 0, pclass = (ipp_attribute_t *)cupsArrayIndex(classes, first);
|
||||
i < CUPS_PAGE_MAX && pclass;
|
||||
i ++, pclass = (ipp_attribute_t *)cupsArrayNext(classes))
|
||||
cgiSetIPPObjectVars(pclass, NULL, i);
|
||||
}
|
||||
else
|
||||
{
|
||||
for (i = 0, pclass = (ipp_attribute_t *)cupsArrayIndex(classes, count - first - 1);
|
||||
i < CUPS_PAGE_MAX && pclass;
|
||||
i ++, pclass = (ipp_attribute_t *)cupsArrayPrev(classes))
|
||||
cgiSetIPPObjectVars(pclass, NULL, i);
|
||||
}
|
||||
for (i = 0, pclass = (ipp_attribute_t *)cupsArrayIndex(classes, first);
|
||||
i < CUPS_PAGE_MAX && pclass;
|
||||
i ++, pclass = (ipp_attribute_t *)cupsArrayNext(classes))
|
||||
cgiSetIPPObjectVars(pclass, NULL, i);
|
||||
|
||||
/*
|
||||
* Save navigation URLs...
|
||||
@@ -418,6 +388,12 @@ show_all_classes(http_t *http, /* I - Connection to server */
|
||||
cgiSetVariable("NEXT", val);
|
||||
}
|
||||
|
||||
if (count > CUPS_PAGE_MAX)
|
||||
{
|
||||
snprintf(val, sizeof(val), "%d", CUPS_PAGE_MAX * (count / CUPS_PAGE_MAX));
|
||||
cgiSetVariable("LAST", val);
|
||||
}
|
||||
|
||||
/*
|
||||
* Then show everything...
|
||||
*/
|
||||
@@ -551,8 +527,3 @@ show_class(http_t *http, /* I - Connection to server */
|
||||
|
||||
cgiEndHTML();
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+28
-50
@@ -1,34 +1,10 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* Online help index routines for CUPS.
|
||||
*
|
||||
* Online help index routines for CUPS.
|
||||
* Copyright 2007-2017 by Apple Inc.
|
||||
* Copyright 1997-2007 by Easy Software Products.
|
||||
*
|
||||
* Copyright 2007-2012 by Apple Inc.
|
||||
* Copyright 1997-2007 by Easy Software Products.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
* property of Apple Inc. and are protected by Federal copyright
|
||||
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
* which should have been included with this file. If this file is
|
||||
* file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
*
|
||||
* Contents:
|
||||
*
|
||||
* helpDeleteIndex() - Delete an index, freeing all memory used.
|
||||
* helpFindNode() - Find a node in an index.
|
||||
* helpLoadIndex() - Load a help index from disk.
|
||||
* helpSaveIndex() - Save a help index to disk.
|
||||
* helpSearchIndex() - Search an index.
|
||||
* help_add_word() - Add a word to a node.
|
||||
* help_compile_search() - Convert a search string into a regular expression.
|
||||
* help_delete_node() - Free all memory used by a node.
|
||||
* help_delete_word() - Free all memory used by a word.
|
||||
* help_load_directory() - Load a directory of files into an index.
|
||||
* help_load_file() - Load a HTML files into an index.
|
||||
* help_new_node() - Create a new node and add it to an index.
|
||||
* help_sort_nodes_by_name() - Sort nodes by section, filename, and anchor.
|
||||
* help_sort_nodes_by_score() - Sort nodes by score and text.
|
||||
* help_sort_words() - Sort words alphabetically.
|
||||
* Licensed under Apache License v2.0. See the file "LICENSE" for more information.
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -346,7 +322,7 @@ helpLoadIndex(const char *hifile, /* I - Index filename */
|
||||
mtime = strtol(ptr, &ptr, 10);
|
||||
|
||||
offset = strtoll(ptr, &ptr, 10);
|
||||
length = strtoll(ptr, &ptr, 10);
|
||||
length = (size_t)strtoll(ptr, &ptr, 10);
|
||||
|
||||
while (isspace(*ptr & 255))
|
||||
ptr ++;
|
||||
@@ -902,7 +878,7 @@ help_load_file(
|
||||
|
||||
|
||||
DEBUG_printf(("2help_load_file(hi=%p, filename=\"%s\", relative=\"%s\", "
|
||||
"mtime=%ld)", hi, filename, relative, mtime));
|
||||
"mtime=%ld)", hi, filename, relative, (long)mtime));
|
||||
|
||||
if ((fp = cupsFileOpen(filename, "r")) == NULL)
|
||||
return (-1);
|
||||
@@ -918,13 +894,13 @@ help_load_file(
|
||||
* Look for "<TITLE>", "<A NAME", or "<!-- SECTION:" prefix...
|
||||
*/
|
||||
|
||||
if (!_cups_strncasecmp(line, "<!-- SECTION:", 13))
|
||||
if ((ptr = strstr(line, "<!-- SECTION:")) != NULL)
|
||||
{
|
||||
/*
|
||||
* Got section line, copy it!
|
||||
*/
|
||||
|
||||
for (ptr = line + 13; isspace(*ptr & 255); ptr ++);
|
||||
for (ptr += 13; isspace(*ptr & 255); ptr ++);
|
||||
|
||||
strlcpy(section, ptr, sizeof(section));
|
||||
if ((ptr = strstr(section, "-->")) != NULL)
|
||||
@@ -954,14 +930,23 @@ help_load_file(
|
||||
anchor = NULL;
|
||||
ptr += 6;
|
||||
}
|
||||
else if (!_cups_strncasecmp(ptr, "A NAME=", 7))
|
||||
else
|
||||
{
|
||||
char *idptr; /* Pointer to ID */
|
||||
|
||||
if (!_cups_strncasecmp(ptr, "A NAME=", 7))
|
||||
ptr += 7;
|
||||
else if ((idptr = strstr(ptr, " ID=")) != NULL)
|
||||
ptr = idptr + 4;
|
||||
else if ((idptr = strstr(ptr, " id=")) != NULL)
|
||||
ptr = idptr + 4;
|
||||
else
|
||||
continue;
|
||||
|
||||
/*
|
||||
* Found an anchor...
|
||||
*/
|
||||
|
||||
ptr += 7;
|
||||
|
||||
if (*ptr == '\"' || *ptr == '\'')
|
||||
{
|
||||
/*
|
||||
@@ -985,7 +970,7 @@ help_load_file(
|
||||
|
||||
for (ptr = anchor; *ptr && *ptr != '>' && !isspace(*ptr & 255); ptr ++);
|
||||
|
||||
if (*ptr)
|
||||
if (*ptr != '>')
|
||||
*ptr++ = '\0';
|
||||
else
|
||||
break;
|
||||
@@ -1001,10 +986,8 @@ help_load_file(
|
||||
if (*ptr != '>')
|
||||
break;
|
||||
|
||||
ptr ++;
|
||||
*ptr++ = '\0';
|
||||
}
|
||||
else
|
||||
continue;
|
||||
|
||||
/*
|
||||
* Now collect text for the link...
|
||||
@@ -1019,14 +1002,14 @@ help_load_file(
|
||||
|
||||
*ptr++ = ' ';
|
||||
|
||||
if (!cupsFileGets(fp, ptr, sizeof(line) - (ptr - line) - 1))
|
||||
if (!cupsFileGets(fp, ptr, sizeof(line) - (size_t)(ptr - line) - 1))
|
||||
break;
|
||||
}
|
||||
|
||||
*ptr = '\0';
|
||||
|
||||
if (node)
|
||||
node->length = offset - node->offset;
|
||||
node->length = (size_t)(offset - node->offset);
|
||||
|
||||
if (!*text)
|
||||
{
|
||||
@@ -1179,9 +1162,9 @@ help_load_file(
|
||||
|
||||
for (text = ptr, ptr ++; *ptr && isalnum(*ptr & 255); ptr ++);
|
||||
|
||||
wordlen = ptr - text;
|
||||
wordlen = (int)(ptr - text);
|
||||
|
||||
memcpy(temp, text, wordlen);
|
||||
memcpy(temp, text, (size_t)wordlen);
|
||||
temp[wordlen] = '\0';
|
||||
|
||||
ptr --;
|
||||
@@ -1206,7 +1189,7 @@ help_load_file(
|
||||
cupsFileClose(fp);
|
||||
|
||||
if (node)
|
||||
node->length = offset - node->offset;
|
||||
node->length = (size_t)(offset - node->offset);
|
||||
|
||||
return (0);
|
||||
}
|
||||
@@ -1238,7 +1221,7 @@ help_new_node(const char *filename, /* I - Filename */
|
||||
|
||||
n->filename = strdup(filename);
|
||||
n->anchor = anchor ? strdup(anchor) : NULL;
|
||||
n->section = (section && *section) ? strdup(section) : NULL;
|
||||
n->section = *section ? strdup(section) : NULL;
|
||||
n->text = strdup(text);
|
||||
n->mtime = mtime;
|
||||
n->offset = offset;
|
||||
@@ -1321,8 +1304,3 @@ help_sort_words(help_word_t *w1, /* I - Second word */
|
||||
|
||||
return (_cups_strcasecmp(w1->text, w2->text));
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+4
-14
@@ -1,16 +1,10 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* Online help index definitions for CUPS.
|
||||
*
|
||||
* Online help index definitions for CUPS.
|
||||
* Copyright 2007-2011 by Apple Inc.
|
||||
* Copyright 1997-2007 by Easy Software Products.
|
||||
*
|
||||
* Copyright 2007-2011 by Apple Inc.
|
||||
* Copyright 1997-2007 by Easy Software Products.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
* property of Apple Inc. and are protected by Federal copyright
|
||||
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
* which should have been included with this file. If this file is
|
||||
* file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
* Licensed under Apache License v2.0. See the file "LICENSE" for more information.
|
||||
*/
|
||||
|
||||
#ifndef _CUPS_HELP_INDEX_H_
|
||||
@@ -81,7 +75,3 @@ extern help_index_t *helpSearchIndex(help_index_t *hi, const char *query,
|
||||
# endif /* __cplusplus */
|
||||
|
||||
#endif /* !_CUPS_HELP_INDEX_H_ */
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+10
-23
@@ -1,20 +1,10 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* Online help CGI for CUPS.
|
||||
*
|
||||
* Online help CGI for CUPS.
|
||||
* Copyright 2007-2011 by Apple Inc.
|
||||
* Copyright 1997-2006 by Easy Software Products.
|
||||
*
|
||||
* Copyright 2007-2011 by Apple Inc.
|
||||
* Copyright 1997-2006 by Easy Software Products.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
* property of Apple Inc. and are protected by Federal copyright
|
||||
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
* which should have been included with this file. If this file is
|
||||
* file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
*
|
||||
* Contents:
|
||||
*
|
||||
* main() - Main entry for CGI.
|
||||
* Licensed under Apache License v2.0. See the file "LICENSE" for more information.
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -277,7 +267,7 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
section = n->section;
|
||||
}
|
||||
|
||||
if (!topic || strcmp(n->section, topic))
|
||||
if (!topic || !n->section || strcmp(n->section, topic))
|
||||
continue;
|
||||
|
||||
/*
|
||||
@@ -339,20 +329,22 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
if ((fp = cupsFileOpen(filename, "r")) != NULL)
|
||||
{
|
||||
int inbody; /* Are we inside the body? */
|
||||
|
||||
char *lineptr; /* Pointer into line */
|
||||
|
||||
inbody = 0;
|
||||
|
||||
while (cupsFileGets(fp, line, sizeof(line)))
|
||||
{
|
||||
for (lineptr = line; *lineptr && isspace(*lineptr & 255); lineptr ++);
|
||||
|
||||
if (inbody)
|
||||
{
|
||||
if (!_cups_strncasecmp(line, "</BODY>", 7))
|
||||
if (!_cups_strncasecmp(lineptr, "</BODY>", 7))
|
||||
break;
|
||||
|
||||
printf("%s\n", line);
|
||||
}
|
||||
else if (!_cups_strncasecmp(line, "<BODY", 5))
|
||||
else if (!_cups_strncasecmp(lineptr, "<BODY", 5))
|
||||
inbody = 1;
|
||||
}
|
||||
|
||||
@@ -390,8 +382,3 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
|
||||
return (0);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+5
-26
@@ -1,26 +1,10 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* HTML support functions for CUPS.
|
||||
*
|
||||
* HTML support functions for CUPS.
|
||||
* Copyright 2007-2011 by Apple Inc.
|
||||
* Copyright 1997-2006 by Easy Software Products.
|
||||
*
|
||||
* Copyright 2007-2011 by Apple Inc.
|
||||
* Copyright 1997-2006 by Easy Software Products.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
* property of Apple Inc. and are protected by Federal copyright
|
||||
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
* which should have been included with this file. If this file is
|
||||
* file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
*
|
||||
* Contents:
|
||||
*
|
||||
* cgiEndHTML() - End a HTML page.
|
||||
* cgiEndMultipart() - End the delivery of a multipart web page.
|
||||
* cgiFormEncode() - Encode a string as a form variable.
|
||||
* cgiStartHTML() - Start a HTML page.
|
||||
* cgiStartMultipart() - Start a multipart delivery of a web page.
|
||||
* cgiSupportsMultipart() - Does the browser support multi-part documents?
|
||||
* cgi_null_passwd() - Return a NULL password for authentication.
|
||||
* Licensed under Apache License v2.0. See the file "LICENSE" for more information.
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -103,7 +87,7 @@ cgiFormEncode(char *dst, /* I - Destination string */
|
||||
for (dstptr = dst; *src && dstptr < dstend;)
|
||||
{
|
||||
switch (*src)
|
||||
{
|
||||
{
|
||||
case ' ' :
|
||||
/*
|
||||
* Encode spaces with a "+"...
|
||||
@@ -232,8 +216,3 @@ cgi_null_passwd(const char *prompt) /* I - Prompt string (unused) */
|
||||
|
||||
return (NULL);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+48
-113
@@ -1,31 +1,10 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* CGI <-> IPP variable routines for CUPS.
|
||||
*
|
||||
* CGI <-> IPP variable routines for CUPS.
|
||||
* Copyright 2007-2016 by Apple Inc.
|
||||
* Copyright 1997-2007 by Easy Software Products.
|
||||
*
|
||||
* Copyright 2007-2012 by Apple Inc.
|
||||
* Copyright 1997-2007 by Easy Software Products.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
* property of Apple Inc. and are protected by Federal copyright
|
||||
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
* which should have been included with this file. If this file is
|
||||
* file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
*
|
||||
* Contents:
|
||||
*
|
||||
* cgiGetAttributes() - Get the list of attributes that are needed by the
|
||||
* template file.
|
||||
* cgiGetIPPObjects() - Get the objects in an IPP response.
|
||||
* cgiMoveJobs() - Move one or more jobs.
|
||||
* cgiPrintCommand() - Print a CUPS command job.
|
||||
* cgiPrintTestPage() - Print a test page.
|
||||
* cgiRewriteURL() - Rewrite a printer URI into a web browser URL...
|
||||
* cgiSetIPPObjectVars() - Set CGI variables from an IPP object.
|
||||
* cgiSetIPPVars() - Set CGI variables from an IPP response.
|
||||
* cgiShowIPPError() - Show the last IPP error message.
|
||||
* cgiShowJobs() - Show print jobs.
|
||||
* cgiText() - Return localized text.
|
||||
* Licensed under Apache License v2.0. See the file "LICENSE" for more information.
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -65,7 +44,7 @@ cgiGetAttributes(ipp_t *request, /* I - IPP request */
|
||||
{
|
||||
for (i = 0; lang[i] && i < 15; i ++)
|
||||
if (isalnum(lang[i] & 255))
|
||||
locale[i] = tolower(lang[i]);
|
||||
locale[i] = (char)tolower(lang[i]);
|
||||
else
|
||||
locale[i] = '_';
|
||||
|
||||
@@ -107,7 +86,7 @@ cgiGetAttributes(ipp_t *request, /* I - IPP request */
|
||||
while ((ch = getc(in)) != EOF)
|
||||
if (ch == '\\')
|
||||
getc(in);
|
||||
else if (ch == '{' && num_attrs < (sizeof(attrs) / sizeof(attrs[0])))
|
||||
else if (ch == '{' && num_attrs < (int)(sizeof(attrs) / sizeof(attrs[0])))
|
||||
{
|
||||
/*
|
||||
* Grab the name...
|
||||
@@ -123,7 +102,7 @@ cgiGetAttributes(ipp_t *request, /* I - IPP request */
|
||||
if (ch == '_')
|
||||
*nameptr++ = '-';
|
||||
else
|
||||
*nameptr++ = ch;
|
||||
*nameptr++ = (char)ch;
|
||||
}
|
||||
|
||||
*nameptr = '\0';
|
||||
@@ -237,6 +216,9 @@ cgiGetIPPObjects(ipp_t *response, /* I - IPP response */
|
||||
break;
|
||||
|
||||
case IPP_TAG_INTEGER :
|
||||
if (!strncmp(ippGetName(attr), "time-at-", 8))
|
||||
break; /* Ignore time-at-xxx */
|
||||
|
||||
for (i = 0; !add && i < attr->num_values; i ++)
|
||||
{
|
||||
char buf[255]; /* Number buffer */
|
||||
@@ -917,7 +899,7 @@ cgiRewriteURL(const char *uri, /* I - Current URI */
|
||||
* Make URI relative to the current server...
|
||||
*/
|
||||
|
||||
strlcpy(url, resource, urlsize);
|
||||
strlcpy(url, resource, (size_t)urlsize);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -926,17 +908,13 @@ cgiRewriteURL(const char *uri, /* I - Current URI */
|
||||
*/
|
||||
|
||||
if (userpass[0])
|
||||
snprintf(url, urlsize, "%s://%s@%s:%d%s",
|
||||
ishttps ? "https" : "http",
|
||||
userpass, hostname, port, resource);
|
||||
snprintf(url, (size_t)urlsize, "%s://%s@%s:%d%s", ishttps ? "https" : "http", userpass, hostname, port, resource);
|
||||
else
|
||||
snprintf(url, urlsize, "%s://%s:%d%s",
|
||||
ishttps ? "https" : "http",
|
||||
hostname, port, resource);
|
||||
snprintf(url, (size_t)urlsize, "%s://%s:%d%s", ishttps ? "https" : "http", hostname, port, resource);
|
||||
}
|
||||
}
|
||||
else
|
||||
strlcpy(url, uri, urlsize);
|
||||
strlcpy(url, uri, (size_t)urlsize);
|
||||
|
||||
return (url);
|
||||
}
|
||||
@@ -958,7 +936,6 @@ cgiSetIPPObjectVars(
|
||||
*nameptr, /* Pointer into name */
|
||||
value[16384], /* Value(s) */
|
||||
*valptr; /* Pointer into value */
|
||||
struct tm *date; /* Date information */
|
||||
|
||||
|
||||
fprintf(stderr, "DEBUG2: cgiSetIPPObjectVars(obj=%p, prefix=\"%s\", "
|
||||
@@ -1039,7 +1016,7 @@ cgiSetIPPObjectVars(
|
||||
*valptr++ = ' ';
|
||||
}
|
||||
|
||||
remaining = sizeof(value) - (valptr - value);
|
||||
remaining = sizeof(value) - (size_t)(valptr - value);
|
||||
|
||||
if (!strcmp(attr->values[i].string.text, "printer-stopped"))
|
||||
strlcpy(valptr, _("Printer Paused"), remaining);
|
||||
@@ -1177,7 +1154,7 @@ cgiSetIPPObjectVars(
|
||||
for (i = 0; i < attr->num_values; i ++)
|
||||
{
|
||||
if (i)
|
||||
strlcat(valptr, ", ", sizeof(value) - (valptr - value));
|
||||
strlcat(valptr, ", ", sizeof(value) - (size_t)(valptr - value));
|
||||
|
||||
valptr += strlen(valptr);
|
||||
|
||||
@@ -1186,36 +1163,28 @@ cgiSetIPPObjectVars(
|
||||
case IPP_TAG_INTEGER :
|
||||
case IPP_TAG_ENUM :
|
||||
if (strncmp(name, "time_at_", 8) == 0)
|
||||
{
|
||||
time_t t; /* Temporary time value */
|
||||
|
||||
t = (time_t)attr->values[i].integer;
|
||||
date = localtime(&t);
|
||||
|
||||
strftime(valptr, sizeof(value) - (valptr - value), "%c", date);
|
||||
}
|
||||
_cupsStrDate(valptr, sizeof(value) - (size_t)(valptr - value), (time_t)ippGetInteger(attr, i));
|
||||
else
|
||||
snprintf(valptr, sizeof(value) - (valptr - value),
|
||||
"%d", attr->values[i].integer);
|
||||
snprintf(valptr, sizeof(value) - (size_t)(valptr - value), "%d", ippGetInteger(attr, i));
|
||||
break;
|
||||
|
||||
case IPP_TAG_BOOLEAN :
|
||||
snprintf(valptr, sizeof(value) - (valptr - value),
|
||||
snprintf(valptr, sizeof(value) - (size_t)(valptr - value),
|
||||
"%d", attr->values[i].boolean);
|
||||
break;
|
||||
|
||||
case IPP_TAG_NOVALUE :
|
||||
strlcat(valptr, "novalue", sizeof(value) - (valptr - value));
|
||||
strlcat(valptr, "novalue", sizeof(value) - (size_t)(valptr - value));
|
||||
break;
|
||||
|
||||
case IPP_TAG_RANGE :
|
||||
snprintf(valptr, sizeof(value) - (valptr - value),
|
||||
snprintf(valptr, sizeof(value) - (size_t)(valptr - value),
|
||||
"%d-%d", attr->values[i].range.lower,
|
||||
attr->values[i].range.upper);
|
||||
break;
|
||||
|
||||
case IPP_TAG_RESOLUTION :
|
||||
snprintf(valptr, sizeof(value) - (valptr - value),
|
||||
snprintf(valptr, sizeof(value) - (size_t)(valptr - value),
|
||||
"%dx%d%s", attr->values[i].resolution.xres,
|
||||
attr->values[i].resolution.yres,
|
||||
attr->values[i].resolution.units == IPP_RES_PER_INCH ?
|
||||
@@ -1230,21 +1199,7 @@ cgiSetIPPObjectVars(
|
||||
* Rewrite URIs...
|
||||
*/
|
||||
|
||||
if (!strcmp(name, "member_uris"))
|
||||
{
|
||||
char url[1024]; /* URL for class member... */
|
||||
|
||||
|
||||
cgiRewriteURL(attr->values[i].string.text, url,
|
||||
sizeof(url), NULL);
|
||||
|
||||
snprintf(valptr, sizeof(value) - (valptr - value),
|
||||
"<A HREF=\"%s\">%s</A>", url,
|
||||
strrchr(attr->values[i].string.text, '/') + 1);
|
||||
}
|
||||
else
|
||||
cgiRewriteURL(attr->values[i].string.text, valptr,
|
||||
sizeof(value) - (valptr - value), NULL);
|
||||
cgiRewriteURL(attr->values[i].string.text, valptr, (int)(sizeof(value) - (size_t)(valptr - value)), NULL);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -1256,7 +1211,7 @@ cgiSetIPPObjectVars(
|
||||
case IPP_TAG_LANGUAGE :
|
||||
case IPP_TAG_MIMETYPE :
|
||||
strlcat(valptr, attr->values[i].string.text,
|
||||
sizeof(value) - (valptr - value));
|
||||
sizeof(value) - (size_t)(valptr - value));
|
||||
break;
|
||||
|
||||
case IPP_TAG_BEGIN_COLLECTION :
|
||||
@@ -1364,7 +1319,7 @@ cgiSetIPPVars(ipp_t *response, /* I - Response data to be copied... */
|
||||
attr = cgiSetIPPObjectVars(attr, prefix, element);
|
||||
}
|
||||
|
||||
fprintf(stderr, "DEBUG2: Returing %d from cgiSetIPPVars()...\n", element);
|
||||
fprintf(stderr, "DEBUG2: Returning %d from cgiSetIPPVars()...\n", element);
|
||||
|
||||
return (element);
|
||||
}
|
||||
@@ -1399,8 +1354,7 @@ cgiShowJobs(http_t *http, /* I - Connection to server */
|
||||
*response; /* IPP response */
|
||||
cups_array_t *jobs; /* Array of job objects */
|
||||
ipp_attribute_t *job; /* Job object */
|
||||
int ascending, /* Order of jobs (0 = descending) */
|
||||
first, /* First job to show */
|
||||
int first, /* First job to show */
|
||||
count; /* Number of jobs */
|
||||
const char *var, /* Form variable */
|
||||
*query, /* Query string */
|
||||
@@ -1436,6 +1390,17 @@ cgiShowJobs(http_t *http, /* I - Connection to server */
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD, "which-jobs",
|
||||
NULL, which_jobs);
|
||||
|
||||
if ((var = cgiGetVariable("FIRST")) != NULL)
|
||||
{
|
||||
if ((first = atoi(var)) < 0)
|
||||
first = 0;
|
||||
}
|
||||
else
|
||||
first = 0;
|
||||
|
||||
if (first > 0)
|
||||
ippAddInteger(request, IPP_TAG_OPERATION, IPP_TAG_INTEGER, "first-index", first + 1);
|
||||
|
||||
cgiGetAttributes(request, "jobs.tmpl");
|
||||
|
||||
/*
|
||||
@@ -1458,7 +1423,7 @@ cgiShowJobs(http_t *http, /* I - Connection to server */
|
||||
}
|
||||
|
||||
jobs = cgiGetIPPObjects(response, search);
|
||||
count = cupsArrayCount(jobs);
|
||||
count = cupsArrayCount(jobs) + first;
|
||||
|
||||
if (search)
|
||||
cgiFreeSearch(search);
|
||||
@@ -1467,25 +1432,6 @@ cgiShowJobs(http_t *http, /* I - Connection to server */
|
||||
* Figure out which jobs to display...
|
||||
*/
|
||||
|
||||
if ((var = cgiGetVariable("FIRST")) != NULL)
|
||||
first = atoi(var);
|
||||
else
|
||||
first = 0;
|
||||
|
||||
if (first >= count)
|
||||
first = count - CUPS_PAGE_MAX;
|
||||
|
||||
first = (first / CUPS_PAGE_MAX) * CUPS_PAGE_MAX;
|
||||
|
||||
if (first < 0)
|
||||
first = 0;
|
||||
|
||||
if ((var = cgiGetVariable("ORDER")) != NULL && *var)
|
||||
ascending = !_cups_strcasecmp(var, "asc");
|
||||
else
|
||||
ascending = !which_jobs || !*which_jobs ||
|
||||
!_cups_strcasecmp(which_jobs, "not-completed");
|
||||
|
||||
section = cgiGetVariable("SECTION");
|
||||
|
||||
cgiClearVariables();
|
||||
@@ -1493,8 +1439,6 @@ cgiShowJobs(http_t *http, /* I - Connection to server */
|
||||
if (query)
|
||||
cgiSetVariable("QUERY", query);
|
||||
|
||||
cgiSetVariable("ORDER", ascending ? "asc" : "dec");
|
||||
|
||||
cgiSetVariable("SECTION", section);
|
||||
|
||||
sprintf(val, "%d", count);
|
||||
@@ -1503,20 +1447,10 @@ cgiShowJobs(http_t *http, /* I - Connection to server */
|
||||
if (which_jobs)
|
||||
cgiSetVariable("WHICH_JOBS", which_jobs);
|
||||
|
||||
if (ascending)
|
||||
{
|
||||
for (i = 0, job = (ipp_attribute_t *)cupsArrayIndex(jobs, first);
|
||||
i < CUPS_PAGE_MAX && job;
|
||||
i ++, job = (ipp_attribute_t *)cupsArrayNext(jobs))
|
||||
cgiSetIPPObjectVars(job, NULL, i);
|
||||
}
|
||||
else
|
||||
{
|
||||
for (i = 0, job = (ipp_attribute_t *)cupsArrayIndex(jobs, count - first - 1);
|
||||
i < CUPS_PAGE_MAX && job;
|
||||
i ++, job = (ipp_attribute_t *)cupsArrayPrev(jobs))
|
||||
cgiSetIPPObjectVars(job, NULL, i);
|
||||
}
|
||||
for (i = 0, job = (ipp_attribute_t *)cupsArrayFirst(jobs);
|
||||
i < CUPS_PAGE_MAX && job;
|
||||
i ++, job = (ipp_attribute_t *)cupsArrayNext(jobs))
|
||||
cgiSetIPPObjectVars(job, NULL, i);
|
||||
|
||||
/*
|
||||
* Save navigation URLs...
|
||||
@@ -1545,6 +1479,12 @@ cgiShowJobs(http_t *http, /* I - Connection to server */
|
||||
cgiSetVariable("NEXT", val);
|
||||
}
|
||||
|
||||
if (count > CUPS_PAGE_MAX)
|
||||
{
|
||||
snprintf(val, sizeof(val), "%d", CUPS_PAGE_MAX * (count / CUPS_PAGE_MAX));
|
||||
cgiSetVariable("LAST", val);
|
||||
}
|
||||
|
||||
/*
|
||||
* Then show everything...
|
||||
*/
|
||||
@@ -1586,8 +1526,3 @@ cgiText(const char *message) /* I - Message */
|
||||
|
||||
return (_cupsLangString(language, message));
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+5
-22
@@ -1,21 +1,10 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* Job status CGI for CUPS.
|
||||
*
|
||||
* Job status CGI for CUPS.
|
||||
* Copyright 2007-2014 by Apple Inc.
|
||||
* Copyright 1997-2006 by Easy Software Products.
|
||||
*
|
||||
* Copyright 2007-2012 by Apple Inc.
|
||||
* Copyright 1997-2006 by Easy Software Products.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
* property of Apple Inc. and are protected by Federal copyright
|
||||
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
* which should have been included with this file. If this file is
|
||||
* file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
*
|
||||
* Contents:
|
||||
*
|
||||
* main() - Main entry for CGI.
|
||||
* do_job_op() - Do a job operation.
|
||||
* Licensed under Apache License v2.0. See the file "LICENSE" for more information.
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -37,8 +26,7 @@ static void do_job_op(http_t *http, int job_id, ipp_op_t op);
|
||||
*/
|
||||
|
||||
int /* O - Exit status */
|
||||
main(int argc, /* I - Number of command-line arguments */
|
||||
char *argv[]) /* I - Command-line arguments */
|
||||
main(void)
|
||||
{
|
||||
http_t *http; /* Connection to the server */
|
||||
const char *op; /* Operation name */
|
||||
@@ -207,8 +195,3 @@ do_job_op(http_t *http, /* I - HTTP connection */
|
||||
|
||||
cgiEndHTML();
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+4
-25
@@ -1,30 +1,14 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* Xcode documentation set generator.
|
||||
*
|
||||
* Xcode documentation set generator.
|
||||
* Copyright 2007-2012 by Apple Inc.
|
||||
* Copyright 1997-2007 by Easy Software Products.
|
||||
*
|
||||
* Copyright 2007-2012 by Apple Inc.
|
||||
* Copyright 1997-2007 by Easy Software Products.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
* property of Apple Inc. and are protected by Federal copyright
|
||||
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
* which should have been included with this file. If this file is
|
||||
* file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
* Licensed under Apache License v2.0. See the file "LICENSE" for more information.
|
||||
*
|
||||
* Usage:
|
||||
*
|
||||
* makedocset directory *.tokens
|
||||
*
|
||||
* Contents:
|
||||
*
|
||||
* main() - Test the help index code.
|
||||
* compare_html() - Compare the titles of two HTML files.
|
||||
* compare_sections() - Compare the names of two help sections.
|
||||
* compare_sections_files() - Compare the number of files and section names.
|
||||
* write_index() - Write an index file for the CUPS help.
|
||||
* write_info() - Write the Info.plist file.
|
||||
* write_nodes() - Write the Nodes.xml file.
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -479,8 +463,3 @@ write_nodes(const char *path, /* I - File to write */
|
||||
|
||||
cupsFileClose(fp);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+20
-49
@@ -1,23 +1,10 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* Printer status CGI for CUPS.
|
||||
*
|
||||
* Printer status CGI for CUPS.
|
||||
* Copyright 2007-2016 by Apple Inc.
|
||||
* Copyright 1997-2006 by Easy Software Products.
|
||||
*
|
||||
* Copyright 2007-2012 by Apple Inc.
|
||||
* Copyright 1997-2006 by Easy Software Products.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
* property of Apple Inc. and are protected by Federal copyright
|
||||
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
* which should have been included with this file. If this file is
|
||||
* file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
*
|
||||
* Contents:
|
||||
*
|
||||
* main() - Main entry for CGI.
|
||||
* do_printer_op() - Do a printer operation.
|
||||
* show_all_printers() - Show all printers...
|
||||
* show_printer() - Show a single printer.
|
||||
* Licensed under Apache License v2.0. See the file "LICENSE" for more information.
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -43,8 +30,7 @@ static void show_printer(http_t *http, const char *printer);
|
||||
*/
|
||||
|
||||
int /* O - Exit status */
|
||||
main(int argc, /* I - Number of command-line arguments */
|
||||
char *argv[]) /* I - Command-line arguments */
|
||||
main(void)
|
||||
{
|
||||
const char *printer; /* Printer name */
|
||||
const char *user; /* Username */
|
||||
@@ -172,8 +158,8 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
do_printer_op(http, printer, CUPS_ACCEPT_JOBS, cgiText(_("Accept Jobs")));
|
||||
else if (!strcmp(op, "reject-jobs"))
|
||||
do_printer_op(http, printer, CUPS_REJECT_JOBS, cgiText(_("Reject Jobs")));
|
||||
else if (!strcmp(op, "purge-jobs"))
|
||||
do_printer_op(http, printer, IPP_PURGE_JOBS, cgiText(_("Purge Jobs")));
|
||||
else if (!strcmp(op, "cancel-jobs"))
|
||||
do_printer_op(http, printer, IPP_OP_CANCEL_JOBS, cgiText(_("Cancel Jobs")));
|
||||
else if (!_cups_strcasecmp(op, "print-self-test-page"))
|
||||
cgiPrintCommand(http, printer, "PrintSelfTestPage",
|
||||
cgiText(_("Print Self-Test Page")));
|
||||
@@ -293,8 +279,8 @@ do_printer_op(http_t *http, /* I - HTTP connection */
|
||||
cgiCopyTemplateLang("printer-accept.tmpl");
|
||||
else if (op == CUPS_REJECT_JOBS)
|
||||
cgiCopyTemplateLang("printer-reject.tmpl");
|
||||
else if (op == IPP_PURGE_JOBS)
|
||||
cgiCopyTemplateLang("printer-purge.tmpl");
|
||||
else if (op == IPP_OP_CANCEL_JOBS)
|
||||
cgiCopyTemplateLang("printer-cancel-jobs.tmpl");
|
||||
}
|
||||
|
||||
cgiEndHTML();
|
||||
@@ -314,8 +300,7 @@ show_all_printers(http_t *http, /* I - Connection to server */
|
||||
*response; /* IPP response */
|
||||
cups_array_t *printers; /* Array of printer objects */
|
||||
ipp_attribute_t *printer; /* Printer object */
|
||||
int ascending, /* Order of printers (0 = descending) */
|
||||
first, /* First printer to show */
|
||||
int first, /* First printer to show */
|
||||
count; /* Number of printers */
|
||||
const char *var; /* Form variable */
|
||||
void *search; /* Search data */
|
||||
@@ -397,25 +382,10 @@ show_all_printers(http_t *http, /* I - Connection to server */
|
||||
sprintf(val, "%d", count);
|
||||
cgiSetVariable("TOTAL", val);
|
||||
|
||||
if ((var = cgiGetVariable("ORDER")) != NULL && *var)
|
||||
ascending = !_cups_strcasecmp(var, "asc");
|
||||
else
|
||||
ascending = 1;
|
||||
|
||||
if (ascending)
|
||||
{
|
||||
for (i = 0, printer = (ipp_attribute_t *)cupsArrayIndex(printers, first);
|
||||
i < CUPS_PAGE_MAX && printer;
|
||||
i ++, printer = (ipp_attribute_t *)cupsArrayNext(printers))
|
||||
cgiSetIPPObjectVars(printer, NULL, i);
|
||||
}
|
||||
else
|
||||
{
|
||||
for (i = 0, printer = (ipp_attribute_t *)cupsArrayIndex(printers, count - first - 1);
|
||||
i < CUPS_PAGE_MAX && printer;
|
||||
i ++, printer = (ipp_attribute_t *)cupsArrayPrev(printers))
|
||||
cgiSetIPPObjectVars(printer, NULL, i);
|
||||
}
|
||||
for (i = 0, printer = (ipp_attribute_t *)cupsArrayIndex(printers, first);
|
||||
i < CUPS_PAGE_MAX && printer;
|
||||
i ++, printer = (ipp_attribute_t *)cupsArrayNext(printers))
|
||||
cgiSetIPPObjectVars(printer, NULL, i);
|
||||
|
||||
/*
|
||||
* Save navigation URLs...
|
||||
@@ -435,6 +405,12 @@ show_all_printers(http_t *http, /* I - Connection to server */
|
||||
cgiSetVariable("NEXT", val);
|
||||
}
|
||||
|
||||
if (count > CUPS_PAGE_MAX)
|
||||
{
|
||||
snprintf(val, sizeof(val), "%d", CUPS_PAGE_MAX * (count / CUPS_PAGE_MAX));
|
||||
cgiSetVariable("LAST", val);
|
||||
}
|
||||
|
||||
/*
|
||||
* Then show everything...
|
||||
*/
|
||||
@@ -571,8 +547,3 @@ show_printer(http_t *http, /* I - Connection to server */
|
||||
|
||||
cgiEndHTML();
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+8
-25
@@ -1,22 +1,10 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* Search routines for CUPS.
|
||||
*
|
||||
* Search routines for CUPS.
|
||||
* Copyright 2007-2014 by Apple Inc.
|
||||
* Copyright 1997-2006 by Easy Software Products.
|
||||
*
|
||||
* Copyright 2007-2012 by Apple Inc.
|
||||
* Copyright 1997-2006 by Easy Software Products.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
* property of Apple Inc. and are protected by Federal copyright
|
||||
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
* which should have been included with this file. If this file is
|
||||
* file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
*
|
||||
* Contents:
|
||||
*
|
||||
* cgiCompileSearch() - Compile a search string.
|
||||
* cgiDoSearch() - Do a search of some text.
|
||||
* cgiFreeSearch() - Free a compiled search context.
|
||||
* Licensed under Apache License v2.0. See the file "LICENSE" for more information.
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -38,12 +26,12 @@ cgiCompileSearch(const char *query) /* I - Query string */
|
||||
char *s, /* Regular expression string */
|
||||
*sptr, /* Pointer into RE string */
|
||||
*sword; /* Pointer to start of word */
|
||||
int slen; /* Allocated size of RE string */
|
||||
size_t slen; /* Allocated size of RE string */
|
||||
const char *qptr, /* Pointer into query string */
|
||||
*qend; /* End of current word */
|
||||
const char *prefix; /* Prefix to add to next word */
|
||||
int quoted; /* Word is quoted */
|
||||
int wlen; /* Word length */
|
||||
size_t wlen; /* Word length */
|
||||
char *lword; /* Last word in query */
|
||||
|
||||
|
||||
@@ -139,7 +127,7 @@ cgiCompileSearch(const char *query) /* I - Query string */
|
||||
for (qend = qptr + 1; *qend && !isspace(*qend); qend ++);
|
||||
}
|
||||
|
||||
wlen = qend - qptr;
|
||||
wlen = (size_t)(qend - qptr);
|
||||
|
||||
/*
|
||||
* Look for logic words: AND, OR
|
||||
@@ -174,7 +162,7 @@ cgiCompileSearch(const char *query) /* I - Query string */
|
||||
* string + RE overhead...
|
||||
*/
|
||||
|
||||
wlen = (sptr - s) + 2 * 4 * wlen + 2 * strlen(prefix) + 11;
|
||||
wlen = (size_t)(sptr - s) + 2 * 4 * wlen + 2 * strlen(prefix) + 11;
|
||||
if (lword)
|
||||
wlen += strlen(lword);
|
||||
|
||||
@@ -374,8 +362,3 @@ cgiFreeSearch(void *search) /* I - Search context */
|
||||
{
|
||||
regfree((regex_t *)search);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+15
-69
@@ -1,27 +1,10 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* CGI template function.
|
||||
*
|
||||
* CGI template function.
|
||||
* Copyright 2007-2015 by Apple Inc.
|
||||
* Copyright 1997-2006 by Easy Software Products.
|
||||
*
|
||||
* Copyright 2007-2011 by Apple Inc.
|
||||
* Copyright 1997-2006 by Easy Software Products.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
* property of Apple Inc. and are protected by Federal copyright
|
||||
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
* which should have been included with this file. If this file is
|
||||
* file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
*
|
||||
* Contents:
|
||||
*
|
||||
* cgiCopyTemplateFile() - Copy a template file and replace all the
|
||||
* '{variable}' strings with the variable value.
|
||||
* cgiCopyTemplateLang() - Copy a template file using a language...
|
||||
* cgiGetTemplateDir() - Get the templates directory...
|
||||
* cgiSetServerVersion() - Set the server name and CUPS version...
|
||||
* cgi_copy() - Copy the template file, substituting as needed...
|
||||
* cgi_puts() - Put a string to the output file, quoting as
|
||||
* needed...
|
||||
* Licensed under Apache License v2.0. See the file "LICENSE" for more information.
|
||||
*/
|
||||
|
||||
#include "cgi-private.h"
|
||||
@@ -266,7 +249,7 @@ cgi_copy(FILE *out, /* I - Output file */
|
||||
else if (s > name && ch == '?')
|
||||
break;
|
||||
else if (s < (name + sizeof(name) - 1))
|
||||
*s++ = ch;
|
||||
*s++ = (char)ch;
|
||||
|
||||
*s = '\0';
|
||||
|
||||
@@ -443,7 +426,7 @@ cgi_copy(FILE *out, /* I - Output file */
|
||||
* {name~refex?true:false} Regex match
|
||||
*/
|
||||
|
||||
op = ch;
|
||||
op = (char)ch;
|
||||
|
||||
if (ch == '?')
|
||||
{
|
||||
@@ -486,7 +469,7 @@ cgi_copy(FILE *out, /* I - Output file */
|
||||
innerptr = innername;
|
||||
while ((ch = getc(in)) != EOF && ch != '}')
|
||||
if (innerptr < (innername + sizeof(innername) - 1))
|
||||
*innerptr++ = ch;
|
||||
*innerptr++ = (char)ch;
|
||||
*innerptr = '\0';
|
||||
|
||||
if (innername[0] == '#')
|
||||
@@ -498,26 +481,26 @@ cgi_copy(FILE *out, /* I - Output file */
|
||||
if ((innerval = cgiGetArray(innername, atoi(innerptr) - 1)) == NULL)
|
||||
*s = '\0';
|
||||
else
|
||||
strlcpy(s, innerval, sizeof(compare) - (s - compare));
|
||||
strlcpy(s, innerval, sizeof(compare) - (size_t)(s - compare));
|
||||
}
|
||||
else if (innername[0] == '?')
|
||||
{
|
||||
if ((innerval = cgiGetArray(innername + 1, element)) == NULL)
|
||||
*s = '\0';
|
||||
else
|
||||
strlcpy(s, innerval, sizeof(compare) - (s - compare));
|
||||
strlcpy(s, innerval, sizeof(compare) - (size_t)(s - compare));
|
||||
}
|
||||
else if ((innerval = cgiGetArray(innername, element)) == NULL)
|
||||
snprintf(s, sizeof(compare) - (s - compare), "{%s}", innername);
|
||||
snprintf(s, sizeof(compare) - (size_t)(s - compare), "{%s}", innername);
|
||||
else
|
||||
strlcpy(s, innerval, sizeof(compare) - (s - compare));
|
||||
strlcpy(s, innerval, sizeof(compare) - (size_t)(s - compare));
|
||||
|
||||
s += strlen(s);
|
||||
}
|
||||
else if (ch == '\\')
|
||||
*s++ = getc(in);
|
||||
*s++ = (char)getc(in);
|
||||
else
|
||||
*s++ = ch;
|
||||
*s++ = (char)ch;
|
||||
|
||||
*s = '\0';
|
||||
|
||||
@@ -553,7 +536,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;
|
||||
}
|
||||
@@ -659,39 +642,7 @@ cgi_puts(const char *s, /* I - String to output */
|
||||
while (*s)
|
||||
{
|
||||
if (*s == '<')
|
||||
{
|
||||
/*
|
||||
* Pass <A HREF="url"> and </A>, otherwise quote it...
|
||||
*/
|
||||
|
||||
if (!_cups_strncasecmp(s, "<A HREF=\"", 9))
|
||||
{
|
||||
fputs("<A HREF=\"", out);
|
||||
s += 9;
|
||||
|
||||
while (*s && *s != '\"')
|
||||
{
|
||||
if (*s == '&')
|
||||
fputs("&", out);
|
||||
else
|
||||
putc(*s, out);
|
||||
|
||||
s ++;
|
||||
}
|
||||
|
||||
if (*s)
|
||||
s ++;
|
||||
|
||||
fputs("\">", out);
|
||||
}
|
||||
else if (!_cups_strncasecmp(s, "</A>", 4))
|
||||
{
|
||||
fputs("</A>", out);
|
||||
s += 3;
|
||||
}
|
||||
else
|
||||
fputs("<", out);
|
||||
}
|
||||
fputs("<", out);
|
||||
else if (*s == '>')
|
||||
fputs(">", out);
|
||||
else if (*s == '\"')
|
||||
@@ -726,8 +677,3 @@ cgi_puturi(const char *s, /* I - String to output */
|
||||
s ++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+5
-22
@@ -1,21 +1,10 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* CGI test program for CUPS.
|
||||
*
|
||||
* CGI test program for CUPS.
|
||||
* Copyright 2007-2014 by Apple Inc.
|
||||
* Copyright 1997-2005 by Easy Software Products.
|
||||
*
|
||||
* Copyright 2007-2011 by Apple Inc.
|
||||
* Copyright 1997-2005 by Easy Software Products.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
* property of Apple Inc. and are protected by Federal copyright
|
||||
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
* which should have been included with this file. If this file is
|
||||
* file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
*
|
||||
* Contents:
|
||||
*
|
||||
* main() - Test the help index code.
|
||||
* list_nodes() - List nodes in an array...
|
||||
* Licensed under Apache License v2.0. See the file "LICENSE" for more information.
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -30,8 +19,7 @@
|
||||
*/
|
||||
|
||||
int /* O - Exit status */
|
||||
main(int argc, /* I - Number of command-line arguments */
|
||||
char *argv[]) /* I - Command-line arguments */
|
||||
main(void)
|
||||
{
|
||||
/*
|
||||
* Test file upload/multi-part submissions...
|
||||
@@ -68,8 +56,3 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
|
||||
return (0);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+88
-20
@@ -1,21 +1,10 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* Help index test program for CUPS.
|
||||
*
|
||||
* Help index test program for CUPS.
|
||||
* Copyright 2007-2017 by Apple Inc.
|
||||
* Copyright 1997-2007 by Easy Software Products.
|
||||
*
|
||||
* Copyright 2007-2011 by Apple Inc.
|
||||
* Copyright 1997-2007 by Easy Software Products.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
* property of Apple Inc. and are protected by Federal copyright
|
||||
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
* which should have been included with this file. If this file is
|
||||
* file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
*
|
||||
* Contents:
|
||||
*
|
||||
* main() - Test the help index code.
|
||||
* list_nodes() - List nodes in an array...
|
||||
* Licensed under Apache License v2.0. See the file "LICENSE" for more information.
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -30,6 +19,7 @@
|
||||
*/
|
||||
|
||||
static void list_nodes(const char *title, cups_array_t *nodes);
|
||||
static int usage(void);
|
||||
|
||||
|
||||
/*
|
||||
@@ -40,15 +30,82 @@ int /* O - Exit status */
|
||||
main(int argc, /* I - Number of command-line arguments */
|
||||
char *argv[]) /* I - Command-line arguments */
|
||||
{
|
||||
int i; /* Looping var */
|
||||
help_index_t *hi, /* Help index */
|
||||
*search; /* Search index */
|
||||
const char *opt, /* Current option character */
|
||||
*dir = ".", /* Directory to index */
|
||||
*q = NULL, /* Query string */
|
||||
*section = NULL, /* Section string */
|
||||
*filename = NULL; /* Filename string */
|
||||
|
||||
|
||||
/*
|
||||
* Parse the command-line...
|
||||
*/
|
||||
|
||||
for (i = 1; i < argc; i ++)
|
||||
{
|
||||
if (argv[i][0] == '-')
|
||||
{
|
||||
if (!strcmp(argv[i], "--help"))
|
||||
{
|
||||
usage();
|
||||
return (0);
|
||||
}
|
||||
|
||||
for (opt = argv[i] + 1; *opt; opt ++)
|
||||
{
|
||||
switch (*opt)
|
||||
{
|
||||
case 'd' : /* -d directory */
|
||||
i ++;
|
||||
if (i < argc)
|
||||
{
|
||||
dir = argv[i];
|
||||
}
|
||||
else
|
||||
{
|
||||
fputs("testhi: Missing directory for \"-d\" option.\n", stderr);
|
||||
return (usage());
|
||||
}
|
||||
break;
|
||||
|
||||
case 's' : /* -s section */
|
||||
i ++;
|
||||
if (i < argc)
|
||||
{
|
||||
section = argv[i];
|
||||
}
|
||||
else
|
||||
{
|
||||
fputs("testhi: Missing section name for \"-s\" option.\n", stderr);
|
||||
return (usage());
|
||||
}
|
||||
break;
|
||||
|
||||
default :
|
||||
fprintf(stderr, "testhi: Unknown option \"-%c\".\n", *opt);
|
||||
return (usage());
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (!q)
|
||||
q = argv[i];
|
||||
else if (!filename)
|
||||
filename = argv[i];
|
||||
else
|
||||
{
|
||||
fprintf(stderr, "testhi: Unknown argument \"%s\".\n", argv[i]);
|
||||
return (usage());
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Load the help index...
|
||||
*/
|
||||
|
||||
hi = helpLoadIndex("testhi.index", ".");
|
||||
hi = helpLoadIndex("testhi.index", dir);
|
||||
|
||||
list_nodes("nodes", hi->nodes);
|
||||
list_nodes("sorted", hi->sorted);
|
||||
@@ -57,9 +114,9 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
* Do any searches...
|
||||
*/
|
||||
|
||||
if (argc > 1)
|
||||
if (q)
|
||||
{
|
||||
search = helpSearchIndex(hi, argv[1], NULL, argv[2]);
|
||||
search = helpSearchIndex(hi, q, section, filename);
|
||||
|
||||
if (search)
|
||||
{
|
||||
@@ -67,7 +124,7 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
helpDeleteIndex(search);
|
||||
}
|
||||
else
|
||||
printf("%s (0 nodes)\n", argv[1]);
|
||||
printf("%s (0 nodes)\n", q);
|
||||
}
|
||||
|
||||
helpDeleteIndex(hi);
|
||||
@@ -109,5 +166,16 @@ list_nodes(const char *title, /* I - Title string */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
* 'usage()' - Show program usage.
|
||||
*/
|
||||
|
||||
static int /* O - Exit status */
|
||||
usage(void)
|
||||
{
|
||||
puts("Usage: ./testhi [options] [\"query\"] [filename]");
|
||||
puts("Options:");
|
||||
puts("-d directory Specify index directory.");
|
||||
puts("-s section Specify search section.");
|
||||
|
||||
return (1);
|
||||
}
|
||||
|
||||
@@ -1,20 +1,10 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* CGI template test program for CUPS.
|
||||
*
|
||||
* CGI template test program for CUPS.
|
||||
* Copyright 2007-2011 by Apple Inc.
|
||||
* Copyright 2006 by Easy Software Products.
|
||||
*
|
||||
* Copyright 2007-2011 by Apple Inc.
|
||||
* Copyright 2006 by Easy Software Products.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
* property of Apple Inc. and are protected by Federal copyright
|
||||
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
* which should have been included with this file. If this file is
|
||||
* file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
*
|
||||
* Contents:
|
||||
*
|
||||
* main() - Test the template code.
|
||||
* Licensed under Apache License v2.0. See the file "LICENSE" for more information.
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -96,8 +86,3 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
|
||||
return (0);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+61
-86
@@ -1,55 +1,19 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
* CGI form variable and array functions for CUPS.
|
||||
*
|
||||
* CGI form variable and array functions for CUPS.
|
||||
* Copyright 2007-2015 by Apple Inc.
|
||||
* Copyright 1997-2005 by Easy Software Products.
|
||||
*
|
||||
* Copyright 2007-2011 by Apple Inc.
|
||||
* Copyright 1997-2005 by Easy Software Products.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
* property of Apple Inc. and are protected by Federal copyright
|
||||
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
* which should have been included with this file. If this file is
|
||||
* file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
*
|
||||
* Contents:
|
||||
*
|
||||
* cgiCheckVariables() - Check for the presence of "required"
|
||||
* variables.
|
||||
* cgiClearVariables() - Clear all form variables.
|
||||
* cgiGetArray() - Get an element from a form array.
|
||||
* cgiGetCookie() - Get a cookie value.
|
||||
* cgiGetFile() - Get the file (if any) that was submitted in
|
||||
* the form.
|
||||
* cgiGetSize() - Get the size of a form array value.
|
||||
* cgiGetVariable() - Get a CGI variable from the database.
|
||||
* cgiInitialize() - Initialize the CGI variable "database".
|
||||
* cgiIsPOST() - Determine whether this page was POSTed.
|
||||
* cgiSetArray() - Set array element N to the specified string.
|
||||
* cgiSetCookie() - Set a cookie value.
|
||||
* cgiSetSize() - Set the array size.
|
||||
* cgiSetVariable() - Set a CGI variable in the database.
|
||||
* cgi_add_variable() - Add a form variable.
|
||||
* cgi_compare_variables() - Compare two variables.
|
||||
* cgi_find_variable() - Find a variable.
|
||||
* cgi_initialize_cookies() - Initialize cookies.
|
||||
* cgi_initialize_get() - Initialize form variables using the GET
|
||||
* method.
|
||||
* cgi_initialize_multipart() - Initialize variables and file using the POST
|
||||
* method.
|
||||
* cgi_initialize_post() - Initialize variables using the POST method.
|
||||
* cgi_initialize_string() - Initialize form variables from a string.
|
||||
* cgi_passwd() - Catch authentication requests and notify the
|
||||
* server.
|
||||
* cgi_set_sid() - Set the CUPS session ID.
|
||||
* cgi_sort_variables() - Sort all form variables for faster lookup.
|
||||
* cgi_unlink_file() - Remove the uploaded form.
|
||||
* Licensed under Apache License v2.0. See the file "LICENSE" for more information.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include necessary headers...
|
||||
*/
|
||||
|
||||
/*#define DEBUG*/
|
||||
#include "cgi-private.h"
|
||||
#include <cups/http.h>
|
||||
#include <cups/md5-private.h>
|
||||
|
||||
|
||||
/*
|
||||
@@ -417,7 +381,7 @@ cgiSetArray(const char *name, /* I - Name of variable */
|
||||
const char **temp; /* Temporary pointer */
|
||||
|
||||
temp = (const char **)realloc((void *)(var->values),
|
||||
sizeof(char *) * (element + 16));
|
||||
sizeof(char *) * (size_t)(element + 16));
|
||||
if (!temp)
|
||||
return;
|
||||
|
||||
@@ -466,9 +430,9 @@ cgiSetCookie(const char *name, /* I - Name */
|
||||
printf(" expires=%s;", httpGetDateString2(expires, date, sizeof(date)));
|
||||
}
|
||||
if (secure)
|
||||
puts(" secure;");
|
||||
puts(" httponly; secure;");
|
||||
else
|
||||
putchar('\n');
|
||||
puts(" httponly;");
|
||||
}
|
||||
|
||||
|
||||
@@ -495,7 +459,7 @@ cgiSetSize(const char *name, /* I - Name of variable */
|
||||
const char **temp; /* Temporary pointer */
|
||||
|
||||
temp = (const char **)realloc((void *)(var->values),
|
||||
sizeof(char *) * (size + 16));
|
||||
sizeof(char *) * (size_t)(size + 16));
|
||||
if (!temp)
|
||||
return;
|
||||
|
||||
@@ -581,7 +545,7 @@ cgi_add_variable(const char *name, /* I - Variable name */
|
||||
if (form_alloc == 0)
|
||||
temp_vars = malloc(sizeof(_cgi_var_t) * 16);
|
||||
else
|
||||
temp_vars = realloc(form_vars, (form_alloc + 16) * sizeof(_cgi_var_t));
|
||||
temp_vars = realloc(form_vars, (size_t)(form_alloc + 16) * sizeof(_cgi_var_t));
|
||||
|
||||
if (!temp_vars)
|
||||
return;
|
||||
@@ -592,7 +556,7 @@ cgi_add_variable(const char *name, /* I - Variable name */
|
||||
|
||||
var = form_vars + form_count;
|
||||
|
||||
if ((var->values = calloc(element + 1, sizeof(char *))) == NULL)
|
||||
if ((var->values = calloc((size_t)element + 1, sizeof(char *))) == NULL)
|
||||
return;
|
||||
|
||||
var->name = _cupsStrAlloc(name);
|
||||
@@ -632,7 +596,7 @@ cgi_find_variable(const char *name) /* I - Name of variable */
|
||||
|
||||
key.name = name;
|
||||
|
||||
return ((_cgi_var_t *)bsearch(&key, form_vars, form_count, sizeof(_cgi_var_t),
|
||||
return ((_cgi_var_t *)bsearch(&key, form_vars, (size_t)form_count, sizeof(_cgi_var_t),
|
||||
(int (*)(const void *, const void *))cgi_compare_variables));
|
||||
}
|
||||
|
||||
@@ -655,6 +619,8 @@ cgi_initialize_cookies(void)
|
||||
|
||||
while (*cookie)
|
||||
{
|
||||
int skip = 0; /* Skip this cookie? */
|
||||
|
||||
/*
|
||||
* Skip leading whitespace...
|
||||
*/
|
||||
@@ -670,9 +636,14 @@ cgi_initialize_cookies(void)
|
||||
|
||||
for (ptr = name; *cookie && *cookie != '=';)
|
||||
if (ptr < (name + sizeof(name) - 1))
|
||||
{
|
||||
*ptr++ = *cookie++;
|
||||
}
|
||||
else
|
||||
break;
|
||||
{
|
||||
skip = 1;
|
||||
cookie ++;
|
||||
}
|
||||
|
||||
if (*cookie != '=')
|
||||
break;
|
||||
@@ -688,26 +659,38 @@ cgi_initialize_cookies(void)
|
||||
{
|
||||
for (cookie ++, ptr = value; *cookie && *cookie != '\"';)
|
||||
if (ptr < (value + sizeof(value) - 1))
|
||||
{
|
||||
*ptr++ = *cookie++;
|
||||
}
|
||||
else
|
||||
break;
|
||||
{
|
||||
skip = 1;
|
||||
cookie ++;
|
||||
}
|
||||
|
||||
if (*cookie == '\"')
|
||||
cookie ++;
|
||||
else
|
||||
skip = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
for (ptr = value; *cookie && *cookie != ';';)
|
||||
if (ptr < (value + sizeof(value) - 1))
|
||||
{
|
||||
*ptr++ = *cookie++;
|
||||
}
|
||||
else
|
||||
break;
|
||||
{
|
||||
skip = 1;
|
||||
cookie ++;
|
||||
}
|
||||
}
|
||||
|
||||
if (*cookie == ';')
|
||||
cookie ++;
|
||||
else if (*cookie)
|
||||
break;
|
||||
skip = 1;
|
||||
|
||||
*ptr = '\0';
|
||||
|
||||
@@ -716,7 +699,7 @@ cgi_initialize_cookies(void)
|
||||
* "$"...
|
||||
*/
|
||||
|
||||
if (name[0] != '$')
|
||||
if (name[0] != '$' && !skip)
|
||||
num_cookies = cupsAddOption(name, value, num_cookies, &cookies);
|
||||
}
|
||||
}
|
||||
@@ -769,8 +752,8 @@ cgi_initialize_multipart(
|
||||
*ptr, /* Pointer into name/filename */
|
||||
*end; /* End of buffer */
|
||||
int ch, /* Character from file */
|
||||
fd, /* Temporary file descriptor */
|
||||
blen; /* Length of boundary string */
|
||||
fd; /* Temporary file descriptor */
|
||||
size_t blen; /* Length of boundary string */
|
||||
|
||||
|
||||
DEBUG_printf(("cgi_initialize_multipart(boundary=\"%s\")\n", boundary));
|
||||
@@ -835,22 +818,22 @@ cgi_initialize_multipart(
|
||||
|
||||
while ((ch = getchar()) != EOF)
|
||||
{
|
||||
*ptr++ = ch;
|
||||
*ptr++ = (char)ch;
|
||||
|
||||
if ((ptr - line) >= blen && !memcmp(ptr - blen, bstring, blen))
|
||||
if ((size_t)(ptr - line) >= blen && !memcmp(ptr - blen, bstring, blen))
|
||||
{
|
||||
ptr -= blen;
|
||||
break;
|
||||
}
|
||||
|
||||
if ((ptr - line - blen) >= 8192)
|
||||
if ((ptr - line - (int)blen) >= 8192)
|
||||
{
|
||||
/*
|
||||
* Write out the first 8k of the buffer...
|
||||
*/
|
||||
|
||||
write(fd, line, 8192);
|
||||
memmove(line, line + 8192, ptr - line - 8192);
|
||||
memmove(line, line + 8192, (size_t)(ptr - line - 8192));
|
||||
ptr -= 8192;
|
||||
}
|
||||
}
|
||||
@@ -860,7 +843,7 @@ cgi_initialize_multipart(
|
||||
*/
|
||||
|
||||
if (ptr > line)
|
||||
write(fd, line, ptr - line);
|
||||
write(fd, line, (size_t)(ptr - line));
|
||||
|
||||
close(fd);
|
||||
}
|
||||
@@ -877,9 +860,9 @@ cgi_initialize_multipart(
|
||||
while ((ch = getchar()) != EOF)
|
||||
{
|
||||
if (ptr < end)
|
||||
*ptr++ = ch;
|
||||
*ptr++ = (char)ch;
|
||||
|
||||
if ((ptr - line) >= blen && !memcmp(ptr - blen, bstring, blen))
|
||||
if ((size_t)(ptr - line) >= blen && !memcmp(ptr - blen, bstring, blen))
|
||||
{
|
||||
ptr -= blen;
|
||||
break;
|
||||
@@ -979,12 +962,12 @@ cgi_initialize_multipart(
|
||||
static int /* O - 1 if form data was read */
|
||||
cgi_initialize_post(void)
|
||||
{
|
||||
char *content_length, /* Length of input data (string) */
|
||||
*data; /* Pointer to form data string */
|
||||
int length, /* Length of input data */
|
||||
nbytes, /* Number of bytes read this read() */
|
||||
tbytes, /* Total number of bytes read */
|
||||
status; /* Return status */
|
||||
char *content_length, /* Length of input data (string) */
|
||||
*data; /* Pointer to form data string */
|
||||
size_t length, /* Length of input data */
|
||||
tbytes; /* Total number of bytes read */
|
||||
ssize_t nbytes; /* Number of bytes read this read() */
|
||||
int status; /* Return status */
|
||||
|
||||
|
||||
DEBUG_puts("cgi_initialize_post: Initializing variables using POST method...");
|
||||
@@ -1001,7 +984,7 @@ cgi_initialize_post(void)
|
||||
* Get the length of the input stream and allocate a buffer for it...
|
||||
*/
|
||||
|
||||
length = atoi(content_length);
|
||||
length = (size_t)strtol(content_length, NULL, 10);
|
||||
data = malloc(length + 1);
|
||||
|
||||
if (data == NULL)
|
||||
@@ -1011,8 +994,8 @@ cgi_initialize_post(void)
|
||||
* Read the data into the buffer...
|
||||
*/
|
||||
|
||||
for (tbytes = 0; tbytes < length; tbytes += nbytes)
|
||||
if ((nbytes = read(0, data + tbytes, length - tbytes)) < 0)
|
||||
for (tbytes = 0; tbytes < length; tbytes += (size_t)nbytes)
|
||||
if ((nbytes = read(0, data + tbytes, (size_t)(length - tbytes))) < 0)
|
||||
{
|
||||
if (errno != EAGAIN)
|
||||
{
|
||||
@@ -1126,7 +1109,7 @@ cgi_initialize_string(const char *data) /* I - Form data string */
|
||||
ch = *data - '0';
|
||||
if (ch > 9)
|
||||
ch -= 7;
|
||||
*s = ch << 4;
|
||||
*s = (char)(ch << 4);
|
||||
|
||||
data ++;
|
||||
ch = *data - '0';
|
||||
@@ -1216,7 +1199,6 @@ cgi_set_sid(void)
|
||||
{
|
||||
char buffer[512], /* SID data */
|
||||
sid[33]; /* SID string */
|
||||
_cups_md5_state_t md5; /* MD5 state */
|
||||
unsigned char sum[16]; /* MD5 sum */
|
||||
const char *remote_addr, /* REMOTE_ADDR */
|
||||
*server_name, /* SERVER_NAME */
|
||||
@@ -1237,11 +1219,9 @@ cgi_set_sid(void)
|
||||
(unsigned)CUPS_RAND() & 255, (unsigned)CUPS_RAND() & 255,
|
||||
(unsigned)CUPS_RAND() & 255, (unsigned)CUPS_RAND() & 255,
|
||||
(unsigned)CUPS_RAND() & 255, (unsigned)CUPS_RAND() & 255);
|
||||
_cupsMD5Init(&md5);
|
||||
_cupsMD5Append(&md5, (unsigned char *)buffer, (int)strlen(buffer));
|
||||
_cupsMD5Finish(&md5, sum);
|
||||
cupsHashData("md5", (unsigned char *)buffer, strlen(buffer), sum, sizeof(sum));
|
||||
|
||||
cgiSetCookie(CUPS_SID, httpMD5String(sum, sid), "/", NULL, 0, 0);
|
||||
cgiSetCookie(CUPS_SID, cupsHashString(sum, sizeof(sum), sid, sizeof(sid)), "/", NULL, 0, 0);
|
||||
|
||||
return (cupsGetOption(CUPS_SID, num_cookies, cookies));
|
||||
}
|
||||
@@ -1264,7 +1244,7 @@ cgi_sort_variables(void)
|
||||
if (form_count < 2)
|
||||
return;
|
||||
|
||||
qsort(form_vars, form_count, sizeof(_cgi_var_t),
|
||||
qsort(form_vars, (size_t)form_count, sizeof(_cgi_var_t),
|
||||
(int (*)(const void *, const void *))cgi_compare_variables);
|
||||
|
||||
#ifdef DEBUG
|
||||
@@ -1304,8 +1284,3 @@ cgi_unlink_file(void)
|
||||
form_file = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
@@ -1,116 +0,0 @@
|
||||
/*
|
||||
* "$Id$"
|
||||
*
|
||||
* Web search program for www.cups.org.
|
||||
*
|
||||
* Copyright 2007-2009 by Apple Inc.
|
||||
* Copyright 1997-2007 by Easy Software Products.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
* property of Apple Inc. and are protected by Federal copyright
|
||||
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
* which should have been included with this file. If this file is
|
||||
* file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
*
|
||||
* Usage:
|
||||
*
|
||||
* websearch directory "search string"
|
||||
*
|
||||
* Contents:
|
||||
*
|
||||
* main() - Search a directory of help files.
|
||||
* list_nodes() - List matching nodes.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include necessary headers...
|
||||
*/
|
||||
|
||||
#include "cgi.h"
|
||||
|
||||
|
||||
/*
|
||||
* Local functions...
|
||||
*/
|
||||
|
||||
static void list_nodes(help_index_t *hi, const char *title,
|
||||
cups_array_t *nodes);
|
||||
|
||||
|
||||
/*
|
||||
* 'main()' - Test the help index code.
|
||||
*/
|
||||
|
||||
int /* O - Exit status */
|
||||
main(int argc, /* I - Number of command-line args */
|
||||
char *argv[]) /* I - Command-line arguments */
|
||||
{
|
||||
help_index_t *hi, /* Help index */
|
||||
*search; /* Search index */
|
||||
char indexname[1024]; /* Name of index file */
|
||||
|
||||
|
||||
if (argc != 3)
|
||||
{
|
||||
puts("Usage: websearch directory \"search terms\"");
|
||||
return (1);
|
||||
}
|
||||
|
||||
/*
|
||||
* Load the help index...
|
||||
*/
|
||||
|
||||
snprintf(indexname, sizeof(indexname), "%s/.index", argv[1]);
|
||||
hi = helpLoadIndex(indexname, argv[1]);
|
||||
|
||||
/*
|
||||
* Do any searches...
|
||||
*/
|
||||
|
||||
search = helpSearchIndex(hi, argv[2], NULL, NULL);
|
||||
|
||||
if (search)
|
||||
list_nodes(hi, argv[1], search->sorted);
|
||||
|
||||
/*
|
||||
* Return with no errors...
|
||||
*/
|
||||
|
||||
return (0);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'list_nodes()' - List nodes in an array...
|
||||
*/
|
||||
|
||||
static void
|
||||
list_nodes(help_index_t *hi, /* I - Help index */
|
||||
const char *title, /* I - Title string */
|
||||
cups_array_t *nodes) /* I - Nodes */
|
||||
{
|
||||
help_node_t *node, /* Current node */
|
||||
*file; /* File node */
|
||||
|
||||
|
||||
printf("%d\n", cupsArrayCount(nodes));
|
||||
for (node = (help_node_t *)cupsArrayFirst(nodes);
|
||||
node;
|
||||
node = (help_node_t *)cupsArrayNext(nodes))
|
||||
{
|
||||
if (node->anchor)
|
||||
{
|
||||
file = helpFindNode(hi, node->filename, NULL);
|
||||
printf("%d|%s#%s|%s|%s\n", node->score, node->filename, node->anchor,
|
||||
node->text, file ? file->text : node->filename);
|
||||
}
|
||||
else
|
||||
printf("%d|%s|%s|%s\n", node->score, node->filename, node->text,
|
||||
node->text);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
*/
|
||||
+5
-16
@@ -1,16 +1,10 @@
|
||||
#
|
||||
# "$Id$"
|
||||
# Configuration file makefile for CUPS.
|
||||
#
|
||||
# Configuration file makefile for CUPS.
|
||||
# Copyright 2007-2015 by Apple Inc.
|
||||
# Copyright 1993-2006 by Easy Software Products.
|
||||
#
|
||||
# Copyright 2007-2012 by Apple Inc.
|
||||
# Copyright 1993-2006 by Easy Software Products.
|
||||
#
|
||||
# These coded instructions, statements, and computer programs are the
|
||||
# property of Apple Inc. and are protected by Federal copyright
|
||||
# law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
# which should have been included with this file. If this file is
|
||||
# file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
# Licensed under Apache License v2.0. See the file "LICENSE" for more information.
|
||||
#
|
||||
|
||||
include ../Makedefs
|
||||
@@ -76,8 +70,8 @@ install-data:
|
||||
else \
|
||||
$(INSTALL_CONFIG) -g $(CUPS_GROUP) $$file $(SERVERROOT) ; \
|
||||
fi ; \
|
||||
$(INSTALL_CONFIG) -g $(CUPS_GROUP) $$file $(SERVERROOT)/$$file.default; \
|
||||
done
|
||||
$(INSTALL_CONFIG) -g $(CUPS_GROUP) cupsd.conf $(SERVERROOT)/cupsd.conf.default
|
||||
$(INSTALL_DIR) -m 755 $(DATADIR)/mime
|
||||
for file in $(REPLACE); do \
|
||||
if test -r $(DATADIR)/mime/$$file ; then \
|
||||
@@ -136,8 +130,3 @@ uninstall:
|
||||
$(RM) $(BUILDROOT)$(PAMDIR)/cups; \
|
||||
$(RMDIR) $(BUILDROOT)$(PAMDIR); \
|
||||
fi
|
||||
|
||||
|
||||
#
|
||||
# End of "$Id$".
|
||||
#
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
#
|
||||
# "$Id$"
|
||||
#
|
||||
# Sample file/directory/user/group configuration file for the CUPS scheduler.
|
||||
# File/directory/user/group configuration file for the CUPS scheduler.
|
||||
# See "man cups-files.conf" for a complete description of this file.
|
||||
#
|
||||
|
||||
@@ -17,6 +15,7 @@
|
||||
#Group @CUPS_GROUP@
|
||||
|
||||
# Administrator user group, used to match @SYSTEM in cupsd.conf policy rules...
|
||||
# This cannot contain the Group value for security reasons...
|
||||
SystemGroup @CUPS_SYSTEM_GROUPS@
|
||||
@CUPS_SYSTEM_AUTHKEY@
|
||||
|
||||
@@ -76,11 +75,8 @@ PageLog @CUPS_LOGDIR@/page_log
|
||||
# Location of helper programs...
|
||||
#ServerBin @CUPS_SERVERBIN@
|
||||
|
||||
# SSL/TLS certificate for the scheduler...
|
||||
#ServerCertificate @CUPS_SERVERCERT@
|
||||
|
||||
# SSL/TLS private key for the scheduler...
|
||||
#ServerKey @CUPS_SERVERKEY@
|
||||
# SSL/TLS keychain for the scheduler...
|
||||
#ServerKeychain @CUPS_SERVERKEYCHAIN@
|
||||
|
||||
# Location of other configuration files...
|
||||
#ServerRoot @CUPS_SERVERROOT@
|
||||
@@ -95,7 +91,3 @@ PageLog @CUPS_LOGDIR@/page_log
|
||||
# scheduler startup and cannot be one of the standard (public) temporary
|
||||
# directory locations for security reasons...
|
||||
#TempDir @CUPS_REQUESTS@/tmp
|
||||
|
||||
#
|
||||
# End of "$Id$".
|
||||
#
|
||||
|
||||
+54
-6
@@ -1,13 +1,12 @@
|
||||
#
|
||||
# "$Id$"
|
||||
#
|
||||
# Sample configuration file for the CUPS scheduler. See "man cupsd.conf" for a
|
||||
# Configuration file for the CUPS scheduler. See "man cupsd.conf" for a
|
||||
# complete description of this file.
|
||||
#
|
||||
|
||||
# Log general information in error_log - change "@CUPS_LOG_LEVEL@" to "debug"
|
||||
# for troubleshooting...
|
||||
LogLevel @CUPS_LOG_LEVEL@
|
||||
@CUPS_PAGE_LOG_FORMAT@
|
||||
|
||||
# Only listen for connections from the local machine.
|
||||
Listen localhost:@DEFAULT_IPP_PORT@
|
||||
@@ -40,6 +39,13 @@ WebInterface @CUPS_WEBIF@
|
||||
Order allow,deny
|
||||
</Location>
|
||||
|
||||
# Restrict access to log files...
|
||||
<Location /admin/log>
|
||||
AuthType Default
|
||||
Require user @SYSTEM
|
||||
Order allow,deny
|
||||
</Location>
|
||||
|
||||
# Set the default printer/job policies...
|
||||
<Policy default>
|
||||
# Job/subscription privacy...
|
||||
@@ -129,6 +135,48 @@ WebInterface @CUPS_WEBIF@
|
||||
</Limit>
|
||||
</Policy>
|
||||
|
||||
#
|
||||
# End of "$Id$".
|
||||
#
|
||||
# Set the kerberized printer/job policies...
|
||||
<Policy kerberos>
|
||||
# Job/subscription privacy...
|
||||
JobPrivateAccess default
|
||||
JobPrivateValues default
|
||||
SubscriptionPrivateAccess default
|
||||
SubscriptionPrivateValues default
|
||||
|
||||
# Job-related operations must be done by the owner or an administrator...
|
||||
<Limit Create-Job Print-Job Print-URI Validate-Job>
|
||||
AuthType Negotiate
|
||||
Order deny,allow
|
||||
</Limit>
|
||||
|
||||
<Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription Get-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job Cancel-My-Jobs Close-Job CUPS-Move-Job CUPS-Get-Document>
|
||||
AuthType Negotiate
|
||||
Require user @OWNER @SYSTEM
|
||||
Order deny,allow
|
||||
</Limit>
|
||||
|
||||
# All administration operations require an administrator to authenticate...
|
||||
<Limit CUPS-Add-Modify-Printer CUPS-Delete-Printer CUPS-Add-Modify-Class CUPS-Delete-Class CUPS-Set-Default>
|
||||
AuthType Default
|
||||
Require user @SYSTEM
|
||||
Order deny,allow
|
||||
</Limit>
|
||||
|
||||
# All printer operations require a printer operator to authenticate...
|
||||
<Limit Pause-Printer Resume-Printer Enable-Printer Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer Promote-Job Schedule-Job-After Cancel-Jobs CUPS-Accept-Jobs CUPS-Reject-Jobs>
|
||||
AuthType Default
|
||||
Require user @CUPS_DEFAULT_PRINTOPERATOR_AUTH@
|
||||
Order deny,allow
|
||||
</Limit>
|
||||
|
||||
# Only the owner or an administrator can cancel or authenticate a job...
|
||||
<Limit Cancel-Job CUPS-Authenticate-Job>
|
||||
AuthType Negotiate
|
||||
Require user @OWNER @CUPS_DEFAULT_PRINTOPERATOR_AUTH@
|
||||
Order deny,allow
|
||||
</Limit>
|
||||
|
||||
<Limit All>
|
||||
Order deny,allow
|
||||
</Limit>
|
||||
</Policy>
|
||||
|
||||
+9
-17
@@ -1,20 +1,15 @@
|
||||
#
|
||||
# "$Id$"
|
||||
# DO NOT EDIT THIS FILE, AS IT IS OVERWRITTEN WHEN YOU INSTALL NEW
|
||||
# VERSIONS OF CUPS. Instead, create a "local.convs" file that
|
||||
# reflects your local configuration changes.
|
||||
#
|
||||
# DO NOT EDIT THIS FILE, AS IT IS OVERWRITTEN WHEN YOU INSTALL NEW
|
||||
# VERSIONS OF CUPS. Instead, create a "local.convs" file that
|
||||
# reflects your local configuration changes.
|
||||
# Base MIME conversions file for CUPS.
|
||||
#
|
||||
# Base MIME conversions file for CUPS.
|
||||
# Copyright © 2007-2016 by Apple Inc.
|
||||
# Copyright © 1997-2007 by Easy Software Products.
|
||||
#
|
||||
# Copyright 2007-2011 by Apple Inc.
|
||||
# Copyright 1997-2007 by Easy Software Products.
|
||||
#
|
||||
# These coded instructions, statements, and computer programs are the
|
||||
# property of Apple Inc. and are protected by Federal copyright
|
||||
# law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
# which should have been included with this file. If this file is
|
||||
# file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
# Licensed under Apache License v2.0. See the file "LICENSE" for more
|
||||
# information.
|
||||
#
|
||||
|
||||
########################################################################
|
||||
@@ -47,6 +42,7 @@ application/postscript application/vnd.cups-postscript 66 pstops
|
||||
|
||||
# PWG Raster filter for IPP Everywhere...
|
||||
application/vnd.cups-raster image/pwg-raster 100 rastertopwg
|
||||
application/vnd.cups-raster image/urf 100 rastertopwg
|
||||
|
||||
########################################################################
|
||||
#
|
||||
@@ -57,7 +53,3 @@ application/vnd.cups-raster image/pwg-raster 100 rastertopwg
|
||||
#
|
||||
|
||||
@DEFAULT_RAW_PRINTING@application/octet-stream application/vnd.cups-raw 0 -
|
||||
|
||||
#
|
||||
# End of "$Id$".
|
||||
#
|
||||
|
||||
+16
-22
@@ -1,20 +1,15 @@
|
||||
#
|
||||
# "$Id: mime.types 7670 2008-06-17 22:42:08Z mike $"
|
||||
# Base MIME types file for CUPS.
|
||||
#
|
||||
# Base MIME types file for CUPS.
|
||||
# DO NOT EDIT THIS FILE, AS IT IS OVERWRITTEN WHEN YOU INSTALL NEW
|
||||
# VERSIONS OF CUPS. Instead, create a "local.types" file that
|
||||
# reflects your local configuration changes.
|
||||
#
|
||||
# DO NOT EDIT THIS FILE, AS IT IS OVERWRITTEN WHEN YOU INSTALL NEW
|
||||
# VERSIONS OF CUPS. Instead, create a "local.types" file that
|
||||
# reflects your local configuration changes.
|
||||
# Copyright © 2007-2017 by Apple Inc.
|
||||
# Copyright © 1997-2007 by Easy Software Products.
|
||||
#
|
||||
# Copyright 2007-2011 by Apple Inc.
|
||||
# Copyright 1997-2007 by Easy Software Products.
|
||||
#
|
||||
# These coded instructions, statements, and computer programs are the
|
||||
# property of Apple Inc. and are protected by Federal copyright
|
||||
# law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
# which should have been included with this file. If this file is
|
||||
# file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
# Licensed under Apache License v2.0. See the file "LICENSE" for more
|
||||
# information.
|
||||
#
|
||||
|
||||
########################################################################
|
||||
@@ -37,6 +32,7 @@
|
||||
# 100=default, 200=highest)
|
||||
# printable(offset,length) True if bytes are printable 8-bit chars
|
||||
# (CR, NL, TAB, BS, 32-126, 128-254)
|
||||
# regex(offset,"regex") True if bytes match regular expression
|
||||
# string(offset,"string") True if bytes are identical to string
|
||||
# istring(offset,"string") True if bytes are identical to
|
||||
# case-insensitive string
|
||||
@@ -70,7 +66,7 @@
|
||||
#
|
||||
|
||||
#application/msword doc string(0,<D0CF11E0A1B11AE1>)
|
||||
application/pdf pdf string(0,%PDF)
|
||||
application/pdf pdf regex(0,^[\n\r]*%PDF)
|
||||
application/postscript ai eps ps string(0,%!) string(0,<04>%!) \
|
||||
contains(0,128,<1B>%-12345X) + \
|
||||
(contains(0,4096,"LANGUAGE=POSTSCRIPT") \
|
||||
@@ -80,6 +76,7 @@ application/postscript ai eps ps string(0,%!) string(0,<04>%!) \
|
||||
(contains(0,4096,<0a>%!) + \
|
||||
!contains(0,4096,"ENTER LANGUAGE")))
|
||||
|
||||
|
||||
########################################################################
|
||||
#
|
||||
# Image files...
|
||||
@@ -92,7 +89,7 @@ image/jpeg jpeg jpg jpe string(0,<FFD8FF>) +\
|
||||
char(3,0xe4) char(3,0xe5) char(3,0xe6) char(3,0xe7)\
|
||||
char(3,0xe8) char(3,0xe9) char(3,0xea) char(3,0xeb)\
|
||||
char(3,0xec) char(3,0xed) char(3,0xee) char(3,0xef))
|
||||
image/pwg-raster string(0,"RaS2") + string(4,PwgRaster<00>) priority(100)
|
||||
image/pwg-raster string(0,"RaS2") + string(4,PwgRaster<00>) priority(150)
|
||||
image/tiff tiff tif string(0,MM<002A>) string(0,II<2A00>)
|
||||
image/x-photocd pcd string(2048,PCD_IPI)
|
||||
image/x-portable-anymap pnm
|
||||
@@ -106,6 +103,7 @@ image/x-xpixmap xpm ascii(0,1024) + string(3,"XPM")
|
||||
image/x-sun-raster ras string(0,<59a66a95>)
|
||||
|
||||
#image/fpx fpx
|
||||
image/urf urf string(0,UNIRAST<00>)
|
||||
image/x-alias pix short(8,8) short(8,24)
|
||||
image/x-bitmap bmp string(0,BM) + !printable(2,14)
|
||||
image/x-icon ico
|
||||
@@ -123,8 +121,8 @@ application/x-shell sh printable(0,1024) + string(0,#!) +\
|
||||
(contains(2,80,/bash) contains(2,80,/ksh)\
|
||||
contains(2,80,/sh) contains(2,80,/zsh))
|
||||
application/x-csource c cxx cpp cc C h hpp \
|
||||
printable(0,1024) + \
|
||||
(string(0,/*) string(0,//)
|
||||
printable(0,1024) + ! css + \
|
||||
(string(0,/*) string(0,//) \
|
||||
string(0,#include) contains(0,1024,<0a>#include) \
|
||||
string(0,#define) contains(0,1024,<0a>#define))
|
||||
text/html html htm printable(0,1024) +\
|
||||
@@ -152,7 +150,7 @@ application/vnd.cups-pdf
|
||||
application/vnd.cups-postscript
|
||||
application/vnd.cups-ppd ppd string(0,"*PPD-Adobe:")
|
||||
application/vnd.cups-raster string(0,"RaSt") string(0,"tSaR") \
|
||||
string(0,"RaS2") string(0,"2SaR") \
|
||||
(string(0,"RaS2") + !string(4,PwgRaster<00>)) string(0,"2SaR") \
|
||||
string(0,"RaS3") string(0,"3SaR")
|
||||
application/vnd.cups-raw (string(0,<1B>E) + !string(2,<1B>%0B)) \
|
||||
string(0,<1B>@) \
|
||||
@@ -168,7 +166,3 @@ application/vnd.cups-raw (string(0,<1B>E) + !string(2,<1B>%0B)) \
|
||||
#
|
||||
|
||||
application/octet-stream
|
||||
|
||||
#
|
||||
# End of "$Id: mime.types 7670 2008-06-17 22:42:08Z mike $".
|
||||
#
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
@include common-auth
|
||||
@include common-account
|
||||
@include common-session
|
||||
+2
-8
@@ -1,13 +1,7 @@
|
||||
#
|
||||
# "$Id$"
|
||||
#
|
||||
# Sample SNMP configuration file for CUPS. See "man cups-snmp.conf" for a
|
||||
# complete description of this file.
|
||||
# SNMP configuration file for CUPS. See "man cups-snmp.conf" for a complete
|
||||
# description of this file.
|
||||
#
|
||||
|
||||
@CUPS_SNMP_ADDRESS@
|
||||
@CUPS_SNMP_COMMUNITY@
|
||||
|
||||
#
|
||||
# End of "$Id$".
|
||||
#
|
||||
|
||||
@@ -1,30 +1,18 @@
|
||||
dnl
|
||||
dnl "$Id: cups-common.m4 8781 2009-08-28 17:34:54Z mike $"
|
||||
dnl Common configuration stuff for CUPS.
|
||||
dnl
|
||||
dnl Common configuration stuff for CUPS.
|
||||
dnl Copyright 2007-2017 by Apple Inc.
|
||||
dnl Copyright 1997-2007 by Easy Software Products, all rights reserved.
|
||||
dnl
|
||||
dnl Copyright 2007-2013 by Apple Inc.
|
||||
dnl Copyright 1997-2007 by Easy Software Products, all rights reserved.
|
||||
dnl Licensed under Apache License v2.0. See the file "LICENSE" for more information.
|
||||
dnl
|
||||
dnl These coded instructions, statements, and computer programs are the
|
||||
dnl property of Apple Inc. and are protected by Federal copyright
|
||||
dnl law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
dnl which should have been included with this file. If this file is
|
||||
dnl file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
dnl
|
||||
|
||||
dnl We need at least autoconf 2.60...
|
||||
AC_PREREQ(2.60)
|
||||
|
||||
dnl Set the name of the config header file...
|
||||
AC_CONFIG_HEADER(config.h)
|
||||
|
||||
dnl Version number information...
|
||||
CUPS_VERSION="1.7.0"
|
||||
CUPS_VERSION="AC_PACKAGE_VERSION"
|
||||
CUPS_REVISION=""
|
||||
#if test -z "$CUPS_REVISION" -a -d .svn; then
|
||||
# CUPS_REVISION="-r`svnversion . | awk -F: '{print $NF}' | sed -e '1,$s/[[a-zA-Z]]*//g'`"
|
||||
#fi
|
||||
CUPS_BUILD="cups-$CUPS_VERSION"
|
||||
|
||||
AC_ARG_WITH(cups_build, [ --with-cups-build set "cups-config --build" string ],
|
||||
@@ -33,8 +21,8 @@ AC_ARG_WITH(cups_build, [ --with-cups-build set "cups-config --build" str
|
||||
AC_SUBST(CUPS_VERSION)
|
||||
AC_SUBST(CUPS_REVISION)
|
||||
AC_SUBST(CUPS_BUILD)
|
||||
AC_DEFINE_UNQUOTED(CUPS_SVERSION, "CUPS v$CUPS_VERSION$CUPS_REVISION")
|
||||
AC_DEFINE_UNQUOTED(CUPS_MINIMAL, "CUPS/$CUPS_VERSION$CUPS_REVISION")
|
||||
AC_DEFINE_UNQUOTED(CUPS_SVERSION, "AC_PACKAGE_NAME v$CUPS_VERSION$CUPS_REVISION")
|
||||
AC_DEFINE_UNQUOTED(CUPS_MINIMAL, "AC_PACKAGE_NAME/$CUPS_VERSION$CUPS_REVISION")
|
||||
|
||||
dnl Default compiler flags...
|
||||
CFLAGS="${CFLAGS:=}"
|
||||
@@ -53,6 +41,7 @@ AC_PATH_PROG(CHMOD,chmod)
|
||||
AC_PATH_PROG(GZIP,gzip)
|
||||
AC_PATH_PROG(LD,ld)
|
||||
AC_PATH_PROG(LN,ln)
|
||||
AC_PATH_PROG(MKDIR,mkdir)
|
||||
AC_PATH_PROG(MV,mv)
|
||||
AC_PATH_PROG(RM,rm)
|
||||
AC_PATH_PROG(RMDIR,rmdir)
|
||||
@@ -89,7 +78,7 @@ fi
|
||||
AC_SUBST(INSTALLSTATIC)
|
||||
|
||||
dnl Check for pkg-config, which is used for some other tests later on...
|
||||
AC_PATH_PROG(PKGCONFIG, pkg-config)
|
||||
AC_PATH_TOOL(PKGCONFIG, pkg-config)
|
||||
|
||||
dnl Check for libraries...
|
||||
AC_SEARCH_LIBS(abs, m, AC_DEFINE(HAVE_ABS))
|
||||
@@ -134,11 +123,9 @@ AC_CHECK_HEADER(stdint.h,AC_DEFINE(HAVE_STDINT_H))
|
||||
AC_CHECK_HEADER(string.h,AC_DEFINE(HAVE_STRING_H))
|
||||
AC_CHECK_HEADER(strings.h,AC_DEFINE(HAVE_STRINGS_H))
|
||||
AC_CHECK_HEADER(bstring.h,AC_DEFINE(HAVE_BSTRING_H))
|
||||
AC_CHECK_HEADER(usersec.h,AC_DEFINE(HAVE_USERSEC_H))
|
||||
AC_CHECK_HEADER(sys/ioctl.h,AC_DEFINE(HAVE_SYS_IOCTL_H))
|
||||
AC_CHECK_HEADER(sys/param.h,AC_DEFINE(HAVE_SYS_PARAM_H))
|
||||
AC_CHECK_HEADER(sys/ucred.h,AC_DEFINE(HAVE_SYS_UCRED_H))
|
||||
AC_CHECK_HEADER(scsi/sg.h,AC_DEFINE(HAVE_SCSI_SG_H))
|
||||
|
||||
dnl Checks for iconv.h and iconv_open
|
||||
AC_CHECK_HEADER(iconv.h,
|
||||
@@ -147,6 +134,9 @@ AC_CHECK_HEADER(iconv.h,
|
||||
AC_SEARCH_LIBS(iconv_open,iconv,
|
||||
AC_DEFINE(HAVE_ICONV_H)
|
||||
SAVELIBS="$SAVELIBS $LIBS")
|
||||
AC_SEARCH_LIBS(libiconv_open,iconv,
|
||||
AC_DEFINE(HAVE_ICONV_H)
|
||||
SAVELIBS="$SAVELIBS $LIBS")
|
||||
LIBS="$SAVELIBS")
|
||||
|
||||
dnl Checks for Mini-XML (www.minixml.org)...
|
||||
@@ -168,7 +158,7 @@ AC_CHECK_FUNCS(statfs statvfs)
|
||||
|
||||
dnl Checks for string functions.
|
||||
AC_CHECK_FUNCS(strdup strlcat strlcpy)
|
||||
if test "$uname" = "HP-UX" -a "$uversion" = "1020"; then
|
||||
if test "$host_os_name" = "hp-ux" -a "$host_os_version" = "1020"; then
|
||||
echo Forcing snprintf emulation for HP-UX.
|
||||
else
|
||||
AC_CHECK_FUNCS(snprintf vsnprintf)
|
||||
@@ -187,8 +177,8 @@ dnl Check for vsyslog function.
|
||||
AC_CHECK_FUNCS(vsyslog)
|
||||
|
||||
dnl Checks for signal functions.
|
||||
case "$uname" in
|
||||
Linux | GNU)
|
||||
case "$host_os_name" in
|
||||
linux* | gnu*)
|
||||
# Do not use sigset on Linux or GNU HURD
|
||||
;;
|
||||
*)
|
||||
@@ -202,6 +192,12 @@ AC_CHECK_FUNCS(sigaction)
|
||||
dnl Checks for wait functions.
|
||||
AC_CHECK_FUNCS(waitpid wait3)
|
||||
|
||||
dnl Check for posix_spawn
|
||||
AC_CHECK_FUNCS(posix_spawn)
|
||||
|
||||
dnl Check for getgrouplist
|
||||
AC_CHECK_FUNCS(getgrouplist)
|
||||
|
||||
dnl See if the tm structure has the tm_gmtoff member...
|
||||
AC_MSG_CHECKING(for tm_gmtoff member in tm structure)
|
||||
AC_TRY_COMPILE([#include <time.h>],[struct tm t;
|
||||
@@ -230,7 +226,7 @@ AC_SUBST(LIBUSB)
|
||||
AC_SUBST(USBQUIRKS)
|
||||
|
||||
if test "x$PKGCONFIG" != x; then
|
||||
if test x$enable_libusb = xyes -o $uname != Darwin; then
|
||||
if test x$enable_libusb != xno -a $host_os_name != darwin; then
|
||||
AC_MSG_CHECKING(for libusb-1.0)
|
||||
if $PKGCONFIG --exists libusb-1.0; then
|
||||
AC_MSG_RESULT(yes)
|
||||
@@ -240,6 +236,9 @@ if test "x$PKGCONFIG" != x; then
|
||||
USBQUIRKS="\$(DATADIR)/usb"
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
if test x$enable_libusb = xyes; then
|
||||
AC_MSG_ERROR(libusb required for --enable-libusb.)
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
elif test x$enable_libusb = xyes; then
|
||||
@@ -275,8 +274,8 @@ AC_SUBST(INSTALL_GZIP)
|
||||
AC_SUBST(LIBZ)
|
||||
|
||||
dnl Flags for "ar" command...
|
||||
case $uname in
|
||||
Darwin* | *BSD*)
|
||||
case $host_os_name in
|
||||
darwin* | *bsd*)
|
||||
ARFLAGS="-rcv"
|
||||
;;
|
||||
*)
|
||||
@@ -303,20 +302,15 @@ 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_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=""
|
||||
|
||||
if test "x$enable_dbus" != xno -a "x$PKGCONFIG" != x; then
|
||||
if test "x$enable_dbus" != xno -a "x$PKGCONFIG" != x -a "x$host_os_name" != xdarwin; then
|
||||
AC_MSG_CHECKING(for DBUS)
|
||||
if $PKGCONFIG --exists dbus-1; then
|
||||
AC_MSG_RESULT(yes)
|
||||
@@ -329,7 +323,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
|
||||
@@ -345,8 +344,8 @@ CUPS_DEFAULT_SYSTEM_AUTHKEY=""
|
||||
CUPS_SYSTEM_AUTHKEY=""
|
||||
INSTALLXPC=""
|
||||
|
||||
case $uname in
|
||||
Darwin*)
|
||||
case $host_os_name in
|
||||
darwin*)
|
||||
BACKLIBS="$BACKLIBS -framework IOKit"
|
||||
SERVERLIBS="$SERVERLIBS -framework IOKit -weak_framework ApplicationServices"
|
||||
LIBS="-framework SystemConfiguration -framework CoreFoundation -framework Security $LIBS"
|
||||
@@ -356,7 +355,6 @@ case $uname in
|
||||
AC_CHECK_HEADER(CoreFoundation/CoreFoundation.h,AC_DEFINE(HAVE_COREFOUNDATION_H))
|
||||
AC_CHECK_HEADER(CoreFoundation/CFPriv.h,AC_DEFINE(HAVE_CFPRIV_H))
|
||||
AC_CHECK_HEADER(CoreFoundation/CFBundlePriv.h,AC_DEFINE(HAVE_CFBUNDLEPRIV_H))
|
||||
AC_CHECK_HEADER(IOKit/pwr_mgt/IOPMLibPrivate.h,AC_DEFINE(HAVE_IOKIT_PWR_MGT_IOPMLIBPRIVATE_H))
|
||||
|
||||
dnl Check for dynamic store function...
|
||||
AC_CHECK_FUNCS(SCDynamicStoreCopyComputerName)
|
||||
@@ -366,9 +364,6 @@ case $uname in
|
||||
AC_CHECK_HEADER(membershipPriv.h,AC_DEFINE(HAVE_MEMBERSHIPPRIV_H))
|
||||
AC_CHECK_FUNCS(mbr_uid_to_uuid)
|
||||
|
||||
dnl Check for the vproc_transaction_begin/end stuff...
|
||||
AC_CHECK_FUNCS(vproc_transaction_begin)
|
||||
|
||||
dnl Need <dlfcn.h> header...
|
||||
AC_CHECK_HEADER(dlfcn.h,AC_DEFINE(HAVE_DLFCN_H))
|
||||
|
||||
@@ -390,28 +385,23 @@ case $uname in
|
||||
if test "x$default_adminkey" != xdefault; then
|
||||
CUPS_SYSTEM_AUTHKEY="SystemGroupAuthKey $default_adminkey"
|
||||
CUPS_DEFAULT_SYSTEM_AUTHKEY="$default_adminkey"
|
||||
elif grep -q system.print.operator /etc/authorization; then
|
||||
else
|
||||
CUPS_SYSTEM_AUTHKEY="SystemGroupAuthKey system.print.admin"
|
||||
CUPS_DEFAULT_SYSTEM_AUTHKEY="system.print.admin"
|
||||
else
|
||||
CUPS_SYSTEM_AUTHKEY="SystemGroupAuthKey system.preferences"
|
||||
CUPS_DEFAULT_SYSTEM_AUTHKEY="system.preferences"
|
||||
fi
|
||||
|
||||
if test "x$default_operkey" != xdefault; then
|
||||
CUPS_DEFAULT_PRINTOPERATOR_AUTH="@AUTHKEY($default_operkey) @admin @lpadmin"
|
||||
elif grep -q system.print.operator /etc/authorization; then
|
||||
CUPS_DEFAULT_PRINTOPERATOR_AUTH="@AUTHKEY(system.print.operator) @admin @lpadmin"
|
||||
else
|
||||
CUPS_DEFAULT_PRINTOPERATOR_AUTH="@AUTHKEY(system.print.admin) @admin @lpadmin"
|
||||
CUPS_DEFAULT_PRINTOPERATOR_AUTH="@AUTHKEY(system.print.operator) @admin @lpadmin"
|
||||
fi])
|
||||
AC_CHECK_HEADER(Security/SecBasePriv.h,AC_DEFINE(HAVE_SECBASEPRIV_H))
|
||||
|
||||
dnl Check for sandbox/Seatbelt support
|
||||
if test $uversion -ge 100; then
|
||||
if test $host_os_version -ge 100; then
|
||||
AC_CHECK_HEADER(sandbox.h,AC_DEFINE(HAVE_SANDBOX_H))
|
||||
fi
|
||||
if test $uversion -ge 110 -a $uversion -lt 120; then
|
||||
if test $host_os_version -ge 110 -a $host_os_version -lt 120; then
|
||||
# Broken public headers in 10.7.x...
|
||||
AC_MSG_CHECKING(for sandbox/private.h presence)
|
||||
if test -f /usr/local/include/sandbox/private.h; then
|
||||
@@ -460,7 +450,3 @@ case "$COMPONENTS" in
|
||||
esac
|
||||
|
||||
AC_SUBST(BUILDDIRS)
|
||||
|
||||
dnl
|
||||
dnl End of "$Id: cups-common.m4 8781 2009-08-28 17:34:54Z mike $".
|
||||
dnl
|
||||
|
||||
@@ -1,16 +1,10 @@
|
||||
dnl
|
||||
dnl "$Id: cups-compiler.m4 7871 2008-08-27 21:12:43Z mike $"
|
||||
dnl Compiler stuff for CUPS.
|
||||
dnl
|
||||
dnl Compiler stuff for CUPS.
|
||||
dnl Copyright 2007-2017 by Apple Inc.
|
||||
dnl Copyright 1997-2007 by Easy Software Products, all rights reserved.
|
||||
dnl
|
||||
dnl Copyright 2007-2013 by Apple Inc.
|
||||
dnl Copyright 1997-2007 by Easy Software Products, all rights reserved.
|
||||
dnl
|
||||
dnl These coded instructions, statements, and computer programs are the
|
||||
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 Licensed under Apache License v2.0. See the file "LICENSE" for more information.
|
||||
dnl
|
||||
|
||||
dnl Clear the debugging and non-shared library options unless the user asks
|
||||
@@ -48,6 +42,10 @@ fi
|
||||
|
||||
dnl Unit tests take up time during a compile...
|
||||
if test x$enable_unit_tests = xyes; then
|
||||
if test "$build" != "$host"; then
|
||||
AC_MSG_ERROR([Sorry, cannot build unit tests when cross-compiling.])
|
||||
fi
|
||||
|
||||
UNITTESTS="unittests"
|
||||
else
|
||||
UNITTESTS=""
|
||||
@@ -65,7 +63,7 @@ else
|
||||
fi
|
||||
|
||||
if test -z "$with_ldarchflags"; then
|
||||
if test "$uname" = Darwin; then
|
||||
if test "$host_os_name" = darwin; then
|
||||
# Only create Intel programs by default
|
||||
LDARCHFLAGS="`echo $ARCHFLAGS | sed -e '1,$s/-arch ppc64//'`"
|
||||
else
|
||||
@@ -103,14 +101,14 @@ if test -n "$GCC"; then
|
||||
fi
|
||||
|
||||
# Generate position-independent code as needed...
|
||||
if test $PICFLAG = 1 -a $uname != AIX; then
|
||||
if test $PICFLAG = 1; then
|
||||
OPTIM="-fPIC $OPTIM"
|
||||
fi
|
||||
|
||||
# The -fstack-protector option is available with some versions of
|
||||
# GCC and adds "stack canaries" which detect when the return address
|
||||
# has been overwritten, preventing many types of exploit attacks.
|
||||
AC_MSG_CHECKING(if GCC supports -fstack-protector)
|
||||
AC_MSG_CHECKING(whether compiler supports -fstack-protector)
|
||||
OLDCFLAGS="$CFLAGS"
|
||||
CFLAGS="$CFLAGS -fstack-protector"
|
||||
AC_TRY_LINK(,,
|
||||
@@ -130,10 +128,10 @@ if test -n "$GCC"; then
|
||||
# exploits that depend on a fixed address for common functions.
|
||||
#
|
||||
# Not available to LSB binaries...
|
||||
AC_MSG_CHECKING(if GCC supports -fPIE)
|
||||
AC_MSG_CHECKING(whether compiler supports -fPIE)
|
||||
OLDCFLAGS="$CFLAGS"
|
||||
case "$uname" in
|
||||
Darwin*)
|
||||
case "$host_os_name" in
|
||||
darwin*)
|
||||
CFLAGS="$CFLAGS -fPIE -Wl,-pie"
|
||||
AC_TRY_COMPILE(,,[
|
||||
PIEFLAGS="-fPIE -Wl,-pie"
|
||||
@@ -156,23 +154,50 @@ if test -n "$GCC"; then
|
||||
# Add useful warning options for tracking down problems...
|
||||
OPTIM="-Wall -Wno-format-y2k -Wunused $OPTIM"
|
||||
|
||||
AC_MSG_CHECKING(whether compiler supports -Wno-unused-result)
|
||||
OLDCFLAGS="$CFLAGS"
|
||||
CFLAGS="$CFLAGS -Werror -Wno-unused-result"
|
||||
AC_TRY_COMPILE(,,
|
||||
[OPTIM="$OPTIM -Wno-unused-result"
|
||||
AC_MSG_RESULT(yes)],
|
||||
AC_MSG_RESULT(no))
|
||||
CFLAGS="$OLDCFLAGS"
|
||||
|
||||
AC_MSG_CHECKING(whether compiler supports -Wsign-conversion)
|
||||
OLDCFLAGS="$CFLAGS"
|
||||
CFLAGS="$CFLAGS -Werror -Wsign-conversion"
|
||||
AC_TRY_COMPILE(,,
|
||||
[OPTIM="$OPTIM -Wsign-conversion"
|
||||
AC_MSG_RESULT(yes)],
|
||||
AC_MSG_RESULT(no))
|
||||
CFLAGS="$OLDCFLAGS"
|
||||
|
||||
AC_MSG_CHECKING(whether compiler supports -Wno-tautological-compare)
|
||||
OLDCFLAGS="$CFLAGS"
|
||||
CFLAGS="$CFLAGS -Werror -Wno-tautological-compare"
|
||||
AC_TRY_COMPILE(,,
|
||||
[OPTIM="$OPTIM -Wno-tautological-compare"
|
||||
AC_MSG_RESULT(yes)],
|
||||
AC_MSG_RESULT(no))
|
||||
CFLAGS="$OLDCFLAGS"
|
||||
|
||||
AC_MSG_CHECKING(whether compiler supports -Wno-format-truncation)
|
||||
OLDCFLAGS="$CFLAGS"
|
||||
CFLAGS="$CFLAGS -Werror -Wno-format-truncation"
|
||||
AC_TRY_COMPILE(,,
|
||||
[OPTIM="$OPTIM -Wno-format-truncation"
|
||||
AC_MSG_RESULT(yes)],
|
||||
AC_MSG_RESULT(no))
|
||||
CFLAGS="$OLDCFLAGS"
|
||||
|
||||
# Additional warning options for development testing...
|
||||
if test -d .svn; then
|
||||
OPTIM="-Wshadow -Werror $OPTIM"
|
||||
else
|
||||
AC_MSG_CHECKING(if GCC supports -Wno-tautological-compare)
|
||||
OLDCFLAGS="$CFLAGS"
|
||||
CFLAGS="$CFLAGS -Werror -Wno-tautological-compare"
|
||||
AC_TRY_COMPILE(,,
|
||||
[OPTIM="$OPTIM -Wno-tautological-compare"
|
||||
AC_MSG_RESULT(yes)],
|
||||
AC_MSG_RESULT(no))
|
||||
CFLAGS="$OLDCFLAGS"
|
||||
OPTIM="-Werror $OPTIM"
|
||||
fi
|
||||
fi
|
||||
|
||||
case "$uname" in
|
||||
Darwin*)
|
||||
case "$host_os_name" in
|
||||
darwin*)
|
||||
# -D_FORTIFY_SOURCE=2 adds additional object size
|
||||
# checking, basically wrapping all string functions
|
||||
# with buffer-limited ones. Not strictly needed for
|
||||
@@ -181,52 +206,18 @@ if test -n "$GCC"; then
|
||||
CFLAGS="$CFLAGS -D_FORTIFY_SOURCE=2"
|
||||
;;
|
||||
|
||||
Linux*)
|
||||
linux*)
|
||||
# The -z relro option is provided by the Linux linker command to
|
||||
# make relocatable data read-only.
|
||||
if test x$enable_relro = xyes; then
|
||||
RELROFLAGS="-Wl,-z,relro"
|
||||
RELROFLAGS="-Wl,-z,relro,-z,now"
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
else
|
||||
# Add vendor-specific compiler options...
|
||||
case $uname in
|
||||
AIX*)
|
||||
if test -z "$OPTIM"; then
|
||||
if test "x$with_optim" = x; then
|
||||
OPTIM="-O2 -qmaxmem=6000"
|
||||
else
|
||||
OPTIM="$with_optim $OPTIM"
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
HP-UX*)
|
||||
if test -z "$OPTIM"; then
|
||||
if test "x$with_optim" = x; then
|
||||
OPTIM="+O2"
|
||||
else
|
||||
OPTIM="$with_optim $OPTIM"
|
||||
fi
|
||||
fi
|
||||
|
||||
CFLAGS="-Ae $CFLAGS"
|
||||
|
||||
if test $PICFLAG = 1; then
|
||||
OPTIM="+z $OPTIM"
|
||||
fi
|
||||
;;
|
||||
OSF*)
|
||||
# Tru64 UNIX aka Digital UNIX aka OSF/1
|
||||
if test -z "$OPTIM"; then
|
||||
if test "x$with_optim" = x; then
|
||||
OPTIM="-O"
|
||||
else
|
||||
OPTIM="$with_optim"
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
SunOS*)
|
||||
case $host_os_name in
|
||||
sunos*)
|
||||
# Solaris
|
||||
if test -z "$OPTIM"; then
|
||||
if test "x$with_optim" = x; then
|
||||
@@ -236,20 +227,6 @@ else
|
||||
fi
|
||||
fi
|
||||
|
||||
if test $PICFLAG = 1; then
|
||||
OPTIM="-KPIC $OPTIM"
|
||||
fi
|
||||
;;
|
||||
UNIX_SVR*)
|
||||
# UnixWare
|
||||
if test -z "$OPTIM"; then
|
||||
if test "x$with_optim" = x; then
|
||||
OPTIM="-O"
|
||||
else
|
||||
OPTIM="$with_optim $OPTIM"
|
||||
fi
|
||||
fi
|
||||
|
||||
if test $PICFLAG = 1; then
|
||||
OPTIM="-KPIC $OPTIM"
|
||||
fi
|
||||
@@ -259,7 +236,7 @@ else
|
||||
# should contribute the necessary options to
|
||||
# cups-support@cups.org...
|
||||
echo "Building CUPS with default compiler optimizations; contact"
|
||||
echo "cups-bugs@cups.org with uname and compiler options needed"
|
||||
echo "cups-devel@cups.org with uname and compiler options needed"
|
||||
echo "for your platform, or set the CFLAGS and LDFLAGS environment"
|
||||
echo "variables before running configure."
|
||||
;;
|
||||
@@ -267,34 +244,10 @@ else
|
||||
fi
|
||||
|
||||
# Add general compiler options per platform...
|
||||
case $uname in
|
||||
HP-UX*)
|
||||
# HP-UX 10.20 (at least) needs this definition to get the
|
||||
# h_errno global...
|
||||
OPTIM="$OPTIM -D_XOPEN_SOURCE_EXTENDED"
|
||||
|
||||
# HP-UX 11.00 (at least) needs this definition to get the
|
||||
# u_short type used by the IP headers...
|
||||
OPTIM="$OPTIM -D_INCLUDE_HPUX_SOURCE"
|
||||
|
||||
# HP-UX 11.23 (at least) needs this definition to get the
|
||||
# IPv6 header to work...
|
||||
OPTIM="$OPTIM -D_HPUX_SOURCE"
|
||||
;;
|
||||
|
||||
Linux*)
|
||||
case $host_os_name in
|
||||
linux*)
|
||||
# glibc 2.8 and higher breaks peer credentials unless you
|
||||
# define _GNU_SOURCE...
|
||||
OPTIM="$OPTIM -D_GNU_SOURCE"
|
||||
;;
|
||||
|
||||
OSF*)
|
||||
# Tru64 UNIX aka Digital UNIX aka OSF/1 need to be told
|
||||
# to be POSIX-compliant...
|
||||
OPTIM="$OPTIM -D_XOPEN_SOURCE=500 -D_XOPEN_SOURCE_EXTENDED -D_OSF_SOURCE"
|
||||
;;
|
||||
esac
|
||||
|
||||
dnl
|
||||
dnl End of "$Id: cups-compiler.m4 7871 2008-08-27 21:12:43Z mike $".
|
||||
dnl
|
||||
|
||||
@@ -1,16 +1,10 @@
|
||||
dnl
|
||||
dnl "$Id: cups-defaults.m4 7959 2008-09-17 19:30:58Z mike $"
|
||||
dnl Default cupsd configuration settings for CUPS.
|
||||
dnl
|
||||
dnl Default cupsd configuration settings for CUPS.
|
||||
dnl Copyright 2007-2017 by Apple Inc.
|
||||
dnl Copyright 2006-2007 by Easy Software Products, all rights reserved.
|
||||
dnl
|
||||
dnl Copyright 2007-2012 by Apple Inc.
|
||||
dnl Copyright 2006-2007 by Easy Software Products, all rights reserved.
|
||||
dnl
|
||||
dnl These coded instructions, statements, and computer programs are the
|
||||
dnl property of Apple Inc. and are protected by Federal copyright
|
||||
dnl law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
dnl which should have been included with this file. If this file is
|
||||
dnl file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
dnl Licensed under Apache License v2.0. See the file "LICENSE" for more information.
|
||||
dnl
|
||||
|
||||
dnl Default languages...
|
||||
@@ -24,10 +18,10 @@ AC_ARG_WITH(languages, [ --with-languages set installed languages, defau
|
||||
esac])
|
||||
AC_SUBST(LANGUAGES)
|
||||
|
||||
dnl OS X bundle-based localization support
|
||||
AC_ARG_WITH(bundledir, [ --with-bundledir set OS X localization bundle directory ],
|
||||
dnl macOS bundle-based localization support
|
||||
AC_ARG_WITH(bundledir, [ --with-bundledir set macOS localization bundle directory ],
|
||||
CUPS_BUNDLEDIR="$withval",
|
||||
if test "x$uname" = xDarwin -a $uversion -ge 100; then
|
||||
if test "x$host_os_name" = xdarwin -a $host_os_version -ge 100; then
|
||||
CUPS_BUNDLEDIR="/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/PrintCore.framework/Versions/A"
|
||||
LANGUAGES=""
|
||||
else
|
||||
@@ -39,21 +33,41 @@ if test "x$CUPS_BUNDLEDIR" != x; then
|
||||
AC_DEFINE_UNQUOTED(CUPS_BUNDLEDIR, "$CUPS_BUNDLEDIR")
|
||||
fi
|
||||
|
||||
dnl Default executable file permissions
|
||||
AC_ARG_WITH(exe_file_perm, [ --with-exe-file-perm set default executable permissions value, default=0555],
|
||||
CUPS_EXE_FILE_PERM="$withval",
|
||||
[case "$host_os_name" in
|
||||
linux* | gnu*)
|
||||
CUPS_EXE_FILE_PERM="755"
|
||||
;;
|
||||
*)
|
||||
CUPS_EXE_FILE_PERM="555"
|
||||
;;
|
||||
esac])
|
||||
AC_SUBST(CUPS_EXE_FILE_PERM)
|
||||
|
||||
dnl Default ConfigFilePerm
|
||||
AC_ARG_WITH(config_file_perm, [ --with-config-file-perm set default ConfigFilePerm value, default=0640],
|
||||
CUPS_CONFIG_FILE_PERM="$withval",
|
||||
if test "x$uname" = xDarwin; then
|
||||
[if test "x$host_os_name" = xdarwin; then
|
||||
CUPS_CONFIG_FILE_PERM="644"
|
||||
else
|
||||
CUPS_CONFIG_FILE_PERM="640"
|
||||
fi)
|
||||
fi])
|
||||
AC_SUBST(CUPS_CONFIG_FILE_PERM)
|
||||
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_CONFIG_FILE_PERM, 0$CUPS_CONFIG_FILE_PERM)
|
||||
|
||||
dnl Default permissions for cupsd
|
||||
AC_ARG_WITH(cupsd_file_perm, [ --with-cupsd-file-perm set default cupsd permissions, default=0500],
|
||||
CUPS_CUPSD_FILE_PERM="$withval",
|
||||
CUPS_CUPSD_FILE_PERM="500")
|
||||
[case "$host_os_name" in
|
||||
linux* | gnu*)
|
||||
CUPS_CUPSD_FILE_PERM="700"
|
||||
;;
|
||||
*)
|
||||
CUPS_CUPSD_FILE_PERM="500"
|
||||
;;
|
||||
esac])
|
||||
AC_SUBST(CUPS_CUPSD_FILE_PERM)
|
||||
|
||||
dnl Default LogFilePerm
|
||||
@@ -78,12 +92,21 @@ AC_SUBST(CUPS_LOG_LEVEL)
|
||||
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_LOG_LEVEL, "$CUPS_LOG_LEVEL")
|
||||
|
||||
dnl Default AccessLogLevel
|
||||
AC_ARG_WITH(access_log_level, [ --with-access-log-level set default AccessLogLevel value, default=actions],
|
||||
AC_ARG_WITH(access_log_level, [ --with-access-log-level set default AccessLogLevel value, default=none],
|
||||
CUPS_ACCESS_LOG_LEVEL="$withval",
|
||||
CUPS_ACCESS_LOG_LEVEL="actions")
|
||||
CUPS_ACCESS_LOG_LEVEL="none")
|
||||
AC_SUBST(CUPS_ACCESS_LOG_LEVEL)
|
||||
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_ACCESS_LOG_LEVEL, "$CUPS_ACCESS_LOG_LEVEL")
|
||||
|
||||
dnl Default PageLogFormat
|
||||
AC_ARG_ENABLE(page_logging, [ --enable-page-logging enable page_log by default])
|
||||
if test "x$enable_page_logging" = xyes; then
|
||||
CUPS_PAGE_LOG_FORMAT=""
|
||||
else
|
||||
CUPS_PAGE_LOG_FORMAT="PageLogFormat"
|
||||
fi
|
||||
AC_SUBST(CUPS_PAGE_LOG_FORMAT)
|
||||
|
||||
dnl Default Browsing
|
||||
AC_ARG_ENABLE(browsing, [ --disable-browsing disable Browsing by default])
|
||||
if test "x$enable_browsing" = xno; then
|
||||
@@ -134,7 +157,7 @@ dnl Determine the correct username and group for this OS...
|
||||
AC_ARG_WITH(cups_user, [ --with-cups-user set default user for CUPS],
|
||||
CUPS_USER="$withval",
|
||||
AC_MSG_CHECKING(for default print user)
|
||||
if test x$uname = xDarwin; then
|
||||
if test x$host_os_name = xdarwin; then
|
||||
if test x`id -u _lp 2>/dev/null` = x; then
|
||||
CUPS_USER="lp";
|
||||
else
|
||||
@@ -167,7 +190,7 @@ fi
|
||||
AC_ARG_WITH(cups_group, [ --with-cups-group set default group for CUPS],
|
||||
CUPS_GROUP="$withval",
|
||||
AC_MSG_CHECKING(for default print group)
|
||||
if test x$uname = xDarwin; then
|
||||
if test x$host_os_name = xdarwin; then
|
||||
if test x`id -g _lp 2>/dev/null` = x; then
|
||||
CUPS_GROUP="lp";
|
||||
else
|
||||
@@ -200,7 +223,7 @@ fi
|
||||
|
||||
AC_ARG_WITH(system_groups, [ --with-system-groups set default system groups for CUPS],
|
||||
CUPS_SYSTEM_GROUPS="$withval",
|
||||
if test x$uname = xDarwin; then
|
||||
if test x$host_os_name = xdarwin; then
|
||||
CUPS_SYSTEM_GROUPS="admin"
|
||||
else
|
||||
AC_MSG_CHECKING(for default system groups)
|
||||
@@ -253,15 +276,15 @@ AC_ARG_WITH(printcap, [ --with-printcap set default printcap file],
|
||||
|
||||
if test x$default_printcap != xno; then
|
||||
if test "x$default_printcap" = "xdefault"; then
|
||||
case $uname in
|
||||
Darwin*)
|
||||
if test $uversion -ge 90; then
|
||||
case $host_os_name in
|
||||
darwin*)
|
||||
if test $host_os_version -ge 90; then
|
||||
CUPS_DEFAULT_PRINTCAP="/Library/Preferences/org.cups.printers.plist"
|
||||
else
|
||||
CUPS_DEFAULT_PRINTCAP="/etc/printcap"
|
||||
fi
|
||||
;;
|
||||
SunOS*)
|
||||
sunos*)
|
||||
CUPS_DEFAULT_PRINTCAP="/etc/printers.conf"
|
||||
;;
|
||||
*)
|
||||
@@ -285,8 +308,8 @@ AC_ARG_WITH(lpdconfigfile, [ --with-lpdconfigfile set default LPDConfigFile
|
||||
|
||||
if test x$default_lpdconfigfile != xno; then
|
||||
if test "x$default_lpdconfigfile" = "xdefault"; then
|
||||
case $uname in
|
||||
Darwin*)
|
||||
case $host_os_name in
|
||||
darwin*)
|
||||
CUPS_DEFAULT_LPD_CONFIG_FILE="launchd:///System/Library/LaunchDaemons/org.cups.cups-lpd.plist"
|
||||
;;
|
||||
*)
|
||||
@@ -353,7 +376,7 @@ AC_ARG_WITH(snmp-address, [ --with-snmp-address set SNMP query address, def
|
||||
else
|
||||
CUPS_SNMP_ADDRESS="Address $withval"
|
||||
fi,
|
||||
if test "x$uname" = xDarwin; then
|
||||
if test "x$host_os_name" = xdarwin; then
|
||||
CUPS_SNMP_ADDRESS=""
|
||||
else
|
||||
CUPS_SNMP_ADDRESS="Address @LOCAL"
|
||||
@@ -375,7 +398,7 @@ AC_SUBST(DEFAULT_IPP_PORT)
|
||||
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_IPP_PORT,$DEFAULT_IPP_PORT)
|
||||
|
||||
dnl Web interface...
|
||||
AC_ARG_ENABLE(webif, [ --enable-webif enable the web interface by default, default=no for OS X])
|
||||
AC_ARG_ENABLE(webif, [ --enable-webif enable the web interface by default, default=no for macOS])
|
||||
case "x$enable_webif" in
|
||||
xno)
|
||||
CUPS_WEBIF=No
|
||||
@@ -386,7 +409,7 @@ case "x$enable_webif" in
|
||||
CUPS_DEFAULT_WEBIF=1
|
||||
;;
|
||||
*)
|
||||
if test $uname = Darwin; then
|
||||
if test $host_os_name = darwin; then
|
||||
CUPS_WEBIF=No
|
||||
CUPS_DEFAULT_WEBIF=0
|
||||
else
|
||||
@@ -398,7 +421,3 @@ esac
|
||||
|
||||
AC_SUBST(CUPS_WEBIF)
|
||||
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_WEBIF, $CUPS_DEFAULT_WEBIF)
|
||||
|
||||
dnl
|
||||
dnl End of "$Id: cups-defaults.m4 7959 2008-09-17 19:30:58Z mike $".
|
||||
dnl
|
||||
|
||||
@@ -1,16 +1,10 @@
|
||||
dnl
|
||||
dnl "$Id: cups-directories.m4 7799 2008-07-25 20:06:08Z mike $"
|
||||
dnl Directory stuff for CUPS.
|
||||
dnl
|
||||
dnl Directory stuff for CUPS.
|
||||
dnl Copyright 2007-2017 by Apple Inc.
|
||||
dnl Copyright 1997-2007 by Easy Software Products, all rights reserved.
|
||||
dnl
|
||||
dnl Copyright 2007-2013 by Apple Inc.
|
||||
dnl Copyright 1997-2007 by Easy Software Products, all rights reserved.
|
||||
dnl
|
||||
dnl These coded instructions, statements, and computer programs are the
|
||||
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 Licensed under Apache License v2.0. See the file "LICENSE" for more information.
|
||||
dnl
|
||||
|
||||
AC_PREFIX_DEFAULT(/)
|
||||
@@ -76,7 +70,7 @@ fi
|
||||
dnl Fix "localstatedir" variable if it hasn't been specified...
|
||||
if test "$localstatedir" = "\${prefix}/var"; then
|
||||
if test "$prefix" = "/"; then
|
||||
if test "$uname" = Darwin; then
|
||||
if test "$host_os_name" = darwin; then
|
||||
localstatedir="/private/var"
|
||||
else
|
||||
localstatedir="/var"
|
||||
@@ -89,7 +83,7 @@ fi
|
||||
dnl Fix "sysconfdir" variable if it hasn't been specified...
|
||||
if test "$sysconfdir" = "\${prefix}/etc"; then
|
||||
if test "$prefix" = "/"; then
|
||||
if test "$uname" = Darwin; then
|
||||
if test "$host_os_name" = darwin; then
|
||||
sysconfdir="/private/etc"
|
||||
else
|
||||
sysconfdir="/etc"
|
||||
@@ -101,17 +95,12 @@ fi
|
||||
|
||||
dnl Fix "libdir" variable...
|
||||
if test "$libdir" = "\${exec_prefix}/lib"; then
|
||||
case "$uname" in
|
||||
Linux*)
|
||||
case "$host_os_name" in
|
||||
linux*)
|
||||
if test -d /usr/lib64 -a ! -d /usr/lib64/fakeroot; then
|
||||
libdir="$exec_prefix/lib64"
|
||||
fi
|
||||
;;
|
||||
HP-UX*)
|
||||
if test -d /usr/lib/hpux32; then
|
||||
libdir="$exec_prefix/lib/hpux32"
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
@@ -126,119 +115,6 @@ fi
|
||||
AC_SUBST(privateinclude)
|
||||
AC_SUBST(PRIVATEINCLUDE)
|
||||
|
||||
dnl Setup init.d locations...
|
||||
AC_ARG_WITH(rcdir, [ --with-rcdir set path for rc scripts],rcdir="$withval",rcdir="")
|
||||
AC_ARG_WITH(rclevels, [ --with-rclevels set run levels for rc scripts],rclevels="$withval",rclevels="2 3 5")
|
||||
AC_ARG_WITH(rcstart, [ --with-rcstart set start number for rc scripts],rcstart="$withval",rcstart="99")
|
||||
AC_ARG_WITH(rcstop, [ --with-rcstop set stop number for rc scripts],rcstop="$withval",rcstop="00")
|
||||
AC_ARG_WITH(smfmanifestdir, [ --with-smfmanifestdir set path for Solaris SMF manifest],smfmanifestdir="$withval",smfmanifestdir="")
|
||||
|
||||
INITDIR=""
|
||||
INITDDIR=""
|
||||
RCLEVELS="$rclevels"
|
||||
RCSTART="$rcstart"
|
||||
RCSTOP="$rcstop"
|
||||
SMFMANIFESTDIR=""
|
||||
|
||||
if test x$rcdir = x; then
|
||||
case "$uname" in
|
||||
AIX*)
|
||||
INITDIR="/etc/rc.d"
|
||||
;;
|
||||
|
||||
Darwin*)
|
||||
# Darwin and MacOS X...
|
||||
if test -x /sbin/launchd; then
|
||||
INITDDIR="/System/Library/LaunchDaemons"
|
||||
else
|
||||
INITDDIR="/System/Library/StartupItems/PrintingServices"
|
||||
fi
|
||||
;;
|
||||
|
||||
FreeBSD* | OpenBSD* | MirBSD* | ekkoBSD*)
|
||||
# FreeBSD and OpenBSD
|
||||
;;
|
||||
|
||||
HP-UX*)
|
||||
INITDIR="/sbin"
|
||||
RCLEVELS="2"
|
||||
RCSTART="380"
|
||||
RCSTOP="620"
|
||||
;;
|
||||
|
||||
Linux | GNU | GNU/k*BSD*)
|
||||
# Linux/HURD seems to choose an init.d directory at random...
|
||||
if test -d /sbin/init.d; then
|
||||
# SuSE
|
||||
INITDIR="/sbin/init.d"
|
||||
else
|
||||
if test -d /etc/init.d; then
|
||||
# Others
|
||||
INITDIR="/etc"
|
||||
else
|
||||
# RedHat
|
||||
INITDIR="/etc/rc.d"
|
||||
fi
|
||||
fi
|
||||
RCSTART="81"
|
||||
RCSTOP="36"
|
||||
;;
|
||||
|
||||
NetBSD*)
|
||||
# NetBSD
|
||||
INITDDIR="/etc/rc.d"
|
||||
;;
|
||||
|
||||
OSF1*)
|
||||
INITDIR="/sbin"
|
||||
;;
|
||||
|
||||
SunOS*)
|
||||
# Solaris
|
||||
if test "x$smfmanifestdir" != x; then
|
||||
SMFMANIFESTDIR=$smfmanifestdir
|
||||
else
|
||||
INITDIR="/etc"
|
||||
RCSTART="81"
|
||||
fi
|
||||
;;
|
||||
|
||||
*)
|
||||
INITDIR="/etc"
|
||||
;;
|
||||
|
||||
esac
|
||||
elif test "x$rcdir" != xno; then
|
||||
if test "x$rclevels" = x; then
|
||||
INITDDIR="$rcdir"
|
||||
else
|
||||
INITDIR="$rcdir"
|
||||
fi
|
||||
fi
|
||||
|
||||
AC_SUBST(INITDIR)
|
||||
AC_SUBST(INITDDIR)
|
||||
AC_SUBST(RCLEVELS)
|
||||
AC_SUBST(RCSTART)
|
||||
AC_SUBST(RCSTOP)
|
||||
AC_SUBST(SMFMANIFESTDIR)
|
||||
|
||||
dnl Xinetd support...
|
||||
AC_ARG_WITH(xinetd, [ --with-xinetd set path for xinetd config files],XINETD="$withval",XINETD="")
|
||||
|
||||
if test "x$XINETD" = x -a ! -x /sbin/launchd; then
|
||||
for dir in /private/etc/xinetd.d /etc/xinetd.d /usr/local/etc/xinetd.d; do
|
||||
if test -d $dir; then
|
||||
XINETD="$dir"
|
||||
break
|
||||
fi
|
||||
done
|
||||
elif test "x$XINETD" = xno; then
|
||||
XINETD=""
|
||||
fi
|
||||
|
||||
AC_SUBST(XINETD)
|
||||
|
||||
dnl LPD sharing support...
|
||||
AC_ARG_WITH(lpdconfig, [ --with-lpdconfig set URI for LPD config file],
|
||||
LPDCONFIG="$withval", LPDCONFIG="")
|
||||
@@ -285,7 +161,7 @@ dnl Setup default locations...
|
||||
AC_ARG_WITH(cachedir, [ --with-cachedir set path for cache files],cachedir="$withval",cachedir="")
|
||||
|
||||
if test x$cachedir = x; then
|
||||
if test "x$uname" = xDarwin; then
|
||||
if test "x$host_os_name" = xdarwin; then
|
||||
CUPS_CACHEDIR="$localstatedir/spool/cups/cache"
|
||||
else
|
||||
CUPS_CACHEDIR="$localstatedir/cache/cups"
|
||||
@@ -350,15 +226,11 @@ AC_DEFINE_UNQUOTED(CUPS_FONTPATH, "$CUPS_FONTPATH")
|
||||
|
||||
# Locale data
|
||||
if test "$localedir" = "\${datarootdir}/locale"; then
|
||||
case "$uname" in
|
||||
Linux | GNU | *BSD* | Darwin*)
|
||||
case "$host_os_name" in
|
||||
linux* | gnu* | *bsd* | darwin*)
|
||||
CUPS_LOCALEDIR="$datarootdir/locale"
|
||||
;;
|
||||
|
||||
OSF1* | AIX*)
|
||||
CUPS_LOCALEDIR="$exec_prefix/lib/nls/msg"
|
||||
;;
|
||||
|
||||
*)
|
||||
# This is the standard System V location...
|
||||
CUPS_LOCALEDIR="$exec_prefix/lib/locale"
|
||||
@@ -389,9 +261,9 @@ AC_DEFINE_UNQUOTED(CUPS_REQUESTS, "$localstatedir/spool/cups")
|
||||
AC_SUBST(CUPS_REQUESTS)
|
||||
|
||||
# Server executables...
|
||||
case "$uname" in
|
||||
*BSD* | Darwin*)
|
||||
# *BSD and Darwin (MacOS X)
|
||||
case "$host_os_name" in
|
||||
*bsd* | darwin*)
|
||||
# *BSD and Darwin (macOS)
|
||||
INSTALL_SYSV=""
|
||||
CUPS_SERVERBIN="$exec_prefix/libexec/cups"
|
||||
;;
|
||||
@@ -413,9 +285,9 @@ AC_SUBST(CUPS_SERVERROOT)
|
||||
|
||||
# Transient run-time state
|
||||
AC_ARG_WITH(rundir, [ --with-rundir set transient run-time state directory],CUPS_STATEDIR="$withval",[
|
||||
case "$uname" in
|
||||
Darwin*)
|
||||
# Darwin (OS X)
|
||||
case "$host_os_name" in
|
||||
darwin*)
|
||||
# Darwin (macOS)
|
||||
CUPS_STATEDIR="$CUPS_SERVERROOT"
|
||||
;;
|
||||
*)
|
||||
@@ -425,7 +297,3 @@ AC_ARG_WITH(rundir, [ --with-rundir set transient run-time state dire
|
||||
esac])
|
||||
AC_DEFINE_UNQUOTED(CUPS_STATEDIR, "$CUPS_STATEDIR")
|
||||
AC_SUBST(CUPS_STATEDIR)
|
||||
|
||||
dnl
|
||||
dnl End of "$Id: cups-directories.m4 7799 2008-07-25 20:06:08Z mike $".
|
||||
dnl
|
||||
|
||||
@@ -1,15 +1,9 @@
|
||||
dnl
|
||||
dnl "$Id: cups-dnssd.m4 7890 2008-08-29 22:19:39Z mike $"
|
||||
dnl DNS Service Discovery (aka Bonjour) stuff for CUPS.
|
||||
dnl
|
||||
dnl DNS Service Discovery (aka Bonjour) stuff for CUPS.
|
||||
dnl Copyright 2007-2017 by Apple Inc.
|
||||
dnl
|
||||
dnl Copyright 2007-2012 by Apple Inc.
|
||||
dnl
|
||||
dnl These coded instructions, statements, and computer programs are the
|
||||
dnl property of Apple Inc. and are protected by Federal copyright
|
||||
dnl law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
dnl which should have been included with this file. If this file is
|
||||
dnl file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
dnl Licensed under Apache License v2.0. See the file "LICENSE" for more information.
|
||||
dnl
|
||||
|
||||
AC_ARG_ENABLE(avahi, [ --disable-avahi disable DNS Service Discovery support using Avahi])
|
||||
@@ -26,7 +20,7 @@ DNSSD_BACKEND=""
|
||||
IPPFIND_BIN=""
|
||||
IPPFIND_MAN=""
|
||||
|
||||
if test "x$PKGCONFIG" != x -a x$enable_avahi != xno; then
|
||||
if test "x$PKGCONFIG" != x -a x$enable_avahi != xno -a x$host_os_name != xdarwin; then
|
||||
AC_MSG_CHECKING(for Avahi)
|
||||
if $PKGCONFIG --exists avahi-client; then
|
||||
AC_MSG_RESULT(yes)
|
||||
@@ -43,9 +37,9 @@ fi
|
||||
|
||||
if test "x$DNSSD_BACKEND" = x -a x$enable_dnssd != xno; then
|
||||
AC_CHECK_HEADER(dns_sd.h, [
|
||||
case "$uname" in
|
||||
Darwin*)
|
||||
# Darwin and MacOS X...
|
||||
case "$host_os_name" in
|
||||
darwin*)
|
||||
# Darwin and macOS...
|
||||
AC_DEFINE(HAVE_DNSSD)
|
||||
DNSSDLIBS="-framework CoreFoundation -framework SystemConfiguration"
|
||||
DNSSD_BACKEND="dnssd"
|
||||
@@ -80,7 +74,3 @@ AC_SUBST(DNSSDLIBS)
|
||||
AC_SUBST(DNSSD_BACKEND)
|
||||
AC_SUBST(IPPFIND_BIN)
|
||||
AC_SUBST(IPPFIND_MAN)
|
||||
|
||||
dnl
|
||||
dnl End of "$Id: cups-dnssd.m4 7890 2008-08-29 22:19:39Z mike $".
|
||||
dnl
|
||||
|
||||
@@ -1,19 +1,13 @@
|
||||
dnl
|
||||
dnl "$Id$"
|
||||
dnl GSSAPI/Kerberos library detection for CUPS.
|
||||
dnl
|
||||
dnl GSSAPI/Kerberos library detection for CUPS.
|
||||
dnl Copyright 2007-2017 by Apple Inc.
|
||||
dnl Copyright 2006-2007 by Easy Software Products.
|
||||
dnl
|
||||
dnl Copyright 2007-2012 by Apple Inc.
|
||||
dnl Copyright 2006-2007 by Easy Software Products.
|
||||
dnl This file contains Kerberos support code, copyright 2006 by
|
||||
dnl Jelmer Vernooij.
|
||||
dnl
|
||||
dnl This file contains Kerberos support code, copyright 2006 by
|
||||
dnl Jelmer Vernooij.
|
||||
dnl
|
||||
dnl These coded instructions, statements, and computer programs are the
|
||||
dnl property of Apple Inc. and are protected by Federal copyright
|
||||
dnl law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
dnl which should have been included with this file. If this file is
|
||||
dnl file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
dnl Licensed under Apache License v2.0. See the file "LICENSE" for more information.
|
||||
dnl
|
||||
|
||||
AC_ARG_ENABLE(gssapi, [ --disable-gssapi disable GSSAPI support])
|
||||
@@ -22,11 +16,11 @@ LIBGSSAPI=""
|
||||
AC_SUBST(LIBGSSAPI)
|
||||
|
||||
if test x$enable_gssapi != xno; then
|
||||
AC_PATH_PROG(KRB5CONFIG, krb5-config)
|
||||
AC_PATH_TOOL(KRB5CONFIG, krb5-config)
|
||||
if test "x$KRB5CONFIG" != x; then
|
||||
case "$uname" in
|
||||
Darwin)
|
||||
# OS X weak-links to the Kerberos framework...
|
||||
case "$host_os_name" in
|
||||
darwin)
|
||||
# macOS weak-links to the Kerberos framework...
|
||||
LIBGSSAPI="-weak_framework Kerberos"
|
||||
AC_MSG_CHECKING(for GSS framework)
|
||||
if test -d /System/Library/Frameworks/GSS.framework; then
|
||||
@@ -36,7 +30,7 @@ if test x$enable_gssapi != xno; then
|
||||
AC_MSG_RESULT(no)
|
||||
fi
|
||||
;;
|
||||
SunOS*)
|
||||
sunos*)
|
||||
# Solaris has a non-standard krb5-config, don't use it!
|
||||
AC_CHECK_LIB(gss, gss_display_status,
|
||||
AC_DEFINE(HAVE_GSSAPI, 1, [Whether GSSAPI is available])
|
||||
@@ -54,13 +48,13 @@ if test x$enable_gssapi != xno; then
|
||||
AC_DEFINE(HAVE_GSSAPI, 1, [Whether GSSAPI is available])
|
||||
else
|
||||
# Check for vendor-specific implementations...
|
||||
case "$uname" in
|
||||
HP-UX*)
|
||||
case "$host_os_name" in
|
||||
hp-ux*)
|
||||
AC_CHECK_LIB(gss, gss_display_status,
|
||||
AC_DEFINE(HAVE_GSSAPI, 1, [Whether GSSAPI is available])
|
||||
LIBGSSAPI="-lgss -lgssapi_krb5")
|
||||
;;
|
||||
SunOS*)
|
||||
sunos*)
|
||||
AC_CHECK_LIB(gss, gss_display_status,
|
||||
AC_DEFINE(HAVE_GSSAPI, 1, [Whether GSSAPI is available])
|
||||
LIBGSSAPI="-lgss")
|
||||
@@ -71,38 +65,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))
|
||||
@@ -156,7 +121,3 @@ fi
|
||||
|
||||
AC_SUBST(CUPS_DEFAULT_GSSSERVICENAME)
|
||||
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_GSSSERVICENAME, "$CUPS_DEFAULT_GSSSERVICENAME")
|
||||
|
||||
dnl
|
||||
dnl End of "$Id$".
|
||||
dnl
|
||||
|
||||
@@ -1,16 +1,10 @@
|
||||
dnl
|
||||
dnl "$Id: cups-largefile.m4 6649 2007-07-11 21:46:42Z mike $"
|
||||
dnl Large file support stuff for CUPS.
|
||||
dnl
|
||||
dnl Large file support stuff for CUPS.
|
||||
dnl Copyright 2007-2011 by Apple Inc.
|
||||
dnl Copyright 1997-2005 by Easy Software Products, all rights reserved.
|
||||
dnl
|
||||
dnl Copyright 2007-2011 by Apple Inc.
|
||||
dnl Copyright 1997-2005 by Easy Software Products, all rights reserved.
|
||||
dnl
|
||||
dnl These coded instructions, statements, and computer programs are the
|
||||
dnl property of Apple Inc. and are protected by Federal copyright
|
||||
dnl law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
dnl which should have been included with this file. If this file is
|
||||
dnl file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
dnl Licensed under Apache License v2.0. See the file "LICENSE" for more information.
|
||||
dnl
|
||||
|
||||
dnl Check for largefile support...
|
||||
@@ -46,7 +40,3 @@ if test $ac_cv_c_long_long = yes; then
|
||||
fi
|
||||
|
||||
AC_CHECK_FUNC(strtoll, AC_DEFINE(HAVE_STRTOLL))
|
||||
|
||||
dnl
|
||||
dnl End of "$Id: cups-largefile.m4 6649 2007-07-11 21:46:42Z mike $".
|
||||
dnl
|
||||
|
||||
@@ -1,43 +0,0 @@
|
||||
dnl
|
||||
dnl "$Id: cups-launchd.m4 6649 2007-07-11 21:46:42Z mike $"
|
||||
dnl
|
||||
dnl launchd stuff for CUPS.
|
||||
dnl
|
||||
dnl Copyright 2007-2010 by Apple Inc.
|
||||
dnl Copyright 1997-2005 by Easy Software Products, all rights reserved.
|
||||
dnl
|
||||
dnl These coded instructions, statements, and computer programs are the
|
||||
dnl property of Apple Inc. and are protected by Federal copyright
|
||||
dnl law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
dnl which should have been included with this file. If this file is
|
||||
dnl file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
dnl
|
||||
|
||||
|
||||
AC_ARG_ENABLE(launchd, [ --disable-launchd disable launchd support])
|
||||
|
||||
DEFAULT_LAUNCHD_CONF=""
|
||||
LAUNCHDLIBS=""
|
||||
|
||||
if test x$enable_launchd != xno; then
|
||||
AC_CHECK_FUNC(launch_msg, AC_DEFINE(HAVE_LAUNCHD))
|
||||
AC_CHECK_HEADER(launch.h, AC_DEFINE(HAVE_LAUNCH_H))
|
||||
|
||||
case "$uname" in
|
||||
Darwin*)
|
||||
# Darwin, MacOS X
|
||||
DEFAULT_LAUNCHD_CONF="/System/Library/LaunchDaemons/org.cups.cupsd.plist"
|
||||
# liblaunch is already part of libSystem
|
||||
;;
|
||||
*)
|
||||
# All others; this test will need to be updated
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
AC_SUBST(DEFAULT_LAUNCHD_CONF)
|
||||
AC_SUBST(LAUNCHDLIBS)
|
||||
|
||||
dnl
|
||||
dnl End of "$Id: cups-launchd.m4 6649 2007-07-11 21:46:42Z mike $".
|
||||
dnl
|
||||
@@ -1,21 +1,18 @@
|
||||
dnl
|
||||
dnl "$Id: cups-libtool.m4 6649 2007-07-11 21:46:42Z mike $"
|
||||
dnl Libtool stuff for CUPS.
|
||||
dnl
|
||||
dnl Libtool stuff for CUPS.
|
||||
dnl Copyright 2007-2018 by Apple Inc.
|
||||
dnl Copyright 1997-2005 by Easy Software Products, all rights reserved.
|
||||
dnl
|
||||
dnl Copyright 2007-2011 by Apple Inc.
|
||||
dnl Copyright 1997-2005 by Easy Software Products, all rights reserved.
|
||||
dnl
|
||||
dnl These coded instructions, statements, and computer programs are the
|
||||
dnl property of Apple Inc. and are protected by Federal copyright
|
||||
dnl law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
dnl which should have been included with this file. If this file is
|
||||
dnl file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
dnl Licensed under Apache License v2.0. See the file "LICENSE" for more information.
|
||||
dnl
|
||||
|
||||
AC_ARG_ENABLE(libtool_unsupported, [ --enable-libtool-unsupported
|
||||
AC_ARG_ENABLE(libtool_unsupported, [ --enable-libtool-unsupported=/path/to/libtool
|
||||
build with libtool (UNSUPPORTED!)],
|
||||
[if test x$enable_libtool_unsupported != xno; then
|
||||
if test x$enable_libtool_unsupported == xyes; then
|
||||
AC_MSG_ERROR([Use --enable-libtool-unsupported=/path/to/libtool.])
|
||||
fi
|
||||
LIBTOOL="$enable_libtool_unsupported"
|
||||
enable_shared=no
|
||||
echo "WARNING: libtool is not supported or endorsed by Apple Inc."
|
||||
@@ -24,16 +21,40 @@ AC_ARG_ENABLE(libtool_unsupported, [ --enable-libtool-unsupported
|
||||
LIBTOOL=""
|
||||
fi])
|
||||
|
||||
AC_SUBST(LIBTOOL)
|
||||
|
||||
if test x$LIBTOOL != x; then
|
||||
DSO="\$(LIBTOOL) --mode=link --tag=CC ${CC}"
|
||||
DSOXX="\$(LIBTOOL) --mode=link --tag=CXX ${CXX}"
|
||||
|
||||
LD_CC="\$(LIBTOOL) --mode=link --tag=CC ${CC}"
|
||||
LD_CXX="\$(LIBTOOL) --mode=link --tag=CXX ${CXX}"
|
||||
|
||||
LIBCUPS="libcups.la"
|
||||
LIBCUPSSTATIC="libcups.la"
|
||||
LIBCUPSCGI="libcupscgi.la"
|
||||
LIBCUPSIMAGE="libcupsimage.la"
|
||||
LIBCUPSMIME="libcupsmime.la"
|
||||
LIBCUPSPPDC="libcupsppdc.la"
|
||||
|
||||
LIBTOOL_CC="\$(LIBTOOL) --mode=compile --tag=CC"
|
||||
LIBTOOL_CXX="\$(LIBTOOL) --mode=compile --tag=CXX"
|
||||
LIBTOOL_INSTALL="\$(LIBTOOL) --mode=install"
|
||||
|
||||
LINKCUPS="../cups/\$(LIBCUPS)"
|
||||
LINKCUPSIMAGE="../filter/\$(LIBCUPSIMAGE)"
|
||||
DSO="\$(CC)"
|
||||
LINKCUPSIMAGE="../cups/\$(LIBCUPSIMAGE)"
|
||||
|
||||
else
|
||||
LD_CC="\$(CC)"
|
||||
LD_CXX="\$(CXX)"
|
||||
|
||||
LIBTOOL_CC=""
|
||||
LIBTOOL_CXX=""
|
||||
LIBTOOL_INSTALL=""
|
||||
fi
|
||||
|
||||
dnl
|
||||
dnl End of "$Id: cups-libtool.m4 6649 2007-07-11 21:46:42Z mike $".
|
||||
dnl
|
||||
AC_SUBST(LD_CC)
|
||||
AC_SUBST(LD_CXX)
|
||||
|
||||
AC_SUBST(LIBTOOL)
|
||||
AC_SUBST(LIBTOOL_CC)
|
||||
AC_SUBST(LIBTOOL_CXX)
|
||||
AC_SUBST(LIBTOOL_INSTALL)
|
||||
|
||||
@@ -1,16 +1,10 @@
|
||||
dnl
|
||||
dnl "$Id: cups-manpages.m4 6649 2007-07-11 21:46:42Z mike $"
|
||||
dnl Manpage stuff for CUPS.
|
||||
dnl
|
||||
dnl Manpage stuff for CUPS.
|
||||
dnl Copyright 2007-2017 by Apple Inc.
|
||||
dnl Copyright 1997-2006 by Easy Software Products, all rights reserved.
|
||||
dnl
|
||||
dnl Copyright 2007-2012 by Apple Inc.
|
||||
dnl Copyright 1997-2006 by Easy Software Products, all rights reserved.
|
||||
dnl
|
||||
dnl These coded instructions, statements, and computer programs are the
|
||||
dnl property of Apple Inc. and are protected by Federal copyright
|
||||
dnl law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
dnl which should have been included with this file. If this file is
|
||||
dnl file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
dnl Licensed under Apache License v2.0. See the file "LICENSE" for more information.
|
||||
dnl
|
||||
|
||||
dnl Fix "mandir" variable...
|
||||
@@ -21,9 +15,9 @@ if test "$mandir" = "\${datarootdir}/man" -a "$prefix" = "/"; then
|
||||
fi
|
||||
|
||||
if test "$mandir" = "\${prefix}/man" -a "$prefix" = "/"; then
|
||||
case "$uname" in
|
||||
Darwin* | Linux | GNU | *BSD* | AIX*)
|
||||
# Darwin, MacOS X, Linux, GNU HURD, *BSD, and AIX
|
||||
case "$host_os_name" in
|
||||
darwin* | linux* | gnu* | *bsd*)
|
||||
# Darwin, macOS, Linux, GNU HURD, and *BSD
|
||||
mandir="/usr/share/man"
|
||||
AMANDIR="/usr/share/man"
|
||||
PMANDIR="/usr/share/man"
|
||||
@@ -44,17 +38,17 @@ AC_SUBST(AMANDIR)
|
||||
AC_SUBST(PMANDIR)
|
||||
|
||||
dnl Setup manpage extensions...
|
||||
case "$uname" in
|
||||
SunOS* | HP-UX*)
|
||||
# Solaris and HP-UX
|
||||
case "$host_os_name" in
|
||||
sunos*)
|
||||
# Solaris
|
||||
MAN1EXT=1
|
||||
MAN5EXT=5
|
||||
MAN7EXT=7
|
||||
MAN8EXT=1m
|
||||
MAN8DIR=1m
|
||||
;;
|
||||
Linux* | GNU* | Darwin*)
|
||||
# Linux, GNU Hurd, and OS X
|
||||
linux* | gnu* | darwin*)
|
||||
# Linux, GNU Hurd, and macOS
|
||||
MAN1EXT=1.gz
|
||||
MAN5EXT=5.gz
|
||||
MAN7EXT=7.gz
|
||||
@@ -76,7 +70,3 @@ AC_SUBST(MAN5EXT)
|
||||
AC_SUBST(MAN7EXT)
|
||||
AC_SUBST(MAN8EXT)
|
||||
AC_SUBST(MAN8DIR)
|
||||
|
||||
dnl
|
||||
dnl End of "$Id: cups-manpages.m4 6649 2007-07-11 21:46:42Z mike $".
|
||||
dnl
|
||||
|
||||
@@ -1,19 +1,18 @@
|
||||
dnl
|
||||
dnl "$Id: cups-network.m4 7918 2008-09-08 22:03:01Z mike $"
|
||||
dnl Networking stuff for CUPS.
|
||||
dnl
|
||||
dnl Networking stuff for CUPS.
|
||||
dnl Copyright 2007-2016 by Apple Inc.
|
||||
dnl Copyright 1997-2005 by Easy Software Products, all rights reserved.
|
||||
dnl
|
||||
dnl Copyright 2007-2011 by Apple Inc.
|
||||
dnl Copyright 1997-2005 by Easy Software Products, all rights reserved.
|
||||
dnl
|
||||
dnl These coded instructions, statements, and computer programs are the
|
||||
dnl property of Apple Inc. and are protected by Federal copyright
|
||||
dnl law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
dnl which should have been included with this file. If this file is
|
||||
dnl file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
dnl Licensed under Apache License v2.0. See the file "LICENSE" for more information.
|
||||
dnl
|
||||
|
||||
AC_CHECK_HEADER(resolv.h,AC_DEFINE(HAVE_RESOLV_H))
|
||||
AC_CHECK_HEADER(resolv.h,AC_DEFINE(HAVE_RESOLV_H),,[
|
||||
#include <sys/socket.h>
|
||||
#include <netinet/in.h>
|
||||
#include <arpa/inet.h>
|
||||
#include <netinet/in_systm.h>
|
||||
#include <netinet/ip.h>])
|
||||
AC_SEARCH_LIBS(socket, socket)
|
||||
AC_SEARCH_LIBS(gethostbyaddr, nsl)
|
||||
AC_SEARCH_LIBS(getifaddrs, nsl, AC_DEFINE(HAVE_GETIFADDRS))
|
||||
@@ -25,7 +24,7 @@ AC_SEARCH_LIBS(__res_init, resolv bind, AC_DEFINE(HAVE_RES_INIT),
|
||||
|
||||
# Tru64 5.1b leaks file descriptors with these functions; disable until
|
||||
# we can come up with a test for this...
|
||||
if test "$uname" != "OSF1"; then
|
||||
if test "$host_os_name" != "osf1"; then
|
||||
AC_SEARCH_LIBS(getaddrinfo, nsl, AC_DEFINE(HAVE_GETADDRINFO))
|
||||
AC_SEARCH_LIBS(getnameinfo, nsl, AC_DEFINE(HAVE_GETNAMEINFO))
|
||||
fi
|
||||
@@ -42,9 +41,9 @@ AC_ARG_WITH(domainsocket, [ --with-domainsocket set unix domain socket name
|
||||
|
||||
if test x$enable_domainsocket != xno -a x$default_domainsocket != xno; then
|
||||
if test "x$default_domainsocket" = x; then
|
||||
case "$uname" in
|
||||
Darwin*)
|
||||
# Darwin and MaxOS X do their own thing...
|
||||
case "$host_os_name" in
|
||||
darwin*)
|
||||
# Darwin and macOS do their own thing...
|
||||
CUPS_DEFAULT_DOMAINSOCKET="$localstatedir/run/cupsd"
|
||||
;;
|
||||
*)
|
||||
@@ -65,10 +64,3 @@ fi
|
||||
|
||||
AC_SUBST(CUPS_DEFAULT_DOMAINSOCKET)
|
||||
AC_SUBST(CUPS_LISTEN_DOMAINSOCKET)
|
||||
|
||||
AC_CHECK_HEADERS(AppleTalk/at_proto.h,AC_DEFINE(HAVE_APPLETALK_AT_PROTO_H),,
|
||||
[#include <netat/appletalk.h>])
|
||||
|
||||
dnl
|
||||
dnl End of "$Id: cups-network.m4 7918 2008-09-08 22:03:01Z mike $".
|
||||
dnl
|
||||
|
||||
@@ -1,39 +1,33 @@
|
||||
dnl
|
||||
dnl "$Id: cups-opsys.m4 6649 2007-07-11 21:46:42Z mike $"
|
||||
dnl Operating system stuff for CUPS.
|
||||
dnl
|
||||
dnl Operating system stuff for CUPS.
|
||||
dnl Copyright 2007-2017 by Apple Inc.
|
||||
dnl Copyright 1997-2006 by Easy Software Products, all rights reserved.
|
||||
dnl
|
||||
dnl Copyright 2007-2012 by Apple Inc.
|
||||
dnl Copyright 1997-2006 by Easy Software Products, all rights reserved.
|
||||
dnl
|
||||
dnl These coded instructions, statements, and computer programs are the
|
||||
dnl property of Apple Inc. and are protected by Federal copyright
|
||||
dnl law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
dnl which should have been included with this file. If this file is
|
||||
dnl file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
dnl Licensed under Apache License v2.0. See the file "LICENSE" for more information.
|
||||
dnl
|
||||
|
||||
dnl Get the operating system, version number, and architecture...
|
||||
uname=`uname`
|
||||
uversion=`uname -r | sed -e '1,$s/^[[^0-9]]*\([[0-9]]*\)\.\([[0-9]]*\).*/\1\2/'`
|
||||
uarch=`uname -m`
|
||||
dnl Get the build and host platforms and split the host_os value
|
||||
AC_CANONICAL_BUILD
|
||||
AC_CANONICAL_HOST
|
||||
|
||||
case "$uname" in
|
||||
Darwin*)
|
||||
uname="Darwin"
|
||||
if test $uversion -lt 120; then
|
||||
AC_MSG_ERROR([Sorry, this version of CUPS requires OS X 10.8 or higher.])
|
||||
fi
|
||||
;;
|
||||
[host_os_name=`echo $host_os | sed -e '1,$s/[0-9.]*$//g'`]
|
||||
[host_os_version=`echo $host_os | sed -e '1,$s/^[^0-9.]*//g' | awk -F. '{print $1 $2}'`]
|
||||
# Linux often does not yield an OS version we can use...
|
||||
if test "x$host_os_version" = x; then
|
||||
host_os_version="0"
|
||||
fi
|
||||
|
||||
GNU* | GNU/*)
|
||||
uname="GNU"
|
||||
;;
|
||||
Linux*)
|
||||
uname="Linux"
|
||||
;;
|
||||
esac
|
||||
if test "$host_os_name" = darwin -a $host_os_version -lt 120; then
|
||||
AC_MSG_ERROR([Sorry, this version of CUPS requires macOS 10.8 or higher.])
|
||||
fi
|
||||
|
||||
dnl
|
||||
dnl "$Id: cups-opsys.m4 6649 2007-07-11 21:46:42Z mike $"
|
||||
dnl
|
||||
dnl Determine whether we are cross-compiling...
|
||||
if test "$build" = "$host"; then
|
||||
# No, build local targets
|
||||
LOCALTARGET="local"
|
||||
else
|
||||
# Yes, don't build local targets
|
||||
LOCALTARGET=""
|
||||
fi
|
||||
AC_SUBST(LOCALTARGET)
|
||||
|
||||
@@ -1,25 +1,14 @@
|
||||
dnl
|
||||
dnl "$Id: cups-pam.m4 7960 2008-09-17 19:42:02Z mike $"
|
||||
dnl PAM stuff for CUPS.
|
||||
dnl
|
||||
dnl PAM stuff for CUPS.
|
||||
dnl Copyright 2007-2017 by Apple Inc.
|
||||
dnl Copyright 1997-2005 by Easy Software Products, all rights reserved.
|
||||
dnl
|
||||
dnl Copyright 2007-2012 by Apple Inc.
|
||||
dnl Copyright 1997-2005 by Easy Software Products, all rights reserved.
|
||||
dnl
|
||||
dnl These coded instructions, statements, and computer programs are the
|
||||
dnl property of Apple Inc. and are protected by Federal copyright
|
||||
dnl law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
dnl which should have been included with this file. If this file is
|
||||
dnl file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
dnl Licensed under Apache License v2.0. See the file "LICENSE" for more information.
|
||||
dnl
|
||||
|
||||
AC_ARG_ENABLE(pam, [ --disable-pam disable PAM support])
|
||||
AC_ARG_WITH(pam_module, [ --with-pam-module specify the PAM module to use])
|
||||
|
||||
dnl Don't use PAM with AIX...
|
||||
if test $uname = AIX; then
|
||||
enable_pam=no
|
||||
fi
|
||||
AC_ARG_WITH(pam_module, [ --with-pam-module set the PAM module to use])
|
||||
|
||||
PAMDIR=""
|
||||
PAMFILE="pam.std"
|
||||
@@ -59,9 +48,9 @@ if test x$enable_pam != xno; then
|
||||
|
||||
LIBS="$SAVELIBS"
|
||||
|
||||
case "$uname" in
|
||||
Darwin*)
|
||||
# Darwin/OS X
|
||||
case "$host_os_name" in
|
||||
darwin*)
|
||||
# Darwin/macOS
|
||||
if test "x$with_pam_module" != x; then
|
||||
PAMFILE="pam.$with_pam_module"
|
||||
elif test -f /usr/lib/pam/pam_opendirectory.so.2; then
|
||||
@@ -76,10 +65,22 @@ if test x$enable_pam != xno; then
|
||||
# as Linux distributors move things around...
|
||||
if test "x$with_pam_module" != x; then
|
||||
PAMMOD="pam_${with_pam_module}.so"
|
||||
elif test -f /lib/security/pam_unix2.so; then
|
||||
PAMMOD="pam_unix2.so"
|
||||
elif test -f /lib/security/pam_unix.so; then
|
||||
PAMMOD="pam_unix.so"
|
||||
elif test -f /etc/pam.d/common-auth; then
|
||||
PAMFILE="pam.common"
|
||||
else
|
||||
moddir=""
|
||||
for dir in /lib/security /lib64/security /lib/x86_64-linux-gnu/security /var/lib/pam; do
|
||||
if test -d $dir; then
|
||||
moddir=$dir
|
||||
break;
|
||||
fi
|
||||
done
|
||||
|
||||
if test -f $moddir/pam_unix2.so; then
|
||||
PAMMOD="pam_unix2.so"
|
||||
elif test -f $moddir/pam_unix.so; then
|
||||
PAMMOD="pam_unix.so"
|
||||
fi
|
||||
fi
|
||||
|
||||
if test "x$PAMMOD" = xpam_unix.so; then
|
||||
@@ -96,7 +97,3 @@ AC_SUBST(PAMFILE)
|
||||
AC_SUBST(PAMLIBS)
|
||||
AC_SUBST(PAMMOD)
|
||||
AC_SUBST(PAMMODAUTH)
|
||||
|
||||
dnl
|
||||
dnl End of "$Id: cups-pam.m4 7960 2008-09-17 19:42:02Z mike $".
|
||||
dnl
|
||||
|
||||
@@ -1,22 +1,12 @@
|
||||
dnl
|
||||
dnl "$Id$"
|
||||
dnl Select/poll stuff for CUPS.
|
||||
dnl
|
||||
dnl Select/poll stuff for CUPS.
|
||||
dnl Copyright 2007-2011 by Apple Inc.
|
||||
dnl Copyright 2006 by Easy Software Products, all rights reserved.
|
||||
dnl
|
||||
dnl Copyright 2007-2011 by Apple Inc.
|
||||
dnl Copyright 2006 by Easy Software Products, all rights reserved.
|
||||
dnl
|
||||
dnl These coded instructions, statements, and computer programs are the
|
||||
dnl property of Apple Inc. and are protected by Federal copyright
|
||||
dnl law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
dnl which should have been included with this file. If this file is
|
||||
dnl file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
dnl Licensed under Apache License v2.0. See the file "LICENSE" for more information.
|
||||
dnl
|
||||
|
||||
AC_CHECK_FUNC(poll, AC_DEFINE(HAVE_POLL))
|
||||
AC_CHECK_FUNC(epoll_create, AC_DEFINE(HAVE_EPOLL))
|
||||
AC_CHECK_FUNC(kqueue, AC_DEFINE(HAVE_KQUEUE))
|
||||
|
||||
dnl
|
||||
dnl End of "$Id$".
|
||||
dnl
|
||||
|
||||
@@ -1,89 +0,0 @@
|
||||
dnl
|
||||
dnl "$Id: cups-scripting.m4 7915 2008-09-07 22:18:29Z mike $"
|
||||
dnl
|
||||
dnl Scripting configuration stuff for CUPS.
|
||||
dnl
|
||||
dnl Copyright 2007-2010 by Apple Inc.
|
||||
dnl Copyright 1997-2006 by Easy Software Products, all rights reserved.
|
||||
dnl
|
||||
dnl These coded instructions, statements, and computer programs are the
|
||||
dnl property of Apple Inc. and are protected by Federal copyright
|
||||
dnl law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
dnl which should have been included with this file. If this file is
|
||||
dnl file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
dnl
|
||||
|
||||
dnl Do we have Java?
|
||||
AC_ARG_WITH(java, [ --with-java set Java interpreter for web interfaces ],
|
||||
CUPS_JAVA="$withval",
|
||||
CUPS_JAVA="")
|
||||
|
||||
if test "x$CUPS_JAVA" = x; then
|
||||
AC_PATH_PROG(JAVA,java)
|
||||
CUPS_JAVA="$JAVA"
|
||||
fi
|
||||
|
||||
AC_DEFINE_UNQUOTED(CUPS_JAVA, "$CUPS_JAVA")
|
||||
|
||||
if test "x$CUPS_JAVA" != x; then
|
||||
AC_DEFINE(HAVE_JAVA)
|
||||
fi
|
||||
|
||||
dnl Do we have Perl?
|
||||
AC_ARG_WITH(perl, [ --with-perl set Perl interpreter for web interfaces ],
|
||||
CUPS_PERL="$withval",
|
||||
CUPS_PERL="")
|
||||
|
||||
if test "x$CUPS_PERL" = x; then
|
||||
AC_PATH_PROG(PERL,perl)
|
||||
CUPS_PERL="$PERL"
|
||||
fi
|
||||
|
||||
AC_DEFINE_UNQUOTED(CUPS_PERL, "$CUPS_PERL")
|
||||
|
||||
if test "x$CUPS_PERL" != x; then
|
||||
AC_DEFINE(HAVE_PERL)
|
||||
fi
|
||||
|
||||
dnl Do we have PHP?
|
||||
AC_ARG_WITH(php, [ --with-php set PHP interpreter for web interfaces ],
|
||||
CUPS_PHP="$withval",
|
||||
CUPS_PHP="")
|
||||
|
||||
if test "x$CUPS_PHP" = x; then
|
||||
AC_PATH_PROG(PHPCGI,php-cgi)
|
||||
if test "x$PHPCGI" = x; then
|
||||
AC_PATH_PROG(PHP,php)
|
||||
CUPS_PHP="$PHP"
|
||||
else
|
||||
CUPS_PHP="$PHPCGI"
|
||||
fi
|
||||
fi
|
||||
|
||||
AC_DEFINE_UNQUOTED(CUPS_PHP, "$CUPS_PHP")
|
||||
|
||||
if test "x$CUPS_PHP" = x; then
|
||||
CUPS_PHP="no"
|
||||
else
|
||||
AC_DEFINE(HAVE_PHP)
|
||||
fi
|
||||
|
||||
dnl Do we have Python?
|
||||
AC_ARG_WITH(python, [ --with-python set Python interpreter for web interfaces ],
|
||||
CUPS_PYTHON="$withval",
|
||||
CUPS_PYTHON="")
|
||||
|
||||
if test "x$CUPS_PYTHON" = x; then
|
||||
AC_PATH_PROG(PYTHON,python)
|
||||
CUPS_PYTHON="$PYTHON"
|
||||
fi
|
||||
|
||||
AC_DEFINE_UNQUOTED(CUPS_PYTHON, "$CUPS_PYTHON")
|
||||
|
||||
if test "x$CUPS_PYTHON" != x; then
|
||||
AC_DEFINE(HAVE_PYTHON)
|
||||
fi
|
||||
|
||||
dnl
|
||||
dnl End of "$Id: cups-scripting.m4 7915 2008-09-07 22:18:29Z mike $".
|
||||
dnl
|
||||
@@ -1,16 +1,10 @@
|
||||
dnl
|
||||
dnl "$Id: cups-sharedlibs.m4 7630 2008-06-09 22:31:44Z mike $"
|
||||
dnl Shared library support for CUPS.
|
||||
dnl
|
||||
dnl Shared library support for CUPS.
|
||||
dnl Copyright 2007-2018 by Apple Inc.
|
||||
dnl Copyright 1997-2005 by Easy Software Products, all rights reserved.
|
||||
dnl
|
||||
dnl Copyright 2007-2012 by Apple Inc.
|
||||
dnl Copyright 1997-2005 by Easy Software Products, all rights reserved.
|
||||
dnl
|
||||
dnl These coded instructions, statements, and computer programs are the
|
||||
dnl property of Apple Inc. and are protected by Federal copyright
|
||||
dnl law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
dnl which should have been included with this file. If this file is
|
||||
dnl file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
dnl Licensed under Apache License v2.0. See the file "LICENSE" for more information.
|
||||
dnl
|
||||
|
||||
PICFLAG=1
|
||||
@@ -23,8 +17,8 @@ LIBCUPSBASE="lib$cupsbase"
|
||||
LIBCUPSSTATIC="lib$cupsbase.a"
|
||||
|
||||
if test x$enable_shared != xno; then
|
||||
case "$uname" in
|
||||
SunOS*)
|
||||
case "$host_os_name" in
|
||||
sunos*)
|
||||
LIBCUPS="lib$cupsbase.so.2"
|
||||
LIBCUPSCGI="libcupscgi.so.1"
|
||||
LIBCUPSIMAGE="libcupsimage.so.2"
|
||||
@@ -34,51 +28,7 @@ if test x$enable_shared != xno; then
|
||||
DSOXX="\$(CXX)"
|
||||
DSOFLAGS="$DSOFLAGS -Wl,-h\`basename \$@\` -G \$(OPTIM)"
|
||||
;;
|
||||
UNIX_S*)
|
||||
LIBCUPS="lib$cupsbase.so.2"
|
||||
LIBCUPSCGI="libcupscgi.so.1"
|
||||
LIBCUPSIMAGE="libcupsimage.so.2"
|
||||
LIBCUPSMIME="libcupsmime.so.1"
|
||||
LIBCUPSPPDC="libcupsppdc.so.1"
|
||||
DSO="\$(CC)"
|
||||
DSOXX="\$(CXX)"
|
||||
DSOFLAGS="$DSOFLAGS -Wl,-h,\`basename \$@\` -G \$(OPTIM)"
|
||||
;;
|
||||
HP-UX*)
|
||||
case "$uarch" in
|
||||
ia64)
|
||||
LIBCUPS="lib$cupsbase.so.2"
|
||||
LIBCUPSCGI="libcupscgi.so.1"
|
||||
LIBCUPSIMAGE="libcupsimage.so.2"
|
||||
LIBCUPSMIME="libcupsmime.so.1"
|
||||
LIBCUPSPPDC="libcupsppdc.so.1"
|
||||
DSO="\$(CC)"
|
||||
DSOXX="\$(CXX)"
|
||||
DSOFLAGS="$DSOFLAGS -Wl,-b,-z,+h,\`basename \$@\`"
|
||||
;;
|
||||
*)
|
||||
LIBCUPS="lib$cupsbase.sl.2"
|
||||
LIBCUPSCGI="libcupscgi.sl.1"
|
||||
LIBCUPSIMAGE="libcupsimage.sl.2"
|
||||
LIBCUPSMIME="libcupsmime.sl.1"
|
||||
LIBCUPSPPDC="libcupsppdc.sl.1"
|
||||
DSO="\$(LD)"
|
||||
DSOXX="\$(LD)"
|
||||
DSOFLAGS="$DSOFLAGS -b -z +h \`basename \$@\`"
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
IRIX)
|
||||
LIBCUPS="lib$cupsbase.so.2"
|
||||
LIBCUPSCGI="libcupscgi.so.1"
|
||||
LIBCUPSIMAGE="libcupsimage.so.2"
|
||||
LIBCUPSMIME="libcupsmime.so.1"
|
||||
LIBCUPSPPDC="libcupsppdc.so.1"
|
||||
DSO="\$(CC)"
|
||||
DSOXX="\$(CXX)"
|
||||
DSOFLAGS="$DSOFLAGS -set_version,sgi2.6,-soname,\`basename \$@\` -shared \$(OPTIM)"
|
||||
;;
|
||||
OSF1* | Linux | GNU | *BSD*)
|
||||
linux* | gnu* | *bsd*)
|
||||
LIBCUPS="lib$cupsbase.so.2"
|
||||
LIBCUPSCGI="libcupscgi.so.1"
|
||||
LIBCUPSIMAGE="libcupsimage.so.2"
|
||||
@@ -88,7 +38,7 @@ if test x$enable_shared != xno; then
|
||||
DSOXX="\$(CXX)"
|
||||
DSOFLAGS="$DSOFLAGS -Wl,-soname,\`basename \$@\` -shared \$(OPTIM)"
|
||||
;;
|
||||
Darwin*)
|
||||
darwin*)
|
||||
LIBCUPS="lib$cupsbase.2.dylib"
|
||||
LIBCUPSCGI="libcupscgi.1.dylib"
|
||||
LIBCUPSIMAGE="libcupsimage.2.dylib"
|
||||
@@ -98,17 +48,6 @@ if test x$enable_shared != xno; then
|
||||
DSOXX="\$(CXX)"
|
||||
DSOFLAGS="$DSOFLAGS -dynamiclib -single_module -lc"
|
||||
;;
|
||||
AIX*)
|
||||
LIBCUPS="lib${cupsbase}_s.a"
|
||||
LIBCUPSBASE="${cupsbase}_s"
|
||||
LIBCUPSCGI="libcupscgi_s.a"
|
||||
LIBCUPSIMAGE="libcupsimage_s.a"
|
||||
LIBCUPSMIME="libcupsmime_s.a"
|
||||
LIBCUPSPPDC="libcupsppdc_s.a"
|
||||
DSO="\$(CC)"
|
||||
DSOXX="\$(CXX)"
|
||||
DSOFLAGS="$DSOFLAGS -Wl,-bexpall,-bM:SRE,-bnoentry,-blibpath:\$(libdir)"
|
||||
;;
|
||||
*)
|
||||
echo "Warning: shared libraries may not be supported. Trying -shared"
|
||||
echo " option with compiler."
|
||||
@@ -146,24 +85,16 @@ AC_SUBST(LIBCUPSSTATIC)
|
||||
|
||||
if test x$enable_shared = xno; then
|
||||
LINKCUPS="../cups/lib$cupsbase.a"
|
||||
LINKCUPSIMAGE="../filter/libcupsimage.a"
|
||||
LINKCUPSIMAGE="../cups/libcupsimage.a"
|
||||
|
||||
EXTLINKCUPS="-lcups"
|
||||
EXTLINKCUPSIMAGE="-lcupsimage"
|
||||
else
|
||||
if test $uname = AIX; then
|
||||
LINKCUPS="-l${cupsbase}_s"
|
||||
LINKCUPSIMAGE="-lcupsimage_s"
|
||||
LINKCUPS="-l${cupsbase}"
|
||||
LINKCUPSIMAGE="-lcupsimage"
|
||||
|
||||
EXTLINKCUPS="-lcups_s"
|
||||
EXTLINKCUPSIMAGE="-lcupsimage_s"
|
||||
else
|
||||
LINKCUPS="-l${cupsbase}"
|
||||
LINKCUPSIMAGE="-lcupsimage"
|
||||
|
||||
EXTLINKCUPS="-lcups"
|
||||
EXTLINKCUPSIMAGE="-lcupsimage"
|
||||
fi
|
||||
EXTLINKCUPS="-lcups"
|
||||
EXTLINKCUPSIMAGE="-lcupsimage"
|
||||
fi
|
||||
|
||||
AC_SUBST(EXTLINKCUPS)
|
||||
@@ -185,21 +116,8 @@ if test "$DSO" != ":"; then
|
||||
# Tell the run-time linkers where to find a DSO. Some platforms
|
||||
# need this option, even when the library is installed in a
|
||||
# standard location...
|
||||
case $uname in
|
||||
HP-UX*)
|
||||
# HP-UX needs the path, even for /usr/lib...
|
||||
case "$uarch" in
|
||||
ia64)
|
||||
DSOFLAGS="-Wl,+s,+b,$libdir $DSOFLAGS"
|
||||
;;
|
||||
*)
|
||||
DSOFLAGS="+s +b $libdir $DSOFLAGS"
|
||||
;;
|
||||
esac
|
||||
LDFLAGS="$LDFLAGS -Wl,+s,+b,$libdir"
|
||||
EXPORT_LDFLAGS="-Wl,+s,+b,$libdir"
|
||||
;;
|
||||
SunOS*)
|
||||
case $host_os_name in
|
||||
sunos*)
|
||||
# Solaris...
|
||||
if test $exec_prefix != /usr; then
|
||||
DSOFLAGS="-R$libdir $DSOFLAGS"
|
||||
@@ -207,7 +125,7 @@ if test "$DSO" != ":"; then
|
||||
EXPORT_LDFLAGS="-R$libdir"
|
||||
fi
|
||||
;;
|
||||
*BSD*)
|
||||
*bsd*)
|
||||
# *BSD...
|
||||
if test $exec_prefix != /usr; then
|
||||
DSOFLAGS="-Wl,-R$libdir $DSOFLAGS"
|
||||
@@ -215,7 +133,7 @@ if test "$DSO" != ":"; then
|
||||
EXPORT_LDFLAGS="-Wl,-R$libdir"
|
||||
fi
|
||||
;;
|
||||
Linux | GNU)
|
||||
linux* | gnu*)
|
||||
# Linux, and HURD...
|
||||
if test $exec_prefix != /usr; then
|
||||
DSOFLAGS="-Wl,-rpath,$libdir $DSOFLAGS"
|
||||
@@ -232,7 +150,3 @@ fi
|
||||
AC_SUBST(DSOLIBS)
|
||||
AC_SUBST(IMGLIBS)
|
||||
AC_SUBST(EXPORT_LDFLAGS)
|
||||
|
||||
dnl
|
||||
dnl End of "$Id: cups-sharedlibs.m4 7630 2008-06-09 22:31:44Z mike $".
|
||||
dnl
|
||||
|
||||
@@ -1,44 +1,30 @@
|
||||
dnl
|
||||
dnl "$Id: cups-ssl.m4 7241 2008-01-22 22:34:52Z mike $"
|
||||
dnl TLS stuff for CUPS.
|
||||
dnl
|
||||
dnl OpenSSL/GNUTLS stuff for CUPS.
|
||||
dnl Copyright 2007-2017 by Apple Inc.
|
||||
dnl Copyright 1997-2007 by Easy Software Products, all rights reserved.
|
||||
dnl
|
||||
dnl Copyright 2007-2012 by Apple Inc.
|
||||
dnl Copyright 1997-2007 by Easy Software Products, all rights reserved.
|
||||
dnl
|
||||
dnl These coded instructions, statements, and computer programs are the
|
||||
dnl property of Apple Inc. and are protected by Federal copyright
|
||||
dnl law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
dnl which should have been included with this file. If this file is
|
||||
dnl file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
dnl Licensed under Apache License v2.0. See the file "LICENSE" for more information.
|
||||
dnl
|
||||
|
||||
AC_ARG_ENABLE(ssl, [ --disable-ssl disable SSL/TLS support])
|
||||
AC_ARG_ENABLE(cdsassl, [ --enable-cdsassl use CDSA for SSL/TLS support, default=first])
|
||||
AC_ARG_ENABLE(gnutls, [ --enable-gnutls use GNU TLS for SSL/TLS support, default=second])
|
||||
AC_ARG_ENABLE(openssl, [ --enable-openssl use OpenSSL for SSL/TLS support, default=third])
|
||||
AC_ARG_WITH(openssl-libs, [ --with-openssl-libs set directory for OpenSSL library],
|
||||
LDFLAGS="-L$withval $LDFLAGS"
|
||||
DSOFLAGS="-L$withval $DSOFLAGS",)
|
||||
AC_ARG_WITH(openssl-includes, [ --with-openssl-includes set directory for OpenSSL includes],
|
||||
CFLAGS="-I$withval $CFLAGS"
|
||||
CPPFLAGS="-I$withval $CPPFLAGS",)
|
||||
|
||||
SSLFLAGS=""
|
||||
SSLLIBS=""
|
||||
have_ssl=0
|
||||
CUPS_SERVERCERT=""
|
||||
CUPS_SERVERKEY=""
|
||||
CUPS_SERVERKEYCHAIN=""
|
||||
|
||||
if test x$enable_ssl != xno; then
|
||||
dnl Look for CDSA...
|
||||
if test $have_ssl = 0 -a "x$enable_cdsassl" != "xno"; then
|
||||
if test $uname = Darwin; then
|
||||
if test $host_os_name = darwin; then
|
||||
AC_CHECK_HEADER(Security/SecureTransport.h, [
|
||||
have_ssl=1
|
||||
AC_DEFINE(HAVE_SSL)
|
||||
AC_DEFINE(HAVE_CDSASSL)
|
||||
CUPS_SERVERCERT="/Library/Keychains/System.keychain"
|
||||
CUPS_SERVERKEYCHAIN="/Library/Keychains/System.keychain"
|
||||
|
||||
dnl Check for the various security headers...
|
||||
AC_CHECK_HEADER(Security/SecureTransportPriv.h,
|
||||
@@ -59,14 +45,18 @@ if test x$enable_ssl != xno; then
|
||||
AC_CHECK_HEADER(Security/SecIdentitySearchPriv.h,
|
||||
AC_DEFINE(HAVE_SECIDENTITYSEARCHPRIV_H))
|
||||
|
||||
AC_DEFINE(HAVE_CSSMERRORSTRING)])
|
||||
AC_DEFINE(HAVE_CSSMERRORSTRING)
|
||||
AC_DEFINE(HAVE_SECKEYCHAINOPEN)])
|
||||
|
||||
if test $host_os_version -ge 150; then
|
||||
AC_DEFINE(HAVE_SSLSETENABLEDCIPHERS)
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
dnl Then look for GNU TLS...
|
||||
if test $have_ssl = 0 -a "x$enable_gnutls" != "xno" -a "x$PKGCONFIG" != x; then
|
||||
AC_PATH_PROG(LIBGNUTLSCONFIG,libgnutls-config)
|
||||
AC_PATH_PROG(LIBGCRYPTCONFIG,libgcrypt-config)
|
||||
AC_PATH_TOOL(LIBGNUTLSCONFIG,libgnutls-config)
|
||||
if $PKGCONFIG --exists gnutls; then
|
||||
have_ssl=1
|
||||
SSLLIBS=`$PKGCONFIG --libs gnutls`
|
||||
@@ -82,59 +72,14 @@ if test x$enable_ssl != xno; then
|
||||
fi
|
||||
|
||||
if test $have_ssl = 1; then
|
||||
CUPS_SERVERCERT="ssl/server.crt"
|
||||
CUPS_SERVERKEY="ssl/server.key"
|
||||
CUPS_SERVERKEYCHAIN="ssl"
|
||||
|
||||
if $PKGCONFIG --exists gcrypt; then
|
||||
SSLLIBS="$SSLLIBS `$PKGCONFIG --libs gcrypt`"
|
||||
SSLFLAGS="$SSLFLAGS `$PKGCONFIG --cflags gcrypt`"
|
||||
elif test "x$LIBGCRYPTCONFIG" != x; then
|
||||
SSLLIBS="$SSLLIBS `$LIBGCRYPTCONFIG --libs`"
|
||||
SSLFLAGS="$SSLFLAGS `$LIBGCRYPTCONFIG --cflags`"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
dnl Check for the OpenSSL library last...
|
||||
if test $have_ssl = 0 -a "x$enable_openssl" != "xno"; then
|
||||
AC_CHECK_HEADER(openssl/ssl.h,[
|
||||
dnl Save the current libraries so the crypto stuff isn't always
|
||||
dnl included...
|
||||
SAVELIBS="$LIBS"
|
||||
|
||||
dnl Some ELF systems can't resolve all the symbols in libcrypto
|
||||
dnl if libcrypto was linked against RSAREF, and fail to link the
|
||||
dnl test program correctly, even though a correct installation
|
||||
dnl of OpenSSL exists. So we test the linking three times in
|
||||
dnl case the RSAREF libraries are needed.
|
||||
|
||||
for libcrypto in \
|
||||
"-lcrypto" \
|
||||
"-lcrypto -lrsaref" \
|
||||
"-lcrypto -lRSAglue -lrsaref"
|
||||
do
|
||||
AC_CHECK_LIB(ssl,SSL_new,
|
||||
[have_ssl=1
|
||||
SSLFLAGS="-DOPENSSL_DISABLE_OLD_DES_SUPPORT"
|
||||
SSLLIBS="-lssl $libcrypto"
|
||||
AC_DEFINE(HAVE_SSL)
|
||||
AC_DEFINE(HAVE_LIBSSL)],,
|
||||
$libcrypto)
|
||||
|
||||
if test "x${SSLLIBS}" != "x"; then
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
if test "x${SSLLIBS}" != "x"; then
|
||||
CUPS_SERVERCERT="ssl/server.crt"
|
||||
CUPS_SERVERKEY="ssl/server.key"
|
||||
|
||||
LIBS="$SAVELIBS $SSLLIBS"
|
||||
AC_CHECK_FUNCS(SSL_set_tlsext_host_name)
|
||||
fi
|
||||
|
||||
LIBS="$SAVELIBS"])
|
||||
LIBS="$LIBS $SSLLIBS"
|
||||
AC_CHECK_FUNC(gnutls_transport_set_pull_timeout_function, AC_DEFINE(HAVE_GNUTLS_TRANSPORT_SET_PULL_TIMEOUT_FUNCTION))
|
||||
AC_CHECK_FUNC(gnutls_priority_set_direct, AC_DEFINE(HAVE_GNUTLS_PRIORITY_SET_DIRECT))
|
||||
LIBS="$SAVELIBS"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -143,19 +88,14 @@ if test $have_ssl = 1; then
|
||||
AC_MSG_RESULT([ Using SSLLIBS="$SSLLIBS"])
|
||||
AC_MSG_RESULT([ Using SSLFLAGS="$SSLFLAGS"])
|
||||
IPPALIASES="http https ipps"
|
||||
elif test x$enable_cdsa = xyes -o x$enable_gnutls = xyes -o x$enable_openssl = xyes; then
|
||||
elif test x$enable_cdsa = xyes -o x$enable_gnutls = xyes; then
|
||||
AC_MSG_ERROR([Unable to enable SSL support.])
|
||||
fi
|
||||
|
||||
AC_SUBST(CUPS_SERVERCERT)
|
||||
AC_SUBST(CUPS_SERVERKEY)
|
||||
AC_SUBST(CUPS_SERVERKEYCHAIN)
|
||||
AC_SUBST(IPPALIASES)
|
||||
AC_SUBST(SSLFLAGS)
|
||||
AC_SUBST(SSLLIBS)
|
||||
|
||||
EXPORT_SSLLIBS="$SSLLIBS"
|
||||
AC_SUBST(EXPORT_SSLLIBS)
|
||||
|
||||
dnl
|
||||
dnl End of "$Id: cups-ssl.m4 7241 2008-01-22 22:34:52Z mike $".
|
||||
dnl
|
||||
|
||||
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