diff options
author | jlovell <jlovell@a1ca3aef-8c08-0410-bb20-df032aa958be> | 2006-07-20 22:59:35 +0000 |
---|---|---|
committer | jlovell <jlovell@a1ca3aef-8c08-0410-bb20-df032aa958be> | 2006-07-20 22:59:35 +0000 |
commit | 8ca02f3c0539293422509d03219786fb6d7db48b (patch) | |
tree | 20bd0e2739f7c6cadc7c70be3831505d59466e08 | |
parent | f7faf1f5c3235dfa4f883522da7dc6446f028247 (diff) | |
download | cups-8ca02f3c0539293422509d03219786fb6d7db48b.tar.gz |
Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@194 a1ca3aef-8c08-0410-bb20-df032aa958be
174 files changed, 6077 insertions, 1876 deletions
diff --git a/CHANGES.txt b/CHANGES.txt index c866727c8..f55439e5f 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,8 +1,71 @@ -CHANGES.txt - 2006-06-21 +CHANGES.txt - 2006-07-18 ------------------------ CHANGES IN CUPS V1.2.2 + - Documentation updates (STR #1765, STR #1780) + - CUPS didn't know about alternate character set names + for Asian text (STR #1819) + - The lpoptions -o and -r options did not work unless you + specified a printer. + - The lpoptions command incorrectly allowed users to set + printer attributes like printer-type (STR #1791) + - httpWait() did not flush the write buffer, causing "bad + request" errors when communicating with CUPS 1.1.x + servers (STR #1717) + - Polling did not sanitize the printer description, + location, or make and model strings like broadcasts + did. + - Polled printers did not show the server's default + job-sheets option value. + - The Samba password prompt was not properly localized + (STR #1814) + - Added a German translation (STR #1842) + - The scheduler now creates self-signed SSL certficates + automatically when using OpenSSL and CDSA for + encryption, just as for GNU TLS. + - The SNMP backend sporatically reported some printers as + "unknown" (STR #1774) + - The scheduler now forces BrowseTimeout to be at least + twice the BrowseInterval value and non-zero to avoid + common configuration errors. + - The scheduler incorrectly returned printer URIs of the + form "ipp://server/printers/classname" for classes (STR + #1813) + - Updated Japanese localization (STR #1805) + - The scheduler's SSL certificate/key directory was not + created on installation (STR #1788) + - Added a mailto.conf man page and help page (STR #1754) + - The parallel and USB backends no longer wait for the + printer to go on-line - this caused problems with + certain printers that don't follow with the IEEE-1284 + standard (STR #1738) + - The scheduler could crash on a reload when implicit + classes were present (STR #1828) + - The IPP backend incorrectly used the CUPS_ENCRYPTION + environment variable to determine the default + encryption mode when printing (STR #1820) + - USB printing did not work on Solaris (STR #1756) + - The scheduler sorted job priorities in the wrong order + (STR #1811) + - The scheduler did not automatically restart notifiers + that exited or crashed (STR #1793) + - IPv6 support did not work on NetBSD (STR #1834) + - The EPM packaging file did not work (STR #1804) + - The scheduler used up the CPU if BrowseRemoteProtocols + was empty (STR #1792) + - Custom page sizes did not work (STR #1787) + - The SNMP backend could crash on some systems when SNMP + logging was enabled (STR #1789) + - Browsing could produce some funny printer names when + ServerName was set to an IP address (STR #1799) + - Fixed the log message for BrowseRelay (STR #1798) + - Fixes to allow CUPS to compile on MirBSD (STR #1796) + - The scheduler incorrectly set the FINAL_CONTENT_TYPE + environment variable (STR #1795) + - The pdftops filter incorrectly embedded a "produced by" + comment, causing PDF printing not to work on some + operating systems (STR #1801) - Sending raw jobs from a client system could cause the client's scheduler to eventually crash (STR #1786) - The scheduler now checks that the notifier exists prior @@ -82,6 +145,7 @@ CHANGES IN CUPS V1.2.2 CHANGES IN CUPS V1.2.1 + - "lprm -h hostname" did not work (STR #1800) - The web interface did not handle reloads properly for MSIE (STR #1716) - The configure script no longer adds linker rpath diff --git a/backend/easysw-firewire-design.txt b/backend/easysw-firewire-design.txt deleted file mode 100644 index 194c487ed..000000000 --- a/backend/easysw-firewire-design.txt +++ /dev/null @@ -1,71 +0,0 @@ -Preliminary Design for CUPS Firewire Printer Backend - 03/19/2002 ------------------------------------------------------------------ - -OVERVIEW - - Easy Software Products will develop an IEEE-1394, a.k.a. - Firewire, printing interface for its Common UNIX Printing - System ("CUPS") for initial use under the Linux operating - system. A follow-on implementation for MacOS X is - anticipated as well. - - The operating system interfaces for IEEE-1394 ports vary - widely; the CUPS printing interface will abstract the OS - layer to a simpler interface geared towards discovering, - opening, reading from, writing to, and closing IEEE-1394 - printers. - - The initial development of the CUPS backend will be targeted - at the EPSON Stylus Pro 10000 large format printer, which - requires the bandwidth provided by Firewire in order to - print at full speed. This printer supports printing via - Serial Bus Protocol 2 (SBP-2) using the SCSI and PWG command - sets. The CUPS backend will implement the PWG command set on - LUN 0 only. - - -OS ABSTRACTION LAYER - - The OS abstraction layer will be a thin client library that - implements the following functions: - - ieee1394_list - ieee1394_open - ieee1394_close - ieee1394_read - ieee1394_write - ieee1394_error - - The "ieee1394_list" function will list all of the available - printer devices on the bus. The device information will - consist of the device URI (ieee1394:/something) used to - access the device and the make and model information, if - available, for the device ("EPSON Stylus Printer"). - - The "ieee1394_open" and "ieee1394_close" functions will open - and close a connection to the printer, respectively. - - The "ieee1394_read" and "ieee1394_write" functions will read - and write data to and from the printer, respectively. The - read function will be non-blocking, returning data only if - there is data coming back from the printer. - - The "ieee1394_error" function will return a string - describing the last error or NULL if no error occurred. - - The library will be responsible for creating any background - threads that are needed to monitor the connection to the - printer. - - -CUPS BACKEND - - The CUPS backend will use the OS abstraction layer to list - and access the Firewire printers. The "main" function will - read and write printer data, while the "list_devices" - function will be called as necessary to identify the - available devices. - - The CUPS 1.1 backend will record any status information in - the error log file, while the 1.2 backend will supply it to - the printer driver process. diff --git a/backend/easysw-firewire-linux.txt b/backend/easysw-firewire-linux.txt deleted file mode 100644 index a8e461189..000000000 --- a/backend/easysw-firewire-linux.txt +++ /dev/null @@ -1,35 +0,0 @@ -Easy Software Products -44141 Airport View Drive -Suite 204 -Hollywood, Maryland 20636 -+1.301.373.9600 -March 8, 2002 - - -Subject: EPSON Firewire Printer Driver for Linux - -Currently, no Firewire printer support exists for Linux. Since -the latest EPSON printer products depend on the Firewire -interface to print at full speed, a solution is needed to -support customers using Linux as their server platform. - -The Linux Firewire subsystem provides a user-mode driver -interface that allows driver programs to access Firewire -devices. Easy Software Products will utilize this interface to -develop a "backend" program for the Common UNIX Printing System -that will allow users to print to EPSON printers using the -Firewire interface. - -After examining the Linux interface, we estimate that it will -require approximately 30 hours of development time to write, -test, and document the Firewire backend, for a total cost of -$3,000. The new backend will become a standard part of the CUPS -software distribution and will be included with at least the -following Linux distributions: - - - Caldera Linux - - Mandrake Linux - - Red Hat Linux - - SuSE Linux - -ESP will provide EPSON with binaries for Red Hat Linux 7.2. diff --git a/backend/ieee1394-linux.c b/backend/ieee1394-linux.c deleted file mode 100644 index b95e8204e..000000000 --- a/backend/ieee1394-linux.c +++ /dev/null @@ -1,877 +0,0 @@ -/* - * "$Id: ieee1394-linux.c 4703 2005-09-26 19:33:58Z mike $" - * - * Linux IEEE-1394 glue for the Common UNIX Printing System (CUPS). - * - * Copyright 2002 by Easy Software Products, all rights reserved. - * - * Redistribution and use in source and binary forms, with or - * without modification, are permitted provided that the - * following conditions are met: - * - * 1. Redistributions of source code must retain the above - * copyright notice, this list of conditions and the - * following disclaimer. - * - * 2. Redistributions in binary form must reproduce the - * above copyright notice, this list of conditions and - * the following disclaimer in the documentation and/or - * other materials provided with the distribution. - * - * 3. All advertising materials mentioning features or use - * of this software must display the following - * acknowledgement: - * - * This product includes software developed by Easy - * Software Products. - * - * 4. The name of Easy Software Products may not be used to - * endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, - * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS - * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE - * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH - * DAMAGE. - * - * Contents: - * - * get_device_id() - Get the IEEE-1284 device ID for a node... - * get_unit_type() - Get the unit type for a node... - * show_data() - Show a data node... - * show_dir() - Show a directory list... - * ieee1394_list() - List the available printer devices. - * ieee1394_open() - Open a printer device. - * ieee1394_close() - Close a printer device. - * ieee1394_read() - Read from a printer device. - * ieee1394_write() - Write data to a printer device. - * ieee1394_error() - Return the last error. - */ - -/* - * Include necessary headers. - */ - -#include "ieee1394.h" -#include <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 index 3d88c7a08..000000000 --- a/backend/ieee1394.c +++ /dev/null @@ -1,267 +0,0 @@ -/* - * "$Id: ieee1394.c 5241 2006-03-07 22:07:44Z mike $" - * - * IEEE-1394 backend for the Common UNIX Printing System (CUPS). - * - * Copyright 2002 by Easy Software Products, all rights reserved. - * - * Redistribution and use in source and binary forms, with or - * without modification, are permitted provided that the - * following conditions are met: - * - * 1. Redistributions of source code must retain the above - * copyright notice, this list of conditions and the - * following disclaimer. - * - * 2. Redistributions in binary form must reproduce the - * above copyright notice, this list of conditions and - * the following disclaimer in the documentation and/or - * other materials provided with the distribution. - * - * 3. All advertising materials mentioning features or use - * of this software must display the following - * acknowledgement: - * - * This product includes software developed by Easy - * Software Products. - * - * 4. The name of Easy Software Products may not be used to - * endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, - * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS - * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE - * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH - * DAMAGE. - * - * Contents: - * - * main() - Send a file to the printer. - * list_devices() - List all known printer devices... - */ - -/* - * Include necessary headers. - */ - -#include "ieee1394.h" - - -/* - * Local functions... - */ - -void list_devices(void); - - -/* - * 'main()' - Send a file to the printer. - * - * Usage: - * - * printer-uri job-id user title copies options [file] - */ - -int /* O - Exit status */ -main(int argc, /* I - Number of command-line arguments (6 or 7) */ - char *argv[]) /* I - Command-line arguments */ -{ - ieee1394_dev_t dev; /* Printer device */ - int fp; /* Print file */ - int copies; /* Number of copies to print */ - int rbytes; /* Number of bytes read from device */ - size_t nbytes, /* Number of bytes read from file */ - tbytes; /* Total number of bytes written */ - char buffer[8192]; /* Input/output buffer */ -#if defined(HAVE_SIGACTION) && !defined(HAVE_SIGSET) - struct sigaction action; /* Actions for POSIX signals */ -#endif /* HAVE_SIGACTION && !HAVE_SIGSET */ - - - /* - * Make sure status messages are not buffered... - */ - - setbuf(stderr, NULL); - - /* - * Check command-line... - */ - - if (argc == 1) - { - list_devices(); - - return (0); - } - else if (argc < 6 || argc > 7) - { - fprintf(stderr, "Usage: %s job-id user title copies options [file]\n", - argv[0]); - return (1); - } - - /* - * If we have 7 arguments, print the file named on the command-line. - * Otherwise, send stdin instead... - */ - - if (argc == 6) - { - fp = 0; - copies = 1; - } - else - { - /* - * Try to open the print file... - */ - - if ((fp = open(argv[6], O_RDONLY)) < 0) - { - perror("ERROR: unable to open print file"); - return (1); - } - - copies = atoi(argv[4]); - } - - /* - * Try to open the printer device... - */ - - fputs("STATE: +connecting-to-device\n", stderr); - - do - { - if ((dev = ieee1394_open(argv[0])) == NULL) - { - fputs("INFO: Firewire printer busy; will retry in 30 seconds...\n", stderr); - sleep(30); - } - } - while (dev == NULL); - - fputs("STATE: -connecting-to-device\n", stderr); - - /* - * Now that we are "connected" to the port, ignore SIGTERM so that we - * can finish out any page data the driver sends (e.g. to eject the - * current page... Only ignore SIGTERM if we are printing data from - * stdin (otherwise you can't cancel raw jobs...) - */ - - if (argc < 7) - { -#ifdef HAVE_SIGSET /* Use System V signals over POSIX to avoid bugs */ - sigset(SIGTERM, SIG_IGN); -#elif defined(HAVE_SIGACTION) - memset(&action, 0, sizeof(action)); - - sigemptyset(&action.sa_mask); - action.sa_handler = SIG_IGN; - sigaction(SIGTERM, &action, NULL); -#else - signal(SIGTERM, SIG_IGN); -#endif /* HAVE_SIGSET */ - } - - /* - * Finally, send the print file... - */ - - while (copies > 0) - { - copies --; - - if (fp != 0) - { - fputs("PAGE: 1 1\n", stderr); - lseek(fp, 0, SEEK_SET); - } - - tbytes = 0; - while ((nbytes = read(fp, buffer, sizeof(buffer))) > 0) - { - /* - * Write the print data to the printer... - */ - - tbytes += nbytes; - - if (ieee1394_write(dev, buffer, nbytes) < 0) - { - perror("ERROR: Unable to send print file to printer"); - break; - } - - if ((rbytes = ieee1394_read(dev, buffer, sizeof(buffer))) > 0) - fprintf(stderr, "INFO: Read %d bytes from printer...\n", rbytes); - - if (argc > 6) - fprintf(stderr, "INFO: Sending print file, %lu bytes...\n", - (unsigned long)tbytes); - } - } - - /* - * Close the printer device and input file and return... - */ - - ieee1394_close(dev); - - if (fp != 0) - close(fp); - - fputs("INFO: Ready to print.\n", stderr); - - return (0); -} - - -/* - * 'list_devices()' - List all known devices... - */ - -void -list_devices(void) -{ - int i, /* Looping var */ - num_info; /* Number of devices */ - ieee1394_info_t *info; /* Devices... */ - - - /* - * Get the available devices... - */ - - info = ieee1394_list(&num_info); - - /* - * List them as needed... - */ - - if (num_info > 0) - { - for (i = 0; i < num_info; i ++) - printf("direct %s \"%s\" \"%s\"\n", info[i].uri, - info[i].make_model, info[i].description); - - free(info); - } -} - - -/* - * End of "$Id: ieee1394.c 5241 2006-03-07 22:07:44Z mike $". - */ diff --git a/backend/ieee1394.h b/backend/ieee1394.h deleted file mode 100644 index 19181c5c0..000000000 --- a/backend/ieee1394.h +++ /dev/null @@ -1,103 +0,0 @@ -/* - * "$Id: ieee1394.h 4494 2005-02-18 02:18:11Z mike $" - * - * IEEE-1394 header for the Common UNIX Printing System (CUPS). - * - * Copyright 2002 by Easy Software Products, all rights reserved. - * - * Redistribution and use in source and binary forms, with or - * without modification, are permitted provided that the - * following conditions are met: - * - * 1. Redistributions of source code must retain the above - * copyright notice, this list of conditions and the - * following disclaimer. - * - * 2. Redistributions in binary form must reproduce the - * above copyright notice, this list of conditions and - * the following disclaimer in the documentation and/or - * other materials provided with the distribution. - * - * 3. All advertising materials mentioning features or use - * of this software must display the following - * acknowledgement: - * - * This product includes software developed by Easy - * Software Products. - * - * 4. The name of Easy Software Products may not be used to - * endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, - * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS - * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE - * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH - * DAMAGE. - */ - -/* - * Include necessary headers. - */ - -#include <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 $". - */ diff --git a/backend/ipp.c b/backend/ipp.c index 4bcd3c794..e64d6c44c 100644 --- a/backend/ipp.c +++ b/backend/ipp.c @@ -1,5 +1,5 @@ /* - * "$Id: ipp.c 5686 2006-06-21 21:02:56Z mike $" + * "$Id: ipp.c 5724 2006-07-12 19:42:35Z mike $" * * IPP backend for the Common UNIX Printing System (CUPS). * @@ -230,6 +230,8 @@ main(int argc, /* I - Number of command-line args */ if (!strcmp(method, "https")) cupsSetEncryption(HTTP_ENCRYPT_ALWAYS); + else + cupsSetEncryption(HTTP_ENCRYPT_IF_REQUESTED); /* * See if there are any options... @@ -1620,5 +1622,5 @@ sigterm_handler(int sig) /* I - Signal */ /* - * End of "$Id: ipp.c 5686 2006-06-21 21:02:56Z mike $". + * End of "$Id: ipp.c 5724 2006-07-12 19:42:35Z mike $". */ diff --git a/backend/parallel.c b/backend/parallel.c index 3b8c9ba09..c223fb06c 100644 --- a/backend/parallel.c +++ b/backend/parallel.c @@ -1,5 +1,5 @@ /* - * "$Id: parallel.c 5594 2006-05-27 03:14:03Z mike $" + * "$Id: parallel.c 5726 2006-07-12 20:00:11Z mike $" * * Parallel port backend for the Common UNIX Printing System (CUPS). * @@ -92,10 +92,6 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */ int copies; /* Number of copies to print */ size_t tbytes; /* Total number of bytes written */ struct termios opts; /* Parallel port options */ -#if defined(__linux) && defined(LP_POUTPA) - unsigned int status; /* Port status (off-line, out-of-paper, etc.) */ - int paperout; /* Paper out? */ -#endif /* __linux && LP_POUTPA */ #if defined(HAVE_SIGACTION) && !defined(HAVE_SIGSET) struct sigaction action; /* Actions for POSIX signals */ #endif /* HAVE_SIGACTION && !HAVE_SIGSET */ @@ -252,36 +248,6 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */ tcsetattr(device_fd, TCSANOW, &opts); -#if defined(__linux) && defined(LP_POUTPA) - /* - * Show the printer status before we send the file... - */ - - paperout = 0; - - while (!ioctl(fd, LPGETSTATUS, &status)) - { - fprintf(stderr, "DEBUG: LPGETSTATUS returned a port status of %02X...\n", status); - - if (status & LP_POUTPA) - { - fputs("WARNING: Media tray empty!\n", stderr); - fputs("STATUS: +media-tray-empty-error\n", stderr); - - paperout = 1; - } - - if (!(status & LP_PERRORP)) - fputs("WARNING: Printer fault!\n", stderr); - else if (!(status & LP_PSELECD)) - fputs("WARNING: Printer off-line.\n", stderr); - else - break; - - sleep(5); - } -#endif /* __linux && LP_POUTPA */ - /* * Finally, send the print file... */ @@ -612,5 +578,5 @@ list_devices(void) /* - * End of "$Id: parallel.c 5594 2006-05-27 03:14:03Z mike $". + * End of "$Id: parallel.c 5726 2006-07-12 20:00:11Z mike $". */ diff --git a/backend/runloop.c b/backend/runloop.c index 6393ed507..03bb09282 100644 --- a/backend/runloop.c +++ b/backend/runloop.c @@ -1,5 +1,5 @@ /* - * "$Id: runloop.c 5594 2006-05-27 03:14:03Z mike $" + * "$Id: runloop.c 5726 2006-07-12 20:00:11Z mike $" * * Common run loop API for the Common UNIX Printing System (CUPS). * @@ -53,6 +53,7 @@ backendRunLoop(int print_fd, /* I - Print file descriptor */ total_bytes, /* Total bytes written */ bytes; /* Bytes written */ int paperout; /* "Paper out" status */ + int offline; /* "Off-line" status */ char print_buffer[8192], /* Print data buffer */ *print_ptr, /* Pointer into print data buffer */ bc_buffer[1024]; /* Back-channel data buffer */ @@ -61,6 +62,9 @@ backendRunLoop(int print_fd, /* I - Print file descriptor */ #endif /* HAVE_SIGACTION && !HAVE_SIGSET */ + fprintf(stderr, "DEBUG: backendRunLoop(print_fd=%d, device_fd=%d, use_bc=%d)\n", + print_fd, device_fd, use_bc); + /* * If we are printing data from a print driver on stdin, ignore SIGTERM * so that the driver can finish out any page data, e.g. to eject the @@ -93,7 +97,7 @@ backendRunLoop(int print_fd, /* I - Print file descriptor */ * Now loop until we are out of data from print_fd... */ - for (print_bytes = 0, print_ptr = print_buffer, paperout = 0, total_bytes = 0;;) + for (print_bytes = 0, print_ptr = print_buffer, offline = 0, paperout = 0, total_bytes = 0;;) { /* * Use select() to determine whether we have data to copy around... @@ -106,11 +110,28 @@ backendRunLoop(int print_fd, /* I - Print file descriptor */ FD_SET(device_fd, &input); FD_ZERO(&output); - if (print_bytes) + if (print_bytes || !use_bc) FD_SET(device_fd, &output); - if (select(nfds, &input, &output, NULL, NULL) < 0) - continue; /* Ignore errors here */ + if (use_bc) + { + if (select(nfds, &input, &output, NULL, NULL) < 0) + { + /* + * Pause printing to clear any pending errors... + */ + + if (errno == ENXIO && !offline) + { + fputs("STATE: +offline-error\n", stderr); + fputs("INFO: Printer is currently off-line.\n", stderr); + offline = 1; + } + + sleep(1); + continue; + } + } /* * Check if we have back-channel data ready... @@ -158,6 +179,9 @@ backendRunLoop(int print_fd, /* I - Print file descriptor */ } print_ptr = print_buffer; + + fprintf(stderr, "DEBUG: Read %d bytes of print data...\n", + (int)print_bytes); } /* @@ -182,6 +206,15 @@ backendRunLoop(int print_fd, /* I - Print file descriptor */ paperout = 1; } } + else if (errno == ENXIO) + { + if (!offline) + { + fputs("STATE: +offline-error\n", stderr); + fputs("INFO: Printer is currently off-line.\n", stderr); + offline = 1; + } + } else if (errno != EAGAIN && errno != EINTR && errno != ENOTTY) { perror("ERROR: Unable to write print data"); @@ -196,7 +229,14 @@ backendRunLoop(int print_fd, /* I - Print file descriptor */ paperout = 0; } - fprintf(stderr, "DEBUG: Wrote %d bytes...\n", (int)bytes); + if (offline) + { + fputs("STATE: -offline-error\n", stderr); + fputs("INFO: Printer is now on-line.\n", stderr); + offline = 0; + } + + fprintf(stderr, "DEBUG: Wrote %d bytes of print data...\n", (int)bytes); print_bytes -= bytes; print_ptr += bytes; @@ -214,5 +254,5 @@ backendRunLoop(int print_fd, /* I - Print file descriptor */ /* - * End of "$Id: runloop.c 5594 2006-05-27 03:14:03Z mike $". + * End of "$Id: runloop.c 5726 2006-07-12 20:00:11Z mike $". */ diff --git a/backend/snmp.c b/backend/snmp.c index 8ac2dea4f..56e7ad9e7 100644 --- a/backend/snmp.c +++ b/backend/snmp.c @@ -1,5 +1,5 @@ /* - * "$Id: snmp.c 5663 2006-06-15 20:36:42Z mike $" + * "$Id: snmp.c 5736 2006-07-13 19:59:36Z mike $" * * SNMP discovery backend for the Common UNIX Printing System (CUPS). * @@ -384,7 +384,7 @@ add_cache(http_addr_t *addr, /* I - Device IP address */ debug_printf("DEBUG: add_cache(addr=%p, addrname=\"%s\", uri=\"%s\", " "id=\"%s\", make_and_model=\"%s\")\n", - addr, addrname, uri, id ? id : "(null)", + addr, addrname, uri ? uri : "(null)", id ? id : "(null)", make_and_model ? make_and_model : "(null)"); temp = calloc(1, sizeof(snmp_cache_t)); @@ -1203,7 +1203,7 @@ static int /* O - Result of comparison */ compare_cache(snmp_cache_t *a, /* I - First cache entry */ snmp_cache_t *b) /* I - Second cache entry */ { - return (a->address.ipv4.sin_addr.s_addr - b->address.ipv4.sin_addr.s_addr); + return (strcasecmp(a->addrname, b->addrname)); } @@ -1874,8 +1874,8 @@ read_snmp_response(int fd) /* I - SNMP socket file descriptor */ * Find a matching device in the cache... */ - key.address = addr; - device = (snmp_cache_t *)cupsArrayFind(Devices, &key); + key.addrname = addrname; + device = (snmp_cache_t *)cupsArrayFind(Devices, &key); /* * Process the message... @@ -2215,5 +2215,5 @@ update_cache(snmp_cache_t *device, /* I - Device */ /* - * End of "$Id: snmp.c 5663 2006-06-15 20:36:42Z mike $". + * End of "$Id: snmp.c 5736 2006-07-13 19:59:36Z mike $". */ diff --git a/backend/usb-unix.c b/backend/usb-unix.c index 13b2dc049..94544df5e 100644 --- a/backend/usb-unix.c +++ b/backend/usb-unix.c @@ -1,5 +1,5 @@ /* - * "$Id: usb-unix.c 5628 2006-06-05 15:25:23Z mike $" + * "$Id: usb-unix.c 5726 2006-07-12 20:00:11Z mike $" * * USB port backend for the Common UNIX Printing System (CUPS). * @@ -44,7 +44,7 @@ * Local functions... */ -int open_device(const char *uri); +int open_device(const char *uri, int *use_bc); /* @@ -65,24 +65,12 @@ print_device(const char *uri, /* I - Device URI */ int device_fd; /* USB device */ size_t tbytes; /* Total number of bytes written */ struct termios opts; /* Parallel port options */ -#if defined(__linux) && defined(LP_POUTPA) - unsigned int status; /* Port status (off-line, out-of-paper, etc.) */ - int paperout; /* Paper out? */ -#endif /* __linux && LP_POUTPA */ (void)argc; (void)argv; /* - * Disable backchannel data when printing to Canon USB printers - apparently - * Canon printers will return the IEEE-1284 device ID over and over and over - * when they get a read request... - */ - - use_bc = strcasecmp(hostname, "Canon") != 0; - - /* * Open the USB port device... */ @@ -90,7 +78,15 @@ print_device(const char *uri, /* I - Device URI */ do { - if ((device_fd = open_device(uri)) == -1) + /* + * Disable backchannel data when printing to Canon USB printers - apparently + * Canon printers will return the IEEE-1284 device ID over and over and over + * when they get a read request... + */ + + use_bc = strcasecmp(hostname, "Canon") != 0; + + if ((device_fd = open_device(uri, &use_bc)) == -1) { if (getenv("CLASS") != NULL) { @@ -148,37 +144,6 @@ print_device(const char *uri, /* I - Device URI */ tcsetattr(device_fd, TCSANOW, &opts); -#if defined(__linux) && defined(LP_POUTPA) - /* - * Show the printer status before we send the file... - */ - - paperout = 0; - - while (!ioctl(device_fd, LPGETSTATUS, &status)) - { - fprintf(stderr, "DEBUG: LPGETSTATUS returned a port status of %02X...\n", - status); - - if (status & LP_POUTPA) - { - fputs("WARNING: Media tray empty!\n", stderr); - fputs("STATUS: +media-tray-empty-error\n", stderr); - - paperout = 1; - } - - if (!(status & LP_PERRORP)) - fputs("WARNING: Printer fault!\n", stderr); - else if (!(status & LP_PSELECD)) - fputs("WARNING: Printer off-line.\n", stderr); - else - break; - - sleep(5); - } -#endif /* __linux && LP_POUTPA */ - /* * Finally, send the print file... */ @@ -195,7 +160,7 @@ print_device(const char *uri, /* I - Device URI */ lseek(print_fd, 0, SEEK_SET); } - tbytes = backendRunLoop(print_fd, device_fd, 1); + tbytes = backendRunLoop(print_fd, device_fd, use_bc); if (print_fd != 0 && tbytes >= 0) fprintf(stderr, "INFO: Sent print file, " CUPS_LLFMT " bytes...\n", @@ -277,7 +242,7 @@ list_devices(void) { sprintf(device, "/dev/usb/printer%d", i); - if ((fd = open(device, O_RDWR | O_EXCL)) >= 0) + if ((fd = open(device, O_WRONLY | O_EXCL)) >= 0) { if (!backendGetDeviceID(fd, device_id, sizeof(device_id), make_model, sizeof(make_model), @@ -314,8 +279,12 @@ list_devices(void) */ int /* O - File descriptor or -1 on error */ -open_device(const char *uri) /* I - Device URI */ +open_device(const char *uri, /* I - Device URI */ + int *use_bc) /* O - Set to 0 for unidirectional */ { + int fd; /* File descriptor */ + + /* * The generic implementation just treats the URI as a device filename... * Specific operating systems may also support using the device serial @@ -340,7 +309,6 @@ open_device(const char *uri) /* I - Device URI */ int i; /* Looping var */ int busy; /* Are any ports busy? */ - int fd; /* File descriptor */ char format[255], /* Format for device filename */ device[255], /* Device filename */ device_id[1024], /* Device ID string */ @@ -446,7 +414,6 @@ open_device(const char *uri) /* I - Device URI */ int i; /* Looping var */ int busy; /* Are any ports busy? */ - int fd; /* File descriptor */ char device[255], /* Device filename */ device_id[1024], /* Device ID string */ make_model[1024], /* Make and model */ @@ -463,7 +430,7 @@ open_device(const char *uri) /* I - Device URI */ { sprintf(device, "/dev/usb/printer%d", i); - if ((fd = open(device, O_RDWR | O_EXCL)) >= 0) + if ((fd = open(device, O_WRONLY | O_EXCL)) >= 0) backendGetDeviceID(fd, device_id, sizeof(device_id), make_model, sizeof(make_model), "usb", device_uri, sizeof(device_uri)); @@ -481,7 +448,17 @@ open_device(const char *uri) /* I - Device URI */ } if (!strcmp(uri, device_uri)) - return (fd); /* Yes, return this file descriptor... */ + { + /* + * Yes, return this file descriptor... + */ + + fputs("DEBUG: Setting use_bc to 0!\n", stderr); + + *use_bc = 0; + + return (fd); + } /* * This wasn't the one... @@ -514,7 +491,15 @@ open_device(const char *uri) /* I - Device URI */ return (-1); } #else - return (open(uri + 4, O_RDWR | O_EXCL)); + { + if ((fd = open(uri + 4, O_RDWR | O_EXCL)) < 0) + { + fd = open(uri + 4, O_WRONLY | O_EXCL); + *use_bc = 0; + } + + return (fd); + } #endif /* __linux */ else { @@ -525,5 +510,5 @@ open_device(const char *uri) /* I - Device URI */ /* - * End of "$Id: usb-unix.c 5628 2006-06-05 15:25:23Z mike $". + * End of "$Id: usb-unix.c 5726 2006-07-12 20:00:11Z mike $". */ diff --git a/berkeley/lprm.c b/berkeley/lprm.c index 67479b5a3..41f35ca12 100644 --- a/berkeley/lprm.c +++ b/berkeley/lprm.c @@ -1,5 +1,5 @@ /* - * "$Id: lprm.c 5023 2006-01-29 14:39:44Z mike $" + * "$Id: lprm.c 5719 2006-07-11 21:04:48Z mike $" * * "lprm" command for the Common UNIX Printing System (CUPS). * @@ -57,7 +57,8 @@ main(int argc, /* I - Number of command-line arguments */ ipp_op_t op; /* Operation */ cups_lang_t *language; /* Language */ int num_dests; /* Number of destinations */ - cups_dest_t *dests; /* Destinations */ + cups_dest_t *dests, /* Destinations */ + *defdest; /* Default destination */ http_encryption_t encryption; /* Encryption? */ @@ -72,11 +73,6 @@ main(int argc, /* I - Number of command-line arguments */ http = NULL; encryption = cupsEncryption(); language = cupsLangDefault(); - num_dests = cupsGetDests(&dests); - - for (i = 0; i < num_dests; i ++) - if (dests[i].is_default) - dest = dests[i].name; /* * Open a connection to the server... @@ -85,10 +81,13 @@ main(int argc, /* I - Number of command-line arguments */ if ((http = httpConnectEncrypt(cupsServer(), ippPort(), encryption)) == NULL) { _cupsLangPuts(stderr, _("lprm: Unable to contact server!\n")); - cupsFreeDests(num_dests, dests); return (1); } + num_dests = cupsGetDests2(http, &dests); + defdest = cupsGetDest(NULL, NULL, num_dests, dests); + dest = defdest ? defdest->name : NULL; + /* * Process command-line arguments... */ @@ -102,6 +101,7 @@ main(int argc, /* I - Number of command-line arguments */ encryption = HTTP_ENCRYPT_REQUIRED; httpEncryption(http, encryption); + cupsSetEncryption(encryption); #else _cupsLangPrintf(stderr, _("%s: Sorry, no encryption support compiled in!\n"), @@ -152,9 +152,6 @@ main(int argc, /* I - Number of command-line arguments */ break; case 'h' : /* Connect to host */ - if (http != NULL) - httpClose(http); - if (argv[i][2] != '\0') cupsSetServer(argv[i] + 2); else @@ -172,6 +169,20 @@ main(int argc, /* I - Number of command-line arguments */ else cupsSetServer(argv[i]); } + + httpClose(http); + cupsFreeDests(num_dests, dests); + + if ((http = httpConnectEncrypt(cupsServer(), ippPort(), + encryption)) == NULL) + { + _cupsLangPuts(stderr, _("lprm: Unable to contact server!\n")); + return (1); + } + + num_dests = cupsGetDests2(http, &dests); + defdest = cupsGetDest(NULL, NULL, num_dests, dests); + dest = defdest ? defdest->name : NULL; break; default : @@ -283,5 +294,5 @@ main(int argc, /* I - Number of command-line arguments */ /* - * End of "$Id: lprm.c 5023 2006-01-29 14:39:44Z mike $". + * End of "$Id: lprm.c 5719 2006-07-11 21:04:48Z mike $". */ diff --git a/config-scripts/cups-compiler.m4 b/config-scripts/cups-compiler.m4 index adbc1294f..7dc7b7052 100644 --- a/config-scripts/cups-compiler.m4 +++ b/config-scripts/cups-compiler.m4 @@ -1,5 +1,5 @@ dnl -dnl "$Id: cups-compiler.m4 5643 2006-06-07 20:58:29Z mike $" +dnl "$Id: cups-compiler.m4 5705 2006-06-30 01:07:29Z mike $" dnl dnl Compiler stuff for the Common UNIX Printing System (CUPS). dnl @@ -297,11 +297,6 @@ else # Warning 829 is passing constant string as char * CXXFLAGS="+W336,829 $CXXFLAGS" - if test -z "$with_archflags"; then - # Build portable binaries for all HP systems... - ARCHFLAGS="+DAportable" - fi - if test $PICFLAG = 1; then OPTIM="+z $OPTIM" fi @@ -465,5 +460,5 @@ if test $uname = HP-UX; then fi dnl -dnl End of "$Id: cups-compiler.m4 5643 2006-06-07 20:58:29Z mike $". +dnl End of "$Id: cups-compiler.m4 5705 2006-06-30 01:07:29Z mike $". dnl diff --git a/config-scripts/cups-defaults.m4 b/config-scripts/cups-defaults.m4 index ea23bd5c3..6b99cb575 100644 --- a/config-scripts/cups-defaults.m4 +++ b/config-scripts/cups-defaults.m4 @@ -1,5 +1,5 @@ dnl -dnl "$Id: cups-defaults.m4 5643 2006-06-07 20:58:29Z mike $" +dnl "$Id: cups-defaults.m4 5745 2006-07-18 13:45:56Z mike $" dnl dnl Default cupsd configuration settings for the Common UNIX Printing System dnl (CUPS). @@ -24,9 +24,9 @@ dnl WWW: http://www.cups.org dnl dnl Default langugages... -AC_ARG_WITH(languages, [ --with-languages set installed languages, default="es ja" ], +AC_ARG_WITH(languages, [ --with-languages set installed languages, default="de es ja pl sv" ], LANGUAGES="$withval", - LANGUAGES="es ja pl sv") + LANGUAGES="de es ja pl sv") AC_SUBST(LANGUAGES) dnl Default ConfigFilePerm @@ -248,5 +248,5 @@ fi AC_DEFINE_UNQUOTED(CUPS_DEFAULT_PRINTCAP, "$CUPS_DEFAULT_PRINTCAP") dnl -dnl End of "$Id: cups-defaults.m4 5643 2006-06-07 20:58:29Z mike $". +dnl End of "$Id: cups-defaults.m4 5745 2006-07-18 13:45:56Z mike $". dnl diff --git a/config-scripts/cups-directories.m4 b/config-scripts/cups-directories.m4 index afbeba5aa..ece2b5820 100644 --- a/config-scripts/cups-directories.m4 +++ b/config-scripts/cups-directories.m4 @@ -1,5 +1,5 @@ dnl -dnl "$Id: cups-directories.m4 5547 2006-05-19 12:44:29Z mike $" +dnl "$Id: cups-directories.m4 5696 2006-06-26 18:34:20Z mike $" dnl dnl Directory stuff for the Common UNIX Printing System (CUPS). dnl @@ -115,7 +115,7 @@ AC_ARG_WITH(rcdir, [ --with-rcdir set path for rc scripts],rcdir="$w if test x$rcdir = x; then case "$uname" in - FreeBSD* | OpenBSD*) + FreeBSD* | OpenBSD* | MirBsD* | ekkoBSD*) # FreeBSD and OpenBSD INITDIR="" INITDDIR="" @@ -302,5 +302,5 @@ AC_DEFINE_UNQUOTED(CUPS_STATEDIR, "$localstatedir/run/cups") AC_SUBST(CUPS_STATEDIR) dnl -dnl End of "$Id: cups-directories.m4 5547 2006-05-19 12:44:29Z mike $". +dnl End of "$Id: cups-directories.m4 5696 2006-06-26 18:34:20Z mike $". dnl diff --git a/cups-config.in b/cups-config.in index 9b998736f..ef5084a64 100755 --- a/cups-config.in +++ b/cups-config.in @@ -1,6 +1,6 @@ #! /bin/sh # -# "$Id: cups-config.in 5676 2006-06-19 20:28:05Z mike $" +# "$Id: cups-config.in 5688 2006-06-23 20:33:08Z mike $" # # CUPS configuration utility. # @@ -42,8 +42,8 @@ INSTALLSTATIC=@INSTALLSTATIC@ # flags for C++ compiler: CFLAGS="" LDFLAGS="@EXPORT_LDFLAGS@" -LIBS="@EXPORT_SSLLIBS@ @LIBS@" -IMGLIBS="@EXPORT_LIBTIFF@ @EXPORT_LIBJPEG@ @EXPORT_LIBPNG@ @EXPORT_LIBZ@" +LIBS="@EXPORT_SSLLIBS@ @EXPORT_LIBZ@ @LIBS@" +IMGLIBS="@EXPORT_LIBTIFF@ @EXPORT_LIBJPEG@ @EXPORT_LIBPNG@" # Check for local invocation... selfdir=`dirname $0` @@ -115,13 +115,13 @@ while test $# -gt 0; do if test $image = no; then echo -lcups $LIBS else - echo -lcupsimage $IMGLIBS -lcups $LIBS + echo -lcupsimage -lcups $IMGLIBS $LIBS fi else if test $image = no; then echo $libdir/libcups.a $LIBS else - echo $imagelibdir/libcupsimage.a $IMGLIBS $libdir/libcups.a $LIBS + echo $imagelibdir/libcupsimage.a $libdir/libcups.a $IMGLIBS $LIBS fi fi ;; @@ -150,5 +150,5 @@ while test $# -gt 0; do done # -# End of "$Id: cups-config.in 5676 2006-06-19 20:28:05Z mike $". +# End of "$Id: cups-config.in 5688 2006-06-23 20:33:08Z mike $". # diff --git a/cups/Dependencies b/cups/Dependencies index 4cb7cb37f..fda8a6ae8 100644 --- a/cups/Dependencies +++ b/cups/Dependencies @@ -1,20 +1,23 @@ # DO NOT DELETE adminutil.o: adminutil.h cups.h ipp.h http.h md5.h ppd.h array.h file.h -adminutil.o: language.h globals.h string.h ../config.h i18n.h transcode.h -adminutil.o: debug.h +adminutil.o: language.h globals.h string.h ../config.h http-private.h +adminutil.o: ipp-private.h i18n.h transcode.h debug.h array.o: array.h string.h ../config.h debug.h attr.o: ppd.h array.h file.h debug.h string.h ../config.h -auth.o: globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -auth.o: array.h file.h language.h i18n.h transcode.h debug.h +auth.o: globals.h string.h ../config.h http-private.h http.h md5.h +auth.o: ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h +auth.o: transcode.h debug.h backchannel.o: cups.h ipp.h http.h md5.h ppd.h array.h file.h language.h backend.o: backend.h string.h ../config.h -custom.o: globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -custom.o: array.h file.h language.h i18n.h transcode.h debug.h -dest.o: globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -dest.o: array.h file.h language.h i18n.h transcode.h +custom.o: globals.h string.h ../config.h http-private.h http.h md5.h +custom.o: ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h +custom.o: transcode.h debug.h +dest.o: globals.h string.h ../config.h http-private.h http.h md5.h +dest.o: ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h +dest.o: transcode.h dir.o: dir.h string.h ../config.h debug.h -emit.o: ppd.h array.h file.h string.h ../config.h +emit.o: ppd.h array.h file.h string.h ../config.h debug.h encode.o: cups.h ipp.h http.h md5.h ppd.h array.h file.h language.h encode.o: ipp-private.h string.h ../config.h debug.h file.o: http-private.h ../config.h http.h md5.h ipp-private.h ipp.h globals.h @@ -29,74 +32,90 @@ globals.o: transcode.h debug.h http.o: http-private.h ../config.h http.h md5.h ipp-private.h ipp.h globals.h http.o: string.h cups.h ppd.h array.h file.h language.h i18n.h transcode.h http.o: debug.h -http-addr.o: globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -http-addr.o: array.h file.h language.h i18n.h transcode.h debug.h +http-addr.o: globals.h string.h ../config.h http-private.h http.h md5.h +http-addr.o: ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h +http-addr.o: i18n.h transcode.h debug.h http-addrlist.o: http-private.h ../config.h http.h md5.h ipp-private.h ipp.h http-addrlist.o: globals.h string.h cups.h ppd.h array.h file.h language.h http-addrlist.o: i18n.h transcode.h debug.h -http-support.o: debug.h globals.h string.h ../config.h cups.h ipp.h http.h -http-support.o: md5.h ppd.h array.h file.h language.h i18n.h transcode.h +http-support.o: debug.h globals.h string.h ../config.h http-private.h http.h +http-support.o: md5.h ipp-private.h ipp.h cups.h ppd.h array.h file.h +http-support.o: language.h i18n.h transcode.h ipp.o: http-private.h ../config.h http.h md5.h ipp-private.h ipp.h globals.h ipp.o: string.h cups.h ppd.h array.h file.h language.h i18n.h transcode.h ipp.o: debug.h -ipp-support.o: globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -ipp-support.o: array.h file.h language.h i18n.h transcode.h debug.h -langprintf.o: globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -langprintf.o: array.h file.h language.h i18n.h transcode.h -language.o: globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -language.o: array.h file.h language.h i18n.h transcode.h debug.h -localize.o: globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -localize.o: array.h file.h language.h i18n.h transcode.h debug.h +ipp-support.o: globals.h string.h ../config.h http-private.h http.h md5.h +ipp-support.o: ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h +ipp-support.o: i18n.h transcode.h debug.h +langprintf.o: globals.h string.h ../config.h http-private.h http.h md5.h +langprintf.o: ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h +langprintf.o: i18n.h transcode.h +language.o: globals.h string.h ../config.h http-private.h http.h md5.h +language.o: ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h +language.o: transcode.h debug.h +localize.o: globals.h string.h ../config.h http-private.h http.h md5.h +localize.o: ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h +localize.o: transcode.h debug.h mark.o: cups.h ipp.h http.h md5.h ppd.h array.h file.h language.h string.h mark.o: ../config.h debug.h md5.o: md5.h string.h ../config.h md5passwd.o: http.h md5.h string.h ../config.h -notify.o: globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -notify.o: array.h file.h language.h i18n.h transcode.h +notify.o: globals.h string.h ../config.h http-private.h http.h md5.h +notify.o: ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h +notify.o: transcode.h options.o: cups.h ipp.h http.h md5.h ppd.h array.h file.h language.h string.h options.o: ../config.h debug.h page.o: ppd.h array.h file.h string.h ../config.h -ppd.o: globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h array.h -ppd.o: file.h language.h i18n.h transcode.h debug.h -request.o: globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -request.o: array.h file.h language.h i18n.h transcode.h debug.h +ppd.o: globals.h string.h ../config.h http-private.h http.h md5.h +ppd.o: ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h +ppd.o: transcode.h debug.h +request.o: globals.h string.h ../config.h http-private.h http.h md5.h +request.o: ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h +request.o: transcode.h debug.h snprintf.o: string.h ../config.h string.o: array.h debug.h string.h ../config.h -tempfile.o: globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -tempfile.o: array.h file.h language.h i18n.h transcode.h debug.h -transcode.o: globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -transcode.o: array.h file.h language.h i18n.h transcode.h debug.h +tempfile.o: globals.h string.h ../config.h http-private.h http.h md5.h +tempfile.o: ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h +tempfile.o: transcode.h debug.h +transcode.o: globals.h string.h ../config.h http-private.h http.h md5.h +transcode.o: ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h +transcode.o: i18n.h transcode.h debug.h usersys.o: http-private.h ../config.h http.h md5.h ipp-private.h ipp.h usersys.o: globals.h string.h cups.h ppd.h array.h file.h language.h i18n.h usersys.o: transcode.h -util.o: globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -util.o: array.h file.h language.h i18n.h transcode.h debug.h +util.o: globals.h string.h ../config.h http-private.h http.h md5.h +util.o: ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h +util.o: transcode.h debug.h testadmin.o: adminutil.h cups.h ipp.h http.h md5.h ppd.h array.h file.h testadmin.o: language.h string.h ../config.h testarray.o: ../cups/string.h ../config.h string.h array.h dir.h debug.h testfile.o: string.h ../config.h file.h debug.h testhttp.o: http.h md5.h string.h ../config.h testi18n.o: i18n.h transcode.h language.h array.h string.h ../config.h -testipp.o: ../cups/string.h ../config.h string.h ipp.h http.h md5.h +testipp.o: ../cups/string.h ../config.h string.h ipp-private.h ipp.h http.h +testipp.o: md5.h testlang.o: i18n.h transcode.h language.h array.h testppd.o: ../cups/string.h ../config.h string.h ppd.h array.h file.h # DO NOT DELETE adminutil.32.o: adminutil.c adminutil.h cups.h ipp.h http.h md5.h ppd.h array.h file.h -adminutil.32.o: adminutil.c language.h globals.h string.h ../config.h i18n.h transcode.h -adminutil.32.o: adminutil.c debug.h +adminutil.32.o: adminutil.c language.h globals.h string.h ../config.h http-private.h +adminutil.32.o: adminutil.c ipp-private.h i18n.h transcode.h debug.h array.32.o: array.c array.h string.h ../config.h debug.h attr.32.o: attr.c ppd.h array.h file.h debug.h string.h ../config.h -auth.32.o: auth.c globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -auth.32.o: auth.c array.h file.h language.h i18n.h transcode.h debug.h +auth.32.o: auth.c globals.h string.h ../config.h http-private.h http.h md5.h +auth.32.o: auth.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h +auth.32.o: auth.c transcode.h debug.h backchannel.32.o: backchannel.c cups.h ipp.h http.h md5.h ppd.h array.h file.h language.h backend.32.o: backend.c backend.h string.h ../config.h -custom.32.o: custom.c globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -custom.32.o: custom.c array.h file.h language.h i18n.h transcode.h debug.h -dest.32.o: dest.c globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -dest.32.o: dest.c array.h file.h language.h i18n.h transcode.h +custom.32.o: custom.c globals.h string.h ../config.h http-private.h http.h md5.h +custom.32.o: custom.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h +custom.32.o: custom.c transcode.h debug.h +dest.32.o: dest.c globals.h string.h ../config.h http-private.h http.h md5.h +dest.32.o: dest.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h +dest.32.o: dest.c transcode.h dir.32.o: dir.c dir.h string.h ../config.h debug.h -emit.32.o: emit.c ppd.h array.h file.h string.h ../config.h +emit.32.o: emit.c ppd.h array.h file.h string.h ../config.h debug.h encode.32.o: encode.c cups.h ipp.h http.h md5.h ppd.h array.h file.h language.h encode.32.o: encode.c ipp-private.h string.h ../config.h debug.h file.32.o: file.c http-private.h ../config.h http.h md5.h ipp-private.h ipp.h globals.h @@ -111,74 +130,90 @@ globals.32.o: globals.c transcode.h debug.h http.32.o: http.c http-private.h ../config.h http.h md5.h ipp-private.h ipp.h globals.h http.32.o: http.c string.h cups.h ppd.h array.h file.h language.h i18n.h transcode.h http.32.o: http.c debug.h -http-addr.32.o: http-addr.c globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -http-addr.32.o: http-addr.c array.h file.h language.h i18n.h transcode.h debug.h +http-addr.32.o: http-addr.c globals.h string.h ../config.h http-private.h http.h md5.h +http-addr.32.o: http-addr.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h +http-addr.32.o: http-addr.c i18n.h transcode.h debug.h http-addrlist.32.o: http-addrlist.c http-private.h ../config.h http.h md5.h ipp-private.h ipp.h http-addrlist.32.o: http-addrlist.c globals.h string.h cups.h ppd.h array.h file.h language.h http-addrlist.32.o: http-addrlist.c i18n.h transcode.h debug.h -http-support.32.o: http-support.c debug.h globals.h string.h ../config.h cups.h ipp.h http.h -http-support.32.o: http-support.c md5.h ppd.h array.h file.h language.h i18n.h transcode.h +http-support.32.o: http-support.c debug.h globals.h string.h ../config.h http-private.h http.h +http-support.32.o: http-support.c md5.h ipp-private.h ipp.h cups.h ppd.h array.h file.h +http-support.32.o: http-support.c language.h i18n.h transcode.h ipp.32.o: ipp.c http-private.h ../config.h http.h md5.h ipp-private.h ipp.h globals.h ipp.32.o: ipp.c string.h cups.h ppd.h array.h file.h language.h i18n.h transcode.h ipp.32.o: ipp.c debug.h -ipp-support.32.o: ipp-support.c globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -ipp-support.32.o: ipp-support.c array.h file.h language.h i18n.h transcode.h debug.h -langprintf.32.o: langprintf.c globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -langprintf.32.o: langprintf.c array.h file.h language.h i18n.h transcode.h -language.32.o: language.c globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -language.32.o: language.c array.h file.h language.h i18n.h transcode.h debug.h -localize.32.o: localize.c globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -localize.32.o: localize.c array.h file.h language.h i18n.h transcode.h debug.h +ipp-support.32.o: ipp-support.c globals.h string.h ../config.h http-private.h http.h md5.h +ipp-support.32.o: ipp-support.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h +ipp-support.32.o: ipp-support.c i18n.h transcode.h debug.h +langprintf.32.o: langprintf.c globals.h string.h ../config.h http-private.h http.h md5.h +langprintf.32.o: langprintf.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h +langprintf.32.o: langprintf.c i18n.h transcode.h +language.32.o: language.c globals.h string.h ../config.h http-private.h http.h md5.h +language.32.o: language.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h +language.32.o: language.c transcode.h debug.h +localize.32.o: localize.c globals.h string.h ../config.h http-private.h http.h md5.h +localize.32.o: localize.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h +localize.32.o: localize.c transcode.h debug.h mark.32.o: mark.c cups.h ipp.h http.h md5.h ppd.h array.h file.h language.h string.h mark.32.o: mark.c ../config.h debug.h md5.32.o: md5.c md5.h string.h ../config.h md5passwd.32.o: md5passwd.c http.h md5.h string.h ../config.h -notify.32.o: notify.c globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -notify.32.o: notify.c array.h file.h language.h i18n.h transcode.h +notify.32.o: notify.c globals.h string.h ../config.h http-private.h http.h md5.h +notify.32.o: notify.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h +notify.32.o: notify.c transcode.h options.32.o: options.c cups.h ipp.h http.h md5.h ppd.h array.h file.h language.h string.h options.32.o: options.c ../config.h debug.h page.32.o: page.c ppd.h array.h file.h string.h ../config.h -ppd.32.o: ppd.c globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h array.h -ppd.32.o: ppd.c file.h language.h i18n.h transcode.h debug.h -request.32.o: request.c globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -request.32.o: request.c array.h file.h language.h i18n.h transcode.h debug.h +ppd.32.o: ppd.c globals.h string.h ../config.h http-private.h http.h md5.h +ppd.32.o: ppd.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h +ppd.32.o: ppd.c transcode.h debug.h +request.32.o: request.c globals.h string.h ../config.h http-private.h http.h md5.h +request.32.o: request.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h +request.32.o: request.c transcode.h debug.h snprintf.32.o: snprintf.c string.h ../config.h string.32.o: string.c array.h debug.h string.h ../config.h -tempfile.32.o: tempfile.c globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -tempfile.32.o: tempfile.c array.h file.h language.h i18n.h transcode.h debug.h -transcode.32.o: transcode.c globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -transcode.32.o: transcode.c array.h file.h language.h i18n.h transcode.h debug.h +tempfile.32.o: tempfile.c globals.h string.h ../config.h http-private.h http.h md5.h +tempfile.32.o: tempfile.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h +tempfile.32.o: tempfile.c transcode.h debug.h +transcode.32.o: transcode.c globals.h string.h ../config.h http-private.h http.h md5.h +transcode.32.o: transcode.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h +transcode.32.o: transcode.c i18n.h transcode.h debug.h usersys.32.o: usersys.c http-private.h ../config.h http.h md5.h ipp-private.h ipp.h usersys.32.o: usersys.c globals.h string.h cups.h ppd.h array.h file.h language.h i18n.h usersys.32.o: usersys.c transcode.h -util.32.o: util.c globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -util.32.o: util.c array.h file.h language.h i18n.h transcode.h debug.h +util.32.o: util.c globals.h string.h ../config.h http-private.h http.h md5.h +util.32.o: util.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h +util.32.o: util.c transcode.h debug.h testadmin.32.o: testadmin.c adminutil.h cups.h ipp.h http.h md5.h ppd.h array.h file.h testadmin.32.o: testadmin.c language.h string.h ../config.h testarray.32.o: testarray.c ../cups/string.h ../config.h string.h array.h dir.h debug.h testfile.32.o: testfile.c string.h ../config.h file.h debug.h testhttp.32.o: testhttp.c http.h md5.h string.h ../config.h testi18n.32.o: testi18n.c i18n.h transcode.h language.h array.h string.h ../config.h -testipp.32.o: testipp.c ../cups/string.h ../config.h string.h ipp.h http.h md5.h +testipp.32.o: testipp.c ../cups/string.h ../config.h string.h ipp-private.h ipp.h http.h +testipp.32.o: testipp.c md5.h testlang.32.o: testlang.c i18n.h transcode.h language.h array.h testppd.32.o: testppd.c ../cups/string.h ../config.h string.h ppd.h array.h file.h # DO NOT DELETE adminutil.64.o: adminutil.c adminutil.h cups.h ipp.h http.h md5.h ppd.h array.h file.h -adminutil.64.o: adminutil.c language.h globals.h string.h ../config.h i18n.h transcode.h -adminutil.64.o: adminutil.c debug.h +adminutil.64.o: adminutil.c language.h globals.h string.h ../config.h http-private.h +adminutil.64.o: adminutil.c ipp-private.h i18n.h transcode.h debug.h array.64.o: array.c array.h string.h ../config.h debug.h attr.64.o: attr.c ppd.h array.h file.h debug.h string.h ../config.h -auth.64.o: auth.c globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -auth.64.o: auth.c array.h file.h language.h i18n.h transcode.h debug.h +auth.64.o: auth.c globals.h string.h ../config.h http-private.h http.h md5.h +auth.64.o: auth.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h +auth.64.o: auth.c transcode.h debug.h backchannel.64.o: backchannel.c cups.h ipp.h http.h md5.h ppd.h array.h file.h language.h backend.64.o: backend.c backend.h string.h ../config.h -custom.64.o: custom.c globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -custom.64.o: custom.c array.h file.h language.h i18n.h transcode.h debug.h -dest.64.o: dest.c globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -dest.64.o: dest.c array.h file.h language.h i18n.h transcode.h +custom.64.o: custom.c globals.h string.h ../config.h http-private.h http.h md5.h +custom.64.o: custom.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h +custom.64.o: custom.c transcode.h debug.h +dest.64.o: dest.c globals.h string.h ../config.h http-private.h http.h md5.h +dest.64.o: dest.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h +dest.64.o: dest.c transcode.h dir.64.o: dir.c dir.h string.h ../config.h debug.h -emit.64.o: emit.c ppd.h array.h file.h string.h ../config.h +emit.64.o: emit.c ppd.h array.h file.h string.h ../config.h debug.h encode.64.o: encode.c cups.h ipp.h http.h md5.h ppd.h array.h file.h language.h encode.64.o: encode.c ipp-private.h string.h ../config.h debug.h file.64.o: file.c http-private.h ../config.h http.h md5.h ipp-private.h ipp.h globals.h @@ -193,54 +228,67 @@ globals.64.o: globals.c transcode.h debug.h http.64.o: http.c http-private.h ../config.h http.h md5.h ipp-private.h ipp.h globals.h http.64.o: http.c string.h cups.h ppd.h array.h file.h language.h i18n.h transcode.h http.64.o: http.c debug.h -http-addr.64.o: http-addr.c globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -http-addr.64.o: http-addr.c array.h file.h language.h i18n.h transcode.h debug.h +http-addr.64.o: http-addr.c globals.h string.h ../config.h http-private.h http.h md5.h +http-addr.64.o: http-addr.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h +http-addr.64.o: http-addr.c i18n.h transcode.h debug.h http-addrlist.64.o: http-addrlist.c http-private.h ../config.h http.h md5.h ipp-private.h ipp.h http-addrlist.64.o: http-addrlist.c globals.h string.h cups.h ppd.h array.h file.h language.h http-addrlist.64.o: http-addrlist.c i18n.h transcode.h debug.h -http-support.64.o: http-support.c debug.h globals.h string.h ../config.h cups.h ipp.h http.h -http-support.64.o: http-support.c md5.h ppd.h array.h file.h language.h i18n.h transcode.h +http-support.64.o: http-support.c debug.h globals.h string.h ../config.h http-private.h http.h +http-support.64.o: http-support.c md5.h ipp-private.h ipp.h cups.h ppd.h array.h file.h +http-support.64.o: http-support.c language.h i18n.h transcode.h ipp.64.o: ipp.c http-private.h ../config.h http.h md5.h ipp-private.h ipp.h globals.h ipp.64.o: ipp.c string.h cups.h ppd.h array.h file.h language.h i18n.h transcode.h ipp.64.o: ipp.c debug.h -ipp-support.64.o: ipp-support.c globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -ipp-support.64.o: ipp-support.c array.h file.h language.h i18n.h transcode.h debug.h -langprintf.64.o: langprintf.c globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -langprintf.64.o: langprintf.c array.h file.h language.h i18n.h transcode.h -language.64.o: language.c globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -language.64.o: language.c array.h file.h language.h i18n.h transcode.h debug.h -localize.64.o: localize.c globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -localize.64.o: localize.c array.h file.h language.h i18n.h transcode.h debug.h +ipp-support.64.o: ipp-support.c globals.h string.h ../config.h http-private.h http.h md5.h +ipp-support.64.o: ipp-support.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h +ipp-support.64.o: ipp-support.c i18n.h transcode.h debug.h +langprintf.64.o: langprintf.c globals.h string.h ../config.h http-private.h http.h md5.h +langprintf.64.o: langprintf.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h +langprintf.64.o: langprintf.c i18n.h transcode.h +language.64.o: language.c globals.h string.h ../config.h http-private.h http.h md5.h +language.64.o: language.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h +language.64.o: language.c transcode.h debug.h +localize.64.o: localize.c globals.h string.h ../config.h http-private.h http.h md5.h +localize.64.o: localize.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h +localize.64.o: localize.c transcode.h debug.h mark.64.o: mark.c cups.h ipp.h http.h md5.h ppd.h array.h file.h language.h string.h mark.64.o: mark.c ../config.h debug.h md5.64.o: md5.c md5.h string.h ../config.h md5passwd.64.o: md5passwd.c http.h md5.h string.h ../config.h -notify.64.o: notify.c globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -notify.64.o: notify.c array.h file.h language.h i18n.h transcode.h +notify.64.o: notify.c globals.h string.h ../config.h http-private.h http.h md5.h +notify.64.o: notify.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h +notify.64.o: notify.c transcode.h options.64.o: options.c cups.h ipp.h http.h md5.h ppd.h array.h file.h language.h string.h options.64.o: options.c ../config.h debug.h page.64.o: page.c ppd.h array.h file.h string.h ../config.h -ppd.64.o: ppd.c globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h array.h -ppd.64.o: ppd.c file.h language.h i18n.h transcode.h debug.h -request.64.o: request.c globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -request.64.o: request.c array.h file.h language.h i18n.h transcode.h debug.h +ppd.64.o: ppd.c globals.h string.h ../config.h http-private.h http.h md5.h +ppd.64.o: ppd.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h +ppd.64.o: ppd.c transcode.h debug.h +request.64.o: request.c globals.h string.h ../config.h http-private.h http.h md5.h +request.64.o: request.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h +request.64.o: request.c transcode.h debug.h snprintf.64.o: snprintf.c string.h ../config.h string.64.o: string.c array.h debug.h string.h ../config.h -tempfile.64.o: tempfile.c globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -tempfile.64.o: tempfile.c array.h file.h language.h i18n.h transcode.h debug.h -transcode.64.o: transcode.c globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -transcode.64.o: transcode.c array.h file.h language.h i18n.h transcode.h debug.h +tempfile.64.o: tempfile.c globals.h string.h ../config.h http-private.h http.h md5.h +tempfile.64.o: tempfile.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h +tempfile.64.o: tempfile.c transcode.h debug.h +transcode.64.o: transcode.c globals.h string.h ../config.h http-private.h http.h md5.h +transcode.64.o: transcode.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h +transcode.64.o: transcode.c i18n.h transcode.h debug.h usersys.64.o: usersys.c http-private.h ../config.h http.h md5.h ipp-private.h ipp.h usersys.64.o: usersys.c globals.h string.h cups.h ppd.h array.h file.h language.h i18n.h usersys.64.o: usersys.c transcode.h -util.64.o: util.c globals.h string.h ../config.h cups.h ipp.h http.h md5.h ppd.h -util.64.o: util.c array.h file.h language.h i18n.h transcode.h debug.h +util.64.o: util.c globals.h string.h ../config.h http-private.h http.h md5.h +util.64.o: util.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h +util.64.o: util.c transcode.h debug.h testadmin.64.o: testadmin.c adminutil.h cups.h ipp.h http.h md5.h ppd.h array.h file.h testadmin.64.o: testadmin.c language.h string.h ../config.h testarray.64.o: testarray.c ../cups/string.h ../config.h string.h array.h dir.h debug.h testfile.64.o: testfile.c string.h ../config.h file.h debug.h testhttp.64.o: testhttp.c http.h md5.h string.h ../config.h testi18n.64.o: testi18n.c i18n.h transcode.h language.h array.h string.h ../config.h -testipp.64.o: testipp.c ../cups/string.h ../config.h string.h ipp.h http.h md5.h +testipp.64.o: testipp.c ../cups/string.h ../config.h string.h ipp-private.h ipp.h http.h +testipp.64.o: testipp.c md5.h testlang.64.o: testlang.c i18n.h transcode.h language.h array.h testppd.64.o: testppd.c ../cups/string.h ../config.h string.h ppd.h array.h file.h diff --git a/cups/adminutil.c b/cups/adminutil.c index 6848538e2..3825b40bf 100644 --- a/cups/adminutil.c +++ b/cups/adminutil.c @@ -1,5 +1,5 @@ /* - * "$Id: adminutil.c 5638 2006-06-06 20:08:13Z mike $" + * "$Id: adminutil.c 5753 2006-07-18 19:53:24Z mike $" * * Administration utility API definitions for the Common UNIX Printing * System (CUPS). @@ -1681,8 +1681,9 @@ do_samba_command(const char *command, /* I - Command to run */ { status = -1; - _cupsLangPrintf(stderr, _("cupsaddsmb: Unable to run \"%s\": %s\n"), - command, strerror(errno)); + if (logfile) + _cupsLangPrintf(logfile, _("Unable to run \"%s\": %s\n"), + command, strerror(errno)); } else { @@ -1928,5 +1929,5 @@ write_option(cups_file_t *dstfp, /* I - PPD file */ /* - * End of "$Id: adminutil.c 5638 2006-06-06 20:08:13Z mike $". + * End of "$Id: adminutil.c 5753 2006-07-18 19:53:24Z mike $". */ diff --git a/cups/dest.c b/cups/dest.c index a91e39847..faf8241b8 100644 --- a/cups/dest.c +++ b/cups/dest.c @@ -1,5 +1,5 @@ /* - * "$Id: dest.c 5346 2006-03-28 16:05:19Z mike $" + * "$Id: dest.c 5753 2006-07-18 19:53:24Z mike $" * * User-defined destination (and option) support for the Common UNIX * Printing System (CUPS). @@ -456,6 +456,7 @@ cupsSetDests2(http_t *http, /* I - HTTP connection */ int wrote; /* Wrote definition? */ cups_dest_t *dest; /* Current destination */ cups_option_t *option; /* Current option */ + _ipp_option_t *match; /* Matching attribute for option */ FILE *fp; /* File pointer */ const char *home; /* HOME environment variable */ char filename[1024]; /* lpoptions file */ @@ -568,16 +569,23 @@ cupsSetDests2(http_t *http, /* I - HTTP connection */ for (j = dest->num_options, option = dest->options; j > 0; j --, option ++) { /* + * See if this option is a printer attribute; if so, skip it... + */ + + if ((match = _ippFindOption(option->name)) != NULL && + match->group_tag == IPP_TAG_PRINTER) + continue; + + /* * See if the server/global options match these; if so, don't * write 'em. */ - if (temp && (val = cupsGetOption(option->name, temp->num_options, - temp->options)) != NULL) - { - if (!strcasecmp(val, option->value)) - continue; - } + if (temp && + (val = cupsGetOption(option->name, temp->num_options, + temp->options)) != NULL && + !strcasecmp(val, option->value)) + continue; /* * Options don't match, write to the file... @@ -593,10 +601,35 @@ cupsSetDests2(http_t *http, /* I - HTTP connection */ if (option->value[0]) { - if (strchr(option->value, ' ') != NULL) - fprintf(fp, " %s=\"%s\"", option->name, option->value); - else + if (strchr(option->value, ' ') || + strchr(option->value, '\\') || + strchr(option->value, '\"') || + strchr(option->value, '\'')) + { + /* + * Quote the value... + */ + + fprintf(fp, " %s=\"", option->name); + + for (val = option->value; *val; val ++) + { + if (strchr("\"\'\\", *val)) + putc('\\', fp); + + putc(*val, fp); + } + + putc('\"', fp); + } + else + { + /* + * Store the literal value... + */ + fprintf(fp, " %s=%s", option->name, option->value); + } } else fprintf(fp, " %s", option->name); @@ -1008,5 +1041,5 @@ cups_get_sdests(http_t *http, /* I - HTTP connection */ /* - * End of "$Id: dest.c 5346 2006-03-28 16:05:19Z mike $". + * End of "$Id: dest.c 5753 2006-07-18 19:53:24Z mike $". */ diff --git a/cups/emit.c b/cups/emit.c index 6f4dc78de..dd650c61d 100644 --- a/cups/emit.c +++ b/cups/emit.c @@ -1,5 +1,5 @@ /* - * "$Id: emit.c 5257 2006-03-09 15:27:27Z mike $" + * "$Id: emit.c 5700 2006-06-26 19:20:39Z mike $" * * PPD code emission routines for the Common UNIX Printing System (CUPS). * @@ -50,6 +50,7 @@ #include <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 $". */ diff --git a/cups/encode.c b/cups/encode.c index a00e2c52a..b3cc28831 100644 --- a/cups/encode.c +++ b/cups/encode.c @@ -1,5 +1,5 @@ /* - * "$Id: encode.c 5545 2006-05-18 21:00:56Z mike $" + * "$Id: encode.c 5753 2006-07-18 19:53:24Z mike $" * * Option encoding routines for the Common UNIX Printing System (CUPS). * @@ -28,6 +28,7 @@ * cupsEncodeOptions() - Encode printer options into IPP attributes. * cupsEncodeOptions2() - Encode printer options into IPP attributes for * a group. + * _ippFindOption() - Find the attribute information for an option. * compare_ipp_options() - Compare two IPP options. */ @@ -49,13 +50,6 @@ * **** THIS LIST MUST BE SORTED **** */ -typedef struct -{ - const char *name; - ipp_tag_t value_tag; - ipp_tag_t group_tag; -} _ipp_option_t; - static const _ipp_option_t ipp_options[] = { { "blackplot", IPP_TAG_BOOLEAN, IPP_TAG_JOB }, @@ -114,6 +108,8 @@ static const _ipp_option_t ipp_options[] = { "ppi-default", IPP_TAG_INTEGER, IPP_TAG_PRINTER }, { "prettyprint", IPP_TAG_BOOLEAN, IPP_TAG_JOB }, { "prettyprint-default", IPP_TAG_BOOLEAN, IPP_TAG_PRINTER }, + { "print-quality", IPP_TAG_ENUM, IPP_TAG_JOB }, + { "print-quality-default", IPP_TAG_ENUM, IPP_TAG_PRINTER }, { "printer-error-policy", IPP_TAG_NAME, IPP_TAG_PRINTER }, { "printer-info", IPP_TAG_TEXT, IPP_TAG_PRINTER }, { "printer-is-accepting-jobs",IPP_TAG_BOOLEAN, IPP_TAG_PRINTER }, @@ -127,14 +123,12 @@ static const _ipp_option_t ipp_options[] = { "printer-state-reasons", IPP_TAG_KEYWORD, IPP_TAG_PRINTER }, { "printer-type", IPP_TAG_ENUM, IPP_TAG_PRINTER }, { "printer-uri", IPP_TAG_URI, IPP_TAG_OPERATION }, - { "print-quality", IPP_TAG_ENUM, IPP_TAG_JOB }, - { "print-quality-default", IPP_TAG_ENUM, IPP_TAG_PRINTER }, { "queued-job-count", IPP_TAG_INTEGER, IPP_TAG_PRINTER }, { "raw", IPP_TAG_MIMETYPE, IPP_TAG_OPERATION }, - { "resolution", IPP_TAG_RESOLUTION, IPP_TAG_JOB }, - { "resolution-default", IPP_TAG_RESOLUTION, IPP_TAG_PRINTER }, { "requesting-user-name-allowed", IPP_TAG_NAME, IPP_TAG_PRINTER }, { "requesting-user-name-denied", IPP_TAG_NAME, IPP_TAG_PRINTER }, + { "resolution", IPP_TAG_RESOLUTION, IPP_TAG_JOB }, + { "resolution-default", IPP_TAG_RESOLUTION, IPP_TAG_PRINTER }, { "saturation", IPP_TAG_INTEGER, IPP_TAG_JOB }, { "saturation-default", IPP_TAG_INTEGER, IPP_TAG_PRINTER }, { "scaling", IPP_TAG_INTEGER, IPP_TAG_JOB }, @@ -243,8 +237,7 @@ cupsEncodeOptions2( for (i = num_options, option = options; i > 0; i --, option ++) { - _ipp_option_t key, /* Search key */ - *match; /* Matching attribute */ + _ipp_option_t *match; /* Matching attribute */ /* @@ -260,16 +253,7 @@ cupsEncodeOptions2( * Figure out the proper value and group tags for this option... */ - key.name = option->name; - match = (_ipp_option_t *)bsearch(&key, ipp_options, - sizeof(ipp_options) / - sizeof(ipp_options[0]), - sizeof(ipp_options[0]), - (int (*)(const void *, - const void *)) - compare_ipp_options); - - if (match) + if ((match = _ippFindOption(option->name)) != NULL) { if (match->group_tag != group_tag) continue; @@ -547,6 +531,30 @@ cupsEncodeOptions2( /* + * '_ippFindOption()' - Find the attribute information for an option. + */ + +_ipp_option_t * /* O - Attribute information */ +_ippFindOption(const char *name) /* I - Option/attribute name */ +{ + _ipp_option_t key; /* Search key */ + + + /* + * Lookup the proper value and group tags for this option... + */ + + key.name = name; + + return ((_ipp_option_t *)bsearch(&key, ipp_options, + sizeof(ipp_options) / sizeof(ipp_options[0]), + sizeof(ipp_options[0]), + (int (*)(const void *, const void *)) + compare_ipp_options)); +} + + +/* * 'compare_ipp_options()' - Compare two IPP options. */ @@ -559,5 +567,5 @@ compare_ipp_options(_ipp_option_t *a, /* I - First option */ /* - * End of "$Id: encode.c 5545 2006-05-18 21:00:56Z mike $". + * End of "$Id: encode.c 5753 2006-07-18 19:53:24Z mike $". */ diff --git a/cups/globals.h b/cups/globals.h index 819d2bd6f..36af79e32 100644 --- a/cups/globals.h +++ b/cups/globals.h @@ -1,5 +1,5 @@ /* - * "$Id: globals.h 5366 2006-04-02 16:11:04Z mike $" + * "$Id: globals.h 5755 2006-07-19 13:29:44Z mike $" * * Global variable definitions for the Common UNIX Printing System (CUPS). * @@ -32,6 +32,7 @@ */ # include "string.h" +# include "http-private.h" # include "cups.h" # include "i18n.h" @@ -151,5 +152,5 @@ extern void _cupsSetError(ipp_status_t status, const char *message); #endif /* !_CUPS_GLOBALS_H_ */ /* - * End of "$Id: globals.h 5366 2006-04-02 16:11:04Z mike $". + * End of "$Id: globals.h 5755 2006-07-19 13:29:44Z mike $". */ diff --git a/cups/http.c b/cups/http.c index e864c18c4..84e204620 100644 --- a/cups/http.c +++ b/cups/http.c @@ -1,5 +1,5 @@ /* - * "$Id: http.c 5630 2006-06-05 18:42:53Z mike $" + * "$Id: http.c 5753 2006-07-18 19:53:24Z mike $" * * HTTP routines for the Common UNIX Printing System (CUPS). * @@ -1809,6 +1809,16 @@ httpWait(http_t *http, /* I - HTTP connection */ return (1); /* + * Flush pending data, if any... + */ + + if (http->wused) + { + if (httpFlushWrite(http) < 0) + return (0); + } + + /* * If not, check the SSL/TLS buffers and do a select() on the connection... */ @@ -2801,5 +2811,5 @@ http_write_ssl(http_t *http, /* I - HTTP connection */ /* - * End of "$Id: http.c 5630 2006-06-05 18:42:53Z mike $". + * End of "$Id: http.c 5753 2006-07-18 19:53:24Z mike $". */ diff --git a/cups/http.h b/cups/http.h index 937b94fa0..6303af452 100644 --- a/cups/http.h +++ b/cups/http.h @@ -1,5 +1,5 @@ /* - * "$Id: http.h 5632 2006-06-06 14:46:10Z mike $" + * "$Id: http.h 5716 2006-07-11 17:56:57Z mike $" * * Hyper-Text Transport Protocol definitions for the Common UNIX Printing * System (CUPS). @@ -98,7 +98,7 @@ extern "C" { #if defined(AF_INET6) && !defined(s6_addr32) # if defined(__sun) # define s6_addr32 _S6_un._S6_u32 -# elif defined(__FreeBSD__) || defined(__APPLE__) +# elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__APPLE__) # define s6_addr32 __u6_addr.__u6_addr32 # elif defined(__osf__) # define s6_addr32 s6_un.sa6_laddr @@ -504,5 +504,5 @@ extern ssize_t httpWrite2(http_t *http, const char *buffer, #endif /* !_CUPS_HTTP_H_ */ /* - * End of "$Id: http.h 5632 2006-06-06 14:46:10Z mike $". + * End of "$Id: http.h 5716 2006-07-11 17:56:57Z mike $". */ diff --git a/cups/ipp-private.h b/cups/ipp-private.h index af303f1da..3b3455fe7 100644 --- a/cups/ipp-private.h +++ b/cups/ipp-private.h @@ -1,5 +1,5 @@ /* - * "$Id: ipp-private.h 5230 2006-03-05 17:01:51Z mike $" + * "$Id: ipp-private.h 5753 2006-07-18 19:53:24Z mike $" * * Private IPP definitions for the Common UNIX Printing System (CUPS). * @@ -44,10 +44,23 @@ extern "C" { /* + * Structures... + */ + +typedef struct /**** Attribute mapping data ****/ +{ + const char *name; /* Option/attribute name */ + ipp_tag_t value_tag; /* Value tag for this attribute */ + ipp_tag_t group_tag; /* Group tag for this attribute */ +} _ipp_option_t; + + +/* * Prototypes for private functions... */ extern ipp_attribute_t *_ippAddAttr(ipp_t *, int); +extern _ipp_option_t *_ippFindOption(const char *name); extern void _ippFreeAttr(ipp_attribute_t *); @@ -61,5 +74,5 @@ extern void _ippFreeAttr(ipp_attribute_t *); #endif /* !_CUPS_IPP_H_ */ /* - * End of "$Id: ipp-private.h 5230 2006-03-05 17:01:51Z mike $". + * End of "$Id: ipp-private.h 5753 2006-07-18 19:53:24Z mike $". */ diff --git a/cups/language.c b/cups/language.c index 6990d9127..b74738dbf 100644 --- a/cups/language.c +++ b/cups/language.c @@ -1,5 +1,5 @@ /* - * "$Id: language.c 5373 2006-04-06 20:03:32Z mike $" + * "$Id: language.c 5753 2006-07-18 19:53:24Z mike $" * * I18N/language support for the Common UNIX Printing System (CUPS). * @@ -560,6 +560,23 @@ cupsLangGet(const char *language) /* I - Language or locale */ encoding = (cups_encoding_t)i; break; } + + if (encoding == CUPS_AUTO_ENCODING) + { + /* + * Map alternate names for various character sets... + */ + + if (!strcasecmp(charset, "iso-2022-jp") || + !strcasecmp(charset, "sjis")) + encoding = CUPS_WINDOWS_932; + else if (!strcasecmp(charset, "iso-2022-cn")) + encoding = CUPS_WINDOWS_936; + else if (!strcasecmp(charset, "iso-2022-kr")) + encoding = CUPS_WINDOWS_949; + else if (!strcasecmp(charset, "big5")) + encoding = CUPS_WINDOWS_950; + } } DEBUG_printf(("cupsLangGet: encoding=%d(%s)\n", encoding, @@ -1295,5 +1312,5 @@ cups_unquote(char *d, /* O - Unquoted string */ /* - * End of "$Id: language.c 5373 2006-04-06 20:03:32Z mike $". + * End of "$Id: language.c 5753 2006-07-18 19:53:24Z mike $". */ diff --git a/cups/mark.c b/cups/mark.c index 3b2226774..6577c0bfc 100644 --- a/cups/mark.c +++ b/cups/mark.c @@ -1,5 +1,5 @@ /* - * "$Id: mark.c 5529 2006-05-15 20:06:46Z mike $" + * "$Id: mark.c 5700 2006-06-26 19:20:39Z mike $" * * Option marking routines for the Common UNIX Printing System (CUPS). * @@ -407,6 +407,7 @@ ppdMarkOption(ppd_file_t *ppd, /* I - PPD file record */ ppd_cparam_t *cparam; /* Custom parameter */ char *units; /* Custom points units */ + if ((coption = ppdFindCustomOption(ppd, option)) != NULL) { if ((cparam = (ppd_cparam_t *)cupsArrayFirst(coption->params)) == NULL) @@ -455,6 +456,12 @@ ppdMarkOption(ppd_file_t *ppd, /* I - PPD file record */ } } } + + /* + * Make sure that we keep the option marked below... + */ + + choice = "Custom"; } else if (choice[0] == '{') { @@ -679,5 +686,5 @@ ppd_defaults(ppd_file_t *ppd, /* I - PPD file */ /* - * End of "$Id: mark.c 5529 2006-05-15 20:06:46Z mike $". + * End of "$Id: mark.c 5700 2006-06-26 19:20:39Z mike $". */ diff --git a/cups/testipp.c b/cups/testipp.c index 07bcdffc0..6975cb054 100644 --- a/cups/testipp.c +++ b/cups/testipp.c @@ -1,5 +1,5 @@ /* - * "$Id: testipp.c 5023 2006-01-29 14:39:44Z mike $" + * "$Id: testipp.c 5753 2006-07-18 19:53:24Z mike $" * * IPP test program for the Common UNIX Printing System (CUPS). * @@ -36,7 +36,7 @@ #include <stdlib.h> #include <cups/string.h> #include <errno.h> -#include "ipp.h" +#include "ipp-private.h" #ifdef WIN32 # include <io.h> #else @@ -283,6 +283,19 @@ main(int argc, /* I - Number of command-line arguments */ ippDelete(request); /* + * Test _ippFindOption() private API... + */ + + fputs("_ippFindOption(\"printer-type\"): ", stdout); + if (_ippFindOption("printer-type")) + puts("PASS"); + else + { + puts("FAIL"); + status = 1; + } + + /* * Summarize... */ @@ -645,5 +658,5 @@ write_cb(void *data, /* I - Data */ /* - * End of "$Id: testipp.c 5023 2006-01-29 14:39:44Z mike $". + * End of "$Id: testipp.c 5753 2006-07-18 19:53:24Z mike $". */ diff --git a/cups/testppd.c b/cups/testppd.c index 7e59a4276..bdaf944a4 100644 --- a/cups/testppd.c +++ b/cups/testppd.c @@ -1,5 +1,5 @@ /* - * "$Id: testppd.c 5484 2006-05-02 20:38:12Z mike $" + * "$Id: testppd.c 5700 2006-06-26 19:20:39Z mike $" * * PPD test program for the Common UNIX Printing System (CUPS). * @@ -59,6 +59,39 @@ static const char *default_code = "%%BeginFeature: *InputSlot Tray\n" "InputSlot=Tray\n" "%%EndFeature\n" + "} stopped cleartomark\n" + "[{\n" + "%%BeginFeature: *IntOption None\n" + "%%EndFeature\n" + "} stopped cleartomark\n" + "[{\n" + "%%BeginFeature: *StringOption None\n" + "%%EndFeature\n" + "} stopped cleartomark\n"; + +static const char *custom_code = + "[{\n" + "%%BeginFeature: *CustomPageSize True\n" + "400\n" + "500\n" + "0\n" + "0\n" + "0\n" + "PageSize=Custom\n" + "%%EndFeature\n" + "} stopped cleartomark\n" + "[{\n" + "%%BeginFeature: *InputSlot Tray\n" + "InputSlot=Tray\n" + "%%EndFeature\n" + "} stopped cleartomark\n" + "[{\n" + "%%BeginFeature: *IntOption None\n" + "%%EndFeature\n" + "} stopped cleartomark\n" + "[{\n" + "%%BeginFeature: *StringOption None\n" + "%%EndFeature\n" "} stopped cleartomark\n"; @@ -107,7 +140,7 @@ main(int argc, /* I - Number of command-line arguments */ printf("FAIL (%d conflicts)\n", conflicts); } - fputs("ppdEmitString: ", stdout); + fputs("ppdEmitString (defaults): ", stdout); if ((s = ppdEmitString(ppd, PPD_ORDER_ANY, 0.0)) != NULL && !strcmp(s, default_code)) puts("PASS"); @@ -123,6 +156,24 @@ main(int argc, /* I - Number of command-line arguments */ 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); + ppdClose(ppd); } else @@ -172,5 +223,5 @@ main(int argc, /* I - Number of command-line arguments */ /* - * End of "$Id: testppd.c 5484 2006-05-02 20:38:12Z mike $". + * End of "$Id: testppd.c 5700 2006-06-26 19:20:39Z mike $". */ diff --git a/cups/util.c b/cups/util.c index 988a3e43d..1082ceb24 100644 --- a/cups/util.c +++ b/cups/util.c @@ -1,5 +1,5 @@ /* - * "$Id: util.c 5663 2006-06-15 20:36:42Z mike $" + * "$Id: util.c 5716 2006-07-11 17:56:57Z mike $" * * Printing utilities for the Common UNIX Printing System (CUPS). * @@ -837,12 +837,16 @@ cupsGetPPD2(http_t *http, /* I - HTTP connection */ resource, sizeof(resource), 0)) return (NULL); + DEBUG_printf(("Printer hostname=\"%s\", port=%d\n", hostname, port)); + /* * Remap local hostname to localhost... */ httpGetHostname(NULL, localhost, sizeof(localhost)); + DEBUG_printf(("Local hostname=\"%s\"\n", localhost)); + if (!strcasecmp(localhost, hostname)) strcpy(hostname, "localhost"); @@ -862,6 +866,9 @@ cupsGetPPD2(http_t *http, /* I - HTTP connection */ else http_port = ippPort(); + DEBUG_printf(("Connection hostname=\"%s\", port=%d\n", http_hostname, + http_port)); + /* * Reconnect to the correct server as needed... */ @@ -1652,5 +1659,5 @@ cups_get_printer_uri( /* - * End of "$Id: util.c 5663 2006-06-15 20:36:42Z mike $". + * End of "$Id: util.c 5716 2006-07-11 17:56:57Z mike $". */ diff --git a/doc/Makefile b/doc/Makefile index df0b76384..784173e31 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -1,5 +1,5 @@ # -# "$Id: Makefile 5609 2006-05-30 20:31:10Z mike $" +# "$Id: Makefile 5736 2006-07-13 19:59:36Z mike $" # # Documentation makefile for the Common UNIX Printing System (CUPS). # @@ -153,11 +153,13 @@ HELPFILES = \ help/network.html \ help/options.html \ help/overview.html \ + help/policies.html \ help/ref-access_log.html \ help/ref-classes-conf.html \ help/ref-client-conf.html \ help/ref-cupsd-conf.html \ help/ref-error_log.html \ + help/ref-mailto-conf.html \ help/ref-page_log.html \ help/ref-printers-conf.html \ help/ref-snmp-conf.html \ diff --git a/doc/de/images/button-accept-jobs.gif b/doc/de/images/button-accept-jobs.gif Binary files differnew file mode 100644 index 000000000..ab5715945 --- /dev/null +++ b/doc/de/images/button-accept-jobs.gif diff --git a/doc/de/images/button-add-class.gif b/doc/de/images/button-add-class.gif Binary files differnew file mode 100644 index 000000000..3cfd28cce --- /dev/null +++ b/doc/de/images/button-add-class.gif diff --git a/doc/de/images/button-add-printer.gif b/doc/de/images/button-add-printer.gif Binary files differnew file mode 100644 index 000000000..49b4bcb85 --- /dev/null +++ b/doc/de/images/button-add-printer.gif diff --git a/doc/de/images/button-add-this-printer.gif b/doc/de/images/button-add-this-printer.gif Binary files differnew file mode 100644 index 000000000..df9c7c02a --- /dev/null +++ b/doc/de/images/button-add-this-printer.gif diff --git a/doc/de/images/button-cancel-all-jobs.gif b/doc/de/images/button-cancel-all-jobs.gif Binary files differnew file mode 100644 index 000000000..bb92d2059 --- /dev/null +++ b/doc/de/images/button-cancel-all-jobs.gif diff --git a/doc/de/images/button-cancel-job.gif b/doc/de/images/button-cancel-job.gif Binary files differnew file mode 100644 index 000000000..48821df67 --- /dev/null +++ b/doc/de/images/button-cancel-job.gif diff --git a/doc/de/images/button-change-settings.gif b/doc/de/images/button-change-settings.gif Binary files differnew file mode 100644 index 000000000..0c0c4f540 --- /dev/null +++ b/doc/de/images/button-change-settings.gif diff --git a/doc/de/images/button-clean-print-heads.gif b/doc/de/images/button-clean-print-heads.gif Binary files differnew file mode 100644 index 000000000..14c64744a --- /dev/null +++ b/doc/de/images/button-clean-print-heads.gif diff --git a/doc/de/images/button-clear.gif b/doc/de/images/button-clear.gif Binary files differnew file mode 100644 index 000000000..1002f4db2 --- /dev/null +++ b/doc/de/images/button-clear.gif diff --git a/doc/de/images/button-continue.gif b/doc/de/images/button-continue.gif Binary files differnew file mode 100644 index 000000000..b8a55bfc8 --- /dev/null +++ b/doc/de/images/button-continue.gif diff --git a/doc/de/images/button-delete-class.gif b/doc/de/images/button-delete-class.gif Binary files differnew file mode 100644 index 000000000..6cab405d9 --- /dev/null +++ b/doc/de/images/button-delete-class.gif diff --git a/doc/de/images/button-delete-printer.gif b/doc/de/images/button-delete-printer.gif Binary files differnew file mode 100644 index 000000000..1991ba009 --- /dev/null +++ b/doc/de/images/button-delete-printer.gif diff --git a/doc/de/images/button-edit-configuration-file.gif b/doc/de/images/button-edit-configuration-file.gif Binary files differnew file mode 100644 index 000000000..fdba12276 --- /dev/null +++ b/doc/de/images/button-edit-configuration-file.gif diff --git a/doc/de/images/button-export-samba.gif b/doc/de/images/button-export-samba.gif Binary files differnew file mode 100644 index 000000000..a9f51a9a3 --- /dev/null +++ b/doc/de/images/button-export-samba.gif diff --git a/doc/de/images/button-help.gif b/doc/de/images/button-help.gif Binary files differnew file mode 100644 index 000000000..8079e4431 --- /dev/null +++ b/doc/de/images/button-help.gif diff --git a/doc/de/images/button-hold-job.gif b/doc/de/images/button-hold-job.gif Binary files differnew file mode 100644 index 000000000..955f9a4e7 --- /dev/null +++ b/doc/de/images/button-hold-job.gif diff --git a/doc/de/images/button-manage-classes.gif b/doc/de/images/button-manage-classes.gif Binary files differnew file mode 100644 index 000000000..6489ebc9a --- /dev/null +++ b/doc/de/images/button-manage-classes.gif diff --git a/doc/de/images/button-manage-jobs.gif b/doc/de/images/button-manage-jobs.gif Binary files differnew file mode 100644 index 000000000..4d4e55348 --- /dev/null +++ b/doc/de/images/button-manage-jobs.gif diff --git a/doc/de/images/button-manage-printers.gif b/doc/de/images/button-manage-printers.gif Binary files differnew file mode 100644 index 000000000..26feda4e5 --- /dev/null +++ b/doc/de/images/button-manage-printers.gif diff --git a/doc/de/images/button-manage-server.gif b/doc/de/images/button-manage-server.gif Binary files differnew file mode 100644 index 000000000..16a879590 --- /dev/null +++ b/doc/de/images/button-manage-server.gif diff --git a/doc/de/images/button-modify-class.gif b/doc/de/images/button-modify-class.gif Binary files differnew file mode 100644 index 000000000..e163da7f6 --- /dev/null +++ b/doc/de/images/button-modify-class.gif diff --git a/doc/de/images/button-modify-printer.gif b/doc/de/images/button-modify-printer.gif Binary files differnew file mode 100644 index 000000000..a9ec14765 --- /dev/null +++ b/doc/de/images/button-modify-printer.gif diff --git a/doc/de/images/button-move-job.gif b/doc/de/images/button-move-job.gif Binary files differnew file mode 100644 index 000000000..700b9beaf --- /dev/null +++ b/doc/de/images/button-move-job.gif diff --git a/doc/de/images/button-move-jobs.gif b/doc/de/images/button-move-jobs.gif Binary files differnew file mode 100644 index 000000000..5da778816 --- /dev/null +++ b/doc/de/images/button-move-jobs.gif diff --git a/doc/de/images/button-print-self-test-page.gif b/doc/de/images/button-print-self-test-page.gif Binary files differnew file mode 100644 index 000000000..d5d3aab60 --- /dev/null +++ b/doc/de/images/button-print-self-test-page.gif diff --git a/doc/de/images/button-print-test-page.gif b/doc/de/images/button-print-test-page.gif Binary files differnew file mode 100644 index 000000000..01dc7573f --- /dev/null +++ b/doc/de/images/button-print-test-page.gif diff --git a/doc/de/images/button-publish-printer.gif b/doc/de/images/button-publish-printer.gif Binary files differnew file mode 100644 index 000000000..181cb2767 --- /dev/null +++ b/doc/de/images/button-publish-printer.gif diff --git a/doc/de/images/button-reject-jobs.gif b/doc/de/images/button-reject-jobs.gif Binary files differnew file mode 100644 index 000000000..e23cfca90 --- /dev/null +++ b/doc/de/images/button-reject-jobs.gif diff --git a/doc/de/images/button-release-job.gif b/doc/de/images/button-release-job.gif Binary files differnew file mode 100644 index 000000000..d353700d0 --- /dev/null +++ b/doc/de/images/button-release-job.gif diff --git a/doc/de/images/button-restart-job.gif b/doc/de/images/button-restart-job.gif Binary files differnew file mode 100644 index 000000000..97449c1c8 --- /dev/null +++ b/doc/de/images/button-restart-job.gif diff --git a/doc/de/images/button-save-changes.gif b/doc/de/images/button-save-changes.gif Binary files differnew file mode 100644 index 000000000..661c59060 --- /dev/null +++ b/doc/de/images/button-save-changes.gif diff --git a/doc/de/images/button-search.gif b/doc/de/images/button-search.gif Binary files differnew file mode 100644 index 000000000..9378f8d17 --- /dev/null +++ b/doc/de/images/button-search.gif diff --git a/doc/de/images/button-set-allowed-users.gif b/doc/de/images/button-set-allowed-users.gif Binary files differnew file mode 100644 index 000000000..a62eb100a --- /dev/null +++ b/doc/de/images/button-set-allowed-users.gif diff --git a/doc/de/images/button-set-as-default.gif b/doc/de/images/button-set-as-default.gif Binary files differnew file mode 100644 index 000000000..c2a33a97a --- /dev/null +++ b/doc/de/images/button-set-as-default.gif diff --git a/doc/de/images/button-set-printer-options.gif b/doc/de/images/button-set-printer-options.gif Binary files differnew file mode 100644 index 000000000..daf871094 --- /dev/null +++ b/doc/de/images/button-set-printer-options.gif diff --git a/doc/de/images/button-show-active.gif b/doc/de/images/button-show-active.gif Binary files differnew file mode 100644 index 000000000..4a2270e6e --- /dev/null +++ b/doc/de/images/button-show-active.gif diff --git a/doc/de/images/button-show-all.gif b/doc/de/images/button-show-all.gif Binary files differnew file mode 100644 index 000000000..8564af952 --- /dev/null +++ b/doc/de/images/button-show-all.gif diff --git a/doc/de/images/button-show-completed.gif b/doc/de/images/button-show-completed.gif Binary files differnew file mode 100644 index 000000000..ad03d3e48 --- /dev/null +++ b/doc/de/images/button-show-completed.gif diff --git a/doc/de/images/button-show-next.gif b/doc/de/images/button-show-next.gif Binary files differnew file mode 100644 index 000000000..c3a18e968 --- /dev/null +++ b/doc/de/images/button-show-next.gif diff --git a/doc/de/images/button-show-previous.gif b/doc/de/images/button-show-previous.gif Binary files differnew file mode 100644 index 000000000..426180f1e --- /dev/null +++ b/doc/de/images/button-show-previous.gif diff --git a/doc/de/images/button-sort-ascending.gif b/doc/de/images/button-sort-ascending.gif Binary files differnew file mode 100644 index 000000000..a544d2b9d --- /dev/null +++ b/doc/de/images/button-sort-ascending.gif diff --git a/doc/de/images/button-sort-descending.gif b/doc/de/images/button-sort-descending.gif Binary files differnew file mode 100644 index 000000000..076533dbc --- /dev/null +++ b/doc/de/images/button-sort-descending.gif diff --git a/doc/de/images/button-start-class.gif b/doc/de/images/button-start-class.gif Binary files differnew file mode 100644 index 000000000..e5170346a --- /dev/null +++ b/doc/de/images/button-start-class.gif diff --git a/doc/de/images/button-start-printer.gif b/doc/de/images/button-start-printer.gif Binary files differnew file mode 100644 index 000000000..4bab122f8 --- /dev/null +++ b/doc/de/images/button-start-printer.gif diff --git a/doc/de/images/button-stop-class.gif b/doc/de/images/button-stop-class.gif Binary files differnew file mode 100644 index 000000000..5bce80851 --- /dev/null +++ b/doc/de/images/button-stop-class.gif diff --git a/doc/de/images/button-stop-printer.gif b/doc/de/images/button-stop-printer.gif Binary files differnew file mode 100644 index 000000000..934486074 --- /dev/null +++ b/doc/de/images/button-stop-printer.gif diff --git a/doc/de/images/button-unpublish-printer.gif b/doc/de/images/button-unpublish-printer.gif Binary files differnew file mode 100644 index 000000000..ecf33fa51 --- /dev/null +++ b/doc/de/images/button-unpublish-printer.gif diff --git a/doc/de/images/button-view-access-log.gif b/doc/de/images/button-view-access-log.gif Binary files differnew file mode 100644 index 000000000..82ad70b7b --- /dev/null +++ b/doc/de/images/button-view-access-log.gif diff --git a/doc/de/images/button-view-error-log.gif b/doc/de/images/button-view-error-log.gif Binary files differnew file mode 100644 index 000000000..c90c0bff5 --- /dev/null +++ b/doc/de/images/button-view-error-log.gif diff --git a/doc/de/images/button-view-page-log.gif b/doc/de/images/button-view-page-log.gif Binary files differnew file mode 100644 index 000000000..cc7a22f1a --- /dev/null +++ b/doc/de/images/button-view-page-log.gif diff --git a/doc/de/images/button-view-printable-version.gif b/doc/de/images/button-view-printable-version.gif Binary files differnew file mode 100644 index 000000000..e7b4e9c3c --- /dev/null +++ b/doc/de/images/button-view-printable-version.gif diff --git a/doc/de/index.html.in b/doc/de/index.html.in new file mode 100644 index 000000000..bd7ec21c8 --- /dev/null +++ b/doc/de/index.html.in @@ -0,0 +1,143 @@ +<!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=""> Startseite <IMG +SRC="/images/tab-right.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP" +BORDER="0" ALT=""></A> + + <A CLASS="unsel" HREF="/admin/"><IMG SRC="/images/tab-left.gif" WIDTH="4" +HEIGHT="4" ALIGN="TOP" BORDER="0" +ALT=""> Verwaltung <IMG +SRC="/images/tab-right.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP" +BORDER="0" ALT=""></A> + + <A CLASS="unsel" HREF="/classes/"><IMG SRC="/images/tab-left.gif" WIDTH="4" +HEIGHT="4" ALIGN="TOP" BORDER="0" +ALT=""> Klassen <IMG +SRC="/images/tab-right.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP" +BORDER="0" ALT=""></A> + + <A CLASS="unsel" HREF="/help/"><IMG SRC="/images/tab-left.gif" WIDTH="4" +HEIGHT="4" ALIGN="TOP" BORDER="0" +ALT=""> Dokumentation/Hilfe <IMG +SRC="/images/tab-right.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP" +BORDER="0" ALT=""></A> + + <A CLASS="unsel" HREF="/jobs/"><IMG SRC="/images/tab-left.gif" WIDTH="4" +HEIGHT="4" ALIGN="TOP" BORDER="0" +ALT=""> Aufträge <IMG +SRC="/images/tab-right.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP" +BORDER="0" ALT=""></A> + + <A CLASS="unsel" HREF="/printers/"><IMG SRC="/images/tab-left.gif" WIDTH="4" +HEIGHT="4" ALIGN="TOP" BORDER="0" +ALT=""> Drucker <IMG +SRC="/images/tab-right.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP" +BORDER="0" ALT=""></A> + +</TD></TR> +<TR CLASS="page"> +<TD WIDTH="15"> </TD> +<TD COLSPAN="2" WIDTH="100%" VALIGN="TOP" CLASS="page"> + +<H2 CLASS="title">Herzlich Willkommen!</H2> + +<P>Auf diesen Seiten können Sie Ihre Drucker und Aufträge überwachen, +sowie auch Verwaltungsaufgaben durchzuführen. Klicken Sie auf einen der +oberen Karteireiter oder eine der Schaltflächen um eine Tätigkeit auszuführen.</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ügen"></A> +<A HREF="/admin?OP=add-printer"><IMG SRC="/images/button-add-printer.gif" CLASS="button" ALT="Drucker hinzufü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ä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">Ü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ür +UNIX<SUP>®</SUP>-basierte Betriebssysteme bereit. Es wird entwickelt +und gepflegt von <A HREF="http://www.easysw.com">Easy Software +Products</a> um eine Standard Druckerlösung zu fördern. CUPS ist das +Standard Drucksystem welches von MacOS<SUP>®</SUP> X und den meisten +Linux<SUP>®</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äge und Warteschlangen und fügt +Drucker-Browsing und PostScript Printer Description ("PPD") basierte +Druckeigenschaften hinzu um komplexe Druckumgebungen optimale zu +unterstützen.<BR CLEAR="ALL"></P> + +<H2 CLASS="title">Druckertreiber und Unterstützung</H2> + +<P>Besuchen Sie die offizielle CUPS Seite um Druckertreiber und +Unterstü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ügbar unter:</P> + +<PRE> + <A HREF="http://www.easysw.com/" TARGET="_blank">www.easysw.com</A> +</PRE> + +</TD> +<TD WIDTH="15"> </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ü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 index 000000000..804fc3e9e --- /dev/null +++ b/doc/help/policies.html @@ -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 <Policy default> + 2 # Job-related operations must be done by the owner or an + adminstrator... + 3 <Limit Send-Document Send-URI Hold-Job Release-Job + Restart-Job Purge-Jobs Set-Job-Attributes + Create-Job-Subscription Renew-Subscription + Cancel-Subscription Get-Notifications Reprocess-Job + Cancel-Current-Job Suspend-Current-Job Resume-Job + CUPS-Move-Job> + 4 Require user @OWNER @SYSTEM + 5 Order deny,allow + 6 </Limit> + 7 + 8 # All administration operations require an adminstrator + to authenticate... + 9 <Limit Pause-Printer Resume-Printer + Set-Printer-Attributes Enable-Printer Disable-Printer + Pause-Printer-After-Current-Job Hold-New-Jobs + Release-Held-New-Jobs Deactivate-Printer Activate-Printer + Restart-Printer Shutdown-Printer Startup-Printer + Promote-Job Schedule-Job-After CUPS-Add-Printer + CUPS-Delete-Printer CUPS-Add-Class CUPS-Delete-Class + CUPS-Accept-Jobs CUPS-Reject-Jobs CUPS-Set-Default> +10 AuthType Basic +11 Require user @SYSTEM +12 Order deny,allow +13 </Limit> +14 +15 # Only the owner or an administrator can cancel or + authenticate a job... +16 <Limit Cancel-Job CUPS-Authenticate-Job> +17 Require user @OWNER @SYSTEM +18 Order deny,allow +19 </Limit> +20 +21 <Limit All> +22 Order deny,allow +23 </Limit> +24 </Policy> +</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 <Policy default> +</PRE> + +<P>The first <TT>Limit</TT> subsection defines the rules for IPP +job operations:</P> + +<PRE CLASS="command"> + 3 <Limit Send-Document Send-URI Hold-Job Release-Job + Restart-Job Purge-Jobs Set-Job-Attributes + Create-Job-Subscription Renew-Subscription + Cancel-Subscription Get-Notifications Reprocess-Job + Cancel-Current-Job Suspend-Current-Job Resume-Job + CUPS-Move-Job> + 4 Require user @OWNER @SYSTEM + 5 Order deny,allow + 6 </Limit> +</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 <Limit Pause-Printer Resume-Printer + Set-Printer-Attributes Enable-Printer Disable-Printer + Pause-Printer-After-Current-Job Hold-New-Jobs + Release-Held-New-Jobs Deactivate-Printer Activate-Printer + Restart-Printer Shutdown-Printer Startup-Printer + Promote-Job Schedule-Job-After CUPS-Add-Printer + CUPS-Delete-Printer CUPS-Add-Class CUPS-Delete-Class + CUPS-Accept-Jobs CUPS-Reject-Jobs CUPS-Set-Default> +10 AuthType Basic +11 Require user @SYSTEM +12 Order deny,allow +13 </Limit> +</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 <Limit Cancel-Job CUPS-Authenticate-Job> +17 Require user @OWNER @SYSTEM +18 Order deny,allow +19 </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 <Limit All> +22 Order deny,allow +23 </Limit> +24 </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"> +<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"> +<Limit Cancel-Job> + Order deny,allow +</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 <Policy lab999> + 2 # Job- and subscription-related operations must be done + by the owner, a lab technician, or an adminstrator... + 3 <Limit Send-Document Send-URI Hold-Job Release-Job + Restart-Job Purge-Jobs Set-Job-Attributes + Create-Job-Subscription Renew-Subscription + Cancel-Subscription Get-Notifications Reprocess-Job + Cancel-Current-Job Suspend-Current-Job Resume-Job + CUPS-Move-Job Cancel-Job CUPS-Authenticate-Job> + 4 Require user @OWNER @lab999 @SYSTEM + 5 Order allow,deny + 6 Allow from 10.0.2.0/24 + 7 </Limit> + 8 + 9 # All administration operations require a lab technician + or an adminstrator to authenticate... +10 <Limit Pause-Printer Resume-Printer + Set-Printer-Attributes Enable-Printer Disable-Printer + Pause-Printer-After-Current-Job Hold-New-Jobs + Release-Held-New-Jobs Deactivate-Printer Activate-Printer + Restart-Printer Shutdown-Printer Startup-Printer + Promote-Job Schedule-Job-After CUPS-Accept-Jobs + CUPS-Reject-Jobs CUPS-Set-Default> +11 AuthType Basic +12 Require user @lab999 @SYSTEM +13 Order allow,deny +14 Allow from 10.0.2.0/24 +15 </Limit> +16 +17 # All other operations are allowed from the lab network... +18 <Limit All> +19 Order allow,deny +20 Allow from 10.0.2.0/24 +21 </Limit> +22 </Policy> +</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 index 000000000..031700df9 --- /dev/null +++ b/doc/help/ref-mailto-conf.html @@ -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 <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 <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> diff --git a/filter/rastertolabel.c b/filter/rastertolabel.c index d5f403182..340ee976d 100644 --- a/filter/rastertolabel.c +++ b/filter/rastertolabel.c @@ -1,5 +1,5 @@ /* - * "$Id: rastertolabel.c 5665 2006-06-16 00:59:10Z mike $" + * "$Id: rastertolabel.c 5703 2006-06-29 18:12:04Z mike $" * * Label printer filter for the Common UNIX Printing System (CUPS). * @@ -352,6 +352,8 @@ StartPage(ppd_file_t *ppd, /* I - PPD file */ printf("! 0 %u %u %u %u\r\n", header->HWResolution[0], header->HWResolution[1], header->cupsHeight, header->NumCopies); + printf("PAGE-WIDTH %d\r\n", header->cupsWidth); + printf("PAGE-HEIGHT %d\r\n", header->cupsWidth); break; } @@ -588,7 +590,10 @@ EndPage(ppd_file_t *ppd, /* I - PPD file */ * Print the label... */ - puts("FORM\r"); + if ((choice = ppdFindMarkedChoice(ppd, "zeMediaTracking")) == NULL || + strcmp(choice->choice, "Continuous")) + puts("FORM\r"); + puts("PRINT\r"); break; } @@ -1003,5 +1008,5 @@ main(int argc, /* I - Number of command-line arguments */ /* - * End of "$Id: rastertolabel.c 5665 2006-06-16 00:59:10Z mike $". + * End of "$Id: rastertolabel.c 5703 2006-06-29 18:12:04Z mike $". */ diff --git a/locale/cups_de.po b/locale/cups_de.po new file mode 100644 index 000000000..6b1cefcb5 --- /dev/null +++ b/locale/cups_de.po @@ -0,0 +1,2821 @@ +# +# "$Id$" +# +# Message catalog template for the Common UNIX Printing System (CUPS). +# +# Copyright 2005-2006 by Easy Software Products. +# +# These coded instructions, statements, and computer programs are the +# property of Easy Software Products and are protected by Federal +# copyright law. Distribution and use rights are outlined in the file +# "LICENSE.txt" which should have been included with this file. If this +# file is missing or damaged please contact Easy Software Products +# at: +# +# Attn: CUPS Licensing Information +# Easy Software Products +# 44141 Airport View Drive, Suite 204 +# Hollywood, Maryland 20636 USA +# +# Voice: (301) 373-9600 +# EMail: cups-info@cups.org +# WWW: http://www.cups.org +# +msgid "" +msgstr "" +"Project-Id-Version: CUPS 1.2\n" +"Report-Msgid-Bugs-To: http://www.cups.org/str.php\n" +"POT-Creation-Date: 2006-04-14 14:35-0400\n" +"PO-Revision-Date: 2006-07-17 19:55+0200\n" +"Last-Translator: Bernd Krumböck <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" diff --git a/locale/cups_ja.po b/locale/cups_ja.po index cf6d770a9..7dbe5334a 100644 --- a/locale/cups_ja.po +++ b/locale/cups_ja.po @@ -26,7 +26,7 @@ msgstr "" "Project-Id-Version: CUPS 1.2\n" "Report-Msgid-Bugs-To: http://www.cups.org/str.php\n" "POT-Creation-Date: 2006-05-21 10:08-0400\n" -"PO-Revision-Date: 2006-03-29 23:44+0900\n" +"PO-Revision-Date: 2006-06-27 22:55+0900\n" "Last-Translator: Kenshi Muto <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" diff --git a/man/Makefile b/man/Makefile index 6071d57e0..709e0ac7e 100644 --- a/man/Makefile +++ b/man/Makefile @@ -1,5 +1,5 @@ # -# "$Id: Makefile 5472 2006-04-30 16:27:50Z mike $" +# "$Id: Makefile 5728 2006-07-12 20:45:13Z mike $" # # Man page makefile for the Common UNIX Printing System (CUPS). # @@ -44,6 +44,7 @@ MAN5 = classes.conf.$(MAN5EXT) \ client.conf.$(MAN5EXT) \ cups-snmp.conf.$(MAN5EXT) \ cupsd.conf.$(MAN5EXT) \ + mailto.conf.$(MAN5EXT) \ mime.convs.$(MAN5EXT) \ mime.types.$(MAN5EXT) \ printers.conf.$(MAN5EXT) \ @@ -183,5 +184,5 @@ mantohtml: mantohtml.o # -# End of "$Id: Makefile 5472 2006-04-30 16:27:50Z mike $". +# End of "$Id: Makefile 5728 2006-07-12 20:45:13Z mike $". # diff --git a/man/lpadmin.man b/man/lpadmin.man index 28d747053..6bb24c3b3 100644 --- a/man/lpadmin.man +++ b/man/lpadmin.man @@ -1,5 +1,5 @@ .\" -.\" "$Id: lpadmin.man 5327 2006-03-23 19:53:24Z mike $" +.\" "$Id: lpadmin.man 5736 2006-07-13 19:59:36Z mike $" .\" .\" lpadmin man page for the Common UNIX Printing System (CUPS). .\" @@ -21,7 +21,7 @@ .\" EMail: cups-info@cups.org .\" WWW: http://www.cups.org .\" -.TH lpadmin 8 "Common UNIX Printing System" "23 March 2006" "Easy Software Products" +.TH lpadmin 8 "Common UNIX Printing System" "13 July 2006" "Easy Software Products" .SH NAME lpadmin \- configure cups printers and classes .SH SYNOPSIS @@ -123,6 +123,27 @@ Sets the default banner page(s) to use for print jobs. Sets the binary communications program to use when printing, "none", "bcp", or "tbcp". The default program is "none". .TP 5 +-o printer-error-policy=name +.br +Sets the error policy to be used when the printer backend is +unable to send the job to the printer. The name must be one of +"cancel-job", "retry-job" or "stop-printer". The default error +policy is "stop-printer". +.TP 5 +-o printer-is-shared=true/false +.br +Sets the printer to shared/published or unshared/unpublished. +Shared/published printers are publically announced by the server +on the LAN based on the browsing configuration in +\fBcupsd.conf\fR, while unshared/unpublished printers are not +announced. The default value is "true". +.TP 5 +-o printer-op-policy=name +.br +Sets the IPP operation policy associated with the printer. The +name must be defined in the \fBcupsd.conf\fR in a Policy section. +The default operation policy is "default". +.TP 5 -r class .br Removes the named \fIprinter\fR from \fIclass\fR. If the @@ -144,7 +165,8 @@ user-level access control off. .br Sets the \fIdevice-uri\fR attribute of the printer queue. If \fIdevice-uri\fR is a filename it is automatically converted to -the form \fIfile:///file/name\fR. +the form \fIfile:///file/name\fR. Use the \fIlpinfo(8)\fR command +to get a list of supported device URIs and schemes. .TP 5 -D "info" .br @@ -176,11 +198,12 @@ requires the root user to execute this command. The CUPS version of \fIlpadmin\fR does not support all of the System V or Solaris printing system configuration options. .SH SEE ALSO -\fIaccept(8)\fR, \fIcupsenable(8)\fR, \fIlpoptions(1)\fR, +\fIaccept(8)\fR, \fIcupsenable(8)\fR, \fIlpinfo(8)\fR, +\fIlpoptions(1)\fR, .br http://localhost:631/help .SH COPYRIGHT Copyright 1997-2006 by Easy Software Products, All Rights Reserved. .\" -.\" End of "$Id: lpadmin.man 5327 2006-03-23 19:53:24Z mike $". +.\" End of "$Id: lpadmin.man 5736 2006-07-13 19:59:36Z mike $". .\" diff --git a/man/mailto.conf.man b/man/mailto.conf.man new file mode 100644 index 000000000..5e0371fc7 --- /dev/null +++ b/man/mailto.conf.man @@ -0,0 +1,69 @@ +.\" +.\" "$Id$" +.\" +.\" mailto.conf man page for the Common UNIX Printing System (CUPS). +.\" +.\" Copyright 1997-2006 by Easy Software Products. +.\" +.\" These coded instructions, statements, and computer programs are the +.\" property of Easy Software Products and are protected by Federal +.\" copyright law. Distribution and use rights are outlined in the file +.\" "LICENSE.txt" which should have been included with this file. If this +.\" file is missing or damaged please contact Easy Software Products +.\" at: +.\" +.\" Attn: CUPS Licensing Information +.\" Easy Software Products +.\" 44141 Airport View Drive, Suite 204 +.\" Hollywood, Maryland 20636 USA +.\" +.\" Voice: (301) 373-9600 +.\" EMail: cups-info@cups.org +.\" WWW: http://www.cups.org +.\" +.TH mailto.conf 5 "Common UNIX Printing System" "12 July 2006" "Easy Software Products" +.SH NAME +mailto.conf \- configuration file for cups email notifier +.SH DESCRIPTION +The \fImailto.conf\fR file defines the local mail server and +email notification preferences for CUPS. +.LP +Each line in the file can be a configuration directive, a blank line, +or a comment. Comment lines start with the # character. +.SH DIRECTIVES +.TP 5 +Cc \fIcc-address@domain.com\fR +.br +Specifies an additional recipient for all email notifications. +.TP 5 +From \fIfrom-address@domain.com\fR +.br +Specifies the sender of email notifications. +.TP 5 +Sendmail \fIsendmail command and options\fR +.br +Specifies the sendmail command to use when sending email +notifications. Only one \fISendmail\fR or \fISMTPServer\fR line +may be present in the \fImailto.conf\fR file. If multiple lines +are present, only the last one is used. +.TP 5 +SMTPServer \fIservername\fR +.br +Specifies a SMTP server to send email notifications to. Only one +\fISendmail\fR or \fISMTPServer\fR line may be present in the +\fImailto.conf\fR file. If multiple lines are present, only the +last one is used. +.TP 5 +Subject \fIsubject-prefix\fR +.br +Specifies a prefix string for the subject line of an email notification. +.SH SEE ALSO +\fIclasses.conf(5)\fR, \fIcupsd(8)\fR, \fIcupsd.conf(5)\fR, +\fImime.convs(5)\fR, \fImime.types(5)\fR, \fIprinters.conf(5)\fR, +.br +http://localhost:631/help +.SH COPYRIGHT +Copyright 1997-2006 by Easy Software Products, All Rights Reserved. +.\" +.\" End of "$Id$". +.\" diff --git a/notifier/testnotify.c b/notifier/testnotify.c index d334a4a9e..d0a502b20 100644 --- a/notifier/testnotify.c +++ b/notifier/testnotify.c @@ -1,5 +1,5 @@ /* - * "$Id: testnotify.c 4829 2005-11-12 03:15:10Z mike $" + * "$Id: testnotify.c 5716 2006-07-11 17:56:57Z mike $" * * Test notifier for the Common UNIX Printing System (CUPS). * @@ -82,6 +82,14 @@ main(int argc, /* I - Number of command-line arguments */ print_attributes(event, 4); ippDelete(event); + + /* + * If the recipient URI is "testnotify://nowait", then we exit after each + * event... + */ + + if (!strcmp(argv[1], "testnotify://nowait")) + return (0); } } @@ -281,5 +289,5 @@ print_attributes(ipp_t *ipp, /* I - IPP request */ /* - * End of "$Id: testnotify.c 4829 2005-11-12 03:15:10Z mike $". + * End of "$Id: testnotify.c 5716 2006-07-11 17:56:57Z mike $". */ diff --git a/packaging/cups.list.in b/packaging/cups.list.in index c6d7e8f1d..923b254f2 100644 --- a/packaging/cups.list.in +++ b/packaging/cups.list.in @@ -1,5 +1,5 @@ # -# "$Id: cups.list.in 5628 2006-06-05 15:25:23Z mike $" +# "$Id: cups.list.in 5745 2006-07-18 13:45:56Z mike $" # # ESP Package Manager (EPM) file list for the Common UNIX Printing # System (CUPS). @@ -97,6 +97,9 @@ %provides cups-lpd 1:@CUPS_VERSION@ %format all +%subpackage de +%description Common UNIX Printing System - German support + %subpackage es %description Common UNIX Printing System - Spanish support @@ -173,6 +176,7 @@ $INSTALLSTATIC=@INSTALLSTATIC@ $MAN1EXT=@MAN1EXT@ $MAN5EXT=@MAN5EXT@ $MAN7EXT=@MAN7EXT@ +$MAN8EXT=@MAN8EXT@ $MAN8DIR=@MAN8DIR@ $DSOLIBS=@DSOLIBS@ @@ -337,6 +341,8 @@ d 0755 root $CUPS_GROUP $STATEDIR - d 0511 root $CUPS_PRIMARY_SYSTEM_GROUP $STATEDIR/certs - # Data files +%subpackage de +f 0644 root sys $LOCALEDIR/es/cups_de.po locale/cups_de.po %subpackage es f 0644 root sys $LOCALEDIR/es/cups_es.po locale/cups_es.po %subpackage ja @@ -400,6 +406,9 @@ d 0755 root sys $DATADIR/templates - c 0644 root sys $DATADIR/templates templates/*.tmpl # Japanese template files +%subpackage de +d 0755 root sys $DATADIR/templates/de +f 0644 root sys $DATADIR/templates/de templates/de/*.tmpl %subpackage es d 0755 root sys $DATADIR/templates/es f 0644 root sys $DATADIR/templates/es templates/es/*.tmpl @@ -418,6 +427,7 @@ f 0644 root sys $DATADIR/templates/sv templates/sv/*.tmpl d 0755 root sys $SERVERROOT - d 0755 root $CUPS_GROUP $SERVERROOT/interfaces - d 0755 root $CUPS_GROUP $SERVERROOT/ppd - +d 0700 root $CUPS_GROUP $SERVERROOT/ssl - c $CUPS_PERM root $CUPS_GROUP $SERVERROOT conf/*.conf f $CUPS_PERM root $CUPS_GROUP $SERVERROOT/cupsd.conf.default conf/cupsd.conf f 0644 root $CUPS_GROUP $SERVERROOT/mime.convs conf/mime.convs @@ -462,6 +472,7 @@ f 0644 root sys $DOCDIR/help/license.html doc/help/license.html f 0644 root sys $DOCDIR/help/network.html doc/help/network.html f 0644 root sys $DOCDIR/help/options.html doc/help/options.html f 0644 root sys $DOCDIR/help/overview.html doc/help/overview.html +f 0644 root sys $DOCDIR/help/policies.html doc/help/policies.html f 0644 root sys $DOCDIR/help/security.html doc/help/security.html f 0644 root sys $DOCDIR/help/standard.html doc/help/standard.html f 0644 root sys $DOCDIR/help/translation.html doc/help/translation.html @@ -475,6 +486,11 @@ f 0644 root sys $DOCDIR/images doc/images/*.png f 0644 root sys $DOCDIR/robots.txt doc/robots.txt # Localized documentation files +%subpackage de +d 0755 root sys $DOCDIR/de +f 0644 root sys $DOCDIR/de doc/de/*.html +d 0755 root sys $DOCDIR/de/images - +f 0644 root sys $DOCDIR/de/images doc/de/images/*.gif %subpackage es d 0755 root sys $DOCDIR/es f 0644 root sys $DOCDIR/es doc/es/*.html @@ -518,6 +534,7 @@ f 0644 root sys $MANDIR/man1/lp.$MAN1EXT man/lp.$MAN1EXT f 0644 root sys $MANDIR/man5/classes.conf.$MAN5EXT man/classes.conf.$MAN5EXT f 0644 root sys $MANDIR/man5/cupsd.conf.$MAN5EXT man/cupsd.conf.$MAN5EXT +f 0644 root sys $MANDIR/man5/mailto.conf.$MAN5EXT man/mailto.conf.$MAN5EXT f 0644 root sys $MANDIR/man5/mime.convs.$MAN5EXT man/mime.convs.$MAN5EXT f 0644 root sys $MANDIR/man5/mime.types.$MAN5EXT man/mime.types.$MAN5EXT f 0644 root sys $MANDIR/man5/printers.conf.$MAN5EXT man/printers.conf.$MAN5EXT @@ -550,5 +567,5 @@ f 0644 root sys $AMANDIR/man$MAN8DIR/cups-lpd.$MAN8EXT man/cups-lpd.$MAN8EXT i 0755 root sys cups init/cups.sh # -# End of "$Id: cups.list.in 5628 2006-06-05 15:25:23Z mike $". +# End of "$Id: cups.list.in 5745 2006-07-18 13:45:56Z mike $". # diff --git a/packaging/cups.spec.in b/packaging/cups.spec.in index 3f15b4a94..e171fad51 100644 --- a/packaging/cups.spec.in +++ b/packaging/cups.spec.in @@ -1,5 +1,5 @@ # -# "$Id: cups.spec.in 5584 2006-05-24 11:17:55Z mike $" +# "$Id: cups.spec.in 5758 2006-07-19 13:31:27Z mike $" # # RPM "spec" file for the Common UNIX Printing System (CUPS). # @@ -76,6 +76,11 @@ Summary: Common UNIX Printing System - LPD support Group: System Environment/Daemons Requires: %{name} = %{epoch}:%{version} xinetd +%package de +Summary: Common UNIX Printing System - German support +Group: System Environment/Daemons +Requires: %{name} = %{epoch}:%{version} + %package es Summary: Common UNIX Printing System - Spanish support Group: System Environment/Daemons @@ -122,6 +127,10 @@ UNIX operating systems. This package contains the CUPS shared libraries. The Common UNIX Printing System provides a portable printing layer for UNIX operating systems. This package provides LPD client support. +%description de +The Common UNIX Printing System provides a portable printing layer for +UNIX operating systems. This package provides German support. + %description es The Common UNIX Printing System provides a portable printing layer for UNIX operating systems. This package provides Spanish support. @@ -204,6 +213,7 @@ rm -rf $RPM_BUILD_ROOT /etc/cups/mime.types /etc/cups/mime.convs %dir /etc/cups/ppd +%attr(0700,root,root) %dir /etc/cups/ssl %if %{?_with_dbus:1}%{!?_with_dbus:0} # DBUS @@ -291,6 +301,7 @@ rm -rf $RPM_BUILD_ROOT /usr/share/doc/cups/help/network.html /usr/share/doc/cups/help/options.html /usr/share/doc/cups/help/overview.html +/usr/share/doc/cups/help/policies.html /usr/share/doc/cups/help/ref-*.html /usr/share/doc/cups/help/security.html /usr/share/doc/cups/help/standard.html @@ -371,6 +382,16 @@ rm -rf $RPM_BUILD_ROOT %dir /usr/share/man/man8 /usr/share/man/man8/cups-lpd.8.gz +%files de +%defattr(-,root,root) +%dir /usr/share/doc/cups/de +/usr/share/doc/cups/de/index.html +%dir /usr/share/doc/cups/de/images +/usr/share/doc/cups/de/images/* +%dir /usr/share/cups/templates/de +/usr/share/cups/templates/de/* +/usr/share/locale/de/cups_de.po + %files es %defattr(-,root,root) %dir /usr/share/doc/cups/es @@ -419,5 +440,5 @@ rm -rf $RPM_BUILD_ROOT # -# End of "$Id: cups.spec.in 5584 2006-05-24 11:17:55Z mike $". +# End of "$Id: cups.spec.in 5758 2006-07-19 13:31:27Z mike $". # diff --git a/pdftops/PSOutputDev.cxx b/pdftops/PSOutputDev.cxx index 41d359098..4c98d207c 100644 --- a/pdftops/PSOutputDev.cxx +++ b/pdftops/PSOutputDev.cxx @@ -1158,7 +1158,7 @@ void PSOutputDev::writeHeader(int firstPage, int lastPage, break; } - writePSFmt("% Produced by xpdf/pdftops %s\n", xpdfVersion); + writePSFmt("%%Producer: xpdf/pdftops %s\n", xpdfVersion); xref->getDocInfo(&info); if (info.dictLookup("Creator", &obj1)->isString()) { writePS("%%Creator: "); diff --git a/ppd/zebracpl.ppd b/ppd/zebracpl.ppd index db46f8d03..e5bd41241 100644 --- a/ppd/zebracpl.ppd +++ b/ppd/zebracpl.ppd @@ -120,6 +120,14 @@ *Resolution 203dpi/203 DPI: "<</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 diff --git a/scheduler/Makefile b/scheduler/Makefile index 403997bb9..f269c3849 100644 --- a/scheduler/Makefile +++ b/scheduler/Makefile @@ -1,5 +1,5 @@ # -# "$Id: Makefile 5229 2006-03-05 16:48:12Z mike $" +# "$Id: Makefile 5736 2006-07-13 19:59:36Z mike $" # # Scheduler Makefile for the Common UNIX Printing System (CUPS). # @@ -127,6 +127,9 @@ install: all echo Creating $(SERVERROOT)/ppd... $(INSTALL_DIR) -m 755 $(SERVERROOT)/ppd -chgrp $(CUPS_GROUP) $(SERVERROOT)/ppd + echo Creating $(SERVERROOT)/ssl... + $(INSTALL_DIR) -m 700 $(SERVERROOT)/ssl + -chgrp $(CUPS_GROUP) $(SERVERROOT)/ssl echo Creating $(STATEDIR)... $(INSTALL_DIR) -m 755 $(STATEDIR) echo Creating $(STATEDIR)/certs... @@ -274,5 +277,5 @@ include Dependencies # -# End of "$Id: Makefile 5229 2006-03-05 16:48:12Z mike $". +# End of "$Id: Makefile 5736 2006-07-13 19:59:36Z mike $". # diff --git a/scheduler/client.c b/scheduler/client.c index 23a74e50e..c3c236f78 100644 --- a/scheduler/client.c +++ b/scheduler/client.c @@ -1,5 +1,5 @@ /* - * "$Id: client.c 5630 2006-06-05 18:42:53Z mike $" + * "$Id: client.c 5739 2006-07-16 15:21:18Z mike $" * * Client routines for the Common UNIX Printing System (CUPS) scheduler. * @@ -83,9 +83,9 @@ static http_status_t install_conf_file(cupsd_client_t *con); static int is_cgi(cupsd_client_t *con, const char *filename, struct stat *filestats, mime_type_t *type); static int is_path_absolute(const char *path); -#ifdef HAVE_GNUTLS -static void make_certificate(void); -#endif /* HAVE_GNUTLS */ +#ifdef HAVE_SSL +static int make_certificate(void); +#endif /* HAVE_SSL */ static int pipe_command(cupsd_client_t *con, int infile, int *outfile, char *command, char *options, int root); static int write_file(cupsd_client_t *con, http_status_t code, @@ -2528,6 +2528,20 @@ encrypt_client(cupsd_client_t *con) /* I - Client to encrypt */ /* + * 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); } /* @@ -2654,6 +2669,16 @@ encrypt_client(cupsd_client_t *con) /* I - Client to encrypt */ 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, "EncryptClient: Could not find signing key in keychain " "\"%s\"", ServerCertificate); @@ -3316,14 +3341,92 @@ is_path_absolute(const char *path) /* I - Input path */ } -#ifdef HAVE_GNUTLS +#ifdef HAVE_SSL /* * 'make_certificate()' - Make a self-signed SSL/TLS certificate. */ -static void +static int /* O - 1 on success, 0 on failure */ make_certificate(void) { +#if defined(HAVE_LIBSSL) && defined(HAVE_WAITPID) + int pid, /* Process ID of command */ + status; /* Status of command */ + char command[1024], /* Command */ + *argv[11], /* Command-line arguments */ + *envp[MAX_ENV]; /* Environment variables */ + + + /* + * Run the "openssl" command to generate a self-signed certificate + * that is good for 10 years: + * + * openssl req -new -x509 -keyout ServerKey \ + * -out ServerCertificate -days 3650 -nodes + */ + + if (!cupsFileFind("openssl", getenv("PATH"), 1, command, sizeof(command))) + { + cupsdLogMessage(CUPSD_LOG_ERROR, + "No SSL certificate and openssl command not found!"); + return (0); + } + + cupsdLogMessage(CUPSD_LOG_INFO, + "Generating SSL server key and certificate..."); + + argv[0] = "openssl"; + argv[1] = "req"; + argv[2] = "-new"; + argv[3] = "-x509"; + argv[4] = "-keyout"; + argv[5] = ServerKey; + argv[6] = "-out"; + argv[7] = ServerCertificate; + argv[8] = "-days"; + argv[9] = "3650"; + argv[10] = "-nodes"; + argv[11] = NULL; + + cupsdLoadEnv(envp, MAX_ENV); + + if (!cupsdStartProcess(command, argv, envp, -1, -1, -1, -1, 1, &pid)) + return (0); + + while (waitpid(pid, &status, 0) < 0) + if (errno != EINTR) + { + status = 1; + break; + } + + cupsdFinishProcess(pid, command, sizeof(command)); + + if (status) + { + if (WIFEXITED(status)) + cupsdLogMessage(CUPSD_LOG_ERROR, + "Unable to create SSL server key and certificate - " + "the openssl command stopped with status %d!", + WEXITSTATUS(status)); + else + cupsdLogMessage(CUPSD_LOG_ERROR, + "Unable to create SSL server key and certificate - " + "the openssl command crashed on signal %d!", + WTERMSIG(status)); + } + else + { + cupsdLogMessage(CUPSD_LOG_INFO, "Created SSL server key file \"%s\"...", + ServerKey); + cupsdLogMessage(CUPSD_LOG_INFO, + "Created SSL server certificate file \"%s\"...", + ServerCertificate); + } + + return (!status); + +#elif defined(HAVE_GNUTLS) gnutls_x509_crt crt; /* Self-signed certificate */ gnutls_x509_privkey key; /* Encryption key */ cups_lang_t *language; /* Default language info */ @@ -3339,7 +3442,7 @@ make_certificate(void) * Create the encryption key... */ - cupsdLogMessage(CUPSD_LOG_INFO, "Generating server key..."); + cupsdLogMessage(CUPSD_LOG_INFO, "Generating SSL server key..."); gnutls_x509_privkey_init(&key); gnutls_x509_privkey_generate(key, GNUTLS_PK_RSA, 2048, 0); @@ -3353,33 +3456,33 @@ make_certificate(void) if ((result = gnutls_x509_privkey_export(key, GNUTLS_X509_FMT_PEM, buffer, &bytes)) < 0) { - cupsdLogMessage(CUPSD_LOG_ERROR, "Unable to export server key - %s", + cupsdLogMessage(CUPSD_LOG_ERROR, "Unable to export SSL server key - %s", gnutls_strerror(result)); gnutls_x509_privkey_deinit(key); - return; + return (0); } else if ((fp = cupsFileOpen(ServerKey, "w")) != NULL) { cupsFileWrite(fp, (char *)buffer, bytes); cupsFileClose(fp); - cupsdLogMessage(CUPSD_LOG_INFO, "Created server key file \"%s\"...", + cupsdLogMessage(CUPSD_LOG_INFO, "Created SSL server key file \"%s\"...", ServerKey); } else { cupsdLogMessage(CUPSD_LOG_ERROR, - "Unable to create server key file \"%s\" - %s", + "Unable to create SSL server key file \"%s\" - %s", ServerKey, strerror(errno)); gnutls_x509_privkey_deinit(key); - return; + return (0); } /* * Create the self-signed certificate... */ - cupsdLogMessage(CUPSD_LOG_INFO, "Generating self-signed certificate..."); + cupsdLogMessage(CUPSD_LOG_INFO, "Generating self-signed SSL certificate..."); language = cupsLangDefault(); curtime = time(NULL); @@ -3432,7 +3535,7 @@ make_certificate(void) if ((result = gnutls_x509_crt_export(crt, GNUTLS_X509_FMT_PEM, buffer, &bytes)) < 0) cupsdLogMessage(CUPSD_LOG_ERROR, - "Unable to export server certificate - %s", + "Unable to export SSL server certificate - %s", gnutls_strerror(result)); else if ((fp = cupsFileOpen(ServerCertificate, "w")) != NULL) { @@ -3440,12 +3543,12 @@ make_certificate(void) cupsFileClose(fp); cupsdLogMessage(CUPSD_LOG_INFO, - "Created 10-year server certificate file \"%s\"...", + "Created SSL server certificate file \"%s\"...", ServerCertificate); } else cupsdLogMessage(CUPSD_LOG_ERROR, - "Unable to create server certificate file \"%s\" - %s", + "Unable to create SSL server certificate file \"%s\" - %s", ServerCertificate, strerror(errno)); /* @@ -3454,8 +3557,83 @@ make_certificate(void) gnutls_x509_crt_deinit(crt); gnutls_x509_privkey_deinit(key); + + return (1); + +#elif defined(HAVE_CDSASSL) && defined(HAVE_WAITPID) + int pid, /* Process ID of command */ + status; /* Status of command */ + char command[1024], /* Command */ + keychain[1024], /* Keychain argument */ + *argv[5], /* Command-line arguments */ + *envp[MAX_ENV]; /* Environment variables */ + + + /* + * Run the "certtool" command to generate a self-signed certificate: + * + * certtool c Z k=ServerCertificate + */ + + if (!cupsFileFind("certtool", getenv("PATH"), 1, command, sizeof(command))) + { + cupsdLogMessage(CUPSD_LOG_ERROR, + "No SSL certificate and certtool command not found!"); + return (0); + } + + cupsdLogMessage(CUPSD_LOG_INFO, + "Generating SSL server key and certificate..."); + + snprintf(keychain, sizeof(keychain), "k=%s", ServerCertificate); + + argv[0] = "certtool"; + argv[1] = "c"; + argv[2] = "Z"; + argv[3] = keychain; + argv[4] = NULL; + + cupsdLoadEnv(envp, MAX_ENV); + + if (!cupsdStartProcess(command, argv, envp, -1, -1, -1, -1, 1, &pid)) + return (0); + + while (waitpid(pid, &status, 0) < 0) + if (errno != EINTR) + { + status = 1; + break; + } + + cupsdFinishProcess(pid, command, sizeof(command)); + + if (status) + { + if (WIFEXITED(status)) + cupsdLogMessage(CUPSD_LOG_ERROR, + "Unable to create SSL server key and certificate - " + "the certtool command stopped with status %d!", + WEXITSTATUS(status)); + else + cupsdLogMessage(CUPSD_LOG_ERROR, + "Unable to create SSL server key and certificate - " + "the certtool command crashed on signal %d!", + WTERMSIG(status)); + } + else + { + cupsdLogMessage(CUPSD_LOG_INFO, + "Created SSL server certificate file \"%s\"...", + ServerCertificate); + } + + return (!status); + +#else + return (0); +#endif /* HAVE_LIBSSL && HAVE_WAITPID */ } -#endif /* HAVE_GNUTLS */ +#endif /* HAVE_SSL */ /* @@ -3833,5 +4011,5 @@ write_file(cupsd_client_t *con, /* I - Client connection */ /* - * End of "$Id: client.c 5630 2006-06-05 18:42:53Z mike $". + * End of "$Id: client.c 5739 2006-07-16 15:21:18Z mike $". */ diff --git a/scheduler/conf.c b/scheduler/conf.c index 29a5b7d13..42acaf083 100644 --- a/scheduler/conf.c +++ b/scheduler/conf.c @@ -1,5 +1,5 @@ /* - * "$Id: conf.c 5663 2006-06-15 20:36:42Z mike $" + * "$Id: conf.c 5736 2006-07-13 19:59:36Z mike $" * * Configuration routines for the Common UNIX Printing System (CUPS). * @@ -468,6 +468,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... */ @@ -785,6 +793,24 @@ cupsdReadConfiguration(void) MaxClientsPerHost); /* + * Make sure that BrowseTimeout is at least twice the interval... + */ + + if (BrowseTimeout < (2 * BrowseInterval) || BrowseTimeout <= 0) + { + cupsdLogMessage(CUPSD_LOG_ALERT, "Invalid BrowseTimeout value %d!", + BrowseTimeout); + + if (BrowseInterval) + BrowseTimeout = BrowseInterval * 2; + else + BrowseTimeout = DEFAULT_TIMEOUT; + + cupsdLogMessage(CUPSD_LOG_ALERT, "Reset BrowseTimeout to %d!", + BrowseTimeout); + } + + /* * Update the default policy, as needed... */ @@ -2572,7 +2598,7 @@ read_configuration(cups_file_t *fp) /* I - File to read from */ strlcpy(temp2, relay->from.mask.name.name, sizeof(temp2)); cupsdLogMessage(CUPSD_LOG_INFO, "Relaying from %s to %s:%d (IPv4)", - temp, temp2, ntohs(relay->to.ipv4.sin_port)); + temp2, temp, ntohs(relay->to.ipv4.sin_port)); NumRelays ++; } @@ -2961,7 +2987,12 @@ read_configuration(cups_file_t *fp) /* I - File to read from */ n *= 262144; } - *((int *)var->ptr) = n; + if (n < 0) + cupsdLogMessage(CUPSD_LOG_ERROR, + "Bad negative integer value for %s on line %d!", + line, linenum); + else + *((int *)var->ptr) = n; } break; @@ -3249,5 +3280,5 @@ read_policy(cups_file_t *fp, /* I - Configuration file */ /* - * End of "$Id: conf.c 5663 2006-06-15 20:36:42Z mike $". + * End of "$Id: conf.c 5736 2006-07-13 19:59:36Z mike $". */ diff --git a/scheduler/conf.h b/scheduler/conf.h index 7b6eea95c..6320f9d19 100644 --- a/scheduler/conf.h +++ b/scheduler/conf.h @@ -1,5 +1,5 @@ /* - * "$Id: conf.h 5216 2006-03-02 17:47:53Z mike $" + * "$Id: conf.h 5696 2006-06-26 18:34:20Z mike $" * * Configuration file definitions for the Common UNIX Printing System (CUPS) * scheduler. @@ -74,6 +74,7 @@ VAR char *ConfigurationFile VALUE(NULL), /* Directory for request files */ *DocumentRoot VALUE(NULL); /* Root directory for documents */ +VAR int ServerNameIsIP VALUE(0); VAR int NumSystemGroups VALUE(0); /* Number of system group names */ VAR char *SystemGroups[MAX_SYSTEM_GROUPS]; @@ -210,5 +211,5 @@ extern int cupsdLogPage(cupsd_job_t *job, const char *page); /* - * End of "$Id: conf.h 5216 2006-03-02 17:47:53Z mike $". + * End of "$Id: conf.h 5696 2006-06-26 18:34:20Z mike $". */ diff --git a/scheduler/cups-polld.c b/scheduler/cups-polld.c index 0a8b4c12a..259361d5b 100644 --- a/scheduler/cups-polld.c +++ b/scheduler/cups-polld.c @@ -1,9 +1,9 @@ /* - * "$Id: cups-polld.c 5305 2006-03-18 03:05:12Z mike $" + * "$Id: cups-polld.c 5753 2006-07-18 19:53:24Z mike $" * * Polling daemon for the Common UNIX Printing System (CUPS). * - * Copyright 1997-2005 by Easy Software Products, all rights reserved. + * Copyright 1997-2006 by Easy Software Products, all rights reserved. * * These coded instructions, statements, and computer programs are the * property of Easy Software Products and are protected by Federal @@ -24,6 +24,7 @@ * Contents: * * main() - Open sockets and poll until we are killed... + * dequote() - Remote quotes from a string. * poll_server() - Poll the server for the given set of printers or classes. */ @@ -43,8 +44,8 @@ * Local functions... */ -static int poll_server(http_t *http, cups_lang_t *language, ipp_op_t op, - int sock, int port, int interval, +static char *dequote(char *d, const char *s, int dlen); +static int poll_server(http_t *http, int sock, int port, int interval, const char *prefix); @@ -53,18 +54,17 @@ static int poll_server(http_t *http, cups_lang_t *language, ipp_op_t op, */ int /* O - Exit status */ -main(int argc, /* I - Number of command-line arguments */ +main(int argc, /* I - Number of command-line args */ char *argv[]) /* I - Command-line arguments */ { - http_t *http; /* HTTP connection */ - cups_lang_t *language; /* Language info */ - int interval; /* Polling interval */ - int sock; /* Browser sock */ - int port; /* Browser port */ - int val; /* Socket option value */ - int seconds, /* Seconds left from poll */ - remain; /* Total remaining time to sleep */ - char prefix[1024]; /* Prefix for log messages */ + http_t *http; /* HTTP connection */ + int interval; /* Polling interval */ + int sock; /* Browser sock */ + int port; /* Browser port */ + int val; /* Socket option value */ + int seconds, /* Seconds left from poll */ + remain; /* Total remaining time to sleep */ + char prefix[1024]; /* Prefix for log messages */ /* @@ -128,25 +128,22 @@ main(int argc, /* I - Number of command-line arguments */ fprintf(stderr, "ERROR: %s Unable to connect to %s on port %s: %s\n", prefix, argv[1], argv[2], h_errno ? hstrerror(h_errno) : strerror(errno)); - sleep (interval); + sleep(interval); } /* * Loop forever, asking for available printers and classes... */ - language = cupsLangDefault(); - for (;;) { /* - * Get the printers, then the classes... + * Get the printers and classes... */ remain = interval; - if ((seconds = poll_server(http, language, CUPS_GET_PRINTERS, sock, port, - interval, prefix)) > 0) + if ((seconds = poll_server(http, sock, port, interval, prefix)) > 0) remain -= seconds; /* @@ -160,13 +157,41 @@ main(int argc, /* I - Number of command-line arguments */ /* + * 'dequote()' - Remote quotes from a string. + */ + +static char * /* O - Dequoted string */ +dequote(char *d, /* I - Destination string */ + const char *s, /* I - Source string */ + int dlen) /* I - Destination length */ +{ + char *dptr; /* Pointer into destination */ + + + if (s) + { + for (dptr = d, dlen --; *s && dlen > 0; s ++) + if (*s != '\"') + { + *dptr++ = *s; + dlen --; + } + + *dptr = '\0'; + } + else + *d = '\0'; + + return (d); +} + + +/* * 'poll_server()' - Poll the server for the given set of printers or classes. */ static int /* O - Number of seconds or -1 on error */ poll_server(http_t *http, /* I - HTTP connection */ - cups_lang_t *language, /* I - Language */ - ipp_op_t op, /* I - Operation code */ int sock, /* I - Broadcast sock */ int port, /* I - Broadcast port */ int interval, /* I - Polling interval */ @@ -178,10 +203,12 @@ poll_server(http_t *http, /* I - HTTP connection */ ipp_t *request, /* Request data */ *response; /* Response data */ ipp_attribute_t *attr; /* Current attribute */ - const char *uri, /* printer-uri */ - *info, /* printer-info */ - *location, /* printer-location */ - *make_model; /* printer-make-and-model */ + const char *uri; /* printer-uri */ + char info[1024], /* printer-info */ + job_sheets[1024],/* job-sheets-default */ + location[1024], /* printer-location */ + make_model[1024]; + /* printer-make-and-model */ cups_ptype_t type; /* printer-type */ ipp_pstate_t state; /* printer-state */ int accepting; /* printer-is-accepting-jobs */ @@ -189,6 +216,7 @@ poll_server(http_t *http, /* I - HTTP connection */ char packet[1540]; /* Data packet */ static const char * const attrs[] = /* Requested attributes */ { + "job-sheets-default", "printer-info", "printer-is-accepting-jobs", "printer-location", @@ -210,20 +238,12 @@ poll_server(http_t *http, /* I - HTTP connection */ addr.sin_port = htons(port); /* - * Build a CUPS_GET_PRINTERS or CUPS_GET_CLASSES request, which requires - * only the attributes-charset and attributes-natural-language attributes. + * Build a CUPS_GET_PRINTERS request and pass along a list of the + * attributes we are interested in along with the types of printers + * (and classes) we want. */ - request = ippNew(); - - request->request.op.operation_id = op; - request->request.op.request_id = 1; - - ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_CHARSET, - "attributes-charset", NULL, cupsLangEncoding(language)); - - ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE, - "attributes-natural-language", NULL, language->language); + request = ippNewRequest(CUPS_GET_PRINTERS); ippAddStrings(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD, "requested-attributes", sizeof(attrs) / sizeof(attrs[0]), @@ -240,17 +260,18 @@ poll_server(http_t *http, /* I - HTTP connection */ * Do the request and get back a response... */ - if ((response = cupsDoRequest(http, request, "/")) != NULL) + response = cupsDoRequest(http, request, "/"); + + if (cupsLastError() > IPP_OK_CONFLICT) { - if (response->request.status.status_code > IPP_OK_CONFLICT) - { - fprintf(stderr, "ERROR: %s get-%s failed: %s\n", prefix, - op == CUPS_GET_PRINTERS ? "printers" : "classes", - ippErrorString(response->request.status.status_code)); - ippDelete(response); - return (-1); - } + fprintf(stderr, "ERROR: %s CUPS-Get-Printers failed: %s\n", prefix, + cupsLastErrorString()); + ippDelete(response); + return (-1); + } + if (response) + { /* * Figure out how many printers/classes we have... */ @@ -261,8 +282,7 @@ poll_server(http_t *http, /* I - HTTP connection */ attr = ippFindNextAttribute(response, "printer-name", IPP_TAG_NAME), max_count ++); - fprintf(stderr, "DEBUG: %s found %d %s.\n", prefix, max_count, - op == CUPS_GET_PRINTERS ? "printers" : "classes"); + fprintf(stderr, "DEBUG: %s Found %d printers.\n", prefix, max_count); count = 0; seconds = time(NULL); @@ -272,58 +292,65 @@ poll_server(http_t *http, /* I - HTTP connection */ * Loop through the printers or classes returned in the list... */ - for (attr = response->attrs; attr != NULL; attr = attr->next) + for (attr = response->attrs; attr; attr = attr->next) { /* * Skip leading attributes until we hit a printer... */ - while (attr != NULL && attr->group_tag != IPP_TAG_PRINTER) + while (attr && attr->group_tag != IPP_TAG_PRINTER) attr = attr->next; - if (attr == NULL) + if (!attr) break; /* * Pull the needed attributes from this printer... */ - uri = NULL; - info = ""; - location = ""; - make_model = ""; - type = CUPS_PRINTER_REMOTE; - accepting = 1; - state = IPP_PRINTER_IDLE; + uri = NULL; + info[0] = '\0'; + job_sheets[0] = '\0'; + location[0] = '\0'; + make_model[0] = '\0'; + type = CUPS_PRINTER_REMOTE; + accepting = 1; + state = IPP_PRINTER_IDLE; while (attr != NULL && attr->group_tag == IPP_TAG_PRINTER) { - if (strcmp(attr->name, "printer-uri-supported") == 0 && - attr->value_tag == IPP_TAG_URI) + if (!strcmp(attr->name, "job-sheets-default") && + (attr->value_tag == IPP_TAG_NAME || + attr->value_tag == IPP_TAG_KEYWORD)) + { + if (attr->num_values == 1) + snprintf(job_sheets, sizeof(job_sheets), " job-sheets=%s", + attr->values[0].string.text); + else + snprintf(job_sheets, sizeof(job_sheets), " job-sheets=%s,%s", + attr->values[0].string.text, + attr->values[1].string.text); + } + else if (!strcmp(attr->name, "printer-uri-supported") && + attr->value_tag == IPP_TAG_URI) uri = attr->values[0].string.text; - - if (strcmp(attr->name, "printer-info") == 0 && - attr->value_tag == IPP_TAG_TEXT) - info = attr->values[0].string.text; - - if (strcmp(attr->name, "printer-is-accepting-jobs") == 0 && - attr->value_tag == IPP_TAG_BOOLEAN) + else if (!strcmp(attr->name, "printer-info") && + attr->value_tag == IPP_TAG_TEXT) + dequote(info, attr->values[0].string.text, sizeof(info)); + else if (!strcmp(attr->name, "printer-is-accepting-jobs") && + attr->value_tag == IPP_TAG_BOOLEAN) accepting = attr->values[0].boolean; - - if (strcmp(attr->name, "printer-location") == 0 && - attr->value_tag == IPP_TAG_TEXT) - location = attr->values[0].string.text; - - if (strcmp(attr->name, "printer-make-and-model") == 0 && - attr->value_tag == IPP_TAG_TEXT) - make_model = attr->values[0].string.text; - - if (strcmp(attr->name, "printer-state") == 0 && - attr->value_tag == IPP_TAG_ENUM) + else if (!strcmp(attr->name, "printer-location") && + attr->value_tag == IPP_TAG_TEXT) + dequote(location, attr->values[0].string.text, sizeof(location)); + else if (!strcmp(attr->name, "printer-make-and-model") && + attr->value_tag == IPP_TAG_TEXT) + dequote(make_model, attr->values[0].string.text, sizeof(location)); + else if (!strcmp(attr->name, "printer-state") && + attr->value_tag == IPP_TAG_ENUM) state = (ipp_pstate_t)attr->values[0].integer; - - if (strcmp(attr->name, "printer-type") == 0 && - attr->value_tag == IPP_TAG_ENUM) + else if (!strcmp(attr->name, "printer-type") && + attr->value_tag == IPP_TAG_ENUM) type = (cups_ptype_t)attr->values[0].integer; attr = attr->next; @@ -350,8 +377,10 @@ poll_server(http_t *http, /* I - HTTP connection */ if (!accepting) type |= CUPS_PRINTER_REJECTING; - snprintf(packet, sizeof(packet), "%x %x %s \"%s\" \"%s\" \"%s\"\n", - type, state, uri, location, info, make_model); + snprintf(packet, sizeof(packet), + "%x %x %s \"%s\" \"%s\" \"%s\" lease-duration=%d%s\n", + type, state, uri, location, info, make_model, interval * 2, + job_sheets); fprintf(stderr, "DEBUG2: %s Sending %s", prefix, packet); @@ -376,22 +405,16 @@ poll_server(http_t *http, /* I - HTTP connection */ */ count = 0; + sleep(1); } - if (attr == NULL) + if (!attr) break; } ippDelete(response); } - else - { - fprintf(stderr, "ERROR: %s get-%s failed: %s\n", prefix, - op == CUPS_GET_PRINTERS ? "printers" : "classes", - ippErrorString(cupsLastError())); - return (-1); - } /* * Return the number of seconds we used... @@ -402,5 +425,5 @@ poll_server(http_t *http, /* I - HTTP connection */ /* - * End of "$Id: cups-polld.c 5305 2006-03-18 03:05:12Z mike $". + * End of "$Id: cups-polld.c 5753 2006-07-18 19:53:24Z mike $". */ diff --git a/scheduler/dirsvc.c b/scheduler/dirsvc.c index e26d20db7..c2e19a970 100644 --- a/scheduler/dirsvc.c +++ b/scheduler/dirsvc.c @@ -1,5 +1,5 @@ /* - * "$Id: dirsvc.c 5663 2006-06-15 20:36:42Z mike $" + * "$Id: dirsvc.c 5724 2006-07-12 19:42:35Z mike $" * * Directory services routines for the Common UNIX Printing System (CUPS). * @@ -212,10 +212,11 @@ cupsdLoadRemoteCache(void) else p = cupsdAddPrinter(value); - p->accepting = 1; - p->state = IPP_PRINTER_IDLE; - p->type |= CUPS_PRINTER_REMOTE; - p->browse_time = now + BrowseTimeout; + p->accepting = 1; + p->state = IPP_PRINTER_IDLE; + p->type |= CUPS_PRINTER_REMOTE; + p->browse_time = now; + p->browse_expire = now + BrowseTimeout; /* * Set the default printer as needed... @@ -252,10 +253,11 @@ cupsdLoadRemoteCache(void) else p = cupsdAddClass(value); - p->accepting = 1; - p->state = IPP_PRINTER_IDLE; - p->type |= CUPS_PRINTER_REMOTE; - p->browse_time = now + BrowseTimeout; + p->accepting = 1; + p->state = IPP_PRINTER_IDLE; + p->type |= CUPS_PRINTER_REMOTE; + p->browse_time = now; + p->browse_expire = now + BrowseTimeout; /* * Set the default printer as needed... @@ -416,8 +418,8 @@ cupsdLoadRemoteCache(void) { time_t t = atoi(value); - if (t > (now + BrowseInterval)) - p->browse_time = t; + if (t > p->browse_expire) + p->browse_expire = t; } else { @@ -591,7 +593,7 @@ cupsdSaveRemoteCache(void) cupsFilePrintf(fp, "Type %d\n", printer->type); - cupsFilePrintf(fp, "BrowseTime %d\n", (int)printer->browse_time); + cupsFilePrintf(fp, "BrowseTime %d\n", (int)printer->browse_expire); if (printer->info) cupsFilePrintf(fp, "Info %s\n", printer->info); @@ -906,14 +908,21 @@ cupsdStartBrowsing(void) fcntl(BrowseSocket, F_SETFD, fcntl(BrowseSocket, F_GETFD) | FD_CLOEXEC); /* - * Finally, add the socket to the input selection set... + * Finally, add the socket to the input selection set as needed... */ - cupsdLogMessage(CUPSD_LOG_DEBUG2, - "cupsdStartBrowsing: Adding fd %d to InputSet...", - BrowseSocket); + if (BrowseRemoteProtocols & BROWSE_CUPS) + { + /* + * We only listen if we want remote printers... + */ - FD_SET(BrowseSocket, InputSet); + cupsdLogMessage(CUPSD_LOG_DEBUG2, + "cupsdStartBrowsing: Adding fd %d to InputSet...", + BrowseSocket); + + FD_SET(BrowseSocket, InputSet); + } } else BrowseSocket = -1; @@ -1885,7 +1894,7 @@ process_browse_data( hptr = strchr(host, '.'); sptr = strchr(ServerName, '.'); - if (sptr != NULL && hptr != NULL) + if (!ServerNameIsIP && sptr != NULL && hptr != NULL) { /* * Strip the common domain name components... @@ -3149,5 +3158,5 @@ slp_url_callback( /* - * End of "$Id: dirsvc.c 5663 2006-06-15 20:36:42Z mike $". + * End of "$Id: dirsvc.c 5724 2006-07-12 19:42:35Z mike $". */ diff --git a/scheduler/ipp.c b/scheduler/ipp.c index 7ed169a44..28115133d 100644 --- a/scheduler/ipp.c +++ b/scheduler/ipp.c @@ -1,5 +1,5 @@ /* - * "$Id: ipp.c 5686 2006-06-21 21:02:56Z mike $" + * "$Id: ipp.c 5736 2006-07-13 19:59:36Z mike $" * * IPP routines for the Common UNIX Printing System (CUPS) scheduler. * @@ -4334,7 +4334,8 @@ copy_printer_attrs( { httpAssembleURIf(HTTP_URI_CODING_ALL, printer_uri, sizeof(printer_uri), "ipp", NULL, con->servername, con->serverport, - "/printers/%s", printer->name); + (printer->type & CUPS_PRINTER_CLASS) ? + "/classes/%s" : "/printers/%s", printer->name); ippAddString(con->response, IPP_TAG_PRINTER, IPP_TAG_URI, "printer-uri-supported", NULL, printer_uri); cupsdLogMessage(CUPSD_LOG_DEBUG2, "printer-uri-supported=\"%s\"", @@ -4822,9 +4823,10 @@ create_subscription( recipient = attr->values[0].string.text; - if (httpSeparateURI(HTTP_URI_CODING_ALL, recipient, scheme, - sizeof(scheme), userpass, sizeof(userpass), host, - sizeof(host), &port, resource, sizeof(resource))) + if (httpSeparateURI(HTTP_URI_CODING_ALL, recipient, + scheme, sizeof(scheme), userpass, sizeof(userpass), + host, sizeof(host), &port, + resource, sizeof(resource)) < HTTP_URI_OK) { send_ipp_status(con, IPP_NOT_POSSIBLE, _("Bad notify-recipient URI \"%s\"!"), recipient); @@ -8808,19 +8810,11 @@ start_printer(cupsd_client_t *con, /* I - Client connection */ cupsdStartPrinter(printer, 1); if (dtype & CUPS_PRINTER_CLASS) - { cupsdLogMessage(CUPSD_LOG_INFO, "Class \"%s\" started by \"%s\".", name, get_username(con)); - cupsdAddEvent(CUPSD_EVENT_PRINTER_MODIFIED, printer, NULL, - "Class \"%s\" started by \"%s\".", name, get_username(con)); - } else - { cupsdLogMessage(CUPSD_LOG_INFO, "Printer \"%s\" started by \"%s\".", name, get_username(con)); - cupsdAddEvent(CUPSD_EVENT_PRINTER_MODIFIED, printer, NULL, - "Printer \"%s\" started by \"%s\".", name, get_username(con)); - } cupsdCheckJobs(); @@ -8904,19 +8898,11 @@ stop_printer(cupsd_client_t *con, /* I - Client connection */ cupsdStopPrinter(printer, 1); if (dtype & CUPS_PRINTER_CLASS) - { cupsdLogMessage(CUPSD_LOG_INFO, "Class \"%s\" stopped by \"%s\".", name, get_username(con)); - cupsdAddEvent(CUPSD_EVENT_PRINTER_MODIFIED, printer, NULL, - "Class \"%s\" stopped by \"%s\".", name, get_username(con)); - } else - { cupsdLogMessage(CUPSD_LOG_INFO, "Printer \"%s\" stopped by \"%s\".", name, get_username(con)); - cupsdAddEvent(CUPSD_EVENT_PRINTER_MODIFIED, printer, NULL, - "Printer \"%s\" stopped by \"%s\".", name, get_username(con)); - } /* * Everything was ok, so return OK status... @@ -9214,5 +9200,5 @@ validate_user(cupsd_job_t *job, /* I - Job */ /* - * End of "$Id: ipp.c 5686 2006-06-21 21:02:56Z mike $". + * End of "$Id: ipp.c 5736 2006-07-13 19:59:36Z mike $". */ diff --git a/scheduler/job.c b/scheduler/job.c index 6c21ed07b..967f9ac67 100644 --- a/scheduler/job.c +++ b/scheduler/job.c @@ -1,5 +1,5 @@ /* - * "$Id: job.c 5686 2006-06-21 21:02:56Z mike $" + * "$Id: job.c 5719 2006-07-11 21:04:48Z mike $" * * Job management routines for the Common UNIX Printing System (CUPS). * @@ -1764,8 +1764,8 @@ compare_active_jobs(void *first, /* I - First job */ int diff; /* Difference */ - if ((diff = ((cupsd_job_t *)first)->priority - - ((cupsd_job_t *)second)->priority) != 0) + if ((diff = ((cupsd_job_t *)second)->priority - + ((cupsd_job_t *)first)->priority) != 0) return (diff); else return (((cupsd_job_t *)first)->id - ((cupsd_job_t *)second)->id); @@ -3022,7 +3022,7 @@ start_job(cupsd_job_t *job, /* I - Job ID */ { snprintf(final_content_type, sizeof(final_content_type), "FINAL_CONTENT_TYPE=%s/%s", - filter->dst->super, filter->dst->type); + filter->src->super, filter->src->type); envp[envc ++] = final_content_type; } @@ -3433,5 +3433,5 @@ unload_job(cupsd_job_t *job) /* I - Job */ /* - * End of "$Id: job.c 5686 2006-06-21 21:02:56Z mike $". + * End of "$Id: job.c 5719 2006-07-11 21:04:48Z mike $". */ diff --git a/scheduler/listen.c b/scheduler/listen.c index 467dcfdc8..098705842 100644 --- a/scheduler/listen.c +++ b/scheduler/listen.c @@ -1,5 +1,5 @@ /* - * "$Id: listen.c 5083 2006-02-06 02:57:43Z mike $" + * "$Id: listen.c 5724 2006-07-12 19:42:35Z mike $" * * Server listening routines for the Common UNIX Printing System (CUPS) * scheduler. @@ -331,7 +331,7 @@ cupsdStartListening(void) * "any" address... */ - if (!LocalPort && p > 0 && + if ((!LocalPort || LocalEncryption == HTTP_ENCRYPT_ALWAYS) && p > 0 && (httpAddrLocalhost(&(lis->address)) || httpAddrAny(&(lis->address)))) { @@ -373,6 +373,8 @@ cupsdStartListening(void) */ cupsdSetEnv("CUPS_SERVER", have_domain); + + LocalEncryption = HTTP_ENCRYPT_IF_REQUESTED; } else { @@ -439,5 +441,5 @@ cupsdStopListening(void) /* - * End of "$Id: listen.c 5083 2006-02-06 02:57:43Z mike $". + * End of "$Id: listen.c 5724 2006-07-12 19:42:35Z mike $". */ diff --git a/scheduler/printers.c b/scheduler/printers.c index c987f1605..f1cb56352 100644 --- a/scheduler/printers.c +++ b/scheduler/printers.c @@ -1,5 +1,5 @@ /* - * "$Id: printers.c 5686 2006-06-21 21:02:56Z mike $" + * "$Id: printers.c 5724 2006-07-12 19:42:35Z mike $" * * Printer routines for the Common UNIX Printing System (CUPS). * @@ -546,6 +546,7 @@ cupsdCreateCommonData(void) } cupsArrayDelete(notifiers); + cupsDirClose(dir); } /* number-up-supported */ @@ -645,6 +646,9 @@ cupsdDeletePrinter( cupsArrayRemove(Printers, p); + if (p->type & CUPS_PRINTER_IMPLICIT) + cupsArrayRemove(ImplicitPrinters, p); + /* * Remove the dummy interface/icon/option files under IRIX... */ @@ -1260,6 +1264,7 @@ cupsdRenamePrinter( */ cupsArrayAdd(Printers, p); + if (p->type & CUPS_PRINTER_IMPLICIT) cupsArrayAdd(ImplicitPrinters, p); } @@ -3307,5 +3312,5 @@ write_irix_state(cupsd_printer_t *p) /* I - Printer to update */ /* - * End of "$Id: printers.c 5686 2006-06-21 21:02:56Z mike $". + * End of "$Id: printers.c 5724 2006-07-12 19:42:35Z mike $". */ diff --git a/scheduler/subscriptions.c b/scheduler/subscriptions.c index 428841306..f27c48ff4 100644 --- a/scheduler/subscriptions.c +++ b/scheduler/subscriptions.c @@ -1,5 +1,5 @@ /* - * "$Id: subscriptions.c 5673 2006-06-16 21:04:45Z mike $" + * "$Id: subscriptions.c 5716 2006-07-11 17:56:57Z mike $" * * Subscription routines for the Common UNIX Printing System (CUPS) scheduler. * @@ -89,6 +89,11 @@ cupsdAddEvent( cupsd_subscription_t *sub; /* Current subscription */ + cupsdLogMessage(CUPSD_LOG_DEBUG2, + "cupsdAddEvent(event=%s, dest=%p(%s), job=%p(%d), text=\"%s\", ...)", + cupsdEventName(event), dest, dest ? dest->name : "", + job, job ? job->id : 0, text); + /* * Keep track of events with any OS-supplied notification mechanisms... */ @@ -284,13 +289,13 @@ cupsdAddEvent( ippAddInteger(temp->attrs, IPP_TAG_EVENT_NOTIFICATION, IPP_TAG_INTEGER, "job-impressions-completed", job->sheets ? job->sheets->values[0].integer : 0); + } - /* - * Send the notification for this subscription... - */ + /* + * Send the notification for this subscription... + */ - cupsd_send_notification(sub, temp); - } + cupsd_send_notification(sub, temp); } } @@ -1379,7 +1384,7 @@ cupsd_send_notification( ipp_state_t state; /* IPP event state */ - cupsdLogMessage(CUPSD_LOG_DEBUG, + cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsd_send_notification(sub=%p(%d), event=%p(%s))\n", sub, sub->id, event, cupsdEventName(event->event)); @@ -1435,13 +1440,16 @@ cupsd_send_notification( if (sub->recipient) { - if (sub->pipe < 0) - cupsd_start_notifier(sub); + for (;;) + { + if (sub->pipe < 0) + cupsd_start_notifier(sub); - cupsdLogMessage(CUPSD_LOG_DEBUG, "sub->pipe=%d", sub->pipe); + cupsdLogMessage(CUPSD_LOG_DEBUG2, "sub->pipe=%d", sub->pipe); + + if (sub->pipe < 0) + break; - if (sub->pipe >= 0) - { event->attrs->state = IPP_IDLE; while ((state = ippWriteFile(sub->pipe, event->attrs)) != IPP_DATA) @@ -1449,9 +1457,34 @@ cupsd_send_notification( break; if (state == IPP_ERROR) + { + if (errno == EPIPE) + { + /* + * Notifier died, try restarting it... + */ + + cupsdLogMessage(CUPSD_LOG_WARN, + "Notifier for subscription %d (%s) went away, " + "retrying!", + sub->id, sub->recipient); + cupsdEndProcess(sub->pid, 0); + + close(sub->pipe); + sub->pipe = -1; + continue; + } + cupsdLogMessage(CUPSD_LOG_ERROR, "Unable to send event for subscription %d (%s)!", sub->id, sub->recipient); + } + + /* + * If we get this far, break out of the loop... + */ + + break; } } @@ -1591,5 +1624,5 @@ cupsd_start_notifier( /* - * End of "$Id: subscriptions.c 5673 2006-06-16 21:04:45Z mike $". + * End of "$Id: subscriptions.c 5716 2006-07-11 17:56:57Z mike $". */ diff --git a/systemv/cancel.c b/systemv/cancel.c index 63c92fcfa..f6d4aed0a 100644 --- a/systemv/cancel.c +++ b/systemv/cancel.c @@ -1,5 +1,5 @@ /* - * "$Id: cancel.c 5091 2006-02-08 18:39:56Z mike $" + * "$Id: cancel.c 5696 2006-06-26 18:34:20Z mike $" * * "cancel" command for the Common UNIX Printing System (CUPS). * @@ -121,7 +121,10 @@ main(int argc, /* I - Number of command-line arguments */ case 'h' : /* Connect to host */ if (http != NULL) + { httpClose(http); + http = NULL; + } if (argv[i][2] != '\0') cupsSetServer(argv[i] + 2); @@ -387,5 +390,5 @@ main(int argc, /* I - Number of command-line arguments */ /* - * End of "$Id: cancel.c 5091 2006-02-08 18:39:56Z mike $". + * End of "$Id: cancel.c 5696 2006-06-26 18:34:20Z mike $". */ diff --git a/systemv/cupsaddsmb.c b/systemv/cupsaddsmb.c index a69e113f1..0c74fbff0 100644 --- a/systemv/cupsaddsmb.c +++ b/systemv/cupsaddsmb.c @@ -1,5 +1,5 @@ /* - * "$Id: cupsaddsmb.c 5233 2006-03-06 03:39:28Z mike $" + * "$Id: cupsaddsmb.c 5753 2006-07-18 19:53:24Z mike $" * * "cupsaddsmb" command for the Common UNIX Printing System (CUPS). * @@ -249,7 +249,9 @@ export_dest(http_t *http, /* I - Connection to server */ if (!SAMBAPassword) { snprintf(prompt, sizeof(prompt), - _("Password for %s required to access %s via SAMBA: "), + _cupsLangString(cupsLangDefault(), + _("Password for %s required to access %s via " + "SAMBA: ")), SAMBAUser, SAMBAServer); if ((SAMBAPassword = cupsGetPassword(prompt)) == NULL) @@ -290,5 +292,5 @@ usage(void) /* - * End of "$Id: cupsaddsmb.c 5233 2006-03-06 03:39:28Z mike $". + * End of "$Id: cupsaddsmb.c 5753 2006-07-18 19:53:24Z mike $". */ diff --git a/systemv/lpoptions.c b/systemv/lpoptions.c index 8e6441d8a..30d57aa48 100644 --- a/systemv/lpoptions.c +++ b/systemv/lpoptions.c @@ -1,5 +1,5 @@ /* - * "$Id: lpoptions.c 4924 2006-01-13 01:55:20Z mike $" + * "$Id: lpoptions.c 5753 2006-07-18 19:53:24Z mike $" * * Printer option program for the Common UNIX Printing System (CUPS). * @@ -164,6 +164,21 @@ main(int argc, /* I - Number of command-line arguments */ break; case 'o' : /* -o option[=value] */ + if (dest == NULL) + { + if (num_dests == 0) + num_dests = cupsGetDests(&dests); + + if ((dest = cupsGetDest(NULL, NULL, num_dests, dests)) == NULL) + dest = dests; + + for (j = 0; j < dest->num_options; j ++) + if (cupsGetOption(dest->options[j].name, num_options, options) == NULL) + num_options = cupsAddOption(dest->options[j].name, + dest->options[j].value, + num_options, &options); + } + if (argv[i][2]) num_options = cupsParseOptions(argv[i] + 2, num_options, &options); else @@ -219,6 +234,21 @@ main(int argc, /* I - Number of command-line arguments */ break; case 'r' : /* -r option (remove) */ + if (dest == NULL) + { + if (num_dests == 0) + num_dests = cupsGetDests(&dests); + + if ((dest = cupsGetDest(NULL, NULL, num_dests, dests)) == NULL) + dest = dests; + + for (j = 0; j < dest->num_options; j ++) + if (cupsGetOption(dest->options[j].name, num_options, options) == NULL) + num_options = cupsAddOption(dest->options[j].name, + dest->options[j].value, + num_options, &options); + } + if (argv[i][2]) option = argv[i] + 2; else @@ -231,7 +261,7 @@ main(int argc, /* I - Number of command-line arguments */ } for (j = 0; j < num_options; j ++) - if (strcasecmp(options[j].name, option) == 0) + if (!strcasecmp(options[j].name, option)) { /* * Remove this option... @@ -452,5 +482,5 @@ usage(void) /* - * End of "$Id: lpoptions.c 4924 2006-01-13 01:55:20Z mike $". + * End of "$Id: lpoptions.c 5753 2006-07-18 19:53:24Z mike $". */ diff --git a/templates/de/add-class.tmpl b/templates/de/add-class.tmpl new file mode 100644 index 000000000..c5bd8e451 --- /dev/null +++ b/templates/de/add-class.tmpl @@ -0,0 +1,33 @@ +<FORM METHOD="POST" ACTION="/admin"> +<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}"> + +<H2 CLASS="title">Klasse hinzufü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ügen"></TD> +</TR> +</TABLE> + +</FORM> diff --git a/templates/de/add-printer.tmpl b/templates/de/add-printer.tmpl new file mode 100644 index 000000000..db60277f9 --- /dev/null +++ b/templates/de/add-printer.tmpl @@ -0,0 +1,28 @@ +<FORM METHOD="POST" ACTION="/admin"> +<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}"> + +<H2 CLASS="title">Neuen Drucker hinzufü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ß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ü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ü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 index 000000000..9bf668631 --- /dev/null +++ b/templates/de/admin.tmpl @@ -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ü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ü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&{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ü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äge</H2> + +<P> +<A HREF="/jobs/"><IMG SRC="/images/button-manage-jobs.gif" ALT="Aufträge +verwalten" CLASS="button"></A> +</P> + +</TD><TD> </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ür Fehlersuche</P> + +<P><INPUT TYPE="IMAGE" SRC="/images/button-change-settings.gif" ALT="Einstellungen ändern"></P> + +</FORM>} + +</TD></TR> +</TABLE> diff --git a/templates/de/choose-device.tmpl b/templates/de/choose-device.tmpl new file mode 100644 index 000000000..a45c9ba70 --- /dev/null +++ b/templates/de/choose-device.tmpl @@ -0,0 +1,26 @@ +<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ät für {printer_name}</H2> + +<TABLE> +<TR> +<TH CLASS="label">Gerä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 index 000000000..db8211792 --- /dev/null +++ b/templates/de/choose-make.tmpl @@ -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ü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> </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 index 000000000..17d94b42a --- /dev/null +++ b/templates/de/choose-model.tmpl @@ -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ü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 index 000000000..73cca51fc --- /dev/null +++ b/templates/de/choose-serial.tmpl @@ -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ü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ä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ß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 index 000000000..b4068be5a --- /dev/null +++ b/templates/de/choose-uri.tmpl @@ -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äte URI für {printer_name}</H2> + +<TABLE> +<TR> +<TH CLASS="label">Gerä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ü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 index 000000000..abce91799 --- /dev/null +++ b/templates/de/class-added.tmpl @@ -0,0 +1,2 @@ +<P>Class <A HREF="/classes/{printer_name}">{printer_name}</A> wurde erfolgreich +hinzugefügt. diff --git a/templates/de/class-confirm.tmpl b/templates/de/class-confirm.tmpl new file mode 100644 index 000000000..3da201fbc --- /dev/null +++ b/templates/de/class-confirm.tmpl @@ -0,0 +1,7 @@ +<P><B>Warning:</B> Sind Sie sicher, daß Sie die Klasse +{printer_name} lö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öschen" +CLASS="button"></A></P> diff --git a/templates/de/class-deleted.tmpl b/templates/de/class-deleted.tmpl new file mode 100644 index 000000000..c75fab4e5 --- /dev/null +++ b/templates/de/class-deleted.tmpl @@ -0,0 +1 @@ +<P>Klasse {printer_name} wurde erfolgreich gelöscht. diff --git a/templates/de/class-jobs-header.tmpl b/templates/de/class-jobs-header.tmpl new file mode 100644 index 000000000..e5b9e08eb --- /dev/null +++ b/templates/de/class-jobs-header.tmpl @@ -0,0 +1 @@ +<H3 CLASS="title">Aufträge</H3> diff --git a/templates/de/class-modified.tmpl b/templates/de/class-modified.tmpl new file mode 100644 index 000000000..944b766af --- /dev/null +++ b/templates/de/class-modified.tmpl @@ -0,0 +1,2 @@ +<P>Klasse <A HREF="/classes/{printer_name}">{printer_name}</A> wurde +erfolgreich geändert. diff --git a/templates/de/classes-header.tmpl b/templates/de/classes-header.tmpl new file mode 100644 index 000000000..f07d47d2c --- /dev/null +++ b/templates/de/classes-header.tmpl @@ -0,0 +1 @@ +<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 index 000000000..ef599ad9b --- /dev/null +++ b/templates/de/classes.tmpl @@ -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äge ablehnen:Aufträ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&printer_name={%printer_name}&is_class=Y"> +<IMG SRC="/images/button-start-class.gif" ALT="Klasse starten" CLASS="button"></A> +: +<A HREF="{admin_uri}?op=stop-class&printer_name={%printer_name}&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&printer_name={%printer_name}&is_class=Y"> +<IMG SRC="/images/button-accept-jobs.gif" ALT="Aufträge akzeptieren" CLASS="button"></A> +: +<A HREF="{admin_uri}?op=reject-jobs&printer_name={%printer_name}&is_class=Y"> +<IMG SRC="/images/button-reject-jobs.gif" ALT="Aufträge ablehnen" CLASS="button"></A> +} +<A HREF="{admin_uri}?op=purge-jobs&printer_name={%printer_name}&is_class=Y"> +<IMG SRC="/images/button-cancel-all-jobs.gif" ALT="Alle Aufträge abbrechen" CLASS="button"></A> +{printer_is_shared=0? +<A HREF="{admin_uri}?op=set-sharing&printer_name={%printer_name}&shared=1&is_class=Y"> +<IMG SRC="/images/button-publish-printer.gif" ALT="Drucker publizieren" CLASS="button"></A> +: +<A HREF="{admin_uri}?op=set-sharing&printer_name={%printer_name}&shared=0&is_class=Y"> +<IMG SRC="/images/button-unpublish-printer.gif" ALT="Druckerpublikation aufheben" CLASS="button"></A> +} +<A HREF="{admin_uri}?op=modify-class&printer_name={%printer_name}"> +<IMG SRC="/images/button-modify-class.gif" ALT="Klasse ändern" CLASS="button"></A> +<A HREF="{admin_uri}?op=delete-class&printer_name={%printer_name}"> +<IMG SRC="/images/button-delete-class.gif" ALT="Klasse löschen" CLASS="button"></A> +<A HREF="{admin_uri}?op=set-as-default&printer_name={%printer_name}&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&printer_name={%printer_name}&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 index 000000000..4cfcad1a8 --- /dev/null +++ b/templates/de/edit-config.tmpl.in @@ -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="Ä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 index 000000000..9e1236c85 --- /dev/null +++ b/templates/de/error-op.tmpl @@ -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 index 000000000..4653d8ba7 --- /dev/null +++ b/templates/de/error.tmpl @@ -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 index 000000000..6ece4d7b1 --- /dev/null +++ b/templates/de/header.tmpl.in @@ -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=""> Startseite <IMG +SRC="/images/tab-right.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP" +BORDER="0" ALT=""></A> + + <A CLASS="{SECTION=admin?:un}sel" HREF="/admin"><IMG +SRC="/images/tab-left.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP" +BORDER="0" ALT=""> Verwaltung <IMG +SRC="/images/tab-right.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP" +BORDER="0" ALT=""></A> + + <A CLASS="{SECTION=classes?:un}sel" HREF="/classes/"><IMG +SRC="/images/tab-left.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP" +BORDER="0" ALT=""> Klassen <IMG +SRC="/images/tab-right.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP" +BORDER="0" ALT=""></A> + + <A CLASS="{SECTION=help?:un}sel" HREF="/help/"><IMG +SRC="/images/tab-left.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP" +BORDER="0" ALT=""> Dokumentation/Hilfe <IMG +SRC="/images/tab-right.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP" +BORDER="0" ALT=""></A> + + <A CLASS="{SECTION=jobs?:un}sel" HREF="/jobs/"><IMG +SRC="/images/tab-left.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP" +BORDER="0" ALT=""> Aufträge <IMG +SRC="/images/tab-right.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP" +BORDER="0" ALT=""></A> + + <A CLASS="{SECTION=printers?:un}sel" HREF="/printers/"><IMG +SRC="/images/tab-left.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP" +BORDER="0" ALT=""> Drucker <IMG +SRC="/images/tab-right.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP" +BORDER="0" ALT=""></A> + +</TD></TR> +<TR CLASS="page"> +<TD WIDTH="15"> </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 index 000000000..80655cd89 --- /dev/null +++ b/templates/de/help-header.tmpl @@ -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 Ü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 Ü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äufig gestellte Fragen, und ein Formular für +Fehlerberichte und Wünsche.</P>} diff --git a/templates/de/help-printable.tmpl b/templates/de/help-printable.tmpl new file mode 100644 index 000000000..305112a33 --- /dev/null +++ b/templates/de/help-printable.tmpl @@ -0,0 +1,11 @@ +<!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 index 000000000..06b305c6f --- /dev/null +++ b/templates/de/job-cancel.tmpl @@ -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 index 000000000..7e4c4778c --- /dev/null +++ b/templates/de/job-hold.tmpl @@ -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 index 000000000..f48f25189 --- /dev/null +++ b/templates/de/job-move.tmpl @@ -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ä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äge}"></TD> +</TR> +</TABLE> + +</FORM> diff --git a/templates/de/job-moved.tmpl b/templates/de/job-moved.tmpl new file mode 100644 index 000000000..2d2b28789 --- /dev/null +++ b/templates/de/job-moved.tmpl @@ -0,0 +1,2 @@ +<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 index 000000000..34279d6f8 --- /dev/null +++ b/templates/de/job-release.tmpl @@ -0,0 +1 @@ +<P><A HREF="{job_printer_uri}">Auftrag {job_id}</A> wurde für Druck freigegeben. diff --git a/templates/de/job-restart.tmpl b/templates/de/job-restart.tmpl new file mode 100644 index 000000000..940611763 --- /dev/null +++ b/templates/de/job-restart.tmpl @@ -0,0 +1 @@ +<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 index 000000000..419c77910 --- /dev/null +++ b/templates/de/jobs-header.tmpl @@ -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ä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ä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äge anzeigen"></A> +<A HREF="{?printer_name=?/jobs:{printer_uri_supported}}"><IMG +SRC="/images/button-show-active.gif" CLASS="button" ALT="Aktive Aufträge anzeigen">:<A +HREF="{?printer_name=?/jobs:{printer_uri_supported}}"><IMG +SRC="/images/button-show-active.gif" CLASS="button" ALT="Aktive Aufträ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äge anzeigen">}}</A></P> + +<P ALIGN="CENTER">{total=0?Keine Aufträge gefunden:Zeige {#job_id} von {total} {?which_jobs=?active:{which_jobs=all?:fertigen}} {total=1?Auftrag:Aufträgen}}.</P> diff --git a/templates/de/jobs.tmpl b/templates/de/jobs.tmpl new file mode 100644 index 000000000..0553eb700 --- /dev/null +++ b/templates/de/jobs.tmpl @@ -0,0 +1,42 @@ +{#job_id=0?: +<TABLE CELLPADDING="0" CELLSPACING="0" CLASS="button" WIDTH="100%" SUMMARY="Auftragsliste"> +<TR CLASS="data"> +<TH>ID </TH> +<TH>Name </TH> +<TH>Benutzer </TH> +<TH>Größe </TH> +<TH>Seiten </TH> +<TH>Status </TH> +<TH>Kontrolle </TH> +</TR> + +{[job_id] +<TR CLASS="data" VALIGN="TOP"> +<TD><A HREF="{job_printer_uri}">{job_printer_name}</A>-{job_id} </TD> +<TD>{?job_name=?Unbekannt:{job_name}} </TD> +<TD>{job_originating_user_name} </TD> +<TD>{job_k_octets}k </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}}}}}}} </TD> +<TD> +{job_preserved>0? +<A HREF="/jobs/?op=restart-job&job_id={job_id}&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&job_id={job_id}&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&job_id={job_id}&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&job_id={job_id}&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&job_id={job_id}"><IMG +SRC="/images/button-move-job.gif" ALT="Auftrag verschieben" CLASS="button"></A>:} + </TD> +</TR> +} +</TABLE> +} diff --git a/templates/de/maintenance.tmpl b/templates/de/maintenance.tmpl new file mode 100644 index 000000000..811c40107 --- /dev/null +++ b/templates/de/maintenance.tmpl @@ -0,0 +1,2 @@ +<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 index 000000000..779891359 --- /dev/null +++ b/templates/de/modify-class.tmpl @@ -0,0 +1,34 @@ +<FORM METHOD="POST" ACTION="/admin"> +<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}"> + +<H2 CLASS="title">Klasse {printer_name} ä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 ändern"></TD> +</TR> +</TABLE> + +</FORM> diff --git a/templates/de/modify-printer.tmpl b/templates/de/modify-printer.tmpl new file mode 100644 index 000000000..54323dfa5 --- /dev/null +++ b/templates/de/modify-printer.tmpl @@ -0,0 +1,29 @@ +<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} ä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ü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ü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 index 000000000..72c85189a --- /dev/null +++ b/templates/de/option-boolean.tmpl @@ -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 index 000000000..95b69f721 --- /dev/null +++ b/templates/de/option-conflict.tmpl @@ -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 index 000000000..cafc9f9fe --- /dev/null +++ b/templates/de/option-header.tmpl @@ -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 index 000000000..d2534af75 --- /dev/null +++ b/templates/de/option-pickmany.tmpl @@ -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 index 000000000..08342d06e --- /dev/null +++ b/templates/de/option-pickone.tmpl @@ -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 index 000000000..02c7a962c --- /dev/null +++ b/templates/de/option-trailer.tmpl @@ -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 index 000000000..fc602f78a --- /dev/null +++ b/templates/de/pager.tmpl @@ -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>: }</TD> + <TD WIDTH="34%" ALIGN="CENTER">{ORDER=dec?<A HREF="{THISURL}&ORDER=asc"><IMG SRC="/images/button-sort-ascending.gif" ALT="Aufsteigend sortieren" CLASS="button"></A>:<A HREF="{THISURL}&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ächste anzeigen" CLASS="button"></A>: }</TD> +</TR> +</TABLE> diff --git a/templates/de/printer-accept.tmpl b/templates/de/printer-accept.tmpl new file mode 100644 index 000000000..5980e5bf0 --- /dev/null +++ b/templates/de/printer-accept.tmpl @@ -0,0 +1,3 @@ +<P>{is_class?Klasse:Drucker} <A +HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A> +akzeptiert jetzt Aufträge.</P> diff --git a/templates/de/printer-added.tmpl b/templates/de/printer-added.tmpl new file mode 100644 index 000000000..0ce8e8c4f --- /dev/null +++ b/templates/de/printer-added.tmpl @@ -0,0 +1,2 @@ +<P>Drucker <A HREF="/printers/{printer_name}">{printer_name}</A> wurde erfolgreich +hinzugefügt. diff --git a/templates/de/printer-configured.tmpl b/templates/de/printer-configured.tmpl new file mode 100644 index 000000000..a0469e61e --- /dev/null +++ b/templates/de/printer-configured.tmpl @@ -0,0 +1,2 @@ +<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 index 000000000..311cd11ae --- /dev/null +++ b/templates/de/printer-confirm.tmpl @@ -0,0 +1,7 @@ +<P><B>Warnung:</B> Sind Sie sicher, daß Sie den Drucker +{printer_name} lö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öschen" +CLASS="button"></A></P> diff --git a/templates/de/printer-default.tmpl b/templates/de/printer-default.tmpl new file mode 100644 index 000000000..d04a326d4 --- /dev/null +++ b/templates/de/printer-default.tmpl @@ -0,0 +1,7 @@ +<P>{is_class?Klasse:Drucker} <A +HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A> +wurde zum Standarddrucker für diesen Server bestimmt.</P> + +<BLOCKQUOTE><B>Notiz:</B> Jede benutzerspezifische Standardeinstellung welche +mit dem Befehl <TT>lpoptions</TT> gemacht wird überschreibt diese +Standardeinstellung.</BLOCKQUOTE> diff --git a/templates/de/printer-deleted.tmpl b/templates/de/printer-deleted.tmpl new file mode 100644 index 000000000..4489a7306 --- /dev/null +++ b/templates/de/printer-deleted.tmpl @@ -0,0 +1 @@ +<P>Drucker {printer_name} wurde erfolgreich gelöscht. diff --git a/templates/de/printer-jobs-header.tmpl b/templates/de/printer-jobs-header.tmpl new file mode 100644 index 000000000..e5b9e08eb --- /dev/null +++ b/templates/de/printer-jobs-header.tmpl @@ -0,0 +1 @@ +<H3 CLASS="title">Aufträge</H3> diff --git a/templates/de/printer-modified.tmpl b/templates/de/printer-modified.tmpl new file mode 100644 index 000000000..dc1c104bf --- /dev/null +++ b/templates/de/printer-modified.tmpl @@ -0,0 +1,2 @@ +<P>Drucker <A HREF="/printers/{printer_name}">{printer_name}</A> wurde +erfolgreich geändert. diff --git a/templates/de/printer-purge.tmpl b/templates/de/printer-purge.tmpl new file mode 100644 index 000000000..cafa5e819 --- /dev/null +++ b/templates/de/printer-purge.tmpl @@ -0,0 +1,3 @@ +<P>{is_class?Klasse:Drucker} <A +HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A> +wurde aus allen Aufträgen eliminiert.</P> diff --git a/templates/de/printer-reject.tmpl b/templates/de/printer-reject.tmpl new file mode 100644 index 000000000..513bba1bf --- /dev/null +++ b/templates/de/printer-reject.tmpl @@ -0,0 +1,3 @@ +<P>{is_class?Klasse:Drucker} <A +HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A> +akzeptiert ab sofort keine Aufträge mehr.</P> diff --git a/templates/de/printer-start.tmpl b/templates/de/printer-start.tmpl new file mode 100644 index 000000000..e6836c783 --- /dev/null +++ b/templates/de/printer-start.tmpl @@ -0,0 +1,3 @@ +<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 index 000000000..64cbd7294 --- /dev/null +++ b/templates/de/printer-stop.tmpl @@ -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 index 000000000..b247590d9 --- /dev/null +++ b/templates/de/printers-header.tmpl @@ -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 index 000000000..7ddde77b7 --- /dev/null +++ b/templates/de/printers.tmpl @@ -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äge ablehnen:Aufträge akzeptieren}, {printer_is_shared=0?nicht:} publiziert. +{?device_uri=?:<BR><B>Gerä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ö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&printer_name={%printer_name}"> +<IMG SRC="/images/button-start-printer.gif" ALT="Drucker starten" CLASS="button"></A> +: +<A HREF="{admin_uri}?op=stop-printer&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&printer_name={%printer_name}"> +<IMG SRC="/images/button-accept-jobs.gif" ALT="Aufträge akzeptieren" CLASS="button"></A> +: +<A HREF="{admin_uri}?op=reject-jobs&printer_name={%printer_name}"> +<IMG SRC="/images/button-reject-jobs.gif" ALT="Aufträge ablehnen" CLASS="button"></A> +} +<A HREF="{printer_uri_supported}?op=move-jobs&printer_name={%printer_name}"> +<IMG SRC="/images/button-move-jobs.gif" ALT="Alle Aufträge verschieben" CLASS="button"></A> +<A HREF="{admin_uri}?op=purge-jobs&printer_name={%printer_name}"> +<IMG SRC="/images/button-cancel-all-jobs.gif" ALT="Aufträge abbrechen" CLASS="button"></A> +{printer_is_shared=0? +<A HREF="{admin_uri}?op=set-sharing&printer_name={%printer_name}&shared=1"> +<IMG SRC="/images/button-publish-printer.gif" ALT="Drucker publizieren" CLASS="button"></A> +: +<A HREF="{admin_uri}?op=set-sharing&printer_name={%printer_name}&shared=0"> +<IMG SRC="/images/button-unpublish-printer.gif" ALT="Druckerpublikation aufheben" CLASS="button"></A> +} +<A HREF="{admin_uri}?op=modify-printer&printer_name={%printer_name}"> +<IMG SRC="/images/button-modify-printer.gif" ALT="Drucker ändern" CLASS="button"></A> +<A HREF="{admin_uri}?op=set-printer-options&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&printer_name={%printer_name}"> +<IMG SRC="/images/button-delete-printer.gif" ALT="Drucker löschen" CLASS="button"></A> +<A HREF="{admin_uri}?op=set-as-default&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&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 index 000000000..28f93bd50 --- /dev/null +++ b/templates/de/restart.tmpl @@ -0,0 +1 @@ +<p>Bitte warten Sie während der Server neu startet...</p> diff --git a/templates/de/samba-export.tmpl b/templates/de/samba-export.tmpl new file mode 100644 index 000000000..d76d40118 --- /dev/null +++ b/templates/de/samba-export.tmpl @@ -0,0 +1,55 @@ +<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ür Samba</H2> + +{error?<P>Kann Drucker nicht fü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ür Samba bereitzustellen +damit auf diese mittels Windows Clients ü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ü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ür Samba"></TD> +</TR> +</TABLE> + +</FORM> diff --git a/templates/de/samba-exported.tmpl b/templates/de/samba-exported.tmpl new file mode 100644 index 000000000..ff032b124 --- /dev/null +++ b/templates/de/samba-exported.tmpl @@ -0,0 +1 @@ +<P>Drucker wurden fü Samba erfolgreich exportiert.</P> diff --git a/templates/de/search.tmpl b/templates/de/search.tmpl new file mode 100644 index 000000000..fa5313491 --- /dev/null +++ b/templates/de/search.tmpl @@ -0,0 +1,13 @@ +<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ä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?&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 index 000000000..864f9f0ce --- /dev/null +++ b/templates/de/set-printer-options-header.tmpl @@ -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 index 000000000..a3d1e1ffa --- /dev/null +++ b/templates/de/set-printer-options-trailer.tmpl @@ -0,0 +1 @@ +</FORM> diff --git a/templates/de/test-page.tmpl b/templates/de/test-page.tmpl new file mode 100644 index 000000000..a9a4bbd8a --- /dev/null +++ b/templates/de/test-page.tmpl @@ -0,0 +1,2 @@ +<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 index 000000000..f2f9bb9fa --- /dev/null +++ b/templates/de/trailer.tmpl @@ -0,0 +1,21 @@ +</TD> +<TD WIDTH="15"> </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 index 000000000..d2c9ba86f --- /dev/null +++ b/templates/de/users.tmpl @@ -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ü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> diff --git a/templates/ja/printers.tmpl b/templates/ja/printers.tmpl index 457f12152..716e159fd 100644 --- a/templates/ja/printers.tmpl +++ b/templates/ja/printers.tmpl @@ -12,7 +12,7 @@ <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> diff --git a/test/ipptest.c b/test/ipptest.c index 98843ff6c..8a294e9a0 100644 --- a/test/ipptest.c +++ b/test/ipptest.c @@ -1,5 +1,5 @@ /* - * "$Id: ipptest.c 5414 2006-04-17 20:07:24Z mike $" + * "$Id: ipptest.c 5741 2006-07-17 18:36:20Z mike $" * * IPP test command for the Common UNIX Printing System (CUPS). * @@ -122,6 +122,7 @@ main(int argc, /* I - Number of command-line arguments */ int status; /* Status of tests... */ const char *uri; /* URI to use */ const char *testfile; /* Test file to use */ + int interval; /* Test interval */ /* @@ -133,6 +134,7 @@ main(int argc, /* I - Number of command-line arguments */ uri = NULL; testfile = NULL; status = 0; + interval = 0; for (i = 1; i < argc; i ++) { @@ -140,6 +142,15 @@ main(int argc, /* I - Number of command-line arguments */ { if (!strcmp(argv[i], "-v")) Verbosity ++; + else if (!strcmp(argv[i], "-i")) + { + i++; + + if (i >= argc) + usage(NULL); + else + interval = atoi(argv[i]); + } else usage(argv[i]); } @@ -174,6 +185,19 @@ main(int argc, /* I - Number of command-line arguments */ 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 $". */ |