Comparar commits

..

59 Commits

Autor SHA1 Mensagem Data
Michael R Sweet 84c97c051d Update VisualStudio Project 2018-03-22 23:48:36 -04:00
Michael R Sweet 5f67be43fa Changelog 2018-03-22 11:43:05 -04:00
Michael R Sweet b59756883a Update documentation. 2018-03-22 09:50:29 -04:00
Michael R Sweet 6daeebb5ac Fix test script to account for unpredictability of Test3 page counts. 2018-03-22 09:32:58 -04:00
Michael R Sweet 2bad6aac2f Changelog 2018-03-22 09:02:27 -04:00
Michael R Sweet 9d72065fa9 Try another fix for Avahi crash (Issue #5268) 2018-03-21 18:00:18 -04:00
Michael R Sweet 75d3f11945 Fix 'make check' script. 2018-03-19 18:51:36 -04:00
Michael R Sweet 6bebebe247 Cleanup man page updates. 2018-03-19 18:41:46 -04:00
Michael R Sweet 1d598e87db Changelog and localizations. 2018-03-19 18:36:48 -04:00
Michael R Sweet 3645e5efa7 Deprecate raw print queues. 2018-03-19 18:35:34 -04:00
Michael R Sweet e8953be355 Include cupsJobPassword keyword in generated PPDs (Issue #5265) 2018-03-19 13:18:28 -04:00
Michael R Sweet 782bcf6974 Fix _cupsCondWait again. 2018-03-14 18:06:52 -04:00
Michael R Sweet 3d7ece43ea Fix definition of IPP_DSTATE_ enums. 2018-03-12 21:58:11 -04:00
Michael R Sweet 290404655f Fix implementation of _cupsCondWait with timeout. 2018-03-12 21:56:51 -04:00
Michael R Sweet c59948f6fb Use setuid for Kerberized IPP printing (Issue #5233) 2018-03-12 21:51:47 -04:00
Michael R Sweet b237ae81d2 Fix printing to some IPP Everywhere printers (Issue #5238) 2018-03-12 21:48:04 -04:00
Michael R Sweet 82c4785a4c Fix systemd integration with cupsd (Issue #5263) 2018-03-12 13:33:45 -04:00
Michael R Sweet 9113651bca Fix the Windows export file. 2018-03-09 18:48:39 -05:00
Michael R Sweet 3034dcc946 Bump shared library version to account for new functions. 2018-03-09 18:47:34 -05:00
Michael R Sweet 2aee052bf5 Fix Kerberized IPP printing (Issue #5233) 2018-03-09 15:41:19 -05:00
Michael R Sweet 8e47ac0199 The scheduler could crash while adding an IPP Everywhere printer (Issue #5258) 2018-03-08 11:48:43 -05:00
Michael R Sweet 30c8d1abb2 Disable SNMP supplies for all label printers (Issue #5256) 2018-03-08 11:09:38 -05:00
Michael R Sweet 5e18690298 Add USB quirk rule for Lexmark Optra E310 printers (Issue #5259) 2018-03-08 11:04:56 -05:00
Michael R Sweet bec850697a Fix stray space/tab. 2018-03-07 09:32:04 -05:00
Michael R Sweet 4ffdbc48d8 Bump versions in config headers. 2018-03-07 09:14:57 -05:00
Michael R Sweet accd26d222 Temporary files are now placed in the correct directory for sandboxed
applications on macOS (rdar://problem/37789645)
2018-03-07 09:03:24 -05:00
Michael R Sweet 08b48df256 Update documentation for cupsHashString. 2018-03-07 08:57:12 -05:00
Michael R Sweet bb4172dade Fix crash bug in HTTP field handling - regression in the backported change for
Issue #4862.
2018-03-06 23:21:40 -05:00
Michael R Sweet afe94dff9d Remainder of patches for backporting 2.3 changes to 2.2.x (Issue #5255) 2018-03-06 23:18:26 -05:00
Michael R Sweet 1f71721001 Backport CUPS 2.3.x changes to 2.2.x (Issue #5255)
- Fixed a compile issue when PAM is not available (Issue #5253)
- Documentation fixes (Issue #5252)
- Star Micronics printers need the "unidir" USB quirk rule (Issue #5251)
- 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)
- The `cupsRasterWritePixels` function did not correctly swap bytes for some formats (Issue #5225)
- Added a USB quirk rule for Canon MP280 series printers (Issue #5221)
- The `ppdInstallableConflict` tested too many constraints (Issue #5213)
- More fixes for printing to old CUPS servers (Issue #5211)
- The `cupsCopyDest` function now correctly copies the `is_default` value (Issue #5208)
- The scheduler did not work with older versions of uClibc (Issue #5188)
- The scheduler now substitutes default values for invalid job attributes when running in "relaxed conformance" mode (Issue #5186)
- Fixed PAM module detection and added support for the common PAM definitions (Issue #5185)
- Fixed a journald support bug in the scheduler (Issue #5181)
- The cups-driverd program incorrectly stopped scanning PPDs as soon as a loop was seen (Issue #5170)
- Fixed group validation on OpenBSD (Issue #5166)
- Fixed the `ippserver` sample code when threading is disabled or unavailable (Issue #5154)
- The `cupsEnumDests` function did not include options from the lpoptions files (Issue #5144)
- The `SSLOptions` directive now supports `MinTLS` and `MaxTLS` options to control the minimum and maximum TLS versions that will be allowed, respectively (Issue #5119)
- The scheduler did not write out dirty configuration and state files if there were open client connections (Issue #5118)
- The `lpadmin` command now provides a better error message when an unsupported System V interface script is used (Issue #5111)
- The `lp` and `lpr` commands now provide better error messages when the default printer cannot be found (Issue #5096)
- No longer support backslash, question mark, or quotes in printer names (Issue #4966)
- The CUPS library now supports the latest HTTP Digest authentication specification including support for SHA-256 (Issue #4862)
- The `lpstat` command now reports when new jobs are being held (Issue #4761)
- The `lpoptions` command incorrectly saved default options (Issue #4717)
- The `ppdLocalizeIPPReason` function incorrectly returned a localized version of "none" (rdar://36566269)
- TLS connections now properly timeout (rdar://34938533)
- The IPP backend did not properly detect failed PDF prints (rdar://34055474)
2018-03-06 22:53:41 -05:00
Michael R Sweet 18a1649286 Need to look further down in CHANGES.md, fix messages to use .md suffix. 2017-11-01 10:59:53 -04:00
Michael R Sweet 58c3683023 Update version check to reflect new changelog title format. 2017-11-01 10:57:53 -04:00
Michael R Sweet 303be29243 Bump versions... 2017-11-01 10:56:47 -04:00
Michael R Sweet 275af5ac7b Update CUPS programming manual. 2017-11-01 10:51:16 -04:00
Michael R Sweet d821d89415 Revert change in cupsDoIORequest, which caused problems. 2017-11-01 10:22:12 -04:00
Michael R Sweet 6579c998c4 Fix handling of "yue" language. 2017-10-30 12:20:12 -04:00
Michael R Sweet 1377fb858c Merge pull request #5155 from DavieV/check-printer-first
Rearranging order of null checks in lpadmin
2017-10-30 12:04:06 -04:00
DavieV f9ee3b81e1 Rearranging order of null checks in lpadmin 2017-10-25 22:29:01 -07:00
Michael Sweet 7e50a735a8 Changelog. 2017-10-25 13:36:33 -04:00
Michael R Sweet 56b62a3b54 Merge pull request #5152 from michaelweghorn/michaelweghorn/add_missing_space_in_localization
Add missing space in German localization
2017-10-25 10:04:41 -04:00
Michael Weghorn 02773ede84 Add missing space in German localization 2017-10-25 15:03:23 +02:00
Michael Sweet ec9996719f Update fanfold sizes. 2017-10-23 17:48:40 -04:00
Michael Sweet affaf0737f Update message catalogs. 2017-10-23 17:29:15 -04:00
Michael Sweet 49fa4983f2 DBUS notifications could crash the scheduler (Issue #5143)
- scheduler/ipp.c: Make sure requesting-user-name string is valid UTF-8.
2017-10-23 16:23:43 -04:00
Michael R Sweet 34be0e8038 Merge pull request #5150 from hardfalcon/master
Fix AllowRC4 and AllowSSL3 on GnuTLS platforms
2017-10-23 16:07:45 -04:00
Pascal Ernster ce0d9679a4 Fix indention 2017-10-22 23:33:07 +02:00
Pascal Ernster fad821594f Fix AllowRC4 and AllowSSL3 on GnuTLS platforms 2017-10-22 22:34:42 +02:00
Pascal Ernster f8913c6d2c Merge branch 'master' of https://github.com/apple/cups 2017-10-22 22:13:10 +02:00
Pascal Ernster a75c0e5961 Revert "Clean up implementation for SSLOptions"
This reverts commit c61b78bd84.
2017-10-22 22:12:51 +02:00
Pascal Ernster 5ee613bbc6 Revert "Changed AllowDH to no-op on gnutls platforms, explicitly disabled ANON-DH and ANON-ECDH ciphersuites on gnutls"
This reverts commit 46a7b416ee.
2017-10-22 22:12:18 +02:00
Michael Sweet 02c88e673e Fix cipher suite selection with GNU TLS (Issue #5145)
Also make sure that client.conf SSLOptions do not override cupsd.conf
SSLOptions, and document the (hopefully obvious) fact that Allow* is less
secure and Deny* is more secure.

- cups/http-private.h: Add "_HTTP_TLS_SET_DEFAULT" flag for options set from
  client.conf.
- cups/tls-*.c: Use new flag.
- cups/tls-gnutls.c: Fix CBC cipher suite exclusion logic, and always disable
  anonymous DH.
- cups/usersys.c: Pass new flag when calling _httpTLSSetOptions.
- man/*: Update documentation.
2017-10-19 22:44:12 -04:00
Pascal Ernster 46a7b416ee Changed AllowDH to no-op on gnutls platforms, explicitly disabled ANON-DH and ANON-ECDH ciphersuites on gnutls 2017-10-20 03:23:01 +02:00
Pascal Ernster c61b78bd84 Clean up implementation for SSLOptions 2017-10-20 00:37:43 +02:00
Michael R Sweet 0ae5b012b2 Merge pull request #5146 from DavieV/fix-ifs
Remove unnecessary nesting in if statements.
2017-10-19 10:52:59 -04:00
Michael Sweet 15bba96c30 Update configure script. 2017-10-19 10:52:21 -04:00
Michael Sweet bea3713442 Changelog and bump CUPS version. 2017-10-19 10:52:21 -04:00
Michael R Sweet 5639a7b41c Merge pull request #5148 from zdohnal/quirks
add usb quirks for canon mp540 and Samsung ML-2160 Series
2017-10-19 10:49:48 -04:00
Zdenek Dohnal 360e815a88 add usb quirks for canon mp540 and Samsung ML-2160 Series 2017-10-17 18:28:39 +02:00
DavieV c00282bb43 Remove unnecessary nesting in if statements. 2017-10-16 14:24:13 -07:00
96 arquivos alterados com 5117 adições e 2923 exclusões
+85 -10
Ver Arquivo
@@ -1,7 +1,82 @@
CHANGES - 2.2.5 - 2017-10-12
CHANGES - 2.2.7 - 2018-03-22
============================
CHANGES IN CUPS V2.2.5
Changes in CUPS v2.2.7
----------------------
- NOTICE: Raw print queues are now deprecated (Issue #5269)
- Fixed an Avahi crash bug in the scheduler (Issue #5268)
- The IPP Everywhere PPD generator did not include the `cupsJobPassword`
keyword, when supported (Issue #5265)
- Systemd did not restart cupsd when configuration changes were made that
required a restart (Issue #5263)
- The Lexmark Optra E310 printer needs the "no-reattach" USB quirk rule
(Issue #5259)
- The scheduler could crash while adding an IPP Everywhere printer (Issue #5258)
- Label printers supported by the rastertolabel driver don't support SNMP, so
don't delay printing to test it (Issue #5256)
- Fixed a compile issue when PAM is not available (Issue #5253)
- Documentation fixes (Issue #5252)
- Star Micronics printers need the "unidir" USB quirk rule (Issue #5251)
- 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)
- Fixed printing to some IPP Everywhere printers (Issue #5238)
- Kerberized printing to another CUPS server did not work correctly
(Issue #5233)
- The `cupsRasterWritePixels` function did not correctly swap bytes for some
formats (Issue #5225)
- Added a USB quirk rule for Canon MP280 series printers (Issue #5221)
- The `ppdInstallableConflict` tested too many constraints (Issue #5213)
- More fixes for printing to old CUPS servers (Issue #5211)
- The `cupsCopyDest` function now correctly copies the `is_default` value
(Issue #5208)
- The scheduler did not work with older versions of uClibc (Issue #5188)
- The scheduler now substitutes default values for invalid job attributes when
running in "relaxed conformance" mode (Issue #5186)
- Fixed PAM module detection and added support for the common PAM definitions
(Issue #5185)
- Fixed a journald support bug in the scheduler (Issue #5181)
- The cups-driverd program incorrectly stopped scanning PPDs as soon as a loop
was seen (Issue #5170)
- Fixed group validation on OpenBSD (Issue #5166)
- Fixed the `ippserver` sample code when threading is disabled or unavailable
(Issue #5154)
- The `cupsEnumDests` function did not include options from the lpoptions files
(Issue #5144)
- The `SSLOptions` directive now supports `MinTLS` and `MaxTLS` options to
control the minimum and maximum TLS versions that will be allowed,
respectively (Issue #5119)
- The scheduler did not write out dirty configuration and state files if there
were open client connections (Issue #5118)
- The `lpadmin` command now provides a better error message when an unsupported
System V interface script is used (Issue #5111)
- The `lp` and `lpr` commands now provide better error messages when the default
printer cannot be found (Issue #5096)
- No longer support backslash, question mark, or quotes in printer names
(Issue #4966)
- The CUPS library now supports the latest HTTP Digest authentication
specification including support for SHA-256 (Issue #4862)
- The `lpstat` command now reports when new jobs are being held (Issue #4761)
- The `lpoptions` command incorrectly saved default options (Issue #4717)
- The `ppdLocalizeIPPReason` function incorrectly returned a localized version
of "none" (rdar://36566269)
- TLS connections now properly timeout (rdar://34938533)
- The IPP backend did not properly detect failed PDF prints (rdar://34055474)
- Temporary files are now placed in the correct directory for sandboxed
applications on macOS (rdar://problem/37789645)
Changes in CUPS v2.2.6
----------------------
- DBUS notifications could crash the scheduler (Issue #5143)
- Added USB quirks rules for Canon MP540 and Samsung ML-2160 (Issue #5148)
- Fixed TLS cipher suite selection with GNU TLS (Issue #5145, Issue #5150)
- Localization updates (Issue #5152)
Changes in CUPS v2.2.5
----------------------
- The scheduler's `-t` option did not force all errors to the standard error
@@ -73,7 +148,7 @@ CHANGES IN CUPS V2.2.5
WITH-SCHEME predicates.
CHANGES IN CUPS V2.2.4
Changes in CUPS v2.2.4
----------------------
- The scheduler did not remove old job files (Issue #4987)
@@ -111,7 +186,7 @@ CHANGES IN CUPS V2.2.4
`DenyCBC` and `DenyTLS1.0` options (Issue #5037)
CHANGES IN CUPS V2.2.3
Changes in CUPS v2.2.3
----------------------
- The IPP backend could get into an infinite loop for certain errors, causing a
@@ -139,7 +214,7 @@ CHANGES IN CUPS V2.2.3
- Fixed some localization issues on macOS (<rdar://problem/27245567>)
CHANGES IN CUPS V2.2.2
Changes in CUPS v2.2.2
----------------------
- Fixed some issues with the Zebra ZPL printer driver (Issue #4898)
@@ -169,7 +244,7 @@ CHANGES IN CUPS V2.2.2
- Updated packaging files (Issue #4940)
CHANGES IN CUPS V2.2.1
Changes in CUPS v2.2.1
----------------------
- Added "CreateSelfSignedCerts" directive for cups-files.conf to control whether
@@ -183,7 +258,7 @@ CHANGES IN CUPS V2.2.1
- Updated localizations (PR #4877, PR #4886)
CHANGES IN CUPS V2.2.0
Changes in CUPS v2.2.0
----------------------
- Normalized the TLS certificate validation code and added additional error
@@ -194,7 +269,7 @@ CHANGES IN CUPS V2.2.0
- http*Connect did not return early when all addresses failed (Issue #4870)
CHANGES IN CUPS V2.2rc1
Changes in CUPS v2.2rc1
-----------------------
- Updated the list of supported IPP Everywhere media types.
@@ -207,14 +282,14 @@ CHANGES IN CUPS V2.2rc1
- Updated localizations (Issue #4846, PR #4858)
CHANGES IN CUPS V2.2b2
Changes in CUPS v2.2b2
----------------------
- Added Upstart support (PR #4825)
- CUPS now supports Let's Encrypt certificates on Linux.
CHANGES IN CUPS V2.2b1
Changes in CUPS v2.2b1
----------------------
- All CUPS commands now support POSIX options (Issue #4813)
+1 -1
Ver Arquivo
@@ -1,4 +1,4 @@
INSTALL - CUPS v2.2.5 - 2017-10-12
INSTALL - CUPS v2.2.7 - 2018-03-22
==================================
This file describes how to compile and install CUPS from source code. For more
+2 -2
Ver Arquivo
@@ -1,4 +1,4 @@
README - CUPS v2.2.5 - 2017-10-12
README - CUPS v2.2.7 - 2018-03-22
=================================
Looking for compile instructions? Read the file `INSTALL.md` instead...
@@ -148,7 +148,7 @@ This will prevent the filters from misinterpreting your print file.
LEGAL STUFF
-----------
CUPS is copyright © 2007-2017 by Apple Inc. CUPS and the CUPS logo are
CUPS is copyright © 2007-2018 by Apple Inc. CUPS and the CUPS logo are
trademarks of Apple Inc.
The MD5 Digest code is Copyright 1999 Aladdin Enterprises.
+34 -9
Ver Arquivo
@@ -47,6 +47,8 @@ extern void xpc_connection_set_target_uid(xpc_connection_t connection,
#define _CUPS_JSR_ACCOUNT_LIMIT_REACHED 0x08
#define _CUPS_JSR_JOB_PASSWORD_WAIT 0x10
#define _CUPS_JSR_JOB_RELEASE_WAIT 0x20
#define _CUPS_JSR_DOCUMENT_FORMAT_ERROR 0x40
#define _CUPS_JSR_DOCUMENT_UNPRINTABLE 0x80
/*
@@ -69,6 +71,7 @@ typedef struct _cups_monitor_s /**** Monitoring data ****/
http_encryption_t encryption; /* Use encryption? */
ipp_jstate_t job_state; /* Current job state */
ipp_pstate_t printer_state; /* Current printer state */
int retryable; /* Is this a job that should be retried? */
} _cups_monitor_t;
@@ -357,8 +360,7 @@ main(int argc, /* I - Number of command-line args */
* that way.
*/
if (!getuid() && (value = getenv("AUTH_UID")) != NULL &&
!getenv("AUTH_PASSWORD"))
if (!getuid() && (value = getenv("AUTH_UID")) != NULL)
{
uid_t uid = (uid_t)atoi(value);
/* User ID */
@@ -392,7 +394,7 @@ main(int argc, /* I - Number of command-line args */
# else /* No XPC, just try to run as the user ID */
if (uid > 0)
seteuid(uid);
setuid(uid);
# endif /* HAVE_XPC */
}
#endif /* HAVE_GSSAPI */
@@ -1448,6 +1450,7 @@ main(int argc, /* I - Number of command-line args */
monitor.encryption = cupsEncryption();
monitor.job_state = IPP_JOB_PENDING;
monitor.printer_state = IPP_PRINTER_IDLE;
monitor.retryable = argc == 6 && document_format && strcmp(document_format, "image/pwg-raster") && strcmp(document_format, "image/urf");
if (create_job)
{
@@ -2568,22 +2571,24 @@ monitor_printer(
for (i = 0; i < attr->num_values; i ++)
{
if (!strcmp(attr->values[i].string.text,
"account-authorization-failed"))
if (!strcmp(attr->values[i].string.text, "account-authorization-failed"))
new_reasons |= _CUPS_JSR_ACCOUNT_AUTHORIZATION_FAILED;
else if (!strcmp(attr->values[i].string.text, "account-closed"))
new_reasons |= _CUPS_JSR_ACCOUNT_CLOSED;
else if (!strcmp(attr->values[i].string.text, "account-info-needed"))
new_reasons |= _CUPS_JSR_ACCOUNT_INFO_NEEDED;
else if (!strcmp(attr->values[i].string.text,
"account-limit-reached"))
else if (!strcmp(attr->values[i].string.text, "account-limit-reached"))
new_reasons |= _CUPS_JSR_ACCOUNT_LIMIT_REACHED;
else if (!strcmp(attr->values[i].string.text, "job-password-wait"))
new_reasons |= _CUPS_JSR_JOB_PASSWORD_WAIT;
else if (!strcmp(attr->values[i].string.text, "job-release-wait"))
new_reasons |= _CUPS_JSR_JOB_RELEASE_WAIT;
if (!job_canceled &&
(!strncmp(attr->values[i].string.text, "job-canceled-", 13) || !strcmp(attr->values[i].string.text, "aborted-by-system")))
else if (!strcmp(attr->values[i].string.text, "document-format-error"))
new_reasons |= _CUPS_JSR_DOCUMENT_FORMAT_ERROR;
else if (!strcmp(attr->values[i].string.text, "document-unprintable"))
new_reasons |= _CUPS_JSR_DOCUMENT_UNPRINTABLE;
if (!job_canceled && (!strncmp(attr->values[i].string.text, "job-canceled-", 13) || !strcmp(attr->values[i].string.text, "aborted-by-system")))
job_canceled = 1;
}
@@ -2601,6 +2606,26 @@ monitor_printer(
fputs("JOBSTATE: job-password-wait\n", stderr);
else if (new_reasons & _CUPS_JSR_JOB_RELEASE_WAIT)
fputs("JOBSTATE: job-release-wait\n", stderr);
else if (new_reasons & (_CUPS_JSR_DOCUMENT_FORMAT_ERROR | _CUPS_JSR_DOCUMENT_UNPRINTABLE))
{
if (monitor->retryable)
{
/*
* Can't print this, so retry as raster...
*/
job_canceled = 1;
fputs("JOBSTATE: cups-retry-as-raster\n", stderr);
}
else if (new_reasons & _CUPS_JSR_DOCUMENT_FORMAT_ERROR)
{
fputs("JOBSTATE: document-format-error\n", stderr);
}
else
{
fputs("JOBSTATE: document-unprintable\n", stderr);
}
}
else
fputs("JOBSTATE: job-printing\n", stderr);
+23 -1
Ver Arquivo
@@ -8,10 +8,17 @@
# 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
@@ -76,6 +83,9 @@
# Canon, Inc. MP510 Printer (https://bugs.launchpad.net/bugs/1050009)
0x04a9 0x1717 unidir
# Canon, Inc. MP540 Printer, https://bugzilla.redhat.com/967873
0x04a9 0x1730 unidir
# Canon, Inc. MP550 Printer (Issue #4155)
0x04a9 0x173d unidir
@@ -127,6 +137,9 @@
# All Samsung devices (https://bugs.launchpad.net/bugs/1032456)
0x04e8 soft-reset
# 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
@@ -259,3 +272,12 @@
# 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
+4 -28
Ver Arquivo
@@ -32,8 +32,7 @@ main(int argc, /* I - Number of command-line arguments */
char *printer, /* Destination printer or class */
*instance, /* Instance */
*opt; /* Option pointer */
const char *title, /* Job title */
*val; /* Environment variable name */
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 */
@@ -345,33 +344,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);
}
+2 -6
Ver Arquivo
@@ -18,7 +18,6 @@
/*#define DEBUG*/
#include "cgi-private.h"
#include <cups/http.h>
#include <cups/md5-private.h>
/*
@@ -1204,7 +1203,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 */
@@ -1225,11 +1223,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));
}
externo
+10 -10
Ver Arquivo
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.69 for CUPS 2.2.5.
# Generated by GNU Autoconf 2.69 for CUPS 2.2.7.
#
# Report bugs to <https://github.com/apple/cups/issues>.
#
@@ -580,8 +580,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='CUPS'
PACKAGE_TARNAME='cups'
PACKAGE_VERSION='2.2.5'
PACKAGE_STRING='CUPS 2.2.5'
PACKAGE_VERSION='2.2.7'
PACKAGE_STRING='CUPS 2.2.7'
PACKAGE_BUGREPORT='https://github.com/apple/cups/issues'
PACKAGE_URL='https://www.cups.org/'
@@ -1482,7 +1482,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
\`configure' configures CUPS 2.2.5 to adapt to many kinds of systems.
\`configure' configures CUPS 2.2.7 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1547,7 +1547,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
short | recursive ) echo "Configuration of CUPS 2.2.5:";;
short | recursive ) echo "Configuration of CUPS 2.2.7:";;
esac
cat <<\_ACEOF
@@ -1728,7 +1728,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
CUPS configure 2.2.5
CUPS configure 2.2.7
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2192,7 +2192,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by CUPS $as_me 2.2.5, which was
It was created by CUPS $as_me 2.2.7, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -2667,7 +2667,7 @@ fi
ac_config_headers="$ac_config_headers config.h"
CUPS_VERSION="2.2.5"
CUPS_VERSION="2.2.7"
CUPS_REVISION=""
CUPS_BUILD="cups-$CUPS_VERSION"
@@ -10901,7 +10901,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
This file was extended by CUPS $as_me 2.2.5, which was
This file was extended by CUPS $as_me 2.2.7, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -10964,7 +10964,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
CUPS config.status 2.2.5
CUPS config.status 2.2.7
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
+2 -2
Ver Arquivo
@@ -1,7 +1,7 @@
dnl
dnl Configuration script for CUPS.
dnl
dnl Copyright 2007-2017 by Apple Inc.
dnl Copyright 2007-2018 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
@@ -15,7 +15,7 @@ dnl We need at least autoconf 2.60...
AC_PREREQ(2.60)
dnl Package name and version...
AC_INIT([CUPS], [2.2.5], [https://github.com/apple/cups/issues], [cups], [https://www.cups.org/])
AC_INIT([CUPS], [2.2.7], [https://github.com/apple/cups/issues], [cups], [https://www.cups.org/])
sinclude(config-scripts/cups-opsys.m4)
sinclude(config-scripts/cups-common.m4)
+5 -5
Ver Arquivo
@@ -1,8 +1,8 @@
#
# Library Makefile for CUPS.
#
# Copyright 2007-2017 by Apple Inc.
# Copyright 1997-2006 by Easy Software Products, all rights reserved.
# Copyright © 2007-2018 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
@@ -331,7 +331,7 @@ libcups.2.dylib: $(LIBOBJS) $(LIBCUPSORDER)
echo Linking $@...
$(DSO) $(ARCHFLAGS) $(DSOFLAGS) -o $@ \
-install_name $(libdir)/$@ \
-current_version 2.12.0 \
-current_version 2.13.0 \
-compatibility_version 2.0.0 \
-exported_symbols_list t.exp \
$(LIBOBJS) $(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) \
@@ -347,7 +347,7 @@ libcups.2.dylib: $(LIBOBJS) $(LIBCUPSORDER)
libcups.la: $(LIBOBJS)
echo Linking $@...
$(LD_CC) $(ARCHFLAGS) $(DSOFLAGS) -o $@ $(LIBOBJS:.o=.lo) \
-rpath $(LIBDIR) -version-info 2:12 $(LIBGSSAPI) $(SSLLIBS) \
-rpath $(LIBDIR) -version-info 2:13 $(LIBGSSAPI) $(SSLLIBS) \
$(DNSSDLIBS) $(COMMONLIBS) $(LIBZ)
@@ -369,7 +369,7 @@ libcups.a: $(LIBOBJS)
libcups2.def: $(LIBOBJS) Makefile
echo Generating $@...
echo "LIBRARY libcups2" >libcups2.def
echo "VERSION 2.12" >>libcups2.def
echo "VERSION 2.13" >>libcups2.def
echo "EXPORTS" >>libcups2.def
(nm $(LIBOBJS) 2>/dev/null | grep "T _" | awk '{print $$3}'; \
echo __cups_strcpy; echo __cups_strlcat; echo __cups_strlcpy) | \
+489 -136
Ver Arquivo
@@ -47,6 +47,10 @@ extern const char *cssmErrorString(int error);
* Local functions...
*/
static const char *cups_auth_find(const char *www_authenticate, const char *scheme);
static const char *cups_auth_param(const char *scheme, const char *name, char *value, size_t valsize);
static const char *cups_auth_scheme(const char *www_authenticate, char *scheme, size_t schemesize);
#ifdef HAVE_GSSAPI
# ifdef HAVE_GSS_ACQUIRE_CRED_EX_F
# ifdef HAVE_GSS_GSSAPI_SPI_H
@@ -112,8 +116,10 @@ cupsDoAuthentication(
const char *resource) /* I - Resource path */
{
const char *password, /* Password string */
*www_auth; /* WWW-Authenticate header */
char prompt[1024], /* Prompt for user */
*www_auth, /* WWW-Authenticate header */
*schemedata; /* Scheme-specific data */
char scheme[256], /* Scheme name */
prompt[1024], /* Prompt for user */
realm[HTTP_MAX_VALUE], /* realm="xyz" string */
nonce[HTTP_MAX_VALUE]; /* nonce="xyz" string */
int localauth; /* Local authentication result */
@@ -163,122 +169,237 @@ cupsDoAuthentication(
}
/*
* Nope, see if we should retry the current username:password...
* Nope, loop through the authentication schemes to find the first we support.
*/
www_auth = http->fields[HTTP_FIELD_WWW_AUTHENTICATE];
www_auth = httpGetField(http, HTTP_FIELD_WWW_AUTHENTICATE);
if ((http->digest_tries > 1 || !http->userpass[0]) &&
(!_cups_strncasecmp(www_auth, "Basic", 5) ||
!_cups_strncasecmp(www_auth, "Digest", 6)))
for (schemedata = cups_auth_scheme(www_auth, scheme, sizeof(scheme)); schemedata; schemedata = cups_auth_scheme(schemedata + strlen(scheme), scheme, sizeof(scheme)))
{
/*
* Nope - get a new password from the user...
* Check the scheme name...
*/
char default_username[HTTP_MAX_VALUE];
/* Default username */
cg = _cupsGlobals();
if (!cg->lang_default)
cg->lang_default = cupsLangDefault();
if (httpGetSubField(http, HTTP_FIELD_WWW_AUTHENTICATE, "username",
default_username))
cupsSetUser(default_username);
snprintf(prompt, sizeof(prompt),
_cupsLangString(cg->lang_default, _("Password for %s on %s? ")),
cupsUser(),
http->hostname[0] == '/' ? "localhost" : http->hostname);
http->digest_tries = _cups_strncasecmp(www_auth, "Digest", 6) != 0;
http->userpass[0] = '\0';
if ((password = cupsGetPassword2(prompt, http, method, resource)) == NULL)
{
http->status = HTTP_STATUS_CUPS_AUTHORIZATION_CANCELED;
return (-1);
}
snprintf(http->userpass, sizeof(http->userpass), "%s:%s", cupsUser(),
password);
}
else if (http->status == HTTP_STATUS_UNAUTHORIZED)
http->digest_tries ++;
if (http->status == HTTP_STATUS_UNAUTHORIZED && http->digest_tries >= 3)
{
DEBUG_printf(("1cupsDoAuthentication: Too many authentication tries (%d)",
http->digest_tries));
http->status = HTTP_STATUS_CUPS_AUTHORIZATION_CANCELED;
return (-1);
}
/*
* Got a password; encode it for the server...
*/
#ifdef HAVE_GSSAPI
if (!_cups_strncasecmp(www_auth, "Negotiate", 9))
{
if (!_cups_strcasecmp(scheme, "Negotiate"))
{
/*
* Kerberos authentication...
*/
if (_cupsSetNegotiateAuthString(http, method, resource))
{
http->status = HTTP_STATUS_CUPS_AUTHORIZATION_CANCELED;
return (-1);
}
break;
}
else
#endif /* HAVE_GSSAPI */
if (_cups_strcasecmp(scheme, "Basic") && _cups_strcasecmp(scheme, "Digest"))
continue; /* Not supported (yet) */
/*
* Kerberos authentication...
* See if we should retry the current username:password...
*/
if (_cupsSetNegotiateAuthString(http, method, resource))
if ((http->digest_tries > 1 || !http->userpass[0]) && (!_cups_strcasecmp(scheme, "Basic") || (!_cups_strcasecmp(scheme, "Digest"))))
{
/*
* Nope - get a new password from the user...
*/
char default_username[HTTP_MAX_VALUE];
/* Default username */
cg = _cupsGlobals();
if (!cg->lang_default)
cg->lang_default = cupsLangDefault();
if (cups_auth_param(scheme, "username", default_username, sizeof(default_username)))
cupsSetUser(default_username);
snprintf(prompt, sizeof(prompt), _cupsLangString(cg->lang_default, _("Password for %s on %s? ")), cupsUser(), http->hostname[0] == '/' ? "localhost" : http->hostname);
http->digest_tries = _cups_strncasecmp(scheme, "Digest", 6) != 0;
http->userpass[0] = '\0';
if ((password = cupsGetPassword2(prompt, http, method, resource)) == NULL)
{
http->status = HTTP_STATUS_CUPS_AUTHORIZATION_CANCELED;
return (-1);
}
snprintf(http->userpass, sizeof(http->userpass), "%s:%s", cupsUser(), password);
}
else if (http->status == HTTP_STATUS_UNAUTHORIZED)
http->digest_tries ++;
if (http->status == HTTP_STATUS_UNAUTHORIZED && http->digest_tries >= 3)
{
DEBUG_printf(("1cupsDoAuthentication: Too many authentication tries (%d)", http->digest_tries));
http->status = HTTP_STATUS_CUPS_AUTHORIZATION_CANCELED;
return (-1);
}
}
else
#endif /* HAVE_GSSAPI */
if (!_cups_strncasecmp(www_auth, "Basic", 5))
{
/*
* Basic authentication...
* Got a password; encode it for the server...
*/
char encode[256]; /* Base64 buffer */
if (!_cups_strcasecmp(scheme, "Basic"))
{
/*
* Basic authentication...
*/
char encode[256]; /* Base64 buffer */
httpEncode64_2(encode, sizeof(encode), http->userpass,
(int)strlen(http->userpass));
httpSetAuthString(http, "Basic", encode);
httpEncode64_2(encode, sizeof(encode), http->userpass, (int)strlen(http->userpass));
httpSetAuthString(http, "Basic", encode);
}
else if (!_cups_strcasecmp(scheme, "Digest"))
{
/*
* Digest authentication...
*/
int i; /* Looping var */
char algorithm[65], /* Hashing algorithm */
opaque[HTTP_MAX_VALUE],
/* Opaque data from server */
cnonce[65], /* cnonce value */
kd[65], /* Final MD5/SHA-256 digest */
ha1[65], /* Hash of username:realm:password */
ha2[65], /* Hash of method:request-uri */
hdata[65], /* Hash of auth data */
temp[1024], /* Temporary string */
digest[1024]; /* Digest auth data */
unsigned char hash[32]; /* Hash buffer */
const char *hashalg; /* Hashing algorithm */
size_t hashsize; /* Size of hash */
if (strcmp(nonce, http->nonce))
{
strlcpy(http->nonce, nonce, sizeof(http->nonce));
http->nonce_count = 1;
}
else
http->nonce_count ++;
cups_auth_param(schemedata, "opaque", opaque, sizeof(opaque));
cups_auth_param(schemedata, "nonce", nonce, sizeof(nonce));
cups_auth_param(schemedata, "realm", realm, sizeof(realm));
for (i = 0; i < 64; i ++)
cnonce[i] = "0123456789ABCDEF"[CUPS_RAND() & 15];
cnonce[64] = '\0';
if (cups_auth_param(schemedata, "algorithm", algorithm, sizeof(algorithm)))
{
/*
* Follow RFC 2617/7616...
*/
if (!_cups_strcasecmp(algorithm, "MD5"))
{
/*
* RFC 2617 Digest with MD5
*/
hashalg = "md5";
}
else if (!_cups_strcasecmp(algorithm, "SHA-256"))
{
/*
* RFC 7616 Digest with SHA-256
*/
hashalg = "sha2-256";
}
else
{
/*
* Some other algorithm we don't support, skip this one...
*/
continue;
}
/*
* Calculate digest value...
*/
/* H(A1) = H(username:realm:password) */
snprintf(temp, sizeof(temp), "%s:%s:%s", cupsUser(), realm, strchr(http->userpass, ':') + 1);
hashsize = (size_t)cupsHashData(hashalg, (unsigned char *)temp, strlen(temp), hash, sizeof(hash));
cupsHashString(hash, hashsize, ha1, sizeof(ha1));
/* H(A2) = H(method:uri) */
snprintf(temp, sizeof(temp), "%s:%s", method, resource);
hashsize = (size_t)cupsHashData(hashalg, (unsigned char *)temp, strlen(temp), hash, sizeof(hash));
cupsHashString(hash, hashsize, ha2, sizeof(ha2));
/* H(data) = H(nonce:nc:cnonce:qop:H(A2)) */
snprintf(temp, sizeof(temp), "%s:%08x:%s:auth:%s", nonce, http->nonce_count, cnonce, ha2);
hashsize = (size_t)cupsHashData(hashalg, (unsigned char *)temp, strlen(temp), hash, sizeof(hash));
cupsHashString(hash, hashsize, hdata, sizeof(hdata));
/* KD = H(H(A1):H(data)) */
snprintf(temp, sizeof(temp), "%s:%s", ha1, hdata);
hashsize = (size_t)cupsHashData(hashalg, (unsigned char *)temp, strlen(temp), hash, sizeof(hash));
cupsHashString(hash, hashsize, kd, sizeof(kd));
/* Pass the RFC 2617/7616 WWW-Authenticate header */
if (opaque[0])
snprintf(digest, sizeof(digest), "username=\"%s\", realm=\"%s\", nonce=\"%s\", algorithm=%s, qop=auth, opaque=\"%s\", cnonce=\"%s\", nc=%08x, uri=\"%s\", response=\"%s\"", cupsUser(), realm, nonce, algorithm, opaque, cnonce, http->nonce_count, resource, kd);
else
snprintf(digest, sizeof(digest), "username=\"%s\", realm=\"%s\", nonce=\"%s\", algorithm=%s, qop=auth, cnonce=\"%s\", nc=%08x, uri=\"%s\", response=\"%s\"", cupsUser(), realm, nonce, algorithm, cnonce, http->nonce_count, resource, kd);
}
else
{
/*
* Use old RFC 2069 Digest method...
*/
/* H(A1) = H(username:realm:password) */
snprintf(temp, sizeof(temp), "%s:%s:%s", cupsUser(), realm, strchr(http->userpass, ':') + 1);
hashsize = (size_t)cupsHashData("md5", (unsigned char *)temp, strlen(temp), hash, sizeof(hash));
cupsHashString(hash, hashsize, ha1, sizeof(ha1));
/* H(A2) = H(method:uri) */
snprintf(temp, sizeof(temp), "%s:%s", method, resource);
hashsize = (size_t)cupsHashData("md5", (unsigned char *)temp, strlen(temp), hash, sizeof(hash));
cupsHashString(hash, hashsize, ha2, sizeof(ha2));
/* KD = H(H(A1):nonce:H(A2)) */
snprintf(temp, sizeof(temp), "%s:%s:%s", ha1, nonce, ha2);
hashsize = (size_t)cupsHashData("md5", (unsigned char *)temp, strlen(temp), hash, sizeof(hash));
cupsHashString(hash, hashsize, kd, sizeof(kd));
/* Pass the RFC 2069 WWW-Authenticate header */
snprintf(digest, sizeof(digest), "username=\"%s\", realm=\"%s\", nonce=\"%s\", uri=\"%s\", response=\"%s\"", cupsUser(), realm, nonce, resource, kd);
}
httpSetAuthString(http, "Digest", digest);
}
}
else if (!_cups_strncasecmp(www_auth, "Digest", 6))
if (http->authstring)
{
/*
* Digest authentication...
*/
DEBUG_printf(("1cupsDoAuthentication: authstring=\"%s\"", http->authstring));
char encode[33], /* MD5 buffer */
digest[1024]; /* Digest auth data */
httpGetSubField(http, HTTP_FIELD_WWW_AUTHENTICATE, "realm", realm);
httpGetSubField(http, HTTP_FIELD_WWW_AUTHENTICATE, "nonce", nonce);
httpMD5(cupsUser(), realm, strchr(http->userpass, ':') + 1, encode);
httpMD5Final(nonce, method, resource, encode);
snprintf(digest, sizeof(digest),
"username=\"%s\", realm=\"%s\", nonce=\"%s\", uri=\"%s\", "
"response=\"%s\"", cupsUser(), realm, nonce, resource, encode);
httpSetAuthString(http, "Digest", digest);
return (0);
}
else
{
DEBUG_printf(("1cupsDoAuthentication: Unknown auth type: \"%s\"",
www_auth));
DEBUG_printf(("1cupsDoAuthentication: Unknown auth type: \"%s\"", www_auth));
http->status = HTTP_STATUS_CUPS_AUTHORIZATION_CANCELED;
return (-1);
}
DEBUG_printf(("1cupsDoAuthentication: authstring=\"%s\"", http->authstring));
return (0);
}
@@ -336,7 +457,7 @@ _cupsSetNegotiateAuthString(
GSS_C_NO_BUFFER, &http->gssmech,
&output_token, NULL, NULL);
#ifdef HAVE_GSS_ACQUIRE_CRED_EX_F
# ifdef HAVE_GSS_ACQUIRE_CRED_EX_F
if (major_status == GSS_S_NO_CRED)
{
/*
@@ -412,7 +533,7 @@ _cupsSetNegotiateAuthString(
}
}
}
#endif /* HAVE_GSS_ACQUIRED_CRED_EX_F */
# endif /* HAVE_GSS_ACQUIRED_CRED_EX_F */
if (GSS_ERROR(major_status))
{
@@ -422,11 +543,11 @@ _cupsSetNegotiateAuthString(
return (-1);
}
#ifdef DEBUG
# ifdef DEBUG
else if (major_status == GSS_S_CONTINUE_NEEDED)
cups_gss_printf(major_status, minor_status,
"_cupsSetNegotiateAuthString: Continuation needed!");
#endif /* DEBUG */
# endif /* DEBUG */
if (output_token.length > 0 && output_token.length <= 65536)
{
@@ -464,8 +585,259 @@ _cupsSetNegotiateAuthString(
return (0);
}
#endif /* HAVE_GSSAPI */
/*
* 'cups_auth_find()' - Find the named WWW-Authenticate scheme.
*
* The "www_authenticate" parameter points to the current position in the header.
*
* Returns @code NULL@ if the auth scheme is not present.
*/
static const char * /* O - Start of matching scheme or @code NULL@ if not found */
cups_auth_find(const char *www_authenticate, /* I - Pointer into WWW-Authenticate header */
const char *scheme) /* I - Authentication scheme */
{
size_t schemelen = strlen(scheme); /* Length of scheme */
DEBUG_printf(("8cups_auth_find(www_authenticate=\"%s\", scheme=\"%s\"(%d))", www_authenticate, scheme, (int)schemelen));
while (*www_authenticate)
{
/*
* Skip leading whitespace and commas...
*/
DEBUG_printf(("9cups_auth_find: Before whitespace: \"%s\"", www_authenticate));
while (isspace(*www_authenticate & 255) || *www_authenticate == ',')
www_authenticate ++;
DEBUG_printf(("9cups_auth_find: After whitespace: \"%s\"", www_authenticate));
/*
* See if this is "Scheme" followed by whitespace or the end of the string.
*/
if (!strncmp(www_authenticate, scheme, schemelen) && (isspace(www_authenticate[schemelen] & 255) || !www_authenticate[schemelen]))
{
/*
* Yes, this is the start of the scheme-specific information...
*/
DEBUG_printf(("9cups_auth_find: Returning \"%s\".", www_authenticate));
return (www_authenticate);
}
/*
* Skip the scheme name or param="value" string...
*/
while (!isspace(*www_authenticate & 255) && *www_authenticate)
{
if (*www_authenticate == '\"')
{
/*
* Skip quoted value...
*/
www_authenticate ++;
while (*www_authenticate && *www_authenticate != '\"')
www_authenticate ++;
DEBUG_printf(("9cups_auth_find: After quoted: \"%s\"", www_authenticate));
}
www_authenticate ++;
}
DEBUG_printf(("9cups_auth_find: After skip: \"%s\"", www_authenticate));
}
DEBUG_puts("9cups_auth_find: Returning NULL.");
return (NULL);
}
/*
* 'cups_auth_param()' - Copy the value for the named authentication parameter,
* if present.
*/
static const char * /* O - Parameter value or @code NULL@ if not present */
cups_auth_param(const char *scheme, /* I - Pointer to auth data */
const char *name, /* I - Name of parameter */
char *value, /* I - Value buffer */
size_t valsize) /* I - Size of value buffer */
{
char *valptr = value, /* Pointer into value buffer */
*valend = value + valsize - 1; /* Pointer to end of buffer */
size_t namelen = strlen(name); /* Name length */
int param; /* Is this a parameter? */
DEBUG_printf(("8cups_auth_param(scheme=\"%s\", name=\"%s\", value=%p, valsize=%d)", scheme, name, (void *)value, (int)valsize));
while (!isspace(*scheme & 255) && *scheme)
scheme ++;
while (*scheme)
{
while (isspace(*scheme & 255) || *scheme == ',')
scheme ++;
if (!strncmp(scheme, name, namelen) && scheme[namelen] == '=')
{
/*
* Found the parameter, copy the value...
*/
scheme += namelen + 1;
if (*scheme == '\"')
{
scheme ++;
while (*scheme && *scheme != '\"')
{
if (valptr < valend)
*valptr++ = *scheme;
scheme ++;
}
}
else
{
while (*scheme && strchr("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~+/=", *scheme))
{
if (valptr < valend)
*valptr++ = *scheme;
scheme ++;
}
}
*valptr = '\0';
DEBUG_printf(("9cups_auth_param: Returning \"%s\".", value));
return (value);
}
/*
* Skip the param=value string...
*/
param = 0;
while (!isspace(*scheme & 255) && *scheme)
{
if (*scheme == '=')
param = 1;
else if (*scheme == '\"')
{
/*
* Skip quoted value...
*/
scheme ++;
while (*scheme && *scheme != '\"')
scheme ++;
}
scheme ++;
}
/*
* If this wasn't a parameter, we are at the end of this scheme's
* parameters...
*/
if (!param)
break;
}
*value = '\0';
DEBUG_puts("9cups_auth_param: Returning NULL.");
return (NULL);
}
/*
* 'cups_auth_scheme()' - Get the (next) WWW-Authenticate scheme.
*
* The "www_authenticate" parameter points to the current position in the header.
*
* Returns @code NULL@ if there are no (more) auth schemes present.
*/
static const char * /* O - Start of scheme or @code NULL@ if not found */
cups_auth_scheme(const char *www_authenticate, /* I - Pointer into WWW-Authenticate header */
char *scheme, /* I - Scheme name buffer */
size_t schemesize) /* I - Size of buffer */
{
const char *start; /* Start of scheme data */
char *sptr = scheme, /* Pointer into scheme buffer */
*send = scheme + schemesize - 1;/* End of scheme buffer */
int param; /* Is this a parameter? */
DEBUG_printf(("8cups_auth_scheme(www_authenticate=\"%s\", scheme=%p, schemesize=%d)", www_authenticate, (void *)scheme, (int)schemesize));
while (*www_authenticate)
{
/*
* Skip leading whitespace and commas...
*/
while (isspace(*www_authenticate & 255) || *www_authenticate == ',')
www_authenticate ++;
/*
* Parse the scheme name or param="value" string...
*/
for (sptr = scheme, start = www_authenticate, param = 0; *www_authenticate && !isspace(*www_authenticate & 255); www_authenticate ++)
{
if (*www_authenticate == '=')
param = 1;
else if (!param && sptr < send)
*sptr++ = *www_authenticate;
else if (*www_authenticate == '\"')
{
/*
* Skip quoted value...
*/
www_authenticate ++;
while (*www_authenticate && *www_authenticate != '\"')
www_authenticate ++;
}
}
if (sptr > scheme && !param)
{
*sptr = '\0';
DEBUG_printf(("9cups_auth_scheme: Returning \"%s\".", start));
return (start);
}
}
*scheme = '\0';
DEBUG_puts("9cups_auth_scheme: Returning NULL.");
return (NULL);
}
#ifdef HAVE_GSSAPI
# ifdef HAVE_GSS_ACQUIRE_CRED_EX_F
/*
* 'cups_gss_acquire()' - Kerberos credentials callback.
@@ -650,6 +1022,8 @@ cups_local_auth(http_t *http) /* I - HTTP connection to server */
FILE *fp; /* Certificate file */
char trc[16], /* Try Root Certificate parameter */
filename[1024]; /* Certificate filename */
const char *www_auth, /* WWW-Authenticate header */
*schemedata; /* Data for the named auth scheme */
_cups_globals_t *cg = _cupsGlobals(); /* Global data */
# if defined(HAVE_AUTHORIZATION_H)
OSStatus status; /* Status */
@@ -668,13 +1042,14 @@ cups_local_auth(http_t *http) /* I - HTTP connection to server */
* See if we are accessing localhost...
*/
if (!httpAddrLocalhost(http->hostaddr) &&
_cups_strcasecmp(http->hostname, "localhost") != 0)
if (!httpAddrLocalhost(http->hostaddr) && _cups_strcasecmp(http->hostname, "localhost") != 0)
{
DEBUG_puts("8cups_local_auth: Not a local connection!");
return (1);
}
www_auth = httpGetField(http, HTTP_FIELD_WWW_AUTHENTICATE);
# if defined(HAVE_AUTHORIZATION_H)
/*
* Delete any previous authorization reference...
@@ -686,12 +1061,9 @@ cups_local_auth(http_t *http) /* I - HTTP connection to server */
http->auth_ref = NULL;
}
if (!getenv("GATEWAY_INTERFACE") &&
httpGetSubField2(http, HTTP_FIELD_WWW_AUTHENTICATE, "authkey",
auth_key, sizeof(auth_key)))
if (!getenv("GATEWAY_INTERFACE") && (schemedata = cups_auth_find(www_auth, "AuthRef")) != NULL && cups_auth_param(schemedata, "key", auth_key, sizeof(auth_key)))
{
status = AuthorizationCreate(NULL, kAuthorizationEmptyEnvironment,
kAuthorizationFlagDefaults, &http->auth_ref);
status = AuthorizationCreate(NULL, kAuthorizationEmptyEnvironment, kAuthorizationFlagDefaults, &http->auth_ref);
if (status != errAuthorizationSuccess)
{
DEBUG_printf(("8cups_local_auth: AuthorizationCreate() returned %d (%s)",
@@ -745,6 +1117,15 @@ cups_local_auth(http_t *http) /* I - HTTP connection to server */
}
# endif /* HAVE_AUTHORIZATION_H */
# ifdef HAVE_GSSAPI
if (cups_auth_find(www_auth, "Negotiate"))
return (1);
# endif /* HAVE_GSSAPI */
# ifdef HAVE_AUTHORIZATION_H
if (cups_auth_find(www_auth, "AuthRef"))
return (1);
# endif /* HAVE_AUTHORIZATION_H */
# if defined(SO_PEERCRED) && defined(AF_LOCAL)
/*
* See if we can authenticate using the peer credentials provided over a
@@ -752,16 +1133,9 @@ cups_local_auth(http_t *http) /* I - HTTP connection to server */
* information...
*/
if (
# ifdef HAVE_GSSAPI
_cups_strncasecmp(http->fields[HTTP_FIELD_WWW_AUTHENTICATE], "Negotiate", 9) &&
# endif /* HAVE_GSSAPI */
# ifdef HAVE_AUTHORIZATION_H
!httpGetSubField2(http, HTTP_FIELD_WWW_AUTHENTICATE, "authkey",
auth_key, sizeof(auth_key)) &&
# endif /* HAVE_AUTHORIZATION_H */
http->hostaddr->addr.sa_family == AF_LOCAL &&
!getenv("GATEWAY_INTERFACE")) /* Not via CGI programs... */
if (http->hostaddr->addr.sa_family == AF_LOCAL &&
!getenv("GATEWAY_INTERFACE") && /* Not via CGI programs... */
cups_auth_find(www_auth, "PeerCred"))
{
/*
* Verify that the current cupsUser() matches the current UID...
@@ -784,6 +1158,9 @@ cups_local_auth(http_t *http) /* I - HTTP connection to server */
}
# endif /* SO_PEERCRED && AF_LOCAL */
if ((schemedata = cups_auth_find(www_auth, "Local")) == NULL)
return (1);
/*
* Try opening a certificate file for this PID. If that fails,
* try the root certificate...
@@ -797,33 +1174,9 @@ cups_local_auth(http_t *http) /* I - HTTP connection to server */
* No certificate for this PID; see if we can get the root certificate...
*/
DEBUG_printf(("9cups_local_auth: Unable to open file %s: %s",
filename, strerror(errno)));
DEBUG_printf(("9cups_local_auth: Unable to open file %s: %s", filename, strerror(errno)));
# ifdef HAVE_GSSAPI
if (!_cups_strncasecmp(http->fields[HTTP_FIELD_WWW_AUTHENTICATE], "Negotiate", 9))
{
/*
* Kerberos required, don't try the root certificate...
*/
return (1);
}
# endif /* HAVE_GSSAPI */
# ifdef HAVE_AUTHORIZATION_H
if (httpGetSubField2(http, HTTP_FIELD_WWW_AUTHENTICATE, "authkey",
auth_key, sizeof(auth_key)))
{
/*
* Don't use the root certificate as a replacement for an authkey...
*/
return (1);
}
# endif /* HAVE_AUTHORIZATION_H */
if (!httpGetSubField2(http, HTTP_FIELD_WWW_AUTHENTICATE, "trc", trc,
sizeof(trc)))
if (!cups_auth_param(schemedata, "trc", trc, sizeof(trc)))
{
/*
* Scheduler doesn't want us to use the root certificate...
+6 -3
Ver Arquivo
@@ -1,7 +1,7 @@
/*
* API definitions for CUPS.
*
* Copyright 2007-2017 by Apple Inc.
* Copyright 2007-2018 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -47,10 +47,10 @@ extern "C" {
* Constants...
*/
# define CUPS_VERSION 2.0205
# define CUPS_VERSION 2.0207
# define CUPS_VERSION_MAJOR 2
# define CUPS_VERSION_MINOR 2
# define CUPS_VERSION_PATCH 5
# define CUPS_VERSION_PATCH 7
# define CUPS_BC_FD 3
/* Back-channel file descriptor for
@@ -606,6 +606,9 @@ extern ssize_t cupsHashData(const char *algorithm, const void *data, size_t dat
extern int cupsAddIntegerOption(const char *name, int value, int num_options, cups_option_t **options) _CUPS_API_2_2_4;
extern int cupsGetIntegerOption(const char *name, int num_options, cups_option_t *options) _CUPS_API_2_2_4;
/* New in CUPS 2.2.7 */
extern const char *cupsHashString(const unsigned char *hash, size_t hashsize, char *buffer, size_t bufsize) _CUPS_API_2_2_7;
# ifdef __cplusplus
}
# endif /* __cplusplus */
+86 -5
Ver Arquivo
@@ -1,7 +1,7 @@
/*
* Hashing function for CUPS.
*
* Copyright 2015-2016 by Apple Inc.
* Copyright © 2015-2018 by Apple Inc.
*
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
@@ -21,6 +21,8 @@
# include <CommonCrypto/CommonDigest.h>
#elif defined(HAVE_GNUTLS)
# include <gnutls/crypto.h>
#else
# include "md5-private.h"
#endif /* __APPLE__ */
@@ -53,7 +55,24 @@ cupsHashData(const char *algorithm, /* I - Algorithm name */
}
#ifdef __APPLE__
if (!strcmp(algorithm, "sha"))
if (!strcmp(algorithm, "md5"))
{
/*
* MD5 (deprecated but widely used...)
*/
CC_MD5_CTX ctx; /* MD5 context */
if (hashsize < CC_MD5_DIGEST_LENGTH)
goto too_small;
CC_MD5_Init(&ctx);
CC_MD5_Update(&ctx, data, (CC_LONG)datalen);
CC_MD5_Final(hash, &ctx);
return (CC_MD5_DIGEST_LENGTH);
}
else if (!strcmp(algorithm, "sha"))
{
/*
* SHA-1...
@@ -171,7 +190,9 @@ cupsHashData(const char *algorithm, /* I - Algorithm name */
unsigned char temp[64]; /* Temporary hash buffer */
size_t tempsize = 0; /* Truncate to this size? */
if (!strcmp(algorithm, "sha"))
if (!strcmp(algorithm, "md5"))
alg = GNUTLS_DIG_MD5;
else if (!strcmp(algorithm, "sha"))
alg = GNUTLS_DIG_SHA1;
else if (!strcmp(algorithm, "sha2-224"))
alg = GNUTLS_DIG_SHA224;
@@ -219,10 +240,20 @@ cupsHashData(const char *algorithm, /* I - Algorithm name */
#else
/*
* No hash support without CommonCrypto or GNU TLS...
* No hash support beyond MD5 without CommonCrypto or GNU TLS...
*/
if (hashsize < 64)
if (!strcmp(algorithm, "md5"))
{
_cups_md5_state_t state; /* MD5 state info */
_cupsMD5Init(&state);
_cupsMD5Append(&state, data, datalen);
_cupsMD5Finish(&state, hash);
return (16);
}
else if (hashsize < 64)
goto too_small;
#endif /* __APPLE__ */
@@ -243,3 +274,53 @@ cupsHashData(const char *algorithm, /* I - Algorithm name */
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Hash buffer too small."), 1);
return (-1);
}
/*
* 'cupsHashString()' - Format a hash value as a hexadecimal string.
*
* The passed buffer must be at least 2 * hashsize + 1 characters in length.
*
* @since CUPS 2.2.7@
*/
const char * /* O - Formatted string */
cupsHashString(
const unsigned char *hash, /* I - Hash */
size_t hashsize, /* I - Size of hash */
char *buffer, /* I - String buffer */
size_t bufsize) /* I - Size of string buffer */
{
char *bufptr = buffer; /* Pointer into buffer */
static const char *hex = "0123456789abcdef";
/* Hex characters (lowercase!) */
/*
* Range check input...
*/
if (!hash || hashsize < 1 || !buffer || bufsize < (2 * hashsize + 1))
{
if (buffer)
*buffer = '\0';
return (NULL);
}
/*
* Loop until we've converted the whole hash...
*/
while (hashsize > 0)
{
*bufptr++ = hex[*hash >> 4];
*bufptr++ = hex[*hash & 15];
hash ++;
hashsize --;
}
*bufptr = '\0';
return (buffer);
}
+20 -17
Ver Arquivo
@@ -1,7 +1,7 @@
/*
* Private HTTP definitions for CUPS.
*
* Copyright 2007-2017 by Apple Inc.
* Copyright 2007-2018 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
@@ -68,7 +68,6 @@ typedef int socklen_t;
# endif /* __APPLE__ && !_SOCKLEN_T */
# include <cups/http.h>
# include "md5-private.h"
# include "ipp-private.h"
# ifdef HAVE_GNUTLS
@@ -172,20 +171,24 @@ extern "C" {
* Constants...
*/
# define _HTTP_MAX_SBUFFER 65536 /* Size of (de)compression buffer */
# define _HTTP_RESOLVE_DEFAULT 0 /* Just resolve with default options */
# define _HTTP_RESOLVE_STDERR 1 /* Log resolve progress to stderr */
# define _HTTP_RESOLVE_FQDN 2 /* Resolve to a FQDN */
# define _HTTP_RESOLVE_FAXOUT 4 /* Resolve FaxOut service? */
#define _HTTP_MAX_SBUFFER 65536 /* Size of (de)compression buffer */
#define _HTTP_RESOLVE_DEFAULT 0 /* Just resolve with default options */
#define _HTTP_RESOLVE_STDERR 1 /* Log resolve progress to stderr */
#define _HTTP_RESOLVE_FQDN 2 /* Resolve to a FQDN */
#define _HTTP_RESOLVE_FAXOUT 4 /* Resolve FaxOut service? */
# define _HTTP_TLS_NONE 0 /* No TLS options */
# define _HTTP_TLS_ALLOW_RC4 1 /* Allow RC4 cipher suites */
# define _HTTP_TLS_ALLOW_DH 2 /* Allow DH/DHE key negotiation */
# define _HTTP_TLS_DENY_CBC 4 /* Deny CBC cipher suites */
# define _HTTP_TLS_SET_DEFAULT 128 /* Setting the default TLS options */
#define _HTTP_TLS_NONE 0 /* No TLS options */
#define _HTTP_TLS_ALLOW_RC4 1 /* Allow RC4 cipher suites */
#define _HTTP_TLS_ALLOW_SSL3 2 /* Allow SSL 3.0 */
#define _HTTP_TLS_ALLOW_DH 4 /* Allow DH/DHE key negotiation */
#define _HTTP_TLS_DENY_TLS10 16 /* Deny TLS 1.0 */
#define _HTTP_TLS_DENY_CBC 32 /* Deny CBC cipher suites */
#define _HTTP_TLS_ONLY_TLS10 64 /* Only use TLS 1.0 */
# define _HTTP_TLS_SSL3 0 /* Min/max version is SSL/3.0 */
# define _HTTP_TLS_1_0 1 /* Min/max version is TLS/1.0 */
# define _HTTP_TLS_1_1 2 /* Min/max version is TLS/1.1 */
# define _HTTP_TLS_1_2 3 /* Min/max version is TLS/1.2 */
# define _HTTP_TLS_1_3 4 /* Min/max version is TLS/1.3 */
# define _HTTP_TLS_MAX 5 /* Highest known TLS version */
/*
@@ -297,10 +300,10 @@ struct _http_s /**** HTTP connection structure ****/
char buffer[HTTP_MAX_BUFFER];
/* Buffer for incoming data */
int _auth_type; /* Authentication in use (deprecated) */
_cups_md5_state_t md5_state; /* MD5 state */
unsigned char _md5_state[88]; /* MD5 state (deprecated) */
char nonce[HTTP_MAX_VALUE];
/* Nonce value */
int nonce_count; /* Nonce count */
unsigned nonce_count; /* Nonce count */
http_tls_t tls; /* TLS state information */
http_encryption_t encryption; /* Encryption requirements */
@@ -442,7 +445,7 @@ extern void _httpTLSInitialize(void);
extern size_t _httpTLSPending(http_t *http);
extern int _httpTLSRead(http_t *http, char *buf, int len);
extern int _httpTLSSetCredentials(http_t *http);
extern void _httpTLSSetOptions(int options);
extern void _httpTLSSetOptions(int options, int min_version, int max_version);
extern int _httpTLSStart(http_t *http);
extern void _httpTLSStop(http_t *http);
extern int _httpTLSWrite(http_t *http, const char *buf, int len);
+4 -4
Ver Arquivo
@@ -502,7 +502,6 @@ httpAssembleUUID(const char *server, /* I - Server name */
size_t bufsize) /* I - Size of buffer */
{
char data[1024]; /* Source string for MD5 */
_cups_md5_state_t md5state; /* MD5 state */
unsigned char md5sum[16]; /* MD5 digest/sum */
@@ -517,9 +516,7 @@ httpAssembleUUID(const char *server, /* I - Server name */
port, name ? name : server, number,
(unsigned)CUPS_RAND() & 0xffff, (unsigned)CUPS_RAND() & 0xffff);
_cupsMD5Init(&md5state);
_cupsMD5Append(&md5state, (unsigned char *)data, (int)strlen(data));
_cupsMD5Finish(&md5state, md5sum);
cupsHashData("md5", (unsigned char *)data, strlen(data), md5sum, sizeof(md5sum));
/*
* Generate the UUID from the MD5...
@@ -1360,6 +1357,9 @@ _httpStatus(cups_lang_t *lang, /* I - Language */
case HTTP_STATUS_MOVED_PERMANENTLY :
s = _("Moved Permanently");
break;
case HTTP_STATUS_FOUND :
s = _("Found");
break;
case HTTP_STATUS_SEE_OTHER :
s = _("See Other");
break;
+119 -104
Ver Arquivo
@@ -1,7 +1,7 @@
/*
* HTTP routines for CUPS.
*
* Copyright 2007-2017 by Apple Inc.
* Copyright 2007-2018 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
*
* This file contains Kerberos support code, copyright 2006 by
@@ -39,6 +39,7 @@
* Local functions...
*/
static void http_add_field(http_t *http, http_field_t field, const char *value, int append);
#ifdef HAVE_LIBZ
static void http_content_coding_finish(http_t *http);
static void http_content_coding_start(http_t *http,
@@ -2659,105 +2660,7 @@ httpSetField(http_t *http, /* I - HTTP connection */
value == NULL)
return;
switch (field)
{
case HTTP_FIELD_ACCEPT_ENCODING :
if (http->accept_encoding)
_cupsStrFree(http->accept_encoding);
http->accept_encoding = _cupsStrAlloc(value);
break;
case HTTP_FIELD_ALLOW :
if (http->allow)
_cupsStrFree(http->allow);
http->allow = _cupsStrAlloc(value);
break;
case HTTP_FIELD_SERVER :
if (http->server)
_cupsStrFree(http->server);
http->server = _cupsStrAlloc(value);
break;
case HTTP_FIELD_WWW_AUTHENTICATE :
/* CUPS STR #4503 - don't override WWW-Authenticate for unknown auth schemes */
if (http->fields[HTTP_FIELD_WWW_AUTHENTICATE][0] &&
_cups_strncasecmp(value, "Basic ", 6) &&
_cups_strncasecmp(value, "Digest ", 7) &&
_cups_strncasecmp(value, "Negotiate ", 10))
{
DEBUG_printf(("1httpSetField: Ignoring unknown auth scheme in \"%s\".", value));
return;
}
/* Fall through to copy */
default :
strlcpy(http->fields[field], value, HTTP_MAX_VALUE);
break;
}
if (field == HTTP_FIELD_AUTHORIZATION)
{
/*
* Special case for Authorization: as its contents can be
* longer than HTTP_MAX_VALUE
*/
if (http->field_authorization)
free(http->field_authorization);
http->field_authorization = strdup(value);
}
else if (field == HTTP_FIELD_HOST)
{
/*
* Special-case for Host: as we don't want a trailing "." on the hostname and
* need to bracket IPv6 numeric addresses.
*/
char *ptr = strchr(value, ':');
if (value[0] != '[' && ptr && strchr(ptr + 1, ':'))
{
/*
* Bracket IPv6 numeric addresses...
*
* This is slightly inefficient (basically copying twice), but is an edge
* case and not worth optimizing...
*/
snprintf(http->fields[HTTP_FIELD_HOST],
sizeof(http->fields[HTTP_FIELD_HOST]), "[%s]", value);
}
else
{
/*
* Check for a trailing dot on the hostname...
*/
ptr = http->fields[HTTP_FIELD_HOST];
if (*ptr)
{
ptr += strlen(ptr) - 1;
if (*ptr == '.')
*ptr = '\0';
}
}
}
#ifdef HAVE_LIBZ
else if (field == HTTP_FIELD_CONTENT_ENCODING &&
http->data_encoding != HTTP_ENCODING_FIELDS)
{
DEBUG_puts("1httpSetField: Calling http_content_coding_start.");
http_content_coding_start(http, value);
}
#endif /* HAVE_LIBZ */
http_add_field(http, field, value, 0);
}
@@ -3035,7 +2938,7 @@ _httpUpdate(http_t *http, /* I - HTTP connection */
httpSetCookie(http, value);
}
else if ((field = httpFieldValue(line)) != HTTP_FIELD_UNKNOWN)
httpSetField(http, field, value);
http_add_field(http, field, value, 1);
#ifdef DEBUG
else
DEBUG_printf(("1_httpUpdate: unknown field %s seen!", line));
@@ -3689,6 +3592,118 @@ httpWriteResponse(http_t *http, /* I - HTTP connection */
}
/*
* 'http_add_field()' - Add a value for a HTTP field, appending if needed.
*/
static void
http_add_field(http_t *http, /* I - HTTP connection */
http_field_t field, /* I - HTTP field */
const char *value, /* I - Value string */
int append) /* I - Append value? */
{
char newvalue[1024]; /* New value string */
const char *oldvalue; /* Old field value */
/*
* Optionally append the new value to the existing one...
*/
if (append && field != HTTP_FIELD_ACCEPT_ENCODING && field != HTTP_FIELD_ACCEPT_LANGUAGE && field != HTTP_FIELD_ACCEPT_RANGES && field != HTTP_FIELD_ALLOW && field != HTTP_FIELD_LINK && field != HTTP_FIELD_TRANSFER_ENCODING && field != HTTP_FIELD_UPGRADE && field != HTTP_FIELD_WWW_AUTHENTICATE)
append = 0;
if (field == HTTP_FIELD_HOST)
{
/*
* Special-case for Host: as we don't want a trailing "." on the hostname and
* need to bracket IPv6 numeric addresses.
*/
char *ptr = strchr(value, ':');
if (value[0] != '[' && ptr && strchr(ptr + 1, ':'))
{
/*
* Bracket IPv6 numeric addresses...
*/
snprintf(newvalue, sizeof(newvalue), "[%s]", value);
value = newvalue;
}
else if (*value && value[strlen(value) - 1] == '.')
{
/*
* Strip the trailing dot on the hostname...
*/
strlcpy(newvalue, value, sizeof(newvalue));
newvalue[strlen(newvalue) - 1] = '\0';
value = newvalue;
}
}
else if (append && *value && (oldvalue = httpGetField(http, field)) != NULL && *oldvalue)
{
snprintf(newvalue, sizeof(newvalue), "%s, %s", oldvalue, value);
value = newvalue;
}
/*
* Save the new value...
*/
switch (field)
{
case HTTP_FIELD_ACCEPT_ENCODING :
if (http->accept_encoding)
_cupsStrFree(http->accept_encoding);
http->accept_encoding = _cupsStrAlloc(value);
break;
case HTTP_FIELD_ALLOW :
if (http->allow)
_cupsStrFree(http->allow);
http->allow = _cupsStrAlloc(value);
break;
case HTTP_FIELD_SERVER :
if (http->server)
_cupsStrFree(http->server);
http->server = _cupsStrAlloc(value);
break;
default :
strlcpy(http->fields[field], value, HTTP_MAX_VALUE);
break;
}
if (field == HTTP_FIELD_AUTHORIZATION)
{
/*
* Special case for Authorization: as its contents can be
* longer than HTTP_MAX_VALUE
*/
if (http->field_authorization)
free(http->field_authorization);
http->field_authorization = strdup(value);
}
#ifdef HAVE_LIBZ
else if (field == HTTP_FIELD_CONTENT_ENCODING &&
http->data_encoding != HTTP_ENCODING_FIELDS)
{
DEBUG_puts("1http_add_field: Calling http_content_coding_start.");
http_content_coding_start(http, value);
}
#endif /* HAVE_LIBZ */
}
#ifdef HAVE_LIBZ
/*
* 'http_content_coding_finish()' - Finish doing any content encoding.
@@ -4056,7 +4071,7 @@ http_read(http_t *http, /* I - HTTP connection */
DEBUG_printf(("http_read(http=%p, buffer=%p, length=" CUPS_LLFMT ")", (void *)http, (void *)buffer, CUPS_LLCAST length));
if (!http->blocking)
if (!http->blocking || http->timeout_value > 0.0)
{
while (!httpWait(http, http->wait_value))
{
@@ -4651,7 +4666,7 @@ http_write(http_t *http, /* I - HTTP connection */
{
DEBUG_printf(("3http_write: About to write %d bytes.", (int)length));
if (http->timeout_cb)
if (http->timeout_value > 0.0)
{
#ifdef HAVE_POLL
struct pollfd pfd; /* Polled file descriptor */
@@ -4695,7 +4710,7 @@ http_write(http_t *http, /* I - HTTP connection */
http->error = errno;
return (-1);
}
else if (nfds == 0 && !(*http->timeout_cb)(http, http->timeout_data))
else if (nfds == 0 && (!http->timeout_cb || !(*http->timeout_cb)(http, http->timeout_data)))
{
#ifdef WIN32
http->error = WSAEWOULDBLOCK;
+5 -2
Ver Arquivo
@@ -248,10 +248,11 @@ typedef enum http_status_e /**** HTTP status codes ****/
HTTP_STATUS_MULTIPLE_CHOICES = 300, /* Multiple files match request */
HTTP_STATUS_MOVED_PERMANENTLY, /* Document has moved permanently */
HTTP_STATUS_MOVED_TEMPORARILY, /* Document has moved temporarily */
HTTP_STATUS_SEE_OTHER, /* See this other link... */
HTTP_STATUS_FOUND, /* Document was found at a different URI */
HTTP_STATUS_SEE_OTHER, /* See this other link */
HTTP_STATUS_NOT_MODIFIED, /* File not modified */
HTTP_STATUS_USE_PROXY, /* Must use a proxy to access this URI */
HTTP_STATUS_TEMPORARY_REDIRECT = 307, /* Temporary redirection */
HTTP_STATUS_BAD_REQUEST = 400, /* Bad request */
HTTP_STATUS_UNAUTHORIZED, /* Unauthorized to access host */
@@ -285,6 +286,8 @@ typedef enum http_status_e /**** HTTP status codes ****/
HTTP_STATUS_CUPS_PKI_ERROR, /* Error negotiating a secure connection @since CUPS 1.5/macOS 10.7@ */
HTTP_STATUS_CUPS_WEBIF_DISABLED /* Web interface is disabled @private@ */
# define HTTP_STATUS_MOVED_TEMPORARILY HTTP_STATUS_FOUND /* Renamed in RFC 7231 */
# ifndef _CUPS_NO_DEPRECATED
/* Old names for this enumeration */
# define HTTP_ERROR HTTP_STATUS_ERROR
+16 -4
Ver Arquivo
@@ -1,8 +1,8 @@
/*
* Internet Printing Protocol support functions for CUPS.
*
* Copyright 2007-2017 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
* Copyright © 2007-2018 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
@@ -960,9 +960,12 @@ ippCreateRequestedArray(ipp_t *request) /* I - IPP request */
"feed-orientation-supported",
"finishings",
"finishings-col",
"finishings-col-database",
"finishings-col-default",
"finishings-col-ready",
"finishings-col-supported",
"finishings-default",
"finishings-ready",
"finishings-supported",
"font-name-requested",
"font-name-requested-default",
@@ -1001,6 +1004,7 @@ ippCreateRequestedArray(ipp_t *request) /* I - IPP request */
"media-bottom-margin-supported",
"media-col",
"media-col-default",
"media-col-ready",
"media-col-supported",
"media-color-supported",
"media-default",
@@ -1015,6 +1019,7 @@ ippCreateRequestedArray(ipp_t *request) /* I - IPP request */
"media-left-margin-supported",
"media-order-count-supported",
"media-pre-printed-supported",
"media-ready",
"media-recycled-supported",
"media-right-margin-supported",
"media-size-supported",
@@ -1277,9 +1282,12 @@ ippCreateRequestedArray(ipp_t *request) /* I - IPP request */
"feed-orientation-supported",
"finishings",
"finishings-col",
"finishings-col-database",
"finishings-col-default",
"finishings-col-ready",
"finishings-col-supported",
"finishings-default",
"finishings-ready",
"finishings-supported",
"font-name-requested",
"font-name-requested-default",
@@ -1383,6 +1391,7 @@ ippCreateRequestedArray(ipp_t *request) /* I - IPP request */
"media-bottom-margin-supported",
"media-col",
"media-col-default",
"media-col-ready",
"media-col-supported",
"media-color-supported",
"media-default",
@@ -1397,6 +1406,7 @@ ippCreateRequestedArray(ipp_t *request) /* I - IPP request */
"media-left-margin-supported",
"media-order-count-supported",
"media-pre-printed-supported",
"media-ready",
"media-recycled-supported",
"media-right-margin-supported",
"media-size-supported",
@@ -1582,10 +1592,12 @@ ippCreateRequestedArray(ipp_t *request) /* I - IPP request */
"job-page-limit", /* CUPS extension */
"job-password-encryption-supported",
"job-password-supported",
"job-presets-supported", /* IPP Presets */
"job-quota-period", /* CUPS extension */
"job-resolvers-supported",
"job-settable-attributes-supported",
"job-spooling-supported",
"job-triggers-supported", /* IPP Presets */
"jpeg-k-octets-supported", /* CUPS extension */
"jpeg-x-dimension-supported", /* CUPS extension */
"jpeg-y-dimension-supported", /* CUPS extension */
@@ -1599,8 +1611,6 @@ ippCreateRequestedArray(ipp_t *request) /* I - IPP request */
"marker-message", /* CUPS extension */
"marker-names", /* CUPS extension */
"marker-types", /* CUPS extension */
"media-col-ready",
"media-ready",
"member-names", /* CUPS extension */
"member-uris", /* CUPS extension */
"multiple-destination-uris-supported",/* IPP FaxOut */
@@ -1623,6 +1633,8 @@ ippCreateRequestedArray(ipp_t *request) /* I - IPP request */
"printer-charge-info",
"printer-charge-info-uri",
"printer-commands", /* CUPS extension */
"printer-config-change-date-time",
"printer-config-change-time",
"printer-current-time",
"printer-detailed-status-messages",
"printer-device-id",
+9 -5
Ver Arquivo
@@ -4306,18 +4306,22 @@ ippSetString(ipp_t *ipp, /* I - IPP message */
{
char *temp; /* Temporary string */
_ipp_value_t *value; /* Current value */
ipp_tag_t value_tag; /* Value tag */
/*
* Range check input...
*/
if (attr && *attr)
value_tag = (*attr)->value_tag & IPP_TAG_CUPS_MASK;
else
value_tag = IPP_TAG_ZERO;
if (!ipp || !attr || !*attr ||
((*attr)->value_tag != IPP_TAG_TEXTLANG &&
(*attr)->value_tag != IPP_TAG_NAMELANG &&
((*attr)->value_tag < IPP_TAG_TEXT ||
(*attr)->value_tag > IPP_TAG_MIMETYPE)) ||
element < 0 || element > (*attr)->num_values || !strvalue)
(value_tag < IPP_TAG_TEXT && value_tag != IPP_TAG_TEXTLANG &&
value_tag != IPP_TAG_NAMELANG) || value_tag > IPP_TAG_MIMETYPE ||
!strvalue)
return (0);
/*
+5 -5
Ver Arquivo
@@ -79,11 +79,11 @@ extern "C" {
typedef enum ipp_dstate_e /**** Document states @exclude all@ ****/
{
IPP_DOCUMENT_PENDING = 3, /* Document is pending */
IPP_DOCUMENT_PROCESSING = 5, /* Document is processing */
IPP_DOCUMENT_CANCELED = 7, /* Document is canceled */
IPP_DOCUMENT_ABORTED, /* Document is aborted */
IPP_DOCUMENT_COMPLETED /* Document is completed */
IPP_DSTATE_PENDING = 3, /* Document is pending */
IPP_DSTATE_PROCESSING = 5, /* Document is processing */
IPP_DSTATE_CANCELED = 7, /* Document is canceled */
IPP_DSTATE_ABORTED, /* Document is aborted */
IPP_DSTATE_COMPLETED /* Document is completed */
# ifndef _CUPS_NO_DEPRECATED
# define IPP_DOCUMENT_PENDING IPP_DSTATE_PENDING
+2 -2
Ver Arquivo
@@ -697,9 +697,9 @@ cupsLangGet(const char *language) /* I - Language or locale */
* Map Chinese region codes to legacy country codes.
*/
if (!strcmp(country, "HANS"))
if (!strcmp(language, "zh") && !strcmp(country, "HANS"))
strlcpy(country, "CN", sizeof(country));
if (!strcmp(country, "HANT"))
if (!strcmp(language, "zh") && !strcmp(country, "HANT"))
strlcpy(country, "TW", sizeof(country));
}
+86 -84
Ver Arquivo
@@ -1,7 +1,7 @@
/*
* Private MD5 implementation for CUPS.
*
* Copyright 2007-2014 by Apple Inc.
* Copyright 2007-2017 by Apple Inc.
* Copyright 2005 by Easy Software Products
* Copyright (C) 1999 Aladdin Enterprises. All rights reserved.
*
@@ -43,70 +43,71 @@
#include "md5-private.h"
#include "string-private.h"
#define T1 0xd76aa478
#define T2 0xe8c7b756
#define T3 0x242070db
#define T4 0xc1bdceee
#define T5 0xf57c0faf
#define T6 0x4787c62a
#define T7 0xa8304613
#define T8 0xfd469501
#define T9 0x698098d8
#define T10 0x8b44f7af
#define T11 0xffff5bb1
#define T12 0x895cd7be
#define T13 0x6b901122
#define T14 0xfd987193
#define T15 0xa679438e
#define T16 0x49b40821
#define T17 0xf61e2562
#define T18 0xc040b340
#define T19 0x265e5a51
#define T20 0xe9b6c7aa
#define T21 0xd62f105d
#define T22 0x02441453
#define T23 0xd8a1e681
#define T24 0xe7d3fbc8
#define T25 0x21e1cde6
#define T26 0xc33707d6
#define T27 0xf4d50d87
#define T28 0x455a14ed
#define T29 0xa9e3e905
#define T30 0xfcefa3f8
#define T31 0x676f02d9
#define T32 0x8d2a4c8a
#define T33 0xfffa3942
#define T34 0x8771f681
#define T35 0x6d9d6122
#define T36 0xfde5380c
#define T37 0xa4beea44
#define T38 0x4bdecfa9
#define T39 0xf6bb4b60
#define T40 0xbebfbc70
#define T41 0x289b7ec6
#define T42 0xeaa127fa
#define T43 0xd4ef3085
#define T44 0x04881d05
#define T45 0xd9d4d039
#define T46 0xe6db99e5
#define T47 0x1fa27cf8
#define T48 0xc4ac5665
#define T49 0xf4292244
#define T50 0x432aff97
#define T51 0xab9423a7
#define T52 0xfc93a039
#define T53 0x655b59c3
#define T54 0x8f0ccc92
#define T55 0xffeff47d
#define T56 0x85845dd1
#define T57 0x6fa87e4f
#define T58 0xfe2ce6e0
#define T59 0xa3014314
#define T60 0x4e0811a1
#define T61 0xf7537e82
#define T62 0xbd3af235
#define T63 0x2ad7d2bb
#define T64 0xeb86d391
#if !defined(__APPLE__) && !defined(HAVE_GNUTLS)
# define T1 0xd76aa478
# define T2 0xe8c7b756
# define T3 0x242070db
# define T4 0xc1bdceee
# define T5 0xf57c0faf
# define T6 0x4787c62a
# define T7 0xa8304613
# define T8 0xfd469501
# define T9 0x698098d8
# define T10 0x8b44f7af
# define T11 0xffff5bb1
# define T12 0x895cd7be
# define T13 0x6b901122
# define T14 0xfd987193
# define T15 0xa679438e
# define T16 0x49b40821
# define T17 0xf61e2562
# define T18 0xc040b340
# define T19 0x265e5a51
# define T20 0xe9b6c7aa
# define T21 0xd62f105d
# define T22 0x02441453
# define T23 0xd8a1e681
# define T24 0xe7d3fbc8
# define T25 0x21e1cde6
# define T26 0xc33707d6
# define T27 0xf4d50d87
# define T28 0x455a14ed
# define T29 0xa9e3e905
# define T30 0xfcefa3f8
# define T31 0x676f02d9
# define T32 0x8d2a4c8a
# define T33 0xfffa3942
# define T34 0x8771f681
# define T35 0x6d9d6122
# define T36 0xfde5380c
# define T37 0xa4beea44
# define T38 0x4bdecfa9
# define T39 0xf6bb4b60
# define T40 0xbebfbc70
# define T41 0x289b7ec6
# define T42 0xeaa127fa
# define T43 0xd4ef3085
# define T44 0x04881d05
# define T45 0xd9d4d039
# define T46 0xe6db99e5
# define T47 0x1fa27cf8
# define T48 0xc4ac5665
# define T49 0xf4292244
# define T50 0x432aff97
# define T51 0xab9423a7
# define T52 0xfc93a039
# define T53 0x655b59c3
# define T54 0x8f0ccc92
# define T55 0xffeff47d
# define T56 0x85845dd1
# define T57 0x6fa87e4f
# define T58 0xfe2ce6e0
# define T59 0xa3014314
# define T60 0x4e0811a1
# define T61 0xf7537e82
# define T62 0xbd3af235
# define T63 0x2ad7d2bb
# define T64 0xeb86d391
static void
_cups_md5_process(_cups_md5_state_t *pms, const unsigned char *data /*[64]*/)
@@ -116,10 +117,10 @@ _cups_md5_process(_cups_md5_state_t *pms, const unsigned char *data /*[64]*/)
c = pms->abcd[2], d = pms->abcd[3];
unsigned int t;
#ifndef ARCH_IS_BIG_ENDIAN
# define ARCH_IS_BIG_ENDIAN 1 /* slower, default implementation */
#endif
#if ARCH_IS_BIG_ENDIAN
# ifndef ARCH_IS_BIG_ENDIAN
# define ARCH_IS_BIG_ENDIAN 1 /* slower, default implementation */
# endif
# if ARCH_IS_BIG_ENDIAN
/*
* On big-endian machines, we must arrange the bytes in the right
@@ -133,7 +134,7 @@ _cups_md5_process(_cups_md5_state_t *pms, const unsigned char *data /*[64]*/)
X[i] = (unsigned)xp[0] + ((unsigned)xp[1] << 8) +
((unsigned)xp[2] << 16) + ((unsigned)xp[3] << 24);
#else /* !ARCH_IS_BIG_ENDIAN */
# else /* !ARCH_IS_BIG_ENDIAN */
/*
* On little-endian machines, we can process properly aligned data
@@ -150,15 +151,15 @@ _cups_md5_process(_cups_md5_state_t *pms, const unsigned char *data /*[64]*/)
memcpy(xbuf, data, 64);
X = xbuf;
}
#endif
# endif
#define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32 - (n))))
# define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32 - (n))))
/* Round 1. */
/* Let [abcd k s i] denote the operation
a = b + ((a + F(b,c,d) + X[k] + T[i]) <<< s). */
#define F(x, y, z) (((x) & (y)) | (~(x) & (z)))
#define SET(a, b, c, d, k, s, Ti)\
# define F(x, y, z) (((x) & (y)) | (~(x) & (z)))
# define SET(a, b, c, d, k, s, Ti)\
t = a + F(b,c,d) + X[k] + Ti;\
a = ROTATE_LEFT(t, s) + b
/* Do the following 16 operations. */
@@ -178,13 +179,13 @@ _cups_md5_process(_cups_md5_state_t *pms, const unsigned char *data /*[64]*/)
SET(d, a, b, c, 13, 12, T14);
SET(c, d, a, b, 14, 17, T15);
SET(b, c, d, a, 15, 22, T16);
#undef SET
# undef SET
/* Round 2. */
/* Let [abcd k s i] denote the operation
a = b + ((a + G(b,c,d) + X[k] + T[i]) <<< s). */
#define G(x, y, z) (((x) & (z)) | ((y) & ~(z)))
#define SET(a, b, c, d, k, s, Ti)\
# define G(x, y, z) (((x) & (z)) | ((y) & ~(z)))
# define SET(a, b, c, d, k, s, Ti)\
t = a + G(b,c,d) + X[k] + Ti;\
a = ROTATE_LEFT(t, s) + b
/* Do the following 16 operations. */
@@ -204,13 +205,13 @@ _cups_md5_process(_cups_md5_state_t *pms, const unsigned char *data /*[64]*/)
SET(d, a, b, c, 2, 9, T30);
SET(c, d, a, b, 7, 14, T31);
SET(b, c, d, a, 12, 20, T32);
#undef SET
# undef SET
/* Round 3. */
/* Let [abcd k s t] denote the operation
a = b + ((a + H(b,c,d) + X[k] + T[i]) <<< s). */
#define H(x, y, z) ((x) ^ (y) ^ (z))
#define SET(a, b, c, d, k, s, Ti)\
# define H(x, y, z) ((x) ^ (y) ^ (z))
# define SET(a, b, c, d, k, s, Ti)\
t = a + H(b,c,d) + X[k] + Ti;\
a = ROTATE_LEFT(t, s) + b
/* Do the following 16 operations. */
@@ -230,13 +231,13 @@ _cups_md5_process(_cups_md5_state_t *pms, const unsigned char *data /*[64]*/)
SET(d, a, b, c, 12, 11, T46);
SET(c, d, a, b, 15, 16, T47);
SET(b, c, d, a, 2, 23, T48);
#undef SET
# undef SET
/* Round 4. */
/* Let [abcd k s t] denote the operation
a = b + ((a + I(b,c,d) + X[k] + T[i]) <<< s). */
#define I(x, y, z) ((y) ^ ((x) | ~(z)))
#define SET(a, b, c, d, k, s, Ti)\
# define I(x, y, z) ((y) ^ ((x) | ~(z)))
# define SET(a, b, c, d, k, s, Ti)\
t = a + I(b,c,d) + X[k] + Ti;\
a = ROTATE_LEFT(t, s) + b
/* Do the following 16 operations. */
@@ -256,7 +257,7 @@ _cups_md5_process(_cups_md5_state_t *pms, const unsigned char *data /*[64]*/)
SET(d, a, b, c, 11, 10, T62);
SET(c, d, a, b, 2, 15, T63);
SET(b, c, d, a, 9, 21, T64);
#undef SET
# undef SET
/* Then perform the following additions. (That is increment each
of the four registers by the value it had before this block
@@ -337,3 +338,4 @@ _cupsMD5Finish(_cups_md5_state_t *pms, unsigned char digest[16])
for (i = 0; i < 16; ++i)
digest[i] = (unsigned char)(pms->abcd[i >> 2] >> ((i & 3) << 3));
}
#endif /* !__APPLE__ && !HAVE_GNUTLS */
+16 -36
Ver Arquivo
@@ -1,7 +1,7 @@
/*
* MD5 password support for CUPS.
* MD5 password support for CUPS (deprecated).
*
* Copyright 2007-2010 by Apple Inc.
* Copyright 2007-2017 by Apple Inc.
* Copyright 1997-2005 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -17,12 +17,15 @@
* Include necessary headers...
*/
#include <cups/cups.h>
#include "http-private.h"
#include "string-private.h"
/*
* 'httpMD5()' - Compute the MD5 sum of the username:group:password.
*
* @deprecated@
*/
char * /* O - MD5 sum */
@@ -31,7 +34,6 @@ httpMD5(const char *username, /* I - User name */
const char *passwd, /* I - Password string */
char md5[33]) /* O - MD5 string */
{
_cups_md5_state_t state; /* MD5 state info */
unsigned char sum[16]; /* Sum data */
char line[256]; /* Line to sum */
@@ -41,15 +43,13 @@ httpMD5(const char *username, /* I - User name */
*/
snprintf(line, sizeof(line), "%s:%s:%s", username, realm, passwd);
_cupsMD5Init(&state);
_cupsMD5Append(&state, (unsigned char *)line, (int)strlen(line));
_cupsMD5Finish(&state, sum);
cupsHashData("md5", (unsigned char *)line, strlen(line), sum, sizeof(sum));
/*
* Return the sum...
*/
return (httpMD5String(sum, md5));
return ((char *)cupsHashString(sum, sizeof(sum), md5, 33));
}
@@ -57,6 +57,8 @@ httpMD5(const char *username, /* I - User name */
* 'httpMD5Final()' - Combine the MD5 sum of the username, group, and password
* with the server-supplied nonce value, method, and
* request-uri.
*
* @deprecated@
*/
char * /* O - New sum */
@@ -65,7 +67,6 @@ httpMD5Final(const char *nonce, /* I - Server nonce value */
const char *resource, /* I - Resource path */
char md5[33]) /* IO - MD5 sum */
{
_cups_md5_state_t state; /* MD5 state info */
unsigned char sum[16]; /* Sum data */
char line[1024]; /* Line of data */
char a2[33]; /* Hash of method and resource */
@@ -76,10 +77,8 @@ httpMD5Final(const char *nonce, /* I - Server nonce value */
*/
snprintf(line, sizeof(line), "%s:%s", method, resource);
_cupsMD5Init(&state);
_cupsMD5Append(&state, (unsigned char *)line, (int)strlen(line));
_cupsMD5Finish(&state, sum);
httpMD5String(sum, a2);
cupsHashData("md5", (unsigned char *)line, strlen(line), sum, sizeof(sum));
cupsHashString(sum, sizeof(sum), a2, sizeof(a2));
/*
* Then combine A1 (MD5 of username, realm, and password) with the nonce
@@ -88,17 +87,16 @@ httpMD5Final(const char *nonce, /* I - Server nonce value */
*/
snprintf(line, sizeof(line), "%s:%s:%s", md5, nonce, a2);
cupsHashData("md5", (unsigned char *)line, strlen(line), sum, sizeof(sum));
_cupsMD5Init(&state);
_cupsMD5Append(&state, (unsigned char *)line, (int)strlen(line));
_cupsMD5Finish(&state, sum);
return (httpMD5String(sum, md5));
return ((char *)cupsHashString(sum, sizeof(sum), md5, 33));
}
/*
* 'httpMD5String()' - Convert an MD5 sum to a character string.
*
* @deprecated@
*/
char * /* O - MD5 sum in hex */
@@ -106,23 +104,5 @@ httpMD5String(const unsigned char *sum, /* I - MD5 sum data */
char md5[33])
/* O - MD5 sum in hex */
{
int i; /* Looping var */
char *md5ptr; /* Pointer into MD5 string */
static const char hex[] = "0123456789abcdef";
/* Hex digits */
/*
* Convert the MD5 sum to hexadecimal...
*/
for (i = 16, md5ptr = md5; i > 0; i --, sum ++)
{
*md5ptr++ = hex[*sum >> 4];
*md5ptr++ = hex[*sum & 15];
}
*md5ptr = '\0';
return (md5);
return ((char *)cupsHashString(sum, 16, md5, 33));
}
+47 -18
Ver Arquivo
@@ -1,7 +1,7 @@
/*
* PPD cache implementation for CUPS.
*
* Copyright 2010-2017 by Apple Inc.
* Copyright © 2010-2018 by Apple Inc.
*
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
@@ -3117,6 +3117,41 @@ _ppdCreateFromIPP(char *buffer, /* I - Filename buffer */
cupsFilePuts(fp, "*cupsSNMPSupplies: False\n");
cupsFilePuts(fp, "*cupsLanguages: \"en\"\n");
/*
* Password/PIN printing...
*/
if ((attr = ippFindAttribute(response, "job-password-supported", IPP_TAG_INTEGER)) != NULL)
{
char pattern[33]; /* Password pattern */
int maxlen = ippGetInteger(attr, 0);
/* Maximum length */
const char *repertoire = ippGetString(ippFindAttribute(response, "job-password-repertoire-configured", IPP_TAG_KEYWORD), 0, NULL);
/* Type of password */
if (maxlen > (int)(sizeof(pattern) - 1))
maxlen = sizeof(pattern) - 1;
if (!repertoire || !strcmp(repertoire, "iana_us-ascii_digits"))
memset(pattern, '1', maxlen);
else if (!strcmp(repertoire, "iana_us-ascii_letters"))
memset(pattern, 'A', maxlen);
else if (!strcmp(repertoire, "iana_us-ascii_complex"))
memset(pattern, 'C', maxlen);
else if (!strcmp(repertoire, "iana_us-ascii_any"))
memset(pattern, '.', maxlen);
else if (!strcmp(repertoire, "iana_utf-8_digits"))
memset(pattern, 'N', maxlen);
else if (!strcmp(repertoire, "iana_utf-8_letters"))
memset(pattern, 'U', maxlen);
else
memset(pattern, '*', maxlen);
pattern[maxlen] = '\0';
cupsFilePrintf(fp, "*cupsPassword: \"%s\"\n", pattern);
}
/*
* Filters...
*/
@@ -3125,24 +3160,18 @@ _ppdCreateFromIPP(char *buffer, /* I - Filename buffer */
{
is_apple = ippContainsString(attr, "image/urf");
is_pdf = ippContainsString(attr, "application/pdf");
is_pwg = ippContainsString(attr, "image/pwg-raster");
is_pwg = ippContainsString(attr, "image/pwg-raster") && !is_apple;
for (i = 0, count = ippGetCount(attr); i < count; i ++)
{
const char *format = ippGetString(attr, i, NULL);
/* PDL */
/*
* Write cupsFilter2 lines for supported formats...
*/
if (!_cups_strcasecmp(format, "application/pdf"))
cupsFilePuts(fp, "*cupsFilter2: \"application/vnd.cups-pdf application/pdf 10 -\"\n");
else if (!_cups_strcasecmp(format, "image/jpeg") || !_cups_strcasecmp(format, "image/png"))
cupsFilePrintf(fp, "*cupsFilter2: \"%s %s 0 -\"\n", format, format);
else if (!_cups_strcasecmp(format, "image/pwg-raster") || !_cups_strcasecmp(format, "image/urf"))
cupsFilePrintf(fp, "*cupsFilter2: \"%s %s 100 -\"\n", format, format);
}
if (ippContainsString(attr, "image/jpeg"))
cupsFilePuts(fp, "*cupsFilter2: \"image/jpeg image/jpeg 0 -\"\n");
if (ippContainsString(attr, "image/png"))
cupsFilePuts(fp, "*cupsFilter2: \"image/png image/png 0 -\"\n");
if (is_pdf)
cupsFilePuts(fp, "*cupsFilter2: \"application/vnd.cups-pdf application/pdf 10 -\"\n");
if (is_apple)
cupsFilePuts(fp, "*cupsFilter2: \"image/urf image/urf 100 -\"\n");
if (is_pwg)
cupsFilePuts(fp, "*cupsFilter2: \"image/pwg-raster image/pwg-raster 100 -\"\n");
}
if (!is_apple && !is_pdf && !is_pwg)
+2 -3
Ver Arquivo
@@ -1,7 +1,7 @@
/*
* Option conflict management routines for CUPS.
*
* Copyright 2007-2015 by Apple Inc.
* Copyright 2007-2018 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
@@ -29,7 +29,6 @@
enum
{
_PPD_NORMAL_CONSTRAINTS,
_PPD_OPTION_CONSTRAINTS,
_PPD_INSTALLABLE_CONSTRAINTS,
_PPD_ALL_CONSTRAINTS
@@ -998,7 +997,7 @@ ppd_test_constraints(
if (!consts->installable && which == _PPD_INSTALLABLE_CONSTRAINTS)
continue; /* Skip non-installable option constraint */
if (which == _PPD_OPTION_CONSTRAINTS && option)
if ((which == _PPD_OPTION_CONSTRAINTS || which == _PPD_INSTALLABLE_CONSTRAINTS) && option)
{
/*
* Skip constraints that do not involve the current option...
+2 -2
Ver Arquivo
@@ -1,7 +1,7 @@
/*
* PPD localization routines for CUPS.
*
* Copyright 2007-2017 by Apple Inc.
* Copyright 2007-2018 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
@@ -277,7 +277,7 @@ ppdLocalizeIPPReason(
if (!locattr)
{
if (lang && (!scheme || !strcmp(scheme, "text")))
if (lang && (!scheme || !strcmp(scheme, "text")) && strcmp(reason, "none"))
{
/*
* Try to localize a standard printer-state-reason keyword...
+28 -99
Ver Arquivo
@@ -1,8 +1,8 @@
/*
* PPD utilities for CUPS.
*
* Copyright 2007-2015 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products.
* Copyright © 2007-2018 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
@@ -216,6 +216,27 @@ cupsGetPPD3(http_t *http, /* I - HTTP connection or @code CUPS_HTTP_DEFAUL
const char *tmpdir; /* TMPDIR environment variable */
struct timeval curtime; /* Current time */
#ifdef __APPLE__
/*
* On macOS and iOS, the TMPDIR environment variable is not always the
* best location to place temporary files due to sandboxing. Instead,
* the confstr function should be called to get the proper per-user,
* per-process TMPDIR value.
*/
char tmppath[1024]; /* Temporary directory */
if ((tmpdir = getenv("TMPDIR")) != NULL && access(tmpdir, W_OK))
tmpdir = NULL;
if (!tmpdir)
{
if (confstr(_CS_DARWIN_USER_TEMP_DIR, tmppath, sizeof(tmppath)))
tmpdir = tmppath;
else
tmpdir = "/private/tmp"; /* This should never happen */
}
#else
/*
* Previously we put root temporary files in the default CUPS temporary
* directory under /var/spool/cups. However, since the scheduler cleans
@@ -224,11 +245,8 @@ cupsGetPPD3(http_t *http, /* I - HTTP connection or @code CUPS_HTTP_DEFAUL
*/
if ((tmpdir = getenv("TMPDIR")) == NULL)
# ifdef __APPLE__
tmpdir = "/private/tmp"; /* /tmp is a symlink to /private/tmp */
# else
tmpdir = "/tmp";
# endif /* __APPLE__ */
tmpdir = "/tmp";
#endif /* __APPLE__ */
/*
* Make the temporary name using the specified directory...
@@ -511,23 +529,16 @@ cups_get_printer_uri(
int depth) /* I - Depth of query */
{
int i; /* Looping var */
int http_port; /* Port number */
http_t *http2; /* Alternate HTTP connection */
ipp_t *request, /* IPP request */
*response; /* IPP response */
ipp_attribute_t *attr; /* Current attribute */
char uri[HTTP_MAX_URI], /* printer-uri attribute */
scheme[HTTP_MAX_URI], /* Scheme name */
username[HTTP_MAX_URI], /* Username:password */
classname[255], /* Temporary class name */
http_hostname[HTTP_MAX_HOST];
/* Hostname associated with connection */
username[HTTP_MAX_URI]; /* Username:password */
static const char * const requested_attrs[] =
{ /* Requested attributes */
"device-uri",
"member-uris",
"printer-uri-supported",
"printer-type"
"printer-uri-supported"
};
@@ -549,15 +560,6 @@ cups_get_printer_uri(
DEBUG_printf(("5cups_get_printer_uri: printer-uri=\"%s\"", uri));
/*
* Get the hostname and port number we are connected to...
*/
httpGetHostname(http, http_hostname, sizeof(http_hostname));
http_port = httpAddrPort(http->hostaddr);
DEBUG_printf(("5cups_get_printer_uri: http_hostname=\"%s\"", http_hostname));
/*
* Build an IPP_GET_PRINTER_ATTRIBUTES request, which requires the following
* attributes:
@@ -582,31 +584,7 @@ cups_get_printer_uri(
if ((response = cupsDoRequest(http, request, resource)) != NULL)
{
const char *device_uri = NULL; /* device-uri value */
if ((attr = ippFindAttribute(response, "device-uri", IPP_TAG_URI)) != NULL)
{
device_uri = attr->values[0].string.text;
DEBUG_printf(("5cups_get_printer_uri: device-uri=\"%s\"", device_uri));
}
if (device_uri &&
(((!strncmp(device_uri, "ipp://", 6) || !strncmp(device_uri, "ipps://", 7)) &&
(strstr(device_uri, "/printers/") != NULL || strstr(device_uri, "/classes/") != NULL)) ||
((strstr(device_uri, "._ipp.") != NULL || strstr(device_uri, "._ipps.") != NULL) &&
!strcmp(device_uri + strlen(device_uri) - 5, "/cups"))))
{
/*
* Statically-configured shared printer.
*/
httpSeparateURI(HTTP_URI_CODING_ALL, _httpResolveURI(device_uri, uri, sizeof(uri), _HTTP_RESOLVE_DEFAULT, NULL, NULL), scheme, sizeof(scheme), username, sizeof(username), host, hostsize, port, resource, resourcesize);
ippDelete(response);
DEBUG_printf(("5cups_get_printer_uri: Resolved to host=\"%s\", port=%d, resource=\"%s\"", host, *port, resource));
return (1);
}
else if ((attr = ippFindAttribute(response, "member-uris", IPP_TAG_URI)) != NULL)
if ((attr = ippFindAttribute(response, "member-uris", IPP_TAG_URI)) != NULL)
{
/*
* Get the first actual printer name in the class...
@@ -631,55 +609,6 @@ cups_get_printer_uri(
return (1);
}
}
/*
* No printers in this class - try recursively looking for a printer,
* but not more than 3 levels deep...
*/
if (depth < 3)
{
for (i = 0; i < attr->num_values; i ++)
{
httpSeparateURI(HTTP_URI_CODING_ALL, attr->values[i].string.text,
scheme, sizeof(scheme), username, sizeof(username),
host, hostsize, port, resource, resourcesize);
if (!strncmp(resource, "/classes/", 9))
{
/*
* Found a class! Connect to the right server...
*/
if (!_cups_strcasecmp(http_hostname, host) && *port == http_port)
http2 = http;
else if ((http2 = httpConnect2(host, *port, NULL, AF_UNSPEC, cupsEncryption(), 1, 30000, NULL)) == NULL)
{
DEBUG_puts("8cups_get_printer_uri: Unable to connect to server");
continue;
}
/*
* Look up printers on that server...
*/
strlcpy(classname, resource + 9, sizeof(classname));
cups_get_printer_uri(http2, classname, host, hostsize, port,
resource, resourcesize, depth + 1);
/*
* Close the connection as needed...
*/
if (http2 != http)
httpClose(http2);
if (*host)
return (1);
}
}
}
}
else if ((attr = ippFindAttribute(response, "printer-uri-supported", IPP_TAG_URI)) != NULL)
{
+44 -12
Ver Arquivo
@@ -131,25 +131,58 @@ cupsDoIORequest(http_t *http, /* I - Connection to server or @code CUPS_HTTP
* Get the default connection as needed...
*/
if (!http)
if ((http = _cupsConnect()) == NULL)
{
ippDelete(request);
if (!http && (http = _cupsConnect()) == NULL)
{
ippDelete(request);
return (NULL);
}
return (NULL);
}
/*
* See if we have a file to send...
*/
if (infile >= 0)
length = 0;
{
if (fstat(infile, &fileinfo))
{
/*
* Can't get file information!
*/
_cupsSetError(errno == EBADF ? IPP_STATUS_ERROR_NOT_FOUND : IPP_STATUS_ERROR_NOT_AUTHORIZED, NULL, 0);
ippDelete(request);
return (NULL);
}
#ifdef WIN32
if (fileinfo.st_mode & _S_IFDIR)
#else
if (S_ISDIR(fileinfo.st_mode))
#endif /* WIN32 */
{
/*
* Can't send a directory...
*/
_cupsSetError(IPP_STATUS_ERROR_NOT_POSSIBLE, strerror(EISDIR), 0);
ippDelete(request);
return (NULL);
}
#ifndef WIN32
if (!S_ISREG(fileinfo.st_mode))
length = 0; /* Chunk when piping */
else
#endif /* !WIN32 */
length = ippLength(request) + (size_t)fileinfo.st_size;
}
else
length = ippLength(request);
DEBUG_printf(("2cupsDoIORequest: Request length=%ld, total length=%ld",
(long)ippLength(request), (long)length));
DEBUG_printf(("2cupsDoIORequest: Request length=%ld, total length=%ld", (long)ippLength(request), (long)length));
/*
* Clear any "Local" authentication data since it is probably stale...
@@ -578,9 +611,8 @@ cupsSendRequest(http_t *http, /* I - Connection to server or @code CUPS_HTTP
* Get the default connection as needed...
*/
if (!http)
if ((http = _cupsConnect()) == NULL)
return (HTTP_STATUS_SERVICE_UNAVAILABLE);
if (!http && (http = _cupsConnect()) == NULL)
return (HTTP_STATUS_SERVICE_UNAVAILABLE);
/*
* If the prior request was not flushed out, do so now...
+25 -7
Ver Arquivo
@@ -1,8 +1,8 @@
/*
* Temp file utilities for CUPS.
*
* Copyright 2007-2014 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products.
* Copyright © 2007-2018 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
@@ -42,8 +42,10 @@ cupsTempFd(char *filename, /* I - Pointer to buffer */
int fd; /* File descriptor for temp file */
int tries; /* Number of tries */
const char *tmpdir; /* TMPDIR environment var */
#if defined(__APPLE__) || defined(WIN32)
char tmppath[1024]; /* Temporary directory */
#endif /* __APPLE__ || WIN32 */
#ifdef WIN32
char tmppath[1024]; /* Windows temporary directory */
DWORD curtime; /* Current time */
#else
struct timeval curtime; /* Current time */
@@ -60,6 +62,26 @@ cupsTempFd(char *filename, /* I - Pointer to buffer */
GetTempPath(sizeof(tmppath), tmppath);
tmpdir = tmppath;
}
#elif defined(__APPLE__)
/*
* On macOS and iOS, the TMPDIR environment variable is not always the best
* location to place temporary files due to sandboxing. Instead, the confstr
* function should be called to get the proper per-user, per-process TMPDIR
* value.
*/
if ((tmpdir = getenv("TMPDIR")) != NULL && access(tmpdir, W_OK))
tmpdir = NULL;
if (!tmpdir)
{
if (confstr(_CS_DARWIN_USER_TEMP_DIR, tmppath, sizeof(tmppath)))
tmpdir = tmppath;
else
tmpdir = "/private/tmp"; /* This should never happen */
}
#else
/*
* Previously we put root temporary files in the default CUPS temporary
@@ -69,11 +91,7 @@ cupsTempFd(char *filename, /* I - Pointer to buffer */
*/
if ((tmpdir = getenv("TMPDIR")) == NULL)
# if defined(__APPLE__) && !TARGET_OS_IOS
tmpdir = "/private/tmp"; /* /tmp is a symlink to /private/tmp */
# else
tmpdir = "/tmp";
# endif /* __APPLE__ && !TARGET_OS_IOS */
#endif /* WIN32 */
/*
+3
Ver Arquivo
@@ -245,6 +245,9 @@ main(int argc, /* I - Number of command-line arguments */
}
#endif /* __APPLE__ */
if (errors == 0)
puts("ALL TESTS PASSED");
return (errors > 0);
}
+8
Ver Arquivo
@@ -876,6 +876,13 @@ main(int argc, /* I - Number of command-line arguments */
host[256], /* Hostname */
resource[256]; /* Resource path */
int port; /* Port number */
static const char * const pattrs[] =/* Requested printer attributes */
{
"job-template",
"printer-defaults",
"printer-description",
"media-col-database"
};
if (httpSeparateURI(HTTP_URI_CODING_ALL, argv[1], scheme, sizeof(scheme), userpass, sizeof(userpass), host, sizeof(host), &port, resource, sizeof(resource)) < HTTP_URI_STATUS_OK)
{
@@ -892,6 +899,7 @@ main(int argc, /* I - Number of command-line arguments */
request = ippNewRequest(IPP_OP_GET_PRINTER_ATTRIBUTES);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri", NULL, argv[1]);
ippAddStrings(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD, "requested-attributes", sizeof(pattrs) / sizeof(pattrs[0]), NULL, pattrs);
response = cupsDoRequest(http, request, resource);
if (_ppdCreateFromIPP(buffer, sizeof(buffer), response))
+23 -5
Ver Arquivo
@@ -1,7 +1,7 @@
/*
* Threading primitives for CUPS.
*
* Copyright 2009-2017 by Apple Inc.
* Copyright © 2009-2018 by Apple Inc.
*
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
@@ -56,8 +56,16 @@ _cupsCondWait(_cups_cond_t *cond, /* I - Condition */
{
struct timespec abstime; /* Timeout */
abstime.tv_sec = (long)timeout;
abstime.tv_nsec = (long)(1000000000 * (timeout - (long)timeout));
clock_gettime(CLOCK_REALTIME, &abstime);
abstime.tv_sec += (long)timeout;
abstime.tv_nsec += (long)(1000000000 * (timeout - (long)timeout));
while (abstime.tv_nsec >= 1000000000)
{
abstime.tv_nsec -= 1000000000;
abstime.tv_sec ++;
};
pthread_cond_timedwait(cond, mutex, &abstime);
}
@@ -513,8 +521,7 @@ _cupsThreadCreate(
_cups_thread_func_t func, /* I - Entry point */
void *arg) /* I - Entry point context */
{
fputs("DEBUG: CUPS was compiled without threading support, no thread "
"created.\n", stderr);
fputs("DEBUG: CUPS was compiled without threading support, no thread created.\n", stderr);
(void)func;
(void)arg;
@@ -523,6 +530,17 @@ _cupsThreadCreate(
}
/*
* '_cupsThreadDetach()' - Tell the OS that the thread is running independently.
*/
void
_cupsThreadDetach(_cups_thread_t thread)/* I - Thread ID */
{
(void)thread;
}
/*
* '_cupsThreadWait()' - Wait for a thread to exit.
*/
+61 -27
Ver Arquivo
@@ -1,8 +1,8 @@
/*
* TLS support code for CUPS on macOS.
*
* Copyright 2007-2017 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
* Copyright © 2007-2018 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
@@ -53,7 +53,9 @@ static char *tls_keypath = NULL;
/* Server cert keychain path */
static _cups_mutex_t tls_mutex = _CUPS_MUTEX_INITIALIZER;
/* Mutex for keychain/certs */
static int tls_options = -1;/* Options for TLS connections */
static int tls_options = -1,/* Options for TLS connections */
tls_min_version = _HTTP_TLS_1_0,
tls_max_version = _HTTP_TLS_MAX;
/*
@@ -807,7 +809,6 @@ httpCredentialsString(
CFStringRef cf_name; /* CF common name string */
char name[256]; /* Common name associated with cert */
time_t expiration; /* Expiration date of cert */
_cups_md5_state_t md5_state; /* MD5 state */
unsigned char md5_digest[16]; /* MD5 result */
if ((cf_name = SecCertificateCopySubjectSummary(secCert)) != NULL)
@@ -820,9 +821,7 @@ httpCredentialsString(
expiration = (time_t)(SecCertificateNotValidAfter(secCert) + kCFAbsoluteTimeIntervalSince1970);
_cupsMD5Init(&md5_state);
_cupsMD5Append(&md5_state, first->data, (int)first->datalen);
_cupsMD5Finish(&md5_state, md5_digest);
cupsHashData("md5", first->data, first->datalen, md5_digest, sizeof(md5_digest));
snprintf(buffer, bufsize, "%s / %s / %02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X", name, httpGetDateString(expiration), md5_digest[0], md5_digest[1], md5_digest[2], md5_digest[3], md5_digest[4], md5_digest[5], md5_digest[6], md5_digest[7], md5_digest[8], md5_digest[9], md5_digest[10], md5_digest[11], md5_digest[12], md5_digest[13], md5_digest[14], md5_digest[15]);
@@ -1139,9 +1138,16 @@ _httpTLSRead(http_t *http, /* I - HTTP connection */
*/
void
_httpTLSSetOptions(int options) /* I - Options */
_httpTLSSetOptions(int options, /* I - Options */
int min_version, /* I - Minimum TLS version */
int max_version) /* I - Maximum TLS version */
{
tls_options = options;
if (!(options & _HTTP_TLS_SET_DEFAULT) || tls_options < 0)
{
tls_options = options;
tls_min_version = min_version;
tls_max_version = max_version;
}
}
@@ -1173,7 +1179,7 @@ _httpTLSStart(http_t *http) /* I - HTTP connection */
{
DEBUG_puts("4_httpTLSStart: Setting defaults.");
_cupsSetDefaults();
DEBUG_printf(("4_httpTLSStart: tls_options=%x", tls_options));
DEBUG_printf(("4_httpTLSStart: tls_options=%x, tls_min_version=%d, tls_max_version=%d", tls_options, tls_min_version, tls_max_version));
}
#ifdef HAVE_SECKEYCHAINOPEN
@@ -1216,22 +1222,23 @@ _httpTLSStart(http_t *http) /* I - HTTP connection */
if (!error)
{
SSLProtocol minProtocol;
if (tls_options & _HTTP_TLS_DENY_TLS10)
minProtocol = kTLSProtocol11;
else if (tls_options & _HTTP_TLS_ALLOW_SSL3)
minProtocol = kSSLProtocol3;
else
minProtocol = kTLSProtocol1;
error = SSLSetProtocolVersionMin(http->tls, minProtocol);
DEBUG_printf(("4_httpTLSStart: SSLSetProtocolVersionMin(%d), error=%d", minProtocol, (int)error));
if (!error && (tls_options & _HTTP_TLS_ONLY_TLS10))
static const SSLProtocol protocols[] = /* Min/max protocol versions */
{
error = SSLSetProtocolVersionMax(http->tls, kTLSProtocol1);
DEBUG_printf(("4_httpTLSStart: SSLSetProtocolVersionMax(kTLSProtocol1), error=%d", (int)error));
kSSLProtocol3,
kTLSProtocol1,
kTLSProtocol11,
kTLSProtocol12,
kTLSProtocol12, /* TODO: update to 1.3 when 1.3 is supported */
kTLSProtocol12 /* TODO: update to 1.3 when 1.3 is supported */
};
error = SSLSetProtocolVersionMin(http->tls, protocols[tls_min_version]);
DEBUG_printf(("4_httpTLSStart: SSLSetProtocolVersionMin(%d), error=%d", protocols[tls_min_version], (int)error));
if (!error)
{
error = SSLSetProtocolVersionMax(http->tls, protocols[tls_max_version]);
DEBUG_printf(("4_httpTLSStart: SSLSetProtocolVersionMax(%d), error=%d", protocols[tls_max_version], (int)error));
}
}
@@ -1531,7 +1538,28 @@ _httpTLSStart(http_t *http) /* I - HTTP connection */
if (!error)
{
int done = 0; /* Are we done yet? */
int done = 0; /* Are we done yet? */
double old_timeout; /* Old timeout value */
http_timeout_cb_t old_cb; /* Old timeout callback */
void *old_data; /* Old timeout data */
/*
* Enforce a minimum timeout of 10 seconds for the TLS handshake...
*/
old_timeout = http->timeout_value;
old_cb = http->timeout_cb;
old_data = http->timeout_data;
if (!old_cb || old_timeout < 10.0)
{
DEBUG_puts("4_httpTLSStart: Setting timeout to 10 seconds.");
httpSetTimeout(http, 10.0, NULL, NULL);
}
/*
* Do the TLS handshake...
*/
while (!error && !done)
{
@@ -1652,6 +1680,12 @@ _httpTLSStart(http_t *http) /* I - HTTP connection */
break;
}
}
/*
* Restore the previous timeout settings...
*/
httpSetTimeout(http, old_timeout, old_cb, old_data);
}
if (error)
@@ -2084,7 +2118,7 @@ http_cdsa_read(
http = (http_t *)connection;
if (!http->blocking)
if (!http->blocking || http->timeout_value > 0.0)
{
/*
* Make sure we have data before we read...
+95 -23
Ver Arquivo
@@ -1,8 +1,8 @@
/*
* TLS support code for CUPS using GNU TLS.
*
* Copyright 2007-2017 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
* Copyright © 2007-2018 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
@@ -35,7 +35,9 @@ static char *tls_keypath = NULL;
/* Server cert keychain path */
static _cups_mutex_t tls_mutex = _CUPS_MUTEX_INITIALIZER;
/* Mutex for keychain/certs */
static int tls_options = -1;/* Options for TLS connections */
static int tls_options = -1,/* Options for TLS connections */
tls_min_version = _HTTP_TLS_1_0,
tls_max_version = _HTTP_TLS_MAX;
/*
@@ -397,7 +399,7 @@ httpCredentialsAreValidForName(
for (i = 0; i < count; i ++)
{
rserial_size = sizeof(rserial);
if (!gnutls_x509_crl_get_crt_serial(tls_crl, (unsigned)i, rserial, &rserial_size, NULL) && cserial_size == rserial_size && !memcmp(cserial, rserial, rserial_size))
if (!gnutls_x509_crl_get_crt_serial(tls_crl, (unsigned)i, rserial, &rserial_size, NULL) && cserial_size == rserial_size && !memcmp(cserial, rserial, (int)rserial_size))
{
result = 0;
break;
@@ -646,7 +648,6 @@ httpCredentialsString(
char name[256]; /* Common name associated with cert */
size_t namelen; /* Length of name */
time_t expiration; /* Expiration date of cert */
_cups_md5_state_t md5_state; /* MD5 state */
unsigned char md5_digest[16]; /* MD5 result */
namelen = sizeof(name) - 1;
@@ -657,9 +658,7 @@ httpCredentialsString(
expiration = gnutls_x509_crt_get_expiration_time(cert);
_cupsMD5Init(&md5_state);
_cupsMD5Append(&md5_state, first->data, (int)first->datalen);
_cupsMD5Finish(&md5_state, md5_digest);
cupsHashData("md5", first->data, first->datalen, md5_digest, sizeof(md5_digest));
snprintf(buffer, bufsize, "%s / %s / %02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X", name, httpGetDateString(expiration), md5_digest[0], md5_digest[1], md5_digest[2], md5_digest[3], md5_digest[4], md5_digest[5], md5_digest[6], md5_digest[7], md5_digest[8], md5_digest[9], md5_digest[10], md5_digest[11], md5_digest[12], md5_digest[13], md5_digest[14], md5_digest[15]);
@@ -1094,7 +1093,7 @@ http_gnutls_read(
http = (http_t *)ptr;
if (!http->blocking)
if (!http->blocking || http->timeout_value > 0.0)
{
/*
* Make sure we have data before we read...
@@ -1224,9 +1223,16 @@ _httpTLSSetCredentials(http_t *http) /* I - Connection to server */
*/
void
_httpTLSSetOptions(int options) /* I - Options */
_httpTLSSetOptions(int options, /* I - Options */
int min_version, /* I - Minimum TLS version */
int max_version) /* I - Maximum TLS version */
{
tls_options = options;
if (!(options & _HTTP_TLS_SET_DEFAULT) || tls_options < 0)
{
tls_options = options;
tls_min_version = min_version;
tls_max_version = max_version;
}
}
@@ -1244,6 +1250,19 @@ _httpTLSStart(http_t *http) /* I - Connection to server */
/* TLS credentials */
char priority_string[2048];
/* Priority string */
int version; /* Current version */
double old_timeout; /* Old timeout value */
http_timeout_cb_t old_cb; /* Old timeout callback */
void *old_data; /* Old timeout data */
static const char * const versions[] =/* SSL/TLS versions */
{
"VERS-SSL3.0",
"VERS-TLS1.0",
"VERS-TLS1.1",
"VERS-TLS1.2",
"VERS-TLS1.3",
"VERS-TLS-ALL"
};
DEBUG_printf(("3_httpTLSStart(http=%p)", http));
@@ -1505,22 +1524,49 @@ _httpTLSStart(http_t *http) /* I - Connection to server */
strlcpy(priority_string, "NORMAL", sizeof(priority_string));
if (tls_options & _HTTP_TLS_DENY_TLS10)
strlcat(priority_string, ":+VERS-TLS-ALL:-VERS-TLS1.0:-VERS-SSL3.0", sizeof(priority_string));
else if (tls_options & _HTTP_TLS_ALLOW_SSL3)
strlcat(priority_string, ":+VERS-TLS-ALL", sizeof(priority_string));
else if (tls_options & _HTTP_TLS_ONLY_TLS10)
strlcat(priority_string, ":-VERS-TLS-ALL:-VERS-SSL3.0:+VERS-TLS1.0", sizeof(priority_string));
if (tls_max_version < _HTTP_TLS_MAX)
{
/*
* Require specific TLS versions...
*/
strlcat(priority_string, ":-VERS-TLS-ALL", sizeof(priority_string));
for (version = tls_min_version; version <= tls_max_version; version ++)
{
strlcat(priority_string, ":+", sizeof(priority_string));
strlcat(priority_string, versions[version], sizeof(priority_string));
}
}
else if (tls_min_version == _HTTP_TLS_SSL3)
{
/*
* Allow all versions of TLS and SSL/3.0...
*/
strlcat(priority_string, ":+VERS-TLS-ALL:+VERS-SSL3.0", sizeof(priority_string));
}
else
strlcat(priority_string, ":+VERS-TLS-ALL:-VERS-SSL3.0", sizeof(priority_string));
{
/*
* Require a minimum version...
*/
if (!(tls_options & _HTTP_TLS_ALLOW_RC4))
strlcat(priority_string, ":-ARCFOUR-128", sizeof(priority_string));
strlcat(priority_string, ":+VERS-TLS-ALL", sizeof(priority_string));
for (version = 0; version < tls_min_version; version ++)
{
strlcat(priority_string, ":-", sizeof(priority_string));
strlcat(priority_string, versions[version], sizeof(priority_string));
}
}
if (!(tls_options & _HTTP_TLS_ALLOW_DH))
strlcat(priority_string, ":!ANON-DH", sizeof(priority_string));
if (tls_options & _HTTP_TLS_ALLOW_RC4)
strlcat(priority_string, ":+ARCFOUR-128", sizeof(priority_string));
else
strlcat(priority_string, ":!ARCFOUR-128", sizeof(priority_string));
if (!(tls_options & _HTTP_TLS_DENY_CBC))
strlcat(priority_string, ":!ANON-DH", sizeof(priority_string));
if (tls_options & _HTTP_TLS_DENY_CBC)
strlcat(priority_string, ":!AES-128-CBC:!AES-256-CBC:!CAMELLIA-128-CBC:!CAMELLIA-256-CBC:!3DES-CBC", sizeof(priority_string));
#ifdef HAVE_GNUTLS_PRIORITY_SET_DIRECT
@@ -1541,6 +1587,24 @@ _httpTLSStart(http_t *http) /* I - Connection to server */
#endif /* HAVE_GNUTLS_TRANSPORT_SET_PULL_TIMEOUT_FUNCTION */
gnutls_transport_set_push_function(http->tls, http_gnutls_write);
/*
* Enforce a minimum timeout of 10 seconds for the TLS handshake...
*/
old_timeout = http->timeout_value;
old_cb = http->timeout_cb;
old_data = http->timeout_data;
if (!old_cb || old_timeout < 10.0)
{
DEBUG_puts("4_httpTLSStart: Setting timeout to 10 seconds.");
httpSetTimeout(http, 10.0, NULL, NULL);
}
/*
* Do the TLS handshake...
*/
while ((status = gnutls_handshake(http->tls)) != GNUTLS_E_SUCCESS)
{
DEBUG_printf(("5_httpStartTLS: gnutls_handshake returned %d (%s)",
@@ -1558,10 +1622,18 @@ _httpTLSStart(http_t *http) /* I - Connection to server */
free(credentials);
http->tls = NULL;
httpSetTimeout(http, old_timeout, old_cb, old_data);
return (-1);
}
}
/*
* Restore the previous timeout settings...
*/
httpSetTimeout(http, old_timeout, old_cb, old_data);
http->tls_credentials = credentials;
return (0);
+28 -18
Ver Arquivo
@@ -2,7 +2,7 @@
* TLS support for CUPS on Windows using the Security Support Provider
* Interface (SSPI).
*
* Copyright 2010-2015 by Apple Inc.
* Copyright 2010-2018 by Apple Inc.
*
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
@@ -52,7 +52,9 @@
* Local globals...
*/
static int tls_options = -1;/* Options for TLS connections */
static int tls_options = -1,/* Options for TLS connections */
tls_min_version = _HTTP_TLS_1_0,
tls_max_version = _HTTP_TLS_MAX;
/*
@@ -351,7 +353,6 @@ httpCredentialsString(
SYSTEMTIME systime; /* System time */
struct tm tm; /* UNIX date/time */
time_t expiration; /* Expiration date of cert */
_cups_md5_state_t md5_state; /* MD5 state */
unsigned char md5_digest[16]; /* MD5 result */
FileTimeToSystemTime(&(cert->pCertInfo->NotAfter), &systime);
@@ -378,9 +379,7 @@ httpCredentialsString(
else
strlcpy(cert_name, "unknown", sizeof(cert_name));
_cupsMD5Init(&md5_state);
_cupsMD5Append(&md5_state, first->data, (int)first->datalen);
_cupsMD5Finish(&md5_state, md5_digest);
cupsHashData("md5", first->data, first->datalen, md5_digest, sizeof(md5_digest));
snprintf(buffer, bufsize, "%s / %s / %02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X", cert_name, httpGetDateString(expiration), md5_digest[0], md5_digest[1], md5_digest[2], md5_digest[3], md5_digest[4], md5_digest[5], md5_digest[6], md5_digest[7], md5_digest[8], md5_digest[9], md5_digest[10], md5_digest[11], md5_digest[12], md5_digest[13], md5_digest[14], md5_digest[15]);
@@ -911,9 +910,16 @@ _httpTLSRead(http_t *http, /* I - HTTP connection */
*/
void
_httpTLSSetOptions(int options) /* I - Options */
_httpTLSSetOptions(int options, /* I - Options */
int min_version, /* I - Minimum TLS version */
int max_version) /* I - Maximum TLS version */
{
tls_options = options;
if (!(options & _HTTP_TLS_SET_DEFAULT) || tls_options < 0)
{
tls_options = options;
tls_min_version = min_version;
tls_max_version = max_version;
}
}
@@ -1761,34 +1767,38 @@ http_sspi_find_credentials(
#ifdef SP_PROT_TLS1_2_SERVER
if (http->mode == _HTTP_MODE_SERVER)
{
if (tls_options & _HTTP_TLS_DENY_TLS10)
SchannelCred.grbitEnabledProtocols = SP_PROT_TLS1_2_SERVER | SP_PROT_TLS1_1_SERVER;
else if (tls_options & _HTTP_TLS_ALLOW_SSL3)
if (tls_min_version == _HTTP_TLS_SSL3)
SchannelCred.grbitEnabledProtocols = SP_PROT_TLS1_2_SERVER | SP_PROT_TLS1_1_SERVER | SP_PROT_TLS1_0_SERVER | SP_PROT_SSL3_SERVER;
else
else if (tls_min_version == _HTTP_TLS_1_0)
SchannelCred.grbitEnabledProtocols = SP_PROT_TLS1_2_SERVER | SP_PROT_TLS1_1_SERVER | SP_PROT_TLS1_0_SERVER;
else if (tls_min_version == _HTTP_TLS_1_1)
SchannelCred.grbitEnabledProtocols = SP_PROT_TLS1_2_SERVER | SP_PROT_TLS1_1_SERVER;
else
SchannelCred.grbitEnabledProtocols = SP_PROT_TLS1_2_SERVER;
}
else
{
if (tls_options & _HTTP_TLS_DENY_TLS10)
SchannelCred.grbitEnabledProtocols = SP_PROT_TLS1_2_CLIENT | SP_PROT_TLS1_1_CLIENT;
else if (tls_options & _HTTP_TLS_ALLOW_SSL3)
if (tls_min_version == _HTTP_TLS_SSL3)
SchannelCred.grbitEnabledProtocols = SP_PROT_TLS1_2_CLIENT | SP_PROT_TLS1_1_CLIENT | SP_PROT_TLS1_0_CLIENT | SP_PROT_SSL3_CLIENT;
else
else if (tls_min_version == _HTTP_TLS_1_0)
SchannelCred.grbitEnabledProtocols = SP_PROT_TLS1_2_CLIENT | SP_PROT_TLS1_1_CLIENT | SP_PROT_TLS1_0_CLIENT;
else if (tls_min_version == _HTTP_TLS_1_1)
SchannelCred.grbitEnabledProtocols = SP_PROT_TLS1_2_CLIENT | SP_PROT_TLS1_1_CLIENT;
else
SchannelCred.grbitEnabledProtocols = SP_PROT_TLS1_2_CLIENT;
}
#else
if (http->mode == _HTTP_MODE_SERVER)
{
if (tls_options & _HTTP_TLS_ALLOW_SSL3)
if (tls_min_version == _HTTP_TLS_SSL3)
SchannelCred.grbitEnabledProtocols = SP_PROT_TLS1_SERVER | SP_PROT_SSL3_SERVER;
else
SchannelCred.grbitEnabledProtocols = SP_PROT_TLS1_SERVER;
}
else
{
if (tls_options & _HTTP_TLS_ALLOW_SSL3)
if (tls_min_version == _HTTP_TLS_SSL3)
SchannelCred.grbitEnabledProtocols = SP_PROT_TLS1_CLIENT | SP_PROT_SSL3_CLIENT;
else
SchannelCred.grbitEnabledProtocols = SP_PROT_TLS1_CLIENT;
+1 -1
Ver Arquivo
@@ -36,7 +36,7 @@
/*
* Local functions...
* Include platform-specific TLS code...
*/
#ifdef HAVE_SSL
+6 -3
Ver Arquivo
@@ -54,6 +54,8 @@ main(int argc, /* I - Number of command-line arguments */
int af = AF_UNSPEC, /* Address family */
tls_options = _HTTP_TLS_NONE,
/* TLS options */
tls_min_version = _HTTP_TLS_1_0,
tls_max_version = _HTTP_TLS_MAX,
verbose = 0; /* Verbosity */
ipp_t *request, /* IPP Get-Printer-Attributes request */
*response; /* IPP Get-Printer-Attributes response */
@@ -88,11 +90,12 @@ main(int argc, /* I - Number of command-line arguments */
}
else if (!strcmp(argv[i], "--no-tls10"))
{
tls_options |= _HTTP_TLS_DENY_TLS10;
tls_min_version = _HTTP_TLS_1_1;
}
else if (!strcmp(argv[i], "--tls10"))
{
tls_options |= _HTTP_TLS_ONLY_TLS10;
tls_min_version = _HTTP_TLS_1_0;
tls_max_version = _HTTP_TLS_1_0;
}
else if (!strcmp(argv[i], "--rc4"))
{
@@ -148,7 +151,7 @@ main(int argc, /* I - Number of command-line arguments */
if (!port)
port = 631;
_httpTLSSetOptions(tls_options);
_httpTLSSetOptions(tls_options, tls_min_version, tls_max_version);
http = httpConnect2(server, port, NULL, af, HTTP_ENCRYPTION_ALWAYS, 1, 30000, NULL);
if (!http)
+38 -12
Ver Arquivo
@@ -54,7 +54,9 @@
typedef struct _cups_client_conf_s /**** client.conf config data ****/
{
#ifdef HAVE_SSL
int ssl_options; /* SSLOptions values */
int ssl_options, /* SSLOptions values */
ssl_min_version,/* Minimum SSL/TLS version */
ssl_max_version;/* Maximum SSL/TLS version */
#endif /* HAVE_SSL */
int trust_first, /* Trust on first use? */
any_root, /* Allow any (e.g., self-signed) root */
@@ -957,7 +959,7 @@ _cupsSetDefaults(void)
cg->validate_certs = cc.validate_certs;
#ifdef HAVE_SSL
_httpTLSSetOptions(cc.ssl_options);
_httpTLSSetOptions(cc.ssl_options | _HTTP_TLS_SET_DEFAULT, cc.ssl_min_version, cc.ssl_max_version);
#endif /* HAVE_SSL */
}
@@ -1164,11 +1166,15 @@ cups_init_client_conf(
memset(cc, 0, sizeof(_cups_client_conf_t));
cc->encryption = (http_encryption_t)-1;
cc->trust_first = -1;
cc->any_root = -1;
cc->expired_certs = -1;
cc->validate_certs = -1;
#ifdef HAVE_SSL
cc->ssl_min_version = _HTTP_TLS_1_0;
cc->ssl_max_version = _HTTP_TLS_MAX;
#endif /* HAVE_SSL */
cc->encryption = (http_encryption_t)-1;
cc->trust_first = -1;
cc->any_root = -1;
cc->expired_certs = -1;
cc->validate_certs = -1;
/*
* Load settings from the org.cups.PrintingPrefs plist (which trump
@@ -1336,7 +1342,9 @@ cups_set_ssl_options(
* SSLOptions [AllowRC4] [AllowSSL3] [AllowDH] [DenyTLS1.0] [None]
*/
int options = _HTTP_TLS_NONE; /* SSL/TLS options */
int options = _HTTP_TLS_NONE, /* SSL/TLS options */
min_version = _HTTP_TLS_1_0, /* Minimum SSL/TLS version */
max_version = _HTTP_TLS_MAX; /* Maximum SSL/TLS version */
char temp[256], /* Copy of value */
*start, /* Start of option */
*end; /* End of option */
@@ -1364,20 +1372,38 @@ cups_set_ssl_options(
if (!_cups_strcasecmp(start, "AllowRC4"))
options |= _HTTP_TLS_ALLOW_RC4;
else if (!_cups_strcasecmp(start, "AllowSSL3"))
options |= _HTTP_TLS_ALLOW_SSL3;
min_version = _HTTP_TLS_SSL3;
else if (!_cups_strcasecmp(start, "AllowDH"))
options |= _HTTP_TLS_ALLOW_DH;
else if (!_cups_strcasecmp(start, "DenyCBC"))
options |= _HTTP_TLS_DENY_CBC;
else if (!_cups_strcasecmp(start, "DenyTLS1.0"))
options |= _HTTP_TLS_DENY_TLS10;
min_version = _HTTP_TLS_1_1;
else if (!_cups_strcasecmp(start, "MaxTLS1.0"))
max_version = _HTTP_TLS_1_0;
else if (!_cups_strcasecmp(start, "MaxTLS1.1"))
max_version = _HTTP_TLS_1_1;
else if (!_cups_strcasecmp(start, "MaxTLS1.2"))
max_version = _HTTP_TLS_1_2;
else if (!_cups_strcasecmp(start, "MaxTLS1.3"))
max_version = _HTTP_TLS_1_3;
else if (!_cups_strcasecmp(start, "MinTLS1.0"))
min_version = _HTTP_TLS_1_0;
else if (!_cups_strcasecmp(start, "MinTLS1.1"))
min_version = _HTTP_TLS_1_1;
else if (!_cups_strcasecmp(start, "MinTLS1.2"))
min_version = _HTTP_TLS_1_2;
else if (!_cups_strcasecmp(start, "MinTLS1.3"))
min_version = _HTTP_TLS_1_3;
else if (!_cups_strcasecmp(start, "None"))
options = _HTTP_TLS_NONE;
}
cc->ssl_options = options;
cc->ssl_options = options;
cc->ssl_max_version = max_version;
cc->ssl_min_version = min_version;
DEBUG_printf(("4cups_set_ssl_options(cc=%p, value=\"%s\") options=%x", (void *)cc, value, options));
DEBUG_printf(("4cups_set_ssl_options(cc=%p, value=\"%s\") options=%x, min_version=%d, max_version=%d", (void *)cc, value, options, min_version, max_version));
}
#endif /* HAVE_SSL */
+3 -1
Ver Arquivo
@@ -1,7 +1,7 @@
/*
* API versioning definitions for CUPS.
*
* Copyright 2007-2017 by Apple Inc.
* Copyright © 2007-2018 by Apple Inc.
*
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
@@ -71,6 +71,7 @@
# define _CUPS_API_2_0 AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER
# define _CUPS_API_2_2 AVAILABLE_MAC_OS_X_VERSION_10_12_AND_LATER
# define _CUPS_API_2_2_4 AVAILABLE_MAC_OS_X_VERSION_10_13_AND_LATER
# define _CUPS_API_2_2_7
# else
# define _CUPS_API_1_1_19
# define _CUPS_API_1_1_20
@@ -84,6 +85,7 @@
# define _CUPS_API_2_0
# define _CUPS_API_2_2
# define _CUPS_API_2_2_4
# define _CUPS_API_2_2_7
# endif /* __APPLE__ && !_CUPS_SOURCE */
/*
+3 -3
Ver Arquivo
@@ -140,9 +140,9 @@
#media "EnvYou4/Envelope You4" 298 666
#media "EnvYou4Rotated/Envelope You4 Long Edge" 666 298
#media "Executive/Executive" 522 756
#media "FanFoldGerman/FanFold German" 612 864
#media "FanFoldGermanLegal/FanFold Legal German" 612 936
#media "FanFoldUS/Fanfold US" 1071 792
#media "FanFoldGerman/European Fanfold" 612 864
#media "FanFoldGermanLegal/European Fanfold Legal" 612 936
#media "FanFoldUS/US Fanfold" 1071 792
#media "Folio/Folio" 595 935
#media "ISOB0/B0" 2835 4008
#media "ISOB1/B1" 2004 2835
Arquivo binário não exibido.
+3 -2
Ver Arquivo
@@ -6125,12 +6125,12 @@ are server-oriented...</p>
<tr><th>HTTP_STATUS_ERROR </th> <td class="description">An error response from httpXxxx()</td></tr>
<tr><th>HTTP_STATUS_EXPECTATION_FAILED </th> <td class="description">The expectation given in an Expect header field was not met</td></tr>
<tr><th>HTTP_STATUS_FORBIDDEN </th> <td class="description">Forbidden to access this URI</td></tr>
<tr><th>HTTP_STATUS_FOUND </th> <td class="description">Document was found at a different URI</td></tr>
<tr><th>HTTP_STATUS_GATEWAY_TIMEOUT </th> <td class="description">Gateway connection timed out</td></tr>
<tr><th>HTTP_STATUS_GONE </th> <td class="description">Server has gone away</td></tr>
<tr><th>HTTP_STATUS_LENGTH_REQUIRED </th> <td class="description">A content length or encoding is required</td></tr>
<tr><th>HTTP_STATUS_METHOD_NOT_ALLOWED </th> <td class="description">Method is not allowed</td></tr>
<tr><th>HTTP_STATUS_MOVED_PERMANENTLY </th> <td class="description">Document has moved permanently</td></tr>
<tr><th>HTTP_STATUS_MOVED_TEMPORARILY </th> <td class="description">Document has moved temporarily</td></tr>
<tr><th>HTTP_STATUS_MULTIPLE_CHOICES </th> <td class="description">Multiple files match request</td></tr>
<tr><th>HTTP_STATUS_NONE <span class="info">&#160;CUPS 1.7/macOS 10.9&#160;</span></th> <td class="description">No Expect value </td></tr>
<tr><th>HTTP_STATUS_NOT_ACCEPTABLE </th> <td class="description">Not Acceptable</td></tr>
@@ -6149,10 +6149,11 @@ are server-oriented...</p>
<tr><th>HTTP_STATUS_REQUEST_TIMEOUT </th> <td class="description">Request timed out</td></tr>
<tr><th>HTTP_STATUS_REQUEST_TOO_LARGE </th> <td class="description">Request entity too large</td></tr>
<tr><th>HTTP_STATUS_RESET_CONTENT </th> <td class="description">Content was reset/recreated</td></tr>
<tr><th>HTTP_STATUS_SEE_OTHER </th> <td class="description">See this other link...</td></tr>
<tr><th>HTTP_STATUS_SEE_OTHER </th> <td class="description">See this other link</td></tr>
<tr><th>HTTP_STATUS_SERVER_ERROR </th> <td class="description">Internal server error</td></tr>
<tr><th>HTTP_STATUS_SERVICE_UNAVAILABLE </th> <td class="description">Service is unavailable</td></tr>
<tr><th>HTTP_STATUS_SWITCHING_PROTOCOLS </th> <td class="description">HTTP upgrade to TLS/SSL</td></tr>
<tr><th>HTTP_STATUS_TEMPORARY_REDIRECT </th> <td class="description">Temporary redirection</td></tr>
<tr><th>HTTP_STATUS_UNAUTHORIZED </th> <td class="description">Unauthorized to access host</td></tr>
<tr><th>HTTP_STATUS_UNSUPPORTED_MEDIATYPE </th> <td class="description">The requested media type is unsupported</td></tr>
<tr><th>HTTP_STATUS_UPGRADE_REQUIRED </th> <td class="description">Upgrade to SSL/TLS required</td></tr>
+4 -2
Ver Arquivo
@@ -44,8 +44,10 @@ CUPS adds the remote hostname ("name@server.example.com") for you. The default n
<dd style="margin-left: 5.0em"><dt><b>SSLOptions None</b>
<dd style="margin-left: 5.0em">Sets encryption options (only in /etc/cups/client.conf).
By default, CUPS only supports encryption using TLS v1.0 or higher using known secure cipher suites.
The <i>AllowDH</i> option enables cipher suites using plain Diffie-Hellman key negotiation.
The <i>AllowRC4</i> option enables the 128-bit RC4 cipher suites, which are required for some older clients that do not implement newer ones.
Security is reduced when <i>Allow</i> options are used.
Security is enhanced when <i>Deny</i> options are used.
The <i>AllowDH</i> option enables cipher suites using plain Diffie-Hellman key negotiation (not supported on systems using GNU TLS).
The <i>AllowRC4</i> option enables the 128-bit RC4 cipher suites, which are required for some older clients.
The <i>AllowSSL3</i> option enables SSL v3.0, which is required for some older clients that do not support TLS v1.0.
The <i>DenyCBC</i> option disables all CBC cipher suites.
The <i>DenyTLS1.0</i> option disables TLS v1.0 support - this sets the minimum protocol version to TLS v1.1.
+7 -4
Ver Arquivo
@@ -95,10 +95,6 @@ The <i>kind</i> strings are:
<dt><b>permissions</b>
<dd style="margin-left: 5.0em">Bad startup file permissions are fatal, for example shared TLS certificate and key files with world-read permissions.
</div>
<dt><a name="FileDevice"></a><b>FileDevice Yes</b>
<dd style="margin-left: 5.0em"><dt><b>FileDevice No</b>
<dd style="margin-left: 5.0em">Specifies whether the file pseudo-device can be used for new printer queues.
The URI "file:///dev/null" is always allowed.
<dt><a name="Group"></a><b>Group </b><i>group-name-or-number</i>
<dd style="margin-left: 5.0em">Specifies the group name or ID that will be used when executing external programs.
The default group is operating system specific but is usually "lp" or "nobody".
@@ -162,6 +158,13 @@ The default is "lp".
<h3><a name="DEPRECATED_DIRECTIVES">Deprecated Directives</a></h3>
The following directives are deprecated and will be removed from a future version of CUPS:
<dl class="man">
<dt><a name="FileDevice"></a><b>FileDevice Yes</b>
<dd style="margin-left: 5.0em"><dt><b>FileDevice No</b>
<dd style="margin-left: 5.0em">Specifies whether the file pseudo-device can be used for new printer queues.
The URI "file:///dev/null" is always allowed.
File devices cannot be used with "raw" print queues - a PPD file is required.
The specified file is overwritten for every print job.
Writing to directories is not supported.
<dt><a name="FontPath"></a><b>FontPath </b><i>directory[:...:directoryN]</i>
<dd style="margin-left: 5.0em">Specifies a colon separated list of directories where fonts can be found.
On Linux the
+4 -2
Ver Arquivo
@@ -283,8 +283,10 @@ The default is "Minimal".
<dd style="margin-left: 5.0em"><dt><b>SSLOptions None</b>
<dd style="margin-left: 5.0em">Sets encryption options.
By default, CUPS only supports encryption using TLS v1.0 or higher using known secure cipher suites.
The <i>AllowDH</i> option enables cipher suites using plain Diffie-Hellman key negotiation.
The <i>AllowRC4</i> option enables the 128-bit RC4 cipher suites, which are required for some older clients that do not implement newer ones.
Security is reduced when <i>Allow</i> options are used.
Security is enhanced when <i>Deny</i> options are used.
The <i>AllowDH</i> option enables cipher suites using plain Diffie-Hellman key negotiation (not supported on systems using GNU TLS).
The <i>AllowRC4</i> option enables the 128-bit RC4 cipher suites, which are required for some older clients.
The <i>AllowSSL3</i> option enables SSL v3.0, which is required for some older clients that do not support TLS v1.0.
The <i>DenyCBC</i> option disables all CBC cipher suites.
The <i>DenyTLS1.0</i> option disables TLS v1.0 support - this sets the minimum protocol version to TLS v1.1.
+1
Ver Arquivo
@@ -80,6 +80,7 @@ Use the <i>-m</i> option with the
<a href="man-lpinfo.html?TOPIC=Man+Pages"><b>lpinfo</b>(8)</a>
command to get a list of supported models.
The model "raw" clears any existing PPD file and the model "everywhere" queries the printer referred to by the specified IPP <i>device-uri</i>.
Note: The "raw" model is deprecated and will not be supported in a future version of CUPS.
<dt><b>-o cupsIPPSupplies=true</b>
<dd style="margin-left: 5.0em"><dt><b>-o cupsIPPSupplies=false</b>
<dd style="margin-left: 5.0em">Specifies whether IPP supply level values should be reported.
+229 -39
Ver Arquivo
@@ -1,7 +1,7 @@
/*
* Raster file routines for CUPS.
*
* Copyright 2007-2016 by Apple Inc.
* Copyright 2007-2018 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products.
*
* This file is part of the CUPS Imaging library.
@@ -50,11 +50,96 @@ struct _cups_raster_s /**** Raster stream data ****/
*bufend; /* End of current (read) buffer */
size_t bufsize; /* Buffer size */
#ifdef DEBUG
size_t iocount; /* Number of bytes read/written */
size_t iostart, /* Start of read/write buffer */
iocount; /* Number of bytes read/written */
#endif /* DEBUG */
unsigned apple_page_count;/* Apple raster page count */
};
typedef void (*_cups_copyfunc_t)(void *dst, const void *src, size_t bytes);
/*
* Local globals...
*/
#ifdef DEBUG
static const char * const cups_color_spaces[] =
{ /* Color spaces */
"CUPS_CSPACE_W",
"CUPS_CSPACE_RGB",
"CUPS_CSPACE_RGBA",
"CUPS_CSPACE_K",
"CUPS_CSPACE_CMY",
"CUPS_CSPACE_YMC",
"CUPS_CSPACE_CMYK",
"CUPS_CSPACE_YMCK",
"CUPS_CSPACE_KCMY",
"CUPS_CSPACE_KCMYcm",
"CUPS_CSPACE_GMCK",
"CUPS_CSPACE_GMCS",
"CUPS_CSPACE_WHITE",
"CUPS_CSPACE_GOLD",
"CUPS_CSPACE_SILVER",
"CUPS_CSPACE_CIEXYZ",
"CUPS_CSPACE_CIELab",
"CUPS_CSPACE_RGBW",
"CUPS_CSPACE_SW",
"CUPS_CSPACE_SRGB",
"CUPS_CSPACE_ADOBERGB",
"21",
"22",
"23",
"24",
"25",
"26",
"27",
"28",
"29",
"30",
"31",
"CUPS_CSPACE_ICC1",
"CUPS_CSPACE_ICC2",
"CUPS_CSPACE_ICC3",
"CUPS_CSPACE_ICC4",
"CUPS_CSPACE_ICC5",
"CUPS_CSPACE_ICC6",
"CUPS_CSPACE_ICC7",
"CUPS_CSPACE_ICC8",
"CUPS_CSPACE_ICC9",
"CUPS_CSPACE_ICCA",
"CUPS_CSPACE_ICCB",
"CUPS_CSPACE_ICCC",
"CUPS_CSPACE_ICCD",
"CUPS_CSPACE_ICCE",
"CUPS_CSPACE_ICCF",
"47",
"CUPS_CSPACE_DEVICE1",
"CUPS_CSPACE_DEVICE2",
"CUPS_CSPACE_DEVICE3",
"CUPS_CSPACE_DEVICE4",
"CUPS_CSPACE_DEVICE5",
"CUPS_CSPACE_DEVICE6",
"CUPS_CSPACE_DEVICE7",
"CUPS_CSPACE_DEVICE8",
"CUPS_CSPACE_DEVICE9",
"CUPS_CSPACE_DEVICEA",
"CUPS_CSPACE_DEVICEB",
"CUPS_CSPACE_DEVICEC",
"CUPS_CSPACE_DEVICED",
"CUPS_CSPACE_DEVICEE",
"CUPS_CSPACE_DEVICEF"
};
static const char * const cups_modes[] =
{ /* Open modes */
"CUPS_RASTER_READ",
"CUPS_RASTER_WRITE",
"CUPS_RASTER_WRITE_COMPRESSED",
"CUPS_RASTER_WRITE_PWG",
"CUPS_RASTER_WRITE_APPLE"
};
#endif /* DEBUG */
/*
* Local functions...
@@ -62,13 +147,12 @@ struct _cups_raster_s /**** Raster stream data ****/
static ssize_t cups_raster_io(cups_raster_t *r, unsigned char *buf, size_t bytes);
static unsigned cups_raster_read_header(cups_raster_t *r);
static ssize_t cups_raster_read(cups_raster_t *r, unsigned char *buf,
size_t bytes);
static ssize_t cups_raster_read(cups_raster_t *r, unsigned char *buf, size_t bytes);
static int cups_raster_update(cups_raster_t *r);
static ssize_t cups_raster_write(cups_raster_t *r,
const unsigned char *pixels);
static ssize_t cups_raster_write(cups_raster_t *r, const unsigned char *pixels);
static ssize_t cups_read_fd(void *ctx, unsigned char *buf, size_t bytes);
static void cups_swap(unsigned char *buf, size_t bytes);
static void cups_swap_copy(unsigned char *dst, const unsigned char *src, size_t bytes);
static ssize_t cups_write_fd(void *ctx, unsigned char *buf, size_t bytes);
@@ -356,6 +440,8 @@ cupsRasterOpen(int fd, /* I - File descriptor */
@code CUPS_RASTER_WRITE_COMPRESSED@,
or @code CUPS_RASTER_WRITE_PWG@ */
{
DEBUG_printf(("cupsRasterOpen(fd=%d, mode=%s)", fd, cups_modes[mode]));
if (mode == CUPS_RASTER_READ)
return (cupsRasterOpenIO(cups_read_fd, (void *)((intptr_t)fd), mode));
else
@@ -387,12 +473,15 @@ cupsRasterOpenIO(
cups_raster_t *r; /* New stream */
DEBUG_printf(("cupsRasterOpenIO(iocb=%p, ctx=%p, mode=%s)", (void *)iocb, ctx, cups_modes[mode]));
_cupsRasterClearError();
if ((r = calloc(sizeof(cups_raster_t), 1)) == NULL)
{
_cupsRasterAddError("Unable to allocate memory for raster stream: %s\n",
strerror(errno));
DEBUG_puts("1cupsRasterOpenIO: Returning NULL.");
return (NULL);
}
@@ -412,6 +501,7 @@ cupsRasterOpenIO(
_cupsRasterAddError("Unable to read header from raster stream: %s\n",
strerror(errno));
free(r);
DEBUG_puts("1cupsRasterOpenIO: Unable to read header, returning NULL.");
return (NULL);
}
@@ -426,6 +516,7 @@ cupsRasterOpenIO(
{
_cupsRasterAddError("Unknown raster format %08x!\n", r->sync);
free(r);
DEBUG_puts("1cupsRasterOpenIO: Unknown format, returning NULL.");
return (NULL);
}
@@ -435,6 +526,8 @@ cupsRasterOpenIO(
r->sync == CUPS_RASTER_REVSYNCapple)
r->compressed = 1;
DEBUG_printf(("1cupsRasterOpenIO: sync=%08x", r->sync));
if (r->sync == CUPS_RASTER_REVSYNC ||
r->sync == CUPS_RASTER_REVSYNCv1 ||
r->sync == CUPS_RASTER_REVSYNCv2 ||
@@ -452,12 +545,14 @@ cupsRasterOpenIO(
_cupsRasterAddError("Unable to read header from raster stream: %s\n",
strerror(errno));
free(r);
DEBUG_puts("1cupsRasterOpenIO: Unable to read header, returning NULL.");
return (NULL);
}
}
DEBUG_printf(("1cupsRasterOpenIO: r->swapped=%d, r->sync=%08x\n", r->swapped, r->sync));
#ifdef DEBUG
r->iostart = r->iocount;
#endif /* DEBUG */
}
else
{
@@ -496,10 +591,13 @@ cupsRasterOpenIO(
_cupsRasterAddError("Unable to write raster stream header: %s\n",
strerror(errno));
free(r);
DEBUG_puts("1cupsRasterOpenIO: Unable to write header, returning NULL.");
return (NULL);
}
}
DEBUG_printf(("1cupsRasterOpenIO: compressed=%d, swapped=%d, returning %p", r->compressed, r->swapped, (void *)r));
return (r);
}
@@ -522,6 +620,8 @@ cupsRasterReadHeader(
cups_raster_t *r, /* I - Raster stream */
cups_page_header_t *h) /* I - Pointer to header data */
{
DEBUG_printf(("cupsRasterReadHeader(r=%p, h=%p)", (void *)r, (void *)h));
/*
* Get the raster header...
*/
@@ -529,6 +629,7 @@ cupsRasterReadHeader(
if (!cups_raster_read_header(r))
{
memset(h, 0, sizeof(cups_page_header_t));
DEBUG_puts("1cupsRasterReadHeader: Unable to read page header, returning 0.");
return (0);
}
@@ -538,6 +639,14 @@ cupsRasterReadHeader(
memcpy(h, &(r->header), sizeof(cups_page_header_t));
DEBUG_printf(("1cupsRasterReadHeader: cupsColorSpace=%s", cups_color_spaces[h->cupsColorSpace]));
DEBUG_printf(("1cupsRasterReadHeader: cupsBitsPerColor=%u", h->cupsBitsPerColor));
DEBUG_printf(("1cupsRasterReadHeader: cupsBitsPerPixel=%u", h->cupsBitsPerPixel));
DEBUG_printf(("1cupsRasterReadHeader: cupsBytesPerLine=%u", h->cupsBytesPerLine));
DEBUG_printf(("1cupsRasterReadHeader: cupsWidth=%u", h->cupsWidth));
DEBUG_printf(("1cupsRasterReadHeader: cupsHeight=%u", h->cupsHeight));
DEBUG_puts("1cupsRasterReadHeader: Returning 1.");
return (1);
}
@@ -563,6 +672,7 @@ cupsRasterReadHeader2(
if (!cups_raster_read_header(r))
{
memset(h, 0, sizeof(cups_page_header2_t));
DEBUG_puts("1cupsRasterReadHeader2: Unable to read header, returning 0.");
return (0);
}
@@ -572,6 +682,14 @@ cupsRasterReadHeader2(
memcpy(h, &(r->header), sizeof(cups_page_header2_t));
DEBUG_printf(("1cupsRasterReadHeader2: cupsColorSpace=%s", cups_color_spaces[h->cupsColorSpace]));
DEBUG_printf(("1cupsRasterReadHeader2: cupsBitsPerColor=%u", h->cupsBitsPerColor));
DEBUG_printf(("1cupsRasterReadHeader2: cupsBitsPerPixel=%u", h->cupsBitsPerPixel));
DEBUG_printf(("1cupsRasterReadHeader2: cupsBytesPerLine=%u", h->cupsBytesPerLine));
DEBUG_printf(("1cupsRasterReadHeader2: cupsWidth=%u", h->cupsWidth));
DEBUG_printf(("1cupsRasterReadHeader2: cupsHeight=%u", h->cupsHeight));
DEBUG_puts("1cupsRasterReadHeader2: Returning 1.");
return (1);
}
@@ -777,7 +895,10 @@ cupsRasterReadPixels(cups_raster_t *r, /* I - Raster stream */
r->header.cupsBitsPerPixel == 12 ||
r->header.cupsBitsPerPixel == 16) &&
r->swapped)
cups_swap(ptr, (size_t)bytes);
{
DEBUG_puts("1cupsRasterReadPixels: Swapping bytes.");
cups_swap(ptr, (size_t)cupsBytesPerLine);
}
/*
* Update pointers...
@@ -847,8 +968,20 @@ cupsRasterWriteHeader(
cups_raster_t *r, /* I - Raster stream */
cups_page_header_t *h) /* I - Raster page header */
{
DEBUG_printf(("cupsRasterWriteHeader(r=%p, h=%p)", (void *)r, (void *)h));
if (r == NULL || r->mode == CUPS_RASTER_READ)
{
DEBUG_puts("1cupsRasterWriteHeader: Returning 0.");
return (0);
}
DEBUG_printf(("1cupsRasterWriteHeader: cupsColorSpace=%s", cups_color_spaces[h->cupsColorSpace]));
DEBUG_printf(("1cupsRasterWriteHeader: cupsBitsPerColor=%u", h->cupsBitsPerColor));
DEBUG_printf(("1cupsRasterWriteHeader: cupsBitsPerPixel=%u", h->cupsBitsPerPixel));
DEBUG_printf(("1cupsRasterWriteHeader: cupsBytesPerLine=%u", h->cupsBytesPerLine));
DEBUG_printf(("1cupsRasterWriteHeader: cupsWidth=%u", h->cupsWidth));
DEBUG_printf(("1cupsRasterWriteHeader: cupsHeight=%u", h->cupsHeight));
/*
* Make a copy of the header, and compute the number of raster
@@ -859,7 +992,20 @@ cupsRasterWriteHeader(
memcpy(&(r->header), h, sizeof(cups_page_header_t));
if (!cups_raster_update(r))
{
DEBUG_puts("1cupsRasterWriteHeader: Unable to update parameters, returning 0.");
return (0);
}
if (r->mode == CUPS_RASTER_WRITE_APPLE)
{
r->rowheight = h->HWResolution[0] / h->HWResolution[1];
if (h->HWResolution[0] != (r->rowheight * h->HWResolution[1]))
return (0);
}
else
r->rowheight = 1;
/*
* Write the raster header...
@@ -1019,8 +1165,20 @@ cupsRasterWriteHeader2(
cups_raster_t *r, /* I - Raster stream */
cups_page_header2_t *h) /* I - Raster page header */
{
DEBUG_printf(("cupsRasterWriteHeader(r=%p, h=%p)", (void *)r, (void *)h));
if (r == NULL || r->mode == CUPS_RASTER_READ)
{
DEBUG_puts("1cupsRasterWriteHeader2: Returning 0.");
return (0);
}
DEBUG_printf(("1cupsRasterWriteHeader2: cupsColorSpace=%s", cups_color_spaces[h->cupsColorSpace]));
DEBUG_printf(("1cupsRasterWriteHeader2: cupsBitsPerColor=%u", h->cupsBitsPerColor));
DEBUG_printf(("1cupsRasterWriteHeader2: cupsBitsPerPixel=%u", h->cupsBitsPerPixel));
DEBUG_printf(("1cupsRasterWriteHeader2: cupsBytesPerLine=%u", h->cupsBytesPerLine));
DEBUG_printf(("1cupsRasterWriteHeader2: cupsWidth=%u", h->cupsWidth));
DEBUG_printf(("1cupsRasterWriteHeader2: cupsHeight=%u", h->cupsHeight));
/*
* Make a copy of the header, and compute the number of raster
@@ -1030,7 +1188,10 @@ cupsRasterWriteHeader2(
memcpy(&(r->header), h, sizeof(cups_page_header2_t));
if (!cups_raster_update(r))
{
DEBUG_puts("1cupsRasterWriteHeader: Unable to update parameters, returning 0.");
return (0);
}
if (r->mode == CUPS_RASTER_WRITE_APPLE)
{
@@ -1202,7 +1363,6 @@ cupsRasterWritePixels(cups_raster_t *r, /* I - Raster stream */
r->header.cupsBitsPerPixel == 16))
{
unsigned char *bufptr; /* Pointer into write buffer */
unsigned count; /* Remaining count */
/*
* Allocate a write buffer as needed...
@@ -1223,21 +1383,10 @@ cupsRasterWritePixels(cups_raster_t *r, /* I - Raster stream */
}
/*
* Byte swap the pixels...
* Byte swap the pixels and write them...
*/
for (bufptr = r->buffer, count = len; count > 1; count -= 2, bufptr += 2)
{
bufptr[1] = *p++;
bufptr[0] = *p++;
}
if (count) /* This should never happen... */
*bufptr = *p;
/*
* Write the byte-swapped buffer...
*/
cups_swap_copy(r->buffer, p, len);
bytes = cups_raster_io(r, r->buffer, len);
}
@@ -1368,7 +1517,7 @@ cups_raster_read_header(
size_t len; /* Length for read/swap */
DEBUG_printf(("3cups_raster_read_header(r=%p), r->mode=%d", (void *)r, r ? r->mode : 0));
DEBUG_printf(("3cups_raster_read_header(r=%p), r->mode=%s", (void *)r, r ? cups_modes[r->mode] : ""));
if (r == NULL || r->mode != CUPS_RASTER_READ)
return (0);
@@ -1523,10 +1672,7 @@ cups_raster_io(cups_raster_t *r, /* I - Raster stream */
DEBUG_printf(("6cups_raster_io: count=%d, total=%d", (int)count, (int)total));
if (count == 0)
{
DEBUG_puts("6cups_raster_io: Returning 0.");
return (0);
}
break;
else if (count < 0)
{
DEBUG_puts("6cups_raster_io: Returning -1 on error.");
@@ -1538,6 +1684,7 @@ cups_raster_io(cups_raster_t *r, /* I - Raster stream */
#endif /* DEBUG */
}
DEBUG_printf(("6cups_raster_io: iocount=" CUPS_LLFMT, CUPS_LLCAST r->iocount));
DEBUG_printf(("6cups_raster_io: Returning " CUPS_LLFMT ".", CUPS_LLCAST total));
return (total);
@@ -1558,7 +1705,7 @@ cups_raster_read(cups_raster_t *r, /* I - Raster stream */
total; /* Total bytes read */
DEBUG_printf(("5cups_raster_read(r=%p, buf=%p, bytes=" CUPS_LLFMT ")", (void *)r, (void *)buf, CUPS_LLCAST bytes));
DEBUG_printf(("4cups_raster_read(r=%p, buf=%p, bytes=" CUPS_LLFMT "), offset=" CUPS_LLFMT, (void *)r, (void *)buf, CUPS_LLCAST bytes, CUPS_LLCAST (r->iostart + r->bufptr - r->buffer)));
if (!r->compressed)
return (cups_raster_io(r, buf, bytes));
@@ -1602,7 +1749,7 @@ cups_raster_read(cups_raster_t *r, /* I - Raster stream */
{
count = (ssize_t)bytes - total;
DEBUG_printf(("6cups_raster_read: count=" CUPS_LLFMT ", remaining=" CUPS_LLFMT ", buf=%p, bufptr=%p, bufend=%p", CUPS_LLCAST count, CUPS_LLCAST remaining, (void *)buf, (void *)r->bufptr, (void *)r->bufend));
DEBUG_printf(("5cups_raster_read: count=" CUPS_LLFMT ", remaining=" CUPS_LLFMT ", buf=%p, bufptr=%p, bufend=%p", CUPS_LLCAST count, CUPS_LLCAST remaining, (void *)buf, (void *)r->bufptr, (void *)r->bufend));
if (remaining == 0)
{
@@ -1612,6 +1759,10 @@ cups_raster_read(cups_raster_t *r, /* I - Raster stream */
* Read into the raster buffer and then copy...
*/
#ifdef DEBUG
r->iostart += (size_t)(r->bufend - r->buffer);
#endif /* DEBUG */
remaining = (*r->iocb)(r->ctx, r->buffer, r->bufsize);
if (remaining <= 0)
return (0);
@@ -1635,6 +1786,7 @@ cups_raster_read(cups_raster_t *r, /* I - Raster stream */
return (0);
#ifdef DEBUG
r->iostart += (size_t)count;
r->iocount += (size_t)count;
#endif /* DEBUG */
@@ -1687,7 +1839,7 @@ cups_raster_read(cups_raster_t *r, /* I - Raster stream */
}
}
DEBUG_printf(("6cups_raster_read: Returning %ld", (long)total));
DEBUG_printf(("5cups_raster_read: Returning %ld", (long)total));
return (total);
}
@@ -1850,11 +2002,24 @@ cups_raster_write(
unsigned char *wptr; /* Pointer into write buffer */
unsigned bpp, /* Bytes per pixel */
count; /* Count */
_cups_copyfunc_t cf; /* Copy function */
DEBUG_printf(("3cups_raster_write(r=%p, pixels=%p)", (void *)r, (void *)pixels));
/*
* Determine whether we need to swap bytes...
*/
if (r->swapped && (r->header.cupsBitsPerColor == 16 || r->header.cupsBitsPerPixel == 12 || r->header.cupsBitsPerPixel == 16))
{
DEBUG_puts("4cups_raster_write: Swapping bytes when writing.");
cf = (_cups_copyfunc_t)cups_swap_copy;
}
else
cf = (_cups_copyfunc_t)memcpy;
/*
* Allocate a write buffer as needed...
*/
@@ -1905,8 +2070,8 @@ cups_raster_write(
*/
*wptr++ = 0;
for (count = bpp; count > 0; count --)
*wptr++ = *start++;
(*cf)(wptr, start, bpp);
wptr += bpp;
}
else if (!memcmp(start, ptr, bpp))
{
@@ -1919,8 +2084,9 @@ cups_raster_write(
break;
*wptr++ = (unsigned char)(count - 1);
for (count = bpp; count > 0; count --)
*wptr++ = *ptr++;
(*cf)(wptr, ptr, bpp);
wptr += bpp;
ptr += bpp;
}
else
{
@@ -1941,7 +2107,7 @@ cups_raster_write(
*wptr++ = (unsigned char)(257 - count);
count *= bpp;
memcpy(wptr, start, count);
(*cf)(wptr, start, count);
wptr += count;
}
}
@@ -1973,11 +2139,11 @@ cups_read_fd(void *ctx, /* I - File descriptor as pointer */
#endif /* WIN32 */
if (errno != EINTR && errno != EAGAIN)
{
DEBUG_printf(("4cups_read_fd: %s", strerror(errno)));
DEBUG_printf(("8cups_read_fd: %s", strerror(errno)));
return (-1);
}
DEBUG_printf(("4cups_read_fd: Returning %d bytes.", (int)count));
DEBUG_printf(("8cups_read_fd: Returning %d bytes.", (int)count));
return (count);
}
@@ -2009,6 +2175,30 @@ cups_swap(unsigned char *buf, /* I - Buffer to swap */
}
/*
* 'cups_swap_copy()' - Copy and swap bytes in raster data...
*/
static void
cups_swap_copy(
unsigned char *dst, /* I - Destination */
const unsigned char *src, /* I - Source */
size_t bytes) /* I - Number of bytes to swap */
{
bytes /= 2;
while (bytes > 0)
{
dst[0] = src[1];
dst[1] = src[0];
dst += 2;
src += 2;
bytes --;
}
}
/*
* 'cups_write_fd()' - Write bytes to a file.
*/
@@ -2030,7 +2220,7 @@ cups_write_fd(void *ctx, /* I - File descriptor pointer */
#endif /* WIN32 */
if (errno != EINTR && errno != EAGAIN)
{
DEBUG_printf(("4cups_write_fd: %s", strerror(errno)));
DEBUG_printf(("8cups_write_fd: %s", strerror(errno)));
return (-1);
}
+140 -106
Ver Arquivo
@@ -289,183 +289,183 @@ msgstr "Right Gate Fold"
msgid "finishing-template.fold-z"
msgstr "Z Fold"
msgid "finishing-template.jdf-f10-1"
msgstr "JDF F10-1"
msgstr "JDF Fold F10-1"
msgid "finishing-template.jdf-f10-2"
msgstr "JDF F10-2"
msgstr "JDF Fold F10-2"
msgid "finishing-template.jdf-f10-3"
msgstr "JDF F10-3"
msgstr "JDF Fold F10-3"
msgid "finishing-template.jdf-f12-1"
msgstr "JDF F12-1"
msgstr "JDF Fold F12-1"
msgid "finishing-template.jdf-f12-10"
msgstr "JDF F12-10"
msgstr "JDF Fold F12-10"
msgid "finishing-template.jdf-f12-11"
msgstr "JDF F12-11"
msgstr "JDF Fold F12-11"
msgid "finishing-template.jdf-f12-12"
msgstr "JDF F12-12"
msgstr "JDF Fold F12-12"
msgid "finishing-template.jdf-f12-13"
msgstr "JDF F12-13"
msgstr "JDF Fold F12-13"
msgid "finishing-template.jdf-f12-14"
msgstr "JDF F12-14"
msgstr "JDF Fold F12-14"
msgid "finishing-template.jdf-f12-2"
msgstr "JDF F12-2"
msgstr "JDF Fold F12-2"
msgid "finishing-template.jdf-f12-3"
msgstr "JDF F12-3"
msgstr "JDF Fold F12-3"
msgid "finishing-template.jdf-f12-4"
msgstr "JDF F12-4"
msgstr "JDF Fold F12-4"
msgid "finishing-template.jdf-f12-5"
msgstr "JDF F12-5"
msgstr "JDF Fold F12-5"
msgid "finishing-template.jdf-f12-6"
msgstr "JDF F12-6"
msgstr "JDF Fold F12-6"
msgid "finishing-template.jdf-f12-7"
msgstr "JDF F12-7"
msgstr "JDF Fold F12-7"
msgid "finishing-template.jdf-f12-8"
msgstr "JDF F12-8"
msgstr "JDF Fold F12-8"
msgid "finishing-template.jdf-f12-9"
msgstr "JDF F12-9"
msgstr "JDF Fold F12-9"
msgid "finishing-template.jdf-f14-1"
msgstr "JDF F14-1"
msgstr "JDF Fold F14-1"
msgid "finishing-template.jdf-f16-1"
msgstr "JDF F16-1"
msgstr "JDF Fold F16-1"
msgid "finishing-template.jdf-f16-10"
msgstr "JDF F16-10"
msgstr "JDF Fold F16-10"
msgid "finishing-template.jdf-f16-11"
msgstr "JDF F16-11"
msgstr "JDF Fold F16-11"
msgid "finishing-template.jdf-f16-12"
msgstr "JDF F16-12"
msgstr "JDF Fold F16-12"
msgid "finishing-template.jdf-f16-13"
msgstr "JDF F16-13"
msgstr "JDF Fold F16-13"
msgid "finishing-template.jdf-f16-14"
msgstr "JDF F16-14"
msgstr "JDF Fold F16-14"
msgid "finishing-template.jdf-f16-2"
msgstr "JDF F16-2"
msgstr "JDF Fold F16-2"
msgid "finishing-template.jdf-f16-3"
msgstr "JDF F16-3"
msgstr "JDF Fold F16-3"
msgid "finishing-template.jdf-f16-4"
msgstr "JDF F16-4"
msgstr "JDF Fold F16-4"
msgid "finishing-template.jdf-f16-5"
msgstr "JDF F16-5"
msgstr "JDF Fold F16-5"
msgid "finishing-template.jdf-f16-6"
msgstr "JDF F16-6"
msgstr "JDF Fold F16-6"
msgid "finishing-template.jdf-f16-7"
msgstr "JDF F16-7"
msgstr "JDF Fold F16-7"
msgid "finishing-template.jdf-f16-8"
msgstr "JDF F16-8"
msgstr "JDF Fold F16-8"
msgid "finishing-template.jdf-f16-9"
msgstr "JDF F16-9"
msgstr "JDF Fold F16-9"
msgid "finishing-template.jdf-f18-1"
msgstr "JDF F18-1"
msgstr "JDF Fold F18-1"
msgid "finishing-template.jdf-f18-2"
msgstr "JDF F18-2"
msgstr "JDF Fold F18-2"
msgid "finishing-template.jdf-f18-3"
msgstr "JDF F18-3"
msgstr "JDF Fold F18-3"
msgid "finishing-template.jdf-f18-4"
msgstr "JDF F18-4"
msgstr "JDF Fold F18-4"
msgid "finishing-template.jdf-f18-5"
msgstr "JDF F18-5"
msgstr "JDF Fold F18-5"
msgid "finishing-template.jdf-f18-6"
msgstr "JDF F18-6"
msgstr "JDF Fold F18-6"
msgid "finishing-template.jdf-f18-7"
msgstr "JDF F18-7"
msgstr "JDF Fold F18-7"
msgid "finishing-template.jdf-f18-8"
msgstr "JDF F18-8"
msgstr "JDF Fold F18-8"
msgid "finishing-template.jdf-f18-9"
msgstr "JDF F18-9"
msgstr "JDF Fold F18-9"
msgid "finishing-template.jdf-f2-1"
msgstr "JDF F2-1"
msgstr "JDF Fold F2-1"
msgid "finishing-template.jdf-f20-1"
msgstr "JDF F20-1"
msgstr "JDF Fold F20-1"
msgid "finishing-template.jdf-f20-2"
msgstr "JDF F20-2"
msgstr "JDF Fold F20-2"
msgid "finishing-template.jdf-f24-1"
msgstr "JDF F24-1"
msgstr "JDF Fold F24-1"
msgid "finishing-template.jdf-f24-10"
msgstr "JDF F24-10"
msgstr "JDF Fold F24-10"
msgid "finishing-template.jdf-f24-11"
msgstr "JDF F24-11"
msgstr "JDF Fold F24-11"
msgid "finishing-template.jdf-f24-2"
msgstr "JDF F24-2"
msgstr "JDF Fold F24-2"
msgid "finishing-template.jdf-f24-3"
msgstr "JDF F24-3"
msgstr "JDF Fold F24-3"
msgid "finishing-template.jdf-f24-4"
msgstr "JDF F24-4"
msgstr "JDF Fold F24-4"
msgid "finishing-template.jdf-f24-5"
msgstr "JDF F24-5"
msgstr "JDF Fold F24-5"
msgid "finishing-template.jdf-f24-6"
msgstr "JDF F24-6"
msgstr "JDF Fold F24-6"
msgid "finishing-template.jdf-f24-7"
msgstr "JDF F24-7"
msgstr "JDF Fold F24-7"
msgid "finishing-template.jdf-f24-8"
msgstr "JDF F24-8"
msgstr "JDF Fold F24-8"
msgid "finishing-template.jdf-f24-9"
msgstr "JDF F24-9"
msgstr "JDF Fold F24-9"
msgid "finishing-template.jdf-f28-1"
msgstr "JDF F28-1"
msgstr "JDF Fold F28-1"
msgid "finishing-template.jdf-f32-1"
msgstr "JDF F32-1"
msgstr "JDF Fold F32-1"
msgid "finishing-template.jdf-f32-2"
msgstr "JDF F32-2"
msgstr "JDF Fold F32-2"
msgid "finishing-template.jdf-f32-3"
msgstr "JDF F32-3"
msgstr "JDF Fold F32-3"
msgid "finishing-template.jdf-f32-4"
msgstr "JDF F32-4"
msgstr "JDF Fold F32-4"
msgid "finishing-template.jdf-f32-5"
msgstr "JDF F32-5"
msgstr "JDF Fold F32-5"
msgid "finishing-template.jdf-f32-6"
msgstr "JDF F32-6"
msgstr "JDF Fold F32-6"
msgid "finishing-template.jdf-f32-7"
msgstr "JDF F32-7"
msgstr "JDF Fold F32-7"
msgid "finishing-template.jdf-f32-8"
msgstr "JDF F32-8"
msgstr "JDF Fold F32-8"
msgid "finishing-template.jdf-f32-9"
msgstr "JDF F32-9"
msgstr "JDF Fold F32-9"
msgid "finishing-template.jdf-f36-1"
msgstr "JDF F36-1"
msgstr "JDF Fold F36-1"
msgid "finishing-template.jdf-f36-2"
msgstr "JDF F36-2"
msgstr "JDF Fold F36-2"
msgid "finishing-template.jdf-f4-1"
msgstr "JDF F4-1"
msgstr "JDF Fold F4-1"
msgid "finishing-template.jdf-f4-2"
msgstr "JDF F4-2"
msgstr "JDF Fold F4-2"
msgid "finishing-template.jdf-f40-1"
msgstr "JDF F40-1"
msgstr "JDF Fold F40-1"
msgid "finishing-template.jdf-f48-1"
msgstr "JDF F48-1"
msgstr "JDF Fold F48-1"
msgid "finishing-template.jdf-f48-2"
msgstr "JDF F48-2"
msgstr "JDF Fold F48-2"
msgid "finishing-template.jdf-f6-1"
msgstr "JDF F6-1"
msgstr "JDF Fold F6-1"
msgid "finishing-template.jdf-f6-2"
msgstr "JDF F6-2"
msgstr "JDF Fold F6-2"
msgid "finishing-template.jdf-f6-3"
msgstr "JDF F6-3"
msgstr "JDF Fold F6-3"
msgid "finishing-template.jdf-f6-4"
msgstr "JDF F6-4"
msgstr "JDF Fold F6-4"
msgid "finishing-template.jdf-f6-5"
msgstr "JDF F6-5"
msgstr "JDF Fold F6-5"
msgid "finishing-template.jdf-f6-6"
msgstr "JDF F6-6"
msgstr "JDF Fold F6-6"
msgid "finishing-template.jdf-f6-7"
msgstr "JDF F6-7"
msgstr "JDF Fold F6-7"
msgid "finishing-template.jdf-f6-8"
msgstr "JDF F6-8"
msgstr "JDF Fold F6-8"
msgid "finishing-template.jdf-f64-1"
msgstr "JDF F64-1"
msgstr "JDF Fold F64-1"
msgid "finishing-template.jdf-f64-2"
msgstr "JDF F64-2"
msgstr "JDF Fold F64-2"
msgid "finishing-template.jdf-f8-1"
msgstr "JDF F8-1"
msgstr "JDF Fold F8-1"
msgid "finishing-template.jdf-f8-2"
msgstr "JDF F8-2"
msgstr "JDF Fold F8-2"
msgid "finishing-template.jdf-f8-3"
msgstr "JDF F8-3"
msgstr "JDF Fold F8-3"
msgid "finishing-template.jdf-f8-4"
msgstr "JDF F8-4"
msgstr "JDF Fold F8-4"
msgid "finishing-template.jdf-f8-5"
msgstr "JDF F8-5"
msgstr "JDF Fold F8-5"
msgid "finishing-template.jdf-f8-6"
msgstr "JDF F8-6"
msgstr "JDF Fold F8-6"
msgid "finishing-template.jdf-f8-7"
msgstr "JDF F8-7"
msgstr "JDF Fold F8-7"
msgid "finishing-template.jog-offset"
msgstr "Jog Offset"
msgid "finishing-template.laminate"
@@ -1465,41 +1465,41 @@ msgstr "Media Name"
msgid "media-source"
msgstr "Media Source"
msgid "media-source.alternate"
msgstr "Alternate"
msgstr "Alternate Tray"
msgid "media-source.alternate-roll"
msgstr "Alternate Roll"
msgid "media-source.auto"
msgstr "Automatic"
msgstr "Automatic Tray"
msgid "media-source.bottom"
msgstr "Bottom"
msgstr "Bottom Tray"
msgid "media-source.by-pass-tray"
msgstr "By-pass Tray"
msgid "media-source.center"
msgstr "Center"
msgstr "Center Tray"
msgid "media-source.disc"
msgstr "Disc"
msgstr "Disc Feed"
msgid "media-source.envelope"
msgstr "Envelope"
msgstr "Envelope Feed"
msgid "media-source.hagaki"
msgstr "Hagaki"
msgstr "Hagaki Feed"
msgid "media-source.large-capacity"
msgstr "Large Capacity"
msgstr "Large Capacity Tray"
msgid "media-source.left"
msgstr "Left"
msgstr "Left Tray"
msgid "media-source.main"
msgstr "Main"
msgstr "Main Tray"
msgid "media-source.main-roll"
msgstr "Main Roll"
msgid "media-source.manual"
msgstr "Manual"
msgstr "Manual Feed"
msgid "media-source.middle"
msgstr "Middle"
msgstr "Middle Tray"
msgid "media-source.photo"
msgstr "Photo"
msgstr "Photo Tray"
msgid "media-source.rear"
msgstr "Rear"
msgstr "Rear Tray"
msgid "media-source.right"
msgstr "Right"
msgstr "Right Tray"
msgid "media-source.roll-1"
msgstr "Roll 1"
msgid "media-source.roll-10"
@@ -1571,7 +1571,7 @@ msgstr "Media Tooth (Texture)"
msgid "media-tooth.antique"
msgstr "Antique"
msgid "media-tooth.calendared"
msgstr "Calendared"
msgstr "Extra Smooth"
msgid "media-tooth.coarse"
msgstr "Coarse"
msgid "media-tooth.fine"
@@ -1585,7 +1585,7 @@ msgstr "Smooth"
msgid "media-tooth.stipple"
msgstr "Stipple"
msgid "media-tooth.uncalendared"
msgstr "Uncalendared"
msgstr "Rough"
msgid "media-tooth.vellum"
msgstr "Vellum"
msgid "media-top-margin"
@@ -1604,6 +1604,32 @@ msgid "media-type.cardstock"
msgstr "Cardstock"
msgid "media-type.cd"
msgstr "CD"
msgid "media-type.com.hp.advanced-photo"
msgstr "Advanced Photo Paper"
msgid "media-type.com.hp.brochure-glossy"
msgstr "Glossy Brochure Paper"
msgid "media-type.com.hp.brochure-matte"
msgstr "Matte Brochure Paper"
msgid "media-type.com.hp.cover-matte"
msgstr "Matte Cover Paper"
msgid "media-type.com.hp.ecosmart-lite"
msgstr "Office Recycled Paper"
msgid "media-type.com.hp.everyday-glossy"
msgstr "Everyday Glossy Photo Paper"
msgid "media-type.com.hp.everyday-matte"
msgstr "Everyday Matte Paper"
msgid "media-type.com.hp.extra-heavy"
msgstr "Extra Heavyweight Paper"
msgid "media-type.com.hp.intermediate"
msgstr "Multipurpose Paper"
msgid "media-type.com.hp.mid-weight"
msgstr "Mid-Weight Paper"
msgid "media-type.com.hp.premium-inkjet"
msgstr "Premium Inkjet Paper"
msgid "media-type.com.hp.premium-photo"
msgstr "Premium Photo Glossy Paper"
msgid "media-type.com.hp.premium-presentation-matte"
msgstr "Premium Presentation Matte Paper"
msgid "media-type.continuous"
msgstr "Continuous"
msgid "media-type.continuous-long"
@@ -1700,6 +1726,14 @@ msgid "media-type.image-setter-paper"
msgstr "Image Setter Paper"
msgid "media-type.imaging-cylinder"
msgstr "Imaging Cylinder"
msgid "media-type.jp.co.canon_photo-paper-plus-glossy-ii"
msgstr "Photo Paper Plus Glossy II"
msgid "media-type.jp.co.canon_photo-paper-pro-platinum"
msgstr "Photo Paper Pro Platinum"
msgid "media-type.jp.co.canon-photo-paper-plus-glossy-ii"
msgstr "Photo Paper Plus Glossy II"
msgid "media-type.jp.co.canon-photo-paper-pro-platinum"
msgstr "Photo Paper Pro Platinum"
msgid "media-type.labels"
msgstr "Labels"
msgid "media-type.labels-colored"
+827 -767
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+132 -109
Ver Arquivo
@@ -366,6 +366,7 @@
"%s: Bad printer URI \"%s\"." = "%s: Bad printer URI “%s”.";
"%s: Bad version %s for \"-V\"." = "%s: Bad version %s for “-V”.";
"%s: Don't know what to do." = "%s: Dont know what to do.";
"%s: Error - %s" = "%s: Error - %s";
"%s: Error - %s environment variable names non-existent destination \"%s\"." = "%s: Error - %s environment variable names non-existent destination “%s”.";
"%s: Error - add '/version=1.1' to server name." = "%s: Error - add /version=1.1 to server name.";
"%s: Error - bad job ID." = "%s: Error - bad job ID.";
@@ -757,6 +758,7 @@
"Bad printer-uri." = "Bad printer-uri.";
"Bad request ID %d." = "Bad request ID %d.";
"Bad request version number %d.%d." = "Bad request version number %d.%d.";
"Bad requesting-user-name value: %s" = "Bad requesting-user-name value: %s";
"Bad resource in URI" = "Bad resource in URI";
"Bad scheme in URI" = "Bad scheme in URI";
"Bad subscription ID" = "Bad subscription ID";
@@ -925,6 +927,8 @@
"Error reading raster data." = "Error reading raster data.";
"Error sending raster data." = "Error sending raster data.";
"Error: need hostname after \"-h\" option." = "Error: need hostname after “-h” option.";
"European Fanfold" = "European Fanfold";
"European Fanfold Legal" = "European Fanfold Legal";
"Every 10 Labels" = "Every 10 Labels";
"Every 2 Labels" = "Every 2 Labels";
"Every 3 Labels" = "Every 3 Labels";
@@ -946,9 +950,6 @@
"Fabric" = "Fabric";
"Face Down" = "Face Down";
"Face Up" = "Face Up";
"FanFold German" = "FanFold German";
"FanFold Legal German" = "FanFold Legal German";
"Fanfold US" = "Fanfold US";
"Fast Grayscale" = "Fast Grayscale";
"File \"%s\" contains a relative path." = "File “%s” contains a relative path.";
"File \"%s\" has insecure permissions (0%o/uid=%d/gid=%d)." = "File “%s” has insecure permissions (0%o/uid=%d/gid=%d).";
@@ -967,6 +968,7 @@
"Fold" = "Fold";
"Folio" = "Folio";
"Forbidden" = "Forbidden";
"Found" = "Found";
"Full Cut Tabs" = "Full Cut Tabs";
"Gate Fold" = "Gate Fold";
"General" = "General";
@@ -1537,6 +1539,7 @@
"Trust on first use is disabled." = "Trust on first use is disabled.";
"URI Too Long" = "URI Too Long";
"URI too large" = "URI too large";
"US Fanfold" = "US Fanfold";
"US Ledger" = "US Ledger";
"US Legal" = "US Legal";
"US Legal Oversize" = "US Legal Oversize";
@@ -1786,6 +1789,8 @@
"lpadmin: Printer %s is already a member of class %s." = "lpadmin: Printer %s is already a member of class %s.";
"lpadmin: Printer %s is not a member of class %s." = "lpadmin: Printer %s is not a member of class %s.";
"lpadmin: Printer name can only contain printable characters." = "lpadmin: Printer name can only contain printable characters.";
"lpadmin: Raw queues are deprecated and will stop working in a future version of CUPS." = "lpadmin: Raw queues are deprecated and will stop working in a future version of CUPS.";
"lpadmin: System V interface scripts are no longer supported for security reasons." = "lpadmin: System V interface scripts are no longer supported for security reasons.";
"lpadmin: Unable to add a printer to the class:\n You must specify a printer name first." = "lpadmin: Unable to add a printer to the class:\n You must specify a printer name first.";
"lpadmin: Unable to connect to server: %s" = "lpadmin: Unable to connect to server: %s";
"lpadmin: Unable to create temporary file" = "lpadmin: Unable to create temporary file";
@@ -1797,6 +1802,7 @@
"lpadmin: Unknown allow/deny option \"%s\"." = "lpadmin: Unknown allow/deny option “%s”.";
"lpadmin: Unknown argument \"%s\"." = "lpadmin: Unknown argument “%s”.";
"lpadmin: Unknown option \"%c\"." = "lpadmin: Unknown option “%c”.";
"lpadmin: Use the 'everywhere' model for shared printers." = "lpadmin: Use the everywhere model for shared printers.";
"lpadmin: Warning - content type list ignored." = "lpadmin: Warning - content type list ignored.";
"lpc> " = "lpc> ";
"lpinfo: Expected 1284 device ID string after \"--device-id\"." = "lpinfo: Expected 1284 device ID string after “--device-id”.";
@@ -2079,95 +2085,95 @@
"finishing-template.fold-poster" = "Poster Fold";
"finishing-template.fold-right-gate" = "Right Gate Fold";
"finishing-template.fold-z" = "Z Fold";
"finishing-template.jdf-f10-1" = "JDF F10-1";
"finishing-template.jdf-f10-2" = "JDF F10-2";
"finishing-template.jdf-f10-3" = "JDF F10-3";
"finishing-template.jdf-f12-1" = "JDF F12-1";
"finishing-template.jdf-f12-10" = "JDF F12-10";
"finishing-template.jdf-f12-11" = "JDF F12-11";
"finishing-template.jdf-f12-12" = "JDF F12-12";
"finishing-template.jdf-f12-13" = "JDF F12-13";
"finishing-template.jdf-f12-14" = "JDF F12-14";
"finishing-template.jdf-f12-2" = "JDF F12-2";
"finishing-template.jdf-f12-3" = "JDF F12-3";
"finishing-template.jdf-f12-4" = "JDF F12-4";
"finishing-template.jdf-f12-5" = "JDF F12-5";
"finishing-template.jdf-f12-6" = "JDF F12-6";
"finishing-template.jdf-f12-7" = "JDF F12-7";
"finishing-template.jdf-f12-8" = "JDF F12-8";
"finishing-template.jdf-f12-9" = "JDF F12-9";
"finishing-template.jdf-f14-1" = "JDF F14-1";
"finishing-template.jdf-f16-1" = "JDF F16-1";
"finishing-template.jdf-f16-10" = "JDF F16-10";
"finishing-template.jdf-f16-11" = "JDF F16-11";
"finishing-template.jdf-f16-12" = "JDF F16-12";
"finishing-template.jdf-f16-13" = "JDF F16-13";
"finishing-template.jdf-f16-14" = "JDF F16-14";
"finishing-template.jdf-f16-2" = "JDF F16-2";
"finishing-template.jdf-f16-3" = "JDF F16-3";
"finishing-template.jdf-f16-4" = "JDF F16-4";
"finishing-template.jdf-f16-5" = "JDF F16-5";
"finishing-template.jdf-f16-6" = "JDF F16-6";
"finishing-template.jdf-f16-7" = "JDF F16-7";
"finishing-template.jdf-f16-8" = "JDF F16-8";
"finishing-template.jdf-f16-9" = "JDF F16-9";
"finishing-template.jdf-f18-1" = "JDF F18-1";
"finishing-template.jdf-f18-2" = "JDF F18-2";
"finishing-template.jdf-f18-3" = "JDF F18-3";
"finishing-template.jdf-f18-4" = "JDF F18-4";
"finishing-template.jdf-f18-5" = "JDF F18-5";
"finishing-template.jdf-f18-6" = "JDF F18-6";
"finishing-template.jdf-f18-7" = "JDF F18-7";
"finishing-template.jdf-f18-8" = "JDF F18-8";
"finishing-template.jdf-f18-9" = "JDF F18-9";
"finishing-template.jdf-f2-1" = "JDF F2-1";
"finishing-template.jdf-f20-1" = "JDF F20-1";
"finishing-template.jdf-f20-2" = "JDF F20-2";
"finishing-template.jdf-f24-1" = "JDF F24-1";
"finishing-template.jdf-f24-10" = "JDF F24-10";
"finishing-template.jdf-f24-11" = "JDF F24-11";
"finishing-template.jdf-f24-2" = "JDF F24-2";
"finishing-template.jdf-f24-3" = "JDF F24-3";
"finishing-template.jdf-f24-4" = "JDF F24-4";
"finishing-template.jdf-f24-5" = "JDF F24-5";
"finishing-template.jdf-f24-6" = "JDF F24-6";
"finishing-template.jdf-f24-7" = "JDF F24-7";
"finishing-template.jdf-f24-8" = "JDF F24-8";
"finishing-template.jdf-f24-9" = "JDF F24-9";
"finishing-template.jdf-f28-1" = "JDF F28-1";
"finishing-template.jdf-f32-1" = "JDF F32-1";
"finishing-template.jdf-f32-2" = "JDF F32-2";
"finishing-template.jdf-f32-3" = "JDF F32-3";
"finishing-template.jdf-f32-4" = "JDF F32-4";
"finishing-template.jdf-f32-5" = "JDF F32-5";
"finishing-template.jdf-f32-6" = "JDF F32-6";
"finishing-template.jdf-f32-7" = "JDF F32-7";
"finishing-template.jdf-f32-8" = "JDF F32-8";
"finishing-template.jdf-f32-9" = "JDF F32-9";
"finishing-template.jdf-f36-1" = "JDF F36-1";
"finishing-template.jdf-f36-2" = "JDF F36-2";
"finishing-template.jdf-f4-1" = "JDF F4-1";
"finishing-template.jdf-f4-2" = "JDF F4-2";
"finishing-template.jdf-f40-1" = "JDF F40-1";
"finishing-template.jdf-f48-1" = "JDF F48-1";
"finishing-template.jdf-f48-2" = "JDF F48-2";
"finishing-template.jdf-f6-1" = "JDF F6-1";
"finishing-template.jdf-f6-2" = "JDF F6-2";
"finishing-template.jdf-f6-3" = "JDF F6-3";
"finishing-template.jdf-f6-4" = "JDF F6-4";
"finishing-template.jdf-f6-5" = "JDF F6-5";
"finishing-template.jdf-f6-6" = "JDF F6-6";
"finishing-template.jdf-f6-7" = "JDF F6-7";
"finishing-template.jdf-f6-8" = "JDF F6-8";
"finishing-template.jdf-f64-1" = "JDF F64-1";
"finishing-template.jdf-f64-2" = "JDF F64-2";
"finishing-template.jdf-f8-1" = "JDF F8-1";
"finishing-template.jdf-f8-2" = "JDF F8-2";
"finishing-template.jdf-f8-3" = "JDF F8-3";
"finishing-template.jdf-f8-4" = "JDF F8-4";
"finishing-template.jdf-f8-5" = "JDF F8-5";
"finishing-template.jdf-f8-6" = "JDF F8-6";
"finishing-template.jdf-f8-7" = "JDF F8-7";
"finishing-template.jdf-f10-1" = "JDF Fold F10-1";
"finishing-template.jdf-f10-2" = "JDF Fold F10-2";
"finishing-template.jdf-f10-3" = "JDF Fold F10-3";
"finishing-template.jdf-f12-1" = "JDF Fold F12-1";
"finishing-template.jdf-f12-10" = "JDF Fold F12-10";
"finishing-template.jdf-f12-11" = "JDF Fold F12-11";
"finishing-template.jdf-f12-12" = "JDF Fold F12-12";
"finishing-template.jdf-f12-13" = "JDF Fold F12-13";
"finishing-template.jdf-f12-14" = "JDF Fold F12-14";
"finishing-template.jdf-f12-2" = "JDF Fold F12-2";
"finishing-template.jdf-f12-3" = "JDF Fold F12-3";
"finishing-template.jdf-f12-4" = "JDF Fold F12-4";
"finishing-template.jdf-f12-5" = "JDF Fold F12-5";
"finishing-template.jdf-f12-6" = "JDF Fold F12-6";
"finishing-template.jdf-f12-7" = "JDF Fold F12-7";
"finishing-template.jdf-f12-8" = "JDF Fold F12-8";
"finishing-template.jdf-f12-9" = "JDF Fold F12-9";
"finishing-template.jdf-f14-1" = "JDF Fold F14-1";
"finishing-template.jdf-f16-1" = "JDF Fold F16-1";
"finishing-template.jdf-f16-10" = "JDF Fold F16-10";
"finishing-template.jdf-f16-11" = "JDF Fold F16-11";
"finishing-template.jdf-f16-12" = "JDF Fold F16-12";
"finishing-template.jdf-f16-13" = "JDF Fold F16-13";
"finishing-template.jdf-f16-14" = "JDF Fold F16-14";
"finishing-template.jdf-f16-2" = "JDF Fold F16-2";
"finishing-template.jdf-f16-3" = "JDF Fold F16-3";
"finishing-template.jdf-f16-4" = "JDF Fold F16-4";
"finishing-template.jdf-f16-5" = "JDF Fold F16-5";
"finishing-template.jdf-f16-6" = "JDF Fold F16-6";
"finishing-template.jdf-f16-7" = "JDF Fold F16-7";
"finishing-template.jdf-f16-8" = "JDF Fold F16-8";
"finishing-template.jdf-f16-9" = "JDF Fold F16-9";
"finishing-template.jdf-f18-1" = "JDF Fold F18-1";
"finishing-template.jdf-f18-2" = "JDF Fold F18-2";
"finishing-template.jdf-f18-3" = "JDF Fold F18-3";
"finishing-template.jdf-f18-4" = "JDF Fold F18-4";
"finishing-template.jdf-f18-5" = "JDF Fold F18-5";
"finishing-template.jdf-f18-6" = "JDF Fold F18-6";
"finishing-template.jdf-f18-7" = "JDF Fold F18-7";
"finishing-template.jdf-f18-8" = "JDF Fold F18-8";
"finishing-template.jdf-f18-9" = "JDF Fold F18-9";
"finishing-template.jdf-f2-1" = "JDF Fold F2-1";
"finishing-template.jdf-f20-1" = "JDF Fold F20-1";
"finishing-template.jdf-f20-2" = "JDF Fold F20-2";
"finishing-template.jdf-f24-1" = "JDF Fold F24-1";
"finishing-template.jdf-f24-10" = "JDF Fold F24-10";
"finishing-template.jdf-f24-11" = "JDF Fold F24-11";
"finishing-template.jdf-f24-2" = "JDF Fold F24-2";
"finishing-template.jdf-f24-3" = "JDF Fold F24-3";
"finishing-template.jdf-f24-4" = "JDF Fold F24-4";
"finishing-template.jdf-f24-5" = "JDF Fold F24-5";
"finishing-template.jdf-f24-6" = "JDF Fold F24-6";
"finishing-template.jdf-f24-7" = "JDF Fold F24-7";
"finishing-template.jdf-f24-8" = "JDF Fold F24-8";
"finishing-template.jdf-f24-9" = "JDF Fold F24-9";
"finishing-template.jdf-f28-1" = "JDF Fold F28-1";
"finishing-template.jdf-f32-1" = "JDF Fold F32-1";
"finishing-template.jdf-f32-2" = "JDF Fold F32-2";
"finishing-template.jdf-f32-3" = "JDF Fold F32-3";
"finishing-template.jdf-f32-4" = "JDF Fold F32-4";
"finishing-template.jdf-f32-5" = "JDF Fold F32-5";
"finishing-template.jdf-f32-6" = "JDF Fold F32-6";
"finishing-template.jdf-f32-7" = "JDF Fold F32-7";
"finishing-template.jdf-f32-8" = "JDF Fold F32-8";
"finishing-template.jdf-f32-9" = "JDF Fold F32-9";
"finishing-template.jdf-f36-1" = "JDF Fold F36-1";
"finishing-template.jdf-f36-2" = "JDF Fold F36-2";
"finishing-template.jdf-f4-1" = "JDF Fold F4-1";
"finishing-template.jdf-f4-2" = "JDF Fold F4-2";
"finishing-template.jdf-f40-1" = "JDF Fold F40-1";
"finishing-template.jdf-f48-1" = "JDF Fold F48-1";
"finishing-template.jdf-f48-2" = "JDF Fold F48-2";
"finishing-template.jdf-f6-1" = "JDF Fold F6-1";
"finishing-template.jdf-f6-2" = "JDF Fold F6-2";
"finishing-template.jdf-f6-3" = "JDF Fold F6-3";
"finishing-template.jdf-f6-4" = "JDF Fold F6-4";
"finishing-template.jdf-f6-5" = "JDF Fold F6-5";
"finishing-template.jdf-f6-6" = "JDF Fold F6-6";
"finishing-template.jdf-f6-7" = "JDF Fold F6-7";
"finishing-template.jdf-f6-8" = "JDF Fold F6-8";
"finishing-template.jdf-f64-1" = "JDF Fold F64-1";
"finishing-template.jdf-f64-2" = "JDF Fold F64-2";
"finishing-template.jdf-f8-1" = "JDF Fold F8-1";
"finishing-template.jdf-f8-2" = "JDF Fold F8-2";
"finishing-template.jdf-f8-3" = "JDF Fold F8-3";
"finishing-template.jdf-f8-4" = "JDF Fold F8-4";
"finishing-template.jdf-f8-5" = "JDF Fold F8-5";
"finishing-template.jdf-f8-6" = "JDF Fold F8-6";
"finishing-template.jdf-f8-7" = "JDF Fold F8-7";
"finishing-template.jog-offset" = "Jog Offset";
"finishing-template.laminate" = "Laminate";
"finishing-template.punch" = "Punch";
@@ -2667,24 +2673,24 @@
"media-size" = "Media Dimensions";
"media-size-name" = "Media Name";
"media-source" = "Media Source";
"media-source.alternate" = "Alternate";
"media-source.alternate" = "Alternate Tray";
"media-source.alternate-roll" = "Alternate Roll";
"media-source.auto" = "Automatic";
"media-source.bottom" = "Bottom";
"media-source.auto" = "Automatic Tray";
"media-source.bottom" = "Bottom Tray";
"media-source.by-pass-tray" = "By-pass Tray";
"media-source.center" = "Center";
"media-source.disc" = "Disc";
"media-source.envelope" = "Envelope";
"media-source.hagaki" = "Hagaki";
"media-source.large-capacity" = "Large Capacity";
"media-source.left" = "Left";
"media-source.main" = "Main";
"media-source.center" = "Center Tray";
"media-source.disc" = "Disc Feed";
"media-source.envelope" = "Envelope Feed";
"media-source.hagaki" = "Hagaki Feed";
"media-source.large-capacity" = "Large Capacity Tray";
"media-source.left" = "Left Tray";
"media-source.main" = "Main Tray";
"media-source.main-roll" = "Main Roll";
"media-source.manual" = "Manual";
"media-source.middle" = "Middle";
"media-source.photo" = "Photo";
"media-source.rear" = "Rear";
"media-source.right" = "Right";
"media-source.manual" = "Manual Feed";
"media-source.middle" = "Middle Tray";
"media-source.photo" = "Photo Tray";
"media-source.rear" = "Rear Tray";
"media-source.right" = "Right Tray";
"media-source.roll-1" = "Roll 1";
"media-source.roll-10" = "Roll 10";
"media-source.roll-2" = "Roll 2";
@@ -2720,14 +2726,14 @@
"media-thickness" = "Media Thickness";
"media-tooth" = "Media Tooth (Texture)";
"media-tooth.antique" = "Antique";
"media-tooth.calendared" = "Calendared";
"media-tooth.calendared" = "Extra Smooth";
"media-tooth.coarse" = "Coarse";
"media-tooth.fine" = "Fine";
"media-tooth.linen" = "Linen";
"media-tooth.medium" = "Medium";
"media-tooth.smooth" = "Smooth";
"media-tooth.stipple" = "Stipple";
"media-tooth.uncalendared" = "Uncalendared";
"media-tooth.uncalendared" = "Rough";
"media-tooth.vellum" = "Vellum";
"media-top-margin" = "Media Top Margin";
"media-type" = "Media Type";
@@ -2737,6 +2743,19 @@
"media-type.cardboard" = "Cardboard";
"media-type.cardstock" = "Cardstock";
"media-type.cd" = "CD";
"media-type.com.hp.advanced-photo" = "Advanced Photo Paper";
"media-type.com.hp.brochure-glossy" = "Glossy Brochure Paper";
"media-type.com.hp.brochure-matte" = "Matte Brochure Paper";
"media-type.com.hp.cover-matte" = "Matte Cover Paper";
"media-type.com.hp.ecosmart-lite" = "Office Recycled Paper";
"media-type.com.hp.everyday-glossy" = "Everyday Glossy Photo Paper";
"media-type.com.hp.everyday-matte" = "Everyday Matte Paper";
"media-type.com.hp.extra-heavy" = "Extra Heavyweight Paper";
"media-type.com.hp.intermediate" = "Multipurpose Paper";
"media-type.com.hp.mid-weight" = "Mid-Weight Paper";
"media-type.com.hp.premium-inkjet" = "Premium Inkjet Paper";
"media-type.com.hp.premium-photo" = "Premium Photo Glossy Paper";
"media-type.com.hp.premium-presentation-matte" = "Premium Presentation Matte Paper";
"media-type.continuous" = "Continuous";
"media-type.continuous-long" = "Continuous Long";
"media-type.continuous-short" = "Continuous Short";
@@ -2785,6 +2804,10 @@
"media-type.gravure-cylinder" = "Gravure Cylinder";
"media-type.image-setter-paper" = "Image Setter Paper";
"media-type.imaging-cylinder" = "Imaging Cylinder";
"media-type.jp.co.canon_photo-paper-plus-glossy-ii" = "Photo Paper Plus Glossy II";
"media-type.jp.co.canon_photo-paper-pro-platinum" = "Photo Paper Pro Platinum";
"media-type.jp.co.canon-photo-paper-plus-glossy-ii" = "Photo Paper Plus Glossy II";
"media-type.jp.co.canon-photo-paper-pro-platinum" = "Photo Paper Pro Platinum";
"media-type.labels" = "Labels";
"media-type.labels-colored" = "Colored Labels";
"media-type.labels-glossy" = "Glossy Labels";
+94 -10
Ver Arquivo
@@ -32,7 +32,7 @@ msgid ""
msgstr ""
"Project-Id-Version: CUPS 1.4.6\n"
"Report-Msgid-Bugs-To: https://github.com/apple/cups/issues\n"
"POT-Creation-Date: 2017-08-28 12:25-0400\n"
"POT-Creation-Date: 2018-03-19 18:36-0400\n"
"PO-Revision-Date: 2012-09-29 11:21+0200\n"
"Last-Translator: Àngel Mompó <mecatxis@gmail.com>\n"
"Language-Team: Catalan <ca@dodds.net>\n"
@@ -1639,6 +1639,10 @@ msgstr ""
msgid "%s: Don't know what to do."
msgstr "%s: no sé que fer."
#, c-format
msgid "%s: Error - %s"
msgstr ""
#, c-format
msgid ""
"%s: Error - %s environment variable names non-existent destination \"%s\"."
@@ -2925,6 +2929,10 @@ msgstr "L'identificador %d de la sol·licitud és incorrecte."
msgid "Bad request version number %d.%d."
msgstr "El número de versió %d.%d de la sol·licitud és incorrecte."
#, c-format
msgid "Bad requesting-user-name value: %s"
msgstr ""
msgid "Bad resource in URI"
msgstr ""
@@ -3462,6 +3470,12 @@ msgstr "S'ha produït un error quan s'enviaven les dades de la trama."
msgid "Error: need hostname after \"-h\" option."
msgstr "ERROR: es necessita un nom d'amfitrió després de l'opció «-h»."
msgid "European Fanfold"
msgstr ""
msgid "European Fanfold Legal"
msgstr ""
msgid "Every 10 Labels"
msgstr "Cada 10 etiquetes"
@@ -3525,15 +3539,6 @@ msgstr ""
msgid "Face Up"
msgstr ""
msgid "FanFold German"
msgstr "Paper continu alemany"
msgid "FanFold Legal German"
msgstr "Paper continu legal alemany"
msgid "Fanfold US"
msgstr "Paper continu americà"
msgid "Fast Grayscale"
msgstr ""
@@ -3597,6 +3602,9 @@ msgstr "Foli"
msgid "Forbidden"
msgstr "Prohibit"
msgid "Found"
msgstr ""
msgid "Full Cut Tabs"
msgstr ""
@@ -5391,6 +5399,9 @@ msgstr "L'URI és massa llarg"
msgid "URI too large"
msgstr ""
msgid "US Fanfold"
msgstr ""
msgid "US Ledger"
msgstr "Llibre major americà"
@@ -8007,6 +8018,16 @@ msgid "lpadmin: Printer name can only contain printable characters."
msgstr ""
"lpadmin: el nom de la impressora només pot contenir caràcters imprimibles."
msgid ""
"lpadmin: Raw queues are deprecated and will stop working in a future version "
"of CUPS."
msgstr ""
msgid ""
"lpadmin: System V interface scripts are no longer supported for security "
"reasons."
msgstr ""
msgid ""
"lpadmin: Unable to add a printer to the class:\n"
" You must specify a printer name first."
@@ -8062,6 +8083,9 @@ msgstr "lpadmin: l'argument «%s» és desconegut."
msgid "lpadmin: Unknown option \"%c\"."
msgstr "lpadmin: l'opció «%c» és desconeguda."
msgid "lpadmin: Use the 'everywhere' model for shared printers."
msgstr ""
msgid "lpadmin: Warning - content type list ignored."
msgstr "lpadmin: avís - s'ignora el contingut de la llista de tipus."
@@ -8813,6 +8837,45 @@ msgstr "Cardstock"
msgid "media-type.cd"
msgstr "CD"
msgid "media-type.com.hp.advanced-photo"
msgstr "Advanced Photo Paper"
msgid "media-type.com.hp.brochure-glossy"
msgstr "Glossy Brochure Paper"
msgid "media-type.com.hp.brochure-matte"
msgstr "Matte Brochure Paper"
msgid "media-type.com.hp.cover-matte"
msgstr "Matte Cover Paper"
msgid "media-type.com.hp.ecosmart-lite"
msgstr "Office Recycled Paper"
msgid "media-type.com.hp.everyday-glossy"
msgstr "Everyday Glossy Photo Paper"
msgid "media-type.com.hp.everyday-matte"
msgstr "Everyday Matte Paper"
msgid "media-type.com.hp.extra-heavy"
msgstr "Extra Heavyweight Paper"
msgid "media-type.com.hp.intermediate"
msgstr "Multipurpose Paper"
msgid "media-type.com.hp.mid-weight"
msgstr "Mid-Weight Paper"
msgid "media-type.com.hp.premium-inkjet"
msgstr "Premium Inkjet Paper"
msgid "media-type.com.hp.premium-photo"
msgstr "Premium Photo Glossy Paper"
msgid "media-type.com.hp.premium-presentation-matte"
msgstr "Premium Presentation Matte Paper"
msgid "media-type.continuous"
msgstr "Continuous"
@@ -8957,6 +9020,18 @@ msgstr "Image Setter Paper"
msgid "media-type.imaging-cylinder"
msgstr "Imaging Cylinder"
msgid "media-type.jp.co.canon-photo-paper-plus-glossy-ii"
msgstr "Photo Paper Plus Glossy II"
msgid "media-type.jp.co.canon-photo-paper-pro-platinum"
msgstr "Photo Paper Pro Platinum"
msgid "media-type.jp.co.canon_photo-paper-plus-glossy-ii"
msgstr "Photo Paper Plus Glossy II"
msgid "media-type.jp.co.canon_photo-paper-pro-platinum"
msgstr "Photo Paper Pro Platinum"
msgid "media-type.labels"
msgstr "Labels"
@@ -13427,6 +13502,15 @@ msgstr "Z Offset"
#~ msgid "Envelope PRC1 "
#~ msgstr "Sobre PRC1"
#~ msgid "FanFold German"
#~ msgstr "Paper continu alemany"
#~ msgid "FanFold Legal German"
#~ msgstr "Paper continu legal alemany"
#~ msgid "Fanfold US"
#~ msgstr "Paper continu americà"
#~ msgid "File Folder "
#~ msgstr "Carpeta d'arxivador "
+85 -10
Ver Arquivo
@@ -29,7 +29,7 @@ msgid ""
msgstr ""
"Project-Id-Version: CUPS 1.6\n"
"Report-Msgid-Bugs-To: https://github.com/apple/cups/issues\n"
"POT-Creation-Date: 2017-08-28 12:25-0400\n"
"POT-Creation-Date: 2018-03-19 18:36-0400\n"
"PO-Revision-Date: 2012-09-14 10:26+0100\n"
"Last-Translator: Jan Bartos <jan.bartos@madeta.cz>\n"
"Language-Team: Czech\n"
@@ -1462,6 +1462,10 @@ msgstr ""
msgid "%s: Don't know what to do."
msgstr ""
#, c-format
msgid "%s: Error - %s"
msgstr ""
#, c-format
msgid ""
"%s: Error - %s environment variable names non-existent destination \"%s\"."
@@ -2733,6 +2737,10 @@ msgstr ""
msgid "Bad request version number %d.%d."
msgstr ""
#, c-format
msgid "Bad requesting-user-name value: %s"
msgstr ""
msgid "Bad resource in URI"
msgstr ""
@@ -3260,6 +3268,12 @@ msgstr ""
msgid "Error: need hostname after \"-h\" option."
msgstr ""
msgid "European Fanfold"
msgstr ""
msgid "European Fanfold Legal"
msgstr ""
msgid "Every 10 Labels"
msgstr "Každých 10 štítků"
@@ -3323,15 +3337,6 @@ msgstr ""
msgid "Face Up"
msgstr ""
msgid "FanFold German"
msgstr ""
msgid "FanFold Legal German"
msgstr ""
msgid "Fanfold US"
msgstr ""
msgid "Fast Grayscale"
msgstr ""
@@ -3395,6 +3400,9 @@ msgstr "Fólie"
msgid "Forbidden"
msgstr "Zakázaný"
msgid "Found"
msgstr ""
msgid "Full Cut Tabs"
msgstr ""
@@ -5168,6 +5176,9 @@ msgstr "URI je příliš dlouhá"
msgid "URI too large"
msgstr ""
msgid "US Fanfold"
msgstr ""
msgid "US Ledger"
msgstr "US Ledger"
@@ -7736,6 +7747,16 @@ msgstr ""
msgid "lpadmin: Printer name can only contain printable characters."
msgstr ""
msgid ""
"lpadmin: Raw queues are deprecated and will stop working in a future version "
"of CUPS."
msgstr ""
msgid ""
"lpadmin: System V interface scripts are no longer supported for security "
"reasons."
msgstr ""
msgid ""
"lpadmin: Unable to add a printer to the class:\n"
" You must specify a printer name first."
@@ -7783,6 +7804,9 @@ msgstr ""
msgid "lpadmin: Unknown option \"%c\"."
msgstr ""
msgid "lpadmin: Use the 'everywhere' model for shared printers."
msgstr ""
msgid "lpadmin: Warning - content type list ignored."
msgstr ""
@@ -8526,6 +8550,45 @@ msgstr "Cardstock"
msgid "media-type.cd"
msgstr "CD"
msgid "media-type.com.hp.advanced-photo"
msgstr "Advanced Photo Paper"
msgid "media-type.com.hp.brochure-glossy"
msgstr "Glossy Brochure Paper"
msgid "media-type.com.hp.brochure-matte"
msgstr "Matte Brochure Paper"
msgid "media-type.com.hp.cover-matte"
msgstr "Matte Cover Paper"
msgid "media-type.com.hp.ecosmart-lite"
msgstr "Office Recycled Paper"
msgid "media-type.com.hp.everyday-glossy"
msgstr "Everyday Glossy Photo Paper"
msgid "media-type.com.hp.everyday-matte"
msgstr "Everyday Matte Paper"
msgid "media-type.com.hp.extra-heavy"
msgstr "Extra Heavyweight Paper"
msgid "media-type.com.hp.intermediate"
msgstr "Multipurpose Paper"
msgid "media-type.com.hp.mid-weight"
msgstr "Mid-Weight Paper"
msgid "media-type.com.hp.premium-inkjet"
msgstr "Premium Inkjet Paper"
msgid "media-type.com.hp.premium-photo"
msgstr "Premium Photo Glossy Paper"
msgid "media-type.com.hp.premium-presentation-matte"
msgstr "Premium Presentation Matte Paper"
msgid "media-type.continuous"
msgstr "Continuous"
@@ -8670,6 +8733,18 @@ msgstr "Image Setter Paper"
msgid "media-type.imaging-cylinder"
msgstr "Imaging Cylinder"
msgid "media-type.jp.co.canon-photo-paper-plus-glossy-ii"
msgstr "Photo Paper Plus Glossy II"
msgid "media-type.jp.co.canon-photo-paper-pro-platinum"
msgstr "Photo Paper Pro Platinum"
msgid "media-type.jp.co.canon_photo-paper-plus-glossy-ii"
msgstr "Photo Paper Plus Glossy II"
msgid "media-type.jp.co.canon_photo-paper-pro-platinum"
msgstr "Photo Paper Pro Platinum"
msgid "media-type.labels"
msgstr "Labels"
+88 -13
Ver Arquivo
@@ -29,9 +29,9 @@ msgid ""
msgstr ""
"Project-Id-Version: CUPS 2.0\n"
"Report-Msgid-Bugs-To: https://github.com/apple/cups/issues\n"
"POT-Creation-Date: 2017-08-28 12:25-0400\n"
"PO-Revision-Date: 2016-09-17 18:45+0200\n"
"Last-Translator: Joachim Schwender <joachim.schwender@web.de>\n"
"POT-Creation-Date: 2018-03-19 18:36-0400\n"
"PO-Revision-Date: 2017-10-25 14:57+0200\n"
"Last-Translator: Michael Weghorn <m.weghorn@posteo.de>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: German\n"
"MIME-Version: 1.0\n"
@@ -1526,6 +1526,10 @@ msgstr "%s: Ungültige Version %s für \"-V\"."
msgid "%s: Don't know what to do."
msgstr "%s: Unklar was zu tun ist."
#, c-format
msgid "%s: Error - %s"
msgstr ""
#, c-format
msgid ""
"%s: Error - %s environment variable names non-existent destination \"%s\"."
@@ -2809,6 +2813,10 @@ msgstr "Ungültige Anfrage-ID %d."
msgid "Bad request version number %d.%d."
msgstr "Ungültige Versionsnummernanfrage %d.%d."
#, c-format
msgid "Bad requesting-user-name value: %s"
msgstr ""
msgid "Bad resource in URI"
msgstr "Ungültige Resource in URI"
@@ -3340,6 +3348,12 @@ msgstr "Fehler beim Senden von Rasterdaten."
msgid "Error: need hostname after \"-h\" option."
msgstr "Fehler: Hostname ist nach der \"-h\" Option erforderlich."
msgid "European Fanfold"
msgstr ""
msgid "European Fanfold Legal"
msgstr ""
msgid "Every 10 Labels"
msgstr "Alle 10 Etiketten"
@@ -3403,15 +3417,6 @@ msgstr ""
msgid "Face Up"
msgstr ""
msgid "FanFold German"
msgstr ""
msgid "FanFold Legal German"
msgstr ""
msgid "Fanfold US"
msgstr ""
msgid "Fast Grayscale"
msgstr ""
@@ -3475,6 +3480,9 @@ msgstr "Folio"
msgid "Forbidden"
msgstr "Verboten"
msgid "Found"
msgstr ""
msgid "Full Cut Tabs"
msgstr ""
@@ -5265,6 +5273,9 @@ msgstr "URI zu lang"
msgid "URI too large"
msgstr "URI zu gross"
msgid "US Fanfold"
msgstr ""
msgid "US Ledger"
msgstr "US Ledger"
@@ -7868,6 +7879,16 @@ msgstr "lpadmin: Drucker %s ist kein Mitglied der Klasse %s."
msgid "lpadmin: Printer name can only contain printable characters."
msgstr "lpadmin: Druckername darf nur druckbare Zeichen enthalten."
msgid ""
"lpadmin: Raw queues are deprecated and will stop working in a future version "
"of CUPS."
msgstr ""
msgid ""
"lpadmin: System V interface scripts are no longer supported for security "
"reasons."
msgstr ""
msgid ""
"lpadmin: Unable to add a printer to the class:\n"
" You must specify a printer name first."
@@ -7921,6 +7942,9 @@ msgstr "lpadmin: unbekanntes Argument \"%s\"."
msgid "lpadmin: Unknown option \"%c\"."
msgstr "lpadmin: Unbekannte Option »%c«."
msgid "lpadmin: Use the 'everywhere' model for shared printers."
msgstr ""
msgid "lpadmin: Warning - content type list ignored."
msgstr "lpadmin: Warnung - Inhaltstypliste ignoriert."
@@ -8664,6 +8688,45 @@ msgstr "Cardstock"
msgid "media-type.cd"
msgstr "CD"
msgid "media-type.com.hp.advanced-photo"
msgstr "Advanced Photo Paper"
msgid "media-type.com.hp.brochure-glossy"
msgstr "Glossy Brochure Paper"
msgid "media-type.com.hp.brochure-matte"
msgstr "Matte Brochure Paper"
msgid "media-type.com.hp.cover-matte"
msgstr "Matte Cover Paper"
msgid "media-type.com.hp.ecosmart-lite"
msgstr "Office Recycled Paper"
msgid "media-type.com.hp.everyday-glossy"
msgstr "Everyday Glossy Photo Paper"
msgid "media-type.com.hp.everyday-matte"
msgstr "Everyday Matte Paper"
msgid "media-type.com.hp.extra-heavy"
msgstr "Extra Heavyweight Paper"
msgid "media-type.com.hp.intermediate"
msgstr "Multipurpose Paper"
msgid "media-type.com.hp.mid-weight"
msgstr "Mid-Weight Paper"
msgid "media-type.com.hp.premium-inkjet"
msgstr "Premium Inkjet Paper"
msgid "media-type.com.hp.premium-photo"
msgstr "Premium Photo Glossy Paper"
msgid "media-type.com.hp.premium-presentation-matte"
msgstr "Premium Presentation Matte Paper"
msgid "media-type.continuous"
msgstr "Continuous"
@@ -8808,6 +8871,18 @@ msgstr "Image Setter Paper"
msgid "media-type.imaging-cylinder"
msgstr "Imaging Cylinder"
msgid "media-type.jp.co.canon-photo-paper-plus-glossy-ii"
msgstr "Photo Paper Plus Glossy II"
msgid "media-type.jp.co.canon-photo-paper-pro-platinum"
msgstr "Photo Paper Pro Platinum"
msgid "media-type.jp.co.canon_photo-paper-plus-glossy-ii"
msgstr "Photo Paper Plus Glossy II"
msgid "media-type.jp.co.canon_photo-paper-pro-platinum"
msgstr "Photo Paper Pro Platinum"
msgid "media-type.labels"
msgstr "Labels"
@@ -12849,7 +12924,7 @@ msgstr "Top"
#, c-format
msgid "request id is %s-%d (%d file(s))"
msgstr "Anfrage-ID ist%s-%d (%d Datei(en))"
msgstr "Anfrage-ID ist %s-%d (%d Datei(en))"
msgid "request-id uses indefinite length"
msgstr "Anfrage-ID hat unbestimmte Länge"
+96 -12
Ver Arquivo
@@ -16,7 +16,7 @@ msgid ""
msgstr ""
"Project-Id-Version: CUPS 2.2\n"
"Report-Msgid-Bugs-To: https://github.com/apple/cups/issues\n"
"POT-Creation-Date: 2017-08-28 12:25-0400\n"
"POT-Creation-Date: 2018-03-19 18:36-0400\n"
"PO-Revision-Date: 2016-06-26 21:17+0100\n"
"Last-Translator: Juan Pablo González Riopedre <jpgriopedre@yahoo.es>\n"
"Language-Team: Spanish\n"
@@ -1669,6 +1669,10 @@ msgstr "%s: Versión %s incorrecta para \"-V\"."
msgid "%s: Don't know what to do."
msgstr "%s: No sé que hay que hacer."
#, c-format
msgid "%s: Error - %s"
msgstr ""
#, c-format
msgid ""
"%s: Error - %s environment variable names non-existent destination \"%s\"."
@@ -2955,6 +2959,10 @@ msgstr "Petición incorrecta de ID %d."
msgid "Bad request version number %d.%d."
msgstr "Petición incorrecta de número de versión %d.%d."
#, c-format
msgid "Bad requesting-user-name value: %s"
msgstr ""
msgid "Bad resource in URI"
msgstr "Recurso incorrecto en URI"
@@ -3490,6 +3498,12 @@ msgstr "Error enviando trama de datos (raster)."
msgid "Error: need hostname after \"-h\" option."
msgstr "Error: se necesita un nombre de equipo tras la opción \"-h\"."
msgid "European Fanfold"
msgstr ""
msgid "European Fanfold Legal"
msgstr ""
msgid "Every 10 Labels"
msgstr "Cada 10 etiquetas"
@@ -3553,15 +3567,6 @@ msgstr ""
msgid "Face Up"
msgstr ""
msgid "FanFold German"
msgstr "FanFold alemán"
msgid "FanFold Legal German"
msgstr "FanFold Legal alemán"
msgid "Fanfold US"
msgstr "FanFold de EE.UU"
msgid "Fast Grayscale"
msgstr "Escala de grises rápida"
@@ -3627,6 +3632,9 @@ msgstr "Folio"
msgid "Forbidden"
msgstr "Prohibido"
msgid "Found"
msgstr ""
msgid "Full Cut Tabs"
msgstr ""
@@ -5419,6 +5427,9 @@ msgstr "URI demasiado largo"
msgid "URI too large"
msgstr "URI demasiado grande"
msgid "US Fanfold"
msgstr ""
msgid "US Ledger"
msgstr "Libro Mayor, 17 x 11 pulg."
@@ -5929,8 +5940,8 @@ msgstr "Uso: cupstestdsc [opciones] nombre_archivo.ps [... nombre_archivo.ps]"
msgid ""
"Usage: cupstestppd [options] filename1.ppd[.gz] [... filenameN.ppd[.gz]]"
msgstr ""
"Uso: cupstestppd [opciones] nombre_archivo1.ppd[.gz] [... nombre_archivoN."
"ppd[.gz]]"
"Uso: cupstestppd [opciones] nombre_archivo1.ppd[.gz] [... nombre_archivoN.ppd"
"[.gz]]"
msgid ""
"Usage: ippfind [options] regtype[,subtype][.domain.] ... [expression]\n"
@@ -8057,6 +8068,16 @@ msgstr ""
"lpadmin: El nombre de la impresora sólo puede contener caracteres "
"imprimibles."
msgid ""
"lpadmin: Raw queues are deprecated and will stop working in a future version "
"of CUPS."
msgstr ""
msgid ""
"lpadmin: System V interface scripts are no longer supported for security "
"reasons."
msgstr ""
msgid ""
"lpadmin: Unable to add a printer to the class:\n"
" You must specify a printer name first."
@@ -8113,6 +8134,9 @@ msgstr "lpadmin: Argumento \"%s\" desconocido."
msgid "lpadmin: Unknown option \"%c\"."
msgstr "lpadmin: Opción \"%c\" desconocida."
msgid "lpadmin: Use the 'everywhere' model for shared printers."
msgstr ""
msgid "lpadmin: Warning - content type list ignored."
msgstr "lpadmin: Advertencia - lista de tipo de contenido no tenida en cuenta."
@@ -8859,6 +8883,45 @@ msgstr "Cardstock"
msgid "media-type.cd"
msgstr "CD"
msgid "media-type.com.hp.advanced-photo"
msgstr "Advanced Photo Paper"
msgid "media-type.com.hp.brochure-glossy"
msgstr "Glossy Brochure Paper"
msgid "media-type.com.hp.brochure-matte"
msgstr "Matte Brochure Paper"
msgid "media-type.com.hp.cover-matte"
msgstr "Matte Cover Paper"
msgid "media-type.com.hp.ecosmart-lite"
msgstr "Office Recycled Paper"
msgid "media-type.com.hp.everyday-glossy"
msgstr "Everyday Glossy Photo Paper"
msgid "media-type.com.hp.everyday-matte"
msgstr "Everyday Matte Paper"
msgid "media-type.com.hp.extra-heavy"
msgstr "Extra Heavyweight Paper"
msgid "media-type.com.hp.intermediate"
msgstr "Multipurpose Paper"
msgid "media-type.com.hp.mid-weight"
msgstr "Mid-Weight Paper"
msgid "media-type.com.hp.premium-inkjet"
msgstr "Premium Inkjet Paper"
msgid "media-type.com.hp.premium-photo"
msgstr "Premium Photo Glossy Paper"
msgid "media-type.com.hp.premium-presentation-matte"
msgstr "Premium Presentation Matte Paper"
msgid "media-type.continuous"
msgstr "Continuous"
@@ -9003,6 +9066,18 @@ msgstr "Image Setter Paper"
msgid "media-type.imaging-cylinder"
msgstr "Imaging Cylinder"
msgid "media-type.jp.co.canon-photo-paper-plus-glossy-ii"
msgstr "Photo Paper Plus Glossy II"
msgid "media-type.jp.co.canon-photo-paper-pro-platinum"
msgstr "Photo Paper Pro Platinum"
msgid "media-type.jp.co.canon_photo-paper-plus-glossy-ii"
msgstr "Photo Paper Plus Glossy II"
msgid "media-type.jp.co.canon_photo-paper-pro-platinum"
msgstr "Photo Paper Pro Platinum"
msgid "media-type.labels"
msgstr "Labels"
@@ -13544,6 +13619,15 @@ msgstr "Z Offset"
#~ msgid "CD/DVD/Bluray"
#~ msgstr "CD/DVD/Bluray"
#~ msgid "FanFold German"
#~ msgstr "FanFold alemán"
#~ msgid "FanFold Legal German"
#~ msgstr "FanFold Legal alemán"
#~ msgid "Fanfold US"
#~ msgstr "FanFold de EE.UU"
#~ msgid "Finishing"
#~ msgstr "Terminando"
+85 -10
Ver Arquivo
@@ -29,7 +29,7 @@ msgid ""
msgstr ""
"Project-Id-Version: CUPS 1.6\n"
"Report-Msgid-Bugs-To: https://github.com/apple/cups/issues\n"
"POT-Creation-Date: 2017-08-28 12:25-0400\n"
"POT-Creation-Date: 2018-03-19 18:36-0400\n"
"PO-Revision-Date: 2012-12-12 11:12+0100\n"
"Last-Translator: Stéphane Blondon <stephane.blondon@gmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -1522,6 +1522,10 @@ msgstr "%s : Mauvaise version %s for « -V »."
msgid "%s: Don't know what to do."
msgstr "%s : ne sait pas quoi faire."
#, c-format
msgid "%s: Error - %s"
msgstr ""
#, c-format
msgid ""
"%s: Error - %s environment variable names non-existent destination \"%s\"."
@@ -2793,6 +2797,10 @@ msgstr ""
msgid "Bad request version number %d.%d."
msgstr ""
#, c-format
msgid "Bad requesting-user-name value: %s"
msgstr ""
msgid "Bad resource in URI"
msgstr ""
@@ -3322,6 +3330,12 @@ msgstr ""
msgid "Error: need hostname after \"-h\" option."
msgstr ""
msgid "European Fanfold"
msgstr ""
msgid "European Fanfold Legal"
msgstr ""
msgid "Every 10 Labels"
msgstr "Toutes les 10 étiquettes"
@@ -3385,15 +3399,6 @@ msgstr ""
msgid "Face Up"
msgstr ""
msgid "FanFold German"
msgstr ""
msgid "FanFold Legal German"
msgstr ""
msgid "Fanfold US"
msgstr ""
msgid "Fast Grayscale"
msgstr "Niveaux de gris rapide"
@@ -3457,6 +3462,9 @@ msgstr "Folio"
msgid "Forbidden"
msgstr "Interdit"
msgid "Found"
msgstr ""
msgid "Full Cut Tabs"
msgstr ""
@@ -5235,6 +5243,9 @@ msgstr "URI trop long"
msgid "URI too large"
msgstr ""
msgid "US Fanfold"
msgstr ""
msgid "US Ledger"
msgstr "US Ledger"
@@ -7803,6 +7814,16 @@ msgstr ""
msgid "lpadmin: Printer name can only contain printable characters."
msgstr ""
msgid ""
"lpadmin: Raw queues are deprecated and will stop working in a future version "
"of CUPS."
msgstr ""
msgid ""
"lpadmin: System V interface scripts are no longer supported for security "
"reasons."
msgstr ""
msgid ""
"lpadmin: Unable to add a printer to the class:\n"
" You must specify a printer name first."
@@ -7850,6 +7871,9 @@ msgstr ""
msgid "lpadmin: Unknown option \"%c\"."
msgstr ""
msgid "lpadmin: Use the 'everywhere' model for shared printers."
msgstr ""
msgid "lpadmin: Warning - content type list ignored."
msgstr ""
@@ -8593,6 +8617,45 @@ msgstr "Cardstock"
msgid "media-type.cd"
msgstr "CD"
msgid "media-type.com.hp.advanced-photo"
msgstr "Advanced Photo Paper"
msgid "media-type.com.hp.brochure-glossy"
msgstr "Glossy Brochure Paper"
msgid "media-type.com.hp.brochure-matte"
msgstr "Matte Brochure Paper"
msgid "media-type.com.hp.cover-matte"
msgstr "Matte Cover Paper"
msgid "media-type.com.hp.ecosmart-lite"
msgstr "Office Recycled Paper"
msgid "media-type.com.hp.everyday-glossy"
msgstr "Everyday Glossy Photo Paper"
msgid "media-type.com.hp.everyday-matte"
msgstr "Everyday Matte Paper"
msgid "media-type.com.hp.extra-heavy"
msgstr "Extra Heavyweight Paper"
msgid "media-type.com.hp.intermediate"
msgstr "Multipurpose Paper"
msgid "media-type.com.hp.mid-weight"
msgstr "Mid-Weight Paper"
msgid "media-type.com.hp.premium-inkjet"
msgstr "Premium Inkjet Paper"
msgid "media-type.com.hp.premium-photo"
msgstr "Premium Photo Glossy Paper"
msgid "media-type.com.hp.premium-presentation-matte"
msgstr "Premium Presentation Matte Paper"
msgid "media-type.continuous"
msgstr "Continuous"
@@ -8737,6 +8800,18 @@ msgstr "Image Setter Paper"
msgid "media-type.imaging-cylinder"
msgstr "Imaging Cylinder"
msgid "media-type.jp.co.canon-photo-paper-plus-glossy-ii"
msgstr "Photo Paper Plus Glossy II"
msgid "media-type.jp.co.canon-photo-paper-pro-platinum"
msgstr "Photo Paper Pro Platinum"
msgid "media-type.jp.co.canon_photo-paper-plus-glossy-ii"
msgstr "Photo Paper Plus Glossy II"
msgid "media-type.jp.co.canon_photo-paper-pro-platinum"
msgstr "Photo Paper Pro Platinum"
msgid "media-type.labels"
msgstr "Labels"
+94 -10
Ver Arquivo
@@ -29,7 +29,7 @@ msgid ""
msgstr ""
"Project-Id-Version: CUPS 1.6\n"
"Report-Msgid-Bugs-To: https://github.com/apple/cups/issues\n"
"POT-Creation-Date: 2017-08-28 12:25-0400\n"
"POT-Creation-Date: 2018-03-19 18:36-0400\n"
"PO-Revision-Date: 2013-07-14 12:00+0200\n"
"Last-Translator: Giovanni Scafora <giovanni@archlinux.org>\n"
"Language-Team: Arch Linux Italian Team <giovanni@archlinux.org>\n"
@@ -1664,6 +1664,10 @@ msgstr "%s: la versione %s non è valida per \"-V\"."
msgid "%s: Don't know what to do."
msgstr "%s: non so cosa fare."
#, c-format
msgid "%s: Error - %s"
msgstr ""
#, c-format
msgid ""
"%s: Error - %s environment variable names non-existent destination \"%s\"."
@@ -2951,6 +2955,10 @@ msgstr "L'ID della richiesta %d non è valido."
msgid "Bad request version number %d.%d."
msgstr "Il numero della versione richiesta %d.%d non è valido."
#, c-format
msgid "Bad requesting-user-name value: %s"
msgstr ""
msgid "Bad resource in URI"
msgstr ""
@@ -3488,6 +3496,12 @@ msgstr "Si è verificato un errore durante l'invio dei dati raster."
msgid "Error: need hostname after \"-h\" option."
msgstr "Errore: è necessario l'hostname dopo l'opzione \"-h\"."
msgid "European Fanfold"
msgstr ""
msgid "European Fanfold Legal"
msgstr ""
msgid "Every 10 Labels"
msgstr "Ogni 10 etichette"
@@ -3551,15 +3565,6 @@ msgstr ""
msgid "Face Up"
msgstr ""
msgid "FanFold German"
msgstr "FanFold German"
msgid "FanFold Legal German"
msgstr "FanFold Legal German"
msgid "Fanfold US"
msgstr "FanFold US"
msgid "Fast Grayscale"
msgstr ""
@@ -3625,6 +3630,9 @@ msgstr "Foglio"
msgid "Forbidden"
msgstr "Vietato"
msgid "Found"
msgstr ""
msgid "Full Cut Tabs"
msgstr ""
@@ -5419,6 +5427,9 @@ msgstr "L'URI è troppo lungo"
msgid "URI too large"
msgstr ""
msgid "US Fanfold"
msgstr ""
msgid "US Ledger"
msgstr "US Ledger"
@@ -8029,6 +8040,16 @@ msgid "lpadmin: Printer name can only contain printable characters."
msgstr ""
"lpadmin: il nome della stampante può contenere solo caratteri stampabili."
msgid ""
"lpadmin: Raw queues are deprecated and will stop working in a future version "
"of CUPS."
msgstr ""
msgid ""
"lpadmin: System V interface scripts are no longer supported for security "
"reasons."
msgstr ""
msgid ""
"lpadmin: Unable to add a printer to the class:\n"
" You must specify a printer name first."
@@ -8084,6 +8105,9 @@ msgstr "lpadmin: argomento sconosciuto \"%s\"."
msgid "lpadmin: Unknown option \"%c\"."
msgstr "lpadmin: opzione sconosciuta \"%c\"."
msgid "lpadmin: Use the 'everywhere' model for shared printers."
msgstr ""
msgid "lpadmin: Warning - content type list ignored."
msgstr "lpadmin: attenzione - contenuto nell'elenco tipo ignorato."
@@ -8830,6 +8854,45 @@ msgstr "Cardstock"
msgid "media-type.cd"
msgstr "CD"
msgid "media-type.com.hp.advanced-photo"
msgstr "Advanced Photo Paper"
msgid "media-type.com.hp.brochure-glossy"
msgstr "Glossy Brochure Paper"
msgid "media-type.com.hp.brochure-matte"
msgstr "Matte Brochure Paper"
msgid "media-type.com.hp.cover-matte"
msgstr "Matte Cover Paper"
msgid "media-type.com.hp.ecosmart-lite"
msgstr "Office Recycled Paper"
msgid "media-type.com.hp.everyday-glossy"
msgstr "Everyday Glossy Photo Paper"
msgid "media-type.com.hp.everyday-matte"
msgstr "Everyday Matte Paper"
msgid "media-type.com.hp.extra-heavy"
msgstr "Extra Heavyweight Paper"
msgid "media-type.com.hp.intermediate"
msgstr "Multipurpose Paper"
msgid "media-type.com.hp.mid-weight"
msgstr "Mid-Weight Paper"
msgid "media-type.com.hp.premium-inkjet"
msgstr "Premium Inkjet Paper"
msgid "media-type.com.hp.premium-photo"
msgstr "Premium Photo Glossy Paper"
msgid "media-type.com.hp.premium-presentation-matte"
msgstr "Premium Presentation Matte Paper"
msgid "media-type.continuous"
msgstr "Continuous"
@@ -8974,6 +9037,18 @@ msgstr "Image Setter Paper"
msgid "media-type.imaging-cylinder"
msgstr "Imaging Cylinder"
msgid "media-type.jp.co.canon-photo-paper-plus-glossy-ii"
msgstr "Photo Paper Plus Glossy II"
msgid "media-type.jp.co.canon-photo-paper-pro-platinum"
msgstr "Photo Paper Pro Platinum"
msgid "media-type.jp.co.canon_photo-paper-plus-glossy-ii"
msgstr "Photo Paper Plus Glossy II"
msgid "media-type.jp.co.canon_photo-paper-pro-platinum"
msgstr "Photo Paper Pro Platinum"
msgid "media-type.labels"
msgstr "Labels"
@@ -13559,6 +13634,15 @@ msgstr "Z Offset"
#~ msgid "Envelope PRC1 "
#~ msgstr "Envelope PRC1 "
#~ msgid "FanFold German"
#~ msgstr "FanFold German"
#~ msgid "FanFold Legal German"
#~ msgstr "FanFold Legal German"
#~ msgid "Fanfold US"
#~ msgstr "FanFold US"
#~ msgid "File Folder "
#~ msgstr "Directory del file"
+94 -10
Ver Arquivo
@@ -28,7 +28,7 @@ msgid ""
msgstr ""
"Project-Id-Version: CUPS 2.0\n"
"Report-Msgid-Bugs-To: https://github.com/apple/cups/issues\n"
"POT-Creation-Date: 2017-08-28 12:25-0400\n"
"POT-Creation-Date: 2018-03-19 18:36-0400\n"
"PO-Revision-Date: 2014-11-15 19:27+0900\n"
"Last-Translator: OPFC TRANSCUPS <opfc-transcups@sourceforge.jp>\n"
"Language-Team: OPFC TRANSCUPS <opfc-transcups@sourceforge.jp>\n"
@@ -1640,6 +1640,10 @@ msgstr "%s: -V オプションにおいて %s は不正なバージョンです
msgid "%s: Don't know what to do."
msgstr "%s: 何が起きているか不明です。"
#, c-format
msgid "%s: Error - %s"
msgstr ""
#, c-format
msgid ""
"%s: Error - %s environment variable names non-existent destination \"%s\"."
@@ -2921,6 +2925,10 @@ msgstr "%d は無効なリクエストIDです。"
msgid "Bad request version number %d.%d."
msgstr "バージョン番号 %d.%d は無効なリクエストです。"
#, c-format
msgid "Bad requesting-user-name value: %s"
msgstr ""
msgid "Bad resource in URI"
msgstr "URI のリソースが不正"
@@ -3460,6 +3468,12 @@ msgstr "ラスターデータの送信でエラーが起きました。"
msgid "Error: need hostname after \"-h\" option."
msgstr "Error: '-h' オプションのあとにはホスト名が必要です。"
msgid "European Fanfold"
msgstr ""
msgid "European Fanfold Legal"
msgstr ""
msgid "Every 10 Labels"
msgstr "10 ラベルごと"
@@ -3523,15 +3537,6 @@ msgstr ""
msgid "Face Up"
msgstr ""
msgid "FanFold German"
msgstr "FanFold German"
msgid "FanFold Legal German"
msgstr "FanFold Legal German"
msgid "Fanfold US"
msgstr "Fanfold US"
msgid "Fast Grayscale"
msgstr ""
@@ -3599,6 +3604,9 @@ msgstr "フォリオ"
msgid "Forbidden"
msgstr "Forbidden"
msgid "Found"
msgstr ""
msgid "Full Cut Tabs"
msgstr ""
@@ -5385,6 +5393,9 @@ msgstr "URI が長すぎます"
msgid "URI too large"
msgstr "URI が長すぎる"
msgid "US Fanfold"
msgstr ""
msgid "US Ledger"
msgstr "US レジャー"
@@ -7991,6 +8002,16 @@ msgstr "lpadmin: プリンター %s はクラス %s のメンバーではあり
msgid "lpadmin: Printer name can only contain printable characters."
msgstr "lpadmin: プリンター名には表示可能文字だけが使用できます。"
msgid ""
"lpadmin: Raw queues are deprecated and will stop working in a future version "
"of CUPS."
msgstr ""
msgid ""
"lpadmin: System V interface scripts are no longer supported for security "
"reasons."
msgstr ""
msgid ""
"lpadmin: Unable to add a printer to the class:\n"
" You must specify a printer name first."
@@ -8046,6 +8067,9 @@ msgstr "lpadmin: \"%s\" は未知の引数です。"
msgid "lpadmin: Unknown option \"%c\"."
msgstr "lpadmin: \"%c\" は未知のオプションです。"
msgid "lpadmin: Use the 'everywhere' model for shared printers."
msgstr ""
msgid "lpadmin: Warning - content type list ignored."
msgstr "lpadmin: 警告 - コンテンツタイプリストは無視されます。"
@@ -8799,6 +8823,45 @@ msgstr "Cardstock"
msgid "media-type.cd"
msgstr "CD"
msgid "media-type.com.hp.advanced-photo"
msgstr "Advanced Photo Paper"
msgid "media-type.com.hp.brochure-glossy"
msgstr "Glossy Brochure Paper"
msgid "media-type.com.hp.brochure-matte"
msgstr "Matte Brochure Paper"
msgid "media-type.com.hp.cover-matte"
msgstr "Matte Cover Paper"
msgid "media-type.com.hp.ecosmart-lite"
msgstr "Office Recycled Paper"
msgid "media-type.com.hp.everyday-glossy"
msgstr "Everyday Glossy Photo Paper"
msgid "media-type.com.hp.everyday-matte"
msgstr "Everyday Matte Paper"
msgid "media-type.com.hp.extra-heavy"
msgstr "Extra Heavyweight Paper"
msgid "media-type.com.hp.intermediate"
msgstr "Multipurpose Paper"
msgid "media-type.com.hp.mid-weight"
msgstr "Mid-Weight Paper"
msgid "media-type.com.hp.premium-inkjet"
msgstr "Premium Inkjet Paper"
msgid "media-type.com.hp.premium-photo"
msgstr "Premium Photo Glossy Paper"
msgid "media-type.com.hp.premium-presentation-matte"
msgstr "Premium Presentation Matte Paper"
msgid "media-type.continuous"
msgstr "Continuous"
@@ -8943,6 +9006,18 @@ msgstr "Image Setter Paper"
msgid "media-type.imaging-cylinder"
msgstr "Imaging Cylinder"
msgid "media-type.jp.co.canon-photo-paper-plus-glossy-ii"
msgstr "Photo Paper Plus Glossy II"
msgid "media-type.jp.co.canon-photo-paper-pro-platinum"
msgstr "Photo Paper Pro Platinum"
msgid "media-type.jp.co.canon_photo-paper-plus-glossy-ii"
msgstr "Photo Paper Plus Glossy II"
msgid "media-type.jp.co.canon_photo-paper-pro-platinum"
msgstr "Photo Paper Pro Platinum"
msgid "media-type.labels"
msgstr "Labels"
@@ -13559,6 +13634,15 @@ msgstr "Z Offset"
#~ msgid "Envelope PRC1 "
#~ msgstr "封筒 PRC1"
#~ msgid "FanFold German"
#~ msgstr "FanFold German"
#~ msgid "FanFold Legal German"
#~ msgstr "FanFold Legal German"
#~ msgid "Fanfold US"
#~ msgstr "Fanfold US"
#~ msgid "File Folder "
#~ msgstr "ファイルフォルダー"
+94 -10
Ver Arquivo
@@ -40,7 +40,7 @@ msgid ""
msgstr ""
"Project-Id-Version: CUPS 2.1.2\n"
"Report-Msgid-Bugs-To: https://github.com/apple/cups/issues\n"
"POT-Creation-Date: 2017-08-28 12:25-0400\n"
"POT-Creation-Date: 2018-03-19 18:36-0400\n"
"PO-Revision-Date: 2016-01-31 16:45-0200\n"
"Last-Translator: Rafael Fontenelle <rffontenelle@gmail.com>\n"
"Language-Team: Brazilian Portuguese <traducao-cups-pt-br@googlegroups.com>\n"
@@ -1673,6 +1673,10 @@ msgstr "%s: Versão inválida %s para \"-V\"."
msgid "%s: Don't know what to do."
msgstr "%s: Não sei o que fazer."
#, c-format
msgid "%s: Error - %s"
msgstr ""
#, c-format
msgid ""
"%s: Error - %s environment variable names non-existent destination \"%s\"."
@@ -2955,6 +2959,10 @@ msgstr "ID da requisição inválido %d."
msgid "Bad request version number %d.%d."
msgstr "Número da versão de requisição inválido %d.%d."
#, c-format
msgid "Bad requesting-user-name value: %s"
msgstr ""
msgid "Bad resource in URI"
msgstr "Recurso inválido na URI"
@@ -3491,6 +3499,12 @@ msgstr "Erro ao enviar dados de rasterização."
msgid "Error: need hostname after \"-h\" option."
msgstr "Erro: precisa de nome da máquina após a opção \"-h\"."
msgid "European Fanfold"
msgstr ""
msgid "European Fanfold Legal"
msgstr ""
msgid "Every 10 Labels"
msgstr "A cada 10 etiquetas"
@@ -3554,15 +3568,6 @@ msgstr ""
msgid "Face Up"
msgstr ""
msgid "FanFold German"
msgstr "FanFold German"
msgid "FanFold Legal German"
msgstr "FanFold Legal German"
msgid "Fanfold US"
msgstr "Fanfold US"
msgid "Fast Grayscale"
msgstr ""
@@ -3628,6 +3633,9 @@ msgstr "Fólio"
msgid "Forbidden"
msgstr "Proibido"
msgid "Found"
msgstr ""
msgid "Full Cut Tabs"
msgstr ""
@@ -5420,6 +5428,9 @@ msgstr "URI muito longa"
msgid "URI too large"
msgstr "URI muito grande"
msgid "US Fanfold"
msgstr ""
msgid "US Ledger"
msgstr "US Ledger"
@@ -8034,6 +8045,16 @@ msgstr "lpadmin: Impressora %s não é membro da classe %s."
msgid "lpadmin: Printer name can only contain printable characters."
msgstr "lpadmin: Nome da impressora só pode conter caracteres imprimíveis."
msgid ""
"lpadmin: Raw queues are deprecated and will stop working in a future version "
"of CUPS."
msgstr ""
msgid ""
"lpadmin: System V interface scripts are no longer supported for security "
"reasons."
msgstr ""
msgid ""
"lpadmin: Unable to add a printer to the class:\n"
" You must specify a printer name first."
@@ -8089,6 +8110,9 @@ msgstr "lpadmin: Argumento desconhecido \"%s\"."
msgid "lpadmin: Unknown option \"%c\"."
msgstr "lpadmin: Opção desconhecida \"%c\"."
msgid "lpadmin: Use the 'everywhere' model for shared printers."
msgstr ""
msgid "lpadmin: Warning - content type list ignored."
msgstr "lpadmin: Aviso - lista de tipos de conteúdos ignorada."
@@ -8834,6 +8858,45 @@ msgstr "Cardstock"
msgid "media-type.cd"
msgstr "CD"
msgid "media-type.com.hp.advanced-photo"
msgstr "Advanced Photo Paper"
msgid "media-type.com.hp.brochure-glossy"
msgstr "Glossy Brochure Paper"
msgid "media-type.com.hp.brochure-matte"
msgstr "Matte Brochure Paper"
msgid "media-type.com.hp.cover-matte"
msgstr "Matte Cover Paper"
msgid "media-type.com.hp.ecosmart-lite"
msgstr "Office Recycled Paper"
msgid "media-type.com.hp.everyday-glossy"
msgstr "Everyday Glossy Photo Paper"
msgid "media-type.com.hp.everyday-matte"
msgstr "Everyday Matte Paper"
msgid "media-type.com.hp.extra-heavy"
msgstr "Extra Heavyweight Paper"
msgid "media-type.com.hp.intermediate"
msgstr "Multipurpose Paper"
msgid "media-type.com.hp.mid-weight"
msgstr "Mid-Weight Paper"
msgid "media-type.com.hp.premium-inkjet"
msgstr "Premium Inkjet Paper"
msgid "media-type.com.hp.premium-photo"
msgstr "Premium Photo Glossy Paper"
msgid "media-type.com.hp.premium-presentation-matte"
msgstr "Premium Presentation Matte Paper"
msgid "media-type.continuous"
msgstr "Continuous"
@@ -8978,6 +9041,18 @@ msgstr "Image Setter Paper"
msgid "media-type.imaging-cylinder"
msgstr "Imaging Cylinder"
msgid "media-type.jp.co.canon-photo-paper-plus-glossy-ii"
msgstr "Photo Paper Plus Glossy II"
msgid "media-type.jp.co.canon-photo-paper-pro-platinum"
msgstr "Photo Paper Pro Platinum"
msgid "media-type.jp.co.canon_photo-paper-plus-glossy-ii"
msgstr "Photo Paper Plus Glossy II"
msgid "media-type.jp.co.canon_photo-paper-pro-platinum"
msgstr "Photo Paper Pro Platinum"
msgid "media-type.labels"
msgstr "Labels"
@@ -13549,6 +13624,15 @@ msgstr "Z Offset"
#~ msgid "Envelope PRC1 "
#~ msgstr "Envelope PRC1 "
#~ msgid "FanFold German"
#~ msgstr "FanFold German"
#~ msgid "FanFold Legal German"
#~ msgstr "FanFold Legal German"
#~ msgid "Fanfold US"
#~ msgstr "Fanfold US"
#~ msgid "File Folder "
#~ msgstr "Pasta do arquivo "
+85 -10
Ver Arquivo
@@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: CUPS 2.0\n"
"Report-Msgid-Bugs-To: https://github.com/apple/cups/issues\n"
"POT-Creation-Date: 2017-08-28 12:25-0400\n"
"POT-Creation-Date: 2018-03-19 18:36-0400\n"
"PO-Revision-Date: 2015-01-28 12:00-0800\n"
"Last-Translator: Aleksandr Proklov\n"
"Language-Team: PuppyRus Linux Team\n"
@@ -1601,6 +1601,10 @@ msgstr "%s: Неверная версия %s для \"-V\"."
msgid "%s: Don't know what to do."
msgstr "%s: Дальнейшие действия неизвестны."
#, c-format
msgid "%s: Error - %s"
msgstr ""
#, c-format
msgid ""
"%s: Error - %s environment variable names non-existent destination \"%s\"."
@@ -2889,6 +2893,10 @@ msgstr "Неверный ID запроса %d."
msgid "Bad request version number %d.%d."
msgstr "Неверный номер версии запроса %d.%d."
#, c-format
msgid "Bad requesting-user-name value: %s"
msgstr ""
msgid "Bad resource in URI"
msgstr ""
@@ -3419,6 +3427,12 @@ msgstr "Ошибка отправки данных растра."
msgid "Error: need hostname after \"-h\" option."
msgstr "ERROR: Требуется имя хоста после параметра \"-h\""
msgid "European Fanfold"
msgstr ""
msgid "European Fanfold Legal"
msgstr ""
msgid "Every 10 Labels"
msgstr "Каждые 10 этикеток"
@@ -3482,15 +3496,6 @@ msgstr ""
msgid "Face Up"
msgstr ""
msgid "FanFold German"
msgstr ""
msgid "FanFold Legal German"
msgstr ""
msgid "Fanfold US"
msgstr ""
msgid "Fast Grayscale"
msgstr ""
@@ -3556,6 +3561,9 @@ msgstr "Фолио"
msgid "Forbidden"
msgstr "Запрещено"
msgid "Found"
msgstr ""
msgid "Full Cut Tabs"
msgstr ""
@@ -5340,6 +5348,9 @@ msgstr "Слишком длинный адрес URI"
msgid "URI too large"
msgstr "Слишком большой адрес URI"
msgid "US Fanfold"
msgstr ""
msgid "US Ledger"
msgstr "US Ledger"
@@ -7944,6 +7955,16 @@ msgstr "lpadmin: Принтер %s не находится в группе %s."
msgid "lpadmin: Printer name can only contain printable characters."
msgstr "lpadmin: Имя принтера может содержать только печатаемые символы."
msgid ""
"lpadmin: Raw queues are deprecated and will stop working in a future version "
"of CUPS."
msgstr ""
msgid ""
"lpadmin: System V interface scripts are no longer supported for security "
"reasons."
msgstr ""
msgid ""
"lpadmin: Unable to add a printer to the class:\n"
" You must specify a printer name first."
@@ -7999,6 +8020,9 @@ msgstr "lpadmin: Неизвестный аргумент \"%s\"."
msgid "lpadmin: Unknown option \"%c\"."
msgstr "lpadmin: Неизвестный параметр \"%c\"."
msgid "lpadmin: Use the 'everywhere' model for shared printers."
msgstr ""
msgid "lpadmin: Warning - content type list ignored."
msgstr "lpadmin: Внимание - список типов содержимого пропущен."
@@ -8744,6 +8768,45 @@ msgstr "Cardstock"
msgid "media-type.cd"
msgstr "CD"
msgid "media-type.com.hp.advanced-photo"
msgstr "Advanced Photo Paper"
msgid "media-type.com.hp.brochure-glossy"
msgstr "Glossy Brochure Paper"
msgid "media-type.com.hp.brochure-matte"
msgstr "Matte Brochure Paper"
msgid "media-type.com.hp.cover-matte"
msgstr "Matte Cover Paper"
msgid "media-type.com.hp.ecosmart-lite"
msgstr "Office Recycled Paper"
msgid "media-type.com.hp.everyday-glossy"
msgstr "Everyday Glossy Photo Paper"
msgid "media-type.com.hp.everyday-matte"
msgstr "Everyday Matte Paper"
msgid "media-type.com.hp.extra-heavy"
msgstr "Extra Heavyweight Paper"
msgid "media-type.com.hp.intermediate"
msgstr "Multipurpose Paper"
msgid "media-type.com.hp.mid-weight"
msgstr "Mid-Weight Paper"
msgid "media-type.com.hp.premium-inkjet"
msgstr "Premium Inkjet Paper"
msgid "media-type.com.hp.premium-photo"
msgstr "Premium Photo Glossy Paper"
msgid "media-type.com.hp.premium-presentation-matte"
msgstr "Premium Presentation Matte Paper"
msgid "media-type.continuous"
msgstr "Continuous"
@@ -8888,6 +8951,18 @@ msgstr "Image Setter Paper"
msgid "media-type.imaging-cylinder"
msgstr "Imaging Cylinder"
msgid "media-type.jp.co.canon-photo-paper-plus-glossy-ii"
msgstr "Photo Paper Plus Glossy II"
msgid "media-type.jp.co.canon-photo-paper-pro-platinum"
msgstr "Photo Paper Pro Platinum"
msgid "media-type.jp.co.canon_photo-paper-plus-glossy-ii"
msgstr "Photo Paper Plus Glossy II"
msgid "media-type.jp.co.canon_photo-paper-pro-platinum"
msgstr "Photo Paper Pro Platinum"
msgid "media-type.labels"
msgstr "Labels"
+94 -10
Ver Arquivo
@@ -29,7 +29,7 @@ msgid ""
msgstr ""
"Project-Id-Version: CUPS 1.6\n"
"Report-Msgid-Bugs-To: https://github.com/apple/cups/issues\n"
"POT-Creation-Date: 2017-08-28 12:25-0400\n"
"POT-Creation-Date: 2018-03-19 18:36-0400\n"
"PO-Revision-Date: 2017-06-11 12:38+0800\n"
"Last-Translator: Mingcong Bai <jeffbai@aosc.xyz>\n"
"Language-Team: \n"
@@ -1595,6 +1595,10 @@ msgstr "%s:用于“-V”的版本 %s 无效。"
msgid "%s: Don't know what to do."
msgstr "%s:不知如何处理。"
#, c-format
msgid "%s: Error - %s"
msgstr ""
#, c-format
msgid ""
"%s: Error - %s environment variable names non-existent destination \"%s\"."
@@ -2866,6 +2870,10 @@ msgstr "无效的请求 ID %d。"
msgid "Bad request version number %d.%d."
msgstr "无效的请求版本号 %d.%d。"
#, c-format
msgid "Bad requesting-user-name value: %s"
msgstr ""
msgid "Bad resource in URI"
msgstr "URI 中的资源无效"
@@ -3401,6 +3409,12 @@ msgstr "发送栅格化数据出错。"
msgid "Error: need hostname after \"-h\" option."
msgstr "错误:“-h”选项后需要主机名。"
msgid "European Fanfold"
msgstr ""
msgid "European Fanfold Legal"
msgstr ""
msgid "Every 10 Labels"
msgstr "每 10 个标签"
@@ -3464,15 +3478,6 @@ msgstr "朝下"
msgid "Face Up"
msgstr "朝上"
msgid "FanFold German"
msgstr "德国式扇折"
msgid "FanFold Legal German"
msgstr "德国式法律扇折"
msgid "Fanfold US"
msgstr "美国式扇折"
msgid "Fast Grayscale"
msgstr "快速灰度"
@@ -3538,6 +3543,9 @@ msgstr "对开本"
msgid "Forbidden"
msgstr "已禁止"
msgid "Found"
msgstr ""
msgid "Full Cut Tabs"
msgstr "完整裁剪标签"
@@ -5312,6 +5320,9 @@ msgstr "URI 过长"
msgid "URI too large"
msgstr "URI 过大"
msgid "US Fanfold"
msgstr ""
msgid "US Ledger"
msgstr "US Ledger"
@@ -7899,6 +7910,16 @@ msgstr "lpadmin:打印机 %s 不是类 %s 中的成员。"
msgid "lpadmin: Printer name can only contain printable characters."
msgstr "lpadmin:打印机名称中只能包含可打印字符。"
msgid ""
"lpadmin: Raw queues are deprecated and will stop working in a future version "
"of CUPS."
msgstr ""
msgid ""
"lpadmin: System V interface scripts are no longer supported for security "
"reasons."
msgstr ""
msgid ""
"lpadmin: Unable to add a printer to the class:\n"
" You must specify a printer name first."
@@ -7954,6 +7975,9 @@ msgstr "lpadmin:未知参数“%s”。"
msgid "lpadmin: Unknown option \"%c\"."
msgstr "lpadmin:未知选项“%c”。"
msgid "lpadmin: Use the 'everywhere' model for shared printers."
msgstr ""
msgid "lpadmin: Warning - content type list ignored."
msgstr "lpadmin:警告 — 内容类型列表已被忽略。"
@@ -8697,6 +8721,45 @@ msgstr "Cardstock"
msgid "media-type.cd"
msgstr "CD"
msgid "media-type.com.hp.advanced-photo"
msgstr "Advanced Photo Paper"
msgid "media-type.com.hp.brochure-glossy"
msgstr "Glossy Brochure Paper"
msgid "media-type.com.hp.brochure-matte"
msgstr "Matte Brochure Paper"
msgid "media-type.com.hp.cover-matte"
msgstr "Matte Cover Paper"
msgid "media-type.com.hp.ecosmart-lite"
msgstr "Office Recycled Paper"
msgid "media-type.com.hp.everyday-glossy"
msgstr "Everyday Glossy Photo Paper"
msgid "media-type.com.hp.everyday-matte"
msgstr "Everyday Matte Paper"
msgid "media-type.com.hp.extra-heavy"
msgstr "Extra Heavyweight Paper"
msgid "media-type.com.hp.intermediate"
msgstr "Multipurpose Paper"
msgid "media-type.com.hp.mid-weight"
msgstr "Mid-Weight Paper"
msgid "media-type.com.hp.premium-inkjet"
msgstr "Premium Inkjet Paper"
msgid "media-type.com.hp.premium-photo"
msgstr "Premium Photo Glossy Paper"
msgid "media-type.com.hp.premium-presentation-matte"
msgstr "Premium Presentation Matte Paper"
msgid "media-type.continuous"
msgstr "Continuous"
@@ -8841,6 +8904,18 @@ msgstr "Image Setter Paper"
msgid "media-type.imaging-cylinder"
msgstr "Imaging Cylinder"
msgid "media-type.jp.co.canon-photo-paper-plus-glossy-ii"
msgstr "Photo Paper Plus Glossy II"
msgid "media-type.jp.co.canon-photo-paper-pro-platinum"
msgstr "Photo Paper Pro Platinum"
msgid "media-type.jp.co.canon_photo-paper-plus-glossy-ii"
msgstr "Photo Paper Plus Glossy II"
msgid "media-type.jp.co.canon_photo-paper-pro-platinum"
msgstr "Photo Paper Pro Platinum"
msgid "media-type.labels"
msgstr "Labels"
@@ -13343,6 +13418,15 @@ msgstr "Z Offset"
#~ msgid "Envelope PRC1 "
#~ msgstr "中国一号信封 "
#~ msgid "FanFold German"
#~ msgstr "德国式扇折"
#~ msgid "FanFold Legal German"
#~ msgstr "德国式法律扇折"
#~ msgid "Fanfold US"
#~ msgstr "美国式扇折"
#, fuzzy
#~ msgid "File Folder "
#~ msgstr "文件夹 "
+5 -3
Ver Arquivo
@@ -10,7 +10,7 @@
.\" 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/".
.\"
.TH client.conf 5 "CUPS" "26 June 2017" "Apple Inc."
.TH client.conf 5 "CUPS" "19 October 2017" "Apple Inc."
.SH NAME
client.conf \- client configuration file for cups
.SH DESCRIPTION
@@ -61,8 +61,10 @@ Specifies the address and optionally the port to use when connecting to a server
\fBSSLOptions None\fR
Sets encryption options (only in /etc/cups/client.conf).
By default, CUPS only supports encryption using TLS v1.0 or higher using known secure cipher suites.
The \fIAllowDH\fR option enables cipher suites using plain Diffie-Hellman key negotiation.
The \fIAllowRC4\fR option enables the 128-bit RC4 cipher suites, which are required for some older clients that do not implement newer ones.
Security is reduced when \fIAllow\fR options are used.
Security is enhanced when \fIDeny\fR options are used.
The \fIAllowDH\fR option enables cipher suites using plain Diffie-Hellman key negotiation (not supported on systems using GNU TLS).
The \fIAllowRC4\fR option enables the 128-bit RC4 cipher suites, which are required for some older clients.
The \fIAllowSSL3\fR option enables SSL v3.0, which is required for some older clients that do not support TLS v1.0.
The \fIDenyCBC\fR option disables all CBC cipher suites.
The \fIDenyTLS1.0\fR option disables TLS v1.0 support - this sets the minimum protocol version to TLS v1.1.
+5 -3
Ver Arquivo
@@ -10,7 +10,7 @@
.\" 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/".
.\"
.TH cupsd.conf 5 "CUPS" "28 August 2017" "Apple Inc."
.TH cupsd.conf 5 "CUPS" "19 October 2017" "Apple Inc."
.SH NAME
cupsd.conf \- server configuration file for cups
.SH DESCRIPTION
@@ -445,8 +445,10 @@ Listens on the specified address and port for encrypted connections.
\fBSSLOptions None\fR
Sets encryption options.
By default, CUPS only supports encryption using TLS v1.0 or higher using known secure cipher suites.
The \fIAllowDH\fR option enables cipher suites using plain Diffie-Hellman key negotiation.
The \fIAllowRC4\fR option enables the 128-bit RC4 cipher suites, which are required for some older clients that do not implement newer ones.
Security is reduced when \fIAllow\fR options are used.
Security is enhanced when \fIDeny\fR options are used.
The \fIAllowDH\fR option enables cipher suites using plain Diffie-Hellman key negotiation (not supported on systems using GNU TLS).
The \fIAllowRC4\fR option enables the 128-bit RC4 cipher suites, which are required for some older clients.
The \fIAllowSSL3\fR option enables SSL v3.0, which is required for some older clients that do not support TLS v1.0.
The \fIDenyCBC\fR option disables all CBC cipher suites.
The \fIDenyTLS1.0\fR option disables TLS v1.0 support - this sets the minimum protocol version to TLS v1.1.
+4 -3
Ver Arquivo
@@ -1,8 +1,8 @@
.\"
.\" lpadmin man page for CUPS.
.\"
.\" Copyright 2007-2016 by Apple Inc.
.\" Copyright 1997-2006 by Easy Software Products.
.\" Copyright © 2007-2018 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
@@ -10,7 +10,7 @@
.\" 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/".
.\"
.TH lpadmin 8 "CUPS" "29 March 2016" "Apple Inc."
.TH lpadmin 8 "CUPS" "19 March 2018" "Apple Inc."
.SH NAME
lpadmin \- configure cups printers and classes
.SH SYNOPSIS
@@ -91,6 +91,7 @@ Use the \fI-m\fR option with the
.BR lpinfo (8)
command to get a list of supported models.
The model "raw" clears any existing PPD file and the model "everywhere" queries the printer referred to by the specified IPP \fIdevice-uri\fR.
Note: The "raw" model is deprecated and will not be supported in a future version of CUPS.
.TP 5
\fB\-o cupsIPPSupplies=true\fR
.TP 5
+2 -2
Ver Arquivo
@@ -1,7 +1,7 @@
//
// Shared message catalog class for the CUPS PPD Compiler.
//
// Copyright 2007-2016 by Apple Inc.
// Copyright 2007-2017 by Apple Inc.
// Copyright 2002-2006 by Easy Software Products.
//
// These coded instructions, statements, and computer programs are the
@@ -58,7 +58,7 @@ ppdcCatalog::ppdcCatalog(const char *l, // I - Locale
filename = new ppdcString(f);
messages = new ppdcArray();
if (l)
if (l && strcmp(l, "en"))
{
// Try loading the base messages for this locale...
char pofile[1024]; // Message catalog file
+3
Ver Arquivo
@@ -143,6 +143,7 @@ Version "2.1"
Throughput 8
ManualCopies Yes
ColorDevice No
Attribute "cupsSNMPSupplies" "" "false"
HWMargins 2 14.9 2 14.9
@@ -437,6 +438,7 @@ Version "2.1"
ModelNumber $INTELLITECH_PCL
Throughput 8
ColorDevice No
Attribute "cupsSNMPSupplies" "" "false"
HWMargins 0 5.76 0 5.76
VariablePaperSize Yes
@@ -588,6 +590,7 @@ Version "2.1"
DriverType label
Throughput 8
ColorDevice False
Attribute "cupsSNMPSupplies" "" "false"
// Zebra CPCL Label Printer
{
+14 -6
Ver Arquivo
@@ -1146,7 +1146,8 @@ cupsdCheckGroup(
const char *groupname) /* I - Group name */
{
int i; /* Looping var */
struct group *group; /* System group info */
struct group *group; /* Group info */
gid_t groupid; /* ID of named group */
#ifdef HAVE_MBR_UID_TO_UUID
uuid_t useruuid, /* UUID for username */
groupuuid; /* UUID for groupname */
@@ -1176,6 +1177,8 @@ cupsdCheckGroup(
* Group exists, check it...
*/
groupid = group->gr_gid;
#ifdef HAVE_GETGROUPLIST
if (user)
{
@@ -1194,22 +1197,27 @@ cupsdCheckGroup(
#endif /* __APPLE__ */
for (i = 0; i < ngroups; i ++)
if ((int)group->gr_gid == (int)groups[i])
if ((int)groupid == (int)groups[i])
return (1);
}
#endif /* HAVE_GETGROUPLIST */
#else
for (i = 0; group->gr_mem[i]; i ++)
{
if (!_cups_strcasecmp(username, group->gr_mem[i]))
return (1);
}
#endif /* HAVE_GETGROUPLIST */
}
else
groupid = (gid_t)-1;
/*
* Group doesn't exist or user not in group list, check the group ID
* against the user's group ID...
*/
if (user && group && group->gr_gid == user->pw_gid)
if (user && groupid == user->pw_gid)
return (1);
#ifdef HAVE_MBR_UID_TO_UUID
@@ -1219,13 +1227,13 @@ cupsdCheckGroup(
if (user && !mbr_uid_to_uuid(user->pw_uid, useruuid))
{
if (group)
if (groupid != (gid_t)-1)
{
/*
* Map group name to UUID and check membership...
*/
if (!mbr_gid_to_uuid(group->gr_gid, groupuuid))
if (!mbr_gid_to_uuid(groupid, groupuuid))
if (!mbr_check_membership(useruuid, groupuuid, &is_member))
if (is_member)
return (1);
+22 -7
Ver Arquivo
@@ -2369,25 +2369,38 @@ cupsdSendHeader(
* requests when the request requires system group membership - then the
* client knows the root certificate can/should be used.
*
* Also, for macOS we also look for @AUTHKEY and add an "authkey"
* parameter as needed...
* Also, for macOS we also look for @AUTHKEY and add an "AuthRef key=foo"
* method as needed...
*/
char *name, /* Current user name */
*auth_key; /* Auth key buffer */
size_t auth_size; /* Size of remaining buffer */
int need_local = 1; /* Do we need to list "Local" method? */
auth_key = auth_str + strlen(auth_str);
auth_size = sizeof(auth_str) - (size_t)(auth_key - auth_str);
#if defined(SO_PEERCRED) && defined(AF_LOCAL)
if (httpAddrFamily(httpGetAddress(con->http)) == AF_LOCAL)
{
strlcpy(auth_key, ", PeerCred", auth_size);
auth_key += 10;
auth_size -= 10;
}
#endif /* SO_PEERCRED && AF_LOCAL */
for (name = (char *)cupsArrayFirst(con->best->names);
name;
name = (char *)cupsArrayNext(con->best->names))
{
cupsdLogClient(con, CUPSD_LOG_DEBUG2, "cupsdSendHeader: require \"%s\"", name);
#ifdef HAVE_AUTHORIZATION_H
if (!_cups_strncasecmp(name, "@AUTHKEY(", 9))
{
snprintf(auth_key, auth_size, ", authkey=\"%s\"", name + 9);
snprintf(auth_key, auth_size, ", AuthRef key=\"%s\"", name + 9);
need_local = 0;
/* end parenthesis is stripped in conf.c */
break;
}
@@ -2397,16 +2410,18 @@ cupsdSendHeader(
{
#ifdef HAVE_AUTHORIZATION_H
if (SystemGroupAuthKey)
snprintf(auth_key, auth_size,
", authkey=\"%s\"",
SystemGroupAuthKey);
snprintf(auth_key, auth_size, ", AuthRef key=\"%s\"", SystemGroupAuthKey);
else
#else
strlcpy(auth_key, ", trc=\"y\"", auth_size);
strlcpy(auth_key, ", Local trc=\"y\"", auth_size);
#endif /* HAVE_AUTHORIZATION_H */
need_local = 0;
break;
}
}
if (need_local)
strlcat(auth_key, ", Local", auth_size);
}
if (auth_str[0])
+27 -9
Ver Arquivo
@@ -617,7 +617,7 @@ cupsdReadConfiguration(void)
cupsdSetString(&ServerKeychain, "/Library/Keychains/System.keychain");
# endif /* HAVE_GNUTLS */
_httpTLSSetOptions(0);
_httpTLSSetOptions(_HTTP_TLS_NONE, _HTTP_TLS_1_0, _HTTP_TLS_MAX);
#endif /* HAVE_SSL */
language = cupsLangDefault();
@@ -2999,7 +2999,9 @@ read_cupsd_conf(cups_file_t *fp) /* I - File to read from */
* SSLOptions [AllowRC4] [AllowSSL3] [AllowDH] [DenyCBC] [DenyTLS1.0] [None]
*/
int options = 0; /* SSL/TLS options */
int options = _HTTP_TLS_NONE,/* SSL/TLS options */
min_version = _HTTP_TLS_1_0,
max_version = _HTTP_TLS_MAX;
if (value)
{
@@ -3023,24 +3025,40 @@ read_cupsd_conf(cups_file_t *fp) /* I - File to read from */
* Compare...
*/
if (!_cups_strcasecmp(start, "AllowRC4"))
if (!_cups_strcasecmp(start, "AllowRC4"))
options |= _HTTP_TLS_ALLOW_RC4;
else if (!_cups_strcasecmp(start, "AllowSSL3"))
options |= _HTTP_TLS_ALLOW_SSL3;
else if (!_cups_strcasecmp(start, "AllowSSL3"))
min_version = _HTTP_TLS_SSL3;
else if (!_cups_strcasecmp(start, "AllowDH"))
options |= _HTTP_TLS_ALLOW_DH;
else if (!_cups_strcasecmp(start, "DenyCBC"))
options |= _HTTP_TLS_DENY_CBC;
else if (!_cups_strcasecmp(start, "DenyTLS1.0"))
options |= _HTTP_TLS_DENY_TLS10;
else if (!_cups_strcasecmp(start, "None"))
options = 0;
min_version = _HTTP_TLS_1_1;
else if (!_cups_strcasecmp(start, "MaxTLS1.0"))
max_version = _HTTP_TLS_1_0;
else if (!_cups_strcasecmp(start, "MaxTLS1.1"))
max_version = _HTTP_TLS_1_1;
else if (!_cups_strcasecmp(start, "MaxTLS1.2"))
max_version = _HTTP_TLS_1_2;
else if (!_cups_strcasecmp(start, "MaxTLS1.3"))
max_version = _HTTP_TLS_1_3;
else if (!_cups_strcasecmp(start, "MinTLS1.0"))
min_version = _HTTP_TLS_1_0;
else if (!_cups_strcasecmp(start, "MinTLS1.1"))
min_version = _HTTP_TLS_1_1;
else if (!_cups_strcasecmp(start, "MinTLS1.2"))
min_version = _HTTP_TLS_1_2;
else if (!_cups_strcasecmp(start, "MinTLS1.3"))
min_version = _HTTP_TLS_1_3;
else if (!_cups_strcasecmp(start, "None"))
options = _HTTP_TLS_NONE;
else if (_cups_strcasecmp(start, "NoEmptyFragments"))
cupsdLogMessage(CUPSD_LOG_WARN, "Unknown SSL option %s at line %d.", start, linenum);
}
}
_httpTLSSetOptions(options);
_httpTLSSetOptions(options, min_version, max_version);
}
#endif /* HAVE_SSL */
else if ((!_cups_strcasecmp(line, "Port") || !_cups_strcasecmp(line, "Listen")
+4 -4
Ver Arquivo
@@ -5,7 +5,7 @@
* created from driver information files, and dynamically generated PPD files
* using driver helper programs.
*
* Copyright 2007-2015 by Apple Inc.
* Copyright 2007-2018 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -2404,7 +2404,7 @@ load_ppds(const char *d, /* I - Actual directory */
{
fprintf(stderr, "ERROR: [cups-driverd] Skipping \"%s\": loop detected!\n",
d);
return (0);
return (1);
}
/*
@@ -2619,7 +2619,7 @@ load_ppds_dat(char *filename, /* I - Filename buffer */
unsigned ppdsync; /* Sync word */
int num_ppds; /* Number of PPDs */
if (cupsFileRead(fp, (char *)&ppdsync, sizeof(ppdsync)) == sizeof(ppdsync) &&
if ((size_t)cupsFileRead(fp, (char *)&ppdsync, sizeof(ppdsync)) == sizeof(ppdsync) &&
ppdsync == PPD_SYNC &&
!stat(filename, &fileinfo) &&
(((size_t)fileinfo.st_size - sizeof(ppdsync)) % sizeof(ppd_rec_t)) == 0 &&
@@ -2728,7 +2728,7 @@ read_tar(cups_file_t *fp, /* I - Archive to read */
tar_rec_t record; /* Record from file */
while (cupsFileRead(fp, (char *)&record, sizeof(record)) == sizeof(record))
while ((size_t)cupsFileRead(fp, (char *)&record, sizeof(record)) == sizeof(record))
{
/*
* Check for a valid tar header...
+11 -10
Ver Arquivo
@@ -1,8 +1,8 @@
/*
* Directory services routines for the CUPS scheduler.
*
* Copyright 2007-2015 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
* Copyright © 2007-2018 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
@@ -698,20 +698,21 @@ dnssdDeregisterInstance(
DNSServiceRefDeallocate(*srv);
*srv = NULL;
# else /* HAVE_AVAHI */
if (!from_callback)
avahi_threaded_poll_lock(DNSSDMaster);
if (*srv)
{
if (!from_callback)
avahi_threaded_poll_lock(DNSSDMaster);
avahi_entry_group_free(*srv);
if (!from_callback)
avahi_threaded_poll_unlock(DNSSDMaster);
*srv = NULL;
}
# endif /* HAVE_DNSSD */
*srv = NULL;
if (!from_callback)
avahi_threaded_poll_unlock(DNSSDMaster);
# endif /* HAVE_DNSSD */
}
+14 -2
Ver Arquivo
@@ -1597,6 +1597,16 @@ add_job(cupsd_client_t *con, /* I - Client connection */
return (NULL);
}
attr = ippFindAttribute(con->request, "requesting-user-name", IPP_TAG_NAME);
if (attr && !ippValidateAttribute(attr))
{
send_ipp_status(con, IPP_ATTRIBUTES, _("Bad requesting-user-name value: %s"), cupsLastErrorString());
if ((attr = ippCopyAttribute(con->response, attr, 0)) != NULL)
attr->group_tag = IPP_TAG_UNSUPPORTED_GROUP;
return (NULL);
}
if ((job = cupsdAddJob(priority, printer->name)) == NULL)
{
send_ipp_status(con, IPP_INTERNAL_ERROR,
@@ -1615,8 +1625,6 @@ add_job(cupsd_client_t *con, /* I - Client connection */
add_job_uuid(job);
apply_printer_defaults(printer, job);
attr = ippFindAttribute(job->attrs, "requesting-user-name", IPP_TAG_NAME);
if (con->username[0])
{
cupsdSetString(&job->username, con->username);
@@ -4888,6 +4896,8 @@ copy_printer_attrs(
* and document-format attributes that may be provided by the client.
*/
_cupsRWLockRead(&printer->lock);
curtime = time(NULL);
if (!ra || cupsArrayFind(ra, "marker-change-time"))
@@ -5080,6 +5090,8 @@ copy_printer_attrs(
if (printer->ppd_attrs)
copy_attrs(con->response, printer->ppd_attrs, ra, IPP_TAG_ZERO, 0, NULL);
copy_attrs(con->response, CommonData, ra, IPP_TAG_ZERO, IPP_TAG_COPY, NULL);
_cupsRWUnlock(&printer->lock);
}
+2 -2
Ver Arquivo
@@ -960,7 +960,7 @@ cupsdLogPage(cupsd_job_t *job, /* I - Job being printed */
*bufptr = '\0';
#ifdef HAVE_SYSTEMD_SD_JOURNAL_H
if (!strcmp(ErrorLog, "syslog"))
if (!strcmp(PageLog, "syslog"))
{
static const char * const job_states[] =
{ /* job-state strings */
@@ -1157,7 +1157,7 @@ cupsdLogRequest(cupsd_client_t *con, /* I - Request to log */
}
#ifdef HAVE_SYSTEMD_SD_JOURNAL_H
if (!strcmp(ErrorLog, "syslog"))
if (!strcmp(AccessLog, "syslog"))
{
sd_journal_print(LOG_INFO, "REQUEST %s - %s \"%s %s HTTP/%d.%d\" %d " CUPS_LLFMT " %s %s", con->http->hostname, con->username[0] != '\0' ? con->username : "-", states[con->operation], _httpEncodeURI(temp, con->uri, sizeof(temp)), con->http->version / 100, con->http->version % 100, code, CUPS_LLCAST con->bytes, con->request ? ippOpString(con->request->request.op.operation_id) : "-", con->response ? ippErrorString(con->response->request.status.status_code) : "-");
return (1);
+1 -1
Ver Arquivo
@@ -893,7 +893,7 @@ main(int argc, /* I - Number of command-line args */
* Write dirty config/state files...
*/
if (DirtyCleanTime && current_time >= DirtyCleanTime && cupsArrayCount(Clients) == 0)
if (DirtyCleanTime && current_time >= DirtyCleanTime)
cupsdCleanDirty();
#ifdef __APPLE__
+1
Ver Arquivo
@@ -5,6 +5,7 @@ Documentation=man:cupsd(8)
[Service]
ExecStart=@sbindir@/cupsd -l
Type=simple
Restart=always
[Install]
Also=org.cups.cupsd.socket org.cups.cupsd.path
+9 -6
Ver Arquivo
@@ -23,13 +23,16 @@
#ifdef HAVE_POSIX_SPAWN
# include <spawn.h>
extern char **environ;
#endif /* HAVE_POSIX_SPAWN */
#ifdef HAVE_POSIX_SPAWN
# if !defined(__OpenBSD__) || OpenBSD >= 201505
# define USE_POSIX_SPAWN 1
# else
/* Don't use posix_spawn on systems with bugs in their implementations... */
# if defined(OpenBSD) && OpenBSD < 201505
# define USE_POSIX_SPAWN 0
# endif /* !__OpenBSD__ || */
# elif defined(__UCLIBC__) && __UCLIBC_MAJOR__ == 1 && __UCLIBC_MINOR__ == 0 && __UCLIBC_SUBLEVEL__ < 27
# define USE_POSIX_SPAWN 0
# elif defined(__UCLIBC__) && __UCLIBC_MAJOR__ < 1
# define USE_POSIX_SPAWN 0
# else /* All other platforms */
# define USE_POSIX_SPAWN 1
# endif /* ... */
#else
# define USE_POSIX_SPAWN 0
#endif /* HAVE_POSIX_SPAWN */
+4 -4
Ver Arquivo
@@ -2,7 +2,7 @@
* "cupsaccept", "cupsdisable", "cupsenable", and "cupsreject" commands for
* CUPS.
*
* Copyright 2007-2016 by Apple Inc.
* Copyright 2007-2017 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -83,11 +83,11 @@ main(int argc, /* I - Number of command-line arguments */
switch (*opt)
{
case 'E' : /* Encrypt */
#ifdef HAVE_SSL
#ifdef HAVE_SSL
cupsSetEncryption(HTTP_ENCRYPT_REQUIRED);
#else
#else
_cupsLangPrintf(stderr, _("%s: Sorry, no encryption support."), command);
#endif /* HAVE_SSL */
#endif /* HAVE_SSL */
break;
case 'U' : /* Username */
+4 -27
Ver Arquivo
@@ -1,7 +1,7 @@
/*
* "lp" command for CUPS.
*
* Copyright 2007-2016 by Apple Inc.
* Copyright 2007-2017 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -586,33 +586,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);
}
+91 -42
Ver Arquivo
@@ -1,8 +1,8 @@
/*
* "lpadmin" command for CUPS.
*
* Copyright 2007-2016 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products.
* Copyright © 2007-2018 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
@@ -33,7 +33,7 @@ static int delete_printer_from_class(http_t *http, char *printer,
static int delete_printer_option(http_t *http, char *printer,
char *option);
static int enable_printer(http_t *http, char *printer);
static char *get_printer_ppd(const char *uri, char *buffer, size_t bufsize);
static char *get_printer_ppd(const char *uri, char *buffer, size_t bufsize, int *num_options, cups_option_t **options);
static cups_ptype_t get_printer_type(http_t *http, char *printer, char *uri,
size_t urisize);
static int set_printer_options(http_t *http, char *printer,
@@ -46,23 +46,22 @@ static int validate_name(const char *name);
* 'main()' - Parse options and configure the scheduler.
*/
int
main(int argc, /* I - Number of command-line arguments */
char *argv[]) /* I - Command-line arguments */
int /* O - Exit status */
main(int argc, /* I - Number of command-line arguments */
char *argv[]) /* I - Command-line arguments */
{
int i; /* Looping var */
http_t *http; /* Connection to server */
char *printer, /* Destination printer */
*pclass, /* Printer class name */
*opt, /* Option pointer */
*val; /* Pointer to allow/deny value */
int num_options; /* Number of options */
cups_option_t *options; /* Options */
char *file, /* New PPD file */
evefile[1024] = "";
/* IPP Everywhere PPD */
const char *ppd_name, /* ppd-name value */
*device_uri; /* device-uri value */
int i; /* Looping var */
http_t *http; /* Connection to server */
char *printer, /* Destination printer */
*pclass, /* Printer class name */
*opt, /* Option pointer */
*val; /* Pointer to allow/deny value */
int num_options; /* Number of options */
cups_option_t *options; /* Options */
char *file, /* New PPD file */
evefile[1024] = ""; /* IPP Everywhere PPD */
const char *ppd_name, /* ppd-name value */
*device_uri; /* device-uri value */
_cupsSetLocale(argv);
@@ -218,6 +217,25 @@ main(int argc, /* I - Number of command-line arguments */
file = argv[i];
}
if (*opt == 'i')
{
/*
* Check to see that the specified file is, in fact, a PPD...
*/
cups_file_t *fp = cupsFileOpen(file, "r");
char line[256];
if (!cupsFileGets(fp, line, sizeof(line)) || strncmp(line, "*PPD-Adobe", 10))
{
_cupsLangPuts(stderr, _("lpadmin: System V interface scripts are no longer supported for security reasons."));
cupsFileClose(fp);
return (1);
}
cupsFileClose(fp);
}
break;
case 'E' : /* Enable the printer/enable encryption */
@@ -591,9 +609,19 @@ main(int argc, /* I - Number of command-line arguments */
* Set options as needed...
*/
if ((ppd_name = cupsGetOption("ppd-name", num_options, options)) != NULL && !strcmp(ppd_name, "everywhere") && (device_uri = cupsGetOption("device-uri", num_options, options)) != NULL)
ppd_name = cupsGetOption("ppd-name", num_options, options);
device_uri = cupsGetOption("device-uri", num_options, options);
if (ppd_name && !strcmp(ppd_name, "raw"))
{
if ((file = get_printer_ppd(device_uri, evefile, sizeof(evefile))) == NULL)
_cupsLangPuts(stderr, _("lpadmin: Raw queues are deprecated and will stop working in a future version of CUPS."));
if (device_uri && (!strncmp(device_uri, "ipp://", 6) || !strncmp(device_uri, "ipps://", 7)) && strstr(device_uri, "/printers/"))
_cupsLangPuts(stderr, _("lpadmin: Use the 'everywhere' model for shared printers."));
}
else if (ppd_name && !strcmp(ppd_name, "everywhere") && device_uri)
{
if ((file = get_printer_ppd(device_uri, evefile, sizeof(evefile), &num_options, &options)) == NULL)
return (1);
num_options = cupsRemoveOption("ppd-name", num_options, &options);
@@ -601,27 +629,26 @@ main(int argc, /* I - Number of command-line arguments */
if (num_options || file)
{
if (!http)
{
http = httpConnect2(cupsServer(), ippPort(), NULL, AF_UNSPEC, cupsEncryption(), 1, 30000, NULL);
if (http == NULL)
{
_cupsLangPrintf(stderr,
_("lpadmin: Unable to connect to server: %s"),
strerror(errno));
return (1);
}
}
if (printer == NULL)
{
_cupsLangPuts(stderr,
_("lpadmin: Unable to set the printer options:\n"
" You must specify a printer name first."));
" You must specify a printer name first."));
return (1);
}
if (!http)
{
http = httpConnect2(cupsServer(), ippPort(), NULL, AF_UNSPEC,
cupsEncryption(), 1, 30000, NULL);
if (http == NULL) {
_cupsLangPrintf(stderr, _("lpadmin: Unable to connect to server: %s"),
strerror(errno));
return (1);
}
}
if (set_printer_options(http, printer, num_options, options, file))
return (1);
}
@@ -1145,20 +1172,31 @@ enable_printer(http_t *http, /* I - Server connection */
* '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 */
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 */
int *num_options, /* IO - Number of options */
cups_option_t **options) /* IO - Options */
{
http_t *http; /* Connection to printer */
ipp_t *request, /* Get-Printer-Attributes request */
*response; /* Get-Printer-Attributes response */
ipp_attribute_t *attr; /* Attribute from 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 */
static const char * const pattrs[] = /* Attributes to use */
{
"job-template",
"printer-defaults",
"printer-description",
"media-col-database"
};
/*
@@ -1199,9 +1237,21 @@ get_printer_ppd(const char *uri, /* I - Printer URI */
request = ippNewRequest(IPP_OP_GET_PRINTER_ATTRIBUTES);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri", NULL, uri);
ippAddStrings(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD, "requested-attributes", sizeof(pattrs) / sizeof(pattrs[0]), NULL, pattrs);
response = cupsDoRequest(http, request, resource);
if (!_ppdCreateFromIPP(buffer, bufsize, response))
if (_ppdCreateFromIPP(buffer, bufsize, response))
{
if (!cupsGetOption("printer-geo-location", *num_options, *options) && (attr = ippFindAttribute(response, "printer-geo-location", IPP_TAG_URI)) != NULL)
*num_options = cupsAddOption("printer-geo-location", ippGetString(attr, 0, NULL), *num_options, options);
if (!cupsGetOption("printer-info", *num_options, *options) && (attr = ippFindAttribute(response, "printer-info", IPP_TAG_TEXT)) != NULL)
*num_options = cupsAddOption("printer-info", ippGetString(attr, 0, NULL), *num_options, options);
if (!cupsGetOption("printer-location", *num_options, *options) && (attr = ippFindAttribute(response, "printer-location", IPP_TAG_TEXT)) != NULL)
*num_options = cupsAddOption("printer-location", ippGetString(attr, 0, NULL), *num_options, options);
}
else
_cupsLangPrintf(stderr, _("%s: Unable to create PPD file: %s"), "lpadmin", strerror(errno));
ippDelete(response);
@@ -1573,8 +1623,7 @@ validate_name(const char *name) /* I - Name to check */
for (ptr = name; *ptr; ptr ++)
if (*ptr == '@')
break;
else if ((*ptr >= 0 && *ptr <= ' ') || *ptr == 127 || *ptr == '/' ||
*ptr == '#')
else if ((*ptr >= 0 && *ptr <= ' ') || *ptr == 127 || *ptr == '/' || *ptr == '\\' || *ptr == '?' || *ptr == '\'' || *ptr == '\"' || *ptr == '#')
return (0);
/*
+20 -1
Ver Arquivo
@@ -1,7 +1,7 @@
/*
* "lpinfo" command for CUPS.
*
* Copyright 2007-2016 by Apple Inc.
* Copyright 2007-2017 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -454,6 +454,25 @@ show_models(
}
ippDelete(response);
/*
* Show the "everywhere" model, which is handled by the lpadmin command...
*/
if ((!include_schemes || strstr(include_schemes, "everywhere")) && (!exclude_schemes || !strstr(exclude_schemes, "everywhere")))
{
if (long_status)
{
_cupsLangPrintf(stdout,
_("Model: name = %s\n"
" natural_language = %s\n"
" make-and-model = %s\n"
" device-id = %s"),
"everywhere", cupsLangDefault()->language, "IPP Everywhere", "CMD:PwgRaster");
}
else
_cupsLangPuts(stdout, "everywhere IPP Everywhere");
}
}
else
{
+871 -866
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+7 -5
Ver Arquivo
@@ -3,8 +3,8 @@
# Perform the complete set of IPP compliance tests specified in the
# CUPS Software Test Plan.
#
# Copyright 2007-2017 by Apple Inc.
# Copyright 1997-2007 by Easy Software Products, all rights reserved.
# Copyright © 2007-2018 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
@@ -304,8 +304,9 @@ for file in ../locale/cups_*.po; do
loc=`basename $file .po | cut -c 6-`
mkdir $BASE/share/locale/$loc
ln -s $root/locale/cups_$loc.po $BASE/share/locale/$loc
ln -s $root/locale/ppdc_$loc.po $BASE/share/locale/$loc
done
mkdir $BASE/share/locale/en
ln -s $root/locale/cups.pot $BASE/share/locale/en/cups_en.po
mkdir $BASE/share/mime
mkdir $BASE/share/model
mkdir $BASE/share/ppdc
@@ -319,6 +320,7 @@ mkdir $BASE/ssl
ln -s $root/backend/dnssd $BASE/bin/backend
ln -s $root/backend/http $BASE/bin/backend
ln -s $root/backend/ipp $BASE/bin/backend
ln -s ipp $BASE/bin/backend/ipps
ln -s $root/backend/lpd $BASE/bin/backend
ln -s $root/backend/mdns $BASE/bin/backend
ln -s $root/backend/pseudo $BASE/bin/backend
@@ -914,9 +916,9 @@ else
fi
# Paged printed on Test3
count=`$GREP '^Test3 ' $BASE/log/page_log | grep -v total | awk 'BEGIN{count=0}{count=count+$7}END{print count}'`
count=`$GREP '^Test3 ' $BASE/log/page_log | awk 'BEGIN{count=0}{count=count+$7}END{print count}'`
expected=2
if test $count != $expected; then
if test $count -lt $expected; then
echo "FAIL: Printer 'Test3' produced $count page(s), expected $expected."
echo " <p>FAIL: Printer 'Test3' produced $count page(s), expected $expected.</p>" >>$strfile
fail=`expr $fail + 1`
+9 -12
Ver Arquivo
@@ -12,15 +12,15 @@
%%BeginProlog
%%BeginResource procset testprint 1.3 0
%
% PostScript test page for CUPS.
% PostScript test page for CUPS.
%
% Copyright 2007-2011 Apple Inc.
% Copyright 1993-2007 Easy Software Products
% Copyright (c) 2007-2011 Apple Inc.
% Copyright (c) 1993-2007 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 is included with the CUPS source distribution.
% 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 is included with the CUPS source distribution.
%
/SEXTANT { % Draw a color wheel sextant...
% (name) white radius r g b SEXTANT -
@@ -573,10 +573,10 @@ gsave
pageHeight 8 mul % Move down...
2 copy moveto % Position text
smallFont setfont % Font
(Copyright 2007 Apple Inc., All Rights Reserved. CUPS and the CUPS logo are the trademark) show
(Copyright 2007-2018 Apple Inc., All Rights Reserved. CUPS and the CUPS logo are trademarks) show
pageHeight 2 add sub % Move down...
2 copy moveto % Position text
(property of Apple Inc., 1 Infinite Loop, Cupertino, CA 95014, USA.) show
(of Apple Inc., One Apple Park Way, Cupertino, CA 95014, USA.) show
pageHeight 2 mul 4 add sub % Move down...
moveto % Position text
(Need help? Contact your operating system vendor or visit "http://www.cups.org/".) show
@@ -592,7 +592,4 @@ gsave
% Show the page...
grestore
showpage
%
% End of "$Id: testfile.ps 6649 2007-07-11 21:46:42Z mike $".
%
%%EOF
+5 -5
Ver Arquivo
@@ -61,19 +61,19 @@ else
temp=`head -1 README.md | awk '{print $4}'`
if test "$temp" != "v$version"; then
echo "Still need to update version to v$version in README.txt (saw $temp)"
echo "Still need to update version to v$version in README.md (saw $temp)"
exit 1
fi
temp=`head -1 INSTALL.md | awk '{print $4}'`
if test "$temp" != "v$version"; then
echo "Still need to update version to v$version in INSTALL.txt (saw $temp)"
echo "Still need to update version to v$version in INSTALL.md (saw $temp)"
exit 1
fi
temp=`head -4 CHANGES.md | grep "CHANGES IN" | awk '{print $4}'`
if test "$temp" != "V$version"; then
echo "Still need to add CHANGES IN V$version in CHANGES.txt (saw $temp)"
temp=`head -6 CHANGES.md | grep "Changes in" | awk '{print $4}'`
if test "$temp" != "v$version"; then
echo "Still need to add Changes in v$version in CHANGES.md (saw $temp)"
exit 1
fi
+6 -6
Ver Arquivo
@@ -1,8 +1,8 @@
/*
* Configuration file for CUPS on Windows.
*
* Copyright 2007-2017 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products.
* Copyright © 2007-2018 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
@@ -56,8 +56,8 @@
* and strnicmp() functions...
*/
#define strcasecmp stricmp
#define strncasecmp strnicmp
#define strcasecmp _stricmp
#define strncasecmp _strnicmp
/*
@@ -94,8 +94,8 @@ typedef unsigned long useconds_t;
* Version of software...
*/
#define CUPS_SVERSION "CUPS v2.2.4"
#define CUPS_MINIMAL "CUPS/2.2.4"
#define CUPS_SVERSION "CUPS v2.2.7"
#define CUPS_MINIMAL "CUPS/2.2.7"
/*
+6 -5
Ver Arquivo
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
@@ -22,28 +22,29 @@
<ProjectGuid>{6BE0CDD3-4ED7-409C-A80F-19DF73664B1F}</ProjectGuid>
<RootNamespace>cupstestppd</RootNamespace>
<Keyword>Win32Proj</Keyword>
<WindowsTargetPlatformVersion>10.0.15063.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v140</PlatformToolset>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v140</PlatformToolset>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v140</PlatformToolset>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v140</PlatformToolset>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+6 -5
Ver Arquivo
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
@@ -22,28 +22,29 @@
<ProjectGuid>{B484DA0C-62C8-4C32-83B6-CCEB58968B85}</ProjectGuid>
<RootNamespace>ippfind</RootNamespace>
<Keyword>Win32Proj</Keyword>
<WindowsTargetPlatformVersion>10.0.15063.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v140</PlatformToolset>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v140</PlatformToolset>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v140</PlatformToolset>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v140</PlatformToolset>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+6 -5
Ver Arquivo
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
@@ -22,28 +22,29 @@
<ProjectGuid>{82A03BC7-0746-4B85-8908-3C7A3FAA58A9}</ProjectGuid>
<RootNamespace>ippserver</RootNamespace>
<Keyword>Win32Proj</Keyword>
<WindowsTargetPlatformVersion>10.0.15063.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v140</PlatformToolset>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v140</PlatformToolset>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v140</PlatformToolset>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v140</PlatformToolset>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+6 -5
Ver Arquivo
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
@@ -22,28 +22,29 @@
<ProjectGuid>{B246D91E-61F2-4433-BFD2-6C2A96FBD4D4}</ProjectGuid>
<RootNamespace>ipptool</RootNamespace>
<Keyword>Win32Proj</Keyword>
<WindowsTargetPlatformVersion>10.0.15063.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v140</PlatformToolset>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v140</PlatformToolset>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v140</PlatformToolset>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v140</PlatformToolset>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+14 -5
Ver Arquivo
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
@@ -22,26 +22,27 @@
<ProjectGuid>{CB4AA6F2-3E84-45BE-B505-95CD375E8BE3}</ProjectGuid>
<RootNamespace>libcups2</RootNamespace>
<Keyword>Win32Proj</Keyword>
<WindowsTargetPlatformVersion>10.0.15063.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<PlatformToolset>v140</PlatformToolset>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<PlatformToolset>v140</PlatformToolset>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<PlatformToolset>v140</PlatformToolset>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<PlatformToolset>v140</PlatformToolset>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
@@ -386,6 +387,7 @@ xcopy /I/Y "$(TargetPath)"
</ItemGroup>
<ItemGroup>
<None Include="..\cups\libcups2.def" />
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\cups\adminutil.h" />
@@ -423,5 +425,12 @@ xcopy /I/Y "$(TargetPath)"
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
<Import Project="packages\zlib128-vc140-static-32_64.1.2.8\build\native\zlib128-vc140-static-32_64.targets" Condition="Exists('packages\zlib128-vc140-static-32_64.1.2.8\build\native\zlib128-vc140-static-32_64.targets')" />
</ImportGroup>
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('packages\zlib128-vc140-static-32_64.1.2.8\build\native\zlib128-vc140-static-32_64.targets')" Text="$([System.String]::Format('$(ErrorText)', 'packages\zlib128-vc140-static-32_64.1.2.8\build\native\zlib128-vc140-static-32_64.targets'))" />
</Target>
</Project>
+1
Ver Arquivo
@@ -167,6 +167,7 @@
<None Include="..\cups\libcups2.def">
<Filter>Source Files</Filter>
</None>
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\cups\adminutil.h">
+6 -5
Ver Arquivo
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
@@ -21,26 +21,27 @@
<PropertyGroup Label="Globals">
<ProjectGuid>{CB4AA6F2-3E84-45BE-B505-95CD375E1234}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<WindowsTargetPlatformVersion>10.0.15063.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<PlatformToolset>v140</PlatformToolset>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<PlatformToolset>v140</PlatformToolset>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<PlatformToolset>v140</PlatformToolset>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<PlatformToolset>v140</PlatformToolset>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+6 -5
Ver Arquivo
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
@@ -22,28 +22,29 @@
<ProjectGuid>{18950A1B-D37A-40C7-B2DF-C12986C0526E}</ProjectGuid>
<RootNamespace>regex</RootNamespace>
<Keyword>Win32Proj</Keyword>
<WindowsTargetPlatformVersion>10.0.15063.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<PlatformToolset>v140</PlatformToolset>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<PlatformToolset>v140</PlatformToolset>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<PlatformToolset>v140</PlatformToolset>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<PlatformToolset>v140</PlatformToolset>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+4 -3
Ver Arquivo
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
@@ -13,16 +13,17 @@
<PropertyGroup Label="Globals">
<ProjectGuid>{CE75FC5F-E0CF-45DC-AD27-84666D3FBA30}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<WindowsTargetPlatformVersion>10.0.15063.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v140</PlatformToolset>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v140</PlatformToolset>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+4 -3
Ver Arquivo
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
@@ -13,16 +13,17 @@
<PropertyGroup Label="Globals">
<ProjectGuid>{90B0058C-8393-411F-BD3B-E2C831D4E883}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<WindowsTargetPlatformVersion>10.0.15063.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v140</PlatformToolset>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v140</PlatformToolset>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+4 -4
Ver Arquivo
@@ -1,8 +1,8 @@
/*
* Configuration file for CUPS and Xcode.
*
* Copyright 2007-2017 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products.
* Copyright © 2007-2018 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
@@ -22,8 +22,8 @@
* Version of software...
*/
#define CUPS_SVERSION "CUPS v2.2.5"
#define CUPS_MINIMAL "CUPS/2.2.5"
#define CUPS_SVERSION "CUPS v2.2.7"
#define CUPS_MINIMAL "CUPS/2.2.7"
/*