Comparar commits

..

57 Commits

Autor SHA1 Mensagem Data
Michael R Sweet ee6be9cd7e Changelog 2019-08-23 11:19:38 -04:00
Michael R Sweet 8fb0d30daa Merge pull request #5638 from nicolasfella/wheel
Add wheel to system groups
2019-08-23 11:18:13 -04:00
Michael R Sweet c669a17e64 Clean up versioning and API documentation. 2019-08-23 11:16:26 -04:00
Michael R Sweet 34934be905 Update base localzation files. 2019-08-23 09:40:06 -04:00
Nicolas Fella 89fabc72df Add wheel to system groups 2019-08-23 14:43:19 +02:00
Michael R Sweet 93d79201b2 Update API documentation. 2019-08-23 08:32:10 -04:00
Michael R Sweet ed174a7cec Changelog 2019-08-23 08:30:53 -04:00
Michael R Sweet 5e0dc7e14c Merge pull request #5637 from polluks/patch-1
Fixed typos
2019-08-23 08:26:05 -04:00
Stefan 1553df019b Fixed typos 2019-08-21 22:41:36 +02:00
Michael R Sweet 873c513326 Fix links.: 2019-08-21 08:24:23 -04:00
Michael R Sweet 69e37fbf52 Update top-level documentation files in preparation for the 2.3.0 release. 2019-08-21 08:22:43 -04:00
Michael R Sweet 05690fddfa Also update HTML version of license. 2019-08-20 16:03:23 -04:00
Michael R Sweet 7b6d49eec9 Add GPL2/LGPL2 exception to the new CUPS license. 2019-08-20 15:45:52 -04:00
Michael R Sweet d46a87a45f Fix trailing whitespace. 2019-08-16 15:48:34 -04:00
Michael R Sweet 60a7373f31 Fix a USB printing issue on macOS (rdar://31433931) 2019-08-16 15:41:00 -04:00
Michael R Sweet 2c030c7a06 Multiple security/disclosure issues:
- CVE-2019-8696 and CVE-2019-8675: Fixed SNMP buffer overflows (rdar://51685251)
- Fixed IPP buffer overflow (rdar://50035411)
- Fixed memory disclosure issue in the scheduler (rdar://51373853)
- Fixed DoS issues in the scheduler (rdar://51373929)
2019-08-15 14:06:47 -04:00
Michael R Sweet d784ca2f83 Fix typo in ipptoolfile man page. 2019-08-15 13:40:12 -04:00
Michael R Sweet f4b0bfa2db Fix whitespace 2019-08-07 13:02:49 -04:00
Michael R Sweet 5754bcceeb Stop accepting attributes in collections (Issue #5630) 2019-08-07 13:00:50 -04:00
Michael R Sweet f79dad58ab Fix man page typo. 2019-08-05 20:10:04 -04:00
Michael R Sweet 3cf5b72ab7 USB quirk (Issue #5617) 2019-08-01 14:30:07 -04:00
Michael R Sweet c76c53615c Changelog 2019-08-01 14:26:30 -04:00
Michael R Sweet 9ec6124c37 GNU TLS FIPS140 support (Issue #5601, Issue #5622) 2019-08-01 14:24:58 -04:00
Michael R Sweet 8e048e4d39 Fix some PPD parser issues discovered via fuzzing (Issue #5623, Issue #5624) 2019-08-01 14:02:04 -04:00
Michael R Sweet dc00a7c3ad Fix some PPD parser issues discovered via fuzzing (Issue #5623, Issue #5624) 2019-08-01 13:56:29 -04:00
Michael R Sweet db1c94f3a1 Fix memory leak in ppdOpen. 2019-08-01 13:02:23 -04:00
Michael R Sweet 65048b860c Enhance testipp to support reading hex dumps. 2019-08-01 12:00:00 -04:00
Michael R Sweet 43c0e4a9d5 Update GCC options (hopefully will cover more future versions...) 2019-08-01 11:45:45 -04:00
Michael R Sweet 6647894889 Fix potential excess logging from the scheduler when removing job files
(Issue #5597)

(may be Debian-specific, as I was unable to duplicate - the extra check is in
place in case file_time is reset)
2019-07-16 10:51:07 -04:00
Michael R Sweet 614efb7a87 Don't default printer-info, printer-location, printer-geo-location (Issue #5603) 2019-07-16 10:43:01 -04:00
Michael R Sweet c5dcd7ecff Update changelog. 2019-07-16 10:39:39 -04:00
Michael R Sweet 9c13b7d26e Log held job messages as errors so that is it clear why a job was held (Issue #5604) 2019-07-16 10:37:37 -04:00
Michael R Sweet 4e104fb9c8 The web interface did not show that a job was held for authentication (Issue #5604) 2019-07-16 10:34:09 -04:00
Michael R Sweet 242b4b9be6 Update the cupsd.conf man page to better explain what @IF(name) and @LOCAL do
(Issue #5604)
2019-07-16 10:09:12 -04:00
Michael R Sweet 9539c53065 Fix lpadmin with cupsIPPSupplies and cupsSNMPSupplies (Issue #5610) 2019-07-16 09:27:13 -04:00
Michael R Sweet 3c27d2a6dd Always check the group membership list (Issue #5613) 2019-07-16 09:16:22 -04:00
Michael R Sweet e9a4e9d6ea The scheduler would restart continuously when idle and printers were not
shared (rdar://52561199)
2019-07-16 09:07:17 -04:00
Michael R Sweet c0a097c92f Merge pull request #5608 from kenshin33/kenshin33-fr
french translation correction
2019-07-12 08:36:09 -04:00
Raouf Bencheraiet 9a5e6d74b9 french translation correction 2019-07-08 18:03:30 -04:00
Michael R Sweet f93b470e22 Fix an issue with the IPP backend and unsupported "sides" values (rdar://51775322) 2019-06-17 15:01:39 -04:00
Michael R Sweet 90d3999e0d Fix whitespace issues. 2019-06-17 09:49:22 -04:00
Michael R Sweet c9b65dc4d9 Fix NULL pointer dereference in httpGetField2 (Issue #5598) 2019-06-17 09:46:37 -04:00
Michael R Sweet 8ef4f507d7 Eliminate new GCC compiler warnings (Issue #5591) 2019-06-13 16:39:34 -04:00
Michael R Sweet 3001a140d6 Use GZIPPROG instead of GZIP to avoid install issues (Issue #5595) 2019-06-12 08:36:28 -04:00
Michael R Sweet 2614dc6385 Changelog. 2019-06-10 15:13:41 -04:00
Michael R Sweet b7569be6f4 Changelog. 2019-06-10 15:13:08 -04:00
Michael R Sweet e02771e0c6 Merge pull request #5590 from yurashek/master
Swapped branches of HAVE_SSL condition
2019-06-10 15:12:59 -04:00
Michael R Sweet 11c5618507 Merge pull request #5593 from mpsuzuki/remove-unused-func
remove unused to64() from scheduler/auth.c to calm warning for -Wunused-functions
2019-06-10 09:09:16 -04:00
suzuki toshiya ce3f7bf3e9 remove unused to64() 2019-06-07 04:06:34 +00:00
Jiri Sasek 387ef588c9 Swapped branches of HAVE_SSL condition 2019-06-03 18:18:54 +02:00
Michael R Sweet 2e738f0309 Changelog. 2019-05-30 10:22:25 -04:00
Michael R Sweet 8e901a3856 Merge pull request #5588 from dargad/job-typo
Fix parentheses in cupsdCleanJobs.
2019-05-30 10:20:50 -04:00
Dariusz Gadomski 53cac1d08b Fix parentheses in cupsdCleanJobs. 2019-05-30 14:06:27 +02:00
Michael R Sweet 9c554374b5 Bump versions to 2.3.0 (optimism!) 2019-05-24 09:33:45 -04:00
Michael R Sweet 03cc81b703 Put IDR command in its own XA/XZ section. 2019-05-24 09:27:09 -04:00
Michael R Sweet 5098fdde63 Swap ^IDR and ^XZ commands to make sure that page image is deleted on the label
printer. (Why is this even a thing?)
2019-05-24 08:12:26 -04:00
Michael R Sweet 0cf87cf506 Fix EXPECT !name WITH-VALUE ... tests. 2019-05-23 11:59:40 -04:00
79 arquivos alterados com 7477 adições e 13224 exclusões
+2
Ver Arquivo
@@ -1,3 +1,5 @@
.git* export-ignore
.mailmap export-ignore
examples/testfile.pcl -text
exampels/testfile.txt -text
scripts export-ignore
+46 -2
Ver Arquivo
@@ -1,5 +1,49 @@
CHANGES - 2.3rc1 - 2019-05-21
=============================
CHANGES - 2.3.0 - 2019-08-23
============================
Changes in CUPS v2.3.0
----------------------
- CVE-2019-8696 and CVE-2019-8675: Fixed SNMP buffer overflows (rdar://51685251)
- Added a GPL2/LGPL2 exception to the new CUPS license terms.
- Documentation updates (Issue #5604)
- Localization updates (Issue #5637)
- Fixed a bug in the scheduler job cleanup code (Issue #5588)
- Fixed builds when there is no TLS library (Issue #5590)
- Eliminated some new GCC compiler warnings (Issue #5591)
- Removed dead code from the scheduler (Issue #5593)
- "make" failed with GZIP options (Issue #5595)
- Fixed potential excess logging from the scheduler when removing job files
(Issue #5597)
- Fixed a NULL pointer dereference bug in `httpGetSubField2` (Issue #5598)
- Added FIPS-140 workarounds for GNU TLS (Issue #5601, Issue #5622)
- The scheduler no longer provides a default value for the description
(Issue #5603)
- The scheduler now logs jobs held for authentication using the error level so
it is clear what happened (Issue #5604)
- The `lpadmin` command did not always update the PPD file for changes to the
`cupsIPPSupplies` and `cupsSNMPSupplies` keywords (Issue #5610)
- The scheduler now uses both the group's membership list as well as the
various OS-specific membership functions to determine whether a user belongs
to a named group (Issue #5613)
- Added USB quirks rule for HP LaserJet 1015 (Issue #5617)
- Fixed some PPD parser issues (Issue #5623, Issue #5624)
- The IPP parser no longer allows invalid member attributes in collections
(Issue #5630)
- The configure script now treats the "wheel" group as a potential system
group (Issue #5638)
- Fixed a USB printing issue on macOS (rdar://31433931)
- Fixed IPP buffer overflow (rdar://50035411)
- Fixed memory disclosure issue in the scheduler (rdar://51373853)
- Fixed DoS issues in the scheduler (rdar://51373929)
- Fixed an issue with unsupported "sides" values in the IPP backend
(rdar://51775322)
- The scheduler would restart continuously when idle and printers were not
shared (rdar://52561199)
- Fixed an issue with `EXPECT !name WITH-VALUE ...` tests.
- Fixed a command ordering issue in the Zebra ZPL driver.
- Fixed a memory leak in `ppdOpen`.
Changes in CUPS v2.3rc1
+6 -5
Ver Arquivo
@@ -2,13 +2,14 @@ Contributing to CUPS
====================
CUPS is developed by Apple Inc. and distributed as open source software under
the Apache License, Version 2.0. Significant contributions to CUPS must be
licensed to Apple using the Apple Contributor Agreement:
the Apache License, Version 2.0 with exceptions to allow linking to GPL2/LGPL2
code. Significant contributions to CUPS must be licensed to Apple using the
Apple Contributor Agreement:
https://www.cups.org/AppleContributorAgreement_2011-03-10.pdf
Contributions should be submitted as attachments to bug reports on the CUPS web
site. Changes to existing source files should be submitted as unified diffs
(both Subversion and Git produce this format by default) while new source files
Contributions should be submitted as attachments to bug reports on the
[CUPS Github project](https://github.com/apple/cups). Changes to existing
source files should be submitted as unified diffs while new source files
should be provided as-is or in an archive. Github pull requests can also be
used to submit changes.
+1 -1
Ver Arquivo
@@ -1,4 +1,4 @@
CREDITS - 2017-05-01
CREDITS - 2019-08-21
====================
Few projects are completed by one person, and CUPS is no exception. We'd like
+15 -7
Ver Arquivo
@@ -63,7 +63,9 @@ major, minor, and patch release numbers. Major release numbers indicate large
design changes or backwards-incompatible changes to the CUPS API or CUPS
Imaging API. Minor release numbers indicate new features and other smaller
changes which are backwards-compatible with previous CUPS releases. Patch
numbers indicate bug fixes to the previous feature or patch release.
numbers indicate bug fixes to the previous feature or patch release. This
version numbering scheme is consistent with the
[Semantic Versioning](http://semver.org) specification.
> Note:
>
@@ -114,6 +116,10 @@ Contributed source code must follow the guidelines below. While the examples
are for C and C++ source files, source code for other languages should conform
to the same guidelines as allowed by the language.
Source code comments provide the reference portion of the CUPS Programming
Manual, which is generated using the [codedoc](https://www.msweet.org/codedoc)
software.
### Source Files
@@ -270,15 +276,17 @@ Return/output values are indicated using an "O" prefix, input values are
indicated using the "I" prefix, and values that are both input and output use
the "IO" prefix for the corresponding in-line comment.
The Mini-XML documentation generator also understands the following special
text in the function description comment:
The [codedoc](https://www.msweet.org/codedoc) documentation generator also
understands the following special text in the function description comment:
@deprecated@ - Marks the function as deprecated (not recommended
for new development and scheduled for removal)
@deprecated@ - Marks the function as deprecated: not recommended
for new development and scheduled for removal.
@link name@ - Provides a hyperlink to the corresponding function
or type definition.
@since CUPS version@ - Marks the function as new in the specified version
of CUPS.
@private@ - Marks the function as private (same as starting the
function name with an underscore)
@private@ - Marks the function as private so it will not be
included in the documentation.
### Variables
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
INSTALL - CUPS v2.3rc1 - 2019-05-21
===================================
INSTALL - CUPS v2.3.0 - 2019-08-21
==================================
This file describes how to compile and install CUPS from source code. For more
information on CUPS see the file called "README.md". A complete change log can
+1 -1
Ver Arquivo
@@ -26,7 +26,7 @@ CHMOD = @CHMOD@
CXX = @LIBTOOL_CXX@ @CXX@
DSO = @DSO@
DSOXX = @DSOXX@
GZIP = @GZIP@
GZIPPROG = @GZIPPROG@
INSTALL = @INSTALL@
LD = @LD@
LD_CC = @LD_CC@
+18 -1
Ver Arquivo
@@ -1,6 +1,6 @@
CUPS
Copyright © 2007-2018 by Apple Inc.
Copyright © 2007-2019 by Apple Inc.
Copyright © 1997-2007 by Easy Software Products.
CUPS and the CUPS logo are trademarks of Apple Inc.
@@ -32,3 +32,20 @@ the following restrictions:
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
-- CUPS Exceptions to the Apache 2.0 License --
As an exception, if, as a result of your compiling your source code, portions
of this Software are embedded into an Object form of such source code, you
may redistribute such embedded portions in such Object form without complying
with the conditions of Sections 4(a), 4(b) and 4(d) of the License.
In addition, if you combine or link compiled forms of this Software with
software that is licensed under the GPLv2 ("Combined Software") and if a
court of competent jurisdiction determines that the patent provision (Section
3), the indemnity provision (Section 9) or other Section of the License
conflicts with the conditions of the GPLv2, you may retroactively and
prospectively choose to deem waived or otherwise exclude such Section(s) of
the License, but only in their entirety and only with respect to the Combined
Software.
+35 -31
Ver Arquivo
@@ -1,18 +1,9 @@
README - CUPS v2.3rc1 - 2019-05-21
==================================
> **Note:** CUPS v2.3b8 is not production code. Do not use on production
> systems. For a production version of CUPS, please see the CUPS 2.2.x
> releases. **Do not use CUPS v2.3b8 on production systems.**
Looking for compile instructions? Read the file `INSTALL.md` instead...
README - CUPS v2.3.0 - 2019-08-21
=================================
INTRODUCTION
------------
CUPS is a standards-based, open source printing system developed by Apple Inc.
for macOS® and other UNIX®-like operating systems. CUPS uses the Internet
Printing Protocol ("IPP") and provides System V and Berkeley command-line
@@ -34,8 +25,21 @@ CUPS is licensed under the Apache License Version 2.0. See the file
READING THE DOCUMENTATION
-------------------------
Initial documentation to get you started is provided in the root directory of
the CUPS sources:
- `CHANGES.md`: A list of changes in the current major release of CUPS.
- `CONTRIBUTING.md`: Guidelines for contributing to the CUPS project.
- `CREDITS.md`: A list of past contributors to the CUPS project.
- `DEVELOPING.md`: Guidelines for developing code for the CUPS project.
- `INSTALL.md`: Instructions for building and installing CUPS.
- `LICENSE`: The CUPS license agreement (Apache 2.0).
- `NOTICE`: Copyright notices and exceptions to the CUPS license agreement.
- `README.md`: This file.
Once you have installed the software you can access the documentation (and a
bunch of other stuff) online at <http://localhost:631/>.
bunch of other stuff) online at <http://localhost:631/> and using the `man`
command, for example `man cups`.
If you're having trouble getting that far, the documentation is located under
the `doc/help` and `man` directories.
@@ -81,22 +85,22 @@ printer at address 11.22.33.44:
CUPS also includes several sample PPD files you can use for "legacy" printers:
Driver PPD Name
----------------------------- ------------------------------
Dymo Label Printers drv:///sample.drv/dymo.ppd
Intellitech Intellibar drv:///sample.drv/intelbar.ppd
EPSON 9-pin Series drv:///sample.drv/epson9.ppd
EPSON 24-pin Series drv:///sample.drv/epson24.ppd
Generic PCL Laser Printer drv:///sample.drv/generpcl.ppd
Generic PostScript Printer drv:///sample.drv/generic.ppd
HP DeskJet Series drv:///sample.drv/deskjet.ppd
HP LaserJet Series drv:///sample.drv/laserjet.ppd
OKIDATA 9-Pin Series drv:///sample.drv/okidata9.ppd
OKIDATA 24-Pin Series drv:///sample.drv/okidat24.ppd
Zebra CPCL Label Printer drv:///sample.drv/zebracpl.ppd
Zebra EPL1 Label Printer drv:///sample.drv/zebraep1.ppd
Zebra EPL2 Label Printer drv:///sample.drv/zebraep2.ppd
Zebra ZPL Label Printer drv:///sample.drv/zebra.ppd
Driver | PPD Name
----------------------------- | ------------------------------
Dymo Label Printers | drv:///sample.drv/dymo.ppd
Intellitech Intellibar | drv:///sample.drv/intelbar.ppd
EPSON 9-pin Series | drv:///sample.drv/epson9.ppd
EPSON 24-pin Series | drv:///sample.drv/epson24.ppd
Generic PCL Laser Printer | drv:///sample.drv/generpcl.ppd
Generic PostScript Printer | drv:///sample.drv/generic.ppd
HP DeskJet Series | drv:///sample.drv/deskjet.ppd
HP LaserJet Series | drv:///sample.drv/laserjet.ppd
OKIDATA 9-Pin Series | drv:///sample.drv/okidata9.ppd
OKIDATA 24-Pin Series | drv:///sample.drv/okidat24.ppd
Zebra CPCL Label Printer | drv:///sample.drv/zebracpl.ppd
Zebra EPL1 Label Printer | drv:///sample.drv/zebraep1.ppd
Zebra EPL2 Label Printer | drv:///sample.drv/zebraep2.ppd
Zebra ZPL Label Printer | drv:///sample.drv/zebra.ppd
You can run the `lpinfo -m` command to list all of the available drivers:
@@ -156,9 +160,9 @@ LEGAL STUFF
Copyright © 2007-2019 by Apple Inc.
Copyright © 1997-2007 by Easy Software Products.
CUPS is provided under the terms of the Apache License, Version 2.0. A copy of
this license can be found in the file `LICENSE`. Additional legal information
is provided in the file `NOTICE`.
CUPS is provided under the terms of the Apache License, Version 2.0 with
exceptions for GPL2/LGPL2 software. A copy of this license can be found in the
file `LICENSE`. Additional legal information is provided in the file `NOTICE`.
Unless required by applicable law or agreed to in writing, software distributed
under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+1 -1
Ver Arquivo
@@ -1504,7 +1504,7 @@ main(int argc, /* I - Number of command-line args */
const char *sides = cupsGetOption("sides", num_options, options);
if (!strncmp(sides, "two-sided-", 10))
if (!sides || !strncmp(sides, "two-sided-", 10))
{
fputs("DEBUG: Unable to do two-sided printing, setting sides to 'one-sided'.\n", stderr);
num_options = cupsAddOption("sides", "one-sided", num_options, &options);
+3
Ver Arquivo
@@ -242,6 +242,9 @@
# All Intermec devices (Issue #4553)
0x067e no-reattach
# HP LaserJet 1015 (Issue #5617)
0x03f0 0x0e17 delay-close
# HP LaserJet 1150 (Issue #4549)
0x03f0 0x0f17 delay-close
+9 -9
Ver Arquivo
@@ -1280,6 +1280,9 @@ static Boolean find_device_cb(io_service_t obj, printer_interface_t printerIntf,
(*printerIntf)->GetInterfaceNumber(printerIntf, &intfNumber);
(*printerIntf)->GetLocationID(printerIntf, &intfLocation);
if (intfProtocol == kUSBPrintingProtocolIPP)
return keepLooking;
if (g.serial != NULL && CFStringGetLength(g.serial) > 0)
{
if (serial != NULL && CFStringCompare(serial, g.serial, kCFCompareCaseInsensitive) == kCFCompareEqualTo)
@@ -1287,12 +1290,9 @@ static Boolean find_device_cb(io_service_t obj, printer_interface_t printerIntf,
g.interfaceProtocol = intfProtocol;
g.location = intfLocation;
g.alternateSetting = intfAltSetting;
if (intfProtocol != kUSBPrintingProtocolIPP)
{
g.printer_obj = obj;
IOObjectRetain(obj);
}
keepLooking = (intfProtocol == kUSBPrintingProtocolIPP);
g.printer_obj = obj;
IOObjectRetain(obj);
keepLooking = false;
}
}
else
@@ -1300,14 +1300,14 @@ static Boolean find_device_cb(io_service_t obj, printer_interface_t printerIntf,
if (g.printer_obj != 0)
IOObjectRelease(g.printer_obj);
if (g.location == 0 || g.location == intfLocation)
keepLooking = false;
g.location = intfLocation;
g.alternateSetting = intfAltSetting;
g.interfaceProtocol = intfProtocol;
g.printer_obj = obj;
IOObjectRetain(obj);
if (g.location == 0 || g.location == intfLocation)
keepLooking = false;
}
if (!keepLooking)
+9
Ver Arquivo
@@ -2929,6 +2929,9 @@ do_set_options(http_t *http, /* I - HTTP connection */
switch (cparam->type)
{
case PPD_CUSTOM_UNKNOWN :
break;
case PPD_CUSTOM_POINTS :
if (!_cups_strncasecmp(option->defchoice, "Custom.", 7))
{
@@ -3528,6 +3531,9 @@ get_option_value(
switch (cparam->type)
{
case PPD_CUSTOM_UNKNOWN :
break;
case PPD_CUSTOM_CURVE :
case PPD_CUSTOM_INVCURVE :
case PPD_CUSTOM_REAL :
@@ -3606,6 +3612,9 @@ get_option_value(
switch (cparam->type)
{
case PPD_CUSTOM_UNKNOWN :
break;
case PPD_CUSTOM_CURVE :
case PPD_CUSTOM_INVCURVE :
case PPD_CUSTOM_REAL :
+9 -9
Ver Arquivo
@@ -39,7 +39,11 @@ AC_PROG_CXX(clang++ c++ g++)
AC_PROG_RANLIB
AC_PATH_PROG(AR,ar)
AC_PATH_PROG(CHMOD,chmod)
AC_PATH_PROG(GZIP,gzip)
AC_PATH_PROG(GZIPPROG,gzip)
AC_MSG_CHECKING(for install-sh script)
INSTALL="`pwd`/install-sh"
AC_SUBST(INSTALL)
AC_MSG_RESULT(using $INSTALL)
AC_PATH_PROG(LD,ld)
AC_PATH_PROG(LN,ln)
AC_PATH_PROG(MKDIR,mkdir)
@@ -48,6 +52,7 @@ AC_PATH_PROG(RM,rm)
AC_PATH_PROG(RMDIR,rmdir)
AC_PATH_PROG(SED,sed)
AC_PATH_PROG(XDGOPEN,xdg-open)
if test "x$XDGOPEN" = x; then
CUPS_HTMLVIEW="htmlview"
else
@@ -55,11 +60,6 @@ else
fi
AC_SUBST(CUPS_HTMLVIEW)
AC_MSG_CHECKING(for install-sh script)
INSTALL="`pwd`/install-sh"
AC_SUBST(INSTALL)
AC_MSG_RESULT(using $INSTALL)
if test "x$AR" = x; then
AC_MSG_ERROR([Unable to find required library archive command.])
fi
@@ -253,14 +253,14 @@ dnl ZLIB
INSTALL_GZIP=""
LIBZ=""
AC_CHECK_HEADER(zlib.h,
AC_CHECK_LIB(z, gzgets,
AC_CHECK_LIB(z, gzgets,[
AC_DEFINE(HAVE_LIBZ)
LIBZ="-lz"
LIBS="$LIBS -lz"
AC_CHECK_LIB(z, inflateCopy, AC_DEFINE(HAVE_INFLATECOPY))
if test "x$GZIP" != z; then
if test "x$GZIPPROG" != x; then
INSTALL_GZIP="-z"
fi))
fi]))
AC_SUBST(INSTALL_GZIP)
AC_SUBST(LIBZ)
+4 -2
Ver Arquivo
@@ -175,8 +175,10 @@ if test -n "$GCC"; then
# doesn't trigger...
gccversion=`$CC --version | head -1 | awk '{print $NF}'`
case "$gccversion" in
7.* | 8.*)
WARNING_OPTIONS="$WARNING_OPTIONS -Wno-format-truncation -Wno-tautological-compare"
1.* | 2.* | 3.* | 4.* | 5.* | 6.* | \(clang-*)
;;
*)
WARNING_OPTIONS="$WARNING_OPTIONS -Wno-format-truncation -Wno-format-overflow -Wno-tautological-compare"
;;
esac
+1 -1
Ver Arquivo
@@ -245,7 +245,7 @@ AC_ARG_WITH(system_groups, [ --with-system-groups set default system groups
AC_MSG_CHECKING(for default system groups)
if test -f /etc/group; then
CUPS_SYSTEM_GROUPS=""
GROUP_LIST="lpadmin sys system root"
GROUP_LIST="lpadmin sys system root wheel"
for group in $GROUP_LIST; do
if test "`grep \^${group}: /etc/group`" != ""; then
if test "x$CUPS_SYSTEM_GROUPS" = x; then
+1
Ver Arquivo
@@ -58,6 +58,7 @@ if test x$enable_ssl != xno; then
SAVELIBS="$LIBS"
LIBS="$LIBS $SSLLIBS"
AC_CHECK_FUNC(gnutls_fips140_set_mode, AC_DEFINE(HAVE_GNUTLS_FIPS140_SET_MODE))
AC_CHECK_FUNC(gnutls_transport_set_pull_timeout_function, AC_DEFINE(HAVE_GNUTLS_TRANSPORT_SET_PULL_TIMEOUT_FUNCTION))
AC_CHECK_FUNC(gnutls_priority_set_direct, AC_DEFINE(HAVE_GNUTLS_PRIORITY_SET_DIRECT))
LIBS="$SAVELIBS"
+7
Ver Arquivo
@@ -301,6 +301,13 @@
#undef HAVE_SSL
/*
* Do we have the gnutls_fips140_set_mode function?
*/
#undef HAVE_GNUTLS_FIPS140_SET_MODE
/*
* Do we have the gnutls_transport_set_pull_timeout_function function?
*/
externo
+158 -142
Ver Arquivo
@@ -1,13 +1,11 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.68 for CUPS 2.3rc1.
# Generated by GNU Autoconf 2.69 for CUPS 2.3.0.
#
# Report bugs to <https://github.com/apple/cups/issues>.
#
#
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
# Foundation, Inc.
# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
#
#
# This configure script is free software; the Free Software Foundation
@@ -136,6 +134,31 @@ export LANGUAGE
# CDPATH.
(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
# Use a proper internal environment variable to ensure we don't fall
# into an infinite loop, continuously re-executing ourselves.
if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
_as_can_reexec=no; export _as_can_reexec;
# We cannot yet assume a decent shell, so we have to provide a
# neutralization value for shells without unset; and this also
# works around shells that cannot unset nonexistent variables.
# Preserve -v and -x to the replacement shell.
BASH_ENV=/dev/null
ENV=/dev/null
(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
case $- in # ((((
*v*x* | *x*v* ) as_opts=-vx ;;
*v* ) as_opts=-v ;;
*x* ) as_opts=-x ;;
* ) as_opts= ;;
esac
exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
# Admittedly, this is quite paranoid, since all the known shells bail
# out after a failed `exec'.
$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
as_fn_exit 255
fi
# We don't want this to propagate to other subprocesses.
{ _as_can_reexec=; unset _as_can_reexec;}
if test "x$CONFIG_SHELL" = x; then
as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
emulate sh
@@ -169,7 +192,8 @@ if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
else
exitcode=1; echo positional parameters were not saved.
fi
test x\$exitcode = x0 || exit 1"
test x\$exitcode = x0 || exit 1
test -x / || exit 1"
as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
@@ -214,21 +238,25 @@ IFS=$as_save_IFS
if test "x$CONFIG_SHELL" != x; then :
# We cannot yet assume a decent shell, so we have to provide a
# neutralization value for shells without unset; and this also
# works around shells that cannot unset nonexistent variables.
# Preserve -v and -x to the replacement shell.
BASH_ENV=/dev/null
ENV=/dev/null
(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
export CONFIG_SHELL
case $- in # ((((
*v*x* | *x*v* ) as_opts=-vx ;;
*v* ) as_opts=-v ;;
*x* ) as_opts=-x ;;
* ) as_opts= ;;
esac
exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"}
export CONFIG_SHELL
# We cannot yet assume a decent shell, so we have to provide a
# neutralization value for shells without unset; and this also
# works around shells that cannot unset nonexistent variables.
# Preserve -v and -x to the replacement shell.
BASH_ENV=/dev/null
ENV=/dev/null
(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
case $- in # ((((
*v*x* | *x*v* ) as_opts=-vx ;;
*v* ) as_opts=-v ;;
*x* ) as_opts=-x ;;
* ) as_opts= ;;
esac
exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
# Admittedly, this is quite paranoid, since all the known shells bail
# out after a failed `exec'.
$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
exit 255
fi
if test x$as_have_required = xno; then :
@@ -331,6 +359,14 @@ $as_echo X"$as_dir" |
} # as_fn_mkdir_p
# as_fn_executable_p FILE
# -----------------------
# Test if FILE is an executable regular file.
as_fn_executable_p ()
{
test -f "$1" && test -x "$1"
} # as_fn_executable_p
# as_fn_append VAR VALUE
# ----------------------
# Append the text in VALUE to the end of the definition contained in VAR. Take
@@ -452,6 +488,10 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits
chmod +x "$as_me.lineno" ||
{ $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
# If we had to re-execute with $CONFIG_SHELL, we're ensured to have
# already done that, so ensure we don't try to do so again and fall
# in an infinite loop. This has already happened in practice.
_as_can_reexec=no; export _as_can_reexec
# Don't try to exec as it changes $[0], causing all sort of problems
# (the dirname of $[0] is not the place where we might find the
# original and so on. Autoconf is especially sensitive to this).
@@ -486,16 +526,16 @@ if (echo >conf$$.file) 2>/dev/null; then
# ... but there are two gotchas:
# 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
# 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
# In both cases, we have to default to `cp -p'.
# In both cases, we have to default to `cp -pR'.
ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
as_ln_s='cp -p'
as_ln_s='cp -pR'
elif ln conf$$.file conf$$ 2>/dev/null; then
as_ln_s=ln
else
as_ln_s='cp -p'
as_ln_s='cp -pR'
fi
else
as_ln_s='cp -p'
as_ln_s='cp -pR'
fi
rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
rmdir conf$$.dir 2>/dev/null
@@ -507,28 +547,8 @@ else
as_mkdir_p=false
fi
if test -x / >/dev/null 2>&1; then
as_test_x='test -x'
else
if ls -dL / >/dev/null 2>&1; then
as_ls_L_option=L
else
as_ls_L_option=
fi
as_test_x='
eval sh -c '\''
if test -d "$1"; then
test -d "$1/.";
else
case $1 in #(
-*)set "./$1";;
esac;
case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
???[sx]*):;;*)false;;esac;fi
'\'' sh
'
fi
as_executable_p=$as_test_x
as_test_x='test -x'
as_executable_p=as_fn_executable_p
# Sed expression to map a string onto a valid CPP name.
as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
@@ -560,8 +580,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='CUPS'
PACKAGE_TARNAME='cups'
PACKAGE_VERSION='2.3rc1'
PACKAGE_STRING='CUPS 2.3rc1'
PACKAGE_VERSION='2.3.0'
PACKAGE_STRING='CUPS 2.3.0'
PACKAGE_BUGREPORT='https://github.com/apple/cups/issues'
PACKAGE_URL='https://www.cups.org/'
@@ -731,7 +751,6 @@ LIBPAPER
LIBMALLOC
PKGCONFIG
INSTALLSTATIC
INSTALL
CUPS_HTMLVIEW
XDGOPEN
SED
@@ -741,7 +760,8 @@ MV
MKDIR
LN
LD
GZIP
INSTALL
GZIPPROG
CHMOD
AR
RANLIB
@@ -1362,8 +1382,6 @@ target=$target_alias
if test "x$host_alias" != x; then
if test "x$build_alias" = x; then
cross_compiling=maybe
$as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host.
If a cross compiler is detected then cross compile mode will be used" >&2
elif test "x$build_alias" != "x$host_alias"; then
cross_compiling=yes
fi
@@ -1449,7 +1467,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.3rc1 to adapt to many kinds of systems.
\`configure' configures CUPS 2.3.0 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1514,7 +1532,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
short | recursive ) echo "Configuration of CUPS 2.3rc1:";;
short | recursive ) echo "Configuration of CUPS 2.3.0:";;
esac
cat <<\_ACEOF
@@ -1695,10 +1713,10 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
CUPS configure 2.3rc1
generated by GNU Autoconf 2.68
CUPS configure 2.3.0
generated by GNU Autoconf 2.69
Copyright (C) 2010 Free Software Foundation, Inc.
Copyright (C) 2012 Free Software Foundation, Inc.
This configure script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it.
_ACEOF
@@ -1849,7 +1867,7 @@ $as_echo "$ac_try_echo"; } >&5
test ! -s conftest.err
} && test -s conftest$ac_exeext && {
test "$cross_compiling" = yes ||
$as_test_x conftest$ac_exeext
test -x conftest$ac_exeext
}; then :
ac_retval=0
else
@@ -2159,8 +2177,8 @@ 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.3rc1, which was
generated by GNU Autoconf 2.68. Invocation command line was
It was created by CUPS $as_me 2.3.0, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -2646,7 +2664,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_CODE_SIGN="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -2676,7 +2694,7 @@ done
ac_config_headers="$ac_config_headers config.h"
CUPS_VERSION="2.3rc1"
CUPS_VERSION="2.3.0"
CUPS_REVISION=""
CUPS_BUILD="cups-$CUPS_VERSION"
@@ -2722,7 +2740,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_AWK="$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -2770,7 +2788,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -2814,7 +2832,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_CC="$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3258,8 +3276,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <stdarg.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
struct stat;
/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
struct buf { int x; };
FILE * (*rcsopen) (struct buf *, struct stat *, int);
@@ -3509,7 +3526,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3553,7 +3570,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_CXX="$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3755,7 +3772,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3795,7 +3812,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_RANLIB="ranlib"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3848,7 +3865,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_AR="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3888,7 +3905,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_CHMOD="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3914,12 +3931,12 @@ fi
set dummy gzip; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
if ${ac_cv_path_GZIP+:} false; then :
if ${ac_cv_path_GZIPPROG+:} false; then :
$as_echo_n "(cached) " >&6
else
case $GZIP in
case $GZIPPROG in
[\\/]* | ?:[\\/]*)
ac_cv_path_GZIP="$GZIP" # Let the user override the test with a path.
ac_cv_path_GZIPPROG="$GZIPPROG" # Let the user override the test with a path.
;;
*)
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -3928,8 +3945,8 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_GZIP="$as_dir/$ac_word$ac_exec_ext"
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_GZIPPROG="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
@@ -3940,16 +3957,22 @@ IFS=$as_save_IFS
;;
esac
fi
GZIP=$ac_cv_path_GZIP
if test -n "$GZIP"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $GZIP" >&5
$as_echo "$GZIP" >&6; }
GZIPPROG=$ac_cv_path_GZIPPROG
if test -n "$GZIPPROG"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $GZIPPROG" >&5
$as_echo "$GZIPPROG" >&6; }
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for install-sh script" >&5
$as_echo_n "checking for install-sh script... " >&6; }
INSTALL="`pwd`/install-sh"
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: using $INSTALL" >&5
$as_echo "using $INSTALL" >&6; }
# Extract the first word of "ld", so it can be a program name with args.
set dummy ld; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
@@ -3968,7 +3991,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_LD="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -4008,7 +4031,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_LN="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -4048,7 +4071,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_MKDIR="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -4088,7 +4111,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_MV="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -4128,7 +4151,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_RM="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -4168,7 +4191,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_RMDIR="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -4208,7 +4231,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_SED="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -4248,7 +4271,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_XDGOPEN="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -4270,6 +4293,7 @@ $as_echo "no" >&6; }
fi
if test "x$XDGOPEN" = x; then
CUPS_HTMLVIEW="htmlview"
else
@@ -4277,13 +4301,6 @@ else
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for install-sh script" >&5
$as_echo_n "checking for install-sh script... " >&6; }
INSTALL="`pwd`/install-sh"
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: using $INSTALL" >&5
$as_echo "using $INSTALL" >&6; }
if test "x$AR" = x; then
as_fn_error $? "Unable to find required library archive command." "$LINENO" 5
fi
@@ -4324,7 +4341,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_PKGCONFIG="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -4367,7 +4384,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_ac_pt_PKGCONFIG="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -4777,7 +4794,7 @@ do
for ac_prog in grep ggrep; do
for ac_exec_ext in '' $ac_executable_extensions; do
ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
{ test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
as_fn_executable_p "$ac_path_GREP" || continue
# Check for GNU ac_path_GREP and select it if it is found.
# Check for GNU $ac_path_GREP
case `"$ac_path_GREP" --version 2>&1` in
@@ -4843,7 +4860,7 @@ do
for ac_prog in egrep; do
for ac_exec_ext in '' $ac_executable_extensions; do
ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
{ test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
as_fn_executable_p "$ac_path_EGREP" || continue
# Check for GNU ac_path_EGREP and select it if it is found.
# Check for GNU $ac_path_EGREP
case `"$ac_path_EGREP" --version 2>&1` in
@@ -5616,7 +5633,8 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_gzgets" >&5
$as_echo "$ac_cv_lib_z_gzgets" >&6; }
if test "x$ac_cv_lib_z_gzgets" = xyes; then :
$as_echo "#define HAVE_LIBZ 1" >>confdefs.h
$as_echo "#define HAVE_LIBZ 1" >>confdefs.h
LIBZ="-lz"
LIBS="$LIBS -lz"
@@ -5661,7 +5679,7 @@ if test "x$ac_cv_lib_z_inflateCopy" = xyes; then :
fi
if test "x$GZIP" != z; then
if test "x$GZIPPROG" != x; then
INSTALL_GZIP="-z"
fi
fi
@@ -6893,8 +6911,10 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
# doesn't trigger...
gccversion=`$CC --version | head -1 | awk '{print $NF}'`
case "$gccversion" in
7.* | 8.*)
WARNING_OPTIONS="$WARNING_OPTIONS -Wno-format-truncation -Wno-tautological-compare"
1.* | 2.* | 3.* | 4.* | 5.* | 6.* | \(clang-*)
;;
*)
WARNING_OPTIONS="$WARNING_OPTIONS -Wno-format-truncation -Wno-format-overflow -Wno-tautological-compare"
;;
esac
@@ -7637,7 +7657,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_KRB5CONFIG="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -7680,7 +7700,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_ac_pt_KRB5CONFIG="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -8186,7 +8206,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_LIBGNUTLSCONFIG="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -8229,7 +8249,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_ac_pt_LIBGNUTLSCONFIG="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -8288,6 +8308,12 @@ fi
SAVELIBS="$LIBS"
LIBS="$LIBS $SSLLIBS"
ac_fn_c_check_func "$LINENO" "gnutls_fips140_set_mode" "ac_cv_func_gnutls_fips140_set_mode"
if test "x$ac_cv_func_gnutls_fips140_set_mode" = xyes; then :
$as_echo "#define HAVE_GNUTLS_FIPS140_SET_MODE 1" >>confdefs.h
fi
ac_fn_c_check_func "$LINENO" "gnutls_transport_set_pull_timeout_function" "ac_cv_func_gnutls_transport_set_pull_timeout_function"
if test "x$ac_cv_func_gnutls_transport_set_pull_timeout_function" = xyes; then :
$as_echo "#define HAVE_GNUTLS_TRANSPORT_SET_PULL_TIMEOUT_FUNCTION 1" >>confdefs.h
@@ -8800,6 +8826,8 @@ _ACEOF
esac
rm -rf conftest*
fi
fi
@@ -9573,7 +9601,7 @@ else
$as_echo_n "checking for default system groups... " >&6; }
if test -f /etc/group; then
CUPS_SYSTEM_GROUPS=""
GROUP_LIST="lpadmin sys system root"
GROUP_LIST="lpadmin sys system root wheel"
for group in $GROUP_LIST; do
if test "`grep \^${group}: /etc/group`" != ""; then
if test "x$CUPS_SYSTEM_GROUPS" = x; then
@@ -10266,16 +10294,16 @@ if (echo >conf$$.file) 2>/dev/null; then
# ... but there are two gotchas:
# 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
# 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
# In both cases, we have to default to `cp -p'.
# In both cases, we have to default to `cp -pR'.
ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
as_ln_s='cp -p'
as_ln_s='cp -pR'
elif ln conf$$.file conf$$ 2>/dev/null; then
as_ln_s=ln
else
as_ln_s='cp -p'
as_ln_s='cp -pR'
fi
else
as_ln_s='cp -p'
as_ln_s='cp -pR'
fi
rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
rmdir conf$$.dir 2>/dev/null
@@ -10335,28 +10363,16 @@ else
as_mkdir_p=false
fi
if test -x / >/dev/null 2>&1; then
as_test_x='test -x'
else
if ls -dL / >/dev/null 2>&1; then
as_ls_L_option=L
else
as_ls_L_option=
fi
as_test_x='
eval sh -c '\''
if test -d "$1"; then
test -d "$1/.";
else
case $1 in #(
-*)set "./$1";;
esac;
case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
???[sx]*):;;*)false;;esac;fi
'\'' sh
'
fi
as_executable_p=$as_test_x
# as_fn_executable_p FILE
# -----------------------
# Test if FILE is an executable regular file.
as_fn_executable_p ()
{
test -f "$1" && test -x "$1"
} # as_fn_executable_p
as_test_x='test -x'
as_executable_p=as_fn_executable_p
# Sed expression to map a string onto a valid CPP name.
as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
@@ -10377,8 +10393,8 @@ 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.3rc1, which was
generated by GNU Autoconf 2.68. Invocation command line was
This file was extended by CUPS $as_me 2.3.0, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
CONFIG_HEADERS = $CONFIG_HEADERS
@@ -10440,11 +10456,11 @@ _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.3rc1
configured by $0, generated by GNU Autoconf 2.68,
CUPS config.status 2.3.0
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
Copyright (C) 2010 Free Software Foundation, Inc.
Copyright (C) 2012 Free Software Foundation, Inc.
This config.status script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it."
@@ -10533,7 +10549,7 @@ fi
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
if \$ac_cs_recheck; then
set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
shift
\$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
CONFIG_SHELL='$SHELL'
+1 -1
Ver Arquivo
@@ -12,7 +12,7 @@ dnl We need at least autoconf 2.60...
AC_PREREQ(2.60)
dnl Package name and version...
AC_INIT([CUPS], [2.3rc1], [https://github.com/apple/cups/issues], [cups], [https://www.cups.org/])
AC_INIT([CUPS], [2.3.0], [https://github.com/apple/cups/issues], [cups], [https://www.cups.org/])
sinclude(config-scripts/cups-opsys.m4)
sinclude(config-scripts/cups-common.m4)
+1 -1
Ver Arquivo
@@ -59,7 +59,7 @@ static void cups_update_ready(http_t *http, cups_dinfo_t *dinfo);
/*
* 'cupsAddDestMediaOptions()' - Add the option corresponding to the specified media size.
*
* @since CUPS 2.3@
* @since CUPS 2.3/macOS 10.14@
*/
int /* O - New number of options */
+2 -2
Ver Arquivo
@@ -1,7 +1,7 @@
/*
* Option encoding routines for CUPS.
*
* Copyright © 2007-2018 by Apple Inc.
* Copyright © 2007-2019 by Apple Inc.
* Copyright © 1997-2007 by Easy Software Products.
*
* Licensed under Apache License v2.0. See the file "LICENSE" for more
@@ -673,7 +673,7 @@ _cupsEncodeOption(
/*
* 'cupsEncodeOption()' - Encode a single option into an IPP attribute.
*
* @since CUPS 2.3@
* @since CUPS 2.3/macOS 10.14@
*/
ipp_attribute_t * /* O - New attribute or @code NULL@ on error */
+23
Ver Arquivo
@@ -185,6 +185,13 @@ cupsHashData(const char *algorithm, /* I - Algorithm name */
unsigned char temp[64]; /* Temporary hash buffer */
size_t tempsize = 0; /* Truncate to this size? */
# ifdef HAVE_GNUTLS_FIPS140_SET_MODE
unsigned oldmode = gnutls_fips140_mode_enabled();
gnutls_fips140_set_mode(GNUTLS_FIPS140_LAX, GNUTLS_FIPS140_SET_MODE_THREAD);
# endif /* HAVE_GNUTLS_FIPS140_SET_MODE */
if (!strcmp(algorithm, "md5"))
alg = GNUTLS_DIG_MD5;
else if (!strcmp(algorithm, "sha"))
@@ -222,6 +229,10 @@ cupsHashData(const char *algorithm, /* I - Algorithm name */
gnutls_hash_fast(alg, data, datalen, temp);
memcpy(hash, temp, tempsize);
# ifdef HAVE_GNUTLS_FIPS140_SET_MODE
gnutls_fips140_set_mode(oldmode, GNUTLS_FIPS140_SET_MODE_THREAD);
# endif /* HAVE_GNUTLS_FIPS140_SET_MODE */
return ((ssize_t)tempsize);
}
@@ -230,9 +241,17 @@ cupsHashData(const char *algorithm, /* I - Algorithm name */
gnutls_hash_fast(alg, data, datalen, hash);
# ifdef HAVE_GNUTLS_FIPS140_SET_MODE
gnutls_fips140_set_mode(oldmode, GNUTLS_FIPS140_SET_MODE_THREAD);
# endif /* HAVE_GNUTLS_FIPS140_SET_MODE */
return ((ssize_t)gnutls_hash_get_len(alg));
}
# ifdef HAVE_GNUTLS_FIPS140_SET_MODE
gnutls_fips140_set_mode(oldmode, GNUTLS_FIPS140_SET_MODE_THREAD);
# endif /* HAVE_GNUTLS_FIPS140_SET_MODE */
#else
/*
* No hash support beyond MD5 without CommonCrypto or GNU TLS...
@@ -266,6 +285,10 @@ cupsHashData(const char *algorithm, /* I - Algorithm name */
too_small:
#ifdef HAVE_GNUTLS_FIPS140_SET_MODE
gnutls_fips140_set_mode(oldmode, GNUTLS_FIPS140_SET_MODE_THREAD);
#endif /* HAVE_GNUTLS_FIPS140_SET_MODE */
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Hash buffer too small."), 1);
return (-1);
}
+13 -5
Ver Arquivo
@@ -1,8 +1,8 @@
/*
* HTTP routines for CUPS.
*
* Copyright 2007-2018 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
* Copyright © 2007-2019 by Apple Inc.
* Copyright © 1997-2007 by Easy Software Products, all rights reserved.
*
* This file contains Kerberos support code, copyright 2006 by
* Jelmer Vernooij.
@@ -1345,8 +1345,11 @@ httpGetSubField2(http_t *http, /* I - HTTP connection */
DEBUG_printf(("2httpGetSubField2(http=%p, field=%d, name=\"%s\", value=%p, valuelen=%d)", (void *)http, field, name, (void *)value, valuelen));
if (value)
*value = '\0';
if (!http || !name || !value || valuelen < 2 ||
field <= HTTP_FIELD_UNKNOWN || field >= HTTP_FIELD_MAX)
field <= HTTP_FIELD_UNKNOWN || field >= HTTP_FIELD_MAX || !http->fields[field])
return (NULL);
end = value + valuelen - 1;
@@ -1857,7 +1860,7 @@ httpPrintf(http_t *http, /* I - HTTP connection */
...) /* I - Additional args as needed */
{
ssize_t bytes; /* Number of bytes to write */
char buf[16384]; /* Buffer for formatted string */
char buf[65536]; /* Buffer for formatted string */
va_list ap; /* Variable argument pointer */
@@ -1869,7 +1872,12 @@ httpPrintf(http_t *http, /* I - HTTP connection */
DEBUG_printf(("3httpPrintf: (" CUPS_LLFMT " bytes) %s", CUPS_LLCAST bytes, buf));
if (http->data_encoding == HTTP_ENCODING_FIELDS)
if (bytes > (ssize_t)(sizeof(buf) - 1))
{
http->error = ENOMEM;
return (-1);
}
else if (http->data_encoding == HTTP_ENCODING_FIELDS)
return ((int)httpWrite2(http, buf, (size_t)bytes));
else
{
+9 -9
Ver Arquivo
@@ -3040,8 +3040,13 @@ ippReadIO(void *src, /* I - Data source */
DEBUG_printf(("2ippReadIO: name length=%d", n));
if (n == 0 && tag != IPP_TAG_MEMBERNAME &&
tag != IPP_TAG_END_COLLECTION)
if (n && parent)
{
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Invalid named IPP attribute in collection."), 1);
DEBUG_puts("1ippReadIO: bad attribute name in collection.");
return (IPP_STATE_ERROR);
}
else if (n == 0 && tag != IPP_TAG_MEMBERNAME && tag != IPP_TAG_END_COLLECTION)
{
/*
* More values for current attribute...
@@ -4545,9 +4550,7 @@ ippSetValueTag(
break;
case IPP_TAG_NAME :
if (temp_tag != IPP_TAG_KEYWORD && temp_tag != IPP_TAG_URI &&
temp_tag != IPP_TAG_URISCHEME && temp_tag != IPP_TAG_LANGUAGE &&
temp_tag != IPP_TAG_MIMETYPE)
if (temp_tag != IPP_TAG_KEYWORD)
return (0);
(*attr)->value_tag = (ipp_tag_t)(IPP_TAG_NAME | ((*attr)->value_tag & IPP_TAG_CUPS_CONST));
@@ -4555,10 +4558,7 @@ ippSetValueTag(
case IPP_TAG_NAMELANG :
case IPP_TAG_TEXTLANG :
if (value_tag == IPP_TAG_NAMELANG &&
(temp_tag != IPP_TAG_NAME && temp_tag != IPP_TAG_KEYWORD &&
temp_tag != IPP_TAG_URI && temp_tag != IPP_TAG_URISCHEME &&
temp_tag != IPP_TAG_LANGUAGE && temp_tag != IPP_TAG_MIMETYPE))
if (value_tag == IPP_TAG_NAMELANG && (temp_tag != IPP_TAG_NAME && temp_tag != IPP_TAG_KEYWORD))
return (0);
if (value_tag == IPP_TAG_TEXTLANG && temp_tag != IPP_TAG_TEXT)
+12
Ver Arquivo
@@ -664,6 +664,9 @@ ppdEmitString(ppd_file_t *ppd, /* I - PPD file record */
{
switch (cparam->type)
{
case PPD_CUSTOM_UNKNOWN :
break;
case PPD_CUSTOM_CURVE :
case PPD_CUSTOM_INVCURVE :
case PPD_CUSTOM_POINTS :
@@ -710,6 +713,9 @@ ppdEmitString(ppd_file_t *ppd, /* I - PPD file record */
{
switch (cparam->type)
{
case PPD_CUSTOM_UNKNOWN :
break;
case PPD_CUSTOM_CURVE :
case PPD_CUSTOM_INVCURVE :
case PPD_CUSTOM_POINTS :
@@ -805,6 +811,9 @@ ppdEmitString(ppd_file_t *ppd, /* I - PPD file record */
{
switch (cparam->type)
{
case PPD_CUSTOM_UNKNOWN :
break;
case PPD_CUSTOM_CURVE :
case PPD_CUSTOM_INVCURVE :
case PPD_CUSTOM_POINTS :
@@ -1007,6 +1016,9 @@ ppdEmitString(ppd_file_t *ppd, /* I - PPD file record */
{
switch (cparam->type)
{
case PPD_CUSTOM_UNKNOWN :
break;
case PPD_CUSTOM_CURVE :
case PPD_CUSTOM_INVCURVE :
case PPD_CUSTOM_POINTS :
+6
Ver Arquivo
@@ -851,6 +851,9 @@ ppd_mark_option(ppd_file_t *ppd, /* I - PPD file */
switch (cparam->type)
{
case PPD_CUSTOM_UNKNOWN :
break;
case PPD_CUSTOM_CURVE :
case PPD_CUSTOM_INVCURVE :
case PPD_CUSTOM_REAL :
@@ -928,6 +931,9 @@ ppd_mark_option(ppd_file_t *ppd, /* I - PPD file */
switch (cparam->type)
{
case PPD_CUSTOM_UNKNOWN :
break;
case PPD_CUSTOM_CURVE :
case PPD_CUSTOM_INVCURVE :
case PPD_CUSTOM_REAL :
+33
Ver Arquivo
@@ -705,6 +705,8 @@ _ppdOpen(
strncmp(ll, keyword, ll_len)))
{
DEBUG_printf(("2_ppdOpen: Ignoring localization: \"%s\"\n", keyword));
free(string);
string = NULL;
continue;
}
else if (localization == _PPD_LOCALIZATION_ICC_PROFILES)
@@ -724,6 +726,8 @@ _ppdOpen(
if (i >= (int)(sizeof(color_keywords) / sizeof(color_keywords[0])))
{
DEBUG_printf(("2_ppdOpen: Ignoring localization: \"%s\"\n", keyword));
free(string);
string = NULL;
continue;
}
}
@@ -988,6 +992,13 @@ _ppdOpen(
goto error;
}
if (cparam->type != PPD_CUSTOM_UNKNOWN)
{
pg->ppd_status = PPD_BAD_CUSTOM_PARAM;
goto error;
}
/*
* Get the parameter data...
*/
@@ -1861,6 +1872,13 @@ _ppdOpen(
}
else if (!strcmp(keyword, "PaperDimension"))
{
if (!_cups_strcasecmp(name, "custom") || !_cups_strncasecmp(name, "custom.", 7))
{
pg->ppd_status = PPD_ILLEGAL_OPTION_KEYWORD;
goto error;
}
if ((size = ppdPageSize(ppd, name)) == NULL)
size = ppd_add_size(ppd, name);
@@ -1883,6 +1901,13 @@ _ppdOpen(
}
else if (!strcmp(keyword, "ImageableArea"))
{
if (!_cups_strcasecmp(name, "custom") || !_cups_strncasecmp(name, "custom.", 7))
{
pg->ppd_status = PPD_ILLEGAL_OPTION_KEYWORD;
goto error;
}
if ((size = ppdPageSize(ppd, name)) == NULL)
size = ppd_add_size(ppd, name);
@@ -1912,6 +1937,13 @@ _ppdOpen(
{
DEBUG_printf(("2_ppdOpen: group=%p, subgroup=%p", group, subgroup));
if (!_cups_strcasecmp(name, "custom") || !_cups_strncasecmp(name, "custom.", 7))
{
pg->ppd_status = PPD_ILLEGAL_OPTION_KEYWORD;
goto error;
}
if (!strcmp(keyword, "PageSize"))
{
/*
@@ -2636,6 +2668,7 @@ ppd_get_cparam(ppd_coption_t *opt, /* I - PPD file */
if ((cparam = calloc(1, sizeof(ppd_cparam_t))) == NULL)
return (NULL);
cparam->type = PPD_CUSTOM_UNKNOWN;
strlcpy(cparam->name, param, sizeof(cparam->name));
strlcpy(cparam->text, text[0] ? text : param, sizeof(cparam->text));
+1
Ver Arquivo
@@ -226,6 +226,7 @@ typedef struct ppd_profile_s /**** sRGB Color Profiles @deprecated@ ****/
/**** New in CUPS 1.2/macOS 10.5 ****/
typedef enum ppd_cptype_e /**** Custom Parameter Type @deprecated@ ****/
{
PPD_CUSTOM_UNKNOWN = -1, /* Unknown type (error) */
PPD_CUSTOM_CURVE, /* Curve value for f(x) = x^value */
PPD_CUSTOM_INT, /* Integer number value */
PPD_CUSTOM_INVCURVE, /* Curve value for f(x) = x^(1/value) */
+19 -1
Ver Arquivo
@@ -1233,6 +1233,9 @@ asn1_get_integer(
int value; /* Integer value */
if (*buffer >= bufend)
return (0);
if (length > sizeof(int))
{
(*buffer) += length;
@@ -1259,6 +1262,9 @@ asn1_get_length(unsigned char **buffer, /* IO - Pointer in buffer */
unsigned length; /* Length */
if (*buffer >= bufend)
return (0);
length = **buffer;
(*buffer) ++;
@@ -1301,6 +1307,9 @@ asn1_get_oid(
int number; /* OID number */
if (*buffer >= bufend)
return (0);
valend = *buffer + length;
oidptr = oid;
oidend = oid + oidsize - 1;
@@ -1349,9 +1358,12 @@ asn1_get_packed(
int value; /* Value */
if (*buffer >= bufend)
return (0);
value = 0;
while ((**buffer & 128) && *buffer < bufend)
while (*buffer < bufend && (**buffer & 128))
{
value = (value << 7) | (**buffer & 127);
(*buffer) ++;
@@ -1379,6 +1391,9 @@ asn1_get_string(
char *string, /* I - String buffer */
size_t strsize) /* I - String buffer size */
{
if (*buffer >= bufend)
return (NULL);
if (length > (unsigned)(bufend - *buffer))
length = (unsigned)(bufend - *buffer);
@@ -1421,6 +1436,9 @@ asn1_get_type(unsigned char **buffer, /* IO - Pointer in buffer */
int type; /* Type */
if (*buffer >= bufend)
return (0);
type = **buffer;
(*buffer) ++;
+174 -17
Ver Arquivo
@@ -1,10 +1,11 @@
/*
* IPP test program for CUPS.
*
* Copyright © 2007-2018 by Apple Inc.
* Copyright © 2007-2019 by Apple Inc.
* Copyright © 1997-2005 by Easy Software Products.
*
* Licensed under Apache License v2.0. See the file "LICENSE" for more information.
* Licensed under Apache License v2.0. See the file "LICENSE" for more
* information.
*/
/*
@@ -44,7 +45,7 @@ static ipp_uchar_t collection[] = /* Collection buffer */
0x01, 0x01, /* IPP version */
0x00, 0x02, /* Print-Job operation */
0x00, 0x00, 0x00, 0x01,
/* Request ID */
/* Request ID */
IPP_TAG_OPERATION,
@@ -74,7 +75,7 @@ static ipp_uchar_t collection[] = /* Collection buffer */
IPP_TAG_JOB, /* job group tag */
IPP_TAG_BEGIN_COLLECTION,
/* begCollection tag */
/* begCollection tag */
0x00, 0x09, /* Name length + name */
'm', 'e', 'd', 'i', 'a', '-', 'c', 'o', 'l',
0x00, 0x00, /* No value */
@@ -83,11 +84,11 @@ static ipp_uchar_t collection[] = /* Collection buffer */
0x00, 0x0a, /* Value length + value */
'm', 'e', 'd', 'i', 'a', '-', 's', 'i', 'z', 'e',
IPP_TAG_BEGIN_COLLECTION,
/* begCollection tag */
/* begCollection tag */
0x00, 0x00, /* Name length + name */
0x00, 0x00, /* No value */
IPP_TAG_MEMBERNAME,
/* memberAttrName tag */
/* memberAttrName tag */
0x00, 0x00, /* No name */
0x00, 0x0b, /* Value length + value */
'x', '-', 'd', 'i', 'm', 'e', 'n', 's', 'i', 'o', 'n',
@@ -96,7 +97,7 @@ static ipp_uchar_t collection[] = /* Collection buffer */
0x00, 0x04, /* Value length + value */
0x00, 0x00, 0x54, 0x56,
IPP_TAG_MEMBERNAME,
/* memberAttrName tag */
/* memberAttrName tag */
0x00, 0x00, /* No name */
0x00, 0x0b, /* Value length + value */
'y', '-', 'd', 'i', 'm', 'e', 'n', 's', 'i', 'o', 'n',
@@ -105,7 +106,7 @@ static ipp_uchar_t collection[] = /* Collection buffer */
0x00, 0x04, /* Value length + value */
0x00, 0x00, 0x6d, 0x24,
IPP_TAG_END_COLLECTION,
/* endCollection tag */
/* endCollection tag */
0x00, 0x00, /* No name */
0x00, 0x00, /* No value */
IPP_TAG_MEMBERNAME, /* memberAttrName tag */
@@ -126,12 +127,12 @@ static ipp_uchar_t collection[] = /* Collection buffer */
0x00, 0x05, /* Value length + value */
'p', 'l', 'a', 'i', 'n',
IPP_TAG_END_COLLECTION,
/* endCollection tag */
/* endCollection tag */
0x00, 0x00, /* No name */
0x00, 0x00, /* No value */
IPP_TAG_BEGIN_COLLECTION,
/* begCollection tag */
/* begCollection tag */
0x00, 0x00, /* No name */
0x00, 0x00, /* No value */
IPP_TAG_MEMBERNAME, /* memberAttrName tag */
@@ -139,11 +140,11 @@ static ipp_uchar_t collection[] = /* Collection buffer */
0x00, 0x0a, /* Value length + value */
'm', 'e', 'd', 'i', 'a', '-', 's', 'i', 'z', 'e',
IPP_TAG_BEGIN_COLLECTION,
/* begCollection tag */
/* begCollection tag */
0x00, 0x00, /* Name length + name */
0x00, 0x00, /* No value */
IPP_TAG_MEMBERNAME,
/* memberAttrName tag */
/* memberAttrName tag */
0x00, 0x00, /* No name */
0x00, 0x0b, /* Value length + value */
'x', '-', 'd', 'i', 'm', 'e', 'n', 's', 'i', 'o', 'n',
@@ -152,7 +153,7 @@ static ipp_uchar_t collection[] = /* Collection buffer */
0x00, 0x04, /* Value length + value */
0x00, 0x00, 0x52, 0x08,
IPP_TAG_MEMBERNAME,
/* memberAttrName tag */
/* memberAttrName tag */
0x00, 0x00, /* No name */
0x00, 0x0b, /* Value length + value */
'y', '-', 'd', 'i', 'm', 'e', 'n', 's', 'i', 'o', 'n',
@@ -161,7 +162,7 @@ static ipp_uchar_t collection[] = /* Collection buffer */
0x00, 0x04, /* Value length + value */
0x00, 0x00, 0x74, 0x04,
IPP_TAG_END_COLLECTION,
/* endCollection tag */
/* endCollection tag */
0x00, 0x00, /* No name */
0x00, 0x00, /* No value */
IPP_TAG_MEMBERNAME, /* memberAttrName tag */
@@ -182,7 +183,72 @@ static ipp_uchar_t collection[] = /* Collection buffer */
0x00, 0x06, /* Value length + value */
'g', 'l', 'o', 's', 's', 'y',
IPP_TAG_END_COLLECTION,
/* endCollection tag */
/* endCollection tag */
0x00, 0x00, /* No name */
0x00, 0x00, /* No value */
IPP_TAG_END /* end tag */
};
static ipp_uchar_t bad_collection[] = /* Collection buffer (bad encoding) */
{
0x01, 0x01, /* IPP version */
0x00, 0x02, /* Print-Job operation */
0x00, 0x00, 0x00, 0x01,
/* Request ID */
IPP_TAG_OPERATION,
IPP_TAG_CHARSET,
0x00, 0x12, /* Name length + name */
'a','t','t','r','i','b','u','t','e','s','-',
'c','h','a','r','s','e','t',
0x00, 0x05, /* Value length + value */
'u','t','f','-','8',
IPP_TAG_LANGUAGE,
0x00, 0x1b, /* Name length + name */
'a','t','t','r','i','b','u','t','e','s','-',
'n','a','t','u','r','a','l','-','l','a','n',
'g','u','a','g','e',
0x00, 0x02, /* Value length + value */
'e','n',
IPP_TAG_URI,
0x00, 0x0b, /* Name length + name */
'p','r','i','n','t','e','r','-','u','r','i',
0x00, 0x1c, /* Value length + value */
'i','p','p',':','/','/','l','o','c','a','l',
'h','o','s','t','/','p','r','i','n','t','e',
'r','s','/','f','o','o',
IPP_TAG_JOB, /* job group tag */
IPP_TAG_BEGIN_COLLECTION,
/* begCollection tag */
0x00, 0x09, /* Name length + name */
'm', 'e', 'd', 'i', 'a', '-', 'c', 'o', 'l',
0x00, 0x00, /* No value */
IPP_TAG_BEGIN_COLLECTION,
/* begCollection tag */
0x00, 0x0a, /* Name length + name */
'm', 'e', 'd', 'i', 'a', '-', 's', 'i', 'z', 'e',
0x00, 0x00, /* No value */
IPP_TAG_INTEGER, /* integer tag */
0x00, 0x0b, /* Name length + name */
'x', '-', 'd', 'i', 'm', 'e', 'n', 's', 'i', 'o', 'n',
0x00, 0x04, /* Value length + value */
0x00, 0x00, 0x54, 0x56,
IPP_TAG_INTEGER, /* integer tag */
0x00, 0x0b, /* Name length + name */
'y', '-', 'd', 'i', 'm', 'e', 'n', 's', 'i', 'o', 'n',
0x00, 0x04, /* Value length + value */
0x00, 0x00, 0x6d, 0x24,
IPP_TAG_END_COLLECTION,
/* endCollection tag */
0x00, 0x00, /* No name */
0x00, 0x00, /* No value */
IPP_TAG_END_COLLECTION,
/* endCollection tag */
0x00, 0x00, /* No name */
0x00, 0x00, /* No value */
@@ -194,7 +260,7 @@ static ipp_uchar_t mixed[] = /* Mixed value buffer */
0x01, 0x01, /* IPP version */
0x00, 0x02, /* Print-Job operation */
0x00, 0x00, 0x00, 0x01,
/* Request ID */
/* Request ID */
IPP_TAG_OPERATION,
@@ -223,6 +289,7 @@ static ipp_uchar_t mixed[] = /* Mixed value buffer */
void hex_dump(const char *title, ipp_uchar_t *buffer, size_t bytes);
void print_attributes(ipp_t *ipp, int indent);
ssize_t read_cb(_ippdata_t *data, ipp_uchar_t *buffer, size_t bytes);
ssize_t read_hex(cups_file_t *fp, ipp_uchar_t *buffer, size_t bytes);
int token_cb(_ipp_file_t *f, _ipp_vars_t *v, void *user_data, const char *token);
ssize_t write_cb(_ippdata_t *data, ipp_uchar_t *buffer, size_t bytes);
@@ -584,12 +651,33 @@ main(int argc, /* I - Number of command-line arguments */
ippDelete(request);
/*
* Read the bad collection data and confirm we get an error...
*/
fputs("Read Bad Collection from Memory: ", stdout);
request = ippNew();
data.rpos = 0;
data.wused = sizeof(bad_collection);
data.wsize = sizeof(bad_collection);
data.wbuffer = bad_collection;
while ((state = ippReadIO(&data, (ipp_iocb_t)read_cb, 1, NULL, request)) != IPP_STATE_DATA)
if (state == IPP_STATE_ERROR)
break;
if (state != IPP_STATE_ERROR)
puts("FAIL (read successful)");
else
puts("PASS");
/*
* Read the mixed data and confirm we converted everything to rangeOfInteger
* values...
*/
printf("Read Mixed integer/rangeOfInteger from Memory: ");
fputs("Read Mixed integer/rangeOfInteger from Memory: ", stdout);
request = ippNew();
data.rpos = 0;
@@ -719,6 +807,33 @@ main(int argc, /* I - Number of command-line arguments */
request = _ippFileParse(&v, argv[i], NULL);
_ippVarsDeinit(&v);
}
else if (strlen(argv[i]) > 4 && !strcmp(argv[i] + strlen(argv[i]) - 4, ".hex"))
{
/*
* Read a hex-encoded IPP message...
*/
if ((fp = cupsFileOpen(argv[i], "r")) == NULL)
{
printf("Unable to open \"%s\" - %s\n", argv[i], strerror(errno));
status = 1;
continue;
}
request = ippNew();
while ((state = ippReadIO(fp, (ipp_iocb_t)read_hex, 1, NULL, request)) == IPP_STATE_ATTRIBUTE);
if (state != IPP_STATE_DATA)
{
printf("Error reading IPP message from \"%s\": %s\n", argv[i], cupsLastErrorString());
status = 1;
ippDelete(request);
request = NULL;
}
cupsFileClose(fp);
}
else
{
/*
@@ -886,6 +1001,48 @@ read_cb(_ippdata_t *data, /* I - Data */
}
/*
* 'read_hex()' - Read a hex dump of an IPP request.
*/
ssize_t /* O - Number of bytes read */
read_hex(cups_file_t *fp, /* I - File to read from */
ipp_uchar_t *buffer, /* I - Buffer to read */
size_t bytes) /* I - Number of bytes to read */
{
size_t total = 0; /* Total bytes read */
static char hex[256] = ""; /* Line from file */
static char *hexptr = NULL; /* Pointer in line */
while (total < bytes)
{
if (!hexptr || (isspace(hexptr[0] & 255) && isspace(hexptr[1] & 255)))
{
if (!cupsFileGets(fp, hex, sizeof(hex)))
break;
hexptr = hex;
while (isxdigit(*hexptr & 255))
hexptr ++;
while (isspace(*hexptr & 255))
hexptr ++;
if (!isxdigit(*hexptr & 255))
{
hexptr = NULL;
continue;
}
}
*buffer++ = (ipp_uchar_t)strtol(hexptr, &hexptr, 16);
total ++;
}
return (total == 0 ? -1 : (ssize_t)total);
}
/*
* 'token_cb()' - Token callback for ASCII IPP data file parser.
*/
+4
Ver Arquivo
@@ -1245,6 +1245,10 @@ main(int argc, /* I - Number of command-line arguments */
{
switch (cparam->type)
{
case PPD_CUSTOM_UNKNOWN :
printf(" %s(%s): PPD_CUSTOM_UNKNOWN (error)\n", cparam->name, cparam->text);
break;
case PPD_CUSTOM_CURVE :
printf(" %s(%s): PPD_CUSTOM_CURVE (%g to %g)\n",
cparam->name, cparam->text,
+1 -26
Ver Arquivo
@@ -15,32 +15,7 @@
*/
#include <spawn.h>
extern char **environ;
#ifndef _SECURITY_VERSION_GREATER_THAN_57610_
typedef CF_OPTIONS(uint32_t, SecKeyUsage) {
kSecKeyUsageAll = 0x7FFFFFFF
};
#endif /* !_SECURITY_VERSION_GREATER_THAN_57610_ */
extern const void * kSecCSRChallengePassword;
extern const void * kSecSubjectAltName;
extern const void * kSecCertificateKeyUsage;
extern const void * kSecCSRBasicContraintsPathLen;
extern const void * kSecCertificateExtensions;
extern const void * kSecCertificateExtensionsEncoded;
extern const void * kSecOidCommonName;
extern const void * kSecOidCountryName;
extern const void * kSecOidStateProvinceName;
extern const void * kSecOidLocalityName;
extern const void * kSecOidOrganization;
extern const void * kSecOidOrganizationalUnit;
extern bool SecCertificateIsValid(SecCertificateRef certificate, CFAbsoluteTime verifyTime);
extern CFAbsoluteTime SecCertificateNotValidAfter(SecCertificateRef certificate);
extern SecCertificateRef SecGenerateSelfSignedCertificate(CFArrayRef subject, CFDictionaryRef parameters, SecKeyRef publicKey, SecKeyRef privateKey);
extern SecIdentityRef SecIdentityCreate(CFAllocatorRef allocator, SecCertificateRef certificate, SecKeyRef privateKey);
#include "tls-darwin.h"
/*
* Constants, very secure stuff...
+35
Ver Arquivo
@@ -0,0 +1,35 @@
/*
* TLS support header for CUPS on macOS.
*
* Copyright © 2007-2019 by Apple Inc.
* Copyright © 1997-2007 by Easy Software Products, all rights reserved.
*
* Licensed under Apache License v2.0. See the file "LICENSE" for more
* information.
*/
/**** This file is included from tls-darwin.c ****/
extern char **environ;
#ifndef _SECURITY_VERSION_GREATER_THAN_57610_
typedef CF_OPTIONS(uint32_t, SecKeyUsage) {
kSecKeyUsageAll = 0x7FFFFFFF
};
#endif /* !_SECURITY_VERSION_GREATER_THAN_57610_ */
extern const void * kSecCSRChallengePassword;
extern const void * kSecSubjectAltName;
extern const void * kSecCertificateKeyUsage;
extern const void * kSecCSRBasicContraintsPathLen;
extern const void * kSecCertificateExtensions;
extern const void * kSecCertificateExtensionsEncoded;
extern const void * kSecOidCommonName;
extern const void * kSecOidCountryName;
extern const void * kSecOidStateProvinceName;
extern const void * kSecOidLocalityName;
extern const void * kSecOidOrganization;
extern const void * kSecOidOrganizationalUnit;
extern bool SecCertificateIsValid(SecCertificateRef certificate, CFAbsoluteTime verifyTime);
extern CFAbsoluteTime SecCertificateNotValidAfter(SecCertificateRef certificate);
extern SecCertificateRef SecGenerateSelfSignedCertificate(CFArrayRef subject, CFDictionaryRef parameters, SecKeyRef publicKey, SecKeyRef privateKey);
extern SecIdentityRef SecIdentityCreate(CFAllocatorRef allocator, SecCertificateRef certificate, SecKeyRef privateKey);
+3 -3
Ver Arquivo
@@ -116,9 +116,9 @@
# define _CUPS_API_1_7 API_AVAILABLE(macos(10.9), ios(11.0)) _CUPS_PUBLIC
# define _CUPS_API_2_0 API_AVAILABLE(macos(10.10), ios(11.0)) _CUPS_PUBLIC
# define _CUPS_API_2_2 API_AVAILABLE(macos(10.12), ios(11.0)) _CUPS_PUBLIC
# define _CUPS_API_2_2_4 API_AVAILABLE(macos(10.13), ios(11.0)) _CUPS_PUBLIC
# define _CUPS_API_2_2_7 API_AVAILABLE(macos(10.14), ios(11.0)) _CUPS_PUBLIC
# define _CUPS_API_2_3 _CUPS_PUBLIC
# define _CUPS_API_2_2_4 API_AVAILABLE(macos(10.13), ios(12.0)) _CUPS_PUBLIC
# define _CUPS_API_2_2_7 API_AVAILABLE(macos(10.14), ios(13.0)) _CUPS_PUBLIC
# define _CUPS_API_2_3 API_AVAILABLE(macos(10.14), ios(13.0)) _CUPS_PUBLIC
# else
# define _CUPS_API_1_1_19 _CUPS_PUBLIC
# define _CUPS_API_1_1_20 _CUPS_PUBLIC
+3 -1
Ver Arquivo
@@ -5,7 +5,7 @@
<title>Administration APIs</title>
<meta name="keywords" content="Programming">
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<meta name="creator" content="codedoc v3.1">
<meta name="creator" content="codedoc v3.2">
<meta name="author" content="Unknown">
<meta name="copyright" content="Unknown">
<meta name="version" content="0.0">
@@ -450,6 +450,7 @@ h3.title {
--></style>
</head>
<body>
<div class="header">
<!--
Administrative API header for CUPS.
@@ -481,6 +482,7 @@ h3.title {
</tr>
</tbody>
</table></div>
</div>
<div class="contents">
<h2 class="title">Contents</h2>
<ul class="contents">
+3 -1
Ver Arquivo
@@ -5,7 +5,7 @@
<title>Filter and Backend Programming</title>
<meta name="keywords" content="Programming">
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<meta name="creator" content="codedoc v3.1">
<meta name="creator" content="codedoc v3.2">
<meta name="author" content="Unknown">
<meta name="copyright" content="Unknown">
<meta name="version" content="0.0">
@@ -450,6 +450,7 @@ h3.title {
--></style>
</head>
<body>
<div class="header">
<!--
Filter and backend programming header for CUPS.
@@ -487,6 +488,7 @@ h3.title {
</tr>
</tbody>
</table></div>
</div>
<div class="contents">
<h2 class="title">Contents</h2>
<ul class="contents">
+4 -1
Ver Arquivo
@@ -5,7 +5,7 @@
<title>PPD API (DEPRECATED)</title>
<meta name="keywords" content="Programming">
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<meta name="creator" content="codedoc v3.1">
<meta name="creator" content="codedoc v3.2">
<meta name="author" content="Unknown">
<meta name="copyright" content="Unknown">
<meta name="version" content="0.0">
@@ -450,6 +450,7 @@ h3.title {
--></style>
</head>
<body>
<div class="header">
<!--
PPD API header for CUPS.
@@ -486,6 +487,7 @@ h3.title {
</tr>
</tbody>
</table></div>
</div>
<div class="contents">
<h2 class="title">Contents</h2>
<ul class="contents">
@@ -2125,6 +2127,7 @@ typedef enum <a href="#ppd_ui_e">ppd_ui_e</a> ppd_ui_t;
<tr><th>PPD_CUSTOM_POINTS </th> <td class="description">Measurement value in points</td></tr>
<tr><th>PPD_CUSTOM_REAL </th> <td class="description">Real number value</td></tr>
<tr><th>PPD_CUSTOM_STRING </th> <td class="description">String of characters</td></tr>
<tr><th>PPD_CUSTOM_UNKNOWN </th> <td class="description">Unknown type (error)</td></tr>
</tbody></table>
<h3 class="enumeration"><a id="ppd_cs_e"><span class="info">&#160;DEPRECATED&#160;</span>ppd_cs_e</a></h3>
<p class="description">Colorspaces </p>
+3 -1
Ver Arquivo
@@ -5,7 +5,7 @@
<title>Raster API</title>
<meta name="keywords" content="Programming">
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<meta name="creator" content="codedoc v3.1">
<meta name="creator" content="codedoc v3.2">
<meta name="author" content="Unknown">
<meta name="copyright" content="Unknown">
<meta name="version" content="0.0">
@@ -450,6 +450,7 @@ h3.title {
--></style>
</head>
<body>
<div class="header">
<!--
Raster API documentation for CUPS.
@@ -481,6 +482,7 @@ h3.title {
</tr>
</tbody>
</table></div>
</div>
<div class="contents">
<h2 class="title">Contents</h2>
<ul class="contents">
Arquivo binário não exibido.
+223 -188
Ver Arquivo
@@ -5,91 +5,62 @@
<title>CUPS Programming Manual</title>
<meta name="keywords" content="Programming">
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<meta name="creator" content="codedoc v3.1">
<meta name="creator" content="codedoc v3.2">
<meta name="author" content="Michael R Sweet">
<meta name="copyright" content="Copyright &#xa9; 2007-2019 by Apple Inc. All Rights Reserved.">
<meta name="version" content="2.3.0">
<style type="text/css"><!--
body, p, h1, h2, h3, h4 {
body, p, h1, h2, h3, h4, h5, h6 {
font-family: sans-serif;
line-height: 1.4;
}
div.body h1 {
font-size: 250%;
h1, h2, h3, h4, h5, h6 {
font-weight: bold;
page-break-inside: avoid;
}
h1 {
font-size: 250%;
margin: 0;
}
div.body h2 {
h2 {
font-size: 250%;
margin-top: 1.5em;
}
div.body h3 {
h3 {
font-size: 200%;
margin-bottom: 0.5em;
margin-top: 1.5em;
}
h4 {
font-size: 150%;
margin-bottom: 0.5em;
margin-top: 1.5em;
}
div.body h4 {
h5 {
font-size: 125%;
margin-bottom: 0.5em;
margin-top: 1.5em;
}
h6 {
font-size: 110%;
margin-bottom: 0.5em;
margin-top: 1.5em;
}
div.body h5 {
font-size: 100%;
margin-bottom: 0.5em;
margin-top: 1.5em;
div.header h1, div.header p {
text-align: center;
}
div.contents {
background: #e8e8e8;
border: solid thin black;
padding: 10px;
div.contents, div.body, div.footer {
page-break-before: always;
}
div.contents h1 {
font-size: 110%;
}
div.contents h2 {
font-size: 100%;
}
div.contents ul.contents {
font-size: 80%;
}
.class {
.class, .enumeration, .function, .struct, .typedef, .union {
border-bottom: solid 2px gray;
}
.constants {
}
.description {
margin-top: 0.5em;
}
.discussion {
}
.enumeration {
border-bottom: solid 2px gray;
}
.function {
border-bottom: solid 2px gray;
margin-bottom: 0;
}
.members {
}
.method {
}
.parameters {
}
.returnvalue {
}
.struct {
border-bottom: solid 2px gray;
}
.typedef {
border-bottom: solid 2px gray;
}
.union {
border-bottom: solid 2px gray;
}
.variable {
}
h1, h2, h3, h4, h5, h6 {
page-break-inside: avoid;
}
blockquote {
border: solid thin gray;
box-shadow: 3px 3px 5px rgba(0,0,0,0.5);
@@ -97,19 +68,15 @@ blockquote {
page-break-inside: avoid;
}
p code, li code, p.code, pre, ul.code li {
background: rgba(127,127,127,0.1);
border: thin dotted gray;
font-family: monospace;
font-size: 90%;
hyphens: manual;
-webkit-hyphens: manual;
page-break-inside: avoid;
}
p.code, pre, ul.code li {
background: rgba(127,127,127,0.1);
border: thin dotted gray;
padding: 10px;
}
p code, li code {
padding: 2px 5px;
page-break-inside: avoid;
}
a:link, a:visited {
text-decoration: none;
@@ -123,7 +90,7 @@ span.info {
font-weight: bold;
white-space: nowrap;
}
h3 span.info, h4 span.info {
h1 span.info, h2 span.info, h3 span.info, h4 span.info {
border-top-left-radius: 10px;
border-top-right-radius: 10px;
float: right;
@@ -143,13 +110,38 @@ ul.contents > li {
ul.contents li ul.code, ul.contents li ul.subcontents {
padding-left: 2em;
}
table {
border-collapse: collapse;
border-spacing: 0;
}
td {
border: solid 1px #666;
padding: 5px 10px;
vertical-align: top;
}
td.left {
text-align: left;
}
td.center {
text-align: center;
}
td.right {
text-align: right;
}
th {
border-bottom: solid 2px #000;
padding: 1px 5px;
text-align: center;
vertical-align: bottom;
}
tr:nth-child(even) {
background: rgba(127,127,127,0.1);n}
table.list {
border-collapse: collapse;
width: 100%;
}
table.list tr:nth-child(even) {
background: rgba(127,127,127,0.1);]n}
table.list th {
border-bottom: none;
border-right: 2px solid gray;
font-family: monospace;
padding: 5px 10px 5px 2px;
@@ -157,24 +149,22 @@ table.list th {
vertical-align: top;
}
table.list td {
border: none;
padding: 5px 2px 5px 10px;
text-align: left;
vertical-align: top;
}
h1.title {
}
h2.title {
border-bottom: solid 2px black;
}
h3.title {
h2.title, h3.title {
border-bottom: solid 2px black;
}
--></style>
</head>
<body>
<h1 class="title">CUPS Programming Manual</h1>
<p>Michael R Sweet</p>
<p>Copyright &#xa9; 2007-2019 by Apple Inc. All Rights Reserved.</p>
<div class="header">
<h1 class="title">CUPS Programming Manual</h1>
<p>Michael R Sweet</p>
<p>Copyright &#xa9; 2007-2019 by Apple Inc. All Rights Reserved.</p>
</div>
<div class="contents">
<h2 class="title">Contents</h2>
<ul class="contents">
@@ -197,7 +187,6 @@ h3.title {
<li><a href="#authentication">Authentication</a></li>
</ul></li>
<li><a href="#FUNCTIONS">Functions</a><ul class="subcontents">
<li><a href="#CF_OPTIONS">CF_OPTIONS</a></li>
<li><a href="#cupsAddDest">cupsAddDest</a></li>
<li><a href="#cupsAddDestMediaOptions">cupsAddDestMediaOptions</a></li>
<li><a href="#cupsAddIntegerOption">cupsAddIntegerOption</a></li>
@@ -487,9 +476,6 @@ h3.title {
<li><a href="#cups_option_s">cups_option_s</a></li>
<li><a href="#cups_size_s">cups_size_s</a></li>
</ul></li>
<li><a href="#VARIABLES">Variables</a><ul class="subcontents">
<li><a href="#kSecOidOrganizationalUnit">kSecOidOrganizationalUnit</a></li>
</ul></li>
<li><a href="#ENUMERATIONS">Enumerations</a><ul class="subcontents">
<li><a href="#cups_ptype_e">cups_ptype_e</a></li>
<li><a href="#http_encoding_e">http_encoding_e</a></li>
@@ -520,16 +506,20 @@ h3.title {
<blockquote>
<p>Please <a href="https://github.com/apple/cups/issues">file issues on Github</a> to provide feedback on this document.</p>
</blockquote>
<h2><a id="introduction">Introduction</a></h2>
<h2 class="title" id="introduction">Introduction</h2>
<p>CUPS provides the &quot;cups&quot; library to talk to the different parts of CUPS and with Internet Printing Protocol (IPP) printers. The &quot;cups&quot; library functions are accessed by including the <code>&lt;cups/cups.h&gt;</code> header.</p>
<p>CUPS is based on the Internet Printing Protocol (&quot;IPP&quot;), which allows clients (applications) to communicate with a server (the scheduler, printers, etc.) to get a list of destinations, send print jobs, and so forth. You identify which server you want to communicate with using a pointer to the opaque structure <code>http_t</code>. The <code>CUPS_HTTP_DEFAULT</code> constant can be used when you want to talk to the CUPS scheduler.</p>
<h3><a id="guidelines">Guidelines</a></h3>
<h3 class="title" id="guidelines">Guidelines</h3>
<p>When writing software (other than printer drivers) that uses the &quot;cups&quot; library:</p>
<ul>
<li>Do not use undocumented or deprecated APIs,</li>
<li>Do not rely on pre-configured printers,</li>
<li>Do not assume that printers support specific features or formats, and</li>
<li>Do not rely on implementation details (PPDs, etc.)</li>
<li> <p>Do not use undocumented or deprecated APIs,</p>
</li>
<li> <p>Do not rely on pre-configured printers,</p>
</li>
<li> <p>Do not assume that printers support specific features or formats, and</p>
</li>
<li> <p>Do not rely on implementation details (PPDs, etc.)</p>
</li>
</ul>
<p>CUPS is designed to insulate users and developers from the implementation details of printers and file formats. The goal is to allow an application to supply a print file in a standard format with the user intent (&quot;print four copies, two-sided on A4 media, and staple each copy&quot;) and have the printing system manage the printer communication and format conversion needed.</p>
<p>Similarly, printer and job management applications can use standard query operations to obtain the status information in a common, generic form and use standard management operations to control the state of those printers and jobs.</p>
@@ -537,9 +527,9 @@ h3.title {
<p><strong>Note:</strong></p>
<p>CUPS printer drivers necessarily depend on specific file formats and certain implementation details of the CUPS software. Please consult the Postscript and raster printer driver developer documentation on <a href="https://www.cups.org/documentation.html">CUPS.org</a> for more information.</p>
</blockquote>
<h3><a id="terms-used-in-this-document">Terms Used in This Document</a></h3>
<p>A <em>Destination</em> is a printer or print queue that accepts print jobs. A <em>Print</em> <em>Job</em> is a collection of one or more documents that are processed by a destination using options supplied when creating the job. A <em>Document</em> is a file (JPEG image, PDF file, etc.) suitable for printing. An <em>Option</em> controls some aspect of printing, such as the media used. <em>Media</em> is the sheets or roll that is printed on. An <em>Attribute</em> is an option encoded for an Internet Printing Protocol (IPP) request.</p>
<h3><a id="compiling-programs-that-use-the-cups-api">Compiling Programs That Use the CUPS API</a></h3>
<h3 class="title" id="terms-used-in-this-document">Terms Used in This Document</h3>
<p>A <em>Destination</em> is a printer or print queue that accepts print jobs. A <em>Print Job</em> is a collection of one or more documents that are processed by a destination using options supplied when creating the job. A <em>Document</em> is a file (JPEG image, PDF file, etc.) suitable for printing. An <em>Option</em> controls some aspect of printing, such as the media used. <em>Media</em> is the sheets or roll that is printed on. An <em>Attribute</em> is an option encoded for an Internet Printing Protocol (IPP) request.</p>
<h3 class="title" id="compiling-programs-that-use-the-cups-api">Compiling Programs That Use the CUPS API</h3>
<p>The CUPS libraries can be used from any C, C++, or Objective C program. The method of compiling against the libraries varies depending on the operating system and installation of CUPS. The following sections show how to compile a simple program (shown below) in two common environments.</p>
<p>The following simple program lists the available destinations:</p>
<pre><code>#include &lt;stdio.h&gt;
@@ -562,20 +552,20 @@ int main(void)
return (0);
}
</code></pre>
<h4><a id="compiling-with-xcode">Compiling with Xcode</a></h4>
<p>In Xcode, choose <em>New</em> <em>Project...</em> from the <em>File</em> menu (or press SHIFT+CMD+N), then select the <em>Command</em> <em>Line</em> <em>Tool</em> under the macOS Application project type. Click <em>Next</em> and enter a name for the project, for example &quot;firstcups&quot;. Click <em>Next</em> and choose a project directory. The click <em>Next</em> to create the project.</p>
<p>In the project window, click on the <em>Build</em> <em>Phases</em> group and expand the <em>Link</em> <em>Binary</em> <em>with</em> <em>Libraries</em> section. Click <em>+</em>, type &quot;libcups&quot; to show the library, and then double-click on <code>libcups.tbd</code>.</p>
<h4 id="compiling-with-xcode">Compiling with Xcode</h4>
<p>In Xcode, choose <em>New Project...</em> from the <em>File</em> menu (or press SHIFT+CMD+N), then select the <em>Command Line Tool</em> under the macOS Application project type. Click <em>Next</em> and enter a name for the project, for example &quot;firstcups&quot;. Click <em>Next</em> and choose a project directory. The click <em>Next</em> to create the project.</p>
<p>In the project window, click on the <em>Build Phases</em> group and expand the <em>Link Binary with Libraries</em> section. Click <em>+</em>, type &quot;libcups&quot; to show the library, and then double-click on <code>libcups.tbd</code>.</p>
<p>Finally, click on the <code>main.c</code> file in the sidebar and copy the example program to the file. Build and run (CMD+R) to see the list of destinations.</p>
<h4><a id="compiling-with-gcc">Compiling with GCC</a></h4>
<h4 id="compiling-with-gcc">Compiling with GCC</h4>
<p>From the command-line, create a file called <code>sample.c</code> using your favorite editor, copy the example to this file, and save. Then run the following command to compile it with GCC and run it:</p>
<pre><code>gcc -o simple `cups-config --cflags` simple.c `cups-config --libs`
./simple
</code></pre>
<p>The <code>cups-config</code> command provides the compiler flags (<code>cups-config --cflags</code>) and libraries (<code>cups-config --libs</code>) needed for the local system.</p>
<h2><a id="working-with-destinations">Working with Destinations</a></h2>
<h2 class="title" id="working-with-destinations">Working with Destinations</h2>
<p>Destinations, which in CUPS represent individual printers or classes (collections or pools) of printers, are represented by the <code>cups_dest_t</code> structure which includes the name (<code>name</code>), instance (<code>instance</code>, saved options/settings), whether the destination is the default for the user (<code>is_default</code>), and the options and basic information associated with that destination (<code>num_options</code> and <code>options</code>).</p>
<p>Historically destinations have been manually maintained by the administrator of a system or network, but CUPS also supports dynamic discovery of destinations on the current network.</p>
<h3><a id="finding-available-destinations">Finding Available Destinations</a></h3>
<h3 class="title" id="finding-available-destinations">Finding Available Destinations</h3>
<p>The <code>cupsEnumDests</code> function finds all of the available destinations:</p>
<pre><code> int
cupsEnumDests(unsigned flags, int msec, int *cancel,
@@ -587,24 +577,42 @@ int main(void)
<p>The <code>cancel</code> argument points to an integer variable that, when set to a non-zero value, will cause enumeration to stop as soon as possible. It can be <code>NULL</code> if not needed.</p>
<p>The <code>type</code> and <code>mask</code> arguments are bitfields that allow the caller to filter the destinations based on categories and/or capabilities. The destination's &quot;printer-type&quot; value is masked by the <code>mask</code> value and compared to the <code>type</code> value when filtering. For example, to only enumerate destinations that are hosted on the local system, pass <code>CUPS_PRINTER_LOCAL</code> for the <code>type</code> argument and <code>CUPS_PRINTER_DISCOVERED</code> for the <code>mask</code> argument. The following constants can be used for filtering:</p>
<ul>
<li><code>CUPS_PRINTER_CLASS</code>: A collection of destinations.</li>
<li><code>CUPS_PRINTER_FAX</code>: A facsimile device.</li>
<li><code>CUPS_PRINTER_LOCAL</code>: A local printer or class. This constant has the value 0 (no bits set) and is only used for the <code>type</code> argument and is paired with the <code>CUPS_PRINTER_REMOTE</code> or <code>CUPS_PRINTER_DISCOVERED</code> constant passed in the <code>mask</code> argument.</li>
<li><code>CUPS_PRINTER_REMOTE</code>: A remote (shared) printer or class.</li>
<li><code>CUPS_PRINTER_DISCOVERED</code>: An available network printer or class.</li>
<li><code>CUPS_PRINTER_BW</code>: Can do B&amp;W printing.</li>
<li><code>CUPS_PRINTER_COLOR</code>: Can do color printing.</li>
<li><code>CUPS_PRINTER_DUPLEX</code>: Can do two-sided printing.</li>
<li><code>CUPS_PRINTER_STAPLE</code>: Can staple output.</li>
<li><code>CUPS_PRINTER_COLLATE</code>: Can quickly collate copies.</li>
<li><code>CUPS_PRINTER_PUNCH</code>: Can punch output.</li>
<li><code>CUPS_PRINTER_COVER</code>: Can cover output.</li>
<li><code>CUPS_PRINTER_BIND</code>: Can bind output.</li>
<li><code>CUPS_PRINTER_SORT</code>: Can sort output (mailboxes, etc.)</li>
<li><code>CUPS_PRINTER_SMALL</code>: Can print on Letter/Legal/A4-size media.</li>
<li><code>CUPS_PRINTER_MEDIUM</code>: Can print on Tabloid/B/C/A3/A2-size media.</li>
<li><code>CUPS_PRINTER_LARGE</code>: Can print on D/E/A1/A0-size media.</li>
<li><code>CUPS_PRINTER_VARIABLE</code>: Can print on rolls and custom-size media.</li>
<li> <p><code>CUPS_PRINTER_CLASS</code>: A collection of destinations.</p>
</li>
<li> <p><code>CUPS_PRINTER_FAX</code>: A facsimile device.</p>
</li>
<li> <p><code>CUPS_PRINTER_LOCAL</code>: A local printer or class. This constant has the value 0 (no bits set) and is only used for the <code>type</code> argument and is paired with the <code>CUPS_PRINTER_REMOTE</code> or <code>CUPS_PRINTER_DISCOVERED</code> constant passed in the <code>mask</code> argument.</p>
</li>
<li> <p><code>CUPS_PRINTER_REMOTE</code>: A remote (shared) printer or class.</p>
</li>
<li> <p><code>CUPS_PRINTER_DISCOVERED</code>: An available network printer or class.</p>
</li>
<li> <p><code>CUPS_PRINTER_BW</code>: Can do B&amp;W printing.</p>
</li>
<li> <p><code>CUPS_PRINTER_COLOR</code>: Can do color printing.</p>
</li>
<li> <p><code>CUPS_PRINTER_DUPLEX</code>: Can do two-sided printing.</p>
</li>
<li> <p><code>CUPS_PRINTER_STAPLE</code>: Can staple output.</p>
</li>
<li> <p><code>CUPS_PRINTER_COLLATE</code>: Can quickly collate copies.</p>
</li>
<li> <p><code>CUPS_PRINTER_PUNCH</code>: Can punch output.</p>
</li>
<li> <p><code>CUPS_PRINTER_COVER</code>: Can cover output.</p>
</li>
<li> <p><code>CUPS_PRINTER_BIND</code>: Can bind output.</p>
</li>
<li> <p><code>CUPS_PRINTER_SORT</code>: Can sort output (mailboxes, etc.)</p>
</li>
<li> <p><code>CUPS_PRINTER_SMALL</code>: Can print on Letter/Legal/A4-size media.</p>
</li>
<li> <p><code>CUPS_PRINTER_MEDIUM</code>: Can print on Tabloid/B/C/A3/A2-size media.</p>
</li>
<li> <p><code>CUPS_PRINTER_LARGE</code>: Can print on D/E/A1/A0-size media.</p>
</li>
<li> <p><code>CUPS_PRINTER_VARIABLE</code>: Can print on rolls and custom-size media.</p>
</li>
</ul>
<p>The <code>cb</code> argument specifies a function to call for every destination that is found:</p>
<pre><code>typedef int (*cups_dest_cb_t)(void *user_data,
@@ -613,9 +621,12 @@ int main(void)
</code></pre>
<p>The callback function receives a copy of the <code>user_data</code> argument along with a bitfield (<code>flags</code>) and the destination that was found. The <code>flags</code> argument can have any of the following constant (bit) values set:</p>
<ul>
<li><code>CUPS_DEST_FLAGS_MORE</code>: There are more destinations coming.</li>
<li><code>CUPS_DEST_FLAGS_REMOVED</code>: The destination has gone away and should be removed from the list of destinations a user can select.</li>
<li><code>CUPS_DEST_FLAGS_ERROR</code>: An error occurred. The reason for the error can be found by calling the <code>cupsLastError</code> and/or <code>cupsLastErrorString</code> functions.</li>
<li> <p><code>CUPS_DEST_FLAGS_MORE</code>: There are more destinations coming.</p>
</li>
<li> <p><code>CUPS_DEST_FLAGS_REMOVED</code>: The destination has gone away and should be removed from the list of destinations a user can select.</p>
</li>
<li> <p><code>CUPS_DEST_FLAGS_ERROR</code>: An error occurred. The reason for the error can be found by calling the <code>cupsLastError</code> and/or <code>cupsLastErrorString</code> functions.</p>
</li>
</ul>
<p>The callback function returns 0 to stop enumeration or 1 to continue.</p>
<blockquote>
@@ -689,34 +700,45 @@ my_get_dests(cups_ptype_t type, cups_ptype_t mask,
return (user_data.num_dests);
}
</code></pre>
<h3><a id="basic-destination-information">Basic Destination Information</a></h3>
<h3 class="title" id="basic-destination-information">Basic Destination Information</h3>
<p>The <code>num_options</code> and <code>options</code> members of the <code>cups_dest_t</code> structure provide basic attributes about the destination in addition to the user default options and values for that destination. The following names are predefined for various destination attributes:</p>
<ul>
<li>&quot;auth-info-required&quot;: The type of authentication required for printing to this destination: &quot;none&quot;, &quot;username,password&quot;, &quot;domain,username,password&quot;, or &quot;negotiate&quot; (Kerberos).</li>
<li>&quot;printer-info&quot;: The human-readable description of the destination such as &quot;My Laser Printer&quot;.</li>
<li>&quot;printer-is-accepting-jobs&quot;: &quot;true&quot; if the destination is accepting new jobs, &quot;false&quot; otherwise.</li>
<li>&quot;printer-is-shared&quot;: &quot;true&quot; if the destination is being shared with other computers, &quot;false&quot; otherwise.</li>
<li>&quot;printer-location&quot;: The human-readable location of the destination such as &quot;Lab 4&quot;.</li>
<li>&quot;printer-make-and-model&quot;: The human-readable make and model of the destination such as &quot;ExampleCorp LaserPrinter 4000 Series&quot;.</li>
<li>&quot;printer-state&quot;: &quot;3&quot; if the destination is idle, &quot;4&quot; if the destination is printing a job, and &quot;5&quot; if the destination is stopped.</li>
<li>&quot;printer-state-change-time&quot;: The UNIX time when the destination entered the current state.</li>
<li>&quot;printer-state-reasons&quot;: Additional comma-delimited state keywords for the destination such as &quot;media-tray-empty-error&quot; and &quot;toner-low-warning&quot;.</li>
<li>&quot;printer-type&quot;: The <code>cups_ptype_t</code> value associated with the destination.</li>
<li>&quot;printer-uri-supported&quot;: The URI associated with the destination; if not set, this destination was discovered but is not yet setup as a local printer.</li>
<li> <p>&quot;auth-info-required&quot;: The type of authentication required for printing to this destination: &quot;none&quot;, &quot;username,password&quot;, &quot;domain,username,password&quot;, or &quot;negotiate&quot; (Kerberos).</p>
</li>
<li> <p>&quot;printer-info&quot;: The human-readable description of the destination such as &quot;My Laser Printer&quot;.</p>
</li>
<li> <p>&quot;printer-is-accepting-jobs&quot;: &quot;true&quot; if the destination is accepting new jobs, &quot;false&quot; otherwise.</p>
</li>
<li> <p>&quot;printer-is-shared&quot;: &quot;true&quot; if the destination is being shared with other computers, &quot;false&quot; otherwise.</p>
</li>
<li> <p>&quot;printer-location&quot;: The human-readable location of the destination such as &quot;Lab 4&quot;.</p>
</li>
<li> <p>&quot;printer-make-and-model&quot;: The human-readable make and model of the destination such as &quot;ExampleCorp LaserPrinter 4000 Series&quot;.</p>
</li>
<li> <p>&quot;printer-state&quot;: &quot;3&quot; if the destination is idle, &quot;4&quot; if the destination is printing a job, and &quot;5&quot; if the destination is stopped.</p>
</li>
<li> <p>&quot;printer-state-change-time&quot;: The UNIX time when the destination entered the current state.</p>
</li>
<li> <p>&quot;printer-state-reasons&quot;: Additional comma-delimited state keywords for the destination such as &quot;media-tray-empty-error&quot; and &quot;toner-low-warning&quot;.</p>
</li>
<li> <p>&quot;printer-type&quot;: The <code>cups_ptype_t</code> value associated with the destination.</p>
</li>
<li> <p>&quot;printer-uri-supported&quot;: The URI associated with the destination; if not set, this destination was discovered but is not yet setup as a local printer.</p>
</li>
</ul>
<p>Use the <code>cupsGetOption</code> function to retrieve the value. For example, the following code gets the make and model of a destination:</p>
<pre><code>const char *model = cupsGetOption(&quot;printer-make-and-model&quot;,
dest-&gt;num_options,
dest-&gt;options);
</code></pre>
<h3><a id="detailed-destination-information">Detailed Destination Information</a></h3>
<h3 class="title" id="detailed-destination-information">Detailed Destination Information</h3>
<p>Once a destination has been chosen, the <code>cupsCopyDestInfo</code> function can be used to gather detailed information about the destination:</p>
<pre><code>cups_dinfo_t *
cupsCopyDestInfo(http_t *http, cups_dest_t *dest);
</code></pre>
<p>The <code>http</code> argument specifies a connection to the CUPS scheduler and is typically the constant <code>CUPS_HTTP_DEFAULT</code>. The <code>dest</code> argument specifies the destination to query.</p>
<p>The <code>cups_dinfo_t</code> structure that is returned contains a snapshot of the supported options and their supported, ready, and default values. It also can report constraints between different options and values, and recommend changes to resolve those constraints.</p>
<h4><a id="getting-supported-options-and-values">Getting Supported Options and Values</a></h4>
<h4 id="getting-supported-options-and-values">Getting Supported Options and Values</h4>
<p>The <code>cupsCheckDestSupported</code> function can be used to test whether a particular option or option and value is supported:</p>
<pre><code>int
cupsCheckDestSupported(http_t *http, cups_dest_t *dest,
@@ -726,16 +748,26 @@ cupsCheckDestSupported(http_t *http, cups_dest_t *dest,
</code></pre>
<p>The <code>option</code> argument specifies the name of the option to check. The following constants can be used to check the various standard options:</p>
<ul>
<li><code>CUPS_COPIES</code>: Controls the number of copies that are produced.</li>
<li><code>CUPS_FINISHINGS</code>: A comma-delimited list of integer constants that control the finishing processes that are applied to the job, including stapling, punching, and folding.</li>
<li><code>CUPS_MEDIA</code>: Controls the media size that is used, typically one of the following: <code>CUPS_MEDIA_3X5</code>, <code>CUPS_MEDIA_4X6</code>, <code>CUPS_MEDIA_5X7</code>, <code>CUPS_MEDIA_8X10</code>, <code>CUPS_MEDIA_A3</code>, <code>CUPS_MEDIA_A4</code>, <code>CUPS_MEDIA_A5</code>, <code>CUPS_MEDIA_A6</code>, <code>CUPS_MEDIA_ENV10</code>, <code>CUPS_MEDIA_ENVDL</code>, <code>CUPS_MEDIA_LEGAL</code>, <code>CUPS_MEDIA_LETTER</code>, <code>CUPS_MEDIA_PHOTO_L</code>, <code>CUPS_MEDIA_SUPERBA3</code>, or <code>CUPS_MEDIA_TABLOID</code>.</li>
<li><code>CUPS_MEDIA_SOURCE</code>: Controls where the media is pulled from, typically either <code>CUPS_MEDIA_SOURCE_AUTO</code> or <code>CUPS_MEDIA_SOURCE_MANUAL</code>.</li>
<li><code>CUPS_MEDIA_TYPE</code>: Controls the type of media that is used, typically one of the following: <code>CUPS_MEDIA_TYPE_AUTO</code>, <code>CUPS_MEDIA_TYPE_ENVELOPE</code>, <code>CUPS_MEDIA_TYPE_LABELS</code>, <code>CUPS_MEDIA_TYPE_LETTERHEAD</code>, <code>CUPS_MEDIA_TYPE_PHOTO</code>, <code>CUPS_MEDIA_TYPE_PHOTO_GLOSSY</code>, <code>CUPS_MEDIA_TYPE_PHOTO_MATTE</code>, <code>CUPS_MEDIA_TYPE_PLAIN</code>, or <code>CUPS_MEDIA_TYPE_TRANSPARENCY</code>.</li>
<li><code>CUPS_NUMBER_UP</code>: Controls the number of document pages that are placed on each media side.</li>
<li><code>CUPS_ORIENTATION</code>: Controls the orientation of document pages placed on the media: <code>CUPS_ORIENTATION_PORTRAIT</code> or <code>CUPS_ORIENTATION_LANDSCAPE</code>.</li>
<li><code>CUPS_PRINT_COLOR_MODE</code>: Controls whether the output is in color (<code>CUPS_PRINT_COLOR_MODE_COLOR</code>), grayscale (<code>CUPS_PRINT_COLOR_MODE_MONOCHROME</code>), or either (<code>CUPS_PRINT_COLOR_MODE_AUTO</code>).</li>
<li><code>CUPS_PRINT_QUALITY</code>: Controls the generate quality of the output: <code>CUPS_PRINT_QUALITY_DRAFT</code>, <code>CUPS_PRINT_QUALITY_NORMAL</code>, or <code>CUPS_PRINT_QUALITY_HIGH</code>.</li>
<li><code>CUPS_SIDES</code>: Controls whether prints are placed on one or both sides of the media: <code>CUPS_SIDES_ONE_SIDED</code>, <code>CUPS_SIDES_TWO_SIDED_PORTRAIT</code>, or <code>CUPS_SIDES_TWO_SIDED_LANDSCAPE</code>.</li>
<li> <p><code>CUPS_COPIES</code>: Controls the number of copies that are produced.</p>
</li>
<li> <p><code>CUPS_FINISHINGS</code>: A comma-delimited list of integer constants that control the finishing processes that are applied to the job, including stapling, punching, and folding.</p>
</li>
<li> <p><code>CUPS_MEDIA</code>: Controls the media size that is used, typically one of the following: <code>CUPS_MEDIA_3X5</code>, <code>CUPS_MEDIA_4X6</code>, <code>CUPS_MEDIA_5X7</code>, <code>CUPS_MEDIA_8X10</code>, <code>CUPS_MEDIA_A3</code>, <code>CUPS_MEDIA_A4</code>, <code>CUPS_MEDIA_A5</code>, <code>CUPS_MEDIA_A6</code>, <code>CUPS_MEDIA_ENV10</code>, <code>CUPS_MEDIA_ENVDL</code>, <code>CUPS_MEDIA_LEGAL</code>, <code>CUPS_MEDIA_LETTER</code>, <code>CUPS_MEDIA_PHOTO_L</code>, <code>CUPS_MEDIA_SUPERBA3</code>, or <code>CUPS_MEDIA_TABLOID</code>.</p>
</li>
<li> <p><code>CUPS_MEDIA_SOURCE</code>: Controls where the media is pulled from, typically either <code>CUPS_MEDIA_SOURCE_AUTO</code> or <code>CUPS_MEDIA_SOURCE_MANUAL</code>.</p>
</li>
<li> <p><code>CUPS_MEDIA_TYPE</code>: Controls the type of media that is used, typically one of the following: <code>CUPS_MEDIA_TYPE_AUTO</code>, <code>CUPS_MEDIA_TYPE_ENVELOPE</code>, <code>CUPS_MEDIA_TYPE_LABELS</code>, <code>CUPS_MEDIA_TYPE_LETTERHEAD</code>, <code>CUPS_MEDIA_TYPE_PHOTO</code>, <code>CUPS_MEDIA_TYPE_PHOTO_GLOSSY</code>, <code>CUPS_MEDIA_TYPE_PHOTO_MATTE</code>, <code>CUPS_MEDIA_TYPE_PLAIN</code>, or <code>CUPS_MEDIA_TYPE_TRANSPARENCY</code>.</p>
</li>
<li> <p><code>CUPS_NUMBER_UP</code>: Controls the number of document pages that are placed on each media side.</p>
</li>
<li> <p><code>CUPS_ORIENTATION</code>: Controls the orientation of document pages placed on the media: <code>CUPS_ORIENTATION_PORTRAIT</code> or <code>CUPS_ORIENTATION_LANDSCAPE</code>.</p>
</li>
<li> <p><code>CUPS_PRINT_COLOR_MODE</code>: Controls whether the output is in color (<code>CUPS_PRINT_COLOR_MODE_COLOR</code>), grayscale (<code>CUPS_PRINT_COLOR_MODE_MONOCHROME</code>), or either (<code>CUPS_PRINT_COLOR_MODE_AUTO</code>).</p>
</li>
<li> <p><code>CUPS_PRINT_QUALITY</code>: Controls the generate quality of the output: <code>CUPS_PRINT_QUALITY_DRAFT</code>, <code>CUPS_PRINT_QUALITY_NORMAL</code>, or <code>CUPS_PRINT_QUALITY_HIGH</code>.</p>
</li>
<li> <p><code>CUPS_SIDES</code>: Controls whether prints are placed on one or both sides of the media: <code>CUPS_SIDES_ONE_SIDED</code>, <code>CUPS_SIDES_TWO_SIDED_PORTRAIT</code>, or <code>CUPS_SIDES_TWO_SIDED_LANDSCAPE</code>.</p>
</li>
</ul>
<p>If the <code>value</code> argument is <code>NULL</code>, the <code>cupsCheckDestSupported</code> function returns whether the option is supported by the destination. Otherwise, the function returns whether the specified value of the option is supported.</p>
<p>The <code>cupsFindDestSupported</code> function returns the IPP attribute containing the supported values for a given option:</p>
@@ -772,7 +804,7 @@ int i, count = ippGetCount(attrs);
for (i = 0; i &lt; count; i ++)
puts(ippGetString(attrs, i, NULL));
</code></pre>
<h4><a id="getting-default-values">Getting Default Values</a></h4>
<h4 id="getting-default-values">Getting Default Values</h4>
<p>There are two sets of default values - user defaults that are available via the <code>num_options</code> and <code>options</code> members of the <code>cups_dest_t</code> structure, and destination defaults that available via the <code>cups_dinfo_t</code> structure and the <code>cupsFindDestDefault</code> function which returns the IPP attribute containing the default value(s) for a given option:</p>
<pre><code>ipp_attribute_t *
cupsFindDestDefault(http_t *http, cups_dest_t *dest,
@@ -802,7 +834,7 @@ else
putchar('\n');
}
</code></pre>
<h4><a id="getting-ready-loaded-values">Getting Ready (Loaded) Values</a></h4>
<h4 id="getting-ready-loaded-values">Getting Ready (Loaded) Values</h4>
<p>The finishings and media options also support queries for the ready, or loaded, values. For example, a printer may have punch and staple finishers installed but be out of staples - the supported values will list both punch and staple finishing processes but the ready values will only list the punch processes. Similarly, a printer may support hundreds of different sizes of media but only have a single size loaded at any given time - the ready values are limited to the media that is actually in the printer.</p>
<p>The <code>cupsFindDestReady</code> function finds the IPP attribute containing the ready values for a given option:</p>
<pre><code>ipp_attribute_t *
@@ -825,7 +857,7 @@ if (ready_finishings != NULL)
else
puts(&quot;no finishings are ready.&quot;);
</code></pre>
<h4><a id="media-size-options">Media Size Options</a></h4>
<h4 id="media-size-options">Media Size Options</h4>
<p>CUPS provides functions for querying the dimensions and margins for each of the supported media size options. The <code>cups_size_t</code> structure is used to describe a media size:</p>
<pre><code>typedef struct cups_size_s
{
@@ -850,11 +882,16 @@ cupsGetDestMediaBySize(http_t *http, cups_dest_t *dest,
</code></pre>
<p>The <code>media</code>, <code>width</code>, and <code>length</code> arguments specify the size to lookup. The <code>flags</code> argument specifies a bitfield controlling various lookup options:</p>
<ul>
<li><code>CUPS_MEDIA_FLAGS_DEFAULT</code>: Find the closest size supported by the printer.</li>
<li><code>CUPS_MEDIA_FLAGS_BORDERLESS</code>: Find a borderless size.</li>
<li><code>CUPS_MEDIA_FLAGS_DUPLEX</code>: Find a size compatible with two-sided printing.</li>
<li><code>CUPS_MEDIA_FLAGS_EXACT</code>: Find an exact match for the size.</li>
<li><code>CUPS_MEDIA_FLAGS_READY</code>: If the printer supports media sensing or configuration of the media in each tray/source, find the size amongst the &quot;ready&quot; media.</li>
<li> <p><code>CUPS_MEDIA_FLAGS_DEFAULT</code>: Find the closest size supported by the printer.</p>
</li>
<li> <p><code>CUPS_MEDIA_FLAGS_BORDERLESS</code>: Find a borderless size.</p>
</li>
<li> <p><code>CUPS_MEDIA_FLAGS_DUPLEX</code>: Find a size compatible with two-sided printing.</p>
</li>
<li> <p><code>CUPS_MEDIA_FLAGS_EXACT</code>: Find an exact match for the size.</p>
</li>
<li> <p><code>CUPS_MEDIA_FLAGS_READY</code>: If the printer supports media sensing or configuration of the media in each tray/source, find the size amongst the &quot;ready&quot; media.</p>
</li>
</ul>
<p>If a matching size is found for the destination, the size information is stored in the structure pointed to by the <code>size</code> argument and 1 is returned. Otherwise 0 is returned.</p>
<p>For example, the following code prints the margins for two-sided printing on US Letter media:</p>
@@ -912,7 +949,7 @@ cupsGetDestMediaDefault(http_t *http, cups_dest_t *dest,
cups_dinfo_t *dinfo, unsigned flags,
cups_size_t *size);
</code></pre>
<h4><a id="localizing-options-and-values">Localizing Options and Values</a></h4>
<h4 id="localizing-options-and-values">Localizing Options and Values</h4>
<p>CUPS provides three functions to get localized, human-readable strings in the user's current locale for options and values: <code>cupsLocalizeDestMedia</code>, <code>cupsLocalizeDestOption</code>, and <code>cupsLocalizeDestValue</code>:</p>
<pre><code>const char *
cupsLocalizeDestMedia(http_t *http, cups_dest_t *dest,
@@ -929,7 +966,7 @@ cupsLocalizeDestValue(http_t *http, cups_dest_t *dest,
cups_dinfo_t *info,
const char *option, const char *value);
</code></pre>
<h3><a id="submitting-a-print-job">Submitting a Print Job</a></h3>
<h3 class="title" id="submitting-a-print-job">Submitting a Print Job</h3>
<p>Once you are ready to submit a print job, you create a job using the <code>cupsCreateDestJob</code> function:</p>
<pre><code>ipp_status_t
cupsCreateDestJob(http_t *http, cups_dest_t *dest,
@@ -980,10 +1017,14 @@ cupsFinishDestDocument(http_t *http, cups_dest_t *dest,
</code></pre>
<p>The <code>docname</code> argument specifies the name of the document, typically the original filename. The <code>format</code> argument specifies the MIME media type of the document, including the following constants:</p>
<ul>
<li><code>CUPS_FORMAT_JPEG</code>: &quot;image/jpeg&quot;</li>
<li><code>CUPS_FORMAT_PDF</code>: &quot;application/pdf&quot;</li>
<li><code>CUPS_FORMAT_POSTSCRIPT</code>: &quot;application/postscript&quot;</li>
<li><code>CUPS_FORMAT_TEXT</code>: &quot;text/plain&quot;</li>
<li> <p><code>CUPS_FORMAT_JPEG</code>: &quot;image/jpeg&quot;</p>
</li>
<li> <p><code>CUPS_FORMAT_PDF</code>: &quot;application/pdf&quot;</p>
</li>
<li> <p><code>CUPS_FORMAT_POSTSCRIPT</code>: &quot;application/postscript&quot;</p>
</li>
<li> <p><code>CUPS_FORMAT_TEXT</code>: &quot;text/plain&quot;</p>
</li>
</ul>
<p>The <code>num_options</code> and <code>options</code> arguments specify per-document print options, which at present must be 0 and <code>NULL</code>. The <code>last_document</code> argument specifies whether this is the last document in the job.</p>
<p>For example, the following code submits a PDF file to the job that was just created:</p>
@@ -1010,9 +1051,9 @@ if (cupsStartDestDocument(CUPS_HTTP_DEFAULT, dest, info,
fclose(fp);
</code></pre>
<h2><a id="sending-ipp-requests">Sending IPP Requests</a></h2>
<h2 class="title" id="sending-ipp-requests">Sending IPP Requests</h2>
<p>CUPS provides a rich API for sending IPP requests to the scheduler or printers, typically from management or utility applications whose primary purpose is not to send print jobs.</p>
<h3><a id="connecting-to-the-scheduler-or-printer">Connecting to the Scheduler or Printer</a></h3>
<h3 class="title" id="connecting-to-the-scheduler-or-printer">Connecting to the Scheduler or Printer</h3>
<p>The connection to the scheduler or printer is represented by the HTTP connection type <code>http_t</code>. The <code>cupsConnectDest</code> function connects to the scheduler or printer associated with the destination:</p>
<pre><code>http_t *
cupsConnectDest(cups_dest_t *dest, unsigned flags, int msec,
@@ -1033,7 +1074,7 @@ http_t *http = cupsConnectDest(dest, CUPS_DEST_FLAGS_DEVICE,
30000, NULL, resource,
sizeof(resource), NULL, NULL);
</code></pre>
<h3><a id="creating-an-ipp-request">Creating an IPP Request</a></h3>
<h3 class="title" id="creating-an-ipp-request">Creating an IPP Request</h3>
<p>IPP requests are represented by the IPP message type <code>ipp_t</code> and each IPP attribute in the request is representing using the type <code>ipp_attribute_t</code>. Each IPP request includes an operation code (<code>IPP_OP_CREATE_JOB</code>, <code>IPP_OP_GET_PRINTER_ATTRIBUTES</code>, etc.) and a 32-bit integer identifier.</p>
<p>The <code>ippNewRequest</code> function creates a new IPP request:</p>
<pre><code>ipp_t *
@@ -1071,19 +1112,30 @@ ippAddStrings(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD,
<p>The <code>ippAddStrings</code> function adds an attribute with one or more strings, in this case three. The <code>IPP_TAG_KEYWORD</code> argument specifies that the strings are keyword values, which are used for attribute names. All strings use the same language (<code>NULL</code>), and the attribute will contain the three strings in the array <code>requested_attributes</code>.</p>
<p>CUPS provides many functions to adding attributes of different types:</p>
<ul>
<li><code>ippAddBoolean</code> adds a boolean (<code>IPP_TAG_BOOLEAN</code>) attribute with one value.</li>
<li><code>ippAddInteger</code> adds an enum (<code>IPP_TAG_ENUM</code>) or integer (<code>IPP_TAG_INTEGER</code>) attribute with one value.</li>
<li><code>ippAddIntegers</code> adds an enum or integer attribute with one or more values.</li>
<li><code>ippAddOctetString</code> adds an octetString attribute with one value.</li>
<li><code>ippAddOutOfBand</code> adds a admin-defined (<code>IPP_TAG_ADMINDEFINE</code>), default (<code>IPP_TAG_DEFAULT</code>), delete-attribute (<code>IPP_TAG_DELETEATTR</code>), no-value (<code>IPP_TAG_NOVALUE</code>), not-settable (<code>IPP_TAG_NOTSETTABLE</code>), unknown (<code>IPP_TAG_UNKNOWN</code>), or unsupported (<code>IPP_TAG_UNSUPPORTED_VALUE</code>) out-of-band attribute.</li>
<li><code>ippAddRange</code> adds a rangeOfInteger attribute with one range.</li>
<li><code>ippAddRanges</code> adds a rangeOfInteger attribute with one or more ranges.</li>
<li><code>ippAddResolution</code> adds a resolution attribute with one resolution.</li>
<li><code>ippAddResolutions</code> adds a resolution attribute with one or more resolutions.</li>
<li><code>ippAddString</code> adds a charset (<code>IPP_TAG_CHARSET</code>), keyword (<code>IPP_TAG_KEYWORD</code>), mimeMediaType (<code>IPP_TAG_MIMETYPE</code>), name (<code>IPP_TAG_NAME</code> and <code>IPP_TAG_NAMELANG</code>), naturalLanguage (<code>IPP_TAG_NATURAL_LANGUAGE</code>), text (<code>IPP_TAG_TEXT</code> and <code>IPP_TAG_TEXTLANG</code>), uri (<code>IPP_TAG_URI</code>), or uriScheme (<code>IPP_TAG_URISCHEME</code>) attribute with one value.</li>
<li><code>ippAddStrings</code> adds a charset, keyword, mimeMediaType, name, naturalLanguage, text, uri, or uriScheme attribute with one or more values.</li>
<li> <p><code>ippAddBoolean</code> adds a boolean (<code>IPP_TAG_BOOLEAN</code>) attribute with one value.</p>
</li>
<li> <p><code>ippAddInteger</code> adds an enum (<code>IPP_TAG_ENUM</code>) or integer (<code>IPP_TAG_INTEGER</code>) attribute with one value.</p>
</li>
<li> <p><code>ippAddIntegers</code> adds an enum or integer attribute with one or more values.</p>
</li>
<li> <p><code>ippAddOctetString</code> adds an octetString attribute with one value.</p>
</li>
<li> <p><code>ippAddOutOfBand</code> adds a admin-defined (<code>IPP_TAG_ADMINDEFINE</code>), default (<code>IPP_TAG_DEFAULT</code>), delete-attribute (<code>IPP_TAG_DELETEATTR</code>), no-value (<code>IPP_TAG_NOVALUE</code>), not-settable (<code>IPP_TAG_NOTSETTABLE</code>), unknown (<code>IPP_TAG_UNKNOWN</code>), or unsupported (<code>IPP_TAG_UNSUPPORTED_VALUE</code>) out-of-band attribute.</p>
</li>
<li> <p><code>ippAddRange</code> adds a rangeOfInteger attribute with one range.</p>
</li>
<li> <p><code>ippAddRanges</code> adds a rangeOfInteger attribute with one or more ranges.</p>
</li>
<li> <p><code>ippAddResolution</code> adds a resolution attribute with one resolution.</p>
</li>
<li> <p><code>ippAddResolutions</code> adds a resolution attribute with one or more resolutions.</p>
</li>
<li> <p><code>ippAddString</code> adds a charset (<code>IPP_TAG_CHARSET</code>), keyword (<code>IPP_TAG_KEYWORD</code>), mimeMediaType (<code>IPP_TAG_MIMETYPE</code>), name (<code>IPP_TAG_NAME</code> and <code>IPP_TAG_NAMELANG</code>), naturalLanguage (<code>IPP_TAG_NATURAL_LANGUAGE</code>), text (<code>IPP_TAG_TEXT</code> and <code>IPP_TAG_TEXTLANG</code>), uri (<code>IPP_TAG_URI</code>), or uriScheme (<code>IPP_TAG_URISCHEME</code>) attribute with one value.</p>
</li>
<li> <p><code>ippAddStrings</code> adds a charset, keyword, mimeMediaType, name, naturalLanguage, text, uri, or uriScheme attribute with one or more values.</p>
</li>
</ul>
<h3><a id="sending-the-ipp-request">Sending the IPP Request</a></h3>
<h3 class="title" id="sending-the-ipp-request">Sending the IPP Request</h3>
<p>Once you have created the IPP request, you can send it using the <code>cupsDoRequest</code> function. For example, the following code sends the IPP Get-Printer-Attributes request to the destination and saves the response:</p>
<pre><code>ipp_t *response = cupsDoRequest(http, request, resource);
</code></pre>
@@ -1105,7 +1157,7 @@ ippAddStrings(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD,
printf(&quot;Request failed: %s\n&quot;, cupsLastErrorString());
}
</code></pre>
<h3><a id="processing-the-ipp-response">Processing the IPP Response</a></h3>
<h3 class="title" id="processing-the-ipp-response">Processing the IPP Response</h3>
<p>Each response to an IPP request is also an IPP message (<code>ipp_t</code>) with its own IPP attributes (<code>ipp_attribute_t</code>) that includes a status code (<code>IPP_STATUS_OK</code>, <code>IPP_STATUS_ERROR_BAD_REQUEST</code>, etc.) and the corresponding 32-bit integer identifier from the request.</p>
<p>For example, the following code finds the printer state attributes and prints their values:</p>
<pre><code>ipp_attribute_t *attr;
@@ -1142,7 +1194,7 @@ if ((attr = ippFindAttribute(response, &quot;printer-state-reasons&quot;,
<p>Once you are done using the IPP response message, free it using the <code>ippDelete</code> function:</p>
<pre><code>ippDelete(response);
</code></pre>
<h3><a id="authentication">Authentication</a></h3>
<h3 class="title" id="authentication">Authentication</h3>
<p>CUPS normally handles authentication through the console. GUI applications should set a password callback using the <code>cupsSetPasswordCB2</code> function:</p>
<pre><code>void
cupsSetPasswordCB2(cups_password_cb2_t cb, void *user_data);
@@ -1159,19 +1211,6 @@ cups_password_cb2(const char *prompt, http_t *http,
<p>The <code>resource</code> argument specifies the path used for the request.</p>
<p>The <code>user_data</code> argument provides the user data pointer from the <code>cupsSetPasswordCB2</code> call.</p>
<h2 class="title"><a id="FUNCTIONS">Functions</a></h2>
<h3 class="function"><a id="CF_OPTIONS">CF_OPTIONS</a></h3>
<p class="description"></p>
<p class="code">
typedef CF_OPTIONS(uint32_t, SecKeyUsage);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>uint32_t</th>
</tr>
<tr><th>SecKeyUsage</th>
</tr>
</tbody></table>
<h4 class="returnvalue">Return Value</h4>
<p class="description"></p>
<h3 class="function"><a id="cupsAddDest">cupsAddDest</a></h3>
<p class="description">Add a destination to the list of destinations.</p>
<p class="code">
@@ -1200,7 +1239,7 @@ a copy of that destination's options.<br>
<br>
Use the <a href="#cupsSaveDests"><code>cupsSaveDests</code></a> function to save the updated list of
destinations to the user's lpoptions file.</p>
<h3 class="function"><span class="info">&#160;CUPS 2.3&#160;</span><a id="cupsAddDestMediaOptions">cupsAddDestMediaOptions</a></h3>
<h3 class="function"><span class="info">&#160;CUPS 2.3/macOS 10.14&#160;</span><a id="cupsAddDestMediaOptions">cupsAddDestMediaOptions</a></h3>
<p class="description">Add the option corresponding to the specified media size.</p>
<p class="code">
int cupsAddDestMediaOptions(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, unsigned flags, <a href="#cups_size_t">cups_size_t</a> *size, int num_options, <a href="#cups_option_t">cups_option_t</a> **options);</p>
@@ -1511,7 +1550,7 @@ int cupsDoAuthentication(<a href="#http_t">http_t</a> *http, const char *method,
status, prior to resubmitting your request.
</p>
<h3 class="function"><span class="info">&#160;CUPS 2.3&#160;</span><a id="cupsEncodeOption">cupsEncodeOption</a></h3>
<h3 class="function"><span class="info">&#160;CUPS 2.3/macOS 10.14&#160;</span><a id="cupsEncodeOption">cupsEncodeOption</a></h3>
<p class="description">Encode a single option into an IPP attribute.</p>
<p class="code">
<a href="#ipp_attribute_t">ipp_attribute_t</a> *cupsEncodeOption(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group_tag, const char *name, const char *value);</p>
@@ -6071,10 +6110,6 @@ typedef struct _ipp_s ipp_t;
<td class="description">Top margin in hundredths of
millimeters</td></tr>
</tbody></table>
<h2 class="title"><a id="VARIABLES">Variables</a></h2>
<h3 class="variable"><a id="kSecOidOrganizationalUnit">kSecOidOrganizationalUnit</a></h3>
<p class="description">Constants, very secure stuff...</p>
<p class="code">extern const void *kSecOidOrganizationalUnit;</p>
<h2 class="title"><a id="ENUMERATIONS">Constants</a></h2>
<h3 class="enumeration"><a id="cups_ptype_e">cups_ptype_e</a></h3>
<p class="description">Printer type/capability bit
+16
Ver Arquivo
@@ -187,5 +187,21 @@ See the License for the specific language governing permissions and
limitations under the License.
</pre>
<h2>CUPS Exceptions to the Apache 2.0 License</h2>
<p>As an exception, if, as a result of your compiling your source code, portions
of this Software are embedded into an Object form of such source code, you
may redistribute such embedded portions in such Object form without complying
with the conditions of Sections 4(a), 4(b) and 4(d) of the License.</p>
<p>In addition, if you combine or link compiled forms of this Software with
software that is licensed under the GPLv2 ("Combined Software") and if a
court of competent jurisdiction determines that the patent provision (Section
3), the indemnity provision (Section 9) or other Section of the License
conflicts with the conditions of the GPLv2, you may retroactively and
prospectively choose to deem waived or otherwise exclude such Section(s) of
the License, but only in their entirety and only with respect to the Combined
Software.</p>
</BODY>
</HTML>
+7
Ver Arquivo
@@ -457,6 +457,8 @@ The following directives may be placed inside Location and Limit sections in the
<dd style="margin-left: 5.0em"><dt><b>Allow @IF(</b><i>name</i><b>)</b>
<dd style="margin-left: 5.0em"><dt><b>Allow @LOCAL</b>
<dd style="margin-left: 5.0em">Allows access from the named hosts, domains, addresses, or interfaces.
The @IF(name) form uses the current subnets configured for the named interface.
The @LOCAL form uses the current subnets configured for all interfaces that are not point-to-point, for example Ethernet and Wi-Fi interfaces are used but DSL and VPN interfaces are not.
The Order directive controls whether Allow lines are evaluated before or after Deny lines.
<dt><b>AuthType None</b>
<dd style="margin-left: 5.0em"><dt><b>AuthType Basic</b>
@@ -476,6 +478,8 @@ The value "Default" corresponds to the DefaultAuthType value.
<dd style="margin-left: 5.0em"><dt><b>Deny @IF(</b><i>name</i><b>)</b>
<dd style="margin-left: 5.0em"><dt><b>Deny @LOCAL</b>
<dd style="margin-left: 5.0em">Denies access from the named hosts, domains, addresses, or interfaces.
The @IF(name) form uses the current subnets configured for the named interface.
The @LOCAL form uses the current subnets configured for all interfaces that are not point-to-point, for example Ethernet and Wi-Fi interfaces are used but DSL and VPN interfaces are not.
The Order directive controls whether Deny lines are evaluated before or after Allow lines.
<dt><b>Encryption IfRequested</b>
<dd style="margin-left: 5.0em"><dt><b>Encryption Never</b>
@@ -585,6 +589,9 @@ On Linux this is typically done using the
command, while on macOS the
<b>launchctl</b>(8)
command is used instead.
<p>The @LOCAL macro name can be confusing since the system running
<b>cupsd</b>
often belongs to a different set of subnets from its clients.
<h2 class="title"><a name="CONFORMING_TO">Conforming To</a></h2>
The <b>cupsd.conf</b> file format is based on the Apache HTTP Server configuration file format.
<h2 class="title"><a name="EXAMPLES">Examples</a></h2>
+2 -2
Ver Arquivo
@@ -143,7 +143,7 @@ The following directives are understood within a <i>test</i>:
<dd style="margin-left: 5.0em"><dt><b>ATTR </b><i>tag attribute-name value(s)</i>
<dd style="margin-left: 5.0em">Adds an attribute to the test request.
Out-of-band tags (admin-define, delete-attribute, no-value, not-settable, unknown, unsupported) have no value.
Values for other tags are separated by the comma (",") character - escape commas using the "" character.
Values for other tags are delimited by the comma (",") character - escape commas using the "\" character.
Common attributes and values are listed in the IANA IPP registry - see references below.
<dt><b>ATTR collection </b><i>attribute-name </i><b>{ MEMBER </b><i>tag member-name value(s) ... </i><b>}</b> [ <i>... </i><b>,{ </b><i>... </i><b>} </b>]
<dd style="margin-left: 5.0em">Adds a collection attribute to the test request.
@@ -230,7 +230,7 @@ The following predicates are understood following the <b>EXPECT</b> test directi
<dd style="margin-left: 5.0em">Makes the <b>EXPECT</b> conditions apply only if the specified variable is not defined.
<dt><b>IN-GROUP </b><i>tag</i>
<dd style="margin-left: 5.0em">Requires the <b>EXPECT</b> attribute to be in the specified group tag.
<dt><b>OF-TYPE </b><i>tag[,tag,...]</i>
<dt><b>OF-TYPE </b><i>tag[|tag,...]</i>
<dd style="margin-left: 5.0em">Requires the <b>EXPECT</b> attribute to use one of the specified value tag(s).
<dt><b>REPEAT-LIMIT </b><i>number</i>
<dd style="margin-left: 5.0em"><br>
+3 -1
Ver Arquivo
@@ -5,7 +5,7 @@
<title>Developing PostScript Printer Drivers</title>
<meta name="keywords" content="Programming">
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<meta name="creator" content="codedoc v3.1">
<meta name="creator" content="codedoc v3.2">
<meta name="author" content="Unknown">
<meta name="copyright" content="Unknown">
<meta name="version" content="0.0">
@@ -450,6 +450,7 @@ h3.title {
--></style>
</head>
<body>
<div class="header">
<!--
PostScript printer driver documentation for CUPS.
@@ -477,6 +478,7 @@ h3.title {
</tr>
</tbody>
</table></div>
</div>
<div class="contents">
<h2 class="title">Contents</h2>
<ul class="contents">
+3 -1
Ver Arquivo
@@ -5,7 +5,7 @@
<title>Introduction to the PPD Compiler</title>
<meta name="keywords" content="Programming">
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<meta name="creator" content="codedoc v3.1">
<meta name="creator" content="codedoc v3.2">
<meta name="author" content="Unknown">
<meta name="copyright" content="Unknown">
<meta name="version" content="0.0">
@@ -450,6 +450,7 @@ h3.title {
--></style>
</head>
<body>
<div class="header">
<!--
PPD compiler documentation for CUPS.
@@ -485,6 +486,7 @@ that describe the features and capabilities of one or more printers.</P>
</tr>
</tbody>
</table></div>
</div>
<div class="contents">
<h2 class="title">Contents</h2>
<ul class="contents">
+3 -1
Ver Arquivo
@@ -5,7 +5,7 @@
<title>Developing Raster Printer Drivers</title>
<meta name="keywords" content="Programming">
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<meta name="creator" content="codedoc v3.1">
<meta name="creator" content="codedoc v3.2">
<meta name="author" content="Unknown">
<meta name="copyright" content="Unknown">
<meta name="version" content="0.0">
@@ -450,6 +450,7 @@ h3.title {
--></style>
</head>
<body>
<div class="header">
<!--
Raster printer driver documentation for CUPS.
@@ -477,6 +478,7 @@ h3.title {
</tr>
</tbody>
</table></div>
</div>
<div class="contents">
<h2 class="title">Contents</h2>
<ul class="contents">
+3 -1
Ver Arquivo
@@ -5,7 +5,7 @@
<title>CUPS PPD Extensions</title>
<meta name="keywords" content="Specifications">
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<meta name="creator" content="codedoc v3.1">
<meta name="creator" content="codedoc v3.2">
<meta name="author" content="Unknown">
<meta name="copyright" content="Unknown">
<meta name="version" content="0.0">
@@ -450,6 +450,7 @@ h3.title {
--></style>
</head>
<body>
<div class="header">
<!--
PPD extension documentation for CUPS.
@@ -477,6 +478,7 @@ h3.title {
</tr>
</tbody>
</table></div>
</div>
<div class="contents">
<h2 class="title">Contents</h2>
<ul class="contents">
+11 -3
Ver Arquivo
@@ -1,10 +1,11 @@
/*
* Label printer filter for CUPS.
*
* Copyright 2007-2016 by Apple Inc.
* Copyright 2001-2007 by Easy Software Products.
* Copyright © 2007-2019 by Apple Inc.
* Copyright © 2001-2007 by Easy Software Products.
*
* Licensed under Apache License v2.0. See the file "LICENSE" for more information.
* Licensed under Apache License v2.0. See the file "LICENSE" for more
* information.
*/
/*
@@ -613,7 +614,14 @@ EndPage(ppd_file_t *ppd, /* I - PPD file */
*/
puts("^XZ");
/*
* Delete the label image...
*/
puts("^XA");
puts("^IDR:CUPS.GRF^FS");
puts("^XZ");
/*
* Cut the label as needed...
+2593 -3174
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+176 -409
Ver Arquivo
@@ -1034,6 +1034,7 @@
"Invalid group tag." = "Invalid group tag.";
"Invalid media name arguments." = "Invalid media name arguments.";
"Invalid media size." = "Invalid media size.";
"Invalid named IPP attribute in collection." = "Invalid named IPP attribute in collection.";
"Invalid ppd-name value." = "Invalid ppd-name value.";
"Invalid printer command \"%s\"." = "Invalid printer command “%s”.";
"JCL" = "JCL";
@@ -1782,8 +1783,6 @@
"document-state.8" = "Aborted";
// TRANSLATORS: Completed
"document-state.9" = "Completed";
// TRANSLATORS: End Power State
"end-power-state" = "End Power State";
"error-index uses indefinite length" = "error-index uses indefinite length";
"error-status uses indefinite length" = "error-status uses indefinite length";
"expression --and expression\n Logical AND" = "expression --and expression\n Logical AND";
@@ -2296,100 +2295,6 @@
"imposition-template.none" = "None";
// TRANSLATORS: Signature
"imposition-template.signature" = "Signature";
// TRANSLATORS: Scanner Options
"input-attributes" = "Scanner Options";
// TRANSLATORS: Scan Auto Scaling
"input-auto-scaling" = "Scan Auto Scaling";
// TRANSLATORS: Scan Auto Skew Correction
"input-auto-skew-correction" = "Scan Auto Skew Correction";
// TRANSLATORS: Scan Brightness
"input-brightness" = "Scan Brightness";
// TRANSLATORS: Scanning Mode
"input-color-mode" = "Scanning Mode";
// TRANSLATORS: Automatic
"input-color-mode.auto" = "Automatic";
// TRANSLATORS: Text
"input-color-mode.bi-level" = "Text";
// TRANSLATORS: 16-bit CMYK
"input-color-mode.cmyk_16" = "16-bit CMYK";
// TRANSLATORS: 8-bit CMYK
"input-color-mode.cmyk_8" = "8-bit CMYK";
// TRANSLATORS: Color
"input-color-mode.color" = "Color";
// TRANSLATORS: 8-bit Color
"input-color-mode.color_8" = "8-bit Color";
// TRANSLATORS: Monochrome
"input-color-mode.monochrome" = "Monochrome";
// TRANSLATORS: 16-bit Monochrome
"input-color-mode.monochrome_16" = "16-bit Monochrome";
// TRANSLATORS: 4-bit Monochrome
"input-color-mode.monochrome_4" = "4-bit Monochrome";
// TRANSLATORS: 8-bit Monochrome
"input-color-mode.monochrome_8" = "8-bit Monochrome";
// TRANSLATORS: 16-bit RGB
"input-color-mode.rgb_16" = "16-bit RGB";
// TRANSLATORS: 16-bit RGBA
"input-color-mode.rgba_16" = "16-bit RGBA";
// TRANSLATORS: 8-bit RGBA
"input-color-mode.rgba_8" = "8-bit RGBA";
// TRANSLATORS: Scan Content
"input-content-type" = "Scan Content";
// TRANSLATORS: Automatic
"input-content-type.auto" = "Automatic";
// TRANSLATORS: Halftone
"input-content-type.halftone" = "Halftone";
// TRANSLATORS: Line Art
"input-content-type.line-art" = "Line Art";
// TRANSLATORS: Magazine
"input-content-type.magazine" = "Magazine";
// TRANSLATORS: Photo
"input-content-type.photo" = "Photo";
// TRANSLATORS: Text
"input-content-type.text" = "Text";
// TRANSLATORS: Text And Photo
"input-content-type.text-and-photo" = "Text And Photo";
// TRANSLATORS: Scan Contrast
"input-contrast" = "Scan Contrast";
// TRANSLATORS: Film Type
"input-film-scan-mode" = "Film Type";
// TRANSLATORS: Black And White Negative Film
"input-film-scan-mode.black-and-white-negative-film" = "Black And White Negative Film";
// TRANSLATORS: Color Negative Film
"input-film-scan-mode.color-negative-film" = "Color Negative Film";
// TRANSLATORS: Color Slide Film
"input-film-scan-mode.color-slide-film" = "Color Slide Film";
// TRANSLATORS: Not Applicable
"input-film-scan-mode.not-applicable" = "Not Applicable";
// TRANSLATORS: Scan Images To Transfer
"input-images-to-transfer" = "Scan Images To Transfer";
// TRANSLATORS: Scan Media
"input-media" = "Scan Media";
// TRANSLATORS: Automatic
"input-media.auto" = "Automatic";
// TRANSLATORS: Scan Orientation
"input-orientation-requested" = "Scan Orientation";
// TRANSLATORS: Scan Quality
"input-quality" = "Scan Quality";
// TRANSLATORS: Scan Resolution
"input-resolution" = "Scan Resolution";
// TRANSLATORS: Scan Scaling Height
"input-scaling-height" = "Scan Scaling Height";
// TRANSLATORS: Scan Scaling Width
"input-scaling-width" = "Scan Scaling Width";
// TRANSLATORS: Scan Regions
"input-scan-regions" = "Scan Regions";
// TRANSLATORS: Scan Sharpness
"input-sharpness" = "Scan Sharpness";
// TRANSLATORS: 2-Sided Scanning
"input-sides" = "2-Sided Scanning";
// TRANSLATORS: Scan Source
"input-source" = "Scan Source";
// TRANSLATORS: Automatic Document Feeder
"input-source.adf" = "Automatic Document Feeder";
// TRANSLATORS: Film Reader
"input-source.film-reader" = "Film Reader";
// TRANSLATORS: Platen
"input-source.platen" = "Platen";
// TRANSLATORS: Insert Page Number
"insert-after-page-number" = "Insert Page Number";
// TRANSLATORS: Insert Count
@@ -2452,14 +2357,8 @@
"job-accounting-sheets-type.standard" = "Standard";
// TRANSLATORS: Job Accounting User ID
"job-accounting-user-id" = "Job Accounting User ID";
// TRANSLATORS: Collate Copies
"job-collation-type" = "Collate Copies";
// TRANSLATORS: Uncollated Sheets
"job-collation-type.3" = "Uncollated Sheets";
// TRANSLATORS: Collated Documents
"job-collation-type.4" = "Collated Documents";
// TRANSLATORS: Uncollated Documents
"job-collation-type.5" = "Uncollated Documents";
// TRANSLATORS: Job Cancel After
"job-cancel-after" = "job-cancel-after";
// TRANSLATORS: Copies
"job-copies" = "Copies";
// TRANSLATORS: Back Cover
@@ -2569,8 +2468,22 @@
"job-privacy-scope.owner" = "Owner";
// TRANSLATORS: Job Recipient Name
"job-recipient-name" = "Job Recipient Name";
// TRANSLATORS: Job Resource Ids
"job-resource-ids" = "Job Resource Ids";
// TRANSLATORS: Job Retain Until
"job-retain-until" = "job-retain-until";
// TRANSLATORS: Job Retain Until Interval
"job-retain-until-interval" = "job-retain-until-interval";
// TRANSLATORS: Job Retain Until Time
"job-retain-until-time" = "job-retain-until-time";
// TRANSLATORS: End Of Day
"job-retain-until.end-of-day" = "job-retain-until.end-of-day";
// TRANSLATORS: End Of Month
"job-retain-until.end-of-month" = "job-retain-until.end-of-month";
// TRANSLATORS: End Of Week
"job-retain-until.end-of-week" = "job-retain-until.end-of-week";
// TRANSLATORS: Indefinite
"job-retain-until.indefinite" = "job-retain-until.indefinite";
// TRANSLATORS: None
"job-retain-until.none" = "job-retain-until.none";
// TRANSLATORS: Job Save Disposition
"job-save-disposition" = "Job Save Disposition";
// TRANSLATORS: Job Sheet Message
@@ -2597,7 +2510,7 @@
"job-state-message" = "Job State Message";
// TRANSLATORS: Detailed Job State
"job-state-reasons" = "Detailed Job State";
// TRANSLATORS: Aborted By System
// TRANSLATORS: Stopping
"job-state-reasons.aborted-by-system" = "Aborted By System";
// TRANSLATORS: Account Authorization Failed
"job-state-reasons.account-authorization-failed" = "Account Authorization Failed";
@@ -2607,7 +2520,7 @@
"job-state-reasons.account-info-needed" = "Account Info Needed";
// TRANSLATORS: Account Limit Reached
"job-state-reasons.account-limit-reached" = "Account Limit Reached";
// TRANSLATORS: Compression Error
// TRANSLATORS: Decompression error
"job-state-reasons.compression-error" = "Compression Error";
// TRANSLATORS: Conflicting Attributes
"job-state-reasons.conflicting-attributes" = "Conflicting Attributes";
@@ -2635,19 +2548,19 @@
"job-state-reasons.document-unprintable-error" = "Document Unprintable Error";
// TRANSLATORS: Errors Detected
"job-state-reasons.errors-detected" = "Errors Detected";
// TRANSLATORS: Job Canceled At Device
// TRANSLATORS: Canceled at printer
"job-state-reasons.job-canceled-at-device" = "Job Canceled At Device";
// TRANSLATORS: Job Canceled By Operator
// TRANSLATORS: Canceled by operator
"job-state-reasons.job-canceled-by-operator" = "Job Canceled By Operator";
// TRANSLATORS: Job Canceled By User
// TRANSLATORS: Canceled by user
"job-state-reasons.job-canceled-by-user" = "Job Canceled By User";
// TRANSLATORS: Job Completed Successfully
// TRANSLATORS:
"job-state-reasons.job-completed-successfully" = "Job Completed Successfully";
// TRANSLATORS: Job Completed With Errors
// TRANSLATORS: Completed with errors
"job-state-reasons.job-completed-with-errors" = "Job Completed With Errors";
// TRANSLATORS: Job Completed With Warnings
// TRANSLATORS: Completed with warnings
"job-state-reasons.job-completed-with-warnings" = "Job Completed With Warnings";
// TRANSLATORS: Job Data Insufficient
// TRANSLATORS: Insufficient data
"job-state-reasons.job-data-insufficient" = "Job Data Insufficient";
// TRANSLATORS: Job Delay Output Until Specified
"job-state-reasons.job-delay-output-until-specified" = "Job Delay Output Until Specified";
@@ -2657,13 +2570,13 @@
"job-state-reasons.job-fetchable" = "Job Fetchable";
// TRANSLATORS: Job Held For Review
"job-state-reasons.job-held-for-review" = "Job Held For Review";
// TRANSLATORS: Job Hold Until Specified
// TRANSLATORS: Job held
"job-state-reasons.job-hold-until-specified" = "Job Hold Until Specified";
// TRANSLATORS: Job Incoming
// TRANSLATORS: Incoming
"job-state-reasons.job-incoming" = "Job Incoming";
// TRANSLATORS: Job Interpreting
// TRANSLATORS: Interpreting
"job-state-reasons.job-interpreting" = "Job Interpreting";
// TRANSLATORS: Job Outgoing
// TRANSLATORS: Outgoing
"job-state-reasons.job-outgoing" = "Job Outgoing";
// TRANSLATORS: Job Password Wait
"job-state-reasons.job-password-wait" = "Job Password Wait";
@@ -2673,15 +2586,15 @@
"job-state-reasons.job-printed-with-errors" = "Job Printed With Errors";
// TRANSLATORS: Job Printed With Warnings
"job-state-reasons.job-printed-with-warnings" = "Job Printed With Warnings";
// TRANSLATORS: Job Printing
// TRANSLATORS: Printing
"job-state-reasons.job-printing" = "Job Printing";
// TRANSLATORS: Job Queued
// TRANSLATORS: Preparing to print
"job-state-reasons.job-queued" = "Job Queued";
// TRANSLATORS: Job Queued For Marker
// TRANSLATORS: Processing document
"job-state-reasons.job-queued-for-marker" = "Job Queued For Marker";
// TRANSLATORS: Job Release Wait
"job-state-reasons.job-release-wait" = "Job Release Wait";
// TRANSLATORS: Job Restartable
// TRANSLATORS: Restartable
"job-state-reasons.job-restartable" = "Job Restartable";
// TRANSLATORS: Job Resuming
"job-state-reasons.job-resuming" = "Job Resuming";
@@ -2697,7 +2610,7 @@
"job-state-reasons.job-spooling" = "Job Spooling";
// TRANSLATORS: Job Streaming
"job-state-reasons.job-streaming" = "Job Streaming";
// TRANSLATORS: Job Suspended
// TRANSLATORS: Suspended
"job-state-reasons.job-suspended" = "Job Suspended";
// TRANSLATORS: Job Suspended By Operator
"job-state-reasons.job-suspended-by-operator" = "Job Suspended By Operator";
@@ -2709,23 +2622,23 @@
"job-state-reasons.job-suspending" = "Job Suspending";
// TRANSLATORS: Job Transferring
"job-state-reasons.job-transferring" = "Job Transferring";
// TRANSLATORS: Job Transforming
// TRANSLATORS: Transforming
"job-state-reasons.job-transforming" = "Job Transforming";
// TRANSLATORS: None
"job-state-reasons.none" = "None";
// TRANSLATORS: Printer Stopped
// TRANSLATORS: Printer offline
"job-state-reasons.printer-stopped" = "Printer Stopped";
// TRANSLATORS: Printer Stopped Partly
// TRANSLATORS: Printer partially stopped
"job-state-reasons.printer-stopped-partly" = "Printer Stopped Partly";
// TRANSLATORS: Processing To Stop Point
// TRANSLATORS: Stopping
"job-state-reasons.processing-to-stop-point" = "Processing To Stop Point";
// TRANSLATORS: Queued In Device
// TRANSLATORS: Ready
"job-state-reasons.queued-in-device" = "Queued In Device";
// TRANSLATORS: Resources Are Not Ready
"job-state-reasons.resources-are-not-ready" = "Resources Are Not Ready";
// TRANSLATORS: Resources Are Not Supported
"job-state-reasons.resources-are-not-supported" = "Resources Are Not Supported";
// TRANSLATORS: Service Off Line
// TRANSLATORS: Service offline
"job-state-reasons.service-off-line" = "Service Off Line";
// TRANSLATORS: Submission Interrupted
"job-state-reasons.submission-interrupted" = "Submission Interrupted";
@@ -3708,6 +3621,8 @@
"media.jpn_chou2_111.1x146mm" = "Envelope Chou 2";
// TRANSLATORS: Envelope Chou 3
"media.jpn_chou3_120x235mm" = "Envelope Chou 3";
// TRANSLATORS: Envelope Chou 40
"media.jpn_chou40_90x225mm" = "media.jpn_chou40_90x225mm";
// TRANSLATORS: Envelope Chou 4
"media.jpn_chou4_90x205mm" = "Envelope Chou 4";
// TRANSLATORS: Hagaki
@@ -4004,10 +3919,6 @@
"notify-events.none" = "None";
// TRANSLATORS: Printer Config Changed
"notify-events.printer-config-changed" = "Printer Config Changed";
// TRANSLATORS: Printer Created
"notify-events.printer-created" = "Printer Created";
// TRANSLATORS: Printer Deleted
"notify-events.printer-deleted" = "Printer Deleted";
// TRANSLATORS: Printer Finishings Changed
"notify-events.printer-finishings-changed" = "Printer Finishings Changed";
// TRANSLATORS: Printer Media Changed
@@ -4022,26 +3933,6 @@
"notify-events.printer-state-changed" = "Printer State Changed";
// TRANSLATORS: Printer Stopped
"notify-events.printer-stopped" = "Printer Stopped";
// TRANSLATORS: Resource Canceled
"notify-events.resource-canceled" = "Resource Canceled";
// TRANSLATORS: Resource Config Changed
"notify-events.resource-config-changed" = "Resource Config Changed";
// TRANSLATORS: Resource Created
"notify-events.resource-created" = "Resource Created";
// TRANSLATORS: Resource Installed
"notify-events.resource-installed" = "Resource Installed";
// TRANSLATORS: Resource State Changed
"notify-events.resource-state-changed" = "Resource State Changed";
// TRANSLATORS: System Config Changed
"notify-events.system-config-changed" = "System Config Changed";
// TRANSLATORS: System Restarted
"notify-events.system-restarted" = "System Restarted";
// TRANSLATORS: System Shutdown
"notify-events.system-shutdown" = "System Shutdown";
// TRANSLATORS: System State Changed
"notify-events.system-state-changed" = "System State Changed";
// TRANSLATORS: System Stopped
"notify-events.system-stopped" = "System Stopped";
// TRANSLATORS: Notify Get Interval
"notify-get-interval" = "Notify Get Interval";
// TRANSLATORS: Notify Lease Duration
@@ -4223,94 +4114,6 @@
"platform-temperature" = "Platform Temperature";
// TRANSLATORS: Post-dial String
"post-dial-string" = "Post-dial String";
// TRANSLATORS: Power State
"power-state" = "Power State";
// TRANSLATORS: Reset Mbr
"power-state.100" = "Reset Mbr";
// TRANSLATORS: Reset Nmi
"power-state.110" = "Reset Nmi";
// TRANSLATORS: Off Soft Graceful
"power-state.120" = "Off Soft Graceful";
// TRANSLATORS: Off Hard Graceful
"power-state.130" = "Off Hard Graceful";
// TRANSLATORS: Reset Mbr Graceful
"power-state.140" = "Reset Mbr Graceful";
// TRANSLATORS: Reset Soft Graceful
"power-state.150" = "Reset Soft Graceful";
// TRANSLATORS: Reset Hard Graceful
"power-state.160" = "Reset Hard Graceful";
// TRANSLATORS: Reset Init
"power-state.170" = "Reset Init";
// TRANSLATORS: Not Applicable
"power-state.180" = "Not Applicable";
// TRANSLATORS: No Change
"power-state.190" = "No Change";
// TRANSLATORS: On
"power-state.20" = "On";
// TRANSLATORS: On Vendor1
"power-state.21" = "On Vendor1";
// TRANSLATORS: On Vendor2
"power-state.22" = "On Vendor2";
// TRANSLATORS: On Vendor3
"power-state.23" = "On Vendor3";
// TRANSLATORS: On Vendor4
"power-state.24" = "On Vendor4";
// TRANSLATORS: On Vendor5
"power-state.25" = "On Vendor5";
// TRANSLATORS: Standby
"power-state.30" = "Standby";
// TRANSLATORS: Standby Vendor1
"power-state.31" = "Standby Vendor1";
// TRANSLATORS: Standby Vendor2
"power-state.32" = "Standby Vendor2";
// TRANSLATORS: Standby Vendor3
"power-state.33" = "Standby Vendor3";
// TRANSLATORS: Standby Vendor4
"power-state.34" = "Standby Vendor4";
// TRANSLATORS: Standby Vendor5
"power-state.35" = "Standby Vendor5";
// TRANSLATORS: Suspend
"power-state.40" = "Suspend";
// TRANSLATORS: Suspend Vendor1
"power-state.41" = "Suspend Vendor1";
// TRANSLATORS: Suspend Vendor2
"power-state.42" = "Suspend Vendor2";
// TRANSLATORS: Suspend Vendor3
"power-state.43" = "Suspend Vendor3";
// TRANSLATORS: Suspend Vendor4
"power-state.44" = "Suspend Vendor4";
// TRANSLATORS: Suspend Vendor5
"power-state.45" = "Suspend Vendor5";
// TRANSLATORS: Reset Soft
"power-state.50" = "Reset Soft";
// TRANSLATORS: Off Hard
"power-state.60" = "Off Hard";
// TRANSLATORS: Hibernate
"power-state.70" = "Hibernate";
// TRANSLATORS: Hibernate Vendor1
"power-state.71" = "Hibernate Vendor1";
// TRANSLATORS: Hibernate Vendor2
"power-state.72" = "Hibernate Vendor2";
// TRANSLATORS: Hibernate Vendor3
"power-state.73" = "Hibernate Vendor3";
// TRANSLATORS: Hibernate Vendor4
"power-state.74" = "Hibernate Vendor4";
// TRANSLATORS: Hibernate Vendor5
"power-state.75" = "Hibernate Vendor5";
// TRANSLATORS: Off Soft
"power-state.80" = "Off Soft";
// TRANSLATORS: Off Soft Vendor1
"power-state.81" = "Off Soft Vendor1";
// TRANSLATORS: Off Soft Vendor2
"power-state.82" = "Off Soft Vendor2";
// TRANSLATORS: Off Soft Vendor3
"power-state.83" = "Off Soft Vendor3";
// TRANSLATORS: Off Soft Vendor4
"power-state.84" = "Off Soft Vendor4";
// TRANSLATORS: Off Soft Vendor5
"power-state.85" = "Off Soft Vendor5";
// TRANSLATORS: Reset Hard
"power-state.90" = "Reset Hard";
"ppdc: Adding include directory \"%s\"." = "ppdc: Adding include directory “%s”.";
"ppdc: Adding/updating UI text from %s." = "ppdc: Adding/updating UI text from %s.";
"ppdc: Bad boolean value (%s) on line %d of %s." = "ppdc: Bad boolean value (%s) on line %d of %s.";
@@ -4461,16 +4264,22 @@
"print-color-mode.process-monochrome" = "Process Monochrome";
// TRANSLATORS: Print Optimization
"print-content-optimize" = "Print Optimization";
// TRANSLATORS: Print Content Optimize Actual
"print-content-optimize-actual" = "print-content-optimize-actual";
// TRANSLATORS: Automatic
"print-content-optimize.auto" = "Automatic";
// TRANSLATORS: Graphics
"print-content-optimize.graphic" = "Graphics";
// TRANSLATORS: Graphics
"print-content-optimize.graphics" = "print-content-optimize.graphics";
// TRANSLATORS: Photo
"print-content-optimize.photo" = "Photo";
// TRANSLATORS: Text
"print-content-optimize.text" = "Text";
// TRANSLATORS: Text and Graphics
"print-content-optimize.text-and-graphic" = "Text and Graphics";
// TRANSLATORS: Text And Graphics
"print-content-optimize.text-and-graphics" = "print-content-optimize.text-and-graphics";
// TRANSLATORS: Print Objects
"print-objects" = "Print Objects";
// TRANSLATORS: Print Quality
@@ -4524,34 +4333,30 @@
"printer %s/%s disabled since %s -" = "printer %s/%s disabled since %s -";
"printer %s/%s is idle. enabled since %s" = "printer %s/%s is idle. enabled since %s";
"printer %s/%s now printing %s-%d. enabled since %s" = "printer %s/%s now printing %s-%d. enabled since %s";
// TRANSLATORS: Printer Geo Location
"printer-geo-location" = "Printer Geo Location";
// TRANSLATORS: Printer ID
"printer-id" = "Printer ID";
// TRANSLATORS: Printer Ids
"printer-ids" = "Printer Ids";
// TRANSLATORS: Printer Location
"printer-location" = "Printer Location";
// TRANSLATORS: Printer Kind
"printer-kind" = "printer-kind";
// TRANSLATORS: Disc
"printer-kind.disc" = "printer-kind.disc";
// TRANSLATORS: Document
"printer-kind.document" = "printer-kind.document";
// TRANSLATORS: Envelope
"printer-kind.envelope" = "printer-kind.envelope";
// TRANSLATORS: Label
"printer-kind.label" = "printer-kind.label";
// TRANSLATORS: Large Format
"printer-kind.large-format" = "printer-kind.large-format";
// TRANSLATORS: Photo
"printer-kind.photo" = "printer-kind.photo";
// TRANSLATORS: Postcard
"printer-kind.postcard" = "printer-kind.postcard";
// TRANSLATORS: Receipt
"printer-kind.receipt" = "printer-kind.receipt";
// TRANSLATORS: Roll
"printer-kind.roll" = "printer-kind.roll";
// TRANSLATORS: Message From Operator
"printer-message-from-operator" = "Message From Operator";
// TRANSLATORS: Print Resolution
"printer-resolution" = "Print Resolution";
// TRANSLATORS: Printer Service Type
"printer-service-type" = "Printer Service Type";
// TRANSLATORS: Copy
"printer-service-type.copy" = "Copy";
// TRANSLATORS: Faxin
"printer-service-type.faxin" = "Faxin";
// TRANSLATORS: Faxout
"printer-service-type.faxout" = "Faxout";
// TRANSLATORS: Print
"printer-service-type.print" = "Print";
// TRANSLATORS: Print3d
"printer-service-type.print3d" = "Print3d";
// TRANSLATORS: Scan
"printer-service-type.scan" = "Scan";
// TRANSLATORS: Transform
"printer-service-type.transform" = "Transform";
// TRANSLATORS: Printer State
"printer-state" = "Printer State";
// TRANSLATORS: Detailed Printer State
@@ -4726,8 +4531,6 @@
"printer-state-reasons.cover-open" = "Cover Open";
// TRANSLATORS: Deactivated
"printer-state-reasons.deactivated" = "Deactivated";
// TRANSLATORS: Deleted
"printer-state-reasons.deleted" = "Deleted";
// TRANSLATORS: Developer Empty
"printer-state-reasons.developer-empty" = "Developer Empty";
// TRANSLATORS: Developer Low
@@ -4820,6 +4623,16 @@
"printer-state-reasons.extruder-temperature-low" = "Extruder Temperature Low";
// TRANSLATORS: Fan Failure
"printer-state-reasons.fan-failure" = "Fan Failure";
// TRANSLATORS: Fax Modem Life Almost Over
"printer-state-reasons.fax-modem-life-almost-over" = "printer-state-reasons.fax-modem-life-almost-over";
// TRANSLATORS: Fax Modem Life Over
"printer-state-reasons.fax-modem-life-over" = "printer-state-reasons.fax-modem-life-over";
// TRANSLATORS: Fax Modem Missing
"printer-state-reasons.fax-modem-missing" = "printer-state-reasons.fax-modem-missing";
// TRANSLATORS: Fax Modem Turned Off
"printer-state-reasons.fax-modem-turned-off" = "printer-state-reasons.fax-modem-turned-off";
// TRANSLATORS: Fax Modem Turned On
"printer-state-reasons.fax-modem-turned-on" = "printer-state-reasons.fax-modem-turned-on";
// TRANSLATORS: Folder Added
"printer-state-reasons.folder-added" = "Folder Added";
// TRANSLATORS: Folder Almost Empty
@@ -4892,9 +4705,9 @@
"printer-state-reasons.folder-unrecoverable-storage-error" = "Folder Unrecoverable Storage Error";
// TRANSLATORS: Folder Warming Up
"printer-state-reasons.folder-warming-up" = "Folder Warming Up";
// TRANSLATORS: Fuser Over Temp
// TRANSLATORS: Fuser temperature high
"printer-state-reasons.fuser-over-temp" = "Fuser Over Temp";
// TRANSLATORS: Fuser Under Temp
// TRANSLATORS: Fuser temperature low
"printer-state-reasons.fuser-under-temp" = "Fuser Under Temp";
// TRANSLATORS: Hold New Jobs
"printer-state-reasons.hold-new-jobs" = "Hold New Jobs";
@@ -4982,13 +4795,27 @@
"printer-state-reasons.input-media-form-parts-change" = "Input Media Form Parts Change";
// TRANSLATORS: Input Media Size Change
"printer-state-reasons.input-media-size-change" = "Input Media Size Change";
// TRANSLATORS: Input Media Tray Failure
"printer-state-reasons.input-media-tray-failure" = "printer-state-reasons.input-media-tray-failure";
// TRANSLATORS: Input Media Tray Feed Error
"printer-state-reasons.input-media-tray-feed-error" = "printer-state-reasons.input-media-tray-feed-error";
// TRANSLATORS: Input Media Tray Jam
"printer-state-reasons.input-media-tray-jam" = "printer-state-reasons.input-media-tray-jam";
// TRANSLATORS: Input Media Type Change
"printer-state-reasons.input-media-type-change" = "Input Media Type Change";
// TRANSLATORS: Input Media Weight Change
"printer-state-reasons.input-media-weight-change" = "Input Media Weight Change";
// TRANSLATORS: Input Pick Roller Failure
"printer-state-reasons.input-pick-roller-failure" = "printer-state-reasons.input-pick-roller-failure";
// TRANSLATORS: Input Pick Roller Life Over
"printer-state-reasons.input-pick-roller-life-over" = "printer-state-reasons.input-pick-roller-life-over";
// TRANSLATORS: Input Pick Roller Life Warn
"printer-state-reasons.input-pick-roller-life-warn" = "printer-state-reasons.input-pick-roller-life-warn";
// TRANSLATORS: Input Pick Roller Missing
"printer-state-reasons.input-pick-roller-missing" = "printer-state-reasons.input-pick-roller-missing";
// TRANSLATORS: Input Tray Elevation Failure
"printer-state-reasons.input-tray-elevation-failure" = "Input Tray Elevation Failure";
// TRANSLATORS: Input Tray Missing
// TRANSLATORS: Paper tray is missing
"printer-state-reasons.input-tray-missing" = "Input Tray Missing";
// TRANSLATORS: Input Tray Position Failure
"printer-state-reasons.input-tray-position-failure" = "Input Tray Position Failure";
@@ -5082,7 +4909,7 @@
"printer-state-reasons.interpreter-resource-added" = "Interpreter Resource Added";
// TRANSLATORS: Interpreter Resource Deleted
"printer-state-reasons.interpreter-resource-deleted" = "Interpreter Resource Deleted";
// TRANSLATORS: Interpreter Resource Unavailable
// TRANSLATORS: Printer resource unavailable
"printer-state-reasons.interpreter-resource-unavailable" = "Interpreter Resource Unavailable";
// TRANSLATORS: Lamp At End of Life
"printer-state-reasons.lamp-at-eol" = "Lamp At End of Life";
@@ -5170,10 +4997,16 @@
"printer-state-reasons.make-envelope-warming-up" = "Envelope Maker Warming Up";
// TRANSLATORS: Marker Adjusting Print Quality
"printer-state-reasons.marker-adjusting-print-quality" = "Marker Adjusting Print Quality";
// TRANSLATORS: Marker Cleaner Missing
"printer-state-reasons.marker-cleaner-missing" = "printer-state-reasons.marker-cleaner-missing";
// TRANSLATORS: Marker Developer Almost Empty
"printer-state-reasons.marker-developer-almost-empty" = "Marker Developer Almost Empty";
// TRANSLATORS: Marker Developer Empty
"printer-state-reasons.marker-developer-empty" = "Marker Developer Empty";
// TRANSLATORS: Marker Developer Missing
"printer-state-reasons.marker-developer-missing" = "printer-state-reasons.marker-developer-missing";
// TRANSLATORS: Marker Fuser Missing
"printer-state-reasons.marker-fuser-missing" = "printer-state-reasons.marker-fuser-missing";
// TRANSLATORS: Marker Fuser Thermistor Failure
"printer-state-reasons.marker-fuser-thermistor-failure" = "Marker Fuser Thermistor Failure";
// TRANSLATORS: Marker Fuser Timing Failure
@@ -5182,28 +5015,46 @@
"printer-state-reasons.marker-ink-almost-empty" = "Marker Ink Almost Empty";
// TRANSLATORS: Marker Ink Empty
"printer-state-reasons.marker-ink-empty" = "Marker Ink Empty";
// TRANSLATORS: Marker Ink Missing
"printer-state-reasons.marker-ink-missing" = "printer-state-reasons.marker-ink-missing";
// TRANSLATORS: Marker Opc Missing
"printer-state-reasons.marker-opc-missing" = "printer-state-reasons.marker-opc-missing";
// TRANSLATORS: Marker Print Ribbon Almost Empty
"printer-state-reasons.marker-print-ribbon-almost-empty" = "Marker Print Ribbon Almost Empty";
// TRANSLATORS: Marker Print Ribbon Empty
"printer-state-reasons.marker-print-ribbon-empty" = "Marker Print Ribbon Empty";
// TRANSLATORS: Marker Supply Empty
// TRANSLATORS: Marker Print Ribbon Missing
"printer-state-reasons.marker-print-ribbon-missing" = "printer-state-reasons.marker-print-ribbon-missing";
// TRANSLATORS: Marker Supply Almost Empty
"printer-state-reasons.marker-supply-almost-empty" = "printer-state-reasons.marker-supply-almost-empty";
// TRANSLATORS: Ink/toner empty
"printer-state-reasons.marker-supply-empty" = "Marker Supply Empty";
// TRANSLATORS: Marker Supply Low
// TRANSLATORS: Ink/toner low
"printer-state-reasons.marker-supply-low" = "Marker Supply Low";
// TRANSLATORS: Marker Supply Missing
"printer-state-reasons.marker-supply-missing" = "printer-state-reasons.marker-supply-missing";
// TRANSLATORS: Marker Toner Cartridge Missing
"printer-state-reasons.marker-toner-cartridge-missing" = "Marker Toner Cartridge Missing";
// TRANSLATORS: Marker Waste Almost Full
// TRANSLATORS: Marker Toner Missing
"printer-state-reasons.marker-toner-missing" = "printer-state-reasons.marker-toner-missing";
// TRANSLATORS: Ink/toner waste bin almost full
"printer-state-reasons.marker-waste-almost-full" = "Marker Waste Almost Full";
// TRANSLATORS: Marker Waste Full
// TRANSLATORS: Ink/toner waste bin full
"printer-state-reasons.marker-waste-full" = "Marker Waste Full";
// TRANSLATORS: Marker Waste Ink Receptacle Almost Full
"printer-state-reasons.marker-waste-ink-receptacle-almost-full" = "Marker Waste Ink Receptacle Almost Full";
// TRANSLATORS: Marker Waste Ink Receptacle Full
"printer-state-reasons.marker-waste-ink-receptacle-full" = "Marker Waste Ink Receptacle Full";
// TRANSLATORS: Marker Waste Ink Receptacle Missing
"printer-state-reasons.marker-waste-ink-receptacle-missing" = "printer-state-reasons.marker-waste-ink-receptacle-missing";
// TRANSLATORS: Marker Waste Missing
"printer-state-reasons.marker-waste-missing" = "printer-state-reasons.marker-waste-missing";
// TRANSLATORS: Marker Waste Toner Receptacle Almost Full
"printer-state-reasons.marker-waste-toner-receptacle-almost-full" = "Marker Waste Toner Receptacle Almost Full";
// TRANSLATORS: Marker Waste Toner Receptacle Full
"printer-state-reasons.marker-waste-toner-receptacle-full" = "Marker Waste Toner Receptacle Full";
// TRANSLATORS: Marker Waste Toner Receptacle Missing
"printer-state-reasons.marker-waste-toner-receptacle-missing" = "printer-state-reasons.marker-waste-toner-receptacle-missing";
// TRANSLATORS: Material Empty
"printer-state-reasons.material-empty" = "Material Empty";
// TRANSLATORS: Material Low
@@ -5212,41 +5063,73 @@
"printer-state-reasons.material-needed" = "Material Needed";
// TRANSLATORS: Media Drying
"printer-state-reasons.media-drying" = "Media Drying";
// TRANSLATORS: Media Empty
// TRANSLATORS: Paper tray is empty
"printer-state-reasons.media-empty" = "Media Empty";
// TRANSLATORS: Media Jam
// TRANSLATORS: Paper jam
"printer-state-reasons.media-jam" = "Media Jam";
// TRANSLATORS: Media Low
"printer-state-reasons.media-low" = "Media Low";
// TRANSLATORS: Media Needed
"printer-state-reasons.media-needed" = "Media Needed";
// TRANSLATORS: Paper tray is almost empty
"printer-state-reasons.media-low" = "Paper tray is almost empty";
// TRANSLATORS: Load paper
"printer-state-reasons.media-needed" = "Load paper";
// TRANSLATORS: Media Path Cannot Do 2-Sided Printing
"printer-state-reasons.media-path-cannot-duplex-media-selected" = "Media Path Cannot Do 2-Sided Printing";
// TRANSLATORS: Media Path Failure
"printer-state-reasons.media-path-failure" = "Media Path Failure";
// TRANSLATORS: Media Path Input Empty
"printer-state-reasons.media-path-input-empty" = "Media Path Input Empty";
// TRANSLATORS: Media Path Input Feed Error
"printer-state-reasons.media-path-input-feed-error" = "Media Path Input Feed Error";
// TRANSLATORS: Media Path Input Jam
"printer-state-reasons.media-path-input-jam" = "Media Path Input Jam";
// TRANSLATORS: Media Path Input Request
"printer-state-reasons.media-path-input-request" = "Media Path Input Request";
// TRANSLATORS: Media Path Jam
"printer-state-reasons.media-path-jam" = "Media Path Jam";
// TRANSLATORS: Media Path Media Tray Almost Full
"printer-state-reasons.media-path-media-tray-almost-full" = "Media Path Media Tray Almost Full";
// TRANSLATORS: Media Path Media Tray Full
"printer-state-reasons.media-path-media-tray-full" = "Media Path Media Tray Full";
// TRANSLATORS: Media Path Media Tray Missing
"printer-state-reasons.media-path-media-tray-missing" = "Media Path Media Tray Missing";
// TRANSLATORS: Media Path Output Feed Error
"printer-state-reasons.media-path-output-feed-error" = "Media Path Output Feed Error";
// TRANSLATORS: Media Path Output Full
"printer-state-reasons.media-path-output-full" = "Media Path Output Full";
// TRANSLATORS: Media Path Output Jam
"printer-state-reasons.media-path-output-jam" = "Media Path Output Jam";
// TRANSLATORS: Media Path Pick Roller Failure
"printer-state-reasons.media-path-pick-roller-failure" = "Media Path Pick Roller Failure";
// TRANSLATORS: Media Path Pick Roller Life Over
"printer-state-reasons.media-path-pick-roller-life-over" = "Media Path Pick Roller Life Over";
// TRANSLATORS: Media Path Pick Roller Life Warn
"printer-state-reasons.media-path-pick-roller-life-warn" = "Media Path Pick Roller Life Warn";
// TRANSLATORS: Media Path Pick Roller Missing
"printer-state-reasons.media-path-pick-roller-missing" = "Media Path Pick Roller Missing";
// TRANSLATORS: Motor Failure
"printer-state-reasons.motor-failure" = "Motor Failure";
// TRANSLATORS: Moving To Paused
// TRANSLATORS: Printer going offline
"printer-state-reasons.moving-to-paused" = "Moving To Paused";
// TRANSLATORS: None
"printer-state-reasons.none" = "None";
// TRANSLATORS: Optical Photoconductor Life Over
"printer-state-reasons.opc-life-over" = "Optical Photoconductor Life Over";
// TRANSLATORS: Optical Photoconductor Near End-of-life
// TRANSLATORS: OPC almost at end-of-life
"printer-state-reasons.opc-near-eol" = "Optical Photoconductor Near End-of-life";
// TRANSLATORS: Other
// TRANSLATORS: Check the printer for errors
"printer-state-reasons.other" = "Other";
// TRANSLATORS: Output Area Almost Full
// TRANSLATORS: Output bin is almost full
"printer-state-reasons.output-area-almost-full" = "Output Area Almost Full";
// TRANSLATORS: Output Area Full
// TRANSLATORS: Output bin is full
"printer-state-reasons.output-area-full" = "Output Area Full";
// TRANSLATORS: Output Mailbox Select Failure
"printer-state-reasons.output-mailbox-select-failure" = "Output Mailbox Select Failure";
// TRANSLATORS: Output Tray Missing
// TRANSLATORS: Output Media Tray Failure
"printer-state-reasons.output-media-tray-failure" = "Output Media Tray Failure";
// TRANSLATORS: Output Media Tray Feed Error
"printer-state-reasons.output-media-tray-feed-error" = "Output Media Tray Feed Error";
// TRANSLATORS: Output Media Tray Jam
"printer-state-reasons.output-media-tray-jam" = "Output Media Tray Jam";
// TRANSLATORS: Output tray is missing
"printer-state-reasons.output-tray-missing" = "Output Tray Missing";
// TRANSLATORS: Paused
"printer-state-reasons.paused" = "Paused";
@@ -5414,8 +5297,6 @@
"printer-state-reasons.puncher-unrecoverable-storage-error" = "Puncher Unrecoverable Storage Error";
// TRANSLATORS: Puncher Warming Up
"printer-state-reasons.puncher-warming-up" = "Puncher Warming Up";
// TRANSLATORS: Resuming
"printer-state-reasons.resuming" = "Resuming";
// TRANSLATORS: Separation Cutter Added
"printer-state-reasons.separation-cutter-added" = "Separation Cutter Added";
// TRANSLATORS: Separation Cutter Almost Empty
@@ -5560,7 +5441,7 @@
"printer-state-reasons.sheet-rotator-unrecoverable-storage-error" = "Sheet Rotator Unrecoverable Storage Error";
// TRANSLATORS: Sheet Rotator Warming Up
"printer-state-reasons.sheet-rotator-warming-up" = "Sheet Rotator Warming Up";
// TRANSLATORS: Shutdown
// TRANSLATORS: Printer offline
"printer-state-reasons.shutdown" = "Shutdown";
// TRANSLATORS: Slitter Added
"printer-state-reasons.slitter-added" = "Slitter Added";
@@ -5852,7 +5733,7 @@
"printer-state-reasons.stitcher-unrecoverable-storage-error" = "Stitcher Unrecoverable Storage Error";
// TRANSLATORS: Stitcher Warming Up
"printer-state-reasons.stitcher-warming-up" = "Stitcher Warming Up";
// TRANSLATORS: Stopped Partly
// TRANSLATORS: Partially stopped
"printer-state-reasons.stopped-partly" = "Stopped Partly";
// TRANSLATORS: Stopping
"printer-state-reasons.stopping" = "Stopping";
@@ -5918,11 +5799,11 @@
"printer-state-reasons.subunit-unrecoverable-storage" = "Subunit Unrecoverable Storage";
// TRANSLATORS: Subunit Warming Up
"printer-state-reasons.subunit-warming-up" = "Subunit Warming Up";
// TRANSLATORS: Timed Out
// TRANSLATORS: Printer stopped responding
"printer-state-reasons.timed-out" = "Timed Out";
// TRANSLATORS: Toner Empty
// TRANSLATORS: Out of toner
"printer-state-reasons.toner-empty" = "Toner Empty";
// TRANSLATORS: Toner Low
// TRANSLATORS: Toner low
"printer-state-reasons.toner-low" = "Toner Low";
// TRANSLATORS: Trimmer Added
"printer-state-reasons.trimmer-added" = "Trimmer Added";
@@ -6078,8 +5959,6 @@
"printer-state.5" = "Stopped";
// TRANSLATORS: Printer Uptime
"printer-up-time" = "Printer Uptime";
// TRANSLATORS: Printer Xri
"printer-xri-requested" = "Printer Xri";
"processing" = "processing";
// TRANSLATORS: Proof Print
"proof-print" = "Proof Print";
@@ -6103,76 +5982,8 @@
"punching-reference-edge.top" = "Top";
"request id is %s-%d (%d file(s))" = "request id is %s-%d (%d file(s))";
"request-id uses indefinite length" = "request-id uses indefinite length";
// TRANSLATORS: Request Power State
"request-power-state" = "Request Power State";
// TRANSLATORS: Requested Attributes
"requested-attributes" = "Requested Attributes";
// TRANSLATORS: Resource Format
"resource-format" = "Resource Format";
// TRANSLATORS: Resource Format Accepted
"resource-format-accepted" = "Resource Format Accepted";
// TRANSLATORS: Resource Formats
"resource-formats" = "Resource Formats";
// TRANSLATORS: Resource ID
"resource-id" = "Resource ID";
// TRANSLATORS: Resource Ids
"resource-ids" = "Resource Ids";
// TRANSLATORS: Resource K Octets
"resource-k-octets" = "Resource K Octets";
// TRANSLATORS: Resource Signature
"resource-signature" = "Resource Signature";
// TRANSLATORS: Resource State
"resource-state" = "Resource State";
// TRANSLATORS: Resource State Reasons
"resource-state-reasons" = "Resource State Reasons";
// TRANSLATORS: Cancel
"resource-state-reasons.cancel-requested" = "Cancel";
// TRANSLATORS: Install
"resource-state-reasons.install-requested" = "Install";
// TRANSLATORS: Resource Incoming
"resource-state-reasons.resource-incoming" = "Resource Incoming";
// TRANSLATORS: Pending
"resource-state.3" = "Pending";
// TRANSLATORS: Available
"resource-state.4" = "Available";
// TRANSLATORS: Installed
"resource-state.5" = "Installed";
// TRANSLATORS: Canceled
"resource-state.6" = "Canceled";
// TRANSLATORS: Aborted
"resource-state.7" = "Aborted";
// TRANSLATORS: Resource States
"resource-states" = "Resource States";
// TRANSLATORS: Resource Type
"resource-type" = "Resource Type";
// TRANSLATORS: Executable Firmware
"resource-type.executable-firmware" = "Executable Firmware";
// TRANSLATORS: Executable Software
"resource-type.executable-software" = "Executable Software";
// TRANSLATORS: Static Font
"resource-type.static-font" = "Static Font";
// TRANSLATORS: Static Form
"resource-type.static-form" = "Static Form";
// TRANSLATORS: Static Icc Profile
"resource-type.static-icc-profile" = "Static Icc Profile";
// TRANSLATORS: Static Image
"resource-type.static-image" = "Static Image";
// TRANSLATORS: Static Logo
"resource-type.static-logo" = "Static Logo";
// TRANSLATORS: Static Other
"resource-type.static-other" = "Static Other";
// TRANSLATORS: Static Strings
"resource-type.static-strings" = "Static Strings";
// TRANSLATORS: Template Document
"resource-type.template-document" = "Template Document";
// TRANSLATORS: Template Job
"resource-type.template-job" = "Template Job";
// TRANSLATORS: Template Printer
"resource-type.template-printer" = "Template Printer";
// TRANSLATORS: Resource Types
"resource-types" = "Resource Types";
// TRANSLATORS: Restart Get Interval
"restart-get-interval" = "Restart Get Interval";
// TRANSLATORS: Retry Interval
"retry-interval" = "Retry Interval";
// TRANSLATORS: Retry Timeout
@@ -6209,12 +6020,6 @@
"separator-sheets-type.slip-sheets" = "Slip Sheets";
// TRANSLATORS: Start Sheet
"separator-sheets-type.start-sheet" = "Start Sheet";
// TRANSLATORS: Collate Copies
"sheet-collate" = "Collate Copies";
// TRANSLATORS: Yes
"sheet-collate.collated" = "Yes";
// TRANSLATORS: No
"sheet-collate.uncollated" = "No";
// TRANSLATORS: 2-Sided Printing
"sides" = "2-Sided Printing";
// TRANSLATORS: Off
@@ -6223,8 +6028,6 @@
"sides.two-sided-long-edge" = "On (Portrait)";
// TRANSLATORS: On (Landscape)
"sides.two-sided-short-edge" = "On (Landscape)";
// TRANSLATORS: Start Power State
"start-power-state" = "Start Power State";
"stat of %s failed: %s" = "stat of %s failed: %s";
"status\t\tShow status of daemon and queue." = "status\t\tShow status of daemon and queue.";
// TRANSLATORS: Status Message
@@ -6282,28 +6085,8 @@
"subscription-privacy-scope.owner" = "Owner";
"system default destination: %s" = "system default destination: %s";
"system default destination: %s/%s" = "system default destination: %s/%s";
// TRANSLATORS: System State
"system-state" = "System State";
// TRANSLATORS: System State Reasons
"system-state-reasons" = "System State Reasons";
// TRANSLATORS: Idle
"system-state.3" = "Idle";
// TRANSLATORS: Processing
"system-state.4" = "Processing";
// TRANSLATORS: Stopped
"system-state.5" = "Stopped";
// TRANSLATORS: System URI
"system-uri" = "System URI";
// TRANSLATORS: T33 Subaddress
"t33-subaddress" = "T33 Subaddress";
// TRANSLATORS: Timeout Predicate
"timeout-predicate" = "Timeout Predicate";
// TRANSLATORS: Activity
"timeout-predicate.activity" = "Activity";
// TRANSLATORS: Inactivity
"timeout-predicate.inactivity" = "Inactivity";
// TRANSLATORS: None
"timeout-predicate.none" = "None";
// TRANSLATORS: To Name
"to-name" = "To Name";
// TRANSLATORS: Transmission Status
@@ -6361,22 +6144,6 @@
"unknown" = "unknown";
"untitled" = "untitled";
"variable-bindings uses indefinite length" = "variable-bindings uses indefinite length";
// TRANSLATORS: Which Printers
"which-printers" = "Which Printers";
// TRANSLATORS: All
"which-printers.all" = "All";
// TRANSLATORS: Idle
"which-printers.idle" = "Idle";
// TRANSLATORS: Not Accepting
"which-printers.not-accepting" = "Not Accepting";
// TRANSLATORS: Processing
"which-printers.processing" = "Processing";
// TRANSLATORS: Shutdown
"which-printers.shutdown" = "Shutdown";
// TRANSLATORS: Stopped
"which-printers.stopped" = "Stopped";
// TRANSLATORS: Testing
"which-printers.testing" = "Testing";
// TRANSLATORS: X Accuracy
"x-accuracy" = "X Accuracy";
// TRANSLATORS: X Dimension
+291 -756
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+291 -756
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+298 -763
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+346 -853
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+291 -756
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+291 -756
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+291 -756
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+291 -756
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+291 -756
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+291 -756
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+291 -756
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+173 -407
Ver Arquivo
@@ -250,8 +250,6 @@ _("document-state.7");
_("document-state.8");
/* TRANSLATORS: Completed */
_("document-state.9");
/* TRANSLATORS: End Power State */
_("end-power-state");
/* TRANSLATORS: Feed Orientation */
_("feed-orientation");
/* TRANSLATORS: Long Edge First */
@@ -756,100 +754,6 @@ _("imposition-template");
_("imposition-template.none");
/* TRANSLATORS: Signature */
_("imposition-template.signature");
/* TRANSLATORS: Scanner Options */
_("input-attributes");
/* TRANSLATORS: Scan Auto Scaling */
_("input-auto-scaling");
/* TRANSLATORS: Scan Auto Skew Correction */
_("input-auto-skew-correction");
/* TRANSLATORS: Scan Brightness */
_("input-brightness");
/* TRANSLATORS: Scanning Mode */
_("input-color-mode");
/* TRANSLATORS: Automatic */
_("input-color-mode.auto");
/* TRANSLATORS: Text */
_("input-color-mode.bi-level");
/* TRANSLATORS: 16-bit CMYK */
_("input-color-mode.cmyk_16");
/* TRANSLATORS: 8-bit CMYK */
_("input-color-mode.cmyk_8");
/* TRANSLATORS: Color */
_("input-color-mode.color");
/* TRANSLATORS: 8-bit Color */
_("input-color-mode.color_8");
/* TRANSLATORS: Monochrome */
_("input-color-mode.monochrome");
/* TRANSLATORS: 16-bit Monochrome */
_("input-color-mode.monochrome_16");
/* TRANSLATORS: 4-bit Monochrome */
_("input-color-mode.monochrome_4");
/* TRANSLATORS: 8-bit Monochrome */
_("input-color-mode.monochrome_8");
/* TRANSLATORS: 16-bit RGB */
_("input-color-mode.rgb_16");
/* TRANSLATORS: 16-bit RGBA */
_("input-color-mode.rgba_16");
/* TRANSLATORS: 8-bit RGBA */
_("input-color-mode.rgba_8");
/* TRANSLATORS: Scan Content */
_("input-content-type");
/* TRANSLATORS: Automatic */
_("input-content-type.auto");
/* TRANSLATORS: Halftone */
_("input-content-type.halftone");
/* TRANSLATORS: Line Art */
_("input-content-type.line-art");
/* TRANSLATORS: Magazine */
_("input-content-type.magazine");
/* TRANSLATORS: Photo */
_("input-content-type.photo");
/* TRANSLATORS: Text */
_("input-content-type.text");
/* TRANSLATORS: Text And Photo */
_("input-content-type.text-and-photo");
/* TRANSLATORS: Scan Contrast */
_("input-contrast");
/* TRANSLATORS: Film Type */
_("input-film-scan-mode");
/* TRANSLATORS: Black And White Negative Film */
_("input-film-scan-mode.black-and-white-negative-film");
/* TRANSLATORS: Color Negative Film */
_("input-film-scan-mode.color-negative-film");
/* TRANSLATORS: Color Slide Film */
_("input-film-scan-mode.color-slide-film");
/* TRANSLATORS: Not Applicable */
_("input-film-scan-mode.not-applicable");
/* TRANSLATORS: Scan Images To Transfer */
_("input-images-to-transfer");
/* TRANSLATORS: Scan Media */
_("input-media");
/* TRANSLATORS: Automatic */
_("input-media.auto");
/* TRANSLATORS: Scan Orientation */
_("input-orientation-requested");
/* TRANSLATORS: Scan Quality */
_("input-quality");
/* TRANSLATORS: Scan Resolution */
_("input-resolution");
/* TRANSLATORS: Scan Scaling Height */
_("input-scaling-height");
/* TRANSLATORS: Scan Scaling Width */
_("input-scaling-width");
/* TRANSLATORS: Scan Regions */
_("input-scan-regions");
/* TRANSLATORS: Scan Sharpness */
_("input-sharpness");
/* TRANSLATORS: 2-Sided Scanning */
_("input-sides");
/* TRANSLATORS: Scan Source */
_("input-source");
/* TRANSLATORS: Automatic Document Feeder */
_("input-source.adf");
/* TRANSLATORS: Film Reader */
_("input-source.film-reader");
/* TRANSLATORS: Platen */
_("input-source.platen");
/* TRANSLATORS: Insert Page Number */
_("insert-after-page-number");
/* TRANSLATORS: Insert Count */
@@ -878,14 +782,8 @@ _("job-accounting-sheets-type.none");
_("job-accounting-sheets-type.standard");
/* TRANSLATORS: Job Accounting User ID */
_("job-accounting-user-id");
/* TRANSLATORS: Collate Copies */
_("job-collation-type");
/* TRANSLATORS: Uncollated Sheets */
_("job-collation-type.3");
/* TRANSLATORS: Collated Documents */
_("job-collation-type.4");
/* TRANSLATORS: Uncollated Documents */
_("job-collation-type.5");
/* TRANSLATORS: Job Cancel After */
_("job-cancel-after");
/* TRANSLATORS: Copies */
_("job-copies");
/* TRANSLATORS: Back Cover */
@@ -994,8 +892,22 @@ _("job-privacy-scope.none");
_("job-privacy-scope.owner");
/* TRANSLATORS: Job Recipient Name */
_("job-recipient-name");
/* TRANSLATORS: Job Resource Ids */
_("job-resource-ids");
/* TRANSLATORS: Job Retain Until */
_("job-retain-until");
/* TRANSLATORS: Job Retain Until Interval */
_("job-retain-until-interval");
/* TRANSLATORS: Job Retain Until Time */
_("job-retain-until-time");
/* TRANSLATORS: End Of Day */
_("job-retain-until.end-of-day");
/* TRANSLATORS: End Of Month */
_("job-retain-until.end-of-month");
/* TRANSLATORS: End Of Week */
_("job-retain-until.end-of-week");
/* TRANSLATORS: Indefinite */
_("job-retain-until.indefinite");
/* TRANSLATORS: None */
_("job-retain-until.none");
/* TRANSLATORS: Job Save Disposition */
_("job-save-disposition");
/* TRANSLATORS: Job Sheet Message */
@@ -1022,7 +934,7 @@ _("job-state");
_("job-state-message");
/* TRANSLATORS: Detailed Job State */
_("job-state-reasons");
/* TRANSLATORS: Aborted By System */
/* TRANSLATORS: Stopping */
_("job-state-reasons.aborted-by-system");
/* TRANSLATORS: Account Authorization Failed */
_("job-state-reasons.account-authorization-failed");
@@ -1032,7 +944,7 @@ _("job-state-reasons.account-closed");
_("job-state-reasons.account-info-needed");
/* TRANSLATORS: Account Limit Reached */
_("job-state-reasons.account-limit-reached");
/* TRANSLATORS: Compression Error */
/* TRANSLATORS: Decompression error */
_("job-state-reasons.compression-error");
/* TRANSLATORS: Conflicting Attributes */
_("job-state-reasons.conflicting-attributes");
@@ -1060,19 +972,19 @@ _("job-state-reasons.document-security-error");
_("job-state-reasons.document-unprintable-error");
/* TRANSLATORS: Errors Detected */
_("job-state-reasons.errors-detected");
/* TRANSLATORS: Job Canceled At Device */
/* TRANSLATORS: Canceled at printer */
_("job-state-reasons.job-canceled-at-device");
/* TRANSLATORS: Job Canceled By Operator */
/* TRANSLATORS: Canceled by operator */
_("job-state-reasons.job-canceled-by-operator");
/* TRANSLATORS: Job Canceled By User */
/* TRANSLATORS: Canceled by user */
_("job-state-reasons.job-canceled-by-user");
/* TRANSLATORS: Job Completed Successfully */
/* TRANSLATORS: */
_("job-state-reasons.job-completed-successfully");
/* TRANSLATORS: Job Completed With Errors */
/* TRANSLATORS: Completed with errors */
_("job-state-reasons.job-completed-with-errors");
/* TRANSLATORS: Job Completed With Warnings */
/* TRANSLATORS: Completed with warnings */
_("job-state-reasons.job-completed-with-warnings");
/* TRANSLATORS: Job Data Insufficient */
/* TRANSLATORS: Insufficient data */
_("job-state-reasons.job-data-insufficient");
/* TRANSLATORS: Job Delay Output Until Specified */
_("job-state-reasons.job-delay-output-until-specified");
@@ -1082,13 +994,13 @@ _("job-state-reasons.job-digital-signature-wait");
_("job-state-reasons.job-fetchable");
/* TRANSLATORS: Job Held For Review */
_("job-state-reasons.job-held-for-review");
/* TRANSLATORS: Job Hold Until Specified */
/* TRANSLATORS: Job held */
_("job-state-reasons.job-hold-until-specified");
/* TRANSLATORS: Job Incoming */
/* TRANSLATORS: Incoming */
_("job-state-reasons.job-incoming");
/* TRANSLATORS: Job Interpreting */
/* TRANSLATORS: Interpreting */
_("job-state-reasons.job-interpreting");
/* TRANSLATORS: Job Outgoing */
/* TRANSLATORS: Outgoing */
_("job-state-reasons.job-outgoing");
/* TRANSLATORS: Job Password Wait */
_("job-state-reasons.job-password-wait");
@@ -1098,15 +1010,15 @@ _("job-state-reasons.job-printed-successfully");
_("job-state-reasons.job-printed-with-errors");
/* TRANSLATORS: Job Printed With Warnings */
_("job-state-reasons.job-printed-with-warnings");
/* TRANSLATORS: Job Printing */
/* TRANSLATORS: Printing */
_("job-state-reasons.job-printing");
/* TRANSLATORS: Job Queued */
/* TRANSLATORS: Preparing to print */
_("job-state-reasons.job-queued");
/* TRANSLATORS: Job Queued For Marker */
/* TRANSLATORS: Processing document */
_("job-state-reasons.job-queued-for-marker");
/* TRANSLATORS: Job Release Wait */
_("job-state-reasons.job-release-wait");
/* TRANSLATORS: Job Restartable */
/* TRANSLATORS: Restartable */
_("job-state-reasons.job-restartable");
/* TRANSLATORS: Job Resuming */
_("job-state-reasons.job-resuming");
@@ -1122,7 +1034,7 @@ _("job-state-reasons.job-saving");
_("job-state-reasons.job-spooling");
/* TRANSLATORS: Job Streaming */
_("job-state-reasons.job-streaming");
/* TRANSLATORS: Job Suspended */
/* TRANSLATORS: Suspended */
_("job-state-reasons.job-suspended");
/* TRANSLATORS: Job Suspended By Operator */
_("job-state-reasons.job-suspended-by-operator");
@@ -1134,23 +1046,23 @@ _("job-state-reasons.job-suspended-by-user");
_("job-state-reasons.job-suspending");
/* TRANSLATORS: Job Transferring */
_("job-state-reasons.job-transferring");
/* TRANSLATORS: Job Transforming */
/* TRANSLATORS: Transforming */
_("job-state-reasons.job-transforming");
/* TRANSLATORS: None */
_("job-state-reasons.none");
/* TRANSLATORS: Printer Stopped */
/* TRANSLATORS: Printer offline */
_("job-state-reasons.printer-stopped");
/* TRANSLATORS: Printer Stopped Partly */
/* TRANSLATORS: Printer partially stopped */
_("job-state-reasons.printer-stopped-partly");
/* TRANSLATORS: Processing To Stop Point */
/* TRANSLATORS: Stopping */
_("job-state-reasons.processing-to-stop-point");
/* TRANSLATORS: Queued In Device */
/* TRANSLATORS: Ready */
_("job-state-reasons.queued-in-device");
/* TRANSLATORS: Resources Are Not Ready */
_("job-state-reasons.resources-are-not-ready");
/* TRANSLATORS: Resources Are Not Supported */
_("job-state-reasons.resources-are-not-supported");
/* TRANSLATORS: Service Off Line */
/* TRANSLATORS: Service offline */
_("job-state-reasons.service-off-line");
/* TRANSLATORS: Submission Interrupted */
_("job-state-reasons.submission-interrupted");
@@ -2080,6 +1992,8 @@ _("media.jis_exec_216x330mm");
_("media.jpn_chou2_111.1x146mm");
/* TRANSLATORS: Envelope Chou 3 */
_("media.jpn_chou3_120x235mm");
/* TRANSLATORS: Envelope Chou 40 */
_("media.jpn_chou40_90x225mm");
/* TRANSLATORS: Envelope Chou 4 */
_("media.jpn_chou4_90x205mm");
/* TRANSLATORS: Hagaki */
@@ -2372,10 +2286,6 @@ _("notify-events.job-stopped");
_("notify-events.none");
/* TRANSLATORS: Printer Config Changed */
_("notify-events.printer-config-changed");
/* TRANSLATORS: Printer Created */
_("notify-events.printer-created");
/* TRANSLATORS: Printer Deleted */
_("notify-events.printer-deleted");
/* TRANSLATORS: Printer Finishings Changed */
_("notify-events.printer-finishings-changed");
/* TRANSLATORS: Printer Media Changed */
@@ -2390,26 +2300,6 @@ _("notify-events.printer-shutdown");
_("notify-events.printer-state-changed");
/* TRANSLATORS: Printer Stopped */
_("notify-events.printer-stopped");
/* TRANSLATORS: Resource Canceled */
_("notify-events.resource-canceled");
/* TRANSLATORS: Resource Config Changed */
_("notify-events.resource-config-changed");
/* TRANSLATORS: Resource Created */
_("notify-events.resource-created");
/* TRANSLATORS: Resource Installed */
_("notify-events.resource-installed");
/* TRANSLATORS: Resource State Changed */
_("notify-events.resource-state-changed");
/* TRANSLATORS: System Config Changed */
_("notify-events.system-config-changed");
/* TRANSLATORS: System Restarted */
_("notify-events.system-restarted");
/* TRANSLATORS: System Shutdown */
_("notify-events.system-shutdown");
/* TRANSLATORS: System State Changed */
_("notify-events.system-state-changed");
/* TRANSLATORS: System Stopped */
_("notify-events.system-stopped");
/* TRANSLATORS: Notify Get Interval */
_("notify-get-interval");
/* TRANSLATORS: Notify Lease Duration */
@@ -2588,94 +2478,6 @@ _("platform-shape.rectangle");
_("platform-temperature");
/* TRANSLATORS: Post-dial String */
_("post-dial-string");
/* TRANSLATORS: Power State */
_("power-state");
/* TRANSLATORS: Reset Mbr */
_("power-state.100");
/* TRANSLATORS: Reset Nmi */
_("power-state.110");
/* TRANSLATORS: Off Soft Graceful */
_("power-state.120");
/* TRANSLATORS: Off Hard Graceful */
_("power-state.130");
/* TRANSLATORS: Reset Mbr Graceful */
_("power-state.140");
/* TRANSLATORS: Reset Soft Graceful */
_("power-state.150");
/* TRANSLATORS: Reset Hard Graceful */
_("power-state.160");
/* TRANSLATORS: Reset Init */
_("power-state.170");
/* TRANSLATORS: Not Applicable */
_("power-state.180");
/* TRANSLATORS: No Change */
_("power-state.190");
/* TRANSLATORS: On */
_("power-state.20");
/* TRANSLATORS: On Vendor1 */
_("power-state.21");
/* TRANSLATORS: On Vendor2 */
_("power-state.22");
/* TRANSLATORS: On Vendor3 */
_("power-state.23");
/* TRANSLATORS: On Vendor4 */
_("power-state.24");
/* TRANSLATORS: On Vendor5 */
_("power-state.25");
/* TRANSLATORS: Standby */
_("power-state.30");
/* TRANSLATORS: Standby Vendor1 */
_("power-state.31");
/* TRANSLATORS: Standby Vendor2 */
_("power-state.32");
/* TRANSLATORS: Standby Vendor3 */
_("power-state.33");
/* TRANSLATORS: Standby Vendor4 */
_("power-state.34");
/* TRANSLATORS: Standby Vendor5 */
_("power-state.35");
/* TRANSLATORS: Suspend */
_("power-state.40");
/* TRANSLATORS: Suspend Vendor1 */
_("power-state.41");
/* TRANSLATORS: Suspend Vendor2 */
_("power-state.42");
/* TRANSLATORS: Suspend Vendor3 */
_("power-state.43");
/* TRANSLATORS: Suspend Vendor4 */
_("power-state.44");
/* TRANSLATORS: Suspend Vendor5 */
_("power-state.45");
/* TRANSLATORS: Reset Soft */
_("power-state.50");
/* TRANSLATORS: Off Hard */
_("power-state.60");
/* TRANSLATORS: Hibernate */
_("power-state.70");
/* TRANSLATORS: Hibernate Vendor1 */
_("power-state.71");
/* TRANSLATORS: Hibernate Vendor2 */
_("power-state.72");
/* TRANSLATORS: Hibernate Vendor3 */
_("power-state.73");
/* TRANSLATORS: Hibernate Vendor4 */
_("power-state.74");
/* TRANSLATORS: Hibernate Vendor5 */
_("power-state.75");
/* TRANSLATORS: Off Soft */
_("power-state.80");
/* TRANSLATORS: Off Soft Vendor1 */
_("power-state.81");
/* TRANSLATORS: Off Soft Vendor2 */
_("power-state.82");
/* TRANSLATORS: Off Soft Vendor3 */
_("power-state.83");
/* TRANSLATORS: Off Soft Vendor4 */
_("power-state.84");
/* TRANSLATORS: Off Soft Vendor5 */
_("power-state.85");
/* TRANSLATORS: Reset Hard */
_("power-state.90");
/* TRANSLATORS: Pre-dial String */
_("pre-dial-string");
/* TRANSLATORS: Number-Up Layout */
@@ -2732,16 +2534,22 @@ _("print-color-mode.process-bi-level");
_("print-color-mode.process-monochrome");
/* TRANSLATORS: Print Optimization */
_("print-content-optimize");
/* TRANSLATORS: Print Content Optimize Actual */
_("print-content-optimize-actual");
/* TRANSLATORS: Automatic */
_("print-content-optimize.auto");
/* TRANSLATORS: Graphics */
_("print-content-optimize.graphic");
/* TRANSLATORS: Graphics */
_("print-content-optimize.graphics");
/* TRANSLATORS: Photo */
_("print-content-optimize.photo");
/* TRANSLATORS: Text */
_("print-content-optimize.text");
/* TRANSLATORS: Text and Graphics */
_("print-content-optimize.text-and-graphic");
/* TRANSLATORS: Text And Graphics */
_("print-content-optimize.text-and-graphics");
/* TRANSLATORS: Print Objects */
_("print-objects");
/* TRANSLATORS: Print Quality */
@@ -2788,34 +2596,30 @@ _("print-supports.material");
_("print-supports.none");
/* TRANSLATORS: Standard */
_("print-supports.standard");
/* TRANSLATORS: Printer Geo Location */
_("printer-geo-location");
/* TRANSLATORS: Printer ID */
_("printer-id");
/* TRANSLATORS: Printer Ids */
_("printer-ids");
/* TRANSLATORS: Printer Location */
_("printer-location");
/* TRANSLATORS: Printer Kind */
_("printer-kind");
/* TRANSLATORS: Disc */
_("printer-kind.disc");
/* TRANSLATORS: Document */
_("printer-kind.document");
/* TRANSLATORS: Envelope */
_("printer-kind.envelope");
/* TRANSLATORS: Label */
_("printer-kind.label");
/* TRANSLATORS: Large Format */
_("printer-kind.large-format");
/* TRANSLATORS: Photo */
_("printer-kind.photo");
/* TRANSLATORS: Postcard */
_("printer-kind.postcard");
/* TRANSLATORS: Receipt */
_("printer-kind.receipt");
/* TRANSLATORS: Roll */
_("printer-kind.roll");
/* TRANSLATORS: Message From Operator */
_("printer-message-from-operator");
/* TRANSLATORS: Print Resolution */
_("printer-resolution");
/* TRANSLATORS: Printer Service Type */
_("printer-service-type");
/* TRANSLATORS: Copy */
_("printer-service-type.copy");
/* TRANSLATORS: Faxin */
_("printer-service-type.faxin");
/* TRANSLATORS: Faxout */
_("printer-service-type.faxout");
/* TRANSLATORS: Print */
_("printer-service-type.print");
/* TRANSLATORS: Print3d */
_("printer-service-type.print3d");
/* TRANSLATORS: Scan */
_("printer-service-type.scan");
/* TRANSLATORS: Transform */
_("printer-service-type.transform");
/* TRANSLATORS: Printer State */
_("printer-state");
/* TRANSLATORS: Detailed Printer State */
@@ -2990,8 +2794,6 @@ _("printer-state-reasons.connecting-to-device");
_("printer-state-reasons.cover-open");
/* TRANSLATORS: Deactivated */
_("printer-state-reasons.deactivated");
/* TRANSLATORS: Deleted */
_("printer-state-reasons.deleted");
/* TRANSLATORS: Developer Empty */
_("printer-state-reasons.developer-empty");
/* TRANSLATORS: Developer Low */
@@ -3084,6 +2886,16 @@ _("printer-state-reasons.extruder-temperature-high");
_("printer-state-reasons.extruder-temperature-low");
/* TRANSLATORS: Fan Failure */
_("printer-state-reasons.fan-failure");
/* TRANSLATORS: Fax Modem Life Almost Over */
_("printer-state-reasons.fax-modem-life-almost-over");
/* TRANSLATORS: Fax Modem Life Over */
_("printer-state-reasons.fax-modem-life-over");
/* TRANSLATORS: Fax Modem Missing */
_("printer-state-reasons.fax-modem-missing");
/* TRANSLATORS: Fax Modem Turned Off */
_("printer-state-reasons.fax-modem-turned-off");
/* TRANSLATORS: Fax Modem Turned On */
_("printer-state-reasons.fax-modem-turned-on");
/* TRANSLATORS: Folder Added */
_("printer-state-reasons.folder-added");
/* TRANSLATORS: Folder Almost Empty */
@@ -3156,9 +2968,9 @@ _("printer-state-reasons.folder-unrecoverable-failure");
_("printer-state-reasons.folder-unrecoverable-storage-error");
/* TRANSLATORS: Folder Warming Up */
_("printer-state-reasons.folder-warming-up");
/* TRANSLATORS: Fuser Over Temp */
/* TRANSLATORS: Fuser temperature high */
_("printer-state-reasons.fuser-over-temp");
/* TRANSLATORS: Fuser Under Temp */
/* TRANSLATORS: Fuser temperature low */
_("printer-state-reasons.fuser-under-temp");
/* TRANSLATORS: Hold New Jobs */
_("printer-state-reasons.hold-new-jobs");
@@ -3246,13 +3058,27 @@ _("printer-state-reasons.input-media-color-change");
_("printer-state-reasons.input-media-form-parts-change");
/* TRANSLATORS: Input Media Size Change */
_("printer-state-reasons.input-media-size-change");
/* TRANSLATORS: Input Media Tray Failure */
_("printer-state-reasons.input-media-tray-failure");
/* TRANSLATORS: Input Media Tray Feed Error */
_("printer-state-reasons.input-media-tray-feed-error");
/* TRANSLATORS: Input Media Tray Jam */
_("printer-state-reasons.input-media-tray-jam");
/* TRANSLATORS: Input Media Type Change */
_("printer-state-reasons.input-media-type-change");
/* TRANSLATORS: Input Media Weight Change */
_("printer-state-reasons.input-media-weight-change");
/* TRANSLATORS: Input Pick Roller Failure */
_("printer-state-reasons.input-pick-roller-failure");
/* TRANSLATORS: Input Pick Roller Life Over */
_("printer-state-reasons.input-pick-roller-life-over");
/* TRANSLATORS: Input Pick Roller Life Warn */
_("printer-state-reasons.input-pick-roller-life-warn");
/* TRANSLATORS: Input Pick Roller Missing */
_("printer-state-reasons.input-pick-roller-missing");
/* TRANSLATORS: Input Tray Elevation Failure */
_("printer-state-reasons.input-tray-elevation-failure");
/* TRANSLATORS: Input Tray Missing */
/* TRANSLATORS: Paper tray is missing */
_("printer-state-reasons.input-tray-missing");
/* TRANSLATORS: Input Tray Position Failure */
_("printer-state-reasons.input-tray-position-failure");
@@ -3346,7 +3172,7 @@ _("printer-state-reasons.interpreter-memory-increase");
_("printer-state-reasons.interpreter-resource-added");
/* TRANSLATORS: Interpreter Resource Deleted */
_("printer-state-reasons.interpreter-resource-deleted");
/* TRANSLATORS: Interpreter Resource Unavailable */
/* TRANSLATORS: Printer resource unavailable */
_("printer-state-reasons.interpreter-resource-unavailable");
/* TRANSLATORS: Lamp At End of Life */
_("printer-state-reasons.lamp-at-eol");
@@ -3434,10 +3260,16 @@ _("printer-state-reasons.make-envelope-unrecoverable-storage-error");
_("printer-state-reasons.make-envelope-warming-up");
/* TRANSLATORS: Marker Adjusting Print Quality */
_("printer-state-reasons.marker-adjusting-print-quality");
/* TRANSLATORS: Marker Cleaner Missing */
_("printer-state-reasons.marker-cleaner-missing");
/* TRANSLATORS: Marker Developer Almost Empty */
_("printer-state-reasons.marker-developer-almost-empty");
/* TRANSLATORS: Marker Developer Empty */
_("printer-state-reasons.marker-developer-empty");
/* TRANSLATORS: Marker Developer Missing */
_("printer-state-reasons.marker-developer-missing");
/* TRANSLATORS: Marker Fuser Missing */
_("printer-state-reasons.marker-fuser-missing");
/* TRANSLATORS: Marker Fuser Thermistor Failure */
_("printer-state-reasons.marker-fuser-thermistor-failure");
/* TRANSLATORS: Marker Fuser Timing Failure */
@@ -3446,28 +3278,46 @@ _("printer-state-reasons.marker-fuser-timing-failure");
_("printer-state-reasons.marker-ink-almost-empty");
/* TRANSLATORS: Marker Ink Empty */
_("printer-state-reasons.marker-ink-empty");
/* TRANSLATORS: Marker Ink Missing */
_("printer-state-reasons.marker-ink-missing");
/* TRANSLATORS: Marker Opc Missing */
_("printer-state-reasons.marker-opc-missing");
/* TRANSLATORS: Marker Print Ribbon Almost Empty */
_("printer-state-reasons.marker-print-ribbon-almost-empty");
/* TRANSLATORS: Marker Print Ribbon Empty */
_("printer-state-reasons.marker-print-ribbon-empty");
/* TRANSLATORS: Marker Supply Empty */
/* TRANSLATORS: Marker Print Ribbon Missing */
_("printer-state-reasons.marker-print-ribbon-missing");
/* TRANSLATORS: Marker Supply Almost Empty */
_("printer-state-reasons.marker-supply-almost-empty");
/* TRANSLATORS: Ink/toner empty */
_("printer-state-reasons.marker-supply-empty");
/* TRANSLATORS: Marker Supply Low */
/* TRANSLATORS: Ink/toner low */
_("printer-state-reasons.marker-supply-low");
/* TRANSLATORS: Marker Supply Missing */
_("printer-state-reasons.marker-supply-missing");
/* TRANSLATORS: Marker Toner Cartridge Missing */
_("printer-state-reasons.marker-toner-cartridge-missing");
/* TRANSLATORS: Marker Waste Almost Full */
/* TRANSLATORS: Marker Toner Missing */
_("printer-state-reasons.marker-toner-missing");
/* TRANSLATORS: Ink/toner waste bin almost full */
_("printer-state-reasons.marker-waste-almost-full");
/* TRANSLATORS: Marker Waste Full */
/* TRANSLATORS: Ink/toner waste bin full */
_("printer-state-reasons.marker-waste-full");
/* TRANSLATORS: Marker Waste Ink Receptacle Almost Full */
_("printer-state-reasons.marker-waste-ink-receptacle-almost-full");
/* TRANSLATORS: Marker Waste Ink Receptacle Full */
_("printer-state-reasons.marker-waste-ink-receptacle-full");
/* TRANSLATORS: Marker Waste Ink Receptacle Missing */
_("printer-state-reasons.marker-waste-ink-receptacle-missing");
/* TRANSLATORS: Marker Waste Missing */
_("printer-state-reasons.marker-waste-missing");
/* TRANSLATORS: Marker Waste Toner Receptacle Almost Full */
_("printer-state-reasons.marker-waste-toner-receptacle-almost-full");
/* TRANSLATORS: Marker Waste Toner Receptacle Full */
_("printer-state-reasons.marker-waste-toner-receptacle-full");
/* TRANSLATORS: Marker Waste Toner Receptacle Missing */
_("printer-state-reasons.marker-waste-toner-receptacle-missing");
/* TRANSLATORS: Material Empty */
_("printer-state-reasons.material-empty");
/* TRANSLATORS: Material Low */
@@ -3476,41 +3326,73 @@ _("printer-state-reasons.material-low");
_("printer-state-reasons.material-needed");
/* TRANSLATORS: Media Drying */
_("printer-state-reasons.media-drying");
/* TRANSLATORS: Media Empty */
/* TRANSLATORS: Paper tray is empty */
_("printer-state-reasons.media-empty");
/* TRANSLATORS: Media Jam */
/* TRANSLATORS: Paper jam */
_("printer-state-reasons.media-jam");
/* TRANSLATORS: Media Low */
/* TRANSLATORS: Paper tray is almost empty */
_("printer-state-reasons.media-low");
/* TRANSLATORS: Media Needed */
/* TRANSLATORS: Load paper */
_("printer-state-reasons.media-needed");
/* TRANSLATORS: Media Path Cannot Do 2-Sided Printing */
_("printer-state-reasons.media-path-cannot-duplex-media-selected");
/* TRANSLATORS: Media Path Failure */
_("printer-state-reasons.media-path-failure");
/* TRANSLATORS: Media Path Input Empty */
_("printer-state-reasons.media-path-input-empty");
/* TRANSLATORS: Media Path Input Feed Error */
_("printer-state-reasons.media-path-input-feed-error");
/* TRANSLATORS: Media Path Input Jam */
_("printer-state-reasons.media-path-input-jam");
/* TRANSLATORS: Media Path Input Request */
_("printer-state-reasons.media-path-input-request");
/* TRANSLATORS: Media Path Jam */
_("printer-state-reasons.media-path-jam");
/* TRANSLATORS: Media Path Media Tray Almost Full */
_("printer-state-reasons.media-path-media-tray-almost-full");
/* TRANSLATORS: Media Path Media Tray Full */
_("printer-state-reasons.media-path-media-tray-full");
/* TRANSLATORS: Media Path Media Tray Missing */
_("printer-state-reasons.media-path-media-tray-missing");
/* TRANSLATORS: Media Path Output Feed Error */
_("printer-state-reasons.media-path-output-feed-error");
/* TRANSLATORS: Media Path Output Full */
_("printer-state-reasons.media-path-output-full");
/* TRANSLATORS: Media Path Output Jam */
_("printer-state-reasons.media-path-output-jam");
/* TRANSLATORS: Media Path Pick Roller Failure */
_("printer-state-reasons.media-path-pick-roller-failure");
/* TRANSLATORS: Media Path Pick Roller Life Over */
_("printer-state-reasons.media-path-pick-roller-life-over");
/* TRANSLATORS: Media Path Pick Roller Life Warn */
_("printer-state-reasons.media-path-pick-roller-life-warn");
/* TRANSLATORS: Media Path Pick Roller Missing */
_("printer-state-reasons.media-path-pick-roller-missing");
/* TRANSLATORS: Motor Failure */
_("printer-state-reasons.motor-failure");
/* TRANSLATORS: Moving To Paused */
/* TRANSLATORS: Printer going offline */
_("printer-state-reasons.moving-to-paused");
/* TRANSLATORS: None */
_("printer-state-reasons.none");
/* TRANSLATORS: Optical Photoconductor Life Over */
_("printer-state-reasons.opc-life-over");
/* TRANSLATORS: Optical Photoconductor Near End-of-life */
/* TRANSLATORS: OPC almost at end-of-life */
_("printer-state-reasons.opc-near-eol");
/* TRANSLATORS: Other */
/* TRANSLATORS: Check the printer for errors */
_("printer-state-reasons.other");
/* TRANSLATORS: Output Area Almost Full */
/* TRANSLATORS: Output bin is almost full */
_("printer-state-reasons.output-area-almost-full");
/* TRANSLATORS: Output Area Full */
/* TRANSLATORS: Output bin is full */
_("printer-state-reasons.output-area-full");
/* TRANSLATORS: Output Mailbox Select Failure */
_("printer-state-reasons.output-mailbox-select-failure");
/* TRANSLATORS: Output Tray Missing */
/* TRANSLATORS: Output Media Tray Failure */
_("printer-state-reasons.output-media-tray-failure");
/* TRANSLATORS: Output Media Tray Feed Error */
_("printer-state-reasons.output-media-tray-feed-error");
/* TRANSLATORS: Output Media Tray Jam */
_("printer-state-reasons.output-media-tray-jam");
/* TRANSLATORS: Output tray is missing */
_("printer-state-reasons.output-tray-missing");
/* TRANSLATORS: Paused */
_("printer-state-reasons.paused");
@@ -3678,8 +3560,6 @@ _("printer-state-reasons.puncher-unrecoverable-failure");
_("printer-state-reasons.puncher-unrecoverable-storage-error");
/* TRANSLATORS: Puncher Warming Up */
_("printer-state-reasons.puncher-warming-up");
/* TRANSLATORS: Resuming */
_("printer-state-reasons.resuming");
/* TRANSLATORS: Separation Cutter Added */
_("printer-state-reasons.separation-cutter-added");
/* TRANSLATORS: Separation Cutter Almost Empty */
@@ -3824,7 +3704,7 @@ _("printer-state-reasons.sheet-rotator-unrecoverable-failure");
_("printer-state-reasons.sheet-rotator-unrecoverable-storage-error");
/* TRANSLATORS: Sheet Rotator Warming Up */
_("printer-state-reasons.sheet-rotator-warming-up");
/* TRANSLATORS: Shutdown */
/* TRANSLATORS: Printer offline */
_("printer-state-reasons.shutdown");
/* TRANSLATORS: Slitter Added */
_("printer-state-reasons.slitter-added");
@@ -4116,7 +3996,7 @@ _("printer-state-reasons.stitcher-unrecoverable-failure");
_("printer-state-reasons.stitcher-unrecoverable-storage-error");
/* TRANSLATORS: Stitcher Warming Up */
_("printer-state-reasons.stitcher-warming-up");
/* TRANSLATORS: Stopped Partly */
/* TRANSLATORS: Partially stopped */
_("printer-state-reasons.stopped-partly");
/* TRANSLATORS: Stopping */
_("printer-state-reasons.stopping");
@@ -4182,11 +4062,11 @@ _("printer-state-reasons.subunit-unrecoverable-failure");
_("printer-state-reasons.subunit-unrecoverable-storage");
/* TRANSLATORS: Subunit Warming Up */
_("printer-state-reasons.subunit-warming-up");
/* TRANSLATORS: Timed Out */
/* TRANSLATORS: Printer stopped responding */
_("printer-state-reasons.timed-out");
/* TRANSLATORS: Toner Empty */
/* TRANSLATORS: Out of toner */
_("printer-state-reasons.toner-empty");
/* TRANSLATORS: Toner Low */
/* TRANSLATORS: Toner low */
_("printer-state-reasons.toner-low");
/* TRANSLATORS: Trimmer Added */
_("printer-state-reasons.trimmer-added");
@@ -4342,8 +4222,6 @@ _("printer-state.4");
_("printer-state.5");
/* TRANSLATORS: Printer Uptime */
_("printer-up-time");
/* TRANSLATORS: Printer Xri */
_("printer-xri-requested");
/* TRANSLATORS: Proof Print */
_("proof-print");
/* TRANSLATORS: Proof Print Copies */
@@ -4364,76 +4242,8 @@ _("punching-reference-edge.left");
_("punching-reference-edge.right");
/* TRANSLATORS: Top */
_("punching-reference-edge.top");
/* TRANSLATORS: Request Power State */
_("request-power-state");
/* TRANSLATORS: Requested Attributes */
_("requested-attributes");
/* TRANSLATORS: Resource Format */
_("resource-format");
/* TRANSLATORS: Resource Format Accepted */
_("resource-format-accepted");
/* TRANSLATORS: Resource Formats */
_("resource-formats");
/* TRANSLATORS: Resource ID */
_("resource-id");
/* TRANSLATORS: Resource Ids */
_("resource-ids");
/* TRANSLATORS: Resource K Octets */
_("resource-k-octets");
/* TRANSLATORS: Resource Signature */
_("resource-signature");
/* TRANSLATORS: Resource State */
_("resource-state");
/* TRANSLATORS: Resource State Reasons */
_("resource-state-reasons");
/* TRANSLATORS: Cancel */
_("resource-state-reasons.cancel-requested");
/* TRANSLATORS: Install */
_("resource-state-reasons.install-requested");
/* TRANSLATORS: Resource Incoming */
_("resource-state-reasons.resource-incoming");
/* TRANSLATORS: Pending */
_("resource-state.3");
/* TRANSLATORS: Available */
_("resource-state.4");
/* TRANSLATORS: Installed */
_("resource-state.5");
/* TRANSLATORS: Canceled */
_("resource-state.6");
/* TRANSLATORS: Aborted */
_("resource-state.7");
/* TRANSLATORS: Resource States */
_("resource-states");
/* TRANSLATORS: Resource Type */
_("resource-type");
/* TRANSLATORS: Executable Firmware */
_("resource-type.executable-firmware");
/* TRANSLATORS: Executable Software */
_("resource-type.executable-software");
/* TRANSLATORS: Static Font */
_("resource-type.static-font");
/* TRANSLATORS: Static Form */
_("resource-type.static-form");
/* TRANSLATORS: Static Icc Profile */
_("resource-type.static-icc-profile");
/* TRANSLATORS: Static Image */
_("resource-type.static-image");
/* TRANSLATORS: Static Logo */
_("resource-type.static-logo");
/* TRANSLATORS: Static Other */
_("resource-type.static-other");
/* TRANSLATORS: Static Strings */
_("resource-type.static-strings");
/* TRANSLATORS: Template Document */
_("resource-type.template-document");
/* TRANSLATORS: Template Job */
_("resource-type.template-job");
/* TRANSLATORS: Template Printer */
_("resource-type.template-printer");
/* TRANSLATORS: Resource Types */
_("resource-types");
/* TRANSLATORS: Restart Get Interval */
_("restart-get-interval");
/* TRANSLATORS: Retry Interval */
_("retry-interval");
/* TRANSLATORS: Retry Timeout */
@@ -4468,12 +4278,6 @@ _("separator-sheets-type.none");
_("separator-sheets-type.slip-sheets");
/* TRANSLATORS: Start Sheet */
_("separator-sheets-type.start-sheet");
/* TRANSLATORS: Collate Copies */
_("sheet-collate");
/* TRANSLATORS: Yes */
_("sheet-collate.collated");
/* TRANSLATORS: No */
_("sheet-collate.uncollated");
/* TRANSLATORS: 2-Sided Printing */
_("sides");
/* TRANSLATORS: Off */
@@ -4482,8 +4286,6 @@ _("sides.one-sided");
_("sides.two-sided-long-edge");
/* TRANSLATORS: On (Landscape) */
_("sides.two-sided-short-edge");
/* TRANSLATORS: Start Power State */
_("start-power-state");
/* TRANSLATORS: Status Message */
_("status-message");
/* TRANSLATORS: Staple */
@@ -4536,28 +4338,8 @@ _("subscription-privacy-scope.default");
_("subscription-privacy-scope.none");
/* TRANSLATORS: Owner */
_("subscription-privacy-scope.owner");
/* TRANSLATORS: System State */
_("system-state");
/* TRANSLATORS: System State Reasons */
_("system-state-reasons");
/* TRANSLATORS: Idle */
_("system-state.3");
/* TRANSLATORS: Processing */
_("system-state.4");
/* TRANSLATORS: Stopped */
_("system-state.5");
/* TRANSLATORS: System URI */
_("system-uri");
/* TRANSLATORS: T33 Subaddress */
_("t33-subaddress");
/* TRANSLATORS: Timeout Predicate */
_("timeout-predicate");
/* TRANSLATORS: Activity */
_("timeout-predicate.activity");
/* TRANSLATORS: Inactivity */
_("timeout-predicate.inactivity");
/* TRANSLATORS: None */
_("timeout-predicate.none");
/* TRANSLATORS: To Name */
_("to-name");
/* TRANSLATORS: Transmission Status */
@@ -4612,22 +4394,6 @@ _("trimming-when.after-job");
_("trimming-when.after-sets");
/* TRANSLATORS: Every Page */
_("trimming-when.after-sheets");
/* TRANSLATORS: Which Printers */
_("which-printers");
/* TRANSLATORS: All */
_("which-printers.all");
/* TRANSLATORS: Idle */
_("which-printers.idle");
/* TRANSLATORS: Not Accepting */
_("which-printers.not-accepting");
/* TRANSLATORS: Processing */
_("which-printers.processing");
/* TRANSLATORS: Shutdown */
_("which-printers.shutdown");
/* TRANSLATORS: Stopped */
_("which-printers.stopped");
/* TRANSLATORS: Testing */
_("which-printers.testing");
/* TRANSLATORS: X Accuracy */
_("x-accuracy");
/* TRANSLATORS: X Dimension */
+9 -1
Ver Arquivo
@@ -7,7 +7,7 @@
.\" Licensed under Apache License v2.0. See the file "LICENSE" for more
.\" information.
.\"
.TH cupsd.conf 5 "CUPS" "2 May 2019" "Apple Inc."
.TH cupsd.conf 5 "CUPS" "16 July 2019" "Apple Inc."
.SH NAME
cupsd.conf \- server configuration file for cups
.SH DESCRIPTION
@@ -690,6 +690,8 @@ The following directives may be placed inside Location and Limit sections in the
.TP 5
\fBAllow @LOCAL\fR
Allows access from the named hosts, domains, addresses, or interfaces.
The @IF(name) form uses the current subnets configured for the named interface.
The @LOCAL form uses the current subnets configured for all interfaces that are not point-to-point, for example Ethernet and Wi-Fi interfaces are used but DSL and VPN interfaces are not.
The Order directive controls whether Allow lines are evaluated before or after Deny lines.
.TP 5
\fBAuthType None\fR
@@ -724,6 +726,8 @@ The value "Default" corresponds to the DefaultAuthType value.
.TP 5
\fBDeny @LOCAL\fR
Denies access from the named hosts, domains, addresses, or interfaces.
The @IF(name) form uses the current subnets configured for the named interface.
The @LOCAL form uses the current subnets configured for all interfaces that are not point-to-point, for example Ethernet and Wi-Fi interfaces are used but DSL and VPN interfaces are not.
The Order directive controls whether Deny lines are evaluated before or after Allow lines.
.TP 5
\fBEncryption IfRequested\fR
@@ -862,6 +866,10 @@ On Linux this is typically done using the
command, while on macOS the
.BR launchctl (8)
command is used instead.
.PP
The @LOCAL macro name can be confusing since the system running
.B cupsd
often belongs to a different set of subnets from its clients.
.SH CONFORMING TO
The \fBcupsd.conf\fR file format is based on the Apache HTTP Server configuration file format.
.SH EXAMPLES
+3 -3
Ver Arquivo
@@ -6,7 +6,7 @@
.\" Licensed under Apache License v2.0. See the file "LICENSE" for more
.\" information.
.\"
.TH ipptoolfile 5 "CUPS" "13 May 2019" "Apple Inc."
.TH ipptoolfile 5 "CUPS" "15 August 2019" "Apple Inc."
.SH NAME
ipptoolfile \- ipptool file format
.SH DESCRIPTION
@@ -166,7 +166,7 @@ The following directives are understood within a \fItest\fR:
\fBATTR \fItag attribute-name value(s)\fR
Adds an attribute to the test request.
Out-of-band tags (admin-define, delete-attribute, no-value, not-settable, unknown, unsupported) have no value.
Values for other tags are separated by the comma (",") character - escape commas using the "\" character.
Values for other tags are delimited by the comma (",") character - escape commas using the "\\" character.
Common attributes and values are listed in the IANA IPP registry - see references below.
.TP 5
\fBATTR collection \fIattribute-name \fB{ MEMBER \fItag member-name value(s) ... \fB}\fR [ \fI... \fB,{ \fI... \fB} \fR]
@@ -294,7 +294,7 @@ Makes the \fBEXPECT\fR conditions apply only if the specified variable is not de
\fBIN\-GROUP \fItag\fR
Requires the \fBEXPECT\fR attribute to be in the specified group tag.
.TP 5
\fBOF\-TYPE \fItag[,tag,...]\fR
\fBOF\-TYPE \fItag[|tag,...]\fR
Requires the \fBEXPECT\fR attribute to use one of the specified value tag(s).
.TP 5
\fBREPEAT\-LIMIT \fInumber\fR
+16 -29
Ver Arquivo
@@ -67,8 +67,6 @@ static void free_authmask(cupsd_authmask_t *am, void *data);
#if HAVE_LIBPAM
static int pam_func(int, const struct pam_message **,
struct pam_response **, void *);
#else
static void to64(char *s, unsigned long v, int n);
#endif /* HAVE_LIBPAM */
@@ -1168,7 +1166,23 @@ cupsdCheckGroup(
groupid = group->gr_gid;
for (i = 0; group->gr_mem[i]; i ++)
{
/*
* User appears in the group membership...
*/
if (!_cups_strcasecmp(username, group->gr_mem[i]))
return (1);
}
#ifdef HAVE_GETGROUPLIST
/*
* If the user isn't in the group membership list, try the results from
* getgrouplist() which is supposed to return the full list of groups a user
* belongs to...
*/
if (user)
{
int ngroups; /* Number of groups */
@@ -1189,13 +1203,6 @@ cupsdCheckGroup(
if ((int)groupid == (int)groups[i])
return (1);
}
#else
for (i = 0; group->gr_mem[i]; i ++)
{
if (!_cups_strcasecmp(username, group->gr_mem[i]))
return (1);
}
#endif /* HAVE_GETGROUPLIST */
}
else
@@ -2068,24 +2075,4 @@ pam_func(
return (PAM_SUCCESS);
}
#else
/*
* 'to64()' - Base64-encode an integer value...
*/
static void
to64(char *s, /* O - Output string */
unsigned long v, /* I - Value to encode */
int n) /* I - Number of digits */
{
const char *itoa64 = "./0123456789"
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"abcdefghijklmnopqrstuvwxyz";
for (; n > 0; n --, v >>= 6)
*s++ = itoa64[v & 0x3f];
}
#endif /* HAVE_LIBPAM */
+12 -11
Ver Arquivo
@@ -564,6 +564,17 @@ cupsdReadClient(cupsd_client_t *con) /* I - Client to read from */
cupsdLogClient(con, CUPSD_LOG_DEBUG2, "cupsdReadClient: error=%d, used=%d, state=%s, data_encoding=HTTP_ENCODING_%s, data_remaining=" CUPS_LLFMT ", request=%p(%s), file=%d", httpError(con->http), (int)httpGetReady(con->http), httpStateString(httpGetState(con->http)), httpIsChunked(con->http) ? "CHUNKED" : "LENGTH", CUPS_LLCAST httpGetRemaining(con->http), con->request, con->request ? ippStateString(ippGetState(con->request)) : "", con->file);
if (httpError(con->http) == EPIPE && !httpGetReady(con->http) && recv(httpGetFd(con->http), buf, 1, MSG_PEEK) < 1)
{
/*
* Connection closed...
*/
cupsdLogClient(con, CUPSD_LOG_DEBUG, "Closing on EOF.");
cupsdCloseClient(con);
return;
}
if (httpGetState(con->http) == HTTP_STATE_GET_SEND ||
httpGetState(con->http) == HTTP_STATE_POST_SEND ||
httpGetState(con->http) == HTTP_STATE_STATUS)
@@ -573,17 +584,6 @@ cupsdReadClient(cupsd_client_t *con) /* I - Client to read from */
* connection and we need to shut it down...
*/
if (!httpGetReady(con->http) && recv(httpGetFd(con->http), buf, 1, MSG_PEEK) < 1)
{
/*
* Connection closed...
*/
cupsdLogClient(con, CUPSD_LOG_DEBUG, "Closing on EOF.");
cupsdCloseClient(con);
return;
}
cupsdLogClient(con, CUPSD_LOG_DEBUG, "Closing on unexpected HTTP read state %s.", httpStateString(httpGetState(con->http)));
cupsdCloseClient(con);
return;
@@ -1950,6 +1950,7 @@ cupsdSendError(cupsd_client_t *con, /* I - Connection */
strlcpy(location, httpGetField(con->http, HTTP_FIELD_LOCATION), sizeof(location));
httpClearFields(con->http);
httpClearCookie(con->http);
httpSetField(con->http, HTTP_FIELD_LOCATION, location);
+13 -22
Ver Arquivo
@@ -1902,18 +1902,14 @@ add_job(cupsd_client_t *con, /* I - Client connection */
* Fill in the response info...
*/
httpAssembleURIf(HTTP_URI_CODING_ALL, job_uri, sizeof(job_uri), "ipp", NULL,
con->clientname, con->clientport, "/jobs/%d", job->id);
ippAddString(con->response, IPP_TAG_JOB, IPP_TAG_URI, "job-uri", NULL,
job_uri);
httpAssembleURIf(HTTP_URI_CODING_ALL, job_uri, sizeof(job_uri), "ipp", NULL, con->clientname, con->clientport, "/jobs/%d", job->id);
ippAddString(con->response, IPP_TAG_JOB, IPP_TAG_URI, "job-uri", NULL, job_uri);
ippAddInteger(con->response, IPP_TAG_JOB, IPP_TAG_INTEGER, "job-id", job->id);
ippAddInteger(con->response, IPP_TAG_JOB, IPP_TAG_ENUM, "job-state",
job->state_value);
ippAddInteger(con->response, IPP_TAG_JOB, IPP_TAG_ENUM, "job-state", (int)job->state_value);
ippAddString(con->response, IPP_TAG_JOB, IPP_TAG_TEXT, "job-state-message", NULL, "");
ippAddString(con->response, IPP_TAG_JOB, IPP_TAG_KEYWORD, "job-state-reasons",
NULL, job->reasons->values[0].string.text);
ippAddString(con->response, IPP_TAG_JOB, IPP_TAG_KEYWORD, "job-state-reasons", NULL, job->reasons->values[0].string.text);
con->response->request.status.status_code = IPP_OK;
@@ -3283,7 +3279,7 @@ cancel_all_jobs(cupsd_client_t *con, /* I - Client connection */
* Cancel all jobs on all printers...
*/
cupsdCancelJobs(NULL, username, purge);
cupsdCancelJobs(NULL, username, purge != CUPSD_JOB_DEFAULT);
cupsdLogMessage(CUPSD_LOG_INFO, "All jobs were %s by \"%s\".",
purge == CUPSD_JOB_PURGE ? "purged" : "canceled",
@@ -3342,7 +3338,7 @@ cancel_all_jobs(cupsd_client_t *con, /* I - Client connection */
* Cancel all of the jobs on the named printer...
*/
cupsdCancelJobs(printer->name, username, purge);
cupsdCancelJobs(printer->name, username, purge != CUPSD_JOB_DEFAULT);
cupsdLogMessage(CUPSD_LOG_INFO, "All jobs on \"%s\" were %s by \"%s\".",
printer->name,
@@ -3998,8 +3994,7 @@ close_job(cupsd_client_t *con, /* I - Client connection */
ippAddInteger(con->response, IPP_TAG_JOB, IPP_TAG_INTEGER, "job-id", job->id);
ippAddInteger(con->response, IPP_TAG_JOB, IPP_TAG_ENUM, "job-state",
job->state_value);
ippAddInteger(con->response, IPP_TAG_JOB, IPP_TAG_ENUM, "job-state", (int)job->state_value);
con->response->request.status.status_code = IPP_OK;
@@ -4965,7 +4960,7 @@ copy_printer_attrs(
ippAddString(con->response, IPP_TAG_PRINTER, IPP_TAG_NAME, "printer-op-policy", NULL, printer->op_policy);
if (!ra || cupsArrayFind(ra, "printer-state"))
ippAddInteger(con->response, IPP_TAG_PRINTER, IPP_TAG_ENUM, "printer-state", printer->state);
ippAddInteger(con->response, IPP_TAG_PRINTER, IPP_TAG_ENUM, "printer-state", (int)printer->state);
if (!ra || cupsArrayFind(ra, "printer-state-change-date-time"))
ippAddDate(con->response, IPP_TAG_PRINTER, "printer-state-change-date-time", ippTimeToDate(printer->state_time));
@@ -5510,7 +5505,7 @@ create_local_printer(
add_printer_attributes:
ippAddBoolean(con->response, IPP_TAG_PRINTER, "printer-is-accepting-jobs", (char)printer->accepting);
ippAddInteger(con->response, IPP_TAG_PRINTER, IPP_TAG_ENUM, "printer-state", printer->state);
ippAddInteger(con->response, IPP_TAG_PRINTER, IPP_TAG_ENUM, "printer-state", (int)printer->state);
add_printer_state_reasons(con, printer);
httpAssembleURIf(HTTP_URI_CODING_ALL, uri, sizeof(uri), httpIsEncrypted(con->http) ? "ipps" : "ipp", NULL, con->clientname, con->clientport, "/printers/%s", printer->name);
@@ -9947,17 +9942,13 @@ send_document(cupsd_client_t *con, /* I - Client connection */
* Fill in the response info...
*/
httpAssembleURIf(HTTP_URI_CODING_ALL, job_uri, sizeof(job_uri), "ipp", NULL,
con->clientname, con->clientport, "/jobs/%d", jobid);
ippAddString(con->response, IPP_TAG_JOB, IPP_TAG_URI, "job-uri", NULL,
job_uri);
httpAssembleURIf(HTTP_URI_CODING_ALL, job_uri, sizeof(job_uri), "ipp", NULL, con->clientname, con->clientport, "/jobs/%d", jobid);
ippAddString(con->response, IPP_TAG_JOB, IPP_TAG_URI, "job-uri", NULL, job_uri);
ippAddInteger(con->response, IPP_TAG_JOB, IPP_TAG_INTEGER, "job-id", jobid);
ippAddInteger(con->response, IPP_TAG_JOB, IPP_TAG_ENUM, "job-state",
job->state_value);
ippAddString(con->response, IPP_TAG_JOB, IPP_TAG_KEYWORD, "job-state-reasons",
NULL, job->reasons->values[0].string.text);
ippAddInteger(con->response, IPP_TAG_JOB, IPP_TAG_ENUM, "job-state", (int)job->state_value);
ippAddString(con->response, IPP_TAG_JOB, IPP_TAG_KEYWORD, "job-state-reasons", NULL, job->reasons->values[0].string.text);
con->response->request.status.status_code = IPP_OK;
+4 -4
Ver Arquivo
@@ -444,7 +444,7 @@ cupsdCleanJobs(void)
{
cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdCleanJobs: Job %d, state=%d, printer=%p, history_time=%d, file_time=%d", job->id, (int)job->state_value, (void *)job->printer, (int)job->history_time, (int)job->file_time);
if ((job->history_time && job->history_time) < JobHistoryUpdate || !JobHistoryUpdate)
if ((job->history_time && job->history_time < JobHistoryUpdate) || !JobHistoryUpdate)
JobHistoryUpdate = job->history_time;
if ((job->file_time && job->file_time < JobHistoryUpdate) || !JobHistoryUpdate)
@@ -462,7 +462,7 @@ cupsdCleanJobs(void)
cupsdLogJob(job, CUPSD_LOG_DEBUG, "Removing from history.");
cupsdDeleteJob(job, CUPSD_JOB_PURGE);
}
else if (job->file_time && job->file_time <= curtime)
else if (job->file_time && job->file_time <= curtime && job->num_files > 0)
{
cupsdLogJob(job, CUPSD_LOG_DEBUG, "Removing document files.");
remove_job_files(job);
@@ -2577,7 +2577,7 @@ cupsdSetJobState(
job->state_value = newstate;
if (job->state)
job->state->values[0].integer = newstate;
job->state->values[0].integer = (int)newstate;
switch (newstate)
{
@@ -2625,7 +2625,7 @@ cupsdSetJobState(
else
cupsdAddEvent(CUPSD_EVENT_JOB_STATE, job->printer, job, "%s", buffer);
if (newstate == IPP_JOB_STOPPED || newstate == IPP_JOB_ABORTED)
if (newstate == IPP_JOB_STOPPED || newstate == IPP_JOB_ABORTED || newstate == IPP_JOB_HELD)
cupsdLogJob(job, CUPSD_LOG_ERROR, "%s", buffer);
else
cupsdLogJob(job, CUPSD_LOG_INFO, "%s", buffer);
+23 -2
Ver Arquivo
@@ -756,7 +756,10 @@ main(int argc, /* I - Number of command-line args */
#ifdef HAVE_ONDEMAND
if (OnDemand)
{
stop_scheduler = 1;
break;
}
#endif /* HAVE_ONDEMAND */
DoingShutdown = 1;
@@ -2048,13 +2051,31 @@ service_checkout(int shutdown) /* I - Shutting down? */
#ifdef HAVE_ONDEMAND
if (OnDemand)
{
int shared_printers = 0; /* Do we have shared printers? */
strlcpy(pidfile, CUPS_KEEPALIVE, sizeof(pidfile));
/*
* If printer sharing is on see if there are any actual shared printers...
*/
if (Browsing && BrowseLocalProtocols)
{
cupsd_printer_t *p = NULL; /* Current printer */
for (p = (cupsd_printer_t *)cupsArrayFirst(Printers); p; p = (cupsd_printer_t *)cupsArrayNext(Printers))
{
if (p->shared)
break;
}
shared_printers = (p != NULL);
}
if (cupsArrayCount(ActiveJobs) || /* Active jobs */
WebInterface || /* Web interface enabled */
NeedReload || /* Doing a reload */
(Browsing && BrowseLocalProtocols && cupsArrayCount(Printers)))
/* Printers being shared */
shared_printers) /* Printers being shared */
{
/*
* Create or remove the "keep-alive" file based on whether there are active
+6 -11
Ver Arquivo
@@ -1072,8 +1072,7 @@ cupsdLoadAllPrinters(void)
}
else if (!_cups_strcasecmp(line, "Info"))
{
if (value)
cupsdSetString(&p->info, value);
cupsdSetString(&p->info, value ? value : "");
}
else if (!_cups_strcasecmp(line, "MakeModel"))
{
@@ -1082,23 +1081,19 @@ cupsdLoadAllPrinters(void)
}
else if (!_cups_strcasecmp(line, "Location"))
{
if (value)
cupsdSetString(&p->location, value);
cupsdSetString(&p->location, value ? value : "");
}
else if (!_cups_strcasecmp(line, "GeoLocation"))
{
if (value)
cupsdSetString(&p->geo_location, value);
cupsdSetString(&p->geo_location, value ? value : "");
}
else if (!_cups_strcasecmp(line, "Organization"))
{
if (value)
cupsdSetString(&p->organization, value);
cupsdSetString(&p->organization, value ? value : "");
}
else if (!_cups_strcasecmp(line, "OrganizationalUnit"))
{
if (value)
cupsdSetString(&p->organizational_unit, value);
cupsdSetString(&p->organizational_unit, value ? value : "");
}
else if (!_cups_strcasecmp(line, "DeviceURI"))
{
@@ -4586,7 +4581,7 @@ load_ppd(cupsd_printer_t *p) /* I - Printer */
for (fin = (_pwg_finishings_t *)cupsArrayFirst(p->pc->finishings); fin; fin = (_pwg_finishings_t *)cupsArrayNext(p->pc->finishings))
{
if (num_finishings < (int)(sizeof(finishings) / sizeof(finishings[0])))
finishings[num_finishings++] = fin->value;
finishings[num_finishings++] = (int)fin->value;
switch (fin->value)
{
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+7 -2
Ver Arquivo
@@ -1467,6 +1467,7 @@ set_printer_options(
(boolval = cupsGetOption("cupsIPPSupplies", num_options,
options)) != NULL)
{
ppdchanged = 1;
wrote_ipp_supplies = 1;
cupsFilePrintf(out, "*cupsIPPSupplies: %s\n",
(!_cups_strcasecmp(boolval, "true") ||
@@ -1477,6 +1478,7 @@ set_printer_options(
(boolval = cupsGetOption("cupsSNMPSupplies", num_options,
options)) != NULL)
{
ppdchanged = 1;
wrote_snmp_supplies = 1;
cupsFilePrintf(out, "*cupsSNMPSupplies: %s\n",
(!_cups_strcasecmp(boolval, "true") ||
@@ -1537,6 +1539,8 @@ set_printer_options(
(boolval = cupsGetOption("cupsIPPSupplies", num_options,
options)) != NULL)
{
ppdchanged = 1;
cupsFilePrintf(out, "*cupsIPPSupplies: %s\n",
(!_cups_strcasecmp(boolval, "true") ||
!_cups_strcasecmp(boolval, "yes") ||
@@ -1547,6 +1551,8 @@ set_printer_options(
(boolval = cupsGetOption("cupsSNMPSupplies", num_options,
options)) != NULL)
{
ppdchanged = 1;
cupsFilePrintf(out, "*cupsSNMPSupplies: %s\n",
(!_cups_strcasecmp(boolval, "true") ||
!_cups_strcasecmp(boolval, "yes") ||
@@ -1561,8 +1567,7 @@ set_printer_options(
* Do the request...
*/
ippDelete(cupsDoFileRequest(http, request, "/admin/",
ppdchanged ? tempfile : file));
ippDelete(cupsDoFileRequest(http, request, "/admin/", ppdchanged ? tempfile : file));
/*
* Clean up temp files... (TODO: catch signals in case we CTRL-C during
+1 -1
Ver Arquivo
@@ -2,4 +2,4 @@
{?which_jobs=completed?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="which_jobs" VALUE="completed"><INPUT TYPE="SUBMIT" VALUE="Affichage des t&acirc;ches termin&eacute;es"></FORM>}
{?which_jobs=all?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="which_jobs" VALUE="all"><INPUT TYPE="SUBMIT" VALUE="Affichage de toutes les t&acirc;ches"></FORM>}
<P ALIGN="CENTER">{?which_jobs=?Affichage des tâches dans l'ordre d'impression; les tâches maintenues apparaissent en premier.:{which_jobs=Affichage des tâches dans l'ordre croissant.?:Affichage des tâches dans l'ordre décroissant.}}</P>
<P ALIGN="CENTER">{?which_jobs=?Affichage des tâches en ordre d'impression; les tâches maintenues apparaissent en premier.:{which_jobs=Affichage des tâches dans l'ordre croissant.?:Affichage des tâches dans l'ordre décroissant.}}</P>
+2 -2
Ver Arquivo
@@ -18,9 +18,9 @@
<TD>
{job_preserved>0?{job_state>5?
<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="restart-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="HIDDEN" NAME="job_printer_uri" VALUE="{job_printer_uri}"><INPUT TYPE="SUBMIT" VALUE="Reprint Job"></FORM>:}:}
{job_state=4?
{job_state=4?{job_hold_until=auth-info-required?Held for authentication.:
<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="release-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="HIDDEN" NAME="job_printer_uri" VALUE="{job_printer_uri}">
<INPUT TYPE="SUBMIT" VALUE="Release Job"></FORM>:}
<INPUT TYPE="SUBMIT" VALUE="Release Job"></FORM>:}}
{job_state=3?
<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="hold-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="HIDDEN" NAME="job_printer_uri" VALUE="{job_printer_uri}">
<INPUT TYPE="SUBMIT" VALUE="Hold Job"></FORM>:}
+4 -4
Ver Arquivo
@@ -1556,9 +1556,9 @@ create_printer(
fprintf(stderr, "printer-more-info=\"%s\"\n", adminurl);
fprintf(stderr, "printer-supply-info-uri=\"%s\"\n", supplyurl);
#ifdef HAVE_SSL
fprintf(stderr, "printer-uri=\"%s\"\n", uri);
#else
fprintf(stderr, "printer-uri=\"%s\",\"%s\"\n", uri, securi);
#else
fprintf(stderr, "printer-uri=\"%s\"\n", uri);
#endif /* HAVE_SSL */
}
@@ -4861,13 +4861,13 @@ load_ppd_attributes(
attr = ippAddIntegers(attrs, IPP_TAG_PRINTER, IPP_TAG_ENUM, "finishings-ready", cupsArrayCount(pc->finishings) + 1, NULL);
ippSetInteger(attrs, &attr, 0, IPP_FINISHINGS_NONE);
for (i = 1, finishings = (_pwg_finishings_t *)cupsArrayFirst(pc->finishings); finishings; i ++, finishings = (_pwg_finishings_t *)cupsArrayNext(pc->finishings))
ippSetInteger(attrs, &attr, i, finishings->value);
ippSetInteger(attrs, &attr, i, (int)finishings->value);
/* finishings-supported */
attr = ippAddIntegers(attrs, IPP_TAG_PRINTER, IPP_TAG_ENUM, "finishings-supported", cupsArrayCount(pc->finishings) + 1, NULL);
ippSetInteger(attrs, &attr, 0, IPP_FINISHINGS_NONE);
for (i = 1, finishings = (_pwg_finishings_t *)cupsArrayFirst(pc->finishings); finishings; i ++, finishings = (_pwg_finishings_t *)cupsArrayNext(pc->finishings))
ippSetInteger(attrs, &attr, i, finishings->value);
ippSetInteger(attrs, &attr, i, (int)finishings->value);
/* media-bottom-margin-supported */
for (i = 0, num_margins = 0, pwg_size = pc->sizes; i < pc->num_sizes && num_margins < (int)(sizeof(margins) / sizeof(margins[0])); i ++, pwg_size ++)
+1 -1
Ver Arquivo
@@ -1448,7 +1448,7 @@ do_test(_ipp_file_t *f, /* I - IPP data file */
_ippVarsSet(vars, expect->define_no_match, "1");
else if (!expect->define_match && !expect->define_value)
{
if (found && expect->not_expect)
if (found && expect->not_expect && !expect->with_value && !expect->with_value_from)
add_stringf(data->errors, "NOT EXPECTED: %s", expect->name);
else if (!found && !(expect->not_expect || expect->optional))
add_stringf(data->errors, "EXPECTED: %s", expect->name);
+7
Ver Arquivo
@@ -375,6 +375,13 @@ typedef unsigned long useconds_t;
#define HAVE_SSL 1
/*
* Do we have the gnutls_fips140_set_mode function?
*/
/* #undef HAVE_GNUTLS_FIPS140_SET_MODE */
/*
* Do we have the gnutls_transport_set_pull_timeout_function function?
*/
+7
Ver Arquivo
@@ -305,6 +305,13 @@
#define HAVE_SSL 1
/*
* Do we have the gnutls_fips140_set_mode function?
*/
/* #undef HAVE_GNUTLS_FIPS140_SET_MODE */
/*
* Do we have the gnutls_transport_set_pull_timeout_function function?
*/