]> git.ipfire.org Git - thirdparty/cups.git/commitdiff
Load cups into easysw/current.
authorjlovell <jlovell@a1ca3aef-8c08-0410-bb20-df032aa958be>
Thu, 20 Jul 2006 22:59:35 +0000 (22:59 +0000)
committerjlovell <jlovell@a1ca3aef-8c08-0410-bb20-df032aa958be>
Thu, 20 Jul 2006 22:59:35 +0000 (22:59 +0000)
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@194 a1ca3aef-8c08-0410-bb20-df032aa958be

174 files changed:
CHANGES.txt
backend/easysw-firewire-design.txt [deleted file]
backend/easysw-firewire-linux.txt [deleted file]
backend/ieee1394-linux.c [deleted file]
backend/ieee1394.c [deleted file]
backend/ieee1394.h [deleted file]
backend/ipp.c
backend/parallel.c
backend/runloop.c
backend/snmp.c
backend/usb-unix.c
berkeley/lprm.c
config-scripts/cups-compiler.m4
config-scripts/cups-defaults.m4
config-scripts/cups-directories.m4
cups-config.in
cups/Dependencies
cups/adminutil.c
cups/dest.c
cups/emit.c
cups/encode.c
cups/globals.h
cups/http.c
cups/http.h
cups/ipp-private.h
cups/language.c
cups/mark.c
cups/testipp.c
cups/testppd.c
cups/util.c
doc/Makefile
doc/de/images/button-accept-jobs.gif [new file with mode: 0644]
doc/de/images/button-add-class.gif [new file with mode: 0644]
doc/de/images/button-add-printer.gif [new file with mode: 0644]
doc/de/images/button-add-this-printer.gif [new file with mode: 0644]
doc/de/images/button-cancel-all-jobs.gif [new file with mode: 0644]
doc/de/images/button-cancel-job.gif [new file with mode: 0644]
doc/de/images/button-change-settings.gif [new file with mode: 0644]
doc/de/images/button-clean-print-heads.gif [new file with mode: 0644]
doc/de/images/button-clear.gif [new file with mode: 0644]
doc/de/images/button-continue.gif [new file with mode: 0644]
doc/de/images/button-delete-class.gif [new file with mode: 0644]
doc/de/images/button-delete-printer.gif [new file with mode: 0644]
doc/de/images/button-edit-configuration-file.gif [new file with mode: 0644]
doc/de/images/button-export-samba.gif [new file with mode: 0644]
doc/de/images/button-help.gif [new file with mode: 0644]
doc/de/images/button-hold-job.gif [new file with mode: 0644]
doc/de/images/button-manage-classes.gif [new file with mode: 0644]
doc/de/images/button-manage-jobs.gif [new file with mode: 0644]
doc/de/images/button-manage-printers.gif [new file with mode: 0644]
doc/de/images/button-manage-server.gif [new file with mode: 0644]
doc/de/images/button-modify-class.gif [new file with mode: 0644]
doc/de/images/button-modify-printer.gif [new file with mode: 0644]
doc/de/images/button-move-job.gif [new file with mode: 0644]
doc/de/images/button-move-jobs.gif [new file with mode: 0644]
doc/de/images/button-print-self-test-page.gif [new file with mode: 0644]
doc/de/images/button-print-test-page.gif [new file with mode: 0644]
doc/de/images/button-publish-printer.gif [new file with mode: 0644]
doc/de/images/button-reject-jobs.gif [new file with mode: 0644]
doc/de/images/button-release-job.gif [new file with mode: 0644]
doc/de/images/button-restart-job.gif [new file with mode: 0644]
doc/de/images/button-save-changes.gif [new file with mode: 0644]
doc/de/images/button-search.gif [new file with mode: 0644]
doc/de/images/button-set-allowed-users.gif [new file with mode: 0644]
doc/de/images/button-set-as-default.gif [new file with mode: 0644]
doc/de/images/button-set-printer-options.gif [new file with mode: 0644]
doc/de/images/button-show-active.gif [new file with mode: 0644]
doc/de/images/button-show-all.gif [new file with mode: 0644]
doc/de/images/button-show-completed.gif [new file with mode: 0644]
doc/de/images/button-show-next.gif [new file with mode: 0644]
doc/de/images/button-show-previous.gif [new file with mode: 0644]
doc/de/images/button-sort-ascending.gif [new file with mode: 0644]
doc/de/images/button-sort-descending.gif [new file with mode: 0644]
doc/de/images/button-start-class.gif [new file with mode: 0644]
doc/de/images/button-start-printer.gif [new file with mode: 0644]
doc/de/images/button-stop-class.gif [new file with mode: 0644]
doc/de/images/button-stop-printer.gif [new file with mode: 0644]
doc/de/images/button-unpublish-printer.gif [new file with mode: 0644]
doc/de/images/button-view-access-log.gif [new file with mode: 0644]
doc/de/images/button-view-error-log.gif [new file with mode: 0644]
doc/de/images/button-view-page-log.gif [new file with mode: 0644]
doc/de/images/button-view-printable-version.gif [new file with mode: 0644]
doc/de/index.html.in [new file with mode: 0644]
doc/help/policies.html [new file with mode: 0644]
doc/help/ref-mailto-conf.html [new file with mode: 0644]
filter/rastertolabel.c
locale/cups_de.po [new file with mode: 0644]
locale/cups_ja.po
man/Makefile
man/lpadmin.man
man/mailto.conf.man [new file with mode: 0644]
notifier/testnotify.c
packaging/cups.list.in
packaging/cups.spec.in
pdftops/PSOutputDev.cxx
ppd/zebracpl.ppd
scheduler/Makefile
scheduler/client.c
scheduler/conf.c
scheduler/conf.h
scheduler/cups-polld.c
scheduler/dirsvc.c
scheduler/ipp.c
scheduler/job.c
scheduler/listen.c
scheduler/printers.c
scheduler/subscriptions.c
systemv/cancel.c
systemv/cupsaddsmb.c
systemv/lpoptions.c
templates/de/add-class.tmpl [new file with mode: 0644]
templates/de/add-printer.tmpl [new file with mode: 0644]
templates/de/admin.tmpl [new file with mode: 0644]
templates/de/choose-device.tmpl [new file with mode: 0644]
templates/de/choose-make.tmpl [new file with mode: 0644]
templates/de/choose-model.tmpl [new file with mode: 0644]
templates/de/choose-serial.tmpl [new file with mode: 0644]
templates/de/choose-uri.tmpl [new file with mode: 0644]
templates/de/class-added.tmpl [new file with mode: 0644]
templates/de/class-confirm.tmpl [new file with mode: 0644]
templates/de/class-deleted.tmpl [new file with mode: 0644]
templates/de/class-jobs-header.tmpl [new file with mode: 0644]
templates/de/class-modified.tmpl [new file with mode: 0644]
templates/de/classes-header.tmpl [new file with mode: 0644]
templates/de/classes.tmpl [new file with mode: 0644]
templates/de/edit-config.tmpl.in [new file with mode: 0644]
templates/de/error-op.tmpl [new file with mode: 0644]
templates/de/error.tmpl [new file with mode: 0644]
templates/de/header.tmpl.in [new file with mode: 0644]
templates/de/help-header.tmpl [new file with mode: 0644]
templates/de/help-printable.tmpl [new file with mode: 0644]
templates/de/job-cancel.tmpl [new file with mode: 0644]
templates/de/job-hold.tmpl [new file with mode: 0644]
templates/de/job-move.tmpl [new file with mode: 0644]
templates/de/job-moved.tmpl [new file with mode: 0644]
templates/de/job-release.tmpl [new file with mode: 0644]
templates/de/job-restart.tmpl [new file with mode: 0644]
templates/de/jobs-header.tmpl [new file with mode: 0644]
templates/de/jobs.tmpl [new file with mode: 0644]
templates/de/maintenance.tmpl [new file with mode: 0644]
templates/de/modify-class.tmpl [new file with mode: 0644]
templates/de/modify-printer.tmpl [new file with mode: 0644]
templates/de/option-boolean.tmpl [new file with mode: 0644]
templates/de/option-conflict.tmpl [new file with mode: 0644]
templates/de/option-header.tmpl [new file with mode: 0644]
templates/de/option-pickmany.tmpl [new file with mode: 0644]
templates/de/option-pickone.tmpl [new file with mode: 0644]
templates/de/option-trailer.tmpl [new file with mode: 0644]
templates/de/pager.tmpl [new file with mode: 0644]
templates/de/printer-accept.tmpl [new file with mode: 0644]
templates/de/printer-added.tmpl [new file with mode: 0644]
templates/de/printer-configured.tmpl [new file with mode: 0644]
templates/de/printer-confirm.tmpl [new file with mode: 0644]
templates/de/printer-default.tmpl [new file with mode: 0644]
templates/de/printer-deleted.tmpl [new file with mode: 0644]
templates/de/printer-jobs-header.tmpl [new file with mode: 0644]
templates/de/printer-modified.tmpl [new file with mode: 0644]
templates/de/printer-purge.tmpl [new file with mode: 0644]
templates/de/printer-reject.tmpl [new file with mode: 0644]
templates/de/printer-start.tmpl [new file with mode: 0644]
templates/de/printer-stop.tmpl [new file with mode: 0644]
templates/de/printers-header.tmpl [new file with mode: 0644]
templates/de/printers.tmpl [new file with mode: 0644]
templates/de/restart.tmpl [new file with mode: 0644]
templates/de/samba-export.tmpl [new file with mode: 0644]
templates/de/samba-exported.tmpl [new file with mode: 0644]
templates/de/search.tmpl [new file with mode: 0644]
templates/de/set-printer-options-header.tmpl [new file with mode: 0644]
templates/de/set-printer-options-trailer.tmpl [new file with mode: 0644]
templates/de/test-page.tmpl [new file with mode: 0644]
templates/de/trailer.tmpl [new file with mode: 0644]
templates/de/users.tmpl [new file with mode: 0644]
templates/ja/printers.tmpl
test/ipptest.c

index c866727c88a1a3a0a8334b9c0b0a43211deb840f..f55439e5f1445614adb1b7f007f7dd8133a396c9 100644 (file)
@@ -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 (file)
index 194c487..0000000
+++ /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 (file)
index a8e4611..0000000
+++ /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 (file)
index b95e820..0000000
+++ /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 <cups/debug.h>
-#include <libraw1394/raw1394.h>
-#include <libraw1394/csr.h>
-
-
-/*
- * 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 (file)
index 3d88c7a..0000000
+++ /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 (file)
index 19181c5..0000000
+++ /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 <cups/cups.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <stdarg.h>
-#include <cups/string.h>
-#include <errno.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <signal.h>
-
-#ifdef WIN32
-#  include <io.h>
-#else
-#  include <unistd.h>
-#  include <fcntl.h>
-#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 $".
- */
index 4bcd3c7943a8192edb1eb7007380243f56ef11ab..e64d6c44c4966a2dffc863236dc9bcacfa06ff11 100644 (file)
@@ -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 $".
  */
index 3b8c9ba099e9dc9cc09ec5290c7cc8437f62a1d5..c223fb06c507738cdc66dd138cb84940f4ce0b56 100644 (file)
@@ -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 $".
  */
index 6393ed50799b11a445a61175f971d4f9a76ee61f..03bb09282643ea74e249aa57a9af8fce4d9b5ac1 100644 (file)
@@ -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 $".
  */
index 8ac2dea4fd004c11f953fa41b194399c9d587fd9..56e7ad9e79b48713d4ea5e8b59ecffb1e1b3c714 100644 (file)
@@ -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 $".
  */
index 13b2dc049b38641f74b3bda2bd17b63e4fa4361f..94544df5eff9134751180f126932e67f1d1ca883 100644 (file)
@@ -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 $".
  */
index 67479b5a3a4a4ca30d2a45427138c58086f6c135..41f35ca12621df29724c11f5ae4a86ee9a640aad 100644 (file)
@@ -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 $".
  */
index adbc1294ff0df830b0d621b0a6190925a5f96683..7dc7b7052424624ec525df076c86225c6c31001e 100644 (file)
@@ -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
index ea23bd5c36775de27f8c2ccadb02d005fcd35ee0..6b99cb57510e082db12b2f4c38260b54f195949f 100644 (file)
@@ -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
index afbeba5aa2cfcc4c933ed8a7bd22e3c20b571dc2..ece2b58204e6b19f312c778961a1a0bb83caa1e6 100644 (file)
@@ -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
index 9b998736f467c94e6111ae5f36d0648eb250922a..ef5084a64173a0f0ac6a2d3b1bdb4edc9f2a2a75 100755 (executable)
@@ -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 $".
 #
index 4cb7cb37f69b902b686abf99afae70955a6ed909..fda8a6ae8efc10fc82008310bb5e198da335c9c5 100644 (file)
@@ -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
index 6848538e2ec8971dfb6a4588708f5712b422e36b..3825b40bf8d6a119bcc1521b5c32bfd829cdbe8b 100644 (file)
@@ -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 $".
  */
index a91e398473d7c2895d951b423b838fdf9682b976..faf8241b887f1e402d5da12c00cb969133382828 100644 (file)
@@ -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 $".
  */
index 6f4dc78de8ffdcc39600192baf93e5d1d4b9c81f..dd650c61db2b1ff3590745eb60c35b8349b5d581 100644 (file)
@@ -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 <stdlib.h>
 #include "string.h"
 #include <errno.h>
+#include "debug.h"
 
 #if defined(WIN32) || defined(__EMX__)
 #  include <io.h>
@@ -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 $".
  */
index a00e2c52a2e77369731fd8c812d8bdc09ca9ee77..b3cc288314963dad36f13fa4db5245ec69b8d294 100644 (file)
@@ -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.
  */
 
  * **** 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 $".
  */
index 819d2bd6f365983f2f60ba8b617e09df7df1ddd0..36af79e32d7f1d43ede9689596b9e9956b4f42d9 100644 (file)
@@ -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 $".
  */
index e864c18c485692b931647a5de1a16d7701877fde..84e20462007ff203d46ecc974858b09135f7dda6 100644 (file)
@@ -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 $".
  */
index 937b94fa07b26211a27c51f7d66d2920624d1106..6303af452c23829e8af773034dfcd427bdef71fe 100644 (file)
@@ -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 $".
  */
index af303f1da9314e965483b2175eb9cb557a30865b..3b3455fe7949c4473a0d1b6f6e5a4cc423b5bb79 100644 (file)
@@ -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 $".
  */
index 6990d912759c7c05e034a4ca6bac1f3f004af904..b74738dbf9d2295cd8aa0c05654ff768bfb4b2f8 100644 (file)
@@ -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 $".
  */
index 3b2226774f6ab35a01d255fadbab83684c33f422..6577c0bfcba8d1d5769894a535d00f1edc9b4cf1 100644 (file)
@@ -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 $".
  */
index 07bcdffc0d32461b530c0593e6ce424f9b8c9867..6975cb054e5735ca4b1d52a17d15fec22828af94 100644 (file)
@@ -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 <stdlib.h>
 #include <cups/string.h>
 #include <errno.h>
-#include "ipp.h"
+#include "ipp-private.h"
 #ifdef WIN32
 #  include <io.h>
 #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 $".
  */
index 7e59a42761b025456dcaa8416620ea353d21d853..bdaf944a4e6190e5926cda88763a10d7fd51f6b9 100644 (file)
@@ -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 $".
  */
index 988a3e43ddb7932918ad3d809285879b586c54a6..1082ceb242376f94c84cdfbb4c2580808efaa4f3 100644 (file)
@@ -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 $".
  */
