From 8ca02f3c0539293422509d03219786fb6d7db48b Mon Sep 17 00:00:00 2001 From: jlovell Date: Thu, 20 Jul 2006 22:59:35 +0000 Subject: [PATCH] Load cups into easysw/current. git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@194 a1ca3aef-8c08-0410-bb20-df032aa958be --- CHANGES.txt | 66 +- backend/easysw-firewire-design.txt | 71 - backend/easysw-firewire-linux.txt | 35 - backend/ieee1394-linux.c | 877 ----- backend/ieee1394.c | 267 -- backend/ieee1394.h | 103 - backend/ipp.c | 6 +- backend/parallel.c | 38 +- backend/runloop.c | 54 +- backend/snmp.c | 12 +- backend/usb-unix.c | 95 +- berkeley/lprm.c | 35 +- config-scripts/cups-compiler.m4 | 9 +- config-scripts/cups-defaults.m4 | 8 +- config-scripts/cups-directories.m4 | 6 +- cups-config.in | 12 +- cups/Dependencies | 252 +- cups/adminutil.c | 9 +- cups/dest.c | 55 +- cups/emit.c | 27 +- cups/encode.c | 58 +- cups/globals.h | 5 +- cups/http.c | 14 +- cups/http.h | 6 +- cups/ipp-private.h | 17 +- cups/language.c | 21 +- cups/mark.c | 11 +- cups/testipp.c | 19 +- cups/testppd.c | 57 +- cups/util.c | 11 +- doc/Makefile | 4 +- doc/de/images/button-accept-jobs.gif | Bin 0 -> 633 bytes doc/de/images/button-add-class.gif | Bin 0 -> 626 bytes doc/de/images/button-add-printer.gif | Bin 0 -> 631 bytes doc/de/images/button-add-this-printer.gif | Bin 0 -> 764 bytes doc/de/images/button-cancel-all-jobs.gif | Bin 0 -> 728 bytes doc/de/images/button-cancel-job.gif | Bin 0 -> 633 bytes doc/de/images/button-change-settings.gif | Bin 0 -> 635 bytes doc/de/images/button-clean-print-heads.gif | Bin 0 -> 661 bytes doc/de/images/button-clear.gif | Bin 0 -> 371 bytes doc/de/images/button-continue.gif | Bin 0 -> 467 bytes doc/de/images/button-delete-class.gif | Bin 0 -> 552 bytes doc/de/images/button-delete-printer.gif | Bin 0 -> 568 bytes .../images/button-edit-configuration-file.gif | Bin 0 -> 837 bytes doc/de/images/button-export-samba.gif | Bin 0 -> 874 bytes doc/de/images/button-help.gif | Bin 0 -> 321 bytes doc/de/images/button-hold-job.gif | Bin 0 -> 585 bytes doc/de/images/button-manage-classes.gif | Bin 0 -> 639 bytes doc/de/images/button-manage-jobs.gif | Bin 0 -> 669 bytes doc/de/images/button-manage-printers.gif | Bin 0 -> 632 bytes doc/de/images/button-manage-server.gif | Bin 0 -> 611 bytes doc/de/images/button-modify-class.gif | Bin 0 -> 553 bytes doc/de/images/button-modify-printer.gif | Bin 0 -> 565 bytes doc/de/images/button-move-job.gif | Bin 0 -> 686 bytes doc/de/images/button-move-jobs.gif | Bin 0 -> 783 bytes doc/de/images/button-print-self-test-page.gif | Bin 0 -> 726 bytes doc/de/images/button-print-test-page.gif | Bin 0 -> 596 bytes doc/de/images/button-publish-printer.gif | Bin 0 -> 626 bytes doc/de/images/button-reject-jobs.gif | Bin 0 -> 643 bytes doc/de/images/button-release-job.gif | Bin 0 -> 619 bytes doc/de/images/button-restart-job.gif | Bin 0 -> 635 bytes doc/de/images/button-save-changes.gif | Bin 0 -> 702 bytes doc/de/images/button-search.gif | Bin 0 -> 395 bytes doc/de/images/button-set-allowed-users.gif | Bin 0 -> 774 bytes doc/de/images/button-set-as-default.gif | Bin 0 -> 738 bytes doc/de/images/button-set-printer-options.gif | Bin 0 -> 844 bytes doc/de/images/button-show-active.gif | Bin 0 -> 788 bytes doc/de/images/button-show-all.gif | Bin 0 -> 713 bytes doc/de/images/button-show-completed.gif | Bin 0 -> 757 bytes doc/de/images/button-show-next.gif | Bin 0 -> 643 bytes doc/de/images/button-show-previous.gif | Bin 0 -> 679 bytes doc/de/images/button-sort-ascending.gif | Bin 0 -> 779 bytes doc/de/images/button-sort-descending.gif | Bin 0 -> 774 bytes doc/de/images/button-start-class.gif | Bin 0 -> 552 bytes doc/de/images/button-start-printer.gif | Bin 0 -> 560 bytes doc/de/images/button-stop-class.gif | Bin 0 -> 589 bytes doc/de/images/button-stop-printer.gif | Bin 0 -> 574 bytes doc/de/images/button-unpublish-printer.gif | Bin 0 -> 821 bytes doc/de/images/button-view-access-log.gif | Bin 0 -> 802 bytes doc/de/images/button-view-error-log.gif | Bin 0 -> 742 bytes doc/de/images/button-view-page-log.gif | Bin 0 -> 772 bytes .../images/button-view-printable-version.gif | Bin 0 -> 833 bytes doc/de/index.html.in | 143 + doc/help/policies.html | 677 ++++ doc/help/ref-mailto-conf.html | 105 + filter/rastertolabel.c | 11 +- locale/cups_de.po | 2821 +++++++++++++++++ locale/cups_ja.po | 9 +- man/Makefile | 5 +- man/lpadmin.man | 33 +- man/mailto.conf.man | 69 + notifier/testnotify.c | 12 +- packaging/cups.list.in | 21 +- packaging/cups.spec.in | 25 +- pdftops/PSOutputDev.cxx | 2 +- ppd/zebracpl.ppd | 8 + scheduler/Makefile | 7 +- scheduler/client.c | 216 +- scheduler/conf.c | 39 +- scheduler/conf.h | 5 +- scheduler/cups-polld.c | 209 +- scheduler/dirsvc.c | 47 +- scheduler/ipp.c | 30 +- scheduler/job.c | 10 +- scheduler/listen.c | 8 +- scheduler/printers.c | 9 +- scheduler/subscriptions.c | 59 +- systemv/cancel.c | 7 +- systemv/cupsaddsmb.c | 8 +- systemv/lpoptions.c | 36 +- templates/de/add-class.tmpl | 33 + templates/de/add-printer.tmpl | 28 + templates/de/admin.tmpl | 77 + templates/de/choose-device.tmpl | 26 + templates/de/choose-make.tmpl | 42 + templates/de/choose-model.tmpl | 34 + templates/de/choose-serial.tmpl | 47 + templates/de/choose-uri.tmpl | 42 + templates/de/class-added.tmpl | 2 + templates/de/class-confirm.tmpl | 7 + templates/de/class-deleted.tmpl | 1 + templates/de/class-jobs-header.tmpl | 1 + templates/de/class-modified.tmpl | 2 + templates/de/classes-header.tmpl | 1 + templates/de/classes.tmpl | 54 + templates/de/edit-config.tmpl.in | 91 + templates/de/error-op.tmpl | 3 + templates/de/error.tmpl | 3 + templates/de/header.tmpl.in | 63 + templates/de/help-header.tmpl | 46 + templates/de/help-printable.tmpl | 11 + templates/de/job-cancel.tmpl | 1 + templates/de/job-hold.tmpl | 1 + templates/de/job-move.tmpl | 22 + templates/de/job-moved.tmpl | 2 + templates/de/job-release.tmpl | 1 + templates/de/job-restart.tmpl | 1 + templates/de/jobs-header.tmpl | 15 + templates/de/jobs.tmpl | 42 + templates/de/maintenance.tmpl | 2 + templates/de/modify-class.tmpl | 34 + templates/de/modify-printer.tmpl | 29 + templates/de/option-boolean.tmpl | 6 + templates/de/option-conflict.tmpl | 7 + templates/de/option-header.tmpl | 3 + templates/de/option-pickmany.tmpl | 6 + templates/de/option-pickone.tmpl | 6 + templates/de/option-trailer.tmpl | 5 + templates/de/pager.tmpl | 7 + templates/de/printer-accept.tmpl | 3 + templates/de/printer-added.tmpl | 2 + templates/de/printer-configured.tmpl | 2 + templates/de/printer-confirm.tmpl | 7 + templates/de/printer-default.tmpl | 7 + templates/de/printer-deleted.tmpl | 1 + templates/de/printer-jobs-header.tmpl | 1 + templates/de/printer-modified.tmpl | 2 + templates/de/printer-purge.tmpl | 3 + templates/de/printer-reject.tmpl | 3 + templates/de/printer-start.tmpl | 3 + templates/de/printer-stop.tmpl | 3 + templates/de/printers-header.tmpl | 1 + templates/de/printers.tmpl | 64 + templates/de/restart.tmpl | 1 + templates/de/samba-export.tmpl | 55 + templates/de/samba-exported.tmpl | 1 + templates/de/search.tmpl | 13 + templates/de/set-printer-options-header.tmpl | 3 + templates/de/set-printer-options-trailer.tmpl | 1 + templates/de/test-page.tmpl | 2 + templates/de/trailer.tmpl | 21 + templates/de/users.tmpl | 26 + templates/ja/printers.tmpl | 2 +- test/ipptest.c | 31 +- 174 files changed, 6077 insertions(+), 1876 deletions(-) delete mode 100644 backend/easysw-firewire-design.txt delete mode 100644 backend/easysw-firewire-linux.txt delete mode 100644 backend/ieee1394-linux.c delete mode 100644 backend/ieee1394.c delete mode 100644 backend/ieee1394.h create mode 100644 doc/de/images/button-accept-jobs.gif create mode 100644 doc/de/images/button-add-class.gif create mode 100644 doc/de/images/button-add-printer.gif create mode 100644 doc/de/images/button-add-this-printer.gif create mode 100644 doc/de/images/button-cancel-all-jobs.gif create mode 100644 doc/de/images/button-cancel-job.gif create mode 100644 doc/de/images/button-change-settings.gif create mode 100644 doc/de/images/button-clean-print-heads.gif create mode 100644 doc/de/images/button-clear.gif create mode 100644 doc/de/images/button-continue.gif create mode 100644 doc/de/images/button-delete-class.gif create mode 100644 doc/de/images/button-delete-printer.gif create mode 100644 doc/de/images/button-edit-configuration-file.gif create mode 100644 doc/de/images/button-export-samba.gif create mode 100644 doc/de/images/button-help.gif create mode 100644 doc/de/images/button-hold-job.gif create mode 100644 doc/de/images/button-manage-classes.gif create mode 100644 doc/de/images/button-manage-jobs.gif create mode 100644 doc/de/images/button-manage-printers.gif create mode 100644 doc/de/images/button-manage-server.gif create mode 100644 doc/de/images/button-modify-class.gif create mode 100644 doc/de/images/button-modify-printer.gif create mode 100644 doc/de/images/button-move-job.gif create mode 100644 doc/de/images/button-move-jobs.gif create mode 100644 doc/de/images/button-print-self-test-page.gif create mode 100644 doc/de/images/button-print-test-page.gif create mode 100644 doc/de/images/button-publish-printer.gif create mode 100644 doc/de/images/button-reject-jobs.gif create mode 100644 doc/de/images/button-release-job.gif create mode 100644 doc/de/images/button-restart-job.gif create mode 100644 doc/de/images/button-save-changes.gif create mode 100644 doc/de/images/button-search.gif create mode 100644 doc/de/images/button-set-allowed-users.gif create mode 100644 doc/de/images/button-set-as-default.gif create mode 100644 doc/de/images/button-set-printer-options.gif create mode 100644 doc/de/images/button-show-active.gif create mode 100644 doc/de/images/button-show-all.gif create mode 100644 doc/de/images/button-show-completed.gif create mode 100644 doc/de/images/button-show-next.gif create mode 100644 doc/de/images/button-show-previous.gif create mode 100644 doc/de/images/button-sort-ascending.gif create mode 100644 doc/de/images/button-sort-descending.gif create mode 100644 doc/de/images/button-start-class.gif create mode 100644 doc/de/images/button-start-printer.gif create mode 100644 doc/de/images/button-stop-class.gif create mode 100644 doc/de/images/button-stop-printer.gif create mode 100644 doc/de/images/button-unpublish-printer.gif create mode 100644 doc/de/images/button-view-access-log.gif create mode 100644 doc/de/images/button-view-error-log.gif create mode 100644 doc/de/images/button-view-page-log.gif create mode 100644 doc/de/images/button-view-printable-version.gif create mode 100644 doc/de/index.html.in create mode 100644 doc/help/policies.html create mode 100644 doc/help/ref-mailto-conf.html create mode 100644 locale/cups_de.po create mode 100644 man/mailto.conf.man create mode 100644 templates/de/add-class.tmpl create mode 100644 templates/de/add-printer.tmpl create mode 100644 templates/de/admin.tmpl create mode 100644 templates/de/choose-device.tmpl create mode 100644 templates/de/choose-make.tmpl create mode 100644 templates/de/choose-model.tmpl create mode 100644 templates/de/choose-serial.tmpl create mode 100644 templates/de/choose-uri.tmpl create mode 100644 templates/de/class-added.tmpl create mode 100644 templates/de/class-confirm.tmpl create mode 100644 templates/de/class-deleted.tmpl create mode 100644 templates/de/class-jobs-header.tmpl create mode 100644 templates/de/class-modified.tmpl create mode 100644 templates/de/classes-header.tmpl create mode 100644 templates/de/classes.tmpl create mode 100644 templates/de/edit-config.tmpl.in create mode 100644 templates/de/error-op.tmpl create mode 100644 templates/de/error.tmpl create mode 100644 templates/de/header.tmpl.in create mode 100644 templates/de/help-header.tmpl create mode 100644 templates/de/help-printable.tmpl create mode 100644 templates/de/job-cancel.tmpl create mode 100644 templates/de/job-hold.tmpl create mode 100644 templates/de/job-move.tmpl create mode 100644 templates/de/job-moved.tmpl create mode 100644 templates/de/job-release.tmpl create mode 100644 templates/de/job-restart.tmpl create mode 100644 templates/de/jobs-header.tmpl create mode 100644 templates/de/jobs.tmpl create mode 100644 templates/de/maintenance.tmpl create mode 100644 templates/de/modify-class.tmpl create mode 100644 templates/de/modify-printer.tmpl create mode 100644 templates/de/option-boolean.tmpl create mode 100644 templates/de/option-conflict.tmpl create mode 100644 templates/de/option-header.tmpl create mode 100644 templates/de/option-pickmany.tmpl create mode 100644 templates/de/option-pickone.tmpl create mode 100644 templates/de/option-trailer.tmpl create mode 100644 templates/de/pager.tmpl create mode 100644 templates/de/printer-accept.tmpl create mode 100644 templates/de/printer-added.tmpl create mode 100644 templates/de/printer-configured.tmpl create mode 100644 templates/de/printer-confirm.tmpl create mode 100644 templates/de/printer-default.tmpl create mode 100644 templates/de/printer-deleted.tmpl create mode 100644 templates/de/printer-jobs-header.tmpl create mode 100644 templates/de/printer-modified.tmpl create mode 100644 templates/de/printer-purge.tmpl create mode 100644 templates/de/printer-reject.tmpl create mode 100644 templates/de/printer-start.tmpl create mode 100644 templates/de/printer-stop.tmpl create mode 100644 templates/de/printers-header.tmpl create mode 100644 templates/de/printers.tmpl create mode 100644 templates/de/restart.tmpl create mode 100644 templates/de/samba-export.tmpl create mode 100644 templates/de/samba-exported.tmpl create mode 100644 templates/de/search.tmpl create mode 100644 templates/de/set-printer-options-header.tmpl create mode 100644 templates/de/set-printer-options-trailer.tmpl create mode 100644 templates/de/test-page.tmpl create mode 100644 templates/de/trailer.tmpl create mode 100644 templates/de/users.tmpl diff --git a/CHANGES.txt b/CHANGES.txt index c866727c8..f55439e5f 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,8 +1,71 @@ -CHANGES.txt - 2006-06-21 +CHANGES.txt - 2006-07-18 ------------------------ CHANGES IN CUPS V1.2.2 + - Documentation updates (STR #1765, STR #1780) + - CUPS didn't know about alternate character set names + for Asian text (STR #1819) + - The lpoptions -o and -r options did not work unless you + specified a printer. + - The lpoptions command incorrectly allowed users to set + printer attributes like printer-type (STR #1791) + - httpWait() did not flush the write buffer, causing "bad + request" errors when communicating with CUPS 1.1.x + servers (STR #1717) + - Polling did not sanitize the printer description, + location, or make and model strings like broadcasts + did. + - Polled printers did not show the server's default + job-sheets option value. + - The Samba password prompt was not properly localized + (STR #1814) + - Added a German translation (STR #1842) + - The scheduler now creates self-signed SSL certficates + automatically when using OpenSSL and CDSA for + encryption, just as for GNU TLS. + - The SNMP backend sporatically reported some printers as + "unknown" (STR #1774) + - The scheduler now forces BrowseTimeout to be at least + twice the BrowseInterval value and non-zero to avoid + common configuration errors. + - The scheduler incorrectly returned printer URIs of the + form "ipp://server/printers/classname" for classes (STR + #1813) + - Updated Japanese localization (STR #1805) + - The scheduler's SSL certificate/key directory was not + created on installation (STR #1788) + - Added a mailto.conf man page and help page (STR #1754) + - The parallel and USB backends no longer wait for the + printer to go on-line - this caused problems with + certain printers that don't follow with the IEEE-1284 + standard (STR #1738) + - The scheduler could crash on a reload when implicit + classes were present (STR #1828) + - The IPP backend incorrectly used the CUPS_ENCRYPTION + environment variable to determine the default + encryption mode when printing (STR #1820) + - USB printing did not work on Solaris (STR #1756) + - The scheduler sorted job priorities in the wrong order + (STR #1811) + - The scheduler did not automatically restart notifiers + that exited or crashed (STR #1793) + - IPv6 support did not work on NetBSD (STR #1834) + - The EPM packaging file did not work (STR #1804) + - The scheduler used up the CPU if BrowseRemoteProtocols + was empty (STR #1792) + - Custom page sizes did not work (STR #1787) + - The SNMP backend could crash on some systems when SNMP + logging was enabled (STR #1789) + - Browsing could produce some funny printer names when + ServerName was set to an IP address (STR #1799) + - Fixed the log message for BrowseRelay (STR #1798) + - Fixes to allow CUPS to compile on MirBSD (STR #1796) + - The scheduler incorrectly set the FINAL_CONTENT_TYPE + environment variable (STR #1795) + - The pdftops filter incorrectly embedded a "produced by" + comment, causing PDF printing not to work on some + operating systems (STR #1801) - Sending raw jobs from a client system could cause the client's scheduler to eventually crash (STR #1786) - The scheduler now checks that the notifier exists prior @@ -82,6 +145,7 @@ CHANGES IN CUPS V1.2.2 CHANGES IN CUPS V1.2.1 + - "lprm -h hostname" did not work (STR #1800) - The web interface did not handle reloads properly for MSIE (STR #1716) - The configure script no longer adds linker rpath diff --git a/backend/easysw-firewire-design.txt b/backend/easysw-firewire-design.txt deleted file mode 100644 index 194c487ed..000000000 --- a/backend/easysw-firewire-design.txt +++ /dev/null @@ -1,71 +0,0 @@ -Preliminary Design for CUPS Firewire Printer Backend - 03/19/2002 ------------------------------------------------------------------ - -OVERVIEW - - Easy Software Products will develop an IEEE-1394, a.k.a. - Firewire, printing interface for its Common UNIX Printing - System ("CUPS") for initial use under the Linux operating - system. A follow-on implementation for MacOS X is - anticipated as well. - - The operating system interfaces for IEEE-1394 ports vary - widely; the CUPS printing interface will abstract the OS - layer to a simpler interface geared towards discovering, - opening, reading from, writing to, and closing IEEE-1394 - printers. - - The initial development of the CUPS backend will be targeted - at the EPSON Stylus Pro 10000 large format printer, which - requires the bandwidth provided by Firewire in order to - print at full speed. This printer supports printing via - Serial Bus Protocol 2 (SBP-2) using the SCSI and PWG command - sets. The CUPS backend will implement the PWG command set on - LUN 0 only. - - -OS ABSTRACTION LAYER - - The OS abstraction layer will be a thin client library that - implements the following functions: - - ieee1394_list - ieee1394_open - ieee1394_close - ieee1394_read - ieee1394_write - ieee1394_error - - The "ieee1394_list" function will list all of the available - printer devices on the bus. The device information will - consist of the device URI (ieee1394:/something) used to - access the device and the make and model information, if - available, for the device ("EPSON Stylus Printer"). - - The "ieee1394_open" and "ieee1394_close" functions will open - and close a connection to the printer, respectively. - - The "ieee1394_read" and "ieee1394_write" functions will read - and write data to and from the printer, respectively. The - read function will be non-blocking, returning data only if - there is data coming back from the printer. - - The "ieee1394_error" function will return a string - describing the last error or NULL if no error occurred. - - The library will be responsible for creating any background - threads that are needed to monitor the connection to the - printer. - - -CUPS BACKEND - - The CUPS backend will use the OS abstraction layer to list - and access the Firewire printers. The "main" function will - read and write printer data, while the "list_devices" - function will be called as necessary to identify the - available devices. - - The CUPS 1.1 backend will record any status information in - the error log file, while the 1.2 backend will supply it to - the printer driver process. diff --git a/backend/easysw-firewire-linux.txt b/backend/easysw-firewire-linux.txt deleted file mode 100644 index a8e461189..000000000 --- a/backend/easysw-firewire-linux.txt +++ /dev/null @@ -1,35 +0,0 @@ -Easy Software Products -44141 Airport View Drive -Suite 204 -Hollywood, Maryland 20636 -+1.301.373.9600 -March 8, 2002 - - -Subject: EPSON Firewire Printer Driver for Linux - -Currently, no Firewire printer support exists for Linux. Since -the latest EPSON printer products depend on the Firewire -interface to print at full speed, a solution is needed to -support customers using Linux as their server platform. - -The Linux Firewire subsystem provides a user-mode driver -interface that allows driver programs to access Firewire -devices. Easy Software Products will utilize this interface to -develop a "backend" program for the Common UNIX Printing System -that will allow users to print to EPSON printers using the -Firewire interface. - -After examining the Linux interface, we estimate that it will -require approximately 30 hours of development time to write, -test, and document the Firewire backend, for a total cost of -$3,000. The new backend will become a standard part of the CUPS -software distribution and will be included with at least the -following Linux distributions: - - - Caldera Linux - - Mandrake Linux - - Red Hat Linux - - SuSE Linux - -ESP will provide EPSON with binaries for Red Hat Linux 7.2. diff --git a/backend/ieee1394-linux.c b/backend/ieee1394-linux.c deleted file mode 100644 index b95e8204e..000000000 --- a/backend/ieee1394-linux.c +++ /dev/null @@ -1,877 +0,0 @@ -/* - * "$Id: ieee1394-linux.c 4703 2005-09-26 19:33:58Z mike $" - * - * Linux IEEE-1394 glue for the Common UNIX Printing System (CUPS). - * - * Copyright 2002 by Easy Software Products, all rights reserved. - * - * Redistribution and use in source and binary forms, with or - * without modification, are permitted provided that the - * following conditions are met: - * - * 1. Redistributions of source code must retain the above - * copyright notice, this list of conditions and the - * following disclaimer. - * - * 2. Redistributions in binary form must reproduce the - * above copyright notice, this list of conditions and - * the following disclaimer in the documentation and/or - * other materials provided with the distribution. - * - * 3. All advertising materials mentioning features or use - * of this software must display the following - * acknowledgement: - * - * This product includes software developed by Easy - * Software Products. - * - * 4. The name of Easy Software Products may not be used to - * endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, - * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS - * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE - * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH - * DAMAGE. - * - * Contents: - * - * get_device_id() - Get the IEEE-1284 device ID for a node... - * get_unit_type() - Get the unit type for a node... - * show_data() - Show a data node... - * show_dir() - Show a directory list... - * ieee1394_list() - List the available printer devices. - * ieee1394_open() - Open a printer device. - * ieee1394_close() - Close a printer device. - * ieee1394_read() - Read from a printer device. - * ieee1394_write() - Write data to a printer device. - * ieee1394_error() - Return the last error. - */ - -/* - * Include necessary headers. - */ - -#include "ieee1394.h" -#include -#include -#include - - -/* - * Limits... - */ - -#define MAX_NODES 100 - - -/* - * Structures... - */ - -typedef struct -{ - char uri[HTTP_MAX_URI],/* URI for this node... */ - description[128],/* Description of port */ - make_model[128];/* Make and model */ - int port, /* Port where this node is found */ - node; /* Node number */ - unsigned long long addr; /* Management address */ -} linux1394_node_t; - -typedef struct -{ - raw1394handle_t handle; /* Handle for printer device */ - int node; /* Node number for printer device */ - unsigned long long addr; /* Management address */ -} linux1394_dev_t; - - -/* - * ORB messages for communication with the device... - */ - -typedef struct /**** Login ORB Message */ -{ - unsigned char passwd_addr[8]; /* Password address */ - unsigned char resp_addr[8]; /* Login response address */ - unsigned char notify_excl; /* Notify and exclusive bits */ - unsigned char recon_func; /* Reconnect time and function */ - unsigned char lun[2]; /* Logical unit number */ - unsigned char passwd_len[2]; /* Length of password */ - unsigned char resp_len[2]; /* Length of login response */ - unsigned char fifo_addr[8]; /* Local status FIFO address */ -} login_orb_t; - -typedef struct /**** Login Response Message ****/ -{ - unsigned char length[2]; /* Length of response */ - unsigned char login_id[2]; /* Login ID */ - unsigned char cmd_addr[8]; /* Command block agent address */ - unsigned char reserved[2]; /* Reserved (0) */ - unsigned char recon_hold[2]; /* Number of seconds to hold login */ -} login_resp_t; - - -/* - * Local globals... - */ - -static char error_string[1024] = ""; -static int num_nodes; -static linux1394_node_t nodes[MAX_NODES]; - - -/* - * 'get_device_id()' - Get the IEEE-1284 device ID for a node... - */ - -static char * /* O - Device ID */ -get_device_id(raw1394handle_t handle,/* I - Handle for device */ - int node, /* I - Node number */ - unsigned long long offset,/* I - Offset to directory */ - char *id, /* O - ID string */ - int idlen) /* I - Size of ID string */ -{ - unsigned char data[1024], /* Data from ROM */ - *dataptr; /* Pointer into data */ - int length; /* Length of directory */ - int datalen; /* Length of data */ - unsigned long long dataoff; /* Offset of data */ - - - DEBUG_printf(("get_device_id(handle = %p, node = %d, offset = %llx, id = %p, idlen = %d)\n", - handle, node, offset, id, idlen)); - - *id = '\0'; - - /* - * Read the directory length from the first quadlet... - */ - - if (raw1394_read(handle, 0xffc0 | node, offset, 4, (quadlet_t *)data) < 0) - return (NULL); - - offset += 4; - - /* - * The length is in the upper 16 bits... - */ - - length = (data[0] << 8) | data[1]; - - DEBUG_printf((" length = %d\n", length)); - - /* - * Then read the directory, looking for unit directory or device tags... - */ - - while (length > 0) - { - if (raw1394_read(handle, 0xffc0 | node, offset, 4, (quadlet_t *)data) < 0) - return (NULL); - - DEBUG_printf((" data = %02X %02X %02X %02X\n", data[0], data[1], - data[2], data[3])); - - if (data[0] == 0xd1) - { - /* - * Found the unit directory... - */ - - offset += ((((data[1] << 8) | data[2]) << 8) | data[3]) << 2; - - return (get_device_id(handle, node, offset, id, idlen)); - } - else if (data[0] == 0x81) - { - /* - * Found potential IEEE-1284 device ID... - */ - - dataoff = offset + (((((data[1] << 8) | data[2]) << 8) | data[3]) << 2); - - if (raw1394_read(handle, 0xffc0 | node, dataoff, 4, (quadlet_t *)data) < 0) - return (NULL); - - dataoff += 4; - - /* - * Read the leaf value... - */ - - datalen = (data[0] << 8) | data[1]; - - if (datalen > (sizeof(data) / 4)) - datalen = sizeof(data) / 4; - - for (dataptr = data; datalen > 0; datalen --, dataptr += 4, dataoff += 4) - if (raw1394_read(handle, 0xffc0 | node, dataoff, 4, - (quadlet_t *)dataptr) < 0) - return (NULL); - - if (data[0] == 0 && memcmp(data + 8, "MFG:", 4) == 0) - { - /* - * Found the device ID... - */ - - datalen = dataptr - data - 8; - if (datalen >= idlen) - datalen --; - - memcpy(id, data + 8, datalen); - id[datalen] = '\0'; - - return (id); - } - } - - offset += 4; - length --; - } - - return (NULL); -} - - -/* - * 'get_man_addr()' - Get the management address for a node... - */ - -static int /* O - Unit type */ -get_man_addr(raw1394handle_t handle, /* I - Handle for device */ - int node, /* I - Node number */ - unsigned long long offset) /* I - Offset to directory */ -{ - unsigned char data[4]; /* Data from ROM */ - int length; /* Length of directory */ - - - DEBUG_printf(("get_man_addr(handle = %p, node = %d, offset = %llx)\n", - handle, node, offset)); - - /* - * Read the directory length from the first quadlet... - */ - - if (raw1394_read(handle, 0xffc0 | node, offset, 4, (quadlet_t *)data) < 0) - return (-1); - - offset += 4; - - /* - * The length is in the upper 16 bits... - */ - - length = (data[0] << 8) | data[1]; - - DEBUG_printf((" length = %d\n", length)); - - /* - * Then read the directory, looking for unit directory or type tags... - */ - - while (length > 0) - { - if (raw1394_read(handle, 0xffc0 | node, offset, 4, (quadlet_t *)data) < 0) - return (-1); - - DEBUG_printf((" data = %02X %02X %02X %02X\n", data[0], data[1], - data[2], data[3])); - - if (data[0] == 0xd1) - { - /* - * Found the unit directory... - */ - - offset += ((((data[1] << 8) | data[2]) << 8) | data[3]) << 2; - - return (get_man_addr(handle, node, offset)); - } - else if (data[0] == 0x54) - { - /* - * Found the management address... - */ - - return (((((data[1] << 8) | data[2]) << 8) | data[3]) << 2); - } - - offset += 4; - length --; - } - - return (-1); -} - - -/* - * 'get_unit_type()' - Get the unit type for a node... - */ - -static int /* O - Unit type */ -get_unit_type(raw1394handle_t handle,/* I - Handle for device */ - int node, /* I - Node number */ - unsigned long long offset)/* I - Offset to directory */ -{ - unsigned char data[4]; /* Data from ROM */ - int length; /* Length of directory */ - - - DEBUG_printf(("get_unit_type(handle = %p, node = %d, offset = %llx)\n", - handle, node, offset)); - - /* - * Read the directory length from the first quadlet... - */ - - if (raw1394_read(handle, 0xffc0 | node, offset, 4, (quadlet_t *)data) < 0) - return (-1); - - offset += 4; - - /* - * The length is in the upper 16 bits... - */ - - length = (data[0] << 8) | data[1]; - - DEBUG_printf((" length = %d\n", length)); - - /* - * Then read the directory, looking for unit directory or type tags... - */ - - while (length > 0) - { - if (raw1394_read(handle, 0xffc0 | node, offset, 4, (quadlet_t *)data) < 0) - return (-1); - - DEBUG_printf((" data = %02X %02X %02X %02X\n", data[0], data[1], - data[2], data[3])); - - if (data[0] == 0xd1) - { - /* - * Found the unit directory... - */ - - offset += ((((data[1] << 8) | data[2]) << 8) | data[3]) << 2; - - return (get_unit_type(handle, node, offset)); - } - else if (data[0] == 0x14) - { - /* - * Found the unit type... - */ - - return (data[1] & 0x1f); - } - - offset += 4; - length --; - } - - return (-1); -} - - -#ifdef DEBUG -/* - * 'show_data()' - Show a data node... - */ - -static void -show_data(raw1394handle_t handle, /* I - Handle for device */ - int node, /* I - Node number */ - unsigned long long offset, /* I - Offset to directory */ - int indent) /* Amount to indent */ -{ - int i; /* Looping var */ - unsigned char data[4]; /* Data from ROM */ - int length; /* Length of data */ - - - /* - * Read the data length from the first quadlet... - */ - - if (raw1394_read(handle, 0xffc0 | node, offset, 4, (quadlet_t *)data) < 0) - return; - - offset += 4; - - /* - * The length is in the upper 16 bits... - */ - - length = (data[0] << 8) | data[1]; - - /* - * Then read the data... - */ - - for (i = 0; i < indent; i ++) - putchar(' '); - - printf("LEAF (%d quadlets)\n", length); - - while (length > 0) - { - if (raw1394_read(handle, 0xffc0 | node, offset, 4, (quadlet_t *)data) < 0) - return; - - for (i = 0; i < indent; i ++) - putchar(' '); - - printf("%02X %02X %02X %02X '%c%c%c%c'\n", - data[0], data[1], data[2], data[3], - (data[0] < ' ' || data[0] >= 0x7f) ? '.' : data[0], - (data[1] < ' ' || data[1] >= 0x7f) ? '.' : data[1], - (data[2] < ' ' || data[2] >= 0x7f) ? '.' : data[2], - (data[3] < ' ' || data[3] >= 0x7f) ? '.' : data[3]); - - offset += 4; - length --; - } -} - - -/* - * 'show_dir()' - Show a directory list... - */ - -static void -show_dir(raw1394handle_t handle, /* I - Handle for device */ - int node, /* I - Node number */ - unsigned long long offset, /* I - Offset to directory */ - int indent) /* Amount to indent */ -{ - int i; /* Looping var */ - unsigned char data[4]; /* Data from ROM */ - int length; /* Length of directory */ - int value; /* Value in directory */ - - - /* - * Read the directory length from the first quadlet... - */ - - if (raw1394_read(handle, 0xffc0 | node, offset, 4, (quadlet_t *)data) < 0) - return; - - offset += 4; - - /* - * The length is in the upper 16 bits... - */ - - length = (data[0] << 8) | data[1]; - - /* - * Then read the directory... - */ - - while (length > 0) - { - if (raw1394_read(handle, 0xffc0 | node, offset, 4, (quadlet_t *)data) < 0) - return; - - for (i = 0; i < indent; i ++) - putchar(' '); - - printf("%02X %02X %02X %02X\n", data[0], data[1], data[2], data[3]); - - value = (((data[1] << 8) | data[2]) << 8) | data[3]; - - switch (data[0] & 0xc0) - { - case 0x00 : - for (i = -4; i < indent; i ++) - putchar(' '); - - printf("IMMEDIATE %d\n", value); - break; - - case 0x40 : - for (i = -4; i < indent; i ++) - putchar(' '); - - printf("CSR OFFSET +%06X\n", value); - break; - - case 0x80 : - show_data(handle, node, offset + value * 4, indent + 4); - break; - - case 0xc0 : - show_dir(handle, node, offset + value * 4, indent + 4); - break; - } - - offset += 4; - length --; - } -} -#endif /* DEBUG */ - - -/* - * 'ieee1394_list()' - List the available printer devices. - */ - -ieee1394_info_t * /* O - Printer information */ -ieee1394_list(int *num_devices) /* O - Number of printers */ -{ - int i, j; /* Looping vars */ - raw1394handle_t handle; /* 1394 handle */ - int num_ports; /* Number of ports */ - struct raw1394_portinfo ports[100]; /* Port data... */ - unsigned char guid[8]; /* Global unique ID */ - int vendor; /* Vendor portion of GUID */ - int unit_type; /* Unit type */ - int addr; /* Management address offset */ - char id[1024], /* Device ID string */ - *idptr, /* Pointer into ID string */ - *idsep; /* Pointer to separator */ - ieee1394_info_t *devices; /* Device list */ - - - /* - * Connect to the user-mode driver interface... - */ - - handle = raw1394_new_handle(); - num_ports = raw1394_get_port_info(handle, ports, - sizeof(ports) / sizeof(ports[0])); - - DEBUG_printf(("num_ports = %d\n", num_ports)); - - /* - * Loop through the ports to discover what nodes are available. - */ - - num_nodes = 0; - - for (i = 0; i < num_ports; i ++) - { - DEBUG_printf(("ports[%d] = { nodes = %d, name = \"%s\" }\n", i, - ports[i].nodes, ports[i].name)); - - raw1394_set_port(handle, i); - - for (j = 0; j < ports[i].nodes; j ++) - { - if (raw1394_read(handle, 0xffc0 | j, - CSR_REGISTER_BASE + CSR_CONFIG_ROM + 12, 4, - (quadlet_t *)guid) < 0) - { - DEBUG_printf((" Node #%d: Unable to contact (%s)!\n", j, - strerror(errno))); - continue; - } - else - { - raw1394_read(handle, 0xffc0 | j, - CSR_REGISTER_BASE + CSR_CONFIG_ROM + 16, 4, - (quadlet_t *)(guid + 4)); - - DEBUG_printf((" Node #%d: GUID = %02X%02X%02X%02X%02X%02X%02X%02X\n", - j, guid[0], guid[1], guid[2], guid[3], guid[4], - guid[5], guid[6], guid[7])); - - vendor = (((guid[0] << 8) | guid[1]) << 8) | guid[2]; - unit_type = get_unit_type(handle, j, - CSR_REGISTER_BASE + CSR_CONFIG_ROM + 20); - - DEBUG_printf(("vendor = %x, unit_type = %d\n", vendor, unit_type)); - - if (unit_type == 2 && num_nodes < MAX_NODES) - { - /* - * Found a printer device; add it to the nodes list... - */ - -#ifdef DEBUG - show_dir(handle, j, CSR_REGISTER_BASE + CSR_CONFIG_ROM + 20, 0); -#endif /* DEBUG */ - - memset(nodes + num_nodes, 0, sizeof(linux1394_node_t)); - - sprintf(nodes[num_nodes].uri, "ieee1394://%02X%02X%02X%02X%02X%02X%02X%02X", - guid[0], guid[1], guid[2], guid[3], guid[4], - guid[5], guid[6], guid[7]); - - nodes[num_nodes].port = i; - nodes[num_nodes].node = j; - - addr = get_man_addr(handle, j, CSR_REGISTER_BASE + CSR_CONFIG_ROM + 20); - - if (addr < 0) - continue; - - nodes[num_nodes].addr = CSR_REGISTER_BASE + addr; - - DEBUG_printf(("Node address = %llx\n", nodes[num_nodes].addr)); - - get_device_id(handle, j, CSR_REGISTER_BASE + CSR_CONFIG_ROM + 20, - id, sizeof(id)); - - if (id[0]) - { - /* - * Grab the manufacturer and model name from the device ID - * string... - */ - - idptr = id + 4; - idsep = strchr(id, ';'); - if (idsep) - *idsep++ = '\0'; - else - idsep = idptr; - - snprintf(nodes[num_nodes].description, - sizeof(nodes[num_nodes].description), - "%s Firewire Printer", idptr); - - if ((idptr = strstr(idsep, "DES:")) == NULL) - idptr = strstr(idsep, "MDL:"); - - if (idptr == NULL) - strcpy(nodes[num_nodes].make_model, "Unknown"); - else - { - /* - * Grab the DES or MDL code... - */ - - idptr += 4; - idsep = strchr(idptr, ';'); - if (idsep) - *idsep = '\0'; - - if (strncmp(id + 4, idptr, strlen(id + 4)) == 0) - { - /* - * Use the description directly... - */ - - strlcpy(nodes[num_nodes].make_model, idptr, - sizeof(nodes[num_nodes].make_model)); - } - else - { - /* - * Add the manufacturer to the front of the name... - */ - - snprintf(nodes[num_nodes].make_model, - sizeof(nodes[num_nodes].make_model), - "%s %s", id + 4, idptr); - } - } - } - else - { - /* - * Flag it as an unknown printer... - */ - - sprintf(nodes[num_nodes].description, - "Unknown%06X Firewire Printer", vendor); - strcpy(nodes[num_nodes].make_model, "Unknown"); - } - - num_nodes ++; - } - } - } - } - - /* - * Done querying the Firewire bus... - */ - - raw1394_destroy_handle(handle); - - /* - * Build an array of device info structures as needed... - */ - - if (num_devices == NULL) - return (NULL); - - *num_devices = num_nodes; - - if (num_nodes) - { - if ((devices = calloc(sizeof(ieee1394_info_t), num_nodes)) != NULL) - { - for (i = 0; i < num_nodes; i ++) - { - strcpy(devices[i].uri, nodes[i].uri); - strcpy(devices[i].description, nodes[i].description); - strcpy(devices[i].make_model, nodes[i].make_model); - } - } - - return (devices); - } - else - return (NULL); -} - - -/* - * 'ieee1394_open()' - Open a printer device. - */ - -ieee1394_dev_t /* O - Printer device or NULL */ -ieee1394_open(const char *uri) /* I - Device URI */ -{ - int i; /* Looping var */ - linux1394_dev_t *ldev; /* Linux device */ - - - /* - * Return early if we can't see any printers... - */ - - if (num_nodes == 0) - ieee1394_list(NULL); - - if (num_nodes == 0) - { - strcpy(error_string, "No IEEE-1394 printers found!"); - return (NULL); - } - - /* - * Look for the URI... - */ - - for (i = 0; i < num_nodes; i ++) - if (strcmp(nodes[i].uri, uri) == 0) - break; - - if (i >= num_nodes) - { - snprintf(error_string, sizeof(error_string), "Device %s not found!", uri); - return (NULL); - } - - /* - * Now create a new device structure... - */ - - if ((ldev = calloc(sizeof(linux1394_dev_t), 1)) == NULL) - { - strcpy(error_string, "Out of memory!"); - return (NULL); - } - - ldev->handle = raw1394_new_handle(); - ldev->node = nodes[i].node; - ldev->addr = nodes[i].addr; - - raw1394_set_port(ldev->handle, nodes[i].port); - - error_string[0] = '\0'; - - return ((ieee1394_dev_t)ldev); -} - - -/* - * 'ieee1394_close()' - Close a printer device. - */ - -int /* O - 0 on success, -1 on failure */ -ieee1394_close(ieee1394_dev_t dev) /* I - Printer device */ -{ - linux1394_dev_t *ldev; /* Linux device */ - - - ldev = (linux1394_dev_t *)dev; - - raw1394_destroy_handle(ldev->handle); - - free(ldev); - - return (0); -} - - -/* - * 'ieee1394_read()' - Read from a printer device. - */ - -int /* O - Number of bytes read or -1 */ -ieee1394_read(ieee1394_dev_t dev, /* I - Printer device */ - char *buffer, /* I - Read buffer */ - int len) /* I - Max bytes to read */ -{ - linux1394_dev_t *ldev; /* Linux device */ - - - ldev = (linux1394_dev_t *)dev; - - - return (0); -} - - -/* - * 'ieee1394_write()' - Write data to a printer device. - */ - -int /* O - Number of bytes written or -1 */ -ieee1394_write(ieee1394_dev_t dev, /* I - Printer device */ - char *buffer, /* I - Buffer to write */ - int len) /* I - Number of bytes to write */ -{ - linux1394_dev_t *ldev; /* Linux device */ - - - ldev = (linux1394_dev_t *)dev; - - -/* if (raw1394_write(handle, 0xffc0 | j, 0, , - (quadlet_t *)guid) < 0)*/ - - return (len); -} - - -/* - * 'ieee1394_error()' - Return the last error. - */ - -const char * /* O - Error string or NULL */ -ieee1394_error(void) -{ - if (error_string[0]) - return (error_string); - else - return (NULL); -} - - -/* - * End of "$Id: ieee1394-linux.c 4703 2005-09-26 19:33:58Z mike $". - */ diff --git a/backend/ieee1394.c b/backend/ieee1394.c deleted file mode 100644 index 3d88c7a08..000000000 --- a/backend/ieee1394.c +++ /dev/null @@ -1,267 +0,0 @@ -/* - * "$Id: ieee1394.c 5241 2006-03-07 22:07:44Z mike $" - * - * IEEE-1394 backend for the Common UNIX Printing System (CUPS). - * - * Copyright 2002 by Easy Software Products, all rights reserved. - * - * Redistribution and use in source and binary forms, with or - * without modification, are permitted provided that the - * following conditions are met: - * - * 1. Redistributions of source code must retain the above - * copyright notice, this list of conditions and the - * following disclaimer. - * - * 2. Redistributions in binary form must reproduce the - * above copyright notice, this list of conditions and - * the following disclaimer in the documentation and/or - * other materials provided with the distribution. - * - * 3. All advertising materials mentioning features or use - * of this software must display the following - * acknowledgement: - * - * This product includes software developed by Easy - * Software Products. - * - * 4. The name of Easy Software Products may not be used to - * endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, - * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS - * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE - * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH - * DAMAGE. - * - * Contents: - * - * main() - Send a file to the printer. - * list_devices() - List all known printer devices... - */ - -/* - * Include necessary headers. - */ - -#include "ieee1394.h" - - -/* - * Local functions... - */ - -void list_devices(void); - - -/* - * 'main()' - Send a file to the printer. - * - * Usage: - * - * printer-uri job-id user title copies options [file] - */ - -int /* O - Exit status */ -main(int argc, /* I - Number of command-line arguments (6 or 7) */ - char *argv[]) /* I - Command-line arguments */ -{ - ieee1394_dev_t dev; /* Printer device */ - int fp; /* Print file */ - int copies; /* Number of copies to print */ - int rbytes; /* Number of bytes read from device */ - size_t nbytes, /* Number of bytes read from file */ - tbytes; /* Total number of bytes written */ - char buffer[8192]; /* Input/output buffer */ -#if defined(HAVE_SIGACTION) && !defined(HAVE_SIGSET) - struct sigaction action; /* Actions for POSIX signals */ -#endif /* HAVE_SIGACTION && !HAVE_SIGSET */ - - - /* - * Make sure status messages are not buffered... - */ - - setbuf(stderr, NULL); - - /* - * Check command-line... - */ - - if (argc == 1) - { - list_devices(); - - return (0); - } - else if (argc < 6 || argc > 7) - { - fprintf(stderr, "Usage: %s job-id user title copies options [file]\n", - argv[0]); - return (1); - } - - /* - * If we have 7 arguments, print the file named on the command-line. - * Otherwise, send stdin instead... - */ - - if (argc == 6) - { - fp = 0; - copies = 1; - } - else - { - /* - * Try to open the print file... - */ - - if ((fp = open(argv[6], O_RDONLY)) < 0) - { - perror("ERROR: unable to open print file"); - return (1); - } - - copies = atoi(argv[4]); - } - - /* - * Try to open the printer device... - */ - - fputs("STATE: +connecting-to-device\n", stderr); - - do - { - if ((dev = ieee1394_open(argv[0])) == NULL) - { - fputs("INFO: Firewire printer busy; will retry in 30 seconds...\n", stderr); - sleep(30); - } - } - while (dev == NULL); - - fputs("STATE: -connecting-to-device\n", stderr); - - /* - * Now that we are "connected" to the port, ignore SIGTERM so that we - * can finish out any page data the driver sends (e.g. to eject the - * current page... Only ignore SIGTERM if we are printing data from - * stdin (otherwise you can't cancel raw jobs...) - */ - - if (argc < 7) - { -#ifdef HAVE_SIGSET /* Use System V signals over POSIX to avoid bugs */ - sigset(SIGTERM, SIG_IGN); -#elif defined(HAVE_SIGACTION) - memset(&action, 0, sizeof(action)); - - sigemptyset(&action.sa_mask); - action.sa_handler = SIG_IGN; - sigaction(SIGTERM, &action, NULL); -#else - signal(SIGTERM, SIG_IGN); -#endif /* HAVE_SIGSET */ - } - - /* - * Finally, send the print file... - */ - - while (copies > 0) - { - copies --; - - if (fp != 0) - { - fputs("PAGE: 1 1\n", stderr); - lseek(fp, 0, SEEK_SET); - } - - tbytes = 0; - while ((nbytes = read(fp, buffer, sizeof(buffer))) > 0) - { - /* - * Write the print data to the printer... - */ - - tbytes += nbytes; - - if (ieee1394_write(dev, buffer, nbytes) < 0) - { - perror("ERROR: Unable to send print file to printer"); - break; - } - - if ((rbytes = ieee1394_read(dev, buffer, sizeof(buffer))) > 0) - fprintf(stderr, "INFO: Read %d bytes from printer...\n", rbytes); - - if (argc > 6) - fprintf(stderr, "INFO: Sending print file, %lu bytes...\n", - (unsigned long)tbytes); - } - } - - /* - * Close the printer device and input file and return... - */ - - ieee1394_close(dev); - - if (fp != 0) - close(fp); - - fputs("INFO: Ready to print.\n", stderr); - - return (0); -} - - -/* - * 'list_devices()' - List all known devices... - */ - -void -list_devices(void) -{ - int i, /* Looping var */ - num_info; /* Number of devices */ - ieee1394_info_t *info; /* Devices... */ - - - /* - * Get the available devices... - */ - - info = ieee1394_list(&num_info); - - /* - * List them as needed... - */ - - if (num_info > 0) - { - for (i = 0; i < num_info; i ++) - printf("direct %s \"%s\" \"%s\"\n", info[i].uri, - info[i].make_model, info[i].description); - - free(info); - } -} - - -/* - * End of "$Id: ieee1394.c 5241 2006-03-07 22:07:44Z mike $". - */ diff --git a/backend/ieee1394.h b/backend/ieee1394.h deleted file mode 100644 index 19181c5c0..000000000 --- a/backend/ieee1394.h +++ /dev/null @@ -1,103 +0,0 @@ -/* - * "$Id: ieee1394.h 4494 2005-02-18 02:18:11Z mike $" - * - * IEEE-1394 header for the Common UNIX Printing System (CUPS). - * - * Copyright 2002 by Easy Software Products, all rights reserved. - * - * Redistribution and use in source and binary forms, with or - * without modification, are permitted provided that the - * following conditions are met: - * - * 1. Redistributions of source code must retain the above - * copyright notice, this list of conditions and the - * following disclaimer. - * - * 2. Redistributions in binary form must reproduce the - * above copyright notice, this list of conditions and - * the following disclaimer in the documentation and/or - * other materials provided with the distribution. - * - * 3. All advertising materials mentioning features or use - * of this software must display the following - * acknowledgement: - * - * This product includes software developed by Easy - * Software Products. - * - * 4. The name of Easy Software Products may not be used to - * endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, - * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS - * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE - * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH - * DAMAGE. - */ - -/* - * Include necessary headers. - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef WIN32 -# include -#else -# include -# include -#endif /* WIN32 */ - - -/* - * Device information structure... - */ - -typedef struct -{ - char uri[HTTP_MAX_URI], /* Device URI */ - description[128], /* Description of port */ - make_model[128]; /* Make and model */ -} ieee1394_info_t; - - -/* - * Private device connection information... - */ - -typedef void *ieee1394_dev_t; - - -/* - * Prototypes for standard IEEE-1394 interface... - */ - -extern ieee1394_info_t *ieee1394_list(int *num_devices); -extern ieee1394_dev_t ieee1394_open(const char *uri); -extern int ieee1394_close(ieee1394_dev_t dev); -extern int ieee1394_read(ieee1394_dev_t dev, char *buffer, int len); -extern int ieee1394_write(ieee1394_dev_t dev, char *buffer, int len); -extern const char *ieee1394_error(void); - - -/* - * End of "$Id: ieee1394.h 4494 2005-02-18 02:18:11Z mike $". - */ diff --git a/backend/ipp.c b/backend/ipp.c index 4bcd3c794..e64d6c44c 100644 --- a/backend/ipp.c +++ b/backend/ipp.c @@ -1,5 +1,5 @@ /* - * "$Id: ipp.c 5686 2006-06-21 21:02:56Z mike $" + * "$Id: ipp.c 5724 2006-07-12 19:42:35Z mike $" * * IPP backend for the Common UNIX Printing System (CUPS). * @@ -230,6 +230,8 @@ main(int argc, /* I - Number of command-line args */ if (!strcmp(method, "https")) cupsSetEncryption(HTTP_ENCRYPT_ALWAYS); + else + cupsSetEncryption(HTTP_ENCRYPT_IF_REQUESTED); /* * See if there are any options... @@ -1620,5 +1622,5 @@ sigterm_handler(int sig) /* I - Signal */ /* - * End of "$Id: ipp.c 5686 2006-06-21 21:02:56Z mike $". + * End of "$Id: ipp.c 5724 2006-07-12 19:42:35Z mike $". */ diff --git a/backend/parallel.c b/backend/parallel.c index 3b8c9ba09..c223fb06c 100644 --- a/backend/parallel.c +++ b/backend/parallel.c @@ -1,5 +1,5 @@ /* - * "$Id: parallel.c 5594 2006-05-27 03:14:03Z mike $" + * "$Id: parallel.c 5726 2006-07-12 20:00:11Z mike $" * * Parallel port backend for the Common UNIX Printing System (CUPS). * @@ -92,10 +92,6 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */ int copies; /* Number of copies to print */ size_t tbytes; /* Total number of bytes written */ struct termios opts; /* Parallel port options */ -#if defined(__linux) && defined(LP_POUTPA) - unsigned int status; /* Port status (off-line, out-of-paper, etc.) */ - int paperout; /* Paper out? */ -#endif /* __linux && LP_POUTPA */ #if defined(HAVE_SIGACTION) && !defined(HAVE_SIGSET) struct sigaction action; /* Actions for POSIX signals */ #endif /* HAVE_SIGACTION && !HAVE_SIGSET */ @@ -252,36 +248,6 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */ tcsetattr(device_fd, TCSANOW, &opts); -#if defined(__linux) && defined(LP_POUTPA) - /* - * Show the printer status before we send the file... - */ - - paperout = 0; - - while (!ioctl(fd, LPGETSTATUS, &status)) - { - fprintf(stderr, "DEBUG: LPGETSTATUS returned a port status of %02X...\n", status); - - if (status & LP_POUTPA) - { - fputs("WARNING: Media tray empty!\n", stderr); - fputs("STATUS: +media-tray-empty-error\n", stderr); - - paperout = 1; - } - - if (!(status & LP_PERRORP)) - fputs("WARNING: Printer fault!\n", stderr); - else if (!(status & LP_PSELECD)) - fputs("WARNING: Printer off-line.\n", stderr); - else - break; - - sleep(5); - } -#endif /* __linux && LP_POUTPA */ - /* * Finally, send the print file... */ @@ -612,5 +578,5 @@ list_devices(void) /* - * End of "$Id: parallel.c 5594 2006-05-27 03:14:03Z mike $". + * End of "$Id: parallel.c 5726 2006-07-12 20:00:11Z mike $". */ diff --git a/backend/runloop.c b/backend/runloop.c index 6393ed507..03bb09282 100644 --- a/backend/runloop.c +++ b/backend/runloop.c @@ -1,5 +1,5 @@ /* - * "$Id: runloop.c 5594 2006-05-27 03:14:03Z mike $" + * "$Id: runloop.c 5726 2006-07-12 20:00:11Z mike $" * * Common run loop API for the Common UNIX Printing System (CUPS). * @@ -53,6 +53,7 @@ backendRunLoop(int print_fd, /* I - Print file descriptor */ total_bytes, /* Total bytes written */ bytes; /* Bytes written */ int paperout; /* "Paper out" status */ + int offline; /* "Off-line" status */ char print_buffer[8192], /* Print data buffer */ *print_ptr, /* Pointer into print data buffer */ bc_buffer[1024]; /* Back-channel data buffer */ @@ -61,6 +62,9 @@ backendRunLoop(int print_fd, /* I - Print file descriptor */ #endif /* HAVE_SIGACTION && !HAVE_SIGSET */ + fprintf(stderr, "DEBUG: backendRunLoop(print_fd=%d, device_fd=%d, use_bc=%d)\n", + print_fd, device_fd, use_bc); + /* * If we are printing data from a print driver on stdin, ignore SIGTERM * so that the driver can finish out any page data, e.g. to eject the @@ -93,7 +97,7 @@ backendRunLoop(int print_fd, /* I - Print file descriptor */ * Now loop until we are out of data from print_fd... */ - for (print_bytes = 0, print_ptr = print_buffer, paperout = 0, total_bytes = 0;;) + for (print_bytes = 0, print_ptr = print_buffer, offline = 0, paperout = 0, total_bytes = 0;;) { /* * Use select() to determine whether we have data to copy around... @@ -106,11 +110,28 @@ backendRunLoop(int print_fd, /* I - Print file descriptor */ FD_SET(device_fd, &input); FD_ZERO(&output); - if (print_bytes) + if (print_bytes || !use_bc) FD_SET(device_fd, &output); - if (select(nfds, &input, &output, NULL, NULL) < 0) - continue; /* Ignore errors here */ + if (use_bc) + { + if (select(nfds, &input, &output, NULL, NULL) < 0) + { + /* + * Pause printing to clear any pending errors... + */ + + if (errno == ENXIO && !offline) + { + fputs("STATE: +offline-error\n", stderr); + fputs("INFO: Printer is currently off-line.\n", stderr); + offline = 1; + } + + sleep(1); + continue; + } + } /* * Check if we have back-channel data ready... @@ -158,6 +179,9 @@ backendRunLoop(int print_fd, /* I - Print file descriptor */ } print_ptr = print_buffer; + + fprintf(stderr, "DEBUG: Read %d bytes of print data...\n", + (int)print_bytes); } /* @@ -182,6 +206,15 @@ backendRunLoop(int print_fd, /* I - Print file descriptor */ paperout = 1; } } + else if (errno == ENXIO) + { + if (!offline) + { + fputs("STATE: +offline-error\n", stderr); + fputs("INFO: Printer is currently off-line.\n", stderr); + offline = 1; + } + } else if (errno != EAGAIN && errno != EINTR && errno != ENOTTY) { perror("ERROR: Unable to write print data"); @@ -196,7 +229,14 @@ backendRunLoop(int print_fd, /* I - Print file descriptor */ paperout = 0; } - fprintf(stderr, "DEBUG: Wrote %d bytes...\n", (int)bytes); + if (offline) + { + fputs("STATE: -offline-error\n", stderr); + fputs("INFO: Printer is now on-line.\n", stderr); + offline = 0; + } + + fprintf(stderr, "DEBUG: Wrote %d bytes of print data...\n", (int)bytes); print_bytes -= bytes; print_ptr += bytes; @@ -214,5 +254,5 @@ backendRunLoop(int print_fd, /* I - Print file descriptor */ /* - * End of "$Id: runloop.c 5594 2006-05-27 03:14:03Z mike $". + * End of "$Id: runloop.c 5726 2006-07-12 20:00:11Z mike $". */ diff --git a/backend/snmp.c b/backend/snmp.c index 8ac2dea4f..56e7ad9e7 100644 --- a/backend/snmp.c +++ b/backend/snmp.c @@ -1,5 +1,5 @@ /* - * "$Id: snmp.c 5663 2006-06-15 20:36:42Z mike $" + * "$Id: snmp.c 5736 2006-07-13 19:59:36Z mike $" * * SNMP discovery backend for the Common UNIX Printing System (CUPS). * @@ -384,7 +384,7 @@ add_cache(http_addr_t *addr, /* I - Device IP address */ debug_printf("DEBUG: add_cache(addr=%p, addrname=\"%s\", uri=\"%s\", " "id=\"%s\", make_and_model=\"%s\")\n", - addr, addrname, uri, id ? id : "(null)", + addr, addrname, uri ? uri : "(null)", id ? id : "(null)", make_and_model ? make_and_model : "(null)"); temp = calloc(1, sizeof(snmp_cache_t)); @@ -1203,7 +1203,7 @@ static int /* O - Result of comparison */ compare_cache(snmp_cache_t *a, /* I - First cache entry */ snmp_cache_t *b) /* I - Second cache entry */ { - return (a->address.ipv4.sin_addr.s_addr - b->address.ipv4.sin_addr.s_addr); + return (strcasecmp(a->addrname, b->addrname)); } @@ -1874,8 +1874,8 @@ read_snmp_response(int fd) /* I - SNMP socket file descriptor */ * Find a matching device in the cache... */ - key.address = addr; - device = (snmp_cache_t *)cupsArrayFind(Devices, &key); + key.addrname = addrname; + device = (snmp_cache_t *)cupsArrayFind(Devices, &key); /* * Process the message... @@ -2215,5 +2215,5 @@ update_cache(snmp_cache_t *device, /* I - Device */ /* - * End of "$Id: snmp.c 5663 2006-06-15 20:36:42Z mike $". + * End of "$Id: snmp.c 5736 2006-07-13 19:59:36Z mike $". */ diff --git a/backend/usb-unix.c b/backend/usb-unix.c index 13b2dc049..94544df5e 100644 --- a/backend/usb-unix.c +++ b/backend/usb-unix.c @@ -1,5 +1,5 @@ /* - * "$Id: usb-unix.c 5628 2006-06-05 15:25:23Z mike $" + * "$Id: usb-unix.c 5726 2006-07-12 20:00:11Z mike $" * * USB port backend for the Common UNIX Printing System (CUPS). * @@ -44,7 +44,7 @@ * Local functions... */ -int open_device(const char *uri); +int open_device(const char *uri, int *use_bc); /* @@ -65,23 +65,11 @@ print_device(const char *uri, /* I - Device URI */ int device_fd; /* USB device */ size_t tbytes; /* Total number of bytes written */ struct termios opts; /* Parallel port options */ -#if defined(__linux) && defined(LP_POUTPA) - unsigned int status; /* Port status (off-line, out-of-paper, etc.) */ - int paperout; /* Paper out? */ -#endif /* __linux && LP_POUTPA */ (void)argc; (void)argv; - /* - * Disable backchannel data when printing to Canon USB printers - apparently - * Canon printers will return the IEEE-1284 device ID over and over and over - * when they get a read request... - */ - - use_bc = strcasecmp(hostname, "Canon") != 0; - /* * Open the USB port device... */ @@ -90,7 +78,15 @@ print_device(const char *uri, /* I - Device URI */ do { - if ((device_fd = open_device(uri)) == -1) + /* + * Disable backchannel data when printing to Canon USB printers - apparently + * Canon printers will return the IEEE-1284 device ID over and over and over + * when they get a read request... + */ + + use_bc = strcasecmp(hostname, "Canon") != 0; + + if ((device_fd = open_device(uri, &use_bc)) == -1) { if (getenv("CLASS") != NULL) { @@ -148,37 +144,6 @@ print_device(const char *uri, /* I - Device URI */ tcsetattr(device_fd, TCSANOW, &opts); -#if defined(__linux) && defined(LP_POUTPA) - /* - * Show the printer status before we send the file... - */ - - paperout = 0; - - while (!ioctl(device_fd, LPGETSTATUS, &status)) - { - fprintf(stderr, "DEBUG: LPGETSTATUS returned a port status of %02X...\n", - status); - - if (status & LP_POUTPA) - { - fputs("WARNING: Media tray empty!\n", stderr); - fputs("STATUS: +media-tray-empty-error\n", stderr); - - paperout = 1; - } - - if (!(status & LP_PERRORP)) - fputs("WARNING: Printer fault!\n", stderr); - else if (!(status & LP_PSELECD)) - fputs("WARNING: Printer off-line.\n", stderr); - else - break; - - sleep(5); - } -#endif /* __linux && LP_POUTPA */ - /* * Finally, send the print file... */ @@ -195,7 +160,7 @@ print_device(const char *uri, /* I - Device URI */ lseek(print_fd, 0, SEEK_SET); } - tbytes = backendRunLoop(print_fd, device_fd, 1); + tbytes = backendRunLoop(print_fd, device_fd, use_bc); if (print_fd != 0 && tbytes >= 0) fprintf(stderr, "INFO: Sent print file, " CUPS_LLFMT " bytes...\n", @@ -277,7 +242,7 @@ list_devices(void) { sprintf(device, "/dev/usb/printer%d", i); - if ((fd = open(device, O_RDWR | O_EXCL)) >= 0) + if ((fd = open(device, O_WRONLY | O_EXCL)) >= 0) { if (!backendGetDeviceID(fd, device_id, sizeof(device_id), make_model, sizeof(make_model), @@ -314,8 +279,12 @@ list_devices(void) */ int /* O - File descriptor or -1 on error */ -open_device(const char *uri) /* I - Device URI */ +open_device(const char *uri, /* I - Device URI */ + int *use_bc) /* O - Set to 0 for unidirectional */ { + int fd; /* File descriptor */ + + /* * The generic implementation just treats the URI as a device filename... * Specific operating systems may also support using the device serial @@ -340,7 +309,6 @@ open_device(const char *uri) /* I - Device URI */ int i; /* Looping var */ int busy; /* Are any ports busy? */ - int fd; /* File descriptor */ char format[255], /* Format for device filename */ device[255], /* Device filename */ device_id[1024], /* Device ID string */ @@ -446,7 +414,6 @@ open_device(const char *uri) /* I - Device URI */ int i; /* Looping var */ int busy; /* Are any ports busy? */ - int fd; /* File descriptor */ char device[255], /* Device filename */ device_id[1024], /* Device ID string */ make_model[1024], /* Make and model */ @@ -463,7 +430,7 @@ open_device(const char *uri) /* I - Device URI */ { sprintf(device, "/dev/usb/printer%d", i); - if ((fd = open(device, O_RDWR | O_EXCL)) >= 0) + if ((fd = open(device, O_WRONLY | O_EXCL)) >= 0) backendGetDeviceID(fd, device_id, sizeof(device_id), make_model, sizeof(make_model), "usb", device_uri, sizeof(device_uri)); @@ -481,7 +448,17 @@ open_device(const char *uri) /* I - Device URI */ } if (!strcmp(uri, device_uri)) - return (fd); /* Yes, return this file descriptor... */ + { + /* + * Yes, return this file descriptor... + */ + + fputs("DEBUG: Setting use_bc to 0!\n", stderr); + + *use_bc = 0; + + return (fd); + } /* * This wasn't the one... @@ -514,7 +491,15 @@ open_device(const char *uri) /* I - Device URI */ return (-1); } #else - return (open(uri + 4, O_RDWR | O_EXCL)); + { + if ((fd = open(uri + 4, O_RDWR | O_EXCL)) < 0) + { + fd = open(uri + 4, O_WRONLY | O_EXCL); + *use_bc = 0; + } + + return (fd); + } #endif /* __linux */ else { @@ -525,5 +510,5 @@ open_device(const char *uri) /* I - Device URI */ /* - * End of "$Id: usb-unix.c 5628 2006-06-05 15:25:23Z mike $". + * End of "$Id: usb-unix.c 5726 2006-07-12 20:00:11Z mike $". */ diff --git a/berkeley/lprm.c b/berkeley/lprm.c index 67479b5a3..41f35ca12 100644 --- a/berkeley/lprm.c +++ b/berkeley/lprm.c @@ -1,5 +1,5 @@ /* - * "$Id: lprm.c 5023 2006-01-29 14:39:44Z mike $" + * "$Id: lprm.c 5719 2006-07-11 21:04:48Z mike $" * * "lprm" command for the Common UNIX Printing System (CUPS). * @@ -57,7 +57,8 @@ main(int argc, /* I - Number of command-line arguments */ ipp_op_t op; /* Operation */ cups_lang_t *language; /* Language */ int num_dests; /* Number of destinations */ - cups_dest_t *dests; /* Destinations */ + cups_dest_t *dests, /* Destinations */ + *defdest; /* Default destination */ http_encryption_t encryption; /* Encryption? */ @@ -72,11 +73,6 @@ main(int argc, /* I - Number of command-line arguments */ http = NULL; encryption = cupsEncryption(); language = cupsLangDefault(); - num_dests = cupsGetDests(&dests); - - for (i = 0; i < num_dests; i ++) - if (dests[i].is_default) - dest = dests[i].name; /* * Open a connection to the server... @@ -85,10 +81,13 @@ main(int argc, /* I - Number of command-line arguments */ if ((http = httpConnectEncrypt(cupsServer(), ippPort(), encryption)) == NULL) { _cupsLangPuts(stderr, _("lprm: Unable to contact server!\n")); - cupsFreeDests(num_dests, dests); return (1); } + num_dests = cupsGetDests2(http, &dests); + defdest = cupsGetDest(NULL, NULL, num_dests, dests); + dest = defdest ? defdest->name : NULL; + /* * Process command-line arguments... */ @@ -102,6 +101,7 @@ main(int argc, /* I - Number of command-line arguments */ encryption = HTTP_ENCRYPT_REQUIRED; httpEncryption(http, encryption); + cupsSetEncryption(encryption); #else _cupsLangPrintf(stderr, _("%s: Sorry, no encryption support compiled in!\n"), @@ -152,9 +152,6 @@ main(int argc, /* I - Number of command-line arguments */ break; case 'h' : /* Connect to host */ - if (http != NULL) - httpClose(http); - if (argv[i][2] != '\0') cupsSetServer(argv[i] + 2); else @@ -172,6 +169,20 @@ main(int argc, /* I - Number of command-line arguments */ else cupsSetServer(argv[i]); } + + httpClose(http); + cupsFreeDests(num_dests, dests); + + if ((http = httpConnectEncrypt(cupsServer(), ippPort(), + encryption)) == NULL) + { + _cupsLangPuts(stderr, _("lprm: Unable to contact server!\n")); + return (1); + } + + num_dests = cupsGetDests2(http, &dests); + defdest = cupsGetDest(NULL, NULL, num_dests, dests); + dest = defdest ? defdest->name : NULL; break; default : @@ -283,5 +294,5 @@ main(int argc, /* I - Number of command-line arguments */ /* - * End of "$Id: lprm.c 5023 2006-01-29 14:39:44Z mike $". + * End of "$Id: lprm.c 5719 2006-07-11 21:04:48Z mike $". */ diff --git a/config-scripts/cups-compiler.m4 b/config-scripts/cups-compiler.m4 index adbc1294f..7dc7b7052 100644 --- a/config-scripts/cups-compiler.m4 +++ b/config-scripts/cups-compiler.m4 @@ -1,5 +1,5 @@ dnl -dnl "$Id: cups-compiler.m4 5643 2006-06-07 20:58:29Z mike $" +dnl "$Id: cups-compiler.m4 5705 2006-06-30 01:07:29Z mike $" dnl dnl Compiler stuff for the Common UNIX Printing System (CUPS). dnl @@ -297,11 +297,6 @@ else # Warning 829 is passing constant string as char * CXXFLAGS="+W336,829 $CXXFLAGS" - if test -z "$with_archflags"; then - # Build portable binaries for all HP systems... - ARCHFLAGS="+DAportable" - fi - if test $PICFLAG = 1; then OPTIM="+z $OPTIM" fi @@ -465,5 +460,5 @@ if test $uname = HP-UX; then fi dnl -dnl End of "$Id: cups-compiler.m4 5643 2006-06-07 20:58:29Z mike $". +dnl End of "$Id: cups-compiler.m4 5705 2006-06-30 01:07:29Z mike $". dnl diff --git a/config-scripts/cups-defaults.m4 b/config-scripts/cups-defaults.m4 index ea23bd5c3..6b99cb575 100644 --- a/config-scripts/cups-defaults.m4 +++ b/config-scripts/cups-defaults.m4 @@ -1,5 +1,5 @@ dnl -dnl "$Id: cups-defaults.m4 5643 2006-06-07 20:58:29Z mike $" +dnl "$Id: cups-defaults.m4 5745 2006-07-18 13:45:56Z mike $" dnl dnl Default cupsd configuration settings for the Common UNIX Printing System dnl (CUPS). @@ -24,9 +24,9 @@ dnl WWW: http://www.cups.org dnl dnl Default langugages... -AC_ARG_WITH(languages, [ --with-languages set installed languages, default="es ja" ], +AC_ARG_WITH(languages, [ --with-languages set installed languages, default="de es ja pl sv" ], LANGUAGES="$withval", - LANGUAGES="es ja pl sv") + LANGUAGES="de es ja pl sv") AC_SUBST(LANGUAGES) dnl Default ConfigFilePerm @@ -248,5 +248,5 @@ fi AC_DEFINE_UNQUOTED(CUPS_DEFAULT_PRINTCAP, "$CUPS_DEFAULT_PRINTCAP") dnl -dnl End of "$Id: cups-defaults.m4 5643 2006-06-07 20:58:29Z mike $". +dnl End of "$Id: cups-defaults.m4 5745 2006-07-18 13:45:56Z mike $". dnl diff --git a/config-scripts/cups-directories.m4 b/config-scripts/cups-directories.m4 index afbeba5aa..ece2b5820 100644 --- a/config-scripts/cups-directories.m4 +++ b/config-scripts/cups-directories.m4 @@ -1,5 +1,5 @@ dnl -dnl "$Id: cups-directories.m4 5547 2006-05-19 12:44:29Z mike $" +dnl "$Id: cups-directories.m4 5696 2006-06-26 18:34:20Z mike $" dnl dnl Directory stuff for the Common UNIX Printing System (CUPS). dnl @@ -115,7 +115,7 @@ AC_ARG_WITH(rcdir, [ --with-rcdir set path for rc scripts],rcdir="$w if test x$rcdir = x; then case "$uname" in - FreeBSD* | OpenBSD*) + FreeBSD* | OpenBSD* | MirBsD* | ekkoBSD*) # FreeBSD and OpenBSD INITDIR="" INITDDIR="" @@ -302,5 +302,5 @@ AC_DEFINE_UNQUOTED(CUPS_STATEDIR, "$localstatedir/run/cups") AC_SUBST(CUPS_STATEDIR) dnl -dnl End of "$Id: cups-directories.m4 5547 2006-05-19 12:44:29Z mike $". +dnl End of "$Id: cups-directories.m4 5696 2006-06-26 18:34:20Z mike $". dnl diff --git a/cups-config.in b/cups-config.in index 9b998736f..ef5084a64 100755 --- a/cups-config.in +++ b/cups-config.in @@ -1,6 +1,6 @@ #! /bin/sh # -# "$Id: cups-config.in 5676 2006-06-19 20:28:05Z mike $" +# "$Id: cups-config.in 5688 2006-06-23 20:33:08Z mike $" # # CUPS configuration utility. # @@ -42,8 +42,8 @@ INSTALLSTATIC=@INSTALLSTATIC@ # flags for C++ compiler: CFLAGS="" LDFLAGS="@EXPORT_LDFLAGS@" -LIBS="@EXPORT_SSLLIBS@ @LIBS@" -IMGLIBS="@EXPORT_LIBTIFF@ @EXPORT_LIBJPEG@ @EXPORT_LIBPNG@ @EXPORT_LIBZ@" +LIBS="@EXPORT_SSLLIBS@ @EXPORT_LIBZ@ @LIBS@" +IMGLIBS="@EXPORT_LIBTIFF@ @EXPORT_LIBJPEG@ @EXPORT_LIBPNG@" # Check for local invocation... selfdir=`dirname $0` @@ -115,13 +115,13 @@ while test $# -gt 0; do if test $image = no; then echo -lcups $LIBS else - echo -lcupsimage $IMGLIBS -lcups $LIBS + echo -lcupsimage -lcups $IMGLIBS $LIBS fi else if test $image = no; then echo $libdir/libcups.a $LIBS else - echo $imagelibdir/libcupsimage.a $IMGLIBS $libdir/libcups.a $LIBS + echo $imagelibdir/libcupsimage.a $libdir/libcups.a $IMGLIBS $LIBS fi fi ;; @@ -150,5 +150,5 @@ while test $# -gt 0; do done # -# End of "$Id: cups-config.in 5676 2006-06-19 20:28:05Z mike $". +# End of "$Id: cups-config.in 5688 2006-06-23 20:33:08Z mike $". # diff --git a/cups/Dependencies b/cups/Dependencies index 4cb7cb37f..fda8a6ae8 100644 --- a/cups/Dependencies +++ b/cups/Dependencies @@ -1,20 +1,23 @@ # DO NOT DELETE adminutil.o: adminutil.h cups.h ipp.h http.h md5.h ppd.h array.h file.h -adminutil.o: language.h globals.h string.h ../config.h i18n.h transcode.h -adminutil.o: debug.h +adminutil.o: language.h globals.h string.h ../config.h http-private.h +adminutil.o: ipp-private.h i18n.h transcode.h debug.h array.o: array.h string.h ../config.h debug.h attr.o: ppd.h array.h file.h debug.h string.h ../config.h -auth.o: globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -auth.o: array.h file.h language.h i18n.h transcode.h debug.h +auth.o: globals.h string.h ../config.h http-private.h http.h md5.h +auth.o: ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h +auth.o: transcode.h debug.h backchannel.o: cups.h ipp.h http.h md5.h ppd.h array.h file.h language.h backend.o: backend.h string.h ../config.h -custom.o: globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -custom.o: array.h file.h language.h i18n.h transcode.h debug.h -dest.o: globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -dest.o: array.h file.h language.h i18n.h transcode.h +custom.o: globals.h string.h ../config.h http-private.h http.h md5.h +custom.o: ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h +custom.o: transcode.h debug.h +dest.o: globals.h string.h ../config.h http-private.h http.h md5.h +dest.o: ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h +dest.o: transcode.h dir.o: dir.h string.h ../config.h debug.h -emit.o: ppd.h array.h file.h string.h ../config.h +emit.o: ppd.h array.h file.h string.h ../config.h debug.h encode.o: cups.h ipp.h http.h md5.h ppd.h array.h file.h language.h encode.o: ipp-private.h string.h ../config.h debug.h file.o: http-private.h ../config.h http.h md5.h ipp-private.h ipp.h globals.h @@ -29,74 +32,90 @@ globals.o: transcode.h debug.h http.o: http-private.h ../config.h http.h md5.h ipp-private.h ipp.h globals.h http.o: string.h cups.h ppd.h array.h file.h language.h i18n.h transcode.h http.o: debug.h -http-addr.o: globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -http-addr.o: array.h file.h language.h i18n.h transcode.h debug.h +http-addr.o: globals.h string.h ../config.h http-private.h http.h md5.h +http-addr.o: ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h +http-addr.o: i18n.h transcode.h debug.h http-addrlist.o: http-private.h ../config.h http.h md5.h ipp-private.h ipp.h http-addrlist.o: globals.h string.h cups.h ppd.h array.h file.h language.h http-addrlist.o: i18n.h transcode.h debug.h -http-support.o: debug.h globals.h string.h ../config.h cups.h ipp.h http.h -http-support.o: md5.h ppd.h array.h file.h language.h i18n.h transcode.h +http-support.o: debug.h globals.h string.h ../config.h http-private.h http.h +http-support.o: md5.h ipp-private.h ipp.h cups.h ppd.h array.h file.h +http-support.o: language.h i18n.h transcode.h ipp.o: http-private.h ../config.h http.h md5.h ipp-private.h ipp.h globals.h ipp.o: string.h cups.h ppd.h array.h file.h language.h i18n.h transcode.h ipp.o: debug.h -ipp-support.o: globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -ipp-support.o: array.h file.h language.h i18n.h transcode.h debug.h -langprintf.o: globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -langprintf.o: array.h file.h language.h i18n.h transcode.h -language.o: globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -language.o: array.h file.h language.h i18n.h transcode.h debug.h -localize.o: globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -localize.o: array.h file.h language.h i18n.h transcode.h debug.h +ipp-support.o: globals.h string.h ../config.h http-private.h http.h md5.h +ipp-support.o: ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h +ipp-support.o: i18n.h transcode.h debug.h +langprintf.o: globals.h string.h ../config.h http-private.h http.h md5.h +langprintf.o: ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h +langprintf.o: i18n.h transcode.h +language.o: globals.h string.h ../config.h http-private.h http.h md5.h +language.o: ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h +language.o: transcode.h debug.h +localize.o: globals.h string.h ../config.h http-private.h http.h md5.h +localize.o: ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h +localize.o: transcode.h debug.h mark.o: cups.h ipp.h http.h md5.h ppd.h array.h file.h language.h string.h mark.o: ../config.h debug.h md5.o: md5.h string.h ../config.h md5passwd.o: http.h md5.h string.h ../config.h -notify.o: globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -notify.o: array.h file.h language.h i18n.h transcode.h +notify.o: globals.h string.h ../config.h http-private.h http.h md5.h +notify.o: ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h +notify.o: transcode.h options.o: cups.h ipp.h http.h md5.h ppd.h array.h file.h language.h string.h options.o: ../config.h debug.h page.o: ppd.h array.h file.h string.h ../config.h -ppd.o: globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h array.h -ppd.o: file.h language.h i18n.h transcode.h debug.h -request.o: globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -request.o: array.h file.h language.h i18n.h transcode.h debug.h +ppd.o: globals.h string.h ../config.h http-private.h http.h md5.h +ppd.o: ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h +ppd.o: transcode.h debug.h +request.o: globals.h string.h ../config.h http-private.h http.h md5.h +request.o: ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h +request.o: transcode.h debug.h snprintf.o: string.h ../config.h string.o: array.h debug.h string.h ../config.h -tempfile.o: globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -tempfile.o: array.h file.h language.h i18n.h transcode.h debug.h -transcode.o: globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -transcode.o: array.h file.h language.h i18n.h transcode.h debug.h +tempfile.o: globals.h string.h ../config.h http-private.h http.h md5.h +tempfile.o: ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h +tempfile.o: transcode.h debug.h +transcode.o: globals.h string.h ../config.h http-private.h http.h md5.h +transcode.o: ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h +transcode.o: i18n.h transcode.h debug.h usersys.o: http-private.h ../config.h http.h md5.h ipp-private.h ipp.h usersys.o: globals.h string.h cups.h ppd.h array.h file.h language.h i18n.h usersys.o: transcode.h -util.o: globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -util.o: array.h file.h language.h i18n.h transcode.h debug.h +util.o: globals.h string.h ../config.h http-private.h http.h md5.h +util.o: ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h +util.o: transcode.h debug.h testadmin.o: adminutil.h cups.h ipp.h http.h md5.h ppd.h array.h file.h testadmin.o: language.h string.h ../config.h testarray.o: ../cups/string.h ../config.h string.h array.h dir.h debug.h testfile.o: string.h ../config.h file.h debug.h testhttp.o: http.h md5.h string.h ../config.h testi18n.o: i18n.h transcode.h language.h array.h string.h ../config.h -testipp.o: ../cups/string.h ../config.h string.h ipp.h http.h md5.h +testipp.o: ../cups/string.h ../config.h string.h ipp-private.h ipp.h http.h +testipp.o: md5.h testlang.o: i18n.h transcode.h language.h array.h testppd.o: ../cups/string.h ../config.h string.h ppd.h array.h file.h # DO NOT DELETE adminutil.32.o: adminutil.c adminutil.h cups.h ipp.h http.h md5.h ppd.h array.h file.h -adminutil.32.o: adminutil.c language.h globals.h string.h ../config.h i18n.h transcode.h -adminutil.32.o: adminutil.c debug.h +adminutil.32.o: adminutil.c language.h globals.h string.h ../config.h http-private.h +adminutil.32.o: adminutil.c ipp-private.h i18n.h transcode.h debug.h array.32.o: array.c array.h string.h ../config.h debug.h attr.32.o: attr.c ppd.h array.h file.h debug.h string.h ../config.h -auth.32.o: auth.c globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -auth.32.o: auth.c array.h file.h language.h i18n.h transcode.h debug.h +auth.32.o: auth.c globals.h string.h ../config.h http-private.h http.h md5.h +auth.32.o: auth.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h +auth.32.o: auth.c transcode.h debug.h backchannel.32.o: backchannel.c cups.h ipp.h http.h md5.h ppd.h array.h file.h language.h backend.32.o: backend.c backend.h string.h ../config.h -custom.32.o: custom.c globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -custom.32.o: custom.c array.h file.h language.h i18n.h transcode.h debug.h -dest.32.o: dest.c globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -dest.32.o: dest.c array.h file.h language.h i18n.h transcode.h +custom.32.o: custom.c globals.h string.h ../config.h http-private.h http.h md5.h +custom.32.o: custom.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h +custom.32.o: custom.c transcode.h debug.h +dest.32.o: dest.c globals.h string.h ../config.h http-private.h http.h md5.h +dest.32.o: dest.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h +dest.32.o: dest.c transcode.h dir.32.o: dir.c dir.h string.h ../config.h debug.h -emit.32.o: emit.c ppd.h array.h file.h string.h ../config.h +emit.32.o: emit.c ppd.h array.h file.h string.h ../config.h debug.h encode.32.o: encode.c cups.h ipp.h http.h md5.h ppd.h array.h file.h language.h encode.32.o: encode.c ipp-private.h string.h ../config.h debug.h file.32.o: file.c http-private.h ../config.h http.h md5.h ipp-private.h ipp.h globals.h @@ -111,74 +130,90 @@ globals.32.o: globals.c transcode.h debug.h http.32.o: http.c http-private.h ../config.h http.h md5.h ipp-private.h ipp.h globals.h http.32.o: http.c string.h cups.h ppd.h array.h file.h language.h i18n.h transcode.h http.32.o: http.c debug.h -http-addr.32.o: http-addr.c globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -http-addr.32.o: http-addr.c array.h file.h language.h i18n.h transcode.h debug.h +http-addr.32.o: http-addr.c globals.h string.h ../config.h http-private.h http.h md5.h +http-addr.32.o: http-addr.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h +http-addr.32.o: http-addr.c i18n.h transcode.h debug.h http-addrlist.32.o: http-addrlist.c http-private.h ../config.h http.h md5.h ipp-private.h ipp.h http-addrlist.32.o: http-addrlist.c globals.h string.h cups.h ppd.h array.h file.h language.h http-addrlist.32.o: http-addrlist.c i18n.h transcode.h debug.h -http-support.32.o: http-support.c debug.h globals.h string.h ../config.h cups.h ipp.h http.h -http-support.32.o: http-support.c md5.h ppd.h array.h file.h language.h i18n.h transcode.h +http-support.32.o: http-support.c debug.h globals.h string.h ../config.h http-private.h http.h +http-support.32.o: http-support.c md5.h ipp-private.h ipp.h cups.h ppd.h array.h file.h +http-support.32.o: http-support.c language.h i18n.h transcode.h ipp.32.o: ipp.c http-private.h ../config.h http.h md5.h ipp-private.h ipp.h globals.h ipp.32.o: ipp.c string.h cups.h ppd.h array.h file.h language.h i18n.h transcode.h ipp.32.o: ipp.c debug.h -ipp-support.32.o: ipp-support.c globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -ipp-support.32.o: ipp-support.c array.h file.h language.h i18n.h transcode.h debug.h -langprintf.32.o: langprintf.c globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -langprintf.32.o: langprintf.c array.h file.h language.h i18n.h transcode.h -language.32.o: language.c globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -language.32.o: language.c array.h file.h language.h i18n.h transcode.h debug.h -localize.32.o: localize.c globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -localize.32.o: localize.c array.h file.h language.h i18n.h transcode.h debug.h +ipp-support.32.o: ipp-support.c globals.h string.h ../config.h http-private.h http.h md5.h +ipp-support.32.o: ipp-support.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h +ipp-support.32.o: ipp-support.c i18n.h transcode.h debug.h +langprintf.32.o: langprintf.c globals.h string.h ../config.h http-private.h http.h md5.h +langprintf.32.o: langprintf.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h +langprintf.32.o: langprintf.c i18n.h transcode.h +language.32.o: language.c globals.h string.h ../config.h http-private.h http.h md5.h +language.32.o: language.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h +language.32.o: language.c transcode.h debug.h +localize.32.o: localize.c globals.h string.h ../config.h http-private.h http.h md5.h +localize.32.o: localize.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h +localize.32.o: localize.c transcode.h debug.h mark.32.o: mark.c cups.h ipp.h http.h md5.h ppd.h array.h file.h language.h string.h mark.32.o: mark.c ../config.h debug.h md5.32.o: md5.c md5.h string.h ../config.h md5passwd.32.o: md5passwd.c http.h md5.h string.h ../config.h -notify.32.o: notify.c globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -notify.32.o: notify.c array.h file.h language.h i18n.h transcode.h +notify.32.o: notify.c globals.h string.h ../config.h http-private.h http.h md5.h +notify.32.o: notify.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h +notify.32.o: notify.c transcode.h options.32.o: options.c cups.h ipp.h http.h md5.h ppd.h array.h file.h language.h string.h options.32.o: options.c ../config.h debug.h page.32.o: page.c ppd.h array.h file.h string.h ../config.h -ppd.32.o: ppd.c globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h array.h -ppd.32.o: ppd.c file.h language.h i18n.h transcode.h debug.h -request.32.o: request.c globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -request.32.o: request.c array.h file.h language.h i18n.h transcode.h debug.h +ppd.32.o: ppd.c globals.h string.h ../config.h http-private.h http.h md5.h +ppd.32.o: ppd.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h +ppd.32.o: ppd.c transcode.h debug.h +request.32.o: request.c globals.h string.h ../config.h http-private.h http.h md5.h +request.32.o: request.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h +request.32.o: request.c transcode.h debug.h snprintf.32.o: snprintf.c string.h ../config.h string.32.o: string.c array.h debug.h string.h ../config.h -tempfile.32.o: tempfile.c globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -tempfile.32.o: tempfile.c array.h file.h language.h i18n.h transcode.h debug.h -transcode.32.o: transcode.c globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -transcode.32.o: transcode.c array.h file.h language.h i18n.h transcode.h debug.h +tempfile.32.o: tempfile.c globals.h string.h ../config.h http-private.h http.h md5.h +tempfile.32.o: tempfile.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h +tempfile.32.o: tempfile.c transcode.h debug.h +transcode.32.o: transcode.c globals.h string.h ../config.h http-private.h http.h md5.h +transcode.32.o: transcode.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h +transcode.32.o: transcode.c i18n.h transcode.h debug.h usersys.32.o: usersys.c http-private.h ../config.h http.h md5.h ipp-private.h ipp.h usersys.32.o: usersys.c globals.h string.h cups.h ppd.h array.h file.h language.h i18n.h usersys.32.o: usersys.c transcode.h -util.32.o: util.c globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -util.32.o: util.c array.h file.h language.h i18n.h transcode.h debug.h +util.32.o: util.c globals.h string.h ../config.h http-private.h http.h md5.h +util.32.o: util.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h +util.32.o: util.c transcode.h debug.h testadmin.32.o: testadmin.c adminutil.h cups.h ipp.h http.h md5.h ppd.h array.h file.h testadmin.32.o: testadmin.c language.h string.h ../config.h testarray.32.o: testarray.c ../cups/string.h ../config.h string.h array.h dir.h debug.h testfile.32.o: testfile.c string.h ../config.h file.h debug.h testhttp.32.o: testhttp.c http.h md5.h string.h ../config.h testi18n.32.o: testi18n.c i18n.h transcode.h language.h array.h string.h ../config.h -testipp.32.o: testipp.c ../cups/string.h ../config.h string.h ipp.h http.h md5.h +testipp.32.o: testipp.c ../cups/string.h ../config.h string.h ipp-private.h ipp.h http.h +testipp.32.o: testipp.c md5.h testlang.32.o: testlang.c i18n.h transcode.h language.h array.h testppd.32.o: testppd.c ../cups/string.h ../config.h string.h ppd.h array.h file.h # DO NOT DELETE adminutil.64.o: adminutil.c adminutil.h cups.h ipp.h http.h md5.h ppd.h array.h file.h -adminutil.64.o: adminutil.c language.h globals.h string.h ../config.h i18n.h transcode.h -adminutil.64.o: adminutil.c debug.h +adminutil.64.o: adminutil.c language.h globals.h string.h ../config.h http-private.h +adminutil.64.o: adminutil.c ipp-private.h i18n.h transcode.h debug.h array.64.o: array.c array.h string.h ../config.h debug.h attr.64.o: attr.c ppd.h array.h file.h debug.h string.h ../config.h -auth.64.o: auth.c globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -auth.64.o: auth.c array.h file.h language.h i18n.h transcode.h debug.h +auth.64.o: auth.c globals.h string.h ../config.h http-private.h http.h md5.h +auth.64.o: auth.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h +auth.64.o: auth.c transcode.h debug.h backchannel.64.o: backchannel.c cups.h ipp.h http.h md5.h ppd.h array.h file.h language.h backend.64.o: backend.c backend.h string.h ../config.h -custom.64.o: custom.c globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -custom.64.o: custom.c array.h file.h language.h i18n.h transcode.h debug.h -dest.64.o: dest.c globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -dest.64.o: dest.c array.h file.h language.h i18n.h transcode.h +custom.64.o: custom.c globals.h string.h ../config.h http-private.h http.h md5.h +custom.64.o: custom.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h +custom.64.o: custom.c transcode.h debug.h +dest.64.o: dest.c globals.h string.h ../config.h http-private.h http.h md5.h +dest.64.o: dest.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h +dest.64.o: dest.c transcode.h dir.64.o: dir.c dir.h string.h ../config.h debug.h -emit.64.o: emit.c ppd.h array.h file.h string.h ../config.h +emit.64.o: emit.c ppd.h array.h file.h string.h ../config.h debug.h encode.64.o: encode.c cups.h ipp.h http.h md5.h ppd.h array.h file.h language.h encode.64.o: encode.c ipp-private.h string.h ../config.h debug.h file.64.o: file.c http-private.h ../config.h http.h md5.h ipp-private.h ipp.h globals.h @@ -193,54 +228,67 @@ globals.64.o: globals.c transcode.h debug.h http.64.o: http.c http-private.h ../config.h http.h md5.h ipp-private.h ipp.h globals.h http.64.o: http.c string.h cups.h ppd.h array.h file.h language.h i18n.h transcode.h http.64.o: http.c debug.h -http-addr.64.o: http-addr.c globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -http-addr.64.o: http-addr.c array.h file.h language.h i18n.h transcode.h debug.h +http-addr.64.o: http-addr.c globals.h string.h ../config.h http-private.h http.h md5.h +http-addr.64.o: http-addr.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h +http-addr.64.o: http-addr.c i18n.h transcode.h debug.h http-addrlist.64.o: http-addrlist.c http-private.h ../config.h http.h md5.h ipp-private.h ipp.h http-addrlist.64.o: http-addrlist.c globals.h string.h cups.h ppd.h array.h file.h language.h http-addrlist.64.o: http-addrlist.c i18n.h transcode.h debug.h -http-support.64.o: http-support.c debug.h globals.h string.h ../config.h cups.h ipp.h http.h -http-support.64.o: http-support.c md5.h ppd.h array.h file.h language.h i18n.h transcode.h +http-support.64.o: http-support.c debug.h globals.h string.h ../config.h http-private.h http.h +http-support.64.o: http-support.c md5.h ipp-private.h ipp.h cups.h ppd.h array.h file.h +http-support.64.o: http-support.c language.h i18n.h transcode.h ipp.64.o: ipp.c http-private.h ../config.h http.h md5.h ipp-private.h ipp.h globals.h ipp.64.o: ipp.c string.h cups.h ppd.h array.h file.h language.h i18n.h transcode.h ipp.64.o: ipp.c debug.h -ipp-support.64.o: ipp-support.c globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -ipp-support.64.o: ipp-support.c array.h file.h language.h i18n.h transcode.h debug.h -langprintf.64.o: langprintf.c globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -langprintf.64.o: langprintf.c array.h file.h language.h i18n.h transcode.h -language.64.o: language.c globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -language.64.o: language.c array.h file.h language.h i18n.h transcode.h debug.h -localize.64.o: localize.c globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -localize.64.o: localize.c array.h file.h language.h i18n.h transcode.h debug.h +ipp-support.64.o: ipp-support.c globals.h string.h ../config.h http-private.h http.h md5.h +ipp-support.64.o: ipp-support.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h +ipp-support.64.o: ipp-support.c i18n.h transcode.h debug.h +langprintf.64.o: langprintf.c globals.h string.h ../config.h http-private.h http.h md5.h +langprintf.64.o: langprintf.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h +langprintf.64.o: langprintf.c i18n.h transcode.h +language.64.o: language.c globals.h string.h ../config.h http-private.h http.h md5.h +language.64.o: language.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h +language.64.o: language.c transcode.h debug.h +localize.64.o: localize.c globals.h string.h ../config.h http-private.h http.h md5.h +localize.64.o: localize.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h +localize.64.o: localize.c transcode.h debug.h mark.64.o: mark.c cups.h ipp.h http.h md5.h ppd.h array.h file.h language.h string.h mark.64.o: mark.c ../config.h debug.h md5.64.o: md5.c md5.h string.h ../config.h md5passwd.64.o: md5passwd.c http.h md5.h string.h ../config.h -notify.64.o: notify.c globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -notify.64.o: notify.c array.h file.h language.h i18n.h transcode.h +notify.64.o: notify.c globals.h string.h ../config.h http-private.h http.h md5.h +notify.64.o: notify.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h +notify.64.o: notify.c transcode.h options.64.o: options.c cups.h ipp.h http.h md5.h ppd.h array.h file.h language.h string.h options.64.o: options.c ../config.h debug.h page.64.o: page.c ppd.h array.h file.h string.h ../config.h -ppd.64.o: ppd.c globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h array.h -ppd.64.o: ppd.c file.h language.h i18n.h transcode.h debug.h -request.64.o: request.c globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -request.64.o: request.c array.h file.h language.h i18n.h transcode.h debug.h +ppd.64.o: ppd.c globals.h string.h ../config.h http-private.h http.h md5.h +ppd.64.o: ppd.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h +ppd.64.o: ppd.c transcode.h debug.h +request.64.o: request.c globals.h string.h ../config.h http-private.h http.h md5.h +request.64.o: request.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h +request.64.o: request.c transcode.h debug.h snprintf.64.o: snprintf.c string.h ../config.h string.64.o: string.c array.h debug.h string.h ../config.h -tempfile.64.o: tempfile.c globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -tempfile.64.o: tempfile.c array.h file.h language.h i18n.h transcode.h debug.h -transcode.64.o: transcode.c globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -transcode.64.o: transcode.c array.h file.h language.h i18n.h transcode.h debug.h +tempfile.64.o: tempfile.c globals.h string.h ../config.h http-private.h http.h md5.h +tempfile.64.o: tempfile.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h +tempfile.64.o: tempfile.c transcode.h debug.h +transcode.64.o: transcode.c globals.h string.h ../config.h http-private.h http.h md5.h +transcode.64.o: transcode.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h +transcode.64.o: transcode.c i18n.h transcode.h debug.h usersys.64.o: usersys.c http-private.h ../config.h http.h md5.h ipp-private.h ipp.h usersys.64.o: usersys.c globals.h string.h cups.h ppd.h array.h file.h language.h i18n.h usersys.64.o: usersys.c transcode.h -util.64.o: util.c globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -util.64.o: util.c array.h file.h language.h i18n.h transcode.h debug.h +util.64.o: util.c globals.h string.h ../config.h http-private.h http.h md5.h +util.64.o: util.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h +util.64.o: util.c transcode.h debug.h testadmin.64.o: testadmin.c adminutil.h cups.h ipp.h http.h md5.h ppd.h array.h file.h testadmin.64.o: testadmin.c language.h string.h ../config.h testarray.64.o: testarray.c ../cups/string.h ../config.h string.h array.h dir.h debug.h testfile.64.o: testfile.c string.h ../config.h file.h debug.h testhttp.64.o: testhttp.c http.h md5.h string.h ../config.h testi18n.64.o: testi18n.c i18n.h transcode.h language.h array.h string.h ../config.h -testipp.64.o: testipp.c ../cups/string.h ../config.h string.h ipp.h http.h md5.h +testipp.64.o: testipp.c ../cups/string.h ../config.h string.h ipp-private.h ipp.h http.h +testipp.64.o: testipp.c md5.h testlang.64.o: testlang.c i18n.h transcode.h language.h array.h testppd.64.o: testppd.c ../cups/string.h ../config.h string.h ppd.h array.h file.h diff --git a/cups/adminutil.c b/cups/adminutil.c index 6848538e2..3825b40bf 100644 --- a/cups/adminutil.c +++ b/cups/adminutil.c @@ -1,5 +1,5 @@ /* - * "$Id: adminutil.c 5638 2006-06-06 20:08:13Z mike $" + * "$Id: adminutil.c 5753 2006-07-18 19:53:24Z mike $" * * Administration utility API definitions for the Common UNIX Printing * System (CUPS). @@ -1681,8 +1681,9 @@ do_samba_command(const char *command, /* I - Command to run */ { status = -1; - _cupsLangPrintf(stderr, _("cupsaddsmb: Unable to run \"%s\": %s\n"), - command, strerror(errno)); + if (logfile) + _cupsLangPrintf(logfile, _("Unable to run \"%s\": %s\n"), + command, strerror(errno)); } else { @@ -1928,5 +1929,5 @@ write_option(cups_file_t *dstfp, /* I - PPD file */ /* - * End of "$Id: adminutil.c 5638 2006-06-06 20:08:13Z mike $". + * End of "$Id: adminutil.c 5753 2006-07-18 19:53:24Z mike $". */ diff --git a/cups/dest.c b/cups/dest.c index a91e39847..faf8241b8 100644 --- a/cups/dest.c +++ b/cups/dest.c @@ -1,5 +1,5 @@ /* - * "$Id: dest.c 5346 2006-03-28 16:05:19Z mike $" + * "$Id: dest.c 5753 2006-07-18 19:53:24Z mike $" * * User-defined destination (and option) support for the Common UNIX * Printing System (CUPS). @@ -456,6 +456,7 @@ cupsSetDests2(http_t *http, /* I - HTTP connection */ int wrote; /* Wrote definition? */ cups_dest_t *dest; /* Current destination */ cups_option_t *option; /* Current option */ + _ipp_option_t *match; /* Matching attribute for option */ FILE *fp; /* File pointer */ const char *home; /* HOME environment variable */ char filename[1024]; /* lpoptions file */ @@ -567,17 +568,24 @@ cupsSetDests2(http_t *http, /* I - HTTP connection */ for (j = dest->num_options, option = dest->options; j > 0; j --, option ++) { + /* + * See if this option is a printer attribute; if so, skip it... + */ + + if ((match = _ippFindOption(option->name)) != NULL && + match->group_tag == IPP_TAG_PRINTER) + continue; + /* * See if the server/global options match these; if so, don't * write 'em. */ - if (temp && (val = cupsGetOption(option->name, temp->num_options, - temp->options)) != NULL) - { - if (!strcasecmp(val, option->value)) - continue; - } + if (temp && + (val = cupsGetOption(option->name, temp->num_options, + temp->options)) != NULL && + !strcasecmp(val, option->value)) + continue; /* * Options don't match, write to the file... @@ -593,10 +601,35 @@ cupsSetDests2(http_t *http, /* I - HTTP connection */ if (option->value[0]) { - if (strchr(option->value, ' ') != NULL) - fprintf(fp, " %s=\"%s\"", option->name, option->value); - else + if (strchr(option->value, ' ') || + strchr(option->value, '\\') || + strchr(option->value, '\"') || + strchr(option->value, '\'')) + { + /* + * Quote the value... + */ + + fprintf(fp, " %s=\"", option->name); + + for (val = option->value; *val; val ++) + { + if (strchr("\"\'\\", *val)) + putc('\\', fp); + + putc(*val, fp); + } + + putc('\"', fp); + } + else + { + /* + * Store the literal value... + */ + fprintf(fp, " %s=%s", option->name, option->value); + } } else fprintf(fp, " %s", option->name); @@ -1008,5 +1041,5 @@ cups_get_sdests(http_t *http, /* I - HTTP connection */ /* - * End of "$Id: dest.c 5346 2006-03-28 16:05:19Z mike $". + * End of "$Id: dest.c 5753 2006-07-18 19:53:24Z mike $". */ diff --git a/cups/emit.c b/cups/emit.c index 6f4dc78de..dd650c61d 100644 --- a/cups/emit.c +++ b/cups/emit.c @@ -1,5 +1,5 @@ /* - * "$Id: emit.c 5257 2006-03-09 15:27:27Z mike $" + * "$Id: emit.c 5700 2006-06-26 19:20:39Z mike $" * * PPD code emission routines for the Common UNIX Printing System (CUPS). * @@ -50,6 +50,7 @@ #include #include "string.h" #include +#include "debug.h" #if defined(WIN32) || defined(__EMX__) # include @@ -111,6 +112,9 @@ ppdCollect2(ppd_file_t *ppd, /* I - PPD file data */ ppd_choice_t **collect; /* Collected choices */ + DEBUG_printf(("ppdCollect2(ppd=%p, section=%d, min_order=%f, choices=%p)\n", + ppd, section, min_order, choices)); + if (ppd == NULL) return (0); @@ -132,6 +136,8 @@ ppdCollect2(ppd_file_t *ppd, /* I - PPD file data */ for (k = o->num_choices, c = o->choices; k > 0; k --, c ++) if (c->marked && count < 1000) { + DEBUG_printf(("ppdCollect2: %s=%s marked...\n", o->keyword, + c->choice)); collect[count] = c; count ++; } @@ -142,6 +148,8 @@ ppdCollect2(ppd_file_t *ppd, /* I - PPD file data */ for (m = o->num_choices, c = o->choices; m > 0; m --, c ++) if (c->marked && count < 1000) { + DEBUG_printf(("ppdCollect2: %s=%s marked...\n", o->keyword, + c->choice)); collect[count] = c; count ++; } @@ -155,6 +163,8 @@ ppdCollect2(ppd_file_t *ppd, /* I - PPD file data */ qsort(collect, count, sizeof(ppd_choice_t *), (int (*)(const void *, const void *))ppd_sort); + DEBUG_printf(("ppdCollect2: %d marked choices...\n", count)); + /* * Return the array and number of choices; if 0, free the array since * it isn't needed. @@ -492,6 +502,9 @@ ppdEmitString(ppd_file_t *ppd, /* I - PPD file record */ struct lconv *loc; /* Locale data */ + DEBUG_printf(("ppdEmitString(ppd=%p, section=%d, min_order=%f)\n", + ppd, section, min_order)); + /* * Range check input... */ @@ -527,6 +540,8 @@ ppdEmitString(ppd_file_t *ppd, /* I - PPD file record */ !strcasecmp(choices[i]->option->keyword, "PageRegion")) && !strcasecmp(choices[i]->choice, "Custom")) { + DEBUG_puts("ppdEmitString: Custom size set!"); + bufsize += 37; /* %%BeginFeature: *CustomPageSize True\n */ bufsize += 50; /* Five 9-digit numbers + newline */ } @@ -580,6 +595,8 @@ ppdEmitString(ppd_file_t *ppd, /* I - PPD file record */ * Allocate memory... */ + DEBUG_printf(("ppdEmitString: Allocating %d bytes for string...\n", bufsize)); + if ((buffer = calloc(1, bufsize)) == NULL) { free(choices); @@ -608,6 +625,9 @@ ppdEmitString(ppd_file_t *ppd, /* I - PPD file record */ * Send DSC comments with option... */ + DEBUG_printf(("Adding code for %s=%s...\n", choices[i]->option->keyword, + choices[i]->choice)); + if ((!strcasecmp(choices[i]->option->keyword, "PageSize") || !strcasecmp(choices[i]->option->keyword, "PageRegion")) && !strcasecmp(choices[i]->choice, "Custom")) @@ -800,6 +820,9 @@ ppdEmitString(ppd_file_t *ppd, /* I - PPD file record */ strlcpy(bufptr, "%%EndFeature\n" "} stopped cleartomark\n", bufend - bufptr + 1); bufptr += strlen(bufptr); + + DEBUG_printf(("ppdEmitString: Offset in string is %d...\n", + bufptr - buffer)); } else { @@ -917,5 +940,5 @@ ppd_sort(ppd_choice_t **c1, /* I - First choice */ /* - * End of "$Id: emit.c 5257 2006-03-09 15:27:27Z mike $". + * End of "$Id: emit.c 5700 2006-06-26 19:20:39Z mike $". */ diff --git a/cups/encode.c b/cups/encode.c index a00e2c52a..b3cc28831 100644 --- a/cups/encode.c +++ b/cups/encode.c @@ -1,5 +1,5 @@ /* - * "$Id: encode.c 5545 2006-05-18 21:00:56Z mike $" + * "$Id: encode.c 5753 2006-07-18 19:53:24Z mike $" * * Option encoding routines for the Common UNIX Printing System (CUPS). * @@ -28,6 +28,7 @@ * cupsEncodeOptions() - Encode printer options into IPP attributes. * cupsEncodeOptions2() - Encode printer options into IPP attributes for * a group. + * _ippFindOption() - Find the attribute information for an option. * compare_ipp_options() - Compare two IPP options. */ @@ -49,13 +50,6 @@ * **** THIS LIST MUST BE SORTED **** */ -typedef struct -{ - const char *name; - ipp_tag_t value_tag; - ipp_tag_t group_tag; -} _ipp_option_t; - static const _ipp_option_t ipp_options[] = { { "blackplot", IPP_TAG_BOOLEAN, IPP_TAG_JOB }, @@ -114,6 +108,8 @@ static const _ipp_option_t ipp_options[] = { "ppi-default", IPP_TAG_INTEGER, IPP_TAG_PRINTER }, { "prettyprint", IPP_TAG_BOOLEAN, IPP_TAG_JOB }, { "prettyprint-default", IPP_TAG_BOOLEAN, IPP_TAG_PRINTER }, + { "print-quality", IPP_TAG_ENUM, IPP_TAG_JOB }, + { "print-quality-default", IPP_TAG_ENUM, IPP_TAG_PRINTER }, { "printer-error-policy", IPP_TAG_NAME, IPP_TAG_PRINTER }, { "printer-info", IPP_TAG_TEXT, IPP_TAG_PRINTER }, { "printer-is-accepting-jobs",IPP_TAG_BOOLEAN, IPP_TAG_PRINTER }, @@ -127,14 +123,12 @@ static const _ipp_option_t ipp_options[] = { "printer-state-reasons", IPP_TAG_KEYWORD, IPP_TAG_PRINTER }, { "printer-type", IPP_TAG_ENUM, IPP_TAG_PRINTER }, { "printer-uri", IPP_TAG_URI, IPP_TAG_OPERATION }, - { "print-quality", IPP_TAG_ENUM, IPP_TAG_JOB }, - { "print-quality-default", IPP_TAG_ENUM, IPP_TAG_PRINTER }, { "queued-job-count", IPP_TAG_INTEGER, IPP_TAG_PRINTER }, { "raw", IPP_TAG_MIMETYPE, IPP_TAG_OPERATION }, - { "resolution", IPP_TAG_RESOLUTION, IPP_TAG_JOB }, - { "resolution-default", IPP_TAG_RESOLUTION, IPP_TAG_PRINTER }, { "requesting-user-name-allowed", IPP_TAG_NAME, IPP_TAG_PRINTER }, { "requesting-user-name-denied", IPP_TAG_NAME, IPP_TAG_PRINTER }, + { "resolution", IPP_TAG_RESOLUTION, IPP_TAG_JOB }, + { "resolution-default", IPP_TAG_RESOLUTION, IPP_TAG_PRINTER }, { "saturation", IPP_TAG_INTEGER, IPP_TAG_JOB }, { "saturation-default", IPP_TAG_INTEGER, IPP_TAG_PRINTER }, { "scaling", IPP_TAG_INTEGER, IPP_TAG_JOB }, @@ -243,8 +237,7 @@ cupsEncodeOptions2( for (i = num_options, option = options; i > 0; i --, option ++) { - _ipp_option_t key, /* Search key */ - *match; /* Matching attribute */ + _ipp_option_t *match; /* Matching attribute */ /* @@ -260,16 +253,7 @@ cupsEncodeOptions2( * Figure out the proper value and group tags for this option... */ - key.name = option->name; - match = (_ipp_option_t *)bsearch(&key, ipp_options, - sizeof(ipp_options) / - sizeof(ipp_options[0]), - sizeof(ipp_options[0]), - (int (*)(const void *, - const void *)) - compare_ipp_options); - - if (match) + if ((match = _ippFindOption(option->name)) != NULL) { if (match->group_tag != group_tag) continue; @@ -546,6 +530,30 @@ cupsEncodeOptions2( } +/* + * '_ippFindOption()' - Find the attribute information for an option. + */ + +_ipp_option_t * /* O - Attribute information */ +_ippFindOption(const char *name) /* I - Option/attribute name */ +{ + _ipp_option_t key; /* Search key */ + + + /* + * Lookup the proper value and group tags for this option... + */ + + key.name = name; + + return ((_ipp_option_t *)bsearch(&key, ipp_options, + sizeof(ipp_options) / sizeof(ipp_options[0]), + sizeof(ipp_options[0]), + (int (*)(const void *, const void *)) + compare_ipp_options)); +} + + /* * 'compare_ipp_options()' - Compare two IPP options. */ @@ -559,5 +567,5 @@ compare_ipp_options(_ipp_option_t *a, /* I - First option */ /* - * End of "$Id: encode.c 5545 2006-05-18 21:00:56Z mike $". + * End of "$Id: encode.c 5753 2006-07-18 19:53:24Z mike $". */ diff --git a/cups/globals.h b/cups/globals.h index 819d2bd6f..36af79e32 100644 --- a/cups/globals.h +++ b/cups/globals.h @@ -1,5 +1,5 @@ /* - * "$Id: globals.h 5366 2006-04-02 16:11:04Z mike $" + * "$Id: globals.h 5755 2006-07-19 13:29:44Z mike $" * * Global variable definitions for the Common UNIX Printing System (CUPS). * @@ -32,6 +32,7 @@ */ # include "string.h" +# include "http-private.h" # include "cups.h" # include "i18n.h" @@ -151,5 +152,5 @@ extern void _cupsSetError(ipp_status_t status, const char *message); #endif /* !_CUPS_GLOBALS_H_ */ /* - * End of "$Id: globals.h 5366 2006-04-02 16:11:04Z mike $". + * End of "$Id: globals.h 5755 2006-07-19 13:29:44Z mike $". */ diff --git a/cups/http.c b/cups/http.c index e864c18c4..84e204620 100644 --- a/cups/http.c +++ b/cups/http.c @@ -1,5 +1,5 @@ /* - * "$Id: http.c 5630 2006-06-05 18:42:53Z mike $" + * "$Id: http.c 5753 2006-07-18 19:53:24Z mike $" * * HTTP routines for the Common UNIX Printing System (CUPS). * @@ -1808,6 +1808,16 @@ httpWait(http_t *http, /* I - HTTP connection */ if (http->used) return (1); + /* + * Flush pending data, if any... + */ + + if (http->wused) + { + if (httpFlushWrite(http) < 0) + return (0); + } + /* * If not, check the SSL/TLS buffers and do a select() on the connection... */ @@ -2801,5 +2811,5 @@ http_write_ssl(http_t *http, /* I - HTTP connection */ /* - * End of "$Id: http.c 5630 2006-06-05 18:42:53Z mike $". + * End of "$Id: http.c 5753 2006-07-18 19:53:24Z mike $". */ diff --git a/cups/http.h b/cups/http.h index 937b94fa0..6303af452 100644 --- a/cups/http.h +++ b/cups/http.h @@ -1,5 +1,5 @@ /* - * "$Id: http.h 5632 2006-06-06 14:46:10Z mike $" + * "$Id: http.h 5716 2006-07-11 17:56:57Z mike $" * * Hyper-Text Transport Protocol definitions for the Common UNIX Printing * System (CUPS). @@ -98,7 +98,7 @@ extern "C" { #if defined(AF_INET6) && !defined(s6_addr32) # if defined(__sun) # define s6_addr32 _S6_un._S6_u32 -# elif defined(__FreeBSD__) || defined(__APPLE__) +# elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__APPLE__) # define s6_addr32 __u6_addr.__u6_addr32 # elif defined(__osf__) # define s6_addr32 s6_un.sa6_laddr @@ -504,5 +504,5 @@ extern ssize_t httpWrite2(http_t *http, const char *buffer, #endif /* !_CUPS_HTTP_H_ */ /* - * End of "$Id: http.h 5632 2006-06-06 14:46:10Z mike $". + * End of "$Id: http.h 5716 2006-07-11 17:56:57Z mike $". */ diff --git a/cups/ipp-private.h b/cups/ipp-private.h index af303f1da..3b3455fe7 100644 --- a/cups/ipp-private.h +++ b/cups/ipp-private.h @@ -1,5 +1,5 @@ /* - * "$Id: ipp-private.h 5230 2006-03-05 17:01:51Z mike $" + * "$Id: ipp-private.h 5753 2006-07-18 19:53:24Z mike $" * * Private IPP definitions for the Common UNIX Printing System (CUPS). * @@ -43,11 +43,24 @@ extern "C" { # endif /* __cplusplus */ +/* + * Structures... + */ + +typedef struct /**** Attribute mapping data ****/ +{ + const char *name; /* Option/attribute name */ + ipp_tag_t value_tag; /* Value tag for this attribute */ + ipp_tag_t group_tag; /* Group tag for this attribute */ +} _ipp_option_t; + + /* * Prototypes for private functions... */ extern ipp_attribute_t *_ippAddAttr(ipp_t *, int); +extern _ipp_option_t *_ippFindOption(const char *name); extern void _ippFreeAttr(ipp_attribute_t *); @@ -61,5 +74,5 @@ extern void _ippFreeAttr(ipp_attribute_t *); #endif /* !_CUPS_IPP_H_ */ /* - * End of "$Id: ipp-private.h 5230 2006-03-05 17:01:51Z mike $". + * End of "$Id: ipp-private.h 5753 2006-07-18 19:53:24Z mike $". */ diff --git a/cups/language.c b/cups/language.c index 6990d9127..b74738dbf 100644 --- a/cups/language.c +++ b/cups/language.c @@ -1,5 +1,5 @@ /* - * "$Id: language.c 5373 2006-04-06 20:03:32Z mike $" + * "$Id: language.c 5753 2006-07-18 19:53:24Z mike $" * * I18N/language support for the Common UNIX Printing System (CUPS). * @@ -560,6 +560,23 @@ cupsLangGet(const char *language) /* I - Language or locale */ encoding = (cups_encoding_t)i; break; } + + if (encoding == CUPS_AUTO_ENCODING) + { + /* + * Map alternate names for various character sets... + */ + + if (!strcasecmp(charset, "iso-2022-jp") || + !strcasecmp(charset, "sjis")) + encoding = CUPS_WINDOWS_932; + else if (!strcasecmp(charset, "iso-2022-cn")) + encoding = CUPS_WINDOWS_936; + else if (!strcasecmp(charset, "iso-2022-kr")) + encoding = CUPS_WINDOWS_949; + else if (!strcasecmp(charset, "big5")) + encoding = CUPS_WINDOWS_950; + } } DEBUG_printf(("cupsLangGet: encoding=%d(%s)\n", encoding, @@ -1295,5 +1312,5 @@ cups_unquote(char *d, /* O - Unquoted string */ /* - * End of "$Id: language.c 5373 2006-04-06 20:03:32Z mike $". + * End of "$Id: language.c 5753 2006-07-18 19:53:24Z mike $". */ diff --git a/cups/mark.c b/cups/mark.c index 3b2226774..6577c0bfc 100644 --- a/cups/mark.c +++ b/cups/mark.c @@ -1,5 +1,5 @@ /* - * "$Id: mark.c 5529 2006-05-15 20:06:46Z mike $" + * "$Id: mark.c 5700 2006-06-26 19:20:39Z mike $" * * Option marking routines for the Common UNIX Printing System (CUPS). * @@ -407,6 +407,7 @@ ppdMarkOption(ppd_file_t *ppd, /* I - PPD file record */ ppd_cparam_t *cparam; /* Custom parameter */ char *units; /* Custom points units */ + if ((coption = ppdFindCustomOption(ppd, option)) != NULL) { if ((cparam = (ppd_cparam_t *)cupsArrayFirst(coption->params)) == NULL) @@ -455,6 +456,12 @@ ppdMarkOption(ppd_file_t *ppd, /* I - PPD file record */ } } } + + /* + * Make sure that we keep the option marked below... + */ + + choice = "Custom"; } else if (choice[0] == '{') { @@ -679,5 +686,5 @@ ppd_defaults(ppd_file_t *ppd, /* I - PPD file */ /* - * End of "$Id: mark.c 5529 2006-05-15 20:06:46Z mike $". + * End of "$Id: mark.c 5700 2006-06-26 19:20:39Z mike $". */ diff --git a/cups/testipp.c b/cups/testipp.c index 07bcdffc0..6975cb054 100644 --- a/cups/testipp.c +++ b/cups/testipp.c @@ -1,5 +1,5 @@ /* - * "$Id: testipp.c 5023 2006-01-29 14:39:44Z mike $" + * "$Id: testipp.c 5753 2006-07-18 19:53:24Z mike $" * * IPP test program for the Common UNIX Printing System (CUPS). * @@ -36,7 +36,7 @@ #include #include #include -#include "ipp.h" +#include "ipp-private.h" #ifdef WIN32 # include #else @@ -282,6 +282,19 @@ main(int argc, /* I - Number of command-line arguments */ ippDelete(request); + /* + * Test _ippFindOption() private API... + */ + + fputs("_ippFindOption(\"printer-type\"): ", stdout); + if (_ippFindOption("printer-type")) + puts("PASS"); + else + { + puts("FAIL"); + status = 1; + } + /* * Summarize... */ @@ -645,5 +658,5 @@ write_cb(void *data, /* I - Data */ /* - * End of "$Id: testipp.c 5023 2006-01-29 14:39:44Z mike $". + * End of "$Id: testipp.c 5753 2006-07-18 19:53:24Z mike $". */ diff --git a/cups/testppd.c b/cups/testppd.c index 7e59a4276..bdaf944a4 100644 --- a/cups/testppd.c +++ b/cups/testppd.c @@ -1,5 +1,5 @@ /* - * "$Id: testppd.c 5484 2006-05-02 20:38:12Z mike $" + * "$Id: testppd.c 5700 2006-06-26 19:20:39Z mike $" * * PPD test program for the Common UNIX Printing System (CUPS). * @@ -59,6 +59,39 @@ static const char *default_code = "%%BeginFeature: *InputSlot Tray\n" "InputSlot=Tray\n" "%%EndFeature\n" + "} stopped cleartomark\n" + "[{\n" + "%%BeginFeature: *IntOption None\n" + "%%EndFeature\n" + "} stopped cleartomark\n" + "[{\n" + "%%BeginFeature: *StringOption None\n" + "%%EndFeature\n" + "} stopped cleartomark\n"; + +static const char *custom_code = + "[{\n" + "%%BeginFeature: *CustomPageSize True\n" + "400\n" + "500\n" + "0\n" + "0\n" + "0\n" + "PageSize=Custom\n" + "%%EndFeature\n" + "} stopped cleartomark\n" + "[{\n" + "%%BeginFeature: *InputSlot Tray\n" + "InputSlot=Tray\n" + "%%EndFeature\n" + "} stopped cleartomark\n" + "[{\n" + "%%BeginFeature: *IntOption None\n" + "%%EndFeature\n" + "} stopped cleartomark\n" + "[{\n" + "%%BeginFeature: *StringOption None\n" + "%%EndFeature\n" "} stopped cleartomark\n"; @@ -107,7 +140,7 @@ main(int argc, /* I - Number of command-line arguments */ printf("FAIL (%d conflicts)\n", conflicts); } - fputs("ppdEmitString: ", stdout); + fputs("ppdEmitString (defaults): ", stdout); if ((s = ppdEmitString(ppd, PPD_ORDER_ANY, 0.0)) != NULL && !strcmp(s, default_code)) puts("PASS"); @@ -120,6 +153,24 @@ main(int argc, /* I - Number of command-line arguments */ puts(s); } + if (s) + free(s); + + fputs("ppdEmitString (custom size): ", stdout); + ppdMarkOption(ppd, "PageSize", "Custom.400x500"); + + if ((s = ppdEmitString(ppd, PPD_ORDER_ANY, 0.0)) != NULL && + !strcmp(s, custom_code)) + puts("PASS"); + else + { + printf("FAIL (%d bytes instead of %d)\n", s ? (int)strlen(s) : 0, + (int)strlen(custom_code)); + + if (s) + puts(s); + } + if (s) free(s); @@ -172,5 +223,5 @@ main(int argc, /* I - Number of command-line arguments */ /* - * End of "$Id: testppd.c 5484 2006-05-02 20:38:12Z mike $". + * End of "$Id: testppd.c 5700 2006-06-26 19:20:39Z mike $". */ diff --git a/cups/util.c b/cups/util.c index 988a3e43d..1082ceb24 100644 --- a/cups/util.c +++ b/cups/util.c @@ -1,5 +1,5 @@ /* - * "$Id: util.c 5663 2006-06-15 20:36:42Z mike $" + * "$Id: util.c 5716 2006-07-11 17:56:57Z mike $" * * Printing utilities for the Common UNIX Printing System (CUPS). * @@ -837,12 +837,16 @@ cupsGetPPD2(http_t *http, /* I - HTTP connection */ resource, sizeof(resource), 0)) return (NULL); + DEBUG_printf(("Printer hostname=\"%s\", port=%d\n", hostname, port)); + /* * Remap local hostname to localhost... */ httpGetHostname(NULL, localhost, sizeof(localhost)); + DEBUG_printf(("Local hostname=\"%s\"\n", localhost)); + if (!strcasecmp(localhost, hostname)) strcpy(hostname, "localhost"); @@ -862,6 +866,9 @@ cupsGetPPD2(http_t *http, /* I - HTTP connection */ else http_port = ippPort(); + DEBUG_printf(("Connection hostname=\"%s\", port=%d\n", http_hostname, + http_port)); + /* * Reconnect to the correct server as needed... */ @@ -1652,5 +1659,5 @@ cups_get_printer_uri( /* - * End of "$Id: util.c 5663 2006-06-15 20:36:42Z mike $". + * End of "$Id: util.c 5716 2006-07-11 17:56:57Z mike $". */ diff --git a/doc/Makefile b/doc/Makefile index df0b76384..784173e31 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -1,5 +1,5 @@ # -# "$Id: Makefile 5609 2006-05-30 20:31:10Z mike $" +# "$Id: Makefile 5736 2006-07-13 19:59:36Z mike $" # # Documentation makefile for the Common UNIX Printing System (CUPS). # @@ -153,11 +153,13 @@ HELPFILES = \ help/network.html \ help/options.html \ help/overview.html \ + help/policies.html \ help/ref-access_log.html \ help/ref-classes-conf.html \ help/ref-client-conf.html \ help/ref-cupsd-conf.html \ help/ref-error_log.html \ + help/ref-mailto-conf.html \ help/ref-page_log.html \ help/ref-printers-conf.html \ help/ref-snmp-conf.html \ diff --git a/doc/de/images/button-accept-jobs.gif b/doc/de/images/button-accept-jobs.gif new file mode 100644 index 0000000000000000000000000000000000000000..ab571594505dae3ce1fa0877a3a96a82045146b5 GIT binary patch literal 633 zc-nLKbhEHboX8-;&?3OVFq45{9-sJ9N$u4-jvK7QwzvoF4$eN3({!eO@|7ve?kwN( zVAI*xXYYTy`~2I>KmULKClM(A6Ll_1O)N=GQ7F$W$xsN%NL6t6^bKH8{K>+|#UQ|- z!vF*z$1t$|Q&8y>5M;<$wJzuNz5<=|C3o3aR`xG{`~Sd#0Eru&T!)two%|wN;-R|m zV@6c=RqZ#HNk%-k40N>fJ|=arJGrTCU-j;jzMi|N;-+H@5Bgnv?OR`}YRJaJz{66f zRlwiZU%<{6%EaBr%~Zz4&zGsmF`3I&YwGlw4E)vnJj@y^L)Oe+XuE#(+7+uhcdlK) zzi8cV12sc#b_RCt?o+vS`#aPaIk_}AxfvO!X>iP77Bg7ZBghpGqb7HFrg2oXqNc=>eGRGqYIJv)0QYR|FB-SuVjr3L<7 zf25|_C<>)sXy)N%IkV`CViy}{w8aE2hQ+=M-8XKMu(~q!hG=TOMp0vqtDy@A)0AJY z9!#6PmVqT_Q5tXbv{D8(pXkQ$^%v)zV&MLF%6P4mPb2&Cvz^C}P8Vh6<6W@wxj}?es$WPTdGYr9g8;$T;vbvVXUd)o?f{8(+4rmCwc|t vdwy~W1H;fA#Xg`wy@G{{QozM4}gWxTfyBnRJJXXG`IOM_Qa09zTxSerqbz zB#qllcUM0(u*u}Yes@X1KWBQ2A!kI468$V55_2!W(Zi@@Wt`2Xeu~= zh+S~vjI1R+49gj%-7t04>KjV&+?pIr zwn>%jE4bXW7s#2MS~S-+m1)9MCDnxG{tU5kprq7QD*s=)y-$F_8UVmU8Q%Z^ literal 0 Hc-jL100001 diff --git a/doc/de/images/button-add-printer.gif b/doc/de/images/button-add-printer.gif new file mode 100644 index 0000000000000000000000000000000000000000..49b4bcb855a1c302ccd3d2470af9ea9b563f680d GIT binary patch literal 631 zc-nLKbhEHboX8-;&?3N)k!p~WZCzUIQd<+)(H1drO5yaW$*Wg%Z`m?y_nzg)PVKmI z>F~n`*WbQ*^5N6_zyJUIClM(A6Ll_1O)N=GQ7F$W$xsN%NL6t6^bKH8{K>+|#UQ|- z!vF*z$1t$|Q&8y>P-MthwJzuNz5<=|C3m@4R`xG{`~Sd#0F4`+JcpMQo%|wMaw6@` z#3f$gt!-a#RrT%IkQ*>ZiCdEOL-+Tp9kM+x`5E7?&hBsMs)`p=Ow?dx;pAfu?Z{%N z?NV*j;^5NYXOHTxZffOYPt{%?w5^{@G!R z_?9eN#lOZttzVOwZ!(u{QWys}GZW`rR=!Mz3(PyObf3{#a+`x^^65uUwAi_~JYDy0 zIwv<16ZiRxcb+jmHYnChVGNTyQ`ol1akVYGjDSa?Kr2IP_phlh88^&za7^MdF!-vc zu-m&WfM>%cfdhvM_ z6E2@Jy%<8 zY8E(mNzh(vhfBM+ST!;wIEb!`*=7Iu+*;}UINROde@WF&R6aA?f;m(m;X^`}zHjT= zoTW2!MYpZC-psaTYEtoYX8YJ`zNM!bn{+vR{L2)XRxY}KAkyROXVo2rkBeTEdOInd r`uIFS$Vy}Bk<%Q{FKo{4PmFDU|MtQB|At0~B7S^6P$?i literal 0 Hc-jL100001 diff --git a/doc/de/images/button-add-this-printer.gif b/doc/de/images/button-add-this-printer.gif new file mode 100644 index 0000000000000000000000000000000000000000..df9c7c02ae61b655240192dfce7b5184fce4c8f5 GIT binary patch literal 764 zc-nLKbhEHbJjfuz&?3N)k!p~WZCzUIQd1My-WD-^YVxG1g{xQgY~4C%-~N@yPVKmQ z>F}e6H{QN^^5N6_zyJUIClM(A6Ll_1O)N=GQ7F$W$xsN%NL6t6^bKH8{K>+|#UQ|- z!vF*z$1t$|Q&8y>P-MthwJzuNz5<=|CAs%^XbGg)&)d16z(Yr>pK1Pzf*h;)7c|yh zNcLKPh&`~{)MQ75Na+;j_Jz-iv~^P?&aJxt+Oga~z`>&H--gHCIp&SN{ES*r&2F9o z1~H5*oP5kx)f)X1Cp&kV%x;*XsoJZ}!8MhEk%Nz)tBrw;ho6^y+RD{y`Pt)nX0|V0 z%CIB;z~1E(`8F?OIlg@Bn(CdI2l;m|yL9D1O+s2n&0)?jW{)o>iqCL(=7hv$HG3 zm`p1UFgA)<2EMstJbBg9*)9GrG` zO6&&BYg%iseT`;jX}@((_1o3e*BJvpmWA}J5WTf6LUj8IuNe>Z=S&H7ak;qQRouxX z@5ClWT~kO(v9;YDAa!#J1DikpR-p@3CJeV2jxZ^lj@kmVC}JZ7U3MsXW@KALix^$#}iz<7*qJw b#8y6;WURC32*+y!&8Jgz-Yjt8V6X-NvV&r; literal 0 Hc-jL100001 diff --git a/doc/de/images/button-cancel-all-jobs.gif b/doc/de/images/button-cancel-all-jobs.gif new file mode 100644 index 0000000000000000000000000000000000000000..bb92d2059c6beb9d0a576750437768d0c00779dc GIT binary patch literal 728 zc-nLKbhEHbT*n~7&?3OVz{nseC9bBS>g(^Cl#*CfQdm_}+1cGOdFrIaOBZe0vT@g* z9cRv+zW?yvt2ZzI{Qv!*M4HJajHG*q5{7b2M+-w zURK_!CbQoDdd-fwtm&q+%vBAUc^Go0Rco;G@pI}eSd^R4%)fC{b6+?U*9vZX22Osy za?Rx{b+_-duUN4vg7xIIt;^0Hxl>McGdje@PoO+;h{Y%FY8@r!wqvaV;On8Y!Vfw zSe3DE^m)UPJe`}7?_ZF`iD`P?%+nZy);X-4^mKJ)gU_l7KZRNurW>U0oA9$?DT9}5 zt&ELh= z@^jaPkB9DXRdn%coKSO!}C*QXc1swU}TV#5>wMq_4Rj2NlPv+DXOZe?CS2AJay9IrHeLh-mq)W z&NJsu-+y%P_1l+!{{Q|@B2fG%>RgnXSdyBeP@Y+mp%9Xhs^ISF8^ECWlZBCsL4ZMr z0SG{jVPO5Ipwf3ifFWbmx}4Yh3Utnw@Uk$k>|g%&|A7S?#BOx59bQs&vgfIX$I}HL zGmfp&(Fs0X(>0@K#n+?0QzxgZ>W5W`q}=*qq04`*)wN@dW5$8A$+{(BtuMP{^rxSuX?lfnD~M$9;kYhtAt&}3wNQTL9=BRaU2ME z+{He7L&cMhiINkTC)|_k(LTZPaI+V;fosxFq1J{O{c&<8D~wZp=Ps?eBy-E@VOOIj zgB|yV&ywPHJvL4$j8|{E%obfAc52n4#=w4?#Zpg;*pG9kYWHax6(~CfGkCOHIVc^- z)h)Ocab|5wxX`_+_cv%VtU1)c6jyq8ZiJ;scjA$IhjyL#m=x8;*vVp0ap3vem0B^& z3e*-HUCYdz?owXXddjEqnkjF<#+=u@7fLoSp3tgzC}V*Xlh!}Ecgp>8k4*SD(t7q- sz86fIvs-~7de>LcxW1VC=k9h2a_rmPouBuoy7R;1%i0GMRah9T0Wp>%djJ3c literal 0 Hc-jL100001 diff --git a/doc/de/images/button-change-settings.gif b/doc/de/images/button-change-settings.gif new file mode 100644 index 0000000000000000000000000000000000000000..0c0c4f540820df4391858229cafa9397de7e7766 GIT binary patch literal 635 zc-nLKbhEHboXH@<&?3N)k!p~WZB+|#UQ|- z!vF*z$1t$|Q&8y>P-MthwJzuNz5<=|C9&KrEBlwf{eNIV!407|F06}+PUf(2?^<&C zyF=*m8`rjS$_6gKo?FHvU|hMry-L<(^PwkES9uo;_fGhAXJG&VeIr;h6!>3G}(bmzW!_1wTbidj00~dk?gD z&NDp!N|wucf0IES91WfkX=v2 zGNm2{8Qw(>H+UAii3mJc%OawwHG#*f&g@{(g#!n+G_q{>?b&%&+|!e}e3Qb14&KA_ zln*};xux#rpc~LX%TU0`wRySF=^sJ|E-&&F3FkJA4g7q>KTkCED-fFzBW#wJxHQ_gtmI=2%6O;&f9>Kge z=h@jz?=ABg`xIRH3?jn2F3kvTs4MAuxguz5;DNlFDXksb>W}ec2<)+7u$kSP>{%eu v_{m;niA{cy!_@UJBX;#n=-a#dyX37>hW~#1tUoC$bxn<5FLQjN0E0CEYI!F( literal 0 Hc-jL100001 diff --git a/doc/de/images/button-clean-print-heads.gif b/doc/de/images/button-clean-print-heads.gif new file mode 100644 index 0000000000000000000000000000000000000000..14c64744abc07761923d56a4f2330bc4a079e3d5 GIT binary patch literal 661 zc-nLKbhEHboWdZ&&?3N)k!p~gWmQ`2Qd1My(H=g1YVxG1#cNjeZQC|)|AAGG0!6H{ZT{_VLSyzyJUIClM(A6Ll_1O)N=GQ7F$W$xsN%NL6t6^bKH8{K>+|#UQ|- z!vF*z$1t$|Q&8y>P-MthwJzuNz5<=|CA{1$EBlwf{eNIVL5I*A7uH2ZCv&cG?OG!I zEg`hE?O5rlT1WT0*Ue1-8SPIedJawUz9A{HrSqLK!*MbFG;*eaklf z9aE?7=ILBAr;vU2-u-K%4jZUV)MVzH%4M4z&cV&h#JPZtFJtC|N4J=mxH+bBKYw{Z zgZ=iLd)e1MeB%5PzK@xao#*|Tg}a5;$M4Jf`|oZ?pxS|bRyP7n6qcQ4WHef*x5%L- zDM~eoS!xfn!A6d)rlr5Um;?$wDK4y)c8m)=xhaUhy(gqX#dOk@=9mpR`;%gQO4m*-V?xi}kgYHKqZYfj?)`7*hA6N3fQjh_rlJm&Gf+9DzR zUDJQQq4l{b-Cx_>#AoxYls){wfq{{0Q?78p7Ou#Ienypq_PiI&r`}bF@fb8*k`kS5 zy?^$q9kPy+QZ}8D_ti&P8E*bO7D$?wrE?mw1|9gSl3+sG~wn1edTkD=lk2U)yQ6X W{o4Kf-wuw9->fe<_}p6<7_0$Z-Y*mY literal 0 Hc-jL100001 diff --git a/doc/de/images/button-clear.gif b/doc/de/images/button-clear.gif new file mode 100644 index 0000000000000000000000000000000000000000..1002f4db2d50948d8e201f1b1dfe845f78aacb25 GIT binary patch literal 371 zc-nLKbhEHbbYKu+Xc1t@NHxgGvMMccsjCa_?hKzkHF?&Y>h+|#UQ|- z!vF*z$1t#7S5WB_P-MthwJzuNz6OU0Un&k&tXuD-E4F)qK==a2_7f?qEP|{iZ@d23 z^J!B9CsFUXgr#7T_Vm}V4Bnl(MkoH5dCsV4u*RavW6W@)WmSG2)mlJ4@E+jicC9Y!_}{y~WRS=gJcurTx(_4Sip| h)lhMN7wx0`@ss}-lNaBuZ0%Gke>|P=P??3n8UO|szG(me literal 0 Hc-jL100001 diff --git a/doc/de/images/button-continue.gif b/doc/de/images/button-continue.gif new file mode 100644 index 0000000000000000000000000000000000000000..b8a55bfc8427438e7c0efd276fc1666b016edbc7 GIT binary patch literal 467 zc-nLKbhEHb3}+BwXc1t@NHxgLvMMchuB{F1>WG{^HF?UkqBW~}w{4qu@X(rLC%0d_ zbolY3n{VGd`Sj((-~WI9lL!?5i8>dhCYGe8D3oWGWGIAWq$;?3`UWs4{$yd~Vh~`^ zVE_V7^Y^d4G(*(GLZ*}9RbfWTR<>h{3msSm`1rYs${EU2>KmJj zOZj=24b-x=Ik=gaxH*csEK~T{7@0XWrZVR)Zqs4s)?B)L_A(A01IzGM2EGXl%zVXL zQ)+f;@a|&TyHcyN=h9^9IeW(Pl}op7-*W84 z(Mwk@+B2fG%>RgnXSdyBeP@Y+mp%9Xhs^ISF8^ECWlZBCsL4ZMr z0SG{jVPO5Ipwf3ifFWbmx}4Yh3Utor7)QXHIC!TzCGx{XwB^hGb zyJ&_|{MB2x^&Xq8V8Rrxp=vfQ=N_b#Hlm4?%dP2PUdgjrNgI@_Ke}3 z){gc!+QEFAQ{S?_|NQM)@E_I{-x(Apv9mO-byQ4fT*O`~WLlu)ut>N=;-F9B;R}nb zs?U8&xg#NT%vvm0hPhuyE?cGtYQiq8~L8@z+_sU7PR_aM!iI>SdD>?blxtW^VU3@!_a2bmyAj z&D+=c6q>g9ygNEy*X7I?=N$(8mdU)@aXgDTA0MB<`p`ps=O$4d3%2NcH8W16oSoym LdV`}13xhQPk}&t4 literal 0 Hc-jL100001 diff --git a/doc/de/images/button-delete-printer.gif b/doc/de/images/button-delete-printer.gif new file mode 100644 index 0000000000000000000000000000000000000000..1991ba00997afc3d5e51276ad59eeb01e77d1393 GIT binary patch literal 568 zc-nLKbhEHbtYr{kXc1swU}TVz7T46)@DH%{3-Ha#$tCBD!6<41~4f8WMSlD5Ma<@ z00NL>7+C))sPtVBV8~dtF6Z^W0-f_FQamYk^Ge_UKailkK$y4X#FC=ULlgUaZYo=b zhAs9BEGgqHYrX&U-B%5J33fT7H?RF}8d^-^XpCj$XusthdupO;nKnC@20t5LzE*f8 zADd<<6CbMvduMA~M|?PEDyJq3FaKoC-u^b$P97%BY5X%7_*bT{(N}BIV&rS%vdNpu z&B(|xfq{jO<$yZpk&SzGLOBjHazaQ+LVSNyqumov#1o@UpowV6j|=Q0$$6&h`Xxlba$T zFUua?p2EQECmC_Ti@{s`;xgTgWeryii~Lmm)>dsz=awluW8iSWpp}7bF_!_8r>AmA z_bdq&=bM`^H|HL6F}=aPAn@+w@K5h@Z#uE;*PWo8zcAQ+)6>&l^Ahfzndv5`JlDC~ b@8irPk1wv69-x=>q~z6glROblMh0sDv1S5N literal 0 Hc-jL100001 diff --git a/doc/de/images/button-edit-configuration-file.gif b/doc/de/images/button-edit-configuration-file.gif new file mode 100644 index 0000000000000000000000000000000000000000..fdba12276233d5fc0f3dba9f5323a331fda16313 GIT binary patch literal 837 zc-nLKbhEHbyviWL&?3N)k!p~WWmQ`2Tw4>^(H=d0YVxG1g=<#zZreWpz`@nWPHww; z>F|RG*IvJR`2ORYKmULKClM(A6Ll_1O)N=GQ7F$W$xsN%NL6t6^bKH8{K>+|#UQ|- z!vF*z$1t$|Q&8y>P-MthwJzuNz5<=|CAs%2_HnVi>{p*#;GrYc?=ka%x|YiP3oA;j zbbibUbb9Q#v}p4E7Uiw&Zr%b0 z@hp5<^|5U(<&$-$naZ#4vMj z?{q2cbr(5{($3Bn zu9UN#QJ~nPP$lQ!_0U0nzNsUVN^j)UTi0grFIdI#pg}o&b!uqp-%mdBUF#Uwb|_|V zYqVp`d>WD4a7d49kIsu#r8~C2zq_ZDKY8iVmqHc|e8HKf+}9pTos8cvl+nhku6JgN zv~Ix#1|fxG8fM(LcSVVvJF((rY1my$@r;}6BDeF&I=@j3SafgE)3=d3uAi>oKh4f? zXT`~f>u0n>_OYp6TESHim`vI@`538TwFZPVVg literal 0 Hc-jL100001 diff --git a/doc/de/images/button-export-samba.gif b/doc/de/images/button-export-samba.gif new file mode 100644 index 0000000000000000000000000000000000000000..a9f51a9a34ae394c445179ce512d2abb1c78b84e GIT binary patch literal 874 zc-nLKbhEHbyvrcM&?3N)k!p~WWmQ`2TvHR+-X1x9YVxG1g=<#zZQVL&|AAG+|#UQ|- z!vF*z$1t$|Q&8y>P-MthwJzuNz5<=|CAs%2?6_H8_N&h=@X(R!_n7-YT}x&Dg%u@S zx~US4 z42%o-*mE^l4jY1ccv)ikc@~{N&3W$5y_Q_| zSLYZ{ojLa~`pfCFTP{UE`N7jlk%e)9=cqiV($}Ayj{6OK7 zYbd9XPfhuRDEqGE|3m~Xuq|k84CO4*3|jDt!8nvd;>Az31V$ziy~I;j4qaC7>Obgm zj;G1wiKC$`Gf#llGR>>aVd{^r{A^O;Heoy`(8VS)cUlEYkcor3!y={iYA5X)v=yE= zvvGQ`63#UYmgr4Sy)$&Xw)tO`GswPV$Z+DyzKCOg%-^iet*N(7 zUAg?=d9!~8TLqNEkA;M@Nbs0={ywuue`9*~&b8{Lp04|hmn&>I(0F>%%Fy|oeqwBQ zl6IuH6{|TIr`k4mGJef!H~p%+#Adh6!=2yOvv)K~DZFR1?K*gS|Ei1wf6cl2R9~K6 zzD$1h3o)BJk2p16Oi(qpRaw?)9Gu&zh*L%Nx=>F z^r`%Q%mFH9wT9^_!LyvzOY}NE%#mpk%X+a;D`OMqq8_tX8lox*A73n)5*F1grROR1ZkXV;ozIN>eZ^5Up_c+|#UQ|- z!vF*z$1t!iRZ!^@P-MthwJwL7gGIA{dG`Ia2HkA${%ba`VUMv5XgwyVAtM@mT6OUU zmJ2!Fp<)8OA*B;;i*4-<3sg0Hol&==pRwif!VkB6vXrNvahDZiX5{2FH;u^esP2m7 zW!7NgOOML#u8rwP)@jq7nN!;{yOpJKa#|NdeIqlMx#5z4smoV*1)D1^oHQvRap&GJ dWtV-Sz6TEZA2Hf-OnbMrQpIUa18YSFYXC{*oNxdD literal 0 Hc-jL100001 diff --git a/doc/de/images/button-hold-job.gif b/doc/de/images/button-hold-job.gif new file mode 100644 index 0000000000000000000000000000000000000000..955f9a4e78070fe9693fc8fe7b6cc56f1ab98e32 GIT binary patch literal 585 zc-nLKbhEHbtYr{kXc1sI%fN7+mFuFE9qi9Xx<81Bd{R>UqOd(iIf4+J1@89qLBm%{MqRvIBi6yBi3gww4844j8sS56%z5xu1KUo;L7z7w} z7=Qre7zWmV3Mzd9f(#j}*5$n3SDRfr%HZ#ExezS)<^;=tI|5^-u;5u_=eNzOnX+^XyykBedaQ zvu}`Kz^RG@>*ngr{IKaocX#lO!!7@RU94t3sIgN%wj*HY@#73OQ;nBDSv1qFiGfMX u;mw?xEFzZ-zMNas6Los>wGGM3Z!Buw`sTLJGZD#++}ralElOG#7_0#ui4N`n literal 0 Hc-jL100001 diff --git a/doc/de/images/button-manage-classes.gif b/doc/de/images/button-manage-classes.gif new file mode 100644 index 0000000000000000000000000000000000000000..6489ebc9a2d2ad1c9a486097674acc5796b4865f GIT binary patch literal 639 zc-nLKbhEHbY-bQ*Xc1t@NHxgGwk|Dkt*Z;_Xpf#gHF?t1!ext_*RP$lYuDoAr*>Yy zeB|EU%dcKO`0(+~pZ~xAlL!?5i8>dhCYGe8D3oWGWGIAWq$;?3`UWs4{$yd~Vh~`^ zVE_V_f-&O9*-6?Qm>H~v_>lNQ@eI_vTlxl`EbMy0a+pzKS z^RjDn_4F|?a`N$WF@~{s^Dt{M@!2peP@ghwMi@so?>vS{%)A;cZ5`!pZIh=?pP4b6 zf3AUAQCDq~1}_`q6fTWYMrO{lCogDlbTD#V%-~{T-e^ac$sLkR z?0q6UA&CY2;yuz&*&x8v$6Y32tK2XX?$dM<474z8G+5tJ9b zKtJyXql5b;(R5~!m_P%C0}+SX_#Z_FSQLa#>z%P|!?hi95}|z|z03>|ALQ8AYS?e? zxz5_Rm*Lc$olGkQUxzYB_lF$KP>`6$F4wb$ZTBmNsf*<_a^_a^GsXO|qdLXc1t@NHxgGvMMQduBi#^XpfjaHF@&X!ext_*R7qjbLXPtr*>Yu zeB}P!E3aNY`0(+~-~Ye=lL!?5i8>dhCYGe8D3oWGWGIAWq$;?3`UWs4{$yd~Vh~`^ zVE_V zV@6c_)n~;=QY6+TBy2m`ttiKFQ@KHE`>J;Z#?s>BAGa+d7e8OR1|ugQKUa<>6Q3=^3iXAHm*!69=VjJl*I=%hI-P%J zZf`%sx+Tl_tND4h>Z=)YZ)fN3zLb20%a)gok%^N_;|>$kbPWz}=GmOuoSBbbFg$t2 z^>&Fm=XPek9QL<2Zr$16t9fs3_TmFFOfLE%J9ivcYhX^zWBZ%E#Gut#gugI#Vd>$6 zT`|0tOah&&eEFI0{u8j+vGl>|u5O0pzL2mk}dTsaoPU}YVt z^P}mKf6z?E9~GU~4onGHWVq6{S7PxZuJ%(}53^Ie8jj4@+OYN1q>Y!{)@$*pYPBqC z3^(@{^z~gBHsgq4S!98)$9C2&qUVGZFC5EEiZM-)HeP6flhB$a}B?F$4)HT`{)4kbjFnz%8VZz z|_vOXc1t@NHxgGvMMchuB{1dZ;O~dHF?UkqBW~}w{Dreci)O*r*_=9 za`gVaE3aNY`0(-d-~WI9lL!?5i8>dhCYGe8D3oWGWGIAWq$;?3`UWs4{$yd~Vh~`^ zVE_Vgu{H;n20uG*a6(Br zAG>BaOD_W>2OmEdV{3aX6JO?B^(oV4%zA)ypRRtJ;n2)`8oX?bXIgf) zYCgDj=Wa=wObXLVuV;nA7U(apd-OMCZ+ zH<_1N4~u5AnU>D{;B_Q<%?{6+UFxECY;0ExLmNM@zR=9(^!3f91Rd|?iQj*2XYk>*_BmW~Q1J^3mm)f(_+GWl;9SOEOF(A74y=d_jdhCYGe8D3oWGWGIAWq$;?3`UWs4{$yd~Vh~`^ zVE_Vrk=$bWiCeQEU=UJ?;R=~y5 zuED`w%*i>GOP!Nlll>^e!NX@;do@m;K6{?=$gvZrnE4vcXz;R?aB@w3ap2I+i(JJV zJkEwp9~N?|FVg6rYO}n7@h1bzo%W2VRc!y6_(~4+U)jmbH)SU05rIIf#+@8?4+I;0 zCoyuqJJMAuc%aFc?ZmlIsh!J@dNODRZ^)74yt>1hBTyj0z({uXOjX-$1{{kQJ1mmp zJ(BF8;L5y2ZwgbwE0L_O$=+`*ObZUJIJ(|FvO*+l@yqVXOs9@oZ^&!#TF852Rf6^L z+>@e(?{%_&m*vGUbWK@U;BYS2n|T&mh;$Q zen-ry#|^!Ga!;CGMiyJ0jrCw}Rcy+bcY8;B(#f;C%ejOCYPgRVr@DN2cw((cV}kY0 V&vJRwx^H~lv#Uqi)ro<@8URC58M^=g literal 0 Hc-jL100001 diff --git a/doc/de/images/button-modify-class.gif b/doc/de/images/button-modify-class.gif new file mode 100644 index 0000000000000000000000000000000000000000..e163da7f6b423dea9d1c268a7fed8d2075c98560 GIT binary patch literal 553 zc-nLKbhEHb%wrH?Xc1t@NHxgGwk|DksjUrcZHw>j44*W$VEWYLRV%u7?p$>2)Q+o{ z4nMem?bXW%??1lz^Z)mM5`p4BQRkx6#FEq$h4Rdj426)4R0VfW-v9>1pDc`A3<3-~ z3_t*K3vCT2E6_RL5HR6K#ig3}|Lq+8N*JX2JsvZLKe3$@aKm_3 zR9{W-DzT|oU&Y;QWM+Jk7wKQ@!z=2vM5F2O0o(kW7liH@`1`VR^Ye3Cv+?rtrZBX1 zbTM-B@pCciG&HruaJ2I%?ZmWzPPA=xM(@t2Wo!OImTr>8?&BN}&OHb6Bavfk)a2K?lwr81! zgn+}dOUvE~=p=CE9Muo7U+y|vY3iy?O;WLUB)A-SW@`2bEwmLW6udoUmBbRCiDHa? z8|FLR^c573@!O#1@@0$jjskA;d>-w%IZZCY$0nSQko;(|DOF{1A#tuueE;F~-~WI9lL!?5i8>dhCYGe8D3oWGWGIAWq$;?3`UWs4{$yd~Vh~`^ zVE_Vg8YUF*OnQ?S5#P05fJ=j)oi`}6sFaUg zGnA!^fsuocpNp}nC5M?iiQBrlm8X0HCx2Jbq$$&~XRKbZNKdU!ide*Kh~2v)X`&SID-vc!wQvAl`RB;ttPeJOEXo;e(xh6)XhrjcumZyst}V_E95 zRFm1aQ7>*^!^tI;4dD%pmp(Dnv~5j38OyXObY&IK>r=B`BJXq*Z|t!WWidPF^5lV_ zC!*Yok-~c_ppVhSPCL8LWo|5`+66A2+#opwVaNr$>VRI@#NLSU*2I-*5dm YgJ;(l{*x{)M~u!|ed?7_WMHrc0DcJr0{{R3 literal 0 Hc-jL100001 diff --git a/doc/de/images/button-move-job.gif b/doc/de/images/button-move-job.gif new file mode 100644 index 0000000000000000000000000000000000000000..700b9beafd6a3637fbb7c65757f146658d1ad8d9 GIT binary patch literal 686 zc-nLKbhEHboXQ}=&?3N)k!p~gWmQt_TvHR!*&Z={YVzc%1F|U5*IvJR_~GN5zyE*#ClM(A6Ll_1O)N=GQ7F$W$xsN%NL6t6^bKH8{K>+|#UQ|- z!vF*z$1t$|Q&8y>P-MthwJzuNz5<=|C9>QsEBlwf{eNIV!3?1{F06}+PUhU=+O_1; zg$j%H`m6nKxAe{6VJ;alaB#llW}f$Y z>MadEHb&+L43C)a-F(N;&U)w(0G(h@?YR01=Hgp%q)_DD`Gw_m@KAi92q9`lik6OT{l;9*2IKM&286A zib5P44lc1=&vYSD;TXd{FSqrK3L6eMG8;~fQ@v}Uo*l6;b$(XN?L&*Zx(zi?b#DHY zX1X>$IP+jfk_xwL566;>2jBV_7uY4=Q+>VJz<*}z@ol1Sl5TNj^azyvF6n(ARrSr{ zxpl>I{;eWh&e@?4-Wlw!{c!D;sK^HjeF0NmG2z$92rR|2AIbK(E2Rzfvko w?!*@^m~rDT!@37YIexKbJZRM65m~`p#bI{iUbTD2gPvxQYmJ8m6&V<;0b*1?Z2$lO literal 0 Hc-jL100001 diff --git a/doc/de/images/button-move-jobs.gif b/doc/de/images/button-move-jobs.gif new file mode 100644 index 0000000000000000000000000000000000000000..5da77881634b73f3cb8fe0156480a87e659c3383 GIT binary patch literal 783 zc-nLKbhEHb+`%Bi&?3N)k!p~gWmQt_TvHR!*&Z={YVzc%1xpt-ty?>3$IgYvPHw+? z>F~n`*I&PS_~GN5zyE*#ClM(A6Ll_1O)N=GQ7F$W$xsN%NL6t6^bKH8{K>+|#UQ|- z!vF*z$1t$|Q&8y>P-MthwJzuNz5<=|CAs%EJ52af@#w&U0uLQAR@=aXCvvRjUx;Yj zzQr~me8s|vy;bpdqi$HpKHQY7cKAc??n?|6UUpxO3h=jZW%+DBM5MGj(lpf$A zV8qMLTitBhH=&`py}d0zP}Pu)har1={m~FI%xHVte>}{=Or8hl>08d6*}iKX&QD>W3E#@7yy`GvsDx zVCP;O$-&LMpHuhUhff=p{AURM8zJoAz{IK{^hIa`x9i?&u1_mHKCm+|b@G2q4E%7o zv5|pUfGNP@zylf9@BaiEeoZ%2n%2r~aO<)Jdn&_JgK0Y@9ykOru;2fenkir+$vw}m z@z-PK*Nx{y>;pBOqEXpkPL#3-pd-LkTX{HVWTe5Fj?we6%Dy5zgw)w;XE8V4< zZcI`9Dn>_VKhx9QJCUi+$+3Y^SLf-42dNtydKo7ciZQb|Bs4a&t!LWEu{nHG8Uv$< z{Jb?US9Z-$oyhezOX}5?7~98dgbsuhaGg1~$w$^;OKDda562xd-s21r>l;;)oKB#-NmtVcS|Ka1CzyE*#ClM(A6Ll_1O)N=GQ7F$W$xsN%NL6t6^bKH8{K>+|#UQ|- z!vF*z$1t$|Q&8y>P-MthwJzuNz5<=|CAsIB9N#^z{C{9UfyWZgibYO^Cv&Xkx6YmP z!y$D3jR&DSV%^+NXPcj1I&1FU=?WJsEJWI-&)6n={*CFMzjth$61X{;8JXC)i^57Y zs|*wxH&ZV z*ch3gow&g8=*j2zA3sO``t z&lme>3saXv*F0zW9~=xT+x9rG&SHG)BFfsx$|rT?WTg7)@C`|?Yk95BUdwDs3%7aj zYumjru}!yhyJl}m?p?=gMhr*PGyso6&$6_nbQzuTVeVzvvBze5SY}^`gOsFzn}(ub-5$Hk;X$X)wi`~Z9vugIyG?e@U=~tjV6X-N#6VAr literal 0 Hc-jL100001 diff --git a/doc/de/images/button-print-test-page.gif b/doc/de/images/button-print-test-page.gif new file mode 100644 index 0000000000000000000000000000000000000000..01dc7573f412d512ac12bf9841f3cd3a8a3ecca3 GIT binary patch literal 596 zc-nLKbhEHbY-JE(Xc1t@NHxgLvMMccsjUg@XpfjaHF@&1qBX1gw{D%Y|G=taC%0d_ zboj}WTkqaJ{rLIA-~WI9lL!?5i8>dhCYGe8D3oWGWGIAWq$;?3`UWs4{$yd~Vh~`^ zVE_VI39~&d{ zu6E5m`wnc|!Fgbg=CPeR+nAWR=WyAih8<%%aFA_}#+efnxpr{yn3ZVpZe(EM(`bD) zQS<$aS8qNZeE0ROHs34eIW`~edLLgjnVIR+7uQFE34OCfQ;sZ<*l@s+nfW_Iz?P1W z0Y|Fil$KQ{tW0!k{ISzRET=)?iu)A4>lY`9Phj0Xx$&Fn3eHJtJ$1rU=WbFtz~$J% z%=NQH;uPBzWm$_S zO$ofYL0$IIjG2c-oBO){EwZ?veo^6Iv%TUrrx_a`^=Y}K-YS`NV1d&jkD0sF8*(3o z%dR~ra4@+0<>eKDJ1Qsd+M2DVvS80V-`Q-_1UF^BzSsMxtnbpE=Gk$vE=P18o|t|| JLx_pN8UX);AI$&& literal 0 Hc-jL100001 diff --git a/doc/de/images/button-publish-printer.gif b/doc/de/images/button-publish-printer.gif new file mode 100644 index 0000000000000000000000000000000000000000..181cb2767fab68b2e5bd49c99134735ba7aa3f1a GIT binary patch literal 626 zc-nLKbhEHboX8-;&?3N)k!p~gWmQ`2Qd1My(H=2ByspH{QN|^5N6_zyJUIClM(A6Ll_1O)N=GQ7F$W$xsN%NL6t6^bKH8{K>+|#UQ|- z!vF*z$1t$|Q&8y>P-MthwJzuNz5<=|C3m@4R`xG{`~Sd#0F4`+T!)two%|wNaw6@G z;@oX3LLU}SX-(X{W<8fSUvuQ1>&b5u6sit?l2llJzTUM%TvS0thS{?;p|rW&K($(n zgG+;-oi`*Yg0Y^DT{D7ZIs+pIA3qmk--Oiu1)Ph^W-eK=Dy1(wd(GVW3)e5*x?s_g zi9C(^YF(Ple0^NDlQlTFnVC4(u<@~-KFi2;q2xp&Hxm;#M_+Q^-TMz$r?PWzIm3MY z=0e-I?~lLZ;4vuBOJz(cIK?2vAYFWbu~CF6ki)>uJzgz=S*m04SB6C{C0aZN0b8{c z8(RAwRIuEf(7#YJ^?H|YOlM#6GPdVQC!0!LL+z)fVW?*AK&bnk((kjU)y#kF_pV?b)!`p@%^tz;QPo(acH2K)f2_2Jc mI6ggd-qw@Aw|7^m$feRh`_BFKkyBP~DV2|BZJ#K>U=0A^=qK&~ literal 0 Hc-jL100001 diff --git a/doc/de/images/button-reject-jobs.gif b/doc/de/images/button-reject-jobs.gif new file mode 100644 index 0000000000000000000000000000000000000000..e23cfca90845baa580a0d90603a51afe4eba843c GIT binary patch literal 643 zc-nLKbhEHb>|_vOXc1sI%fN7+mGh#M9Uaa`x<81Bd{SESyrbjovZWt) z?)rY^%FoA-e!PD3@89qLBm%{MqRvIBi6yBi3gww4844j8sS56%z5xu1KUo;L7z7w} z7=Qre7zWmV3Mzd9f-DZJ*5$n3SD374CS9SdsaC|2m>=WA3ryfCL~SSRre+xp@J%ge#K?pFjLWDvO&(tlM^y^(f}zg9DwDg|*{aek^)@y-mK~Ou^gt^`fmkD_m6= zoTa!krUg;y~Akjge`9vriCnvug|*Mv~@dhCYGe8D3oWGWGIAWq$;?3`UWs4{$yd~Vh~`^ zVE_VT9@;BUxCi~5@~@HyLqMW{~uVOvp`t1<;0Srn_5r$yqq2% z4DnofRdm}c8AHjo9Ilw#(~dU8zWHErVq03OjBU7(;-+H@Kl)v5tq*PVP&H)ZVMx(P z3*qnU?_#)V5)ZrtL!GwI?qj%AOZZf0WS z=+L*(XW~<5@4j7q+64}Sh9~crcut?>_APmfhuWDWv&=&?jx)(0s8YAe(=uDLl$rVa z1{;%zwHjS)4BdLY5?htJy8Tz*yW{!5b%W@BAw>>_1(WUBxzEa^W_*j>lF2@|>$1rK z$!YloS1)e;UFNuJC&R04GA)l=7m2V6@J6g`*Wfbi4H21fsUmo}e_=G!jn57jSDjvG z_MFR@D~#*hy!dSb2Zek48EcLlDBF9P`>hn`2|bPND%(}>Z4aN&AXL+vskUjIsQaIk fou8i@?s}2IySM6twX55gP3LS+_bMqeFjxZs=r|p; literal 0 Hc-jL100001 diff --git a/doc/de/images/button-restart-job.gif b/doc/de/images/button-restart-job.gif new file mode 100644 index 0000000000000000000000000000000000000000..97449c1c814a4dd40e29127ea3065a1c0726ca99 GIT binary patch literal 635 zc-nLKbhEHb>|+pNXc1t@NHxgGwk|1luBi#=XpfvUrC|Ehedr*>Ys zc<90XYp-8D{P6M3-~Ye=lL!?5i8>dhCYGe8D3oWGWGIAWq$;?3`UWs4{$yd~Vh~`^ zVE_Vox9^?{%J1TSjHt>8k}dDrp)DHX5?sP;NZT+#hJZYn~#-|`O+$l^B1$v zKGC@U@Nxgm+jsSB^_lsy7-c$=)bnS`)oC#;66i>3n9n}_hKYp6fyO=EnoCLZPea}w zjuRK>&oWUdjq70+QIKw%l&6;6P~fY@=*cLu!DGWJy_MoS%WmCdI^LbE-682D;NY;V zJL2&i?{aYlQ^spsPAxvZT{d=i-G|;-i-Pr5TNpM7g|(YV$cndz2rwC3;k#wjWfJ_+ zM(eWLL6-bRu3JAF=4-BgZrS8JYk|4@y%i~Xznomc?F`u-F#6dXn{)bTtO~=P196|8 sYk9adu6x9=KIF>$Y)M1g-R19Zm;U+ZXLqJhS*c}ed_HUYL;(hC01Vn5%m4rY literal 0 Hc-jL100001 diff --git a/doc/de/images/button-save-changes.gif b/doc/de/images/button-save-changes.gif new file mode 100644 index 0000000000000000000000000000000000000000..661c59060d0d12e6f1ec67afb77438830eaefe1e GIT binary patch literal 702 zc-nLKbhEHbT*@HA&?3N)k!p~gWmQ`2Qd<+)*%2{)YVx${C2LmoZre6*|AAGF}e6H{QK{`r*_2zyJUIClM(A6Ll_1O)N=GQ7F$W$xsN%NL6t6^bKH8{K>+|#UQ|- z!vF*z$1t$|Q&8y>P-MthwJzuNz5<=|CAr6$9N#^z{C{9UfyWfiibYO^Cv&W3x6b|a zl_4be`tq{ur;8RX&b{V6tv50~SHG-6Chz4YnP@wwlwN0MyZ8Se`KubT@i6ePY3A|r z^Dt{La`N-#_H*#@b1`akg(ip3>Fu95Ih=9Yj9Fn-J$>3O{FSrWr*p1cHht#oMSPPx zS1)APzG74Ns_p}NYKGh$Y}}n(%*$FCIJlXZxWlhq;^dsoWjF7^C5|iCZrswiGvR*N z#mhQ;Y>dqB_^;pOc+GwH`yXbO9o6CQV)mCkIC9XK{qXT_Mm`hPf(x%2`x(MD7D*H= zb<}3$GqaRQf0}eGOy*x;g$rZQlf@>LQMpb#*$;Rz=9Bf|f z{{7{Z)T7tbm$=XLy6X9<@v?7#{YnqxgvMsJj#)xmCrw=$Y7)KCX|C6&R%bEcRHrL0 zLCOtN%@pQ`qMSx6~Yn{PaB{K!v6fJ?CDFOOuv=FaM$ z#&7N%v{!Moy6YT)6${&bDJnJ@ PNw>X7;PYrWG*$rEvPxdhCYGe8D3oWGWGIAWq$;?3`UWs4{$yd~Vh~`^ zVE_V&Ln^saICwPrQaCxy&4Q=$^Kz;eGQ{xKY4e*gE?dFGm!-wbnXx1$ub`)hf6pF^ zxt42|wlb~VS*gK$U=B+nD^n`xG#-vruHJqojuUs-`x%+J%#F-hxtjPEF);HiU@tB$ zztgQz&Ce61uXK9jU#<9rKb#?shfX-u`?yKi+)#bUQ^!-v@J8`bz>#>Pj1~q4YXEt$ Bv4;Qv literal 0 Hc-jL100001 diff --git a/doc/de/images/button-set-allowed-users.gif b/doc/de/images/button-set-allowed-users.gif new file mode 100644 index 0000000000000000000000000000000000000000..a62eb100a42b6fd40d0492bd1ccc55bdc033e6c6 GIT binary patch literal 774 zc-nLKbhEHbJj@`%&?3N)k!p~WWmQ`2Tw5F1*&aE4YVzc%MQd00ZQVNez`@nWPVTsR z>F|U5*IvDR@c!fLzyJUIClM(A6Ll_1O)N=GQ7F$W$xsN%NL6t6^bKH8{K>+|#UQ|- z!vF*z$1t$|Q&8y>P-MthwJzuNz5<=|CAs%4v;|V^=j~ij;GrYcuhHlq;$SuZ!U~bF z7pBepF=eN=N=ilNmWRsn9ya|_aW_e#<<-acUsv3YE{wE$zsX*Pi`lIvg3&y&CCE#_ zpi`r-VxmbR69-ST-vphG94*z}3ibqsXlCwGZikF$es(^7&bB%RMvnDdZQ2=(kz2R# zT${ktv_va%b6w&-{vG{`R+pbX%Mj1c%f6&M`qEBD&U*IS+s+&~f7n26!ECNo8oX?b zOq^W($NE`g6d zn!gx0*3T8ZDv>aOyCI0dCD&_{)s`2gN!HtA&i=Z%{KmSd%*;ibO_dngHYGUHO9Y7{Ql=!kQn)ByB@{s-eUff3N z?%w#fx2A2s*7Ep__Qo&4?)HcF4;GPp~+i z^J761qr&rs1_`Z-`P@oRuAS^Q*z|F-V7GzL<6aB5i48Ru1sxBGTC!=T2&|hB>>{bm kVEJT{&$`AGemyhIr&AoS>}cV58L;x{G{ZL=TsRo40b=}U-2eap literal 0 Hc-jL100001 diff --git a/doc/de/images/button-set-as-default.gif b/doc/de/images/button-set-as-default.gif new file mode 100644 index 0000000000000000000000000000000000000000..c2a33a97ae0d12ce3d2aba6d6010a6ad0a97b100 GIT binary patch literal 738 zc-nLKbhEHbT*M&4&?3N)k!p~gWmQt_TvHR!*%38qO2PE0$;%cuuU|W9=dQ)aPwlvR z>G1u#S6;n*@c!eQKmULKClM(A6Ll_1O)N=GQ7F$W$xsN%NL6t6^bKH8{K>+|#UQ|- z!vF*z$1t$|Q&8y>P-MthwJzuNz5<=|CAqtq9N#^z{C{9UfkzEzg_3jO$sDWhwz-$S zRoq+Uux8bT3vp{Vym;}P_4p}Mlf?=yvxE0aJZcQs8QJ7=ePP1=m5v$wjPV-vY3>3> zyzIPX#@w9Dj7+TD4DBW}^_x;OXNRd8vhpxw&)10I@6l=2=HC#?%)Nozj=z_mhgpM> zi=VGpWAoPS9I*`h4jd}mc#@NkpR0vo)tZf=5sViuT{(5|)}703J9itX8FI5TuupH( z;A3TE=F;KjV!85OgZESA*BK%{P61pFOwmjkA3slLSYRU0&Z_dJh3R0ECzsHH$?o~` z%eusCGfh@FEOKHH`)AlU#cYE@p9Hgv0M~+TG^0ymC07lbwm=VeHJ5@hf`o0!p( z^oj9-MgyZr;VqE|4fD^r|CaJud+Ul?NL_UMH>R&jjN90?0|g=;ERg4^n!ZIKq2cUf z-|&+g&aADzJYoBa^sk#rZ;N{;>`&&MyLEP_Cig7sWFf8KhS%MTYJbl?aOeB7%j+$; zbIjH}D!#(j7asDhgVmJ#@}Hn`yD5)dcZG0!6H{ZQ|`tkFJzyJUIClM(A6Ll_1O)N=GQ7F$W$xsN%NL6t6^bKH8{K>+|#UQ|- z!vF*z$1t$|Q&8y>P-MthwJzuNz5<=|CAs%2{&BIq>{p*#;GrYc?=kyVAX@^bsA!3BHtz`GO=k0ut_`+ z=sCh7tNHJ7y5QnNtW5t{bQn5{l3b(JB3*MhjTSfdDr(l1>l(Mx||N|({EV8v_Z>=BS_@*oTiJXrrz4JZtb2BC&L5WH&^rT*(RC2 zCMRO%m3wI>*TiyScN8%%z2Lra!_C+zDTND{&PbX%_b%5}-EhFMxn+S;w@J;nf~XU{ zmgQ37QVgl5XROZrx9Rok=~unWA9yEreb!^ln=2)?Atx*FFmK)Lquq}Z9zIxXoBwvr zwDr*sH%c0c&O7wu@pGMPOfRf$cP5J2eDGY9vZiM~1Cz)fkqr?N?;{xaIPO%uD*W@4 z`IWKz!UP9~*SAhSkFT4}SP)nBd+w$wm%KDMJmzOKFL|KQ$nfR+{m@&LhKaSdh86c4 zehD6T;-B#0VSA94z=ShK6ZbI5n=<{ls9?BqWr1(6_d;j)<{f7|`1>?g%G#^Ez*IV?#FI5Y?jA#$V4sc9vzdV^8xpEB_AOZE zmBZ)AB$j*4lO=?&CRv@k;+3Y0l=6k0&lj|aajoEw5nJ_QQRI}9Egatsv|cXp_;A35 HgTWdA3hs<@ literal 0 Hc-jL100001 diff --git a/doc/de/images/button-show-active.gif b/doc/de/images/button-show-active.gif new file mode 100644 index 0000000000000000000000000000000000000000..4a2270e6e044011d262f978bd5296e5b317c9870 GIT binary patch literal 788 zc-nLKbhEHb+`=Hj&?3N)k!p~WWmQt_TvHR!(H=QzO2PE0$x9bCty?>3$Bu=^PVTsJ z>F|U5*IvJR`2ORYzyE*#ClM(A6Ll_1O)N=GQ7F$W$xsN%NL6t6^bKH8{K>+|#UQ|- z!vF*z$1t$|Q&8y>P-MthwJzuNz5<=|CAs(4J52af@#w&U0uLQFR@;dOPvlt5zc8(F z`xe_p2b>;vy{!tqEZFy2sh+Xt(9i6;Ur8P8PFLBkw12F8Bj|89IJ`c)S;s@bh?kwW zM5oE2v%9*XWs0k+AuCTtR-Fb5Um^dZGA2HIhNbF^oP7LTwK_9rPoBJJ+qN=}Xa;8P zMcnp`T>J}SR7Y)=5x!D=mxhJ#o%}EL8 ztYYBc)ZpM|KJ-QB>GPL!x4dJ}{4r6jp@D@fKtV*|K=|J3pAjN9GcNQo)o_@sbeMif z&W`oh4xOA6N0VK;CH|T2vUr-*&}_#j<8k_F1B0&h9;pL429wphf=Tu5bMRSNMWLN!P{RS?89Vow_AZ!YZyH|~FYiJLNynONcpMe}bQ4op0{3;O%HSS_CjsDwDC wsIn_;7Mo!vK_&)k0OGZ00ssI2 literal 0 Hc-jL100001 diff --git a/doc/de/images/button-show-all.gif b/doc/de/images/button-show-all.gif new file mode 100644 index 0000000000000000000000000000000000000000..8564af952fc52132495d3adbe98885a6aabe33ae GIT binary patch literal 713 zc-nLKbhEHbT*4s2&?3N)k!p~WWmQt_TvHR!*%38qO8)ez$x9bCtzSE7$Bu=^PVTsJ z@$iHD*IvJV`2ORYzyE*#ClM(A6Ll_1O)N=GQ7F$W$xsN%NL6t6^bKH8{K>+|#UQ|- z!vF*z$1t$|Q&8y>P-MthwJzuNz5<=|CAo*09N#^z{C{9UfkzK#g_3jO$sDVhZF4Vu za|oT^;PklbZB^{Wi|oqJZN1_w9uR!-epckV5F@aFA& zyL3h-PA-ivOiUXeK7Ok6@$*+9O@;Ocle+RWk4y|s=)1eOCS2s3u*Zc3-17Qt78isM zG#ZwLOVx-xIB@+~hTOmF6Ms(QSlrd85wwrXa?=y;8M>uYH;QmIc!;QcKOy5Fyy7hT z7KMu*3tl-Mp4vHUQ^KlOno4>Rp#ljFI)N(~QkJZ{ace8jbVhsmPSww*Igu{N-TT{ zXkBoeYN3$8bwTrjp@YKtX__-rWkfgvew}izW$>8or#O4t>#{czInfKN&%f>Xo-uj;rh0{wp<^T%Rw_`CzkyGqaz5szQ_V1OwM5f0+Z`{sQyN5(N``J|witltnnV aSwDIHutScmqlM$fgcV9HmI{JQ4AuZ(TvciS literal 0 Hc-jL100001 diff --git a/doc/de/images/button-show-completed.gif b/doc/de/images/button-show-completed.gif new file mode 100644 index 0000000000000000000000000000000000000000..ad03d3e4812eecabbbb6674b575a03e10bc0a4b9 GIT binary patch literal 757 zc-nLKbhEHb+`%Bi&?3N)k!p~WWmQt_TvHR+*%38qYQglW$;%cstzSE7$Bu=^PHw+) z@zBEu*WbK;^#0?UzyE*#ClM(A6Ll_1O)N=GQ7F$W$xsN%NL6t6^bKH8{K>+|#UQ|- z!vF*z$1t$|Q&8y>P-MthwJzuNz5<=|CAs%EJ52af@#w&U0uLQAR@;dOPvlt5zc8b5 zdrwqs>#@hD-ZCv){Q6pVlE{fWg;%~;?YL{YRq&(32|30obGF`H{9o5Yz@W~!)rpsb zw_LNmq2ENcMTe1-kDsfOp)@MLR)dj?pRZ)Wv>CIsS$P=JdbMij<75t?5U^+Wt#}L>RXc1t@NHxgGwk|DksjUra>qzYG44*WmVEWYL)hoJp>{xj0)Q+o{ z4nKTw{q?H{A3nbM`~UZU5`p4BQRkx6#FEq$h4Rdj426)4R0VfW-v9>1pDc`A3<3-~ z3_t*K3vCT2E6_P#vX_f>W&iTG{|_t>(74gbcX&zB$u+ViC!W1h zTpN{p{-UYt-Kx;L+V8(c`0Q-h;LV#{e}AjelC=&EweL)8-fM4V=4H-c=H^eeW#r`J zE7RcT;N|COVqoLp=Phe%W9a1L=VI)eFlmZbOB=Us|HR3CvlHhnSd^*3$i?3iyJ_L# zwaawXav4~7wuJDoFm`fjaB?#c3G5ML z=oFDnU2Jkdap?rH7r9SYZq$xko3ufu(#3i50VZ}{o{k#P&$sJ<2-;-Smp{6Ey|plHi$T#7 z-;L)TmiX)zF;x0g@bc2{>h0Wu`9C$*2bFZr zu{^!l+;c+y!5u0pi#+b@u^e0;=eeop!nwVF%0606njK&Nbf=);p&O_3n+|($FjxZs D1G*`0 literal 0 Hc-jL100001 diff --git a/doc/de/images/button-show-previous.gif b/doc/de/images/button-show-previous.gif new file mode 100644 index 0000000000000000000000000000000000000000..426180f1e3d445c297be1f7b4eb2da3372cb7ba1 GIT binary patch literal 679 zc-nLKbhEHboXH@<&?3N)k!p~WWmQt_Tw5F1*%38;YVzc1MXOi#Y}+>f;Gs3gPwl*R z>F~pc*WbK;^!~$}KmULKClM(A6Ll_1O)N=GQ7F$W$xsN%NL6t6^bKH8{K>+|#UQ|- z!vF*z$1t$|Q&8y>P-MthwJzuNz5<=|C9&KrEBlwf{eNIV!407|F06}+PUf(2?^+`K zVMf$?pBFEpSj#q^TR-)A5la}8o4y*`?)!$yPnKG&;p2>wKKFjHmp%)x79%e+10yFN zA7^?9J8vle1b&|O4h}wkuD;0=Lo_=1`PgF_XU?8GWtt8%H$OkO?YybeH*D8jK5LG~ zGS0;qMkdblkKVpN%dPpc^Yv4vbEU!Qyz)IMx*SiE9T-}hy_sdcM15Z1-k{eOz%jw2 zb&+$2gnsTEi7bA_KGA>Ps|*et5NzmSaBE`vAaJx{f>dCXNv5(K1M}}H%UvFNtuyqt z7o64km7sBHiAU(0z!_UsTxB$bNN`l?n-lQ;*rzr3Q-PO*)N$a9_SumsGcM^qq?im8$Fv-KkCnpFJ7k_cMCkc#?QOvUTZ_R((|$(k{oj3*73@Jw|sT+@JQr;d_Zsd rm*gA%OI=QP{QSwPv4HE}%L{iKI6mf;Gs3gPHw+? z@$lnEH{ZT}_VM$FzyJUIClM(A6Ll_1O)N=GQ7F$W$xsN%NL6t6^bKH8{K>+|#UQ|- z!vF*z$1t$|Q&8y>P-MthwJzuNz5<=|CAs&vIZXId@#w&U0uLRjz@~XC3UaLGUs$pF zK(beC+p))7cZ&9#yz+2Uu#jY1_;$==3RUC)vsO8u$zyM^YDa?D-Uel-gxEQ!J8Yd95divkYcYtYtBX|lfs5dkxfB3Yvvc*`wfz5)|;zYUdQ3id7 zi9D@el^donV(8oSU?tP5GY-$p7I|)geEBJ&@4_}{w<HgLFC|*X1k649X{ng_j$G!ezYe~rU%&YJKBi5#j(5g{^ex>z<*vx$ zMMec*wbQkO8Ds*uxgLlt<1RY2q%dGX@;Q~u^SS=t{OV(Jn8Eyk6!$*S1Vgra%MR5{ z+o^CUgJFkww^hRl0|yn&Z7VwR_pfa5s5x}7Vp?~$;}fwyn`;@#wG0yyT>D)(UNo4y qs8u#gDD$j*GC82`pbEc=TjtZL7H3wpaHu7`d^&y7+Y8Pd4AuZi9C6_Q literal 0 Hc-jL100001 diff --git a/doc/de/images/button-sort-descending.gif b/doc/de/images/button-sort-descending.gif new file mode 100644 index 0000000000000000000000000000000000000000..076533dbc789f5f6cf78a98eb33b8073505a2758 GIT binary patch literal 774 zc-nLKbhEHb+|D4v&?3N)k!p~gWmQ`2TvHR!*%2{)YVy?S#cNmhZ`(fq;Gs3gPHek+ z@$lnEH{ZQ|_VM$FzyJUIClM(A6Ll_1O)N=GQ7F$W$xsN%NL6t6^bKH8{K>+|#UQ|- z!vF*z$1t$|Q&8y>P-MthwJzuNz5<=|CAs%EIZXId@#w&U0uLP_R@=aXCvvRj2ShY( z?_rV)Q!_ig)z^LP(PSSz{jA$bw{~7DJNop;%%|Ccj|!V!f3R3_OTQsjqsgH)u)HFr zO2bf7bhRzrqjHI2X>t}6@KRa-u<Y-Tog-ItzPf3SZ{BVuolD0lx9(_tsNXIDzycUDE@p9 z9=eWO#w6n@Z}`l~rB{VsUArEg5Zl1^c??SHgkdtL}Semi|5TW&g#E%8NbDCh@)(oshq6?Mcg?J+}&8$3DEl z-`do&jd6pYrNhCKZT#B$KLU8Z)M`OTY_9q_N7(lRU9|9zhtwlf-6ir zsIz$~uY>L%-Gf4cRyDbT4NONQa*Pv>*W!}Hfga5X0j_LHRE6C literal 0 Hc-jL100001 diff --git a/doc/de/images/button-start-class.gif b/doc/de/images/button-start-class.gif new file mode 100644 index 0000000000000000000000000000000000000000..e5170346acb91668b90fed47238abd50fbb0ac3d GIT binary patch literal 552 zc-nLKbhEHb%w-T^Xc1swn90B}msf15gw`5;`*ju(o85eO_~snVZ8}}M;O2t$4>s<5 zvghjCi}yd>d;aa^pZ~xAlL!?5i8>dhCYGe8D3oWGWGIAWq$;?3`UWs4{$yd~Vh~`^ zVE_Vddz{JJR&&{OC#>3Cc z-rm`*$;iRS&uOjQ(bd!3%+T1}T0Cj?oQadC7PIs6^DrB#<+1Uut=HsHW8~!2EM#Qb z#jt0eCP(Xz{n`ij$8S^LS-d<&>j=}aVy-J3JcjCd{6*SXjC`8iZCX#YH)%3G)_Ji- z_fhe)i%&McDYj-TpD?YAosXlz+cDvwMiZBe$qzS$hleZ|Uoi>!@z(ob^Ves8I#&qZ zEy^I%kOIHWANH#BRSmhd#wD#AsX$QA^th%!;<2Ns( z`sSJI)@|TseRpe}rR$H?&N~da&2o9P!+e^aJUSk^s;7Ww=O@9F7HrY?VwySnqUSiT L-{7di!e9*mkL>?Wd-nCkpZ~xAlL!?5i8>dhCYGe8D3oWGWGIAWq$;?3`UWs4{$yd~Vh~`^ zVE_Vv@mho|ZYxrm5lQ=~Y4SsgMpv?3lK6cG0 zmQD?h7B0rd<}wx@e%`Kx1O_JV1a9l5mN`)q_$N)_<>z5GP^;Bq;%nquthIa*BWJe{ zpFhWLuDuK^OEmb{<~1DC7=BaOQ`cuXsGqWDwWPOjHp@`8c)#g@hs z8na5O7`GmKs`*yq{jtdmj9)%%xO{$&e)=ORg%hb+bGVtfWlSR41Q=X`uklG`&)B%Q zyJF{`fYV>~A6OPLO*MJht#07DxbKwO%ry}k8Bb5p&pFYg%zoXNh0*TisjxGVUakxq z7$pogwKj$8Gg>$-@0od6Bv`&P>edzIZs|M=LyrmiM;Ux(@mUs3F?{O8z#d_^K;uF~ z43h?5iPizFweEYP9&KCHeYurmLX431w1dmeJ~}=jenN%NPNNiUWsT^2J*>ujN9H(x T&+u_^(Yd%H{f2@N6N5DXlScXY literal 0 Hc-jL100001 diff --git a/doc/de/images/button-stop-class.gif b/doc/de/images/button-stop-class.gif new file mode 100644 index 0000000000000000000000000000000000000000..5bce8085147add21a2a8906f7e6feaa13f6b8957 GIT binary patch literal 589 zc-nLKbhEHbEMX8~Xc1sI%fN7+jq{?kTwTsby59>6e^OfdqO0@Gym{|8 zZTfNf^3TVQf4+J9@89qLBm%{MqRvIBi6yBi3gww4844j8sS56%z5xu1KUo;L7z7w} z7=Qre7zWmV3Mzd9iYyMR*5$n3SDx$;ipa$EBgu(N)AhJBX2M^3-CE1=IK!PnkAx$s%5U9%e(eOm^N4^_o1aj1##u z`Pj|(GVDL7$Y4mK+s*hiQ`+8e zykpp^$;7MsRy*-?(zmp2$;JP^-VV?2TgXrz@@Cf41OB@hdDwEBlwVAo(bZ#7m?e0k z@u&fRP$nm5=8_YZQk&eLbr(K9+Zg{+?5$J9%K2P&Zyp^ykm+{RuHoNx?MJ zBg?+WDNBC{b1d1c`+ji|Zvum+f^DZB55tk~`SM+L{8_tl(l;IDomg~lW#WT^S$c8% z8aNXoa~$U~UWn3Iq0H0T9L~9=c6Qj?#xRE6^W1bfPxDF`rf@Bb*!l9nLKofbI;9*B zgqV9O15&CA#E-7jU8pwG>FUcV4@Am7eoIk&v~=F_r%_LQFCEi)a(ZHAm?9(V=JZx= kHSV28i#|WUT;=h+pl6rqq*JagM~ZxZAMaICWMHrc0He1PNdN!< literal 0 Hc-jL100001 diff --git a/doc/de/images/button-unpublish-printer.gif b/doc/de/images/button-unpublish-printer.gif new file mode 100644 index 0000000000000000000000000000000000000000..ecf33fa5126d7a17673069ead881983e089d6af6 GIT binary patch literal 821 zc-nLKbhEHbJk21&&?3N)k!p~gWmQ`2TvHR+-WD-^YVxG1MQc{|ZrwU}-~N@yPHw+; z>F~n`*I&PS`2NG|zyJUIClM(A6Ll_1O)N=GQ7F$W$xsN%NL6t6^bKH8{K>+|#UQ|- z!vF*z$1t$|Q&8y>P-MthwJzuNz5<=|CAs%4bOloE=j~ij;GrYcZ_wx;;$SuZ!U~b_ z7pBWsvx_ZAEe*b(d+x%8w&dqYr7B@d=f7Vk^S#fAXGN8_{-3>a4SYNt4$d`hg^?!h zf&7e>racy30tT^+ES!AIE|c1-yNu`g#V=lLraDcVgR7D~H6~AkaTXtYf(FYr21X7( zey;wQ^=a(;IS(Zk9pgVSVdI5e+nKo=xYZjPE^OiBJ9jvhXO8xjYYwMkZa(0Dw0Ylw zlV|Sl-G6Z1!^e7RtF)N;D!I;`WNJt_$iT>1AX(7RzQ8exb0^E0V&4NyEa&IhuBZr9 zUee0@p2gt?m(&&(nSX{}G8eiTxhJX^J83U%P-U9V7pc~Fgds5^1~BY94Ik z4rK`YT;p13u753Z`JM^Z)&YwR%y~neom_TSMLaQI_H?67dRmewi-f_v+3lO|h|Vux2*W(+}MJb*HU6*PF=A%vtT0EE*960)fQdM{OnUgrU@ObWPGXl z>y3ojwCZPUEDG`BPZu^^s?#!@y_CtB=^6WhT0Xt+JT*Eem*4k)f7Dz)TjxW9r&+U3 z>&&zru|eI1u^a`G3`g!m7pUtTXhtvxj zCH$QE56p1t_9@!Y#BpnDp>sl5+RCL|Q$jYW%Eq^8KI2x2FmEF!R(%dXR`{9 hS*Fdl4bgl)x5Db;Qz4}{lb_FTc(&oNkRk(vH2`7`cWVFu literal 0 Hc-jL100001 diff --git a/doc/de/images/button-view-access-log.gif b/doc/de/images/button-view-access-log.gif new file mode 100644 index 0000000000000000000000000000000000000000..82ad70b7ba19f9bba8784ce3c2cd481bb783b71a GIT binary patch literal 802 zc-nLKbhEHbJj@`%&?3N)k!p~gWmQt_TvHR+(H=Q{YVzc%g=<#zZreWp;Gs3gPHw+? z>G1PscRzf5^W*pTzyJUIClM(A6Ll_1O)N=GQ7F$W$xsN%NL6t6^bKH8{K>+|#UQ|- z!vF*z$1t$|Q&8y>P-MthwJzuNz5<=|CAs%4v;|V^=j~ij;GrYcuhHlq;$SuZ!U~bF z7pBW~ogXt^DB8GY{Tpq+sRtW2Z?4A6Ms|6EV!(P23KQ_pjEl z@8@AY8}sJDqxT;_>#Lb?9J;khF+e?mQIgd`fi)*V;XngR4Tqk?0d~c%MkcNxo{qp| zZQT+pzcXfDkB%{O|6@DQB=Moqm7$P{!(+jNq*F7~L{_v+=VkDk${Dfi&PfI~0ZI0V zZ&$7*+-ERy7www4wZH!|TTP#tt0BYdL#y9QEpgf?>JUCD@xY-w>IYWOV0RB?`4DyO zoRu@Vt1N>g5%g{4t9e;lBA&hqbA5X+<*J>8fX>nPm&>l0CEUHV zy-~QOdG^>CU-@|#LP4fY)Bx)c_da}l^W*pTzyJUIClM(A6Ll_1O)N=GQ7F$W$xsN%NL6t6^bKH8{K>+|#UQ|- z!vF*z$1t$|Q&8y>P-MthwJzuNz5<=|CAs&vI!yRe@#w&U0uLQ2#-@2I3UaLGU&vT} zAem2Icg>b%Q!{sKelXj!w67~Er0Pvn`c<9nA$ec+%2n9p_}YK_ox+gW&={WY<|$BZ zQj^nU*wQ~qYvN?5UU$`QZAK1WJ}$;Ab{;++<^qPf^A|4Wjo@dW&$*~+Qv@R?AK#Xy z%2m7eY>i^!Wk0Zc@1*8Uhcs3%SX8-TI|DQKZf^V4#}bz;TXA{Syo-yME;mq{t;NpG zypuDF>;00IZ{Kr%Y~r%#zs1BYaN>94gZKj>3|w3c8XqP$vatndq|C^gaIo$B1I3yH z{H)B(j4Ubv3K!>|F!=nB>B{UWhVyNzcoP2XQ08N>QsKRlQ#|3-vW7WLX?6~&yf2z( z@^?qTDq=-sUT`glFU+vTBEBsl^6n6O(|2law=5xytj^w&u=Hqskde&$X($o zFnf1rSK_->i5CKT@1++0+xOR$^UT(Rb&t2qHHqk7YG=&9GC@F6F=6&p`Q)uWqOX>m zb7MEKXk*%PRn&QY+Sxm-JV%5Xw>0RMNN!HLrBkxTdtxEO$>ZPduztwBdH+!JG&QB= ztM(|0U0gDI{<0E5*Z22BVw=CLUHX85vG(yawW_@pR<7kyHNP|FJ>A*SKUb+jaW3eGV`J-Osy{#G{QZuQ%p3QlQ#ccwjTless6 zqe?bQ;!%gnDu*Uf)u>62x+G^AGIi-3(?}N4`_%BT$KsjC;dZZ%1$})EY&)CyyjmC- FtN{a^V;TSe literal 0 Hc-jL100001 diff --git a/doc/de/images/button-view-page-log.gif b/doc/de/images/button-view-page-log.gif new file mode 100644 index 0000000000000000000000000000000000000000..cc7a22f1abe3fdbb1eeb60471e5b73485bc96b2a GIT binary patch literal 772 zc-nLKbhEHb+{GZm&?3N)k!p~gWmQt_Tw5F1*%3K?YVzc%MQd00Z`(fq;Gs3gPwlvN z`N;iymtVhn@ZsZ|KmULKClM(A6Ll_1O)N=GQ7F$W$xsN%NL6t6^bKH8{K>+|#UQ|- z!vF*z$1t$|Q&8y>P-MthwJzuNz5<=|CAs&vI!yRe@#w&U0uLQ2#-@2I3UaLGU&vT} zAlYmE7I(3wv85YV=})mT>N>dX^Xk=M$#;G4dr!!)k>P6Q(R*6Fogvq>t|89dQ^0_m zlbMl;jk`J{(Xd4`M`zk}*SuLKss{XwI*c5A{9KD08~N8VEM2}bhP{l3dGm74Rs36` z7&-a)cCA^r|KQ=(3@m)?>kk~-T_4B3bJd0wi`TB(Q^vr|y_Va4!6vKhHeW+Zh?Zp56lM-wp?Pc5NQZ_sKw0p#iJ%e zaI$#cw-0}rez0EcXJh*(qZ-g~=plpEbQU%RiHrA7v@&y_>r`Z5Y-Z;bn3M6ruYtKv zvtyCLsZ^QS<;+qhz7H8*T})wEwMe31>U3tNkhMx*nL@P~mU`@p`?XQ&Kh|);~O; zd*hTwP1u(EY|EJK?`DPdgym-i?s;}fHOu&B5^K6vH&f}dvwL~xDAazFRXyh!-2HK} z^TYyoJH{I_2aImMetC7e^b!uk4@bIoL^s8xM%#Sv6V&fLE@xM8jN!`e9d9`A{IdSG zD)CK2qQgPWMEg051I5`H)Do(40PHjDO5dc89+PV`oF&cvO?%vDv&^AM)VAu<;|abK44Edl isI5#9ar-3jcv66yC$o}Qk3j#Fh_szed|oXK4AuZ^Q)3wb literal 0 Hc-jL100001 diff --git a/doc/de/images/button-view-printable-version.gif b/doc/de/images/button-view-printable-version.gif new file mode 100644 index 0000000000000000000000000000000000000000..e7b4e9c3ca0e96fdafdf4bb677b484795844548d GIT binary patch literal 833 zc-nLKbhEHbJjEcw&?3N)k!p~WWmQt_TvHR!-X1l5YVzc%g{xQgY}+<(|AAGBz$e*I&PS`2ORYzyE*#ClM(A6Ll_1O)N=GQ7F$W$xsN%NL6t6^bKH8{K>+|#UQ|- z!vF*z$1t$|Q&8y>P-MthwJzuNz5<=|CAs&1=m@0P&)d16z(Yr>U%$~m#KCI*g%w}I zUYIUl&F**ROLyQ+3*ad4%w^G0RFF!u0GPSs#p&cM&k$In^Ez|395?XYek10%-< zuFaY(yjqOBeS7zB-WA2h!_T{7$+AuJ7xMIJZ{5Cg0soEEq9V=}rKT)?Y9Sw}!ZG6HGCdV%=?PBH*D*1DxE8ea}O;b%{_#!!a%!)3mLy3)JcG~R7x+9Y!9 z+SWZ6EV!qI>4@*xvg6Cq=2BE3u2omBu36&0AnYQ8 zCigi8gH5ID(jVMjT~};uzCdPs(gxmhe)pT0J}?}-vUU57jh=#wb2468ga~}OpR9X? zcacxTzK0CI);@f4v0l$0WwM)y;PMwz46dvRvKgE*NA5S}b$pp${=y(2hKs4sWU~M7 z!ix)=R&G7uEdA)p!zo$kU5tB~*DO$ONM5@~=(G-7%cG=hh9i?N7W4mEanW??$_bCn zU6(1ln~K;if6ORx?wC}&%OYWh+BX56DftE+4`kF5+B#Xn+$4%RW@IdrbYc2!YsSJE vzC!c)9Q_*=e1b_m0_t;XzE!%+v#ojgd_jxaMi>4sBCB33vepq~Vz34PN0)s3 literal 0 Hc-jL100001 diff --git a/doc/de/index.html.in b/doc/de/index.html.in new file mode 100644 index 000000000..bd7ec21c8 --- /dev/null +++ b/doc/de/index.html.in @@ -0,0 +1,143 @@ + + + + + Startseite - CUPS @CUPS_VERSION@@CUPS_REVISION@ + + + + + + + + + + + + + + + + + + + + + + + +

Common UNIX Printing System @CUPS_VERSION@@CUPS_REVISION@

+ +  Startseite   + +   Verwaltung   + +   Klassen   + +   Dokumentation/Hilfe   + +   Aufträge   + +   Drucker   + +
  + +

Herzlich Willkommen!

+ +

Auf diesen Seiten können Sie Ihre Drucker und Aufträge überwachen, +sowie auch Verwaltungsaufgaben durchzuführen. Klicken Sie auf einen der +oberen Karteireiter oder eine der Schaltflächen um eine Tätigkeit auszuführen.

+ +

+Hilfe +Klasse hinzufügen +Drucker hinzufügen +Klassen verwalten +Aufträge verwalten +Drucker verwalten +Server verwalten +

+ +

Wenn Sie nach einem Benutzernamen und Passwort gefragt werden, +geben Sie bitte Ihren Benutzernamen und Ihr Passwort oder +den Benutzernamen und das Passwort des "root" Benutzers ein.

+ +

Über CUPS

+ +

+Happy Computer and Printer + + + +CUPS stellt eine portierbare Druckerschicht für +UNIX®-basierte Betriebssysteme bereit. Es wird entwickelt +und gepflegt von Easy Software +Products um eine Standard Druckerlösung zu fördern. CUPS ist das +Standard Drucksystem welches von MacOS® X und den meisten +Linux® Distributionen verwendet wird.

+ +

CUPS benutzt das Internet Printing Protocol ("IPP") als +Basis für die Verwaltung von Druckaufträge und Warteschlangen und fügt +Drucker-Browsing und PostScript Printer Description ("PPD") basierte +Druckeigenschaften hinzu um komplexe Druckumgebungen optimale zu +unterstützen.

+ +

Druckertreiber und Unterstützung

+ +

Besuchen Sie die offizielle CUPS Seite um Druckertreiber und +Unterstützung zu erhalten:

+ +
+    www.cups.org
+
+ +

Kommerzieller Support und eine erweiterte Version von CUPS genannt ESP Print Pro ist +verfügbar unter:

+ +
+    www.easysw.com
+
+ +
 
+ +

Das Common UNIX Printing System, CUPS, und das CUPS Logo sind +Warenzeichen der Easy Software +Products. CUPS ist urheberrechtlich geschützt 1997-2006 von Easy Software Products, +Alle Rechte vorbehalten.

+ +
+ + diff --git a/doc/help/policies.html b/doc/help/policies.html new file mode 100644 index 000000000..804fc3e9e --- /dev/null +++ b/doc/help/policies.html @@ -0,0 +1,677 @@ + + + + Managing Operation Policies + + + +

Operation policies are the rules used for each IPP operation +in CUPS. These rules include things like "user must provide a +password", "user must be in the system group", "allow only from +the local system", and so forth. Until CUPS 1.2, these rules were +largely hardcoded and could only be customized at a very basic +level.

+ +

CUPS 1.2 adds a new fine-grained policy layer which allows you +to completely redefine the rules for each operation and/or +printer. Each policy is named and defines access control rules +for each IPP operation. This document describes how to manage +policies and their rules.

+ +

The Basics

+ +

Operation policies are used for all IPP requests sent to the +scheduler and are evaluated after the Location based +access control rules. This means that operation policies can only +add additional security restrictions to a request, never relax +them. Use Location based access control rules for +server-wide limits and operation policies for limits on +individual printers, tasks, or services.

+ +

Policies are stored in the cupsd.conf file in Policy sections. +Each policy has an alphanumeric name that is used to select it. +Inside the policy section are one or more Limit +subsections which list the operations that are affected by the +rules inside it. Listing 1 shows the +default operation policy, appropriately called "default", that is +shipped with CUPS.

+ +

The easiest way to add a policy to the cupsd.conf +file is to use the web interface. Click on the +Administration tab and then the Edit +Configuration File button to edit the current +cupsd.conf file. Click on the Save Changes +button to save the changes and restart the scheduler. If you edit +the cupsd.conf file from the console, make sure to restart the cupsd process before +trying to use the new policy.

+ +
+Listing 1: Default Operation Policy
+
+ 1    <Policy default>
+ 2      # Job-related operations must be done by the owner or an
+      adminstrator...
+ 3      <Limit Send-Document Send-URI Hold-Job Release-Job
+      Restart-Job Purge-Jobs Set-Job-Attributes
+      Create-Job-Subscription Renew-Subscription
+      Cancel-Subscription Get-Notifications Reprocess-Job
+      Cancel-Current-Job Suspend-Current-Job Resume-Job
+      CUPS-Move-Job>
+ 4        Require user @OWNER @SYSTEM
+ 5        Order deny,allow
+ 6      </Limit>
+ 7    
+ 8      # All administration operations require an adminstrator
+      to authenticate...
+ 9      <Limit Pause-Printer Resume-Printer
+      Set-Printer-Attributes Enable-Printer Disable-Printer
+      Pause-Printer-After-Current-Job Hold-New-Jobs
+      Release-Held-New-Jobs Deactivate-Printer Activate-Printer
+      Restart-Printer Shutdown-Printer Startup-Printer
+      Promote-Job Schedule-Job-After CUPS-Add-Printer
+      CUPS-Delete-Printer CUPS-Add-Class CUPS-Delete-Class
+      CUPS-Accept-Jobs CUPS-Reject-Jobs CUPS-Set-Default>
+10        AuthType Basic
+11        Require user @SYSTEM
+12        Order deny,allow
+13      </Limit>
+14    
+15      # Only the owner or an administrator can cancel or
+      authenticate a job...
+16      <Limit Cancel-Job CUPS-Authenticate-Job>
+17        Require user @OWNER @SYSTEM
+18        Order deny,allow
+19      </Limit>
+20    
+21      <Limit All>
+22        Order deny,allow
+23      </Limit>
+24    </Policy>
+
+ +

The Default CUPS Operation Policy

+ +

The policy definition starts with an opening Policy +directive:

+ +
+ 1    <Policy default>
+
+ +

The first Limit subsection defines the rules for IPP +job operations:

+ +
+ 3      <Limit Send-Document Send-URI Hold-Job Release-Job
+      Restart-Job Purge-Jobs Set-Job-Attributes
+      Create-Job-Subscription Renew-Subscription
+      Cancel-Subscription Get-Notifications Reprocess-Job
+      Cancel-Current-Job Suspend-Current-Job Resume-Job
+      CUPS-Move-Job>
+ 4        Require user @OWNER @SYSTEM
+ 5        Order deny,allow
+ 6      </Limit>
+
+ +

The operation names are listed on a single line +with spaces separating them. Each name corresponds to the IPP +operation described in any of the IETF or PWG standards documents +for the Internet Printing Protocol. Table +1 lists all of the operations that have been defined along +with their usage in CUPS.

+ +

The access control rules are listed after the Limit +line and are the same as those used for Location +sections. In this case, we require the owner of the job +("@OWNER") or a member of the SystemGroup +("@SYSTEM") to do the operation. Because we do not include an AuthType +directive here, the user information can come from the IPP +request itself or the authenticated username from the HTTP +request. The administrative operations starting on line 9, +however, do use the AuthType directive, and so +administrative operations need to be authenticated:

+ +
+ 9      <Limit Pause-Printer Resume-Printer
+      Set-Printer-Attributes Enable-Printer Disable-Printer
+      Pause-Printer-After-Current-Job Hold-New-Jobs
+      Release-Held-New-Jobs Deactivate-Printer Activate-Printer
+      Restart-Printer Shutdown-Printer Startup-Printer
+      Promote-Job Schedule-Job-After CUPS-Add-Printer
+      CUPS-Delete-Printer CUPS-Add-Class CUPS-Delete-Class
+      CUPS-Accept-Jobs CUPS-Reject-Jobs CUPS-Set-Default>
+10        AuthType Basic
+11        Require user @SYSTEM
+12        Order deny,allow
+13      </Limit>
+
+ +

The "Order deny,allow" line at the end of both Limit +subsections allows the request to come from any system allowed by +the Location sections elsewhere in the +cupsd.conf file.

+ +

The Cancel-Job and CUPS-Authenticate-Job +operations are listed separately to allow the web interface to +more easily edit their policy without disturbing the rest. Like +the rest of the job operations, we want the job's owner +("@OWNER") or an administrator ("@SYSTEM") to do it:

+ +
+16      <Limit Cancel-Job CUPS-Authenticate-Job>
+17        Require user @OWNER @SYSTEM
+18        Order deny,allow
+19      </Limit>
+
+ +

The last Limit subsection in any policy uses the +special operation name All. CUPS will use the rules in +this subsection for any operation you don't list specifically in +the policy. In this case, all other operations are allowed +without a username or authentication:

+ +
+21      <Limit All>
+22        Order deny,allow
+23      </Limit>
+24    </Policy>
+
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 1: IPP Operation Names
NameUsed by CUPS?Description
Print-JobYesCreates a print job with a single file.
Print-URINoCreate a print job with a single URI.
Validate-JobYesValidates a print request before printing.
Create-JobYesCreates a print job with no files or URIs.
Send-DocumentYesAdds a file to a print job.
Send-URINoAdds a URI to a print job.
Cancel-JobYesCancels a print job.
Get-Job-AttributesYesGets information and options associated with a job.
Get-JobsYesGets a list of jobs.
Get-Printer-AttributesYesGets information and options associated with a printer or class.
Hold-JobYesHolds a print job for printing.
Release-JobYesReleases a print job for printing.
Restart-JobYesReprints a print job.
Pause-PrinterYesStops a printer or class.
Resume-PrinterYesStarts a printer or class.
Purge-JobsYesCancels all jobs on the server or a printer or class + and removes the job history information.
Set-Printer-AttributesNoSets printer or class information; CUPS uses + CUPS-Add-Modify-Printer and CUPS-Add-Modify-Class + instead.
Set-Job-AttributesYesChanges job options.
Get-Printer-Supported-ValuesNoGets -supported attributes for a printer based on job + options.
Create-Printer-SubscriptionYesCreates an event subscription for a printer or the server.
Create-Job-SubscriptionYesCreates an event subscription for a job.
Get-Subscription-AttributesYesGets information for an event subscription.
Get-SubscriptionsYesGets a list of event subscriptions.
Renew-SubscriptionYesRenews an event subscription that is about to expire.
Cancel-SubscriptionYesCancels an event subscription.
Get-NotificationsYesGets (pending) events for an event subscription.
Send-NotificationsNoSends events for an event subscription.
Get-Printer-Support-FilesNoGets printer driver files for a Novell client.
Enable-PrinterYesStarts a printer or class.
Disable-PrinterYesStops a printer or class.
Pause-Printer-After-Current-JobNoStops a printer or class after the current job is finished.
Hold-New-JobsNoHolds new jobs submitted to a printer or class.
Release-Held-New-JobsNoReleases jobs that were held because of the + Hold-New-Jobs operation.
Deactivate-PrinterNoDeactivates a printer or class.
Activate-PrinterNoActivates a printer or class.
Restart-PrinterNoRestarts a printer or class, resuming print jobs as needed.
Shutdown-PrinterNoPowers a printer or class off.
Startup-PrinterNoPowers a printer or class on.
Reprocess-JobNoReprints a job on a different printer or class; CUPS has the + CUPS-Move-Job operation instead.
Cancel-Current-JobNoCancels the current job on a printer or class.
Suspend-Current-JobNoStops the current job on a printer or class.
Resume-JobNoResumes printing of a stopped job.
Promote-JobNoPrints a job before others.
Schedule-Job-AfterNoPrints a job after others.
CUPS-Get-DefaultYesGets the server/network default printer or class.
CUPS-Get-PrintersYesGets a list of printers and/or classes.
CUPS-Add-Modify-PrinterYesAdds or modifies a printer.
CUPS-Delete-PrinterYesRemoves a printer.
CUPS-Get-ClassesYesGets a list of classes.
CUPS-Add-Modify-ClassYesAdds or modifies a class.
CUPS-Delete-ClassYesRemoves a class.
CUPS-Accept-JobsYesSets a printer's or class' printer-is-accepting-jobs + attribute to true.
CUPS-Reject-JobsYesSets a printer's or class' printer-is-accepting-jobs + attribute to false.
CUPS-Set-DefaultYesSets the server/network default printer or class.
CUPS-Get-DevicesYesGets a list of printer devices.
CUPS-Get-PPDsYesGets a list of printer drivers or manufacturers.
CUPS-Move-JobYesMoves a job to a different printer or class.
CUPS-Authenticate-JobYesAuthenticates a job for printing.
+ + +

Creating Your Own Policies

+ +

The easiest way to create a new policy is to start with the +default policy and then make changes to the copy. The first +change you'll make is to give the policy a new name. Policy names +can use the same characters as a printer name, specifically all +printable characters except space, slash (/), and pound (#):

+ +
+<Policy mypolicy>
+
+ +

Then you need to decide exactly what limits you want for the +policy. For example, if you want to allow any user to cancel any +other users' jobs, you can change the Cancel-Job limits +to:

+ +
+<Limit Cancel-Job>
+  Order deny,allow
+</Limit>
+
+ +

The directives inside the Limit subsection can use +any of the normal limiting directives: Allow, AuthType, Deny, Encryption, Require, and Satisfy. Table 2 lists some basic "recipes" for +different access control rules.

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 2: Access Control Recipes
Access LevelDirectives to Use
Allow Everyone
Order deny,allow
+Allow from all
Allow Everyone on the Local Network
Order deny,allow
+Allow from @LOCAL
Deny Everyone/Disable Operation(s)
Order allow,deny
+Deny from all
Require Login (System) Password
AuthType Basic
Require CUPS (lppasswd) Password
AuthType BasicDigest
Require the Owner of a Job or Subscription
Require user @OWNER
Require an Administrative User
Require user @SYSTEM
Require Member of Group "foogroup"
Require user @foogroup
Require "john" or "mary"
Require user john mary
Require Encryption
Encryption Required
+ + +

Creating a Policy for a Computer Lab

+ +

One common operating scenario is a computer lab. The lab is +managed by one or more technicians that assist the users of the +lab and handle the basic administration tasks. Listing 2 shows an operation policy that +only allows access from the lab's subnet, 10.0.2.x, and allows +the lab technicians, who are members of a special UNIX group for +that lab called "lab999", to do job, printer, and subscription +management operations.

+ +
+Listing 2: Operation Policy for a Lab
+
+ 1    <Policy lab999>
+ 2      # Job- and subscription-related operations must be done
+      by the owner, a lab technician, or an adminstrator...
+ 3      <Limit Send-Document Send-URI Hold-Job Release-Job
+      Restart-Job Purge-Jobs Set-Job-Attributes
+      Create-Job-Subscription Renew-Subscription
+      Cancel-Subscription Get-Notifications Reprocess-Job
+      Cancel-Current-Job Suspend-Current-Job Resume-Job
+      CUPS-Move-Job Cancel-Job CUPS-Authenticate-Job>
+ 4        Require user @OWNER @lab999 @SYSTEM
+ 5        Order allow,deny
+ 6        Allow from 10.0.2.0/24
+ 7      </Limit>
+ 8    
+ 9      # All administration operations require a lab technician
+      or an adminstrator to authenticate...
+10      <Limit Pause-Printer Resume-Printer
+      Set-Printer-Attributes Enable-Printer Disable-Printer
+      Pause-Printer-After-Current-Job Hold-New-Jobs
+      Release-Held-New-Jobs Deactivate-Printer Activate-Printer
+      Restart-Printer Shutdown-Printer Startup-Printer
+      Promote-Job Schedule-Job-After CUPS-Accept-Jobs
+      CUPS-Reject-Jobs CUPS-Set-Default>
+11        AuthType Basic
+12        Require user @lab999 @SYSTEM
+13        Order allow,deny
+14        Allow from 10.0.2.0/24
+15      </Limit>
+16
+17      # All other operations are allowed from the lab network...
+18      <Limit All>
+19        Order allow,deny
+20        Allow from 10.0.2.0/24
+21      </Limit>
+22    </Policy>
+
+ + +

Using Policies

+ +

Once you have created a policy, you can use it in two ways. +The first way is to assign it as the default policy for the +system using the DefaultPolicy +directive in the cupsd.conf file. For example, add the +following line to the cupsd.conf file to use the +"lab999" policy from the previous section:

+ +
+DefaultPolicy lab999
+
+ +

To associate the policy with one or more printers, use either +the lpadmin(8) command or the web +interface to change the operation policy for each printer. When +using the lpadmin command, the -o +printer-op-policy=name option sets the operation policy for +a printer. For example, enter the following command to use the +"lab999" policy from the previous section with a printer named +"LaserJet4000":

+ +
+lpadmin -p LaserJet4000 -o printer-op-policy=lab999
+
+ +

To make the same change in the web interface, go to the +printer's web page, for example +"http://localhost:631/printers/LaserJet4000", and click on the +Set Printer Options button. Scroll down to the bottom +of the page and choose the desired policy from the pull-down +list. Click on Save Changes to change the policy for +the printer.

+ + + diff --git a/doc/help/ref-mailto-conf.html b/doc/help/ref-mailto-conf.html new file mode 100644 index 000000000..031700df9 --- /dev/null +++ b/doc/help/ref-mailto-conf.html @@ -0,0 +1,105 @@ + + + + mailto.conf + + + +

The /etc/cups/mailto.conf file contains several +directives that defines the local mail server and email +notification preferences for CUPS. Each directive is listed on a +line by itself followed by its value. Comments are introduced +using the number sign ("#") character at the beginning of a +line.

+ + +

Cc

+ +

Examples

+ +
+Cc bigbrother@domain.com
+Cc John Doe <jd@domain.com>
+
+ +

Description

+ +

The Cc directive specifies an additional +recipient ("carbon copy") for all email notifications. The +default is to not send a copy to anyone but the subscriber.

+ + +

From

+ +

Examples

+ +
+From printserver@domain.com
+From Your Happy Printer <printserver@domain.com>
+
+ +

Description

+ +

The From directive specifies the sender of email +notifications. The default is the ServerAdmin +address defined in the cupsd.conf file.

+ + +

Sendmail

+ +

Examples

+ +
+Sendmail /usr/sbin/sendmail
+Sendmail /usr/lib/sendmail -bm -i
+
+ +

Description

+ +

The Sendmail directive specifies the command to +run to deliver an email locally. This directive cannot be used +with the SMTPServer directive, and if both +Sendmail and SMTPServer lines appear in the +mailto.conf file, only the last line is used. The +default is /usr/sbin/sendmail.

+ + +

SMTPServer

+ +

Examples

+ +
+SMTPServer mail.domain.com
+SMTPServer 192.168.2.1
+
+ +

Description

+ +

The SMTPServer directive specifies a hostname or +IP address of a (possibly remote) SMTP mail server. This +directive cannot be used with the Sendmail directive, +and if both Sendmail and SMTPServer lines +appear in the mailto.conf file, only the last line is +used. The default is to use the Sendmail command +instead.

+ + +

Subject

+ +

Examples

+ +
+Subject [CUPS]
+Subject URGENT EMAIL NOTIFICATION
+
+ +

Description

+ +

The Subject directive specifies a prefix string to +add to the subject of each email notification. The default is to +not add a prefix string.

+ + + + diff --git a/filter/rastertolabel.c b/filter/rastertolabel.c index d5f403182..340ee976d 100644 --- a/filter/rastertolabel.c +++ b/filter/rastertolabel.c @@ -1,5 +1,5 @@ /* - * "$Id: rastertolabel.c 5665 2006-06-16 00:59:10Z mike $" + * "$Id: rastertolabel.c 5703 2006-06-29 18:12:04Z mike $" * * Label printer filter for the Common UNIX Printing System (CUPS). * @@ -352,6 +352,8 @@ StartPage(ppd_file_t *ppd, /* I - PPD file */ printf("! 0 %u %u %u %u\r\n", header->HWResolution[0], header->HWResolution[1], header->cupsHeight, header->NumCopies); + printf("PAGE-WIDTH %d\r\n", header->cupsWidth); + printf("PAGE-HEIGHT %d\r\n", header->cupsWidth); break; } @@ -588,7 +590,10 @@ EndPage(ppd_file_t *ppd, /* I - PPD file */ * Print the label... */ - puts("FORM\r"); + if ((choice = ppdFindMarkedChoice(ppd, "zeMediaTracking")) == NULL || + strcmp(choice->choice, "Continuous")) + puts("FORM\r"); + puts("PRINT\r"); break; } @@ -1003,5 +1008,5 @@ main(int argc, /* I - Number of command-line arguments */ /* - * End of "$Id: rastertolabel.c 5665 2006-06-16 00:59:10Z mike $". + * End of "$Id: rastertolabel.c 5703 2006-06-29 18:12:04Z mike $". */ diff --git a/locale/cups_de.po b/locale/cups_de.po new file mode 100644 index 000000000..6b1cefcb5 --- /dev/null +++ b/locale/cups_de.po @@ -0,0 +1,2821 @@ +# +# "$Id$" +# +# Message catalog template for the Common UNIX Printing System (CUPS). +# +# Copyright 2005-2006 by Easy Software Products. +# +# These coded instructions, statements, and computer programs are the +# property of Easy Software Products and are protected by Federal +# copyright law. Distribution and use rights are outlined in the file +# "LICENSE.txt" which should have been included with this file. If this +# file is missing or damaged please contact Easy Software Products +# at: +# +# Attn: CUPS Licensing Information +# Easy Software Products +# 44141 Airport View Drive, Suite 204 +# Hollywood, Maryland 20636 USA +# +# Voice: (301) 373-9600 +# EMail: cups-info@cups.org +# WWW: http://www.cups.org +# +msgid "" +msgstr "" +"Project-Id-Version: CUPS 1.2\n" +"Report-Msgid-Bugs-To: http://www.cups.org/str.php\n" +"POT-Creation-Date: 2006-04-14 14:35-0400\n" +"PO-Revision-Date: 2006-07-17 19:55+0200\n" +"Last-Translator: Bernd Krumböck \n" +"Language-Team: Deutsch\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +msgid "Options Installed" +msgstr "Installierte Optionen" + +msgid "Class" +msgstr "Klasse" + +msgid "Printer" +msgstr "Drucker" + +msgid "Extra" +msgstr "Extra" + +msgid "General" +msgstr "Allgemein" + +msgid "Media Size" +msgstr "Mediengröße" + +msgid "Media Type" +msgstr "Medientyp" + +msgid "Media Source" +msgstr "Medienquelle" + +msgid "Output Mode" +msgstr "Ausgabemodus" + +msgid "Resolution" +msgstr "Auflösung" + +msgid "Variable" +msgstr "Variable" + +msgid "Yes" +msgstr "Ja" + +msgid "No" +msgstr "Nein" + +msgid "Auto" +msgstr "Automatisch" + +msgid "Enter your username and password or the root username and password to access this page." +msgstr "Für Zugang Benutzername und Passwort (oder Benutzername und Password für root) eingeben." + +msgid "You must use a https: URL to access this page." +msgstr "Eine https:-URL ist für den Zugriff erforderlich." + +#, c-format +msgid "Bad request version number %d.%d!" +msgstr "Ungültige Versionsnummer %d.%d für Abfrage!" + +msgid "No attributes in request!" +msgstr "Abfrage enthält keine Eigenschaften!" + +#, c-format +msgid "Attribute groups are out of order (%x < %x)!" +msgstr "Eigenschaftsgruppen haben falsche Reihenfolge (%x<%x)!" + +msgid "Missing required attributes!" +msgstr "Benötigte Eigenschaften fehlen!" + +#, c-format +msgid "%s not supported!" +msgstr "%s nicht unterstützt!" + +msgid "The printer or class was not found." +msgstr "Drucker oder Klasse nicht gefunden." + +msgid "The printer-uri must be of the form \"ipp://HOSTNAME/classes/CLASSNAME\"." +msgstr "Die printer-uri muss in der Form \"ipp://HOSTNAME/classes/KLASSENNAME\" sein." + +#, c-format +msgid "The printer-uri \"%s\" contains invalid characters." +msgstr "Die printer-uri \"%s\" enthält ungültige Zeichen." + +#, c-format +msgid "A printer named \"%s\" already exists!" +msgstr "Ein Drucker mit dem Namen \"%s\" existiert bereits!" + +#, c-format +msgid "Attempt to set %s printer-state to bad value %d!" +msgstr "Versuch den %s printer-state auf ungültigen Wert %d zu setzen!" + +#, c-format +msgid "add_class: Unknown printer-op-policy \"%s\"." +msgstr "add_class: Unbekannte printer-op-policy \"%s\"." + +#, c-format +msgid "add_class: Unknown printer-error-policy \"%s\"." +msgstr "add_class: Unbekannte printer-error-policy \"%s\"." + +msgid "Unable to allocate memory for file types!" +msgstr "Speicherreservierung für Dateitypen fehlgeschlagen!" + +#, c-format +msgid "Character set \"%s\" not supported!" +msgstr "Zeichensatz \"%s\" nicht unterstützt!" + +#, c-format +msgid "Language \"%s\" not supported!" +msgstr "Sprache \"%s\" nicht unterstützt!" + +#, c-format +msgid "The notify-user-data value is too large (%d > 63 octets)!" +msgstr "Der Wert von notify-user-data ist zu groß (%d > 63 Oktette)!" + +msgid "The notify-lease-duration attribute cannot be used with job subscriptions." +msgstr "notify-lease-duration kann nicht bei Auftragssubskriptionen verwendet werden." + +msgid "The printer-uri must be of the form \"ipp://HOSTNAME/printers/PRINTERNAME\"." +msgstr "Die printer-uri muss in der Form \"ipp://HOSTNAME/printers/DRUCKERNAME\" sein." + +#, c-format +msgid "A class named \"%s\" already exists!" +msgstr "Eine Klasse namens \"%s\" existiert bereits!" + +#, c-format +msgid "File device URIs have been disabled! To enable, see the FileDevice directive in \"%s/cupsd.conf\"." +msgstr "Ausgabe auf Dateien gesperrt! Gegebenenfalls FileDevice-Einstellung in \"%s/cupsd.conf\" ändern." + +#, c-format +msgid "Bad device-uri \"%s\"!" +msgstr "Falsche device-uri \"%s\"!" + +#, c-format +msgid "Bad port-monitor \"%s\"!" +msgstr "Falscher port-monitor \"%s\"!" + +#, c-format +msgid "Bad printer-state value %d!" +msgstr "Falscher printer-state Wert %d!" + +#, c-format +msgid "Unknown printer-op-policy \"%s\"." +msgstr "Unbekannte printer-op-policy \"%s\"." + +#, c-format +msgid "Unknown printer-error-policy \"%s\"." +msgstr "Unbekannte printer-error-policy \"%s\"." + +#, c-format +msgid "Unable to copy interface script - %s!" +msgstr "Interface Skript konnte nicht kopiert werden - %s!" + +#, c-format +msgid "Unable to copy PPD file - %s!" +msgstr "PPD Datei konnte nicht kopiert werden - %s!" + +msgid "Unable to copy PPD file!" +msgstr "Kann PPD Datei nicht kopieren!" + +msgid "Got a printer-uri attribute but no job-id!" +msgstr "Eigenschaft der printer-uri ohne job-id erhalten!" + +#, c-format +msgid "Bad job-uri attribute \"%s\"!" +msgstr "Falsche job-uri Eigenschaft \"%s\"!" + +#, c-format +msgid "Job #%d doesn't exist!" +msgstr "Auftrag #%d existiert nicht!" + +#, c-format +msgid "Job #%d is not held for authentication!" +msgstr "Auftrag %d nicht für Authentifizierung angehalten!" + +#, c-format +msgid "You are not authorized to authenticate job #%d owned by \"%s\"!" +msgstr "Nicht berechtigt den Auftrag #%d von \"%s\" zu authentifizieren!" + +msgid "The printer-uri attribute is required!" +msgstr "Die Eigenschaft printer-uri wird benötigt!" + +msgid "Missing requesting-user-name attribute!" +msgstr "Vermisse die Eigenschaft requesting-user-name!" + +#, c-format +msgid "The printer-uri \"%s\" is not valid." +msgstr "Die printer-uri \"%s\" ist nicht gültig." + +#, c-format +msgid "No active jobs on %s!" +msgstr "Keine aktiven Aufträge auf %s!" + +#, c-format +msgid "You are not authorized to delete job #%d owned by \"%s\"!" +msgstr "Sie sind nicht berechtigt den Auftrag #%d, von \"%s\" zu löschen!" + +#, c-format +msgid "Job #%d is already %s - can't cancel." +msgstr "Auftrag #%d ist bereits %s - Abbruch unmöglich." + +msgid "The printer or class is not shared!" +msgstr "Drucker oder Klasse ist nicht verteilt!" + +#, c-format +msgid "Destination \"%s\" is not accepting jobs." +msgstr "Ziel \"%s\" akzeptiert keine Aufträge." + +#, c-format +msgid "Bad copies value %d." +msgstr "Falscher Wert für Kopien: %d." + +#, c-format +msgid "Bad page-ranges values %d-%d." +msgstr "Falscher page-ranges Wert %d-%d." + +msgid "Too many active jobs." +msgstr "Zu viele aktive Aufträge." + +msgid "Quota limit reached." +msgstr "Kontigentsgrenze erreicht." + +#, c-format +msgid "Unable to add job for destination \"%s\"!" +msgstr "Kann Auftrag nicht zu Ziel \"%s\" hinzufügen!" + +msgid "No subscription attributes in request!" +msgstr "Keine Subskriptionseigenschaften in der Abfrage!" + +msgid "notify-events not specified!" +msgstr "notify-events nicht festgelegt!" + +#, c-format +msgid "Job %d not found!" +msgstr "Auftrag %d nicht gefunden!" + +msgid "No default printer" +msgstr "Kein Standarddrucker" + +msgid "cups-deviced failed to execute." +msgstr "cups-deviced konnte nicht ausgeführt werden." + +msgid "cups-driverd failed to execute." +msgstr "cups-driverd konnte nicht ausgeführt werden." + +msgid "No destinations added." +msgstr "Keine Ziele hinzugefügt." + +#, c-format +msgid "notify-subscription-id %d no good!" +msgstr "notify-subscription-id %d unbrauchbar!" + +#, c-format +msgid "Job #%s does not exist!" +msgstr "Auftrag #%s existiert nicht!" + +#, c-format +msgid "Job #%d does not exist!" +msgstr "Auftrag #%d existiert nicht!" + +msgid "No subscriptions found." +msgstr "Keine Subskription gefunden." + +#, c-format +msgid "Not authorized to hold job #%d owned by \"%s\"!" +msgstr "Nicht berechtigt den Auftrag #%d von \"%s\" aufzuhalten!" + +#, c-format +msgid "Job #%d is finished and cannot be altered!" +msgstr "Auftrag #%d ist bereits fertig und nicht änderbar!" + +#, c-format +msgid "You are not authorized to move job #%d owned by \"%s\"!" +msgstr "Nicht berechtigt den Auftrag #%d von \"%s\" zu verschieben!" + +msgid "job-printer-uri attribute missing!" +msgstr "Eigenschaft job-printer-uri fehlt." + +#, c-format +msgid "Unsupported compression \"%s\"!" +msgstr "Nicht unterstützte Kompression \"%s\"!" + +msgid "No file!?!" +msgstr "Keine Datei!?!" + +#, c-format +msgid "Could not scan type \"%s\"!" +msgstr "Konnte Typ nicht scannen \"%s\"!" + +#, c-format +msgid "Unsupported format '%s/%s'!" +msgstr "Nicht unterstütztes Format '%s/%s'!" + +msgid "Printer not shared!" +msgstr "Drucker nicht verteilt!" + +#, c-format +msgid "Too many jobs - %d jobs, max jobs is %d." +msgstr "Zu viele Aufträge - %d; das Maximum ist %d." + +#, c-format +msgid "Job #%d is not held!" +msgstr "Auftrag #%d wurde nicht aufgehalten!" + +#, c-format +msgid "You are not authorized to release job id %d owned by \"%s\"!" +msgstr "Nicht berechtigt den Auftrag mit der ID %d von \"%s\" freizugeben!" + +#, c-format +msgid "Job #%d is not complete!" +msgstr "Auftrag #%d ist nicht komplett!" + +#, c-format +msgid "Job #%d cannot be restarted - no files!" +msgstr "Auftrag #%d kann nicht neu gestartet werden - keine Dateien!" + +#, c-format +msgid "You are not authorized to restart job id %d owned by \"%s\"!" +msgstr "Sie sind nicht berechtigt den Auftrag mit der ID %d von \"%s\" neu zu starten!" + +#, c-format +msgid "You are not authorized to send document for job #%d owned by \"%s\"!" +msgstr "Sie sind nicht berechtigt ein Dokument für den Auftrag #%d von \"%s\" zu senden!" + +#, c-format +msgid "Bad document-format \"%s\"!" +msgstr "document-format \"%s\" ist falsch!" + +#, c-format +msgid "You are not authorized to alter job id %d owned by \"%s\"!" +msgstr "Sie sind nicht berechtigt den Aufrag mit der ID %d von \"%s\" abzuändern." + +#, c-format +msgid "%s cannot be changed." +msgstr "%s kann nicht geändert werden." + +msgid "Bad job-priority value!" +msgstr "Falscher job-priority Wert!" + +msgid "Job is completed and cannot be changed." +msgstr "Auftrag abgeschlossen, kann nicht geändert werden." + +msgid "Bad job-state value!" +msgstr "Falscher job-state Wert!" + +msgid "Job state cannot be changed." +msgstr "Auftragsstatus kann nicht geändert werden." + +#, c-format +msgid "Unsupported compression attribute %s!" +msgstr "Nicht unterstützte Kompressionseigenschaft %s!" + +#, c-format +msgid "Unsupported format \"%s\"!" +msgstr "Nicht unterstütztes Format \"%s\"!" + +#, c-format +msgid "%s is not implemented by the CUPS version of lpc.\n" +msgstr "%s ist in der CUPS Version von lpc nicht implementiert.\n" + +msgid "" +"Commands may be abbreviated. Commands are:\n" +"\n" +"exit help quit status ?\n" +msgstr "" +"Befehle sind abkürzbar. Befehle sind:\n" +"\n" +"exit help quit status ?\n" + +msgid "help\t\tget help on commands\n" +msgstr "help\t\tum Hilfe für die Befehle zu bekommen\n" + +msgid "status\t\tshow status of daemon and queue\n" +msgstr "status\t\tzeigt den Status von Diensten und Warteschlangen\n" + +msgid "?Invalid help command unknown\n" +msgstr "?Ungültig Hilfebefehl nicht bekannt\n" + +#, c-format +msgid "\tprinter is on device '%s' speed -1\n" +msgstr "\tDrucker verbunden über '%s' Geschwindigkeit -1\n" + +msgid "\tqueuing is enabled\n" +msgstr "\tWarteschlange ist freigegeben\n" + +msgid "\tqueuing is disabled\n" +msgstr "\tWarteschlange ist gesperrt\n" + +msgid "\tprinting is enabled\n" +msgstr "\tDrucken ist freigegeben\n" + +msgid "\tprinting is disabled\n" +msgstr "\tDrucken ist gesperrt\n" + +msgid "\tno entries\n" +msgstr "\tKeine Einträge\n" + +#, c-format +msgid "\t%d entries\n" +msgstr "\t%d Einträge\n" + +msgid "\tdaemon present\n" +msgstr "\tDienst läuft\n" + +msgid "lpq: Unable to contact server!\n" +msgstr "lpq: Kann Server nicht kontaktieren!\n" + +#, c-format +msgid "%s: Sorry, no encryption support compiled in!\n" +msgstr "%s: Bedaure, Verschlüsselungen nicht mitkompiliert!\n" + +#, c-format +msgid "lpq: Unknown destination \"%s/%s\"!\n" +msgstr "lpq: Unbekanntes Ziel \"%s/%s\"!\n" + +#, c-format +msgid "lpq: Unknown destination \"%s\"!\n" +msgstr "lpq: Unbekanntes Ziel \"%s\"!\n" + +#, c-format +msgid "lp: error - %s environment variable names non-existent destination \"%s\"!\n" +msgstr "lp: Fehler - Umgebungsvariable %s enhält nicht vorhandenes Ziel \"%s\"!\n" + +msgid "lpq: error - no default destination available.\n" +msgstr "lpq: Fehler - kein Standardziel verfügbar.\n" + +#, c-format +msgid "lpq: get-jobs failed: %s\n" +msgstr "lpq: get-jobs fehlgeschlagen: %s\n" + +msgid "Rank Owner Pri Job Files Total Size\n" +msgstr "Rang Besitzer Pri Auftrag Dateien Gesamtgröße\n" + +msgid "Rank Owner Job File(s) Total Size\n" +msgstr "Rang Besitz Auftrag Datei(en) Gesamtgröße\n" + +#, c-format +msgid "%s: %-33.33s [job %d localhost]\n" +msgstr "%s: %-33.33s [Auftrag %d localhost]\n" + +#, c-format +msgid " %-39.39s %.0f bytes\n" +msgstr " %-39.39s %.0f Byte\n" + +#, c-format +msgid "%-6s %-10.10s %-4d %-10d %-27.27s %.0f bytes\n" +msgstr "%-6s %-10.10s %-4d %-10d %-27.27s %.0f Byte\n" + +#, c-format +msgid "%-7s %-7.7s %-7d %-31.31s %.0f bytes\n" +msgstr "%-7s %-7.7s %-7d %-31.31s %.0f Byte\n" + +msgid "no entries\n" +msgstr "keine Einträge\n" + +#, c-format +msgid "lpq: get-printer-attributes failed: %s\n" +msgstr "lpq: get-printer-attributes fehlgeschlagen: %s\n" + +#, c-format +msgid "%s is ready\n" +msgstr "%s ist bereit\n" + +#, c-format +msgid "%s is ready and printing\n" +msgstr "%s ist bereit und druckt\n" + +#, c-format +msgid "%s is not ready\n" +msgstr "%s ist nicht bereit\n" + +msgid "Usage: lpq [-P dest] [-l] [+interval]\n" +msgstr "Benutzung: lpq [-P Ziel] [-l] [+Intervall]\n" + +#, c-format +msgid "lpr: error - expected value after -%c option!\n" +msgstr "lpr: Fehler - Es wird ein Wert hinter dem Parameter -%c erwartet!\n" + +#, c-format +msgid "lpr: warning - '%c' format modifier not supported - output may not be correct!\n" +msgstr "lpr: Warnung - Formatangabe '%c' nicht unterstützt - Ausgabe evtl. fehlerhaft!\n" + +msgid "lpr: error - expected option=value after -o option!\n" +msgstr "lpr: Fehler - Erwarte Parameter=Wert hinter dem Parameter -o!\n" + +msgid "lpr: warning - email notification is not currently supported!\n" +msgstr "lpr: Warnung - Email Benachrichtigung wird zurzeit nicht unterstützt!\n" + +msgid "lpr: error - expected destination after -P option!\n" +msgstr "lpr: Fehler - Erwarte Ziel hinter dem Parameter -P!\n" + +msgid "lpr: error - expected copy count after -# option!\n" +msgstr "lpr: Fehler - Erwarte Kopienanzahl hinter dem Parameter -#!\n" + +#, c-format +msgid "lpr: error - expected name after -%c option!\n" +msgstr "lpr: Fehler - Erwarte Name hinter dem Parameter -%c!\n" + +msgid "lpr: error - expected username after -U option!\n" +msgstr "lpr: Fehler - Erwarte Benutzername hinter dem Parameter -U!\n" + +#, c-format +msgid "lpr: error - unknown option '%c'!\n" +msgstr "lpr: Fehler - Unbekannter Parameter '%c'!\n" + +#, c-format +msgid "lpr: error - unable to access \"%s\" - %s\n" +msgstr "lpr: Fehler - Zugriff nicht möglich auf \"%s\" - %s\n" + +#, c-format +msgid "lpr: error - too many files - \"%s\"\n" +msgstr "lpr: Fehler - Zu viele Dateien \"%s\"\n" + +#, c-format +msgid "lpr: error - %s environment variable names non-existent destination \"%s\"!\n" +msgstr "lpr: Fehler - Die Umgebungsvariable %s beinhaltet das nicht vorhandene Ziel \"%s\"!\n" + +msgid "lpr: error - no default destination available.\n" +msgstr "lpr: Fehler - Kein Standardziel verfügbar.\n" + +msgid "lpr: error - scheduler not responding!\n" +msgstr "lpr: Fehler - Scheduler antwortet nicht!\n" + +#, c-format +msgid "lpr: error - unable to create temporary file \"%s\" - %s\n" +msgstr "lpr: Fehler - Kann temporäre Datei \"%s\" nicht erstellen - %s\n" + +#, c-format +msgid "lpr: error - unable to write to temporary file \"%s\" - %s\n" +msgstr "lpr: Fehler - Kann nicht in die temporäre Datei \"%s\" schreiben - %s\n" + +msgid "lpr: error - stdin is empty, so no job has been sent.\n" +msgstr "lpr: Fehler - stdin ist leer, kein Auftrag gesendet.\n" + +#, c-format +msgid "lpr: error - unable to print file: %s\n" +msgstr "lpr: Fehler - Kann Datei nicht drucken: %s\n" + +msgid "lprm: Unable to contact server!\n" +msgstr "lprm: Server nicht erreichbar!\n" + +#, c-format +msgid "lprm: Unknown destination \"%s\"!\n" +msgstr "lprm: Unbekanntes Ziel \"%s\"\n" + +#, c-format +msgid "lprm: Unknown option '%c'!\n" +msgstr "lprm: Unbekannter Parameter '%c'!\n" + +msgid "lprm: Job or printer not found!\n" +msgstr "lprm: Auftrag oder Drucker nicht gefunden!\n" + +msgid "lprm: Not authorized to lprm job(s)!\n" +msgstr "lprm: Keine Berechtigung um Aufträge zu löschen!\n" + +#, c-format +msgid "lprm: You don't own job ID %d!\n" +msgstr "lprm: Ihnen gehört die Auftrags ID %d nicht!\n" + +msgid "lprm: Unable to lprm job(s)!\n" +msgstr "lprm: Kann keine Aufträge löschen!\n" + +msgid "lprm: Unable to cancel job(s)!\n" +msgstr "lprm: Kann keine Aufträge abbrechen!\n" + +#, c-format +msgid "%s: Don't know what to do!\n" +msgstr "%s: Keine Ahnung was zu tun ist!\n" + +#, c-format +msgid "%s: Expected server name after -h!\n" +msgstr "%s: Servername wird hinter -h erwartet!\n" + +#, c-format +msgid "%s: Expected reason text after -r!\n" +msgstr "%s: Begründungstext wird hinter -r erwartet!\n" + +#, c-format +msgid "%s: Unknown option '%c'!\n" +msgstr "%s: Unbekannter Parameter '%c'!\n" + +#, c-format +msgid "%s: Unable to connect to server: %s\n" +msgstr "%s: Server nicht erreichbar: %s!\n" + +#, c-format +msgid "%s: Operation failed: %s\n" +msgstr "%s: Vorgang fehlgeschlagen: %s\n" + +msgid "cancel: Error - expected hostname after '-h' option!\n" +msgstr "cancel: Fehler - Erwarte Hostname hinter dem Parameter -h!\n" + +msgid "cancel: Error - expected username after '-u' option!\n" +msgstr "cancel: Fehler - Erwarte Benutzername hinter dem Parameter -u!\n" + +#, c-format +msgid "cancel: Unknown option '%c'!\n" +msgstr "cancel: Unbekannter Parameter '%c'!\n" + +#, c-format +msgid "cancel: Unknown destination \"%s\"!\n" +msgstr "cancel: Unbekanntes Ziel \"%s\"!\n" + +msgid "cancel: Unable to contact server!\n" +msgstr "cancel: Server nicht erreichbar!\n" + +#, c-format +msgid "cancel: %s failed: %s\n" +msgstr "cancel: %s fehlgeschlagen: %s\n" + +#, c-format +msgid "cupsaddsmb: Missing value on line %d!\n" +msgstr "cupsaddsmb: Vermisse Wert in Zeile %d!\n" + +#, c-format +msgid "cupsaddsmb: Missing double quote on line %d!\n" +msgstr "cupsaddsmb: Vermisse doppelte Anführungszeichen in Zeile %d!\n" + +#, c-format +msgid "cupsaddsmb: Bad option + choice on line %d!\n" +msgstr "cupsaddsmb: Falscher Parameter + Auswahl in Zeile %d!\n" + +#, c-format +msgid "cupsaddsmb: Unable to connect to server \"%s\" for %s - %s\n" +msgstr "cupsaddsmb: Server \"%s\" nicht erreichbar für %s - %s\n" + +#, c-format +msgid "cupsaddsmb: No PPD file for printer \"%s\" - skipping!\n" +msgstr "cupsaddsmb: PPD Datei für Drucker \"%s\" fehlt - überspringe!\n" + +#, c-format +msgid "cupsaddsmb: get-printer-attributes failed for \"%s\": %s\n" +msgstr "cupsaddsmb: get-printer-attributes fehlgeschlagen für \"%s\": %s\n" + +#, c-format +msgid "cupsaddsmb: Unable to convert PPD file for %s - %s\n" +msgstr "cupsaddsmb: Kann PPD Datei nicht konvertieren für %s - %s\n" + +#, c-format +msgid "cupsaddsmb: Unable to copy Windows 2000 printer driver files (%d)!\n" +msgstr "cupsaddsmb: Kann Windows 2000 Druckertreiberdateien (%d) nicht kopieren!\n" + +#, c-format +msgid "cupsaddsmb: Unable to copy CUPS printer driver files (%d)!\n" +msgstr "cupsaddsmb: Kann CUPS Druckertreiberdateien (%d) nicht kopieren!\n" + +#, c-format +msgid "cupsaddsmb: Unable to install Windows 2000 printer driver files (%d)!\n" +msgstr "cupsaddsmb: Kann Windows 2000 Druckertreiberdateien (%d) nicht installieren!\n" + +#, c-format +msgid "cupsaddsmb: Unable to copy Windows 9x printer driver files (%d)!\n" +msgstr "cupsaddsmb: Kann Windows 9x Druckertreiberdateien (%d) nicht kopieren!\n" + +#, c-format +msgid "cupsaddsmb: Unable to install Windows 9x printer driver files (%d)!\n" +msgstr "cupsaddsmb: Kann Windows 9x Druckertreiberdateien (%d) nicht installieren!\n" + +#, c-format +msgid "cupsaddsmb: Unable to set Windows printer driver (%d)!\n" +msgstr "cupsaddsmb: Kann Windows Druckertreiber (%d) nicht festlegen!\n" + +msgid "" +"Usage: cupsaddsmb [options] printer1 ... printerN\n" +" cupsaddsmb [options] -a\n" +"\n" +"Options:\n" +" -H samba-server Use the named SAMBA server\n" +" -U samba-user Authenticate using the named SAMBA user\n" +" -a Export all printers\n" +" -h cups-server Use the named CUPS server\n" +" -v Be verbose (show commands)\n" +msgstr "" +"Benutzung: cupsaddsmb [Parameter] Drucker1 ... DruckerN\n" +" cupsaddsmb [Parameter] -a\n" +"\n" +"Options:\n" +" -H Samba-Server Benutze den genannten Samba Server\n" +" -U Samba-Benutzer Authentifiziere mit dem genannten Samba Benutzer\n" +" -a Alle Drucker exportieren\n" +" -h CUPS-Server Benutze den genannten CUPS Server\n" +" -v Zusätzliche Ausgaben einschalten (zeige Kommandos)\n" + +msgid "cupstestppd: The -q option is incompatible with the -v option.\n" +msgstr "cupstestppd: Der Parameter -q ist nicht kompatibel mit dem Parameter -v.\n" + +msgid "cupstestppd: The -v option is incompatible with the -q option.\n" +msgstr "cupstestppd: Der Parameter -v ist nicht kompatibel mit dem Parameter -d.\n" + +#, c-format +msgid "" +" FAIL\n" +" **FAIL** Unable to open PPD file - %s\n" +msgstr "" +" FEHLGESCHLAGEN\n" +" **FEHLGESCHLAGEN** Kann PPD Datei nicht öffnen - %s\n" + +#, c-format +msgid "" +" FAIL\n" +" **FAIL** Unable to open PPD file - %s on line %d.\n" +msgstr "" +" FEHLGESCHLAGEN\n" +" **FEHLGESCHLAGEN** Kann PPD Datei nicht öffnen - %s in Zeile %d.\n" + +msgid " REF: Page 42, section 5.2.\n" +msgstr " REF: Seite 42, Kapitel 5.2.\n" + +msgid " REF: Page 20, section 3.4.\n" +msgstr " REF: Seite 20, Kapitel 3.4.\n" + +msgid " REF: Pages 45-46, section 5.2.\n" +msgstr " REF: Seite 45-46, Kapitel 5.2.\n" + +msgid " REF: Pages 42-45, section 5.2.\n" +msgstr " REF: Seiten 42-45, Kapitel 5.2.\n" + +msgid " REF: Pages 48-49, section 5.2.\n" +msgstr " REF: Seiten 48-49, Kapitel 5.2.\n" + +msgid " REF: Pages 52-54, section 5.2.\n" +msgstr " REF: Seiten 52-54, Kapitel 5.2.\n" + +msgid " REF: Page 15, section 3.2.\n" +msgstr " REF: Seite 15, Kapitel 3.2.\n" + +msgid " REF: Page 15, section 3.1.\n" +msgstr " REF: Seite 15, Kapitel 3.1.\n" + +msgid " REF: Pages 16-17, section 3.2.\n" +msgstr " REF: Seite 16-17, Kapitel 3.2.\n" + +msgid " REF: Page 19, section 3.3.\n" +msgstr " REF: Seite 19, Kapitel 3.3.\n" + +msgid " REF: Page 27, section 3.5.\n" +msgstr " REF: Seite 27, Kapitel 3.5.\n" + +msgid "" +"\n" +" DETAILED CONFORMANCE TEST RESULTS\n" +msgstr "" +"\n" +" DETAILIERTE ERGEBNISSE DES KONFORMITÄTSTESTS\n" + +#, c-format +msgid " WARN %s has no corresponding options!\n" +msgstr " WARNUNG %s hat keine entsprechenden Parameter!\n" + +msgid " FAIL\n" +msgstr " FEHLGESCHLAGEN\n" + +msgid "" +" **FAIL** REQUIRED DefaultImageableArea\n" +" REF: Page 102, section 5.15.\n" +msgstr "" +" **FEHLGESCHLAGEN** BENÖTIGT DefaultImageableArea\n" +" REF: Seite 102, Kapitel 5.15.\n" + +#, c-format +msgid "" +" **FAIL** BAD DefaultImageableArea %s!\n" +" REF: Page 102, section 5.15.\n" +msgstr "" +" **FEHLGESCHLAGEN** FALSCHE DefaultImageableArea %s!\n" +" REF: Seite 102, Kapitel 5.15.\n" + +msgid " PASS DefaultImageableArea\n" +msgstr " BESTANDEN DefaultImageableArea\n" + +msgid "" +" **FAIL** REQUIRED DefaultPaperDimension\n" +" REF: Page 103, section 5.15.\n" +msgstr "" +" **FEHLGESCHLAGEN** BENÖTIGT DefaultPaperDimension\n" +" REF: Seite 103, Kapitel 5.15.\n" + +#, c-format +msgid "" +" **FAIL** BAD DefaultPaperDimension %s!\n" +" REF: Page 103, section 5.15.\n" +msgstr "" +" **FEHLGESCHLAGEN** FALSCHE DefaultPaperDimension %s!\n" +" REF: Seite 103, Kapitel 5.15.\n" + +msgid " PASS DefaultPaperDimension\n" +msgstr " BESTANDEN DefaultPaperDimension\n" + +#, c-format +msgid "" +" **FAIL** BAD Default%s %s\n" +" REF: Page 40, section 4.5.\n" +msgstr "" +" **FEHLGESCHLAGEN** FALSCHE Default%s %s\n" +" REF: Seite 40, Kapitel 4.5.\n" + +#, c-format +msgid " PASS Default%s\n" +msgstr " BESTANDEN Default%s\n" + +#, c-format +msgid "" +" **FAIL** REQUIRED Default%s\n" +" REF: Page 40, section 4.5.\n" +msgstr "" +" **FEHLGESCHLAGEN** BENÖTIGT Default%s\n" +" REF: Seite 40, Kapitel 4.5.\n" + +msgid " PASS FileVersion\n" +msgstr " BESTANDEN FileVersion\n" + +msgid "" +" **FAIL** REQUIRED FileVersion\n" +" REF: Page 56, section 5.3.\n" +msgstr "" +" **FEHLGESCHLAGEN** BENÖTIGT FileVersion\n" +" REF: Seite 56, Kapitel 5.3.\n" + +msgid " PASS FormatVersion\n" +msgstr " BESTANDEN FormatVersion\n" + +msgid "" +" **FAIL** REQUIRED FormatVersion\n" +" REF: Page 56, section 5.3.\n" +msgstr "" +" **FEHLGESCHLAGEN** BENÖTIGT FormatVersion\n" +" REF: Seite 56, Kapitel 5.3.\n" + +msgid " PASS LanguageEncoding\n" +msgstr " BESTANDEN LanguageEncoding\n" + +msgid "" +" **FAIL** REQUIRED LanguageEncoding\n" +" REF: Pages 56-57, section 5.3.\n" +msgstr "" +" **FEHLGESCHLAGEN** BENÖTIGT LanguageEncoding\n" +" REF: Seiten 56-57, Kapitel 5.3.\n" + +msgid " PASS LanguageVersion\n" +msgstr " BESTANDEN LanguageVersion\n" + +msgid "" +" **FAIL** REQUIRED LanguageVersion\n" +" REF: Pages 57-58, section 5.3.\n" +msgstr "" +" **FEHLGESCHLAGEN** BENÖTIGT LanguageVersion\n" +" REF: Seiten 57-58, Kapitel 5.3.\n" + +msgid "" +" **FAIL** BAD Manufacturer (should be \"HP\")\n" +" REF: Page 211, table D.1.\n" +msgstr "" +" **FEHLGESCHLAGEN** FALSCHER Manufacturer (sollte \"HP\" sein)\n" +" REF: Seite 211, Tabelle D.1.\n" + +msgid " PASS Manufacturer\n" +msgstr " BESTANDEN Manufacturer\n" + +msgid "" +" **FAIL** REQUIRED Manufacturer\n" +" REF: Pages 58-59, section 5.3.\n" +msgstr "" +" **FEHLGESCHLAGEN** BENÖTIGT Manufacturer\n" +" REF: Seiten 58-59, Kapitel 5.3.\n" + +#, c-format +msgid "" +" **FAIL** BAD ModelName - \"%c\" not allowed in string.\n" +" REF: Pages 59-60, section 5.3.\n" +msgstr "" +" **FEHLGESCHLAGEN** FALSCH ModelName - \"%c\" nicht in Zeichenkette erlaubt.\n" +" REF: Seiten 59-60, Kapitel 5.3.\n" + +msgid " PASS ModelName\n" +msgstr " BESTANDEN Modellname\n" + +msgid "" +" **FAIL** REQUIRED ModelName\n" +" REF: Pages 59-60, section 5.3.\n" +msgstr "" +" **FEHLGESCHLAGEN** BENÖTIGT ModelName\n" +" REF: Seiten 59-60, Kapitel 5.3.\n" + +# NickName is a PPD term +msgid " PASS NickName\n" +msgstr " BESTANDEN NickName\n" + +msgid "" +" **FAIL** REQUIRED NickName\n" +" REF: Page 60, section 5.3.\n" +msgstr "" +" **FEHLGESCHLAGEN** BENÖTIGT NickName\n" +" REF: Seite 60, Kapitel 5.3.\n" + +msgid " PASS PageSize\n" +msgstr " BESTANDEN PageSize\n" + +msgid "" +" **FAIL** REQUIRED PageSize\n" +" REF: Pages 99-100, section 5.14.\n" +msgstr "" +" **FEHLGESCHLAGEN** BENÖTIGT PageSize\n" +" REF: Seiten 99-100, Kapitel 5.14.\n" + +msgid " PASS PageRegion\n" +msgstr " BESTANDEN PageRegion\n" + +msgid "" +" **FAIL** REQUIRED PageRegion\n" +" REF: Page 100, section 5.14.\n" +msgstr "" +" **FEHLGESCHLAGEN** BENÖTIGT PageRegion\n" +" REF: Seite 100, Kapitel 5.14.\n" + +msgid " PASS PCFileName\n" +msgstr " BESTANDEN PCFileName\n" + +msgid "" +" **FAIL** REQUIRED PCFileName\n" +" REF: Pages 61-62, section 5.3.\n" +msgstr "" +" **FEHLGESCHLAGEN** BENÖTIGT PCFileName\n" +" REF: Seiten 61-62, Kapitel 5.3.\n" + +msgid "" +" **FAIL** BAD Product - not \"(string)\".\n" +" REF: Page 62, section 5.3.\n" +msgstr "" +" **FEHLGESCHLAGEN** FALSCH Product - ist nicht \"(string)\".\n" +" REF: Seite 62, Kapitel 5.3.\n" + +msgid " PASS Product\n" +msgstr " BESTANDEN Product\n" + +msgid "" +" **FAIL** REQUIRED Product\n" +" REF: Page 62, section 5.3.\n" +msgstr "" +" **FEHLGESCHLAGEN** BENÖTIGT Product\n" +" REF: Seite 62, Kapitel 5.3.\n" + +msgid "" +" **FAIL** BAD PSVersion - not \"(string) int\".\n" +" REF: Pages 62-64, section 5.3.\n" +msgstr "" +" **FEHLGESCHLAGEN** FALSCH PSVersion - ist nicht \"(string) int\".\n" +" REF: Seiten 62-64, Kapitel 5.3.\n" + +msgid " PASS PSVersion\n" +msgstr " BESTANDEN PSVersion\n" + +msgid "" +" **FAIL** REQUIRED PSVersion\n" +" REF: Pages 62-64, section 5.3.\n" +msgstr "" +" **FEHLGESCHLAGEN** BENÖTIGT PSVersion\n" +" REF: Seiten 62-64, Kapitel 5.3.\n" + +msgid "" +" **FAIL** BAD ShortNickName - longer than 31 chars.\n" +" REF: Pages 64-65, section 5.3.\n" +msgstr "" +" **FEHLGESCHLAGEN** FALSCH ShortNickName - länger als 31 Zeichen.\n" +" REF: Seiten 64-65, Kapitel 5.3.\n" + +msgid " PASS ShortNickName\n" +msgstr " BESTANDEN ShortNickName\n" + +msgid "" +" **FAIL** REQUIRED ShortNickName\n" +" REF: Page 64-65, section 5.3.\n" +msgstr "" +" **FEHLGESCHLAGEN** BENÖTIGT ShortNickName\n" +" REF: Seiten 64-65, Kapitel 5.3.\n" + +msgid "" +" **FAIL** BAD JobPatchFile attribute in file\n" +" REF: Page 24, section 3.4.\n" +msgstr "" +" **FEHLGESCHLAGEN** FALSCH JobPatchFile Eigenschaften in Datei\n" +" REF: Seiten 24, Kapitel 3.4.\n" + +msgid "" +" **FAIL** REQUIRED PageSize\n" +" REF: Page 41, section 5.\n" +" REF: Page 99, section 5.14.\n" +msgstr "" +" **FEHLGESCHLAGEN** BENÖTIGT PageSize\n" +" REF: Seite 41, Kapitel 5.\n" +" REF: Seite 99, Kapitel 5.14.\n" + +#, c-format +msgid "" +" **FAIL** REQUIRED ImageableArea for PageSize %s\n" +" REF: Page 41, section 5.\n" +" REF: Page 102, section 5.15.\n" +msgstr "" +" **FEHLGESCHLAGEN** BENÖTIGT ImageableArea für PageSize %s\n" +" REF: Seite 41, Kapitel 5.\n" +" REF: Seite 102, Kapitel 5.15.\n" + +#, c-format +msgid "" +" **FAIL** REQUIRED PaperDimension for PageSize %s\n" +" REF: Page 41, section 5.\n" +" REF: Page 103, section 5.15.\n" +msgstr "" +" **FEHLGESCHLAGEN** BENÖTIGT PaperDimension für PageSize %s\n" +" REF: Seite 41, Kapitel 5.\n" +" REF: Seite 103, Kapitel 5.15.\n" + +#, c-format +msgid "" +" **FAIL** Bad %s choice %s!\n" +" REF: Page 84, section 5.9\n" +msgstr "" +" **FEHLGESCHLAGEN** Falsche %s Auswahl %s!\n" +" REF: Seite 84, Kapitel 5.9\n" + +#, c-format +msgid "" +" **FAIL** REQUIRED %s does not define choice None!\n" +" REF: Page 122, section 5.17\n" +msgstr "" +" **FEHLGESCHLAGEN** BENÖTIGT %s definiert nicht die Auswahl \"None\"!\n" +" REF: Seite 122, Kapitel 5.17\n" + +#, c-format +msgid "" +" **FAIL** Bad %s choice %s!\n" +" REF: Page 122, section 5.17\n" +msgstr "" +" **FEHLGESCHLAGEN** Falsche %s Auswahl %s!\n" +" REF: Seite 122, Kapitel 5.17\n" + +msgid " PASS\n" +msgstr " BESTANDEN\n" + +#, c-format +msgid "" +" WARN Duplex option keyword %s should be named Duplex or JCLDuplex!\n" +" REF: Page 122, section 5.17\n" +msgstr "" +" WARNUNG Schlüsselwort für Duplexparameter %s sollte Duplex oder JCLDuplex heißen!\n" +" REF: Seite 122, Kapitel 5.17\n" + +msgid " WARN Default choices conflicting!\n" +msgstr " WARNUNG Konflikte in der Standardauswahl!\n" + +#, c-format +msgid "" +" WARN Obsolete PPD version %.1f!\n" +" REF: Page 42, section 5.2.\n" +msgstr "" +" WARNUNG Obsolete PPD Version %.1f!\n" +" REF: Seite 42, Kapitel 5.2.\n" + +msgid "" +" WARN LanguageEncoding required by PPD 4.3 spec.\n" +" REF: Pages 56-57, section 5.3.\n" +msgstr "" +" WARNUNG LanguageEncoding wird verlangt von PPD 4.3 Spez.\n" +" REF: Seiten 56-57, Kapitel 5.3.\n" + +msgid "" +" WARN Manufacturer required by PPD 4.3 spec.\n" +" REF: Pages 58-59, section 5.3.\n" +msgstr "" +" WARNUNG Manufacturer wird verlangt von PPD 4.3 Spez.\n" +" REF: Seiten 58-59, Kapitel 5.3.\n" + +msgid "" +" WARN PCFileName longer than 8.3 in violation of PPD spec.\n" +" REF: Pages 61-62, section 5.3.\n" +msgstr "" +" WARNUNG PCFileName länger als 8.3 ist eine Verletzung der PPD Spez.\n" +" REF: Seiten 61-62, Kapitel 5.3.\n" + +msgid "" +" WARN ShortNickName required by PPD 4.3 spec.\n" +" REF: Pages 64-65, section 5.3.\n" +msgstr "" +" WARNUNG ShortNickName wird verlangt von PPD 4.3 Spez.\n" +" REF: Seiten 64-65, Kapitel 5.3.\n" + +msgid "" +" WARN Protocols contains both PJL and BCP; expected TBCP.\n" +" REF: Pages 78-79, section 5.7.\n" +msgstr "" +" WARNUNG Protokoll enthält PJL und BCP; TBCP wird erwartet.\n" +" REF: Seiten 78-79, Kapitel 5.7.\n" + +msgid "" +" WARN Protocols contains PJL but JCL attributes are not set.\n" +" REF: Pages 78-79, section 5.7.\n" +msgstr "" +" WARNUNG Protokoll enthält PJL jedoch sind keine JCL Eigenschaften gesetzt.\n" +" REF: Seiten 78-79, Kapitel 5.7.\n" + +#, c-format +msgid "" +" WARN %s shares a common prefix with %s\n" +" REF: Page 15, section 3.2.\n" +msgstr "" +" WARNUNG %s teilt ein gemeinsames Präfix mit %s\n" +" REF: Seite 15, Kapitel 3.2.\n" + +#, c-format +msgid " %d ERROR%s FOUND\n" +msgstr " %d FEHLER%s GEFUNDEN\n" + +msgid " NO ERRORS FOUND\n" +msgstr " KEINE FEHLER GEFUNDEN\n" + +#, c-format +msgid "" +" WARN \"%s %s\" conflicts with \"%s %s\"\n" +" (constraint=\"%s %s %s %s\")\n" +msgstr "" +" WARNUNG \"%s %s\" kolidiert mit \"%s %s\"\n" +" (Beschränkung=\"%s %s %s %s\")\n" + +msgid "" +"Usage: cupstestppd [-q] [-r] [-v[v]] filename1.ppd[.gz] [... filenameN.ppd[.gz]]\n" +" program | cupstestppd [-q] [-r] [-v[v]] -\n" +msgstr "" +"Benutzung: cupstestppd [-q] [-r] [-v[v]] Dateiname1.ppd[.gz] [... DateinameN.ppd[.gz]]\n" +" Programm | cupstestppd [-q] [-r] [-v[v]] -\n" + +msgid "lpstat: Need \"completed\" or \"not-completed\" after -W!\n" +msgstr "lpstat: Braucht \"completed\" oder \"not-completed\" hinter -W!\n" + +msgid "lpstat: The -b option requires a destination argument.\n" +msgstr "lpstat: Der Parameter -b benötigt ein Zielargument.\n" + +msgid "Error: need hostname after '-h' option!\n" +msgstr "Fehler: Brauche Hostname hinter dem Parameter '-h'!\n" + +#, c-format +msgid "lpstat: Unknown option '%c'!\n" +msgstr "lpstat: Unbekannter Parameter '%c'!\n" + +#, c-format +msgid "lpstat: Invalid destination name in list \"%s\"!\n" +msgstr "lpstat: Ungültiger Zielname in der Liste \"%s\"!\n" + +#, c-format +msgid "lpstat: Unknown destination \"%s\"!\n" +msgstr "lpstat: Unbekanntes Ziel \"%s\"!\n" + +#, c-format +msgid "lpstat: Unable to connect to server %s on port %d: %s\n" +msgstr "lpstat: Kann Server %s auf Port %d nicht erreichen: %s\n" + +#, c-format +msgid "lpstat: get-printers failed: %s\n" +msgstr "lpstat: get-printers fehlgeschlagen: %s\n" + +#, c-format +msgid "%s accepting requests since Jan 01 00:00\n" +msgstr "%s akzeptiert Anfragen seit Jan 01 00:00\n" + +#, c-format +msgid "" +"%s not accepting requests since Jan 01 00:00 -\n" +"\t%s\n" +msgstr "" +"%s akzeptiert keine Anfragen seit Jan 01 00:00 -\n" +"\t%s\n" + +#, c-format +msgid "%s/%s accepting requests since Jan 01 00:00\n" +msgstr "%s/%s akzeptiert Anfragen seit Jan 01 00:00\n" + +#, c-format +msgid "" +"%s/%s not accepting requests since Jan 01 00:00 -\n" +"\t%s\n" +msgstr "" +"%s/%s akzeptiert keine Anfragen seit Jan 01 00:00 -\n" +"\t%s\n" + +#, c-format +msgid "lpstat: get-classes failed: %s\n" +msgstr "lpstat: get-classes fehlgeschlagen: %s\n" + +#, c-format +msgid "members of class %s:\n" +msgstr "Mitglieder der Klasse %s:\n" + +#, c-format +msgid "system default destination: %s/%s\n" +msgstr "System Standardziel: %s/%s\n" + +#, c-format +msgid "system default destination: %s\n" +msgstr "System Standardziel: %s\n" + +#, c-format +msgid "lpstat: error - %s environment variable names non-existent destination \"%s\"!\n" +msgstr "lpstat: Fehler - Umgebungsvariable %s enthält das nicht vorhandene Ziel \"%s\"!\n" + +msgid "no system default destination\n" +msgstr "Kein systemweites Standardziel\n" + +#, c-format +msgid "Output for printer %s is sent to remote printer %s on %s\n" +msgstr "Ausgabe für Drucker %s wurde gesendet an entfernten Drucker %s auf %s\n" + +#, c-format +msgid "Output for printer %s is sent to %s\n" +msgstr "Ausgabe für Drucker %s wurde gesendet an %s\n" + +#, c-format +msgid "Output for printer %s/%s is sent to remote printer %s on %s\n" +msgstr "Ausgabe für Drucker %s/%s wurde gesendet an entfernten Drucker %s auf %s\n" + +#, c-format +msgid "Output for printer %s/%s is sent to %s\n" +msgstr "Ausgabe für Drucker %s/%s wurde gesendet an %s\n" + +#, c-format +msgid "device for %s: %s\n" +msgstr "Gerät für %s: %s\n" + +#, c-format +msgid "device for %s/%s: %s\n" +msgstr "Gerät für %s/%s: %s\n" + +#, c-format +msgid "lpstat: get-jobs failed: %s\n" +msgstr "lpstat: get-jobs fehlgeschlagen: %s\n" + +#, c-format +msgid "\tqueued for %s\n" +msgstr "\teingereiht für %s\n" + +#, c-format +msgid "printer %s is idle. enabled since %s\n" +msgstr "Drucker %s ist frei. freigegeben seit %s\n" + +#, c-format +msgid "printer %s now printing %s-%d. enabled since %s\n" +msgstr "Drucker %s druckt gerade %s-%d. freigegeben seit %s\n" + +#, c-format +msgid "printer %s disabled since %s -\n" +msgstr "Drucker %s ist gesperrt seit %s -\n" + +msgid "\treason unknown\n" +msgstr "\tGrund unbekannt\n" + +msgid "" +"\tForm mounted:\n" +"\tContent types: any\n" +"\tPrinter types: unknown\n" +msgstr "" +"\tEingebundenes Formular:\n" +"\tInhaltstypen: keine\n" +"\tDruckertypen: unbekannt\n" + +#, c-format +msgid "\tDescription: %s\n" +msgstr "\tBeschreibung: %s\n" + +msgid "\tAlerts:" +msgstr "\tAlarme:" + +#, c-format +msgid "\tLocation: %s\n" +msgstr "\tOrt: %s\n" + +msgid "\tConnection: remote\n" +msgstr "\tVerbindung: entfernt\n" + +#, c-format +msgid "\tInterface: %s.ppd\n" +msgstr "\tInterface: %s.ppd\n" + +msgid "\tConnection: direct\n" +msgstr "\tVerbindung: direkt\n" + +#, c-format +msgid "\tInterface: %s/interfaces/%s\n" +msgstr "\tInterface: %s/interfaces/%s\n" + +#, c-format +msgid "\tInterface: %s/ppd/%s.ppd\n" +msgstr "\tInterface: %s/ppd/%s.ppd\n" + +msgid "\tOn fault: no alert\n" +msgstr "\tBei Fehlerfall: kein Alarm\n" + +msgid "\tAfter fault: continue\n" +msgstr "\tNach Fehlerfall: fortsetzen\n" + +msgid "\tUsers allowed:\n" +msgstr "\tErlaubte Benutzer:\n" + +msgid "\tUsers denied:\n" +msgstr "\tNicht erlaubte Benutzer:\n" + +msgid "\t\t(all)\n" +msgstr "\t\t(alle)\n" + +msgid "\tForms allowed:\n" +msgstr "\tErlaubte Formulare:\n" + +msgid "\t\t(none)\n" +msgstr "\t\t(keine)\n" + +msgid "\tBanner required\n" +msgstr "\tBanner benötigt\n" + +msgid "\tCharset sets:\n" +msgstr "\tZeichensatzeinstellungen:\n" + +msgid "\tDefault pitch:\n" +msgstr "\tStandard Zeichenabstand:\n" + +msgid "\tDefault page size:\n" +msgstr "\tStandard Seitengröße:\n" + +msgid "\tDefault port settings:\n" +msgstr "\tStandard Porteinstellungen:\n" + +#, c-format +msgid "printer %s/%s is idle. enabled since %s\n" +msgstr "Drucker %s/%s ist frei. freigegeben seit %s\n" + +#, c-format +msgid "printer %s/%s now printing %s-%d. enabled since %s\n" +msgstr "Drucker %s/%s druckt gerade %s-%d. freigegeben seit %s\n" + +#, c-format +msgid "printer %s/%s disabled since %s -\n" +msgstr "Drucker %s/%s gesperrt seit %s -\n" + +msgid "scheduler is running\n" +msgstr "Scheduler läuft\n" + +msgid "scheduler is not running\n" +msgstr "Scheduler läuft nicht\n" + +#, c-format +msgid "lpadmin: Unable to connect to server: %s\n" +msgstr "lpadmin: Kann Server nicht erreichen: %s\n" + +msgid "" +"lpadmin: Unable to add a printer to the class:\n" +" You must specify a printer name first!\n" +msgstr "" +"lpadmin: Kann Drucker nicht zur Klasse hinzufügen:\n" +" Sie müssen zuerst einen Druckernamen angeben!\n" + +msgid "lpadmin: Expected class name after '-c' option!\n" +msgstr "lpadmin: Klassenname wird hinter dem Parameter '-c' erwartet!\n" + +msgid "lpadmin: Class name can only contain printable characters!\n" +msgstr "lpadmin: Klassenname kann nur druckbare Zeichen enthalten!\n" + +msgid "lpadmin: Expected printer name after '-d' option!\n" +msgstr "lpadmin: Druckername wird hinter dem Parameter '-d' erwartet!\n" + +msgid "lpadmin: Printer name can only contain printable characters!\n" +msgstr "lpadmin: Druckername kann nur druckbare Zeichen enthalten!\n" + +msgid "lpadmin: Expected hostname after '-h' option!\n" +msgstr "lpadmin: Hostname wird hinter dem Parameter '-h' erwartet!\n" + +msgid "" +"lpadmin: Unable to set the interface script:\n" +" You must specify a printer name first!\n" +msgstr "" +"lpadmin: Kann Interface Skript nicht festlegen:\n" +" Sie müssen zuerst einen Druckernamen angeben!\n" + +msgid "lpadmin: Expected interface after '-i' option!\n" +msgstr "lpadmin: Interface wird hinter dem Parameter '-i' erwartet!\n" + +msgid "" +"lpadmin: Unable to set the interface script or PPD file:\n" +" You must specify a printer name first!\n" +msgstr "" +"lpadmin: Kann weder Interface Skript noch PPD Datei setzen:\n" +" Sie müssen zuerst einen Druckernamen angeben!\n" + +msgid "lpadmin: Expected model after '-m' option!\n" +msgstr "lpadmin: Modell wird hinter dem Parameter '-m' erwartet!\n" + +msgid "lpadmin: Expected name=value after '-o' option!\n" +msgstr "lpadmin: Name=Wert wird hinter dem Parameter '-o' erwartet!\n" + +msgid "lpadmin: Expected printer after '-p' option!\n" +msgstr "lpadmin: Drucker wird hinter dem Parameter '-p' erwartet!\n" + +msgid "" +"lpadmin: Unable to remove a printer from the class:\n" +" You must specify a printer name first!\n" +msgstr "" +"lpadmin: Kann Drucker nicht aus Klasse entfernen:\n" +" Sie müssen zuerst einen Druckernamen angeben!\n" + +msgid "lpadmin: Expected class after '-r' option!\n" +msgstr "lpadmin: Klasse wird hinter dem Parameter '-r' erwartet!\n" + +msgid "lpadmin: Expected allow/deny:userlist after '-u' option!\n" +msgstr "lpadmin: Benutzerliste für Erlaubt/Verweigert wird nach dem Parameter '-u' erwartet!\n" + +#, c-format +msgid "lpadmin: Unknown allow/deny option \"%s\"!\n" +msgstr "lpadmin: Unbekannter Erlaubt/Verweigert Parameter \"%s\"!\n" + +msgid "" +"lpadmin: Unable to set the device URI:\n" +" You must specify a printer name first!\n" +msgstr "" +"lpadmin: Kann Geräte URI nicht setzen:\n" +" Sie müssen zuerst einen Druckernamen angeben!\n" + +msgid "lpadmin: Expected device URI after '-v' option!\n" +msgstr "lpadmin: Erwarte Geräte URI hinter dem Parameter '-v'!\n" + +msgid "lpadmin: Expected printer or class after '-x' option!\n" +msgstr "lpadmin: Drucker oder Klasse wird hinter dem Parameter '-x' erwartet!\n" + +msgid "" +"lpadmin: Unable to set the printer description:\n" +" You must specify a printer name first!\n" +msgstr "" +"lpadmin: Kann Druckerbeschreibung nicht setzen:\n" +" Sie müssen zuerst einen Druckernamen angeben!\n" + +msgid "lpadmin: Expected description after '-D' option!\n" +msgstr "lpadmin: Beschreibung wird hinter dem Parameter '-D' erwartet!\n" + +msgid "lpadmin: Expected file type(s) after '-I' option!\n" +msgstr "lpadmin: Dateityp(en) wird bzw. werden hinter dem Parameter '-I' erwartet!\n" + +msgid "lpadmin: Warning - content type list ignored!\n" +msgstr "lpadmin: Warnung - Datentypliste ignoriert!\n" + +msgid "" +"lpadmin: Unable to set the printer location:\n" +" You must specify a printer name first!\n" +msgstr "" +"lpadmin: Kann Druckeraufstellort nicht setzen:\n" +" Sie müssen zuerst einen Druckernamen angeben!\n" + +msgid "lpadmin: Expected location after '-L' option!\n" +msgstr "lpadmin: Ortsangabe wird hinter dem Parameter '-L' erwartet!\n" + +msgid "" +"lpadmin: Unable to set the PPD file:\n" +" You must specify a printer name first!\n" +msgstr "" +"lpadmin: Kann PPD Datei nicht setzen:\n" +" Sie müssen zuerst einen Druckernamen angeben!\n" + +msgid "lpadmin: Expected PPD after '-P' option!\n" +msgstr "lpadmin: PPD wird hinter dem Parameter '-P' erwartet!\n" + +#, c-format +msgid "lpadmin: Unknown option '%c'!\n" +msgstr "lpadmin: Unbekannter Parameter '%c'!\n" + +#, c-format +msgid "lpadmin: Unknown argument '%s'!\n" +msgstr "lpadmin: Unbekanntes Argument '%s'!\n" + +msgid "" +"lpadmin: Unable to set the printer options:\n" +" You must specify a printer name first!\n" +msgstr "" +"lpadmin: Kann Druckereinstellungen nicht setzen:\n" +" Sie müssen zuerst einen Druckernamen angeben!\n" + +msgid "" +"Usage:\n" +"\n" +" lpadmin [-h server] -d destination\n" +" lpadmin [-h server] -x destination\n" +" lpadmin [-h server] -p printer [-c add-class] [-i interface] [-m model]\n" +" [-r remove-class] [-v device] [-D description]\n" +" [-P ppd-file] [-o name=value]\n" +" [-u allow:user,user] [-u deny:user,user]\n" +"\n" +msgstr "" +"Benutzung:\n" +"\n" +" lpadmin [-h Server] -d Ziel\n" +" lpadmin [-h Server] -x Ziel\n" +" lpadmin [-h Server] -p Drucker [-c hinzuzufügende-Klasse] [-i Interface] [-m Modell]\n" +" [-r zu-löschende-Klasse] [-v Gerät] [-D Beschreibung]\n" +" [-P PPD-Datei] [-o Name=Wert]\n" +" [-u allow:Benutzer,Benutzer] [-u deny:Benutzer,Benutzer]\n" +"\n" + +#, c-format +msgid "lpadmin: Unable to create temporary file: %s\n" +msgstr "lpadmin: Kann temporäre Datei nicht erstellen: %s\n" + +#, c-format +msgid "lpadmin: Unable to open file \"%s\": %s\n" +msgstr "lpadmin: Kann temporäre Datei \"%s\" nicht öffnen: %s\n" + +#, c-format +msgid "lpadmin: add-printer (set model) failed: %s\n" +msgstr "lpadmin: add-printer (Setzen des Modells) fehlgeschlagen: %s\n" + +#, c-format +msgid "lpadmin: add-printer (set description) failed: %s\n" +msgstr "lpadmin: Drucker hinzufügen (Setzen der Beschreibung) fehlgeschlagen: %s\n" + +#, c-format +msgid "lpadmin: add-printer (set location) failed: %s\n" +msgstr "lpadmin: Drucker hinzufügen (Setzen des Ortes) fehlgeschlagen: %s\n" + +#, c-format +msgid "lpadmin: Unable to create temporary file - %s\n" +msgstr "lpadmin: Kann temporäre Datei nicht erstellen - %s\n" + +#, c-format +msgid "lpadmin: Unable to open PPD file \"%s\" - %s\n" +msgstr "lpadmin: Kann PPD Datei \"%s\" nicht öffnen - %s\n" + +#, c-format +msgid "lpadmin: %s failed: %s\n" +msgstr "lpadmin: %s fehlgeschlagen: %s\n" + +msgid "lp: Expected destination after -d option!\n" +msgstr "lp: Ziel wird hinter dem Parameter -d erwartet!\n" + +msgid "lp: Expected form after -f option!\n" +msgstr "lp: Formular wird hinter dem Parameter -f erwartet!\n" + +msgid "lp: Expected hostname after -h option!\n" +msgstr "lp: Hostname wird hinter dem Parameter -h erwartet!\n" + +msgid "lp: Expected job ID after -i option!\n" +msgstr "lp: Auftrags ID wird hinter dem Parameter -i erwartet!\n" + +msgid "lp: Error - cannot print files and alter jobs simultaneously!\n" +msgstr "lp: Fehler - Kann nicht gleichzeitig Dateien drucken und Aufträge abändern!\n" + +msgid "lp: Error - bad job ID!\n" +msgstr "lp: Fehler - Falsche Auftrags ID!\n" + +msgid "lp: Expected copies after -n option!\n" +msgstr "lp: Kopienanzahl wird hinter dem Parameter -n erwartet!\n" + +msgid "lp: Expected option string after -o option!\n" +msgstr "lp: Parameterzeichenkette wird hinter dem Parameter -o erwartet!\n" + +#, c-format +msgid "lp: Expected priority after -%c option!\n" +msgstr "lp: Priorität wird hinter dem Parameter -%c erwartet!\n" + +msgid "lp: Priority must be between 1 and 100.\n" +msgstr "lp: Priorität muss zwischen 1 und 100 sein.\n" + +msgid "lp: Expected title after -t option!\n" +msgstr "lp: Titel wird hinter dem Parameter -t erwartet!\n" + +msgid "lp: Expected mode list after -y option!\n" +msgstr "lp: Modusliste hinter dem Parameter -y erwartet!\n" + +msgid "lp: Warning - mode option ignored!\n" +msgstr "lp: Warnung - Parameter für Modus ignoriert!\n" + +msgid "lp: Expected hold name after -H option!\n" +msgstr "lp: Haltebezeichner wird hinter dem Parameter -H erwartet!\n" + +msgid "lp: Need job ID (-i) before \"-H restart\"!\n" +msgstr "lp: Brauche Auftrags ID (-i) vor \"-H restart\"!\n" + +msgid "lp: Expected page list after -P option!\n" +msgstr "lp: Seitenliste wird hinter dem Parameter -P erwartet!\n" + +msgid "lp: Expected character set after -S option!\n" +msgstr "lp: Zeichensatz wird hinter dem Parameter -S erwartet!\n" + +msgid "lp: Warning - character set option ignored!\n" +msgstr "lp: Warnung - Parameter für Zeichnsatz wird ignoriert!\n" + +msgid "lp: Expected content type after -T option!\n" +msgstr "lp: Inhaltstyp hinter dem Parameter -T erwartet!\n" + +msgid "lp: Warning - content type option ignored!\n" +msgstr "lp: Warnung - Parameter für Inhaltstyp ignoriert!\n" + +#, c-format +msgid "lp: Unknown option '%c'!\n" +msgstr "lp: Unbekannter Parameter '%c'!\n" + +msgid "lp: Error - cannot print from stdin if files or a job ID are provided!\n" +msgstr "lp: Fehler - Kann nicht von stdin drucken wenn Dateien oder eine Auftrags ID übergeben wurde!\n" + +#, c-format +msgid "lp: Unable to access \"%s\" - %s\n" +msgstr "lp: Zugriff auf \"%s\" nicht möglich - %s\n" + +#, c-format +msgid "lp: Too many files - \"%s\"\n" +msgstr "lp: Zu viele Dateien - \"%s\"\n" + +msgid "lp: error - no default destination available.\n" +msgstr "lp: Fehler - Kein Standardziel vorhanden.\n" + +msgid "lp: error - scheduler not responding!\n" +msgstr "lp: Fehler - Scheduler antwortet nicht!\n" + +#, c-format +msgid "lp: unable to create temporary file \"%s\" - %s\n" +msgstr "lp: Kann temporäre Datei \"%s\" nicht erstellen - %s\n" + +#, c-format +msgid "lp: error - unable to write to temporary file \"%s\" - %s\n" +msgstr "lp: Fehler - Kann nicht in temporäre Datei \"%s\" schreiben - %s\n" + +msgid "lp: stdin is empty, so no job has been sent.\n" +msgstr "lp: stdin ist leer, somit wurde kein Auftrag gesendet.\n" + +#, c-format +msgid "lp: unable to print file: %s\n" +msgstr "lp: Kann Datei nicht drucken: %s\n" + +#, c-format +msgid "request id is %s-%d (%d file(s))\n" +msgstr "Auftrags ID ist %s-%d (%d Datei(en))\n" + +#, c-format +msgid "lp: restart-job failed: %s\n" +msgstr "lp: restart-job fehlgeschlagen: %s\n" + +#, c-format +msgid "lp: set-job-attributes failed: %s\n" +msgstr "lp: set-job-attributes fehlgeschlagen: %s\n" + +#, c-format +msgid "lpinfo: Unable to connect to server: %s\n" +msgstr "lpinfo: Kann Server nicht erreichen: %s\n" + +#, c-format +msgid "lpinfo: Unknown option '%c'!\n" +msgstr "lpinfo: Unbekannter Parameter '%c'!\n" + +#, c-format +msgid "lpinfo: Unknown argument '%s'!\n" +msgstr "lpinfo: Unbekanntes Argument '%s'!\n" + +#, c-format +msgid "lpinfo: cups-get-devices failed: %s\n" +msgstr "lpinfo: cups-get-devices fehlgeschlagen: %s\n" + +#, c-format +msgid "" +"Device: uri = %s\n" +" class = %s\n" +" info = %s\n" +" make-and-model = %s\n" +msgstr "" +"Gerät: uri = %s\n" +" class = %s\n" +" info = %s\n" +" make-and-model = %s\n" + +#, c-format +msgid "lpinfo: cups-get-ppds failed: %s\n" +msgstr "lpinfo: cups-get-ppds fehlgeschlagen: %s\n" + +#, c-format +msgid "" +"Model: name = %s\n" +" natural_language = %s\n" +" make-and-model = %s\n" +msgstr "" +"Modell: name = %s\n" +" natural_language = %s\n" +" make-and-model = %s\n" + +#, c-format +msgid "lpmove: Unknown option '%c'!\n" +msgstr "lpmove: Unbekannter Parameter '%c'!\n" + +#, c-format +msgid "lpmove: Unknown argument '%s'!\n" +msgstr "lpmove: Unbekanntes Argument '%s'!\n" + +msgid "Usage: lpmove job dest\n" +msgstr "Benutzung: lpmove Auftrag Ziel\n" + +#, c-format +msgid "lpmove: Unable to connect to server: %s\n" +msgstr "lpmove: Kann Server nicht erreichen: %s\n" + +#, c-format +msgid "lpmove: move-job failed: %s\n" +msgstr "lpmove: move-job fehlgeschlagen: %s\n" + +msgid "lpoptions: Unknown printer or class!\n" +msgstr "lpoptions: Unbekannter Drucker oder Klasse!\n" + +msgid "lpoptions: No printers!?!\n" +msgstr "lpoptions: Keine Drucker!?!\n" + +#, c-format +msgid "lpoptions: Unable to add printer or instance: %s\n" +msgstr "lpoptions: Kann Drucker oder Instanz nicht hinzufügen: %s\n" + +#, c-format +msgid "lpoptions: Destination %s has no PPD file!\n" +msgstr "lpoptions: Ziel %s hat keine PPD Datei!\n" + +#, c-format +msgid "lpoptions: Unable to open PPD file for %s!\n" +msgstr "lpoptions: Kann PPD für %s nicht öffnen!\n" + +msgid "" +"Usage: lpoptions [-h server] [-E] -d printer\n" +" lpoptions [-h server] [-E] [-p printer] -l\n" +" lpoptions [-h server] [-E] -p printer -o option[=value] ...\n" +" lpoptions [-h server] [-E] -x printer\n" +msgstr "" +"Benutzung: lpoptions [-h Server] [-E] -d Drucker\n" +" lpoptions [-h Server] [-E] [-p Drucker] -l\n" +" lpoptions [-h Server] [-E] -p Drucker -o Parameter[=Wert] ...\n" +" lpoptions [-h Server] [-E] -x Drucker\n" + +msgid "lppasswd: Only root can add or delete passwords!\n" +msgstr "lppasswd: Nur root kann Passwörter hinzufügen oder löschen!\n" + +msgid "Enter old password:" +msgstr "Altes Passwort eingeben:" + +#, c-format +msgid "lppasswd: Unable to copy password string: %s\n" +msgstr "lppasswd: Kann Passwort nicht kopieren: %s\n" + +msgid "Enter password:" +msgstr "Passwort eingeben:" + +msgid "Enter password again:" +msgstr "Passwort nochmal eingeben:" + +msgid "lppasswd: Sorry, passwords don't match!\n" +msgstr "lppasswd: Bedaure, Passwörter stimmen nicht überein!\n" + +msgid "" +"lppasswd: Sorry, password rejected.\n" +"Your password must be at least 6 characters long, cannot contain\n" +"your username, and must contain at least one letter and number.\n" +msgstr "" +"lppasswd: Bedaure, Passwort zurückgewiesen.\n" +"Ihr Passwort muss zumindest 6 Zeichen lang sein, darf nicht den Benutzernamen\n" +"enthalten, und muss mindestens einen Buchstaben und eine Zahl enthalten.\n" + +msgid "lppasswd: Password file busy!\n" +msgstr "lppasswd: Passwortdatei in Verwendung!\n" + +#, c-format +msgid "lppasswd: Unable to open password file: %s\n" +msgstr "lppasswd: Kann Passwortdatei nicht öffnen: %s\n" + +#, c-format +msgid "lppasswd: Unable to write to password file: %s\n" +msgstr "lppasswd: Kann nicht in die Passwortdatei schreiben: %s\n" + +#, c-format +msgid "lppasswd: user \"%s\" and group \"%s\" do not exist.\n" +msgstr "lppasswd: Benutzer \"%s\" und Gruppe \"%s\" existieren nicht.\n" + +msgid "lppasswd: Sorry, password doesn't match!\n" +msgstr "lppasswd: Bedaure, Passwort stimmt nicht überein!\n" + +msgid "lppasswd: Password file not updated!\n" +msgstr "lppasswd: Passwortdatei wurde nicht aktualisiert!\n" + +#, c-format +msgid "lppasswd: failed to backup old password file: %s\n" +msgstr "lppasswd: Konnte alte Passwortdatei nicht sichern: %s\n" + +#, c-format +msgid "lppasswd: failed to rename password file: %s\n" +msgstr "lppasswd: Konnte Passwortdatei nicht umbenennen: %s\n" + +msgid "Usage: lppasswd [-g groupname]\n" +msgstr "Benutzung: lppasswd [-g Gruppenname]\n" + +msgid "" +"Usage: lppasswd [-g groupname] [username]\n" +" lppasswd [-g groupname] -a [username]\n" +" lppasswd [-g groupname] -x [username]\n" +msgstr "" +"Benutzung: lppasswd [-g Gruppenname] [Benutzername]\n" +" lppasswd [-g Gruppenname] -a [Benutzername]\n" +" lppasswd [-g Gruppenname] -x [Benutzername]\n" + +msgid "Start Printer" +msgstr "Starte Drucker" + +msgid "Stop Printer" +msgstr "Stoppe Drucker" + +msgid "Start Class" +msgstr "Starte Klasse" + +msgid "Stop Class" +msgstr "Stoppe Klasse" + +msgid "Accept Jobs" +msgstr "Akzeptiere Aufträge" + +msgid "Reject Jobs" +msgstr "Aufträge ablehnen" + +msgid "Purge Jobs" +msgstr "Eliminiere Aufträge" + +msgid "Set As Default" +msgstr "Setze als Standard" + +msgid "Administration" +msgstr "Verwaltung" + +msgid "Modify Class" +msgstr "Klasse ändern" + +msgid "Add Class" +msgstr "Klasse hinzufügen" + +msgid "The class name may only contain up to 127 printable characters and may not contain spaces, slashes (/), or the pound sign (#)." +msgstr "Der Klassenname darf nur bis zu 127 druckbare Zeichen und keine Leerzeichen, Slashes (/), oder das Rautezeichen (#) enthalten." + +msgid "Unable to modify class:" +msgstr "Kann Klasse nicht ändern:" + +msgid "Unable to add class:" +msgstr "Kann Klasse nicht hinzufügen:" + +msgid "Modify Printer" +msgstr "Drucker ändern" + +msgid "Add Printer" +msgstr "Drucker hinzufügen" + +msgid "The printer name may only contain up to 127 printable characters and may not contain spaces, slashes (/), or the pound sign (#)." +msgstr "Der Druckername darf nur bis zu 127 druckbare Zeichen und keine Leerzeichen, Slashes (/), oder das Rautezeichen (#) enthalten." + +msgid "Unable to get list of printer drivers:" +msgstr "Holen der Druckertreiberliste nicht möglich:" + +msgid "Unable to modify printer:" +msgstr "Kann Drucker nicht ändern:" + +msgid "Unable to add printer:" +msgstr "Kann Drucker nicht hinzufügen:" + +msgid "Set Printer Options" +msgstr "Druckereinstellugen setzen" + +msgid "Missing form variable!" +msgstr "Vermisse Formularvariable!" + +msgid "Unable to get PPD file!" +msgstr "Kann PPD Datei nicht holen!" + +msgid "Unable to open PPD file:" +msgstr "Kann PPD Datei nicht öffnen:" + +msgid "Banners" +msgstr "Banner" + +msgid "Starting Banner" +msgstr "Startbanner" + +msgid "Ending Banner" +msgstr "Endbanner" + +msgid "Policies" +msgstr "Richtlinien" + +msgid "Error Policy" +msgstr "Fehlerrichtlinie" + +msgid "Operation Policy" +msgstr "Betriebsrichtlinie" + +msgid "PS Binary Protocol" +msgstr "PS Binärprotokoll" + +msgid "None" +msgstr "Kein(e)" + +msgid "Unable to set options:" +msgstr "Kann Parameter nicht setzen:" + +msgid "Change Settings" +msgstr "Konfiguration ändern" + +msgid "Unable to change server settings:" +msgstr "Kann Servereinstellungen nicht ändern:" + +msgid "Unable to upload cupsd.conf file:" +msgstr "Kann die Datei cupsd.conf nicht hochladen:" + +msgid "Edit Configuration File" +msgstr "Bearbeite Konfigurationsdatei" + +msgid "Unable to create temporary file:" +msgstr "Kann temporäre Datei nicht erstellen:" + +msgid "Unable to access cupsd.conf file:" +msgstr "Kann auf die Datei cupsd.conf nicht zugreifen:" + +msgid "Unable to edit cupsd.conf files larger than 1MB!" +msgstr "Kann cupsd.conf Dateien größer als 1MB nicht bearbeiten!" + +msgid "Delete Class" +msgstr "Lösche Klasse" + +msgid "Unable to delete class:" +msgstr "Kann Klasse nicht löschen:" + +msgid "Delete Printer" +msgstr "Lösche Drucker" + +msgid "Unable to delete printer:" +msgstr "Kann Drucker nicht löschen:" + +msgid "Export Printers to Samba" +msgstr "Drucker für Samba bereitstellen" + +msgid "Unable to fork process!" +msgstr "Kann Prozess nicht forken!" + +msgid "Unable to connect to server!" +msgstr "Kann Server nicht erreichen!" + +msgid "Unable to get printer attributes!" +msgstr "Kann Druckereigenschaften nicht holen!" + +msgid "Unable to convert PPD file!" +msgstr "Kann PPD Datei nicht konvertieren!" + +msgid "Unable to copy Windows 2000 printer driver files!" +msgstr "Kann Windows 2000 Druckertreiberdateien nicht kopieren!" + +msgid "Unable to install Windows 2000 printer driver files!" +msgstr "Kann Windows 2000 Druckertreiberdateien nicht installieren!" + +msgid "Unable to copy Windows 9x printer driver files!" +msgstr "Kann Windows 9x Druckertreiberdateien nicht kopieren!" + +msgid "Unable to install Windows 9x printer driver files!" +msgstr "Kann Windows 9x Druckertreiberdateien nicht installieren!" + +msgid "Unable to set Windows printer driver!" +msgstr "Kann Windows Druckertreiber nicht festlegen!" + +msgid "No printer drivers found!" +msgstr "Keine Druckertreiber gefunden!" + +msgid "Unable to execute cupsaddsmb command!" +msgstr "Kann Befehl cupsaddsmb nicht ausführen!" + +#, c-format +msgid "cupsaddsmb failed with status %d" +msgstr "cupsaddsmb fehlgeschlagen mit Status %d" + +#, c-format +msgid "cupsaddsmb crashed on signal %d" +msgstr "cupsaddsmb abgestürzt mit Signal %d" + +msgid "A Samba username is required to export printer drivers!" +msgstr "Ein Samba Benutzername wird benötigt um Drucker für Samba bereitzustellen!" + +msgid "A Samba password is required to export printer drivers!" +msgstr "Ein Samba Passwort wird benötigt um Druckertreiber bereitzustellen!" + +msgid "Unable to open cupsd.conf file:" +msgstr "Kann die Datei cupsd.conf nicht öffnen:" + +msgid "Unable to change printer:" +msgstr "Kann Drucker nicht ändern:" + +msgid "Set Allowed Users" +msgstr "Erlaubte Benutzer festlegen:" + +msgid "Unable to get printer attributes:" +msgstr "Kann Druckereigenschaften nicht holen:" + +msgid "Set Publishing" +msgstr "Veröffentlichung setzen" + +msgid "Unable to change printer-is-shared attribute:" +msgstr "Kann die Eigenschaft printer-is-shared nicht ändern:" + +msgid "Classes" +msgstr "Klassen" + +msgid "Unable to get class list:" +msgstr "Kann Klassenliste nicht holen:" + +msgid "Unable to get class status:" +msgstr "Kann Klassenstatus nicht holen:" + +msgid "Move Job" +msgstr "Verschiebe Auftrag" + +msgid "Unable to find destination for job!" +msgstr "Kann das Ziel für den Auftrag nicht ermitteln!" + +msgid "Move All Jobs" +msgstr "Verschiebe alle Aufträge" + +msgid "Unable to move job" +msgstr "Kann Auftrag nicht verschieben" + +msgid "Unable to move jobs" +msgstr "Kann Aufträge nicht verschieben" + +msgid "Print Test Page" +msgstr "Drucke Testseite" + +msgid "Unable to print test page:" +msgstr "Kann Testseite nicht drucken:" + +msgid "Jobs" +msgstr "Aufträge" + +msgid "Job operation failed:" +msgstr "Auftragsdurchführung fehlgeschlagen:" + +msgid "Printers" +msgstr "Drucker" + +msgid "Unable to get printer list:" +msgstr "Kann Druckerliste nicht holen:" + +msgid "Unable to get printer status:" +msgstr "Kann Druckerstatus nicht holen:" + +msgid "OK" +msgstr "OK" + +msgid "Unable to open PPD file" +msgstr "Kann PPD Datei nicht öffnen" + +msgid "NULL PPD file pointer" +msgstr "Zeiger für PPD Datei ist NULL" + +msgid "Memory allocation error" +msgstr "Speicherreservierungsfehler" + +msgid "Missing PPD-Adobe-4.x header" +msgstr "Vermisse PPD-Adobe-4.x header" + +msgid "Missing value string" +msgstr "Vermisse Zeichenkette für Wert" + +msgid "Internal error" +msgstr "Interner Fehler" + +msgid "Bad OpenGroup" +msgstr "Falsche OpenGroup-Angabe" + +msgid "OpenGroup without a CloseGroup first" +msgstr "OpenGroup ohne vorheriges CloseGroup" + +msgid "Bad OpenUI/JCLOpenUI" +msgstr "Falsche OpenUI/JCLOpenUI-Angabe" + +msgid "OpenUI/JCLOpenUI without a CloseUI/JCLCloseUI first" +msgstr "OpenUI/JCLOpenUI ohne vorheriges CloseUI/JCLCloseUI" + +msgid "Bad OrderDependency" +msgstr "Falsche OrderDependency-Angabe" + +msgid "Bad UIConstraints" +msgstr "Falsche UIConstraints-Angabe" + +msgid "Missing asterisk in column 1" +msgstr "Vermisse Stern in Zeile 1" + +msgid "Line longer than the maximum allowed (255 characters)" +msgstr "Zeile ist länger als maximal erlaubt (255 Zeichen)" + +msgid "Illegal control character" +msgstr "Ungültiges Steuerzeichen" + +msgid "Illegal main keyword string" +msgstr "Ungültige Zeichenkette für Hauptschlüsselwort" + +msgid "Illegal option keyword string" +msgstr "Ungültige Zeichenkette für Eigenschafts-Schlüsselwort" + +msgid "Illegal translation string" +msgstr "Ungültige Übersetzungszeichenkette" + +# Whitespace. Tab, Space, CR... +msgid "Illegal whitespace character" +msgstr "Ungültiges Whitespace-Zeichen" + +msgid "Bad custom parameter" +msgstr "Falscher benutzerspezifischer Parameter" + +msgid "Unknown" +msgstr "Unbekannt" + +msgid "Custom" +msgstr "Benutzerspezifisch" + +msgid "JCL" +msgstr "JCL" + +msgid "No authentication information provided!" +msgstr "Keine Authentifizierungsinformationen übergeben!" + +#, c-format +msgid "Password for %s required to access %s via SAMBA: " +msgstr "Passwort für %s benötigt um auf %s via SAMBA zugreifen zu können." + +#, c-format +msgid "Running command: %s %s -N -U '%s%%%s' -c '%s'\n" +msgstr "Befehl wird ausgeführt: %s %s -N -U '%s%%%s' -c '%s'\n" + +#, c-format +msgid "cupsaddsmb: Unable to run \"%s\": %s\n" +msgstr "cupsaddsmb: Kann \"%s\" nicht ausführen: %s\n" + +msgid "cupsaddsmb: No Windows printer drivers are installed!\n" +msgstr "cupsaddsmb: Keine Windows Druckertreiber installiert!\n" + +msgid "cupsaddsmb: Warning, no Windows 2000 printer drivers are installed!\n" +msgstr "cupsaddsmb: Warnung, keine Windows 2000 Druckertreiber installiert!\n" + +#, c-format +msgid "lpadmin: Printer %s is already a member of class %s.\n" +msgstr "lpadmin: Drucker %s ist bereits Mitglied der Klasse %s.\n" + +msgid "lpadmin: No member names were seen!\n" +msgstr "lpadmin: Keine Mitgliedernamen gesehen!\n" + +#, c-format +msgid "lpadmin: Printer %s is not a member of class %s.\n" +msgstr "lpadmin: Drucker %s ist kein Mitglied der Klasse %s.\n" + +#, c-format +msgid "" +"Device: uri = %s\n" +" class = %s\n" +" info = %s\n" +" make-and-model = %s\n" +" device-id = %s\n" +msgstr "" +"Gerät: uri = %s\n" +" class = %s\n" +" info = %s\n" +" make-and-model = %s\n" +" device-id = %s\n" + +#, c-format +msgid "" +"Model: name = %s\n" +" natural_language = %s\n" +" make-and-model = %s\n" +" device-id = %s\n" +msgstr "" +"Modell: Name = %s\n" +" natural_language = %s\n" +" make-and-model = %s\n" +" device-id = %s\n" + +msgid "Usage: lpmove job/src dest\n" +msgstr "Benutzung: lpmove Auftrag/Quelle Ziel\n" + +msgid "lpstat: Need \"completed\", \"not-completed\", or \"all\" after -W!\n" +msgstr "lpstat: Brauche \"completed\", \"not-completed\", oder \"all\" hinter dem Parameter -W!\n" + +#, c-format +msgid "%s accepting requests since %s\n" +msgstr "%s akzeptiert Anfragen seit %s\n" + +#, c-format +msgid "" +"%s not accepting requests since %s -\n" +"\t%s\n" +msgstr "" +"%s akzeptiert keine Anfragen seit %s -\n" +"\t%s\n" + +#, c-format +msgid "%s/%s accepting requests since %s\n" +msgstr "%s/%s akzeptiert Anfragen seit %s\n" + +#, c-format +msgid "" +"%s/%s not accepting requests since %s -\n" +"\t%s\n" +msgstr "" +"%s/%s akzeptiert keine Anfragen seit %s -\n" +"\t%s\n" + +msgid "lpc> " +msgstr "lpc> " + +#, c-format +msgid "%s: Unable to contact server!\n" +msgstr "%s: Kann Server nicht erreichen!\n" + +#, c-format +msgid "%s: Error - expected username after '-U' option!\n" +msgstr "%s: Fehler - Benutzername wird hinter dem Parameter '-U' erwartet!\n" + +#, c-format +msgid "%s: Error - unknown destination \"%s/%s\"!\n" +msgstr "%s: Fehler - Unbekanntes Ziel \"%s/%s\"!\n" + +#, c-format +msgid "%s: Unknown destination \"%s\"!\n" +msgstr "%s: Unbekanntes Ziel \"%s\"!\n" + +#, c-format +msgid "%s: Error - expected hostname after '-h' option!\n" +msgstr "%s: Fehler - Hostname wird hinter dem Parameter '-h' erwartet!\n" + +#, c-format +msgid "%s: error - %s environment variable names non-existent destination \"%s\"!\n" +msgstr "%s: Fehler - Die Umgebungsvariable %s enthält das nicht existierende Ziel \"%s\"!\n" + +#, c-format +msgid "%s: error - no default destination available.\n" +msgstr "%s: Fehler - Kein Standardziel verfügbar.\n" + +msgid "Usage: lpq [-P dest] [-U username] [-h hostname[:port]] [-l] [+interval]\n" +msgstr "Benutzung: lpq [-P Ziel] [-U Benutzername] [-h Hostname[:Port]] [-l] [+Intervall]\n" + +#, c-format +msgid "%s: Error - expected hostname after '-H' option!\n" +msgstr "%s: Fehler - Hostname wird hinter dem Parameter '-H' erwartet!\n" + +#, c-format +msgid "%s: Error - expected value after '-%c' option!\n" +msgstr "%s: Fehler - Wert wird hinter dem Paramter '-%c' erwartet!\n" + +#, c-format +msgid "%s: Warning - '%c' format modifier not supported - output may not be correct!\n" +msgstr "%s: Warnung - Formatangabe '%c' nicht unterstützt - Ausgabe ist möglicherweise falsch!\n" + +#, c-format +msgid "%s: error - expected option=value after '-o' option!\n" +msgstr "%s: Fehler - Parameter=Wert wird hinter dem Parameter '-o' erwartet!\n" + +#, c-format +msgid "%s: Error - expected destination after '-P' option!\n" +msgstr "%s: Fehler - Ziel wird hinter dem Parameter '-P' erwartet!\n" + +#, c-format +msgid "%s: Error - expected copy count after '-#' option!\n" +msgstr "%s: Fehler - Kopienanzahl wird hinter dem Parameter '-#' erwartet!\n" + +#, c-format +msgid "%s: Error - expected name after '-%c' option!\n" +msgstr "%s: Fehler - Name wird hinter dem Paramter '-%c' erwartet!\n" + +#, c-format +msgid "%s: Error - unknown option '%c'!\n" +msgstr "%s: Fehler - Unbekannter Parameter '%c'!\n" + +#, c-format +msgid "%s: Error - unable to access \"%s\" - %s\n" +msgstr "%s: Fehler - Kann auf \"%s\" nicht zugreifen - %s\n" + +#, c-format +msgid "%s: Error - too many files - \"%s\"\n" +msgstr "%s: Fehler - Zu viele Dateien - \"%s\"\n" + +#, c-format +msgid "%s: Error - %s environment variable names non-existent destination \"%s\"!\n" +msgstr "%s: Fehler - Die Umgebungsvariable %s enthält das nicht existierende Ziel \"%s\"!\n" + +#, c-format +msgid "%s: Error - no default destination available.\n" +msgstr "%s: Fehler - Kein Standardziel verfügbar.\n" + +#, c-format +msgid "%s: Error - scheduler not responding!\n" +msgstr "%s: Fehler - Scheduler antwortet nicht!\n" + +#, c-format +msgid "%s: Error - unable to create temporary file \"%s\" - %s\n" +msgstr "%s: Fehler - Kann die temporäre Datei \"%s\" nicht erzeugen - %s\n" + +#, c-format +msgid "%s: Error - unable to write to temporary file \"%s\" - %s\n" +msgstr "%s: Fehler - Kann nicht in die temporäre Datei \"%s\" schreiben - %s\n" + +#, c-format +msgid "%s: Error - stdin is empty, so no job has been sent.\n" +msgstr "%s: Fehler - stdin ist leer, somit wurde kein Auftrag gesendet.\n" + +#, c-format +msgid "%s: Error - unknown destination \"%s\"!\n" +msgstr "%s: Fehler - unbekanntes Ziel \"%s\"!\n" + +#, c-format +msgid "%s: Error - expected reason text after '-r' option!\n" +msgstr "%s: Fehler - Begründungstext wird hinter dem Parameter '-r' erwartet!\n" + +#, c-format +msgid "%s: Error - expected username after '-u' option!\n" +msgstr "%s: Fehler - Benutzernamen wird hinter dem Parameter '-u' erwartet!\n" + +#, c-format +msgid "%s: %s failed: %s\n" +msgstr "%s: %s fehlgeschlagen: %s\n" + +#, c-format +msgid "%s: Error - expected destination after '-d' option!\n" +msgstr "%s: Fehler - Ziel wird hinter dem Parameter '-d' erwartet!\n" + +#, c-format +msgid "%s: Error - expected form after '-f' option!\n" +msgstr "%s: Fehler - Formular wird hinter dem Parameter '-f' erwartet!\n" + +#, c-format +msgid "%s: Warning - form option ignored!\n" +msgstr "%s: Warnung - Parameter für Formular ignoriert!\n" + +#, c-format +msgid "%s: Expected job ID after '-i' option!\n" +msgstr "%s: Auftrags ID wird hinter dem Parameter '-i' erwartet!\n" + +#, c-format +msgid "%s: Error - cannot print files and alter jobs simultaneously!\n" +msgstr "%s: Fehler - Kann nicht gleichzeitig Dateien drucken und Aufträge abändern!\n" + +#, c-format +msgid "%s: Error - bad job ID!\n" +msgstr "%s: Fehler - Falsche Auftrags ID!\n" + +#, c-format +msgid "%s: Error - expected copies after '-n' option!\n" +msgstr "%s: Fehler - Kopienanzahl wird hinter dem Parameter '-n' erwartet!\n" + +#, c-format +msgid "%s: Error - expected option string after '-o' option!\n" +msgstr "%s: Fehler - Zeichenkette mit Parametern wird hinter dem Parameter '-o' erwartet!\n" + +#, c-format +msgid "%s: Error - expected priority after '-%c' option!\n" +msgstr "%s: Fehler - Priorität wird hinter dem Parameter '-%c' erwartet!\n" + +#, c-format +msgid "%s: Error - priority must be between 1 and 100.\n" +msgstr "%s: Fehler - Priorität muss zwischen 1 und 100 sein.\n" + +#, c-format +msgid "%s: Error - expected title after '-t' option!\n" +msgstr "%s: Fehler - Titel wird hinter dem Parameter '-t' erwartet!\n" + +#, c-format +msgid "%s: Error - expected mode list after '-y' option!\n" +msgstr "%s: Fehler - Modusliste wird hinter dem Parameter '-y' erwartet!\n" + +#, c-format +msgid "%s: Warning - mode option ignored!\n" +msgstr "%s: Warnung - Modusangabe ignoriert!\n" + +#, c-format +msgid "%s: Error - expected hold name after '-H' option!\n" +msgstr "%s: Fehler - Haltebezeichnung wird hinter dem Parameter '-H' erwartet!\n" + +#, c-format +msgid "%s: Need job ID ('-i jobid') before '-H restart'!\n" +msgstr "%s: Brauche Auftrags ID ('-i jobid') vor '-H restart'!\n" + +#, c-format +msgid "%s: Error - expected page list after '-P' option!\n" +msgstr "%s: Fehler - Seitenliste wird hinter dem Paramter '-P' erwartet!\n" + +#, c-format +msgid "%s: Error - expected character set after '-S' option!\n" +msgstr "%s: Fehler - Zeichensatz wird hinter dem Paramter '-S' erwartet!\n" + +#, c-format +msgid "%s: Warning - character set option ignored!\n" +msgstr "%s: Warnung - Zeichensatzangabe ignoriert!\n" + +#, c-format +msgid "%s: Error - expected content type after '-T' option!\n" +msgstr "%s: Fehler - Inhaltstyp hinter dem Parameter '-T' erwartet!\n" + +#, c-format +msgid "%s: Warning - content type option ignored!\n" +msgstr "%s: Warnung - Parameter für Inhaltstyp ignoriert!\n" + +#, c-format +msgid "%s: Error - cannot print from stdin if files or a job ID are provided!\n" +msgstr "%s: Fehler - Kann nicht von stdin drucken wenn Dateien oder eine Autrags ID übergeben wurde!\n" + +#, c-format +msgid "%s: Error - need \"completed\", \"not-completed\", or \"all\" after '-W' option!\n" +msgstr "%s: Fehler - Brauche \"completed\", \"not-completed\", oder \"all\" hinter dem Parameter '-W'!\n" + +#, c-format +msgid "%s: Error - expected destination after '-b' option!\n" +msgstr "%s: Fehler - Ziel wird hinter dem Parameter '-b' erwartet!\n" + +#, c-format +msgid "%s: Invalid destination name in list \"%s\"!\n" +msgstr "%s: Ungültiger Zielname in der Liste \"%s\"!\n" + +#, c-format +msgid "%s: Unable to connect to server\n" +msgstr "%s: Kann Server nicht erreichen\n" + +msgid "Print Job:" +msgstr "Druckauftrag:" + +msgid "pending" +msgstr "schwebend" + +msgid "held" +msgstr "gehalten" + +msgid "processing" +msgstr "verarbeite" + +msgid "stopped" +msgstr "gestoppt" + +msgid "canceled" +msgstr "abgebrochen" + +msgid "aborted" +msgstr "abgebrochen" + +msgid "completed" +msgstr "beendet" + +msgid "unknown" +msgstr "unbekannt" + +msgid "untitled" +msgstr "unbenannt" + +msgid "Printer:" +msgstr "Drucker:" + +msgid "idle" +msgstr "frei" + +msgid "Missing notify-subscription-ids attribute!" +msgstr "Vermisse Eigenschaft notify-subscription-ids!" + +msgid "Job subscriptions cannot be renewed!" +msgstr "Auftragssubkription kann nicht erneuert werden!" + +msgid "cupsd: Expected config filename after \"-c\" option!\n" +msgstr "cupsd: Konfigurationsdateiname wird hinter dem Paramter \"-c\" erwartet!\n" + +msgid "cupsd: launchd(8) support not compiled in, running in normal mode.\n" +msgstr "cupsd: launchd(8)-unterstützung wurde nicht kompiliert, laufe im normalen Modus.\n" + +#, c-format +msgid "cupsd: Unknown option \"%c\" - aborting!\n" +msgstr "cupsd: Unbekannter Paramter \"%c\" - Abbruch!\n" + +#, c-format +msgid "cupsd: Unknown argument \"%s\" - aborting!\n" +msgstr "cupsd: Unbekanntes Argument \"%s\" - Abbruch!\n" + +msgid "" +"Usage: cupsd [-c config-file] [-f] [-F] [-h] [-l]\n" +"\n" +"-c config-file Load alternate configuration file\n" +"-f Run in the foreground\n" +"-F Run in the foreground but detach\n" +"-h Show this usage message\n" +"-l Run cupsd from launchd(8)\n" +msgstr "" +"Benutzung: cupsd [-c Konfigurationsdatei] [-f] [-F] [-h] [-l]\n" +"\n" +"-c Konfig. Datei Lade alternative Konfigurationsdatei\n" +"-f Laufe im Vordergrund\n" +"-F Laufe abgetrennt im Vordergrund\n" +"-h Zeige diese Gebrauchsanweisung\n" +"-l cupsd über launchd(8) laufen lassen\n" + +#, c-format +msgid " WARN Line %d only contains whitespace!\n" +msgstr " WARNUNG Zeile %d enthält nur Whitespace!\n" + +msgid " WARN File contains a mix of CR, LF, and CR LF line endings!\n" +msgstr " WARNUNG Datei enthält gemischt CR, LF und CR LF als Zeilenende!\n" + +msgid " WARN Non-Windows PPD files should use lines ending with only LF, not CR LF!\n" +msgstr " WARNUNG Nicht-Windows PPD Dateien sollten nur das Zeilenende LF benutzen, nicht CR LF!\n" + +msgid "Printer Maintenance" +msgstr "Druckerwartung" + +msgid "Unable to send maintenance job:" +msgstr "Kann Wartungsauftrag nicht senden:" + +#, c-format +msgid "cupsaddsmb: No PPD file for printer \"%s\" - %s\n" +msgstr "cupsaddsmb: Keine PPD Datei für Drucker \"%s\" vorhanden - %s\n" + +#, c-format +msgid " **FAIL** %s %s does not exist!\n" +msgstr " **FEHLGESCHLAGEN** %s %s existiert nicht!\n" + +#, c-format +msgid " **FAIL** Bad language \"%s\"!\n" +msgstr " **FEHLGESCHLAGEN** Falsche Sprache \"%s\"!\n" + +#, c-format +msgid " **FAIL** Missing \"%s\" translation string for option %s!\n" +msgstr " **FEHLGESCHLAGEN** Vermisse \"%s\" Übersetzung für Parameter %s!\n" + +#, c-format +msgid " **FAIL** Default translation string for option %s contains 8-bit characters!\n" +msgstr " **FEHLGESCHLAGEN** Standardübersetzung für Parameter %s enthält 8-bit Zeichen!\n" + +#, c-format +msgid " **FAIL** Missing \"%s\" translation string for option %s, choice %s!\n" +msgstr " **FEHLGESCHLAGEN** Vermisse \"%s\" Übersetzung für Parameter %s, Auswahl %s!\n" + +#, c-format +msgid " **FAIL** Default translation string for option %s choice %s contains 8-bit characters!\n" +msgstr " **FEHLGESCHLAGEN** Standardübersetzung für Parameter %s Auswahl %s enthält 8-bit Zeichen!\n" + +#, c-format +msgid " **FAIL** Bad cupsFilter value \"%s\"!\n" +msgstr " **FEHLGESCHLAGEN** Falscher cupsFilter Wert \"%s\"!\n" + +msgid "Help" +msgstr "Hilfe" + +#, c-format +msgid "Missing value on line %d!\n" +msgstr "Vermisse Wert in Zeile %d!\n" + +#, c-format +msgid "Missing double quote on line %d!\n" +msgstr "Vermisse doppelte Anführungszeichen in Zeile %d!\n" + +#, c-format +msgid "Bad option + choice on line %d!\n" +msgstr "Falscher Parameter + Auswahl in Zeile %d!\n" + +#, c-format +msgid "Unable to copy Windows 2000 printer driver files (%d)!\n" +msgstr "Kann Windows 2000 Druckertreiberdateien nicht kopieren (%d)!\n" + +#, c-format +msgid "Unable to copy CUPS printer driver files (%d)!\n" +msgstr "Kann CUPS Druckertreiberdateien nicht kopieren (%d)!\n" + +#, c-format +msgid "Unable to install Windows 2000 printer driver files (%d)!\n" +msgstr "Kann Windows 2000 Druckertreiberdateien nicht installieren (%d)!\n" + +#, c-format +msgid "Unable to copy Windows 9x printer driver files (%d)!\n" +msgstr "Kann Windows 9x Druckertreiberdateien nicht kopieren (%d)!\n" + +#, c-format +msgid "Unable to install Windows 9x printer driver files (%d)!\n" +msgstr "Kann Windows 9x Druckertreiberdateien nicht installieren (%d)!\n" + +msgid "No Windows printer drivers are installed!\n" +msgstr "Keine Windows Druckertreiber installiert!\n" + +msgid "Warning, no Windows 2000 printer drivers are installed!\n" +msgstr "Warnung, keine Windows 2000 Druckertreiber installiert!\n" + +#, c-format +msgid "Unable to set Windows printer driver (%d)!\n" +msgstr "Kann Windows Druckertreiber nicht setzen (%d)!\n" + +msgid "" +"Usage: cupsaddsmb [options] printer1 ... printerN\n" +" cupsaddsmb [options] -a\n" +"\n" +"Options:\n" +" -E Encrypt the connection to the server\n" +" -H samba-server Use the named SAMBA server\n" +" -U samba-user Authenticate using the named SAMBA user\n" +" -a Export all printers\n" +" -h cups-server Use the named CUPS server\n" +" -v Be verbose (show commands)\n" +msgstr "" +"Benutzung: cupsaddsmb [Parameter] Drucker1 ... DruckerN\n" +" cupsaddsmb [Parameter] -a\n" +"\n" +"Options:\n" +" -E Verbindung zum Server verschlüsseln\n" +" -H Samba-Server Benutze den angegebenen Samba Server\n" +" -U Samba-Benutzer Authentifiziere mit dem angegebenen Samba Benutzer\n" +" -a Alle Drucker bereitstellen\n" +" -h CUPS-Server Benutze den angegebenen CUPS Server\n" +" -v zusätzliche Ausgaben einschalten (zeige Befehle)\n" + +#, c-format +msgid "Unable to copy Windows 2000 printer driver files (%d)!" +msgstr "Kann Windows 2000 Druckertreiberdateien nicht kopieren (%d)!" + +#, c-format +msgid "Unable to copy CUPS printer driver files (%d)!" +msgstr "Kann CUPS Druckertreiberdateien nicht kopieren (%d)!" + +#, c-format +msgid "Unable to install Windows 2000 printer driver files (%d)!" +msgstr "Kann Windows 2000 Druckertreiberdateien nicht installieren (%d)!" + +#, c-format +msgid "Unable to copy Windows 9x printer driver files (%d)!" +msgstr "Kann Windows 9x Druckertreiberdateien nicht kopieren (%d)!" + +#, c-format +msgid "Unable to install Windows 9x printer driver files (%d)!" +msgstr "Kann Windows 9x Druckertreiberdateien nicht installieren (%d)!" + +msgid "No Windows printer drivers are installed!" +msgstr "Keine Windows Druckertreiber installiert!" + +msgid "Warning, no Windows 2000 printer drivers are installed!" +msgstr "Warnung, keine Windows 2000 Druckertreiber installiert!" + +#, c-format +msgid "open of %s failed: %s" +msgstr "öffnen von %s fehlgeschlagen: %s" + +#, c-format +msgid "Running command: %s %s -N -A %s -c '%s'\n" +msgstr "Befehl wird ausgeführt: %s %s -N -A %s -c '%s'\n" + +#, c-format +msgid "stat of %s failed: %s" +msgstr "Prüfung von %s fehlgeschlagen: %s" + +#, c-format +msgid "Job #%d is already cancelled - can't cancel." +msgstr "Auftrag #%d wurde bereits abgebrochen - abbrechen nicht möglich." + +#, c-format +msgid "Job #%d is already aborted - can't cancel." +msgstr "Auftrag #%d wurde bereits abgebrochen - abbrechen nicht möglich." + +#, c-format +msgid "Job #%d is already completed - can't cancel." +msgstr "Auftrag #%d wurde bereits beendet - abbrechen nicht möglich." + +#, c-format +msgid "You must access this page using the URL https://%s:%d%s." +msgstr "Um auf diese Seite zuzugreifen müssen Sie die URL https://%s:%d%s verwenden." + +#, c-format +msgid "Unsupported format '%s'!" +msgstr "Nicht unterstütztes Format '%s'!" + +msgid "FAIL\n" +msgstr "FEHLGESCHLAGEN\n" + +#, c-format +msgid "" +" Line %d is longer than 255 characters (%d)!\n" +" REF: Page 25, Line Length\n" +msgstr "" +" Zeile %d ist länger als 255 Zeichen (%d)!\n" +" REF: Seite 25, Zeilenlänge\n" + +msgid "" +" Missing %!PS-Adobe-3.0 on first line!\n" +" REF: Page 17, 3.1 Conforming Documents\n" +msgstr "" +" Vermisse %!PS-Adobe-3.0 in der ersten Zeile!\n" +" REF: Seite 17, 3.1 Den Konventionen entsprechende Dokumente\n" + +#, c-format +msgid "" +" Bad %%%%Pages: on line %d!\n" +" REF: Page 43, %%%%Pages:\n" +msgstr "" +" Falsche %%%%Pages: in Zeile %d!\n" +" REF: Seite 43, %%%%Pages:\n" + +#, c-format +msgid "" +" Bad %%%%BoundingBox: on line %d!\n" +" REF: Page 39, %%%%BoundingBox:\n" +msgstr "" +" Falsche %%%%BoundingBox: in Zeile %d!\n" +" REF: Seite 39, %%%%BoundingBox:\n" + +#, c-format +msgid "" +" Bad %%%%Page: on line %d!\n" +" REF: Page 53, %%%%Page:\n" +msgstr "" +" Falsche %%%%Page: in Zeile %d!\n" +" REF: Seite 53, %%%%Page:\n" + +#, c-format +msgid "" +" Missing or bad %%BoundingBox: comment!\n" +" REF: Page 39, %%BoundingBox:\n" +msgstr "" +" Vermisster oder falscher %%BoundingBox: Kommentar!\n" +" REF: Seite 39, %%BoundingBox:\n" + +#, c-format +msgid "" +" Missing or bad %%Pages: comment!\n" +" REF: Page 43, %%Pages:\n" +msgstr "" +" Vermisster oder Falscher %%Pages: Kommentar!\n" +" REF: Seite 43, %%Pages:\n" + +#, c-format +msgid "" +" Missing %%EndComments comment!\n" +" REF: Page 41, %%EndComments\n" +msgstr "" +" Vermisster %%EndComments Kommentar!\n" +" REF: Seite 41, %%EndComments\n" + +#, c-format +msgid "" +" Missing or bad %%Page: comments!\n" +" REF: Page 53, %%Page:\n" +msgstr "" +" Vermisste oder falsche %%Page: Kommentare!\n" +" REF: Seite 53, %%Page:\n" + +#, c-format +msgid " Too many %%EndDocument comments!\n" +msgstr " Zu viele %%EndDocument Kommentare!\n" + +#, c-format +msgid " Too many %%BeginDocument comments!\n" +msgstr " Zu viele %%BeginDocument Kommentare!\n" + +#, c-format +msgid " Saw %d lines that exceeded 255 characters!\n" +msgstr " Sah %d Zeilen welche 255 Zeichen überschreiten!\n" + +msgid "PASS\n" +msgstr "PASS\n" + +msgid " Warning: file contains binary data!\n" +msgstr " Warnung: Datei enthält binäre Daten!\n" + +#, c-format +msgid " Warning: obsolete DSC version %.1f in file!\n" +msgstr " Warnung: obsolete DSC Version %.1f in Datei!\n" + +#, c-format +msgid " Warning: no %%EndComments comment in file!\n" +msgstr " Warnung: keine %%EndComments Kommentare in Datei!\n" + +msgid "" +"Usage: cupstestdsc [options] filename.ps [... filename.ps]\n" +" cupstestdsc [options] -\n" +"\n" +"Options:\n" +"\n" +" -h Show program usage\n" +"\n" +" Note: this program only validates the DSC comments, not the PostScript itself.\n" +msgstr "" +"Benutzung: cupstestdsc [Parameter] Dateiname.ps [... Dateiname.ps]\n" +" cupstestdsc [Parameter] -\n" +"\n" +"Parameter:\n" +"\n" +" -h Zeige Gebrauchsanleitung\n" +"\n" +" Notiz: Dieses Programm validiert nur die DSC Kommentare, nicht das PostScript selbst.\n" + +#, c-format +msgid "Password for %s on %s? " +msgstr "Passwort für %s auf %s? " + +msgid "" +" **FAIL** 1284DeviceId must be 1284DeviceID!\n" +" REF: Page 72, section 5.5\n" +msgstr "" +" **FEHLGESCHLAGEN** 1284DeviceId muss 1284DeviceID sein!\n" +" REF: Seite 72, Kapitel 5.5\n" diff --git a/locale/cups_ja.po b/locale/cups_ja.po index cf6d770a9..7dbe5334a 100644 --- a/locale/cups_ja.po +++ b/locale/cups_ja.po @@ -26,7 +26,7 @@ msgstr "" "Project-Id-Version: CUPS 1.2\n" "Report-Msgid-Bugs-To: http://www.cups.org/str.php\n" "POT-Creation-Date: 2006-05-21 10:08-0400\n" -"PO-Revision-Date: 2006-03-29 23:44+0900\n" +"PO-Revision-Date: 2006-06-27 22:55+0900\n" "Last-Translator: Kenshi Muto \n" "Language-Team: Japanese \n" "MIME-Version: 1.0\n" @@ -2929,12 +2929,11 @@ msgstr "" #, c-format msgid "Password for %s on %s? " -msgstr "" +msgstr "%s のパスワード (%s 上)? " -#, fuzzy msgid "" " **FAIL** 1284DeviceId must be 1284DeviceID!\n" " REF: Page 72, section 5.5\n" msgstr "" -" **FAIL** 不正な %s が %s を選んでいます!\n" -" REF: 122 ページ、セクション 5.17\n" +" **FAIL** 1284DeviceId は 1284DeviceID でなければなりません!\n" +" REF: 72 ページ、セクション 5.5\n" diff --git a/man/Makefile b/man/Makefile index 6071d57e0..709e0ac7e 100644 --- a/man/Makefile +++ b/man/Makefile @@ -1,5 +1,5 @@ # -# "$Id: Makefile 5472 2006-04-30 16:27:50Z mike $" +# "$Id: Makefile 5728 2006-07-12 20:45:13Z mike $" # # Man page makefile for the Common UNIX Printing System (CUPS). # @@ -44,6 +44,7 @@ MAN5 = classes.conf.$(MAN5EXT) \ client.conf.$(MAN5EXT) \ cups-snmp.conf.$(MAN5EXT) \ cupsd.conf.$(MAN5EXT) \ + mailto.conf.$(MAN5EXT) \ mime.convs.$(MAN5EXT) \ mime.types.$(MAN5EXT) \ printers.conf.$(MAN5EXT) \ @@ -183,5 +184,5 @@ mantohtml: mantohtml.o # -# End of "$Id: Makefile 5472 2006-04-30 16:27:50Z mike $". +# End of "$Id: Makefile 5728 2006-07-12 20:45:13Z mike $". # diff --git a/man/lpadmin.man b/man/lpadmin.man index 28d747053..6bb24c3b3 100644 --- a/man/lpadmin.man +++ b/man/lpadmin.man @@ -1,5 +1,5 @@ .\" -.\" "$Id: lpadmin.man 5327 2006-03-23 19:53:24Z mike $" +.\" "$Id: lpadmin.man 5736 2006-07-13 19:59:36Z mike $" .\" .\" lpadmin man page for the Common UNIX Printing System (CUPS). .\" @@ -21,7 +21,7 @@ .\" EMail: cups-info@cups.org .\" WWW: http://www.cups.org .\" -.TH lpadmin 8 "Common UNIX Printing System" "23 March 2006" "Easy Software Products" +.TH lpadmin 8 "Common UNIX Printing System" "13 July 2006" "Easy Software Products" .SH NAME lpadmin \- configure cups printers and classes .SH SYNOPSIS @@ -123,6 +123,27 @@ Sets the default banner page(s) to use for print jobs. Sets the binary communications program to use when printing, "none", "bcp", or "tbcp". The default program is "none". .TP 5 +-o printer-error-policy=name +.br +Sets the error policy to be used when the printer backend is +unable to send the job to the printer. The name must be one of +"cancel-job", "retry-job" or "stop-printer". The default error +policy is "stop-printer". +.TP 5 +-o printer-is-shared=true/false +.br +Sets the printer to shared/published or unshared/unpublished. +Shared/published printers are publically announced by the server +on the LAN based on the browsing configuration in +\fBcupsd.conf\fR, while unshared/unpublished printers are not +announced. The default value is "true". +.TP 5 +-o printer-op-policy=name +.br +Sets the IPP operation policy associated with the printer. The +name must be defined in the \fBcupsd.conf\fR in a Policy section. +The default operation policy is "default". +.TP 5 -r class .br Removes the named \fIprinter\fR from \fIclass\fR. If the @@ -144,7 +165,8 @@ user-level access control off. .br Sets the \fIdevice-uri\fR attribute of the printer queue. If \fIdevice-uri\fR is a filename it is automatically converted to -the form \fIfile:///file/name\fR. +the form \fIfile:///file/name\fR. Use the \fIlpinfo(8)\fR command +to get a list of supported device URIs and schemes. .TP 5 -D "info" .br @@ -176,11 +198,12 @@ requires the root user to execute this command. The CUPS version of \fIlpadmin\fR does not support all of the System V or Solaris printing system configuration options. .SH SEE ALSO -\fIaccept(8)\fR, \fIcupsenable(8)\fR, \fIlpoptions(1)\fR, +\fIaccept(8)\fR, \fIcupsenable(8)\fR, \fIlpinfo(8)\fR, +\fIlpoptions(1)\fR, .br http://localhost:631/help .SH COPYRIGHT Copyright 1997-2006 by Easy Software Products, All Rights Reserved. .\" -.\" End of "$Id: lpadmin.man 5327 2006-03-23 19:53:24Z mike $". +.\" End of "$Id: lpadmin.man 5736 2006-07-13 19:59:36Z mike $". .\" diff --git a/man/mailto.conf.man b/man/mailto.conf.man new file mode 100644 index 000000000..5e0371fc7 --- /dev/null +++ b/man/mailto.conf.man @@ -0,0 +1,69 @@ +.\" +.\" "$Id$" +.\" +.\" mailto.conf man page for the Common UNIX Printing System (CUPS). +.\" +.\" Copyright 1997-2006 by Easy Software Products. +.\" +.\" These coded instructions, statements, and computer programs are the +.\" property of Easy Software Products and are protected by Federal +.\" copyright law. Distribution and use rights are outlined in the file +.\" "LICENSE.txt" which should have been included with this file. If this +.\" file is missing or damaged please contact Easy Software Products +.\" at: +.\" +.\" Attn: CUPS Licensing Information +.\" Easy Software Products +.\" 44141 Airport View Drive, Suite 204 +.\" Hollywood, Maryland 20636 USA +.\" +.\" Voice: (301) 373-9600 +.\" EMail: cups-info@cups.org +.\" WWW: http://www.cups.org +.\" +.TH mailto.conf 5 "Common UNIX Printing System" "12 July 2006" "Easy Software Products" +.SH NAME +mailto.conf \- configuration file for cups email notifier +.SH DESCRIPTION +The \fImailto.conf\fR file defines the local mail server and +email notification preferences for CUPS. +.LP +Each line in the file can be a configuration directive, a blank line, +or a comment. Comment lines start with the # character. +.SH DIRECTIVES +.TP 5 +Cc \fIcc-address@domain.com\fR +.br +Specifies an additional recipient for all email notifications. +.TP 5 +From \fIfrom-address@domain.com\fR +.br +Specifies the sender of email notifications. +.TP 5 +Sendmail \fIsendmail command and options\fR +.br +Specifies the sendmail command to use when sending email +notifications. Only one \fISendmail\fR or \fISMTPServer\fR line +may be present in the \fImailto.conf\fR file. If multiple lines +are present, only the last one is used. +.TP 5 +SMTPServer \fIservername\fR +.br +Specifies a SMTP server to send email notifications to. Only one +\fISendmail\fR or \fISMTPServer\fR line may be present in the +\fImailto.conf\fR file. If multiple lines are present, only the +last one is used. +.TP 5 +Subject \fIsubject-prefix\fR +.br +Specifies a prefix string for the subject line of an email notification. +.SH SEE ALSO +\fIclasses.conf(5)\fR, \fIcupsd(8)\fR, \fIcupsd.conf(5)\fR, +\fImime.convs(5)\fR, \fImime.types(5)\fR, \fIprinters.conf(5)\fR, +.br +http://localhost:631/help +.SH COPYRIGHT +Copyright 1997-2006 by Easy Software Products, All Rights Reserved. +.\" +.\" End of "$Id$". +.\" diff --git a/notifier/testnotify.c b/notifier/testnotify.c index d334a4a9e..d0a502b20 100644 --- a/notifier/testnotify.c +++ b/notifier/testnotify.c @@ -1,5 +1,5 @@ /* - * "$Id: testnotify.c 4829 2005-11-12 03:15:10Z mike $" + * "$Id: testnotify.c 5716 2006-07-11 17:56:57Z mike $" * * Test notifier for the Common UNIX Printing System (CUPS). * @@ -82,6 +82,14 @@ main(int argc, /* I - Number of command-line arguments */ print_attributes(event, 4); ippDelete(event); + + /* + * If the recipient URI is "testnotify://nowait", then we exit after each + * event... + */ + + if (!strcmp(argv[1], "testnotify://nowait")) + return (0); } } @@ -281,5 +289,5 @@ print_attributes(ipp_t *ipp, /* I - IPP request */ /* - * End of "$Id: testnotify.c 4829 2005-11-12 03:15:10Z mike $". + * End of "$Id: testnotify.c 5716 2006-07-11 17:56:57Z mike $". */ diff --git a/packaging/cups.list.in b/packaging/cups.list.in index c6d7e8f1d..923b254f2 100644 --- a/packaging/cups.list.in +++ b/packaging/cups.list.in @@ -1,5 +1,5 @@ # -# "$Id: cups.list.in 5628 2006-06-05 15:25:23Z mike $" +# "$Id: cups.list.in 5745 2006-07-18 13:45:56Z mike $" # # ESP Package Manager (EPM) file list for the Common UNIX Printing # System (CUPS). @@ -97,6 +97,9 @@ %provides cups-lpd 1:@CUPS_VERSION@ %format all +%subpackage de +%description Common UNIX Printing System - German support + %subpackage es %description Common UNIX Printing System - Spanish support @@ -173,6 +176,7 @@ $INSTALLSTATIC=@INSTALLSTATIC@ $MAN1EXT=@MAN1EXT@ $MAN5EXT=@MAN5EXT@ $MAN7EXT=@MAN7EXT@ +$MAN8EXT=@MAN8EXT@ $MAN8DIR=@MAN8DIR@ $DSOLIBS=@DSOLIBS@ @@ -337,6 +341,8 @@ d 0755 root $CUPS_GROUP $STATEDIR - d 0511 root $CUPS_PRIMARY_SYSTEM_GROUP $STATEDIR/certs - # Data files +%subpackage de +f 0644 root sys $LOCALEDIR/es/cups_de.po locale/cups_de.po %subpackage es f 0644 root sys $LOCALEDIR/es/cups_es.po locale/cups_es.po %subpackage ja @@ -400,6 +406,9 @@ d 0755 root sys $DATADIR/templates - c 0644 root sys $DATADIR/templates templates/*.tmpl # Japanese template files +%subpackage de +d 0755 root sys $DATADIR/templates/de +f 0644 root sys $DATADIR/templates/de templates/de/*.tmpl %subpackage es d 0755 root sys $DATADIR/templates/es f 0644 root sys $DATADIR/templates/es templates/es/*.tmpl @@ -418,6 +427,7 @@ f 0644 root sys $DATADIR/templates/sv templates/sv/*.tmpl d 0755 root sys $SERVERROOT - d 0755 root $CUPS_GROUP $SERVERROOT/interfaces - d 0755 root $CUPS_GROUP $SERVERROOT/ppd - +d 0700 root $CUPS_GROUP $SERVERROOT/ssl - c $CUPS_PERM root $CUPS_GROUP $SERVERROOT conf/*.conf f $CUPS_PERM root $CUPS_GROUP $SERVERROOT/cupsd.conf.default conf/cupsd.conf f 0644 root $CUPS_GROUP $SERVERROOT/mime.convs conf/mime.convs @@ -462,6 +472,7 @@ f 0644 root sys $DOCDIR/help/license.html doc/help/license.html f 0644 root sys $DOCDIR/help/network.html doc/help/network.html f 0644 root sys $DOCDIR/help/options.html doc/help/options.html f 0644 root sys $DOCDIR/help/overview.html doc/help/overview.html +f 0644 root sys $DOCDIR/help/policies.html doc/help/policies.html f 0644 root sys $DOCDIR/help/security.html doc/help/security.html f 0644 root sys $DOCDIR/help/standard.html doc/help/standard.html f 0644 root sys $DOCDIR/help/translation.html doc/help/translation.html @@ -475,6 +486,11 @@ f 0644 root sys $DOCDIR/images doc/images/*.png f 0644 root sys $DOCDIR/robots.txt doc/robots.txt # Localized documentation files +%subpackage de +d 0755 root sys $DOCDIR/de +f 0644 root sys $DOCDIR/de doc/de/*.html +d 0755 root sys $DOCDIR/de/images - +f 0644 root sys $DOCDIR/de/images doc/de/images/*.gif %subpackage es d 0755 root sys $DOCDIR/es f 0644 root sys $DOCDIR/es doc/es/*.html @@ -518,6 +534,7 @@ f 0644 root sys $MANDIR/man1/lp.$MAN1EXT man/lp.$MAN1EXT f 0644 root sys $MANDIR/man5/classes.conf.$MAN5EXT man/classes.conf.$MAN5EXT f 0644 root sys $MANDIR/man5/cupsd.conf.$MAN5EXT man/cupsd.conf.$MAN5EXT +f 0644 root sys $MANDIR/man5/mailto.conf.$MAN5EXT man/mailto.conf.$MAN5EXT f 0644 root sys $MANDIR/man5/mime.convs.$MAN5EXT man/mime.convs.$MAN5EXT f 0644 root sys $MANDIR/man5/mime.types.$MAN5EXT man/mime.types.$MAN5EXT f 0644 root sys $MANDIR/man5/printers.conf.$MAN5EXT man/printers.conf.$MAN5EXT @@ -550,5 +567,5 @@ f 0644 root sys $AMANDIR/man$MAN8DIR/cups-lpd.$MAN8EXT man/cups-lpd.$MAN8EXT i 0755 root sys cups init/cups.sh # -# End of "$Id: cups.list.in 5628 2006-06-05 15:25:23Z mike $". +# End of "$Id: cups.list.in 5745 2006-07-18 13:45:56Z mike $". # diff --git a/packaging/cups.spec.in b/packaging/cups.spec.in index 3f15b4a94..e171fad51 100644 --- a/packaging/cups.spec.in +++ b/packaging/cups.spec.in @@ -1,5 +1,5 @@ # -# "$Id: cups.spec.in 5584 2006-05-24 11:17:55Z mike $" +# "$Id: cups.spec.in 5758 2006-07-19 13:31:27Z mike $" # # RPM "spec" file for the Common UNIX Printing System (CUPS). # @@ -76,6 +76,11 @@ Summary: Common UNIX Printing System - LPD support Group: System Environment/Daemons Requires: %{name} = %{epoch}:%{version} xinetd +%package de +Summary: Common UNIX Printing System - German support +Group: System Environment/Daemons +Requires: %{name} = %{epoch}:%{version} + %package es Summary: Common UNIX Printing System - Spanish support Group: System Environment/Daemons @@ -122,6 +127,10 @@ UNIX The Common UNIX Printing System provides a portable printing layer for UNIX® operating systems. This package provides LPD client support. +%description de +The Common UNIX Printing System provides a portable printing layer for +UNIX® operating systems. This package provides German support. + %description es The Common UNIX Printing System provides a portable printing layer for UNIX® operating systems. This package provides Spanish support. @@ -204,6 +213,7 @@ rm -rf $RPM_BUILD_ROOT /etc/cups/mime.types /etc/cups/mime.convs %dir /etc/cups/ppd +%attr(0700,root,root) %dir /etc/cups/ssl %if %{?_with_dbus:1}%{!?_with_dbus:0} # DBUS @@ -291,6 +301,7 @@ rm -rf $RPM_BUILD_ROOT /usr/share/doc/cups/help/network.html /usr/share/doc/cups/help/options.html /usr/share/doc/cups/help/overview.html +/usr/share/doc/cups/help/policies.html /usr/share/doc/cups/help/ref-*.html /usr/share/doc/cups/help/security.html /usr/share/doc/cups/help/standard.html @@ -371,6 +382,16 @@ rm -rf $RPM_BUILD_ROOT %dir /usr/share/man/man8 /usr/share/man/man8/cups-lpd.8.gz +%files de +%defattr(-,root,root) +%dir /usr/share/doc/cups/de +/usr/share/doc/cups/de/index.html +%dir /usr/share/doc/cups/de/images +/usr/share/doc/cups/de/images/* +%dir /usr/share/cups/templates/de +/usr/share/cups/templates/de/* +/usr/share/locale/de/cups_de.po + %files es %defattr(-,root,root) %dir /usr/share/doc/cups/es @@ -419,5 +440,5 @@ rm -rf $RPM_BUILD_ROOT # -# End of "$Id: cups.spec.in 5584 2006-05-24 11:17:55Z mike $". +# End of "$Id: cups.spec.in 5758 2006-07-19 13:31:27Z mike $". # diff --git a/pdftops/PSOutputDev.cxx b/pdftops/PSOutputDev.cxx index 41d359098..4c98d207c 100644 --- a/pdftops/PSOutputDev.cxx +++ b/pdftops/PSOutputDev.cxx @@ -1158,7 +1158,7 @@ void PSOutputDev::writeHeader(int firstPage, int lastPage, break; } - writePSFmt("% Produced by xpdf/pdftops %s\n", xpdfVersion); + writePSFmt("%%Producer: xpdf/pdftops %s\n", xpdfVersion); xref->getDocInfo(&info); if (info.dictLookup("Creator", &obj1)->isString()) { writePS("%%Creator: "); diff --git a/ppd/zebracpl.ppd b/ppd/zebracpl.ppd index db46f8d03..e5bd41241 100644 --- a/ppd/zebracpl.ppd +++ b/ppd/zebracpl.ppd @@ -120,6 +120,14 @@ *Resolution 203dpi/203 DPI: "<>setpagedevice" *CloseUI: *Resolution +*OpenUI *zeMediaTracking/Media Tracking: PickOne +*OrderDependency: 20 AnySetup *zeMediaTracking +*DefaultzeMediaTracking: Web +*zeMediaTracking Continuous: "" +*zeMediaTracking Web/Non-continuous (Web sensing): "" +*zeMediaTracking Mark/Non-continuous (Mark sensing): "" +*CloseUI: *zeMediaTracking + *OpenGroup: PrinterSettings/Printer Settings *OpenUI *Darkness/Media Darkness: PickOne *OrderDependency: 20 AnySetup *Darkness diff --git a/scheduler/Makefile b/scheduler/Makefile index 403997bb9..f269c3849 100644 --- a/scheduler/Makefile +++ b/scheduler/Makefile @@ -1,5 +1,5 @@ # -# "$Id: Makefile 5229 2006-03-05 16:48:12Z mike $" +# "$Id: Makefile 5736 2006-07-13 19:59:36Z mike $" # # Scheduler Makefile for the Common UNIX Printing System (CUPS). # @@ -127,6 +127,9 @@ install: all echo Creating $(SERVERROOT)/ppd... $(INSTALL_DIR) -m 755 $(SERVERROOT)/ppd -chgrp $(CUPS_GROUP) $(SERVERROOT)/ppd + echo Creating $(SERVERROOT)/ssl... + $(INSTALL_DIR) -m 700 $(SERVERROOT)/ssl + -chgrp $(CUPS_GROUP) $(SERVERROOT)/ssl echo Creating $(STATEDIR)... $(INSTALL_DIR) -m 755 $(STATEDIR) echo Creating $(STATEDIR)/certs... @@ -274,5 +277,5 @@ include Dependencies # -# End of "$Id: Makefile 5229 2006-03-05 16:48:12Z mike $". +# End of "$Id: Makefile 5736 2006-07-13 19:59:36Z mike $". # diff --git a/scheduler/client.c b/scheduler/client.c index 23a74e50e..c3c236f78 100644 --- a/scheduler/client.c +++ b/scheduler/client.c @@ -1,5 +1,5 @@ /* - * "$Id: client.c 5630 2006-06-05 18:42:53Z mike $" + * "$Id: client.c 5739 2006-07-16 15:21:18Z mike $" * * Client routines for the Common UNIX Printing System (CUPS) scheduler. * @@ -83,9 +83,9 @@ static http_status_t install_conf_file(cupsd_client_t *con); static int is_cgi(cupsd_client_t *con, const char *filename, struct stat *filestats, mime_type_t *type); static int is_path_absolute(const char *path); -#ifdef HAVE_GNUTLS -static void make_certificate(void); -#endif /* HAVE_GNUTLS */ +#ifdef HAVE_SSL +static int make_certificate(void); +#endif /* HAVE_SSL */ static int pipe_command(cupsd_client_t *con, int infile, int *outfile, char *command, char *options, int root); static int write_file(cupsd_client_t *con, http_status_t code, @@ -2527,6 +2527,20 @@ encrypt_client(cupsd_client_t *con) /* I - Client to encrypt */ unsigned long error; /* Error code */ + /* + * Verify that we have a certificate... + */ + + if (access(ServerKey, 0) || access(ServerCertificate, 0)) + { + /* + * Nope, make a self-signed certificate... + */ + + if (!make_certificate()) + return (0); + } + /* * Create the SSL context and accept the connection... */ @@ -2579,7 +2593,8 @@ encrypt_client(cupsd_client_t *con) /* I - Client to encrypt */ * Nope, make a self-signed certificate... */ - make_certificate(); + if (!make_certificate()) + return (0); } /* @@ -2652,6 +2667,16 @@ encrypt_client(cupsd_client_t *con) /* I - Client to encrypt */ conn->session = NULL; conn->certsArray = get_cdsa_server_certs(); + if (!conn->certsArray) + { + /* + * No keychain (yet), make a self-signed certificate... + */ + + if (make_certificate()) + conn->certsArray = get_cdsa_server_certs(); + } + if (!conn->certsArray) { cupsdLogMessage(CUPSD_LOG_ERROR, @@ -3316,14 +3341,92 @@ is_path_absolute(const char *path) /* I - Input path */ } -#ifdef HAVE_GNUTLS +#ifdef HAVE_SSL /* * 'make_certificate()' - Make a self-signed SSL/TLS certificate. */ -static void +static int /* O - 1 on success, 0 on failure */ make_certificate(void) { +#if defined(HAVE_LIBSSL) && defined(HAVE_WAITPID) + int pid, /* Process ID of command */ + status; /* Status of command */ + char command[1024], /* Command */ + *argv[11], /* Command-line arguments */ + *envp[MAX_ENV]; /* Environment variables */ + + + /* + * Run the "openssl" command to generate a self-signed certificate + * that is good for 10 years: + * + * openssl req -new -x509 -keyout ServerKey \ + * -out ServerCertificate -days 3650 -nodes + */ + + if (!cupsFileFind("openssl", getenv("PATH"), 1, command, sizeof(command))) + { + cupsdLogMessage(CUPSD_LOG_ERROR, + "No SSL certificate and openssl command not found!"); + return (0); + } + + cupsdLogMessage(CUPSD_LOG_INFO, + "Generating SSL server key and certificate..."); + + argv[0] = "openssl"; + argv[1] = "req"; + argv[2] = "-new"; + argv[3] = "-x509"; + argv[4] = "-keyout"; + argv[5] = ServerKey; + argv[6] = "-out"; + argv[7] = ServerCertificate; + argv[8] = "-days"; + argv[9] = "3650"; + argv[10] = "-nodes"; + argv[11] = NULL; + + cupsdLoadEnv(envp, MAX_ENV); + + if (!cupsdStartProcess(command, argv, envp, -1, -1, -1, -1, 1, &pid)) + return (0); + + while (waitpid(pid, &status, 0) < 0) + if (errno != EINTR) + { + status = 1; + break; + } + + cupsdFinishProcess(pid, command, sizeof(command)); + + if (status) + { + if (WIFEXITED(status)) + cupsdLogMessage(CUPSD_LOG_ERROR, + "Unable to create SSL server key and certificate - " + "the openssl command stopped with status %d!", + WEXITSTATUS(status)); + else + cupsdLogMessage(CUPSD_LOG_ERROR, + "Unable to create SSL server key and certificate - " + "the openssl command crashed on signal %d!", + WTERMSIG(status)); + } + else + { + cupsdLogMessage(CUPSD_LOG_INFO, "Created SSL server key file \"%s\"...", + ServerKey); + cupsdLogMessage(CUPSD_LOG_INFO, + "Created SSL server certificate file \"%s\"...", + ServerCertificate); + } + + return (!status); + +#elif defined(HAVE_GNUTLS) gnutls_x509_crt crt; /* Self-signed certificate */ gnutls_x509_privkey key; /* Encryption key */ cups_lang_t *language; /* Default language info */ @@ -3339,7 +3442,7 @@ make_certificate(void) * Create the encryption key... */ - cupsdLogMessage(CUPSD_LOG_INFO, "Generating server key..."); + cupsdLogMessage(CUPSD_LOG_INFO, "Generating SSL server key..."); gnutls_x509_privkey_init(&key); gnutls_x509_privkey_generate(key, GNUTLS_PK_RSA, 2048, 0); @@ -3353,33 +3456,33 @@ make_certificate(void) if ((result = gnutls_x509_privkey_export(key, GNUTLS_X509_FMT_PEM, buffer, &bytes)) < 0) { - cupsdLogMessage(CUPSD_LOG_ERROR, "Unable to export server key - %s", + cupsdLogMessage(CUPSD_LOG_ERROR, "Unable to export SSL server key - %s", gnutls_strerror(result)); gnutls_x509_privkey_deinit(key); - return; + return (0); } else if ((fp = cupsFileOpen(ServerKey, "w")) != NULL) { cupsFileWrite(fp, (char *)buffer, bytes); cupsFileClose(fp); - cupsdLogMessage(CUPSD_LOG_INFO, "Created server key file \"%s\"...", + cupsdLogMessage(CUPSD_LOG_INFO, "Created SSL server key file \"%s\"...", ServerKey); } else { cupsdLogMessage(CUPSD_LOG_ERROR, - "Unable to create server key file \"%s\" - %s", + "Unable to create SSL server key file \"%s\" - %s", ServerKey, strerror(errno)); gnutls_x509_privkey_deinit(key); - return; + return (0); } /* * Create the self-signed certificate... */ - cupsdLogMessage(CUPSD_LOG_INFO, "Generating self-signed certificate..."); + cupsdLogMessage(CUPSD_LOG_INFO, "Generating self-signed SSL certificate..."); language = cupsLangDefault(); curtime = time(NULL); @@ -3432,7 +3535,7 @@ make_certificate(void) if ((result = gnutls_x509_crt_export(crt, GNUTLS_X509_FMT_PEM, buffer, &bytes)) < 0) cupsdLogMessage(CUPSD_LOG_ERROR, - "Unable to export server certificate - %s", + "Unable to export SSL server certificate - %s", gnutls_strerror(result)); else if ((fp = cupsFileOpen(ServerCertificate, "w")) != NULL) { @@ -3440,12 +3543,12 @@ make_certificate(void) cupsFileClose(fp); cupsdLogMessage(CUPSD_LOG_INFO, - "Created 10-year server certificate file \"%s\"...", + "Created SSL server certificate file \"%s\"...", ServerCertificate); } else cupsdLogMessage(CUPSD_LOG_ERROR, - "Unable to create server certificate file \"%s\" - %s", + "Unable to create SSL server certificate file \"%s\" - %s", ServerCertificate, strerror(errno)); /* @@ -3454,8 +3557,83 @@ make_certificate(void) gnutls_x509_crt_deinit(crt); gnutls_x509_privkey_deinit(key); + + return (1); + +#elif defined(HAVE_CDSASSL) && defined(HAVE_WAITPID) + int pid, /* Process ID of command */ + status; /* Status of command */ + char command[1024], /* Command */ + keychain[1024], /* Keychain argument */ + *argv[5], /* Command-line arguments */ + *envp[MAX_ENV]; /* Environment variables */ + + + /* + * Run the "certtool" command to generate a self-signed certificate: + * + * certtool c Z k=ServerCertificate + */ + + if (!cupsFileFind("certtool", getenv("PATH"), 1, command, sizeof(command))) + { + cupsdLogMessage(CUPSD_LOG_ERROR, + "No SSL certificate and certtool command not found!"); + return (0); + } + + cupsdLogMessage(CUPSD_LOG_INFO, + "Generating SSL server key and certificate..."); + + snprintf(keychain, sizeof(keychain), "k=%s", ServerCertificate); + + argv[0] = "certtool"; + argv[1] = "c"; + argv[2] = "Z"; + argv[3] = keychain; + argv[4] = NULL; + + cupsdLoadEnv(envp, MAX_ENV); + + if (!cupsdStartProcess(command, argv, envp, -1, -1, -1, -1, 1, &pid)) + return (0); + + while (waitpid(pid, &status, 0) < 0) + if (errno != EINTR) + { + status = 1; + break; + } + + cupsdFinishProcess(pid, command, sizeof(command)); + + if (status) + { + if (WIFEXITED(status)) + cupsdLogMessage(CUPSD_LOG_ERROR, + "Unable to create SSL server key and certificate - " + "the certtool command stopped with status %d!", + WEXITSTATUS(status)); + else + cupsdLogMessage(CUPSD_LOG_ERROR, + "Unable to create SSL server key and certificate - " + "the certtool command crashed on signal %d!", + WTERMSIG(status)); + } + else + { + cupsdLogMessage(CUPSD_LOG_INFO, + "Created SSL server certificate file \"%s\"...", + ServerCertificate); + } + + return (!status); + +#else + return (0); +#endif /* HAVE_LIBSSL && HAVE_WAITPID */ } -#endif /* HAVE_GNUTLS */ +#endif /* HAVE_SSL */ /* @@ -3833,5 +4011,5 @@ write_file(cupsd_client_t *con, /* I - Client connection */ /* - * End of "$Id: client.c 5630 2006-06-05 18:42:53Z mike $". + * End of "$Id: client.c 5739 2006-07-16 15:21:18Z mike $". */ diff --git a/scheduler/conf.c b/scheduler/conf.c index 29a5b7d13..42acaf083 100644 --- a/scheduler/conf.c +++ b/scheduler/conf.c @@ -1,5 +1,5 @@ /* - * "$Id: conf.c 5663 2006-06-15 20:36:42Z mike $" + * "$Id: conf.c 5736 2006-07-13 19:59:36Z mike $" * * Configuration routines for the Common UNIX Printing System (CUPS). * @@ -467,6 +467,14 @@ cupsdReadConfiguration(void) RunUser = getuid(); + /* + * See if the ServerName is an IP address... + */ + + for (slash = ServerName; isdigit(*slash & 255) || *slash == '.'; slash ++); + + ServerNameIsIP = !*slash; + /* * Use the default system group if none was supplied in cupsd.conf... */ @@ -784,6 +792,24 @@ cupsdReadConfiguration(void) "Allowing up to %d client connections per host.", MaxClientsPerHost); + /* + * Make sure that BrowseTimeout is at least twice the interval... + */ + + if (BrowseTimeout < (2 * BrowseInterval) || BrowseTimeout <= 0) + { + cupsdLogMessage(CUPSD_LOG_ALERT, "Invalid BrowseTimeout value %d!", + BrowseTimeout); + + if (BrowseInterval) + BrowseTimeout = BrowseInterval * 2; + else + BrowseTimeout = DEFAULT_TIMEOUT; + + cupsdLogMessage(CUPSD_LOG_ALERT, "Reset BrowseTimeout to %d!", + BrowseTimeout); + } + /* * Update the default policy, as needed... */ @@ -2572,7 +2598,7 @@ read_configuration(cups_file_t *fp) /* I - File to read from */ strlcpy(temp2, relay->from.mask.name.name, sizeof(temp2)); cupsdLogMessage(CUPSD_LOG_INFO, "Relaying from %s to %s:%d (IPv4)", - temp, temp2, ntohs(relay->to.ipv4.sin_port)); + temp2, temp, ntohs(relay->to.ipv4.sin_port)); NumRelays ++; } @@ -2961,7 +2987,12 @@ read_configuration(cups_file_t *fp) /* I - File to read from */ n *= 262144; } - *((int *)var->ptr) = n; + if (n < 0) + cupsdLogMessage(CUPSD_LOG_ERROR, + "Bad negative integer value for %s on line %d!", + line, linenum); + else + *((int *)var->ptr) = n; } break; @@ -3249,5 +3280,5 @@ read_policy(cups_file_t *fp, /* I - Configuration file */ /* - * End of "$Id: conf.c 5663 2006-06-15 20:36:42Z mike $". + * End of "$Id: conf.c 5736 2006-07-13 19:59:36Z mike $". */ diff --git a/scheduler/conf.h b/scheduler/conf.h index 7b6eea95c..6320f9d19 100644 --- a/scheduler/conf.h +++ b/scheduler/conf.h @@ -1,5 +1,5 @@ /* - * "$Id: conf.h 5216 2006-03-02 17:47:53Z mike $" + * "$Id: conf.h 5696 2006-06-26 18:34:20Z mike $" * * Configuration file definitions for the Common UNIX Printing System (CUPS) * scheduler. @@ -74,6 +74,7 @@ VAR char *ConfigurationFile VALUE(NULL), /* Directory for request files */ *DocumentRoot VALUE(NULL); /* Root directory for documents */ +VAR int ServerNameIsIP VALUE(0); VAR int NumSystemGroups VALUE(0); /* Number of system group names */ VAR char *SystemGroups[MAX_SYSTEM_GROUPS]; @@ -210,5 +211,5 @@ extern int cupsdLogPage(cupsd_job_t *job, const char *page); /* - * End of "$Id: conf.h 5216 2006-03-02 17:47:53Z mike $". + * End of "$Id: conf.h 5696 2006-06-26 18:34:20Z mike $". */ diff --git a/scheduler/cups-polld.c b/scheduler/cups-polld.c index 0a8b4c12a..259361d5b 100644 --- a/scheduler/cups-polld.c +++ b/scheduler/cups-polld.c @@ -1,9 +1,9 @@ /* - * "$Id: cups-polld.c 5305 2006-03-18 03:05:12Z mike $" + * "$Id: cups-polld.c 5753 2006-07-18 19:53:24Z mike $" * * Polling daemon for the Common UNIX Printing System (CUPS). * - * Copyright 1997-2005 by Easy Software Products, all rights reserved. + * Copyright 1997-2006 by Easy Software Products, all rights reserved. * * These coded instructions, statements, and computer programs are the * property of Easy Software Products and are protected by Federal @@ -24,6 +24,7 @@ * Contents: * * main() - Open sockets and poll until we are killed... + * dequote() - Remote quotes from a string. * poll_server() - Poll the server for the given set of printers or classes. */ @@ -43,8 +44,8 @@ * Local functions... */ -static int poll_server(http_t *http, cups_lang_t *language, ipp_op_t op, - int sock, int port, int interval, +static char *dequote(char *d, const char *s, int dlen); +static int poll_server(http_t *http, int sock, int port, int interval, const char *prefix); @@ -53,18 +54,17 @@ static int poll_server(http_t *http, cups_lang_t *language, ipp_op_t op, */ int /* O - Exit status */ -main(int argc, /* I - Number of command-line arguments */ +main(int argc, /* I - Number of command-line args */ char *argv[]) /* I - Command-line arguments */ { - http_t *http; /* HTTP connection */ - cups_lang_t *language; /* Language info */ - int interval; /* Polling interval */ - int sock; /* Browser sock */ - int port; /* Browser port */ - int val; /* Socket option value */ - int seconds, /* Seconds left from poll */ - remain; /* Total remaining time to sleep */ - char prefix[1024]; /* Prefix for log messages */ + http_t *http; /* HTTP connection */ + int interval; /* Polling interval */ + int sock; /* Browser sock */ + int port; /* Browser port */ + int val; /* Socket option value */ + int seconds, /* Seconds left from poll */ + remain; /* Total remaining time to sleep */ + char prefix[1024]; /* Prefix for log messages */ /* @@ -128,25 +128,22 @@ main(int argc, /* I - Number of command-line arguments */ fprintf(stderr, "ERROR: %s Unable to connect to %s on port %s: %s\n", prefix, argv[1], argv[2], h_errno ? hstrerror(h_errno) : strerror(errno)); - sleep (interval); + sleep(interval); } /* * Loop forever, asking for available printers and classes... */ - language = cupsLangDefault(); - for (;;) { /* - * Get the printers, then the classes... + * Get the printers and classes... */ remain = interval; - if ((seconds = poll_server(http, language, CUPS_GET_PRINTERS, sock, port, - interval, prefix)) > 0) + if ((seconds = poll_server(http, sock, port, interval, prefix)) > 0) remain -= seconds; /* @@ -159,14 +156,42 @@ main(int argc, /* I - Number of command-line arguments */ } +/* + * 'dequote()' - Remote quotes from a string. + */ + +static char * /* O - Dequoted string */ +dequote(char *d, /* I - Destination string */ + const char *s, /* I - Source string */ + int dlen) /* I - Destination length */ +{ + char *dptr; /* Pointer into destination */ + + + if (s) + { + for (dptr = d, dlen --; *s && dlen > 0; s ++) + if (*s != '\"') + { + *dptr++ = *s; + dlen --; + } + + *dptr = '\0'; + } + else + *d = '\0'; + + return (d); +} + + /* * 'poll_server()' - Poll the server for the given set of printers or classes. */ static int /* O - Number of seconds or -1 on error */ poll_server(http_t *http, /* I - HTTP connection */ - cups_lang_t *language, /* I - Language */ - ipp_op_t op, /* I - Operation code */ int sock, /* I - Broadcast sock */ int port, /* I - Broadcast port */ int interval, /* I - Polling interval */ @@ -178,10 +203,12 @@ poll_server(http_t *http, /* I - HTTP connection */ ipp_t *request, /* Request data */ *response; /* Response data */ ipp_attribute_t *attr; /* Current attribute */ - const char *uri, /* printer-uri */ - *info, /* printer-info */ - *location, /* printer-location */ - *make_model; /* printer-make-and-model */ + const char *uri; /* printer-uri */ + char info[1024], /* printer-info */ + job_sheets[1024],/* job-sheets-default */ + location[1024], /* printer-location */ + make_model[1024]; + /* printer-make-and-model */ cups_ptype_t type; /* printer-type */ ipp_pstate_t state; /* printer-state */ int accepting; /* printer-is-accepting-jobs */ @@ -189,6 +216,7 @@ poll_server(http_t *http, /* I - HTTP connection */ char packet[1540]; /* Data packet */ static const char * const attrs[] = /* Requested attributes */ { + "job-sheets-default", "printer-info", "printer-is-accepting-jobs", "printer-location", @@ -210,20 +238,12 @@ poll_server(http_t *http, /* I - HTTP connection */ addr.sin_port = htons(port); /* - * Build a CUPS_GET_PRINTERS or CUPS_GET_CLASSES request, which requires - * only the attributes-charset and attributes-natural-language attributes. + * Build a CUPS_GET_PRINTERS request and pass along a list of the + * attributes we are interested in along with the types of printers + * (and classes) we want. */ - request = ippNew(); - - request->request.op.operation_id = op; - request->request.op.request_id = 1; - - ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_CHARSET, - "attributes-charset", NULL, cupsLangEncoding(language)); - - ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE, - "attributes-natural-language", NULL, language->language); + request = ippNewRequest(CUPS_GET_PRINTERS); ippAddStrings(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD, "requested-attributes", sizeof(attrs) / sizeof(attrs[0]), @@ -240,17 +260,18 @@ poll_server(http_t *http, /* I - HTTP connection */ * Do the request and get back a response... */ - if ((response = cupsDoRequest(http, request, "/")) != NULL) + response = cupsDoRequest(http, request, "/"); + + if (cupsLastError() > IPP_OK_CONFLICT) { - if (response->request.status.status_code > IPP_OK_CONFLICT) - { - fprintf(stderr, "ERROR: %s get-%s failed: %s\n", prefix, - op == CUPS_GET_PRINTERS ? "printers" : "classes", - ippErrorString(response->request.status.status_code)); - ippDelete(response); - return (-1); - } + fprintf(stderr, "ERROR: %s CUPS-Get-Printers failed: %s\n", prefix, + cupsLastErrorString()); + ippDelete(response); + return (-1); + } + if (response) + { /* * Figure out how many printers/classes we have... */ @@ -261,8 +282,7 @@ poll_server(http_t *http, /* I - HTTP connection */ attr = ippFindNextAttribute(response, "printer-name", IPP_TAG_NAME), max_count ++); - fprintf(stderr, "DEBUG: %s found %d %s.\n", prefix, max_count, - op == CUPS_GET_PRINTERS ? "printers" : "classes"); + fprintf(stderr, "DEBUG: %s Found %d printers.\n", prefix, max_count); count = 0; seconds = time(NULL); @@ -272,58 +292,65 @@ poll_server(http_t *http, /* I - HTTP connection */ * Loop through the printers or classes returned in the list... */ - for (attr = response->attrs; attr != NULL; attr = attr->next) + for (attr = response->attrs; attr; attr = attr->next) { /* * Skip leading attributes until we hit a printer... */ - while (attr != NULL && attr->group_tag != IPP_TAG_PRINTER) + while (attr && attr->group_tag != IPP_TAG_PRINTER) attr = attr->next; - if (attr == NULL) + if (!attr) break; /* * Pull the needed attributes from this printer... */ - uri = NULL; - info = ""; - location = ""; - make_model = ""; - type = CUPS_PRINTER_REMOTE; - accepting = 1; - state = IPP_PRINTER_IDLE; + uri = NULL; + info[0] = '\0'; + job_sheets[0] = '\0'; + location[0] = '\0'; + make_model[0] = '\0'; + type = CUPS_PRINTER_REMOTE; + accepting = 1; + state = IPP_PRINTER_IDLE; while (attr != NULL && attr->group_tag == IPP_TAG_PRINTER) { - if (strcmp(attr->name, "printer-uri-supported") == 0 && - attr->value_tag == IPP_TAG_URI) + if (!strcmp(attr->name, "job-sheets-default") && + (attr->value_tag == IPP_TAG_NAME || + attr->value_tag == IPP_TAG_KEYWORD)) + { + if (attr->num_values == 1) + snprintf(job_sheets, sizeof(job_sheets), " job-sheets=%s", + attr->values[0].string.text); + else + snprintf(job_sheets, sizeof(job_sheets), " job-sheets=%s,%s", + attr->values[0].string.text, + attr->values[1].string.text); + } + else if (!strcmp(attr->name, "printer-uri-supported") && + attr->value_tag == IPP_TAG_URI) uri = attr->values[0].string.text; - - if (strcmp(attr->name, "printer-info") == 0 && - attr->value_tag == IPP_TAG_TEXT) - info = attr->values[0].string.text; - - if (strcmp(attr->name, "printer-is-accepting-jobs") == 0 && - attr->value_tag == IPP_TAG_BOOLEAN) + else if (!strcmp(attr->name, "printer-info") && + attr->value_tag == IPP_TAG_TEXT) + dequote(info, attr->values[0].string.text, sizeof(info)); + else if (!strcmp(attr->name, "printer-is-accepting-jobs") && + attr->value_tag == IPP_TAG_BOOLEAN) accepting = attr->values[0].boolean; - - if (strcmp(attr->name, "printer-location") == 0 && - attr->value_tag == IPP_TAG_TEXT) - location = attr->values[0].string.text; - - if (strcmp(attr->name, "printer-make-and-model") == 0 && - attr->value_tag == IPP_TAG_TEXT) - make_model = attr->values[0].string.text; - - if (strcmp(attr->name, "printer-state") == 0 && - attr->value_tag == IPP_TAG_ENUM) + else if (!strcmp(attr->name, "printer-location") && + attr->value_tag == IPP_TAG_TEXT) + dequote(location, attr->values[0].string.text, sizeof(location)); + else if (!strcmp(attr->name, "printer-make-and-model") && + attr->value_tag == IPP_TAG_TEXT) + dequote(make_model, attr->values[0].string.text, sizeof(location)); + else if (!strcmp(attr->name, "printer-state") && + attr->value_tag == IPP_TAG_ENUM) state = (ipp_pstate_t)attr->values[0].integer; - - if (strcmp(attr->name, "printer-type") == 0 && - attr->value_tag == IPP_TAG_ENUM) + else if (!strcmp(attr->name, "printer-type") && + attr->value_tag == IPP_TAG_ENUM) type = (cups_ptype_t)attr->values[0].integer; attr = attr->next; @@ -350,8 +377,10 @@ poll_server(http_t *http, /* I - HTTP connection */ if (!accepting) type |= CUPS_PRINTER_REJECTING; - snprintf(packet, sizeof(packet), "%x %x %s \"%s\" \"%s\" \"%s\"\n", - type, state, uri, location, info, make_model); + snprintf(packet, sizeof(packet), + "%x %x %s \"%s\" \"%s\" \"%s\" lease-duration=%d%s\n", + type, state, uri, location, info, make_model, interval * 2, + job_sheets); fprintf(stderr, "DEBUG2: %s Sending %s", prefix, packet); @@ -376,22 +405,16 @@ poll_server(http_t *http, /* I - HTTP connection */ */ count = 0; + sleep(1); } - if (attr == NULL) + if (!attr) break; } ippDelete(response); } - else - { - fprintf(stderr, "ERROR: %s get-%s failed: %s\n", prefix, - op == CUPS_GET_PRINTERS ? "printers" : "classes", - ippErrorString(cupsLastError())); - return (-1); - } /* * Return the number of seconds we used... @@ -402,5 +425,5 @@ poll_server(http_t *http, /* I - HTTP connection */ /* - * End of "$Id: cups-polld.c 5305 2006-03-18 03:05:12Z mike $". + * End of "$Id: cups-polld.c 5753 2006-07-18 19:53:24Z mike $". */ diff --git a/scheduler/dirsvc.c b/scheduler/dirsvc.c index e26d20db7..c2e19a970 100644 --- a/scheduler/dirsvc.c +++ b/scheduler/dirsvc.c @@ -1,5 +1,5 @@ /* - * "$Id: dirsvc.c 5663 2006-06-15 20:36:42Z mike $" + * "$Id: dirsvc.c 5724 2006-07-12 19:42:35Z mike $" * * Directory services routines for the Common UNIX Printing System (CUPS). * @@ -212,10 +212,11 @@ cupsdLoadRemoteCache(void) else p = cupsdAddPrinter(value); - p->accepting = 1; - p->state = IPP_PRINTER_IDLE; - p->type |= CUPS_PRINTER_REMOTE; - p->browse_time = now + BrowseTimeout; + p->accepting = 1; + p->state = IPP_PRINTER_IDLE; + p->type |= CUPS_PRINTER_REMOTE; + p->browse_time = now; + p->browse_expire = now + BrowseTimeout; /* * Set the default printer as needed... @@ -252,10 +253,11 @@ cupsdLoadRemoteCache(void) else p = cupsdAddClass(value); - p->accepting = 1; - p->state = IPP_PRINTER_IDLE; - p->type |= CUPS_PRINTER_REMOTE; - p->browse_time = now + BrowseTimeout; + p->accepting = 1; + p->state = IPP_PRINTER_IDLE; + p->type |= CUPS_PRINTER_REMOTE; + p->browse_time = now; + p->browse_expire = now + BrowseTimeout; /* * Set the default printer as needed... @@ -416,8 +418,8 @@ cupsdLoadRemoteCache(void) { time_t t = atoi(value); - if (t > (now + BrowseInterval)) - p->browse_time = t; + if (t > p->browse_expire) + p->browse_expire = t; } else { @@ -591,7 +593,7 @@ cupsdSaveRemoteCache(void) cupsFilePrintf(fp, "Type %d\n", printer->type); - cupsFilePrintf(fp, "BrowseTime %d\n", (int)printer->browse_time); + cupsFilePrintf(fp, "BrowseTime %d\n", (int)printer->browse_expire); if (printer->info) cupsFilePrintf(fp, "Info %s\n", printer->info); @@ -906,14 +908,21 @@ cupsdStartBrowsing(void) fcntl(BrowseSocket, F_SETFD, fcntl(BrowseSocket, F_GETFD) | FD_CLOEXEC); /* - * Finally, add the socket to the input selection set... + * Finally, add the socket to the input selection set as needed... */ - cupsdLogMessage(CUPSD_LOG_DEBUG2, - "cupsdStartBrowsing: Adding fd %d to InputSet...", - BrowseSocket); + if (BrowseRemoteProtocols & BROWSE_CUPS) + { + /* + * We only listen if we want remote printers... + */ - FD_SET(BrowseSocket, InputSet); + cupsdLogMessage(CUPSD_LOG_DEBUG2, + "cupsdStartBrowsing: Adding fd %d to InputSet...", + BrowseSocket); + + FD_SET(BrowseSocket, InputSet); + } } else BrowseSocket = -1; @@ -1885,7 +1894,7 @@ process_browse_data( hptr = strchr(host, '.'); sptr = strchr(ServerName, '.'); - if (sptr != NULL && hptr != NULL) + if (!ServerNameIsIP && sptr != NULL && hptr != NULL) { /* * Strip the common domain name components... @@ -3149,5 +3158,5 @@ slp_url_callback( /* - * End of "$Id: dirsvc.c 5663 2006-06-15 20:36:42Z mike $". + * End of "$Id: dirsvc.c 5724 2006-07-12 19:42:35Z mike $". */ diff --git a/scheduler/ipp.c b/scheduler/ipp.c index 7ed169a44..28115133d 100644 --- a/scheduler/ipp.c +++ b/scheduler/ipp.c @@ -1,5 +1,5 @@ /* - * "$Id: ipp.c 5686 2006-06-21 21:02:56Z mike $" + * "$Id: ipp.c 5736 2006-07-13 19:59:36Z mike $" * * IPP routines for the Common UNIX Printing System (CUPS) scheduler. * @@ -4334,7 +4334,8 @@ copy_printer_attrs( { httpAssembleURIf(HTTP_URI_CODING_ALL, printer_uri, sizeof(printer_uri), "ipp", NULL, con->servername, con->serverport, - "/printers/%s", printer->name); + (printer->type & CUPS_PRINTER_CLASS) ? + "/classes/%s" : "/printers/%s", printer->name); ippAddString(con->response, IPP_TAG_PRINTER, IPP_TAG_URI, "printer-uri-supported", NULL, printer_uri); cupsdLogMessage(CUPSD_LOG_DEBUG2, "printer-uri-supported=\"%s\"", @@ -4822,9 +4823,10 @@ create_subscription( recipient = attr->values[0].string.text; - if (httpSeparateURI(HTTP_URI_CODING_ALL, recipient, scheme, - sizeof(scheme), userpass, sizeof(userpass), host, - sizeof(host), &port, resource, sizeof(resource))) + if (httpSeparateURI(HTTP_URI_CODING_ALL, recipient, + scheme, sizeof(scheme), userpass, sizeof(userpass), + host, sizeof(host), &port, + resource, sizeof(resource)) < HTTP_URI_OK) { send_ipp_status(con, IPP_NOT_POSSIBLE, _("Bad notify-recipient URI \"%s\"!"), recipient); @@ -8808,19 +8810,11 @@ start_printer(cupsd_client_t *con, /* I - Client connection */ cupsdStartPrinter(printer, 1); if (dtype & CUPS_PRINTER_CLASS) - { cupsdLogMessage(CUPSD_LOG_INFO, "Class \"%s\" started by \"%s\".", name, get_username(con)); - cupsdAddEvent(CUPSD_EVENT_PRINTER_MODIFIED, printer, NULL, - "Class \"%s\" started by \"%s\".", name, get_username(con)); - } else - { cupsdLogMessage(CUPSD_LOG_INFO, "Printer \"%s\" started by \"%s\".", name, get_username(con)); - cupsdAddEvent(CUPSD_EVENT_PRINTER_MODIFIED, printer, NULL, - "Printer \"%s\" started by \"%s\".", name, get_username(con)); - } cupsdCheckJobs(); @@ -8904,19 +8898,11 @@ stop_printer(cupsd_client_t *con, /* I - Client connection */ cupsdStopPrinter(printer, 1); if (dtype & CUPS_PRINTER_CLASS) - { cupsdLogMessage(CUPSD_LOG_INFO, "Class \"%s\" stopped by \"%s\".", name, get_username(con)); - cupsdAddEvent(CUPSD_EVENT_PRINTER_MODIFIED, printer, NULL, - "Class \"%s\" stopped by \"%s\".", name, get_username(con)); - } else - { cupsdLogMessage(CUPSD_LOG_INFO, "Printer \"%s\" stopped by \"%s\".", name, get_username(con)); - cupsdAddEvent(CUPSD_EVENT_PRINTER_MODIFIED, printer, NULL, - "Printer \"%s\" stopped by \"%s\".", name, get_username(con)); - } /* * Everything was ok, so return OK status... @@ -9214,5 +9200,5 @@ validate_user(cupsd_job_t *job, /* I - Job */ /* - * End of "$Id: ipp.c 5686 2006-06-21 21:02:56Z mike $". + * End of "$Id: ipp.c 5736 2006-07-13 19:59:36Z mike $". */ diff --git a/scheduler/job.c b/scheduler/job.c index 6c21ed07b..967f9ac67 100644 --- a/scheduler/job.c +++ b/scheduler/job.c @@ -1,5 +1,5 @@ /* - * "$Id: job.c 5686 2006-06-21 21:02:56Z mike $" + * "$Id: job.c 5719 2006-07-11 21:04:48Z mike $" * * Job management routines for the Common UNIX Printing System (CUPS). * @@ -1764,8 +1764,8 @@ compare_active_jobs(void *first, /* I - First job */ int diff; /* Difference */ - if ((diff = ((cupsd_job_t *)first)->priority - - ((cupsd_job_t *)second)->priority) != 0) + if ((diff = ((cupsd_job_t *)second)->priority - + ((cupsd_job_t *)first)->priority) != 0) return (diff); else return (((cupsd_job_t *)first)->id - ((cupsd_job_t *)second)->id); @@ -3022,7 +3022,7 @@ start_job(cupsd_job_t *job, /* I - Job ID */ { snprintf(final_content_type, sizeof(final_content_type), "FINAL_CONTENT_TYPE=%s/%s", - filter->dst->super, filter->dst->type); + filter->src->super, filter->src->type); envp[envc ++] = final_content_type; } @@ -3433,5 +3433,5 @@ unload_job(cupsd_job_t *job) /* I - Job */ /* - * End of "$Id: job.c 5686 2006-06-21 21:02:56Z mike $". + * End of "$Id: job.c 5719 2006-07-11 21:04:48Z mike $". */ diff --git a/scheduler/listen.c b/scheduler/listen.c index 467dcfdc8..098705842 100644 --- a/scheduler/listen.c +++ b/scheduler/listen.c @@ -1,5 +1,5 @@ /* - * "$Id: listen.c 5083 2006-02-06 02:57:43Z mike $" + * "$Id: listen.c 5724 2006-07-12 19:42:35Z mike $" * * Server listening routines for the Common UNIX Printing System (CUPS) * scheduler. @@ -331,7 +331,7 @@ cupsdStartListening(void) * "any" address... */ - if (!LocalPort && p > 0 && + if ((!LocalPort || LocalEncryption == HTTP_ENCRYPT_ALWAYS) && p > 0 && (httpAddrLocalhost(&(lis->address)) || httpAddrAny(&(lis->address)))) { @@ -373,6 +373,8 @@ cupsdStartListening(void) */ cupsdSetEnv("CUPS_SERVER", have_domain); + + LocalEncryption = HTTP_ENCRYPT_IF_REQUESTED; } else { @@ -439,5 +441,5 @@ cupsdStopListening(void) /* - * End of "$Id: listen.c 5083 2006-02-06 02:57:43Z mike $". + * End of "$Id: listen.c 5724 2006-07-12 19:42:35Z mike $". */ diff --git a/scheduler/printers.c b/scheduler/printers.c index c987f1605..f1cb56352 100644 --- a/scheduler/printers.c +++ b/scheduler/printers.c @@ -1,5 +1,5 @@ /* - * "$Id: printers.c 5686 2006-06-21 21:02:56Z mike $" + * "$Id: printers.c 5724 2006-07-12 19:42:35Z mike $" * * Printer routines for the Common UNIX Printing System (CUPS). * @@ -546,6 +546,7 @@ cupsdCreateCommonData(void) } cupsArrayDelete(notifiers); + cupsDirClose(dir); } /* number-up-supported */ @@ -645,6 +646,9 @@ cupsdDeletePrinter( cupsArrayRemove(Printers, p); + if (p->type & CUPS_PRINTER_IMPLICIT) + cupsArrayRemove(ImplicitPrinters, p); + /* * Remove the dummy interface/icon/option files under IRIX... */ @@ -1260,6 +1264,7 @@ cupsdRenamePrinter( */ cupsArrayAdd(Printers, p); + if (p->type & CUPS_PRINTER_IMPLICIT) cupsArrayAdd(ImplicitPrinters, p); } @@ -3307,5 +3312,5 @@ write_irix_state(cupsd_printer_t *p) /* I - Printer to update */ /* - * End of "$Id: printers.c 5686 2006-06-21 21:02:56Z mike $". + * End of "$Id: printers.c 5724 2006-07-12 19:42:35Z mike $". */ diff --git a/scheduler/subscriptions.c b/scheduler/subscriptions.c index 428841306..f27c48ff4 100644 --- a/scheduler/subscriptions.c +++ b/scheduler/subscriptions.c @@ -1,5 +1,5 @@ /* - * "$Id: subscriptions.c 5673 2006-06-16 21:04:45Z mike $" + * "$Id: subscriptions.c 5716 2006-07-11 17:56:57Z mike $" * * Subscription routines for the Common UNIX Printing System (CUPS) scheduler. * @@ -89,6 +89,11 @@ cupsdAddEvent( cupsd_subscription_t *sub; /* Current subscription */ + cupsdLogMessage(CUPSD_LOG_DEBUG2, + "cupsdAddEvent(event=%s, dest=%p(%s), job=%p(%d), text=\"%s\", ...)", + cupsdEventName(event), dest, dest ? dest->name : "", + job, job ? job->id : 0, text); + /* * Keep track of events with any OS-supplied notification mechanisms... */ @@ -284,13 +289,13 @@ cupsdAddEvent( ippAddInteger(temp->attrs, IPP_TAG_EVENT_NOTIFICATION, IPP_TAG_INTEGER, "job-impressions-completed", job->sheets ? job->sheets->values[0].integer : 0); + } - /* - * Send the notification for this subscription... - */ + /* + * Send the notification for this subscription... + */ - cupsd_send_notification(sub, temp); - } + cupsd_send_notification(sub, temp); } } @@ -1379,7 +1384,7 @@ cupsd_send_notification( ipp_state_t state; /* IPP event state */ - cupsdLogMessage(CUPSD_LOG_DEBUG, + cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsd_send_notification(sub=%p(%d), event=%p(%s))\n", sub, sub->id, event, cupsdEventName(event->event)); @@ -1435,13 +1440,16 @@ cupsd_send_notification( if (sub->recipient) { - if (sub->pipe < 0) - cupsd_start_notifier(sub); + for (;;) + { + if (sub->pipe < 0) + cupsd_start_notifier(sub); - cupsdLogMessage(CUPSD_LOG_DEBUG, "sub->pipe=%d", sub->pipe); + cupsdLogMessage(CUPSD_LOG_DEBUG2, "sub->pipe=%d", sub->pipe); + + if (sub->pipe < 0) + break; - if (sub->pipe >= 0) - { event->attrs->state = IPP_IDLE; while ((state = ippWriteFile(sub->pipe, event->attrs)) != IPP_DATA) @@ -1449,9 +1457,34 @@ cupsd_send_notification( break; if (state == IPP_ERROR) + { + if (errno == EPIPE) + { + /* + * Notifier died, try restarting it... + */ + + cupsdLogMessage(CUPSD_LOG_WARN, + "Notifier for subscription %d (%s) went away, " + "retrying!", + sub->id, sub->recipient); + cupsdEndProcess(sub->pid, 0); + + close(sub->pipe); + sub->pipe = -1; + continue; + } + cupsdLogMessage(CUPSD_LOG_ERROR, "Unable to send event for subscription %d (%s)!", sub->id, sub->recipient); + } + + /* + * If we get this far, break out of the loop... + */ + + break; } } @@ -1591,5 +1624,5 @@ cupsd_start_notifier( /* - * End of "$Id: subscriptions.c 5673 2006-06-16 21:04:45Z mike $". + * End of "$Id: subscriptions.c 5716 2006-07-11 17:56:57Z mike $". */ diff --git a/systemv/cancel.c b/systemv/cancel.c index 63c92fcfa..f6d4aed0a 100644 --- a/systemv/cancel.c +++ b/systemv/cancel.c @@ -1,5 +1,5 @@ /* - * "$Id: cancel.c 5091 2006-02-08 18:39:56Z mike $" + * "$Id: cancel.c 5696 2006-06-26 18:34:20Z mike $" * * "cancel" command for the Common UNIX Printing System (CUPS). * @@ -121,7 +121,10 @@ main(int argc, /* I - Number of command-line arguments */ case 'h' : /* Connect to host */ if (http != NULL) + { httpClose(http); + http = NULL; + } if (argv[i][2] != '\0') cupsSetServer(argv[i] + 2); @@ -387,5 +390,5 @@ main(int argc, /* I - Number of command-line arguments */ /* - * End of "$Id: cancel.c 5091 2006-02-08 18:39:56Z mike $". + * End of "$Id: cancel.c 5696 2006-06-26 18:34:20Z mike $". */ diff --git a/systemv/cupsaddsmb.c b/systemv/cupsaddsmb.c index a69e113f1..0c74fbff0 100644 --- a/systemv/cupsaddsmb.c +++ b/systemv/cupsaddsmb.c @@ -1,5 +1,5 @@ /* - * "$Id: cupsaddsmb.c 5233 2006-03-06 03:39:28Z mike $" + * "$Id: cupsaddsmb.c 5753 2006-07-18 19:53:24Z mike $" * * "cupsaddsmb" command for the Common UNIX Printing System (CUPS). * @@ -249,7 +249,9 @@ export_dest(http_t *http, /* I - Connection to server */ if (!SAMBAPassword) { snprintf(prompt, sizeof(prompt), - _("Password for %s required to access %s via SAMBA: "), + _cupsLangString(cupsLangDefault(), + _("Password for %s required to access %s via " + "SAMBA: ")), SAMBAUser, SAMBAServer); if ((SAMBAPassword = cupsGetPassword(prompt)) == NULL) @@ -290,5 +292,5 @@ usage(void) /* - * End of "$Id: cupsaddsmb.c 5233 2006-03-06 03:39:28Z mike $". + * End of "$Id: cupsaddsmb.c 5753 2006-07-18 19:53:24Z mike $". */ diff --git a/systemv/lpoptions.c b/systemv/lpoptions.c index 8e6441d8a..30d57aa48 100644 --- a/systemv/lpoptions.c +++ b/systemv/lpoptions.c @@ -1,5 +1,5 @@ /* - * "$Id: lpoptions.c 4924 2006-01-13 01:55:20Z mike $" + * "$Id: lpoptions.c 5753 2006-07-18 19:53:24Z mike $" * * Printer option program for the Common UNIX Printing System (CUPS). * @@ -164,6 +164,21 @@ main(int argc, /* I - Number of command-line arguments */ break; case 'o' : /* -o option[=value] */ + if (dest == NULL) + { + if (num_dests == 0) + num_dests = cupsGetDests(&dests); + + if ((dest = cupsGetDest(NULL, NULL, num_dests, dests)) == NULL) + dest = dests; + + for (j = 0; j < dest->num_options; j ++) + if (cupsGetOption(dest->options[j].name, num_options, options) == NULL) + num_options = cupsAddOption(dest->options[j].name, + dest->options[j].value, + num_options, &options); + } + if (argv[i][2]) num_options = cupsParseOptions(argv[i] + 2, num_options, &options); else @@ -219,6 +234,21 @@ main(int argc, /* I - Number of command-line arguments */ break; case 'r' : /* -r option (remove) */ + if (dest == NULL) + { + if (num_dests == 0) + num_dests = cupsGetDests(&dests); + + if ((dest = cupsGetDest(NULL, NULL, num_dests, dests)) == NULL) + dest = dests; + + for (j = 0; j < dest->num_options; j ++) + if (cupsGetOption(dest->options[j].name, num_options, options) == NULL) + num_options = cupsAddOption(dest->options[j].name, + dest->options[j].value, + num_options, &options); + } + if (argv[i][2]) option = argv[i] + 2; else @@ -231,7 +261,7 @@ main(int argc, /* I - Number of command-line arguments */ } for (j = 0; j < num_options; j ++) - if (strcasecmp(options[j].name, option) == 0) + if (!strcasecmp(options[j].name, option)) { /* * Remove this option... @@ -452,5 +482,5 @@ usage(void) /* - * End of "$Id: lpoptions.c 4924 2006-01-13 01:55:20Z mike $". + * End of "$Id: lpoptions.c 5753 2006-07-18 19:53:24Z mike $". */ diff --git a/templates/de/add-class.tmpl b/templates/de/add-class.tmpl new file mode 100644 index 000000000..c5bd8e451 --- /dev/null +++ b/templates/de/add-class.tmpl @@ -0,0 +1,33 @@ +
+ + +

Klasse hinzufügen

+ + + + + + + + + + + + + + + + + + + + + + +
Name:
Ort:
Beschreibung:
Mitglieder: + +
+ +
diff --git a/templates/de/add-printer.tmpl b/templates/de/add-printer.tmpl new file mode 100644 index 000000000..db60277f9 --- /dev/null +++ b/templates/de/add-printer.tmpl @@ -0,0 +1,28 @@ +
+ + +

Neuen Drucker hinzufügen

+ + + + + + + + + + + + + + + + + + +
Name:
+(Darf alle druckbaren Zeichen außer "/", "#", und Leerzeichen enthalten)
Ort:
+(Für Menschen lesbarer Ort wie "Labor 1")
Beschreibung:
+(Für Menschen lesbare Beschreibung wie "HP LaserJet mit Duplexeinheit")
+ +
diff --git a/templates/de/admin.tmpl b/templates/de/admin.tmpl new file mode 100644 index 000000000..9bf668631 --- /dev/null +++ b/templates/de/admin.tmpl @@ -0,0 +1,77 @@ + + +
+ +

Drucker

+ +

+Drucker hinzufügen + +{have_samba?Drucker für Samba exportieren:} +

+ +{#device_uri=0?:

Neue Drucker gefunden:

    {[device_uri] +
  • Diesen Drucker hinzufuegen +{device_make_and_model} ({device_info})
  • +}
} + +

Klassen

+ +

+ + +

+ +

Druckaufträge

+ +

+Aufträge
+verwalten +

+ +
      + +

Server

+ +

+Konfigurationsdatei
+bearbeiten +Zugriffsprotokoll betrachten +Fehlerprotokoll betrachten +Seitenprotokoll betrachten +

+ +{SETTINGS_ERROR?

{SETTINGS_MESSAGE}

+
{SETTINGS_ERROR}
: + +
+ +

Grundlegende Servereinstellungen:

+ +

+ Zeige verteilte Drucker von anderen Systemen
+ Verteile publizierte Drucker welche mit diesem System verbunden sind
+ Erlaube entfernte Verwaltung
+ Erlaube Benutzern jeden Auftrag abzubrechen (nicht nur die Eigenen)
+ Speichere Fehlerinformationen für Fehlersuche

+ +

+ +
} + +
diff --git a/templates/de/choose-device.tmpl b/templates/de/choose-device.tmpl new file mode 100644 index 000000000..a45c9ba70 --- /dev/null +++ b/templates/de/choose-device.tmpl @@ -0,0 +1,26 @@ +
+ + + + + + +

Gerät für {printer_name}

+ + + + + + + + + + +
Gerät: + +
+ +
diff --git a/templates/de/choose-make.tmpl b/templates/de/choose-make.tmpl new file mode 100644 index 000000000..db8211792 --- /dev/null +++ b/templates/de/choose-make.tmpl @@ -0,0 +1,42 @@ +
+ + + + + + + + + + +

Marke/Hersteller für {printer_name}

+ + + + + + + + + + + + + + + + + + + + + + +
Marke: + +
 
Oder stellen Sie eine PPD Datei bereit:
+ +
diff --git a/templates/de/choose-model.tmpl b/templates/de/choose-model.tmpl new file mode 100644 index 000000000..17d94b42a --- /dev/null +++ b/templates/de/choose-model.tmpl @@ -0,0 +1,34 @@ +
+ + + + + + + + + + +

Modell/Treiber für {printer_name}

+ + + + + + + + + + + + + + +
Modell: + +
Oder stellen Sie eine PPD Datei bereit:
+ +
diff --git a/templates/de/choose-serial.tmpl b/templates/de/choose-serial.tmpl new file mode 100644 index 000000000..73cca51fc --- /dev/null +++ b/templates/de/choose-serial.tmpl @@ -0,0 +1,47 @@ +
+ + + + + + +

Serielle Anschlusseinstellungen für {printer_name}

+ + + + + + + + + + + + + + + + + + + + + + +
Baud Rate:
Parität:
Daten Bits:
Flußkontrolle:
+ +
diff --git a/templates/de/choose-uri.tmpl b/templates/de/choose-uri.tmpl new file mode 100644 index 000000000..b4068be5a --- /dev/null +++ b/templates/de/choose-uri.tmpl @@ -0,0 +1,42 @@ +
+ + + + + + +

Geräte URI für {printer_name}

+ + + + + + + + + + + + + + +
Geräte URI:
Beispiele: +
+    http://hostname:631/ipp/
+    http://hostname:631/ipp/port1
+
+    ipp://hostname/ipp/
+    ipp://hostname/ipp/port1
+
+    lpd://hostname/warteschlange
+
+    socket://hostname
+    socket://hostname:9100
+
+ +

Bitte lesen Sie "Netzwerk +Drucker" um die korrekte URI für Ihren Drucker zu benutzen.

+ +
+ +
diff --git a/templates/de/class-added.tmpl b/templates/de/class-added.tmpl new file mode 100644 index 000000000..abce91799 --- /dev/null +++ b/templates/de/class-added.tmpl @@ -0,0 +1,2 @@ +

Class {printer_name} wurde erfolgreich +hinzugefügt. diff --git a/templates/de/class-confirm.tmpl b/templates/de/class-confirm.tmpl new file mode 100644 index 000000000..3da201fbc --- /dev/null +++ b/templates/de/class-confirm.tmpl @@ -0,0 +1,7 @@ +

Warning: Sind Sie sicher, daß Sie die Klasse +{printer_name} löschen zu wollen?

+ +

Klasse löschen

diff --git a/templates/de/class-deleted.tmpl b/templates/de/class-deleted.tmpl new file mode 100644 index 000000000..c75fab4e5 --- /dev/null +++ b/templates/de/class-deleted.tmpl @@ -0,0 +1 @@ +

Klasse {printer_name} wurde erfolgreich gelöscht. diff --git a/templates/de/class-jobs-header.tmpl b/templates/de/class-jobs-header.tmpl new file mode 100644 index 000000000..e5b9e08eb --- /dev/null +++ b/templates/de/class-jobs-header.tmpl @@ -0,0 +1 @@ +

Aufträge

diff --git a/templates/de/class-modified.tmpl b/templates/de/class-modified.tmpl new file mode 100644 index 000000000..944b766af --- /dev/null +++ b/templates/de/class-modified.tmpl @@ -0,0 +1,2 @@ +

Klasse {printer_name} wurde +erfolgreich geändert. diff --git a/templates/de/classes-header.tmpl b/templates/de/classes-header.tmpl new file mode 100644 index 000000000..f07d47d2c --- /dev/null +++ b/templates/de/classes-header.tmpl @@ -0,0 +1 @@ +

{total=0?Keine Klassen gefunden:Zeige {#printer_name} von {total} Klasse{total=1?:n}}.

diff --git a/templates/de/classes.tmpl b/templates/de/classes.tmpl new file mode 100644 index 000000000..ef599ad9b --- /dev/null +++ b/templates/de/classes.tmpl @@ -0,0 +1,54 @@ +{#printer_name=0?: +{[printer_name] +

{printer_name}{default_name={printer_name}? (Standarddrucker):} +{?printer_state_message=?:"{printer_state_message}"}

+ + + + + + +
+Beschreibung: {printer_info}
+Ort: {printer_location}
+Klassenstatus: {printer_state=3?frei:{printer_state=4?verarbeitend:gestoppt}}, +{printer_is_accepting_jobs=0?Aufträge ablehnen:Aufträge akzeptieren}, {printer_is_shared=0?nicht:} publiziert. +{?member_uris=?:
Mitglieder: {member_uris}} + +

+ +Testseite drucken +{printer_state=5? + +Klasse starten +: + +Klasse stoppen +} +{printer_is_accepting_jobs=0? + +Aufträge akzeptieren +: + +Aufträge ablehnen +} + +Alle Aufträge abbrechen +{printer_is_shared=0? + +Drucker publizieren +: + +Druckerpublikation aufheben +} + +Klasse ändern + +Klasse löschen + +Setze als Standard + +Erlaubte Benutzer festlegen +

+
+}} diff --git a/templates/de/edit-config.tmpl.in b/templates/de/edit-config.tmpl.in new file mode 100644 index 000000000..4cfcad1a8 --- /dev/null +++ b/templates/de/edit-config.tmpl.in @@ -0,0 +1,91 @@ + + +

Server Konfigurationsdatei

+ +
+ + + + + +

+ +
diff --git a/templates/de/error-op.tmpl b/templates/de/error-op.tmpl new file mode 100644 index 000000000..9e1236c85 --- /dev/null +++ b/templates/de/error-op.tmpl @@ -0,0 +1,3 @@ +

Fehler:

+ +
Unbekannte Operation "{op}"!
diff --git a/templates/de/error.tmpl b/templates/de/error.tmpl new file mode 100644 index 000000000..4653d8ba7 --- /dev/null +++ b/templates/de/error.tmpl @@ -0,0 +1,3 @@ +

{?message?{message}:Fehler:}

+ +
{error}
diff --git a/templates/de/header.tmpl.in b/templates/de/header.tmpl.in new file mode 100644 index 000000000..6ece4d7b1 --- /dev/null +++ b/templates/de/header.tmpl.in @@ -0,0 +1,63 @@ + + + + + {title} - CUPS @CUPS_VERSION@@CUPS_REVISION@ + + + + {refresh_page?:} + + + + + + + + + + + + + + + + + + diff --git a/templates/de/option-conflict.tmpl b/templates/de/option-conflict.tmpl new file mode 100644 index 000000000..95b69f721 --- /dev/null +++ b/templates/de/option-conflict.tmpl @@ -0,0 +1,7 @@ +

Error: Die folgenden Parameter stehen im Konflikt zueinander:

+ + + +

Bitte ändern Sie einen oder mehrere Parameter um die Konflikte zu beheben.

diff --git a/templates/de/option-header.tmpl b/templates/de/option-header.tmpl new file mode 100644 index 000000000..cafc9f9fe --- /dev/null +++ b/templates/de/option-header.tmpl @@ -0,0 +1,3 @@ +

{printer_name}: {group}

+ +

{title}

+ +  Startseite   + +   Verwaltung   + +   Klassen   + +   Dokumentation/Hilfe   + +   Aufträge   + +   Drucker   + +
  diff --git a/templates/de/help-header.tmpl b/templates/de/help-header.tmpl new file mode 100644 index 000000000..80655cd89 --- /dev/null +++ b/templates/de/help-header.tmpl @@ -0,0 +1,46 @@ +
+{TOPIC?:} + +

Suche in +{HELPTITLE?{HELPTITLE}:{TOPIC?{TOPIC}:Alle Dokumente}}: +Leeren

+ +
+ + + + +{QUERY?

Suchresultate in {HELPFILE?{HELPTITLE}:{TOPIC?{TOPIC}:Alle Dokumente}}\:

+{QTEXT?:} +:

Keine Übereinstimmung gefunden.

} +
:} +{HELPTITLE?

{HELPTITLE} +Druckversion anzeigen

:

CUPS Hilfeseiten

+ +

Dies ist das CUPS online Hilfesystem. Geben Sie Ihren Suchbegriff +oben ein oder klicken Sie auf einen der Dokumentationslinks +um sich die Online Hilfe Informationen anzeigen zu lassen

+ +

Wenn Sie noch unerfahren im Umgang mit CUPS sind, lesen Sie die +"CUPS Übersicht". +Erfahrene Benutzer sollten "Was ist neu in CUPS 1.2" lesen.

+ +

Die CUPS Home Page bietet +ebenfalls viele Angebote inklusive Benutzer Diskussionsforen, +Antworten auf häufig gestellte Fragen, und ein Formular für +Fehlerberichte und Wünsche.

} diff --git a/templates/de/help-printable.tmpl b/templates/de/help-printable.tmpl new file mode 100644 index 000000000..305112a33 --- /dev/null +++ b/templates/de/help-printable.tmpl @@ -0,0 +1,11 @@ + + + + + {HELPTITLE} + + + + + +

{HELPTITLE}

diff --git a/templates/de/job-cancel.tmpl b/templates/de/job-cancel.tmpl new file mode 100644 index 000000000..06b305c6f --- /dev/null +++ b/templates/de/job-cancel.tmpl @@ -0,0 +1 @@ +

Auftrag {job_id} wurde abgebrochen. diff --git a/templates/de/job-hold.tmpl b/templates/de/job-hold.tmpl new file mode 100644 index 000000000..7e4c4778c --- /dev/null +++ b/templates/de/job-hold.tmpl @@ -0,0 +1 @@ +

Auftrag {job_id} wurde angehalten. diff --git a/templates/de/job-move.tmpl b/templates/de/job-move.tmpl new file mode 100644 index 000000000..f48f25189 --- /dev/null +++ b/templates/de/job-move.tmpl @@ -0,0 +1,22 @@ +

+ +{job_id?:} + +

{job_id?Verschiebe Auftrag {job_id}:Verschiebe alle Aufträge}

+ + + + + + + + + + +
Neues Ziel: + +
+ +
diff --git a/templates/de/job-moved.tmpl b/templates/de/job-moved.tmpl new file mode 100644 index 000000000..2d2b28789 --- /dev/null +++ b/templates/de/job-moved.tmpl @@ -0,0 +1,2 @@ +

{job_id?Auftrag {job_id}:All jobs} verschoben nach +{job_printer_name}.

diff --git a/templates/de/job-release.tmpl b/templates/de/job-release.tmpl new file mode 100644 index 000000000..34279d6f8 --- /dev/null +++ b/templates/de/job-release.tmpl @@ -0,0 +1 @@ +

Auftrag {job_id} wurde für Druck freigegeben. diff --git a/templates/de/job-restart.tmpl b/templates/de/job-restart.tmpl new file mode 100644 index 000000000..940611763 --- /dev/null +++ b/templates/de/job-restart.tmpl @@ -0,0 +1 @@ +

Auftrag {job_id} wurde neu gestartet. diff --git a/templates/de/jobs-header.tmpl b/templates/de/jobs-header.tmpl new file mode 100644 index 000000000..419c77910 --- /dev/null +++ b/templates/de/jobs-header.tmpl @@ -0,0 +1,15 @@ +

{?which_jobs=?Fertige Aufträge anzeigen +Alle Aufträge anzeigen:{which_jobs=all?Fertige Aufträge anzeigen +Aktive Aufträge anzeigen:Aktive Aufträge anzeigen +Alle Aufträge anzeigen}}

+ +

{total=0?Keine Aufträge gefunden:Zeige {#job_id} von {total} {?which_jobs=?active:{which_jobs=all?:fertigen}} {total=1?Auftrag:Aufträgen}}.

diff --git a/templates/de/jobs.tmpl b/templates/de/jobs.tmpl new file mode 100644 index 000000000..0553eb700 --- /dev/null +++ b/templates/de/jobs.tmpl @@ -0,0 +1,42 @@ +{#job_id=0?: + + + + + + + + + + + +{[job_id] + + + + + + + + + +} +
ID Name Benutzer Größe Seiten Status Kontrolle 
{job_printer_name}-{job_id} {?job_name=?Unbekannt:{job_name}} {job_originating_user_name} {job_k_octets}k {job_media_sheets_completed=0?Unbekannt:{?job_media_sheets_completed}}{job_state=3?schwebend seit
{time_at_creation}:{job_state=4?angehalten seit
{time_at_creation}: +{job_state=5?verarbeitet seit
{time_at_processing}:{job_state=6?gestoppt um
{time_at_completed}: +{job_state=7?abgebrochen um
{time_at_completed}:{job_state=8?aborted:beendet um
{time_at_completed}}}}}}} 
+{job_preserved>0? + +Auftrag neu drucken:} +{job_state=4? + +Auftrag freigeben:} +{job_state=3? + +Auftrag anhalten:} +{job_state<7? + +Auftrag abbrechen +Auftrag verschieben:} + 
+} diff --git a/templates/de/maintenance.tmpl b/templates/de/maintenance.tmpl new file mode 100644 index 000000000..811c40107 --- /dev/null +++ b/templates/de/maintenance.tmpl @@ -0,0 +1,2 @@ +

Wartungskommando gesendet; Auftrags ID ist +{printer_name}-{job_id}.

diff --git a/templates/de/modify-class.tmpl b/templates/de/modify-class.tmpl new file mode 100644 index 000000000..779891359 --- /dev/null +++ b/templates/de/modify-class.tmpl @@ -0,0 +1,34 @@ +
+ + +

Klasse {printer_name} ändern

+ + + + + + + + + + + + + + + + + + + + + + +
Name: +{printer_name}
Ort:
Beschreibung:
Mitglieder: + +
+ +
diff --git a/templates/de/modify-printer.tmpl b/templates/de/modify-printer.tmpl new file mode 100644 index 000000000..54323dfa5 --- /dev/null +++ b/templates/de/modify-printer.tmpl @@ -0,0 +1,29 @@ +
+ +{?device_uri=?:} +{?printer_make_and_model=?:} + +

Drucker {printer_name} ändern

+ + + + + + + + + + + + + + + + + + +
Name:{printer_name}
Ort:
+(Für Menschen lesbarer Ort wie "Labor 1")
Beschreibung:
+(Für Menschen lesbare Beschreibung wie "HP LaserJet mit Duplexeinheit")
+ +
diff --git a/templates/de/option-boolean.tmpl b/templates/de/option-boolean.tmpl new file mode 100644 index 000000000..72c85189a --- /dev/null +++ b/templates/de/option-boolean.tmpl @@ -0,0 +1,6 @@ +
{keytext}: +{[choices]{text}} +
diff --git a/templates/de/option-pickmany.tmpl b/templates/de/option-pickmany.tmpl new file mode 100644 index 000000000..d2534af75 --- /dev/null +++ b/templates/de/option-pickmany.tmpl @@ -0,0 +1,6 @@ + + + + diff --git a/templates/de/option-pickone.tmpl b/templates/de/option-pickone.tmpl new file mode 100644 index 000000000..08342d06e --- /dev/null +++ b/templates/de/option-pickone.tmpl @@ -0,0 +1,6 @@ + + + + diff --git a/templates/de/option-trailer.tmpl b/templates/de/option-trailer.tmpl new file mode 100644 index 000000000..02c7a962c --- /dev/null +++ b/templates/de/option-trailer.tmpl @@ -0,0 +1,5 @@ + + + + +
{keytext}:
{keytext}:
diff --git a/templates/de/pager.tmpl b/templates/de/pager.tmpl new file mode 100644 index 000000000..fc602f78a --- /dev/null +++ b/templates/de/pager.tmpl @@ -0,0 +1,7 @@ + + + + + + +
{PREVURL?Vorherige anzeigen: }{ORDER=dec?Aufsteigend sortieren:Absteigend sortieren}{NEXTURL?Nächste anzeigen: }
diff --git a/templates/de/printer-accept.tmpl b/templates/de/printer-accept.tmpl new file mode 100644 index 000000000..5980e5bf0 --- /dev/null +++ b/templates/de/printer-accept.tmpl @@ -0,0 +1,3 @@ +

{is_class?Klasse:Drucker} {printer_name} +akzeptiert jetzt Aufträge.

diff --git a/templates/de/printer-added.tmpl b/templates/de/printer-added.tmpl new file mode 100644 index 000000000..0ce8e8c4f --- /dev/null +++ b/templates/de/printer-added.tmpl @@ -0,0 +1,2 @@ +

Drucker {printer_name} wurde erfolgreich +hinzugefügt. diff --git a/templates/de/printer-configured.tmpl b/templates/de/printer-configured.tmpl new file mode 100644 index 000000000..a0469e61e --- /dev/null +++ b/templates/de/printer-configured.tmpl @@ -0,0 +1,2 @@ +

Drucker {printer_name} wurde +erfolgreich konfiguriert. diff --git a/templates/de/printer-confirm.tmpl b/templates/de/printer-confirm.tmpl new file mode 100644 index 000000000..311cd11ae --- /dev/null +++ b/templates/de/printer-confirm.tmpl @@ -0,0 +1,7 @@ +

Warnung: Sind Sie sicher, daß Sie den Drucker +{printer_name} löschen wollen?

+ +

Drucker löschen

diff --git a/templates/de/printer-default.tmpl b/templates/de/printer-default.tmpl new file mode 100644 index 000000000..d04a326d4 --- /dev/null +++ b/templates/de/printer-default.tmpl @@ -0,0 +1,7 @@ +

{is_class?Klasse:Drucker} {printer_name} +wurde zum Standarddrucker für diesen Server bestimmt.

+ +
Notiz: Jede benutzerspezifische Standardeinstellung welche +mit dem Befehl lpoptions gemacht wird überschreibt diese +Standardeinstellung.
diff --git a/templates/de/printer-deleted.tmpl b/templates/de/printer-deleted.tmpl new file mode 100644 index 000000000..4489a7306 --- /dev/null +++ b/templates/de/printer-deleted.tmpl @@ -0,0 +1 @@ +

Drucker {printer_name} wurde erfolgreich gelöscht. diff --git a/templates/de/printer-jobs-header.tmpl b/templates/de/printer-jobs-header.tmpl new file mode 100644 index 000000000..e5b9e08eb --- /dev/null +++ b/templates/de/printer-jobs-header.tmpl @@ -0,0 +1 @@ +

Aufträge

diff --git a/templates/de/printer-modified.tmpl b/templates/de/printer-modified.tmpl new file mode 100644 index 000000000..dc1c104bf --- /dev/null +++ b/templates/de/printer-modified.tmpl @@ -0,0 +1,2 @@ +

Drucker {printer_name} wurde +erfolgreich geändert. diff --git a/templates/de/printer-purge.tmpl b/templates/de/printer-purge.tmpl new file mode 100644 index 000000000..cafa5e819 --- /dev/null +++ b/templates/de/printer-purge.tmpl @@ -0,0 +1,3 @@ +

{is_class?Klasse:Drucker} {printer_name} +wurde aus allen Aufträgen eliminiert.

diff --git a/templates/de/printer-reject.tmpl b/templates/de/printer-reject.tmpl new file mode 100644 index 000000000..513bba1bf --- /dev/null +++ b/templates/de/printer-reject.tmpl @@ -0,0 +1,3 @@ +

{is_class?Klasse:Drucker} {printer_name} +akzeptiert ab sofort keine Aufträge mehr.

diff --git a/templates/de/printer-start.tmpl b/templates/de/printer-start.tmpl new file mode 100644 index 000000000..e6836c783 --- /dev/null +++ b/templates/de/printer-start.tmpl @@ -0,0 +1,3 @@ +

{is_class?Klasse:Drucker} {printer_name} +wurde gestartet.

diff --git a/templates/de/printer-stop.tmpl b/templates/de/printer-stop.tmpl new file mode 100644 index 000000000..64cbd7294 --- /dev/null +++ b/templates/de/printer-stop.tmpl @@ -0,0 +1,3 @@ +

{is_class?Klasse:Drucker} {printer_name} +wurde gestoppt.

diff --git a/templates/de/printers-header.tmpl b/templates/de/printers-header.tmpl new file mode 100644 index 000000000..b247590d9 --- /dev/null +++ b/templates/de/printers-header.tmpl @@ -0,0 +1 @@ +

{total=0?Keine Drucker gefunden:Zeige {#printer_name} von {total} Drucker{total=1?:n}}.

diff --git a/templates/de/printers.tmpl b/templates/de/printers.tmpl new file mode 100644 index 000000000..7ddde77b7 --- /dev/null +++ b/templates/de/printers.tmpl @@ -0,0 +1,64 @@ +{printer_type?:}{#printer_name=0?: +{[printer_name] +

{printer_name}{default_name={printer_name}? (Standarddrucker):} +{?printer_state_message=?:"{printer_state_message}"}

+ + + + + + +
+ +Beschreibung: {printer_info}
+Ort: {printer_location}
+Marke und Modell: {printer_make_and_model}
+Druckerstatus: {printer_state=3?frei:{printer_state=4?verarbeitend:gestoppt}}, +{printer_is_accepting_jobs=0?Aufträge ablehnen:Aufträge akzeptieren}, {printer_is_shared=0?nicht:} publiziert. +{?device_uri=?:
Geräte URI: {device_uri}} + +

+ +Testseite drucken +{?cupscommand=1? +Druckköpfe reinigen + +Selbsttest-Seite drucken:} +{printer_state=5? + +Drucker starten +: + +Drucker stoppen +} +{printer_is_accepting_jobs=0? + +Aufträge akzeptieren +: + +Aufträge ablehnen +} + +Alle Aufträge verschieben + +Aufträge abbrechen +{printer_is_shared=0? + +Drucker publizieren +: + +Druckerpublikation aufheben +} + +Drucker ändern + +Druckereinstellungen festlegen + +Drucker löschen + +Als Standard festlegen + +Erlaubte Benutzer festlegen +

+
+}} diff --git a/templates/de/restart.tmpl b/templates/de/restart.tmpl new file mode 100644 index 000000000..28f93bd50 --- /dev/null +++ b/templates/de/restart.tmpl @@ -0,0 +1 @@ +

Bitte warten Sie während der Server neu startet...

diff --git a/templates/de/samba-export.tmpl b/templates/de/samba-export.tmpl new file mode 100644 index 000000000..d76d40118 --- /dev/null +++ b/templates/de/samba-export.tmpl @@ -0,0 +1,55 @@ + + +
+ + +

Exportiere Drucker für Samba

+ +{error?

Kann Drucker nicht für Samba exportieren\:

+
{error}
+

Konsultieren Sie die error_log Datei um mehr Informationen zu erhalten.

: +

Diese Seite erlaubt es Ihnen Drucker für Samba bereitzustellen +damit auf diese mittels Windows Clients über die Desktopsymbole +Netzwerk Nachbarn oder Netzwerkumgebung +zugegriffen werden kann. Sie müssen zuerst einen +Windows PostScript Druckerteiber installieren wie diese in der Hilfe für cupsaddsmb(8) beschrieben ist.

} + + + + + + + + + + + + + + + + + + +
Drucker: +
+ Alle Drucker exportieren +
Samba Benutzername: (required)
Samba Passwort: (required)
+ +
diff --git a/templates/de/samba-exported.tmpl b/templates/de/samba-exported.tmpl new file mode 100644 index 000000000..ff032b124 --- /dev/null +++ b/templates/de/samba-exported.tmpl @@ -0,0 +1 @@ +

Drucker wurden fü Samba erfolgreich exportiert.

diff --git a/templates/de/search.tmpl b/templates/de/search.tmpl new file mode 100644 index 000000000..fa5313491 --- /dev/null +++ b/templates/de/search.tmpl @@ -0,0 +1,13 @@ +
+{WHICH_JOBS?:} +{ORDER?:} + +

Suche in +{SEARCH_DEST?{SEARCH_DEST}:{SECTION=classes?Klassen:{SECTION=jobs?Aufträge:Drucker}}}: + +Leeren

+ +
diff --git a/templates/de/set-printer-options-header.tmpl b/templates/de/set-printer-options-header.tmpl new file mode 100644 index 000000000..864f9f0ce --- /dev/null +++ b/templates/de/set-printer-options-header.tmpl @@ -0,0 +1,3 @@ +
+ + diff --git a/templates/de/set-printer-options-trailer.tmpl b/templates/de/set-printer-options-trailer.tmpl new file mode 100644 index 000000000..a3d1e1ffa --- /dev/null +++ b/templates/de/set-printer-options-trailer.tmpl @@ -0,0 +1 @@ +
diff --git a/templates/de/test-page.tmpl b/templates/de/test-page.tmpl new file mode 100644 index 000000000..a9a4bbd8a --- /dev/null +++ b/templates/de/test-page.tmpl @@ -0,0 +1,2 @@ +

Testseite gesendet; Auftrags ID ist +{printer_name}-{job_id}.

diff --git a/templates/de/trailer.tmpl b/templates/de/trailer.tmpl new file mode 100644 index 000000000..f2f9bb9fa --- /dev/null +++ b/templates/de/trailer.tmpl @@ -0,0 +1,21 @@ + +  + + + + + +

Das Common UNIX Printing System, CUPS, und das CUPS Logo sind +eingetragene Warenzeichen der Easy Software +Products. CUPS ist urheberrechtlich geschützt 1997-2006 von Easy Software Products, +Alle Rechte vorbehalten.

+ + + + + + + + diff --git a/templates/de/users.tmpl b/templates/de/users.tmpl new file mode 100644 index 000000000..d2c9ba86f --- /dev/null +++ b/templates/de/users.tmpl @@ -0,0 +1,26 @@ +
+ + +{IS_CLASS?:} + +

Berechtigte Benutzer für {printer_name}

+ + + + + + + + + + +
Benutzer: + +
+Erlaube diesen Benutzern zu drucken +Verweigere diesen Benutzern zu drucken +
+ +
+ +
diff --git a/templates/ja/printers.tmpl b/templates/ja/printers.tmpl index 457f12152..716e159fd 100644 --- a/templates/ja/printers.tmpl +++ b/templates/ja/printers.tmpl @@ -12,7 +12,7 @@ 場所: {printer_location}
メーカとモデル: {printer_make_and_model}
プリンタの状態: {printer_state=3?待機中:{printer_state=4?処理中:停止}}, -{printer_is_accepting_jobs=0?ジョブを拒否中:ジョブを受け付け中}, {printer_is_shared=0?not:} 公開。 +{printer_is_accepting_jobs=0?ジョブを拒否中:ジョブを受け付け中}, {printer_is_shared=0?非:}公開。 {?device_uri=?:
デバイス URI: {device_uri}}

diff --git a/test/ipptest.c b/test/ipptest.c index 98843ff6c..8a294e9a0 100644 --- a/test/ipptest.c +++ b/test/ipptest.c @@ -1,5 +1,5 @@ /* - * "$Id: ipptest.c 5414 2006-04-17 20:07:24Z mike $" + * "$Id: ipptest.c 5741 2006-07-17 18:36:20Z mike $" * * IPP test command for the Common UNIX Printing System (CUPS). * @@ -122,6 +122,7 @@ main(int argc, /* I - Number of command-line arguments */ int status; /* Status of tests... */ const char *uri; /* URI to use */ const char *testfile; /* Test file to use */ + int interval; /* Test interval */ /* @@ -133,6 +134,7 @@ main(int argc, /* I - Number of command-line arguments */ uri = NULL; testfile = NULL; status = 0; + interval = 0; for (i = 1; i < argc; i ++) { @@ -140,6 +142,15 @@ main(int argc, /* I - Number of command-line arguments */ { if (!strcmp(argv[i], "-v")) Verbosity ++; + else if (!strcmp(argv[i], "-i")) + { + i++; + + if (i >= argc) + usage(NULL); + else + interval = atoi(argv[i]); + } else usage(argv[i]); } @@ -173,6 +184,19 @@ main(int argc, /* I - Number of command-line arguments */ if (!uri || !testfile) usage(NULL); + /* + * Loop if the interval is set... + */ + + if (interval) + { + for (;;) + { + sleep(interval); + do_tests(uri, testfile); + } + } + /* * Exit... */ @@ -890,12 +914,13 @@ usage(const char *option) /* I - Option string or NULL */ fputs("Usage: ipptest [options] URL testfile [ ... testfileN ]\n", stderr); fputs("Options:\n", stderr); fputs("\n", stderr); - fputs("-v Show all attributes in response, even on success.\n", stderr); + fputs("-i N Repeat the last test file once every N seconds.\n", stderr); + fputs("-v Show all attributes in response, even on success.\n", stderr); exit(1); } /* - * End of "$Id: ipptest.c 5414 2006-04-17 20:07:24Z mike $". + * End of "$Id: ipptest.c 5741 2006-07-17 18:36:20Z mike $". */ -- 2.39.2