Comparar commits
57 Commits
| Autor | SHA1 | Data | |
|---|---|---|---|
| ee6be9cd7e | |||
| 8fb0d30daa | |||
| c669a17e64 | |||
| 34934be905 | |||
| 89fabc72df | |||
| 93d79201b2 | |||
| ed174a7cec | |||
| 5e0dc7e14c | |||
| 1553df019b | |||
| 873c513326 | |||
| 69e37fbf52 | |||
| 05690fddfa | |||
| 7b6d49eec9 | |||
| d46a87a45f | |||
| 60a7373f31 | |||
| 2c030c7a06 | |||
| d784ca2f83 | |||
| f4b0bfa2db | |||
| 5754bcceeb | |||
| f79dad58ab | |||
| 3cf5b72ab7 | |||
| c76c53615c | |||
| 9ec6124c37 | |||
| 8e048e4d39 | |||
| dc00a7c3ad | |||
| db1c94f3a1 | |||
| 65048b860c | |||
| 43c0e4a9d5 | |||
| 6647894889 | |||
| 614efb7a87 | |||
| c5dcd7ecff | |||
| 9c13b7d26e | |||
| 4e104fb9c8 | |||
| 242b4b9be6 | |||
| 9539c53065 | |||
| 3c27d2a6dd | |||
| e9a4e9d6ea | |||
| c0a097c92f | |||
| 9a5e6d74b9 | |||
| f93b470e22 | |||
| 90d3999e0d | |||
| c9b65dc4d9 | |||
| 8ef4f507d7 | |||
| 3001a140d6 | |||
| 2614dc6385 | |||
| b7569be6f4 | |||
| e02771e0c6 | |||
| 11c5618507 | |||
| ce3f7bf3e9 | |||
| 387ef588c9 | |||
| 2e738f0309 | |||
| 8e901a3856 | |||
| 53cac1d08b | |||
| 9c554374b5 | |||
| 03cc81b703 | |||
| 5098fdde63 | |||
| 0cf87cf506 |
@@ -1,3 +1,5 @@
|
||||
.git* export-ignore
|
||||
.mailmap export-ignore
|
||||
examples/testfile.pcl -text
|
||||
exampels/testfile.txt -text
|
||||
scripts export-ignore
|
||||
|
||||
+46
-2
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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 :
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
@@ -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
@@ -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)
|
||||
|
||||
@@ -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
@@ -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 */
|
||||
|
||||
@@ -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
@@ -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
@@ -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)
|
||||
|
||||
@@ -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 :
|
||||
|
||||
@@ -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 :
|
||||
|
||||
@@ -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));
|
||||
|
||||
|
||||
@@ -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
@@ -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
@@ -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.
|
||||
*/
|
||||
|
||||
@@ -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
@@ -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...
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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"> DEPRECATED </span>ppd_cs_e</a></h3>
|
||||
<p class="description">Colorspaces </p>
|
||||
|
||||
@@ -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
@@ -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 © 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 © 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 © 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 "cups" library to talk to the different parts of CUPS and with Internet Printing Protocol (IPP) printers. The "cups" library functions are accessed by including the <code><cups/cups.h></code> header.</p>
|
||||
<p>CUPS is based on the Internet Printing Protocol ("IPP"), 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 "cups" 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 ("print four copies, two-sided on A4 media, and staple each copy") 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 <stdio.h>
|
||||
@@ -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 "firstcups". 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 "libcups" 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 "firstcups". 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 "libcups" 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 "printer-type" 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&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&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>"auth-info-required": The type of authentication required for printing to this destination: "none", "username,password", "domain,username,password", or "negotiate" (Kerberos).</li>
|
||||
<li>"printer-info": The human-readable description of the destination such as "My Laser Printer".</li>
|
||||
<li>"printer-is-accepting-jobs": "true" if the destination is accepting new jobs, "false" otherwise.</li>
|
||||
<li>"printer-is-shared": "true" if the destination is being shared with other computers, "false" otherwise.</li>
|
||||
<li>"printer-location": The human-readable location of the destination such as "Lab 4".</li>
|
||||
<li>"printer-make-and-model": The human-readable make and model of the destination such as "ExampleCorp LaserPrinter 4000 Series".</li>
|
||||
<li>"printer-state": "3" if the destination is idle, "4" if the destination is printing a job, and "5" if the destination is stopped.</li>
|
||||
<li>"printer-state-change-time": The UNIX time when the destination entered the current state.</li>
|
||||
<li>"printer-state-reasons": Additional comma-delimited state keywords for the destination such as "media-tray-empty-error" and "toner-low-warning".</li>
|
||||
<li>"printer-type": The <code>cups_ptype_t</code> value associated with the destination.</li>
|
||||
<li>"printer-uri-supported": 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>"auth-info-required": The type of authentication required for printing to this destination: "none", "username,password", "domain,username,password", or "negotiate" (Kerberos).</p>
|
||||
</li>
|
||||
<li> <p>"printer-info": The human-readable description of the destination such as "My Laser Printer".</p>
|
||||
</li>
|
||||
<li> <p>"printer-is-accepting-jobs": "true" if the destination is accepting new jobs, "false" otherwise.</p>
|
||||
</li>
|
||||
<li> <p>"printer-is-shared": "true" if the destination is being shared with other computers, "false" otherwise.</p>
|
||||
</li>
|
||||
<li> <p>"printer-location": The human-readable location of the destination such as "Lab 4".</p>
|
||||
</li>
|
||||
<li> <p>"printer-make-and-model": The human-readable make and model of the destination such as "ExampleCorp LaserPrinter 4000 Series".</p>
|
||||
</li>
|
||||
<li> <p>"printer-state": "3" if the destination is idle, "4" if the destination is printing a job, and "5" if the destination is stopped.</p>
|
||||
</li>
|
||||
<li> <p>"printer-state-change-time": The UNIX time when the destination entered the current state.</p>
|
||||
</li>
|
||||
<li> <p>"printer-state-reasons": Additional comma-delimited state keywords for the destination such as "media-tray-empty-error" and "toner-low-warning".</p>
|
||||
</li>
|
||||
<li> <p>"printer-type": The <code>cups_ptype_t</code> value associated with the destination.</p>
|
||||
</li>
|
||||
<li> <p>"printer-uri-supported": 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("printer-make-and-model",
|
||||
dest->num_options,
|
||||
dest->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 < 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("no finishings are ready.");
|
||||
</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 "ready" 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 "ready" 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>: "image/jpeg"</li>
|
||||
<li><code>CUPS_FORMAT_PDF</code>: "application/pdf"</li>
|
||||
<li><code>CUPS_FORMAT_POSTSCRIPT</code>: "application/postscript"</li>
|
||||
<li><code>CUPS_FORMAT_TEXT</code>: "text/plain"</li>
|
||||
<li> <p><code>CUPS_FORMAT_JPEG</code>: "image/jpeg"</p>
|
||||
</li>
|
||||
<li> <p><code>CUPS_FORMAT_PDF</code>: "application/pdf"</p>
|
||||
</li>
|
||||
<li> <p><code>CUPS_FORMAT_POSTSCRIPT</code>: "application/postscript"</p>
|
||||
</li>
|
||||
<li> <p><code>CUPS_FORMAT_TEXT</code>: "text/plain"</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("Request failed: %s\n", 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, "printer-state-reasons",
|
||||
<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"> CUPS 2.3 </span><a id="cupsAddDestMediaOptions">cupsAddDestMediaOptions</a></h3>
|
||||
<h3 class="function"><span class="info"> CUPS 2.3/macOS 10.14 </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"> CUPS 2.3 </span><a id="cupsEncodeOption">cupsEncodeOption</a></h3>
|
||||
<h3 class="function"><span class="info"> CUPS 2.3/macOS 10.14 </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
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
+176
-409
@@ -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
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
+291
-756
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
+298
-763
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
+346
-853
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
+291
-756
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
+291
-756
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
+291
-756
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
+291
-756
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
+291
-756
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
+291
-756
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
+291
-756
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
+173
-407
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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)
|
||||
{
|
||||
|
||||
+208
-241
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
+7
-2
@@ -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
|
||||
|
||||
@@ -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âches terminé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â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>
|
||||
|
||||
@@ -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>:}
|
||||
|
||||
@@ -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
@@ -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);
|
||||
|
||||
@@ -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?
|
||||
*/
|
||||
|
||||
@@ -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?
|
||||
*/
|
||||
|
||||
Referência em uma Nova Issue
Bloquear um usuário