index df0b76384a914ac62ce82ad81f3e53f18686fd10..784173e313239793e112caf83af61258423b91d5 100644 (file)
@@ -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 (file)
index 0000000..ab57159
Binary files /dev/null and b/doc/de/images/button-accept-jobs.gif differ
diff --git a/doc/de/images/button-add-class.gif b/doc/de/images/button-add-class.gif
new file mode 100644 (file)
index 0000000..3cfd28c
Binary files /dev/null and b/doc/de/images/button-add-class.gif differ
diff --git a/doc/de/images/button-add-printer.gif b/doc/de/images/button-add-printer.gif
new file mode 100644 (file)
index 0000000..49b4bcb
Binary files /dev/null and b/doc/de/images/button-add-printer.gif differ
diff --git a/doc/de/images/button-add-this-printer.gif b/doc/de/images/button-add-this-printer.gif
new file mode 100644 (file)
index 0000000..df9c7c0
Binary files /dev/null and b/doc/de/images/button-add-this-printer.gif differ
diff --git a/doc/de/images/button-cancel-all-jobs.gif b/doc/de/images/button-cancel-all-jobs.gif
new file mode 100644 (file)
index 0000000..bb92d20
Binary files /dev/null and b/doc/de/images/button-cancel-all-jobs.gif differ
diff --git a/doc/de/images/button-cancel-job.gif b/doc/de/images/button-cancel-job.gif
new file mode 100644 (file)
index 0000000..48821df
Binary files /dev/null and b/doc/de/images/button-cancel-job.gif differ
diff --git a/doc/de/images/button-change-settings.gif b/doc/de/images/button-change-settings.gif
new file mode 100644 (file)
index 0000000..0c0c4f5
Binary files /dev/null and b/doc/de/images/button-change-settings.gif differ
diff --git a/doc/de/images/button-clean-print-heads.gif b/doc/de/images/button-clean-print-heads.gif
new file mode 100644 (file)
index 0000000..14c6474
Binary files /dev/null and b/doc/de/images/button-clean-print-heads.gif differ
diff --git a/doc/de/images/button-clear.gif b/doc/de/images/button-clear.gif
new file mode 100644 (file)
index 0000000..1002f4d
Binary files /dev/null and b/doc/de/images/button-clear.gif differ
diff --git a/doc/de/images/button-continue.gif b/doc/de/images/button-continue.gif
new file mode 100644 (file)
index 0000000..b8a55bf
Binary files /dev/null and b/doc/de/images/button-continue.gif differ
diff --git a/doc/de/images/button-delete-class.gif b/doc/de/images/button-delete-class.gif
new file mode 100644 (file)
index 0000000..6cab405
Binary files /dev/null and b/doc/de/images/button-delete-class.gif differ
diff --git a/doc/de/images/button-delete-printer.gif b/doc/de/images/button-delete-printer.gif
new file mode 100644 (file)
index 0000000..1991ba0
Binary files /dev/null and b/doc/de/images/button-delete-printer.gif differ
diff --git a/doc/de/images/button-edit-configuration-file.gif b/doc/de/images/button-edit-configuration-file.gif
new file mode 100644 (file)
index 0000000..fdba122
Binary files /dev/null and b/doc/de/images/button-edit-configuration-file.gif differ
diff --git a/doc/de/images/button-export-samba.gif b/doc/de/images/button-export-samba.gif
new file mode 100644 (file)
index 0000000..a9f51a9
Binary files /dev/null and b/doc/de/images/button-export-samba.gif differ
diff --git a/doc/de/images/button-help.gif b/doc/de/images/button-help.gif
new file mode 100644 (file)
index 0000000..8079e44
Binary files /dev/null and b/doc/de/images/button-help.gif differ
diff --git a/doc/de/images/button-hold-job.gif b/doc/de/images/button-hold-job.gif
new file mode 100644 (file)
index 0000000..955f9a4
Binary files /dev/null and b/doc/de/images/button-hold-job.gif differ
diff --git a/doc/de/images/button-manage-classes.gif b/doc/de/images/button-manage-classes.gif
new file mode 100644 (file)
index 0000000..6489ebc
Binary files /dev/null and b/doc/de/images/button-manage-classes.gif differ
diff --git a/doc/de/images/button-manage-jobs.gif b/doc/de/images/button-manage-jobs.gif
new file mode 100644 (file)
index 0000000..4d4e553
Binary files /dev/null and b/doc/de/images/button-manage-jobs.gif differ
diff --git a/doc/de/images/button-manage-printers.gif b/doc/de/images/button-manage-printers.gif
new file mode 100644 (file)
index 0000000..26feda4
Binary files /dev/null and b/doc/de/images/button-manage-printers.gif differ
diff --git a/doc/de/images/button-manage-server.gif b/doc/de/images/button-manage-server.gif
new file mode 100644 (file)
index 0000000..16a8795
Binary files /dev/null and b/doc/de/images/button-manage-server.gif differ
diff --git a/doc/de/images/button-modify-class.gif b/doc/de/images/button-modify-class.gif
new file mode 100644 (file)
index 0000000..e163da7
Binary files /dev/null and b/doc/de/images/button-modify-class.gif differ
diff --git a/doc/de/images/button-modify-printer.gif b/doc/de/images/button-modify-printer.gif
new file mode 100644 (file)
index 0000000..a9ec147
Binary files /dev/null and b/doc/de/images/button-modify-printer.gif differ
diff --git a/doc/de/images/button-move-job.gif b/doc/de/images/button-move-job.gif
new file mode 100644 (file)
index 0000000..700b9be
Binary files /dev/null and b/doc/de/images/button-move-job.gif differ
diff --git a/doc/de/images/button-move-jobs.gif b/doc/de/images/button-move-jobs.gif
new file mode 100644 (file)
index 0000000..5da7788
Binary files /dev/null and b/doc/de/images/button-move-jobs.gif differ
diff --git a/doc/de/images/button-print-self-test-page.gif b/doc/de/images/button-print-self-test-page.gif
new file mode 100644 (file)
index 0000000..d5d3aab
Binary files /dev/null and b/doc/de/images/button-print-self-test-page.gif differ
diff --git a/doc/de/images/button-print-test-page.gif b/doc/de/images/button-print-test-page.gif
new file mode 100644 (file)
index 0000000..01dc757
Binary files /dev/null and b/doc/de/images/button-print-test-page.gif differ
diff --git a/doc/de/images/button-publish-printer.gif b/doc/de/images/button-publish-printer.gif
new file mode 100644 (file)
index 0000000..181cb27
Binary files /dev/null and b/doc/de/images/button-publish-printer.gif differ
diff --git a/doc/de/images/button-reject-jobs.gif b/doc/de/images/button-reject-jobs.gif
new file mode 100644 (file)
index 0000000..e23cfca
Binary files /dev/null and b/doc/de/images/button-reject-jobs.gif differ
diff --git a/doc/de/images/button-release-job.gif b/doc/de/images/button-release-job.gif
new file mode 100644 (file)
index 0000000..d353700
Binary files /dev/null and b/doc/de/images/button-release-job.gif differ
diff --git a/doc/de/images/button-restart-job.gif b/doc/de/images/button-restart-job.gif
new file mode 100644 (file)
index 0000000..97449c1
Binary files /dev/null and b/doc/de/images/button-restart-job.gif differ
diff --git a/doc/de/images/button-save-changes.gif b/doc/de/images/button-save-changes.gif
new file mode 100644 (file)
index 0000000..661c590
Binary files /dev/null and b/doc/de/images/button-save-changes.gif differ
diff --git a/doc/de/images/button-search.gif b/doc/de/images/button-search.gif
new file mode 100644 (file)
index 0000000..9378f8d
Binary files /dev/null and b/doc/de/images/button-search.gif differ
diff --git a/doc/de/images/button-set-allowed-users.gif b/doc/de/images/button-set-allowed-users.gif
new file mode 100644 (file)
index 0000000..a62eb10
Binary files /dev/null and b/doc/de/images/button-set-allowed-users.gif differ
diff --git a/doc/de/images/button-set-as-default.gif b/doc/de/images/button-set-as-default.gif
new file mode 100644 (file)
index 0000000..c2a33a9
Binary files /dev/null and b/doc/de/images/button-set-as-default.gif differ
diff --git a/doc/de/images/button-set-printer-options.gif b/doc/de/images/button-set-printer-options.gif
new file mode 100644 (file)
index 0000000..daf8710
Binary files /dev/null and b/doc/de/images/button-set-printer-options.gif differ
diff --git a/doc/de/images/button-show-active.gif b/doc/de/images/button-show-active.gif
new file mode 100644 (file)
index 0000000..4a2270e
Binary files /dev/null and b/doc/de/images/button-show-active.gif differ
diff --git a/doc/de/images/button-show-all.gif b/doc/de/images/button-show-all.gif
new file mode 100644 (file)
index 0000000..8564af9
Binary files /dev/null and b/doc/de/images/button-show-all.gif differ
diff --git a/doc/de/images/button-show-completed.gif b/doc/de/images/button-show-completed.gif
new file mode 100644 (file)
index 0000000..ad03d3e
Binary files /dev/null and b/doc/de/images/button-show-completed.gif differ
diff --git a/doc/de/images/button-show-next.gif b/doc/de/images/button-show-next.gif
new file mode 100644 (file)
index 0000000..c3a18e9
Binary files /dev/null and b/doc/de/images/button-show-next.gif differ
diff --git a/doc/de/images/button-show-previous.gif b/doc/de/images/button-show-previous.gif
new file mode 100644 (file)
index 0000000..426180f
Binary files /dev/null and b/doc/de/images/button-show-previous.gif differ
diff --git a/doc/de/images/button-sort-ascending.gif b/doc/de/images/button-sort-ascending.gif
new file mode 100644 (file)
index 0000000..a544d2b
Binary files /dev/null and b/doc/de/images/button-sort-ascending.gif differ
diff --git a/doc/de/images/button-sort-descending.gif b/doc/de/images/button-sort-descending.gif
new file mode 100644 (file)
index 0000000..076533d
Binary files /dev/null and b/doc/de/images/button-sort-descending.gif differ
diff --git a/doc/de/images/button-start-class.gif b/doc/de/images/button-start-class.gif
new file mode 100644 (file)
index 0000000..e517034
Binary files /dev/null and b/doc/de/images/button-start-class.gif differ
diff --git a/doc/de/images/button-start-printer.gif b/doc/de/images/button-start-printer.gif
new file mode 100644 (file)
index 0000000..4bab122
Binary files /dev/null and b/doc/de/images/button-start-printer.gif differ
diff --git a/doc/de/images/button-stop-class.gif b/doc/de/images/button-stop-class.gif
new file mode 100644 (file)
index 0000000..5bce808
Binary files /dev/null and b/doc/de/images/button-stop-class.gif differ
diff --git a/doc/de/images/button-stop-printer.gif b/doc/de/images/button-stop-printer.gif
new file mode 100644 (file)
index 0000000..9344860
Binary files /dev/null and b/doc/de/images/button-stop-printer.gif differ
diff --git a/doc/de/images/button-unpublish-printer.gif b/doc/de/images/button-unpublish-printer.gif
new file mode 100644 (file)
index 0000000..ecf33fa
Binary files /dev/null and b/doc/de/images/button-unpublish-printer.gif differ
diff --git a/doc/de/images/button-view-access-log.gif b/doc/de/images/button-view-access-log.gif
new file mode 100644 (file)
index 0000000..82ad70b
Binary files /dev/null and b/doc/de/images/button-view-access-log.gif differ
diff --git a/doc/de/images/button-view-error-log.gif b/doc/de/images/button-view-error-log.gif
new file mode 100644 (file)
index 0000000..c90c0bf
Binary files /dev/null and b/doc/de/images/button-view-error-log.gif differ
diff --git a/doc/de/images/button-view-page-log.gif b/doc/de/images/button-view-page-log.gif
new file mode 100644 (file)
index 0000000..cc7a22f
Binary files /dev/null and b/doc/de/images/button-view-page-log.gif differ
diff --git a/doc/de/images/button-view-printable-version.gif b/doc/de/images/button-view-printable-version.gif
new file mode 100644 (file)
index 0000000..e7b4e9c
Binary files /dev/null and b/doc/de/images/button-view-printable-version.gif differ
diff --git a/doc/de/index.html.in b/doc/de/index.html.in
new file mode 100644 (file)
index 0000000..bd7ec21
--- /dev/null
@@ -0,0 +1,143 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+       <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
+       <TITLE>Startseite - CUPS @CUPS_VERSION@@CUPS_REVISION@</TITLE>
+       <LINK REL="STYLESHEET" TYPE="text/css" HREF="/cups.css">
+       <LINK REL="SHORTCUT ICON" HREF="/favicon.ico" TYPE="image/x-icon">
+</HEAD>
+<BODY>
+<TABLE WIDTH="100%" STYLE="height: 100%;" BORDER="0" CELLSPACING="0" CELLPADDING="0" SUMMARY="Common UNIX Printing System @CUPS_VERSION@">
+<TR CLASS="header">
+<TD VALIGN="TOP" WIDTH="15" ROWSPAN="2"><IMG SRC="/images/top-left.gif" WIDTH="15" HEIGHT="80" ALT=""></TD>
+<TD VALIGN="TOP" WIDTH="55" ROWSPAN="2"><IMG SRC="/images/top-middle.gif" WIDTH="55" HEIGHT="80" ALT=""></TD>
+<TD WIDTH="100%" HEIGHT="60"><H1>Common UNIX Printing System @CUPS_VERSION@@CUPS_REVISION@</H1></TD>
+<TD ALIGN="RIGHT" VALIGN="TOP" WIDTH="15" ROWSPAN="2"><IMG
+SRC="/images/top-right.gif" WIDTH="15" HEIGHT="15" ALT=""></TD>
+</TR>
+<TR CLASS="header"><TD WIDTH="100%" VALIGN="BOTTOM" NOWRAP>
+
+<A CLASS="sel" HREF="/"><IMG SRC="/images/tab-left.gif" WIDTH="4"
+HEIGHT="4" ALIGN="TOP" BORDER="0"
+ALT="">&nbsp;&nbsp;Startseite&nbsp;&nbsp;<IMG
+SRC="/images/tab-right.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP"
+BORDER="0" ALT=""></A>
+
+&nbsp;<A CLASS="unsel" HREF="/admin/"><IMG SRC="/images/tab-left.gif" WIDTH="4"
+HEIGHT="4" ALIGN="TOP" BORDER="0"
+ALT="">&nbsp;&nbsp;Verwaltung&nbsp;&nbsp;<IMG
+SRC="/images/tab-right.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP"
+BORDER="0" ALT=""></A>
+
+&nbsp;<A CLASS="unsel" HREF="/classes/"><IMG SRC="/images/tab-left.gif" WIDTH="4"
+HEIGHT="4" ALIGN="TOP" BORDER="0"
+ALT="">&nbsp;&nbsp;Klassen&nbsp;&nbsp;<IMG
+SRC="/images/tab-right.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP"
+BORDER="0" ALT=""></A>
+
+&nbsp;<A CLASS="unsel" HREF="/help/"><IMG SRC="/images/tab-left.gif" WIDTH="4"
+HEIGHT="4" ALIGN="TOP" BORDER="0"
+ALT="">&nbsp;&nbsp;Dokumentation/Hilfe&nbsp;&nbsp;<IMG
+SRC="/images/tab-right.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP"
+BORDER="0" ALT=""></A>
+
+&nbsp;<A CLASS="unsel" HREF="/jobs/"><IMG SRC="/images/tab-left.gif" WIDTH="4"
+HEIGHT="4" ALIGN="TOP" BORDER="0"
+ALT="">&nbsp;&nbsp;Auftr&auml;ge&nbsp;&nbsp;<IMG
+SRC="/images/tab-right.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP"
+BORDER="0" ALT=""></A>
+
+&nbsp;<A CLASS="unsel" HREF="/printers/"><IMG SRC="/images/tab-left.gif" WIDTH="4"
+HEIGHT="4" ALIGN="TOP" BORDER="0"
+ALT="">&nbsp;&nbsp;Drucker&nbsp;&nbsp;<IMG
+SRC="/images/tab-right.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP"
+BORDER="0" ALT=""></A>
+
+</TD></TR>
+<TR CLASS="page">
+<TD WIDTH="15">&nbsp;</TD>
+<TD COLSPAN="2" WIDTH="100%" VALIGN="TOP" CLASS="page">
+
+<H2 CLASS="title">Herzlich Willkommen!</H2>
+
+<P>Auf diesen Seiten k&ouml;nnen Sie Ihre Drucker und Aufträge &uuml;berwachen,
+sowie auch Verwaltungsaufgaben durchzuführen. Klicken Sie auf einen der
+oberen Karteireiter oder eine der Schaltflächen um eine T&auml;tigkeit auszuführen.</P>
+
+<P>
+<A HREF="/help/"><IMG SRC="/images/button-help.gif" CLASS="button" ALT="Hilfe"></A>
+<A HREF="/admin?OP=add-class"><IMG SRC="/images/button-add-class.gif" CLASS="button" ALT="Klasse hinzuf&uuml;gen"></A>
+<A HREF="/admin?OP=add-printer"><IMG SRC="/images/button-add-printer.gif" CLASS="button" ALT="Drucker hinzuf&uuml;gen"></A>
+<A HREF="/classes"><IMG SRC="/images/button-manage-classes.gif" CLASS="button" ALT="Klassen verwalten"></A>
+<A HREF="/jobs"><IMG SRC="/images/button-manage-jobs.gif" CLASS="button" ALT="Auftr&auml;ge verwalten"></A>
+<A HREF="/printers"><IMG SRC="/images/button-manage-printers.gif" CLASS="button" ALT="Drucker verwalten"></A>
+<A HREF="/admin"><IMG SRC="/images/button-manage-server.gif" CLASS="button" ALT="Server verwalten"></A>
+</P>
+
+<P><I>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.</I></P>
+
+<H2 CLASS="title">&Uuml;ber CUPS</H2>
+
+<P>
+<IMG SRC="/images/happy.gif" ALIGN="LEFT" WIDTH="196" HEIGHT="144"
+STYLE="padding-right: 10px;" ALT="Happy Computer and Printer">
+
+<A HREF="http://www.easysw.com/"><IMG SRC="/images/esp-logo.gif"
+ALIGN="RIGHT" WIDTH="110" HEIGHT="68" BORDER="0"
+STYLE="padding-left: 10px; padding-bottom: 10px;"
+ALT="Easy Software Products"></A>
+
+CUPS stellt eine portierbare Druckerschicht f&uuml;r
+UNIX<SUP>&reg;</SUP>-basierte Betriebssysteme bereit. Es wird entwickelt
+und gepflegt von <A HREF="http://www.easysw.com">Easy Software
+Products</a> um eine Standard Druckerl&ouml;sung zu f&ouml;rdern. CUPS ist das
+Standard Drucksystem welches von MacOS<SUP>&reg;</SUP> X und den meisten
+Linux<SUP>&reg;</SUP> Distributionen verwendet wird.</P>
+
+<P>CUPS benutzt das <A HREF="http://www.pwg.org/ipp/"
+TARGET="_blank"> Internet Printing Protocol ("IPP")</A> als
+Basis für die Verwaltung von Druckauftr&auml;ge und Warteschlangen und f&uuml;gt
+Drucker-Browsing und PostScript Printer Description ("PPD") basierte
+Druckeigenschaften hinzu um komplexe Druckumgebungen optimale zu
+unterst&uuml;tzen.<BR CLEAR="ALL"></P>
+
+<H2 CLASS="title">Druckertreiber und Unterst&uuml;tzung</H2>
+
+<P>Besuchen Sie die offizielle CUPS Seite um Druckertreiber und
+Unterst&uuml;tzung zu erhalten:</P>
+
+<PRE>
+    <A HREF="http://www.cups.org/" TARGET="_blank">www.cups.org</A>
+</PRE>
+
+<P>Kommerzieller Support und eine erweiterte Version von CUPS genannt <A
+HREF="http://www.easysw.com/printpro/">ESP Print Pro</A> ist
+verf&uuml;gbar unter:</P>
+
+<PRE>
+    <A HREF="http://www.easysw.com/" TARGET="_blank">www.easysw.com</A>
+</PRE>
+
+</TD>
+<TD WIDTH="15">&nbsp;</TD>
+</TR>
+<TR CLASS="header">
+<TD VALIGN="BOTTOM" WIDTH="15"><IMG SRC="/images/bottom-left.gif"
+WIDTH="15" HEIGHT="15" ALT=""></TD>
+<TD COLSPAN="2" WIDTH="100%" STYLE="padding: 5;">
+
+<P><SMALL>Das Common UNIX Printing System, CUPS, und das CUPS Logo sind
+Warenzeichen der <A HREF="http://www.easysw.com">Easy Software
+Products</A>. CUPS ist urheberrechtlich gesch&uuml;tzt 1997-2006 von Easy Software Products,
+Alle Rechte vorbehalten.</SMALL></P>
+
+</TD>
+
+<TD ALIGN="RIGHT" VALIGN="BOTTOM" WIDTH="15"><IMG SRC="/images/bottom-right.gif"
+WIDTH="15" HEIGHT="15" ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML>
diff --git a/doc/help/policies.html b/doc/help/policies.html
new file mode 100644 (file)
index 0000000..804fc3e
--- /dev/null
@@ -0,0 +1,677 @@
+<HTML>
+<!-- SECTION: Getting Started -->
+<HEAD>
+       <TITLE>Managing Operation Policies</TITLE>
+</HEAD>
+<BODY>
+
+<P>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.</P>
+
+<P>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.</P>
+
+<H2 CLASS="title"><A NAME="BASICS">The Basics</A></H2>
+
+<P>Operation policies are used for all IPP requests sent to the
+scheduler and are evaluated <em>after</em> the <A
+HREF="ref-cupsd-conf.html#Location"><TT>Location</TT></A> based
+access control rules. This means that operation policies can only
+add additional security restrictions to a request, never relax
+them. Use <TT>Location</TT> based access control rules for
+server-wide limits and operation policies for limits on
+individual printers, tasks, or services.</P>
+
+<P>Policies are stored in the <VAR>cupsd.conf</VAR> file in <A
+HREF="ref-cupsd-conf.html#Policy"><TT>Policy</TT></A> sections.
+Each policy has an alphanumeric name that is used to select it.
+Inside the policy section are one or more <A
+HREF="ref-cupsd-conf.html#LimitIPP"><TT>Limit</TT></A>
+subsections which list the operations that are affected by the
+rules inside it. <A HREF="#LISTING01">Listing 1</A> shows the
+default operation policy, appropriately called "default", that is
+shipped with CUPS.</P>
+
+<P>The easiest way to add a policy to the <VAR>cupsd.conf</VAR>
+file is to use the web interface. Click on the
+<VAR>Administration</VAR> tab and then the <VAR>Edit
+Configuration File</VAR> button to edit the current
+<VAR>cupsd.conf</VAR> file. Click on the <VAR>Save Changes</VAR>
+button to save the changes and restart the scheduler. If you edit
+the <VAR>cupsd.conf</VAR> file from the console, make sure to <A
+HREF="ref-cupsd-conf.html">restart the cupsd process</A> before
+trying to use the new policy.</P>
+
+<PRE CLASS="command">
+<EM>Listing 1: <A NAME="LISTING01">Default Operation Policy</A></EM>
+
+ 1    &lt;Policy default>
+ 2      # Job-related operations must be done by the owner or an
+      adminstrator...
+ 3      &lt;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      &lt;/Limit>
+ 7    
+ 8      # All administration operations require an adminstrator
+      to authenticate...
+ 9      &lt;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      &lt;/Limit>
+14    
+15      # Only the owner or an administrator can cancel or
+      authenticate a job...
+16      &lt;Limit Cancel-Job CUPS-Authenticate-Job>
+17        Require user @OWNER @SYSTEM
+18        Order deny,allow
+19      &lt;/Limit>
+20    
+21      &lt;Limit All>
+22        Order deny,allow
+23      &lt;/Limit>
+24    &lt;/Policy>
+</PRE>
+
+<H3>The Default CUPS Operation Policy</H3>
+
+<P>The policy definition starts with an opening <TT>Policy</TT>
+directive:</P>
+
+<PRE CLASS="command">
+ 1    &lt;Policy default>
+</PRE>
+
+<P>The first <TT>Limit</TT> subsection defines the rules for IPP
+job operations:</P>
+
+<PRE CLASS="command">
+ 3      &lt;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      &lt;/Limit>
+</PRE>
+
+<P>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. <A HREF="#TABLE01">Table
+1</A> lists all of the operations that have been defined along
+with their usage in CUPS.</P>
+
+<P>The access control rules are listed after the <TT>Limit</TT>
+line and are the same as those used for <A
+HREF="ref-cupsd-conf.html#Location"><TT>Location</TT></A>
+sections. In this case, we require the owner of the job
+("@OWNER") or a member of the <A
+HREF="ref-cupsd-conf.html#SystemGroup"><TT>SystemGroup</TT></A>
+("@SYSTEM") to do the operation. Because we do not include an <A
+HREF="ref-cupsd-conf.html#AuthType"><TT>AuthType</TT></A>
+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, <em>do</em> use the <TT>AuthType</TT> directive, and so
+administrative operations need to be authenticated:</P>
+
+<PRE CLASS="command">
+ 9      &lt;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      &lt;/Limit>
+</PRE>
+
+<P>The "Order deny,allow" line at the end of both <TT>Limit</TT>
+subsections allows the request to come from any system allowed by
+the <TT>Location</TT> sections elsewhere in the
+<VAR>cupsd.conf</VAR> file.</P>
+
+<P>The <TT>Cancel-Job</TT> and <TT>CUPS-Authenticate-Job</TT>
+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:</P>
+
+<PRE CLASS="command">
+16      &lt;Limit Cancel-Job CUPS-Authenticate-Job>
+17        Require user @OWNER @SYSTEM
+18        Order deny,allow
+19      &lt;/Limit>
+</PRE>
+
+<P>The last <TT>Limit</TT> subsection in any policy uses the
+special operation name <TT>All</TT>. 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:</P>
+
+<PRE CLASS="command">
+21      &lt;Limit All>
+22        Order deny,allow
+23      &lt;/Limit>
+24    &lt;/Policy>
+</PRE>
+
+
+<DIV CLASS="table"><TABLE WIDTH="80%" SUMMARY="IPP Operation Names">
+<CAPTION>Table 1: <A NAME="TABLE01">IPP Operation Names</A></CAPTION>
+<THEAD>
+<TR>
+       <TH>Name</TH>
+       <TH>Used by CUPS?</TH>
+       <TH>Description</TH>
+</TR>
+</THEAD>
+<TBODY>
+<TR>
+       <TD NOWRAP><TT>Print-Job</TT></TD>
+       <TD>Yes</TD>
+       <TD>Creates a print job with a single file.</TD>
+</TR>
+<TR>
+       <TD NOWRAP><TT>Print-URI</TT></TD>
+       <TD>No</TD>
+       <TD>Create a print job with a single URI.</TD>
+</TR>
+<TR>
+       <TD NOWRAP><TT>Validate-Job</TT></TD>
+       <TD>Yes</TD>
+       <TD>Validates a print request before printing.</TD>
+</TR>
+<TR>
+       <TD NOWRAP><TT>Create-Job</TT></TD>
+       <TD>Yes</TD>
+       <TD>Creates a print job with no files or URIs.</TD>
+</TR>
+<TR>
+       <TD NOWRAP><TT>Send-Document</TT></TD>
+       <TD>Yes</TD>
+       <TD>Adds a file to a print job.</TD>
+</TR>
+<TR>
+       <TD NOWRAP><TT>Send-URI</TT></TD>
+       <TD>No</TD>
+       <TD>Adds a URI to a print job.</TD>
+</TR>
+<TR>
+       <TD NOWRAP><TT>Cancel-Job</TT></TD>
+       <TD>Yes</TD>
+       <TD>Cancels a print job.</TD>
+</TR>
+<TR>
+       <TD NOWRAP><TT>Get-Job-Attributes</TT></TD>
+       <TD>Yes</TD>
+       <TD>Gets information and options associated with a job.</TD>
+</TR>
+<TR>
+       <TD NOWRAP><TT>Get-Jobs</TT></TD>
+       <TD>Yes</TD>
+       <TD>Gets a list of jobs.</TD>
+</TR>
+<TR>
+       <TD NOWRAP><TT>Get-Printer-Attributes</TT></TD>
+       <TD>Yes</TD>
+       <TD>Gets information and options associated with a printer or class.</TD>
+</TR>
+<TR>
+       <TD NOWRAP><TT>Hold-Job</TT></TD>
+       <TD>Yes</TD>
+       <TD>Holds a print job for printing.</TD>
+</TR>
+<TR>
+       <TD NOWRAP><TT>Release-Job</TT></TD>
+       <TD>Yes</TD>
+       <TD>Releases a print job for printing.</TD>
+</TR>
+<TR>
+       <TD NOWRAP><TT>Restart-Job</TT></TD>
+       <TD>Yes</TD>
+       <TD>Reprints a print job.</TD>
+</TR>
+<TR>
+       <TD NOWRAP><TT>Pause-Printer</TT></TD>
+       <TD>Yes</TD>
+       <TD>Stops a printer or class.</TD>
+</TR>
+<TR>
+       <TD NOWRAP><TT>Resume-Printer</TT></TD>
+       <TD>Yes</TD>
+       <TD>Starts a printer or class.</TD>
+</TR>
+<TR>
+       <TD NOWRAP><TT>Purge-Jobs</TT></TD>
+       <TD>Yes</TD>
+       <TD>Cancels all jobs on the server or a printer or class
+       and removes the job history information.</TD>
+</TR>
+<TR>
+       <TD NOWRAP><TT>Set-Printer-Attributes</TT></TD>
+       <TD>No</TD>
+       <TD>Sets printer or class information; CUPS uses
+       CUPS-Add-Modify-Printer and CUPS-Add-Modify-Class
+       instead.</TD>
+</TR>
+<TR>
+       <TD NOWRAP><TT>Set-Job-Attributes</TT></TD>
+       <TD>Yes</TD>
+       <TD>Changes job options.</TD>
+</TR>
+<TR>
+       <TD NOWRAP><TT>Get-Printer-Supported-Values</TT></TD>
+       <TD>No</TD>
+       <TD>Gets -supported attributes for a printer based on job
+       options.</TD>
+</TR>
+<TR>
+       <TD NOWRAP><TT>Create-Printer-Subscription</TT></TD>
+       <TD>Yes</TD>
+       <TD>Creates an event subscription for a printer or the server.</TD>
+</TR>
+<TR>
+       <TD NOWRAP><TT>Create-Job-Subscription</TT></TD>
+       <TD>Yes</TD>
+       <TD>Creates an event subscription for a job.</TD>
+</TR>
+<TR>
+       <TD NOWRAP><TT>Get-Subscription-Attributes</TT></TD>
+       <TD>Yes</TD>
+       <TD>Gets information for an event subscription.</TD>
+</TR>
+<TR>
+       <TD NOWRAP><TT>Get-Subscriptions</TT></TD>
+       <TD>Yes</TD>
+       <TD>Gets a list of event subscriptions.</TD>
+</TR>
+<TR>
+       <TD NOWRAP><TT>Renew-Subscription</TT></TD>
+       <TD>Yes</TD>
+       <TD>Renews an event subscription that is about to expire.</TD>
+</TR>
+<TR>
+       <TD NOWRAP><TT>Cancel-Subscription</TT></TD>
+       <TD>Yes</TD>
+       <TD>Cancels an event subscription.</TD>
+</TR>
+<TR>
+       <TD NOWRAP><TT>Get-Notifications</TT></TD>
+       <TD>Yes</TD>
+       <TD>Gets (pending) events for an event subscription.</TD>
+</TR>
+<TR>
+       <TD NOWRAP><TT>Send-Notifications</TT></TD>
+       <TD>No</TD>
+       <TD>Sends events for an event subscription.</TD>
+</TR>
+<TR>
+       <TD NOWRAP><TT>Get-Printer-Support-Files</TT></TD>
+       <TD>No</TD>
+       <TD>Gets printer driver files for a Novell client.</TD>
+</TR>
+<TR>
+       <TD NOWRAP><TT>Enable-Printer</TT></TD>
+       <TD>Yes</TD>
+       <TD>Starts a printer or class.</TD>
+</TR>
+<TR>
+       <TD NOWRAP><TT>Disable-Printer</TT></TD>
+       <TD>Yes</TD>
+       <TD>Stops a printer or class.</TD>
+</TR>
+<TR>
+       <TD NOWRAP><TT>Pause-Printer-After-Current-Job</TT></TD>
+       <TD>No</TD>
+       <TD>Stops a printer or class after the current job is finished.</TD>
+</TR>
+<TR>
+       <TD NOWRAP><TT>Hold-New-Jobs</TT></TD>
+       <TD>No</TD>
+       <TD>Holds new jobs submitted to a printer or class.</TD>
+</TR>
+<TR>
+       <TD NOWRAP><TT>Release-Held-New-Jobs</TT></TD>
+       <TD>No</TD>
+       <TD>Releases jobs that were held because of the
+       Hold-New-Jobs operation.</TD>
+</TR>
+<TR>
+       <TD NOWRAP><TT>Deactivate-Printer</TT></TD>
+       <TD>No</TD>
+       <TD>Deactivates a printer or class.</TD>
+</TR>
+<TR>
+       <TD NOWRAP><TT>Activate-Printer</TT></TD>
+       <TD>No</TD>
+       <TD>Activates a printer or class.</TD>
+</TR>
+<TR>
+       <TD NOWRAP><TT>Restart-Printer</TT></TD>
+       <TD>No</TD>
+       <TD>Restarts a printer or class, resuming print jobs as needed.</TD>
+</TR>
+<TR>
+       <TD NOWRAP><TT>Shutdown-Printer</TT></TD>
+       <TD>No</TD>
+       <TD>Powers a printer or class off.</TD>
+</TR>
+<TR>
+       <TD NOWRAP><TT>Startup-Printer</TT></TD>
+       <TD>No</TD>
+       <TD>Powers a printer or class on.</TD>
+</TR>
+<TR>
+       <TD NOWRAP><TT>Reprocess-Job</TT></TD>
+       <TD>No</TD>
+       <TD>Reprints a job on a different printer or class; CUPS has the
+       CUPS-Move-Job operation instead.</TD>
+</TR>
+<TR>
+       <TD NOWRAP><TT>Cancel-Current-Job</TT></TD>
+       <TD>No</TD>
+       <TD>Cancels the current job on a printer or class.</TD>
+</TR>
+<TR>
+       <TD NOWRAP><TT>Suspend-Current-Job</TT></TD>
+       <TD>No</TD>
+       <TD>Stops the current job on a printer or class.</TD>
+</TR>
+<TR>
+       <TD NOWRAP><TT>Resume-Job</TT></TD>
+       <TD>No</TD>
+       <TD>Resumes printing of a stopped job.</TD>
+</TR>
+<TR>
+       <TD NOWRAP><TT>Promote-Job</TT></TD>
+       <TD>No</TD>
+       <TD>Prints a job before others.</TD>
+</TR>
+<TR>
+       <TD NOWRAP><TT>Schedule-Job-After</TT></TD>
+       <TD>No</TD>
+       <TD>Prints a job after others.</TD>
+</TR>
+<TR>
+       <TD NOWRAP><TT>CUPS-Get-Default</TT></TD>
+       <TD>Yes</TD>
+       <TD>Gets the server/network default printer or class.</TD>
+</TR>
+<TR>
+       <TD NOWRAP><TT>CUPS-Get-Printers</TT></TD>
+       <TD>Yes</TD>
+       <TD>Gets a list of printers and/or classes.</TD>
+</TR>
+<TR>
+       <TD NOWRAP><TT>CUPS-Add-Modify-Printer</TT></TD>
+       <TD>Yes</TD>
+       <TD>Adds or modifies a printer.</TD>
+</TR>
+<TR>
+       <TD NOWRAP><TT>CUPS-Delete-Printer</TT></TD>
+       <TD>Yes</TD>
+       <TD>Removes a printer.</TD>
+</TR>
+<TR>
+       <TD NOWRAP><TT>CUPS-Get-Classes</TT></TD>
+       <TD>Yes</TD>
+       <TD>Gets a list of classes.</TD>
+</TR>
+<TR>
+       <TD NOWRAP><TT>CUPS-Add-Modify-Class</TT></TD>
+       <TD>Yes</TD>
+       <TD>Adds or modifies a class.</TD>
+</TR>
+<TR>
+       <TD NOWRAP><TT>CUPS-Delete-Class</TT></TD>
+       <TD>Yes</TD>
+       <TD>Removes a class.</TD>
+</TR>
+<TR>
+       <TD NOWRAP><TT>CUPS-Accept-Jobs</TT></TD>
+       <TD>Yes</TD>
+       <TD>Sets a printer's or class' printer-is-accepting-jobs
+       attribute to true.</TD>
+</TR>
+<TR>
+       <TD NOWRAP><TT>CUPS-Reject-Jobs</TT></TD>
+       <TD>Yes</TD>
+       <TD>Sets a printer's or class' printer-is-accepting-jobs
+       attribute to false.</TD>
+</TR>
+<TR>
+       <TD NOWRAP><TT>CUPS-Set-Default</TT></TD>
+       <TD>Yes</TD>
+       <TD>Sets the server/network default printer or class.</TD>
+</TR>
+<TR>
+       <TD NOWRAP><TT>CUPS-Get-Devices</TT></TD>
+       <TD>Yes</TD>
+       <TD>Gets a list of printer devices.</TD>
+</TR>
+<TR>
+       <TD NOWRAP><TT>CUPS-Get-PPDs</TT></TD>
+       <TD>Yes</TD>
+       <TD>Gets a list of printer drivers or manufacturers.</TD>
+</TR>
+<TR>
+       <TD NOWRAP><TT>CUPS-Move-Job</TT></TD>
+       <TD>Yes</TD>
+       <TD>Moves a job to a different printer or class.</TD>
+</TR>
+<TR>
+       <TD NOWRAP><TT>CUPS-Authenticate-Job</TT></TD>
+       <TD>Yes</TD>
+       <TD>Authenticates a job for printing.</TD>
+</TR>
+</TBODY>
+</TABLE></DIV>
+
+
+<H2 CLASS="title"><A NAME="CREATING">Creating Your Own Policies</A></H2>
+
+<P>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 (#):</P>
+
+<PRE CLASS="command">
+&lt;Policy mypolicy>
+</PRE>
+
+<P>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 <TT>Cancel-Job</TT> limits
+to:</P>
+
+<PRE CLASS="command">
+&lt;Limit Cancel-Job>
+  Order deny,allow
+&lt;/Limit>
+</PRE>
+
+<P>The directives inside the <TT>Limit</TT> subsection can use
+any of the normal limiting directives: <A
+HREF="ref-cupsd-conf.html#Allow"><TT>Allow</TT></A>, <A
+HREF="ref-cupsd-conf.html#AuthType"><TT>AuthType</TT></A>, <A
+HREF="ref-cupsd-conf.html#Deny"><TT>Deny</TT></A>, <A
+HREF="ref-cupsd-conf.html#Encryption"><TT>Encryption</TT></A>, <A
+HREF="ref-cupsd-conf.html#Require"><TT>Require</TT></A>, and <A
+HREF="ref-cupsd-conf.html#Satisfy"><TT>Satisfy</TT></A>. <A
+HREF="#TABLE02">Table 2</A> lists some basic "recipes" for
+different access control rules.</P>
+
+<DIV CLASS="table"><TABLE WIDTH="80%" SUMMARY="Access Control Recipes">
+<CAPTION>Table 2: <A NAME="TABLE02">Access Control Recipes</A></CAPTION>
+<THEAD>
+<TR>
+       <TH>Access Level</TH>
+       <TH>Directives to Use</TH>
+</TR>
+</THEAD>
+<TBODY>
+<TR>
+       <TD>Allow Everyone</TD>
+       <TD><PRE>Order deny,allow
+Allow from all</PRE></TD>
+</TR>
+<TR>
+       <TD>Allow Everyone on the Local Network</TD>
+       <TD><PRE>Order deny,allow
+Allow from @LOCAL</PRE></TD>
+</TR>
+<TR>
+       <TD>Deny Everyone/Disable Operation(s)</TD>
+       <TD><PRE>Order allow,deny
+Deny from all</PRE></TD>
+</TR>
+<TR>
+       <TD>Require Login (System) Password</TD>
+       <TD><PRE>AuthType Basic</PRE></TD>
+</TR>
+<TR>
+       <TD>Require CUPS (lppasswd) Password</TD>
+       <TD><PRE>AuthType BasicDigest</PRE></TD>
+</TR>
+<TR>
+       <TD>Require the Owner of a Job or Subscription</TD>
+       <TD><PRE>Require user @OWNER</PRE></TD>
+</TR>
+<TR>
+       <TD>Require an Administrative User</TD>
+       <TD><PRE>Require user @SYSTEM</PRE></TD>
+</TR>
+<TR>
+       <TD>Require Member of Group "foogroup"</TD>
+       <TD><PRE>Require user @foogroup</PRE></TD>
+</TR>
+<TR>
+       <TD>Require "john" or "mary"</TD>
+       <TD><PRE>Require user john mary</PRE></TD>
+</TR>
+<TR>
+       <TD>Require Encryption</TD>
+       <TD><PRE>Encryption Required</PRE></TD>
+</TR>
+</TABLE></DIV>
+
+
+<H3>Creating a Policy for a Computer Lab</H3>
+
+<P>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. <A
+HREF="#LISTING02">Listing 2</A> 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.</P>
+
+<PRE CLASS="command">
+<EM>Listing 2: <A NAME="LISTING02">Operation Policy for a Lab</A></EM>
+
+ 1    &lt;Policy lab999>
+ 2      # Job- and subscription-related operations must be done
+      by the owner, a lab technician, or an adminstrator...
+ 3      &lt;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      &lt;/Limit>
+ 8    
+ 9      # All administration operations require a lab technician
+      or an adminstrator to authenticate...
+10      &lt;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      &lt;/Limit>
+16
+17      # All other operations are allowed from the lab network...
+18      &lt;Limit All>
+19        Order allow,deny
+20        Allow from 10.0.2.0/24
+21      &lt;/Limit>
+22    &lt;/Policy>
+</PRE>
+
+
+<H2 CLASS="title"><A NAME="SELECT">Using Policies</A></H2>
+
+<P>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 <A
+HREF="ref-cupsd-conf.html#DefaultPolicy"><TT>DefaultPolicy</TT></A>
+directive in the <VAR>cupsd.conf</VAR> file. For example, add the
+following line to the <VAR>cupsd.conf</VAR> file to use the
+"lab999" policy from the previous section:</P>
+
+<PRE CLASS="command">
+DefaultPolicy lab999
+</PRE>
+
+<P>To associate the policy with one or more printers, use either
+the <A HREF="man-lpadmin.html">lpadmin(8)</A> command or the web
+interface to change the operation policy for each printer. When
+using the <B>lpadmin</B> command, the <TT>-o
+printer-op-policy=name</TT> 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":</P>
+
+<PRE CLASS="command">
+lpadmin -p LaserJet4000 -o printer-op-policy=lab999
+</PRE>
+
+<P>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
+<VAR>Set Printer Options</VAR> button. Scroll down to the bottom
+of the page and choose the desired policy from the pull-down
+list. Click on <VAR>Save Changes</VAR> to change the policy for
+the printer.</P>
+
+</BODY>
+</HTML>
diff --git a/doc/help/ref-mailto-conf.html b/doc/help/ref-mailto-conf.html
new file mode 100644 (file)
index 0000000..031700d
--- /dev/null
@@ -0,0 +1,105 @@
+<HTML>
+<!-- SECTION: References -->
+<HEAD>
+       <TITLE>mailto.conf</TITLE>
+</HEAD>
+<BODY>
+
+<P>The <VAR>/etc/cups/mailto.conf</VAR> 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.</P>
+
+
+<H2 CLASS="title"><A NAME="Cc">Cc</A></H2>
+
+<H3>Examples</H3>
+
+<PRE CLASS="command">
+Cc bigbrother@domain.com
+Cc John Doe &lt;jd@domain.com>
+</PRE>
+
+<H3>Description</H3>
+
+<P>The <CODE>Cc</CODE> directive specifies an additional
+recipient ("carbon copy") for all email notifications. The
+default is to not send a copy to anyone but the subscriber.</P>
+
+
+<H2 CLASS="title"><A NAME="From">From</A></H2>
+
+<H3>Examples</H3>
+
+<PRE CLASS="command">
+From printserver@domain.com
+From Your Happy Printer &lt;printserver@domain.com>
+</PRE>
+
+<H3>Description</H3>
+
+<P>The <CODE>From</CODE> directive specifies the sender of email
+notifications. The default is the <A
+HREF="ref-cupsd-conf.html#ServerAdmin"><TT>ServerAdmin</TT><A>
+address defined in the <VAR>cupsd.conf</VAR> file.</P>
+
+
+<H2 CLASS="title"><A NAME="Sendmail">Sendmail</A></H2>
+
+<H3>Examples</H3>
+
+<PRE CLASS="command">
+Sendmail /usr/sbin/sendmail
+Sendmail /usr/lib/sendmail -bm -i
+</PRE>
+
+<H3>Description</H3>
+
+<P>The <CODE>Sendmail</CODE> directive specifies the command to
+run to deliver an email locally. This directive cannot be used
+with the <TT>SMTPServer</TT> directive, and if both
+<TT>Sendmail</TT> and <TT>SMTPServer</TT> lines appear in the
+<VAR>mailto.conf</VAR> file, only the last line is used. The
+default is <TT>/usr/sbin/sendmail</TT>.</P>
+
+
+<H2 CLASS="title"><A NAME="SMTPServer">SMTPServer</A></H2>
+
+<H3>Examples</H3>
+
+<PRE CLASS="command">
+SMTPServer mail.domain.com
+SMTPServer 192.168.2.1
+</PRE>
+
+<H3>Description</H3>
+
+<P>The <CODE>SMTPServer</CODE> directive specifies a hostname or
+IP address of a (possibly remote) SMTP mail server. This
+directive cannot be used with the <TT>Sendmail</TT> directive,
+and if both <TT>Sendmail</TT> and <TT>SMTPServer</TT> lines
+appear in the <VAR>mailto.conf</VAR> file, only the last line is
+used. The default is to use the <TT>Sendmail</TT> command
+instead.</P>
+
+
+<H2 CLASS="title"><A NAME="Subject">Subject</A></H2>
+
+<H3>Examples</H3>
+
+<PRE CLASS="command">
+Subject [CUPS]
+Subject URGENT EMAIL NOTIFICATION
+</PRE>
+
+<H3>Description</H3>
+
+<P>The <CODE>Subject</CODE> directive specifies a prefix string to
+add to the subject of each email notification. The default is to
+not add a prefix string.</P>
+
+
+</BODY>
+</HTML>
index d5f4031825c9285a3b07a38868f9c31d749dcb08..340ee976df7e63b84f249a42a544374f20d03a2a 100644 (file)
@@ -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 (file)
index 0000000..6b1cefc
--- /dev/null
@@ -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 <b.krumboeck@rewe-group.at>\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 <A HREF=\"https://%s:%d%s\">https://%s:%d%s</A>."
+msgstr "Um auf diese Seite zuzugreifen müssen Sie die URL <A HREF=\"https://%s:%d%s\">https://%s:%d%s</A> 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"
index cf6d770a9a367f7ccc3550e785da9cb2f171336b..7dbe5334a9c2ca559e1a187fd625a5018b97ff0f 100644 (file)
@@ -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 <kmuto@debian.org>\n"
 "Language-Team: Japanese <LL@li.org>\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"
index 6071d57e00e1bf91621acaa90137bf071f427ec5..709e0ac7e5c1704c58f9fc10b48b6b98bb558278 100644 (file)
@@ -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 $".
 #
index 28d747053c288a31b3dc8eede72d3a3357fe3cc1..6bb24c3b3a76da9b8442446486cd0b2925a8d63b 100644 (file)
@@ -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 (file)
index 0000000..5e0371f
--- /dev/null
@@ -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$".
+.\"
index d334a4a9e715b2cb9ad047342ed3b7a0b8e71266..d0a502b20c51ee339081ad6d3dc44cf8109b0547 100644 (file)
@@ -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 $".
  */
index c6d7e8f1d374b57596d0acad8e752d2d994380cf..923b254f2b629262beb8a33c50e68370512f3f78 100644 (file)
@@ -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 $".
 #
index 3f15b4a94b7d1615aaf10384e0eb1c52f789c9e5..e171fad51b4ac40adcf16823c96335b7b177c562 100644 (file)
@@ -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 $".
 #
index 41d359098bfd5f1cfb09b1590a3d4cca0541d953..4c98d207c6f39acb8b7e049204e69446a5b0dd25 100644 (file)
@@ -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: ");
index db46f8d03262ba1e9707361ef28ca0e2f9924cb4..e5bd412416d82bdd33f0782e89a1e1c2a0c37728 100644 (file)
 *Resolution 203dpi/203 DPI: "<</HWResolution[203 203]>>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
index 403997bb98c4455e00b905fe1bbe765cfbcfd743..f269c3849b62af8ecf5d908c20665baee57bf22a 100644 (file)
@@ -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 $".
 #
index 23a74e50ec0466f786d4be1b7239f1d1365999a3..c3c236f788eddcb3bfe20cb5b148b2b03f8f04cd 100644 (file)
@@ -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 $".
  */
index 29a5b7d13f535290a11ba1e83f7d918643ea0a8e..42acaf0832fc6e64957c1c4b750b93910481772d 100644 (file)
@@ -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 $".
  */
index 7b6eea95c057405a78de393bc5719bb2c53d9374..6320f9d196f701366a6a3e4f6177aa4e1517b3a1 100644 (file)
@@ -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 $".
  */
index 0a8b4c12aef1778fc2a517e67695a7e974541b5a..259361d5ba9e178783af8b85ff6a8f3a5bd30f4c 100644 (file)
@@ -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 $".
  */
index e26d20db7c11f420598eded0627209b64faaed15..c2e19a97039d70d6675f675d663d86f746e511e9 100644 (file)
@@ -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 $".
  */
index 7ed169a449d3d3bc8d09add475f75ef19a4ad45b..28115133d99ac08cc042b29c9a36b46c7b56158a 100644 (file)
@@ -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 $".
  */
index 6c21ed07b64391dcd73bcdfd75177fba3b1064f1..967f9ac67b1d924dbcaefde2bbaff0a19d674e6c 100644 (file)
@@ -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 $".
  */
index 467dcfdc81dbce4f8bd523a1b71d72a37a8cc49e..0987058428c5d22b2771f6b38842532cbfe5c9fa 100644 (file)
@@ -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 $".
  */
index c987f1605f908433b71bda780311415ec91e1c67..f1cb56352c13c57cafef2821bcb46e645a7513f0 100644 (file)
@@ -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 $".
  */
index 428841306c71c359424065ab355b4879e0d8c278..f27c48ff4272c33a5e4655bc652a9f1a5ec1a0a0 100644 (file)
@@ -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 $".
  */
index 63c92fcfacbec27e1bf6ce4128f41ea0ce6e6fdd..f6d4aed0a762dd81dabe324f19ef7779865d075a 100644 (file)
@@ -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 $".
  */
index a69e113f10e17873a06a4da20d09583965009977..0c74fbff078ba5a8afdca65457c75ec981f48191 100644 (file)
@@ -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 $".
  */
index 8e6441d8a583ac1494fdcf0fff47e3459295d0e7..30d57aa48f24af954c642c637df0003aa3768bb0 100644 (file)
@@ -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 (file)
index 0000000..c5bd8e4
--- /dev/null
@@ -0,0 +1,33 @@
+<FORM METHOD="POST" ACTION="/admin">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+
+<H2 CLASS="title">Klasse hinzuf&uuml;gen</H2>
+
+<TABLE>
+<TR>
+<TH CLASS="label">Name:</TH>
+<TD><INPUT TYPE="TEXT" NAME="PRINTER_NAME" SIZE="40" MAXLENGTH="127"></TD>
+</TR>
+<TR>
+<TH CLASS="label">Ort:</TH>
+<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" SIZE="40" MAXLENGTH="127"></TD>
+</TR>
+<TR>
+<TH CLASS="label">Beschreibung:</TH>
+<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" SIZE="40" MAXLENGTH="127"></TD>
+</TR>
+<TR>
+<TH CLASS="label">Mitglieder:</TH>
+<TD>
+<SELECT NAME="MEMBER_URIS" SIZE="10" MULTIPLE>
+{[member_uris]<OPTION VALUE="{member_uris}" {?member_selected}>{member_names}}
+</SELECT>
+</TD>
+</TR>
+<TR>
+<TD></TD>
+<TD><INPUT TYPE="IMAGE" SRC="/images/button-add-class.gif" ALT="Klasse hinzuf&uuml;gen"></TD>
+</TR>
+</TABLE>
+
+</FORM>
diff --git a/templates/de/add-printer.tmpl b/templates/de/add-printer.tmpl
new file mode 100644 (file)
index 0000000..db60277
--- /dev/null
@@ -0,0 +1,28 @@
+<FORM METHOD="POST" ACTION="/admin">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+
+<H2 CLASS="title">Neuen Drucker hinzuf&uuml;gen</H2>
+
+<TABLE>
+<TR>
+<TH CLASS="label">Name:</TH>
+<TD><INPUT TYPE="TEXT" NAME="PRINTER_NAME" SIZE="40" MAXLENGTH="127"><BR>
+<SMALL>(Darf alle druckbaren Zeichen au&szlig;er "/", "#", und Leerzeichen enthalten)</SMALL></TD>
+</TR>
+<TR>
+<TH CLASS="label">Ort:</TH>
+<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" SIZE="40" MAXLENGTH="127"><BR>
+<SMALL>(F&uuml;r Menschen lesbarer Ort wie "Labor 1")</SMALL></TD>
+</TR>
+<TR>
+<TH CLASS="label">Beschreibung:</TH>
+<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" SIZE="40" MAXLENGTH="127"><BR>
+<SMALL>(F&uuml;r Menschen lesbare Beschreibung wie "HP LaserJet mit Duplexeinheit")</SMALL></TD>
+</TR>
+<TR>
+<TD></TD>
+<TD><INPUT TYPE="IMAGE" SRC="/images/button-continue.gif" ALT="Fortsetzen"></TD>
+</TR>
+</TABLE>
+
+</FORM>
diff --git a/templates/de/admin.tmpl b/templates/de/admin.tmpl
new file mode 100644 (file)
index 0000000..9bf6686
--- /dev/null
@@ -0,0 +1,77 @@
+<TABLE CELLPADDING="0" CELLSPACING="0" WIDTH="100%" SUMMARY="Administration Tasks">
+<TR><TD VALIGN="TOP" NOWRAP>
+
+<H2 CLASS="title">Drucker</H2>
+
+<P>
+<A HREF="/admin?op=add-printer"><IMG
+SRC="/images/button-add-printer.gif" ALT="Drucker hinzuf&uuml;gen" CLASS="button"></A>
+<A HREF="/printers/"><IMG SRC="/images/button-manage-printers.gif"
+ALT="Drucker verwalten" CLASS="button"></A>
+{have_samba?<A HREF="/admin/?op=export-samba"><IMG
+SRC="/images/button-export-samba.gif" ALT="Drucker f&uuml;r Samba exportieren"
+CLASS="button"></A>:}
+</P>
+
+{#device_uri=0?:<P><B>Neue Drucker gefunden:</B></P><UL>{[device_uri]
+<LI><A HREF="/admin?op=add-printer&amp;{device_options}"><IMG
+SRC="/images/button-add-this-printer.gif" ALT="Diesen Drucker hinzufuegen" CLASS="button"
+ALIGN="MIDDLE"></A>
+{device_make_and_model} ({device_info})</LI>
+}</UL>}
+
+<H2 CLASS="title">Klassen</H2>
+
+<P>
+<A HREF="/admin?op=add-class"><IMG SRC="/images/button-add-class.gif"
+ALT="Klasse hinzuf&uuml;gen" CLASS="button"></A>
+<A HREF="/classes/"><IMG SRC="/images/button-manage-classes.gif"
+ALT="Klassen verwalten" CLASS="button"></A>
+</P>
+
+<H2 CLASS="title">Druckauftr&auml;ge</H2>
+
+<P>
+<A HREF="/jobs/"><IMG SRC="/images/button-manage-jobs.gif" ALT="Auftr&auml;ge
+verwalten" CLASS="button"></A>
+</P>
+
+</TD><TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD><TD VALIGN="TOP">
+
+<H2 CLASS="title">Server</H2>
+
+<P>
+<A HREF="/admin?op=config-server"><IMG
+SRC="/images/button-edit-configuration-file.gif" ALT="Konfigurationsdatei
+bearbeiten" CLASS="button"></A>
+<A HREF="/admin/log/access_log" TARGET="_blank"><IMG
+SRC="/images/button-view-access-log.gif" ALT="Zugriffsprotokoll betrachten"
+CLASS="button"></A>
+<A HREF="/admin/log/error_log" TARGET="_blank"><IMG
+SRC="/images/button-view-error-log.gif" ALT="Fehlerprotokoll betrachten"
+CLASS="button"></A>
+<A HREF="/admin/log/page_log" TARGET="_blank"><IMG
+SRC="/images/button-view-page-log.gif" ALT="Seitenprotokoll betrachten"
+CLASS="button"></A>
+</P>
+
+{SETTINGS_ERROR?<P>{SETTINGS_MESSAGE}</P>
+<BLOCKQUOTE>{SETTINGS_ERROR}</BLOCKQUOTE>:
+
+<FORM METHOD="POST" ACTION="/admin">
+
+<P><B>Grundlegende Servereinstellungen:</B></P>
+
+<P><INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
+<INPUT TYPE="CHECKBOX" NAME="REMOTE_PRINTERS" {?remote_printers}> Zeige verteilte Drucker von anderen Systemen<BR>
+<INPUT TYPE="CHECKBOX" NAME="SHARE_PRINTERS" {?share_printers}> Verteile publizierte Drucker welche mit diesem System verbunden sind<BR>
+<INPUT TYPE="CHECKBOX" NAME="REMOTE_ADMIN" {?remote_admin}> Erlaube entfernte Verwaltung<BR>
+<INPUT TYPE="CHECKBOX" NAME="USER_CANCEL_ANY" {?user_cancel_any}> Erlaube Benutzern jeden Auftrag abzubrechen (nicht nur die Eigenen)<BR>
+<INPUT TYPE="CHECKBOX" NAME="DEBUG_LOGGING" {?debug_logging}> Speichere Fehlerinformationen f&uuml;r Fehlersuche</P>
+
+<P><INPUT TYPE="IMAGE" SRC="/images/button-change-settings.gif" ALT="Einstellungen &auml;ndern"></P>
+
+</FORM>}
+
+</TD></TR>
+</TABLE>
diff --git a/templates/de/choose-device.tmpl b/templates/de/choose-device.tmpl
new file mode 100644 (file)
index 0000000..a45c9ba
--- /dev/null
@@ -0,0 +1,26 @@
+<FORM METHOD="POST" ACTION="/admin">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="{?printer_location}">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{?printer_info}">
+<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE_AND_MODEL" VALUE="{?current_make_and_model}">
+
+<H2 CLASS="title">Ger&auml;t f&uuml;r {printer_name}</H2>
+
+<TABLE>
+<TR>
+<TH CLASS="label">Ger&auml;t:</TH>
+<TD>
+<SELECT NAME="DEVICE_URI">
+{[device_uri]<OPTION VALUE="{device_uri}{?device_make_and_model!Unknown?|{device_make_and_model}:}" {?current_device_uri={device_uri}?SELECTED:{current_device_scheme={device_uri}?SELECTED:}}>
+{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}</OPTION>
+}</SELECT>
+</TD>
+</TR>
+<TR>
+<TD></TD>
+<TD><INPUT TYPE="IMAGE" SRC="/images/button-continue.gif" ALT="Fortsetzen"></TD>
+</TR>
+</TABLE>
+
+</FORM>
diff --git a/templates/de/choose-make.tmpl b/templates/de/choose-make.tmpl
new file mode 100644 (file)
index 0000000..db82117
--- /dev/null
@@ -0,0 +1,42 @@
+<FORM METHOD="POST" ACTION="/admin" ENCTYPE="multipart/form-data">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="{?printer_location}">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{?printer_info}">
+<INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">
+<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
+<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
+<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
+<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
+
+<H2 CLASS="title">Marke/Hersteller f&uuml;r {printer_name}</H2>
+
+<TABLE>
+<TR>
+<TH CLASS="label">Marke:</TH>
+<TD>
+<SELECT NAME="PPD_MAKE" SIZE="10">
+{[ppd_make]<OPTION VALUE="{ppd_make}" {?current_make={ppd_make}?SELECTED:}>{ppd_make}}
+</SELECT>
+</TD>
+</TR>
+<TR>
+<TD></TD>
+<TD><INPUT TYPE="IMAGE" SRC="/images/button-continue.gif" ALT="Fortsetzen"></TD>
+</TR>
+<TR>
+<TD></TD>
+<TD>&nbsp;</TD>
+</TR>
+<TR>
+<TH CLASS="label">Oder stellen Sie eine PPD Datei bereit:</TH>
+<TD><INPUT TYPE="HIDDEN" NAME="MAX_FILE_SIZE" VALUE="262144"><INPUT
+TYPE="FILE" NAME="PPD_FILE"></TD>
+</TR>
+<TR>
+<TD></TD>
+<TD><INPUT TYPE="IMAGE" SRC="/images/button-{op}.gif" ALT="{op=add-printer?Add Printer:Modify Printer}"></TD>
+</TR>
+</TABLE>
+
+</FORM>
diff --git a/templates/de/choose-model.tmpl b/templates/de/choose-model.tmpl
new file mode 100644 (file)
index 0000000..17d94b4
--- /dev/null
@@ -0,0 +1,34 @@
+<FORM METHOD="POST" ACTION="/admin" ENCTYPE="multipart/form-data">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="{?printer_location}">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{?printer_info}">
+<INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">
+<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
+<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
+<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
+<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
+
+<H2 CLASS="title">Modell/Treiber f&uuml;r {printer_name}</H2>
+
+<TABLE>
+<TR>
+<TH CLASS="label">Modell:</TH>
+<TD>
+<SELECT NAME="PPD_NAME" SIZE="10">
+{[ppd_name]<OPTION VALUE="{ppd_name}" {?current_make_and_model={ppd_make_and_model}?SELECTED:}>{ppd_make_and_model} ({ppd_natural_language})
+}</SELECT>
+</TD>
+</TR>
+<TR>
+<TH CLASS="label">Oder stellen Sie eine PPD Datei bereit:</TH>
+<TD><INPUT TYPE="HIDDEN" NAME="MAX_FILE_SIZE" VALUE="262144"><INPUT
+TYPE="FILE" NAME="PPD_FILE"></TD>
+</TR>
+<TR>
+<TD></TD>
+<TD><INPUT TYPE="IMAGE" SRC="/images/button-{op}.gif" ALT="{op=add-printer?Add Printer:Modify Printer}"></TD>
+</TR>
+</TABLE>
+
+</FORM>
diff --git a/templates/de/choose-serial.tmpl b/templates/de/choose-serial.tmpl
new file mode 100644 (file)
index 0000000..73cca51
--- /dev/null
@@ -0,0 +1,47 @@
+<FORM METHOD="POST" ACTION="/admin">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="{?printer_location}">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{?printer_info}">
+<INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">
+
+<H2 CLASS="title">Serielle Anschlusseinstellungen f&uuml;r {printer_name}</H2>
+
+<TABLE>
+<TR>
+<TH CLASS="label">Baud Rate:</TH>
+<TD><SELECT NAME="BAUDRATE">
+{[baudrates]<OPTION {?baudrate={baudrates}?SELECTED:}>{baudrates}}
+</SELECT></TD>
+</TR>
+<TR>
+<TH CLASS="label">Parit&auml;t:</TH>
+<TD><SELECT NAME="PARITY">
+<OPTION VALUE="none" {?parity=none?SELECTED:}>None
+<OPTION VALUE="even" {?parity=even?SELECTED:}>Even
+<OPTION VALUE="odd" {?parity=odd?SELECTED:}>Odd
+</SELECT></TD>
+</TR>
+<TR>
+<TH CLASS="label">Daten Bits:</TH>
+<TD><SELECT NAME="BITS">
+<OPTION {?bits=8?SELECTED:}>8
+<OPTION {?bits=7?SELECTED:}>7
+</SELECT></TD>
+</TR>
+<TR>
+<TH CLASS="label">Flu&szlig;kontrolle:</TH>
+<TD><SELECT NAME="FLOW">
+<OPTION VALUE="none" {?flow=none?SELECTED:}>None
+<OPTION VALUE="soft" {?flow=soft?SELECTED:}>XON/XOFF (Software)
+<OPTION VALUE="hard" {?flow=hard?SELECTED:}>RTS/CTS (Hardware)
+<OPTION VALUE="dtrdsr" {?flow=dtrdsr?SELECTED:}>DTR/DSR (Hardware)
+</SELECT></TD>
+</TR>
+<TR>
+<TD></TD>
+<TD><INPUT TYPE="IMAGE" SRC="/images/button-continue.gif" ALT="Fortsetzen"></TD>
+</TR>
+</TABLE>
+
+</FORM>
diff --git a/templates/de/choose-uri.tmpl b/templates/de/choose-uri.tmpl
new file mode 100644 (file)
index 0000000..b4068be
--- /dev/null
@@ -0,0 +1,42 @@
+<FORM METHOD="POST" ACTION="/admin">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="{?printer_location}">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{?printer_info}">
+<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE_AND_MODEL" VALUE="{?current_make_and_model}">
+
+<H2 CLASS="title">Ger&auml;te URI f&uuml;r {printer_name}</H2>
+
+<TABLE>
+<TR>
+<TH CLASS="label">Ger&auml;te URI:</TH>
+<TD><INPUT TYPE="TEXT" SIZE="60" MAXLENGTH="1024" NAME="DEVICE_URI" VALUE="{device_uri}"></TD>
+</TR>
+<TR>
+<TD></TD>
+<TD>Beispiele:
+<PRE>
+    http://hostname:631/ipp/
+    http://hostname:631/ipp/port1
+
+    ipp://hostname/ipp/
+    ipp://hostname/ipp/port1
+
+    lpd://hostname/warteschlange
+
+    socket://hostname
+    socket://hostname:9100
+</PRE>
+
+<P>Bitte lesen Sie <A HREF="/help/network.html" TARGET="_blank">"Netzwerk
+Drucker"</A> um die korrekte URI f&uuml;r Ihren Drucker zu benutzen.</P>
+
+</TD>
+</TR>
+<TR>
+<TD></TD>
+<TD><INPUT TYPE="IMAGE" SRC="/images/button-continue.gif" ALT="Fortsetzen"></TD>
+</TR>
+</TABLE>
+
+</FORM>
diff --git a/templates/de/class-added.tmpl b/templates/de/class-added.tmpl
new file mode 100644 (file)
index 0000000..abce917
--- /dev/null
@@ -0,0 +1,2 @@
+<P>Class <A HREF="/classes/{printer_name}">{printer_name}</A> wurde erfolgreich
+hinzugef&uuml;gt.
diff --git a/templates/de/class-confirm.tmpl b/templates/de/class-confirm.tmpl
new file mode 100644 (file)
index 0000000..3da201f
--- /dev/null
@@ -0,0 +1,7 @@
+<P><B>Warning:</B> Sind Sie sicher, da&szlig; Sie die Klasse
+{printer_name} l&ouml;schen zu wollen?</P>
+
+<P ALIGN="CENTER"><A
+HREF="/admin?op=delete-class&printer_name={printer_name}&confirm=yes"><IMG
+SRC="/images/button-delete-class.gif" ALT="Klasse l&ouml;schen"
+CLASS="button"></A></P>
diff --git a/templates/de/class-deleted.tmpl b/templates/de/class-deleted.tmpl
new file mode 100644 (file)
index 0000000..c75fab4
--- /dev/null
@@ -0,0 +1 @@
+<P>Klasse {printer_name} wurde erfolgreich gel&ouml;scht.
diff --git a/templates/de/class-jobs-header.tmpl b/templates/de/class-jobs-header.tmpl
new file mode 100644 (file)
index 0000000..e5b9e08
--- /dev/null
@@ -0,0 +1 @@
+<H3 CLASS="title">Auftr&auml;ge</H3>
diff --git a/templates/de/class-modified.tmpl b/templates/de/class-modified.tmpl
new file mode 100644 (file)
index 0000000..944b766
--- /dev/null
@@ -0,0 +1,2 @@
+<P>Klasse <A HREF="/classes/{printer_name}">{printer_name}</A> wurde
+erfolgreich ge&auml;ndert.
diff --git a/templates/de/classes-header.tmpl b/templates/de/classes-header.tmpl
new file mode 100644 (file)
index 0000000..f07d47d
--- /dev/null
@@ -0,0 +1 @@
+<P ALIGN="CENTER">{total=0?Keine Klassen gefunden:Zeige {#printer_name} von {total} Klasse{total=1?:n}}.</P>
diff --git a/templates/de/classes.tmpl b/templates/de/classes.tmpl
new file mode 100644 (file)
index 0000000..ef599ad
--- /dev/null
@@ -0,0 +1,54 @@
+{#printer_name=0?:
+{[printer_name]
+<H2 CLASS="title"><A HREF="{printer_uri_supported}">{printer_name}</A>{default_name={printer_name}? (Standarddrucker):}
+{?printer_state_message=?:<SPAN CLASS="message">"{printer_state_message}"</SPAN>}</H2>
+
+<TABLE WIDTH="100%" CLASS="button" CELLSPACING="0" CELLPADDING="0" SUMMARY="{printer_name}">
+<TR>
+<TD VALIGN=TOP><A HREF="{printer_uri_supported}">
+<IMG SRC="/images/classes.gif" CLASS="button" ALT=""></A></TD>
+<TD VALIGN=TOP><B>Beschreibung:</B> {printer_info}<BR>
+<B>Ort:</B> {printer_location}<BR>
+<B>Klassenstatus:</B> {printer_state=3?frei:{printer_state=4?verarbeitend:gestoppt}},
+{printer_is_accepting_jobs=0?Auftr&auml;ge ablehnen:Auftr&auml;ge akzeptieren}, {printer_is_shared=0?nicht:} publiziert.
+{?member_uris=?:<BR>Mitglieder: {member_uris}}
+
+<P>
+<A HREF="{printer_uri_supported}?op=print-test-page">
+<IMG SRC="/images/button-print-test-page.gif" ALT="Testseite drucken" CLASS="button"></A>
+{printer_state=5?
+<A HREF="{admin_uri}?op=start-class&amp;printer_name={%printer_name}&amp;is_class=Y">
+<IMG SRC="/images/button-start-class.gif" ALT="Klasse starten" CLASS="button"></A>
+:
+<A HREF="{admin_uri}?op=stop-class&amp;printer_name={%printer_name}&amp;is_class=Y">
+<IMG SRC="/images/button-stop-class.gif" ALT="Klasse stoppen" CLASS="button"></A>
+}
+{printer_is_accepting_jobs=0?
+<A HREF="{admin_uri}?op=accept-jobs&amp;printer_name={%printer_name}&amp;is_class=Y">
+<IMG SRC="/images/button-accept-jobs.gif" ALT="Auftr&auml;ge akzeptieren" CLASS="button"></A>
+:
+<A HREF="{admin_uri}?op=reject-jobs&amp;printer_name={%printer_name}&amp;is_class=Y">
+<IMG SRC="/images/button-reject-jobs.gif" ALT="Auftr&auml;ge ablehnen" CLASS="button"></A>
+}
+<A HREF="{admin_uri}?op=purge-jobs&amp;printer_name={%printer_name}&amp;is_class=Y">
+<IMG SRC="/images/button-cancel-all-jobs.gif" ALT="Alle Auftr&auml;ge abbrechen" CLASS="button"></A>
+{printer_is_shared=0?
+<A HREF="{admin_uri}?op=set-sharing&amp;printer_name={%printer_name}&amp;shared=1&amp;is_class=Y">
+<IMG SRC="/images/button-publish-printer.gif" ALT="Drucker publizieren" CLASS="button"></A>
+:
+<A HREF="{admin_uri}?op=set-sharing&amp;printer_name={%printer_name}&amp;shared=0&amp;is_class=Y">
+<IMG SRC="/images/button-unpublish-printer.gif" ALT="Druckerpublikation aufheben" CLASS="button"></A>
+}
+<A HREF="{admin_uri}?op=modify-class&amp;printer_name={%printer_name}">
+<IMG SRC="/images/button-modify-class.gif" ALT="Klasse &auml;ndern" CLASS="button"></A>
+<A HREF="{admin_uri}?op=delete-class&amp;printer_name={%printer_name}">
+<IMG SRC="/images/button-delete-class.gif" ALT="Klasse l&ouml;schen" CLASS="button"></A>
+<A HREF="{admin_uri}?op=set-as-default&amp;printer_name={%printer_name}&amp;is_class=Y">
+<IMG SRC="/images/button-set-as-default.gif" ALT="Setze als Standard" CLASS="button"></A>
+<A HREF="{admin_uri}?op=set-allowed-users&amp;printer_name={%printer_name}&amp;is_class=Y">
+<IMG SRC="/images/button-set-allowed-users.gif" ALT="Erlaubte Benutzer festlegen" CLASS="button"></A>
+</P>
+</TD>
+</TR>
+</TABLE>
+}}
diff --git a/templates/de/edit-config.tmpl.in b/templates/de/edit-config.tmpl.in
new file mode 100644 (file)
index 0000000..4cfcad1
--- /dev/null
@@ -0,0 +1,91 @@
+<SCRIPT TYPE="text/javascript">
+function reset_config()
+{
+  document.cups.CUPSDCONF.value =
+"# Log general information in error_log - change \\"info\\" to \\"debug\\" for\\n" +
+"# troubleshooting...\\n" +
+"LogLevel info\\n" +
+"\\n" +
+"\\n" +
+"# Administrator user group...\\n" +
+"SystemGroup @CUPS_SYSTEM_GROUPS@\\n" +
+"\\n" +
+"\\n" +
+"# Only listen for connections from the local machine.\\n" +
+"Listen 127.0.0.1:@DEFAULT_IPP_PORT@\\n" +
+"@CUPS_LISTEN_DOMAINSOCKET@\\n" +
+"\\n" +
+"\\n" +
+"# Show shared printers on the local network.\\n" +
+"Browsing On\\n" +
+"BrowseOrder allow,deny\\n" +
+"BrowseAllow @LOCAL\\n" +
+"\\n" +
+"\\n" +
+"# Authenticate against system accounts by default...\\n" +
+"DefaultAuthType Basic\\n" +
+"\\n" +
+"# Restrict access to the server...\\n" +
+"<Location />\\n" +
+"  Order allow,deny\\n" +
+"  Allow localhost\\n" +
+"</Location>\\n" +
+"\\n" +
+"# Restrict access to the admin pages...\\n" +
+"<Location /admin>\\n" +
+"@ENCRYPTION_REQUIRED@\\n" +
+"  Order allow,deny\\n" +
+"  Allow localhost\\n" +
+"</Location>\\n" +
+"\\n" +
+"# Restrict access to configuration files...\\n" +
+"<Location /admin/conf>\\n" +
+"  AuthType Basic\\n" +
+"  Require user @SYSTEM\\n" +
+"  Order allow,deny\\n" +
+"  Allow localhost\\n" +
+"</Location>\\n" +
+"\\n" +
+"# Set the default printer/job policies...\\n" +
+"<Policy default>\\n" +
+"  # Job-related operations must be done by the owner or an adminstrator...\\n" +
+"  <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>\\n" +
+"    Require user @OWNER @SYSTEM\\n" +
+"    Order deny,allow\\n" +
+"  </Limit>\\n" +
+"\\n" +
+"  # All administration operations require an adminstrator to authenticate...\\n" +
+"  <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>\\n" +
+"    AuthType Basic\\n" +
+"    Require user @SYSTEM\\n" +
+"    Order deny,allow\\n" +
+"  </Limit>\\n" +
+"\\n" +
+"  # Only the owner or an administrator can cancel or authenticate a job...\\n" +
+"  <Limit Cancel-Job CUPS-Authenticate-Job>\\n" +
+"    Require user @OWNER @SYSTEM\\n" +
+"    Order deny,allow\\n" +
+"  </Limit>\\n" +
+"\\n" +
+"  <Limit All>\\n" +
+"    Order deny,allow\\n" +
+"  </Limit>\\n" +
+"</Policy>\\n";
+}
+</SCRIPT>
+
+<H2 CLASS="title">Server Konfigurationsdatei</H2>
+
+<FORM NAME="cups" METHOD="POST" ACTION="/admin/">
+
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
+
+<TEXTAREA NAME="CUPSDCONF" COLS="80" ROWS="25">{CUPSDCONF}</TEXTAREA>
+
+<P><INPUT TYPE="IMAGE" SRC="/images/button-save-changes.gif"
+ALT="&Auml;nderungen speichern"> <A
+HREF="javascript:reset_config();"><IMG
+SRC="/images/button-use-default-config.gif" CLASS="button"
+ALT="Standard Konfigurationsdatei verwenden"></A></P>
+
+</FORM>
diff --git a/templates/de/error-op.tmpl b/templates/de/error-op.tmpl
new file mode 100644 (file)
index 0000000..9e1236c
--- /dev/null
@@ -0,0 +1,3 @@
+<P>Fehler:</P>
+
+<BLOCKQUOTE>Unbekannte Operation "{op}"!</BLOCKQUOTE>
diff --git a/templates/de/error.tmpl b/templates/de/error.tmpl
new file mode 100644 (file)
index 0000000..4653d8b
--- /dev/null
@@ -0,0 +1,3 @@
+<P>{?message?{message}:Fehler:}</P>
+
+<BLOCKQUOTE>{error}</BLOCKQUOTE>
diff --git a/templates/de/header.tmpl.in b/templates/de/header.tmpl.in
new file mode 100644 (file)
index 0000000..6ece4d7
--- /dev/null
@@ -0,0 +1,63 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+       <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
+       <TITLE>{title} - CUPS @CUPS_VERSION@@CUPS_REVISION@</TITLE>
+       <!-- Prevent caching of CGI content -->
+       <META HTTP-EQUIV="Expires" CONTENT="now">
+       <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> 
+       {refresh_page?<META HTTP-EQUIV="Refresh" CONTENT="{refresh_page}">:}
+       <LINK REL="STYLESHEET" TYPE="text/css" HREF="/cups.css">
+       <LINK REL="SHORTCUT ICON" HREF="/favicon.ico" TYPE="image/x-icon">
+</HEAD>
+<BODY>
+<TABLE WIDTH="100%" STYLE="height: 100%;" BORDER="0" CELLSPACING="0" CELLPADDING="0" SUMMARY="{title}">
+<TR CLASS="HEADER">
+<TD VALIGN="TOP" WIDTH="15" ROWSPAN="2"><IMG SRC="/images/top-left.gif" WIDTH="15" HEIGHT="80" ALT=""></TD>
+<TD VALIGN="TOP" WIDTH="55" ROWSPAN="2"><IMG SRC="/images/top-middle.gif" WIDTH="55" HEIGHT="80" ALT=""></TD>
+<TD WIDTH="100%" HEIGHT="60"><H1>{title}</H1></TD>
+<TD ALIGN="RIGHT" VALIGN="TOP" WIDTH="15" ROWSPAN="2"><IMG
+SRC="/images/top-right.gif" WIDTH="15" HEIGHT="15" ALT=""></TD>
+</TR>
+<TR CLASS="HEADER"><TD WIDTH="100%" VALIGN="BOTTOM" NOWRAP>
+
+<A CLASS="unsel" HREF="/"><IMG SRC="/images/tab-left.gif"
+WIDTH="4" HEIGHT="4" ALIGN="TOP" BORDER="0"
+ALT="">&nbsp;&nbsp;Startseite&nbsp;&nbsp;<IMG
+SRC="/images/tab-right.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP"
+BORDER="0" ALT=""></A>
+
+&nbsp;<A CLASS="{SECTION=admin?:un}sel" HREF="/admin"><IMG
+SRC="/images/tab-left.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP"
+BORDER="0" ALT="">&nbsp;&nbsp;Verwaltung&nbsp;&nbsp;<IMG
+SRC="/images/tab-right.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP"
+BORDER="0" ALT=""></A>
+
+&nbsp;<A CLASS="{SECTION=classes?:un}sel" HREF="/classes/"><IMG
+SRC="/images/tab-left.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP"
+BORDER="0" ALT="">&nbsp;&nbsp;Klassen&nbsp;&nbsp;<IMG
+SRC="/images/tab-right.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP"
+BORDER="0" ALT=""></A>
+
+&nbsp;<A CLASS="{SECTION=help?:un}sel" HREF="/help/"><IMG
+SRC="/images/tab-left.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP"
+BORDER="0" ALT="">&nbsp;&nbsp;Dokumentation/Hilfe&nbsp;&nbsp;<IMG
+SRC="/images/tab-right.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP"
+BORDER="0" ALT=""></A>
+
+&nbsp;<A CLASS="{SECTION=jobs?:un}sel" HREF="/jobs/"><IMG
+SRC="/images/tab-left.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP"
+BORDER="0" ALT="">&nbsp;&nbsp;Auftr&auml;ge&nbsp;&nbsp;<IMG
+SRC="/images/tab-right.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP"
+BORDER="0" ALT=""></A>
+
+&nbsp;<A CLASS="{SECTION=printers?:un}sel" HREF="/printers/"><IMG
+SRC="/images/tab-left.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP"
+BORDER="0" ALT="">&nbsp;&nbsp;Drucker&nbsp;&nbsp;<IMG
+SRC="/images/tab-right.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP"
+BORDER="0" ALT=""></A>
+
+</TD></TR>
+<TR CLASS="page">
+<TD WIDTH="15">&nbsp;</TD>
+<TD COLSPAN="2" WIDTH="100%" STYLE="height: 100%;" VALIGN="TOP" CLASS="page">
diff --git a/templates/de/help-header.tmpl b/templates/de/help-header.tmpl
new file mode 100644 (file)
index 0000000..80655cd
--- /dev/null
@@ -0,0 +1,46 @@
+<FORM ACTION="/help/{?HELPFILE}" METHOD="GET">
+{TOPIC?<INPUT TYPE="HIDDEN" NAME="TOPIC" VALUE="{TOPIC}">:}
+
+<P ALIGN="CENTER"><B>Suche in
+{HELPTITLE?{HELPTITLE}:{TOPIC?{TOPIC}:Alle Dokumente}}:</B> <INPUT
+TYPE="TEXT" NAME="QUERY" VALUE="{?QUERY}" SIZE="60"> <INPUT
+TYPE="IMAGE" SRC="/images/button-search.gif" ALT="Suche">
+<A HREF="/help/{?HELPFILE}{QUERY?{TOPIC??TOPIC={TOPIC}:}:}"><IMG
+SRC="/images/button-clear.gif" ALT="Leeren" CLASS="button"></A></P>
+
+</FORM>
+
+<!-- Bookmarks -->
+<DIV CLASS="sidebar">
+<H3 CLASS="title">On-Line Hilfe Dokumente</H3>
+
+<P CLASS="l0"><A HREF="/help{QUERY??QUERY={QUERY}:}">Alle Dokumente</A></P>
+<HR>
+
+{[BMTEXT]<P CLASS="l{BMINDENT}"><A HREF="{BMLINK}">{BMTEXT}</A></P>
+}
+</DIV>
+
+{QUERY?<P>Suchresultate in {HELPFILE?{HELPTITLE}:{TOPIC?{TOPIC}:Alle Dokumente}}\:</P>
+{QTEXT?<UL>
+{[QTEXT]<LI><A HREF="{QLINK}">{QTEXT}</A>{QPTEXT? (in <I><A HREF="{QPLINK}">{QPTEXT}</A></I>):}</LI>}
+{QTEXT?</UL>:}
+:<P>Keine &Uuml;bereinstimmung gefunden.</P>}
+<HR NOSHADE>:}
+{HELPTITLE?<H1>{HELPTITLE}
+<A HREF="/help/{HELPFILE}?PRINTABLE=YES" TARGET="_blank"><IMG
+SRC="/images/button-view-printable-version.gif" ALT="Druckversion anzeigen"
+CLASS="button"></A></H1>:<H1>CUPS Hilfeseiten</H1>
+
+<P>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</P>
+
+<P>Wenn Sie noch unerfahren im Umgang mit CUPS sind, lesen Sie die
+"<a href="overview.html">CUPS &Uuml;bersicht</a>".
+Erfahrene Benutzer sollten "<a href="whatsnew.html">Was ist neu in CUPS 1.2</a>" lesen.</P>
+
+<P>Die <A HREF="http://www.cups.org/">CUPS Home Page</A> bietet
+ebenfalls viele Angebote inklusive Benutzer Diskussionsforen,
+Antworten auf h&auml;ufig gestellte Fragen, und ein Formular für
+Fehlerberichte und W&uuml;nsche.</P>}
diff --git a/templates/de/help-printable.tmpl b/templates/de/help-printable.tmpl
new file mode 100644 (file)
index 0000000..305112a
--- /dev/null
@@ -0,0 +1,11 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+       <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
+       <TITLE>{HELPTITLE}</TITLE>
+       <LINK REL="STYLESHEET" TYPE="text/css" HREF="/cups-printable.css">
+       <LINK REL="SHORTCUT ICON" HREF="/favicon.ico" TYPE="image/x-icon">
+</HEAD>
+<BODY>
+
+<H1>{HELPTITLE}</H1>
diff --git a/templates/de/job-cancel.tmpl b/templates/de/job-cancel.tmpl
new file mode 100644 (file)
index 0000000..06b305c
--- /dev/null
@@ -0,0 +1 @@
+<P><A HREF="{job_printer_uri}">Auftrag {job_id}</A> wurde abgebrochen.
diff --git a/templates/de/job-hold.tmpl b/templates/de/job-hold.tmpl
new file mode 100644 (file)
index 0000000..7e4c477
--- /dev/null
@@ -0,0 +1 @@
+<P><A HREF="{job_printer_uri}">Auftrag {job_id}</A> wurde angehalten.
diff --git a/templates/de/job-move.tmpl b/templates/de/job-move.tmpl
new file mode 100644 (file)
index 0000000..f48f251
--- /dev/null
@@ -0,0 +1,22 @@
+<FORM METHOD="POST" ACTION="/{SECTION}/{job_id?:{printer_name}}">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+{job_id?<INPUT TYPE="HIDDEN" NAME="JOB_ID" VALUE="{job_id}">:}
+
+<H2 CLASS="title">{job_id?Verschiebe Auftrag {job_id}:Verschiebe alle Auftr&auml;ge}</H2>
+
+<TABLE>
+<TR>
+<TH CLASS="label">Neues Ziel:</TH>
+<TD>
+<SELECT NAME="JOB_PRINTER_URI" SIZE="10">
+{[job_printer_uri]<OPTION VALUE="{job_printer_uri}">{job_printer_name}}
+</SELECT>
+</TD>
+</TR>
+<TR>
+<TD></TD>
+<TD><INPUT TYPE="IMAGE" SRC="/images/button-move-job{job_id?:s}.gif" ALT="Verschiebe {job_id?Auftrag:Auftr&auml;ge}"></TD>
+</TR>
+</TABLE>
+
+</FORM>
diff --git a/templates/de/job-moved.tmpl b/templates/de/job-moved.tmpl
new file mode 100644 (file)
index 0000000..2d2b287
--- /dev/null
@@ -0,0 +1,2 @@
+<P>{job_id?<A HREF="/jobs/{job_id}">Auftrag {job_id}</A>:All jobs} verschoben nach 
+<A HREF="{job_printer_uri}">{job_printer_name}</A>.</P>
diff --git a/templates/de/job-release.tmpl b/templates/de/job-release.tmpl
new file mode 100644 (file)
index 0000000..34279d6
--- /dev/null
@@ -0,0 +1 @@
+<P><A HREF="{job_printer_uri}">Auftrag {job_id}</A> wurde f&uuml;r Druck freigegeben.
diff --git a/templates/de/job-restart.tmpl b/templates/de/job-restart.tmpl
new file mode 100644 (file)
index 0000000..9406117
--- /dev/null
@@ -0,0 +1 @@
+<P><A HREF="{job_printer_uri}">Auftrag {job_id}</A> wurde neu gestartet.
diff --git a/templates/de/jobs-header.tmpl b/templates/de/jobs-header.tmpl
new file mode 100644 (file)
index 0000000..419c779
--- /dev/null
@@ -0,0 +1,15 @@
+<P>{?which_jobs=?<A
+HREF="{?printer_name=?/jobs:{printer_uri_supported}}?which_jobs=completed"><IMG
+SRC="/images/button-show-completed.gif" CLASS="button" ALT="Fertige Auftr&auml;ge anzeigen"></A>
+<A HREF="{?printer_name=?/jobs:{printer_uri_supported}}?which_jobs=all"><IMG
+SRC="/images/button-show-all.gif" CLASS="button" ALT="Alle Auftr&auml;ge anzeigen">:{which_jobs=all?<A
+HREF="{?printer_name=?/jobs:{printer_uri_supported}}?which_jobs=completed"><IMG
+SRC="/images/button-show-completed.gif" CLASS="button" ALT="Fertige Auftr&auml;ge anzeigen"></A>
+<A HREF="{?printer_name=?/jobs:{printer_uri_supported}}"><IMG
+SRC="/images/button-show-active.gif" CLASS="button" ALT="Aktive Auftr&auml;ge anzeigen">:<A
+HREF="{?printer_name=?/jobs:{printer_uri_supported}}"><IMG
+SRC="/images/button-show-active.gif" CLASS="button" ALT="Aktive Auftr&auml;ge anzeigen"></A>
+<A HREF="{?printer_name=?/jobs:{printer_uri_supported}}?which_jobs=all"><IMG
+SRC="/images/button-show-all.gif" CLASS="button" ALT="Alle Auftr&auml;ge anzeigen">}}</A></P>
+
+<P ALIGN="CENTER">{total=0?Keine Auftr&auml;ge gefunden:Zeige {#job_id} von {total} {?which_jobs=?active:{which_jobs=all?:fertigen}} {total=1?Auftrag:Auftr&auml;gen}}.</P>
diff --git a/templates/de/jobs.tmpl b/templates/de/jobs.tmpl
new file mode 100644 (file)
index 0000000..0553eb7
--- /dev/null
@@ -0,0 +1,42 @@
+{#job_id=0?:
+<TABLE CELLPADDING="0" CELLSPACING="0" CLASS="button" WIDTH="100%" SUMMARY="Auftragsliste">
+<TR CLASS="data">
+<TH>ID&nbsp;</TH>
+<TH>Name&nbsp;</TH>
+<TH>Benutzer&nbsp;</TH>
+<TH>Gr&ouml;&szlig;e&nbsp;</TH>
+<TH>Seiten&nbsp;</TH>
+<TH>Status&nbsp;</TH>
+<TH>Kontrolle&nbsp;</TH>
+</TR>
+
+{[job_id]
+<TR CLASS="data" VALIGN="TOP">
+<TD><A HREF="{job_printer_uri}">{job_printer_name}</A>-{job_id}&nbsp;</TD>
+<TD>{?job_name=?Unbekannt:{job_name}}&nbsp;</TD>
+<TD>{job_originating_user_name}&nbsp;</TD>
+<TD>{job_k_octets}k&nbsp;</TD>
+<TD>{job_media_sheets_completed=0?Unbekannt:{?job_media_sheets_completed}}</TD>
+<TD>{job_state=3?schwebend seit<BR>{time_at_creation}:{job_state=4?angehalten seit<BR>{time_at_creation}:
+{job_state=5?verarbeitet seit<BR>{time_at_processing}:{job_state=6?gestoppt um<BR>{time_at_completed}:
+{job_state=7?abgebrochen um<BR>{time_at_completed}:{job_state=8?aborted:beendet um<BR>{time_at_completed}}}}}}}&nbsp;</TD>
+<TD>
+{job_preserved>0?
+<A HREF="/jobs/?op=restart-job&amp;job_id={job_id}&amp;job_printer_uri={job_printer_uri}">
+<IMG SRC="/images/button-restart-job.gif" ALT="Auftrag neu drucken" CLASS="button"></A>:}
+{job_state=4?
+<A HREF="/jobs/?op=release-job&amp;job_id={job_id}&amp;job_printer_uri={job_printer_uri}">
+<IMG SRC="/images/button-release-job.gif" ALT="Auftrag freigeben" CLASS="button"></A>:}
+{job_state=3?
+<A HREF="/jobs/?op=hold-job&amp;job_id={job_id}&amp;job_printer_uri={job_printer_uri}">
+<IMG SRC="/images/button-hold-job.gif" ALT="Auftrag anhalten" CLASS="button"></A>:}
+{job_state<7?
+<A HREF="/jobs/?op=cancel-job&amp;job_id={job_id}&amp;job_printer_uri={job_printer_uri}">
+<IMG SRC="/images/button-cancel-job.gif" ALT="Auftrag abbrechen" CLASS="button"></A>
+<A HREF="/jobs/?op=move-job&amp;job_id={job_id}"><IMG
+SRC="/images/button-move-job.gif" ALT="Auftrag verschieben" CLASS="button"></A>:}
+&nbsp;</TD>
+</TR>
+}
+</TABLE>
+}
diff --git a/templates/de/maintenance.tmpl b/templates/de/maintenance.tmpl
new file mode 100644 (file)
index 0000000..811c401
--- /dev/null
@@ -0,0 +1,2 @@
+<P>Wartungskommando gesendet; Auftrags ID ist <A HREF="/printers/{printer_name}">
+{printer_name}-{job_id}</A>.</P>
diff --git a/templates/de/modify-class.tmpl b/templates/de/modify-class.tmpl
new file mode 100644 (file)
index 0000000..7798913
--- /dev/null
@@ -0,0 +1,34 @@
+<FORM METHOD="POST" ACTION="/admin">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+
+<H2 CLASS="title">Klasse {printer_name} &auml;ndern</H2>
+
+<TABLE>
+<TR>
+<TH CLASS="label">Name:</TH>
+<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
+{printer_name}</TD>
+</TR>
+<TR>
+<TH CLASS="label">Ort:</TH>
+<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" VALUE="{?printer_location}" SIZE="40" MAXLENGTH="127"></TD>
+</TR>
+<TR>
+<TH CLASS="label">Beschreibung:</TH>
+<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" VALUE="{?printer_info}" SIZE="40" MAXLENGTH="127"></TD>
+</TR>
+<TR>
+<TH CLASS="label">Mitglieder:</TH>
+<TD>
+<SELECT NAME="MEMBER_URIS" SIZE="10" MULTIPLE>
+{[member_uris]<OPTION VALUE="{member_uris}" {?member_selected}>{member_names}}
+</SELECT>
+</TD>
+</TR>
+<TR>
+<TD></TD>
+<TD><INPUT TYPE="IMAGE" SRC="/images/button-modify-class.gif" ALT="Klasse &auml;ndern"></TD>
+</TR>
+</TABLE>
+
+</FORM>
diff --git a/templates/de/modify-printer.tmpl b/templates/de/modify-printer.tmpl
new file mode 100644 (file)
index 0000000..54323df
--- /dev/null
@@ -0,0 +1,29 @@
+<FORM METHOD="POST" ACTION="/admin">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+{?device_uri=?:<INPUT TYPE="HIDDEN" NAME="CURRENT_DEVICE_URI" VALUE="{device_uri}">}
+{?printer_make_and_model=?:<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE_AND_MODEL" VALUE="{printer_make_and_model}">}
+
+<H2 CLASS="title">Drucker {printer_name} &auml;ndern</H2>
+
+<TABLE>
+<TR>
+<TH CLASS="label">Name:</TH>
+<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">{printer_name}</TD>
+</TR>
+<TR>
+<TH CLASS="label">Ort:</TH>
+<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" VALUE="{?printer_location}" SIZE="40" MAXLENGTH="127"><BR>
+<SMALL>(F&uuml;r Menschen lesbarer Ort wie "Labor 1")</SMALL></TD>
+</TR>
+<TR>
+<TH CLASS="label">Beschreibung:</TH>
+<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" VALUE="{?printer_info}" SIZE="40" MAXLENGTH="127"><BR>
+<SMALL>(F&uuml;r Menschen lesbare Beschreibung wie "HP LaserJet mit Duplexeinheit")</SMALL></TD>
+</TR>
+<TR>
+<TD></TD>
+<TD><INPUT TYPE="IMAGE" SRC="/images/button-continue.gif" ALT="Fortsetzen"></TD>
+</TR>
+</TABLE>
+
+</FORM>
diff --git a/templates/de/option-boolean.tmpl b/templates/de/option-boolean.tmpl
new file mode 100644 (file)
index 0000000..72c8518
--- /dev/null
@@ -0,0 +1,6 @@
+<TR>
+<TH CLASS="label"{conflicted=1? CLASS="conflict":}><A NAME="{keyword}">{keytext}</A>:</TH>
+<TD>
+{[choices]<INPUT TYPE="RADIO" NAME="{keyword}" {choices={defchoice}?CHECKED:} VALUE="{choices}">{text}}
+</TD>
+</TR>
diff --git a/templates/de/option-conflict.tmpl b/templates/de/option-conflict.tmpl
new file mode 100644 (file)
index 0000000..95b69f7
--- /dev/null
@@ -0,0 +1,7 @@
+<P><B>Error:</B> Die folgenden Parameter stehen im Konflikt zueinander:</P>
+
+<UL>
+{[ckeyword]<LI><A HREF="#{ckeyword}">{ckeytext}</A></LI>
+}</UL>
+
+<P>Bitte ändern Sie einen oder mehrere Parameter um die Konflikte zu beheben.</P>
diff --git a/templates/de/option-header.tmpl b/templates/de/option-header.tmpl
new file mode 100644 (file)
index 0000000..cafc9f9
--- /dev/null
@@ -0,0 +1,3 @@
+<H2 CLASS="title">{printer_name}: {group}</H2>
+
+<TABLE>
diff --git a/templates/de/option-pickmany.tmpl b/templates/de/option-pickmany.tmpl
new file mode 100644 (file)
index 0000000..d2534af
--- /dev/null
@@ -0,0 +1,6 @@
+<TR>
+<TH CLASS="label"{conflicted=1? CLASS="conflict":}><A NAME="{keyword}">{keytext}</A>:</TH>
+<TD><SELECT NAME="{keyword}" MULTIPLE SIZE="10">
+{[choices]<OPTION {choices={defchoice}?SELECTED:} VALUE="{choices}">{text}}
+</SELECT></TD>
+</TR>
diff --git a/templates/de/option-pickone.tmpl b/templates/de/option-pickone.tmpl
new file mode 100644 (file)
index 0000000..08342d0
--- /dev/null
@@ -0,0 +1,6 @@
+<TR>
+<TH CLASS="label"{conflicted=1? CLASS="conflict":}><A NAME="{keyword}">{keytext}</A>:</TH>
+<TD><SELECT NAME="{keyword}">
+{[choices]<OPTION {choices={defchoice}?SELECTED:} VALUE="{choices}">{text}}
+</SELECT></TD>
+</TR>
diff --git a/templates/de/option-trailer.tmpl b/templates/de/option-trailer.tmpl
new file mode 100644 (file)
index 0000000..02c7a96
--- /dev/null
@@ -0,0 +1,5 @@
+<TR>
+<TD></TD>
+<TD><INPUT TYPE="IMAGE" SRC="/images/button-set-printer-options.gif" ALT="Druckereinstellungen festlegen"></TD>
+</TR>
+</TABLE>
diff --git a/templates/de/pager.tmpl b/templates/de/pager.tmpl
new file mode 100644 (file)
index 0000000..fc602f7
--- /dev/null
@@ -0,0 +1,7 @@
+<TABLE WIDTH="100%" CLASS="pager" SUMMARY="Paging Bar">
+<TR>
+       <TD WIDTH="33%">{PREVURL?<A HREF="{PREVURL}"><IMG SRC="/images/button-show-previous.gif" ALT="Vorherige anzeigen" CLASS="button"></A>:&nbsp;}</TD>
+       <TD WIDTH="34%" ALIGN="CENTER">{ORDER=dec?<A HREF="{THISURL}&amp;ORDER=asc"><IMG SRC="/images/button-sort-ascending.gif" ALT="Aufsteigend sortieren" CLASS="button"></A>:<A HREF="{THISURL}&amp;ORDER=dec"><IMG SRC="/images/button-sort-descending.gif" ALT="Absteigend sortieren" CLASS="button"></A>}</TD>
+       <TD WIDTH="33%" ALIGN="RIGHT">{NEXTURL?<A HREF="{NEXTURL}"><IMG SRC="/images/button-show-next.gif" ALT="N&auml;chste anzeigen" CLASS="button"></A>:&nbsp;}</TD>
+</TR>
+</TABLE>
diff --git a/templates/de/printer-accept.tmpl b/templates/de/printer-accept.tmpl
new file mode 100644 (file)
index 0000000..5980e5b
--- /dev/null
@@ -0,0 +1,3 @@
+<P>{is_class?Klasse:Drucker} <A
+HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
+akzeptiert jetzt Auftr&auml;ge.</P>
diff --git a/templates/de/printer-added.tmpl b/templates/de/printer-added.tmpl
new file mode 100644 (file)
index 0000000..0ce8e8c
--- /dev/null
@@ -0,0 +1,2 @@
+<P>Drucker <A HREF="/printers/{printer_name}">{printer_name}</A> wurde erfolgreich
+hinzugef&uuml;gt.
diff --git a/templates/de/printer-configured.tmpl b/templates/de/printer-configured.tmpl
new file mode 100644 (file)
index 0000000..a0469e6
--- /dev/null
@@ -0,0 +1,2 @@
+<P>Drucker <A HREF="/printers/{printer_name}">{printer_name}</A> wurde
+erfolgreich konfiguriert.
diff --git a/templates/de/printer-confirm.tmpl b/templates/de/printer-confirm.tmpl
new file mode 100644 (file)
index 0000000..311cd11
--- /dev/null
@@ -0,0 +1,7 @@
+<P><B>Warnung:</B> Sind Sie sicher, da&szlig; Sie den Drucker
+{printer_name} l&ouml;schen wollen?</P>
+
+<P ALIGN="CENTER"><A
+HREF="/admin?op=delete-printer&printer_name={printer_name}&confirm=yes"><IMG
+SRC="/images/button-delete-printer.gif" ALT="Drucker l&ouml;schen"
+CLASS="button"></A></P>
diff --git a/templates/de/printer-default.tmpl b/templates/de/printer-default.tmpl
new file mode 100644 (file)
index 0000000..d04a326
--- /dev/null
@@ -0,0 +1,7 @@
+<P>{is_class?Klasse:Drucker} <A
+HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
+wurde zum Standarddrucker f&uuml;r diesen Server bestimmt.</P>
+
+<BLOCKQUOTE><B>Notiz:</B> Jede benutzerspezifische Standardeinstellung welche
+mit dem Befehl <TT>lpoptions</TT> gemacht wird &uuml;berschreibt diese
+Standardeinstellung.</BLOCKQUOTE>
diff --git a/templates/de/printer-deleted.tmpl b/templates/de/printer-deleted.tmpl
new file mode 100644 (file)
index 0000000..4489a73
--- /dev/null
@@ -0,0 +1 @@
+<P>Drucker {printer_name} wurde erfolgreich gel&ouml;scht.
diff --git a/templates/de/printer-jobs-header.tmpl b/templates/de/printer-jobs-header.tmpl
new file mode 100644 (file)
index 0000000..e5b9e08
--- /dev/null
@@ -0,0 +1 @@
+<H3 CLASS="title">Auftr&auml;ge</H3>
diff --git a/templates/de/printer-modified.tmpl b/templates/de/printer-modified.tmpl
new file mode 100644 (file)
index 0000000..dc1c104
--- /dev/null
@@ -0,0 +1,2 @@
+<P>Drucker <A HREF="/printers/{printer_name}">{printer_name}</A> wurde
+erfolgreich ge&auml;ndert.
diff --git a/templates/de/printer-purge.tmpl b/templates/de/printer-purge.tmpl
new file mode 100644 (file)
index 0000000..cafa5e8
--- /dev/null
@@ -0,0 +1,3 @@
+<P>{is_class?Klasse:Drucker} <A
+HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
+wurde aus allen Auftr&auml;gen eliminiert.</P>
diff --git a/templates/de/printer-reject.tmpl b/templates/de/printer-reject.tmpl
new file mode 100644 (file)
index 0000000..513bba1
--- /dev/null
@@ -0,0 +1,3 @@
+<P>{is_class?Klasse:Drucker} <A
+HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
+akzeptiert ab sofort keine Auftr&auml;ge mehr.</P>
diff --git a/templates/de/printer-start.tmpl b/templates/de/printer-start.tmpl
new file mode 100644 (file)
index 0000000..e6836c7
--- /dev/null
@@ -0,0 +1,3 @@
+<P>{is_class?Klasse:Drucker} <A
+HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
+wurde gestartet.</P>
diff --git a/templates/de/printer-stop.tmpl b/templates/de/printer-stop.tmpl
new file mode 100644 (file)
index 0000000..64cbd72
--- /dev/null
@@ -0,0 +1,3 @@
+<P>{is_class?Klasse:Drucker} <A
+HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
+wurde gestoppt.</P>
diff --git a/templates/de/printers-header.tmpl b/templates/de/printers-header.tmpl
new file mode 100644 (file)
index 0000000..b247590
--- /dev/null
@@ -0,0 +1 @@
+<P ALIGN="CENTER">{total=0?Keine Drucker gefunden:Zeige {#printer_name} von {total} Drucker{total=1?:n}}.</P>
diff --git a/templates/de/printers.tmpl b/templates/de/printers.tmpl
new file mode 100644 (file)
index 0000000..7ddde77
--- /dev/null
@@ -0,0 +1,64 @@
+{printer_type?:}{#printer_name=0?:
+{[printer_name]
+<H2 CLASS="title"><A HREF="{printer_uri_supported}">{printer_name}</A>{default_name={printer_name}? (Standarddrucker):}
+{?printer_state_message=?:<SPAN CLASS="message">"{printer_state_message}"</SPAN>}</H2>
+
+<TABLE WIDTH="100%" CLASS="button" CELLSPACING="0" CELLPADDING="0" SUMMARY="{printer_name}">
+<TR>
+<TD VALIGN="TOP"><A HREF="{printer_uri_supported}">
+<IMG SRC="/images/printer-{printer_state=3?idle:{printer_state=4?verarbeitend:gestoppt}}.gif" CLASS="button" ALT=""></A>
+</TD>
+<TD VALIGN="TOP"><B>Beschreibung:</B> {printer_info}<BR>
+<B>Ort:</B> {printer_location}<BR>
+<B>Marke und Modell:</B> {printer_make_and_model}<BR>
+<B>Druckerstatus:</B> {printer_state=3?frei:{printer_state=4?verarbeitend:gestoppt}},
+{printer_is_accepting_jobs=0?Auftr&auml;ge ablehnen:Auftr&auml;ge akzeptieren}, {printer_is_shared=0?nicht:} publiziert.
+{?device_uri=?:<BR><B>Ger&auml;te URI:</B> {device_uri}}
+
+<P>
+<A HREF="{printer_uri_supported}?op=print-test-page">
+<IMG SRC="/images/button-print-test-page.gif" ALT="Testseite drucken" CLASS="button"></A>
+{?cupscommand=1?<A HREF="{printer_uri_supported}?op=clean-print-heads">
+<IMG SRC="/images/button-clean-print-heads.gif" ALT="Druckk&ouml;pfe reinigen" CLASS="button"></A>
+<A HREF="{printer_uri_supported}?op=print-self-test-page">
+<IMG SRC="/images/button-print-self-test-page.gif" ALT="Selbsttest-Seite drucken" CLASS="button"></A>:}
+{printer_state=5?
+<A HREF="{admin_uri}?op=start-printer&amp;printer_name={%printer_name}">
+<IMG SRC="/images/button-start-printer.gif" ALT="Drucker starten" CLASS="button"></A>
+:
+<A HREF="{admin_uri}?op=stop-printer&amp;printer_name={%printer_name}">
+<IMG SRC="/images/button-stop-printer.gif" ALT="Drucker stoppen" CLASS="button"></A>
+}
+{printer_is_accepting_jobs=0?
+<A HREF="{admin_uri}?op=accept-jobs&amp;printer_name={%printer_name}">
+<IMG SRC="/images/button-accept-jobs.gif" ALT="Auftr&auml;ge akzeptieren" CLASS="button"></A>
+:
+<A HREF="{admin_uri}?op=reject-jobs&amp;printer_name={%printer_name}">
+<IMG SRC="/images/button-reject-jobs.gif" ALT="Auftr&auml;ge ablehnen" CLASS="button"></A>
+}
+<A HREF="{printer_uri_supported}?op=move-jobs&amp;printer_name={%printer_name}">
+<IMG SRC="/images/button-move-jobs.gif" ALT="Alle Auftr&auml;ge verschieben" CLASS="button"></A>
+<A HREF="{admin_uri}?op=purge-jobs&amp;printer_name={%printer_name}">
+<IMG SRC="/images/button-cancel-all-jobs.gif" ALT="Auftr&auml;ge abbrechen" CLASS="button"></A>
+{printer_is_shared=0?
+<A HREF="{admin_uri}?op=set-sharing&amp;printer_name={%printer_name}&amp;shared=1">
+<IMG SRC="/images/button-publish-printer.gif" ALT="Drucker publizieren" CLASS="button"></A>
+:
+<A HREF="{admin_uri}?op=set-sharing&amp;printer_name={%printer_name}&amp;shared=0">
+<IMG SRC="/images/button-unpublish-printer.gif" ALT="Druckerpublikation aufheben" CLASS="button"></A>
+}
+<A HREF="{admin_uri}?op=modify-printer&amp;printer_name={%printer_name}">
+<IMG SRC="/images/button-modify-printer.gif" ALT="Drucker &auml;ndern" CLASS="button"></A>
+<A HREF="{admin_uri}?op=set-printer-options&amp;printer_name={%printer_name}">
+<IMG SRC="/images/button-set-printer-options.gif" ALT="Druckereinstellungen festlegen" CLASS="button"></A>
+<A HREF="{admin_uri}?op=delete-printer&amp;printer_name={%printer_name}">
+<IMG SRC="/images/button-delete-printer.gif" ALT="Drucker l&ouml;schen" CLASS="button"></A>
+<A HREF="{admin_uri}?op=set-as-default&amp;printer_name={%printer_name}">
+<IMG SRC="/images/button-set-as-default.gif" ALT="Als Standard festlegen" CLASS="button"></A>
+<A HREF="{admin_uri}?op=set-allowed-users&amp;printer_name={%printer_name}">
+<IMG SRC="/images/button-set-allowed-users.gif" ALT="Erlaubte Benutzer festlegen" CLASS="button"></A>
+</P>
+</TD>
+</TR>
+</TABLE>
+}}
diff --git a/templates/de/restart.tmpl b/templates/de/restart.tmpl
new file mode 100644 (file)
index 0000000..28f93bd
--- /dev/null
@@ -0,0 +1 @@
+<p>Bitte warten Sie w&auml;hrend der Server neu startet...</p>
diff --git a/templates/de/samba-export.tmpl b/templates/de/samba-export.tmpl
new file mode 100644 (file)
index 0000000..d76d401
--- /dev/null
@@ -0,0 +1,55 @@
+<SCRIPT TYPE="text/javascript"><!--
+function select_printers() {
+  var list = document.export_samba.EXPORT_NAME;
+  var sel = document.export_samba.EXPORT_ALL.checked;
+
+  for (i = 0; i < list.length; i ++) {
+    list.options[i].selected = sel;
+  }
+}
+--></SCRIPT>
+
+<FORM METHOD="POST" ACTION="/admin/" NAME="export_samba">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="export-samba">
+
+<H2 CLASS="title">Exportiere Drucker f&uuml;r Samba</H2>
+
+{error?<P>Kann Drucker nicht f&uuml;r Samba exportieren\:</P>
+<BLOCKQUOTE>{error}</BLOCKQUOTE>
+<P>Konsultieren Sie die <A HREF="/admin/log/error_log"
+TARGET="_blank">error_log</A> Datei um mehr Informationen zu erhalten.</P>:
+<P>Diese Seite erlaubt es Ihnen Drucker f&uuml;r Samba bereitzustellen
+damit auf diese mittels Windows Clients &uuml;ber die Desktopsymbole
+<VAR>Netzwerk Nachbarn</VAR> oder <VAR>Netzwerkumgebung</VAR>
+zugegriffen werden kann. Sie müssen zuerst einen
+Windows PostScript Druckerteiber installieren wie diese in der Hilfe f&uuml;r <A
+HREF="/help/man-cupsaddsmb.html"
+TARGET="_blank">cupsaddsmb(8)</A> beschrieben ist.</P>}
+
+<TABLE>
+<TR>
+<TH CLASS="label">Drucker:</TH>
+<TD>
+<SELECT NAME="EXPORT_NAME" SIZE="10" MULTIPLE>
+{[printer_name]<OPTION VALUE="{printer_name}"{export_all? SELECTED:{printer_export? SELECTED:}}>{printer_name}}
+</SELECT><BR>
+<INPUT TYPE="CHECKBOX" NAME="EXPORT_ALL"{export_all? CHECKED:}
+onChange="select_printers()"> Alle Drucker exportieren
+</TD>
+</TR>
+<TR>
+<TH CLASS="label">Samba Benutzername:</TH>
+<TD><INPUT TYPE="TEXT" NAME="USERNAME" VALUE="{?USERNAME}"> (required)</TD>
+</TR>
+<TR>
+<TH CLASS="label">Samba Passwort:</TH>
+<TD><INPUT TYPE="PASSWORD" NAME="PASSWORD" VALUE=""> (required)</TD>
+</TR>
+<TR>
+<TD></TD>
+<TD><INPUT TYPE="IMAGE" SRC="/images/button-export-samba.gif"
+ALT="Exportiere Drucker f&uuml;r Samba"></TD>
+</TR>
+</TABLE>
+
+</FORM>
diff --git a/templates/de/samba-exported.tmpl b/templates/de/samba-exported.tmpl
new file mode 100644 (file)
index 0000000..ff032b1
--- /dev/null
@@ -0,0 +1 @@
+<P>Drucker wurden f&uuml; Samba erfolgreich exportiert.</P>
diff --git a/templates/de/search.tmpl b/templates/de/search.tmpl
new file mode 100644 (file)
index 0000000..fa53134
--- /dev/null
@@ -0,0 +1,13 @@
+<FORM ACTION="/{SECTION}/{?SEARCH_DEST}" METHOD="GET">
+{WHICH_JOBS?<INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{WHICH_JOBS}">:}
+{ORDER?<INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{ORDER}">:}
+
+<P ALIGN="CENTER"><B>Suche in
+{SEARCH_DEST?{SEARCH_DEST}:{SECTION=classes?Klassen:{SECTION=jobs?Auftr&auml;ge:Drucker}}}:</B>
+<INPUT TYPE="TEXT" NAME="QUERY" VALUE="{?QUERY}" SIZE="60"> <INPUT
+TYPE="IMAGE" SRC="/images/button-search.gif" ALT="Suche">
+<A
+HREF="/{SECTION}/{?SEARCH_DEST}{WHICH_JOBS??WHICH_JOBS={WHICH_JOBS}{ORDER?&amp;ORDER={ORDER}:}:{ORDER??ORDER={ORDER}:}}"><IMG
+SRC="/images/button-clear.gif" ALT="Leeren" CLASS="button"></A></P>
+
+</FORM>
diff --git a/templates/de/set-printer-options-header.tmpl b/templates/de/set-printer-options-header.tmpl
new file mode 100644 (file)
index 0000000..864f9f0
--- /dev/null
@@ -0,0 +1,3 @@
+<FORM METHOD="POST" ACTION="/admin">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
diff --git a/templates/de/set-printer-options-trailer.tmpl b/templates/de/set-printer-options-trailer.tmpl
new file mode 100644 (file)
index 0000000..a3d1e1f
--- /dev/null
@@ -0,0 +1 @@
+</FORM>
diff --git a/templates/de/test-page.tmpl b/templates/de/test-page.tmpl
new file mode 100644 (file)
index 0000000..a9a4bbd
--- /dev/null
@@ -0,0 +1,2 @@
+<P>Testseite gesendet; Auftrags ID ist <A HREF="/{SECTION}/{printer_name}">
+{printer_name}-{job_id}</A>.</P>
diff --git a/templates/de/trailer.tmpl b/templates/de/trailer.tmpl
new file mode 100644 (file)
index 0000000..f2f9bb9
--- /dev/null
@@ -0,0 +1,21 @@
+</TD>
+<TD WIDTH="15">&nbsp;</TD>
+</TR>
+<TR CLASS="trailer">
+<TD VALIGN="BOTTOM" WIDTH="15"><IMG SRC="/images/bottom-left.gif"
+WIDTH="15" HEIGHT="15" ALT=""></TD>
+<TD COLSPAN="2" WIDTH="100%" STYLE="padding: 5;">
+
+<P><SMALL>Das Common UNIX Printing System, CUPS, und das CUPS Logo sind
+eingetragene Warenzeichen der <A HREF="http://www.easysw.com">Easy Software
+Products</A>. CUPS ist urheberrechtlich geschützt 1997-2006 von Easy Software Products,
+Alle Rechte vorbehalten.</SMALL></P>
+
+</TD>
+
+<TD ALIGN="RIGHT" VALIGN="BOTTOM" WIDTH="15"><IMG SRC="/images/bottom-right.gif"
+WIDTH="15" HEIGHT="15" ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML>
diff --git a/templates/de/users.tmpl b/templates/de/users.tmpl
new file mode 100644 (file)
index 0000000..d2c9ba8
--- /dev/null
@@ -0,0 +1,26 @@
+<FORM METHOD="POST" ACTION="/admin">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{OP}">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
+{IS_CLASS?<INPUT TYPE="HIDDEN" NAME="IS_CLASS" VALUE="{IS_CLASS}">:}
+
+<H2 CLASS="title">Berechtigte Benutzer f&uuml;r {printer_name}</H2>
+
+<TABLE>
+<TR>
+<TH CLASS="label">Benutzer:</TH>
+<TD>
+<INPUT TYPE='TEXT' NAME='users' SIZE='60' VALUE='{?requesting_user_name_allowed}{?requesting_user_name_denied}'>
+<BR>
+<INPUT TYPE='RADIO' NAME='type' VALUE='requesting-user-name-allowed' {requesting_user_name_allowed?checked:}>Erlaube diesen Benutzern zu drucken
+<INPUT TYPE='RADIO' NAME='type' VALUE='requesting-user-name-denied' {requesting_user_name_denied?checked:}>Verweigere diesen Benutzern zu drucken
+</TD>
+</TR>
+<TR>
+<TD></TD>
+<TD>
+<INPUT TYPE="IMAGE" SRC="/images/button-set-allowed-users.gif" ALT="Erlaubte Benutzer festlegen">
+</TD>
+</TR>
+</TABLE>
+
+</FORM>
index 457f121522a58120fc6381fe5e85fb06b6d7c9dc..716e159fd8a042e512b68f3b223ea3ea1cfb8ea7 100644 (file)
@@ -12,7 +12,7 @@
 <B>場所:</B> {printer_location}<BR>
 <B>メーカとモデル:</B> {printer_make_and_model}<BR>
 <B>プリンタの状態:</B> {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=?:<BR><B>デバイス URI:</B> {device_uri}}
 
 <P>
index 98843ff6c3e8f1c565a07e42241373008b6d9cc9..8a294e9a00ba79f65f7365cd506205e9540a1a60 100644 (file)
@@ -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 $".
  */