]> git.ipfire.org Git - thirdparty/cups.git/commitdiff
Sync up with CUPS 1.7svn-r10893
authormsweet <msweet@a1ca3aef-8c08-0410-bb20-df032aa958be>
Mon, 11 Mar 2013 13:57:36 +0000 (13:57 +0000)
committermsweet <msweet@a1ca3aef-8c08-0410-bb20-df032aa958be>
Mon, 11 Mar 2013 13:57:36 +0000 (13:57 +0000)
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@4216 a1ca3aef-8c08-0410-bb20-df032aa958be

136 files changed:
CHANGES-1.6.txt
CHANGES.txt
backend/ipp.c
backend/usb-darwin.c
backend/usb-libusb.c
cgi-bin/Makefile
cgi-bin/ipp-var.c
config.h.in
configure.in
cups/Makefile
cups/adminutil.c
cups/auth.c
cups/dest-job.c
cups/dest-localization.c
cups/dest-options.c
cups/dest.c
cups/encode.c
cups/getdevices.c
cups/getputfile.c
cups/http-addrlist.c
cups/http-private.h
cups/http-support.c
cups/http.c
cups/http.h
cups/ipp-support.c
cups/ipp.c
cups/notify.c
cups/ppd-cache.c
cups/ppd-private.h
cups/pwg-media.c
cups/request.c
cups/testadmin.c
cups/testcups.c
cups/testhttp.c
cups/testipp.c
cups/usersys.c
cups/util.c
doc/help/ref-cups-files-conf.html.in
doc/help/ref-cupsd-conf.html.in
doc/ru/index.html.in [new file with mode: 0644]
filter/Makefile
locale/cups.pot
locale/cups.strings
locale/cups_ca.po
locale/cups_es.po
locale/cups_fr.po
locale/cups_ja.po
locale/cups_ru.po [new file with mode: 0644]
monitor/Makefile
ppdc/Makefile
scheduler/Makefile
scheduler/client.c
scheduler/conf.c
scheduler/cupsd.h
scheduler/file.c
scheduler/ipp.c
scheduler/job.c
scheduler/log.c
scheduler/main.c
scheduler/printers.c
scheduler/process.c
scheduler/testlpd.c
scheduler/tls-darwin.c
templates/ru/Makefile [new file with mode: 0644]
templates/ru/add-class.tmpl [new file with mode: 0644]
templates/ru/add-printer.tmpl [new file with mode: 0644]
templates/ru/add-rss-subscription.tmpl [new file with mode: 0644]
templates/ru/admin.tmpl [new file with mode: 0644]
templates/ru/choose-device.tmpl [new file with mode: 0644]
templates/ru/choose-make.tmpl [new file with mode: 0644]
templates/ru/choose-model.tmpl [new file with mode: 0644]
templates/ru/choose-serial.tmpl [new file with mode: 0644]
templates/ru/choose-uri.tmpl [new file with mode: 0644]
templates/ru/class-added.tmpl [new file with mode: 0644]
templates/ru/class-confirm.tmpl [new file with mode: 0644]
templates/ru/class-deleted.tmpl [new file with mode: 0644]
templates/ru/class-jobs-header.tmpl [new file with mode: 0644]
templates/ru/class-modified.tmpl [new file with mode: 0644]
templates/ru/class.tmpl [new file with mode: 0644]
templates/ru/classes-header.tmpl [new file with mode: 0644]
templates/ru/classes.tmpl [new file with mode: 0644]
templates/ru/command.tmpl [new file with mode: 0644]
templates/ru/edit-config.tmpl [new file with mode: 0644]
templates/ru/error-op.tmpl [new file with mode: 0644]
templates/ru/error.tmpl [new file with mode: 0644]
templates/ru/header.tmpl.in [new file with mode: 0644]
templates/ru/help-header.tmpl [new file with mode: 0644]
templates/ru/help-printable.tmpl [new file with mode: 0644]
templates/ru/help-trailer.tmpl [new file with mode: 0644]
templates/ru/job-cancel.tmpl [new file with mode: 0644]
templates/ru/job-hold.tmpl [new file with mode: 0644]
templates/ru/job-move.tmpl [new file with mode: 0644]
templates/ru/job-moved.tmpl [new file with mode: 0644]
templates/ru/job-release.tmpl [new file with mode: 0644]
templates/ru/job-restart.tmpl [new file with mode: 0644]
templates/ru/jobs-header.tmpl [new file with mode: 0644]
templates/ru/jobs.tmpl [new file with mode: 0644]
templates/ru/list-available-printers.tmpl [new file with mode: 0644]
templates/ru/modify-class.tmpl [new file with mode: 0644]
templates/ru/modify-printer.tmpl [new file with mode: 0644]
templates/ru/norestart.tmpl [new file with mode: 0644]
templates/ru/option-boolean.tmpl [new file with mode: 0644]
templates/ru/option-conflict.tmpl [new file with mode: 0644]
templates/ru/option-header.tmpl [new file with mode: 0644]
templates/ru/option-pickmany.tmpl [new file with mode: 0644]
templates/ru/option-pickone.tmpl [new file with mode: 0644]
templates/ru/option-trailer.tmpl [new file with mode: 0644]
templates/ru/pager.tmpl [new file with mode: 0644]
templates/ru/printer-accept.tmpl [new file with mode: 0644]
templates/ru/printer-added.tmpl [new file with mode: 0644]
templates/ru/printer-configured.tmpl [new file with mode: 0644]
templates/ru/printer-confirm.tmpl [new file with mode: 0644]
templates/ru/printer-default.tmpl [new file with mode: 0644]
templates/ru/printer-deleted.tmpl [new file with mode: 0644]
templates/ru/printer-jobs-header.tmpl [new file with mode: 0644]
templates/ru/printer-modified.tmpl [new file with mode: 0644]
templates/ru/printer-purge.tmpl [new file with mode: 0644]
templates/ru/printer-reject.tmpl [new file with mode: 0644]
templates/ru/printer-start.tmpl [new file with mode: 0644]
templates/ru/printer-stop.tmpl [new file with mode: 0644]
templates/ru/printer.tmpl [new file with mode: 0644]
templates/ru/printers-header.tmpl [new file with mode: 0644]
templates/ru/printers.tmpl [new file with mode: 0644]
templates/ru/restart.tmpl [new file with mode: 0644]
templates/ru/samba-export.tmpl [new file with mode: 0644]
templates/ru/samba-exported.tmpl [new file with mode: 0644]
templates/ru/search.tmpl [new file with mode: 0644]
templates/ru/set-printer-options-header.tmpl [new file with mode: 0644]
templates/ru/set-printer-options-trailer.tmpl [new file with mode: 0644]
templates/ru/subscription-added.tmpl [new file with mode: 0644]
templates/ru/subscription-canceled.tmpl [new file with mode: 0644]
templates/ru/test-page.tmpl [new file with mode: 0644]
templates/ru/trailer.tmpl [new file with mode: 0644]
templates/ru/users.tmpl [new file with mode: 0644]
test/run-stp-tests.sh
xcode/config.h

index c679ce737c8565bce95754fcaadeb0cc98df3a8d..f0794e2b68130f1416d76448d3a0540aea33e848 100644 (file)
@@ -10,8 +10,11 @@ CHANGES IN CUPS V1.6.2
          through the CUPS web interface or APIs (STR #4223)
        - Added a Czech localization (STR #4201)
        - Added a French localization (STR #4247)
-       - Added a Russian localization (STR #4228)
+       - Added a Russian localization (STR #4228, STR #4285)
        - Updated the Catalan localization (STR #4202)
+       - Added USB quirk rule for Epson Stylus Photo 750 (STR #4286)
+       - The IPP backend could crash if the printer disconnects early
+         (STR #4284)
        - cupsGetPPD did not work with statically-configured CUPS shared
          queues (STR #4178)
        - The scheduler did not support long MIME media types (STR #4270)
index 3f46641592cbc15e894f40c430f043faa4f25ec8..40b67344c9e5b0aa9598a37b63f7d90ed229f232 100644 (file)
@@ -1,11 +1,17 @@
-CHANGES.txt - 1.7b1 - 2012-11-15
+CHANGES.txt - 1.7b1 - 2013-01-30
 --------------------------------
 
 CHANGES IN CUPS V1.7b1
 
+       - Added a new "-x" option to the cancel command (STR #4103)
+       - Added new ippCreateRequestedArray API for generating a array of
+         attributes from the requested-attributes attribute.
+       - The ipptool utility now supports compression, conditional tests based
+         on the presence of files, and new DEFINE predicates for STATUS.
        - Added new IPP APIs for checking values (STR #4167)
        - Added new IPP APis for adding and setting formatted strings.
        - Added new HTTP APIs to support basic server functionality via libcups.
+       - The dnssd backend now generates a 1284 device ID as needed (STR #3702)
        - CUPS now supports compressing and decompressing streamed data
          (STR #4168)
        - CUPS now supports higher-level PIN printing, external accounting
index 8eed330676e315f480336722551f61745641e83a..c9f7305b90ed6f696638ce330a4a13c03c8d20a1 100644 (file)
@@ -2042,7 +2042,8 @@ main(int  argc,                           /* I - Number of command-line args */
   */
 
   if (have_supplies &&
-      !backendSNMPSupplies(snmp_fd, http->hostaddr, &page_count, NULL) &&
+      !backendSNMPSupplies(snmp_fd, &(http->addrlist->addr), &page_count,
+                           NULL) &&
       page_count > start_count)
     fprintf(stderr, "PAGE: total %d\n", page_count - start_count);
 
index 33f1fb6480d42e43dfe090120f4d71abeff46ec0..509bb89f0082a4ee8372cb6d1557ec768846d20c 100644 (file)
@@ -1,7 +1,7 @@
 /*
 * "$Id: usb-darwin.c 7953 2008-09-17 01:43:19Z mike $"
 *
-* Copyright 2005-2012 Apple Inc. All rights reserved.
+* Copyright 2005-2013 Apple Inc. All rights reserved.
 *
 * IMPORTANT:  This Apple software is supplied to you by Apple Computer,
 * Inc. ("Apple") in consideration of your agreement to the following
@@ -1132,7 +1132,7 @@ static void iterate_printers(iterator_callback_t callBack,
     CFRelease(usb_klass);
     CFRelease(usb_subklass);
 
-    kr = IOServiceAddMatchingNotification(addNotification, kIOMatchedNotification, usbPrinterMatchDictionary, &device_added, &reference, &addIterator);
+    IOServiceAddMatchingNotification(addNotification, kIOMatchedNotification, usbPrinterMatchDictionary, &device_added, &reference, &addIterator);
     if (addIterator != 0x0)
     {
       device_added (&reference, addIterator);
@@ -1171,7 +1171,7 @@ static void device_added(void *userdata,
 
   /* One last call to the call back now that we are not longer have printers left to iterate...
    */
-  if (reference->keepRunning)
+  if (reference->keepRunning && reference->callback)
     reference->keepRunning = reference->callback(reference->userdata, 0x0);
 
   if (!reference->keepRunning)
@@ -1719,7 +1719,7 @@ static void copy_devicestring(io_service_t usbInterface,
        kr = load_classdriver(NULL, interface, &klassDriver);
 
       if (kr == kIOReturnSuccess && klassDriver != NULL)
-         kr = copy_deviceid(klassDriver, deviceID);
+         copy_deviceid(klassDriver, deviceID);
 
       unload_classdriver(&klassDriver);
 
index ca9e1a87be31e9c5ffe58f59deb9224f5713aebd..44e71e7b77325e9d67807b2d21b403d776b21a64 100644 (file)
@@ -170,6 +170,8 @@ static const struct quirk_printer_struct quirk_printers[] = {
                                     https://bugs.launchpad.net/bugs/872483 */
        { 0x06bc, 0x01c7, USBLP_QUIRK_NO_REATTACH }, /* Oki Data Corp. B410d,
                                     https://bugs.launchpad.net/bugs/872483 */
+       { 0x04b8, 0x0001, USBLP_QUIRK_BIDIR }, /* Seiko Epson Corp. Stylus Color 740 / Photo 750,
+                                    http://bugs.debian.org/697970 */
        { 0x04b8, 0x0202, USBLP_QUIRK_BAD_CLASS }, /* Seiko Epson Receipt
                                                      Printer M129C */
        { 0x067b, 0x2305, USBLP_QUIRK_BIDIR |
index e9c682c02a672dc1fdeb4e3976bba12fb3972540..6dac2bb5038cfb4ec8bded10f9f9027dcd0b93ba 100644 (file)
@@ -120,6 +120,7 @@ install-exec:
                $(INSTALL_DIR) $(SYMROOT); \
                for file in $(CGIS); do \
                        cp $$file $(SYMROOT); \
+                       dsymutil $(SYMROOT)/$$file; \
                done \
        fi
 
index 75fb844521dad49d3c00ae08eb3b604f0a44e2e2..7424f7a4d122e4844cbb8f9861bec23227154492 100644 (file)
@@ -554,7 +554,7 @@ cgiPrintCommand(http_t     *http,   /* I - Connection to server */
   ipp_t                *request,               /* Get-Job-Attributes request */
                *response;              /* Get-Job-Attributes response */
   ipp_attribute_t *attr;               /* Current job attribute */
-  static const char const *job_attrs[] =/* Job attributes we want */
+  static const char * const job_attrs[] =/* Job attributes we want */
                {
                  "job-state",
                  "job-printer-state-message"
index af22e1d005c3bd2875901652785af851e795f172..f8dbf4199a8e4741e2596338b74d5e7bb735392c 100644 (file)
 #undef HAVE_CRYPT_H
 
 
-/*
- * Do we have <scsi/sg.h>?
- */
-
-#undef HAVE_SCSI_SG_H
-
-
 /*
  * Use <stdint.h>?
  */
 #undef HAVE_SECURETRANSPORTPRIV_H
 
 
-/*
- * Do we have the SecCertificateCopyData function?
- */
-
-#undef HAVE_SECCERTIFICATECOPYDATA
-
-
-/*
- * Do we have the SecIdentitySearchCreateWithPolicy function?
- */
-
-#undef HAVE_SECIDENTITYSEARCHCREATEWITHPOLICY
-
-
-/*
- * Do we have the SecPolicyCreateSSL function?
- */
-
-#undef HAVE_SECPOLICYCREATESSL
-
-
-/*
- * Do we have the SecPolicyCreateSSL function?
- */
-
-#undef HAVE_SECPOLICYCREATESSL
-
-
 /*
  * Do we have the cssmErrorString function?
  */
index e575f68dd9a15a5d58abc7657576f18ed9b611be..5dd28e5af067b78998da8141b68ed36fda804d31 100644 (file)
@@ -68,6 +68,7 @@ AC_OUTPUT(Makedefs
          cups-config
          data/testprint
          desktop/cups.desktop
+         doc/help/ref-cups-files-conf.html
          doc/help/ref-cupsd-conf.html
          doc/help/standard.html
          doc/index.html
index 8bab2d405140cf421cec7978096394ed9967fc5d..063e194a5cec8a30082b6e069ec234f6c8cdc5a7 100644 (file)
@@ -3,7 +3,7 @@
 #
 #   API library Makefile for CUPS.
 #
-#   Copyright 2007-2012 by Apple Inc.
+#   Copyright 2007-2013 by Apple Inc.
 #   Copyright 1997-2006 by Easy Software Products, all rights reserved.
 #
 #   These coded instructions, statements, and computer programs are the
 
 include ../Makedefs
 
+
+#
+# Options to build libcups without the use of deprecated APIs...
+#
+
+OPTIONS        =       -D_CUPS_NO_DEPRECATED=1 -D_PPD_DEPRECATED=""
+
+
 #
 # Object files...
 #
index 3fb6ac5a44da2b5e01d3fb90ca2807ba082c448a..8b5a5302024a47837d949288468de7cc5ae4efa3 100644 (file)
@@ -3,7 +3,7 @@
  *
  *   Administration utility API definitions for CUPS.
  *
- *   Copyright 2007-2012 by Apple Inc.
+ *   Copyright 2007-2013 by Apple Inc.
  *   Copyright 2001-2007 by Easy Software Products.
  *
  *   These coded instructions, statements, and computer programs are the
@@ -129,7 +129,7 @@ cupsAdminCreateWindowsPPD(
   * Get the supported banner pages, etc. for the printer...
   */
 
-  request = ippNewRequest(IPP_GET_PRINTER_ATTRIBUTES);
+  request = ippNewRequest(IPP_OP_GET_PRINTER_ATTRIBUTES);
 
   httpAssembleURIf(HTTP_URI_CODING_ALL, uri, sizeof(uri), "ipp", NULL,
                    "localhost", 0, "/printers/%s", dest);
@@ -145,7 +145,7 @@ cupsAdminCreateWindowsPPD(
   */
 
   response = cupsDoRequest(http, request, "/");
-  if (!response || cupsLastError() > IPP_OK_CONFLICT)
+  if (!response || cupsLastError() > IPP_STATUS_OK_CONFLICTING)
   {
     unlink(src);
     return (NULL);
@@ -253,7 +253,7 @@ cupsAdminCreateWindowsPPD(
         snprintf(line, sizeof(line),
                 _cupsLangString(language, _("Missing value on line %d.")),
                 linenum);
-        _cupsSetError(IPP_DOCUMENT_FORMAT_ERROR, line, 0);
+        _cupsSetError(IPP_STATUS_ERROR_DOCUMENT_FORMAT_ERROR, line, 0);
 
         cupsFileClose(srcfp);
         cupsFileClose(dstfp);
@@ -272,7 +272,7 @@ cupsAdminCreateWindowsPPD(
                 _cupsLangString(language,
                                 _("Missing double quote on line %d.")),
                 linenum);
-        _cupsSetError(IPP_DOCUMENT_FORMAT_ERROR, line, 0);
+        _cupsSetError(IPP_STATUS_ERROR_DOCUMENT_FORMAT_ERROR, line, 0);
 
         cupsFileClose(srcfp);
         cupsFileClose(dstfp);
@@ -291,7 +291,7 @@ cupsAdminCreateWindowsPPD(
                 _cupsLangString(language,
                                 _("Bad option + choice on line %d.")),
                 linenum);
-        _cupsSetError(IPP_DOCUMENT_FORMAT_ERROR, line, 0);
+        _cupsSetError(IPP_STATUS_ERROR_DOCUMENT_FORMAT_ERROR, line, 0);
 
         cupsFileClose(srcfp);
         cupsFileClose(dstfp);
@@ -334,7 +334,7 @@ cupsAdminCreateWindowsPPD(
 
   if (linenum == 0)
   {
-    _cupsSetError(IPP_DOCUMENT_FORMAT_ERROR, _("Empty PPD file."), 1);
+    _cupsSetError(IPP_STATUS_ERROR_DOCUMENT_FORMAT_ERROR, _("Empty PPD file."), 1);
 
     cupsFileClose(dstfp);
     unlink(buffer);
@@ -424,7 +424,7 @@ cupsAdminExportSamba(
 
   if (!dest || !ppd || !samba_server || !samba_user || !samba_password)
   {
-    _cupsSetError(IPP_INTERNAL_ERROR, strerror(EINVAL), 0);
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(EINVAL), 0);
     return (0);
   }
 
@@ -434,7 +434,7 @@ cupsAdminExportSamba(
 
   if ((fp = cupsTempFile2(authfile, sizeof(authfile))) == NULL)
   {
-    _cupsSetError(IPP_INTERNAL_ERROR, NULL, 0);
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, NULL, 0);
     return (0);
   }
 
@@ -487,7 +487,7 @@ cupsAdminExportSamba(
                               _("Unable to copy Windows 2000 printer "
                                 "driver files (%d).")), status);
 
-      _cupsSetError(IPP_INTERNAL_ERROR, message, 0);
+      _cupsSetError(IPP_STATUS_ERROR_INTERNAL, message, 0);
 
       if (logfile)
        _cupsLangPuts(logfile, message);
@@ -522,7 +522,7 @@ cupsAdminExportSamba(
                                 _("Unable to copy CUPS printer driver "
                                   "files (%d).")), status);
 
-       _cupsSetError(IPP_INTERNAL_ERROR, message, 0);
+       _cupsSetError(IPP_STATUS_ERROR_INTERNAL, message, 0);
 
        if (logfile)
          _cupsLangPuts(logfile, message);
@@ -565,7 +565,7 @@ cupsAdminExportSamba(
                               _("Unable to install Windows 2000 printer "
                                 "driver files (%d).")), status);
 
-      _cupsSetError(IPP_INTERNAL_ERROR, message, 0);
+      _cupsSetError(IPP_STATUS_ERROR_INTERNAL, message, 0);
 
       if (logfile)
        _cupsLangPuts(logfile, message);
@@ -610,7 +610,7 @@ cupsAdminExportSamba(
                               _("Unable to copy Windows 9x printer "
                                 "driver files (%d).")), status);
 
-      _cupsSetError(IPP_INTERNAL_ERROR, message, 0);
+      _cupsSetError(IPP_STATUS_ERROR_INTERNAL, message, 0);
 
       if (logfile)
        _cupsLangPuts(logfile, message);
@@ -639,7 +639,7 @@ cupsAdminExportSamba(
                               _("Unable to install Windows 9x printer "
                                 "driver files (%d).")), status);
 
-      _cupsSetError(IPP_INTERNAL_ERROR, message, 0);
+      _cupsSetError(IPP_STATUS_ERROR_INTERNAL, message, 0);
 
       if (logfile)
        _cupsLangPuts(logfile, message);
@@ -691,7 +691,7 @@ cupsAdminExportSamba(
                               _("Unable to copy 64-bit Windows printer "
                                 "driver files (%d).")), status);
 
-      _cupsSetError(IPP_INTERNAL_ERROR, message, 0);
+      _cupsSetError(IPP_STATUS_ERROR_INTERNAL, message, 0);
 
       if (logfile)
        _cupsLangPuts(logfile, message);
@@ -726,7 +726,7 @@ cupsAdminExportSamba(
                                 _("Unable to copy 64-bit CUPS printer driver "
                                   "files (%d).")), status);
 
-       _cupsSetError(IPP_INTERNAL_ERROR, message, 0);
+       _cupsSetError(IPP_STATUS_ERROR_INTERNAL, message, 0);
 
        if (logfile)
          _cupsLangPuts(logfile, message);
@@ -769,7 +769,7 @@ cupsAdminExportSamba(
                               _("Unable to install Windows 2000 printer "
                                 "driver files (%d).")), status);
 
-      _cupsSetError(IPP_INTERNAL_ERROR, message, 0);
+      _cupsSetError(IPP_STATUS_ERROR_INTERNAL, message, 0);
 
       if (logfile)
        _cupsLangPuts(logfile, message);
@@ -794,13 +794,13 @@ cupsAdminExportSamba(
                                "are installed.")),
               sizeof(message));
 
-    _cupsSetError(IPP_NOT_FOUND, message, 0);
+    _cupsSetError(IPP_STATUS_ERROR_NOT_FOUND, message, 0);
     _cupsLangPuts(logfile, message);
   }
 
   if (have_drivers == 0)
   {
-    _cupsSetError(IPP_NOT_FOUND, message, 0);
+    _cupsSetError(IPP_STATUS_ERROR_NOT_FOUND, message, 0);
 
     unlink(authfile);
 
@@ -821,7 +821,7 @@ cupsAdminExportSamba(
                             _("Unable to set Windows printer driver (%d).")),
                             status);
 
-    _cupsSetError(IPP_INTERNAL_ERROR, message, 0);
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, message, 0);
 
     if (logfile)
       _cupsLangPuts(logfile, message);
@@ -884,7 +884,7 @@ cupsAdminGetServerSettings(
       if (strcmp(cg->http->hostname, cg->server) ||
           cg->ipp_port != httpAddrPort(cg->http->hostaddr) ||
          (cg->http->encryption != cg->encryption &&
-          cg->http->encryption == HTTP_ENCRYPT_NEVER))
+          cg->http->encryption == HTTP_ENCRYPTION_NEVER))
       {
        /*
        * Need to close the current connection because something has changed...
@@ -905,9 +905,9 @@ cupsAdminGetServerSettings(
                                    cupsEncryption(), 1, 0, NULL)) == NULL)
       {
        if (errno)
-         _cupsSetError(IPP_SERVICE_UNAVAILABLE, NULL, 0);
+         _cupsSetError(IPP_STATUS_ERROR_SERVICE_UNAVAILABLE, NULL, 0);
        else
-         _cupsSetError(IPP_SERVICE_UNAVAILABLE,
+         _cupsSetError(IPP_STATUS_ERROR_SERVICE_UNAVAILABLE,
                        _("Unable to connect to host."), 1);
 
        if (num_settings)
@@ -925,7 +925,7 @@ cupsAdminGetServerSettings(
 
   if (!http || !num_settings || !settings)
   {
-    _cupsSetError(IPP_INTERNAL_ERROR, strerror(EINVAL), 0);
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(EINVAL), 0);
 
     if (num_settings)
       *num_settings = 0;
@@ -944,7 +944,7 @@ cupsAdminGetServerSettings(
   */
 
   if ((status = get_cupsd_conf(http, cg, cg->cupsd_update, cupsdconf,
-                               sizeof(cupsdconf), &remote)) == HTTP_OK)
+                               sizeof(cupsdconf), &remote)) == HTTP_STATUS_OK)
   {
     if ((cupsd = cupsFileOpen(cupsdconf, "r")) == NULL)
     {
@@ -954,7 +954,7 @@ cupsAdminGetServerSettings(
       snprintf(message, sizeof(message),
                _cupsLangString(cupsLangDefault(), _("Open of %s failed: %s")),
                cupsdconf, strerror(errno));
-      _cupsSetError(IPP_INTERNAL_ERROR, message, 0);
+      _cupsSetError(IPP_STATUS_ERROR_INTERNAL, message, 0);
     }
   }
   else
@@ -1136,7 +1136,7 @@ cupsAdminGetServerSettings(
                                           cg->cupsd_num_settings,
                                           &(cg->cupsd_settings));
   }
-  else if (status != HTTP_NOT_MODIFIED)
+  else if (status != HTTP_STATUS_NOT_MODIFIED)
     invalidate_cupsd_cache(cg);
 
  /*
@@ -1220,7 +1220,7 @@ cupsAdminSetServerSettings(
 
   if (!http || !num_settings || !settings)
   {
-    _cupsSetError(IPP_INTERNAL_ERROR, strerror(EINVAL), 0);
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(EINVAL), 0);
 
     return (0);
   }
@@ -1230,11 +1230,11 @@ cupsAdminSetServerSettings(
   */
 
   if (get_cupsd_conf(http, cg, 0, cupsdconf, sizeof(cupsdconf),
-                     &remote) == HTTP_OK)
+                     &remote) == HTTP_STATUS_OK)
   {
     if ((cupsd = cupsFileOpen(cupsdconf, "r")) == NULL)
     {
-      _cupsSetError(IPP_INTERNAL_ERROR, NULL, 0);
+      _cupsSetError(IPP_STATUS_ERROR_INTERNAL, NULL, 0);
       return (0);
     }
   }
@@ -1398,7 +1398,7 @@ cupsAdminSetServerSettings(
     if (remote)
       unlink(cupsdconf);
 
-    _cupsSetError(IPP_INTERNAL_ERROR, NULL, 0);
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, NULL, 0);
     return (0);
   }
 
@@ -1954,7 +1954,7 @@ cupsAdminSetServerSettings(
 
   status = cupsPutFile(http, "/admin/conf/cupsd.conf", tempfile);
 
-  if (status == HTTP_CREATED)
+  if (status == HTTP_STATUS_CREATED)
   {
    /*
     * Updated OK, add the basic settings...
@@ -2024,7 +2024,7 @@ cupsAdminSetServerSettings(
 
   unlink(tempfile);
 
-  return (status == HTTP_CREATED);
+  return (status == HTTP_STATUS_CREATED);
 }
 
 
@@ -2158,16 +2158,16 @@ get_cupsd_conf(
       snprintf(message, sizeof(message),
                _cupsLangString(cupsLangDefault(), _("stat of %s failed: %s")),
                name, strerror(errno));
-      _cupsSetError(IPP_INTERNAL_ERROR, message, 0);
+      _cupsSetError(IPP_STATUS_ERROR_INTERNAL, message, 0);
 
       *name = '\0';
 
-      return (HTTP_SERVER_ERROR);
+      return (HTTP_STATUS_SERVER_ERROR);
     }
     else if (last_update && info.st_mtime <= last_update)
-      status = HTTP_NOT_MODIFIED;
+      status = HTTP_STATUS_NOT_MODIFIED;
     else
-      status = HTTP_OK;
+      status = HTTP_STATUS_OK;
   }
   else
 #endif /* !WIN32 */
@@ -2180,11 +2180,11 @@ get_cupsd_conf(
     {
       *name = '\0';
 
-      _cupsSetError(IPP_INTERNAL_ERROR, NULL, 0);
+      _cupsSetError(IPP_STATUS_ERROR_INTERNAL, NULL, 0);
 
       invalidate_cupsd_cache(cg);
 
-      return (HTTP_SERVER_ERROR);
+      return (HTTP_STATUS_SERVER_ERROR);
     }
 
     *remote = 1;
@@ -2199,7 +2199,7 @@ get_cupsd_conf(
 
     close(fd);
 
-    if (status != HTTP_OK)
+    if (status != HTTP_STATUS_OK)
     {
       unlink(name);
       *name = '\0';
index fab0db3478610c3cb8627b849b73c131d085eb55..bcbfef25089eb5007694b61f45896c833310eb79 100644 (file)
@@ -3,7 +3,7 @@
  *
  *   Authentication functions for CUPS.
  *
- *   Copyright 2007-2012 by Apple Inc.
+ *   Copyright 2007-2013 by Apple Inc.
  *   Copyright 1997-2007 by Easy Software Products.
  *
  *   This file contains Kerberos support code, copyright 2006 by
@@ -112,7 +112,7 @@ static int  cups_local_auth(http_t *http);
 /*
  * 'cupsDoAuthentication()' - Authenticate a request.
  *
- * This function should be called in response to a @code HTTP_UNAUTHORIZED@
+ * This function should be called in response to a @code HTTP_STATUS_UNAUTHORIZED@
  * status, prior to resubmitting your request.
  *
  * @since CUPS 1.1.20/OS X 10.4@
@@ -164,14 +164,14 @@ cupsDoAuthentication(
       DEBUG_printf(("2cupsDoAuthentication: authstring=\"%s\"",
                     http->authstring));
 
-      if (http->status == HTTP_UNAUTHORIZED)
+      if (http->status == HTTP_STATUS_UNAUTHORIZED)
        http->digest_tries ++;
 
       return (0);
     }
     else if (localauth == -1)
     {
-      http->status = HTTP_AUTHORIZATION_CANCELED;
+      http->status = HTTP_STATUS_CUPS_AUTHORIZATION_CANCELED;
       return (-1);                     /* Error or canceled */
     }
   }
@@ -212,22 +212,22 @@ cupsDoAuthentication(
 
     if ((password = cupsGetPassword2(prompt, http, method, resource)) == NULL)
     {
-      http->status = HTTP_AUTHORIZATION_CANCELED;
+      http->status = HTTP_STATUS_CUPS_AUTHORIZATION_CANCELED;
       return (-1);
     }
 
     snprintf(http->userpass, sizeof(http->userpass), "%s:%s", cupsUser(),
              password);
   }
-  else if (http->status == HTTP_UNAUTHORIZED)
+  else if (http->status == HTTP_STATUS_UNAUTHORIZED)
     http->digest_tries ++;
 
-  if (http->status == HTTP_UNAUTHORIZED && http->digest_tries >= 3)
+  if (http->status == HTTP_STATUS_UNAUTHORIZED && http->digest_tries >= 3)
   {
     DEBUG_printf(("1cupsDoAuthentication: Too many authentication tries (%d)",
                  http->digest_tries));
 
-    http->status = HTTP_AUTHORIZATION_CANCELED;
+    http->status = HTTP_STATUS_CUPS_AUTHORIZATION_CANCELED;
     return (-1);
   }
 
@@ -244,7 +244,7 @@ cupsDoAuthentication(
 
     if (_cupsSetNegotiateAuthString(http, method, resource))
     {
-      http->status = HTTP_AUTHORIZATION_CANCELED;
+      http->status = HTTP_STATUS_CUPS_AUTHORIZATION_CANCELED;
       return (-1);
     }
   }
@@ -287,7 +287,7 @@ cupsDoAuthentication(
   {
     DEBUG_printf(("1cupsDoAuthentication: Unknown auth type: \"%s\"",
                   www_auth));
-    http->status = HTTP_AUTHORIZATION_CANCELED;
+    http->status = HTTP_STATUS_CUPS_AUTHORIZATION_CANCELED;
     return (-1);
   }
 
index c9a0d797fa727493a80d8308c6b12361f1bdbd68..9131b3ca43c156b7891b60f2fbc9ebdc8b218f54 100644 (file)
@@ -3,7 +3,7 @@
  *
  *   Destination job support for CUPS.
  *
- *   Copyright 2012 by Apple Inc.
+ *   Copyright 2012-2013 by Apple Inc.
  *
  *   These coded instructions, statements, and computer programs are the
  *   property of Apple Inc. and are protected by Federal copyright
@@ -34,7 +34,7 @@
  *
  * The "job_id" is the number returned by cupsCreateDestJob.
  *
- * Returns IPP_OK on success and IPP_NOT_AUTHORIZED or IPP_FORBIDDEN on
+ * Returns IPP_STATUS_OK on success and IPP_NOT_AUTHORIZED or IPP_FORBIDDEN on
  * failure.
  *
  * @since CUPS 1.6/OS X 10.8@
@@ -45,7 +45,7 @@ cupsCancelDestJob(http_t      *http,  /* I - Connection to destination */
                   cups_dest_t *dest,   /* I - Destination */
                   int         job_id)  /* I - Job ID */
 {
-  return (IPP_NOT_FOUND);
+  return (IPP_STATUS_ERROR_NOT_FOUND);
 }
 
 
@@ -53,7 +53,7 @@ cupsCancelDestJob(http_t      *http,  /* I - Connection to destination */
  * 'cupsCloseDestJob()' - Close a job and start printing.
  *
  * Use when the last call to cupsStartDocument passed 0 for "last_document".
- * "job_id" is the job ID returned by cupsCreateDestJob. Returns @code IPP_OK@
+ * "job_id" is the job ID returned by cupsCreateDestJob. Returns @code IPP_STATUS_OK@
  * on success.
  *
  * @since CUPS 1.6/OS X 10.8@
@@ -81,9 +81,9 @@ cupsCloseDestJob(
 
   if (!http || !dest || !info || job_id <= 0)
   {
-    _cupsSetError(IPP_INTERNAL_ERROR, strerror(EINVAL), 0);
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(EINVAL), 0);
     DEBUG_puts("1cupsCloseDestJob: Bad arguments.");
-    return (IPP_INTERNAL_ERROR);
+    return (IPP_STATUS_ERROR_INTERNAL);
   }
 
  /*
@@ -94,22 +94,22 @@ cupsCloseDestJob(
                                IPP_TAG_ENUM)) != NULL)
   {
     for (i = 0; i < attr->num_values; i ++)
-      if (attr->values[i].integer == IPP_CLOSE_JOB)
+      if (attr->values[i].integer == IPP_OP_CLOSE_JOB)
       {
-        request = ippNewRequest(IPP_CLOSE_JOB);
+        request = ippNewRequest(IPP_OP_CLOSE_JOB);
         break;
       }
   }
 
   if (!request)
-    request = ippNewRequest(IPP_SEND_DOCUMENT);
+    request = ippNewRequest(IPP_OP_SEND_DOCUMENT);
 
   if (!request)
   {
-    _cupsSetError(IPP_INTERNAL_ERROR, strerror(ENOMEM), 0);
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(ENOMEM), 0);
     DEBUG_puts("1cupsCloseDestJob: Unable to create Close-Job/Send-Document "
                "request.");
-    return (IPP_INTERNAL_ERROR);
+    return (IPP_STATUS_ERROR_INTERNAL);
   }
 
   ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
@@ -118,7 +118,7 @@ cupsCloseDestJob(
                 job_id);
   ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "requesting-user-name",
                NULL, cupsUser());
-  if (ippGetOperation(request) == IPP_SEND_DOCUMENT)
+  if (ippGetOperation(request) == IPP_OP_SEND_DOCUMENT)
     ippAddBoolean(request, IPP_TAG_OPERATION, "last-document", 1);
 
  /*
@@ -137,7 +137,7 @@ cupsCloseDestJob(
 /*
  * 'cupsCreateDestJob()' - Create a job on a destination.
  *
- * Returns @code IPP_OK@ or @code IPP_OK_SUBST@ on success, saving the job ID
+ * Returns @code IPP_STATUS_OK@ or @code IPP_STATUS_OK_SUBST@ on success, saving the job ID
  * in the variable pointed to by "job_id".
  *
  * @since CUPS 1.6/OS X 10.8@
@@ -173,20 +173,20 @@ cupsCreateDestJob(
 
   if (!http || !dest || !info || !job_id)
   {
-    _cupsSetError(IPP_INTERNAL_ERROR, strerror(EINVAL), 0);
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(EINVAL), 0);
     DEBUG_puts("1cupsCreateDestJob: Bad arguments.");
-    return (IPP_INTERNAL_ERROR);
+    return (IPP_STATUS_ERROR_INTERNAL);
   }
 
  /*
   * Build a Create-Job request...
   */
 
-  if ((request = ippNewRequest(IPP_CREATE_JOB)) == NULL)
+  if ((request = ippNewRequest(IPP_OP_CREATE_JOB)) == NULL)
   {
-    _cupsSetError(IPP_INTERNAL_ERROR, strerror(ENOMEM), 0);
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(ENOMEM), 0);
     DEBUG_puts("1cupsCreateDestJob: Unable to create Create-Job request.");
-    return (IPP_INTERNAL_ERROR);
+    return (IPP_STATUS_ERROR_INTERNAL);
   }
 
   ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
@@ -229,7 +229,7 @@ cupsCreateDestJob(
 /*
  * 'cupsFinishDestDocument()' - Finish the current document.
  *
- * Returns @code IPP_OK@ or @code IPP_OK_SUBST@ on success.
+ * Returns @code IPP_STATUS_OK@ or @code IPP_STATUS_OK_SUBST@ on success.
  *
  * @since CUPS 1.6/OS X 10.8@
  */
@@ -250,9 +250,9 @@ cupsFinishDestDocument(
 
   if (!http || !dest || !info)
   {
-    _cupsSetError(IPP_INTERNAL_ERROR, strerror(EINVAL), 0);
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(EINVAL), 0);
     DEBUG_puts("1cupsFinishDestDocument: Bad arguments.");
-    return (IPP_INTERNAL_ERROR);
+    return (IPP_STATUS_ERROR_INTERNAL);
   }
 
  /*
@@ -310,21 +310,21 @@ cupsStartDestDocument(
 
   if (!http || !dest || !info || job_id <= 0)
   {
-    _cupsSetError(IPP_INTERNAL_ERROR, strerror(EINVAL), 0);
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(EINVAL), 0);
     DEBUG_puts("1cupsStartDestDocument: Bad arguments.");
-    return (HTTP_ERROR);
+    return (HTTP_STATUS_ERROR);
   }
 
  /*
   * Create a Send-Document request...
   */
 
-  if ((request = ippNewRequest(IPP_SEND_DOCUMENT)) == NULL)
+  if ((request = ippNewRequest(IPP_OP_SEND_DOCUMENT)) == NULL)
   {
-    _cupsSetError(IPP_INTERNAL_ERROR, strerror(ENOMEM), 0);
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(ENOMEM), 0);
     DEBUG_puts("1cupsStartDestDocument: Unable to create Send-Document "
                "request.");
-    return (HTTP_ERROR);
+    return (HTTP_STATUS_ERROR);
   }
 
   ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
index fb52a9a69010f67f28ed390bf3bd138a2bb40f32..fefb0f9e20cf1b75fd4bf1875ed112059155fb0f 100644 (file)
@@ -3,7 +3,7 @@
  *
  *   Destination localization support for CUPS.
  *
- *   Copyright 2012 by Apple Inc.
+ *   Copyright 2012-2013 by Apple Inc.
  *
  *   These coded instructions, statements, and computer programs are the
  *   property of Apple Inc. and are protected by Federal copyright
@@ -178,7 +178,7 @@ cups_create_localizations(
   if (httpSeparateURI(HTTP_URI_CODING_ALL, attr->values[0].string.text,
                       scheme, sizeof(scheme), userpass, sizeof(userpass),
                       hostname, sizeof(hostname), &port, resource,
-                      sizeof(resource)) < HTTP_URI_OK)
+                      sizeof(resource)) < HTTP_URI_STATUS_OK)
   {
     DEBUG_printf(("4cups_create_localizations: Bad printer-strings-uri value "
                   "\"%s\".", attr->values[0].string.text));
@@ -203,11 +203,12 @@ cups_create_localizations(
     */
 
     if (!strcmp(scheme, "https"))
-      encryption = HTTP_ENCRYPT_ALWAYS;
+      encryption = HTTP_ENCRYPTION_ALWAYS;
     else
-      encryption = HTTP_ENCRYPT_IF_REQUESTED;
+      encryption = HTTP_ENCRYPTION_IF_REQUESTED;
 
-    if ((http2 = httpConnectEncrypt(hostname, port, encryption)) == NULL)
+    if ((http2 = httpConnect2(hostname, port, NULL, AF_UNSPEC, encryption, 1,
+                              30000, NULL)) == NULL)
     {
       DEBUG_printf(("4cups_create_localizations: Unable to connect to "
                     "%s:%d: %s", hostname, port, cupsLastErrorString()));
@@ -233,7 +234,7 @@ cups_create_localizations(
   DEBUG_printf(("4cups_create_localizations: GET %s = %s", resource,
                 httpStatus(status)));
 
-  if (status == HTTP_OK)
+  if (status == HTTP_STATUS_OK)
   {
    /*
     * Got the file, read it...
index 8477ab30ab8849d1d7f597979629c2a7d1baf4c4..873d2e2cd19c924df3a90a71dce369b7d337c7bf 100644 (file)
@@ -3,7 +3,7 @@
  *
  *   Destination option/media support for CUPS.
  *
- *   Copyright 2012 by Apple Inc.
+ *   Copyright 2012-2013 by Apple Inc.
  *
  *   These coded instructions, statements, and computer programs are the
  *   property of Apple Inc. and are protected by Federal copyright
@@ -620,7 +620,7 @@ cupsCopyDestInfo(
     * Send a Get-Printer-Attributes request...
     */
 
-    request = ippNewRequest(IPP_GET_PRINTER_ATTRIBUTES);
+    request = ippNewRequest(IPP_OP_GET_PRINTER_ATTRIBUTES);
     ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri", NULL,
                 uri);
     ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "requesting-user-name",
@@ -632,7 +632,7 @@ cupsCopyDestInfo(
     response = cupsDoRequest(http, request, resource);
     status   = cupsLastError();
 
-    if (status > IPP_OK_SUBST)
+    if (status > IPP_STATUS_OK_IGNORED_OR_SUBSTITUTED)
     {
       DEBUG_printf(("cupsCopyDestSupported: Get-Printer-Attributes for '%s' "
                    "returned %s (%s)", dest->name, ippErrorString(status),
@@ -641,9 +641,9 @@ cupsCopyDestInfo(
       ippDelete(response);
       response = NULL;
 
-      if (status == IPP_VERSION_NOT_SUPPORTED && version > 11)
+      if (status == IPP_STATUS_ERROR_VERSION_NOT_SUPPORTED && version > 11)
         version = 11;
-      else if (status == IPP_PRINTER_BUSY)
+      else if (status == IPP_STATUS_ERROR_BUSY)
       {
         sleep(delay);
 
@@ -666,7 +666,7 @@ cupsCopyDestInfo(
 
   if ((dinfo = calloc(1, sizeof(cups_dinfo_t))) == NULL)
   {
-    _cupsSetError(IPP_INTERNAL_ERROR, strerror(errno), 0);
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(errno), 0);
     ippDelete(response);
     return (NULL);
   }
@@ -754,7 +754,7 @@ cupsGetDestMediaByName(
 
   if (!http || !dest || !dinfo || !media || !size)
   {
-    _cupsSetError(IPP_INTERNAL_ERROR, strerror(EINVAL), 0);
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(EINVAL), 0);
     return (0);
   }
 
@@ -766,7 +766,7 @@ cupsGetDestMediaByName(
     if ((pwg = _pwgMediaForLegacy(media)) == NULL)
     {
       DEBUG_printf(("1cupsGetDestMediaByName: Unknown size '%s'.", media));
-      _cupsSetError(IPP_INTERNAL_ERROR, _("Unknown media size name."), 1);
+      _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Unknown media size name."), 1);
       return (0);
     }
 
@@ -822,7 +822,7 @@ cupsGetDestMediaBySize(
 
   if (!http || !dest || !dinfo || width <= 0 || length <= 0 || !size)
   {
-    _cupsSetError(IPP_INTERNAL_ERROR, strerror(EINVAL), 0);
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(EINVAL), 0);
     return (0);
   }
 
@@ -834,7 +834,7 @@ cupsGetDestMediaBySize(
   {
     DEBUG_printf(("1cupsGetDestMediaBySize: Invalid size %dx%d.", width,
                   length));
-    _cupsSetError(IPP_INTERNAL_ERROR, _("Invalid media size."), 1);
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Invalid media size."), 1);
     return (0);
   }
 
index 36bcce86cf7df03f4599f112fa8240397f1e9dc5..03ee73c4c1112aef050863d922f17b14b0322a02 100644 (file)
@@ -635,7 +635,7 @@ cupsConnectDest(
     if (resource)
       *resource = '\0';
 
-    _cupsSetError(IPP_INTERNAL_ERROR, strerror(EINVAL), 0);
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(EINVAL), 0);
     return (NULL);
   }
 
@@ -652,7 +652,7 @@ cupsConnectDest(
   if ((uri = cupsGetOption("printer-uri-supported", dest->num_options,
                            dest->options)) == NULL)
   {
-    _cupsSetError(IPP_INTERNAL_ERROR, strerror(ENOENT), 0);
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(ENOENT), 0);
 
     if (cb)
       (*cb)(user_data, CUPS_DEST_FLAGS_UNCONNECTED | CUPS_DEST_FLAGS_ERROR,
@@ -672,9 +672,9 @@ cupsConnectDest(
 
   if (httpSeparateURI(HTTP_URI_CODING_ALL, uri, scheme, sizeof(scheme),
                       userpass, sizeof(userpass), hostname, sizeof(hostname),
-                      &port, resource, resourcesize) < HTTP_URI_OK)
+                      &port, resource, resourcesize) < HTTP_URI_STATUS_OK)
   {
-    _cupsSetError(IPP_INTERNAL_ERROR, _("Bad printer URI."), 1);
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad printer URI."), 1);
 
     if (cb)
       (*cb)(user_data, CUPS_DEST_FLAGS_UNCONNECTED | CUPS_DEST_FLAGS_ERROR,
@@ -718,9 +718,9 @@ cupsConnectDest(
   */
 
   if (!strcmp(scheme, "ipps") || port == 443)
-    encryption = HTTP_ENCRYPT_ALWAYS;
+    encryption = HTTP_ENCRYPTION_ALWAYS;
   else
-    encryption = HTTP_ENCRYPT_IF_REQUESTED;
+    encryption = HTTP_ENCRYPTION_IF_REQUESTED;
 
   http = httpConnect2(hostname, port, addrlist, AF_UNSPEC, encryption, 1, 0,
                       NULL);
@@ -933,7 +933,7 @@ cupsEnumDests(
   * Get the list of local printers and pass them to the callback function...
   */
 
-  num_dests = _cupsGetDests(CUPS_HTTP_DEFAULT, CUPS_GET_PRINTERS, NULL, &dests,
+  num_dests = _cupsGetDests(CUPS_HTTP_DEFAULT, IPP_OP_CUPS_GET_PRINTERS, NULL, &dests,
                             type, mask);
 
   for (i = num_dests, dest = dests;
@@ -1301,7 +1301,7 @@ _cupsGetDestResource(
     if (resource)
       *resource = '\0';
 
-    _cupsSetError(IPP_INTERNAL_ERROR, strerror(EINVAL), 0);
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(EINVAL), 0);
     return (NULL);
   }
 
@@ -1315,7 +1315,7 @@ _cupsGetDestResource(
     if (resource)
       *resource = '\0';
 
-    _cupsSetError(IPP_INTERNAL_ERROR, strerror(ENOENT), 0);
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(ENOENT), 0);
 
     return (NULL);
   }
@@ -1330,9 +1330,9 @@ _cupsGetDestResource(
 
   if (httpSeparateURI(HTTP_URI_CODING_ALL, uri, scheme, sizeof(scheme),
                       userpass, sizeof(userpass), hostname, sizeof(hostname),
-                      &port, resource, resourcesize) < HTTP_URI_OK)
+                      &port, resource, resourcesize) < HTTP_URI_STATUS_OK)
   {
-    _cupsSetError(IPP_INTERNAL_ERROR, _("Bad printer URI."), 1);
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad printer URI."), 1);
 
     return (NULL);
   }
@@ -1344,12 +1344,12 @@ _cupsGetDestResource(
 /*
  * '_cupsGetDests()' - Get destinations from a server.
  *
- * "op" is CUPS_GET_PRINTERS to get a full list, CUPS_GET_DEFAULT to get the
- * system-wide default printer, or IPP_GET_PRINTER_ATTRIBUTES for a known
+ * "op" is IPP_OP_CUPS_GET_PRINTERS to get a full list, IPP_OP_CUPS_GET_DEFAULT to get the
+ * system-wide default printer, or IPP_OP_GET_PRINTER_ATTRIBUTES for a known
  * printer.
  *
  * "name" is the name of an existing printer and is only used when "op" is
- * IPP_GET_PRINTER_ATTRIBUTES.
+ * IPP_OP_GET_PRINTER_ATTRIBUTES.
  *
  * "dest" is initialized to point to the array of destinations.
  *
@@ -1430,13 +1430,13 @@ _cupsGetDests(http_t       *http,       /* I  - Connection to server or
 #endif /* __APPLE__ */
 
  /*
-  * Build a CUPS_GET_PRINTERS or IPP_GET_PRINTER_ATTRIBUTES request, which
+  * Build a IPP_OP_CUPS_GET_PRINTERS or IPP_OP_GET_PRINTER_ATTRIBUTES request, which
   * require the following attributes:
   *
   *    attributes-charset
   *    attributes-natural-language
   *    requesting-user-name
-  *    printer-uri [for IPP_GET_PRINTER_ATTRIBUTES]
+  *    printer-uri [for IPP_OP_GET_PRINTER_ATTRIBUTES]
   */
 
   request = ippNewRequest(op);
@@ -1448,7 +1448,7 @@ _cupsGetDests(http_t       *http, /* I  - Connection to server or
   ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME,
                "requesting-user-name", NULL, cupsUser());
 
-  if (name && op != CUPS_GET_DEFAULT)
+  if (name && op != IPP_OP_CUPS_GET_DEFAULT)
   {
     httpAssembleURIf(HTTP_URI_CODING_ALL, uri, sizeof(uri), "ipp", NULL,
                      "localhost", ippPort(), "/printers/%s", name);
@@ -1681,7 +1681,7 @@ cupsGetDests2(http_t      *http,  /* I - Connection to server or @code CUPS_HTTP_
 
   if (!dests)
   {
-    _cupsSetError(IPP_INTERNAL_ERROR, _("Bad NULL dests pointer"), 1);
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad NULL dests pointer"), 1);
     return (0);
   }
 
@@ -1690,9 +1690,9 @@ cupsGetDests2(http_t      *http,  /* I - Connection to server or @code CUPS_HTTP_
   */
 
   *dests    = (cups_dest_t *)0;
-  num_dests = _cupsGetDests(http, CUPS_GET_PRINTERS, NULL, dests, 0, 0);
+  num_dests = _cupsGetDests(http, IPP_OP_CUPS_GET_PRINTERS, NULL, dests, 0, 0);
 
-  if (cupsLastError() >= IPP_REDIRECTION_OTHER_SITE)
+  if (cupsLastError() >= IPP_STATUS_REDIRECTION_OTHER_SITE)
   {
     cupsFreeDests(num_dests, *dests);
     *dests = (cups_dest_t *)0;
@@ -1813,7 +1813,7 @@ cupsGetDests2(http_t      *http,  /* I - Connection to server or @code CUPS_HTTP_
   */
 
   if (num_dests > 0)
-    _cupsSetError(IPP_OK, NULL, 0);
+    _cupsSetError(IPP_STATUS_OK, NULL, 0);
 
   return (num_dests);
 }
@@ -1850,7 +1850,7 @@ cupsGetNamedDest(http_t     *http,        /* I - Connection to server or @code CUPS_HTT
                defname[256];           /* Default printer name */
   const char   *home = getenv("HOME"); /* Home directory */
   int          set_as_default = 0;     /* Set returned destination as default */
-  ipp_op_t     op = IPP_GET_PRINTER_ATTRIBUTES;
+  ipp_op_t     op = IPP_OP_GET_PRINTER_ATTRIBUTES;
                                        /* IPP operation to get server ops */
   _cups_globals_t *cg = _cupsGlobals();        /* Pointer to library globals */
 
@@ -1904,7 +1904,7 @@ cupsGetNamedDest(http_t     *http,        /* I - Connection to server or @code CUPS_HTT
       * No locally-set default destination, ask the server...
       */
 
-      op = CUPS_GET_DEFAULT;
+      op = IPP_OP_CUPS_GET_DEFAULT;
     }
   }
 
@@ -1914,7 +1914,7 @@ cupsGetNamedDest(http_t     *http,        /* I - Connection to server or @code CUPS_HTT
 
   if (!_cupsGetDests(http, op, name, &dest, 0, 0))
   {
-    if (op == CUPS_GET_DEFAULT || (name && !set_as_default))
+    if (op == IPP_OP_CUPS_GET_DEFAULT || (name && !set_as_default))
       return (NULL);
 
    /*
@@ -1922,7 +1922,7 @@ cupsGetNamedDest(http_t     *http,        /* I - Connection to server or @code CUPS_HTT
     * configuration file does not exist.  Find out the real default.
     */
 
-    if (!_cupsGetDests(http, CUPS_GET_DEFAULT, NULL, &dest, 0, 0))
+    if (!_cupsGetDests(http, IPP_OP_CUPS_GET_DEFAULT, NULL, &dest, 0, 0))
       return (NULL);
   }
 
@@ -2099,9 +2099,9 @@ cupsSetDests2(http_t      *http,  /* I - Connection to server or @code CUPS_HTTP_
   * Get the server destinations...
   */
 
-  num_temps = _cupsGetDests(http, CUPS_GET_PRINTERS, NULL, &temps, 0, 0);
+  num_temps = _cupsGetDests(http, IPP_OP_CUPS_GET_PRINTERS, NULL, &temps, 0, 0);
 
-  if (cupsLastError() >= IPP_REDIRECTION_OTHER_SITE)
+  if (cupsLastError() >= IPP_STATUS_REDIRECTION_OTHER_SITE)
   {
     cupsFreeDests(num_temps, temps);
     return (-1);
@@ -3407,7 +3407,7 @@ cups_dnssd_resolve(
                             _HTTP_RESOLVE_FQDN, cups_dnssd_resolve_cb,
                             &resolve)) == NULL)
   {
-    _cupsSetError(IPP_INTERNAL_ERROR, _("Unable to resolve printer URI."), 1);
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Unable to resolve printer URI."), 1);
 
     if (cb)
       (*cb)(user_data, CUPS_DEST_FLAGS_UNCONNECTED | CUPS_DEST_FLAGS_ERROR,
index 224221c761226e849aa8c97fd15faebc82691d2e..88c7f9bb2bc6959f84e993316ff0f5e747716b94 100644 (file)
@@ -3,7 +3,7 @@
  *
  *   Option encoding routines for CUPS.
  *
- *   Copyright 2007-2012 by Apple Inc.
+ *   Copyright 2007-2013 by Apple Inc.
  *   Copyright 1997-2007 by Easy Software Products.
  *
  *   These coded instructions, statements, and computer programs are the
 
 static const ipp_op_t ipp_job_creation[] =
 {
-  IPP_PRINT_JOB,
-  IPP_PRINT_URI,
-  IPP_CREATE_JOB,
+  IPP_OP_PRINT_JOB,
+  IPP_OP_PRINT_URI,
+  IPP_OP_CREATE_JOB,
   IPP_OP_CUPS_NONE
 };
 
 static const ipp_op_t ipp_doc_creation[] =
 {
-  IPP_PRINT_JOB,
-  IPP_PRINT_URI,
-  IPP_SEND_DOCUMENT,
-  IPP_SEND_URI,
+  IPP_OP_PRINT_JOB,
+  IPP_OP_PRINT_URI,
+  IPP_OP_SEND_DOCUMENT,
+  IPP_OP_SEND_URI,
   IPP_OP_CUPS_NONE
 };
 
 static const ipp_op_t ipp_sub_creation[] =
 {
-  IPP_PRINT_JOB,
-  IPP_PRINT_URI,
-  IPP_CREATE_JOB,
-  IPP_CREATE_PRINTER_SUBSCRIPTION,
-  IPP_CREATE_JOB_SUBSCRIPTION,
+  IPP_OP_PRINT_JOB,
+  IPP_OP_PRINT_URI,
+  IPP_OP_CREATE_JOB,
+  IPP_OP_CREATE_PRINTER_SUBSCRIPTION,
+  IPP_OP_CREATE_JOB_SUBSCRIPTION,
   IPP_OP_CUPS_NONE
 };
 
 static const ipp_op_t ipp_all_print[] =
 {
-  IPP_PRINT_JOB,
-  IPP_PRINT_URI,
-  IPP_CREATE_JOB,
-  IPP_SEND_DOCUMENT,
-  IPP_SEND_URI,
+  IPP_OP_PRINT_JOB,
+  IPP_OP_PRINT_URI,
+  IPP_OP_CREATE_JOB,
+  IPP_OP_SEND_DOCUMENT,
+  IPP_OP_SEND_URI,
   IPP_OP_CUPS_NONE
 };
 
 static const ipp_op_t ipp_all_limit[] =
 {
-  IPP_GET_JOBS,
-  IPP_GET_PRINTER_ATTRIBUTES,
-  CUPS_GET_PRINTERS,
-  CUPS_GET_CLASSES,
-  CUPS_GET_DEVICES,
-  CUPS_GET_PPDS,
+  IPP_OP_GET_JOBS,
+  IPP_OP_GET_PRINTER_ATTRIBUTES,
+  IPP_OP_CUPS_GET_PRINTERS,
+  IPP_OP_CUPS_GET_CLASSES,
+  IPP_OP_CUPS_GET_DEVICES,
+  IPP_OP_CUPS_GET_PPDS,
   IPP_OP_CUPS_NONE
 };
 
 static const ipp_op_t ipp_set_printer[] =
 {
-  IPP_SET_PRINTER_ATTRIBUTES,
-  CUPS_ADD_MODIFY_PRINTER,
-  CUPS_ADD_MODIFY_CLASS,
+  IPP_OP_SET_PRINTER_ATTRIBUTES,
+  IPP_OP_CUPS_ADD_MODIFY_PRINTER,
+  IPP_OP_CUPS_ADD_MODIFY_CLASS,
   IPP_OP_CUPS_NONE
 };
 
 static const ipp_op_t cups_am_class[] =
 {
-  CUPS_ADD_MODIFY_CLASS,
+  IPP_OP_CUPS_ADD_MODIFY_CLASS,
   IPP_OP_CUPS_NONE
 };
 
 static const ipp_op_t cups_am_printer[] =
 {
-  CUPS_ADD_MODIFY_PRINTER,
+  IPP_OP_CUPS_ADD_MODIFY_PRINTER,
   IPP_OP_CUPS_NONE
 };
 
 static const ipp_op_t cups_schemes[] =
 {
-  CUPS_GET_DEVICES,
-  CUPS_GET_PPDS,
+  IPP_OP_CUPS_GET_DEVICES,
+  IPP_OP_CUPS_GET_PPDS,
   IPP_OP_CUPS_NONE
 };
 
 static const ipp_op_t cups_get_ppds[] =
 {
-  CUPS_GET_PPDS,
+  IPP_OP_CUPS_GET_PPDS,
   IPP_OP_CUPS_NONE
 };
 
 static const ipp_op_t cups_ppd_name[] =
 {
-  CUPS_ADD_MODIFY_PRINTER,
-  CUPS_GET_PPD,
+  IPP_OP_CUPS_ADD_MODIFY_PRINTER,
+  IPP_OP_CUPS_GET_PPD,
   IPP_OP_CUPS_NONE
 };
 
@@ -423,8 +423,8 @@ cupsEncodeOptions2(
   op = ippGetOperation(ipp);
 
   if (group_tag == IPP_TAG_OPERATION &&
-      (op == IPP_PRINT_JOB || op == IPP_PRINT_URI ||
-       op == IPP_SEND_DOCUMENT || op == IPP_SEND_URI))
+      (op == IPP_OP_PRINT_JOB || op == IPP_OP_PRINT_URI ||
+       op == IPP_OP_SEND_DOCUMENT || op == IPP_OP_SEND_URI))
   {
    /*
     * Handle the document format stuff first...
index c1f5a294a21db8f689d2434ca176a4e6053e4a0a..0d539785851df02f4d332241c2afc38e07ec156d 100644 (file)
@@ -3,7 +3,7 @@
  *
  *   cupsGetDevices implementation for CUPS.
  *
- *   Copyright 2008-2012 by Apple Inc.
+ *   Copyright 2008-2013 by Apple Inc.
  *
  *   These coded instructions, statements, and computer programs are the
  *   property of Apple Inc. and are protected by Federal copyright
@@ -71,19 +71,19 @@ cupsGetDevices(
                user_data));
 
   if (!callback)
-    return (IPP_INTERNAL_ERROR);
+    return (IPP_STATUS_ERROR_INTERNAL);
 
   if (!http)
     http = _cupsConnect();
 
   if (!http)
-    return (IPP_SERVICE_UNAVAILABLE);
+    return (IPP_STATUS_ERROR_SERVICE_UNAVAILABLE);
 
  /*
   * Create a CUPS-Get-Devices request...
   */
 
-  request = ippNewRequest(CUPS_GET_DEVICES);
+  request = ippNewRequest(IPP_OP_CUPS_GET_DEVICES);
 
   if (timeout > 0)
     ippAddInteger(request, IPP_TAG_OPERATION, IPP_TAG_INTEGER, "timeout",
@@ -115,14 +115,14 @@ cupsGetDevices(
     status = cupsSendRequest(http, request, "/", ippLength(request));
 
     DEBUG_puts("2cupsGetDevices: Waiting for response status...");
-    while (status == HTTP_CONTINUE)
+    while (status == HTTP_STATUS_CONTINUE)
       status = httpUpdate(http);
 
-    if (status != HTTP_OK)
+    if (status != HTTP_STATUS_OK)
     {
       httpFlush(http);
 
-      if (status == HTTP_UNAUTHORIZED)
+      if (status == HTTP_STATUS_UNAUTHORIZED)
       {
        /*
        * See if we can do authentication...
@@ -131,16 +131,16 @@ cupsGetDevices(
        DEBUG_puts("2cupsGetDevices: Need authorization...");
 
        if (!cupsDoAuthentication(http, "POST", "/"))
-         httpReconnect(http);
+         httpReconnect2(http, 30000, NULL);
        else
        {
-         status = HTTP_AUTHORIZATION_CANCELED;
+         status = HTTP_STATUS_CUPS_AUTHORIZATION_CANCELED;
          break;
        }
       }
 
 #ifdef HAVE_SSL
-      else if (status == HTTP_UPGRADE_REQUIRED)
+      else if (status == HTTP_STATUS_UPGRADE_REQUIRED)
       {
        /*
        * Force a reconnect with encryption...
@@ -148,19 +148,20 @@ cupsGetDevices(
 
        DEBUG_puts("2cupsGetDevices: Need encryption...");
 
-       if (!httpReconnect(http))
-         httpEncryption(http, HTTP_ENCRYPT_REQUIRED);
+       if (!httpReconnect2(http, 30000, NULL))
+         httpEncryption(http, HTTP_ENCRYPTION_REQUIRED);
       }
 #endif /* HAVE_SSL */
     }
   }
-  while (status == HTTP_UNAUTHORIZED || status == HTTP_UPGRADE_REQUIRED);
+  while (status == HTTP_STATUS_UNAUTHORIZED ||
+         status == HTTP_STATUS_UPGRADE_REQUIRED);
 
   DEBUG_printf(("2cupsGetDevices: status=%d", status));
 
   ippDelete(request);
 
-  if (status != HTTP_OK)
+  if (status != HTTP_STATUS_OK)
   {
     _cupsSetHTTPError(status);
     return (cupsLastError());
@@ -186,7 +187,7 @@ cupsGetDevices(
 
   do
   {
-    if ((state = ippRead(http, response)) == IPP_ERROR)
+    if ((state = ippRead(http, response)) == IPP_STATE_ERROR)
       break;
 
     DEBUG_printf(("2cupsGetDevices: state=%d, response->last=%p", state,
@@ -240,7 +241,7 @@ cupsGetDevices(
         device_uri = attr->values[0].string.text;
     }
   }
-  while (state != IPP_DATA);
+  while (state != IPP_STATE_DATA);
 
   DEBUG_printf(("2cupsGetDevices: state=%d, response->last=%p", state,
                response->last));
@@ -257,8 +258,8 @@ cupsGetDevices(
   httpBlocking(http, blocking);
   httpFlush(http);
 
-  if (status == HTTP_ERROR)
-    _cupsSetError(IPP_INTERNAL_ERROR, strerror(http->error), 0);
+  if (status == HTTP_STATUS_ERROR)
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(http->error), 0);
   else
   {
     attr = ippFindAttribute(response, "status-message", IPP_TAG_TEXT);
index 7e12fe9fc4308bd197f87015d60418a0065af034..6816f6d427d110c7a3a5788dfc833cb5becef5e3 100644 (file)
@@ -3,7 +3,7 @@
  *
  *   Get/put file functions for CUPS.
  *
- *   Copyright 2007-2012 by Apple Inc.
+ *   Copyright 2007-2013 by Apple Inc.
  *   Copyright 1997-2006 by Easy Software Products.
  *
  *   These coded instructions, statements, and computer programs are the
@@ -39,7 +39,7 @@
 /*
  * 'cupsGetFd()' - Get a file from the server.
  *
- * This function returns @code HTTP_OK@ when the file is successfully retrieved.
+ * This function returns @code HTTP_STATUS_OK@ when the file is successfully retrieved.
  *
  * @since CUPS 1.1.20/OS X 10.4@
  */
@@ -68,12 +68,12 @@ cupsGetFd(http_t     *http,         /* I - Connection to server or @code CUPS_HTTP_DEFA
     if (http)
       http->error = EINVAL;
 
-    return (HTTP_ERROR);
+    return (HTTP_STATUS_ERROR);
   }
 
   if (!http)
     if ((http = _cupsConnect()) == NULL)
-      return (HTTP_SERVICE_UNAVAILABLE);
+      return (HTTP_STATUS_SERVICE_UNAVAILABLE);
 
  /*
   * Then send GET requests to the HTTP server...
@@ -90,21 +90,21 @@ cupsGetFd(http_t     *http,         /* I - Connection to server or @code CUPS_HTTP_DEFA
 
     if (httpGet(http, resource))
     {
-      if (httpReconnect(http))
+      if (httpReconnect2(http, 30000, NULL))
       {
-        status = HTTP_ERROR;
+        status = HTTP_STATUS_ERROR;
        break;
       }
       else
       {
-        status = HTTP_UNAUTHORIZED;
+        status = HTTP_STATUS_UNAUTHORIZED;
         continue;
       }
     }
 
-    while ((status = httpUpdate(http)) == HTTP_CONTINUE);
+    while ((status = httpUpdate(http)) == HTTP_STATUS_CONTINUE);
 
-    if (status == HTTP_UNAUTHORIZED)
+    if (status == HTTP_STATUS_UNAUTHORIZED)
     {
      /*
       * Flush any error message...
@@ -118,46 +118,46 @@ cupsGetFd(http_t     *http,               /* I - Connection to server or @code CUPS_HTTP_DEFA
 
       if (cupsDoAuthentication(http, "GET", resource))
       {
-        status = HTTP_AUTHORIZATION_CANCELED;
+        status = HTTP_STATUS_CUPS_AUTHORIZATION_CANCELED;
         break;
       }
 
-      if (httpReconnect(http))
+      if (httpReconnect2(http, 30000, NULL))
       {
-        status = HTTP_ERROR;
+        status = HTTP_STATUS_ERROR;
         break;
       }
 
       continue;
     }
 #ifdef HAVE_SSL
-    else if (status == HTTP_UPGRADE_REQUIRED)
+    else if (status == HTTP_STATUS_UPGRADE_REQUIRED)
     {
       /* Flush any error message... */
       httpFlush(http);
 
       /* Reconnect... */
-      if (httpReconnect(http))
+      if (httpReconnect2(http, 30000, NULL))
       {
-        status = HTTP_ERROR;
+        status = HTTP_STATUS_ERROR;
         break;
       }
 
       /* Upgrade with encryption... */
-      httpEncryption(http, HTTP_ENCRYPT_REQUIRED);
+      httpEncryption(http, HTTP_ENCRYPTION_REQUIRED);
 
       /* Try again, this time with encryption enabled... */
       continue;
     }
 #endif /* HAVE_SSL */
   }
-  while (status == HTTP_UNAUTHORIZED || status == HTTP_UPGRADE_REQUIRED);
+  while (status == HTTP_STATUS_UNAUTHORIZED || status == HTTP_STATUS_UPGRADE_REQUIRED);
 
  /*
   * See if we actually got the file or an error...
   */
 
-  if (status == HTTP_OK)
+  if (status == HTTP_STATUS_OK)
   {
    /*
     * Yes, copy the file...
@@ -185,7 +185,7 @@ cupsGetFd(http_t     *http,         /* I - Connection to server or @code CUPS_HTTP_DEFA
 /*
  * 'cupsGetFile()' - Get a file from the server.
  *
- * This function returns @code HTTP_OK@ when the file is successfully retrieved.
+ * This function returns @code HTTP_STATUS_OK@ when the file is successfully retrieved.
  *
  * @since CUPS 1.1.20/OS X 10.4@
  */
@@ -208,7 +208,7 @@ cupsGetFile(http_t     *http,               /* I - Connection to server or @code CUPS_HTTP_DE
     if (http)
       http->error = EINVAL;
 
-    return (HTTP_ERROR);
+    return (HTTP_STATUS_ERROR);
   }
 
  /*
@@ -223,7 +223,7 @@ cupsGetFile(http_t     *http,               /* I - Connection to server or @code CUPS_HTTP_DE
 
     http->error = errno;
 
-    return (HTTP_ERROR);
+    return (HTTP_STATUS_ERROR);
   }
 
  /*
@@ -238,7 +238,7 @@ cupsGetFile(http_t     *http,               /* I - Connection to server or @code CUPS_HTTP_DE
 
   close(fd);
 
-  if (status != HTTP_OK)
+  if (status != HTTP_STATUS_OK)
     unlink(filename);
 
  /*
@@ -252,7 +252,7 @@ cupsGetFile(http_t     *http,               /* I - Connection to server or @code CUPS_HTTP_DE
 /*
  * 'cupsPutFd()' - Put a file on the server.
  *
- * This function returns @code HTTP_CREATED@ when the file is stored
+ * This function returns @code HTTP_STATUS_CREATED@ when the file is stored
  * successfully.
  *
  * @since CUPS 1.1.20/OS X 10.4@
@@ -281,12 +281,12 @@ cupsPutFd(http_t     *http,               /* I - Connection to server or @code CUPS_HTTP_DEFA
     if (http)
       http->error = EINVAL;
 
-    return (HTTP_ERROR);
+    return (HTTP_STATUS_ERROR);
   }
 
   if (!http)
     if ((http = _cupsConnect()) == NULL)
-      return (HTTP_SERVICE_UNAVAILABLE);
+      return (HTTP_STATUS_SERVICE_UNAVAILABLE);
 
  /*
   * Then send PUT requests to the HTTP server...
@@ -302,18 +302,18 @@ cupsPutFd(http_t     *http,               /* I - Connection to server or @code CUPS_HTTP_DEFA
     httpClearFields(http);
     httpSetField(http, HTTP_FIELD_AUTHORIZATION, http->authstring);
     httpSetField(http, HTTP_FIELD_TRANSFER_ENCODING, "chunked");
-    httpSetExpect(http, HTTP_CONTINUE);
+    httpSetExpect(http, HTTP_STATUS_CONTINUE);
 
     if (httpPut(http, resource))
     {
-      if (httpReconnect(http))
+      if (httpReconnect2(http, 30000, NULL))
       {
-        status = HTTP_ERROR;
+        status = HTTP_STATUS_ERROR;
        break;
       }
       else
       {
-        status = HTTP_UNAUTHORIZED;
+        status = HTTP_STATUS_UNAUTHORIZED;
         continue;
       }
     }
@@ -325,9 +325,9 @@ cupsPutFd(http_t     *http,         /* I - Connection to server or @code CUPS_HTTP_DEFA
     if (httpWait(http, 1000))
       status = httpUpdate(http);
     else
-      status = HTTP_CONTINUE;
+      status = HTTP_STATUS_CONTINUE;
 
-    if (status == HTTP_CONTINUE)
+    if (status == HTTP_STATUS_CONTINUE)
     {
      /*
       * Copy the file...
@@ -338,21 +338,21 @@ cupsPutFd(http_t     *http,               /* I - Connection to server or @code CUPS_HTTP_DEFA
       while ((bytes = read(fd, buffer, sizeof(buffer))) > 0)
        if (httpCheck(http))
        {
-          if ((status = httpUpdate(http)) != HTTP_CONTINUE)
+          if ((status = httpUpdate(http)) != HTTP_STATUS_CONTINUE)
             break;
        }
        else
           httpWrite2(http, buffer, bytes);
     }
 
-    if (status == HTTP_CONTINUE)
+    if (status == HTTP_STATUS_CONTINUE)
     {
       httpWrite2(http, buffer, 0);
 
-      while ((status = httpUpdate(http)) == HTTP_CONTINUE);
+      while ((status = httpUpdate(http)) == HTTP_STATUS_CONTINUE);
     }
 
-    if (status == HTTP_ERROR && !retries)
+    if (status == HTTP_STATUS_ERROR && !retries)
     {
       DEBUG_printf(("2cupsPutFd: retry on status %d", status));
 
@@ -362,9 +362,9 @@ cupsPutFd(http_t     *http,         /* I - Connection to server or @code CUPS_HTTP_DEFA
       httpFlush(http);
 
       /* Reconnect... */
-      if (httpReconnect(http))
+      if (httpReconnect2(http, 30000, NULL))
       {
-        status = HTTP_ERROR;
+        status = HTTP_STATUS_ERROR;
         break;
       }
 
@@ -374,7 +374,7 @@ cupsPutFd(http_t     *http,         /* I - Connection to server or @code CUPS_HTTP_DEFA
 
     DEBUG_printf(("2cupsPutFd: status=%d", status));
 
-    if (status == HTTP_UNAUTHORIZED)
+    if (status == HTTP_STATUS_UNAUTHORIZED)
     {
      /*
       * Flush any error message...
@@ -388,47 +388,47 @@ cupsPutFd(http_t     *http,               /* I - Connection to server or @code CUPS_HTTP_DEFA
 
       if (cupsDoAuthentication(http, "PUT", resource))
       {
-        status = HTTP_AUTHORIZATION_CANCELED;
+        status = HTTP_STATUS_CUPS_AUTHORIZATION_CANCELED;
         break;
       }
 
-      if (httpReconnect(http))
+      if (httpReconnect2(http, 30000, NULL))
       {
-        status = HTTP_ERROR;
+        status = HTTP_STATUS_ERROR;
         break;
       }
 
       continue;
     }
 #ifdef HAVE_SSL
-    else if (status == HTTP_UPGRADE_REQUIRED)
+    else if (status == HTTP_STATUS_UPGRADE_REQUIRED)
     {
       /* Flush any error message... */
       httpFlush(http);
 
       /* Reconnect... */
-      if (httpReconnect(http))
+      if (httpReconnect2(http, 30000, NULL))
       {
-        status = HTTP_ERROR;
+        status = HTTP_STATUS_ERROR;
         break;
       }
 
       /* Upgrade with encryption... */
-      httpEncryption(http, HTTP_ENCRYPT_REQUIRED);
+      httpEncryption(http, HTTP_ENCRYPTION_REQUIRED);
 
       /* Try again, this time with encryption enabled... */
       continue;
     }
 #endif /* HAVE_SSL */
   }
-  while (status == HTTP_UNAUTHORIZED || status == HTTP_UPGRADE_REQUIRED ||
-         (status == HTTP_ERROR && retries < 2));
+  while (status == HTTP_STATUS_UNAUTHORIZED || status == HTTP_STATUS_UPGRADE_REQUIRED ||
+         (status == HTTP_STATUS_ERROR && retries < 2));
 
  /*
   * See if we actually put the file or an error...
   */
 
-  if (status != HTTP_CREATED)
+  if (status != HTTP_STATUS_CREATED)
   {
     _cupsSetHTTPError(status);
     httpFlush(http);
@@ -467,7 +467,7 @@ cupsPutFile(http_t     *http,               /* I - Connection to server or @code CUPS_HTTP_DE
     if (http)
       http->error = EINVAL;
 
-    return (HTTP_ERROR);
+    return (HTTP_STATUS_ERROR);
   }
 
  /*
@@ -482,7 +482,7 @@ cupsPutFile(http_t     *http,               /* I - Connection to server or @code CUPS_HTTP_DE
 
     http->error = errno;
 
-    return (HTTP_ERROR);
+    return (HTTP_STATUS_ERROR);
   }
 
  /*
index 709a0ad3d4db877360150194d9dc1bef1bd19360..6d859b658add68fa5947130e9964bf073f5fbd65 100644 (file)
@@ -3,7 +3,7 @@
  *
  *   HTTP address list routines for CUPS.
  *
- *   Copyright 2007-2012 by Apple Inc.
+ *   Copyright 2007-2013 by Apple Inc.
  *   Copyright 1997-2007 by Easy Software Products, all rights reserved.
  *
  *   These coded instructions, statements, and computer programs are the
@@ -95,7 +95,7 @@ httpAddrConnect2(
   if (!sock)
   {
     errno = EINVAL;
-    _cupsSetError(IPP_INTERNAL_ERROR, strerror(errno), 0);
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(errno), 0);
     return (NULL);
   }
 
@@ -309,9 +309,9 @@ httpAddrConnect2(
 
   if (!addrlist)
 #ifdef WIN32
-    _cupsSetError(IPP_SERVICE_UNAVAILABLE, "Connection failed", 0);
+    _cupsSetError(IPP_STATUS_ERROR_SERVICE_UNAVAILABLE, "Connection failed", 0);
 #else
-    _cupsSetError(IPP_SERVICE_UNAVAILABLE, strerror(errno), 0);
+    _cupsSetError(IPP_STATUS_ERROR_SERVICE_UNAVAILABLE, strerror(errno), 0);
 #endif /* WIN32 */
 
   return (addrlist);
@@ -549,7 +549,7 @@ httpAddrGetList(const char *hostname,       /* I - Hostname, IP address, or NULL for p
          if (!temp)
          {
            httpAddrFreeList(first);
-           _cupsSetError(IPP_INTERNAL_ERROR, strerror(errno), 0);
+           _cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(errno), 0);
            return (NULL);
          }
 
@@ -584,7 +584,7 @@ httpAddrGetList(const char *hostname,       /* I - Hostname, IP address, or NULL for p
       if (error == EAI_FAIL)
         cg->need_res_init = 1;
 
-      _cupsSetError(IPP_INTERNAL_ERROR, gai_strerror(error), 0);
+      _cupsSetError(IPP_STATUS_ERROR_INTERNAL, gai_strerror(error), 0);
     }
 
 #else
@@ -708,7 +708,7 @@ httpAddrGetList(const char *hostname,       /* I - Hostname, IP address, or NULL for p
         if (h_errno == NO_RECOVERY)
           cg->need_res_init = 1;
 
-       _cupsSetError(IPP_INTERNAL_ERROR, hstrerror(h_errno), 0);
+       _cupsSetError(IPP_STATUS_ERROR_INTERNAL, hstrerror(h_errno), 0);
       }
     }
 #endif /* HAVE_GETADDRINFO */
@@ -748,7 +748,7 @@ httpAddrGetList(const char *hostname,       /* I - Hostname, IP address, or NULL for p
     {
       httpAddrFreeList(first);
 
-      _cupsSetError(IPP_INTERNAL_ERROR, _("Unknown service name."), 1);
+      _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Unknown service name."), 1);
       return (NULL);
     }
 
@@ -771,7 +771,7 @@ httpAddrGetList(const char *hostname,       /* I - Hostname, IP address, or NULL for p
        temp = (http_addrlist_t *)calloc(1, sizeof(http_addrlist_t));
        if (!temp)
        {
-         _cupsSetError(IPP_INTERNAL_ERROR, strerror(errno), 0);
+         _cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(errno), 0);
          httpAddrFreeList(first);
          return (NULL);
        }
@@ -800,7 +800,7 @@ httpAddrGetList(const char *hostname,       /* I - Hostname, IP address, or NULL for p
        temp = (http_addrlist_t *)calloc(1, sizeof(http_addrlist_t));
        if (!temp)
        {
-         _cupsSetError(IPP_INTERNAL_ERROR, strerror(errno), 0);
+         _cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(errno), 0);
          httpAddrFreeList(first);
          return (NULL);
        }
@@ -832,7 +832,7 @@ httpAddrGetList(const char *hostname,       /* I - Hostname, IP address, or NULL for p
        temp = (http_addrlist_t *)calloc(1, sizeof(http_addrlist_t));
        if (!temp)
        {
-         _cupsSetError(IPP_INTERNAL_ERROR, strerror(errno), 0);
+         _cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(errno), 0);
          httpAddrFreeList(first);
          return (NULL);
        }
@@ -856,7 +856,7 @@ httpAddrGetList(const char *hostname,       /* I - Hostname, IP address, or NULL for p
        temp = (http_addrlist_t *)calloc(1, sizeof(http_addrlist_t));
        if (!temp)
        {
-         _cupsSetError(IPP_INTERNAL_ERROR, strerror(errno), 0);
+         _cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(errno), 0);
          httpAddrFreeList(first);
          return (NULL);
        }
index acd033263cd11aad679ca0cd7793b8635a4060e3..77f536c86872688fb69996df3cbef66e9aeb3264 100644 (file)
@@ -316,6 +316,7 @@ struct _http_s                              /**** HTTP connection structure ****/
 #  endif /* HAVE_GSSAPI */
 
   /**** New in CUPS 1.7 ****/
+  int                  tls_upgrade;    /* Non-zero if we are doing an upgrade */
   _http_mode_t         mode;           /* _HTTP_MODE_CLIENT or _HTTP_MODE_SERVER */
   char                 *accept_encoding,
                                        /* Accept-Encoding field */
index 1889537913be91c23ddb2820e96a73f79bf05bc0..64c1810286cd304f4cc0ef02ee4bcf5acde7a029 100644 (file)
@@ -193,7 +193,7 @@ httpAssembleURI(
     if (uri)
       *uri = '\0';
 
-    return (HTTP_URI_BAD_ARGUMENTS);
+    return (HTTP_URI_STATUS_BAD_ARGUMENTS);
   }
 
  /*
@@ -391,7 +391,7 @@ httpAssembleURI(
 
   *ptr = '\0';
 
-  return (HTTP_URI_OK);
+  return (HTTP_URI_STATUS_OK);
 
  /*
   * Clear the URI string and return an overflow error; I don't usually
@@ -401,7 +401,7 @@ httpAssembleURI(
   assemble_overflow:
 
   *uri = '\0';
-  return (HTTP_URI_OVERFLOW);
+  return (HTTP_URI_STATUS_OVERFLOW);
 }
 
 
@@ -444,7 +444,7 @@ httpAssembleURIf(
     if (uri)
       *uri = '\0';
 
-    return (HTTP_URI_BAD_ARGUMENTS);
+    return (HTTP_URI_STATUS_BAD_ARGUMENTS);
   }
 
  /*
@@ -458,7 +458,7 @@ httpAssembleURIf(
   if (bytes >= sizeof(resource))
   {
     *uri = '\0';
-    return (HTTP_URI_OVERFLOW);
+    return (HTTP_URI_STATUS_OVERFLOW);
   }
   else
     return (httpAssembleURI(encoding,  uri, urilen, scheme, username, host,
@@ -978,16 +978,16 @@ httpSeparateURI(
   if (!uri || !port || !scheme || schemelen <= 0 || !username ||
       usernamelen <= 0 || !host || hostlen <= 0 || !resource ||
       resourcelen <= 0)
-    return (HTTP_URI_BAD_ARGUMENTS);
+    return (HTTP_URI_STATUS_BAD_ARGUMENTS);
 
   if (!*uri)
-    return (HTTP_URI_BAD_URI);
+    return (HTTP_URI_STATUS_BAD_URI);
 
  /*
   * Grab the scheme portion of the URI...
   */
 
-  status = HTTP_URI_OK;
+  status = HTTP_URI_STATUS_OK;
 
   if (!strncmp(uri, "//", 2))
   {
@@ -996,7 +996,7 @@ httpSeparateURI(
     */
 
     strlcpy(scheme, "ipp", schemelen);
-    status = HTTP_URI_MISSING_SCHEME;
+    status = HTTP_URI_STATUS_MISSING_SCHEME;
   }
   else if (*uri == '/')
   {
@@ -1005,7 +1005,7 @@ httpSeparateURI(
     */
 
     strlcpy(scheme, "file", schemelen);
-    status = HTTP_URI_MISSING_SCHEME;
+    status = HTTP_URI_STATUS_MISSING_SCHEME;
   }
   else
   {
@@ -1027,7 +1027,7 @@ httpSeparateURI(
     if (*uri != ':')
     {
       *scheme = '\0';
-      return (HTTP_URI_BAD_SCHEME);
+      return (HTTP_URI_STATUS_BAD_SCHEME);
     }
 
     uri ++;
@@ -1048,7 +1048,7 @@ httpSeparateURI(
   else if (!strcmp(scheme, "socket"))  /* Not yet registered with IANA... */
     *port = 9100;
   else if (strcmp(scheme, "file") && strcmp(scheme, "mailto"))
-    status = HTTP_URI_UNKNOWN_SCHEME;
+    status = HTTP_URI_STATUS_UNKNOWN_SCHEME;
 
  /*
   * Now see if we have a hostname...
@@ -1078,7 +1078,7 @@ httpSeparateURI(
       if (!uri)
       {
         *username = '\0';
-        return (HTTP_URI_BAD_USERNAME);
+        return (HTTP_URI_STATUS_BAD_USERNAME);
       }
 
       uri ++;
@@ -1104,7 +1104,7 @@ httpSeparateURI(
       if (!uri)
       {
         *host = '\0';
-        return (HTTP_URI_BAD_HOSTNAME);
+        return (HTTP_URI_STATUS_BAD_HOSTNAME);
       }
 
      /*
@@ -1114,7 +1114,7 @@ httpSeparateURI(
       if (*uri != ']')
       {
         *host = '\0';
-        return (HTTP_URI_BAD_HOSTNAME);
+        return (HTTP_URI_STATUS_BAD_HOSTNAME);
       }
 
       uri ++;
@@ -1132,7 +1132,7 @@ httpSeparateURI(
        else if (*ptr != ':' && *ptr != '.' && !isxdigit(*ptr & 255))
        {
          *host = '\0';
-         return (HTTP_URI_BAD_HOSTNAME);
+         return (HTTP_URI_STATUS_BAD_HOSTNAME);
        }
     }
     else
@@ -1152,7 +1152,7 @@ httpSeparateURI(
                         "!$&'()*+,;=\\", *ptr))
        {
          *host = '\0';
-         return (HTTP_URI_BAD_HOSTNAME);
+         return (HTTP_URI_STATUS_BAD_HOSTNAME);
        }
 
      /*
@@ -1165,7 +1165,7 @@ httpSeparateURI(
       if (!uri)
       {
         *host = '\0';
-        return (HTTP_URI_BAD_HOSTNAME);
+        return (HTTP_URI_STATUS_BAD_HOSTNAME);
       }
     }
 
@@ -1177,7 +1177,7 @@ httpSeparateURI(
     if (!strcmp(scheme, "file") && strcmp(host, "localhost") && host[0])
     {
       *host = '\0';
-      return (HTTP_URI_BAD_HOSTNAME);
+      return (HTTP_URI_STATUS_BAD_HOSTNAME);
     }
 
    /*
@@ -1193,7 +1193,7 @@ httpSeparateURI(
       if (!isdigit(uri[1] & 255))
       {
         *port = 0;
-        return (HTTP_URI_BAD_PORT);
+        return (HTTP_URI_STATUS_BAD_PORT);
       }
 
       *port = strtol(uri + 1, (char **)&uri, 10);
@@ -1201,7 +1201,7 @@ httpSeparateURI(
       if (*uri != '/' && *uri)
       {
         *port = 0;
-        return (HTTP_URI_BAD_PORT);
+        return (HTTP_URI_STATUS_BAD_PORT);
       }
     }
   }
@@ -1216,7 +1216,7 @@ httpSeparateURI(
     * Hostname but no path...
     */
 
-    status    = HTTP_URI_MISSING_RESOURCE;
+    status    = HTTP_URI_STATUS_MISSING_RESOURCE;
     *resource = '/';
 
    /*
@@ -1250,7 +1250,7 @@ httpSeparateURI(
   if (!uri)
   {
     *resource = '\0';
-    return (HTTP_URI_BAD_RESOURCE);
+    return (HTTP_URI_STATUS_BAD_RESOURCE);
   }
 
  /*
@@ -1280,74 +1280,74 @@ httpStatus(http_status_t status)        /* I - HTTP status code */
 
   switch (status)
   {
-    case HTTP_CONTINUE :
+    case HTTP_STATUS_CONTINUE :
         s = _("Continue");
        break;
-    case HTTP_SWITCHING_PROTOCOLS :
+    case HTTP_STATUS_SWITCHING_PROTOCOLS :
         s = _("Switching Protocols");
        break;
-    case HTTP_OK :
+    case HTTP_STATUS_OK :
         s = _("OK");
        break;
-    case HTTP_CREATED :
+    case HTTP_STATUS_CREATED :
         s = _("Created");
        break;
-    case HTTP_ACCEPTED :
+    case HTTP_STATUS_ACCEPTED :
         s = _("Accepted");
        break;
-    case HTTP_NO_CONTENT :
+    case HTTP_STATUS_NO_CONTENT :
         s = _("No Content");
        break;
-    case HTTP_MOVED_PERMANENTLY :
+    case HTTP_STATUS_MOVED_PERMANENTLY :
         s = _("Moved Permanently");
        break;
-    case HTTP_SEE_OTHER :
+    case HTTP_STATUS_SEE_OTHER :
         s = _("See Other");
        break;
-    case HTTP_NOT_MODIFIED :
+    case HTTP_STATUS_NOT_MODIFIED :
         s = _("Not Modified");
        break;
-    case HTTP_BAD_REQUEST :
+    case HTTP_STATUS_BAD_REQUEST :
         s = _("Bad Request");
        break;
-    case HTTP_UNAUTHORIZED :
-    case HTTP_AUTHORIZATION_CANCELED :
+    case HTTP_STATUS_UNAUTHORIZED :
+    case HTTP_STATUS_CUPS_AUTHORIZATION_CANCELED :
         s = _("Unauthorized");
        break;
-    case HTTP_FORBIDDEN :
+    case HTTP_STATUS_FORBIDDEN :
         s = _("Forbidden");
        break;
-    case HTTP_NOT_FOUND :
+    case HTTP_STATUS_NOT_FOUND :
         s = _("Not Found");
        break;
-    case HTTP_REQUEST_TOO_LARGE :
+    case HTTP_STATUS_REQUEST_TOO_LARGE :
         s = _("Request Entity Too Large");
        break;
-    case HTTP_URI_TOO_LONG :
+    case HTTP_STATUS_URI_TOO_LONG :
         s = _("URI Too Long");
        break;
-    case HTTP_UPGRADE_REQUIRED :
+    case HTTP_STATUS_UPGRADE_REQUIRED :
         s = _("Upgrade Required");
        break;
-    case HTTP_NOT_IMPLEMENTED :
+    case HTTP_STATUS_NOT_IMPLEMENTED :
         s = _("Not Implemented");
        break;
-    case HTTP_NOT_SUPPORTED :
+    case HTTP_STATUS_NOT_SUPPORTED :
         s = _("Not Supported");
        break;
-    case HTTP_EXPECTATION_FAILED :
+    case HTTP_STATUS_EXPECTATION_FAILED :
         s = _("Expectation Failed");
        break;
-    case HTTP_SERVICE_UNAVAILABLE :
+    case HTTP_STATUS_SERVICE_UNAVAILABLE :
         s = _("Service Unavailable");
        break;
-    case HTTP_SERVER_ERROR :
+    case HTTP_STATUS_SERVER_ERROR :
         s = _("Internal Server Error");
        break;
-    case HTTP_PKI_ERROR :
+    case HTTP_STATUS_CUPS_PKI_ERROR :
         s = _("SSL/TLS Negotiation Error");
        break;
-    case HTTP_WEBIF_DISABLED :
+    case HTTP_STATUS_CUPS_WEBIF_DISABLED :
         s = _("Web Interface is Disabled");
        break;
 
@@ -1451,12 +1451,12 @@ _httpResolveURI(
   if ((status = httpSeparateURI(HTTP_URI_CODING_ALL, uri, scheme,
                                 sizeof(scheme), userpass, sizeof(userpass),
                                hostname, sizeof(hostname), &port, resource,
-                               sizeof(resource))) < HTTP_URI_OK)
+                               sizeof(resource))) < HTTP_URI_STATUS_OK)
 #else
   if (httpSeparateURI(HTTP_URI_CODING_ALL, uri, scheme,
                      sizeof(scheme), userpass, sizeof(userpass),
                      hostname, sizeof(hostname), &port, resource,
-                     sizeof(resource)) < HTTP_URI_OK)
+                     sizeof(resource)) < HTTP_URI_STATUS_OK)
 #endif /* DEBUG */
   {
     if (options & _HTTP_RESOLVE_STDERR)
index eef560cba858891df7b7aa2d2f293ec65cbfbd14..8ea4d93c373020c4cebcfa4a150f4ada9e5646ca 100644 (file)
  *   http_set_wait()             - Set the default wait value for reads.
  *   http_setup_ssl()            - Set up SSL/TLS support on a connection.
  *   http_shutdown_ssl()         - Shut down SSL/TLS on a connection.
+ *   http_state_string()          - Return the string associated with a given
+ *                                  HTTP state.
  *   http_upgrade()              - Force upgrade to TLS encryption.
  *   http_write()                - Write a buffer to a HTTP connection.
  *   http_write_chunk()          - Write a chunked buffer.
@@ -194,6 +196,9 @@ static int          http_set_credentials(http_t *http);
 static off_t           http_set_length(http_t *http);
 static void            http_set_timeout(int fd, double timeout);
 static void            http_set_wait(http_t *http);
+#ifdef DEBUG
+static const char      *http_state_string(http_state_t state);
+#endif /* DEBUG */
 #ifdef HAVE_SSL
 static int             http_setup_ssl(http_t *http);
 static void            http_shutdown_ssl(http_t *http);
@@ -239,28 +244,6 @@ static const char * const http_fields[] =
                          "Allow",
                          "Server"
                        };
-#ifdef DEBUG
-static const char * const http_states[] =
-                       {
-                         "HTTP_STATE_ERROR",
-                         "HTTP_STATE_WAITING",
-                         "HTTP_STATE_OPTIONS",
-                         "HTTP_STATE_GET",
-                         "HTTP_STATE_GET_SEND",
-                         "HTTP_STATE_HEAD",
-                         "HTTP_STATE_POST",
-                         "HTTP_STATE_POST_RECV",
-                         "HTTP_STATE_POST_SEND",
-                         "HTTP_STATE_PUT",
-                         "HTTP_STATE_PUT_RECV",
-                         "HTTP_STATE_DELETE",
-                         "HTTP_STATE_TRACE",
-                         "HTTP_STATE_CONNECT",
-                         "HTTP_STATE_STATUS",
-                         "HTTP_STATE_UNKNOWN_METHOD",
-                         "HTTP_STATE_UNKNOWN_VERSION"
-                       };
-#endif /* DEBUG */
 
 
 #if defined(HAVE_SSL) && defined(HAVE_LIBSSL)
@@ -591,7 +574,7 @@ http_t *                            /* O - New HTTP connection */
 httpConnect(const char *host,          /* I - Host to connect to */
             int        port)           /* I - Port number */
 {
-  return (httpConnect2(host, port, NULL, AF_UNSPEC, HTTP_ENCRYPT_IF_REQUESTED,
+  return (httpConnect2(host, port, NULL, AF_UNSPEC, HTTP_ENCRYPTION_IF_REQUESTED,
                        1, 30000, NULL));
 }
 
@@ -804,7 +787,7 @@ int                                 /* O - Status of call (0 = success) */
 httpDelete(http_t     *http,           /* I - Connection to server */
            const char *uri)            /* I - URI to delete */
 {
-  return (http_send(http, HTTP_DELETE, uri));
+  return (http_send(http, HTTP_STATE_DELETE, uri));
 }
 
 
@@ -846,15 +829,15 @@ httpEncryption(http_t            *http,   /* I - Connection to server */
 
   http->encryption = e;
 
-  if ((http->encryption == HTTP_ENCRYPT_ALWAYS && !http->tls) ||
-      (http->encryption == HTTP_ENCRYPT_NEVER && http->tls))
-    return (httpReconnect(http));
-  else if (http->encryption == HTTP_ENCRYPT_REQUIRED && !http->tls)
+  if ((http->encryption == HTTP_ENCRYPTION_ALWAYS && !http->tls) ||
+      (http->encryption == HTTP_ENCRYPTION_NEVER && http->tls))
+    return (httpReconnect2(http, 30000, NULL));
+  else if (http->encryption == HTTP_ENCRYPTION_REQUIRED && !http->tls)
     return (http_upgrade(http));
   else
     return (0);
 #else
-  if (e == HTTP_ENCRYPT_ALWAYS || e == HTTP_ENCRYPT_REQUIRED)
+  if (e == HTTP_ENCRYPTION_ALWAYS || e == HTTP_ENCRYPTION_REQUIRED)
     return (-1);
   else
     return (0);
@@ -889,7 +872,7 @@ httpFlush(http_t *http)                     /* I - Connection to server */
 
 
   DEBUG_printf(("httpFlush(http=%p), state=%s", http,
-                http_states[http->state + 1]));
+                http_state_string(http->state)));
 
  /*
   * Nothing to do if we are in the "waiting" state...
@@ -1056,7 +1039,7 @@ int                                       /* O - Status of call (0 = success) */
 httpGet(http_t     *http,              /* I - Connection to server */
         const char *uri)               /* I - URI to get */
 {
-  return (http_send(http, HTTP_GET, uri));
+  return (http_send(http, HTTP_STATE_GET, uri));
 }
 
 
@@ -1311,7 +1294,7 @@ httpGetLength2(http_t *http)              /* I - Connection to server */
 
 
   DEBUG_printf(("2httpGetLength2(http=%p), state=%s", http,
-                http_states[http->state + 1]));
+                http_state_string(http->state)));
 
   if (!http)
     return (-1);
@@ -1338,7 +1321,7 @@ httpGetLength2(http_t *http)              /* I - Connection to server */
       * and 2^31-1 for other successful requests...
       */
 
-      if (http->status >= HTTP_MULTIPLE_CHOICES ||
+      if (http->status >= HTTP_STATUS_MULTIPLE_CHOICES ||
           http->state == HTTP_STATE_OPTIONS ||
           (http->state == HTTP_STATE_GET && http->mode == _HTTP_MODE_SERVER) ||
           http->state == HTTP_STATE_HEAD ||
@@ -1556,7 +1539,7 @@ httpGetState(http_t *http)                /* I - Connection to server */
 http_status_t                          /* O - HTTP status */
 httpGetStatus(http_t *http)            /* I - Connection to server */
 {
-  return (http ? http->status : HTTP_ERROR);
+  return (http ? http->status : HTTP_STATUS_ERROR);
 }
 
 
@@ -1728,7 +1711,7 @@ httpHead(http_t     *http,                /* I - Connection to server */
          const char *uri)              /* I - URI for head */
 {
   DEBUG_printf(("httpHead(http=%p, uri=\"%s\")", http, uri));
-  return (http_send(http, HTTP_HEAD, uri));
+  return (http_send(http, HTTP_STATE_HEAD, uri));
 }
 
 
@@ -1822,7 +1805,7 @@ int                                       /* O - Status of call (0 = success) */
 httpOptions(http_t     *http,          /* I - Connection to server */
             const char *uri)           /* I - URI for options */
 {
-  return (http_send(http, HTTP_OPTIONS, uri));
+  return (http_send(http, HTTP_STATE_OPTIONS, uri));
 }
 
 
@@ -1910,10 +1893,10 @@ httpPeek(http_t *http,                  /* I - Connection to server */
     if (http->state == HTTP_STATE_POST_RECV)
       http->state ++;
     else
-      http->state = HTTP_STATE_WAITING;
+      http->state = HTTP_STATE_STATUS;
 
     DEBUG_printf(("1httpPeek: 0-length chunk, set state to %s.",
-                  http_states[http->state + 1]));
+                  http_state_string(http->state)));
 
    /*
     * Prevent future reads for this request...
@@ -2095,7 +2078,7 @@ int                                       /* O - Status of call (0 = success) */
 httpPost(http_t     *http,             /* I - Connection to server */
          const char *uri)              /* I - URI for post */
 {
-  return (http_send(http, HTTP_POST, uri));
+  return (http_send(http, HTTP_STATE_POST, uri));
 }
 
 
@@ -2149,7 +2132,7 @@ httpPut(http_t     *http,         /* I - Connection to server */
         const char *uri)               /* I - URI to put */
 {
   DEBUG_printf(("httpPut(http=%p, uri=\"%s\")", http, uri));
-  return (http_send(http, HTTP_PUT, uri));
+  return (http_send(http, HTTP_STATE_PUT, uri));
 }
 
 
@@ -2286,6 +2269,18 @@ httpRead2(http_t *http,                  /* I - Connection to server */
           http->data_remaining  -= bytes;
           http->stream.avail_in += bytes;
 
+         if (http->data_remaining <= 0 &&
+             http->data_encoding == HTTP_ENCODING_CHUNKED)
+         {
+          /*
+           * Read the trailing blank line now...
+           */
+
+           char        len[32];                /* Length string */
+
+           httpGets(len, sizeof(len), http);
+         }
+
           bytes = 0;
         }
         else
@@ -2299,7 +2294,20 @@ httpRead2(http_t *http,                  /* I - Connection to server */
   if (http->data_remaining == 0 && http->data_encoding == HTTP_ENCODING_CHUNKED)
   {
     if ((bytes = http_read_chunk(http, buffer, length)) > 0)
+    {
       http->data_remaining -= bytes;
+
+      if (http->data_remaining <= 0)
+      {
+       /*
+        * Read the trailing blank line now...
+        */
+
+        char   len[32];                /* Length string */
+
+        httpGets(len, sizeof(len), http);
+      }
+    }
   }
   else if (http->data_remaining <= 0)
   {
@@ -2318,7 +2326,21 @@ httpRead2(http_t *http,                  /* I - Connection to server */
       length = (size_t)http->data_remaining;
 
     if ((bytes = http_read_buffered(http, buffer, length)) > 0)
+    {
       http->data_remaining -= bytes;
+
+      if (http->data_remaining <= 0 &&
+          http->data_encoding == HTTP_ENCODING_CHUNKED)
+      {
+       /*
+        * Read the trailing blank line now...
+        */
+
+        char   len[32];                /* Length string */
+
+        httpGets(len, sizeof(len), http);
+      }
+    }
   }
 
   if (
@@ -2337,10 +2359,10 @@ httpRead2(http_t *http,                 /* I - Connection to server */
     if (http->state == HTTP_STATE_POST_RECV)
       http->state ++;
     else
-      http->state = HTTP_STATE_WAITING;
+      http->state = HTTP_STATE_STATUS;
 
     DEBUG_printf(("1httpRead2: End of content, set state to %s.",
-                 http_states[http->state + 1]));
+                 http_state_string(http->state)));
   }
 
   return (bytes);
@@ -2490,7 +2512,7 @@ httpReadRequest(http_t *http,             /* I - HTTP connection */
   else if (http->state != HTTP_STATE_WAITING)
   {
     DEBUG_printf(("1httpReadRequest: Bad state %s, returning HTTP_STATE_ERROR.",
-                  http_states[http->state + 1]));
+                  http_state_string(http->state)));
     return (HTTP_STATE_ERROR);
   }
 
@@ -2589,7 +2611,7 @@ httpReadRequest(http_t *http,             /* I - HTTP connection */
   }
 
   DEBUG_printf(("1httpReadRequest: Set state to %s.",
-                http_states[http->state + 1]));
+                http_state_string(http->state)));
 
   if (!strcmp(req_version, "HTTP/1.0"))
   {
@@ -2654,7 +2676,7 @@ httpReconnect2(http_t *http,              /* I - Connection to server */
 
   if (!http)
   {
-    _cupsSetError(IPP_INTERNAL_ERROR, strerror(EINVAL), 0);
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(EINVAL), 0);
     return (-1);
   }
 
@@ -2688,14 +2710,12 @@ httpReconnect2(http_t *http,            /* I - Connection to server */
   */
 
   http->state           = HTTP_STATE_WAITING;
-  http->status          = HTTP_STATUS_CONTINUE;
   http->version         = HTTP_VERSION_1_1;
   http->keep_alive      = HTTP_KEEPALIVE_OFF;
   memset(&http->_hostaddr, 0, sizeof(http->_hostaddr));
   http->data_encoding   = HTTP_ENCODING_FIELDS;
   http->_data_remaining = 0;
   http->used            = 0;
-  http->expect          = 0;
   http->data_remaining  = 0;
   http->hostaddr        = NULL;
   http->wused           = 0;
@@ -2723,7 +2743,7 @@ httpReconnect2(http_t *http,              /* I - Connection to server */
 #else
     http->error  = errno;
 #endif /* WIN32 */
-    http->status = HTTP_ERROR;
+    http->status = HTTP_STATUS_ERROR;
 
     DEBUG_printf(("1httpReconnect2: httpAddrConnect failed: %s",
                   strerror(http->error)));
@@ -2740,7 +2760,7 @@ httpReconnect2(http_t *http,              /* I - Connection to server */
   http->error    = 0;
 
 #ifdef HAVE_SSL
-  if (http->encryption == HTTP_ENCRYPT_ALWAYS)
+  if (http->encryption == HTTP_ENCRYPTION_ALWAYS)
   {
    /*
     * Always do encryption via SSL.
@@ -2757,7 +2777,7 @@ httpReconnect2(http_t *http,              /* I - Connection to server */
       return (-1);
     }
   }
-  else if (http->encryption == HTTP_ENCRYPT_REQUIRED)
+  else if (http->encryption == HTTP_ENCRYPTION_REQUIRED && !http->tls_upgrade)
     return (http_upgrade(http));
 #endif /* HAVE_SSL */
 
@@ -2937,8 +2957,10 @@ httpSetDefaultField(http_t       *http,  /* I - Connection to server */
 void
 httpSetExpect(http_t        *http,     /* I - Connection to server */
               http_status_t expect)    /* I - HTTP status to expect
-                                              (@code HTTP_CONTINUE@) */
+                                              (@code HTTP_STATUS_CONTINUE@) */
 {
+  DEBUG_printf(("httpSetExpect(http=%p, expect=%d)", http, expect));
+
   if (http)
     http->expect = expect;
 }
@@ -3121,7 +3143,7 @@ int                                       /* O - Status of call (0 = success) */
 httpTrace(http_t     *http,            /* I - Connection to server */
           const char *uri)             /* I - URI for trace */
 {
-  return (http_send(http, HTTP_TRACE, uri));
+  return (http_send(http, HTTP_STATE_TRACE, uri));
 }
 
 
@@ -3143,7 +3165,7 @@ _httpUpdate(http_t        *http,  /* I - Connection to server */
 
 
   DEBUG_printf(("_httpUpdate(http=%p, status=%p), state=%s", http, status,
-                http_states[http->state + 1]));
+                http_state_string(http->state)));
 
  /*
   * Grab a single line from the connection...
@@ -3151,7 +3173,7 @@ _httpUpdate(http_t        *http,  /* I - Connection to server */
 
   if (!httpGets(line, sizeof(line), http))
   {
-    *status = HTTP_ERROR;
+    *status = HTTP_STATUS_ERROR;
     return (0);
   }
 
@@ -3174,11 +3196,11 @@ _httpUpdate(http_t        *http,        /* I - Connection to server */
       return (0);
     }
 
-    if (http->status < HTTP_BAD_REQUEST)
+    if (http->status < HTTP_STATUS_BAD_REQUEST)
       http->digest_tries = 0;
 
 #ifdef HAVE_SSL
-    if (http->status == HTTP_SWITCHING_PROTOCOLS && !http->tls)
+    if (http->status == HTTP_STATUS_SWITCHING_PROTOCOLS && !http->tls)
     {
       if (http_setup_ssl(http) != 0)
       {
@@ -3188,7 +3210,7 @@ _httpUpdate(http_t        *http,  /* I - Connection to server */
        close(http->fd);
 #  endif /* WIN32 */
 
-       *status = http->status = HTTP_ERROR;
+       *status = http->status = HTTP_STATUS_ERROR;
        return (0);
       }
 
@@ -3201,7 +3223,7 @@ _httpUpdate(http_t        *http,  /* I - Connection to server */
     {
       DEBUG_puts("1_httpUpdate: Bad Content-Length.");
       http->error  = EINVAL;
-      http->status = *status = HTTP_ERROR;
+      http->status = *status = HTTP_STATUS_ERROR;
       return (0);
     }
 
@@ -3214,7 +3236,7 @@ _httpUpdate(http_t        *http,  /* I - Connection to server */
          http->state ++;
 
          DEBUG_printf(("1_httpUpdate: Set state to %s.",
-                       http_states[http->state + 1]));
+                       http_state_string(http->state)));
 
       case HTTP_STATE_POST_SEND :
       case HTTP_STATE_HEAD :
@@ -3223,8 +3245,7 @@ _httpUpdate(http_t        *http,  /* I - Connection to server */
       default :
          http->state = HTTP_STATE_WAITING;
 
-         DEBUG_puts("1_httpUpdate: Unknown state, reset state to "
-                    "HTTP_STATE_WAITING.");
+         DEBUG_puts("1_httpUpdate: Reset state to HTTP_STATE_WAITING.");
          break;
     }
 
@@ -3247,7 +3268,7 @@ _httpUpdate(http_t        *http,  /* I - Connection to server */
 
     if (sscanf(line, "HTTP/%d.%d%d", &major, &minor, &intstatus) != 3)
     {
-      *status = http->status = HTTP_ERROR;
+      *status = http->status = HTTP_STATUS_ERROR;
       return (0);
     }
 
@@ -3299,7 +3320,7 @@ _httpUpdate(http_t        *http,  /* I - Connection to server */
   {
     DEBUG_printf(("1_httpUpdate: Bad response line \"%s\"!", line));
     http->error  = EINVAL;
-    http->status = *status = HTTP_ERROR;
+    http->status = *status = HTTP_STATUS_ERROR;
     return (0);
   }
 
@@ -3318,7 +3339,7 @@ httpUpdate(http_t *http)          /* I - Connection to server */
 
 
   DEBUG_printf(("httpUpdate(http=%p), state=%s", http,
-                http_states[http->state + 1]));
+                http_state_string(http->state)));
 
  /*
   * Flush pending data, if any...
@@ -3329,7 +3350,7 @@ httpUpdate(http_t *http)          /* I - Connection to server */
     DEBUG_puts("2httpUpdate: flushing buffer...");
 
     if (httpFlushWrite(http) < 0)
-      return (HTTP_ERROR);
+      return (HTTP_STATUS_ERROR);
   }
 
  /*
@@ -3337,7 +3358,7 @@ httpUpdate(http_t *http)          /* I - Connection to server */
   */
 
   if (http->state == HTTP_STATE_WAITING)
-    return (HTTP_CONTINUE);
+    return (HTTP_STATUS_CONTINUE);
 
  /*
   * Grab all of the lines we can from the connection...
@@ -3349,7 +3370,7 @@ httpUpdate(http_t *http)          /* I - Connection to server */
   * See if there was an error...
   */
 
-  if (http->error == EPIPE && http->status > HTTP_CONTINUE)
+  if (http->error == EPIPE && http->status > HTTP_STATUS_CONTINUE)
   {
     DEBUG_printf(("1httpUpdate: Returning status %d...", http->status));
     return (http->status);
@@ -3359,8 +3380,8 @@ httpUpdate(http_t *http)          /* I - Connection to server */
   {
     DEBUG_printf(("1httpUpdate: socket error %d - %s", http->error,
                   strerror(http->error)));
-    http->status = HTTP_ERROR;
-    return (HTTP_ERROR);
+    http->status = HTTP_STATUS_ERROR;
+    return (HTTP_STATUS_ERROR);
   }
 
  /*
@@ -3718,10 +3739,10 @@ httpWrite2(http_t     *http,            /* I - Connection to server */
     if (http->state == HTTP_STATE_POST_RECV)
       http->state ++;
     else
-      http->state = HTTP_STATE_WAITING;
+      http->state = HTTP_STATE_STATUS;
 
     DEBUG_printf(("2httpWrite2: Changed state to %s.",
-                 http_states[http->state + 1]));
+                 http_state_string(http->state)));
   }
 
   DEBUG_printf(("1httpWrite2: Returning " CUPS_LLFMT ".", CUPS_LLCAST bytes));
@@ -3839,7 +3860,7 @@ httpWriteResponse(http_t        *http,    /* I - HTTP connection */
   if (!http->fields[HTTP_FIELD_DATE][0])
     httpSetField(http, HTTP_FIELD_DATE, httpGetDateString(time(NULL)));
 
-  if (status >= HTTP_BAD_REQUEST && http->keep_alive)
+  if (status >= HTTP_STATUS_BAD_REQUEST && http->keep_alive)
   {
     http->keep_alive = 0;
     httpSetField(http, HTTP_FIELD_KEEP_ALIVE, "");
@@ -3928,7 +3949,7 @@ httpWriteResponse(http_t        *http,    /* I - HTTP connection */
       if (httpPrintf(http, "Set-Cookie: %s path=/%s\r\n", http->cookie,
                      http->tls ? " secure" : "") < 1)
       {
-       http->status = HTTP_ERROR;
+       http->status = HTTP_STATUS_ERROR;
        return (-1);
       }
     }
@@ -3936,13 +3957,13 @@ httpWriteResponse(http_t        *http,  /* I - HTTP connection */
 
   if (httpWrite2(http, "\r\n", 2) < 2)
   {
-    http->status = HTTP_ERROR;
+    http->status = HTTP_STATUS_ERROR;
     return (-1);
   }
 
   if (httpFlushWrite(http) < 0)
   {
-    http->status = HTTP_ERROR;
+    http->status = HTTP_STATUS_ERROR;
     return (-1);
   }
 
@@ -3964,10 +3985,11 @@ httpWriteResponse(http_t        *http,  /* I - HTTP connection */
            http->state == HTTP_STATE_HEAD ||
            http->state == HTTP_STATE_PUT ||
            http->state == HTTP_STATE_TRACE ||
-           http->state == HTTP_STATE_CONNECT)
+           http->state == HTTP_STATE_CONNECT ||
+           http->state == HTTP_STATE_STATUS)
   {
     DEBUG_printf(("1httpWriteResponse: Resetting state to HTTP_STATE_WAITING, "
-                  "was %s.", http_states[http->state + 1]));
+                  "was %s.", http_state_string(http->state)));
     http->state = HTTP_STATE_WAITING;
   }
   else
@@ -4217,10 +4239,12 @@ http_content_coding_start(
   }
   else if (!strcmp(value, "x-gzip") || !strcmp(value, "gzip"))
   {
-    if (http->state == HTTP_GET_SEND || http->state == HTTP_POST_SEND)
+    if (http->state == HTTP_STATE_GET_SEND ||
+        http->state == HTTP_STATE_POST_SEND)
       coding = http->mode == _HTTP_MODE_SERVER ? _HTTP_CODING_GZIP :
                                                  _HTTP_CODING_GUNZIP;
-    else if (http->state == HTTP_STATE_POST_RECV || http->state == HTTP_PUT_RECV)
+    else if (http->state == HTTP_STATE_POST_RECV ||
+             http->state == HTTP_STATE_PUT_RECV)
       coding = http->mode == _HTTP_MODE_CLIENT ? _HTTP_CODING_GZIP :
                                                  _HTTP_CODING_GUNZIP;
     else
@@ -4231,10 +4255,12 @@ http_content_coding_start(
   }
   else if (!strcmp(value, "x-deflate") || !strcmp(value, "deflate"))
   {
-    if (http->state == HTTP_GET_SEND || http->state == HTTP_POST_SEND)
+    if (http->state == HTTP_STATE_GET_SEND ||
+        http->state == HTTP_STATE_POST_SEND)
       coding = http->mode == _HTTP_MODE_SERVER ? _HTTP_CODING_DEFLATE :
                                                  _HTTP_CODING_INFLATE;
-    else if (http->state == HTTP_STATE_POST_RECV || http->state == HTTP_PUT_RECV)
+    else if (http->state == HTTP_STATE_POST_RECV ||
+             http->state == HTTP_STATE_PUT_RECV)
       coding = http->mode == _HTTP_MODE_CLIENT ? _HTTP_CODING_DEFLATE :
                                                  _HTTP_CODING_INFLATE;
     else
@@ -4269,7 +4295,7 @@ http_content_coding_start(
                                 coding == _HTTP_CODING_DEFLATE ? -11 : 27, 7,
                                 Z_DEFAULT_STRATEGY)) < Z_OK)
         {
-          http->status = HTTP_ERROR;
+          http->status = HTTP_STATUS_ERROR;
           http->error  = zerr == Z_MEM_ERROR ? ENOMEM : EINVAL;
           return;
         }
@@ -4279,7 +4305,7 @@ http_content_coding_start(
     case _HTTP_CODING_GUNZIP :
         if ((http->dbuffer = malloc(HTTP_MAX_BUFFER)) == NULL)
         {
-          http->status = HTTP_ERROR;
+          http->status = HTTP_STATUS_ERROR;
           http->error  = errno;
           return;
         }
@@ -4295,7 +4321,7 @@ http_content_coding_start(
         {
           free(http->dbuffer);
           http->dbuffer = NULL;
-          http->status  = HTTP_ERROR;
+          http->status  = HTTP_STATUS_ERROR;
           http->error   = zerr == Z_MEM_ERROR ? ENOMEM : EINVAL;
           return;
         }
@@ -4368,7 +4394,7 @@ http_create(
 
   if ((http = calloc(sizeof(http_t), 1)) == NULL)
   {
-    _cupsSetError(IPP_INTERNAL_ERROR, strerror(errno), 0);
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(errno), 0);
     httpAddrFreeList(addrlist);
     return (NULL);
   }
@@ -4386,6 +4412,7 @@ http_create(
   http->gssctx   = GSS_C_NO_CONTEXT;
   http->gssname  = GSS_C_NO_NAME;
 #endif /* HAVE_GSSAPI */
+  http->status   = HTTP_STATUS_CONTINUE;
   http->version  = HTTP_VERSION_1_1;
 
   if (host)
@@ -4835,7 +4862,7 @@ http_send(http_t       *http,             /* I - Connection to server */
                };
 
 
-  DEBUG_printf(("7http_send(http=%p, request=HTTP_%s, uri=\"%s\")",
+  DEBUG_printf(("4http_send(http=%p, request=HTTP_%s, uri=\"%s\")",
                 http, codes[request], uri));
 
   if (http == NULL || uri == NULL)
@@ -4871,10 +4898,15 @@ http_send(http_t       *http,           /* I - Connection to server */
   * See if we had an error the last time around; if so, reconnect...
   */
 
-  if (http->fd < 0 || http->status == HTTP_ERROR ||
-      http->status >= HTTP_BAD_REQUEST)
-    if (httpReconnect(http))
+  if (http->fd < 0 || http->status == HTTP_STATUS_ERROR ||
+      http->status >= HTTP_STATUS_BAD_REQUEST)
+  {
+    DEBUG_printf(("5http_send: Reconnecting, fd=%d, status=%d, tls_upgrade=%d",
+                  http->fd, http->status, http->tls_upgrade));
+
+    if (httpReconnect2(http, 30000, NULL))
       return (-1);
+  }
 
  /*
   * Flush any written data that is pending...
@@ -4883,7 +4915,7 @@ http_send(http_t       *http,             /* I - Connection to server */
   if (http->wused)
   {
     if (httpFlushWrite(http) < 0)
-      if (httpReconnect(http))
+      if (httpReconnect2(http, 30000, NULL))
         return (-1);
   }
 
@@ -4894,13 +4926,13 @@ http_send(http_t       *http,           /* I - Connection to server */
   http->state         = request;
   http->data_encoding = HTTP_ENCODING_FIELDS;
 
-  if (request == HTTP_POST || request == HTTP_PUT)
+  if (request == HTTP_STATE_POST || request == HTTP_STATE_PUT)
     http->state ++;
 
-  http->status = HTTP_CONTINUE;
+  http->status = HTTP_STATUS_CONTINUE;
 
 #ifdef HAVE_SSL
-  if (http->encryption == HTTP_ENCRYPT_REQUIRED && !http->tls)
+  if (http->encryption == HTTP_ENCRYPTION_REQUIRED && !http->tls)
   {
     httpSetField(http, HTTP_FIELD_CONNECTION, "Upgrade");
     httpSetField(http, HTTP_FIELD_UPGRADE, "TLS/1.2,TLS/1.1,TLS/1.0");
@@ -4909,27 +4941,27 @@ http_send(http_t       *http,           /* I - Connection to server */
 
   if (httpPrintf(http, "%s %s HTTP/1.1\r\n", codes[request], buf) < 1)
   {
-    http->status = HTTP_ERROR;
+    http->status = HTTP_STATUS_ERROR;
     return (-1);
   }
 
   for (i = 0; i < HTTP_FIELD_MAX; i ++)
     if ((value = httpGetField(http, i)) != NULL && *value)
     {
-      DEBUG_printf(("9http_send: %s: %s", http_fields[i], value));
+      DEBUG_printf(("5http_send: %s: %s", http_fields[i], value));
 
       if (i == HTTP_FIELD_HOST)
       {
        if (httpPrintf(http, "Host: %s:%d\r\n", value,
                       httpAddrPort(http->hostaddr)) < 1)
        {
-         http->status = HTTP_ERROR;
+         http->status = HTTP_STATUS_ERROR;
          return (-1);
        }
       }
       else if (httpPrintf(http, "%s: %s\r\n", http_fields[i], value) < 1)
       {
-       http->status = HTTP_ERROR;
+       http->status = HTTP_STATUS_ERROR;
        return (-1);
       }
     }
@@ -4937,21 +4969,25 @@ http_send(http_t       *http,           /* I - Connection to server */
   if (http->cookie)
     if (httpPrintf(http, "Cookie: $Version=0; %s\r\n", http->cookie) < 1)
     {
-      http->status = HTTP_ERROR;
+      http->status = HTTP_STATUS_ERROR;
       return (-1);
     }
 
-  if (http->expect == HTTP_CONTINUE && http->mode == _HTTP_MODE_CLIENT &&
-      (http->state == HTTP_STATE_POST_RECV || http->state == HTTP_PUT_RECV))
+  DEBUG_printf(("5http_send: expect=%d, mode=%d, state=%d", http->expect,
+                http->mode, http->state));
+
+  if (http->expect == HTTP_STATUS_CONTINUE && http->mode == _HTTP_MODE_CLIENT &&
+      (http->state == HTTP_STATE_POST_RECV ||
+       http->state == HTTP_STATE_PUT_RECV))
     if (httpPrintf(http, "Expect: 100-continue\r\n") < 1)
     {
-      http->status = HTTP_ERROR;
+      http->status = HTTP_STATUS_ERROR;
       return (-1);
     }
 
   if (httpPrintf(http, "\r\n") < 1)
   {
-    http->status = HTTP_ERROR;
+    http->status = HTTP_STATUS_ERROR;
     return (-1);
   }
 
@@ -5031,7 +5067,7 @@ http_set_length(http_t *http)             /* I - Connection */
 
 
   DEBUG_printf(("http_set_length(http=%p) mode=%d state=%s", http, http->mode,
-                http_states[http->state + 1]));
+                http_state_string(http->state)));
 
   if ((remaining = httpGetLength2(http)) >= 0)
   {
@@ -5212,7 +5248,7 @@ http_setup_ssl(http_t *http)              /* I - Connection to server */
 #    else
     http->error  = errno;
 #    endif /* WIN32 */
-    http->status = HTTP_ERROR;
+    http->status = HTTP_STATUS_ERROR;
 
     if (!message)
       message = _("Unable to establish a secure connection to host.");
@@ -5230,8 +5266,8 @@ http_setup_ssl(http_t *http)              /* I - Connection to server */
     DEBUG_printf(("8http_setup_ssl: Unable to allocate credentials: %s",
                   strerror(errno)));
     http->error  = errno;
-    http->status = HTTP_ERROR;
-    _cupsSetHTTPError(HTTP_ERROR);
+    http->status = HTTP_STATUS_ERROR;
+    _cupsSetHTTPError(HTTP_STATUS_ERROR);
 
     return (-1);
   }
@@ -5255,7 +5291,7 @@ http_setup_ssl(http_t *http)              /* I - Connection to server */
     if (gnutls_error_is_fatal(status))
     {
       http->error  = EIO;
-      http->status = HTTP_ERROR;
+      http->status = HTTP_STATUS_ERROR;
 
       _cupsSetError(IPP_PKI_ERROR, gnutls_strerror(status), 0);
 
@@ -5276,8 +5312,8 @@ http_setup_ssl(http_t *http)              /* I - Connection to server */
   {
     DEBUG_puts("4http_setup_ssl: SSLCreateContext failed.");
     http->error  = errno = ENOMEM;
-    http->status = HTTP_ERROR;
-    _cupsSetHTTPError(HTTP_ERROR);
+    http->status = HTTP_STATUS_ERROR;
+    _cupsSetHTTPError(HTTP_STATUS_ERROR);
 
     return (-1);
   }
@@ -5457,7 +5493,7 @@ http_setup_ssl(http_t *http)              /* I - Connection to server */
   if (error)
   {
     http->error  = error;
-    http->status = HTTP_ERROR;
+    http->status = HTTP_STATUS_ERROR;
     errno        = ECONNREFUSED;
 
     CFRelease(http->tls);
@@ -5474,7 +5510,7 @@ http_setup_ssl(http_t *http)              /* I - Connection to server */
       message = _("Unable to establish a secure connection to host.");
 #endif /* HAVE_CSSMERRORSTRING */
 
-    _cupsSetError(IPP_PKI_ERROR, message, 1);
+    _cupsSetError(IPP_STATUS_ERROR_CUPS_PKI, message, 1);
 
     return (-1);
   }
@@ -5484,7 +5520,7 @@ http_setup_ssl(http_t *http)              /* I - Connection to server */
 
   if (!http->tls)
   {
-    _cupsSetHTTPError(HTTP_ERROR);
+    _cupsSetHTTPError(HTTP_STATUS_ERROR);
     return (-1);
   }
 
@@ -5501,7 +5537,7 @@ http_setup_ssl(http_t *http)              /* I - Connection to server */
     http->tls_credentials = NULL;
 
     http->error  = EIO;
-    http->status = HTTP_ERROR;
+    http->status = HTTP_STATUS_ERROR;
 
     _cupsSetError(IPP_PKI_ERROR,
                   _("Unable to establish a secure connection to host."), 1);
@@ -5518,7 +5554,7 @@ http_setup_ssl(http_t *http)              /* I - Connection to server */
     http->tls_credentials = NULL;
 
     http->error  = EIO;
-    http->status = HTTP_ERROR;
+    http->status = HTTP_STATUS_ERROR;
 
     _cupsSetError(IPP_PKI_ERROR,
                   _("Unable to establish a secure connection to host."), 1);
@@ -5577,6 +5613,45 @@ http_shutdown_ssl(http_t *http)          /* I - Connection to server */
 #endif /* HAVE_SSL */
 
 
+#ifdef DEBUG
+/*
+ * 'http_state_string()' - Return the string associated with a given HTTP state.
+ */
+
+static const char *                    /* O - State string */
+http_state_string(http_state_t state)  /* I - HTTP state */
+{
+  static char buffer[255];             /* Unknown value buffer */
+  static const char * const states[] = /* State strings */
+  {
+    "HTTP_STATE_ERROR",
+    "HTTP_STATE_WAITING",
+    "HTTP_STATE_OPTIONS",
+    "HTTP_STATE_GET",
+    "HTTP_STATE_GET_SEND",
+    "HTTP_STATE_HEAD",
+    "HTTP_STATE_POST",
+    "HTTP_STATE_POST_RECV",
+    "HTTP_STATE_POST_SEND",
+    "HTTP_STATE_PUT",
+    "HTTP_STATE_PUT_RECV",
+    "HTTP_STATE_DELETE",
+    "HTTP_STATE_TRACE",
+    "HTTP_STATE_CONNECT",
+    "HTTP_STATE_STATUS",
+    "HTTP_STATE_UNKNOWN_METHOD",
+    "HTTP_STATE_UNKNOWN_VERSION"
+  };
+
+  if (state >= HTTP_STATE_ERROR && state <= HTTP_STATE_UNKNOWN_VERSION)
+    return (states[state - HTTP_STATE_ERROR]);
+
+  snprintf(buffer, sizeof(buffer), "??? %d ???", (int)state);
+  return (buffer);
+}
+#endif /* DEBUG */
+
+
 #ifdef HAVE_SSL
 /*
  * 'http_upgrade()' - Force upgrade to TLS encryption.
@@ -5610,6 +5685,7 @@ http_upgrade(http_t *http)                /* I - Connection to server */
   * encryption on the link...
   */
 
+  http->tls_upgrade         = 1;
   http->field_authorization = NULL;    /* Don't free the auth string */
 
   httpClearFields(http);
@@ -5622,7 +5698,7 @@ http_upgrade(http_t *http)                /* I - Connection to server */
     * Wait for the secure connection...
     */
 
-    while (httpUpdate(http) == HTTP_CONTINUE);
+    while (httpUpdate(http) == HTTP_STATUS_CONTINUE);
   }
 
  /*
@@ -5636,6 +5712,7 @@ http_upgrade(http_t *http)                /* I - Connection to server */
   http->expect              = myhttp.expect;
   http->field_authorization = myhttp.field_authorization;
   http->digest_tries        = myhttp.digest_tries;
+  http->tls_upgrade         = 0;
 
  /*
   * See if we actually went secure...
index 345bf27f98aabcaef75b55e2093ca5c29ecf2b5e..ea188d2929736976e047acde5c80983ba63a8567 100644 (file)
@@ -3,7 +3,7 @@
  *
  *   Hyper-Text Transport Protocol definitions for CUPS.
  *
- *   Copyright 2007-2012 by Apple Inc.
+ *   Copyright 2007-2013 by Apple Inc.
  *   Copyright 1997-2007 by Easy Software Products, all rights reserved.
  *
  *   These coded instructions, statements, and computer programs are the
@@ -284,10 +284,10 @@ typedef enum http_status_e                /**** HTTP status codes ****/
   HTTP_STATUS_GATEWAY_TIMEOUT,         /* Gateway connection timed out */
   HTTP_STATUS_NOT_SUPPORTED,           /* HTTP version not supported */
 
-  CUPS_STATUS_AUTHORIZATION_CANCELED = 1000,
+  HTTP_STATUS_CUPS_AUTHORIZATION_CANCELED = 1000,
                                        /* User canceled authorization @since CUPS 1.4@ */
-  CUPS_STATUS_PKI_ERROR,               /* Error negotiating a secure connection @since CUPS 1.5/OS X 10.7@ */
-  CUPS_STATUS_WEBIF_DISABLED           /* Web interface is disabled @private@ */
+  HTTP_STATUS_CUPS_PKI_ERROR,          /* Error negotiating a secure connection @since CUPS 1.5/OS X 10.7@ */
+  HTTP_STATUS_CUPS_WEBIF_DISABLED      /* Web interface is disabled @private@ */
 
 #  ifndef _CUPS_NO_DEPRECATED
 /* Old names for this enumeration */
@@ -338,9 +338,9 @@ typedef enum http_status_e          /**** HTTP status codes ****/
 #    define HTTP_GATEWAY_TIMEOUT       HTTP_STATUS_GATEWAY_TIMEOUT
 #    define HTTP_NOT_SUPPORTED         HTTP_STATUS_NOT_SUPPORTED
 
-#    define HTTP_AUTHORIZATION_CANCELED        CUPS_STATUS_AUTHORIZATION_CANCELED
-#    define HTTP_PKI_ERROR             CUPS_STATUS_PKI_ERROR
-#    define HTTP_WEBIF_DISABLED                CUPS_STATUS_WEBIF_DISABLED
+#    define HTTP_AUTHORIZATION_CANCELED        HTTP_STATUS_CUPS_AUTHORIZATION_CANCELED
+#    define HTTP_PKI_ERROR             HTTP_STATUS_CUPS_PKI_ERROR
+#    define HTTP_WEBIF_DISABLED                HTTP_STATUS_CUPS_WEBIF_DISABLED
 #  endif /* !_CUPS_NO_DEPRECATED */
 } http_status_t;
 
index 06d22bd0ab9306ad93c6d43ce349f8128c2174af..265d33c5ad6ef181a8aa97e23ab5496cb0a3102d 100644 (file)
@@ -590,7 +590,7 @@ ippAttributeString(
         bufptr ++;
     }
 
-    switch (attr->value_tag & ~IPP_TAG_COPY)
+    switch (attr->value_tag & ~IPP_TAG_CUPS_CONST)
     {
       case IPP_TAG_ENUM :
           ptr = ippEnumString(attr->name, val->integer);
@@ -1577,7 +1577,7 @@ ippCreateRequestedArray(ipp_t *request)   /* I - IPP request */
     * default to "all"...
     */
 
-    if (ippGetOperation(request) == IPP_GET_JOBS)
+    if (ippGetOperation(request) == IPP_OP_GET_JOBS)
     {
       ra = cupsArrayNew((cups_array_func_t)strcmp, NULL);
       cupsArrayAdd(ra, "job-id");
@@ -1732,8 +1732,8 @@ ippEnumString(const char *attrname,       /* I - Attribute name */
                                  sizeof(ipp_job_collation_types[0]))))
     return (ipp_job_collation_types[enumvalue - 3]);
   else if (!strcmp(attrname, "job-state") &&
-          enumvalue >= IPP_JOB_PENDING && enumvalue <= IPP_JOB_COMPLETED)
-    return (ipp_job_states[enumvalue - IPP_JOB_PENDING]);
+          enumvalue >= IPP_JSTATE_PENDING && enumvalue <= IPP_JSTATE_COMPLETED)
+    return (ipp_job_states[enumvalue - IPP_JSTATE_PENDING]);
   else if (!strcmp(attrname, "operations-supported"))
     return (ippOpString((ipp_op_t)enumvalue));
   else if ((!strcmp(attrname, "orientation-requested") ||
@@ -1753,8 +1753,8 @@ ippEnumString(const char *attrname,       /* I - Attribute name */
                                  sizeof(ipp_print_qualities[0]))))
     return (ipp_print_qualities[enumvalue - 3]);
   else if (!strcmp(attrname, "printer-state") &&
-           enumvalue >= IPP_PRINTER_IDLE && enumvalue <= IPP_PRINTER_STOPPED)
-    return (ipp_printer_states[enumvalue - IPP_PRINTER_IDLE]);
+           enumvalue >= IPP_PSTATE_IDLE && enumvalue <= IPP_PSTATE_STOPPED)
+    return (ipp_printer_states[enumvalue - IPP_PSTATE_IDLE]);
 
  /*
   * Not a standard enum value, just return the decimal equivalent...
@@ -1964,7 +1964,7 @@ ippOpString(ipp_op_t op)          /* I - Operation ID */
   else if (op == IPP_OP_PRIVATE)
     return ("windows-ext");
   else if (op >= IPP_OP_CUPS_GET_DEFAULT && op <= IPP_OP_CUPS_GET_PPD)
-    return (ipp_cups_ops[op - CUPS_GET_DEFAULT]);
+    return (ipp_cups_ops[op - IPP_OP_CUPS_GET_DEFAULT]);
   else if (op == IPP_OP_CUPS_GET_DOCUMENT)
     return (ipp_cups_ops2[0]);
 
@@ -2063,7 +2063,7 @@ ippSetPort(int p)                 /* I - Port number to use */
 const char *                           /* O - Tag name */
 ippTagString(ipp_tag_t tag)            /* I - Tag value */
 {
-  tag &= IPP_TAG_MASK;
+  tag &= IPP_TAG_CUPS_MASK;
 
   if (tag < (ipp_tag_t)(sizeof(ipp_tag_names) / sizeof(ipp_tag_names[0])))
     return (ipp_tag_names[tag]);
index 0cc6706dcdc736287f35ad13f78beee32ddac96a..68665ebc54f3fb4b867a20005f8a7a5bd41abfa1 100644 (file)
@@ -503,7 +503,7 @@ ippAddInteger(ipp_t      *ipp,              /* I - IPP message */
                 "name=\"%s\", value=%d)", ipp, group, ippTagString(group),
                value_tag, ippTagString(value_tag), name, value));
 
-  value_tag &= IPP_TAG_MASK;
+  value_tag &= IPP_TAG_CUPS_MASK;
 
  /*
   * Special-case for legacy usage: map out-of-band attributes to new ippAddOutOfBand
@@ -575,7 +575,7 @@ ippAddIntegers(ipp_t      *ipp,             /* I - IPP message */
                group, ippTagString(group), value_tag, ippTagString(value_tag), name,
                num_values, values));
 
-  value_tag &= IPP_TAG_MASK;
+  value_tag &= IPP_TAG_CUPS_MASK;
 
  /*
   * Range check input...
@@ -702,7 +702,7 @@ ippAddOutOfBand(ipp_t      *ipp,    /* I - IPP message */
                 "name=\"%s\")", ipp, group, ippTagString(group), value_tag,
                 ippTagString(value_tag), name));
 
-  value_tag &= IPP_TAG_MASK;
+  value_tag &= IPP_TAG_CUPS_MASK;
 
  /*
   * Range check input...
@@ -1029,7 +1029,7 @@ ippAddString(ipp_t      *ipp,             /* I - IPP message */
   * Range check input...
   */
 
-  temp_tag = (ipp_tag_t)((int)value_tag & IPP_TAG_MASK);
+  temp_tag = (ipp_tag_t)((int)value_tag & IPP_TAG_CUPS_MASK);
 
 #if 0
   if (!ipp || !name || group < IPP_TAG_ZERO ||
@@ -1051,13 +1051,13 @@ ippAddString(ipp_t      *ipp,           /* I - IPP message */
   * See if we need to map charset, language, or locale values...
   */
 
-  if (language && ((int)value_tag & IPP_TAG_COPY) &&
+  if (language && ((int)value_tag & IPP_TAG_CUPS_CONST) &&
       strcmp(language, ipp_lang_code(language, code, sizeof(code))))
     value_tag = temp_tag;              /* Don't do a fast copy */
-  else if (value && value_tag == (ipp_tag_t)(IPP_TAG_CHARSET | IPP_TAG_COPY) &&
+  else if (value && value_tag == (ipp_tag_t)(IPP_TAG_CHARSET | IPP_TAG_CUPS_CONST) &&
            strcmp(value, ipp_get_code(value, code, sizeof(code))))
     value_tag = temp_tag;              /* Don't do a fast copy */
-  else if (value && value_tag == (ipp_tag_t)(IPP_TAG_LANGUAGE | IPP_TAG_COPY) &&
+  else if (value && value_tag == (ipp_tag_t)(IPP_TAG_LANGUAGE | IPP_TAG_CUPS_CONST) &&
            strcmp(value, ipp_lang_code(value, code, sizeof(code))))
     value_tag = temp_tag;              /* Don't do a fast copy */
 
@@ -1072,7 +1072,7 @@ ippAddString(ipp_t      *ipp,             /* I - IPP message */
   * Initialize the attribute data...
   */
 
-  if ((int)value_tag & IPP_TAG_COPY)
+  if ((int)value_tag & IPP_TAG_CUPS_CONST)
   {
     attr->values[0].string.language = (char *)language;
     attr->values[0].string.text     = (char *)value;
@@ -1364,7 +1364,7 @@ ippAddStrings(
   * Range check input...
   */
 
-  temp_tag = (ipp_tag_t)((int)value_tag & IPP_TAG_MASK);
+  temp_tag = (ipp_tag_t)((int)value_tag & IPP_TAG_CUPS_MASK);
 
 #if 0
   if (!ipp || !name || group < IPP_TAG_ZERO ||
@@ -1388,10 +1388,10 @@ ippAddStrings(
   * See if we need to map charset, language, or locale values...
   */
 
-  if (language && ((int)value_tag & IPP_TAG_COPY) &&
+  if (language && ((int)value_tag & IPP_TAG_CUPS_CONST) &&
       strcmp(language, ipp_lang_code(language, code, sizeof(code))))
     value_tag = temp_tag;              /* Don't do a fast copy */
-  else if (values && value_tag == (ipp_tag_t)(IPP_TAG_CHARSET | IPP_TAG_COPY))
+  else if (values && value_tag == (ipp_tag_t)(IPP_TAG_CHARSET | IPP_TAG_CUPS_CONST))
   {
     for (i = 0; i < num_values; i ++)
       if (strcmp(values[i], ipp_get_code(values[i], code, sizeof(code))))
@@ -1400,7 +1400,7 @@ ippAddStrings(
         break;
       }
   }
-  else if (values && value_tag == (ipp_tag_t)(IPP_TAG_LANGUAGE | IPP_TAG_COPY))
+  else if (values && value_tag == (ipp_tag_t)(IPP_TAG_LANGUAGE | IPP_TAG_CUPS_CONST))
   {
     for (i = 0; i < num_values; i ++)
       if (strcmp(values[i], ipp_lang_code(values[i], code, sizeof(code))))
@@ -1429,7 +1429,7 @@ ippAddStrings(
     {
       if (value == attr->values)
       {
-        if ((int)value_tag & IPP_TAG_COPY)
+        if ((int)value_tag & IPP_TAG_CUPS_CONST)
           value->string.language = (char *)language;
         else
           value->string.language = _cupsStrAlloc(ipp_lang_code(language, code,
@@ -1441,7 +1441,7 @@ ippAddStrings(
 
     if (values)
     {
-      if ((int)value_tag & IPP_TAG_COPY)
+      if ((int)value_tag & IPP_TAG_CUPS_CONST)
         value->string.text = (char *)*values++;
       else if (value_tag == IPP_TAG_CHARSET)
        value->string.text = _cupsStrAlloc(ipp_get_code(*values++, code, sizeof(code)));
@@ -1621,9 +1621,9 @@ ippCopyAttribute(
   * Copy it...
   */
 
-  quickcopy = quickcopy ? IPP_TAG_COPY : 0;
+  quickcopy = quickcopy ? IPP_TAG_CUPS_CONST : 0;
 
-  switch (srcattr->value_tag & ~IPP_TAG_COPY)
+  switch (srcattr->value_tag & ~IPP_TAG_CUPS_CONST)
   {
     case IPP_TAG_ZERO :
         dstattr = ippAddSeparator(dst);
@@ -1676,7 +1676,7 @@ ippCopyAttribute(
               i --, srcval ++, dstval ++)
            dstval->string.text = srcval->string.text;
         }
-       else if (srcattr->value_tag & IPP_TAG_COPY)
+       else if (srcattr->value_tag & IPP_TAG_CUPS_CONST)
        {
          for (i = srcattr->num_values, srcval = srcattr->values,
                   dstval = dstattr->values;
@@ -1753,7 +1753,7 @@ ippCopyAttribute(
            dstval->string.text     = srcval->string.text;
           }
         }
-       else if (srcattr->value_tag & IPP_TAG_COPY)
+       else if (srcattr->value_tag & IPP_TAG_CUPS_CONST)
        {
          for (i = srcattr->num_values, srcval = srcattr->values,
                   dstval = dstattr->values;
@@ -2149,7 +2149,7 @@ ippFindNextAttribute(ipp_t      *ipp,     /* I - IPP message */
     DEBUG_printf(("4ippFindAttribute: attr=%p, name=\"%s\"", attr,
                   attr->name));
 
-    value_tag = (ipp_tag_t)(attr->value_tag & IPP_TAG_MASK);
+    value_tag = (ipp_tag_t)(attr->value_tag & IPP_TAG_CUPS_MASK);
 
     if (attr->name != NULL && _cups_strcasecmp(attr->name, name) == 0 &&
         (value_tag == type || type == IPP_TAG_ZERO ||
@@ -2520,7 +2520,7 @@ ippGetState(ipp_t *ipp)                   /* I - IPP message */
   */
 
   if (!ipp)
-    return (IPP_IDLE);
+    return (IPP_STATE_IDLE);
 
  /*
   * Return the value...
@@ -2544,7 +2544,7 @@ ippGetStatusCode(ipp_t *ipp)              /* I - IPP response or event message */
   */
 
   if (!ipp)
-    return (IPP_INTERNAL_ERROR);
+    return (IPP_STATUS_ERROR_INTERNAL);
 
  /*
   * Return the value...
@@ -2608,7 +2608,7 @@ ippGetValueTag(ipp_attribute_t *attr)     /* I - IPP attribute */
   * Return the value...
   */
 
-  return (attr->value_tag & IPP_TAG_MASK);
+  return (attr->value_tag & IPP_TAG_CUPS_MASK);
 }
 
 
@@ -2895,7 +2895,7 @@ ippRead(http_t *http,                     /* I - HTTP connection */
                 http, ipp, CUPS_LLCAST (http ? http->data_remaining : -1)));
 
   if (!http)
-    return (IPP_ERROR);
+    return (IPP_STATE_ERROR);
 
   DEBUG_printf(("2ippRead: http->state=%d, http->used=%d", http->state,
                 http->used));
@@ -2947,23 +2947,23 @@ ippReadIO(void       *src,              /* I - Data source */
 
   DEBUG_printf(("ippReadIO(src=%p, cb=%p, blocking=%d, parent=%p, ipp=%p)",
                 src, cb, blocking, parent, ipp));
-  DEBUG_printf(("2ippReadIO: ipp->state=%d", ipp ? ipp->state : IPP_ERROR));
+  DEBUG_printf(("2ippReadIO: ipp->state=%d", ipp ? ipp->state : IPP_STATE_ERROR));
 
   if (!src || !ipp)
-    return (IPP_ERROR);
+    return (IPP_STATE_ERROR);
 
   if ((buffer = (unsigned char *)_cupsBufferGet(IPP_BUF_SIZE)) == NULL)
   {
     DEBUG_puts("1ippReadIO: Unable to get read buffer.");
-    return (IPP_ERROR);
+    return (IPP_STATE_ERROR);
   }
 
   switch (ipp->state)
   {
-    case IPP_IDLE :
+    case IPP_STATE_IDLE :
         ipp->state ++; /* Avoid common problem... */
 
-    case IPP_HEADER :
+    case IPP_STATE_HEADER :
         if (parent == NULL)
        {
         /*
@@ -2974,7 +2974,7 @@ ippReadIO(void       *src,                /* I - Data source */
          {
            DEBUG_puts("1ippReadIO: Unable to read header.");
            _cupsBufferRelease((char *)buffer);
-           return (IPP_ERROR);
+           return (IPP_STATE_ERROR);
          }
 
         /*
@@ -2994,7 +2994,7 @@ ippReadIO(void       *src,                /* I - Data source */
                        ipp->request.any.request_id));
         }
 
-        ipp->state   = IPP_ATTRIBUTE;
+        ipp->state   = IPP_STATE_ATTRIBUTE;
        ipp->current = NULL;
        ipp->curtag  = IPP_TAG_ZERO;
        ipp->prev    = ipp->last;
@@ -3006,14 +3006,14 @@ ippReadIO(void       *src,              /* I - Data source */
         if (!blocking)
          break;
 
-    case IPP_ATTRIBUTE :
+    case IPP_STATE_ATTRIBUTE :
         for (;;)
        {
          if ((*cb)(src, buffer, 1) < 1)
          {
            DEBUG_puts("1ippReadIO: Callback returned EOF/error");
            _cupsBufferRelease((char *)buffer);
-           return (IPP_ERROR);
+           return (IPP_STATE_ERROR);
          }
 
          DEBUG_printf(("2ippReadIO: ipp->current=%p, ipp->prev=%p",
@@ -3034,22 +3034,22 @@ ippReadIO(void       *src,              /* I - Data source */
            {
              DEBUG_puts("1ippReadIO: Callback returned EOF/error");
              _cupsBufferRelease((char *)buffer);
-             return (IPP_ERROR);
+             return (IPP_STATE_ERROR);
            }
 
            tag = (ipp_tag_t)((((((buffer[0] << 8) | buffer[1]) << 8) |
                                buffer[2]) << 8) | buffer[3]);
 
-            if (tag & IPP_TAG_COPY)
+            if (tag & IPP_TAG_CUPS_CONST)
             {
              /*
               * Fail if the high bit is set in the tag...
               */
 
-             _cupsSetError(IPP_INTERNAL_ERROR, _("IPP extension tag larger than 0x7FFFFFFF."), 1);
+             _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("IPP extension tag larger than 0x7FFFFFFF."), 1);
              DEBUG_printf(("1ippReadIO: bad tag 0x%x.", tag));
              _cupsBufferRelease((char *)buffer);
-             return (IPP_ERROR);
+             return (IPP_STATE_ERROR);
             }
           }
 
@@ -3061,7 +3061,7 @@ ippReadIO(void       *src,                /* I - Data source */
 
             DEBUG_puts("2ippReadIO: IPP_TAG_END.");
 
-           ipp->state = IPP_DATA;
+           ipp->state = IPP_STATE_DATA;
            break;
          }
           else if (tag < IPP_TAG_UNSUPPORTED_VALUE)
@@ -3093,17 +3093,17 @@ ippReadIO(void       *src,              /* I - Data source */
          {
            DEBUG_puts("1ippReadIO: unable to read name length.");
            _cupsBufferRelease((char *)buffer);
-           return (IPP_ERROR);
+           return (IPP_STATE_ERROR);
          }
 
           n = (buffer[0] << 8) | buffer[1];
 
           if (n >= IPP_BUF_SIZE)
          {
-           _cupsSetError(IPP_INTERNAL_ERROR, _("IPP name larger than 32767 bytes."), 1);
+           _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("IPP name larger than 32767 bytes."), 1);
            DEBUG_printf(("1ippReadIO: bad name length %d.", n));
            _cupsBufferRelease((char *)buffer);
-           return (IPP_ERROR);
+           return (IPP_STATE_ERROR);
          }
 
           DEBUG_printf(("2ippReadIO: name length=%d", n));
@@ -3117,14 +3117,14 @@ ippReadIO(void       *src,              /* I - Data source */
 
             if (ipp->current == NULL)
            {
-             _cupsSetError(IPP_INTERNAL_ERROR, _("IPP attribute has no name."), 1);
+             _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("IPP attribute has no name."), 1);
              DEBUG_puts("1ippReadIO: Attribute without name and no current.");
              _cupsBufferRelease((char *)buffer);
-             return (IPP_ERROR);
+             return (IPP_STATE_ERROR);
            }
 
             attr      = ipp->current;
-           value_tag = (ipp_tag_t)(attr->value_tag & IPP_TAG_MASK);
+           value_tag = (ipp_tag_t)(attr->value_tag & IPP_TAG_CUPS_MASK);
 
           /*
            * Make sure we aren't adding a new value of a different
@@ -3153,14 +3153,14 @@ ippReadIO(void       *src,              /* I - Data source */
                  (tag < IPP_TAG_TEXT || tag > IPP_TAG_MIMETYPE) &&
                  tag != IPP_TAG_NOVALUE)
              {
-               _cupsSetError(IPP_INTERNAL_ERROR,
+               _cupsSetError(IPP_STATUS_ERROR_INTERNAL,
                              _("IPP 1setOf attribute with incompatible value "
                                "tags."), 1);
                DEBUG_printf(("1ippReadIO: 1setOf value tag %x(%s) != %x(%s)",
                              value_tag, ippTagString(value_tag), tag,
                              ippTagString(tag)));
                _cupsBufferRelease((char *)buffer);
-               return (IPP_ERROR);
+               return (IPP_STATE_ERROR);
              }
 
               if (value_tag != tag)
@@ -3180,14 +3180,14 @@ ippReadIO(void       *src,              /* I - Data source */
 
              if (tag != IPP_TAG_INTEGER && tag != IPP_TAG_RANGE)
              {
-               _cupsSetError(IPP_INTERNAL_ERROR,
+               _cupsSetError(IPP_STATUS_ERROR_INTERNAL,
                              _("IPP 1setOf attribute with incompatible value "
                                "tags."), 1);
                DEBUG_printf(("1ippReadIO: 1setOf value tag %x(%s) != %x(%s)",
                              value_tag, ippTagString(value_tag), tag,
                              ippTagString(tag)));
                _cupsBufferRelease((char *)buffer);
-               return (IPP_ERROR);
+               return (IPP_STATE_ERROR);
              }
 
               if (value_tag == IPP_TAG_INTEGER && tag == IPP_TAG_RANGE)
@@ -3203,14 +3203,14 @@ ippReadIO(void       *src,              /* I - Data source */
             }
            else if (value_tag != tag)
            {
-             _cupsSetError(IPP_INTERNAL_ERROR,
+             _cupsSetError(IPP_STATUS_ERROR_INTERNAL,
                            _("IPP 1setOf attribute with incompatible value "
                              "tags."), 1);
              DEBUG_printf(("1ippReadIO: value tag %x(%s) != %x(%s)",
                            value_tag, ippTagString(value_tag), tag,
                            ippTagString(tag)));
              _cupsBufferRelease((char *)buffer);
-             return (IPP_ERROR);
+             return (IPP_STATE_ERROR);
             }
 
            /*
@@ -3220,7 +3220,7 @@ ippReadIO(void       *src,                /* I - Data source */
            if ((value = ipp_set_value(ipp, &attr, attr->num_values)) == NULL)
            {
              _cupsBufferRelease((char *)buffer);
-             return (IPP_ERROR);
+             return (IPP_STATE_ERROR);
            }
          }
          else if (tag == IPP_TAG_MEMBERNAME)
@@ -3231,10 +3231,10 @@ ippReadIO(void       *src,              /* I - Data source */
 
            if (n)
            {
-             _cupsSetError(IPP_INTERNAL_ERROR, _("IPP member name is not empty."), 1);
+             _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("IPP member name is not empty."), 1);
              DEBUG_puts("1ippReadIO: member name not empty.");
              _cupsBufferRelease((char *)buffer);
-             return (IPP_ERROR);
+             return (IPP_STATE_ERROR);
            }
 
             if (ipp->current)
@@ -3243,10 +3243,10 @@ ippReadIO(void       *src,              /* I - Data source */
            attr = ipp->current = ipp_add_attr(ipp, NULL, ipp->curtag, IPP_TAG_ZERO, 1);
            if (!attr)
            {
-             _cupsSetHTTPError(HTTP_ERROR);
+             _cupsSetHTTPError(HTTP_STATUS_ERROR);
              DEBUG_puts("1ippReadIO: unable to allocate attribute.");
              _cupsBufferRelease((char *)buffer);
-             return (IPP_ERROR);
+             return (IPP_STATE_ERROR);
            }
 
            DEBUG_printf(("2ippReadIO: membername, ipp->current=%p, ipp->prev=%p",
@@ -3264,7 +3264,7 @@ ippReadIO(void       *src,                /* I - Data source */
            {
              DEBUG_puts("1ippReadIO: unable to read name.");
              _cupsBufferRelease((char *)buffer);
-             return (IPP_ERROR);
+             return (IPP_STATE_ERROR);
            }
 
            buffer[n] = '\0';
@@ -3275,10 +3275,10 @@ ippReadIO(void       *src,              /* I - Data source */
            if ((attr = ipp->current = ipp_add_attr(ipp, (char *)buffer, ipp->curtag, tag,
                                                    1)) == NULL)
            {
-             _cupsSetHTTPError(HTTP_ERROR);
+             _cupsSetHTTPError(HTTP_STATUS_ERROR);
              DEBUG_puts("1ippReadIO: unable to allocate attribute.");
              _cupsBufferRelease((char *)buffer);
-             return (IPP_ERROR);
+             return (IPP_STATE_ERROR);
            }
 
            DEBUG_printf(("2ippReadIO: name=\"%s\", ipp->current=%p, "
@@ -3296,7 +3296,7 @@ ippReadIO(void       *src,                /* I - Data source */
          {
            DEBUG_puts("1ippReadIO: unable to read value length.");
            _cupsBufferRelease((char *)buffer);
-           return (IPP_ERROR);
+           return (IPP_STATE_ERROR);
          }
 
          n = (buffer[0] << 8) | buffer[1];
@@ -3304,11 +3304,11 @@ ippReadIO(void       *src,              /* I - Data source */
 
          if (n >= IPP_BUF_SIZE)
          {
-           _cupsSetError(IPP_INTERNAL_ERROR,
+           _cupsSetError(IPP_STATUS_ERROR_INTERNAL,
                          _("IPP value larger than 32767 bytes."), 1);
            DEBUG_printf(("1ippReadIO: bad value length %d.", n));
            _cupsBufferRelease((char *)buffer);
-           return (IPP_ERROR);
+           return (IPP_STATE_ERROR);
          }
 
          switch (tag)
@@ -3318,21 +3318,21 @@ ippReadIO(void       *src,              /* I - Data source */
                if (n != 4)
                {
                  if (tag == IPP_TAG_INTEGER)
-                   _cupsSetError(IPP_INTERNAL_ERROR,
+                   _cupsSetError(IPP_STATUS_ERROR_INTERNAL,
                                  _("IPP integer value not 4 bytes."), 1);
                  else
-                   _cupsSetError(IPP_INTERNAL_ERROR,
+                   _cupsSetError(IPP_STATUS_ERROR_INTERNAL,
                                  _("IPP enum value not 4 bytes."), 1);
                  DEBUG_printf(("1ippReadIO: bad integer value length %d.", n));
                  _cupsBufferRelease((char *)buffer);
-                 return (IPP_ERROR);
+                 return (IPP_STATE_ERROR);
                }
 
                if ((*cb)(src, buffer, 4) < 4)
                {
                  DEBUG_puts("1ippReadIO: Unable to read integer value.");
                  _cupsBufferRelease((char *)buffer);
-                 return (IPP_ERROR);
+                 return (IPP_STATE_ERROR);
                }
 
                n = (((((buffer[0] << 8) | buffer[1]) << 8) | buffer[2]) << 8) |
@@ -3347,18 +3347,18 @@ ippReadIO(void       *src,              /* I - Data source */
            case IPP_TAG_BOOLEAN :
                if (n != 1)
                {
-                 _cupsSetError(IPP_INTERNAL_ERROR, _("IPP boolean value not 1 byte."),
+                 _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("IPP boolean value not 1 byte."),
                                1);
                  DEBUG_printf(("1ippReadIO: bad boolean value length %d.", n));
                  _cupsBufferRelease((char *)buffer);
-                 return (IPP_ERROR);
+                 return (IPP_STATE_ERROR);
                }
 
                if ((*cb)(src, buffer, 1) < 1)
                {
                  DEBUG_puts("1ippReadIO: Unable to read boolean value.");
                  _cupsBufferRelease((char *)buffer);
-                 return (IPP_ERROR);
+                 return (IPP_STATE_ERROR);
                }
 
                 value->boolean = buffer[0];
@@ -3396,7 +3396,7 @@ ippReadIO(void       *src,                /* I - Data source */
                  {
                    DEBUG_puts("1ippReadIO: unable to read string value.");
                    _cupsBufferRelease((char *)buffer);
-                   return (IPP_ERROR);
+                   return (IPP_STATE_ERROR);
                  }
                }
 
@@ -3408,35 +3408,35 @@ ippReadIO(void       *src,              /* I - Data source */
            case IPP_TAG_DATE :
                if (n != 11)
                {
-                 _cupsSetError(IPP_INTERNAL_ERROR, _("IPP date value not 11 bytes."), 1);
+                 _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("IPP date value not 11 bytes."), 1);
                  DEBUG_printf(("1ippReadIO: bad date value length %d.", n));
                  _cupsBufferRelease((char *)buffer);
-                 return (IPP_ERROR);
+                 return (IPP_STATE_ERROR);
                }
 
                if ((*cb)(src, value->date, 11) < 11)
                {
                  DEBUG_puts("1ippReadIO: Unable to read date value.");
                  _cupsBufferRelease((char *)buffer);
-                 return (IPP_ERROR);
+                 return (IPP_STATE_ERROR);
                }
                break;
 
            case IPP_TAG_RESOLUTION :
                if (n != 9)
                {
-                 _cupsSetError(IPP_INTERNAL_ERROR,
+                 _cupsSetError(IPP_STATUS_ERROR_INTERNAL,
                                _("IPP resolution value not 9 bytes."), 1);
                  DEBUG_printf(("1ippReadIO: bad resolution value length %d.", n));
                  _cupsBufferRelease((char *)buffer);
-                 return (IPP_ERROR);
+                 return (IPP_STATE_ERROR);
                }
 
                if ((*cb)(src, buffer, 9) < 9)
                {
                  DEBUG_puts("1ippReadIO: Unable to read resolution value.");
                  _cupsBufferRelease((char *)buffer);
-                 return (IPP_ERROR);
+                 return (IPP_STATE_ERROR);
                }
 
                 value->resolution.xres =
@@ -3452,19 +3452,19 @@ ippReadIO(void       *src,              /* I - Data source */
            case IPP_TAG_RANGE :
                if (n != 8)
                {
-                 _cupsSetError(IPP_INTERNAL_ERROR,
+                 _cupsSetError(IPP_STATUS_ERROR_INTERNAL,
                                _("IPP rangeOfInteger value not 8 bytes."), 1);
                  DEBUG_printf(("1ippReadIO: bad rangeOfInteger value length "
                                "%d.", n));
                  _cupsBufferRelease((char *)buffer);
-                 return (IPP_ERROR);
+                 return (IPP_STATE_ERROR);
                }
 
                if ((*cb)(src, buffer, 8) < 8)
                {
                  DEBUG_puts("1ippReadIO: Unable to read range value.");
                  _cupsBufferRelease((char *)buffer);
-                 return (IPP_ERROR);
+                 return (IPP_STATE_ERROR);
                }
 
                 value->range.lower =
@@ -3480,17 +3480,17 @@ ippReadIO(void       *src,              /* I - Data source */
                if (n < 4)
                {
                  if (tag == IPP_TAG_TEXTLANG)
-                   _cupsSetError(IPP_INTERNAL_ERROR,
+                   _cupsSetError(IPP_STATUS_ERROR_INTERNAL,
                                  _("IPP textWithLanguage value less than "
                                    "minimum 4 bytes."), 1);
                  else
-                   _cupsSetError(IPP_INTERNAL_ERROR,
+                   _cupsSetError(IPP_STATUS_ERROR_INTERNAL,
                                  _("IPP nameWithLanguage value less than "
                                    "minimum 4 bytes."), 1);
                  DEBUG_printf(("1ippReadIO: bad stringWithLanguage value "
                                "length %d.", n));
                  _cupsBufferRelease((char *)buffer);
-                 return (IPP_ERROR);
+                 return (IPP_STATE_ERROR);
                }
 
                if ((*cb)(src, buffer, n) < n)
@@ -3498,7 +3498,7 @@ ippReadIO(void       *src,                /* I - Data source */
                  DEBUG_puts("1ippReadIO: Unable to read string w/language "
                             "value.");
                  _cupsBufferRelease((char *)buffer);
-                 return (IPP_ERROR);
+                 return (IPP_STATE_ERROR);
                }
 
                 bufptr = buffer;
@@ -3518,21 +3518,21 @@ ippReadIO(void       *src,              /* I - Data source */
                if ((bufptr + 2 + n) >= (buffer + IPP_BUF_SIZE) ||
                    n >= sizeof(string))
                {
-                 _cupsSetError(IPP_INTERNAL_ERROR,
+                 _cupsSetError(IPP_STATUS_ERROR_INTERNAL,
                                _("IPP language length overflows value."), 1);
                  DEBUG_printf(("1ippReadIO: bad language value length %d.",
                                n));
                  _cupsBufferRelease((char *)buffer);
-                 return (IPP_ERROR);
+                 return (IPP_STATE_ERROR);
                }
                else if (n >= IPP_MAX_LANGUAGE)
                {
-                 _cupsSetError(IPP_INTERNAL_ERROR,
+                 _cupsSetError(IPP_STATUS_ERROR_INTERNAL,
                                _("IPP language length too large."), 1);
                  DEBUG_printf(("1ippReadIO: bad language value length %d.",
                                n));
                  _cupsBufferRelease((char *)buffer);
-                 return (IPP_ERROR);
+                 return (IPP_STATE_ERROR);
                }
 
                memcpy(string, bufptr + 2, n);
@@ -3545,11 +3545,11 @@ ippReadIO(void       *src,              /* I - Data source */
 
                if ((bufptr + 2 + n) >= (buffer + IPP_BUF_SIZE))
                {
-                 _cupsSetError(IPP_INTERNAL_ERROR,
+                 _cupsSetError(IPP_STATUS_ERROR_INTERNAL,
                                _("IPP string length overflows value."), 1);
                  DEBUG_printf(("1ippReadIO: bad string value length %d.", n));
                  _cupsBufferRelease((char *)buffer);
-                 return (IPP_ERROR);
+                 return (IPP_STATE_ERROR);
                }
 
                bufptr[2 + n] = '\0';
@@ -3565,19 +3565,19 @@ ippReadIO(void       *src,              /* I - Data source */
 
                 if (n > 0)
                {
-                 _cupsSetError(IPP_INTERNAL_ERROR,
+                 _cupsSetError(IPP_STATUS_ERROR_INTERNAL,
                                _("IPP begCollection value not 0 bytes."), 1);
                  DEBUG_puts("1ippReadIO: begCollection tag with value length "
                             "> 0.");
                  _cupsBufferRelease((char *)buffer);
-                 return (IPP_ERROR);
+                 return (IPP_STATE_ERROR);
                }
 
-               if (ippReadIO(src, cb, 1, ipp, value->collection) == IPP_ERROR)
+               if (ippReadIO(src, cb, 1, ipp, value->collection) == IPP_STATE_ERROR)
                {
                  DEBUG_puts("1ippReadIO: Unable to read collection value.");
                  _cupsBufferRelease((char *)buffer);
-                 return (IPP_ERROR);
+                 return (IPP_STATE_ERROR);
                }
                 break;
 
@@ -3586,15 +3586,15 @@ ippReadIO(void       *src,              /* I - Data source */
 
                 if (n > 0)
                {
-                 _cupsSetError(IPP_INTERNAL_ERROR,
+                 _cupsSetError(IPP_STATUS_ERROR_INTERNAL,
                                _("IPP endCollection value not 0 bytes."), 1);
                  DEBUG_puts("1ippReadIO: endCollection tag with value length "
                             "> 0.");
-                 return (IPP_ERROR);
+                 return (IPP_STATE_ERROR);
                }
 
                DEBUG_puts("1ippReadIO: endCollection tag...");
-               return (ipp->state = IPP_DATA);
+               return (ipp->state = IPP_STATE_DATA);
 
             case IPP_TAG_MEMBERNAME :
               /*
@@ -3604,25 +3604,25 @@ ippReadIO(void       *src,              /* I - Data source */
 
                 if (!attr)
                 {
-                 _cupsSetError(IPP_INTERNAL_ERROR,
+                 _cupsSetError(IPP_STATUS_ERROR_INTERNAL,
                                _("IPP memberName with no attribute."), 1);
                  DEBUG_puts("1ippReadIO: Member name without attribute.");
                  _cupsBufferRelease((char *)buffer);
-                 return (IPP_ERROR);
+                 return (IPP_STATE_ERROR);
                 }
                else if (n == 0)
                {
-                 _cupsSetError(IPP_INTERNAL_ERROR,
+                 _cupsSetError(IPP_STATUS_ERROR_INTERNAL,
                                _("IPP memberName value is empty."), 1);
                  DEBUG_puts("1ippReadIO: Empty member name value.");
                  _cupsBufferRelease((char *)buffer);
-                 return (IPP_ERROR);
+                 return (IPP_STATE_ERROR);
                }
                else if ((*cb)(src, buffer, n) < n)
                {
                  DEBUG_puts("1ippReadIO: Unable to read member name value.");
                  _cupsBufferRelease((char *)buffer);
-                 return (IPP_ERROR);
+                 return (IPP_STATE_ERROR);
                }
 
                buffer[n] = '\0';
@@ -3642,12 +3642,12 @@ ippReadIO(void       *src,              /* I - Data source */
             default : /* Other unsupported values */
                 if (tag == IPP_TAG_STRING && n > IPP_MAX_LENGTH)
                {
-                 _cupsSetError(IPP_INTERNAL_ERROR,
+                 _cupsSetError(IPP_STATUS_ERROR_INTERNAL,
                                _("IPP octetString length too large."), 1);
                  DEBUG_printf(("1ippReadIO: bad octetString value length %d.",
                                n));
                  _cupsBufferRelease((char *)buffer);
-                 return (IPP_ERROR);
+                 return (IPP_STATE_ERROR);
                }
 
                 value->unknown.length = n;
@@ -3656,17 +3656,17 @@ ippReadIO(void       *src,              /* I - Data source */
                {
                  if ((value->unknown.data = malloc(n)) == NULL)
                  {
-                   _cupsSetHTTPError(HTTP_ERROR);
+                   _cupsSetHTTPError(HTTP_STATUS_ERROR);
                    DEBUG_puts("1ippReadIO: Unable to allocate value");
                    _cupsBufferRelease((char *)buffer);
-                   return (IPP_ERROR);
+                   return (IPP_STATE_ERROR);
                  }
 
                  if ((*cb)(src, value->unknown.data, n) < n)
                  {
                    DEBUG_puts("1ippReadIO: Unable to read unsupported value.");
                    _cupsBufferRelease((char *)buffer);
-                   return (IPP_ERROR);
+                   return (IPP_STATE_ERROR);
                  }
                }
                else
@@ -3683,7 +3683,7 @@ ippReadIO(void       *src,                /* I - Data source */
        }
         break;
 
-    case IPP_DATA :
+    case IPP_STATE_DATA :
         break;
 
     default :
@@ -4220,7 +4220,7 @@ ippSetString(ipp_t           *ipp,        /* IO - IPP message */
     if (element > 0)
       value->string.language = (*attr)->values[0].string.language;
 
-    if ((int)((*attr)->value_tag) & IPP_TAG_COPY)
+    if ((int)((*attr)->value_tag) & IPP_TAG_CUPS_CONST)
       value->string.text = (char *)strvalue;
     else if ((temp = _cupsStrAlloc(strvalue)) != NULL)
     {
@@ -4478,7 +4478,7 @@ ippSetValueTag(
   * Otherwise implement changes as needed...
   */
 
-  temp_tag = (ipp_tag_t)((int)((*attr)->value_tag) & IPP_TAG_MASK);
+  temp_tag = (ipp_tag_t)((int)((*attr)->value_tag) & IPP_TAG_CUPS_MASK);
 
   switch (value_tag)
   {
@@ -4524,7 +4524,7 @@ ippSetValueTag(
             temp_tag != IPP_TAG_MIMETYPE)
           return (0);
 
-        (*attr)->value_tag = (ipp_tag_t)(IPP_TAG_NAME | ((*attr)->value_tag & IPP_TAG_COPY));
+        (*attr)->value_tag = (ipp_tag_t)(IPP_TAG_NAME | ((*attr)->value_tag & IPP_TAG_CUPS_CONST));
         break;
 
     case IPP_TAG_NAMELANG :
@@ -4565,7 +4565,7 @@ ippSetValueTag(
              i --, value ++)
           value->string.language = (*attr)->values[0].string.language;
 
-        if ((int)(*attr)->value_tag & IPP_TAG_COPY)
+        if ((int)(*attr)->value_tag & IPP_TAG_CUPS_CONST)
         {
          /*
           * Make copies of all values...
@@ -5108,14 +5108,14 @@ ippValidateAttribute(
                                       hostname, sizeof(hostname),
                                       &port, resource, sizeof(resource));
 
-         if (uri_status < HTTP_URI_OK)
+         if (uri_status < HTTP_URI_STATUS_OK)
          {
            ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST,
                          _("\"%s\": Bad URI value \"%s\" - %s "
                            "(RFC 2911 section 4.1.5)."), attr->name,
                          attr->values[i].string.text,
                          uri_status_strings[uri_status -
-                                            HTTP_URI_OVERFLOW]);
+                                            HTTP_URI_STATUS_OVERFLOW]);
            return (0);
          }
 
@@ -5351,7 +5351,7 @@ ippWrite(http_t *http,                    /* I - HTTP connection */
   DEBUG_printf(("ippWrite(http=%p, ipp=%p)", http, ipp));
 
   if (!http)
-    return (IPP_ERROR);
+    return (IPP_STATE_ERROR);
 
   return (ippWriteIO(http, (ipp_iocb_t)httpWrite2, http->blocking, NULL, ipp));
 }
@@ -5369,7 +5369,7 @@ ippWriteFile(int   fd,                    /* I - HTTP data */
 {
   DEBUG_printf(("ippWriteFile(fd=%d, ipp=%p)", fd, ipp));
 
-  ipp->state = IPP_IDLE;
+  ipp->state = IPP_STATE_IDLE;
 
   return (ippWriteIO(&fd, (ipp_iocb_t)ipp_write_file, 1, NULL, ipp));
 }
@@ -5400,20 +5400,20 @@ ippWriteIO(void       *dst,             /* I - Destination */
                 dst, cb, blocking, parent, ipp));
 
   if (!dst || !ipp)
-    return (IPP_ERROR);
+    return (IPP_STATE_ERROR);
 
   if ((buffer = (unsigned char *)_cupsBufferGet(IPP_BUF_SIZE)) == NULL)
   {
     DEBUG_puts("1ippWriteIO: Unable to get write buffer");
-    return (IPP_ERROR);
+    return (IPP_STATE_ERROR);
   }
 
   switch (ipp->state)
   {
-    case IPP_IDLE :
+    case IPP_STATE_IDLE :
         ipp->state ++; /* Avoid common problem... */
 
-    case IPP_HEADER :
+    case IPP_STATE_HEADER :
         if (parent == NULL)
        {
         /*
@@ -5446,7 +5446,7 @@ ippWriteIO(void       *dst,               /* I - Destination */
          {
            DEBUG_puts("1ippWriteIO: Could not write IPP header...");
            _cupsBufferRelease((char *)buffer);
-           return (IPP_ERROR);
+           return (IPP_STATE_ERROR);
          }
        }
 
@@ -5455,7 +5455,7 @@ ippWriteIO(void       *dst,               /* I - Destination */
        * in the request/response, with no current group.
        */
 
-        ipp->state   = IPP_ATTRIBUTE;
+        ipp->state   = IPP_STATE_ATTRIBUTE;
        ipp->current = ipp->attrs;
        ipp->curtag  = IPP_TAG_ZERO;
 
@@ -5468,7 +5468,7 @@ ippWriteIO(void       *dst,               /* I - Destination */
         if (!blocking)
          break;
 
-    case IPP_ATTRIBUTE :
+    case IPP_STATE_ATTRIBUTE :
         while (ipp->current != NULL)
        {
         /*
@@ -5525,7 +5525,7 @@ ippWriteIO(void       *dst,               /* I - Destination */
            {
              DEBUG_printf(("1ippWriteIO: Attribute name too long (%d)", n));
              _cupsBufferRelease((char *)buffer);
-             return (IPP_ERROR);
+             return (IPP_STATE_ERROR);
            }
 
            /*
@@ -5564,7 +5564,7 @@ ippWriteIO(void       *dst,               /* I - Destination */
            {
              DEBUG_printf(("1ippWriteIO: Attribute name too long (%d)", n));
              _cupsBufferRelease((char *)buffer);
-             return (IPP_ERROR);
+             return (IPP_STATE_ERROR);
            }
 
            /*
@@ -5607,7 +5607,7 @@ ippWriteIO(void       *dst,               /* I - Destination */
          * Now write the attribute value(s)...
          */
 
-         switch (attr->value_tag & ~IPP_TAG_COPY)
+         switch (attr->value_tag & ~IPP_TAG_CUPS_CONST)
          {
            case IPP_TAG_UNSUPPORTED_VALUE :
            case IPP_TAG_DEFAULT :
@@ -5633,7 +5633,7 @@ ippWriteIO(void       *dst,               /* I - Destination */
                      DEBUG_puts("1ippWriteIO: Could not write IPP "
                                 "attribute...");
                      _cupsBufferRelease((char *)buffer);
-                     return (IPP_ERROR);
+                     return (IPP_STATE_ERROR);
                    }
 
                    bufptr = buffer;
@@ -5679,7 +5679,7 @@ ippWriteIO(void       *dst,               /* I - Destination */
                      DEBUG_puts("1ippWriteIO: Could not write IPP "
                                 "attribute...");
                      _cupsBufferRelease((char *)buffer);
-                     return (IPP_ERROR);
+                     return (IPP_STATE_ERROR);
                    }
 
                    bufptr = buffer;
@@ -5740,7 +5740,7 @@ ippWriteIO(void       *dst,               /* I - Destination */
                        DEBUG_puts("1ippWriteIO: Could not write IPP "
                                   "attribute...");
                        _cupsBufferRelease((char *)buffer);
-                       return (IPP_ERROR);
+                       return (IPP_STATE_ERROR);
                      }
 
                      bufptr = buffer;
@@ -5760,7 +5760,7 @@ ippWriteIO(void       *dst,               /* I - Destination */
                  {
                    DEBUG_printf(("1ippWriteIO: String too long (%d)", n));
                    _cupsBufferRelease((char *)buffer);
-                   return (IPP_ERROR);
+                   return (IPP_STATE_ERROR);
                  }
 
                   DEBUG_printf(("2ippWriteIO: writing string=%d,\"%s\"", n,
@@ -5773,7 +5773,7 @@ ippWriteIO(void       *dst,               /* I - Destination */
                      DEBUG_puts("1ippWriteIO: Could not write IPP "
                                 "attribute...");
                      _cupsBufferRelease((char *)buffer);
-                     return (IPP_ERROR);
+                     return (IPP_STATE_ERROR);
                    }
 
                    bufptr = buffer;
@@ -5812,7 +5812,7 @@ ippWriteIO(void       *dst,               /* I - Destination */
                      DEBUG_puts("1ippWriteIO: Could not write IPP "
                                 "attribute...");
                      _cupsBufferRelease((char *)buffer);
-                     return (IPP_ERROR);
+                     return (IPP_STATE_ERROR);
                    }
 
                    bufptr = buffer;
@@ -5857,7 +5857,7 @@ ippWriteIO(void       *dst,               /* I - Destination */
                      DEBUG_puts("1ippWriteIO: Could not write IPP "
                                 "attribute...");
                      _cupsBufferRelease((char *)buffer);
-                     return (IPP_ERROR);
+                     return (IPP_STATE_ERROR);
                    }
 
                    bufptr = buffer;
@@ -5910,7 +5910,7 @@ ippWriteIO(void       *dst,               /* I - Destination */
                      DEBUG_puts("1ippWriteIO: Could not write IPP "
                                 "attribute...");
                      _cupsBufferRelease((char *)buffer);
-                     return (IPP_ERROR);
+                     return (IPP_STATE_ERROR);
                    }
 
                    bufptr = buffer;
@@ -5969,7 +5969,7 @@ ippWriteIO(void       *dst,               /* I - Destination */
                        DEBUG_puts("1ippWriteIO: Could not write IPP "
                                   "attribute...");
                        _cupsBufferRelease((char *)buffer);
-                       return (IPP_ERROR);
+                       return (IPP_STATE_ERROR);
                      }
 
                      bufptr = buffer;
@@ -6003,7 +6003,7 @@ ippWriteIO(void       *dst,               /* I - Destination */
                    DEBUG_printf(("1ippWriteIO: text/nameWithLanguage value "
                                  "too long (%d)", n));
                    _cupsBufferRelease((char *)buffer);
-                   return (IPP_ERROR);
+                   return (IPP_STATE_ERROR);
                   }
 
                   if ((int)(IPP_BUF_SIZE - (bufptr - buffer)) < (n + 2))
@@ -6013,7 +6013,7 @@ ippWriteIO(void       *dst,               /* I - Destination */
                      DEBUG_puts("1ippWriteIO: Could not write IPP "
                                 "attribute...");
                      _cupsBufferRelease((char *)buffer);
-                     return (IPP_ERROR);
+                     return (IPP_STATE_ERROR);
                    }
 
                    bufptr = buffer;
@@ -6076,7 +6076,7 @@ ippWriteIO(void       *dst,               /* I - Destination */
                      DEBUG_puts("1ippWriteIO: Could not write IPP "
                                 "attribute...");
                      _cupsBufferRelease((char *)buffer);
-                     return (IPP_ERROR);
+                     return (IPP_STATE_ERROR);
                    }
 
                    bufptr = buffer;
@@ -6106,7 +6106,7 @@ ippWriteIO(void       *dst,               /* I - Destination */
                    DEBUG_puts("1ippWriteIO: Could not write IPP "
                               "attribute...");
                    _cupsBufferRelease((char *)buffer);
-                   return (IPP_ERROR);
+                   return (IPP_STATE_ERROR);
                  }
 
                  bufptr = buffer;
@@ -6115,14 +6115,14 @@ ippWriteIO(void       *dst,             /* I - Destination */
                  * Then write the collection attribute...
                  */
 
-                  value->collection->state = IPP_IDLE;
+                  value->collection->state = IPP_STATE_IDLE;
 
                  if (ippWriteIO(dst, cb, 1, ipp,
-                                value->collection) == IPP_ERROR)
+                                value->collection) == IPP_STATE_ERROR)
                  {
                    DEBUG_puts("1ippWriteIO: Unable to write collection value");
                    _cupsBufferRelease((char *)buffer);
-                   return (IPP_ERROR);
+                   return (IPP_STATE_ERROR);
                  }
                }
                break;
@@ -6146,7 +6146,7 @@ ippWriteIO(void       *dst,               /* I - Destination */
                        DEBUG_puts("1ippWriteIO: Could not write IPP "
                                   "attribute...");
                        _cupsBufferRelease((char *)buffer);
-                       return (IPP_ERROR);
+                       return (IPP_STATE_ERROR);
                      }
 
                      bufptr = buffer;
@@ -6171,7 +6171,7 @@ ippWriteIO(void       *dst,               /* I - Destination */
                    DEBUG_printf(("1ippWriteIO: Data length too long (%d)",
                                  n));
                    _cupsBufferRelease((char *)buffer);
-                   return (IPP_ERROR);
+                   return (IPP_STATE_ERROR);
                  }
 
                   if ((int)(IPP_BUF_SIZE - (bufptr - buffer)) < (n + 2))
@@ -6181,7 +6181,7 @@ ippWriteIO(void       *dst,               /* I - Destination */
                      DEBUG_puts("1ippWriteIO: Could not write IPP "
                                 "attribute...");
                      _cupsBufferRelease((char *)buffer);
-                     return (IPP_ERROR);
+                     return (IPP_STATE_ERROR);
                    }
 
                    bufptr = buffer;
@@ -6211,7 +6211,7 @@ ippWriteIO(void       *dst,               /* I - Destination */
            {
              DEBUG_puts("1ippWriteIO: Could not write IPP attribute...");
              _cupsBufferRelease((char *)buffer);
-             return (IPP_ERROR);
+             return (IPP_STATE_ERROR);
            }
 
            DEBUG_printf(("2ippWriteIO: wrote %d bytes",
@@ -6252,14 +6252,14 @@ ippWriteIO(void       *dst,             /* I - Destination */
          {
            DEBUG_puts("1ippWriteIO: Could not write IPP end-tag...");
            _cupsBufferRelease((char *)buffer);
-           return (IPP_ERROR);
+           return (IPP_STATE_ERROR);
          }
 
-         ipp->state = IPP_DATA;
+         ipp->state = IPP_STATE_DATA;
        }
         break;
 
-    case IPP_DATA :
+    case IPP_STATE_DATA :
         break;
 
     default :
@@ -6357,7 +6357,7 @@ ipp_free_values(ipp_attribute_t *attr,    /* I - Attribute to free values from */
   DEBUG_printf(("4ipp_free_values(attr=%p, element=%d, count=%d)", attr,
                 element, count));
 
-  if (!(attr->value_tag & IPP_TAG_COPY))
+  if (!(attr->value_tag & IPP_TAG_CUPS_CONST))
   {
    /*
     * Free values as needed...
@@ -6572,7 +6572,7 @@ ipp_length(ipp_t *ipp,                    /* I - IPP message or collection */
     if (collection)
       bytes += 5;                      /* Add membername overhead */
 
-    switch (attr->value_tag & ~IPP_TAG_COPY)
+    switch (attr->value_tag & ~IPP_TAG_CUPS_CONST)
     {
       case IPP_TAG_UNSUPPORTED_VALUE :
       case IPP_TAG_DEFAULT :
@@ -6694,7 +6694,7 @@ ipp_read_http(http_t      *http,  /* I - Client connection */
     DEBUG_printf(("9ipp_read_http: tbytes=%d, http->state=%d", tbytes,
                   http->state));
 
-    if (http->state == HTTP_WAITING)
+    if (http->state == HTTP_STATE_WAITING)
       break;
 
     if (http->used == 0 && !http->blocking)
@@ -6838,7 +6838,7 @@ ipp_set_value(ipp_t           *ipp,       /* IO - IPP message */
   if ((temp = realloc(temp, sizeof(ipp_attribute_t) +
                            (alloc_values - 1) * sizeof(_ipp_value_t))) == NULL)
   {
-    _cupsSetHTTPError(HTTP_ERROR);
+    _cupsSetHTTPError(HTTP_STATUS_ERROR);
     DEBUG_puts("4ipp_set_value: Unable to resize attribute.");
     return (NULL);
   }
@@ -6881,7 +6881,7 @@ ipp_set_value(ipp_t           *ipp,       /* IO - IPP message */
        */
 
        *attr = temp;
-       _cupsSetError(IPP_INTERNAL_ERROR,
+       _cupsSetError(IPP_STATUS_ERROR_INTERNAL,
                      _("IPP attribute is not a member of the message."), 1);
        DEBUG_puts("4ipp_set_value: Unable to find attribute in message.");
        return (NULL);
index 9d520f17d3ee3f22cbb80e5059de1a9b1c323f8d..78c78cec6cdbadafbc9c210c98a2e2e7b0269e3e 100644 (file)
@@ -3,7 +3,7 @@
  *
  *   Notification routines for CUPS.
  *
- *   Copyright 2007-2012 by Apple Inc.
+ *   Copyright 2007-2013 by Apple Inc.
  *   Copyright 2005-2006 by Easy Software Products.
  *
  *   These coded instructions, statements, and computer programs are the
@@ -83,25 +83,25 @@ cupsNotifySubject(cups_lang_t *lang,        /* I - Language data */
 
     switch (job_state->values[0].integer)
     {
-      case IPP_JOB_PENDING :
+      case IPP_JSTATE_PENDING :
           state = _cupsLangString(lang, _("pending"));
          break;
-      case IPP_JOB_HELD :
+      case IPP_JSTATE_HELD :
           state = _cupsLangString(lang, _("held"));
          break;
-      case IPP_JOB_PROCESSING :
+      case IPP_JSTATE_PROCESSING :
           state = _cupsLangString(lang, _("processing"));
          break;
-      case IPP_JOB_STOPPED :
+      case IPP_JSTATE_STOPPED :
           state = _cupsLangString(lang, _("stopped"));
          break;
-      case IPP_JOB_CANCELED :
+      case IPP_JSTATE_CANCELED :
           state = _cupsLangString(lang, _("canceled"));
          break;
-      case IPP_JOB_ABORTED :
+      case IPP_JSTATE_ABORTED :
           state = _cupsLangString(lang, _("aborted"));
          break;
-      case IPP_JOB_COMPLETED :
+      case IPP_JSTATE_COMPLETED :
           state = _cupsLangString(lang, _("completed"));
          break;
       default :
@@ -127,13 +127,13 @@ cupsNotifySubject(cups_lang_t *lang,      /* I - Language data */
 
     switch (printer_state->values[0].integer)
     {
-      case IPP_PRINTER_IDLE :
+      case IPP_PSTATE_IDLE :
           state = _cupsLangString(lang, _("idle"));
          break;
-      case IPP_PRINTER_PROCESSING :
+      case IPP_PSTATE_PROCESSING :
           state = _cupsLangString(lang, _("processing"));
          break;
-      case IPP_PRINTER_STOPPED :
+      case IPP_PSTATE_STOPPED :
           state = _cupsLangString(lang, _("stopped"));
          break;
       default :
index 9fe3d6c7de50268ebd6fe8545c48f24fda92df20..c1febfa9d4919d9efacf22ddd1511372bc921ae6 100644 (file)
@@ -3,7 +3,7 @@
  *
  *   PPD cache implementation for CUPS.
  *
- *   Copyright 2010-2012 by Apple Inc.
+ *   Copyright 2010-2013 by Apple Inc.
  *
  *   These coded instructions, statements, and computer programs are the
  *   property of Apple Inc. and are protected by Federal copyright
@@ -118,7 +118,7 @@ _ppdCacheCreateWithFile(
 
   if (!filename)
   {
-    _cupsSetError(IPP_INTERNAL_ERROR, strerror(EINVAL), 0);
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(EINVAL), 0);
     return (NULL);
   }
 
@@ -128,7 +128,7 @@ _ppdCacheCreateWithFile(
 
   if ((fp = cupsFileOpen(filename, "r")) == NULL)
   {
-    _cupsSetError(IPP_INTERNAL_ERROR, strerror(errno), 0);
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(errno), 0);
     return (NULL);
   }
 
@@ -138,7 +138,7 @@ _ppdCacheCreateWithFile(
 
   if (!cupsFileGets(fp, line, sizeof(line)))
   {
-    _cupsSetError(IPP_INTERNAL_ERROR, strerror(errno), 0);
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(errno), 0);
     DEBUG_puts("_ppdCacheCreateWithFile: Unable to read first line.");
     cupsFileClose(fp);
     return (NULL);
@@ -146,7 +146,7 @@ _ppdCacheCreateWithFile(
 
   if (strncmp(line, "#CUPS-PPD-CACHE-", 16))
   {
-    _cupsSetError(IPP_INTERNAL_ERROR, _("Bad PPD cache file."), 1);
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad PPD cache file."), 1);
     DEBUG_printf(("_ppdCacheCreateWithFile: Wrong first line \"%s\".", line));
     cupsFileClose(fp);
     return (NULL);
@@ -154,7 +154,7 @@ _ppdCacheCreateWithFile(
 
   if (atoi(line + 16) != _PPD_CACHE_VERSION)
   {
-    _cupsSetError(IPP_INTERNAL_ERROR, _("Out of date PPD cache file."), 1);
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Out of date PPD cache file."), 1);
     DEBUG_printf(("_ppdCacheCreateWithFile: Cache file has version %s, "
                   "expected %d.", line + 16, _PPD_CACHE_VERSION));
     cupsFileClose(fp);
@@ -167,7 +167,7 @@ _ppdCacheCreateWithFile(
 
   if ((pc = calloc(1, sizeof(_ppd_cache_t))) == NULL)
   {
-    _cupsSetError(IPP_INTERNAL_ERROR, strerror(errno), 0);
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(errno), 0);
     DEBUG_puts("_ppdCacheCreateWithFile: Unable to allocate _ppd_cache_t.");
     goto create_error;
   }
@@ -193,7 +193,7 @@ _ppdCacheCreateWithFile(
     {
       DEBUG_printf(("_ppdCacheCreateWithFile: Missing value on line %d.",
                     linenum));
-      _cupsSetError(IPP_INTERNAL_ERROR, _("Bad PPD cache file."), 1);
+      _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad PPD cache file."), 1);
       goto create_error;
     }
     else if (!_cups_strcasecmp(line, "Filter"))
@@ -231,13 +231,13 @@ _ppdCacheCreateWithFile(
       if (attrs && *attrs)
       {
         DEBUG_puts("_ppdCacheCreateWithFile: IPP listed multiple times.");
-       _cupsSetError(IPP_INTERNAL_ERROR, _("Bad PPD cache file."), 1);
+       _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad PPD cache file."), 1);
        goto create_error;
       }
       else if (length <= 0)
       {
         DEBUG_puts("_ppdCacheCreateWithFile: Bad IPP length.");
-       _cupsSetError(IPP_INTERNAL_ERROR, _("Bad PPD cache file."), 1);
+       _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad PPD cache file."), 1);
        goto create_error;
       }
 
@@ -250,10 +250,10 @@ _ppdCacheCreateWithFile(
         *attrs = ippNew();
 
         if (ippReadIO(fp, (ipp_iocb_t)cupsFileRead, 1, NULL,
-                     *attrs) != IPP_DATA)
+                     *attrs) != IPP_STATE_DATA)
        {
          DEBUG_puts("_ppdCacheCreateWithFile: Bad IPP data.");
-         _cupsSetError(IPP_INTERNAL_ERROR, _("Bad PPD cache file."), 1);
+         _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad PPD cache file."), 1);
          goto create_error;
        }
       }
@@ -269,7 +269,7 @@ _ppdCacheCreateWithFile(
       if (cupsFileTell(fp) != (pos + length))
       {
         DEBUG_puts("_ppdCacheCreateWithFile: Bad IPP data.");
-       _cupsSetError(IPP_INTERNAL_ERROR, _("Bad PPD cache file."), 1);
+       _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad PPD cache file."), 1);
        goto create_error;
       }
     }
@@ -278,7 +278,7 @@ _ppdCacheCreateWithFile(
       if (num_bins > 0)
       {
         DEBUG_puts("_ppdCacheCreateWithFile: NumBins listed multiple times.");
-       _cupsSetError(IPP_INTERNAL_ERROR, _("Bad PPD cache file."), 1);
+       _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad PPD cache file."), 1);
        goto create_error;
       }
 
@@ -286,7 +286,7 @@ _ppdCacheCreateWithFile(
       {
         DEBUG_printf(("_ppdCacheCreateWithFile: Bad NumBins value %d on line "
                      "%d.", num_sizes, linenum));
-       _cupsSetError(IPP_INTERNAL_ERROR, _("Bad PPD cache file."), 1);
+       _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad PPD cache file."), 1);
        goto create_error;
       }
 
@@ -294,7 +294,7 @@ _ppdCacheCreateWithFile(
       {
         DEBUG_printf(("_ppdCacheCreateWithFile: Unable to allocate %d bins.",
                      num_sizes));
-       _cupsSetError(IPP_INTERNAL_ERROR, strerror(errno), 0);
+       _cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(errno), 0);
        goto create_error;
       }
     }
@@ -303,7 +303,7 @@ _ppdCacheCreateWithFile(
       if (sscanf(value, "%127s%40s", pwg_keyword, ppd_keyword) != 2)
       {
         DEBUG_printf(("_ppdCacheCreateWithFile: Bad Bin on line %d.", linenum));
-       _cupsSetError(IPP_INTERNAL_ERROR, _("Bad PPD cache file."), 1);
+       _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad PPD cache file."), 1);
        goto create_error;
       }
 
@@ -311,7 +311,7 @@ _ppdCacheCreateWithFile(
       {
         DEBUG_printf(("_ppdCacheCreateWithFile: Too many Bin's on line %d.",
                      linenum));
-       _cupsSetError(IPP_INTERNAL_ERROR, _("Bad PPD cache file."), 1);
+       _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad PPD cache file."), 1);
        goto create_error;
       }
 
@@ -326,7 +326,7 @@ _ppdCacheCreateWithFile(
       if (num_sizes > 0)
       {
         DEBUG_puts("_ppdCacheCreateWithFile: NumSizes listed multiple times.");
-       _cupsSetError(IPP_INTERNAL_ERROR, _("Bad PPD cache file."), 1);
+       _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad PPD cache file."), 1);
        goto create_error;
       }
 
@@ -334,7 +334,7 @@ _ppdCacheCreateWithFile(
       {
         DEBUG_printf(("_ppdCacheCreateWithFile: Bad NumSizes value %d on line "
                      "%d.", num_sizes, linenum));
-       _cupsSetError(IPP_INTERNAL_ERROR, _("Bad PPD cache file."), 1);
+       _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad PPD cache file."), 1);
        goto create_error;
       }
 
@@ -344,7 +344,7 @@ _ppdCacheCreateWithFile(
        {
          DEBUG_printf(("_ppdCacheCreateWithFile: Unable to allocate %d sizes.",
                        num_sizes));
-         _cupsSetError(IPP_INTERNAL_ERROR, strerror(errno), 0);
+         _cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(errno), 0);
          goto create_error;
        }
       }
@@ -355,7 +355,7 @@ _ppdCacheCreateWithFile(
       {
         DEBUG_printf(("_ppdCacheCreateWithFile: Too many Size's on line %d.",
                      linenum));
-       _cupsSetError(IPP_INTERNAL_ERROR, _("Bad PPD cache file."), 1);
+       _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad PPD cache file."), 1);
        goto create_error;
       }
 
@@ -367,7 +367,7 @@ _ppdCacheCreateWithFile(
       {
         DEBUG_printf(("_ppdCacheCreateWithFile: Bad Size on line %d.",
                      linenum));
-       _cupsSetError(IPP_INTERNAL_ERROR, _("Bad PPD cache file."), 1);
+       _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad PPD cache file."), 1);
        goto create_error;
       }
 
@@ -382,7 +382,7 @@ _ppdCacheCreateWithFile(
       {
         DEBUG_printf(("_ppdCacheCreateWithFile: Too many CustomSize's on line "
                      "%d.", linenum));
-       _cupsSetError(IPP_INTERNAL_ERROR, _("Bad PPD cache file."), 1);
+       _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad PPD cache file."), 1);
        goto create_error;
       }
 
@@ -394,7 +394,7 @@ _ppdCacheCreateWithFile(
       {
         DEBUG_printf(("_ppdCacheCreateWithFile: Bad CustomSize on line %d.",
                      linenum));
-       _cupsSetError(IPP_INTERNAL_ERROR, _("Bad PPD cache file."), 1);
+       _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad PPD cache file."), 1);
        goto create_error;
       }
 
@@ -416,7 +416,7 @@ _ppdCacheCreateWithFile(
       {
         DEBUG_puts("_ppdCacheCreateWithFile: NumSources listed multiple "
                   "times.");
-       _cupsSetError(IPP_INTERNAL_ERROR, _("Bad PPD cache file."), 1);
+       _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad PPD cache file."), 1);
        goto create_error;
       }
 
@@ -424,7 +424,7 @@ _ppdCacheCreateWithFile(
       {
         DEBUG_printf(("_ppdCacheCreateWithFile: Bad NumSources value %d on "
                      "line %d.", num_sources, linenum));
-       _cupsSetError(IPP_INTERNAL_ERROR, _("Bad PPD cache file."), 1);
+       _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad PPD cache file."), 1);
        goto create_error;
       }
 
@@ -432,7 +432,7 @@ _ppdCacheCreateWithFile(
       {
         DEBUG_printf(("_ppdCacheCreateWithFile: Unable to allocate %d sources.",
                      num_sources));
-       _cupsSetError(IPP_INTERNAL_ERROR, strerror(errno), 0);
+       _cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(errno), 0);
        goto create_error;
       }
     }
@@ -442,7 +442,7 @@ _ppdCacheCreateWithFile(
       {
         DEBUG_printf(("_ppdCacheCreateWithFile: Bad Source on line %d.",
                      linenum));
-       _cupsSetError(IPP_INTERNAL_ERROR, _("Bad PPD cache file."), 1);
+       _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad PPD cache file."), 1);
        goto create_error;
       }
 
@@ -450,7 +450,7 @@ _ppdCacheCreateWithFile(
       {
         DEBUG_printf(("_ppdCacheCreateWithFile: Too many Source's on line %d.",
                      linenum));
-       _cupsSetError(IPP_INTERNAL_ERROR, _("Bad PPD cache file."), 1);
+       _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad PPD cache file."), 1);
        goto create_error;
       }
 
@@ -465,7 +465,7 @@ _ppdCacheCreateWithFile(
       if (num_types > 0)
       {
         DEBUG_puts("_ppdCacheCreateWithFile: NumTypes listed multiple times.");
-       _cupsSetError(IPP_INTERNAL_ERROR, _("Bad PPD cache file."), 1);
+       _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad PPD cache file."), 1);
        goto create_error;
       }
 
@@ -473,7 +473,7 @@ _ppdCacheCreateWithFile(
       {
         DEBUG_printf(("_ppdCacheCreateWithFile: Bad NumTypes value %d on "
                      "line %d.", num_types, linenum));
-       _cupsSetError(IPP_INTERNAL_ERROR, _("Bad PPD cache file."), 1);
+       _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad PPD cache file."), 1);
        goto create_error;
       }
 
@@ -481,7 +481,7 @@ _ppdCacheCreateWithFile(
       {
         DEBUG_printf(("_ppdCacheCreateWithFile: Unable to allocate %d types.",
                      num_types));
-       _cupsSetError(IPP_INTERNAL_ERROR, strerror(errno), 0);
+       _cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(errno), 0);
        goto create_error;
       }
     }
@@ -491,7 +491,7 @@ _ppdCacheCreateWithFile(
       {
         DEBUG_printf(("_ppdCacheCreateWithFile: Bad Type on line %d.",
                      linenum));
-       _cupsSetError(IPP_INTERNAL_ERROR, _("Bad PPD cache file."), 1);
+       _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad PPD cache file."), 1);
        goto create_error;
       }
 
@@ -499,7 +499,7 @@ _ppdCacheCreateWithFile(
       {
         DEBUG_printf(("_ppdCacheCreateWithFile: Too many Type's on line %d.",
                      linenum));
-       _cupsSetError(IPP_INTERNAL_ERROR, _("Bad PPD cache file."), 1);
+       _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad PPD cache file."), 1);
        goto create_error;
       }
 
@@ -526,7 +526,7 @@ _ppdCacheCreateWithFile(
       {
         DEBUG_printf(("_ppdCacheCreateWithFile: Bad Preset on line %d.",
                      linenum));
-       _cupsSetError(IPP_INTERNAL_ERROR, _("Bad PPD cache file."), 1);
+       _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad PPD cache file."), 1);
        goto create_error;
       }
 
@@ -596,7 +596,7 @@ _ppdCacheCreateWithFile(
   {
     DEBUG_printf(("_ppdCacheCreateWithFile: Not enough sizes (%d < %d).",
                   pc->num_sizes, num_sizes));
-    _cupsSetError(IPP_INTERNAL_ERROR, _("Bad PPD cache file."), 1);
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad PPD cache file."), 1);
     goto create_error;
   }
 
@@ -604,7 +604,7 @@ _ppdCacheCreateWithFile(
   {
     DEBUG_printf(("_ppdCacheCreateWithFile: Not enough sources (%d < %d).",
                   pc->num_sources, num_sources));
-    _cupsSetError(IPP_INTERNAL_ERROR, _("Bad PPD cache file."), 1);
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad PPD cache file."), 1);
     goto create_error;
   }
 
@@ -612,7 +612,7 @@ _ppdCacheCreateWithFile(
   {
     DEBUG_printf(("_ppdCacheCreateWithFile: Not enough types (%d < %d).",
                   pc->num_types, num_types));
-    _cupsSetError(IPP_INTERNAL_ERROR, _("Bad PPD cache file."), 1);
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad PPD cache file."), 1);
     goto create_error;
   }
 
@@ -1441,7 +1441,7 @@ _ppdCacheCreateWithPPD(ppd_file_t *ppd)   /* I - PPD file */
 
   create_error:
 
-  _cupsSetError(IPP_INTERNAL_ERROR, _("Out of memory."), 1);
+  _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Out of memory."), 1);
   _ppdCacheDestroy(pc);
 
   return (NULL);
@@ -1580,11 +1580,11 @@ _ppdCacheGetBin(
 
 int                                    /* O  - New number of options */
 _ppdCacheGetFinishingOptions(
-    _ppd_cache_t  *pc,                 /* I  - PPD cache and mapping data */
-    ipp_t         *job,                        /* I  - Job attributes or NULL */
-    ipp_finish_t  value,               /* I  - IPP finishings value of IPP_FINISHINGS_NONE */
-    int           num_options,         /* I  - Number of options */
-    cups_option_t **options)           /* IO - Options */
+    _ppd_cache_t     *pc,              /* I  - PPD cache and mapping data */
+    ipp_t            *job,             /* I  - Job attributes or NULL */
+    ipp_finishings_t value,            /* I  - IPP finishings value of IPP_FINISHINGS_NONE */
+    int              num_options,      /* I  - Number of options */
+    cups_option_t    **options)                /* IO - Options */
 {
   int                  i;              /* Looping var */
   _pwg_finishings_t    *f,             /* PWG finishings options */
@@ -2283,7 +2283,7 @@ _ppdCacheWriteFile(
 
   if (!pc || !filename)
   {
-    _cupsSetError(IPP_INTERNAL_ERROR, strerror(EINVAL), 0);
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(EINVAL), 0);
     return (0);
   }
 
@@ -2294,7 +2294,7 @@ _ppdCacheWriteFile(
   snprintf(newfile, sizeof(newfile), "%s.N", filename);
   if ((fp = cupsFileOpen(newfile, "w9")) == NULL)
   {
-    _cupsSetError(IPP_INTERNAL_ERROR, strerror(errno), 0);
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(errno), 0);
     return (0);
   }
 
@@ -2463,7 +2463,7 @@ _ppdCacheWriteFile(
   {
     cupsFilePrintf(fp, "IPP " CUPS_LLFMT "\n", CUPS_LLCAST ippLength(attrs));
 
-    attrs->state = IPP_IDLE;
+    attrs->state = IPP_STATE_IDLE;
     ippWriteIO(fp, (ipp_iocb_t)cupsFileWrite, 1, NULL, attrs);
   }
 
index 23514b440cd38930c2315de4494ddd9f24b652e8..28016d632437d9f6bb049295b156265291805733 100644 (file)
@@ -104,9 +104,9 @@ typedef enum _pwg_print_quality_e   /**** PWG print-quality values ****/
 
 typedef struct _pwg_finishings_s       /**** PWG finishings mapping data ****/
 {
-  ipp_finish_t value;                  /* finishings value */
-  int          num_options;            /* Number of options to apply */
-  cups_option_t        *options;               /* Options to apply */
+  ipp_finishings_t     value;          /* finishings value */
+  int                  num_options;    /* Number of options to apply */
+  cups_option_t                *options;       /* Options to apply */
 } _pwg_finishings_t;
 
 struct _ppd_cache_s                    /**** PPD cache and PWG conversion data ****/
@@ -161,12 +161,16 @@ extern _ppd_cache_t       *_ppdCacheCreateWithPPD(ppd_file_t *ppd);
 extern void            _ppdCacheDestroy(_ppd_cache_t *pc);
 extern const char      *_ppdCacheGetBin(_ppd_cache_t *pc,
                                         const char *output_bin);
-extern int             _ppdCacheGetFinishingOptions(_ppd_cache_t *pc, ipp_t *job,
-                                                    ipp_finish_t value, int num_options,
+extern int             _ppdCacheGetFinishingOptions(_ppd_cache_t *pc,
+                                                    ipp_t *job,
+                                                    ipp_finishings_t value,
+                                                    int num_options,
                                                     cups_option_t **options);
-extern int             _ppdCacheGetFinishingValues(_ppd_cache_t *pc, int num_options,
+extern int             _ppdCacheGetFinishingValues(_ppd_cache_t *pc,
+                                                   int num_options,
                                                    cups_option_t *options,
-                                                   int max_values, int *values);
+                                                   int max_values,
+                                                   int *values);
 extern const char      *_ppdCacheGetInputSlot(_ppd_cache_t *pc, ipp_t *job,
                                               const char *keyword);
 extern const char      *_ppdCacheGetMediaType(_ppd_cache_t *pc, ipp_t *job,
index 5802b84a10519d6b249fd2b56de1f0ee798f6341..1c2940bf8824089b429cdfa9ef56ababe3ad21a4 100644 (file)
@@ -462,20 +462,20 @@ _pwgInitSize(_pwg_size_t *size,           /* I - Size to initialize */
       }
       else if (!x_dimension)
       {
-       _cupsSetError(IPP_INTERNAL_ERROR,
+       _cupsSetError(IPP_STATUS_ERROR_INTERNAL,
                      _("Missing x-dimension in media-size."), 1);
         return (0);
       }
       else if (!y_dimension)
       {
-       _cupsSetError(IPP_INTERNAL_ERROR,
+       _cupsSetError(IPP_STATUS_ERROR_INTERNAL,
                      _("Missing y-dimension in media-size."), 1);
         return (0);
       }
     }
     else
     {
-      _cupsSetError(IPP_INTERNAL_ERROR, _("Missing media-size in media-col."),
+      _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Missing media-size in media-col."),
                     1);
       return (0);
     }
@@ -550,13 +550,13 @@ _pwgInitSize(_pwg_size_t *size,           /* I - Size to initialize */
       }
       else
       {
-        _cupsSetError(IPP_INTERNAL_ERROR, _("Unsupported media value."), 1);
+        _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Unsupported media value."), 1);
        return (0);
       }
     }
     else
     {
-      _cupsSetError(IPP_INTERNAL_ERROR, _("Missing media or media-col."), 1);
+      _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Missing media or media-col."), 1);
       return (0);
     }
   }
index 4da103331af71b90cd010f5b05fe7322798a4f63..f5f2638d03bb3bd731b61a785433b9a9f463619c 100644 (file)
@@ -82,7 +82,7 @@ cupsDoFileRequest(http_t     *http,   /* I - Connection to server or @code CUPS_HT
       * Can't get file information!
       */
 
-      _cupsSetError(errno == ENOENT ? IPP_NOT_FOUND : IPP_NOT_AUTHORIZED,
+      _cupsSetError(errno == ENOENT ? IPP_STATUS_ERROR_NOT_FOUND : IPP_STATUS_ERROR_NOT_AUTHORIZED,
                     NULL, 0);
 
       ippDelete(request);
@@ -146,7 +146,7 @@ cupsDoIORequest(http_t     *http,   /* I - Connection to server or @code CUPS_HTTP
   {
     ippDelete(request);
 
-    _cupsSetError(IPP_INTERNAL_ERROR, strerror(EINVAL), 0);
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(EINVAL), 0);
 
     return (NULL);
   }
@@ -175,7 +175,7 @@ cupsDoIORequest(http_t     *http,   /* I - Connection to server or @code CUPS_HTTP
       * Can't get file information!
       */
 
-      _cupsSetError(errno == EBADF ? IPP_NOT_FOUND : IPP_NOT_AUTHORIZED,
+      _cupsSetError(errno == EBADF ? IPP_STATUS_ERROR_NOT_FOUND : IPP_STATUS_ERROR_NOT_AUTHORIZED,
                     NULL, 0);
 
       ippDelete(request);
@@ -195,7 +195,7 @@ cupsDoIORequest(http_t     *http,   /* I - Connection to server or @code CUPS_HTTP
 
       ippDelete(request);
 
-      _cupsSetError(IPP_NOT_POSSIBLE, strerror(EISDIR), 0);
+      _cupsSetError(IPP_STATUS_ERROR_NOT_POSSIBLE, strerror(EISDIR), 0);
 
       return (NULL);
     }
@@ -236,7 +236,7 @@ cupsDoIORequest(http_t     *http,   /* I - Connection to server or @code CUPS_HTTP
 
     DEBUG_printf(("2cupsDoIORequest: status=%d", status));
 
-    if (status == HTTP_CONTINUE && request->state == IPP_DATA && infile >= 0)
+    if (status == HTTP_STATUS_CONTINUE && request->state == IPP_STATE_DATA && infile >= 0)
     {
       DEBUG_puts("2cupsDoIORequest: file write...");
 
@@ -252,7 +252,7 @@ cupsDoIORequest(http_t     *http,   /* I - Connection to server or @code CUPS_HTTP
       while ((bytes = (int)read(infile, buffer, sizeof(buffer))) > 0)
       {
         if ((status = cupsWriteRequestData(http, buffer, bytes))
-                != HTTP_CONTINUE)
+                != HTTP_STATUS_CONTINUE)
          break;
       }
     }
@@ -261,7 +261,7 @@ cupsDoIORequest(http_t     *http,   /* I - Connection to server or @code CUPS_HTTP
     * Get the server's response...
     */
 
-    if (status != HTTP_ERROR)
+    if (status != HTTP_STATUS_ERROR)
     {
       response = cupsGetResponse(http, resource);
       status   = httpGetStatus(http);
@@ -269,9 +269,9 @@ cupsDoIORequest(http_t     *http,   /* I - Connection to server or @code CUPS_HTTP
 
     DEBUG_printf(("2cupsDoIORequest: status=%d", status));
 
-    if (status == HTTP_ERROR ||
-        (status >= HTTP_BAD_REQUEST && status != HTTP_UNAUTHORIZED &&
-        status != HTTP_UPGRADE_REQUIRED))
+    if (status == HTTP_STATUS_ERROR ||
+        (status >= HTTP_STATUS_BAD_REQUEST && status != HTTP_STATUS_UNAUTHORIZED &&
+        status != HTTP_STATUS_UPGRADE_REQUIRED))
     {
       _cupsSetHTTPError(status);
       break;
@@ -288,7 +288,7 @@ cupsDoIORequest(http_t     *http,   /* I - Connection to server or @code CUPS_HTTP
          break;
     }
 
-    if (http->state != HTTP_WAITING)
+    if (http->state != HTTP_STATE_WAITING)
     {
      /*
       * Flush any remaining data...
@@ -358,14 +358,14 @@ cupsGetResponse(http_t     *http, /* I - Connection to server or @code CUPS_HTTP
   if (!http)
     http = _cupsConnect();
 
-  if (!http || (http->state != HTTP_POST_RECV && http->state != HTTP_POST_SEND))
+  if (!http || (http->state != HTTP_STATE_POST_RECV && http->state != HTTP_STATE_POST_SEND))
     return (NULL);
 
  /*
   * Check for an unfinished chunked request...
   */
 
-  if (http->data_encoding == HTTP_ENCODE_CHUNKED)
+  if (http->data_encoding == HTTP_ENCODING_CHUNKED)
   {
    /*
     * Send a 0-length chunk to finish off the request...
@@ -392,7 +392,7 @@ cupsGetResponse(http_t     *http,   /* I - Connection to server or @code CUPS_HTTP
 
   DEBUG_printf(("2cupsGetResponse: status=%d", status));
 
-  if (status == HTTP_OK)
+  if (status == HTTP_STATUS_OK)
   {
    /*
     * Get the IPP response...
@@ -400,11 +400,11 @@ cupsGetResponse(http_t     *http, /* I - Connection to server or @code CUPS_HTTP
 
     response = ippNew();
 
-    while ((state = ippRead(http, response)) != IPP_DATA)
-      if (state == IPP_ERROR)
+    while ((state = ippRead(http, response)) != IPP_STATE_DATA)
+      if (state == IPP_STATE_ERROR)
        break;
 
-    if (state == IPP_ERROR)
+    if (state == IPP_STATE_ERROR)
     {
      /*
       * Flush remaining data and delete the response...
@@ -417,11 +417,11 @@ cupsGetResponse(http_t     *http, /* I - Connection to server or @code CUPS_HTTP
       ippDelete(response);
       response = NULL;
 
-      http->status = status = HTTP_ERROR;
+      http->status = status = HTTP_STATUS_ERROR;
       http->error  = EINVAL;
     }
   }
-  else if (status != HTTP_ERROR)
+  else if (status != HTTP_STATUS_ERROR)
   {
    /*
     * Flush any error message...
@@ -433,7 +433,7 @@ cupsGetResponse(http_t     *http,   /* I - Connection to server or @code CUPS_HTTP
     * Then handle encryption and authentication...
     */
 
-    if (status == HTTP_UNAUTHORIZED)
+    if (status == HTTP_STATUS_UNAUTHORIZED)
     {
      /*
       * See if we can do authentication...
@@ -442,13 +442,13 @@ cupsGetResponse(http_t     *http, /* I - Connection to server or @code CUPS_HTTP
       DEBUG_puts("2cupsGetResponse: Need authorization...");
 
       if (!cupsDoAuthentication(http, "POST", resource))
-        httpReconnect(http);
+        httpReconnect2(http, 30000, NULL);
       else
-        http->status = status = HTTP_AUTHORIZATION_CANCELED;
+        http->status = status = HTTP_STATUS_CUPS_AUTHORIZATION_CANCELED;
     }
 
 #ifdef HAVE_SSL
-    else if (status == HTTP_UPGRADE_REQUIRED)
+    else if (status == HTTP_STATUS_UPGRADE_REQUIRED)
     {
      /*
       * Force a reconnect with encryption...
@@ -456,8 +456,8 @@ cupsGetResponse(http_t     *http,   /* I - Connection to server or @code CUPS_HTTP
 
       DEBUG_puts("2cupsGetResponse: Need encryption...");
 
-      if (!httpReconnect(http))
-        httpEncryption(http, HTTP_ENCRYPT_REQUIRED);
+      if (!httpReconnect2(http, 30000, NULL))
+        httpEncryption(http, HTTP_ENCRYPTION_REQUIRED);
     }
 #endif /* HAVE_SSL */
   }
@@ -568,7 +568,7 @@ cupsReadResponseData(
 
     if ((http = cg->http) == NULL)
     {
-      _cupsSetError(IPP_INTERNAL_ERROR, _("No active connection"), 1);
+      _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("No active connection"), 1);
       return (-1);
     }
   }
@@ -590,7 +590,7 @@ cupsReadResponseData(
  * response. Only one request can be sent/queued at a time per @code http_t@
  * connection.
  *
- * Returns the initial HTTP status code, which will be @code HTTP_CONTINUE@
+ * Returns the initial HTTP status code, which will be @code HTTP_STATUS_CONTINUE@
  * on a successful send of the request.
  *
  * Note: Unlike @link cupsDoFileRequest@, @link cupsDoIORequest@, and
@@ -622,9 +622,9 @@ cupsSendRequest(http_t     *http,   /* I - Connection to server or @code CUPS_HTTP
 
   if (!request || !resource)
   {
-    _cupsSetError(IPP_INTERNAL_ERROR, strerror(EINVAL), 0);
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(EINVAL), 0);
 
-    return (HTTP_ERROR);
+    return (HTTP_STATUS_ERROR);
   }
 
  /*
@@ -633,24 +633,24 @@ cupsSendRequest(http_t     *http, /* I - Connection to server or @code CUPS_HTTP
 
   if (!http)
     if ((http = _cupsConnect()) == NULL)
-      return (HTTP_SERVICE_UNAVAILABLE);
+      return (HTTP_STATUS_SERVICE_UNAVAILABLE);
 
  /*
   * If the prior request was not flushed out, do so now...
   */
 
-  if (http->state == HTTP_GET_SEND ||
-      http->state == HTTP_POST_SEND)
+  if (http->state == HTTP_STATE_GET_SEND ||
+      http->state == HTTP_STATE_POST_SEND)
   {
     DEBUG_puts("2cupsSendRequest: Flush prior response.");
     httpFlush(http);
   }
-  else if (http->state != HTTP_WAITING)
+  else if (http->state != HTTP_STATE_WAITING)
   {
     DEBUG_printf(("1cupsSendRequest: Unknown HTTP state (%d), "
                   "reconnecting.", http->state));
-    if (httpReconnect(http))
-      return (HTTP_ERROR);
+    if (httpReconnect2(http, 30000, NULL))
+      return (HTTP_STATUS_ERROR);
   }
 
 #ifdef HAVE_SSL
@@ -662,10 +662,10 @@ cupsSendRequest(http_t     *http, /* I - Connection to server or @code CUPS_HTTP
 
   if (ippFindAttribute(request, "auth-info", IPP_TAG_TEXT) &&
       !httpAddrLocalhost(http->hostaddr) && !http->tls &&
-      httpEncryption(http, HTTP_ENCRYPT_REQUIRED))
+      httpEncryption(http, HTTP_ENCRYPTION_REQUIRED))
   {
     DEBUG_puts("1cupsSendRequest: Unable to encrypt connection.");
-    return (HTTP_SERVICE_UNAVAILABLE);
+    return (HTTP_STATUS_SERVICE_UNAVAILABLE);
   }
 #endif /* HAVE_SSL */
 
@@ -677,10 +677,10 @@ cupsSendRequest(http_t     *http, /* I - Connection to server or @code CUPS_HTTP
   {
     DEBUG_puts("2cupsSendRequest: Connection: close");
     httpClearFields(http);
-    if (httpReconnect(http))
+    if (httpReconnect2(http, 30000, NULL))
     {
       DEBUG_puts("1cupsSendRequest: Unable to reconnect.");
-      return (HTTP_SERVICE_UNAVAILABLE);
+      return (HTTP_STATUS_SERVICE_UNAVAILABLE);
     }
   }
 
@@ -688,7 +688,7 @@ cupsSendRequest(http_t     *http,   /* I - Connection to server or @code CUPS_HTTP
   * Loop until we can send the request without authorization problems.
   */
 
-  expect = HTTP_CONTINUE;
+  expect = HTTP_STATUS_CONTINUE;
 
   for (;;)
   {
@@ -728,10 +728,10 @@ cupsSendRequest(http_t     *http, /* I - Connection to server or @code CUPS_HTTP
     if (httpPost(http, resource))
     {
       DEBUG_puts("2cupsSendRequest: POST failed, reconnecting.");
-      if (httpReconnect(http))
+      if (httpReconnect2(http, 30000, NULL))
       {
         DEBUG_puts("1cupsSendRequest: Unable to reconnect.");
-        return (HTTP_SERVICE_UNAVAILABLE);
+        return (HTTP_STATUS_SERVICE_UNAVAILABLE);
       }
       else
         continue;
@@ -743,30 +743,30 @@ cupsSendRequest(http_t     *http, /* I - Connection to server or @code CUPS_HTTP
 
     DEBUG_puts("2cupsSendRequest: Writing IPP request...");
 
-    request->state = IPP_IDLE;
-    status         = HTTP_CONTINUE;
+    request->state = IPP_STATE_IDLE;
+    status         = HTTP_STATUS_CONTINUE;
     got_status     = 0;
 
-    while ((state = ippWrite(http, request)) != IPP_DATA)
-      if (state == IPP_ERROR)
+    while ((state = ippWrite(http, request)) != IPP_STATE_DATA)
+      if (state == IPP_STATE_ERROR)
        break;
       else if (httpCheck(http))
       {
         got_status = 1;
 
         _httpUpdate(http, &status);
-       if (status >= HTTP_MULTIPLE_CHOICES)
+       if (status >= HTTP_STATUS_MULTIPLE_CHOICES)
          break;
       }
 
-    if (state == IPP_ERROR)
+    if (state == IPP_STATE_ERROR)
     {
       DEBUG_puts("1cupsSendRequest: Unable to send IPP request.");
 
-      http->status = HTTP_ERROR;
-      http->state  = HTTP_WAITING;
+      http->status = HTTP_STATUS_ERROR;
+      http->state  = HTTP_STATE_WAITING;
 
-      return (HTTP_ERROR);
+      return (HTTP_STATUS_ERROR);
     }
 
    /*
@@ -775,7 +775,7 @@ cupsSendRequest(http_t     *http,   /* I - Connection to server or @code CUPS_HTTP
 
     if (!got_status)
     {
-      if (expect == HTTP_CONTINUE)
+      if (expect == HTTP_STATUS_CONTINUE)
       {
        DEBUG_puts("2cupsSendRequest: Waiting for 100-continue...");
 
@@ -819,16 +819,16 @@ cupsSendRequest(http_t     *http, /* I - Connection to server or @code CUPS_HTTP
       case HTTP_STATUS_UNAUTHORIZED :
           if (cupsDoAuthentication(http, "POST", resource))
          {
-            DEBUG_puts("1cupsSendRequest: Returning HTTP_AUTHORIZATION_CANCELED.");
-           return (HTTP_AUTHORIZATION_CANCELED);
+            DEBUG_puts("1cupsSendRequest: Returning HTTP_STATUS_CUPS_AUTHORIZATION_CANCELED.");
+           return (HTTP_STATUS_CUPS_AUTHORIZATION_CANCELED);
          }
 
-          DEBUG_puts("2cupsSendRequest: Reconnecting after HTTP_UNAUTHORIZED.");
+          DEBUG_puts("2cupsSendRequest: Reconnecting after HTTP_STATUS_UNAUTHORIZED.");
 
-         if (httpReconnect(http))
+         if (httpReconnect2(http, 30000, NULL))
          {
            DEBUG_puts("1cupsSendRequest: Unable to reconnect.");
-           return (HTTP_SERVICE_UNAVAILABLE);
+           return (HTTP_STATUS_SERVICE_UNAVAILABLE);
          }
          break;
 
@@ -840,19 +840,19 @@ cupsSendRequest(http_t     *http, /* I - Connection to server or @code CUPS_HTTP
          */
 
           DEBUG_puts("2cupsSendRequest: Reconnecting after "
-                    "HTTP_UPGRADE_REQUIRED.");
+                    "HTTP_STATUS_UPGRADE_REQUIRED.");
 
-         if (httpReconnect(http))
+         if (httpReconnect2(http, 30000, NULL))
          {
            DEBUG_puts("1cupsSendRequest: Unable to reconnect.");
-           return (HTTP_SERVICE_UNAVAILABLE);
+           return (HTTP_STATUS_SERVICE_UNAVAILABLE);
          }
 
          DEBUG_puts("2cupsSendRequest: Upgrading to TLS.");
-         if (httpEncryption(http, HTTP_ENCRYPT_REQUIRED))
+         if (httpEncryption(http, HTTP_ENCRYPTION_REQUIRED))
          {
            DEBUG_puts("1cupsSendRequest: Unable to encrypt connection.");
-           return (HTTP_SERVICE_UNAVAILABLE);
+           return (HTTP_STATUS_SERVICE_UNAVAILABLE);
          }
          break;
 #endif /* HAVE_SSL */
@@ -867,10 +867,10 @@ cupsSendRequest(http_t     *http, /* I - Connection to server or @code CUPS_HTTP
           DEBUG_puts("2cupsSendRequest: Reconnecting after "
                     "HTTP_EXPECTATION_FAILED.");
 
-         if (httpReconnect(http))
+         if (httpReconnect2(http, 30000, NULL))
          {
            DEBUG_puts("1cupsSendRequest: Unable to reconnect.");
-           return (HTTP_SERVICE_UNAVAILABLE);
+           return (HTTP_STATUS_SERVICE_UNAVAILABLE);
          }
          break;
 
@@ -894,7 +894,7 @@ cupsSendRequest(http_t     *http,   /* I - Connection to server or @code CUPS_HTTP
  * @since CUPS 1.4/OS X 10.6@
  */
 
-http_status_t                          /* O - @code HTTP_CONTINUE@ if OK or HTTP status on error */
+http_status_t                          /* O - @code HTTP_STATUS_CONTINUE@ if OK or HTTP status on error */
 cupsWriteRequestData(
     http_t     *http,                  /* I - Connection to server or @code CUPS_HTTP_DEFAULT@ */
     const char *buffer,                        /* I - Bytes to write */
@@ -917,9 +917,9 @@ cupsWriteRequestData(
 
     if ((http = cg->http) == NULL)
     {
-      _cupsSetError(IPP_INTERNAL_ERROR, _("No active connection"), 1);
-      DEBUG_puts("1cupsWriteRequestData: Returning HTTP_ERROR.");
-      return (HTTP_ERROR);
+      _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("No active connection"), 1);
+      DEBUG_puts("1cupsWriteRequestData: Returning HTTP_STATUS_ERROR.");
+      return (HTTP_STATUS_ERROR);
     }
   }
 
@@ -931,9 +931,9 @@ cupsWriteRequestData(
 
   if (httpWrite2(http, buffer, length) < 0)
   {
-    DEBUG_puts("1cupsWriteRequestData: Returning HTTP_ERROR.");
-    _cupsSetError(IPP_INTERNAL_ERROR, strerror(http->error), 0);
-    return (HTTP_ERROR);
+    DEBUG_puts("1cupsWriteRequestData: Returning HTTP_STATUS_ERROR.");
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(http->error), 0);
+    return (HTTP_STATUS_ERROR);
   }
 
  /*
@@ -953,7 +953,7 @@ cupsWriteRequestData(
       http_status_t    status;         /* Status from _httpUpdate */
 
       _httpUpdate(http, &status);
-      if (status >= HTTP_MULTIPLE_CHOICES)
+      if (status >= HTTP_STATUS_MULTIPLE_CHOICES)
       {
         _cupsSetHTTPError(status);
 
@@ -961,7 +961,7 @@ cupsWriteRequestData(
        {
          status = httpUpdate(http);
        }
-       while (status != HTTP_ERROR && http->state == HTTP_POST_RECV);
+       while (status != HTTP_STATUS_ERROR && http->state == HTTP_STATE_POST_RECV);
 
         httpFlush(http);
       }
@@ -971,8 +971,8 @@ cupsWriteRequestData(
     }
   }
 
-  DEBUG_puts("1cupsWriteRequestData: Returning HTTP_CONTINUE.");
-  return (HTTP_CONTINUE);
+  DEBUG_puts("1cupsWriteRequestData: Returning HTTP_STATUS_CONTINUE.");
+  return (HTTP_STATUS_CONTINUE);
 }
 
 
@@ -1001,7 +1001,7 @@ _cupsConnect(void)
     if (strcmp(cg->http->hostname, cg->server) ||
         cg->ipp_port != httpAddrPort(cg->http->hostaddr) ||
         (cg->http->encryption != cg->encryption &&
-        cg->http->encryption == HTTP_ENCRYPT_NEVER))
+        cg->http->encryption == HTTP_ENCRYPTION_NEVER))
     {
      /*
       * Need to close the current connection because something has changed...
@@ -1042,13 +1042,13 @@ _cupsConnect(void)
 
   if (!cg->http)
   {
-    if ((cg->http = httpConnectEncrypt(cupsServer(), ippPort(),
-                                       cupsEncryption())) == NULL)
+    if ((cg->http = httpConnect2(cupsServer(), ippPort(), NULL, AF_UNSPEC,
+                                cupsEncryption(), 1, 30000, NULL)) == NULL)
     {
       if (errno)
-        _cupsSetError(IPP_SERVICE_UNAVAILABLE, NULL, 0);
+        _cupsSetError(IPP_STATUS_ERROR_SERVICE_UNAVAILABLE, NULL, 0);
       else
-        _cupsSetError(IPP_SERVICE_UNAVAILABLE,
+        _cupsSetError(IPP_STATUS_ERROR_SERVICE_UNAVAILABLE,
                      _("Unable to connect to host."), 1);
     }
   }
@@ -1121,54 +1121,54 @@ _cupsSetHTTPError(http_status_t status) /* I - HTTP status code */
 {
   switch (status)
   {
-    case HTTP_NOT_FOUND :
-       _cupsSetError(IPP_NOT_FOUND, httpStatus(status), 0);
+    case HTTP_STATUS_NOT_FOUND :
+       _cupsSetError(IPP_STATUS_ERROR_NOT_FOUND, httpStatus(status), 0);
        break;
 
-    case HTTP_UNAUTHORIZED :
-       _cupsSetError(IPP_NOT_AUTHENTICATED, httpStatus(status), 0);
+    case HTTP_STATUS_UNAUTHORIZED :
+       _cupsSetError(IPP_STATUS_ERROR_NOT_AUTHENTICATED, httpStatus(status), 0);
        break;
 
-    case HTTP_AUTHORIZATION_CANCELED :
-       _cupsSetError(IPP_AUTHENTICATION_CANCELED, httpStatus(status), 0);
+    case HTTP_STATUS_CUPS_AUTHORIZATION_CANCELED :
+       _cupsSetError(IPP_STATUS_ERROR_CUPS_AUTHENTICATION_CANCELED, httpStatus(status), 0);
        break;
 
-    case HTTP_FORBIDDEN :
-       _cupsSetError(IPP_FORBIDDEN, httpStatus(status), 0);
+    case HTTP_STATUS_FORBIDDEN :
+       _cupsSetError(IPP_STATUS_ERROR_FORBIDDEN, httpStatus(status), 0);
        break;
 
-    case HTTP_BAD_REQUEST :
-       _cupsSetError(IPP_BAD_REQUEST, httpStatus(status), 0);
+    case HTTP_STATUS_BAD_REQUEST :
+       _cupsSetError(IPP_STATUS_ERROR_BAD_REQUEST, httpStatus(status), 0);
        break;
 
-    case HTTP_REQUEST_TOO_LARGE :
-       _cupsSetError(IPP_REQUEST_VALUE, httpStatus(status), 0);
+    case HTTP_STATUS_REQUEST_TOO_LARGE :
+       _cupsSetError(IPP_STATUS_ERROR_REQUEST_VALUE, httpStatus(status), 0);
        break;
 
-    case HTTP_NOT_IMPLEMENTED :
-       _cupsSetError(IPP_OPERATION_NOT_SUPPORTED, httpStatus(status), 0);
+    case HTTP_STATUS_NOT_IMPLEMENTED :
+       _cupsSetError(IPP_STATUS_ERROR_OPERATION_NOT_SUPPORTED, httpStatus(status), 0);
        break;
 
-    case HTTP_NOT_SUPPORTED :
-       _cupsSetError(IPP_VERSION_NOT_SUPPORTED, httpStatus(status), 0);
+    case HTTP_STATUS_NOT_SUPPORTED :
+       _cupsSetError(IPP_STATUS_ERROR_VERSION_NOT_SUPPORTED, httpStatus(status), 0);
        break;
 
-    case HTTP_UPGRADE_REQUIRED :
-       _cupsSetError(IPP_UPGRADE_REQUIRED, httpStatus(status), 0);
+    case HTTP_STATUS_UPGRADE_REQUIRED :
+       _cupsSetError(IPP_STATUS_ERROR_CUPS_UPGRADE_REQUIRED, httpStatus(status), 0);
         break;
 
-    case HTTP_PKI_ERROR :
-       _cupsSetError(IPP_PKI_ERROR, httpStatus(status), 0);
+    case HTTP_STATUS_CUPS_PKI_ERROR :
+       _cupsSetError(IPP_STATUS_ERROR_CUPS_PKI, httpStatus(status), 0);
         break;
 
-    case HTTP_ERROR :
-       _cupsSetError(IPP_INTERNAL_ERROR, strerror(errno), 0);
+    case HTTP_STATUS_ERROR :
+       _cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(errno), 0);
         break;
 
     default :
        DEBUG_printf(("4_cupsSetHTTPError: HTTP error %d mapped to "
-                     "IPP_SERVICE_UNAVAILABLE!", status));
-       _cupsSetError(IPP_SERVICE_UNAVAILABLE, httpStatus(status), 0);
+                     "IPP_STATUS_ERROR_SERVICE_UNAVAILABLE!", status));
+       _cupsSetError(IPP_STATUS_ERROR_SERVICE_UNAVAILABLE, httpStatus(status), 0);
        break;
   }
 }
index a16025c3e06e93b4d2362411082b61978c8ae75a..8119016ab50e3f8c03f838911415051924331065 100644 (file)
@@ -3,7 +3,7 @@
  *
  *   Admin function test program for CUPS.
  *
- *   Copyright 2007-2010 by Apple Inc.
+ *   Copyright 2007-2013 by Apple Inc.
  *   Copyright 2006 by Easy Software Products.
  *
  *   These coded instructions, statements, and computer programs are the
@@ -53,7 +53,8 @@ main(int  argc,                               /* I - Number of command-line args */
   * Connect to the server using the defaults...
   */
 
-  http = httpConnectEncrypt(cupsServer(), ippPort(), cupsEncryption());
+  http = httpConnect2(cupsServer(), ippPort(), NULL, AF_UNSPEC,
+                      cupsEncryption(), 1, 30000, NULL);
 
  /*
   * Set the current configuration if we have anything on the command-line...
index 18bb39cc4af0521f67949162709046fa27d98f7e..63e9478d6d67ad9a931ee7fa0b1cf2ac90824fdb 100644 (file)
@@ -3,7 +3,7 @@
  *
  *   CUPS API test program for CUPS.
  *
- *   Copyright 2007-2012 by Apple Inc.
+ *   Copyright 2007-2013 by Apple Inc.
  *   Copyright 2007 by Easy Software Products.
  *
  *   These coded instructions, statements, and computer programs are the
@@ -199,7 +199,7 @@ main(int  argc,                             /* I - Number of command-line arguments */
       interval = atoi(argv[4]);
 
       if (cupsStartDocument(CUPS_HTTP_DEFAULT, argv[1], job_id, argv[2],
-                           CUPS_FORMAT_AUTO, 1) != HTTP_CONTINUE)
+                           CUPS_FORMAT_AUTO, 1) != HTTP_STATUS_CONTINUE)
       {
        puts("Unable to start document!");
        return (1);
@@ -210,7 +210,7 @@ main(int  argc,                             /* I - Number of command-line arguments */
        printf("Writing %d bytes...\n", (int)bytes);
 
        if (cupsWriteRequestData(CUPS_HTTP_DEFAULT, buffer,
-                                bytes) != HTTP_CONTINUE)
+                                bytes) != HTTP_STATUS_CONTINUE)
        {
          puts("Unable to write bytes!");
          return (1);
@@ -222,7 +222,8 @@ main(int  argc,                             /* I - Number of command-line arguments */
 
       cupsFileClose(fp);
 
-      if (cupsFinishDocument(CUPS_HTTP_DEFAULT, argv[1]) > IPP_OK_SUBST)
+      if (cupsFinishDocument(CUPS_HTTP_DEFAULT,
+                             argv[1]) > IPP_STATUS_OK_IGNORED_OR_SUBSTITUTED)
       {
        puts("Unable to finish document!");
        return (1);
index 3e699cd3bc807cfcba3737be718a49bc2c8abd62..c4bd08e9b725f41180f8ab3f59b286d6097c1cc7 100644 (file)
@@ -3,7 +3,7 @@
  *
  *   HTTP test program for CUPS.
  *
- *   Copyright 2007-2012 by Apple Inc.
+ *   Copyright 2007-2013 by Apple Inc.
  *   Copyright 1997-2006 by Easy Software Products.
  *
  *   These coded instructions, statements, and computer programs are the
@@ -51,93 +51,93 @@ typedef struct uri_test_s           /**** URI test cases ****/
 static uri_test_t      uri_tests[] =   /* URI test data */
                        {
                          /* Start with valid URIs */
-                         { HTTP_URI_OK, "file:/filename",
+                         { HTTP_URI_STATUS_OK, "file:/filename",
                            "file", "", "", "/filename", 0, 0 },
-                         { HTTP_URI_OK, "file:/filename%20with%20spaces",
+                         { HTTP_URI_STATUS_OK, "file:/filename%20with%20spaces",
                            "file", "", "", "/filename with spaces", 0, 0 },
-                         { HTTP_URI_OK, "file:///filename",
+                         { HTTP_URI_STATUS_OK, "file:///filename",
                            "file", "", "", "/filename", 0, 0 },
-                         { HTTP_URI_OK, "file:///filename%20with%20spaces",
+                         { HTTP_URI_STATUS_OK, "file:///filename%20with%20spaces",
                            "file", "", "", "/filename with spaces", 0, 0 },
-                         { HTTP_URI_OK, "file://localhost/filename",
+                         { HTTP_URI_STATUS_OK, "file://localhost/filename",
                            "file", "", "localhost", "/filename", 0, 0 },
-                         { HTTP_URI_OK, "file://localhost/filename%20with%20spaces",
+                         { HTTP_URI_STATUS_OK, "file://localhost/filename%20with%20spaces",
                            "file", "", "localhost", "/filename with spaces", 0, 0 },
-                         { HTTP_URI_OK, "http://server/",
+                         { HTTP_URI_STATUS_OK, "http://server/",
                            "http", "", "server", "/", 80, 0 },
-                         { HTTP_URI_OK, "http://username@server/",
+                         { HTTP_URI_STATUS_OK, "http://username@server/",
                            "http", "username", "server", "/", 80, 0 },
-                         { HTTP_URI_OK, "http://username:passwor%64@server/",
+                         { HTTP_URI_STATUS_OK, "http://username:passwor%64@server/",
                            "http", "username:password", "server", "/", 80, 0 },
-                         { HTTP_URI_OK, "http://username:passwor%64@server:8080/",
+                         { HTTP_URI_STATUS_OK, "http://username:passwor%64@server:8080/",
                            "http", "username:password", "server", "/", 8080, 8080 },
-                         { HTTP_URI_OK, "http://username:passwor%64@server:8080/directory/filename",
+                         { HTTP_URI_STATUS_OK, "http://username:passwor%64@server:8080/directory/filename",
                            "http", "username:password", "server", "/directory/filename", 8080, 8080 },
-                         { HTTP_URI_OK, "http://[2000::10:100]:631/ipp",
+                         { HTTP_URI_STATUS_OK, "http://[2000::10:100]:631/ipp",
                            "http", "", "2000::10:100", "/ipp", 631, 631 },
-                         { HTTP_URI_OK, "https://username:passwor%64@server/directory/filename",
+                         { HTTP_URI_STATUS_OK, "https://username:passwor%64@server/directory/filename",
                            "https", "username:password", "server", "/directory/filename", 443, 0 },
-                         { HTTP_URI_OK, "ipp://username:passwor%64@[::1]/ipp",
+                         { HTTP_URI_STATUS_OK, "ipp://username:passwor%64@[::1]/ipp",
                            "ipp", "username:password", "::1", "/ipp", 631, 0 },
-                         { HTTP_URI_OK, "lpd://server/queue?reserve=yes",
+                         { HTTP_URI_STATUS_OK, "lpd://server/queue?reserve=yes",
                            "lpd", "", "server", "/queue?reserve=yes", 515, 0 },
-                         { HTTP_URI_OK, "mailto:user@domain.com",
+                         { HTTP_URI_STATUS_OK, "mailto:user@domain.com",
                            "mailto", "", "", "user@domain.com", 0, 0 },
-                         { HTTP_URI_OK, "socket://server/",
+                         { HTTP_URI_STATUS_OK, "socket://server/",
                            "socket", "", "server", "/", 9100, 0 },
-                         { HTTP_URI_OK, "socket://192.168.1.1:9101/",
+                         { HTTP_URI_STATUS_OK, "socket://192.168.1.1:9101/",
                            "socket", "", "192.168.1.1", "/", 9101, 9101 },
-                         { HTTP_URI_OK, "ipp://username:password@[v1.fe80::200:1234:5678:9abc+eth0]:999/ipp",
+                         { HTTP_URI_STATUS_OK, "ipp://username:password@[v1.fe80::200:1234:5678:9abc+eth0]:999/ipp",
                            "ipp", "username:password", "fe80::200:1234:5678:9abc%eth0", "/ipp", 999, 999 },
-                         { HTTP_URI_OK, "http://server/admin?DEVICE_URI=usb://HP/Photosmart%25202600%2520series?serial=MY53OK70V10400",
+                         { HTTP_URI_STATUS_OK, "http://server/admin?DEVICE_URI=usb://HP/Photosmart%25202600%2520series?serial=MY53OK70V10400",
                            "http", "", "server", "/admin?DEVICE_URI=usb://HP/Photosmart%25202600%2520series?serial=MY53OK70V10400", 80, 0 },
-                         { HTTP_URI_OK, "lpd://Acme%20Laser%20(01%3A23%3A45).local._tcp._printer/",
+                         { HTTP_URI_STATUS_OK, "lpd://Acme%20Laser%20(01%3A23%3A45).local._tcp._printer/",
                            "lpd", "", "Acme Laser (01:23:45).local._tcp._printer", "/", 515, 0 },
-                         { HTTP_URI_OK, "ipp://HP%20Officejet%204500%20G510n-z%20%40%20Will's%20MacBook%20Pro%2015%22._ipp._tcp.local./",
+                         { HTTP_URI_STATUS_OK, "ipp://HP%20Officejet%204500%20G510n-z%20%40%20Will's%20MacBook%20Pro%2015%22._ipp._tcp.local./",
                            "ipp", "", "HP Officejet 4500 G510n-z @ Will's MacBook Pro 15\"._ipp._tcp.local.", "/", 631, 0 },
 
                          /* Missing scheme */
-                         { HTTP_URI_MISSING_SCHEME, "/path/to/file/index.html",
+                         { HTTP_URI_STATUS_MISSING_SCHEME, "/path/to/file/index.html",
                            "file", "", "", "/path/to/file/index.html", 0, 0 },
-                         { HTTP_URI_MISSING_SCHEME, "//server/ipp",
+                         { HTTP_URI_STATUS_MISSING_SCHEME, "//server/ipp",
                            "ipp", "", "server", "/ipp", 631, 0 },
 
                          /* Unknown scheme */
-                         { HTTP_URI_UNKNOWN_SCHEME, "vendor://server/resource",
+                         { HTTP_URI_STATUS_UNKNOWN_SCHEME, "vendor://server/resource",
                            "vendor", "", "server", "/resource", 0, 0 },
 
                          /* Missing resource */
-                         { HTTP_URI_MISSING_RESOURCE, "socket://[::192.168.2.1]",
+                         { HTTP_URI_STATUS_MISSING_RESOURCE, "socket://[::192.168.2.1]",
                            "socket", "", "::192.168.2.1", "/", 9100, 0 },
-                         { HTTP_URI_MISSING_RESOURCE, "socket://192.168.1.1:9101",
+                         { HTTP_URI_STATUS_MISSING_RESOURCE, "socket://192.168.1.1:9101",
                            "socket", "", "192.168.1.1", "/", 9101 },
 
                          /* Bad URI */
-                         { HTTP_URI_BAD_URI, "",
+                         { HTTP_URI_STATUS_BAD_URI, "",
                            "", "", "", "", 0, 0 },
 
                          /* Bad scheme */
-                         { HTTP_URI_BAD_SCHEME, "bad_scheme://server/resource",
+                         { HTTP_URI_STATUS_BAD_SCHEME, "bad_scheme://server/resource",
                            "", "", "", "", 0, 0 },
 
                          /* Bad username */
-                         { HTTP_URI_BAD_USERNAME, "http://username:passwor%6@server/resource",
+                         { HTTP_URI_STATUS_BAD_USERNAME, "http://username:passwor%6@server/resource",
                            "http", "", "", "", 80, 0 },
 
                          /* Bad hostname */
-                         { HTTP_URI_BAD_HOSTNAME, "http://[/::1]/index.html",
+                         { HTTP_URI_STATUS_BAD_HOSTNAME, "http://[/::1]/index.html",
                            "http", "", "", "", 80, 0 },
-                         { HTTP_URI_BAD_HOSTNAME, "http://[",
+                         { HTTP_URI_STATUS_BAD_HOSTNAME, "http://[",
                            "http", "", "", "", 80, 0 },
-                         { HTTP_URI_BAD_HOSTNAME, "http://serve%7/index.html",
+                         { HTTP_URI_STATUS_BAD_HOSTNAME, "http://serve%7/index.html",
                            "http", "", "", "", 80, 0 },
 
                          /* Bad port number */
-                         { HTTP_URI_BAD_PORT, "http://127.0.0.1:9999a/index.html",
+                         { HTTP_URI_STATUS_BAD_PORT, "http://127.0.0.1:9999a/index.html",
                            "http", "", "127.0.0.1", "", 0, 0 },
 
                          /* Bad resource */
-                         { HTTP_URI_BAD_RESOURCE, "http://server/index.html%",
+                         { HTTP_URI_STATUS_BAD_RESOURCE, "http://server/index.html%",
                            "http", "", "server", "", 80, 0 }
                        };
 static const char * const base64_tests[][2] =
@@ -189,18 +189,18 @@ main(int  argc,                           /* I - Number of command-line arguments */
   const char   *encoding;              /* Negotiated Content-Encoding */
   static const char * const uri_status_strings[] =
                {
-                 "HTTP_URI_OVERFLOW",
-                 "HTTP_URI_BAD_ARGUMENTS",
-                 "HTTP_URI_BAD_RESOURCE",
-                 "HTTP_URI_BAD_PORT",
-                 "HTTP_URI_BAD_HOSTNAME",
-                 "HTTP_URI_BAD_USERNAME",
-                 "HTTP_URI_BAD_SCHEME",
-                 "HTTP_URI_BAD_URI",
-                 "HTTP_URI_OK",
-                 "HTTP_URI_MISSING_SCHEME",
-                 "HTTP_URI_UNKNOWN_SCHEME",
-                 "HTTP_URI_MISSING_RESOURCE"
+                 "HTTP_URI_STATUS_OVERFLOW",
+                 "HTTP_URI_STATUS_BAD_ARGUMENTS",
+                 "HTTP_URI_STATUS_BAD_RESOURCE",
+                 "HTTP_URI_STATUS_BAD_PORT",
+                 "HTTP_URI_STATUS_BAD_HOSTNAME",
+                 "HTTP_URI_STATUS_BAD_USERNAME",
+                 "HTTP_URI_STATUS_BAD_SCHEME",
+                 "HTTP_URI_STATUS_BAD_URI",
+                 "HTTP_URI_STATUS_OK",
+                 "HTTP_URI_STATUS_MISSING_SCHEME",
+                 "HTTP_URI_STATUS_UNKNOWN_SCHEME",
+                 "HTTP_URI_STATUS_MISSING_RESOURCE"
                };
 
 
@@ -403,7 +403,7 @@ main(int  argc,                             /* I - Number of command-line arguments */
     for (i = 0, j = 0, k = 0;
          i < (int)(sizeof(uri_tests) / sizeof(uri_tests[0]));
         i ++)
-      if (uri_tests[i].result == HTTP_URI_OK &&
+      if (uri_tests[i].result == HTTP_URI_STATUS_OK &&
           !strstr(uri_tests[i].uri, "%64") &&
           strstr(uri_tests[i].uri, "//"))
       {
@@ -416,7 +416,7 @@ main(int  argc,                             /* I - Number of command-line arguments */
                                     uri_tests[i].assemble_port,
                                     uri_tests[i].resource);
 
-        if (uri_status != HTTP_URI_OK)
+        if (uri_status != HTTP_URI_STATUS_OK)
        {
           failures ++;
 
@@ -545,11 +545,12 @@ main(int  argc,                           /* I - Number of command-line arguments */
 
     if (!_cups_strcasecmp(scheme, "https") || !_cups_strcasecmp(scheme, "ipps") ||
         port == 443)
-      encryption = HTTP_ENCRYPT_ALWAYS;
+      encryption = HTTP_ENCRYPTION_ALWAYS;
     else
-      encryption = HTTP_ENCRYPT_IF_REQUESTED;
+      encryption = HTTP_ENCRYPTION_IF_REQUESTED;
 
-    http = httpConnectEncrypt(hostname, port, encryption);
+    http = httpConnect2(hostname, port, NULL, AF_UNSPEC, encryption, 1, 30000,
+                        NULL);
     if (http == NULL)
     {
       perror(hostname);
@@ -559,9 +560,9 @@ main(int  argc,                             /* I - Number of command-line arguments */
     httpClearFields(http);
     httpSetField(http, HTTP_FIELD_ACCEPT_LANGUAGE, "en");
     httpHead(http, resource);
-    while ((status = httpUpdate(http)) == HTTP_CONTINUE);
+    while ((status = httpUpdate(http)) == HTTP_STATUS_CONTINUE);
 
-    if (status == HTTP_OK)
+    if (status == HTTP_STATUS_OK)
       puts("HEAD OK:");
     else
       printf("HEAD failed with status %d...\n", status);
@@ -574,9 +575,9 @@ main(int  argc,                             /* I - Number of command-line arguments */
     httpSetField(http, HTTP_FIELD_ACCEPT_LANGUAGE, "en");
     httpSetField(http, HTTP_FIELD_ACCEPT_ENCODING, encoding);
     httpGet(http, resource);
-    while ((status = httpUpdate(http)) == HTTP_CONTINUE);
+    while ((status = httpUpdate(http)) == HTTP_STATUS_CONTINUE);
 
-    if (status == HTTP_OK)
+    if (status == HTTP_STATUS_OK)
       puts("GET OK:");
     else
       printf("GET failed with status %d...\n", status);
index 88ed7dfaccb2581f4e60435b56cef968cf6aec9b..68c27c3d044274225f252b8de5f23b441d7941e7 100644 (file)
@@ -3,7 +3,7 @@
  *
  *   IPP test program for CUPS.
  *
- *   Copyright 2007-2012 by Apple Inc.
+ *   Copyright 2007-2013 by Apple Inc.
  *   Copyright 1997-2005 by Easy Software Products.
  *
  *   These coded instructions, statements, and computer programs are the
@@ -279,7 +279,7 @@ main(int  argc,                     /* I - Number of command-line arguments */
     request = ippNew();
     request->request.op.version[0]   = 0x01;
     request->request.op.version[1]   = 0x01;
-    request->request.op.operation_id = IPP_PRINT_JOB;
+    request->request.op.operation_id = IPP_OP_PRINT_JOB;
     request->request.op.request_id   = 1;
 
     ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_CHARSET,
@@ -337,11 +337,11 @@ main(int  argc,                   /* I - Number of command-line arguments */
     data.wbuffer = buffer;
 
     while ((state = ippWriteIO(&data, (ipp_iocb_t)write_cb, 1, NULL,
-                               request)) != IPP_DATA)
-      if (state == IPP_ERROR)
+                               request)) != IPP_STATE_DATA)
+      if (state == IPP_STATE_ERROR)
        break;
 
-    if (state != IPP_DATA)
+    if (state != IPP_STATE_DATA)
     {
       printf("FAIL - %d bytes written.\n", (int)data.wused);
       status = 1;
@@ -380,13 +380,13 @@ main(int  argc,                   /* I - Number of command-line arguments */
     data.rpos = 0;
 
     while ((state = ippReadIO(&data, (ipp_iocb_t)read_cb, 1, NULL,
-                              request)) != IPP_DATA)
-      if (state == IPP_ERROR)
+                              request)) != IPP_STATE_DATA)
+      if (state == IPP_STATE_ERROR)
        break;
 
     length = ippLength(request);
 
-    if (state != IPP_DATA)
+    if (state != IPP_STATE_DATA)
     {
       printf("FAIL - %d bytes read.\n", (int)data.rpos);
       status = 1;
@@ -564,13 +564,13 @@ main(int  argc,                   /* I - Number of command-line arguments */
     data.wbuffer = mixed;
 
     while ((state = ippReadIO(&data, (ipp_iocb_t)read_cb, 1, NULL,
-                              request)) != IPP_DATA)
-      if (state == IPP_ERROR)
+                              request)) != IPP_STATE_DATA)
+      if (state == IPP_STATE_ERROR)
        break;
 
     length = ippLength(request);
 
-    if (state != IPP_DATA)
+    if (state != IPP_STATE_DATA)
     {
       printf("FAIL - %d bytes read.\n", (int)data.rpos);
       status = 1;
@@ -682,9 +682,9 @@ main(int  argc,                     /* I - Number of command-line arguments */
 
       request = ippNew();
       while ((state = ippReadIO(fp, (ipp_iocb_t)cupsFileRead, 1, NULL,
-                                request)) == IPP_ATTRIBUTE);
+                                request)) == IPP_STATE_ATTRIBUTE);
 
-      if (state != IPP_DATA)
+      if (state != IPP_STATE_DATA)
       {
        printf("Error reading IPP message from \"%s\"!\n", argv[i]);
        status = 1;
index f947165808f8fbf2aa3951730c088883261b5adf..244dbe772e60ee1732aa5ee33ccf6b6f5c960d27 100644 (file)
@@ -86,7 +86,7 @@ static void   cups_read_client_conf(cups_file_t *fp,
  * The default encryption setting comes from the CUPS_ENCRYPTION
  * environment variable, then the ~/.cups/client.conf file, and finally the
  * /etc/cups/client.conf file. If not set, the default is
- * @code HTTP_ENCRYPT_IF_REQUESTED@.
+ * @code HTTP_ENCRYPTION_IF_REQUESTED@.
  *
  * Note: The current encryption setting is tracked separately for each thread
  * in a program. Multi-threaded programs that override the setting via the
@@ -249,7 +249,7 @@ cupsSetCredentials(
  * The default encryption setting comes from the CUPS_ENCRYPTION
  * environment variable, then the ~/.cups/client.conf file, and finally the
  * /etc/cups/client.conf file. If not set, the default is
- * @code HTTP_ENCRYPT_IF_REQUESTED@.
+ * @code HTTP_ENCRYPTION_IF_REQUESTED@.
  *
  * Note: The current encryption setting is tracked separately for each thread
  * in a program. Multi-threaded programs that override the setting need to do
@@ -1021,13 +1021,13 @@ cups_read_client_conf(
   if (cg->encryption == (http_encryption_t)-1 && cups_encryption)
   {
     if (!_cups_strcasecmp(cups_encryption, "never"))
-      cg->encryption = HTTP_ENCRYPT_NEVER;
+      cg->encryption = HTTP_ENCRYPTION_NEVER;
     else if (!_cups_strcasecmp(cups_encryption, "always"))
-      cg->encryption = HTTP_ENCRYPT_ALWAYS;
+      cg->encryption = HTTP_ENCRYPTION_ALWAYS;
     else if (!_cups_strcasecmp(cups_encryption, "required"))
-      cg->encryption = HTTP_ENCRYPT_REQUIRED;
+      cg->encryption = HTTP_ENCRYPTION_REQUIRED;
     else
-      cg->encryption = HTTP_ENCRYPT_IF_REQUESTED;
+      cg->encryption = HTTP_ENCRYPTION_IF_REQUESTED;
   }
 
   if ((!cg->server[0] || !cg->ipp_port) && cups_server)
index c070cce4c36b64acdc78bcb514f0c94c8c4a620b..30e4ce81fe332fbda1607119dccdbd0960bb858c 100644 (file)
@@ -3,7 +3,7 @@
  *
  *   Printing utilities for CUPS.
  *
- *   Copyright 2007-2012 by Apple Inc.
+ *   Copyright 2007-2013 by Apple Inc.
  *   Copyright 1997-2006 by Easy Software Products.
  *
  *   These coded instructions, statements, and computer programs are the
@@ -90,7 +90,7 @@ cupsCancelJob(const char *name,               /* I - Name of printer or class */
               int        job_id)       /* I - Job ID, @code CUPS_JOBID_CURRENT@ for the current job, or @code CUPS_JOBID_ALL@ for all jobs */
 {
   return (cupsCancelJob2(CUPS_HTTP_DEFAULT, name, job_id, 0)
-              < IPP_REDIRECTION_OTHER_SITE);
+              < IPP_STATUS_REDIRECTION_OTHER_SITE);
 }
 
 
@@ -125,7 +125,7 @@ cupsCancelJob2(http_t     *http,    /* I - Connection to server or @code CUPS_HTTP_
 
   if (job_id < -1 || (!name && job_id == 0))
   {
-    _cupsSetError(IPP_INTERNAL_ERROR, strerror(EINVAL), 0);
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(EINVAL), 0);
     return (0);
   }
 
@@ -135,7 +135,7 @@ cupsCancelJob2(http_t     *http,    /* I - Connection to server or @code CUPS_HTTP_
 
   if (!http)
     if ((http = _cupsConnect()) == NULL)
-      return (IPP_SERVICE_UNAVAILABLE);
+      return (IPP_STATUS_ERROR_SERVICE_UNAVAILABLE);
 
  /*
   * Build an IPP_CANCEL_JOB or IPP_PURGE_JOBS request, which requires the following
@@ -148,7 +148,7 @@ cupsCancelJob2(http_t     *http,    /* I - Connection to server or @code CUPS_HTTP_
   *    [purge-job] or [purge-jobs]
   */
 
-  request = ippNewRequest(job_id < 0 ? IPP_PURGE_JOBS : IPP_CANCEL_JOB);
+  request = ippNewRequest(job_id < 0 ? IPP_OP_PURGE_JOBS : IPP_OP_CANCEL_JOB);
 
   if (name)
   {
@@ -223,7 +223,7 @@ cupsCreateJob(
 
   if (!name)
   {
-    _cupsSetError(IPP_INTERNAL_ERROR, strerror(EINVAL), 0);
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(EINVAL), 0);
     return (0);
   }
 
@@ -231,9 +231,9 @@ cupsCreateJob(
   * Build a Create-Job request...
   */
 
-  if ((request = ippNewRequest(IPP_CREATE_JOB)) == NULL)
+  if ((request = ippNewRequest(IPP_OP_CREATE_JOB)) == NULL)
   {
-    _cupsSetError(IPP_INTERNAL_ERROR, strerror(ENOMEM), 0);
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(ENOMEM), 0);
     return (0);
   }
 
@@ -342,7 +342,7 @@ cupsGetClasses(char ***classes)             /* O - Classes */
 
   if (!classes)
   {
-    _cupsSetError(IPP_INTERNAL_ERROR, strerror(EINVAL), 0);
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(EINVAL), 0);
 
     return (0);
   }
@@ -361,7 +361,7 @@ cupsGetClasses(char ***classes)             /* O - Classes */
   *    requested-attributes
   */
 
-  request = ippNewRequest(CUPS_GET_CLASSES);
+  request = ippNewRequest(IPP_OP_CUPS_GET_CLASSES);
 
   ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD,
                "requested-attributes", NULL, "printer-name");
@@ -480,7 +480,7 @@ cupsGetDefault2(http_t *http)               /* I - Connection to server or @code CUPS_HTTP_DE
   *    attributes-natural-language
   */
 
-  request = ippNewRequest(CUPS_GET_DEFAULT);
+  request = ippNewRequest(IPP_OP_CUPS_GET_DEFAULT);
 
  /*
   * Do the request and get back a response...
@@ -586,7 +586,7 @@ cupsGetJobs2(http_t     *http,              /* I - Connection to server or @code CUPS_HTTP_D
 
   if (!jobs)
   {
-    _cupsSetError(IPP_INTERNAL_ERROR, strerror(EINVAL), 0);
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(EINVAL), 0);
 
     return (-1);
   }
@@ -598,9 +598,11 @@ cupsGetJobs2(http_t     *http,             /* I - Connection to server or @code CUPS_HTTP_D
   if (name)
   {
     if (httpAssembleURIf(HTTP_URI_CODING_ALL, uri, sizeof(uri), "ipp", NULL,
-                         "localhost", 0, "/printers/%s", name) != HTTP_URI_OK)
+                         "localhost", 0, "/printers/%s",
+                         name) < HTTP_URI_STATUS_OK)
     {
-      _cupsSetError(IPP_INTERNAL_ERROR, _("Unable to create printer-uri"), 1);
+      _cupsSetError(IPP_STATUS_ERROR_INTERNAL,
+                    _("Unable to create printer-uri"), 1);
 
       return (-1);
     }
@@ -625,7 +627,7 @@ cupsGetJobs2(http_t     *http,              /* I - Connection to server or @code CUPS_HTTP_D
   *    requested-attributes
   */
 
-  request = ippNewRequest(IPP_GET_JOBS);
+  request = ippNewRequest(IPP_OP_GET_JOBS);
 
   ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI,
                "printer-uri", NULL, uri);
@@ -675,7 +677,7 @@ cupsGetJobs2(http_t     *http,              /* I - Connection to server or @code CUPS_HTTP_D
       id              = 0;
       size            = 0;
       priority        = 50;
-      state           = IPP_JOB_PENDING;
+      state           = IPP_JSTATE_PENDING;
       user            = "unknown";
       dest            = NULL;
       format          = "application/octet-stream";
@@ -754,7 +756,7 @@ cupsGetJobs2(http_t     *http,              /* I - Connection to server or @code CUPS_HTTP_D
         * Ran out of memory!
         */
 
-        _cupsSetError(IPP_INTERNAL_ERROR, NULL, 0);
+        _cupsSetError(IPP_STATUS_ERROR_INTERNAL, NULL, 0);
 
        cupsFreeJobs(n, *jobs);
        *jobs = NULL;
@@ -791,7 +793,7 @@ cupsGetJobs2(http_t     *http,              /* I - Connection to server or @code CUPS_HTTP_D
     ippDelete(response);
   }
 
-  if (n == 0 && cg->last_error >= IPP_BAD_REQUEST)
+  if (n == 0 && cg->last_error >= IPP_STATUS_ERROR_BAD_REQUEST)
     return (-1);
   else
     return (n);
@@ -823,7 +825,7 @@ cupsGetPPD(const char *name)                /* I - Destination name */
   cg->ppd_filename[0] = '\0';
 
   if (cupsGetPPD3(CUPS_HTTP_DEFAULT, name, &modtime, cg->ppd_filename,
-                  sizeof(cg->ppd_filename)) == HTTP_OK)
+                  sizeof(cg->ppd_filename)) == HTTP_STATUS_OK)
     return (cg->ppd_filename);
   else
     return (NULL);
@@ -854,7 +856,7 @@ cupsGetPPD2(http_t     *http,               /* I - Connection to server or @code CUPS_HTTP_DE
   cg->ppd_filename[0] = '\0';
 
   if (cupsGetPPD3(http, name, &modtime, cg->ppd_filename,
-                  sizeof(cg->ppd_filename)) == HTTP_OK)
+                  sizeof(cg->ppd_filename)) == HTTP_STATUS_OK)
     return (cg->ppd_filename);
   else
     return (NULL);
@@ -874,8 +876,8 @@ cupsGetPPD2(http_t     *http,               /* I - Connection to server or @code CUPS_HTTP_DE
  * file will be overwritten as needed.  The caller "owns" the file that is
  * created and must @code unlink@ the returned filename.
  *
- * On success, @code HTTP_OK@ is returned for a new PPD file and
- * @code HTTP_NOT_MODIFIED@ if the existing PPD file is up-to-date.  Any other
+ * On success, @code HTTP_STATUS_OK@ is returned for a new PPD file and
+ * @code HTTP_STATUS_NOT_MODIFIED@ if the existing PPD file is up-to-date.  Any other
  * status is an error.
  *
  * For classes, @code cupsGetPPD3@ returns the PPD file for the first printer
@@ -915,20 +917,20 @@ cupsGetPPD3(http_t     *http,             /* I  - HTTP connection or @code CUPS_HTTP_DEFAUL
 
   if (!name)
   {
-    _cupsSetError(IPP_INTERNAL_ERROR, _("No printer name"), 1);
-    return (HTTP_NOT_ACCEPTABLE);
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("No printer name"), 1);
+    return (HTTP_STATUS_NOT_ACCEPTABLE);
   }
 
   if (!modtime)
   {
-    _cupsSetError(IPP_INTERNAL_ERROR, _("No modification time"), 1);
-    return (HTTP_NOT_ACCEPTABLE);
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("No modification time"), 1);
+    return (HTTP_STATUS_NOT_ACCEPTABLE);
   }
 
   if (!buffer || bufsize <= 1)
   {
-    _cupsSetError(IPP_INTERNAL_ERROR, _("Bad filename buffer"), 1);
-    return (HTTP_NOT_ACCEPTABLE);
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad filename buffer"), 1);
+    return (HTTP_STATUS_NOT_ACCEPTABLE);
   }
 
 #ifndef WIN32
@@ -965,9 +967,9 @@ cupsGetPPD3(http_t     *http,               /* I  - HTTP connection or @code CUPS_HTTP_DEFAUL
 
        if (symlink(ppdname, buffer) && errno != EEXIST)
         {
-          _cupsSetError(IPP_INTERNAL_ERROR, NULL, 0);
+          _cupsSetError(IPP_STATUS_ERROR_INTERNAL, NULL, 0);
 
-         return (HTTP_SERVER_ERROR);
+         return (HTTP_STATUS_SERVER_ERROR);
        }
       }
       else
@@ -1025,18 +1027,18 @@ cupsGetPPD3(http_t     *http,           /* I  - HTTP connection or @code CUPS_HTTP_DEFAUL
 
         if (tries >= 1000)
        {
-          _cupsSetError(IPP_INTERNAL_ERROR, NULL, 0);
+          _cupsSetError(IPP_STATUS_ERROR_INTERNAL, NULL, 0);
 
-         return (HTTP_SERVER_ERROR);
+         return (HTTP_STATUS_SERVER_ERROR);
        }
       }
 
       if (*modtime >= ppdinfo.st_mtime)
-        return (HTTP_NOT_MODIFIED);
+        return (HTTP_STATUS_NOT_MODIFIED);
       else
       {
         *modtime = ppdinfo.st_mtime;
-       return (HTTP_OK);
+       return (HTTP_STATUS_OK);
       }
     }
   }
@@ -1048,11 +1050,11 @@ cupsGetPPD3(http_t     *http,           /* I  - HTTP connection or @code CUPS_HTTP_DEFAUL
 
   if (!http)
     if ((http = _cupsConnect()) == NULL)
-      return (HTTP_SERVICE_UNAVAILABLE);
+      return (HTTP_STATUS_SERVICE_UNAVAILABLE);
 
   if (!cups_get_printer_uri(http, name, hostname, sizeof(hostname), &port,
                             resource, sizeof(resource), 0))
-    return (HTTP_NOT_FOUND);
+    return (HTTP_STATUS_NOT_FOUND);
 
   DEBUG_printf(("2cupsGetPPD3: Printer hostname=\"%s\", port=%d", hostname,
                 port));
@@ -1084,12 +1086,12 @@ cupsGetPPD3(http_t     *http,           /* I  - HTTP connection or @code CUPS_HTTP_DEFAUL
 
   if (!_cups_strcasecmp(http_hostname, hostname) && port == http_port)
     http2 = http;
-  else if ((http2 = httpConnectEncrypt(hostname, port,
-                                       cupsEncryption())) == NULL)
+  else if ((http2 = httpConnect2(hostname, port, NULL, AF_UNSPEC,
+                                cupsEncryption(), 1, 30000, NULL)) == NULL)
   {
     DEBUG_puts("1cupsGetPPD3: Unable to connect to server");
 
-    return (HTTP_SERVICE_UNAVAILABLE);
+    return (HTTP_STATUS_SERVICE_UNAVAILABLE);
   }
 
  /*
@@ -1107,12 +1109,12 @@ cupsGetPPD3(http_t     *http,           /* I  - HTTP connection or @code CUPS_HTTP_DEFAUL
     * Can't open file; close the server connection and return NULL...
     */
 
-    _cupsSetError(IPP_INTERNAL_ERROR, NULL, 0);
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, NULL, 0);
 
     if (http2 != http)
       httpClose(http2);
 
-    return (HTTP_SERVER_ERROR);
+    return (HTTP_STATUS_SERVER_ERROR);
   }
 
  /*
@@ -1133,14 +1135,14 @@ cupsGetPPD3(http_t     *http,           /* I  - HTTP connection or @code CUPS_HTTP_DEFAUL
   * See if we actually got the file or an error...
   */
 
-  if (status == HTTP_OK)
+  if (status == HTTP_STATUS_OK)
   {
     *modtime = httpGetDateTime(httpGetField(http2, HTTP_FIELD_DATE));
 
     if (tempfile[0])
       strlcpy(buffer, tempfile, bufsize);
   }
-  else if (status != HTTP_NOT_MODIFIED)
+  else if (status != HTTP_STATUS_NOT_MODIFIED)
   {
     _cupsSetHTTPError(status);
 
@@ -1190,7 +1192,7 @@ cupsGetPrinters(char ***printers) /* O - Printers */
 
   if (!printers)
   {
-    _cupsSetError(IPP_INTERNAL_ERROR, strerror(EINVAL), 0);
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(EINVAL), 0);
 
     return (0);
   }
@@ -1213,7 +1215,7 @@ cupsGetPrinters(char ***printers) /* O - Printers */
   *    requested-attributes
   */
 
-  request = ippNewRequest(CUPS_GET_PRINTERS);
+  request = ippNewRequest(IPP_OP_CUPS_GET_PRINTERS);
 
   ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD,
                "requested-attributes", NULL, "printer-name");
@@ -1302,7 +1304,7 @@ cupsGetServerPPD(http_t     *http,        /* I - Connection to server or @code CUPS_HTT
 
   if (!name)
   {
-    _cupsSetError(IPP_INTERNAL_ERROR, _("No PPD name"), 1);
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("No PPD name"), 1);
 
     return (NULL);
   }
@@ -1321,7 +1323,7 @@ cupsGetServerPPD(http_t     *http,        /* I - Connection to server or @code CUPS_HTT
     * Can't open file; close the server connection and return NULL...
     */
 
-    _cupsSetError(IPP_INTERNAL_ERROR, NULL, 0);
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, NULL, 0);
 
     return (NULL);
   }
@@ -1330,7 +1332,7 @@ cupsGetServerPPD(http_t     *http,        /* I - Connection to server or @code CUPS_HTT
   * Get the PPD file...
   */
 
-  request = ippNewRequest(CUPS_GET_PPD);
+  request = ippNewRequest(IPP_OP_CUPS_GET_PPD);
   ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "ppd-name", NULL,
                name);
 
@@ -1338,7 +1340,7 @@ cupsGetServerPPD(http_t     *http,        /* I - Connection to server or @code CUPS_HTT
 
   close(fd);
 
-  if (cupsLastError() != IPP_OK)
+  if (cupsLastError() != IPP_STATUS_OK)
   {
     unlink(cg->ppd_filename);
     return (NULL);
@@ -1460,7 +1462,7 @@ cupsPrintFiles2(
 
   if (!name || num_files < 1 || !files)
   {
-    _cupsSetError(IPP_INTERNAL_ERROR, strerror(EINVAL), 0);
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(EINVAL), 0);
 
     return (0);
   }
@@ -1499,20 +1501,20 @@ cupsPrintFiles2(
       * Unable to open print file, cancel the job and return...
       */
 
-      _cupsSetError(IPP_DOCUMENT_ACCESS_ERROR, NULL, 0);
+      _cupsSetError(IPP_STATUS_ERROR_DOCUMENT_ACCESS, NULL, 0);
       goto cancel_job;
     }
 
     status = cupsStartDocument(http, name, job_id, docname, format,
                               i == (num_files - 1));
 
-    while (status == HTTP_CONTINUE &&
+    while (status == HTTP_STATUS_CONTINUE &&
           (bytes = cupsFileRead(fp, buffer, sizeof(buffer))) > 0)
       status = cupsWriteRequestData(http, buffer, bytes);
 
     cupsFileClose(fp);
 
-    if (status != HTTP_CONTINUE || cupsFinishDocument(http, name) != IPP_OK)
+    if (status != HTTP_STATUS_CONTINUE || cupsFinishDocument(http, name) != IPP_STATUS_OK)
     {
      /*
       * Unable to queue, cancel the job and return...
@@ -1578,10 +1580,10 @@ cupsStartDocument(
   * Create a Send-Document request...
   */
 
-  if ((request = ippNewRequest(IPP_SEND_DOCUMENT)) == NULL)
+  if ((request = ippNewRequest(IPP_OP_SEND_DOCUMENT)) == NULL)
   {
-    _cupsSetError(IPP_INTERNAL_ERROR, strerror(ENOMEM), 0);
-    return (HTTP_ERROR);
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(ENOMEM), 0);
+    return (HTTP_STATUS_ERROR);
   }
 
   httpAssembleURIf(HTTP_URI_CODING_ALL, printer_uri, sizeof(printer_uri), "ipp",
@@ -1659,9 +1661,11 @@ cups_get_printer_uri(
   */
 
   if (httpAssembleURIf(HTTP_URI_CODING_ALL, uri, sizeof(uri), "ipp", NULL,
-                       "localhost", 0, "/printers/%s", name) != HTTP_URI_OK)
+                       "localhost", 0, "/printers/%s",
+                       name) < HTTP_URI_STATUS_OK)
   {
-    _cupsSetError(IPP_INTERNAL_ERROR, _("Unable to create printer-uri"), 1);
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Unable to create printer-uri"),
+                  1);
 
     *host     = '\0';
     *resource = '\0';
@@ -1688,7 +1692,7 @@ cups_get_printer_uri(
   *    requested-attributes
   */
 
-  request = ippNewRequest(IPP_GET_PRINTER_ATTRIBUTES);
+  request = ippNewRequest(IPP_OP_GET_PRINTER_ATTRIBUTES);
 
   ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
                NULL, uri);
@@ -1776,8 +1780,9 @@ cups_get_printer_uri(
 
            if (!_cups_strcasecmp(http_hostname, host) && *port == http_port)
              http2 = http;
-           else if ((http2 = httpConnectEncrypt(host, *port,
-                                                cupsEncryption())) == NULL)
+           else if ((http2 = httpConnect2(host, *port, NULL, AF_UNSPEC,
+                                          cupsEncryption(), 1, 30000,
+                                          NULL)) == NULL)
            {
              DEBUG_puts("8cups_get_printer_uri: Unable to connect to server");
 
@@ -1819,7 +1824,7 @@ cups_get_printer_uri(
 
       if (!strncmp(resource, "/classes/", 9))
       {
-        _cupsSetError(IPP_INTERNAL_ERROR,
+        _cupsSetError(IPP_STATUS_ERROR_INTERNAL,
                      _("No printer-uri found for class"), 1);
 
        *host     = '\0';
@@ -1834,8 +1839,8 @@ cups_get_printer_uri(
     ippDelete(response);
   }
 
-  if (cupsLastError() != IPP_NOT_FOUND)
-    _cupsSetError(IPP_INTERNAL_ERROR, _("No printer-uri found"), 1);
+  if (cupsLastError() != IPP_STATUS_ERROR_NOT_FOUND)
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("No printer-uri found"), 1);
 
   *host     = '\0';
   *resource = '\0';
index eb1e71c051e24d5db23e6895bd362a6bc166a47b..fa922cb2300fde684d80fa35563bb2d0ace95e5e 100644 (file)
@@ -74,24 +74,6 @@ DataDir /usr/share/cups
 for data files.</P>
 
 
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.2/OS X 10.5</SPAN><A NAME="DefaultAuthType">DefaultAuthType</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-DefaultAuthType Basic
-DefaultAuthType BasicDigest
-DefaultAuthType Digest
-DefaultAuthType Negotiate
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>DefaultAuthType</CODE> directive specifies the type
-of authentication to use for IPP operations that require a
-username. The default is <CODE>Basic</CODE>.</P>
-
-
 <H2 CLASS="title"><A NAME="DocumentRoot">DocumentRoot</A></H2>
 
 <H3>Examples</H3>
index 8298092279076231b0f305012bbd3036d4ffa2ea..43ca20b64bc435f2f28328e4a17abe5351e3c84b 100644 (file)
@@ -49,36 +49,6 @@ automatically handles restarting the scheduler.</P>
 </BLOCKQUOTE>
 
 
-<H2 CLASS="title"><A NAME="AccessLog">AccessLog</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-AccessLog /var/log/cups/access_log
-AccessLog /var/log/cups/access_log-%s
-AccessLog syslog
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>AccessLog</CODE> directive sets the name of the
-access log file. If the filename is not absolute then it is
-assumed to be relative to the <A
-HREF="#ServerRoot"><CODE>ServerRoot</CODE></A> directory. The
-access log file is stored in "common log format" and can be used
-by any web access reporting tool to generate a report on CUPS
-server activity.</P>
-
-<P>The server name can be included in the filename by using
-<CODE>%s</CODE> in the name.</P>
-
-<P>The special name "syslog" can be used to send the access
-information to the system log instead of a plain file.</P>
-
-<P>The default access log file is
-<VAR>@CUPS_LOGDIR@/access_log</VAR>.</P>
-
-
 <H2 CLASS="title"><A NAME="AccessLogLevel">AccessLogLevel</A></H2>
 
 <H3>Examples</H3>
@@ -360,40 +330,6 @@ used.</P>
 <P>The default is to not allow classification overrides.</P>
 
 
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.1.15</SPAN><A NAME="ConfigFilePerm">ConfigFilePerm</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-ConfigFilePerm 0644
-ConfigFilePerm 0640
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>ConfigFilePerm</CODE> directive specifies the permissions to use when the scheduler writes configuration and cache files, typically in response to IPP or HTTP requests. The default is @CUPS_CONFIG_FILE_PERM@.</P>
-
-<BLOCKQUOTE><B>Note:</B>
-
-<P>The permissions for the <VAR>printers.conf</VAR> file are always masked to only allow access from the scheduler user (typically root). This is done because printer device URIs sometimes contain sensitive authentication information that should not be generally known on the system. There is no way to disable this security feature.</P>
-
-</BLOCKQUOTE>
-
-
-<H2 CLASS="title"><A NAME="DataDir">DataDir</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-DataDir /usr/share/cups
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>DataDir</CODE> directive sets the directory to use
-for data files.</P>
-
-
 <H2 CLASS="title"><SPAN CLASS="info">CUPS 1.2/OS X 10.5</SPAN><A NAME="DefaultAuthType">DefaultAuthType</A></H2>
 
 <H3>Examples</H3>
@@ -577,32 +513,6 @@ DirtyCleanInterval 0
 <P>The default value is <CODE>30</CODE> (30 seconds).</P>
 
 
-<H2 CLASS="title"><A NAME="DocumentRoot">DocumentRoot</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-DocumentRoot /usr/share/doc/cups
-DocumentRoot /foo/bar/doc/cups
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>DocumentRoot</CODE> directive specifies the location
-of web content for the HTTP server in CUPS. If an absolute path
-is not specified then it is assumed to be relative to the <A
-HREF="#ServerRoot"><CODE>ServerRoot</CODE></A> directory. The
-default directory is <VAR>@CUPS_DOCROOT@</VAR>.</P>
-
-<P>Documents are first looked up in a sub-directory for the
-primary language requested by the client (e.g.
-<VAR>@CUPS_DOCROOT@/fr/...</VAR>) and then directly under
-the <CODE>DocumentRoot</CODE> directory (e.g.
-<VAR>@CUPS_DOCROOT@/...</VAR>), so it is possible to
-localize the web content by providing subdirectories for each
-language needed.</P>
-
-
 <H2 CLASS="title"><A NAME="Encryption">Encryption</A></H2>
 
 <H3>Examples</H3>
@@ -625,31 +535,6 @@ encryption settings for that location. The default setting is
 <CODE>IfRequested</CODE> for all locations.</P>
 
 
-<H2 CLASS="title"><A NAME="ErrorLog">ErrorLog</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-ErrorLog /var/log/cups/error_log
-ErrorLog /var/log/cups/error_log-%s
-ErrorLog syslog
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>ErrorLog</CODE> directive sets the name of the error
-log file. If the filename is not absolute then it is assumed to
-be relative to the <A
-HREF="#ServerRoot"><CODE>ServerRoot</CODE></A> directory. The
-default error log file is <VAR>@CUPS_LOGDIR@/error_log</VAR>.</P>
-
-<P>The server name can be included in the filename by using
-<CODE>%s</CODE> in the name.</P>
-
-<P>The special name "syslog" can be used to send the error
-information to the system log instead of a plain file.</P>
-
-
 <H2 CLASS="title"><SPAN CLASS="info">CUPS 1.3/OS X 10.5</SPAN><A NAME="ErrorPolicy">ErrorPolicy</A></H2>
 
 <H3>Examples</H3>
@@ -688,91 +573,6 @@ printer.</P>
 </UL>
 
 
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.4/OS X 10.6</SPAN><A NAME="FatalErrors">FatalErrors</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-FatalErrors none
-FatalErrors all
-FatalErrors browse
-FatalErrors config
-FatalErrors listen
-FatalErrors log
-FatalErrors permissions
-FatalErrors all -permissions
-FatalErrors config permissions log
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>FatalErrors</CODE> directive determines whether certain kinds of
-errors are fatal. The following kinds of errors are currently recognized:</P>
-
-<UL>
-
-       <LI><CODE>none</CODE> - No errors are fatal</LI>
-
-       <LI><CODE>all</CODE> - All of the errors below are fatal</LI>
-
-       <LI><CODE>browse</CODE> - Browsing initialization errors are fatal,
-       for example failed binding to the CUPS browse port or failed connections
-       to LDAP servers</LI>
-
-       <LI><CODE>config</CODE> - Configuration file syntax errors are
-       fatal</LI>
-
-       <LI><CODE>listen</CODE> - Listen or Port errors are fatal, except for
-       IPv6 failures on the loopback or "any" addresses</LI>
-
-       <LI><CODE>log</CODE> - Log file creation or write errors are fatal</LI>
-
-       <LI><CODE>permissions</CODE> - Bad startup file permissions are
-       fatal, for example shared SSL certificate and key files with world-
-       read permissions</LI>
-
-</UL>
-
-<P>Multiple errors can be listed, and the form "-kind" can be used with
-<CODE>all</CODE> to remove specific kinds of errors. The default setting is
-<CODE>@CUPS_FATAL_ERRORS@</CODE>.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.1.18</SPAN><A NAME="FileDevice">FileDevice</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-FileDevice Yes
-FileDevice No
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>FileDevice</CODE> directive determines whether the
-scheduler allows new printers to be added using device URIs of
-the form <CODE>file:/filename</CODE>. File devices are most often
-used to test new printer drivers and do not support raw file
-printing.</P>
-
-<P>The default setting is <CODE>No</CODE>.</P>
-
-<BLOCKQUOTE><B>Note:</B>
-
-<P>File devices are managed by the scheduler. Since the
-scheduler normally runs as the root user, file devices
-can be used to overwrite system files and potentially
-gain unauthorized access to the system. If you must
-create printers using file devices, we recommend that
-you set the <CODE>FileDevice</CODE> directive to
-<CODE>Yes</CODE> for only as long as you need to add the
-printers to the system, and then reset the directive to
-<CODE>No</CODE>.</P>
-
-</BLOCKQUOTE>
-
-
 <H2 CLASS="title"><SPAN CLASS="info">CUPS 1.1.3</SPAN><A NAME="FilterLimit">FilterLimit</A></H2>
 
 <H3>Examples</H3>
@@ -817,39 +617,6 @@ value to assign to filter processes. The nice value ranges from
 is 0.</P>
 
 
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.1.3</SPAN><A NAME="FontPath">FontPath</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-FontPath /foo/bar/fonts
-FontPath /usr/share/cups/fonts:/foo/bar/fonts
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>FontPath</CODE> directive specifies the font path to
-use when searching for fonts. The default font path is
-<CODE>/usr/share/cups/fonts</CODE>.</P>
-
-
-<H2 CLASS="title"><A NAME="Group">Group</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-Group lp
-Group nobody
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Group</CODE> directive specifies the UNIX group that
-filter and CGI programs run as. The default group is
-system-specific but is usually <CODE>lp</CODE> or
-<CODE>nobody</CODE>.</P>
-
-
 <H2 CLASS="title"><SPAN CLASS="info">CUPS 1.6/OS X 10.8</SPAN><A NAME="GSSServiceName">GSSServiceName</A></H2>
 
 <H3>Examples</H3>
@@ -904,7 +671,7 @@ Include /foo/bar/filename
 <P>The <CODE>Include</CODE> directive includes the named file in
 the <CODE>cupsd.conf</CODE> file. If no leading path is provided,
 the file is assumed to be relative to the <A
-HREF="#ServerRoot"><CODE>ServerRoot</CODE></A> directory.</P>
+HREF="ref-cups-files-conf.html#ServerRoot"><CODE>ServerRoot</CODE></A> directory.</P>
 
 
 <H2 CLASS="title"><SPAN CLASS="info">CUPS 1.5</SPAN><A NAME="JobPrivateAccess">JobPrivateAccess</A></H2>
@@ -1457,22 +1224,6 @@ error occurs during printing. The default is 200 messages. A value of 0
 disables debugging history entirely and is not recommended.</P>
 
 
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.1.15</SPAN><A NAME="LogFilePerm">LogFilePerm</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-LogFilePerm 0644
-LogFilePerm 0600
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>LogFilePerm</CODE> directive specifies the
-permissions to use when writing log files. The default
-is @CUPS_LOG_FILE_PERM@.</P>
-
-
 <H2 CLASS="title"><A NAME="LogLevel">LogLevel</A></H2>
 
 <H3>Examples</H3>
@@ -1493,7 +1244,7 @@ LogLevel debug2
 <H3>Description</H3>
 
 <P>The <CODE>LogLevel</CODE> directive specifies the level of
-logging for the <A HREF="#ErrorLog"><CODE>ErrorLog</CODE></A>
+logging for the <A HREF="ref-cups-files-conf.html#ErrorLog"><CODE>ErrorLog</CODE></A>
 file. The following values are recognized (each level logs
 everything under the preceding levels):</P>
 
@@ -1817,31 +1568,6 @@ HREF="#Location"><CODE>Location</CODE></A> or <A
 HREF="#Limit"><CODE>Limit</CODE></A> section.</P>
 
 
-<H2 CLASS="title"><A NAME="PageLog">PageLog</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-PageLog /var/log/cups/page_log
-PageLog /var/log/cups/page_log-%s
-PageLog syslog
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>PageLog</CODE> directive sets the name of the page
-log file. If the filename is not absolute then it is assumed to
-be relative to the <A
-HREF="#ServerRoot"><CODE>ServerRoot</CODE></A> directory. The
-default page log file is <VAR>@CUPS_LOGDIR@/page_log</VAR>.</P>
-
-<P>The server name can be included in the filename by using
-<CODE>%s</CODE> in the name.</P>
-
-<P>The special name "syslog" can be used to send the page
-information to the system log instead of a plain file.</P>
-
-
 <H2 CLASS="title"><A NAME="PageLogFormat">PageLogFormat</A></H2>
 
 <H3>Examples</H3>
diff --git a/doc/ru/index.html.in b/doc/ru/index.html.in
new file mode 100644 (file)
index 0000000..d1300e1
--- /dev/null
@@ -0,0 +1,103 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<HTML>
+<HEAD>
+       <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
+       <TITLE>Начало - CUPS @CUPS_VERSION@@CUPS_REVISION@</TITLE>
+       <LINK REL="STYLESHEET" TYPE="text/css" HREF="/cups.css">
+       <LINK REL="SHORTCUT ICON" HREF="/images/cups-icon.png" TYPE="image/png">
+</HEAD>
+<BODY>
+<TABLE CLASS="page" SUMMARY="{title}">
+<TR><TD CLASS="body">
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" SUMMARY="">
+<TR HEIGHT="36">
+<TD><A HREF="http://www.cups.org/" TARGET="_blank"><IMG
+SRC="/images/left.gif" WIDTH="64" HEIGHT="36" BORDER="0" ALT=""></A></TD>
+<TD CLASS="sel"><A HREF="/">&nbsp;&nbsp;Начало&nbsp;&nbsp;</A></TD>
+<TD CLASS="unsel"><A HREF="/admin">&nbsp;&nbsp;Администрирование&nbsp;&nbsp;</A></TD>
+<TD CLASS="unsel"><A HREF="/classes/">&nbsp;&nbsp;Группы&nbsp;&nbsp;</A></TD>
+<TD CLASS="unsel"><A HREF="/help/">&nbsp;&nbsp;Справка&nbsp;&nbsp;</A></TD>
+<TD CLASS="unsel"><A HREF="/jobs/">&nbsp;&nbsp;Задания&nbsp;&nbsp;</A></TD>
+<TD CLASS="unsel"><A HREF="/printers/">&nbsp;&nbsp;Принтеры&nbsp;&nbsp;</A></TD>
+<TD CLASS="unsel" WIDTH="100%"><FORM ACTION="/help/" METHOD="GET"><INPUT
+TYPE="SEARCH" NAME="QUERY" SIZE="20" PLACEHOLDER="Search Help"
+AUTOSAVE="org.cups.help" RESULTS="20"></FORM></TD>
+<TD><IMG SRC="/images/right.gif" WIDTH="4" HEIGHT="36" ALT=""></TD>
+</TR>
+</TABLE>
+
+<TABLE CLASS="indent" SUMMARY="">
+<TR><TD STYLE="padding-right: 20px;">
+
+<H1>CUPS @CUPS_VERSION@</H1>
+
+<P>CUPS — поддерживающая большинство стандартов, свободная подсистема печати, разрабатываемая компанией <A HREF="http://www.apple.com/">Apple Inc.</A> для операционной системы Mac OS<SUP>&reg;</SUP> X и других UNIX<SUP>&reg;</SUP>-подобных операционных систем.</P>
+
+</TD>
+<TD><A HREF="http://www.cups.org/"><IMG SRC="images/cups-icon.png" WIDTH="128"
+HEIGHT="128" ALT="CUPS"></A></TD>
+</TR>
+</TABLE>
+
+<TABLE CLASS="indent" SUMMARY="">
+<TR><TD VALIGN="top" STYLE="border-right: dotted thin #cccccc; padding-right: 20px;">
+
+<H2>CUPS для пользователей</H2>
+
+<P><A HREF="help/overview.html">Введение в CUPS</A></P>
+
+<P><A HREF="help/options.html">Печать из командной строки</A></P>
+
+<P><A HREF="help/whatsnew.html">Что нового в CUPS 1.6</A></P>
+
+<P><A HREF="http://www.cups.org/newsgroups.php?gcups.general">Форум пользователей</A></P>
+
+</TD><TD VALIGN="top" STYLE="border-right: dotted thin #cccccc; padding-left: 20px; padding-right: 20px;">
+
+<H2>CUPS для администраторов</H2>
+
+<P><A HREF="admin">Добавление принтеров и групп</A></P>
+
+<P><A HREF="help/policies.html">Управление доступом</A></P>
+
+<P><A HREF="help/accounting.html">Использование ресурсов</A></P>
+
+<P><A HREF="help/security.html">Безопасность системы</A></P>
+
+<P><A HREF="help/kerberos.html">Использование аутентификации Kerberos</A></P>
+
+<P><A HREF="help/network.html">Использование сетевых принтеров</A></P>
+
+<P><A HREF="help/ref-cupsd-conf.html">Справочник по cupsd.conf</A></P>
+
+<P><A HREF="http://www.cups.org/ppd.php">Поиск драйверов принтера</A></P>
+
+</TD><TD VALIGN="top" STYLE="padding-left: 20px;">
+
+<H2>CUPS для разработчиков</H2>
+
+<P><A HREF="help/api-overview.html">Введение в разработку CUPS</A></P>
+
+<P><A HREF="help/api-cups.html">CUPS API</A></P>
+
+<P><A HREF="help/api-filter.html">Разработка фильтров и модулей</A></P>
+
+<P><A HREF="help/api-httpipp.html">API доступа по HTTP и IPP</A></P>
+
+<P><A HREF="help/api-ppd.html">PPD API</A></P>
+
+<P><A HREF="help/api-raster.html">Raster API</A></P>
+
+<P><A HREF="help/ref-ppdcfile.html">Справочник по компилятору PPD</A></P>
+
+<P><A HREF="http://www.cups.org/newsgroups.php?gcups.development">Форум разработчиков</A></P>
+
+</TD></TR>
+</TABLE>
+
+</TD></TR>
+<TR><TD>&nbsp;</TD></TR>
+<TR><TD CLASS="trailer">CUPS а также логотип CUPS являются зарегистрированными торговыми марками <A HREF="http://www.apple.com">Apple Inc.</A> Авторские права на CUPS принадлежат (2007-2013) компании Apple Inc. Все права защищены.</TD></TR>
+</TABLE>
+</BODY>
+</HTML>
index 5360c16548fd52cbeaafe1d5ecbce9f36b55e4a0..11fedcba1fd3e8b469dba921142cd332d0a56723 100644 (file)
@@ -110,6 +110,7 @@ install-exec:
                $(INSTALL_DIR) $(SYMROOT); \
                for file in $(FILTERS); do \
                        cp $$file $(SYMROOT); \
+                       dsymutil $(SYMROOT)/$$file; \
                done \
        fi
 
index 0ef54d2695d35f0ba88de2f3fa803c245a802f12..452aa36010337ae1bc16390d2d395e8b75611111 100644 (file)
@@ -30,7 +30,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: CUPS 1.6\n"
 "Report-Msgid-Bugs-To: http://www.cups.org/str.php\n"
-"POT-Creation-Date: 2013-02-04 14:17-0500\n"
+"POT-Creation-Date: 2013-03-08 13:23-0500\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -1019,7 +1019,7 @@ msgstr ""
 msgid "  -C                      Send requests using chunking (default)."
 msgstr ""
 
-#: scheduler/cupsfilter.c:1433
+#: scheduler/cupsfilter.c:1434
 msgid "  -D                      Remove the input file when finished."
 msgstr ""
 
@@ -1059,7 +1059,7 @@ msgstr ""
 msgid "  -L                      Send requests using content-length."
 msgstr ""
 
-#: scheduler/cupsfilter.c:1435
+#: scheduler/cupsfilter.c:1436
 msgid "  -P filename.ppd         Set PPD file."
 msgstr ""
 
@@ -1075,7 +1075,7 @@ msgstr ""
 msgid "  -T seconds              Set the receive/send timeout in seconds."
 msgstr ""
 
-#: scheduler/cupsfilter.c:1436 systemv/cupsaddsmb.c:288 systemv/cupsctl.c:206
+#: scheduler/cupsfilter.c:1437 systemv/cupsaddsmb.c:288 systemv/cupsctl.c:206
 msgid "  -U username             Specify username."
 msgstr ""
 
@@ -1099,7 +1099,7 @@ msgstr ""
 msgid "  -c catalog.po           Load the specified message catalog."
 msgstr ""
 
-#: scheduler/cupsfilter.c:1437 scheduler/main.c:2014
+#: scheduler/cupsfilter.c:1438 scheduler/main.c:2014
 msgid "  -c cupsd.conf           Set cupsd.conf file to use."
 msgstr ""
 
@@ -1111,11 +1111,11 @@ msgstr ""
 msgid "  -d output-dir           Specify the output directory."
 msgstr ""
 
-#: scheduler/cupsfilter.c:1439
+#: scheduler/cupsfilter.c:1440
 msgid "  -d printer              Use the named printer."
 msgstr ""
 
-#: scheduler/cupsfilter.c:1441
+#: scheduler/cupsfilter.c:1442
 msgid "  -e                      Use every filter from the PPD file."
 msgstr ""
 
@@ -1135,7 +1135,7 @@ msgstr ""
 msgid "  -h server[:port]        Specify server address."
 msgstr ""
 
-#: scheduler/cupsfilter.c:1443
+#: scheduler/cupsfilter.c:1444
 msgid "  -i mime/type            Set input MIME type (otherwise auto-typed)."
 msgstr ""
 
@@ -1143,7 +1143,7 @@ msgstr ""
 msgid "  -i seconds              Repeat the last file with the given time interval."
 msgstr ""
 
-#: scheduler/cupsfilter.c:1445
+#: scheduler/cupsfilter.c:1446
 msgid "  -j job-id[,N]           Filter file N from the specified job (default is file 1)."
 msgstr ""
 
@@ -1159,11 +1159,11 @@ msgstr ""
 msgid "  -m                      Use the ModelName value as the filename."
 msgstr ""
 
-#: scheduler/cupsfilter.c:1447
+#: scheduler/cupsfilter.c:1448
 msgid "  -m mime/type            Set output MIME type (otherwise application/pdf)."
 msgstr ""
 
-#: scheduler/cupsfilter.c:1449
+#: scheduler/cupsfilter.c:1450
 msgid "  -n copies               Set number of copies."
 msgstr ""
 
@@ -1179,11 +1179,11 @@ msgstr ""
 msgid "  -o filename.ppd[.gz]    Set output file (otherwise stdout)."
 msgstr ""
 
-#: scheduler/cupsfilter.c:1450
+#: scheduler/cupsfilter.c:1451
 msgid "  -o name=value           Set option(s)."
 msgstr ""
 
-#: scheduler/cupsfilter.c:1451
+#: scheduler/cupsfilter.c:1452
 msgid "  -p filename.ppd         Set PPD file."
 msgstr ""
 
@@ -1207,11 +1207,11 @@ msgstr ""
 msgid "  -t                      Test the configuration file."
 msgstr ""
 
-#: scheduler/cupsfilter.c:1452
+#: scheduler/cupsfilter.c:1453
 msgid "  -t title                Set title."
 msgstr ""
 
-#: scheduler/cupsfilter.c:1453
+#: scheduler/cupsfilter.c:1454
 msgid "  -u                      Remove the PPD file when finished."
 msgstr ""
 
@@ -1474,7 +1474,7 @@ msgstr ""
 msgid "%s accepting requests since %s"
 msgstr ""
 
-#: scheduler/ipp.c:9903
+#: scheduler/ipp.c:9907
 #, c-format
 msgid "%s cannot be changed."
 msgstr ""
@@ -1766,7 +1766,7 @@ msgstr ""
 msgid "%s: Sorry, no encryption support."
 msgstr ""
 
-#: berkeley/lpq.c:295 scheduler/cupsfilter.c:1223 systemv/cancel.c:245
+#: berkeley/lpq.c:295 scheduler/cupsfilter.c:1224 systemv/cancel.c:245
 #: systemv/cupsaddsmb.c:144 systemv/cupsaddsmb.c:171
 #, c-format
 msgid "%s: Unable to connect to server."
@@ -1807,7 +1807,7 @@ msgstr ""
 msgid "%s: Unknown destination MIME type %s/%s."
 msgstr ""
 
-#: scheduler/cupsfilter.c:1428
+#: scheduler/cupsfilter.c:1429
 #, c-format
 msgid "%s: Unknown option \"%c\"."
 msgstr ""
@@ -2646,7 +2646,7 @@ msgstr ""
 msgid "A Samba username is required to export printer drivers"
 msgstr ""
 
-#: scheduler/ipp.c:2356
+#: scheduler/ipp.c:2360
 #, c-format
 msgid "A class named \"%s\" already exists."
 msgstr ""
@@ -2891,7 +2891,7 @@ msgstr ""
 msgid "B9"
 msgstr ""
 
-#: scheduler/ipp.c:10829
+#: scheduler/ipp.c:10833
 #, c-format
 msgid "Bad 'document-format' value \"%s\"."
 msgstr ""
@@ -2937,7 +2937,7 @@ msgstr ""
 msgid "Bad UIConstraints"
 msgstr ""
 
-#: scheduler/ipp.c:1435
+#: scheduler/ipp.c:1439
 #, c-format
 msgid "Bad copies value %d."
 msgstr ""
@@ -2946,75 +2946,75 @@ msgstr ""
 msgid "Bad custom parameter"
 msgstr ""
 
-#: cups/http-support.c:1463 scheduler/ipp.c:2423
+#: cups/http-support.c:1463 scheduler/ipp.c:2427
 #, c-format
 msgid "Bad device-uri \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:2464
+#: scheduler/ipp.c:2468
 #, c-format
 msgid "Bad device-uri scheme \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:8081 scheduler/ipp.c:8097 scheduler/ipp.c:9312
+#: scheduler/ipp.c:8085 scheduler/ipp.c:8101 scheduler/ipp.c:9316
 #, c-format
 msgid "Bad document-format \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:9328
+#: scheduler/ipp.c:9332
 #, c-format
 msgid "Bad document-format-default \"%s\"."
 msgstr ""
 
-#: cups/util.c:930
+#: cups/util.c:932
 msgid "Bad filename buffer"
 msgstr ""
 
-#: scheduler/ipp.c:1611
+#: scheduler/ipp.c:1615
 #, c-format
 msgid "Bad job-name value: %s"
 msgstr ""
 
-#: scheduler/ipp.c:1604
+#: scheduler/ipp.c:1608
 msgid "Bad job-name value: Wrong type or count."
 msgstr ""
 
-#: scheduler/ipp.c:9918
+#: scheduler/ipp.c:9922
 msgid "Bad job-priority value."
 msgstr ""
 
-#: scheduler/ipp.c:1465
+#: scheduler/ipp.c:1469
 #, c-format
 msgid "Bad job-sheets value \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:1449
+#: scheduler/ipp.c:1453
 msgid "Bad job-sheets value type."
 msgstr ""
 
-#: scheduler/ipp.c:9948
+#: scheduler/ipp.c:9952
 msgid "Bad job-state value."
 msgstr ""
 
-#: scheduler/ipp.c:3047 scheduler/ipp.c:3507 scheduler/ipp.c:5946
-#: scheduler/ipp.c:6093 scheduler/ipp.c:7515 scheduler/ipp.c:7784
-#: scheduler/ipp.c:8633 scheduler/ipp.c:8859 scheduler/ipp.c:9208
-#: scheduler/ipp.c:9811
+#: scheduler/ipp.c:3051 scheduler/ipp.c:3511 scheduler/ipp.c:5950
+#: scheduler/ipp.c:6097 scheduler/ipp.c:7519 scheduler/ipp.c:7788
+#: scheduler/ipp.c:8637 scheduler/ipp.c:8863 scheduler/ipp.c:9212
+#: scheduler/ipp.c:9815
 #, c-format
 msgid "Bad job-uri \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:2122 scheduler/ipp.c:5490
+#: scheduler/ipp.c:2126 scheduler/ipp.c:5494
 #, c-format
 msgid "Bad notify-pull-method \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:2086 scheduler/ipp.c:5454
+#: scheduler/ipp.c:2090 scheduler/ipp.c:5458
 #, c-format
 msgid "Bad notify-recipient-uri \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:1481
+#: scheduler/ipp.c:1485
 #, c-format
 msgid "Bad number-up value %d."
 msgstr ""
@@ -3024,12 +3024,12 @@ msgstr ""
 msgid "Bad option + choice on line %d."
 msgstr ""
 
-#: scheduler/ipp.c:1498
+#: scheduler/ipp.c:1502
 #, c-format
 msgid "Bad page-ranges values %d-%d."
 msgstr ""
 
-#: scheduler/ipp.c:2507
+#: scheduler/ipp.c:2511
 #, c-format
 msgid "Bad port-monitor \"%s\"."
 msgstr ""
@@ -3038,7 +3038,7 @@ msgstr ""
 msgid "Bad printer URI."
 msgstr ""
 
-#: scheduler/ipp.c:2568
+#: scheduler/ipp.c:2572
 #, c-format
 msgid "Bad printer-state value %d."
 msgstr ""
@@ -3090,11 +3090,11 @@ msgstr ""
 msgid "Cancel RSS Subscription"
 msgstr ""
 
-#: backend/ipp.c:2134
+#: backend/ipp.c:2144
 msgid "Canceling print job."
 msgstr ""
 
-#: scheduler/ipp.c:2548
+#: scheduler/ipp.c:2552
 msgid "Cannot share a remote Kerberized printer."
 msgstr ""
 
@@ -3107,7 +3107,7 @@ msgstr ""
 msgid "Change Settings"
 msgstr ""
 
-#: scheduler/ipp.c:2134 scheduler/ipp.c:5502
+#: scheduler/ipp.c:2138 scheduler/ipp.c:5506
 #, c-format
 msgid "Character set \"%s\" not supported."
 msgstr ""
@@ -3120,7 +3120,7 @@ msgstr ""
 msgid "Clean Print Heads"
 msgstr ""
 
-#: scheduler/ipp.c:3959
+#: scheduler/ipp.c:3963
 msgid "Close-Job doesn't support the job-uri attribute."
 msgstr ""
 
@@ -3143,11 +3143,11 @@ msgstr ""
 msgid "Community name uses indefinite length"
 msgstr ""
 
-#: backend/ipp.c:829 backend/lpd.c:888 backend/socket.c:405
+#: backend/ipp.c:830 backend/lpd.c:888 backend/socket.c:405
 msgid "Connected to printer."
 msgstr ""
 
-#: backend/ipp.c:734 backend/lpd.c:711 backend/socket.c:324
+#: backend/ipp.c:735 backend/lpd.c:711 backend/socket.c:324
 msgid "Connecting to printer."
 msgstr ""
 
@@ -3163,7 +3163,7 @@ msgstr ""
 msgid "Control file sent successfully."
 msgstr ""
 
-#: backend/ipp.c:1326 backend/lpd.c:481
+#: backend/ipp.c:1327 backend/lpd.c:481
 msgid "Copying print data."
 msgstr ""
 
@@ -3215,7 +3215,7 @@ msgstr ""
 msgid "DeskJet Series"
 msgstr ""
 
-#: scheduler/ipp.c:1359
+#: scheduler/ipp.c:1363
 #, c-format
 msgid "Destination \"%s\" is not accepting jobs."
 msgstr ""
@@ -3264,7 +3264,7 @@ msgstr ""
 msgid "Disabled"
 msgstr ""
 
-#: scheduler/ipp.c:5995
+#: scheduler/ipp.c:5999
 #, c-format
 msgid "Document #%d does not exist in job #%d."
 msgstr ""
@@ -3316,7 +3316,7 @@ msgstr ""
 msgid "Enter password:"
 msgstr ""
 
-#: scheduler/client.c:2443
+#: scheduler/client.c:2471
 msgid "Enter your username and password or the root username and password to access this page. If you are using Kerberos authentication, make sure you have a valid Kerberos ticket."
 msgstr ""
 
@@ -3652,7 +3652,7 @@ msgstr ""
 msgid "File Folder "
 msgstr ""
 
-#: scheduler/ipp.c:2443
+#: scheduler/ipp.c:2447
 #, c-format
 msgid "File device URIs have been disabled. To enable, see the FileDevice directive in \"%s/cups-files.conf\"."
 msgstr ""
@@ -3687,10 +3687,10 @@ msgstr ""
 msgid "Glossy Paper"
 msgstr ""
 
-#: scheduler/ipp.c:3025 scheduler/ipp.c:3433 scheduler/ipp.c:3971
-#: scheduler/ipp.c:5924 scheduler/ipp.c:6071 scheduler/ipp.c:7492
-#: scheduler/ipp.c:8611 scheduler/ipp.c:8837 scheduler/ipp.c:9186
-#: scheduler/ipp.c:9789
+#: scheduler/ipp.c:3029 scheduler/ipp.c:3437 scheduler/ipp.c:3975
+#: scheduler/ipp.c:5928 scheduler/ipp.c:6075 scheduler/ipp.c:7496
+#: scheduler/ipp.c:8615 scheduler/ipp.c:8841 scheduler/ipp.c:9190
+#: scheduler/ipp.c:9793
 msgid "Got a printer-uri attribute but no job-id."
 msgstr ""
 
@@ -3858,7 +3858,7 @@ msgstr ""
 msgid "Internet Postage 3-Part"
 msgstr ""
 
-#: backend/ipp.c:334
+#: backend/ipp.c:335
 msgid "Internet Printing Protocol"
 msgstr ""
 
@@ -3931,52 +3931,52 @@ msgstr ""
 msgid "JIS B9"
 msgstr ""
 
-#: scheduler/ipp.c:8909
+#: scheduler/ipp.c:8913
 #, c-format
 msgid "Job #%d cannot be restarted - no files."
 msgstr ""
 
-#: scheduler/ipp.c:3065 scheduler/ipp.c:3299 scheduler/ipp.c:3358
-#: scheduler/ipp.c:3535 scheduler/ipp.c:3981 scheduler/ipp.c:5588
-#: scheduler/ipp.c:5964 scheduler/ipp.c:6111 scheduler/ipp.c:6400
-#: scheduler/ipp.c:7339 scheduler/ipp.c:7361 scheduler/ipp.c:7533
-#: scheduler/ipp.c:7758 scheduler/ipp.c:7801 scheduler/ipp.c:8651
-#: scheduler/ipp.c:8877 scheduler/ipp.c:9226 scheduler/ipp.c:9829
+#: scheduler/ipp.c:3069 scheduler/ipp.c:3303 scheduler/ipp.c:3362
+#: scheduler/ipp.c:3539 scheduler/ipp.c:3985 scheduler/ipp.c:5592
+#: scheduler/ipp.c:5968 scheduler/ipp.c:6115 scheduler/ipp.c:6404
+#: scheduler/ipp.c:7343 scheduler/ipp.c:7365 scheduler/ipp.c:7537
+#: scheduler/ipp.c:7762 scheduler/ipp.c:7805 scheduler/ipp.c:8655
+#: scheduler/ipp.c:8881 scheduler/ipp.c:9230 scheduler/ipp.c:9833
 #, c-format
 msgid "Job #%d does not exist."
 msgstr ""
 
-#: scheduler/ipp.c:3567
+#: scheduler/ipp.c:3571
 #, c-format
 msgid "Job #%d is already aborted - can't cancel."
 msgstr ""
 
-#: scheduler/ipp.c:3561
+#: scheduler/ipp.c:3565
 #, c-format
 msgid "Job #%d is already canceled - can't cancel."
 msgstr ""
 
-#: scheduler/ipp.c:3573
+#: scheduler/ipp.c:3577
 #, c-format
 msgid "Job #%d is already completed - can't cancel."
 msgstr ""
 
-#: scheduler/ipp.c:7559 scheduler/ipp.c:7843 scheduler/ipp.c:9844
+#: scheduler/ipp.c:7563 scheduler/ipp.c:7847 scheduler/ipp.c:9848
 #, c-format
 msgid "Job #%d is finished and cannot be altered."
 msgstr ""
 
-#: scheduler/ipp.c:8891
+#: scheduler/ipp.c:8895
 #, c-format
 msgid "Job #%d is not complete."
 msgstr ""
 
-#: scheduler/ipp.c:3080
+#: scheduler/ipp.c:3084
 #, c-format
 msgid "Job #%d is not held for authentication."
 msgstr ""
 
-#: scheduler/ipp.c:8665
+#: scheduler/ipp.c:8669
 #, c-format
 msgid "Job #%d is not held."
 msgstr ""
@@ -3997,7 +3997,7 @@ msgstr ""
 msgid "Job Stopped"
 msgstr ""
 
-#: scheduler/ipp.c:9926
+#: scheduler/ipp.c:9930
 msgid "Job is completed and cannot be changed."
 msgstr ""
 
@@ -4005,11 +4005,11 @@ msgstr ""
 msgid "Job operation failed"
 msgstr ""
 
-#: scheduler/ipp.c:9962 scheduler/ipp.c:9981 scheduler/ipp.c:9992
+#: scheduler/ipp.c:9966 scheduler/ipp.c:9985 scheduler/ipp.c:9996
 msgid "Job state cannot be changed."
 msgstr ""
 
-#: scheduler/ipp.c:8757
+#: scheduler/ipp.c:8761
 msgid "Job subscriptions cannot be renewed."
 msgstr ""
 
@@ -4029,7 +4029,7 @@ msgstr ""
 msgid "Label Top"
 msgstr ""
 
-#: scheduler/ipp.c:2143 scheduler/ipp.c:5511
+#: scheduler/ipp.c:2147 scheduler/ipp.c:5515
 #, c-format
 msgid "Language \"%s\" not supported."
 msgstr ""
@@ -4110,7 +4110,7 @@ msgstr ""
 msgid "Missing asterisk in column 1"
 msgstr ""
 
-#: scheduler/ipp.c:5987
+#: scheduler/ipp.c:5991
 msgid "Missing document-number attribute."
 msgstr ""
 
@@ -4125,7 +4125,7 @@ msgstr ""
 msgid "Missing form variable"
 msgstr ""
 
-#: scheduler/ipp.c:9280
+#: scheduler/ipp.c:9284
 msgid "Missing last-document attribute in request."
 msgstr ""
 
@@ -4137,7 +4137,7 @@ msgstr ""
 msgid "Missing media-size in media-col."
 msgstr ""
 
-#: scheduler/ipp.c:6530
+#: scheduler/ipp.c:6534
 msgid "Missing notify-subscription-ids attribute."
 msgstr ""
 
@@ -4145,7 +4145,7 @@ msgstr ""
 msgid "Missing option keyword"
 msgstr ""
 
-#: scheduler/ipp.c:3206 scheduler/ipp.c:3231
+#: scheduler/ipp.c:3210 scheduler/ipp.c:3235
 msgid "Missing requesting-user-name attribute."
 msgstr ""
 
@@ -4231,7 +4231,7 @@ msgstr ""
 msgid "No Content"
 msgstr ""
 
-#: cups/util.c:1305
+#: cups/util.c:1307
 msgid "No PPD name"
 msgstr ""
 
@@ -4247,7 +4247,7 @@ msgstr ""
 msgid "No active connection"
 msgstr ""
 
-#: scheduler/ipp.c:3484
+#: scheduler/ipp.c:3488
 #, c-format
 msgid "No active jobs on %s."
 msgstr ""
@@ -4256,7 +4256,7 @@ msgstr ""
 msgid "No attributes in request."
 msgstr ""
 
-#: scheduler/ipp.c:3107
+#: scheduler/ipp.c:3111
 msgid "No authentication information provided."
 msgstr ""
 
@@ -4264,11 +4264,11 @@ msgstr ""
 msgid "No community name"
 msgstr ""
 
-#: scheduler/ipp.c:5787
+#: scheduler/ipp.c:5791
 msgid "No default printer."
 msgstr ""
 
-#: cgi-bin/ipp-var.c:436 scheduler/ipp.c:7105
+#: cgi-bin/ipp-var.c:436 scheduler/ipp.c:7109
 msgid "No destinations added."
 msgstr ""
 
@@ -4284,11 +4284,11 @@ msgstr ""
 msgid "No error-status"
 msgstr ""
 
-#: scheduler/ipp.c:8047 scheduler/ipp.c:9294
+#: scheduler/ipp.c:8051 scheduler/ipp.c:9298
 msgid "No file in print request."
 msgstr ""
 
-#: cups/util.c:924
+#: cups/util.c:926
 msgid "No modification time"
 msgstr ""
 
@@ -4301,19 +4301,19 @@ msgstr ""
 msgid "No pages were found."
 msgstr ""
 
-#: cups/util.c:918
+#: cups/util.c:920
 msgid "No printer name"
 msgstr ""
 
-#: cups/util.c:1836
+#: cups/util.c:1843
 msgid "No printer-uri found"
 msgstr ""
 
-#: cups/util.c:1821
+#: cups/util.c:1828
 msgid "No printer-uri found for class"
 msgstr ""
 
-#: scheduler/ipp.c:6190
+#: scheduler/ipp.c:6194
 msgid "No printer-uri in request."
 msgstr ""
 
@@ -4321,11 +4321,11 @@ msgstr ""
 msgid "No request-id"
 msgstr ""
 
-#: scheduler/ipp.c:5396
+#: scheduler/ipp.c:5400
 msgid "No subscription attributes in request."
 msgstr ""
 
-#: scheduler/ipp.c:7432
+#: scheduler/ipp.c:7436
 msgid "No subscriptions found."
 msgstr ""
 
@@ -4369,7 +4369,7 @@ msgstr ""
 msgid "Not Supported"
 msgstr ""
 
-#: scheduler/ipp.c:1573 scheduler/ipp.c:10525
+#: scheduler/ipp.c:1577 scheduler/ipp.c:10529
 msgid "Not allowed to print."
 msgstr ""
 
@@ -4423,7 +4423,7 @@ msgstr ""
 msgid "Options Installed"
 msgstr ""
 
-#: scheduler/cupsfilter.c:1432 scheduler/main.c:2013 systemv/cupsaddsmb.c:284
+#: scheduler/cupsfilter.c:1433 scheduler/main.c:2013 systemv/cupsaddsmb.c:284
 #: systemv/cupsctl.c:203 systemv/cupstestdsc.c:429 systemv/cupstestppd.c:3817
 #: test/ipptool.c:4585 ppdc/ppdc.cxx:437 ppdc/ppdhtml.cxx:174
 #: ppdc/ppdi.cxx:130 ppdc/ppdmerge.cxx:369 ppdc/ppdpo.cxx:254
@@ -4572,7 +4572,7 @@ msgstr ""
 msgid "Postcard Long Edge"
 msgstr ""
 
-#: backend/ipp.c:937 backend/ipp.c:945
+#: backend/ipp.c:938 backend/ipp.c:946
 msgid "Preparing to print."
 msgstr ""
 
@@ -4616,15 +4616,15 @@ msgstr ""
 msgid "Print file sent."
 msgstr ""
 
-#: backend/ipp.c:2108
+#: backend/ipp.c:2118
 msgid "Print job canceled at printer."
 msgstr ""
 
-#: backend/ipp.c:2103
+#: backend/ipp.c:2113
 msgid "Print job too large."
 msgstr ""
 
-#: backend/ipp.c:1609
+#: backend/ipp.c:1618
 msgid "Print job was not accepted."
 msgstr ""
 
@@ -4652,7 +4652,7 @@ msgstr ""
 msgid "Printer Settings"
 msgstr ""
 
-#: backend/ipp.c:2106
+#: backend/ipp.c:2116
 msgid "Printer cannot print supplied content."
 msgstr ""
 
@@ -4678,7 +4678,7 @@ msgstr ""
 msgid "Quarto"
 msgstr ""
 
-#: scheduler/ipp.c:1568 scheduler/ipp.c:10520
+#: scheduler/ipp.c:1572 scheduler/ipp.c:10524
 msgid "Quota limit reached."
 msgstr ""
 
@@ -4839,8 +4839,8 @@ msgstr ""
 msgid "Stylus Photo Series"
 msgstr ""
 
-#: scheduler/ipp.c:3630 scheduler/ipp.c:6546 scheduler/ipp.c:7245
-#: scheduler/ipp.c:8745
+#: scheduler/ipp.c:3634 scheduler/ipp.c:6550 scheduler/ipp.c:7249
+#: scheduler/ipp.c:8749
 #, c-format
 msgid "Subscription #%d does not exist."
 msgstr ""
@@ -4885,33 +4885,33 @@ msgstr ""
 msgid "Tear-Off Adjust Position"
 msgstr ""
 
-#: scheduler/ipp.c:1404
+#: scheduler/ipp.c:1408
 #, c-format
 msgid "The \"%s\" attribute is required for print jobs."
 msgstr ""
 
-#: scheduler/ipp.c:6261 scheduler/ipp.c:6339 scheduler/ipp.c:6355
-#: scheduler/ipp.c:6373
+#: scheduler/ipp.c:6265 scheduler/ipp.c:6343 scheduler/ipp.c:6359
+#: scheduler/ipp.c:6377
 #, c-format
 msgid "The %s attribute cannot be provided with job-ids."
 msgstr ""
 
-#: scheduler/ipp.c:1380
+#: scheduler/ipp.c:1384
 #, c-format
 msgid "The '%s' Job Description attribute cannot be supplied in a job creation request."
 msgstr ""
 
-#: scheduler/ipp.c:5203
+#: scheduler/ipp.c:5207
 #, c-format
 msgid "The '%s' operation attribute cannot be supplied in a Create-Job request."
 msgstr ""
 
-#: scheduler/ipp.c:6776
+#: scheduler/ipp.c:6780
 #, c-format
 msgid "The PPD file \"%s\" could not be found."
 msgstr ""
 
-#: scheduler/ipp.c:6763
+#: scheduler/ipp.c:6767
 #, c-format
 msgid "The PPD file \"%s\" could not be opened: %s"
 msgstr ""
@@ -4941,11 +4941,11 @@ msgstr ""
 msgid "The fuser's temperature is low."
 msgstr ""
 
-#: scheduler/ipp.c:2170
+#: scheduler/ipp.c:2174
 msgid "The notify-lease-duration attribute cannot be used with job subscriptions."
 msgstr ""
 
-#: scheduler/ipp.c:2153 scheduler/ipp.c:5521
+#: scheduler/ipp.c:2157 scheduler/ipp.c:5525
 #, c-format
 msgid "The notify-user-data value is too large (%d > 63 octets)."
 msgstr ""
@@ -4986,7 +4986,7 @@ msgstr ""
 msgid "The paper tray needs to be filled."
 msgstr ""
 
-#: backend/ipp.c:957
+#: backend/ipp.c:958
 msgid "The printer configuration is incorrect or the printer no longer exists."
 msgstr ""
 
@@ -4994,8 +4994,8 @@ msgstr ""
 msgid "The printer did not respond."
 msgstr ""
 
-#: backend/ipp.c:800 backend/ipp.c:920 backend/ipp.c:1034 backend/ipp.c:1418
-#: backend/ipp.c:1582 backend/lpd.c:845 backend/socket.c:384
+#: backend/ipp.c:801 backend/ipp.c:921 backend/ipp.c:1035 backend/ipp.c:1427
+#: backend/ipp.c:1591 backend/lpd.c:845 backend/socket.c:384
 #: backend/usb-unix.c:131 backend/usb-unix.c:423 backend/usb-unix.c:506
 msgid "The printer is in use."
 msgstr ""
@@ -5004,7 +5004,7 @@ msgstr ""
 msgid "The printer is not connected."
 msgstr ""
 
-#: backend/ipp.c:778 backend/ipp.c:811 backend/ipp.c:916 backend/lpd.c:824
+#: backend/ipp.c:779 backend/ipp.c:812 backend/ipp.c:917 backend/lpd.c:824
 #: backend/lpd.c:865 backend/socket.c:363 backend/socket.c:396
 msgid "The printer is not responding."
 msgstr ""
@@ -5029,7 +5029,7 @@ msgstr ""
 msgid "The printer is running low on toner."
 msgstr ""
 
-#: backend/ipp.c:793 backend/lpd.c:838 backend/socket.c:377
+#: backend/ipp.c:794 backend/lpd.c:838 backend/socket.c:377
 msgid "The printer is unreachable at this time."
 msgstr ""
 
@@ -5041,7 +5041,7 @@ msgstr ""
 msgid "The printer may be out of toner."
 msgstr ""
 
-#: backend/ipp.c:787 backend/lpd.c:832 backend/socket.c:371
+#: backend/ipp.c:788 backend/lpd.c:832 backend/socket.c:371
 msgid "The printer may not exist or is unavailable at this time."
 msgstr ""
 
@@ -5049,18 +5049,18 @@ msgstr ""
 msgid "The printer name may only contain up to 127 printable characters and may not contain spaces, slashes (/), or the pound sign (#)."
 msgstr ""
 
-#: scheduler/ipp.c:875 scheduler/ipp.c:1135 scheduler/ipp.c:3271
-#: scheduler/ipp.c:3450 scheduler/ipp.c:5186 scheduler/ipp.c:5355
-#: scheduler/ipp.c:5669 scheduler/ipp.c:6227 scheduler/ipp.c:6981
-#: scheduler/ipp.c:7037 scheduler/ipp.c:7351 scheduler/ipp.c:7617
-#: scheduler/ipp.c:7706 scheduler/ipp.c:7739 scheduler/ipp.c:8062
-#: scheduler/ipp.c:8455 scheduler/ipp.c:8537 scheduler/ipp.c:9698
-#: scheduler/ipp.c:10152 scheduler/ipp.c:10483 scheduler/ipp.c:10565
-#: scheduler/ipp.c:10939
+#: scheduler/ipp.c:875 scheduler/ipp.c:1135 scheduler/ipp.c:3275
+#: scheduler/ipp.c:3454 scheduler/ipp.c:5190 scheduler/ipp.c:5359
+#: scheduler/ipp.c:5673 scheduler/ipp.c:6231 scheduler/ipp.c:6985
+#: scheduler/ipp.c:7041 scheduler/ipp.c:7355 scheduler/ipp.c:7621
+#: scheduler/ipp.c:7710 scheduler/ipp.c:7743 scheduler/ipp.c:8066
+#: scheduler/ipp.c:8459 scheduler/ipp.c:8541 scheduler/ipp.c:9702
+#: scheduler/ipp.c:10156 scheduler/ipp.c:10487 scheduler/ipp.c:10569
+#: scheduler/ipp.c:10943
 msgid "The printer or class does not exist."
 msgstr ""
 
-#: scheduler/ipp.c:1317
+#: scheduler/ipp.c:1321
 msgid "The printer or class is not shared."
 msgstr ""
 
@@ -5084,12 +5084,12 @@ msgstr ""
 msgid "The printer's waste bin is full."
 msgstr ""
 
-#: scheduler/ipp.c:981 scheduler/ipp.c:2334
+#: scheduler/ipp.c:981 scheduler/ipp.c:2338
 #, c-format
 msgid "The printer-uri \"%s\" contains invalid characters."
 msgstr ""
 
-#: scheduler/ipp.c:3248
+#: scheduler/ipp.c:3252
 msgid "The printer-uri attribute is required."
 msgstr ""
 
@@ -5097,7 +5097,7 @@ msgstr ""
 msgid "The printer-uri must be of the form \"ipp://HOSTNAME/classes/CLASSNAME\"."
 msgstr ""
 
-#: scheduler/ipp.c:2318
+#: scheduler/ipp.c:2322
 msgid "The printer-uri must be of the form \"ipp://HOSTNAME/printers/PRINTERNAME\"."
 msgstr ""
 
@@ -5105,16 +5105,16 @@ msgstr ""
 msgid "The subscription name may not contain spaces, slashes (/), question marks (?), or the pound sign (#)."
 msgstr ""
 
-#: scheduler/client.c:2466
+#: scheduler/client.c:2494
 msgid "The web interface is currently disabled. Run \"cupsctl WebInterface=yes\" to enable it."
 msgstr ""
 
-#: scheduler/ipp.c:6322
+#: scheduler/ipp.c:6326
 #, c-format
 msgid "The which-jobs value \"%s\" is not supported."
 msgstr ""
 
-#: scheduler/ipp.c:5599
+#: scheduler/ipp.c:5603
 msgid "There are too many subscriptions."
 msgstr ""
 
@@ -5131,16 +5131,16 @@ msgstr ""
 msgid "Thermal Transfer Media"
 msgstr ""
 
-#: scheduler/ipp.c:1562
+#: scheduler/ipp.c:1566
 msgid "Too many active jobs."
 msgstr ""
 
-#: scheduler/ipp.c:1456
+#: scheduler/ipp.c:1460
 #, c-format
 msgid "Too many job-sheets values (%d > 2)."
 msgstr ""
 
-#: scheduler/ipp.c:2602
+#: scheduler/ipp.c:2606
 #, c-format
 msgid "Too many printer-state-reasons values (%d > %d)."
 msgstr ""
@@ -5221,11 +5221,11 @@ msgstr ""
 msgid "Unable to add class"
 msgstr ""
 
-#: backend/ipp.c:1764
+#: backend/ipp.c:1773
 msgid "Unable to add document to print job."
 msgstr ""
 
-#: scheduler/ipp.c:1621
+#: scheduler/ipp.c:1625
 #, c-format
 msgid "Unable to add job for destination \"%s\"."
 msgstr ""
@@ -5234,7 +5234,7 @@ msgstr ""
 msgid "Unable to add printer"
 msgstr ""
 
-#: scheduler/ipp.c:1245
+#: scheduler/ipp.c:1251
 msgid "Unable to allocate memory for file types."
 msgstr ""
 
@@ -5250,7 +5250,7 @@ msgstr ""
 msgid "Unable to cancel RSS subscription"
 msgstr ""
 
-#: backend/ipp.c:2155
+#: backend/ipp.c:2165
 msgid "Unable to cancel print job."
 msgstr ""
 
@@ -5284,7 +5284,7 @@ msgstr ""
 msgid "Unable to connect to host."
 msgstr ""
 
-#: backend/ipp.c:756 backend/ipp.c:1231 backend/lpd.c:804 backend/socket.c:343
+#: backend/ipp.c:757 backend/ipp.c:1232 backend/lpd.c:804 backend/socket.c:343
 #: backend/usb-unix.c:117
 msgid "Unable to contact printer, queuing on next printer in class."
 msgstr ""
@@ -5304,12 +5304,12 @@ msgstr ""
 msgid "Unable to copy CUPS printer driver files (%d)."
 msgstr ""
 
-#: scheduler/ipp.c:2722
+#: scheduler/ipp.c:2726
 #, c-format
 msgid "Unable to copy PPD file - %s"
 msgstr ""
 
-#: scheduler/ipp.c:2777
+#: scheduler/ipp.c:2781
 msgid "Unable to copy PPD file."
 msgstr ""
 
@@ -5323,16 +5323,16 @@ msgstr ""
 msgid "Unable to copy Windows 9x printer driver files (%d)."
 msgstr ""
 
-#: scheduler/ipp.c:2699
+#: scheduler/ipp.c:2703
 #, c-format
 msgid "Unable to copy interface script - %s"
 msgstr ""
 
-#: cups/util.c:603 cups/util.c:1664
+#: cups/util.c:605 cups/util.c:1667
 msgid "Unable to create printer-uri"
 msgstr ""
 
-#: cgi-bin/admin.c:1850 cgi-bin/admin.c:1862 scheduler/cupsfilter.c:1238
+#: cgi-bin/admin.c:1850 cgi-bin/admin.c:1862 scheduler/cupsfilter.c:1239
 msgid "Unable to create temporary file"
 msgstr ""
 
@@ -5352,35 +5352,35 @@ msgstr ""
 msgid "Unable to edit cupsd.conf files larger than 1MB"
 msgstr ""
 
-#: cups/http.c:5442
+#: cups/http.c:5473
 msgid "Unable to establish a secure connection to host (certificate chain invalid)."
 msgstr ""
 
-#: cups/http.c:5432
+#: cups/http.c:5463
 msgid "Unable to establish a secure connection to host (certificate not yet valid)."
 msgstr ""
 
-#: cups/http.c:5427
+#: cups/http.c:5458
 msgid "Unable to establish a secure connection to host (expired certificate)."
 msgstr ""
 
-#: cups/http.c:5437
+#: cups/http.c:5468
 msgid "Unable to establish a secure connection to host (host name mismatch)."
 msgstr ""
 
-#: cups/http.c:5447
+#: cups/http.c:5478
 msgid "Unable to establish a secure connection to host (peer dropped connection before responding)."
 msgstr ""
 
-#: cups/http.c:5422
+#: cups/http.c:5453
 msgid "Unable to establish a secure connection to host (self-signed certificate)."
 msgstr ""
 
-#: cups/http.c:5417
+#: cups/http.c:5448
 msgid "Unable to establish a secure connection to host (untrusted certificate)."
 msgstr ""
 
-#: cups/http.c:5218 cups/http.c:5474 cups/http.c:5507 cups/http.c:5524
+#: cups/http.c:5249 cups/http.c:5505 cups/http.c:5538 cups/http.c:5555
 msgid "Unable to establish a secure connection to host."
 msgstr ""
 
@@ -5392,7 +5392,7 @@ msgstr ""
 msgid "Unable to find printer."
 msgstr ""
 
-#: backend/ipp.c:3377
+#: backend/ipp.c:3387
 msgid "Unable to get backend exit status."
 msgstr ""
 
@@ -5420,7 +5420,7 @@ msgstr ""
 msgid "Unable to get printer status"
 msgstr ""
 
-#: backend/ipp.c:981
+#: backend/ipp.c:982
 msgid "Unable to get printer status."
 msgstr ""
 
@@ -5438,12 +5438,12 @@ msgstr ""
 msgid "Unable to load help index."
 msgstr ""
 
-#: backend/ipp.c:681 backend/lpd.c:435 backend/socket.c:282
+#: backend/ipp.c:682 backend/lpd.c:435 backend/socket.c:282
 #, c-format
 msgid "Unable to locate printer \"%s\"."
 msgstr ""
 
-#: backend/dnssd.c:781 backend/ipp.c:351 backend/lpd.c:205
+#: backend/dnssd.c:781 backend/ipp.c:352 backend/lpd.c:205
 #: backend/socket.c:168
 msgid "Unable to locate printer."
 msgstr ""
@@ -5476,7 +5476,7 @@ msgstr ""
 msgid "Unable to open device file"
 msgstr ""
 
-#: scheduler/ipp.c:6008
+#: scheduler/ipp.c:6012
 #, c-format
 msgid "Unable to open document #%d in job #%d."
 msgstr ""
@@ -5485,7 +5485,7 @@ msgstr ""
 msgid "Unable to open help file."
 msgstr ""
 
-#: backend/ipp.c:392 backend/ipp.c:1511 backend/ipp.c:1719 backend/lpd.c:505
+#: backend/ipp.c:393 backend/ipp.c:1520 backend/ipp.c:1728 backend/lpd.c:505
 #: backend/socket.c:155 backend/usb.c:237 filter/gziptoany.c:71
 #: filter/pstops.c:300
 msgid "Unable to open print file"
@@ -5539,7 +5539,7 @@ msgstr ""
 msgid "Unable to set server default"
 msgstr ""
 
-#: backend/ipp.c:3236 backend/ipp.c:3313 backend/ipp.c:3321
+#: backend/ipp.c:3246 backend/ipp.c:3323 backend/ipp.c:3331
 msgid "Unable to start backend process."
 msgstr ""
 
@@ -5577,7 +5577,7 @@ msgstr ""
 msgid "Unknown choice \"%s\" for option \"%s\"."
 msgstr ""
 
-#: backend/ipp.c:534
+#: backend/ipp.c:535
 #, c-format
 msgid "Unknown encryption option value: \"%s\"."
 msgstr ""
@@ -5596,7 +5596,7 @@ msgstr ""
 msgid "Unknown media size name."
 msgstr ""
 
-#: backend/ipp.c:598
+#: backend/ipp.c:599
 #, c-format
 msgid "Unknown option \"%s\" with value \"%s\"."
 msgstr ""
@@ -5611,12 +5611,12 @@ msgstr ""
 msgid "Unknown print mode: \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:10354
+#: scheduler/ipp.c:10358
 #, c-format
 msgid "Unknown printer-error-policy \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:10337
+#: scheduler/ipp.c:10341
 #, c-format
 msgid "Unknown printer-op-policy \"%s\"."
 msgstr ""
@@ -5625,22 +5625,22 @@ msgstr ""
 msgid "Unknown service name."
 msgstr ""
 
-#: backend/ipp.c:563
+#: backend/ipp.c:564
 #, c-format
 msgid "Unknown version option value: \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:10810
+#: scheduler/ipp.c:10814
 #, c-format
 msgid "Unsupported 'compression' value \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:10840
+#: scheduler/ipp.c:10844
 #, c-format
 msgid "Unsupported 'document-format' value \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:10915
+#: scheduler/ipp.c:10919
 msgid "Unsupported 'job-name' value."
 msgstr ""
 
@@ -5649,27 +5649,27 @@ msgstr ""
 msgid "Unsupported character set \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:8028 scheduler/ipp.c:9259
+#: scheduler/ipp.c:8032 scheduler/ipp.c:9263
 #, c-format
 msgid "Unsupported compression \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:8162 scheduler/ipp.c:9409
+#: scheduler/ipp.c:8166 scheduler/ipp.c:9413
 #, c-format
 msgid "Unsupported document-format \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:9392
+#: scheduler/ipp.c:9396
 #, c-format
 msgid "Unsupported document-format \"%s/%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:1422
+#: scheduler/ipp.c:1426
 #, c-format
 msgid "Unsupported format \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:1520
+#: scheduler/ipp.c:1524
 msgid "Unsupported margins."
 msgstr ""
 
@@ -5716,7 +5716,7 @@ msgid ""
 "                       [-u allow:user,user] [-u deny:user,user]"
 msgstr ""
 
-#: backend/dnssd.c:241 backend/ipp.c:340 backend/lpd.c:192
+#: backend/dnssd.c:241 backend/ipp.c:341 backend/lpd.c:192
 #: backend/socket.c:132 backend/usb.c:183 filter/commandtops.c:74
 #: filter/gziptoany.c:50 filter/pstops.c:264 monitor/bcp.c:62
 #: monitor/tbcp.c:61
@@ -5736,7 +5736,7 @@ msgstr ""
 msgid "Usage: cupsd [options]"
 msgstr ""
 
-#: scheduler/cupsfilter.c:1431
+#: scheduler/cupsfilter.c:1432
 msgid "Usage: cupsfilter [ options ] filename"
 msgstr ""
 
@@ -5815,7 +5815,7 @@ msgstr ""
 msgid "Version uses indefinite length"
 msgstr ""
 
-#: backend/ipp.c:1865
+#: backend/ipp.c:1874
 msgid "Waiting for job to complete."
 msgstr ""
 
@@ -5839,7 +5839,7 @@ msgstr ""
 msgid "Yes"
 msgstr ""
 
-#: scheduler/client.c:2453
+#: scheduler/client.c:2481
 #, c-format
 msgid "You must access this page using the URL <A HREF=\"https://%s:%d%s\">https://%s:%d%s</A>."
 msgstr ""
@@ -5868,11 +5868,11 @@ msgstr ""
 msgid "completed"
 msgstr ""
 
-#: scheduler/ipp.c:5880
+#: scheduler/ipp.c:5884
 msgid "cups-deviced failed to execute."
 msgstr ""
 
-#: scheduler/ipp.c:6699 scheduler/ipp.c:6948
+#: scheduler/ipp.c:6703 scheduler/ipp.c:6952
 msgid "cups-driverd failed to execute."
 msgstr ""
 
@@ -5934,12 +5934,12 @@ msgstr ""
 msgid "cupsd: launchd(8) support not compiled in, running in normal mode."
 msgstr ""
 
-#: scheduler/cupsfilter.c:1211
+#: scheduler/cupsfilter.c:1212
 #, c-format
 msgid "cupsfilter: Invalid document number %d."
 msgstr ""
 
-#: scheduler/cupsfilter.c:1205
+#: scheduler/cupsfilter.c:1206
 #, c-format
 msgid "cupsfilter: Invalid job ID %d."
 msgstr ""
@@ -5948,7 +5948,7 @@ msgstr ""
 msgid "cupsfilter: Only one filename can be specified."
 msgstr ""
 
-#: scheduler/cupsfilter.c:1253
+#: scheduler/cupsfilter.c:1254
 #, c-format
 msgid "cupsfilter: Unable to get job file - %s"
 msgstr ""
@@ -6046,7 +6046,7 @@ msgstr ""
 msgid "ipptool: Unknown option \"-%c\"."
 msgstr ""
 
-#: scheduler/ipp.c:7695
+#: scheduler/ipp.c:7699
 msgid "job-printer-uri attribute missing."
 msgstr ""
 
@@ -6352,16 +6352,16 @@ msgstr ""
 msgid "no system default destination"
 msgstr ""
 
-#: scheduler/ipp.c:5570
+#: scheduler/ipp.c:5574
 msgid "notify-events not specified."
 msgstr ""
 
-#: scheduler/ipp.c:2107 scheduler/ipp.c:5475
+#: scheduler/ipp.c:2111 scheduler/ipp.c:5479
 #, c-format
 msgid "notify-recipient-uri URI \"%s\" is already used."
 msgstr ""
 
-#: scheduler/ipp.c:2097 scheduler/ipp.c:5465
+#: scheduler/ipp.c:2101 scheduler/ipp.c:5469
 #, c-format
 msgid "notify-recipient-uri URI \"%s\" uses unknown scheme."
 msgstr ""
index 164144f15461343df3426ede584cbc75c8357261..53508f5ad38472f04827c8faf392c8ecbb14307a 100644 (file)
 "  -z                      Compress PPD files using GNU zip." = "  -z                      Compress PPD files using GNU zip.";
 " FAIL" = " FAIL";
 " PASS" = " PASS";
+"\"%s\": Bad URI value \"%s\" - %s (RFC 2911 section 4.1.5)." = "\"%s\": Bad URI value \"%s\" - %s (RFC 2911 section 4.1.5).";
+"\"%s\": Bad URI value \"%s\" - bad length %d (RFC 2911 section 4.1.5)." = "\"%s\": Bad URI value \"%s\" - bad length %d (RFC 2911 section 4.1.5).";
+"\"%s\": Bad attribute name - bad length %d (RFC 2911 section 4.1.3)." = "\"%s\": Bad attribute name - bad length %d (RFC 2911 section 4.1.3).";
+"\"%s\": Bad attribute name - invalid character (RFC 2911 section 4.1.3)." = "\"%s\": Bad attribute name - invalid character (RFC 2911 section 4.1.3).";
+"\"%s\": Bad boolen value %d (RFC 2911 section 4.1.11)." = "\"%s\": Bad boolen value %d (RFC 2911 section 4.1.11).";
+"\"%s\": Bad charset value \"%s\" - bad characters (RFC 2911 section 4.1.7)." = "\"%s\": Bad charset value \"%s\" - bad characters (RFC 2911 section 4.1.7).";
+"\"%s\": Bad charset value \"%s\" - bad length %d (RFC 2911 section 4.1.7)." = "\"%s\": Bad charset value \"%s\" - bad length %d (RFC 2911 section 4.1.7).";
+"\"%s\": Bad dateTime UTC hours %u (RFC 2911 section 4.1.14)." = "\"%s\": Bad dateTime UTC hours %u (RFC 2911 section 4.1.14).";
+"\"%s\": Bad dateTime UTC minutes %u (RFC 2911 section 4.1.14)." = "\"%s\": Bad dateTime UTC minutes %u (RFC 2911 section 4.1.14).";
+"\"%s\": Bad dateTime UTC sign '%c' (RFC 2911 section 4.1.14)." = "\"%s\": Bad dateTime UTC sign '%c' (RFC 2911 section 4.1.14).";
+"\"%s\": Bad dateTime day %u (RFC 2911 section 4.1.14)." = "\"%s\": Bad dateTime day %u (RFC 2911 section 4.1.14).";
+"\"%s\": Bad dateTime deciseconds %u (RFC 2911 section 4.1.14)." = "\"%s\": Bad dateTime deciseconds %u (RFC 2911 section 4.1.14).";
+"\"%s\": Bad dateTime hours %u (RFC 2911 section 4.1.14)." = "\"%s\": Bad dateTime hours %u (RFC 2911 section 4.1.14).";
+"\"%s\": Bad dateTime minutes %u (RFC 2911 section 4.1.14)." = "\"%s\": Bad dateTime minutes %u (RFC 2911 section 4.1.14).";
+"\"%s\": Bad dateTime month %u (RFC 2911 section 4.1.14)." = "\"%s\": Bad dateTime month %u (RFC 2911 section 4.1.14).";
+"\"%s\": Bad dateTime seconds %u (RFC 2911 section 4.1.14)." = "\"%s\": Bad dateTime seconds %u (RFC 2911 section 4.1.14).";
+"\"%s\": Bad enum value %d - out of range (RFC 2911 section 4.1.4)." = "\"%s\": Bad enum value %d - out of range (RFC 2911 section 4.1.4).";
+"\"%s\": Bad keyword value \"%s\" - bad length %d (RFC 2911 section 4.1.3)." = "\"%s\": Bad keyword value \"%s\" - bad length %d (RFC 2911 section 4.1.3).";
+"\"%s\": Bad keyword value \"%s\" - invalid character (RFC 2911 section 4.1.3)." = "\"%s\": Bad keyword value \"%s\" - invalid character (RFC 2911 section 4.1.3).";
+"\"%s\": Bad mimeMediaType value \"%s\" - bad characters (RFC 2911 section 4.1.9)." = "\"%s\": Bad mimeMediaType value \"%s\" - bad characters (RFC 2911 section 4.1.9).";
+"\"%s\": Bad mimeMediaType value \"%s\" - bad length %d (RFC 2911 section 4.1.9)." = "\"%s\": Bad mimeMediaType value \"%s\" - bad length %d (RFC 2911 section 4.1.9).";
+"\"%s\": Bad name value \"%s\" - bad UTF-8 sequence (RFC 2911 section 4.1.2)." = "\"%s\": Bad name value \"%s\" - bad UTF-8 sequence (RFC 2911 section 4.1.2).";
+"\"%s\": Bad name value \"%s\" - bad length %d (RFC 2911 section 4.1.2)." = "\"%s\": Bad name value \"%s\" - bad length %d (RFC 2911 section 4.1.2).";
+"\"%s\": Bad naturalLanguage value \"%s\" - bad characters (RFC 2911 section 4.1.8)." = "\"%s\": Bad naturalLanguage value \"%s\" - bad characters (RFC 2911 section 4.1.8).";
+"\"%s\": Bad naturalLanguage value \"%s\" - bad length %d (RFC 2911 section 4.1.8)." = "\"%s\": Bad naturalLanguage value \"%s\" - bad length %d (RFC 2911 section 4.1.8).";
+"\"%s\": Bad octetString value - bad length %d (RFC 2911 section 4.1.10)." = "\"%s\": Bad octetString value - bad length %d (RFC 2911 section 4.1.10).";
+"\"%s\": Bad rangeOfInteger value %d-%d - lower greater than upper (RFC 2911 section 4.1.13)." = "\"%s\": Bad rangeOfInteger value %d-%d - lower greater than upper (RFC 2911 section 4.1.13).";
+"\"%s\": Bad resolution value %dx%d%s - bad units value (RFC 2911 section 4.1.15)." = "\"%s\": Bad resolution value %dx%d%s - bad units value (RFC 2911 section 4.1.15).";
+"\"%s\": Bad resolution value %dx%d%s - cross feed resolution must be positive (RFC 2911 section 4.1.15)." = "\"%s\": Bad resolution value %dx%d%s - cross feed resolution must be positive (RFC 2911 section 4.1.15).";
+"\"%s\": Bad resolution value %dx%d%s - feed resolution must be positive (RFC 2911 section 4.1.15)." = "\"%s\": Bad resolution value %dx%d%s - feed resolution must be positive (RFC 2911 section 4.1.15).";
+"\"%s\": Bad text value \"%s\" - bad UTF-8 sequence (RFC 2911 section 4.1.1)." = "\"%s\": Bad text value \"%s\" - bad UTF-8 sequence (RFC 2911 section 4.1.1).";
+"\"%s\": Bad text value \"%s\" - bad length %d (RFC 2911 section 4.1.1)." = "\"%s\": Bad text value \"%s\" - bad length %d (RFC 2911 section 4.1.1).";
+"\"%s\": Bad uriScheme value \"%s\" - bad characters (RFC 2911 section 4.1.6)." = "\"%s\": Bad uriScheme value \"%s\" - bad characters (RFC 2911 section 4.1.6).";
+"\"%s\": Bad uriScheme value \"%s\" - bad length %d (RFC 2911 section 4.1.6)." = "\"%s\": Bad uriScheme value \"%s\" - bad length %d (RFC 2911 section 4.1.6).";
 "%-6s %-10.10s %-4d %-10d %-27.27s %.0f bytes" = "%-6s %-10.10s %-4d %-10d %-27.27s %.0f bytes";
 "%-7s %-7.7s %-7d %-31.31s %.0f bytes" = "%-7s %-7.7s %-7d %-31.31s %.0f bytes";
 "%s accepting requests since %s" = "%s accepting requests since %s";
 "Bad document-format \"%s\"." = "Bad document-format \"%s\".";
 "Bad document-format-default \"%s\"." = "Bad document-format-default \"%s\".";
 "Bad filename buffer" = "Bad filename buffer";
+"Bad job-name value: %s" = "Bad job-name value: %s";
+"Bad job-name value: Wrong type or count." = "Bad job-name value: Wrong type or count.";
 "Bad job-priority value." = "Bad job-priority value.";
 "Bad job-sheets value \"%s\"." = "Bad job-sheets value \"%s\".";
 "Bad job-sheets value type." = "Bad job-sheets value type.";
 "File \"%s\" not available: %s" = "File \"%s\" not available: %s";
 "File \"%s\" permissions OK (0%o/uid=%d/gid=%d)." = "File \"%s\" permissions OK (0%o/uid=%d/gid=%d).";
 "File Folder " = "File Folder ";
-"File device URIs have been disabled. To enable, see the FileDevice directive in \"%s/cupsd.conf\"." = "File device URIs have been disabled. To enable, see the FileDevice directive in \"%s/cupsd.conf\".";
+"File device URIs have been disabled. To enable, see the FileDevice directive in \"%s/cups-files.conf\"." = "File device URIs have been disabled. To enable, see the FileDevice directive in \"%s/cups-files.conf\".";
 "Finished page %d." = "Finished page %d.";
 "Folio" = "Folio";
 "Forbidden" = "Forbidden";
 "IPP memberName with no attribute." = "IPP memberName with no attribute.";
 "IPP name larger than 32767 bytes." = "IPP name larger than 32767 bytes.";
 "IPP nameWithLanguage value less than minimum 4 bytes." = "IPP nameWithLanguage value less than minimum 4 bytes.";
-"IPP nameWithLanguage value more than maximum 1090 bytes." = "IPP nameWithLanguage value more than maximum 1090 bytes.";
 "IPP octetString length too large." = "IPP octetString length too large.";
 "IPP rangeOfInteger value not 8 bytes." = "IPP rangeOfInteger value not 8 bytes.";
 "IPP resolution value not 9 bytes." = "IPP resolution value not 9 bytes.";
 "IPP string length overflows value." = "IPP string length overflows value.";
-"IPP string value too large." = "IPP string value too large.";
-"IPP text length too large." = "IPP text length too large.";
 "IPP textWithLanguage value less than minimum 4 bytes." = "IPP textWithLanguage value less than minimum 4 bytes.";
-"IPP textWithLanguage value more than maximum 1090 bytes." = "IPP textWithLanguage value more than maximum 1090 bytes.";
 "IPP value larger than 32767 bytes." = "IPP value larger than 32767 bytes.";
 "ISOLatin1" = "ISOLatin1";
 "Illegal control character" = "Illegal control character";
 "Unable to change printer" = "Unable to change printer";
 "Unable to change printer-is-shared attribute" = "Unable to change printer-is-shared attribute";
 "Unable to change server settings" = "Unable to change server settings";
+"Unable to compile mimeMediaType regular expression: %s." = "Unable to compile mimeMediaType regular expression: %s.";
+"Unable to compile naturalLanguage regular expression: %s." = "Unable to compile naturalLanguage regular expression: %s.";
 "Unable to configure printer options." = "Unable to configure printer options.";
 "Unable to connect to host." = "Unable to connect to host.";
 "Unable to contact printer, queuing on next printer in class." = "Unable to contact printer, queuing on next printer in class.";
 "Unable to copy Windows 2000 printer driver files (%d)." = "Unable to copy Windows 2000 printer driver files (%d).";
 "Unable to copy Windows 9x printer driver files (%d)." = "Unable to copy Windows 9x printer driver files (%d).";
 "Unable to copy interface script - %s" = "Unable to copy interface script - %s";
-"Unable to create compressed print file" = "Unable to create compressed print file";
 "Unable to create printer-uri" = "Unable to create printer-uri";
 "Unable to create temporary file" = "Unable to create temporary file";
 "Unable to delete class" = "Unable to delete class";
 "Unable to establish a secure connection to host." = "Unable to establish a secure connection to host.";
 "Unable to find destination for job" = "Unable to find destination for job";
 "Unable to find printer." = "Unable to find printer.";
-"Unable to generate compressed print file" = "Unable to generate compressed print file";
 "Unable to get backend exit status." = "Unable to get backend exit status.";
 "Unable to get class list" = "Unable to get class list";
 "Unable to get class status" = "Unable to get class status";
 "Unable to move job" = "Unable to move job";
 "Unable to move jobs" = "Unable to move jobs";
 "Unable to open PPD file" = "Unable to open PPD file";
-"Unable to open compressed print file" = "Unable to open compressed print file";
 "Unable to open cupsd.conf file:" = "Unable to open cupsd.conf file:";
 "Unable to open device file" = "Unable to open device file";
 "Unable to open document #%d in job #%d." = "Unable to open document #%d in job #%d.";
 "cupsctl: Unknown option \"%s\"" = "cupsctl: Unknown option \"%s\"";
 "cupsctl: Unknown option \"-%c\"" = "cupsctl: Unknown option \"-%c\"";
 "cupsd: Expected config filename after \"-c\" option." = "cupsd: Expected config filename after \"-c\" option.";
+"cupsd: Expected cups-files.conf filename after \"-s\" option." = "cupsd: Expected cups-files.conf filename after \"-s\" option.";
+"cupsd: Relative cups-files.conf filename not allowed." = "cupsd: Relative cups-files.conf filename not allowed.";
 "cupsd: Unable to get current directory." = "cupsd: Unable to get current directory.";
+"cupsd: Unable to get path to cups-files.conf file." = "cupsd: Unable to get path to cups-files.conf file.";
 "cupsd: Unknown argument \"%s\" - aborting." = "cupsd: Unknown argument \"%s\" - aborting.";
 "cupsd: Unknown option \"%c\" - aborting." = "cupsd: Unknown option \"%c\" - aborting.";
 "cupsd: launchd(8) support not compiled in, running in normal mode." = "cupsd: launchd(8) support not compiled in, running in normal mode.";
index 18c6085b0aebe999897c3dadf7cb9417945d5466..350a535a90a4f47099a4782700dfb9896089ec51 100644 (file)
@@ -32,7 +32,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: CUPS 1.4.6\n"
 "Report-Msgid-Bugs-To: http://www.cups.org/str.php\n"
-"POT-Creation-Date: 2013-02-04 14:17-0500\n"
+"POT-Creation-Date: 2013-03-08 13:23-0500\n"
 "PO-Revision-Date: 2012-09-29 11:21+0200\n"
 "Last-Translator: Àngel Mompó <mecatxis@gmail.com>\n"
 "Language-Team: Catalan <ca@dodds.net>\n"
index 3319b60401cb4e13ccc95b6d5633f340cac7b787..1a8c18ba7eb0d40a49d72f785956e4c04825836b 100644 (file)
@@ -16,7 +16,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: CUPS 1.6\n"
 "Report-Msgid-Bugs-To: http://www.cups.org/str.php\n"
-"POT-Creation-Date: 2013-02-04 14:17-0500\n"
+"POT-Creation-Date: 2013-03-08 13:23-0500\n"
 "PO-Revision-Date: 2012-07-01 20:21+0100\n"
 "Last-Translator: Juan Pablo González Riopedre <riopedre13@yahoo.es>\n"
 "Language-Team: Spanish\n"
index 2c6fb8afd94160ebb6f0f32eecc17e23435ba3a5..7b6666ea823f9bf8809690cc41b6f493fdb298cb 100644 (file)
@@ -29,7 +29,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: CUPS 1.6\n"
 "Report-Msgid-Bugs-To: http://www.cups.org/str.php\n"
-"POT-Creation-Date: 2013-02-04 14:17-0500\n"
+"POT-Creation-Date: 2013-03-08 13:23-0500\n"
 "PO-Revision-Date: 2012-12-12 11:12+0100\n"
 "Last-Translator: denis meramdjougoma <dcmeram@libertysurf.fr>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 53bd5a21b38c0254107b20f7ddfbdb055938d212..55eecb18c81046f22a60dbbbec35ed12580e0695 100644 (file)
@@ -28,7 +28,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: CUPS 1.6\n"
 "Report-Msgid-Bugs-To: http://www.cups.org/str.php\n"
-"POT-Creation-Date: 2013-02-04 14:17-0500\n"
+"POT-Creation-Date: 2013-03-08 13:23-0500\n"
 "PO-Revision-Date: 2012-06-13 01:20+0900\n"
 "Last-Translator: OPFC TRANSCUPS <opfc-transcups@sourceforge.jp>\n"
 "Language-Team: OPFC TRANSCUPS <opfc-transcups@sourceforge.jp>\n"
diff --git a/locale/cups_ru.po b/locale/cups_ru.po
new file mode 100644 (file)
index 0000000..022aee7
--- /dev/null
@@ -0,0 +1,10479 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: CUPS 1.4\n"
+"Report-Msgid-Bugs-To: http://www.cups.org/str.php\n"
+"POT-Creation-Date: 2013-03-08 13:23-0500\n"
+"PO-Revision-Date: 2009-02-16 12:00-0800\n"
+"Last-Translator: Apple Inc.\n"
+"Language-Team: Apple Inc.\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "\t\t(all)"
+msgstr ""
+
+msgid "\t\t(none)"
+msgstr ""
+
+#, c-format
+msgid "\t%d entries"
+msgstr ""
+
+#, c-format
+msgid "\t%s"
+msgstr ""
+
+msgid "\tAfter fault: continue"
+msgstr ""
+
+#, c-format
+msgid "\tAlerts: %s"
+msgstr ""
+
+msgid "\tBanner required"
+msgstr ""
+
+msgid "\tCharset sets:"
+msgstr ""
+
+msgid "\tConnection: direct"
+msgstr ""
+
+msgid "\tConnection: remote"
+msgstr ""
+
+msgid "\tContent types: any"
+msgstr ""
+
+msgid "\tDefault page size:"
+msgstr ""
+
+msgid "\tDefault pitch:"
+msgstr ""
+
+msgid "\tDefault port settings:"
+msgstr ""
+
+#, c-format
+msgid "\tDescription: %s"
+msgstr ""
+
+msgid "\tForm mounted:"
+msgstr ""
+
+msgid "\tForms allowed:"
+msgstr ""
+
+#, c-format
+msgid "\tInterface: %s.ppd"
+msgstr ""
+
+#, c-format
+msgid "\tInterface: %s/interfaces/%s"
+msgstr ""
+
+#, c-format
+msgid "\tInterface: %s/ppd/%s.ppd"
+msgstr ""
+
+#, c-format
+msgid "\tLocation: %s"
+msgstr ""
+
+msgid "\tOn fault: no alert"
+msgstr ""
+
+msgid "\tPrinter types: unknown"
+msgstr ""
+
+#, c-format
+msgid "\tStatus: %s"
+msgstr ""
+
+msgid "\tUsers allowed:"
+msgstr ""
+
+msgid "\tUsers denied:"
+msgstr ""
+
+msgid "\tdaemon present"
+msgstr ""
+
+msgid "\tno entries"
+msgstr ""
+
+#, c-format
+msgid "\tprinter is on device '%s' speed -1"
+msgstr ""
+
+msgid "\tprinting is disabled"
+msgstr ""
+
+msgid "\tprinting is enabled"
+msgstr ""
+
+#, c-format
+msgid "\tqueued for %s"
+msgstr ""
+
+msgid "\tqueuing is disabled"
+msgstr ""
+
+msgid "\tqueuing is enabled"
+msgstr ""
+
+msgid "\treason unknown"
+msgstr ""
+
+msgid ""
+"\n"
+"    DETAILED CONFORMANCE TEST RESULTS"
+msgstr ""
+
+msgid "                          Ignore specific warnings."
+msgstr ""
+
+msgid "                          Issue warnings instead of errors."
+msgstr ""
+
+msgid "                REF: Page 15, section 3.1."
+msgstr ""
+
+msgid "                REF: Page 15, section 3.2."
+msgstr ""
+
+msgid "                REF: Page 19, section 3.3."
+msgstr ""
+
+msgid "                REF: Page 20, section 3.4."
+msgstr ""
+
+msgid "                REF: Page 27, section 3.5."
+msgstr ""
+
+msgid "                REF: Page 42, section 5.2."
+msgstr ""
+
+msgid "                REF: Pages 16-17, section 3.2."
+msgstr ""
+
+msgid "                REF: Pages 42-45, section 5.2."
+msgstr ""
+
+msgid "                REF: Pages 45-46, section 5.2."
+msgstr ""
+
+msgid "                REF: Pages 48-49, section 5.2."
+msgstr ""
+
+msgid "                REF: Pages 52-54, section 5.2."
+msgstr ""
+
+#, c-format
+msgid "        %-39.39s %.0f bytes"
+msgstr ""
+
+#, c-format
+msgid "        PASS    Default%s"
+msgstr ""
+
+msgid "        PASS    DefaultImageableArea"
+msgstr ""
+
+msgid "        PASS    DefaultPaperDimension"
+msgstr ""
+
+msgid "        PASS    FileVersion"
+msgstr ""
+
+msgid "        PASS    FormatVersion"
+msgstr ""
+
+msgid "        PASS    LanguageEncoding"
+msgstr ""
+
+msgid "        PASS    LanguageVersion"
+msgstr ""
+
+msgid "        PASS    Manufacturer"
+msgstr ""
+
+msgid "        PASS    ModelName"
+msgstr ""
+
+msgid "        PASS    NickName"
+msgstr ""
+
+msgid "        PASS    PCFileName"
+msgstr ""
+
+msgid "        PASS    PSVersion"
+msgstr ""
+
+msgid "        PASS    PageRegion"
+msgstr ""
+
+msgid "        PASS    PageSize"
+msgstr ""
+
+msgid "        PASS    Product"
+msgstr ""
+
+msgid "        PASS    ShortNickName"
+msgstr ""
+
+#, c-format
+msgid "        WARN    %s has no corresponding options."
+msgstr ""
+
+#, c-format
+msgid ""
+"        WARN    %s shares a common prefix with %s\n"
+"                REF: Page 15, section 3.2."
+msgstr ""
+
+#, c-format
+msgid ""
+"        WARN    Duplex option keyword %s may not work as expected and should "
+"be named Duplex.\n"
+"                REF: Page 122, section 5.17"
+msgstr ""
+
+msgid "        WARN    File contains a mix of CR, LF, and CR LF line endings."
+msgstr ""
+
+msgid ""
+"        WARN    LanguageEncoding required by PPD 4.3 spec.\n"
+"                REF: Pages 56-57, section 5.3."
+msgstr ""
+
+#, c-format
+msgid "        WARN    Line %d only contains whitespace."
+msgstr ""
+
+msgid ""
+"        WARN    Manufacturer required by PPD 4.3 spec.\n"
+"                REF: Pages 58-59, section 5.3."
+msgstr ""
+
+msgid ""
+"        WARN    Non-Windows PPD files should use lines ending with only LF, "
+"not CR LF."
+msgstr ""
+
+#, c-format
+msgid ""
+"        WARN    Obsolete PPD version %.1f.\n"
+"                REF: Page 42, section 5.2."
+msgstr ""
+
+msgid ""
+"        WARN    PCFileName longer than 8.3 in violation of PPD spec.\n"
+"                REF: Pages 61-62, section 5.3."
+msgstr ""
+
+msgid ""
+"        WARN    PCFileName should contain a unique filename.\n"
+"                REF: Pages 61-62, section 5.3."
+msgstr ""
+
+msgid ""
+"        WARN    Protocols contains PJL but JCL attributes are not set.\n"
+"                REF: Pages 78-79, section 5.7."
+msgstr ""
+
+msgid ""
+"        WARN    Protocols contains both PJL and BCP; expected TBCP.\n"
+"                REF: Pages 78-79, section 5.7."
+msgstr ""
+
+msgid ""
+"        WARN    ShortNickName required by PPD 4.3 spec.\n"
+"                REF: Pages 64-65, section 5.3."
+msgstr ""
+
+msgid "       cupsaddsmb [options] -a"
+msgstr ""
+
+msgid "       cupstestdsc [options] -"
+msgstr ""
+
+msgid "       program | cupstestppd [options] -"
+msgstr ""
+
+#, c-format
+msgid ""
+"      %s  \"%s %s\" conflicts with \"%s %s\"\n"
+"                (constraint=\"%s %s %s %s\")."
+msgstr ""
+
+#, c-format
+msgid "      %s  %s %s does not exist."
+msgstr ""
+
+#, c-format
+msgid "      %s  %s file \"%s\" has the wrong capitalization."
+msgstr ""
+
+#, c-format
+msgid ""
+"      %s  Bad %s choice %s.\n"
+"                REF: Page 122, section 5.17"
+msgstr ""
+
+#, c-format
+msgid "      %s  Bad UTF-8 \"%s\" translation string for option %s, choice %s."
+msgstr ""
+
+#, c-format
+msgid "      %s  Bad UTF-8 \"%s\" translation string for option %s."
+msgstr ""
+
+#, c-format
+msgid "      %s  Bad cupsFilter value \"%s\"."
+msgstr ""
+
+#, c-format
+msgid "      %s  Bad cupsFilter2 value \"%s\"."
+msgstr ""
+
+#, c-format
+msgid "      %s  Bad cupsICCProfile %s."
+msgstr ""
+
+#, c-format
+msgid "      %s  Bad cupsPreFilter value \"%s\"."
+msgstr ""
+
+#, c-format
+msgid "      %s  Bad cupsUIConstraints %s: \"%s\""
+msgstr ""
+
+#, c-format
+msgid "      %s  Bad language \"%s\"."
+msgstr ""
+
+#, c-format
+msgid "      %s  Bad permissions on %s file \"%s\"."
+msgstr ""
+
+#, c-format
+msgid "      %s  Bad spelling of %s - should be %s."
+msgstr ""
+
+#, c-format
+msgid "      %s  Cannot provide both APScanAppPath and APScanAppBundleID."
+msgstr ""
+
+#, c-format
+msgid "      %s  Default choices conflicting."
+msgstr ""
+
+#, c-format
+msgid "      %s  Empty cupsUIConstraints %s"
+msgstr ""
+
+#, c-format
+msgid "      %s  Missing \"%s\" translation string for option %s, choice %s."
+msgstr ""
+
+#, c-format
+msgid "      %s  Missing \"%s\" translation string for option %s."
+msgstr ""
+
+#, c-format
+msgid "      %s  Missing %s file \"%s\"."
+msgstr ""
+
+#, c-format
+msgid ""
+"      %s  Missing REQUIRED PageRegion option.\n"
+"                REF: Page 100, section 5.14."
+msgstr ""
+
+#, c-format
+msgid ""
+"      %s  Missing REQUIRED PageSize option.\n"
+"                REF: Page 99, section 5.14."
+msgstr ""
+
+#, c-format
+msgid "      %s  Missing choice *%s %s in UIConstraints \"*%s %s *%s %s\"."
+msgstr ""
+
+#, c-format
+msgid "      %s  Missing choice *%s %s in cupsUIConstraints %s: \"%s\""
+msgstr ""
+
+#, c-format
+msgid "      %s  Missing cupsUIResolver %s"
+msgstr ""
+
+#, c-format
+msgid "      %s  Missing option %s in UIConstraints \"*%s %s *%s %s\"."
+msgstr ""
+
+#, c-format
+msgid "      %s  Missing option %s in cupsUIConstraints %s: \"%s\""
+msgstr ""
+
+#, c-format
+msgid "      %s  No base translation \"%s\" is included in file."
+msgstr ""
+
+#, c-format
+msgid ""
+"      %s  REQUIRED %s does not define choice None.\n"
+"                REF: Page 122, section 5.17"
+msgstr ""
+
+#, c-format
+msgid "      %s  Size \"%s\" defined for %s but not for %s."
+msgstr ""
+
+#, c-format
+msgid "      %s  Size \"%s\" has unexpected dimensions (%gx%g)."
+msgstr ""
+
+#, c-format
+msgid "      %s  Size \"%s\" should be \"%s\"."
+msgstr ""
+
+#, c-format
+msgid "      %s  Size \"%s\" should be the Adobe standard name \"%s\"."
+msgstr ""
+
+#, c-format
+msgid "      %s  cupsICCProfile %s hash value collides with %s."
+msgstr ""
+
+#, c-format
+msgid "      %s  cupsUIResolver %s causes a loop."
+msgstr ""
+
+#, c-format
+msgid ""
+"      %s  cupsUIResolver %s does not list at least two different options."
+msgstr ""
+
+#, c-format
+msgid ""
+"      **FAIL**  %s must be 1284DeviceID\n"
+"                REF: Page 72, section 5.5"
+msgstr ""
+
+#, c-format
+msgid ""
+"      **FAIL**  Bad Default%s %s\n"
+"                REF: Page 40, section 4.5."
+msgstr ""
+
+#, c-format
+msgid ""
+"      **FAIL**  Bad DefaultImageableArea %s\n"
+"                REF: Page 102, section 5.15."
+msgstr ""
+
+#, c-format
+msgid ""
+"      **FAIL**  Bad DefaultPaperDimension %s\n"
+"                REF: Page 103, section 5.15."
+msgstr ""
+
+#, c-format
+msgid ""
+"      **FAIL**  Bad FileVersion \"%s\"\n"
+"                REF: Page 56, section 5.3."
+msgstr ""
+
+#, c-format
+msgid ""
+"      **FAIL**  Bad FormatVersion \"%s\"\n"
+"                REF: Page 56, section 5.3."
+msgstr ""
+
+msgid ""
+"      **FAIL**  Bad JobPatchFile attribute in file\n"
+"                REF: Page 24, section 3.4."
+msgstr ""
+
+#, c-format
+msgid "      **FAIL**  Bad LanguageEncoding %s - must be ISOLatin1."
+msgstr ""
+
+#, c-format
+msgid "      **FAIL**  Bad LanguageVersion %s - must be English."
+msgstr ""
+
+#, c-format
+msgid ""
+"      **FAIL**  Bad Manufacturer (should be \"%s\")\n"
+"                REF: Page 211, table D.1."
+msgstr ""
+
+#, c-format
+msgid ""
+"      **FAIL**  Bad ModelName - \"%c\" not allowed in string.\n"
+"                REF: Pages 59-60, section 5.3."
+msgstr ""
+
+msgid ""
+"      **FAIL**  Bad PSVersion - not \"(string) int\".\n"
+"                REF: Pages 62-64, section 5.3."
+msgstr ""
+
+msgid ""
+"      **FAIL**  Bad Product - not \"(string)\".\n"
+"                REF: Page 62, section 5.3."
+msgstr ""
+
+msgid ""
+"      **FAIL**  Bad ShortNickName - longer than 31 chars.\n"
+"                REF: Pages 64-65, section 5.3."
+msgstr ""
+
+#, c-format
+msgid ""
+"      **FAIL**  Bad option %s choice %s\n"
+"                REF: Page 84, section 5.9"
+msgstr ""
+
+#, c-format
+msgid "      **FAIL**  Default option code cannot be interpreted: %s"
+msgstr ""
+
+#, c-format
+msgid ""
+"      **FAIL**  Default translation string for option %s choice %s contains "
+"8-bit characters."
+msgstr ""
+
+#, c-format
+msgid ""
+"      **FAIL**  Default translation string for option %s contains 8-bit "
+"characters."
+msgstr ""
+
+#, c-format
+msgid "      **FAIL**  Group names %s and %s differ only by case."
+msgstr ""
+
+#, c-format
+msgid "      **FAIL**  Multiple occurrences of option %s choice name %s."
+msgstr ""
+
+#, c-format
+msgid "      **FAIL**  Option %s choice names %s and %s differ only by case."
+msgstr ""
+
+#, c-format
+msgid "      **FAIL**  Option names %s and %s differ only by case."
+msgstr ""
+
+#, c-format
+msgid ""
+"      **FAIL**  REQUIRED Default%s\n"
+"                REF: Page 40, section 4.5."
+msgstr ""
+
+msgid ""
+"      **FAIL**  REQUIRED DefaultImageableArea\n"
+"                REF: Page 102, section 5.15."
+msgstr ""
+
+msgid ""
+"      **FAIL**  REQUIRED DefaultPaperDimension\n"
+"                REF: Page 103, section 5.15."
+msgstr ""
+
+msgid ""
+"      **FAIL**  REQUIRED FileVersion\n"
+"                REF: Page 56, section 5.3."
+msgstr ""
+
+msgid ""
+"      **FAIL**  REQUIRED FormatVersion\n"
+"                REF: Page 56, section 5.3."
+msgstr ""
+
+#, c-format
+msgid ""
+"      **FAIL**  REQUIRED ImageableArea for PageSize %s\n"
+"                REF: Page 41, section 5.\n"
+"                REF: Page 102, section 5.15."
+msgstr ""
+
+msgid ""
+"      **FAIL**  REQUIRED LanguageEncoding\n"
+"                REF: Pages 56-57, section 5.3."
+msgstr ""
+
+msgid ""
+"      **FAIL**  REQUIRED LanguageVersion\n"
+"                REF: Pages 57-58, section 5.3."
+msgstr ""
+
+msgid ""
+"      **FAIL**  REQUIRED Manufacturer\n"
+"                REF: Pages 58-59, section 5.3."
+msgstr ""
+
+msgid ""
+"      **FAIL**  REQUIRED ModelName\n"
+"                REF: Pages 59-60, section 5.3."
+msgstr ""
+
+msgid ""
+"      **FAIL**  REQUIRED NickName\n"
+"                REF: Page 60, section 5.3."
+msgstr ""
+
+msgid ""
+"      **FAIL**  REQUIRED PCFileName\n"
+"                REF: Pages 61-62, section 5.3."
+msgstr ""
+
+msgid ""
+"      **FAIL**  REQUIRED PSVersion\n"
+"                REF: Pages 62-64, section 5.3."
+msgstr ""
+
+msgid ""
+"      **FAIL**  REQUIRED PageRegion\n"
+"                REF: Page 100, section 5.14."
+msgstr ""
+
+msgid ""
+"      **FAIL**  REQUIRED PageSize\n"
+"                REF: Page 41, section 5.\n"
+"                REF: Page 99, section 5.14."
+msgstr ""
+
+msgid ""
+"      **FAIL**  REQUIRED PageSize\n"
+"                REF: Pages 99-100, section 5.14."
+msgstr ""
+
+#, c-format
+msgid ""
+"      **FAIL**  REQUIRED PaperDimension for PageSize %s\n"
+"                REF: Page 41, section 5.\n"
+"                REF: Page 103, section 5.15."
+msgstr ""
+
+msgid ""
+"      **FAIL**  REQUIRED Product\n"
+"                REF: Page 62, section 5.3."
+msgstr ""
+
+msgid ""
+"      **FAIL**  REQUIRED ShortNickName\n"
+"                REF: Page 64-65, section 5.3."
+msgstr ""
+
+#, c-format
+msgid "      **FAIL**  Unable to open PPD file - %s on line %d."
+msgstr ""
+
+#, c-format
+msgid "    %d ERRORS FOUND"
+msgstr ""
+
+msgid "    -h       Show program usage"
+msgstr ""
+
+#, c-format
+msgid ""
+"    Bad %%%%BoundingBox: on line %d.\n"
+"        REF: Page 39, %%%%BoundingBox:"
+msgstr ""
+
+#, c-format
+msgid ""
+"    Bad %%%%Page: on line %d.\n"
+"        REF: Page 53, %%%%Page:"
+msgstr ""
+
+#, c-format
+msgid ""
+"    Bad %%%%Pages: on line %d.\n"
+"        REF: Page 43, %%%%Pages:"
+msgstr ""
+
+#, c-format
+msgid ""
+"    Line %d is longer than 255 characters (%d).\n"
+"        REF: Page 25, Line Length"
+msgstr ""
+
+msgid ""
+"    Missing %!PS-Adobe-3.0 on first line.\n"
+"        REF: Page 17, 3.1 Conforming Documents"
+msgstr ""
+
+#, c-format
+msgid "    Missing %%EndComments comment.        REF: Page 41, %%EndComments"
+msgstr ""
+
+#, c-format
+msgid ""
+"    Missing or bad %%BoundingBox: comment.\n"
+"        REF: Page 39, %%BoundingBox:"
+msgstr ""
+
+#, c-format
+msgid ""
+"    Missing or bad %%Page: comments.\n"
+"        REF: Page 53, %%Page:"
+msgstr ""
+
+#, c-format
+msgid ""
+"    Missing or bad %%Pages: comment.\n"
+"        REF: Page 43, %%Pages:"
+msgstr ""
+
+msgid "    NO ERRORS FOUND"
+msgstr ""
+
+#, c-format
+msgid "    Saw %d lines that exceeded 255 characters."
+msgstr ""
+
+#, c-format
+msgid "    Too many %%BeginDocument comments."
+msgstr ""
+
+#, c-format
+msgid "    Too many %%EndDocument comments."
+msgstr ""
+
+msgid "    Warning: file contains binary data."
+msgstr ""
+
+#, c-format
+msgid "    Warning: no %%EndComments comment in file."
+msgstr ""
+
+#, c-format
+msgid "    Warning: obsolete DSC version %.1f in file."
+msgstr ""
+
+msgid "  --[no-]debug-logging    Turn debug logging on/off."
+msgstr ""
+
+msgid "  --[no-]remote-admin     Turn remote administration on/off."
+msgstr ""
+
+msgid "  --[no-]remote-any       Allow/prevent access from the Internet."
+msgstr ""
+
+msgid "  --[no-]share-printers   Turn printer sharing on/off."
+msgstr ""
+
+msgid "  --[no-]user-cancel-any  Allow/prevent users to cancel any job."
+msgstr ""
+
+msgid "  --cr                    End lines with CR (Mac OS 9)."
+msgstr ""
+
+msgid "  --crlf                  End lines with CR + LF (Windows)."
+msgstr ""
+
+msgid "  --lf                    End lines with LF (UNIX/Linux/OS X)."
+msgstr ""
+
+msgid "  -4                      Connect using IPv4."
+msgstr ""
+
+msgid "  -6                      Connect using IPv6."
+msgstr ""
+
+msgid "  -C                      Send requests using chunking (default)."
+msgstr ""
+
+msgid "  -D                      Remove the input file when finished."
+msgstr ""
+
+msgid "  -D name=value           Set named variable to value."
+msgstr ""
+
+msgid "  -E                      Encrypt the connection."
+msgstr ""
+
+msgid "  -E                      Test with HTTP Upgrade to TLS."
+msgstr ""
+
+msgid ""
+"  -F                      Run in the foreground but detach from console."
+msgstr ""
+
+msgid "  -H samba-server         Use the named SAMBA server."
+msgstr ""
+
+msgid "  -I                      Ignore errors."
+msgstr ""
+
+msgid "  -I include-dir          Add include directory to search path."
+msgstr ""
+
+msgid "  -I {filename,filters,none,profiles}"
+msgstr ""
+
+msgid "  -L                      Send requests using content-length."
+msgstr ""
+
+msgid "  -P filename.ppd         Set PPD file."
+msgstr ""
+
+msgid "  -R root-directory       Set alternate root."
+msgstr ""
+
+msgid "  -S                      Test with SSL encryption."
+msgstr ""
+
+msgid "  -T seconds              Set the receive/send timeout in seconds."
+msgstr ""
+
+msgid "  -U username             Specify username."
+msgstr ""
+
+msgid "  -V version              Set default IPP version."
+msgstr ""
+
+msgid ""
+"  -W {all,none,constraints,defaults,duplex,filters,profiles,sizes,"
+"translations}"
+msgstr ""
+
+msgid "  -X                      Produce XML plist instead of plain text."
+msgstr ""
+
+msgid "  -a                      Export all printers."
+msgstr ""
+
+msgid "  -c catalog.po           Load the specified message catalog."
+msgstr ""
+
+msgid "  -c cupsd.conf           Set cupsd.conf file to use."
+msgstr ""
+
+msgid "  -d name=value           Set named variable to value."
+msgstr ""
+
+msgid "  -d output-dir           Specify the output directory."
+msgstr ""
+
+msgid "  -d printer              Use the named printer."
+msgstr ""
+
+msgid "  -e                      Use every filter from the PPD file."
+msgstr ""
+
+msgid "  -f                      Run in the foreground."
+msgstr ""
+
+msgid "  -f filename             Set default request filename."
+msgstr ""
+
+msgid "  -h                      Show this usage message."
+msgstr ""
+
+msgid "  -h server[:port]        Specify server address."
+msgstr ""
+
+msgid "  -i mime/type            Set input MIME type (otherwise auto-typed)."
+msgstr ""
+
+msgid ""
+"  -i seconds              Repeat the last file with the given time interval."
+msgstr ""
+
+msgid ""
+"  -j job-id[,N]           Filter file N from the specified job (default is "
+"file 1)."
+msgstr ""
+
+msgid "  -l                      Run cupsd from launchd(8)."
+msgstr ""
+
+msgid "  -l lang[,lang,...]      Specify the output language(s) (locale)."
+msgstr ""
+
+msgid "  -m                      Use the ModelName value as the filename."
+msgstr ""
+
+msgid ""
+"  -m mime/type            Set output MIME type (otherwise application/pdf)."
+msgstr ""
+
+msgid "  -n copies               Set number of copies."
+msgstr ""
+
+msgid ""
+"  -n count                Repeat the last file the given number of times."
+msgstr ""
+
+msgid ""
+"  -o filename.drv         Set driver information file (otherwise ppdi.drv)."
+msgstr ""
+
+msgid "  -o filename.ppd[.gz]    Set output file (otherwise stdout)."
+msgstr ""
+
+msgid "  -o name=value           Set option(s)."
+msgstr ""
+
+msgid "  -p filename.ppd         Set PPD file."
+msgstr ""
+
+msgid "  -q                      Run silently."
+msgstr ""
+
+msgid "  -r                      Use 'relaxed' open mode."
+msgstr ""
+
+msgid "  -t                      Produce a test report."
+msgstr ""
+
+msgid "  -t                      Test PPDs instead of generating them."
+msgstr ""
+
+msgid "  -t                      Test the configuration file."
+msgstr ""
+
+msgid "  -t title                Set title."
+msgstr ""
+
+msgid "  -u                      Remove the PPD file when finished."
+msgstr ""
+
+msgid "  -v                      Be verbose."
+msgstr ""
+
+msgid "  -vv                     Be very verbose."
+msgstr ""
+
+msgid "  -z                      Compress PPD files using GNU zip."
+msgstr ""
+
+msgid " FAIL"
+msgstr ""
+
+msgid " PASS"
+msgstr ""
+
+#, c-format
+msgid "\"%s\": Bad URI value \"%s\" - %s (RFC 2911 section 4.1.5)."
+msgstr ""
+
+#, c-format
+msgid "\"%s\": Bad URI value \"%s\" - bad length %d (RFC 2911 section 4.1.5)."
+msgstr ""
+
+#, c-format
+msgid "\"%s\": Bad attribute name - bad length %d (RFC 2911 section 4.1.3)."
+msgstr ""
+
+#, c-format
+msgid ""
+"\"%s\": Bad attribute name - invalid character (RFC 2911 section 4.1.3)."
+msgstr ""
+
+#, c-format
+msgid "\"%s\": Bad boolen value %d (RFC 2911 section 4.1.11)."
+msgstr ""
+
+#, c-format
+msgid ""
+"\"%s\": Bad charset value \"%s\" - bad characters (RFC 2911 section 4.1.7)."
+msgstr ""
+
+#, c-format
+msgid ""
+"\"%s\": Bad charset value \"%s\" - bad length %d (RFC 2911 section 4.1.7)."
+msgstr ""
+
+#, c-format
+msgid "\"%s\": Bad dateTime UTC hours %u (RFC 2911 section 4.1.14)."
+msgstr ""
+
+#, c-format
+msgid "\"%s\": Bad dateTime UTC minutes %u (RFC 2911 section 4.1.14)."
+msgstr ""
+
+#, c-format
+msgid "\"%s\": Bad dateTime UTC sign '%c' (RFC 2911 section 4.1.14)."
+msgstr ""
+
+#, c-format
+msgid "\"%s\": Bad dateTime day %u (RFC 2911 section 4.1.14)."
+msgstr ""
+
+#, c-format
+msgid "\"%s\": Bad dateTime deciseconds %u (RFC 2911 section 4.1.14)."
+msgstr ""
+
+#, c-format
+msgid "\"%s\": Bad dateTime hours %u (RFC 2911 section 4.1.14)."
+msgstr ""
+
+#, c-format
+msgid "\"%s\": Bad dateTime minutes %u (RFC 2911 section 4.1.14)."
+msgstr ""
+
+#, c-format
+msgid "\"%s\": Bad dateTime month %u (RFC 2911 section 4.1.14)."
+msgstr ""
+
+#, c-format
+msgid "\"%s\": Bad dateTime seconds %u (RFC 2911 section 4.1.14)."
+msgstr ""
+
+#, c-format
+msgid "\"%s\": Bad enum value %d - out of range (RFC 2911 section 4.1.4)."
+msgstr ""
+
+#, c-format
+msgid ""
+"\"%s\": Bad keyword value \"%s\" - bad length %d (RFC 2911 section 4.1.3)."
+msgstr ""
+
+#, c-format
+msgid ""
+"\"%s\": Bad keyword value \"%s\" - invalid character (RFC 2911 section "
+"4.1.3)."
+msgstr ""
+
+#, c-format
+msgid ""
+"\"%s\": Bad mimeMediaType value \"%s\" - bad characters (RFC 2911 section "
+"4.1.9)."
+msgstr ""
+
+#, c-format
+msgid ""
+"\"%s\": Bad mimeMediaType value \"%s\" - bad length %d (RFC 2911 section "
+"4.1.9)."
+msgstr ""
+
+#, c-format
+msgid ""
+"\"%s\": Bad name value \"%s\" - bad UTF-8 sequence (RFC 2911 section 4.1.2)."
+msgstr ""
+
+#, c-format
+msgid "\"%s\": Bad name value \"%s\" - bad length %d (RFC 2911 section 4.1.2)."
+msgstr ""
+
+#, c-format
+msgid ""
+"\"%s\": Bad naturalLanguage value \"%s\" - bad characters (RFC 2911 section "
+"4.1.8)."
+msgstr ""
+
+#, c-format
+msgid ""
+"\"%s\": Bad naturalLanguage value \"%s\" - bad length %d (RFC 2911 section "
+"4.1.8)."
+msgstr ""
+
+#, c-format
+msgid ""
+"\"%s\": Bad octetString value - bad length %d (RFC 2911 section 4.1.10)."
+msgstr ""
+
+#, c-format
+msgid ""
+"\"%s\": Bad rangeOfInteger value %d-%d - lower greater than upper (RFC 2911 "
+"section 4.1.13)."
+msgstr ""
+
+#, c-format
+msgid ""
+"\"%s\": Bad resolution value %dx%d%s - bad units value (RFC 2911 section "
+"4.1.15)."
+msgstr ""
+
+#, c-format
+msgid ""
+"\"%s\": Bad resolution value %dx%d%s - cross feed resolution must be "
+"positive (RFC 2911 section 4.1.15)."
+msgstr ""
+
+#, c-format
+msgid ""
+"\"%s\": Bad resolution value %dx%d%s - feed resolution must be positive (RFC "
+"2911 section 4.1.15)."
+msgstr ""
+
+#, c-format
+msgid ""
+"\"%s\": Bad text value \"%s\" - bad UTF-8 sequence (RFC 2911 section 4.1.1)."
+msgstr ""
+
+#, c-format
+msgid "\"%s\": Bad text value \"%s\" - bad length %d (RFC 2911 section 4.1.1)."
+msgstr ""
+
+#, c-format
+msgid ""
+"\"%s\": Bad uriScheme value \"%s\" - bad characters (RFC 2911 section 4.1.6)."
+msgstr ""
+
+#, c-format
+msgid ""
+"\"%s\": Bad uriScheme value \"%s\" - bad length %d (RFC 2911 section 4.1.6)."
+msgstr ""
+
+#, c-format
+msgid "%-6s %-10.10s %-4d %-10d %-27.27s %.0f bytes"
+msgstr ""
+
+#, c-format
+msgid "%-7s %-7.7s %-7d %-31.31s %.0f bytes"
+msgstr ""
+
+#, c-format
+msgid "%s accepting requests since %s"
+msgstr ""
+
+#, c-format
+msgid "%s cannot be changed."
+msgstr "%s не может быть изменен."
+
+#, c-format
+msgid "%s is not implemented by the CUPS version of lpc."
+msgstr ""
+
+#, c-format
+msgid "%s is not ready"
+msgstr ""
+
+#, c-format
+msgid "%s is ready"
+msgstr ""
+
+#, c-format
+msgid "%s is ready and printing"
+msgstr ""
+
+#, c-format
+msgid "%s job-id user title copies options [file]"
+msgstr ""
+
+#, c-format
+msgid "%s not accepting requests since %s -"
+msgstr ""
+
+#, c-format
+msgid "%s not supported."
+msgstr ""
+
+#, c-format
+msgid "%s/%s accepting requests since %s"
+msgstr ""
+
+#, c-format
+msgid "%s/%s not accepting requests since %s -"
+msgstr ""
+
+#, c-format
+msgid "%s: %-33.33s [job %d localhost]"
+msgstr ""
+
+#. TRANSLATORS: Message is "subject: error"
+#, c-format
+msgid "%s: %s"
+msgstr ""
+
+#, c-format
+msgid "%s: %s failed: %s"
+msgstr ""
+
+#, c-format
+msgid "%s: Don't know what to do."
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Error - %s environment variable names non-existent destination \"%s\"."
+msgstr ""
+
+#, c-format
+msgid "%s: Error - bad job ID."
+msgstr ""
+
+#, c-format
+msgid "%s: Error - cannot print files and alter jobs simultaneously."
+msgstr ""
+
+#, c-format
+msgid "%s: Error - cannot print from stdin if files or a job ID are provided."
+msgstr ""
+
+#, c-format
+msgid "%s: Error - expected character set after \"-S\" option."
+msgstr ""
+
+#, c-format
+msgid "%s: Error - expected content type after \"-T\" option."
+msgstr ""
+
+#, c-format
+msgid "%s: Error - expected copies after \"-#\" option."
+msgstr ""
+
+#, c-format
+msgid "%s: Error - expected copies after \"-n\" option."
+msgstr ""
+
+#, c-format
+msgid "%s: Error - expected destination after \"-P\" option."
+msgstr ""
+
+#, c-format
+msgid "%s: Error - expected destination after \"-d\" option."
+msgstr ""
+
+#, c-format
+msgid "%s: Error - expected form after \"-f\" option."
+msgstr ""
+
+#, c-format
+msgid "%s: Error - expected hold name after \"-H\" option."
+msgstr ""
+
+#, c-format
+msgid "%s: Error - expected hostname after \"-H\" option."
+msgstr ""
+
+#, c-format
+msgid "%s: Error - expected hostname after \"-h\" option."
+msgstr ""
+
+#, c-format
+msgid "%s: Error - expected mode list after \"-y\" option."
+msgstr ""
+
+#, c-format
+msgid "%s: Error - expected name after \"-%c\" option."
+msgstr ""
+
+#, c-format
+msgid "%s: Error - expected option=value after \"-o\" option."
+msgstr ""
+
+#, c-format
+msgid "%s: Error - expected page list after \"-P\" option."
+msgstr ""
+
+#, c-format
+msgid "%s: Error - expected priority after \"-%c\" option."
+msgstr ""
+
+#, c-format
+msgid "%s: Error - expected reason text after \"-r\" option."
+msgstr ""
+
+#, c-format
+msgid "%s: Error - expected title after \"-t\" option."
+msgstr ""
+
+#, c-format
+msgid "%s: Error - expected username after \"-U\" option."
+msgstr ""
+
+#, c-format
+msgid "%s: Error - expected username after \"-u\" option."
+msgstr ""
+
+#, c-format
+msgid "%s: Error - expected value after \"-%c\" option."
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Error - need \"completed\", \"not-completed\", or \"all\" after \"-W\" "
+"option."
+msgstr ""
+
+#, c-format
+msgid "%s: Error - no default destination available."
+msgstr ""
+
+#, c-format
+msgid "%s: Error - priority must be between 1 and 100."
+msgstr ""
+
+#, c-format
+msgid "%s: Error - scheduler not responding."
+msgstr ""
+
+#, c-format
+msgid "%s: Error - too many files - \"%s\"."
+msgstr ""
+
+#, c-format
+msgid "%s: Error - unable to access \"%s\" - %s"
+msgstr ""
+
+#, c-format
+msgid "%s: Error - unable to queue from stdin - %s."
+msgstr ""
+
+#, c-format
+msgid "%s: Error - unknown destination \"%s\"."
+msgstr ""
+
+#, c-format
+msgid "%s: Error - unknown destination \"%s/%s\"."
+msgstr ""
+
+#, c-format
+msgid "%s: Error - unknown option \"%c\"."
+msgstr ""
+
+#, c-format
+msgid "%s: Error - unknown option \"%s\"."
+msgstr ""
+
+#, c-format
+msgid "%s: Expected job ID after \"-i\" option."
+msgstr ""
+
+#, c-format
+msgid "%s: Invalid destination name in list \"%s\"."
+msgstr ""
+
+#, c-format
+msgid "%s: Invalid filter string \"%s\"."
+msgstr ""
+
+#, c-format
+msgid "%s: Need job ID (\"-i jobid\") before \"-H restart\"."
+msgstr ""
+
+#, c-format
+msgid "%s: No filter to convert from %s/%s to %s/%s."
+msgstr ""
+
+#, c-format
+msgid "%s: Operation failed: %s"
+msgstr ""
+
+#, c-format
+msgid "%s: Sorry, no encryption support."
+msgstr ""
+
+#, c-format
+msgid "%s: Unable to connect to server."
+msgstr ""
+
+#, c-format
+msgid "%s: Unable to contact server."
+msgstr ""
+
+#, c-format
+msgid "%s: Unable to determine MIME type of \"%s\"."
+msgstr ""
+
+#, c-format
+msgid "%s: Unable to open %s: %s"
+msgstr ""
+
+#, c-format
+msgid "%s: Unable to open PPD file: %s on line %d."
+msgstr ""
+
+#, c-format
+msgid "%s: Unable to read MIME database from \"%s\" or \"%s\"."
+msgstr ""
+
+#, c-format
+msgid "%s: Unknown destination \"%s\"."
+msgstr ""
+
+#, c-format
+msgid "%s: Unknown destination MIME type %s/%s."
+msgstr ""
+
+#, c-format
+msgid "%s: Unknown option \"%c\"."
+msgstr ""
+
+#, c-format
+msgid "%s: Unknown source MIME type %s/%s."
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Warning - \"%c\" format modifier not supported - output may not be "
+"correct."
+msgstr ""
+
+#, c-format
+msgid "%s: Warning - character set option ignored."
+msgstr ""
+
+#, c-format
+msgid "%s: Warning - content type option ignored."
+msgstr ""
+
+#, c-format
+msgid "%s: Warning - form option ignored."
+msgstr ""
+
+#, c-format
+msgid "%s: Warning - mode option ignored."
+msgstr ""
+
+msgid "-1"
+msgstr "-1"
+
+msgid "-10"
+msgstr "-10"
+
+msgid "-100"
+msgstr "-100"
+
+msgid "-105"
+msgstr "-105"
+
+msgid "-11"
+msgstr "-11"
+
+msgid "-110"
+msgstr "-110"
+
+msgid "-115"
+msgstr "-115"
+
+msgid "-12"
+msgstr "-12"
+
+msgid "-120"
+msgstr "-120"
+
+msgid "-13"
+msgstr "-13"
+
+msgid "-14"
+msgstr "-14"
+
+msgid "-15"
+msgstr "-15"
+
+msgid "-2"
+msgstr "-2"
+
+msgid "-20"
+msgstr "-20"
+
+msgid "-25"
+msgstr "-25"
+
+msgid "-3"
+msgstr "-3"
+
+msgid "-30"
+msgstr "-30"
+
+msgid "-35"
+msgstr "-35"
+
+msgid "-4"
+msgstr "-4"
+
+msgid "-40"
+msgstr "-40"
+
+msgid "-45"
+msgstr "-45"
+
+msgid "-5"
+msgstr "-5"
+
+msgid "-50"
+msgstr "-50"
+
+msgid "-55"
+msgstr "-55"
+
+msgid "-6"
+msgstr "-6"
+
+msgid "-60"
+msgstr "-60"
+
+msgid "-65"
+msgstr "-65"
+
+msgid "-7"
+msgstr "-7"
+
+msgid "-70"
+msgstr "-70"
+
+msgid "-75"
+msgstr "-75"
+
+msgid "-8"
+msgstr "-8"
+
+msgid "-80"
+msgstr "-80"
+
+msgid "-85"
+msgstr "-85"
+
+msgid "-9"
+msgstr "-9"
+
+msgid "-90"
+msgstr "-90"
+
+msgid "-95"
+msgstr "-95"
+
+msgid "0"
+msgstr "0"
+
+msgid "1"
+msgstr "1"
+
+msgid "1 inch/sec."
+msgstr "1 дюйм/с"
+
+msgid "1.25x0.25\""
+msgstr "1,25x0,25\""
+
+msgid "1.25x2.25\""
+msgstr "1,25x2,25\""
+
+msgid "1.5 inch/sec."
+msgstr "1,5 дюйма/с"
+
+msgid "1.50x0.25\""
+msgstr "1,50x0,25\""
+
+msgid "1.50x0.50\""
+msgstr "1,50x0,50\""
+
+msgid "1.50x1.00\""
+msgstr "1,50x1,00\""
+
+msgid "1.50x2.00\""
+msgstr "1,50x2,00\""
+
+msgid "10"
+msgstr "10"
+
+msgid "10 inches/sec."
+msgstr "10 дюймов/с"
+
+msgid "10 x 11"
+msgstr ""
+
+msgid "10 x 13"
+msgstr ""
+
+msgid "10 x 14"
+msgstr ""
+
+msgid "100"
+msgstr "100"
+
+msgid "100 mm/sec."
+msgstr "100 мм/с"
+
+msgid "105"
+msgstr "105"
+
+msgid "11"
+msgstr "11"
+
+msgid "11 inches/sec."
+msgstr "11 дюймов/с"
+
+msgid "110"
+msgstr "110"
+
+msgid "115"
+msgstr "115"
+
+msgid "12"
+msgstr "12"
+
+msgid "12 inches/sec."
+msgstr "12 дюймов/с"
+
+msgid "12 x 11"
+msgstr ""
+
+msgid "120"
+msgstr "120"
+
+msgid "120 mm/sec."
+msgstr "120 мм/с"
+
+msgid "120x60dpi"
+msgstr "120x60dpi"
+
+msgid "120x72dpi"
+msgstr "120x72dpi"
+
+msgid "13"
+msgstr "13"
+
+msgid "136dpi"
+msgstr "136dpi"
+
+msgid "14"
+msgstr "14"
+
+msgid "15"
+msgstr "15"
+
+msgid "15 mm/sec."
+msgstr "15 мм/с"
+
+msgid "15 x 11"
+msgstr ""
+
+msgid "150 mm/sec."
+msgstr "150 мм/с"
+
+msgid "150dpi"
+msgstr "150dpi"
+
+msgid "16"
+msgstr "16"
+
+msgid "17"
+msgstr "17"
+
+msgid "18"
+msgstr "18"
+
+msgid "180dpi"
+msgstr "180dpi"
+
+msgid "19"
+msgstr "19"
+
+msgid "2"
+msgstr "2"
+
+msgid "2 inches/sec."
+msgstr "2 дюйма/с"
+
+msgid "2-Sided Printing"
+msgstr "двусторонняя печать"
+
+msgid "2.00x0.37\""
+msgstr "2,00x0,37\""
+
+msgid "2.00x0.50\""
+msgstr "2,00x0,50\""
+
+msgid "2.00x1.00\""
+msgstr "2,00x1,00\""
+
+msgid "2.00x1.25\""
+msgstr "2,00x1,25\""
+
+msgid "2.00x2.00\""
+msgstr "2,00x2,00\""
+
+msgid "2.00x3.00\""
+msgstr "2,00x3,00\""
+
+msgid "2.00x4.00\""
+msgstr "2,00x4,00\""
+
+msgid "2.00x5.50\""
+msgstr "2,00x5,50\""
+
+msgid "2.25x0.50\""
+msgstr "2,25x0,50\""
+
+msgid "2.25x1.25\""
+msgstr "2,25x1,25\""
+
+msgid "2.25x4.00\""
+msgstr "2,25x4,00\""
+
+msgid "2.25x5.50\""
+msgstr "2,25x5,50\""
+
+msgid "2.38x5.50\""
+msgstr "2,38x5,50\""
+
+msgid "2.5 inches/sec."
+msgstr "2,5 дюйма/с"
+
+msgid "2.50x1.00\""
+msgstr "2,50x1,00\""
+
+msgid "2.50x2.00\""
+msgstr "2,50x2,00\""
+
+msgid "2.75x1.25\""
+msgstr "2,75x1,25\""
+
+msgid "2.9 x 1\""
+msgstr "2,9 x 1\""
+
+msgid "20"
+msgstr "20"
+
+msgid "20 mm/sec."
+msgstr "20 мм/с"
+
+msgid "200 mm/sec."
+msgstr "200 мм/с"
+
+msgid "203dpi"
+msgstr "203dpi"
+
+msgid "21"
+msgstr "21"
+
+msgid "22"
+msgstr "22"
+
+msgid "23"
+msgstr "23"
+
+msgid "24"
+msgstr "24"
+
+msgid "24-Pin Series"
+msgstr "Тип 24-Pin"
+
+msgid "240x72dpi"
+msgstr "240x72dpi"
+
+msgid "25"
+msgstr "25"
+
+msgid "250 mm/sec."
+msgstr "250 мм/с"
+
+msgid "26"
+msgstr "26"
+
+msgid "27"
+msgstr "27"
+
+msgid "28"
+msgstr "28"
+
+msgid "29"
+msgstr "29"
+
+msgid "3"
+msgstr "3"
+
+msgid "3 inches/sec."
+msgstr "3 дюйма/с"
+
+msgid "3 x 5"
+msgstr ""
+
+msgid "3.00x1.00\""
+msgstr "3,00x1,00\""
+
+msgid "3.00x1.25\""
+msgstr "3,00x1,25\""
+
+msgid "3.00x2.00\""
+msgstr "3,00x2,00\""
+
+msgid "3.00x3.00\""
+msgstr "3,00x3,00\""
+
+msgid "3.00x5.00\""
+msgstr "3,00x5,00\""
+
+msgid "3.25x2.00\""
+msgstr "3,25x2,00\""
+
+msgid "3.25x5.00\""
+msgstr "3,25x5,00\""
+
+msgid "3.25x5.50\""
+msgstr "3,25x5,50\""
+
+msgid "3.25x5.83\""
+msgstr "3,25x5,83\""
+
+msgid "3.25x7.83\""
+msgstr "3,25x7,83\""
+
+msgid "3.5 x 5"
+msgstr ""
+
+msgid "3.5\" Disk"
+msgstr "Диск 3.5\""
+
+msgid "3.50x1.00\""
+msgstr "3,50x1,00\""
+
+msgid "30"
+msgstr "30"
+
+msgid "30 mm/sec."
+msgstr "30 мм/с"
+
+msgid "300 mm/sec."
+msgstr "300 мм/с"
+
+msgid "300dpi"
+msgstr "300dpi"
+
+msgid "35"
+msgstr "35"
+
+msgid "360dpi"
+msgstr "360dpi"
+
+msgid "360x180dpi"
+msgstr "360x180dpi"
+
+msgid "4"
+msgstr "4"
+
+msgid "4 inches/sec."
+msgstr "4 дюйма/с"
+
+msgid "4.00x1.00\""
+msgstr "4,00x1,00\""
+
+msgid "4.00x13.00\""
+msgstr "4,00x13,00\""
+
+msgid "4.00x2.00\""
+msgstr "4,00x2,00\""
+
+msgid "4.00x2.50\""
+msgstr "4,00x2,50\""
+
+msgid "4.00x3.00\""
+msgstr "4,00x3,00\""
+
+msgid "4.00x4.00\""
+msgstr "4,00x4,00\""
+
+msgid "4.00x5.00\""
+msgstr "4,00x5,00\""
+
+msgid "4.00x6.00\""
+msgstr "4,00x6,00\""
+
+msgid "4.00x6.50\""
+msgstr "4,00x6,50\""
+
+msgid "40"
+msgstr "40"
+
+msgid "40 mm/sec."
+msgstr "40 мм/с"
+
+msgid "45"
+msgstr "45"
+
+msgid "5"
+msgstr "5"
+
+msgid "5 inches/sec."
+msgstr "5 дюймов/с"
+
+msgid "5 x 7"
+msgstr ""
+
+msgid "50"
+msgstr "50"
+
+msgid "55"
+msgstr "55"
+
+msgid "6"
+msgstr "6"
+
+msgid "6 inches/sec."
+msgstr "6 дюймов/с"
+
+msgid "6.00x1.00\""
+msgstr "6,00x1,00\""
+
+msgid "6.00x2.00\""
+msgstr "6,00x2,00\""
+
+msgid "6.00x3.00\""
+msgstr "6,00x3,00\""
+
+msgid "6.00x4.00\""
+msgstr "6,00x4,00\""
+
+msgid "6.00x5.00\""
+msgstr "6,00x5,00\""
+
+msgid "6.00x6.00\""
+msgstr "6,00x6,00\""
+
+msgid "6.00x6.50\""
+msgstr "6,00x6,50\""
+
+msgid "60"
+msgstr "60"
+
+msgid "60 mm/sec."
+msgstr "60 мм/с"
+
+msgid "600dpi"
+msgstr "600dpi"
+
+msgid "60dpi"
+msgstr "60dpi"
+
+msgid "60x72dpi"
+msgstr ""
+
+msgid "65"
+msgstr "65"
+
+msgid "7"
+msgstr "7"
+
+msgid "7 inches/sec."
+msgstr "7 дюймов/с"
+
+msgid "7 x 9"
+msgstr ""
+
+msgid "70"
+msgstr "70"
+
+msgid "720dpi"
+msgstr "720dpi"
+
+msgid "75"
+msgstr "75"
+
+msgid "8"
+msgstr "8"
+
+msgid "8 inches/sec."
+msgstr "8 дюймов/с"
+
+msgid "8 x 10"
+msgstr ""
+
+msgid "8.00x1.00\""
+msgstr "8,00x1,00\""
+
+msgid "8.00x2.00\""
+msgstr "8,00x2,00\""
+
+msgid "8.00x3.00\""
+msgstr "8,00x3,00\""
+
+msgid "8.00x4.00\""
+msgstr "8,00x4,00\""
+
+msgid "8.00x5.00\""
+msgstr "8,00x5,00\""
+
+msgid "8.00x6.00\""
+msgstr "8,00x6,00\""
+
+msgid "8.00x6.50\""
+msgstr "8,00x6,50\""
+
+msgid "80"
+msgstr "80"
+
+msgid "80 mm/sec."
+msgstr "80 мм/с"
+
+msgid "85"
+msgstr "85"
+
+msgid "9"
+msgstr "9"
+
+msgid "9 inches/sec."
+msgstr "9 дюймов/с"
+
+msgid "9 x 11"
+msgstr ""
+
+msgid "9 x 12"
+msgstr ""
+
+msgid "9-Pin Series"
+msgstr "Тип 9-Pin"
+
+msgid "90"
+msgstr "90"
+
+msgid "95"
+msgstr "95"
+
+msgid "?Invalid help command unknown."
+msgstr ""
+
+msgid "A Samba password is required to export printer drivers"
+msgstr "Для экспорта драйверов принтера требуется пароль Samba"
+
+msgid "A Samba username is required to export printer drivers"
+msgstr "Для экспорта драйверов принтера требуется имя пользователя Samba"
+
+#, c-format
+msgid "A class named \"%s\" already exists."
+msgstr ""
+
+#, c-format
+msgid "A printer named \"%s\" already exists."
+msgstr ""
+
+msgid "A0"
+msgstr "A0"
+
+msgid "A0 Long Edge"
+msgstr ""
+
+msgid "A1"
+msgstr "A1"
+
+msgid "A1 Long Edge"
+msgstr ""
+
+msgid "A10"
+msgstr "A10"
+
+msgid "A2"
+msgstr "A2"
+
+msgid "A2 Long Edge"
+msgstr ""
+
+msgid "A3"
+msgstr "A3"
+
+msgid "A3 Long Edge"
+msgstr ""
+
+msgid "A3 Oversize"
+msgstr ""
+
+msgid "A3 Oversize Long Edge"
+msgstr ""
+
+msgid "A4"
+msgstr "A4"
+
+msgid "A4 Long Edge"
+msgstr ""
+
+msgid "A4 Oversize"
+msgstr ""
+
+msgid "A4 Small"
+msgstr ""
+
+msgid "A5"
+msgstr "A5"
+
+msgid "A5 Long Edge"
+msgstr ""
+
+msgid "A5 Oversize"
+msgstr ""
+
+msgid "A6"
+msgstr "A6"
+
+msgid "A6 Long Edge"
+msgstr ""
+
+msgid "A7"
+msgstr "A7"
+
+msgid "A8"
+msgstr "A8"
+
+msgid "A9"
+msgstr "A9"
+
+msgid "ANSI A"
+msgstr "ANSI A"
+
+msgid "ANSI B"
+msgstr "ANSI B"
+
+msgid "ANSI C"
+msgstr "ANSI C"
+
+msgid "ANSI D"
+msgstr "ANSI D"
+
+msgid "ANSI E"
+msgstr "ANSI E"
+
+msgid "ARCH C"
+msgstr "ARCH C"
+
+msgid "ARCH C Long Edge"
+msgstr ""
+
+msgid "ARCH D"
+msgstr "ARCH D"
+
+msgid "ARCH D Long Edge"
+msgstr ""
+
+msgid "ARCH E"
+msgstr "ARCH E"
+
+msgid "ARCH E Long Edge"
+msgstr ""
+
+msgid "Accept Jobs"
+msgstr "Принять задания"
+
+msgid "Accepted"
+msgstr "Принято"
+
+msgid "Add Class"
+msgstr "Добавить класс"
+
+msgid "Add Printer"
+msgstr "Добавить принтер"
+
+msgid "Add RSS Subscription"
+msgstr "Добавить подписку на RSS"
+
+msgid "Address"
+msgstr "Адрес"
+
+msgid "Administration"
+msgstr "Администрация"
+
+msgid "Always"
+msgstr "Всегда"
+
+msgid "AppSocket/HP JetDirect"
+msgstr "AppSocket/HP JetDirect"
+
+msgid "Applicator"
+msgstr "Исполнительное устройство"
+
+#, c-format
+msgid "Attempt to set %s printer-state to bad value %d."
+msgstr ""
+
+#, c-format
+msgid "Attribute groups are out of order (%x < %x)."
+msgstr ""
+
+msgid "B0"
+msgstr "B0"
+
+msgid "B1"
+msgstr "B1"
+
+msgid "B10"
+msgstr "B10"
+
+msgid "B2"
+msgstr "B2"
+
+msgid "B3"
+msgstr "B3"
+
+msgid "B4"
+msgstr "B4"
+
+msgid "B5"
+msgstr "B5"
+
+msgid "B5 Oversize"
+msgstr ""
+
+msgid "B6"
+msgstr "B6"
+
+msgid "B7"
+msgstr "B7"
+
+msgid "B8"
+msgstr "B8"
+
+msgid "B9"
+msgstr "B9"
+
+#, c-format
+msgid "Bad 'document-format' value \"%s\"."
+msgstr ""
+
+msgid "Bad NULL dests pointer"
+msgstr "Неверный указатель NULL dests"
+
+msgid "Bad OpenGroup"
+msgstr "Неверное значение OpenGroup"
+
+msgid "Bad OpenUI/JCLOpenUI"
+msgstr "Неверное значение OpenUI/JCLOpenUI"
+
+msgid "Bad OrderDependency"
+msgstr "Неверное значение OrderDependency"
+
+msgid "Bad PPD cache file."
+msgstr ""
+
+msgid "Bad Request"
+msgstr "Неверный запрос"
+
+msgid "Bad SNMP version number"
+msgstr "Неверный номер версии SNMP"
+
+msgid "Bad UIConstraints"
+msgstr "Неверное значение UIConstraints"
+
+#, c-format
+msgid "Bad copies value %d."
+msgstr "Неверное значение количества копий %d."
+
+msgid "Bad custom parameter"
+msgstr "Неверный индивидуальный параметр"
+
+#, c-format
+msgid "Bad device-uri \"%s\"."
+msgstr ""
+
+#, c-format
+msgid "Bad device-uri scheme \"%s\"."
+msgstr ""
+
+#, c-format
+msgid "Bad document-format \"%s\"."
+msgstr ""
+
+#, c-format
+msgid "Bad document-format-default \"%s\"."
+msgstr ""
+
+msgid "Bad filename buffer"
+msgstr "Ошибка в буфере filename"
+
+#, c-format
+msgid "Bad job-name value: %s"
+msgstr ""
+
+msgid "Bad job-name value: Wrong type or count."
+msgstr ""
+
+msgid "Bad job-priority value."
+msgstr ""
+
+#, c-format
+msgid "Bad job-sheets value \"%s\"."
+msgstr ""
+
+msgid "Bad job-sheets value type."
+msgstr ""
+
+msgid "Bad job-state value."
+msgstr ""
+
+#, c-format
+msgid "Bad job-uri \"%s\"."
+msgstr ""
+
+#, c-format
+msgid "Bad notify-pull-method \"%s\"."
+msgstr ""
+
+#, c-format
+msgid "Bad notify-recipient-uri \"%s\"."
+msgstr ""
+
+#, c-format
+msgid "Bad number-up value %d."
+msgstr "Неверное значение number-up %d."
+
+#, c-format
+msgid "Bad option + choice on line %d."
+msgstr ""
+
+#, c-format
+msgid "Bad page-ranges values %d-%d."
+msgstr "Неверные значения page-ranges %d-%d."
+
+#, c-format
+msgid "Bad port-monitor \"%s\"."
+msgstr ""
+
+msgid "Bad printer URI."
+msgstr ""
+
+#, c-format
+msgid "Bad printer-state value %d."
+msgstr ""
+
+#, c-format
+msgid "Bad request ID %d."
+msgstr ""
+
+#, c-format
+msgid "Bad request version number %d.%d."
+msgstr ""
+
+msgid "Bad subscription ID"
+msgstr "Неверный ID подписки"
+
+msgid "Bad value string"
+msgstr "Неверная строка значений"
+
+msgid "Banners"
+msgstr "Баннеры"
+
+msgid "Bond Paper"
+msgstr "Документная бумага"
+
+#, c-format
+msgid "Boolean expected for waiteof option \"%s\"."
+msgstr ""
+
+msgid "Buffer overflow detected, aborting."
+msgstr ""
+
+msgid "CMYK"
+msgstr "CMYK"
+
+msgid "CPCL Label Printer"
+msgstr "Принтер для печати этикеток CPCL"
+
+msgid "Cancel RSS Subscription"
+msgstr "Отменить подписку на RSS"
+
+msgid "Canceling print job."
+msgstr ""
+
+msgid "Cannot share a remote Kerberized printer."
+msgstr ""
+
+msgid "Cassette"
+msgstr ""
+
+msgid "Change Settings"
+msgstr "Изменить настройки"
+
+#, c-format
+msgid "Character set \"%s\" not supported."
+msgstr ""
+
+msgid "Classes"
+msgstr "Классы"
+
+msgid "Clean Print Heads"
+msgstr "Очистить головки принтера"
+
+msgid "Close-Job doesn't support the job-uri attribute."
+msgstr ""
+
+msgid "Color"
+msgstr "Цвет"
+
+msgid "Color Mode"
+msgstr "Цветной режим"
+
+msgid ""
+"Commands may be abbreviated.  Commands are:\n"
+"\n"
+"exit    help    quit    status  ?"
+msgstr ""
+
+msgid "Community name uses indefinite length"
+msgstr "Для имени сообщества длина не установлена"
+
+msgid "Connected to printer."
+msgstr ""
+
+msgid "Connecting to printer."
+msgstr ""
+
+msgid "Continue"
+msgstr "Продолжить"
+
+msgid "Continuous"
+msgstr "Непрерывно"
+
+msgid "Control file sent successfully."
+msgstr ""
+
+msgid "Copying print data."
+msgstr ""
+
+msgid "Created"
+msgstr "Создано"
+
+msgid "Custom"
+msgstr "Индивидуальный"
+
+msgid "CustominCutInterval"
+msgstr "CustominCutInterval"
+
+msgid "CustominTearInterval"
+msgstr "CustominTearInterval"
+
+msgid "Cut"
+msgstr "Обрезать"
+
+msgid "Cutter"
+msgstr "Резак"
+
+msgid "Dark"
+msgstr "Темный"
+
+msgid "Darkness"
+msgstr "Затемненность"
+
+msgid "Data file sent successfully."
+msgstr ""
+
+msgid "Delete Class"
+msgstr "Удалить класс"
+
+msgid "Delete Printer"
+msgstr "Удалить принтер"
+
+msgid "DeskJet Series"
+msgstr "Серия DeskJet"
+
+#, c-format
+msgid "Destination \"%s\" is not accepting jobs."
+msgstr "Назначение «%s» не принимает задания."
+
+#, c-format
+msgid ""
+"Device: uri = %s\n"
+"        class = %s\n"
+"        info = %s\n"
+"        make-and-model = %s\n"
+"        device-id = %s\n"
+"        location = %s"
+msgstr ""
+
+msgid "Direct Thermal Media"
+msgstr "Носитель для прямой термопечати"
+
+#, c-format
+msgid "Directory \"%s\" contains a relative path."
+msgstr ""
+
+#, c-format
+msgid "Directory \"%s\" has insecure permissions (0%o/uid=%d/gid=%d)."
+msgstr ""
+
+#, c-format
+msgid "Directory \"%s\" is a file."
+msgstr ""
+
+#, c-format
+msgid "Directory \"%s\" not available: %s"
+msgstr ""
+
+#, c-format
+msgid "Directory \"%s\" permissions OK (0%o/uid=%d/gid=%d)."
+msgstr ""
+
+msgid "Disabled"
+msgstr "Отключено"
+
+#, c-format
+msgid "Document #%d does not exist in job #%d."
+msgstr ""
+
+msgid "Duplexer"
+msgstr "Дуплексер"
+
+msgid "Dymo"
+msgstr "Dymo"
+
+msgid "EPL1 Label Printer"
+msgstr "Принтер для печати этикеток EPL1"
+
+msgid "EPL2 Label Printer"
+msgstr "Принтер для печати этикеток EPL2"
+
+msgid "Edit Configuration File"
+msgstr "Редактировать файл конфигурации"
+
+msgid "Empty PPD file."
+msgstr ""
+
+#. TRANSLATORS: Banner/cover sheet after the print job.
+msgid "Ending Banner"
+msgstr "Конечный баннер"
+
+msgid "English"
+msgstr "Russian"
+
+msgid "Enter old password:"
+msgstr "Введите старый пароль:"
+
+msgid "Enter password again:"
+msgstr "Введите пароль снова:"
+
+msgid "Enter password:"
+msgstr "Введите пароль:"
+
+msgid ""
+"Enter your username and password or the root username and password to access "
+"this page. If you are using Kerberos authentication, make sure you have a "
+"valid Kerberos ticket."
+msgstr ""
+"Введите свое имя пользователя и пароль или данные учетной записи root, чтобы "
+"получить доступ к этой странице. Если используется проверка подлинности "
+"Kerberos, необходимо также иметь действительный билет Kerberos."
+
+msgid "Envelope #10 "
+msgstr ""
+
+msgid "Envelope #11"
+msgstr ""
+
+msgid "Envelope #12"
+msgstr ""
+
+msgid "Envelope #14"
+msgstr ""
+
+msgid "Envelope #9"
+msgstr ""
+
+msgid "Envelope B4"
+msgstr ""
+
+msgid "Envelope B5"
+msgstr ""
+
+msgid "Envelope B6"
+msgstr ""
+
+msgid "Envelope C0"
+msgstr ""
+
+msgid "Envelope C1"
+msgstr ""
+
+msgid "Envelope C2"
+msgstr ""
+
+msgid "Envelope C3"
+msgstr ""
+
+msgid "Envelope C4"
+msgstr ""
+
+msgid "Envelope C5"
+msgstr ""
+
+msgid "Envelope C6"
+msgstr ""
+
+msgid "Envelope C65"
+msgstr ""
+
+msgid "Envelope C7"
+msgstr ""
+
+msgid "Envelope Choukei 3"
+msgstr ""
+
+msgid "Envelope Choukei 3 Long Edge"
+msgstr ""
+
+msgid "Envelope Choukei 4"
+msgstr ""
+
+msgid "Envelope Choukei 4 Long Edge"
+msgstr ""
+
+msgid "Envelope DL"
+msgstr ""
+
+msgid "Envelope Feed"
+msgstr "Подача конвертов"
+
+msgid "Envelope Invite"
+msgstr ""
+
+msgid "Envelope Italian"
+msgstr ""
+
+msgid "Envelope Kaku2"
+msgstr ""
+
+msgid "Envelope Kaku2 Long Edge"
+msgstr ""
+
+msgid "Envelope Kaku3"
+msgstr ""
+
+msgid "Envelope Kaku3 Long Edge"
+msgstr ""
+
+msgid "Envelope Monarch"
+msgstr ""
+
+msgid "Envelope PRC1 "
+msgstr ""
+
+msgid "Envelope PRC1 Long Edge"
+msgstr ""
+
+msgid "Envelope PRC10"
+msgstr ""
+
+msgid "Envelope PRC10 Long Edge"
+msgstr ""
+
+msgid "Envelope PRC2"
+msgstr ""
+
+msgid "Envelope PRC2 Long Edge"
+msgstr ""
+
+msgid "Envelope PRC3"
+msgstr ""
+
+msgid "Envelope PRC3 Long Edge"
+msgstr ""
+
+msgid "Envelope PRC4"
+msgstr ""
+
+msgid "Envelope PRC4 Long Edge"
+msgstr ""
+
+msgid "Envelope PRC5 Long Edge"
+msgstr ""
+
+msgid "Envelope PRC5PRC5"
+msgstr ""
+
+msgid "Envelope PRC6"
+msgstr ""
+
+msgid "Envelope PRC6 Long Edge"
+msgstr ""
+
+msgid "Envelope PRC7"
+msgstr ""
+
+msgid "Envelope PRC7 Long Edge"
+msgstr ""
+
+msgid "Envelope PRC8"
+msgstr ""
+
+msgid "Envelope PRC8 Long Edge"
+msgstr ""
+
+msgid "Envelope PRC9"
+msgstr ""
+
+msgid "Envelope PRC9 Long Edge"
+msgstr ""
+
+msgid "Envelope Personal"
+msgstr ""
+
+msgid "Envelope You4"
+msgstr ""
+
+msgid "Envelope You4 Long Edge"
+msgstr ""
+
+msgid "Epson"
+msgstr "Epson"
+
+msgid "Error Policy"
+msgstr "Политика ошибок"
+
+msgid "Error sending raster data."
+msgstr ""
+
+msgid "Error: need hostname after \"-h\" option."
+msgstr ""
+
+msgid "Every 10 Labels"
+msgstr "Каждые 10 этикеток"
+
+msgid "Every 2 Labels"
+msgstr "Каждые 2 этикетки"
+
+msgid "Every 3 Labels"
+msgstr "Каждые 3 этикетки"
+
+msgid "Every 4 Labels"
+msgstr "Каждые 4 этикетки"
+
+msgid "Every 5 Labels"
+msgstr "Каждые 5 этикеток"
+
+msgid "Every 6 Labels"
+msgstr "Каждые 6 этикеток"
+
+msgid "Every 7 Labels"
+msgstr "Каждые 7 этикеток"
+
+msgid "Every 8 Labels"
+msgstr "Каждые 8 этикеток"
+
+msgid "Every 9 Labels"
+msgstr "Каждые 9 этикеток"
+
+msgid "Every Label"
+msgstr "Каждая этикетка"
+
+msgid "Executive"
+msgstr ""
+
+msgid "Expectation Failed"
+msgstr "Сбой ожидания"
+
+msgid "Export Printers to Samba"
+msgstr "Экспортировать принтеры в Samba"
+
+msgid "FAIL"
+msgstr ""
+
+msgid "FanFold German"
+msgstr ""
+
+msgid "FanFold Legal German"
+msgstr ""
+
+msgid "Fanfold US"
+msgstr ""
+
+#, c-format
+msgid "File \"%s\" contains a relative path."
+msgstr ""
+
+#, c-format
+msgid "File \"%s\" has insecure permissions (0%o/uid=%d/gid=%d)."
+msgstr ""
+
+#, c-format
+msgid "File \"%s\" is a directory."
+msgstr ""
+
+#, c-format
+msgid "File \"%s\" not available: %s"
+msgstr ""
+
+#, c-format
+msgid "File \"%s\" permissions OK (0%o/uid=%d/gid=%d)."
+msgstr ""
+
+msgid "File Folder "
+msgstr ""
+
+#, c-format
+msgid ""
+"File device URIs have been disabled. To enable, see the FileDevice directive "
+"in \"%s/cups-files.conf\"."
+msgstr ""
+
+#, c-format
+msgid "Finished page %d."
+msgstr ""
+
+msgid "Folio"
+msgstr "Фолио"
+
+msgid "Forbidden"
+msgstr "Запрещено"
+
+msgid "General"
+msgstr "Основные"
+
+msgid "Generic"
+msgstr "Общее"
+
+msgid "Get-Response-PDU uses indefinite length"
+msgstr "Для Get-Response-PDU длина не установлена"
+
+msgid "Glossy Paper"
+msgstr "Глянцевая бумага"
+
+msgid "Got a printer-uri attribute but no job-id."
+msgstr ""
+
+msgid "Grayscale"
+msgstr "Оттенки серого"
+
+msgid "HP"
+msgstr "HP"
+
+msgid "Hanging Folder"
+msgstr "Папка подвесного хранения"
+
+msgid "Help file not in index."
+msgstr ""
+
+msgid "IPP 1setOf attribute with incompatible value tags."
+msgstr ""
+
+msgid "IPP attribute has no name."
+msgstr ""
+
+msgid "IPP attribute is not a member of the message."
+msgstr ""
+
+msgid "IPP begCollection value not 0 bytes."
+msgstr ""
+
+msgid "IPP boolean value not 1 byte."
+msgstr ""
+
+msgid "IPP date value not 11 bytes."
+msgstr ""
+
+msgid "IPP endCollection value not 0 bytes."
+msgstr ""
+
+msgid "IPP enum value not 4 bytes."
+msgstr ""
+
+msgid "IPP extension tag larger than 0x7FFFFFFF."
+msgstr ""
+
+msgid "IPP integer value not 4 bytes."
+msgstr ""
+
+msgid "IPP language length overflows value."
+msgstr ""
+
+msgid "IPP language length too large."
+msgstr ""
+
+msgid "IPP member name is not empty."
+msgstr ""
+
+msgid "IPP memberName value is empty."
+msgstr ""
+
+msgid "IPP memberName with no attribute."
+msgstr ""
+
+msgid "IPP name larger than 32767 bytes."
+msgstr ""
+
+msgid "IPP nameWithLanguage value less than minimum 4 bytes."
+msgstr ""
+
+msgid "IPP octetString length too large."
+msgstr ""
+
+msgid "IPP rangeOfInteger value not 8 bytes."
+msgstr ""
+
+msgid "IPP resolution value not 9 bytes."
+msgstr ""
+
+msgid "IPP string length overflows value."
+msgstr ""
+
+msgid "IPP textWithLanguage value less than minimum 4 bytes."
+msgstr ""
+
+msgid "IPP value larger than 32767 bytes."
+msgstr ""
+
+msgid "ISOLatin1"
+msgstr "UTF-8"
+
+msgid "Illegal control character"
+msgstr "Недействительный контрольный символ"
+
+msgid "Illegal main keyword string"
+msgstr "Недействительная основная строка ключевых слов"
+
+msgid "Illegal option keyword string"
+msgstr "Недействительная строка ключевых слов параметра"
+
+msgid "Illegal translation string"
+msgstr "Недействительный перевод"
+
+msgid "Illegal whitespace character"
+msgstr "Недействительный символ пробела"
+
+msgid "Installable Options"
+msgstr "Параметры, разрешенные к установке"
+
+msgid "Installed"
+msgstr "Установлено"
+
+msgid "IntelliBar Label Printer"
+msgstr "Принтер для печати этикеток IntelliBar"
+
+msgid "Intellitech"
+msgstr "Intellitech"
+
+msgid "Internal Server Error"
+msgstr "Внутренняя Ошибка сервера"
+
+msgid "Internal error"
+msgstr "Внутренняя ошибка"
+
+msgid "Internet Postage 2-Part"
+msgstr "Наклейки Internet Postage 2-Part"
+
+msgid "Internet Postage 3-Part"
+msgstr "Наклейки Internet Postage 3-Part"
+
+msgid "Internet Printing Protocol"
+msgstr "Протокол интернет-печати"
+
+msgid "Invalid media size."
+msgstr ""
+
+#, c-format
+msgid "Invalid printer command \"%s\"."
+msgstr ""
+
+msgid "JCL"
+msgstr "JCL"
+
+msgid "JIS B0"
+msgstr ""
+
+msgid "JIS B1"
+msgstr ""
+
+msgid "JIS B10"
+msgstr ""
+
+msgid "JIS B2"
+msgstr ""
+
+msgid "JIS B3"
+msgstr ""
+
+msgid "JIS B4"
+msgstr ""
+
+msgid "JIS B4 Long Edge"
+msgstr ""
+
+msgid "JIS B5"
+msgstr ""
+
+msgid "JIS B5 Long Edge"
+msgstr ""
+
+msgid "JIS B6"
+msgstr ""
+
+msgid "JIS B6 Long Edge"
+msgstr ""
+
+msgid "JIS B7"
+msgstr ""
+
+msgid "JIS B8"
+msgstr ""
+
+msgid "JIS B9"
+msgstr ""
+
+#, c-format
+msgid "Job #%d cannot be restarted - no files."
+msgstr ""
+
+#, c-format
+msgid "Job #%d does not exist."
+msgstr ""
+
+#, c-format
+msgid "Job #%d is already aborted - can't cancel."
+msgstr "Задание #%d уже прервано – не удается отменить."
+
+#, c-format
+msgid "Job #%d is already canceled - can't cancel."
+msgstr "Задание #%d уже отменено – не удается отменить."
+
+#, c-format
+msgid "Job #%d is already completed - can't cancel."
+msgstr "Задание #%d уже завершено – не удается отменить."
+
+#, c-format
+msgid "Job #%d is finished and cannot be altered."
+msgstr ""
+
+#, c-format
+msgid "Job #%d is not complete."
+msgstr ""
+
+#, c-format
+msgid "Job #%d is not held for authentication."
+msgstr ""
+
+#, c-format
+msgid "Job #%d is not held."
+msgstr ""
+
+msgid "Job Completed"
+msgstr "Задание завершено"
+
+msgid "Job Created"
+msgstr "Задание создано"
+
+msgid "Job Options Changed"
+msgstr "Параметры задания изменены"
+
+msgid "Job Stopped"
+msgstr "Задание остановлено"
+
+msgid "Job is completed and cannot be changed."
+msgstr "Задание завершено и не может быть изменено."
+
+msgid "Job operation failed"
+msgstr ""
+
+msgid "Job state cannot be changed."
+msgstr "Состояние задания не может быть изменено."
+
+msgid "Job subscriptions cannot be renewed."
+msgstr ""
+
+msgid "Jobs"
+msgstr "Задания"
+
+msgid "LPD/LPR Host or Printer"
+msgstr "Хост или принтер LPD/LPR"
+
+msgid "Label Printer"
+msgstr "Принтер для печати этикеток"
+
+msgid "Label Top"
+msgstr "Верхний край этикетки"
+
+#, c-format
+msgid "Language \"%s\" not supported."
+msgstr ""
+
+msgid "Large Address"
+msgstr "Полный адрес"
+
+msgid "LaserJet Series PCL 4/5"
+msgstr "Серия LaserJet, PCL 4/5"
+
+msgid "Letter Oversize"
+msgstr ""
+
+msgid "Letter Oversize Long Edge"
+msgstr ""
+
+msgid "Light"
+msgstr "Светлый"
+
+msgid "Line longer than the maximum allowed (255 characters)"
+msgstr "Строка длиннее разрешенного предела (255 символов)"
+
+msgid "List Available Printers"
+msgstr "Список доступных принтеров"
+
+msgid "Long-Edge (Portrait)"
+msgstr "По длинной стороне (книжная)"
+
+msgid "Looking for printer."
+msgstr ""
+
+msgid "Manual Feed"
+msgstr "Ручная подача"
+
+msgid "Media Size"
+msgstr "Размер бумаги"
+
+msgid "Media Source"
+msgstr "Источник бумаги"
+
+msgid "Media Tracking"
+msgstr "Контроль подачи бумаги"
+
+msgid "Media Type"
+msgstr "Тип бумаги"
+
+msgid "Medium"
+msgstr "Средний"
+
+msgid "Memory allocation error"
+msgstr "Ошибка распределения памяти"
+
+msgid "Missing CloseGroup"
+msgstr ""
+
+msgid "Missing PPD-Adobe-4.x header"
+msgstr "Отсутствует заголовок PPD-Adobe-4.x"
+
+msgid "Missing asterisk in column 1"
+msgstr "Отсутствует звездочка в колонке 1"
+
+msgid "Missing document-number attribute."
+msgstr ""
+
+#, c-format
+msgid "Missing double quote on line %d."
+msgstr ""
+
+msgid "Missing form variable"
+msgstr "Отсутствует переменная формы"
+
+msgid "Missing last-document attribute in request."
+msgstr ""
+
+msgid "Missing media or media-col."
+msgstr ""
+
+msgid "Missing media-size in media-col."
+msgstr ""
+
+msgid "Missing notify-subscription-ids attribute."
+msgstr ""
+
+msgid "Missing option keyword"
+msgstr "Отсутствует ключевое слово параметра"
+
+msgid "Missing requesting-user-name attribute."
+msgstr ""
+
+msgid "Missing required attributes."
+msgstr ""
+
+#, c-format
+msgid "Missing value on line %d."
+msgstr ""
+
+msgid "Missing value string"
+msgstr "Отсутствует строка значения"
+
+msgid "Missing x-dimension in media-size."
+msgstr ""
+
+msgid "Missing y-dimension in media-size."
+msgstr ""
+
+#, c-format
+msgid ""
+"Model:  name = %s\n"
+"        natural_language = %s\n"
+"        make-and-model = %s\n"
+"        device-id = %s"
+msgstr ""
+
+msgid "Modify Class"
+msgstr "Изменить класс"
+
+msgid "Modify Printer"
+msgstr "Изменить принтер"
+
+msgid "Move All Jobs"
+msgstr "Переместить все задания"
+
+msgid "Move Job"
+msgstr "Переместить задание"
+
+msgid "Moved Permanently"
+msgstr "Перемещено окончательно"
+
+msgid "NULL PPD file pointer"
+msgstr "Указатель PPD-файла установлен на NULL"
+
+msgid "Name OID uses indefinite length"
+msgstr "Для имени OID длина не установлена"
+
+msgid "Nested classes are not allowed."
+msgstr ""
+
+msgid "Never"
+msgstr "Никогда"
+
+msgid "New Stylus Color Series"
+msgstr "Серия Stylus Color нового поколения"
+
+msgid "New Stylus Photo Series"
+msgstr "Серия Stylus Photo нового поколения"
+
+msgid "No"
+msgstr "Нет"
+
+msgid "No Content"
+msgstr "Нет контента"
+
+msgid "No PPD name"
+msgstr "Нет имени PPD"
+
+msgid "No VarBind SEQUENCE"
+msgstr "Нет последовательности VarBind"
+
+msgid "No Windows printer drivers are installed."
+msgstr ""
+
+msgid "No active connection"
+msgstr "Нет рабочего подключения"
+
+#, c-format
+msgid "No active jobs on %s."
+msgstr ""
+
+msgid "No attributes in request."
+msgstr ""
+
+msgid "No authentication information provided."
+msgstr ""
+
+msgid "No community name"
+msgstr "Нет имени сообщества"
+
+msgid "No default printer."
+msgstr ""
+
+msgid "No destinations added."
+msgstr "Нет добавленных назначений."
+
+msgid "No device URI found in argv[0] or in DEVICE_URI environment variable."
+msgstr ""
+
+msgid "No error-index"
+msgstr "Нет значения error-index"
+
+msgid "No error-status"
+msgstr "Нет значения error-status"
+
+msgid "No file in print request."
+msgstr ""
+
+msgid "No modification time"
+msgstr "Не указано время изменения"
+
+msgid "No name OID"
+msgstr "Нет имени OID"
+
+msgid "No pages were found."
+msgstr ""
+
+msgid "No printer name"
+msgstr "Нет имени принтера"
+
+msgid "No printer-uri found"
+msgstr "Не указан адрес printer-uri"
+
+msgid "No printer-uri found for class"
+msgstr "Не указан адрес printer-uri для класса"
+
+msgid "No printer-uri in request."
+msgstr ""
+
+msgid "No request-id"
+msgstr "Нет идентификатора request-id"
+
+msgid "No subscription attributes in request."
+msgstr ""
+
+msgid "No subscriptions found."
+msgstr "Подписки не найдены."
+
+msgid "No variable-bindings SEQUENCE"
+msgstr "Нет последовательности variable-bindings"
+
+msgid "No version number"
+msgstr "Нет номера версии"
+
+msgid "Non-continuous (Mark sensing)"
+msgstr "С прерыванием (опознавание маркеров)"
+
+msgid "Non-continuous (Web sensing)"
+msgstr "С прерыванием (опознавание сети)"
+
+msgid "Normal"
+msgstr "Нормальный"
+
+msgid "Not Found"
+msgstr "Не найдено"
+
+msgid "Not Implemented"
+msgstr "Не реализовано"
+
+msgid "Not Installed"
+msgstr "Не установлено"
+
+msgid "Not Modified"
+msgstr "Не изменено"
+
+msgid "Not Supported"
+msgstr "Не поддерживается"
+
+msgid "Not allowed to print."
+msgstr "Не разрешено печатать."
+
+msgid "Note"
+msgstr "Примечание"
+
+msgid ""
+"Note: this program only validates the DSC comments, not the PostScript "
+"itself."
+msgstr ""
+
+msgid "OK"
+msgstr "ОК"
+
+msgid "Off (1-Sided)"
+msgstr "Выкл. (односторонняя печать)"
+
+msgid "Oki"
+msgstr "Oki"
+
+msgid "Online Help"
+msgstr "Интерактивная справка"
+
+#, c-format
+msgid "Open of %s failed: %s"
+msgstr "Не удалось открыть %s: %s"
+
+msgid "OpenGroup without a CloseGroup first"
+msgstr "OpenGroup без предыдущего CloseGroup"
+
+msgid "OpenUI/JCLOpenUI without a CloseUI/JCLCloseUI first"
+msgstr "OpenUI/JCLOpenUI без предыдущего CloseUI/JCLCloseUI"
+
+msgid "Operation Policy"
+msgstr "Политика операций"
+
+#, c-format
+msgid "Option \"%s\" cannot be included via %%%%IncludeFeature."
+msgstr ""
+
+msgid "Options Installed"
+msgstr "Параметры установлены"
+
+msgid "Options:"
+msgstr ""
+
+msgid "Out of date PPD cache file."
+msgstr ""
+
+msgid "Out of memory."
+msgstr ""
+
+msgid "Output Mode"
+msgstr "Режим вывода"
+
+#, c-format
+msgid "Output for printer %s is sent to %s"
+msgstr ""
+
+#, c-format
+msgid "Output for printer %s is sent to remote printer %s on %s"
+msgstr ""
+
+#, c-format
+msgid "Output for printer %s/%s is sent to %s"
+msgstr ""
+
+#, c-format
+msgid "Output for printer %s/%s is sent to remote printer %s on %s"
+msgstr ""
+
+msgid "PASS"
+msgstr ""
+
+msgid "PCL Laser Printer"
+msgstr "Лазерный принтер PCL"
+
+msgid "PRC16K"
+msgstr "PRC16K"
+
+msgid "PRC16K Long Edge"
+msgstr ""
+
+msgid "PRC32K"
+msgstr "PRC32K"
+
+msgid "PRC32K Long Edge"
+msgstr ""
+
+msgid "PRC32K Oversize"
+msgstr ""
+
+msgid "PRC32K Oversize Long Edge"
+msgstr ""
+
+msgid "Packet does not contain a Get-Response-PDU"
+msgstr "В пакете нет Get-Response-PDU"
+
+msgid "Packet does not start with SEQUENCE"
+msgstr "Нет индикатора SEQUENCE в начале пакета"
+
+msgid "ParamCustominCutInterval"
+msgstr "ParamCustominCutInterval"
+
+msgid "ParamCustominTearInterval"
+msgstr "ParamCustominTearInterval"
+
+#, c-format
+msgid "Password for %s on %s? "
+msgstr "Пароль для %s на %s? "
+
+#, c-format
+msgid "Password for %s required to access %s via SAMBA: "
+msgstr "Для доступа к %s через SAMBA требуется пароль для %s: "
+
+msgid "Pause Class"
+msgstr "Приостановить класс"
+
+msgid "Pause Printer"
+msgstr "Приостановить принтер"
+
+msgid "Peel-Off"
+msgstr "Съемный слой"
+
+msgid "Photo"
+msgstr "Фото"
+
+msgid "Photo Labels"
+msgstr "Фотоэтикетки"
+
+msgid "Plain Paper"
+msgstr "Обычная бумага"
+
+msgid "Policies"
+msgstr "Политики"
+
+msgid "Port Monitor"
+msgstr "Мониторинг порта"
+
+msgid "PostScript Printer"
+msgstr "Принтер PostScript"
+
+msgid "Postcard"
+msgstr "Открытка"
+
+msgid "Postcard Double "
+msgstr ""
+
+msgid "Postcard Double Long Edge"
+msgstr ""
+
+msgid "Postcard Long Edge"
+msgstr ""
+
+msgid "Preparing to print."
+msgstr ""
+
+msgid "Print Density"
+msgstr "Плотность печати"
+
+msgid "Print Job:"
+msgstr "Задание печати:"
+
+msgid "Print Mode"
+msgstr "Режим печати"
+
+msgid "Print Rate"
+msgstr "Скорость печати"
+
+msgid "Print Self-Test Page"
+msgstr "Напечатать пробную страницу"
+
+msgid "Print Speed"
+msgstr "Скорость печати"
+
+msgid "Print Test Page"
+msgstr "Напечатать пробную страницу"
+
+msgid "Print and Cut"
+msgstr "Напечатать и обрезать"
+
+msgid "Print and Tear"
+msgstr "Напечатать и оборвать"
+
+msgid "Print file sent."
+msgstr ""
+
+msgid "Print job canceled at printer."
+msgstr ""
+
+msgid "Print job too large."
+msgstr ""
+
+msgid "Print job was not accepted."
+msgstr ""
+
+msgid "Printer Added"
+msgstr "Принтер добавлен"
+
+msgid "Printer Default"
+msgstr "Принтер выбран по умолчанию"
+
+msgid "Printer Deleted"
+msgstr "Принтер удален"
+
+msgid "Printer Modified"
+msgstr "Принтер изменен"
+
+msgid "Printer Paused"
+msgstr "Принтер приостановлен"
+
+msgid "Printer Settings"
+msgstr "Параметры принтера"
+
+msgid "Printer cannot print supplied content."
+msgstr ""
+
+msgid "Printer:"
+msgstr "Принтер:"
+
+msgid "Printers"
+msgstr "Принтеры"
+
+#, c-format
+msgid "Printing page %d, %d%% complete."
+msgstr ""
+
+msgid "Purge Jobs"
+msgstr "Удалить задания"
+
+msgid "Quarto"
+msgstr "Кватро"
+
+msgid "Quota limit reached."
+msgstr "Предел квоты достигнут."
+
+msgid "Rank    Owner   Job     File(s)                         Total Size"
+msgstr ""
+
+#. TRANSLATORS: Pri is job priority.
+msgid ""
+"Rank   Owner      Pri  Job        Files                       Total Size"
+msgstr ""
+
+msgid "Reject Jobs"
+msgstr "Отклонить задания"
+
+#, c-format
+msgid "Remote host did not accept control file (%d)."
+msgstr ""
+
+#, c-format
+msgid "Remote host did not accept data file (%d)."
+msgstr ""
+
+msgid "Reprint After Error"
+msgstr "Повторить печать после ошибки"
+
+msgid "Request Entity Too Large"
+msgstr "Слишком большое содержимое запроса"
+
+msgid "Resolution"
+msgstr "Разрешение"
+
+msgid "Resume Class"
+msgstr "Возобновить работу класса"
+
+msgid "Resume Printer"
+msgstr "Возобновить работу принтера"
+
+msgid "Return Address"
+msgstr "Обратный адрес"
+
+msgid "Rewind"
+msgstr "Вернуться в начало"
+
+#, c-format
+msgid "Running command: %s %s -N -A %s -c '%s'"
+msgstr ""
+
+msgid "SEQUENCE uses indefinite length"
+msgstr "Для SEQUENCE длина не установлена"
+
+msgid "SSL/TLS Negotiation Error"
+msgstr ""
+
+msgid "See Other"
+msgstr "Посмотреть другие"
+
+msgid "Sending data to printer."
+msgstr ""
+
+msgid "Server Restarted"
+msgstr "Сервер перезагружен"
+
+msgid "Server Security Auditing"
+msgstr "Проверка безопасности сервера"
+
+msgid "Server Started"
+msgstr "Сервер загружен"
+
+msgid "Server Stopped"
+msgstr "Сервер остановлен"
+
+msgid "Service Unavailable"
+msgstr "Служба недоступна"
+
+msgid "Set Allowed Users"
+msgstr "Указать допущенных пользователей"
+
+msgid "Set As Server Default"
+msgstr "Использовать данный сервер по умолчанию"
+
+msgid "Set Class Options"
+msgstr "Настроить параметры класса"
+
+msgid "Set Printer Options"
+msgstr "Настроить параметры принтера"
+
+msgid "Set Publishing"
+msgstr "Настроить публикацию"
+
+msgid "Shipping Address"
+msgstr "Адрес доставки"
+
+msgid "Short-Edge (Landscape)"
+msgstr "По короткой стороне (альбомная)"
+
+msgid "Special Paper"
+msgstr "Особая бумага"
+
+#, c-format
+msgid "Spooling job, %.0f%% complete."
+msgstr ""
+
+msgid "Standard"
+msgstr "Стандартный"
+
+#. TRANSLATORS: Banner/cover sheet before the print job.
+msgid "Starting Banner"
+msgstr "Запуск баннера"
+
+#, c-format
+msgid "Starting page %d."
+msgstr ""
+
+msgid "Statement"
+msgstr "Оператор"
+
+msgid "Stylus Color Series"
+msgstr "Серия Stylus Color"
+
+msgid "Stylus Photo Series"
+msgstr "Серия Stylus Photo"
+
+#, c-format
+msgid "Subscription #%d does not exist."
+msgstr ""
+
+msgid "Super A"
+msgstr "Super A"
+
+msgid "Super B"
+msgstr "Super B"
+
+msgid "Super B/A3"
+msgstr "Super B/A3"
+
+msgid "Switching Protocols"
+msgstr "Протоколы переключения"
+
+msgid "Tabloid"
+msgstr "Tabloid"
+
+msgid "Tabloid Oversize"
+msgstr ""
+
+msgid "Tabloid Oversize Long Edge"
+msgstr ""
+
+msgid "Tear"
+msgstr "Оборвать"
+
+msgid "Tear-Off"
+msgstr "Место отрыва"
+
+msgid "Tear-Off Adjust Position"
+msgstr "Откорректировать положение места отрыва"
+
+#, c-format
+msgid "The \"%s\" attribute is required for print jobs."
+msgstr ""
+
+#, c-format
+msgid "The %s attribute cannot be provided with job-ids."
+msgstr ""
+
+#, c-format
+msgid ""
+"The '%s' Job Description attribute cannot be supplied in a job creation "
+"request."
+msgstr ""
+
+#, c-format
+msgid ""
+"The '%s' operation attribute cannot be supplied in a Create-Job request."
+msgstr ""
+
+#, c-format
+msgid "The PPD file \"%s\" could not be found."
+msgstr "Не удается найти PPD-файл «%s»."
+
+#, c-format
+msgid "The PPD file \"%s\" could not be opened: %s"
+msgstr "Не удалось открыть PPD-файл «%s»: %s"
+
+msgid "The PPD file could not be opened."
+msgstr ""
+
+msgid ""
+"The class name may only contain up to 127 printable characters and may not "
+"contain spaces, slashes (/), or the pound sign (#)."
+msgstr ""
+"Имя класса может содержать максимально 127 печатных символов и не может "
+"содержать пробелы, дроби (/) или знак «решетки» (#)."
+
+msgid "The developer unit needs to be replaced."
+msgstr "Блок разработки должен быть перемещен"
+
+msgid "The developer unit will need to be replaced soon."
+msgstr "Необходимо переместить блок разработки"
+
+msgid "The fuser's temperature is high."
+msgstr "Высокая температура термофиксатора!"
+
+msgid "The fuser's temperature is low."
+msgstr "Низкая температура термофиксатора!"
+
+msgid ""
+"The notify-lease-duration attribute cannot be used with job subscriptions."
+msgstr ""
+"Атрибут notify-lease-duration не может использоваться с подписками на "
+"задание."
+
+#, c-format
+msgid "The notify-user-data value is too large (%d > 63 octets)."
+msgstr ""
+
+msgid "The optical photoconductor needs to be replaced."
+msgstr "Оптический фоторегистратор должен быть перемещен."
+
+msgid "The optical photoconductor will need to be replaced soon."
+msgstr "Необходимо переместить оптический фоторегистратор."
+
+msgid "The output bin is almost full."
+msgstr "Лоток вывода почти заполнен."
+
+msgid "The output bin is full."
+msgstr "Лоток вывода заполнен."
+
+msgid "The output bin is missing."
+msgstr "Отсутствует лоток вывода."
+
+msgid "The paper tray is almost empty."
+msgstr "Лоток с бумагой почти пуст."
+
+msgid "The paper tray is empty."
+msgstr "Лоток с бумагой пуст."
+
+msgid "The paper tray is missing."
+msgstr "Лоток с бумагой отсутствует."
+
+msgid "The paper tray needs to be filled."
+msgstr "Необходимо наполнить лоток с бумагой."
+
+msgid "The printer configuration is incorrect or the printer no longer exists."
+msgstr ""
+
+msgid "The printer did not respond."
+msgstr ""
+
+msgid "The printer is in use."
+msgstr ""
+
+msgid "The printer is not connected."
+msgstr ""
+
+msgid "The printer is not responding."
+msgstr ""
+
+msgid "The printer is now connected."
+msgstr ""
+
+msgid "The printer is now online."
+msgstr ""
+
+msgid "The printer is offline."
+msgstr "Принтер выключен."
+
+msgid "The printer is running low on ink."
+msgstr ""
+
+msgid "The printer is running low on toner."
+msgstr ""
+
+msgid "The printer is unreachable at this time."
+msgstr ""
+
+msgid "The printer may be out of ink."
+msgstr ""
+
+msgid "The printer may be out of toner."
+msgstr ""
+
+msgid "The printer may not exist or is unavailable at this time."
+msgstr ""
+
+msgid ""
+"The printer name may only contain up to 127 printable characters and may not "
+"contain spaces, slashes (/), or the pound sign (#)."
+msgstr ""
+"Имя принтера может содержать максимально 127 печатных символов и не может "
+"содержать пробелы, дроби (/) или знак «решетки» (#)."
+
+msgid "The printer or class does not exist."
+msgstr ""
+
+msgid "The printer or class is not shared."
+msgstr ""
+
+msgid "The printer's cover is open."
+msgstr "Крышка принтера открыта."
+
+msgid "The printer's door is open."
+msgstr "Дверца принтера открыта."
+
+msgid "The printer's interlock is open."
+msgstr "Открыт замок."
+
+msgid "The printer's waste bin is almost full."
+msgstr "Отсек для мусора почти заполнен."
+
+msgid "The printer's waste bin is full."
+msgstr "Отсек для мусора заполнен."
+
+#, c-format
+msgid "The printer-uri \"%s\" contains invalid characters."
+msgstr "printer-uri «%s» содержит недопустимые символы."
+
+msgid "The printer-uri attribute is required."
+msgstr ""
+
+msgid ""
+"The printer-uri must be of the form \"ipp://HOSTNAME/classes/CLASSNAME\"."
+msgstr "printer-uri должен иметь форму «ipp://HOSTNAME/classes/CLASSNAME»."
+
+msgid ""
+"The printer-uri must be of the form \"ipp://HOSTNAME/printers/PRINTERNAME\"."
+msgstr "printer-uri должен иметь форму «ipp://HOSTNAME/printers/PRINTERNAME»."
+
+msgid ""
+"The subscription name may not contain spaces, slashes (/), question marks "
+"(?), or the pound sign (#)."
+msgstr ""
+"Имя подписки не может содержать пробелы, дроби (/), вопросительные знаки (?) "
+"или знак «решетки» (#)."
+
+msgid ""
+"The web interface is currently disabled. Run \"cupsctl WebInterface=yes\" to "
+"enable it."
+msgstr ""
+
+#, c-format
+msgid "The which-jobs value \"%s\" is not supported."
+msgstr ""
+
+msgid "There are too many subscriptions."
+msgstr "Слишком много подписок."
+
+msgid "There is a paper jam."
+msgstr "Зажевало бумагу."
+
+msgid "There was an unrecoverable USB error."
+msgstr ""
+
+msgid "Thermal Transfer Media"
+msgstr "Носитель для печати методом термопереноса"
+
+msgid "Too many active jobs."
+msgstr "Слишком много активных заданий."
+
+#, c-format
+msgid "Too many job-sheets values (%d > 2)."
+msgstr ""
+
+#, c-format
+msgid "Too many printer-state-reasons values (%d > %d)."
+msgstr ""
+
+msgid "Transparency"
+msgstr "Прозрачность"
+
+msgid "Tray"
+msgstr "Лоток"
+
+msgid "Tray 1"
+msgstr "Лоток 1"
+
+msgid "Tray 2"
+msgstr "Лоток 2"
+
+msgid "Tray 3"
+msgstr "Лоток 3"
+
+msgid "Tray 4"
+msgstr "Лоток 4"
+
+msgid "URI Too Long"
+msgstr "Слишком длинный адрес URI"
+
+msgid "US Ledger"
+msgstr "US Ledger"
+
+msgid "US Legal"
+msgstr "US Legal"
+
+msgid "US Legal Oversize"
+msgstr ""
+
+msgid "US Letter"
+msgstr "US Letter"
+
+msgid "US Letter Long Edge"
+msgstr ""
+
+msgid "US Letter Oversize"
+msgstr ""
+
+msgid "US Letter Oversize Long Edge"
+msgstr ""
+
+msgid "US Letter Small"
+msgstr ""
+
+msgid "Unable to access cupsd.conf file"
+msgstr ""
+
+msgid "Unable to access help file."
+msgstr ""
+
+msgid "Unable to add RSS subscription"
+msgstr ""
+
+msgid "Unable to add class"
+msgstr ""
+
+msgid "Unable to add document to print job."
+msgstr ""
+
+#, c-format
+msgid "Unable to add job for destination \"%s\"."
+msgstr ""
+
+msgid "Unable to add printer"
+msgstr ""
+
+msgid "Unable to allocate memory for file types."
+msgstr ""
+
+msgid "Unable to allocate memory for page info"
+msgstr ""
+
+msgid "Unable to allocate memory for pages array"
+msgstr ""
+
+msgid "Unable to cancel RSS subscription"
+msgstr ""
+
+msgid "Unable to cancel print job."
+msgstr ""
+
+msgid "Unable to change printer"
+msgstr ""
+
+msgid "Unable to change printer-is-shared attribute"
+msgstr ""
+
+msgid "Unable to change server settings"
+msgstr ""
+
+#, c-format
+msgid "Unable to compile mimeMediaType regular expression: %s."
+msgstr ""
+
+#, c-format
+msgid "Unable to compile naturalLanguage regular expression: %s."
+msgstr ""
+
+msgid "Unable to configure printer options."
+msgstr ""
+
+msgid "Unable to connect to host."
+msgstr "Не удается подключиться к хосту."
+
+msgid "Unable to contact printer, queuing on next printer in class."
+msgstr ""
+
+#, c-format
+msgid "Unable to copy 64-bit CUPS printer driver files (%d)."
+msgstr ""
+
+#, c-format
+msgid "Unable to copy 64-bit Windows printer driver files (%d)."
+msgstr ""
+
+#, c-format
+msgid "Unable to copy CUPS printer driver files (%d)."
+msgstr ""
+
+#, c-format
+msgid "Unable to copy PPD file - %s"
+msgstr "Не удается копировать PPD-файл - %s"
+
+msgid "Unable to copy PPD file."
+msgstr ""
+
+#, c-format
+msgid "Unable to copy Windows 2000 printer driver files (%d)."
+msgstr ""
+
+#, c-format
+msgid "Unable to copy Windows 9x printer driver files (%d)."
+msgstr ""
+
+#, c-format
+msgid "Unable to copy interface script - %s"
+msgstr "Не удается копировать скрипт интерфейса - %s"
+
+msgid "Unable to create printer-uri"
+msgstr "Не удается создать printer-uri"
+
+msgid "Unable to create temporary file"
+msgstr ""
+
+msgid "Unable to delete class"
+msgstr ""
+
+msgid "Unable to delete printer"
+msgstr ""
+
+msgid "Unable to do maintenance command"
+msgstr ""
+
+msgid "Unable to edit cupsd.conf files larger than 1MB"
+msgstr "Невозможно редактировать файлы cupsd.conf больше 1 МБ"
+
+msgid ""
+"Unable to establish a secure connection to host (certificate chain invalid)."
+msgstr ""
+
+msgid ""
+"Unable to establish a secure connection to host (certificate not yet valid)."
+msgstr ""
+
+msgid "Unable to establish a secure connection to host (expired certificate)."
+msgstr ""
+
+msgid "Unable to establish a secure connection to host (host name mismatch)."
+msgstr ""
+
+msgid ""
+"Unable to establish a secure connection to host (peer dropped connection "
+"before responding)."
+msgstr ""
+
+msgid ""
+"Unable to establish a secure connection to host (self-signed certificate)."
+msgstr ""
+
+msgid ""
+"Unable to establish a secure connection to host (untrusted certificate)."
+msgstr ""
+
+msgid "Unable to establish a secure connection to host."
+msgstr ""
+
+msgid "Unable to find destination for job"
+msgstr "Не удается найти назначение для задания"
+
+msgid "Unable to find printer."
+msgstr ""
+
+msgid "Unable to get backend exit status."
+msgstr ""
+
+msgid "Unable to get class list"
+msgstr ""
+
+msgid "Unable to get class status"
+msgstr ""
+
+msgid "Unable to get list of printer drivers"
+msgstr ""
+
+msgid "Unable to get printer attributes"
+msgstr ""
+
+msgid "Unable to get printer list"
+msgstr ""
+
+msgid "Unable to get printer status"
+msgstr ""
+
+msgid "Unable to get printer status."
+msgstr ""
+
+#, c-format
+msgid "Unable to install Windows 2000 printer driver files (%d)."
+msgstr ""
+
+#, c-format
+msgid "Unable to install Windows 9x printer driver files (%d)."
+msgstr ""
+
+msgid "Unable to load help index."
+msgstr ""
+
+#, c-format
+msgid "Unable to locate printer \"%s\"."
+msgstr ""
+
+msgid "Unable to locate printer."
+msgstr ""
+
+msgid "Unable to modify class"
+msgstr ""
+
+msgid "Unable to modify printer"
+msgstr ""
+
+msgid "Unable to move job"
+msgstr "Не удается переместить задание"
+
+msgid "Unable to move jobs"
+msgstr "Не удается переместить задания"
+
+msgid "Unable to open PPD file"
+msgstr "Не удается открыть PPD-файл"
+
+msgid "Unable to open cupsd.conf file:"
+msgstr "Не удается открыть файл «cupsd.conf»:"
+
+msgid "Unable to open device file"
+msgstr ""
+
+#, c-format
+msgid "Unable to open document #%d in job #%d."
+msgstr ""
+
+msgid "Unable to open help file."
+msgstr ""
+
+msgid "Unable to open print file"
+msgstr ""
+
+msgid "Unable to open raster file"
+msgstr ""
+
+msgid "Unable to print test page"
+msgstr ""
+
+msgid "Unable to read print data."
+msgstr ""
+
+msgid "Unable to resolve printer URI."
+msgstr ""
+
+#, c-format
+msgid "Unable to run \"%s\": %s"
+msgstr ""
+
+msgid "Unable to see in file"
+msgstr ""
+
+msgid "Unable to send command to printer driver"
+msgstr "Не удается отправить команду драйверу принтера"
+
+msgid "Unable to send data to printer."
+msgstr ""
+
+#, c-format
+msgid "Unable to set Windows printer driver (%d)."
+msgstr ""
+
+msgid "Unable to set options"
+msgstr ""
+
+msgid "Unable to set server default"
+msgstr ""
+
+msgid "Unable to start backend process."
+msgstr ""
+
+msgid "Unable to upload cupsd.conf file"
+msgstr ""
+
+msgid "Unable to use legacy USB class driver."
+msgstr ""
+
+msgid "Unable to write print data"
+msgstr ""
+
+#, c-format
+msgid "Unable to write uncompressed print data: %s"
+msgstr ""
+
+msgid "Unauthorized"
+msgstr "Не санкционировано"
+
+msgid "Units"
+msgstr "Единицы"
+
+msgid "Unknown"
+msgstr "Неизвестный"
+
+#, c-format
+msgid "Unknown choice \"%s\" for option \"%s\"."
+msgstr ""
+
+#, c-format
+msgid "Unknown encryption option value: \"%s\"."
+msgstr ""
+
+#, c-format
+msgid "Unknown file order: \"%s\"."
+msgstr ""
+
+#, c-format
+msgid "Unknown format character: \"%c\"."
+msgstr ""
+
+msgid "Unknown media size name."
+msgstr ""
+
+#, c-format
+msgid "Unknown option \"%s\" with value \"%s\"."
+msgstr ""
+
+#, c-format
+msgid "Unknown option \"%s\"."
+msgstr ""
+
+#, c-format
+msgid "Unknown print mode: \"%s\"."
+msgstr ""
+
+#, c-format
+msgid "Unknown printer-error-policy \"%s\"."
+msgstr "Неизвестная политика printer-error-policy «%s»."
+
+#, c-format
+msgid "Unknown printer-op-policy \"%s\"."
+msgstr "Неизвестная политика printer-op-policy «%s»."
+
+msgid "Unknown service name."
+msgstr ""
+
+#, c-format
+msgid "Unknown version option value: \"%s\"."
+msgstr ""
+
+#, c-format
+msgid "Unsupported 'compression' value \"%s\"."
+msgstr ""
+
+#, c-format
+msgid "Unsupported 'document-format' value \"%s\"."
+msgstr ""
+
+msgid "Unsupported 'job-name' value."
+msgstr ""
+
+#, c-format
+msgid "Unsupported character set \"%s\"."
+msgstr ""
+
+#, c-format
+msgid "Unsupported compression \"%s\"."
+msgstr ""
+
+#, c-format
+msgid "Unsupported document-format \"%s\"."
+msgstr ""
+
+#, c-format
+msgid "Unsupported document-format \"%s/%s\"."
+msgstr ""
+
+#, c-format
+msgid "Unsupported format \"%s\"."
+msgstr ""
+
+msgid "Unsupported margins."
+msgstr ""
+
+msgid "Unsupported media value."
+msgstr ""
+
+#, c-format
+msgid "Unsupported number-up value %d, using number-up=1."
+msgstr ""
+
+#, c-format
+msgid "Unsupported number-up-layout value %s, using number-up-layout=lrtb."
+msgstr ""
+
+#, c-format
+msgid "Unsupported page-border value %s, using page-border=none."
+msgstr ""
+
+msgid "Unsupported raster data."
+msgstr ""
+
+msgid "Unsupported value type"
+msgstr "Неподдерживаемый тип значения"
+
+msgid "Upgrade Required"
+msgstr "Требуется обновление"
+
+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]"
+msgstr ""
+
+#, c-format
+msgid "Usage: %s job-id user title copies options [file]"
+msgstr ""
+
+msgid "Usage: cupsaddsmb [options] printer1 ... printerN"
+msgstr ""
+
+msgid "Usage: cupsctl [options] [param=value ... paramN=valueN]"
+msgstr ""
+
+msgid "Usage: cupsd [options]"
+msgstr ""
+
+msgid "Usage: cupsfilter [ options ] filename"
+msgstr ""
+
+msgid "Usage: cupstestdsc [options] filename.ps [... filename.ps]"
+msgstr ""
+
+msgid ""
+"Usage: cupstestppd [options] filename1.ppd[.gz] [... filenameN.ppd[.gz]]"
+msgstr ""
+
+msgid "Usage: ipptool [options] URI filename [ ... filenameN ]"
+msgstr ""
+
+msgid "Usage: lpmove job/src dest"
+msgstr ""
+
+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"
+msgstr ""
+
+msgid "Usage: lppasswd [-g groupname]"
+msgstr ""
+
+msgid ""
+"Usage: lppasswd [-g groupname] [username]\n"
+"       lppasswd [-g groupname] -a [username]\n"
+"       lppasswd [-g groupname] -x [username]"
+msgstr ""
+
+msgid ""
+"Usage: lpq [-P dest] [-U username] [-h hostname[:port]] [-l] [+interval]"
+msgstr ""
+
+msgid "Usage: ppdc [options] filename.drv [ ... filenameN.drv ]"
+msgstr ""
+
+msgid "Usage: ppdhtml [options] filename.drv >filename.html"
+msgstr ""
+
+msgid "Usage: ppdi [options] filename.ppd [ ... filenameN.ppd ]"
+msgstr ""
+
+msgid "Usage: ppdmerge [options] filename.ppd [ ... filenameN.ppd ]"
+msgstr ""
+
+msgid ""
+"Usage: ppdpo [options] -o filename.po filename.drv [ ... filenameN.drv ]"
+msgstr ""
+
+msgid "Usage: snmp [host-or-ip-address]"
+msgstr ""
+
+msgid "Value uses indefinite length"
+msgstr "Для значения длина не установлена"
+
+msgid "VarBind uses indefinite length"
+msgstr "Для VarBind длина не установлена"
+
+msgid "Version uses indefinite length"
+msgstr "Для Version длина не установлена"
+
+msgid "Waiting for job to complete."
+msgstr ""
+
+msgid "Waiting for printer to become available."
+msgstr ""
+
+msgid "Waiting for printer to finish."
+msgstr ""
+
+msgid "Warning, no Windows 2000 printer drivers are installed."
+msgstr ""
+
+msgid "Web Interface is Disabled"
+msgstr ""
+
+msgid "Yes"
+msgstr "Да"
+
+#, c-format
+msgid ""
+"You must access this page using the URL <A HREF=\"https://%s:%d%s\">https://"
+"%s:%d%s</A>."
+msgstr ""
+"Вы должны получить доступ к этой странице с помощью URL <A HREF=«https://%s:"
+"%d%s»>https://%s:%d%s</A>."
+
+msgid ""
+"Your password must be at least 6 characters long, cannot contain your "
+"username, and must contain at least one letter and number."
+msgstr ""
+
+msgid "ZPL Label Printer"
+msgstr "Принтер для печати этикеток ZPL"
+
+msgid "Zebra"
+msgstr "Zebra"
+
+msgid "aborted"
+msgstr "отменено"
+
+msgid "canceled"
+msgstr "отменено"
+
+msgid "completed"
+msgstr "завершено"
+
+msgid "cups-deviced failed to execute."
+msgstr "Не удалось выполнить cups-deviced."
+
+msgid "cups-driverd failed to execute."
+msgstr "Не удалось выполнить cups-driverd."
+
+#, c-format
+msgid "cupsaddsmb: No PPD file for printer \"%s\" - %s"
+msgstr ""
+
+msgid "cupsctl: Cannot set Listen or Port directly."
+msgstr ""
+
+#, c-format
+msgid "cupsctl: Unable to connect to server: %s"
+msgstr ""
+
+#, c-format
+msgid "cupsctl: Unknown option \"%s\""
+msgstr ""
+
+#, c-format
+msgid "cupsctl: Unknown option \"-%c\""
+msgstr ""
+
+msgid "cupsd: Expected config filename after \"-c\" option."
+msgstr ""
+
+msgid "cupsd: Expected cups-files.conf filename after \"-s\" option."
+msgstr ""
+
+msgid "cupsd: Relative cups-files.conf filename not allowed."
+msgstr ""
+
+msgid "cupsd: Unable to get current directory."
+msgstr ""
+
+msgid "cupsd: Unable to get path to cups-files.conf file."
+msgstr ""
+
+#, c-format
+msgid "cupsd: Unknown argument \"%s\" - aborting."
+msgstr ""
+
+#, c-format
+msgid "cupsd: Unknown option \"%c\" - aborting."
+msgstr ""
+
+msgid "cupsd: launchd(8) support not compiled in, running in normal mode."
+msgstr ""
+
+#, c-format
+msgid "cupsfilter: Invalid document number %d."
+msgstr ""
+
+#, c-format
+msgid "cupsfilter: Invalid job ID %d."
+msgstr ""
+
+msgid "cupsfilter: Only one filename can be specified."
+msgstr ""
+
+#, c-format
+msgid "cupsfilter: Unable to get job file - %s"
+msgstr ""
+
+msgid "cupstestppd: The -q option is incompatible with the -v option."
+msgstr ""
+
+msgid "cupstestppd: The -v option is incompatible with the -q option."
+msgstr ""
+
+#, c-format
+msgid "device for %s/%s: %s"
+msgstr ""
+
+#, c-format
+msgid "device for %s: %s"
+msgstr ""
+
+msgid "error-index uses indefinite length"
+msgstr "Для error-index длина не установлена"
+
+msgid "error-status uses indefinite length"
+msgstr "Для error-status длина не установлена"
+
+msgid "held"
+msgstr "задержано"
+
+msgid "help\t\tGet help on commands."
+msgstr ""
+
+msgid "idle"
+msgstr "свободен"
+
+msgid "ipptool: \"-i\" and \"-n\" are incompatible with -X\"."
+msgstr ""
+
+#, c-format
+msgid "ipptool: Bad URI - %s."
+msgstr ""
+
+#, c-format
+msgid "ipptool: Bad version %s for \"-V\"."
+msgstr ""
+
+msgid "ipptool: Invalid seconds for \"-i\"."
+msgstr ""
+
+msgid "ipptool: May only specify a single URI."
+msgstr ""
+
+msgid "ipptool: Missing count for \"-n\"."
+msgstr ""
+
+msgid "ipptool: Missing filename for \"-f\"."
+msgstr ""
+
+msgid "ipptool: Missing name=value for \"-d\"."
+msgstr ""
+
+msgid "ipptool: Missing seconds for \"-i\"."
+msgstr ""
+
+msgid "ipptool: Missing timeout for \"-T\"."
+msgstr ""
+
+msgid "ipptool: Missing version for \"-V\"."
+msgstr ""
+
+msgid "ipptool: URI required before test file."
+msgstr ""
+
+#, c-format
+msgid "ipptool: Unknown option \"-%c\"."
+msgstr ""
+
+msgid "job-printer-uri attribute missing."
+msgstr ""
+
+msgid "lpadmin: Class name can only contain printable characters."
+msgstr ""
+
+msgid "lpadmin: Expected PPD after \"-P\" option."
+msgstr ""
+
+msgid "lpadmin: Expected allow/deny:userlist after \"-u\" option."
+msgstr ""
+
+msgid "lpadmin: Expected class after \"-r\" option."
+msgstr ""
+
+msgid "lpadmin: Expected class name after \"-c\" option."
+msgstr ""
+
+msgid "lpadmin: Expected description after \"-D\" option."
+msgstr ""
+
+msgid "lpadmin: Expected device URI after \"-v\" option."
+msgstr ""
+
+msgid "lpadmin: Expected file type(s) after \"-I\" option."
+msgstr ""
+
+msgid "lpadmin: Expected hostname after \"-h\" option."
+msgstr ""
+
+msgid "lpadmin: Expected interface after \"-i\" option."
+msgstr ""
+
+msgid "lpadmin: Expected location after \"-L\" option."
+msgstr ""
+
+msgid "lpadmin: Expected model after \"-m\" option."
+msgstr ""
+
+msgid "lpadmin: Expected name after \"-R\" option."
+msgstr ""
+
+msgid "lpadmin: Expected name=value after \"-o\" option."
+msgstr ""
+
+msgid "lpadmin: Expected printer after \"-p\" option."
+msgstr ""
+
+msgid "lpadmin: Expected printer name after \"-d\" option."
+msgstr ""
+
+msgid "lpadmin: Expected printer or class after \"-x\" option."
+msgstr ""
+
+msgid "lpadmin: No member names were seen."
+msgstr ""
+
+#, c-format
+msgid "lpadmin: Printer %s is already a member of class %s."
+msgstr ""
+
+#, c-format
+msgid "lpadmin: Printer %s is not a member of class %s."
+msgstr ""
+
+msgid "lpadmin: Printer name can only contain printable characters."
+msgstr ""
+
+msgid ""
+"lpadmin: Unable to add a printer to the class:\n"
+"         You must specify a printer name first."
+msgstr ""
+
+#, c-format
+msgid "lpadmin: Unable to connect to server: %s"
+msgstr ""
+
+msgid "lpadmin: Unable to create temporary file"
+msgstr ""
+
+msgid ""
+"lpadmin: Unable to delete option:\n"
+"         You must specify a printer name first."
+msgstr ""
+
+#, c-format
+msgid "lpadmin: Unable to open PPD file \"%s\" - %s"
+msgstr ""
+
+msgid ""
+"lpadmin: Unable to remove a printer from the class:\n"
+"         You must specify a printer name first."
+msgstr ""
+
+msgid ""
+"lpadmin: Unable to set the printer options:\n"
+"         You must specify a printer name first."
+msgstr ""
+
+#, c-format
+msgid "lpadmin: Unknown allow/deny option \"%s\"."
+msgstr ""
+
+#, c-format
+msgid "lpadmin: Unknown argument \"%s\"."
+msgstr ""
+
+#, c-format
+msgid "lpadmin: Unknown option \"%c\"."
+msgstr ""
+
+msgid "lpadmin: Warning - content type list ignored."
+msgstr ""
+
+msgid "lpc> "
+msgstr "lpc> "
+
+msgid "lpinfo: Expected 1284 device ID string after \"--device-id\"."
+msgstr ""
+
+msgid "lpinfo: Expected language after \"--language\"."
+msgstr ""
+
+msgid "lpinfo: Expected make and model after \"--make-and-model\"."
+msgstr ""
+
+msgid "lpinfo: Expected product string after \"--product\"."
+msgstr ""
+
+msgid "lpinfo: Expected scheme list after \"--exclude-schemes\"."
+msgstr ""
+
+msgid "lpinfo: Expected scheme list after \"--include-schemes\"."
+msgstr ""
+
+msgid "lpinfo: Expected timeout after \"--timeout\"."
+msgstr ""
+
+#, c-format
+msgid "lpinfo: Unknown argument \"%s\"."
+msgstr ""
+
+#, c-format
+msgid "lpinfo: Unknown option \"%c\"."
+msgstr ""
+
+#, c-format
+msgid "lpinfo: Unknown option \"%s\"."
+msgstr ""
+
+#, c-format
+msgid "lpmove: Unable to connect to server: %s"
+msgstr ""
+
+#, c-format
+msgid "lpmove: Unknown argument \"%s\"."
+msgstr ""
+
+#, c-format
+msgid "lpmove: Unknown option \"%c\"."
+msgstr ""
+
+msgid "lpoptions: No printers."
+msgstr ""
+
+#, c-format
+msgid "lpoptions: Unable to add printer or instance: %s"
+msgstr ""
+
+#, c-format
+msgid "lpoptions: Unable to get PPD file for %s: %s"
+msgstr ""
+
+#, c-format
+msgid "lpoptions: Unable to open PPD file for %s."
+msgstr ""
+
+msgid "lpoptions: Unknown printer or class."
+msgstr ""
+
+msgid "lppasswd: Only root can add or delete passwords."
+msgstr ""
+
+msgid "lppasswd: Password file busy."
+msgstr ""
+
+msgid "lppasswd: Password file not updated."
+msgstr ""
+
+msgid "lppasswd: Sorry, password doesn't match."
+msgstr ""
+
+msgid "lppasswd: Sorry, password rejected."
+msgstr ""
+
+msgid "lppasswd: Sorry, passwords don't match."
+msgstr ""
+
+#, c-format
+msgid "lppasswd: Unable to copy password string: %s"
+msgstr ""
+
+#, c-format
+msgid "lppasswd: Unable to open password file: %s"
+msgstr ""
+
+#, c-format
+msgid "lppasswd: Unable to write to password file: %s"
+msgstr ""
+
+#, c-format
+msgid "lppasswd: failed to backup old password file: %s"
+msgstr ""
+
+#, c-format
+msgid "lppasswd: failed to rename password file: %s"
+msgstr ""
+
+#, c-format
+msgid "lppasswd: user \"%s\" and group \"%s\" do not exist."
+msgstr ""
+
+#, c-format
+msgid ""
+"lpstat: error - %s environment variable names non-existent destination \"%s"
+"\"."
+msgstr ""
+
+#, c-format
+msgid "members of class %s:"
+msgstr ""
+
+msgid "no entries"
+msgstr ""
+
+msgid "no system default destination"
+msgstr ""
+
+msgid "notify-events not specified."
+msgstr ""
+
+#, c-format
+msgid "notify-recipient-uri URI \"%s\" is already used."
+msgstr ""
+
+#, c-format
+msgid "notify-recipient-uri URI \"%s\" uses unknown scheme."
+msgstr ""
+
+msgid "pending"
+msgstr "задержка"
+
+#, c-format
+msgid "ppdc: Adding include directory \"%s\"."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Adding/updating UI text from %s."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Bad boolean value (%s) on line %d of %s."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Bad font attribute: %s"
+msgstr ""
+
+#, c-format
+msgid "ppdc: Bad resolution name \"%s\" on line %d of %s."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Bad status keyword %s on line %d of %s."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Bad variable substitution ($%c) on line %d of %s."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Choice found on line %d of %s with no Option."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Duplicate #po for locale %s on line %d of %s."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Expected a filter definition on line %d of %s."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Expected a program name on line %d of %s."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Expected boolean value on line %d of %s."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Expected charset after Font on line %d of %s."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Expected choice code on line %d of %s."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Expected choice name/text on line %d of %s."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Expected color order for ColorModel on line %d of %s."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Expected colorspace for ColorModel on line %d of %s."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Expected compression for ColorModel on line %d of %s."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Expected constraints string for UIConstraints on line %d of %s."
+msgstr ""
+
+#, c-format
+msgid ""
+"ppdc: Expected driver type keyword following DriverType on line %d of %s."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Expected duplex type after Duplex on line %d of %s."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Expected encoding after Font on line %d of %s."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Expected filename after #po %s on line %d of %s."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Expected group name/text on line %d of %s."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Expected include filename on line %d of %s."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Expected integer on line %d of %s."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Expected locale after #po on line %d of %s."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Expected name after %s on line %d of %s."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Expected name after FileName on line %d of %s."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Expected name after Font on line %d of %s."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Expected name after Manufacturer on line %d of %s."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Expected name after MediaSize on line %d of %s."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Expected name after ModelName on line %d of %s."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Expected name after PCFileName on line %d of %s."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Expected name/text after %s on line %d of %s."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Expected name/text after Installable on line %d of %s."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Expected name/text after Resolution on line %d of %s."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Expected name/text combination for ColorModel on line %d of %s."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Expected option name/text on line %d of %s."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Expected option section on line %d of %s."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Expected option type on line %d of %s."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Expected override field after Resolution on line %d of %s."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Expected quoted string on line %d of %s."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Expected real number on line %d of %s."
+msgstr ""
+
+#, c-format
+msgid ""
+"ppdc: Expected resolution/mediatype following ColorProfile on line %d of %s."
+msgstr ""
+
+#, c-format
+msgid ""
+"ppdc: Expected resolution/mediatype following SimpleColorProfile on line %d "
+"of %s."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Expected selector after %s on line %d of %s."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Expected status after Font on line %d of %s."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Expected string after Copyright on line %d of %s."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Expected string after Version on line %d of %s."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Expected two option names on line %d of %s."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Expected value after %s on line %d of %s."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Expected version after Font on line %d of %s."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Invalid #include/#po filename \"%s\"."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Invalid cost for filter on line %d of %s."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Invalid empty MIME type for filter on line %d of %s."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Invalid empty program name for filter on line %d of %s."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Invalid option section \"%s\" on line %d of %s."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Invalid option type \"%s\" on line %d of %s."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Loading driver information file \"%s\"."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Loading messages for locale \"%s\"."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Loading messages from \"%s\"."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Missing #endif at end of \"%s\"."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Missing #if on line %d of %s."
+msgstr ""
+
+#, c-format
+msgid ""
+"ppdc: Need a msgid line before any translation strings on line %d of %s."
+msgstr ""
+
+#, c-format
+msgid "ppdc: No message catalog provided for locale %s."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Option %s defined in two different groups on line %d of %s."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Option %s redefined with a different type on line %d of %s."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Option constraint must *name on line %d of %s."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Too many nested #if's on line %d of %s."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Unable to create PPD file \"%s\" - %s."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Unable to create output directory %s: %s"
+msgstr ""
+
+#, c-format
+msgid "ppdc: Unable to create output pipes: %s"
+msgstr ""
+
+#, c-format
+msgid "ppdc: Unable to execute cupstestppd: %s"
+msgstr ""
+
+#, c-format
+msgid "ppdc: Unable to find #po file %s on line %d of %s."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Unable to find include file \"%s\" on line %d of %s."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Unable to find localization for \"%s\" - %s"
+msgstr ""
+
+#, c-format
+msgid "ppdc: Unable to load localization file \"%s\" - %s"
+msgstr ""
+
+#, c-format
+msgid "ppdc: Unable to open %s: %s"
+msgstr ""
+
+#, c-format
+msgid "ppdc: Undefined variable (%s) on line %d of %s."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Unexpected text on line %d of %s."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Unknown driver type %s on line %d of %s."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Unknown duplex type \"%s\" on line %d of %s."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Unknown media size \"%s\" on line %d of %s."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Unknown message catalog format for \"%s\"."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Unknown token \"%s\" seen on line %d of %s."
+msgstr ""
+
+#, c-format
+msgid ""
+"ppdc: Unknown trailing characters in real number \"%s\" on line %d of %s."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Unterminated string starting with %c on line %d of %s."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Warning - overlapping filename \"%s\"."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Writing %s."
+msgstr ""
+
+#, c-format
+msgid "ppdc: Writing PPD files to directory \"%s\"."
+msgstr ""
+
+#, c-format
+msgid "ppdmerge: Bad LanguageVersion \"%s\" in %s."
+msgstr ""
+
+#, c-format
+msgid "ppdmerge: Ignoring PPD file %s."
+msgstr ""
+
+#, c-format
+msgid "ppdmerge: Unable to backup %s to %s - %s"
+msgstr ""
+
+#, c-format
+msgid "printer %s disabled since %s -"
+msgstr ""
+
+#, c-format
+msgid "printer %s is idle.  enabled since %s"
+msgstr ""
+
+#, c-format
+msgid "printer %s now printing %s-%d.  enabled since %s"
+msgstr ""
+
+#, c-format
+msgid "printer %s/%s disabled since %s -"
+msgstr ""
+
+#, c-format
+msgid "printer %s/%s is idle.  enabled since %s"
+msgstr ""
+
+#, c-format
+msgid "printer %s/%s now printing %s-%d.  enabled since %s"
+msgstr ""
+
+msgid "processing"
+msgstr "обработка"
+
+#, c-format
+msgid "request id is %s-%d (%d file(s))"
+msgstr ""
+
+msgid "request-id uses indefinite length"
+msgstr "Для request-id длина не определена"
+
+msgid "scheduler is not running"
+msgstr ""
+
+msgid "scheduler is running"
+msgstr ""
+
+#, c-format
+msgid "stat of %s failed: %s"
+msgstr "не удалось установить %s: %s"
+
+msgid "status\t\tShow status of daemon and queue."
+msgstr ""
+
+msgid "stopped"
+msgstr "остановлен"
+
+#, c-format
+msgid "system default destination: %s"
+msgstr ""
+
+#, c-format
+msgid "system default destination: %s/%s"
+msgstr ""
+
+msgid "unknown"
+msgstr "неизвестный"
+
+msgid "untitled"
+msgstr "новый"
+
+msgid "variable-bindings uses indefinite length"
+msgstr "Для variable-bindings длина не установлена"
+
+#~ msgid "\t\t(all)\n"
+#~ msgstr "\t\t(все)\n"
+
+#~ msgid "\t\t(none)\n"
+#~ msgstr "\t\t(нет)\n"
+
+#~ msgid "\t%d entries\n"
+#~ msgstr "\tзаписей: %d\n"
+
+#~ msgid "\tAfter fault: continue\n"
+#~ msgstr "\tПосле ошибки: продолжить\n"
+
+#~ msgid "\tAlerts:"
+#~ msgstr "\tПредупреждения:"
+
+#~ msgid "\tBanner required\n"
+#~ msgstr "\tТребуется баннер\n"
+
+#~ msgid "\tCharset sets:\n"
+#~ msgstr "\tНабор символов устанавливает:\n"
+
+#~ msgid "\tConnection: direct\n"
+#~ msgstr "\tПодключение: прямое\n"
+
+#~ msgid "\tConnection: remote\n"
+#~ msgstr "\tПодключение: удаленное\n"
+
+#~ msgid "\tDefault page size:\n"
+#~ msgstr "\tРазмер страницы по умолчанию:\n"
+
+#~ msgid "\tDefault pitch:\n"
+#~ msgstr "\tВысота по умолчанию:\n"
+
+#~ msgid "\tDefault port settings:\n"
+#~ msgstr "\tНастройки порта по умолчанию:\n"
+
+#~ msgid "\tDescription: %s\n"
+#~ msgstr "\tОписание: %s\n"
+
+#~ msgid ""
+#~ "\tForm mounted:\n"
+#~ "\tContent types: any\n"
+#~ "\tPrinter types: unknown\n"
+#~ msgstr ""
+#~ "\tФорма подключения:\n"
+#~ "\tТипы контента: любые\n"
+#~ "\tТипы принтеров: неизвестно\n"
+
+#~ msgid "\tForms allowed:\n"
+#~ msgstr "\tРазрешенные формы:\n"
+
+#~ msgid "\tInterface: %s.ppd\n"
+#~ msgstr "\tИнтерфейс: %s.ppd\n"
+
+#~ msgid "\tInterface: %s/interfaces/%s\n"
+#~ msgstr "\tИнтерфейс: %s/интерфейсы/%s\n"
+
+#~ msgid "\tInterface: %s/ppd/%s.ppd\n"
+#~ msgstr "\tИнтерфейс: %s/ppd/%s.ppd\n"
+
+#~ msgid "\tLocation: %s\n"
+#~ msgstr "\tРасположение: %s\n"
+
+#~ msgid "\tOn fault: no alert\n"
+#~ msgstr "\tПри ошибке: не выводить предупреждение\n"
+
+#~ msgid "\tUsers allowed:\n"
+#~ msgstr "\tРазрешенные пользователи:\n"
+
+#~ msgid "\tUsers denied:\n"
+#~ msgstr "\tЗапрещенные пользователи:\n"
+
+#~ msgid "\tdaemon present\n"
+#~ msgstr "\tдемон присутствует\n"
+
+#~ msgid "\tno entries\n"
+#~ msgstr "\tнет записей\n"
+
+#~ msgid "\tprinter is on device '%s' speed -1\n"
+#~ msgstr "\tпринтер на скорости -1 устройства «%s»\n"
+
+#~ msgid "\tprinting is disabled\n"
+#~ msgstr "\tпечать отключена\n"
+
+#~ msgid "\tprinting is enabled\n"
+#~ msgstr "\tпечать включена\n"
+
+#~ msgid "\tqueued for %s\n"
+#~ msgstr "\tочередь для %s\n"
+
+#~ msgid "\tqueuing is disabled\n"
+#~ msgstr "\tочередь отключена\n"
+
+#~ msgid "\tqueuing is enabled\n"
+#~ msgstr "\tочередь включена\n"
+
+#~ msgid "\treason unknown\n"
+#~ msgstr "\tпричина неизвестна\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "    DETAILED CONFORMANCE TEST RESULTS\n"
+#~ msgstr ""
+#~ "\n"
+#~ "    ПОДРОБНЫЕ РЕЗУЛЬТАТЫ ТЕСТА СООТВЕТСТВИЯ\n"
+
+#~ msgid "                REF: Page 15, section 3.1.\n"
+#~ msgstr "                REF: Стр. 15, раздел 3.1.\n"
+
+#~ msgid "                REF: Page 15, section 3.2.\n"
+#~ msgstr "                REF: Стр. 15, раздел 3.2.\n"
+
+#~ msgid "                REF: Page 19, section 3.3.\n"
+#~ msgstr "                REF: Стр. 19, раздел 3.3.\n"
+
+#~ msgid "                REF: Page 20, section 3.4.\n"
+#~ msgstr "                REF: Стр. 20, раздел 3.4.\n"
+
+#~ msgid "                REF: Page 27, section 3.5.\n"
+#~ msgstr "                REF: Стр. 27, раздел 3.5.\n"
+
+#~ msgid "                REF: Page 42, section 5.2.\n"
+#~ msgstr "                REF: Стр. 42, раздел 5.2.\n"
+
+#~ msgid "                REF: Pages 16-17, section 3.2.\n"
+#~ msgstr "                REF: Стр. 16-17, раздел 3.2.\n"
+
+#~ msgid "                REF: Pages 42-45, section 5.2.\n"
+#~ msgstr "                REF: Стр. 42-45, раздел 5.2.\n"
+
+#~ msgid "                REF: Pages 45-46, section 5.2.\n"
+#~ msgstr "                REF: Стр. 45-46, раздел 5.2.\n"
+
+#~ msgid "                REF: Pages 48-49, section 5.2.\n"
+#~ msgstr "                REF: Стр. 48-49, раздел 5.2.\n"
+
+#~ msgid "                REF: Pages 52-54, section 5.2.\n"
+#~ msgstr "                REF: Стр. 52-54, раздел 5.2.\n"
+
+#~ msgid "        %-39.39s %.0f bytes\n"
+#~ msgstr "        %-39.39s %.0f байт\n"
+
+#~ msgid "        PASS    Default%s\n"
+#~ msgstr "        PASS    Default%s\n"
+
+#~ msgid "        PASS    DefaultImageableArea\n"
+#~ msgstr "        PASS    DefaultImageableArea\n"
+
+#~ msgid "        PASS    DefaultPaperDimension\n"
+#~ msgstr "        PASS    DefaultPaperDimension\n"
+
+#~ msgid "        PASS    FileVersion\n"
+#~ msgstr "        PASS    FileVersion\n"
+
+#~ msgid "        PASS    FormatVersion\n"
+#~ msgstr "        PASS    FormatVersion\n"
+
+#~ msgid "        PASS    LanguageEncoding\n"
+#~ msgstr "        PASS    LanguageEncoding\n"
+
+#~ msgid "        PASS    LanguageVersion\n"
+#~ msgstr "        PASS    LanguageVersion\n"
+
+#~ msgid "        PASS    Manufacturer\n"
+#~ msgstr "        PASS    Manufacturer\n"
+
+#~ msgid "        PASS    ModelName\n"
+#~ msgstr "        PASS    ModelName\n"
+
+#~ msgid "        PASS    NickName\n"
+#~ msgstr "        PASS    NickName\n"
+
+#~ msgid "        PASS    PCFileName\n"
+#~ msgstr "        PASS    PCFileName\n"
+
+#~ msgid "        PASS    PSVersion\n"
+#~ msgstr "        PASS    PSVersion\n"
+
+#~ msgid "        PASS    PageRegion\n"
+#~ msgstr "        PASS    PageRegion\n"
+
+#~ msgid "        PASS    PageSize\n"
+#~ msgstr "        PASS    PageSize\n"
+
+#~ msgid "        PASS    Product\n"
+#~ msgstr "        PASS    Product\n"
+
+#~ msgid "        PASS    ShortNickName\n"
+#~ msgstr "        PASS    ShortNickName\n"
+
+#~ msgid ""
+#~ "        WARN    \"%s %s\" conflicts with \"%s %s\"\n"
+#~ "                (constraint=\"%s %s %s %s\")\n"
+#~ msgstr ""
+#~ "        WARN    «%s %s» конфликтует с «%s %s»\n"
+#~ "                (constraint=«%s %s %s %s»)\n"
+
+#~ msgid "        WARN    %s has no corresponding options\n"
+#~ msgstr "\tWARN\t%s не имеет соответствующих параметров\n"
+
+#~ msgid "        WARN    %s has no corresponding options!\n"
+#~ msgstr "        WARN    %s не содержит соответствующих параметров!\n"
+
+#~ msgid ""
+#~ "        WARN    %s shares a common prefix with %s\n"
+#~ "                REF: Page 15, section 3.2.\n"
+#~ msgstr ""
+#~ "        WARN    %s использует общий префикс совместно с %s\n"
+#~ "                REF: Стр. 15, раздел 3.2.\n"
+
+#~ msgid "        WARN    Default choices conflicting\n"
+#~ msgstr "\tWARN\tЗначения, используемые по умолчанию, конфликтуют\n"
+
+#~ msgid "        WARN    Default choices conflicting!\n"
+#~ msgstr "        WARN    Значения, используемые по умолчанию, конфликтуют!\n"
+
+#~ msgid ""
+#~ "        WARN    Duplex option keyword %s may not work as expected and "
+#~ "should be named Duplex\n"
+#~ "                REF: Page 122, section 5.17\n"
+#~ msgstr ""
+#~ "\tWARN\tКлючевое слово параметра дуплекса %s может привести к "
+#~ "некорректным результатам. Используйте имя 'Duplex'\n"
+#~ "\t\tREF: Стр. 122, раздел 5.17\n"
+
+#~ msgid ""
+#~ "        WARN    Duplex option keyword %s may not work as expected and "
+#~ "should be named Duplex!\n"
+#~ "                REF: Page 122, section 5.17\n"
+#~ msgstr ""
+#~ "        WARN    Ключевое слово параметра дуплекса %s может привести к "
+#~ "некорректным результатам. Используйте имя «Duplex»!\n"
+#~ "                REF: Стр. 122, раздел 5.17\n"
+
+#~ msgid ""
+#~ "        WARN    File contains a mix of CR, LF, and CR LF line endings\n"
+#~ msgstr "\tWARN\tФайл содержит комбинацию окончаний строки CR, LF, CR LF \n"
+
+#~ msgid ""
+#~ "        WARN    File contains a mix of CR, LF, and CR LF line endings!\n"
+#~ msgstr ""
+#~ "        WARN    Файл содержит комбинацию окончаний строки CR, LF и CR "
+#~ "LF!\n"
+
+#~ msgid ""
+#~ "        WARN    LanguageEncoding required by PPD 4.3 spec.\n"
+#~ "                REF: Pages 56-57, section 5.3.\n"
+#~ msgstr ""
+#~ "        WARN    LanguageEncoding требуется спецификацией PPD 4.3.\n"
+#~ "                REF: Стр. 56-57, раздел 5.3.\n"
+
+#~ msgid "        WARN    Line %d only contains whitespace\n"
+#~ msgstr "\tWARN\tСтрока %d содержит только пробелы\n"
+
+#~ msgid "        WARN    Line %d only contains whitespace!\n"
+#~ msgstr "        WARN    Строка %d содержит только пробелы!\n"
+
+#~ msgid ""
+#~ "        WARN    Manufacturer required by PPD 4.3 spec.\n"
+#~ "                REF: Pages 58-59, section 5.3.\n"
+#~ msgstr ""
+#~ "        WARN    Manufacturer требуется спецификацией PPD 4.3.\n"
+#~ "                REF: Стр. 58-59, раздел 5.3.\n"
+
+#~ msgid "        WARN    Missing APDialogExtension file \"%s\"\n"
+#~ msgstr "        WARN    Файл APDialogExtension отсутствует «%s»\n"
+
+#~ msgid "        WARN    Missing APPrinterIconPath file \"%s\"\n"
+#~ msgstr "        WARN    Файл APPrinterIconPath отсутствует «%s»\n"
+
+#~ msgid ""
+#~ "        WARN    Non-Windows PPD files should use lines ending with only "
+#~ "LF, not CR LF\n"
+#~ msgstr ""
+#~ "\tWARN\tPPD-файлы не из Windows должны использовать строки только с "
+#~ "окончанием LF, а не с CR LF\n"
+
+#~ msgid ""
+#~ "        WARN    Non-Windows PPD files should use lines ending with only "
+#~ "LF, not CR LF!\n"
+#~ msgstr ""
+#~ "        WARN    PPD-файлы не из Windows должны использовать строки только "
+#~ "с окончанием LF, а не с CR LF!\n"
+
+#~ msgid ""
+#~ "        WARN    Obsolete PPD version %.1f\n"
+#~ "                REF: Page 42, section 5.2.\n"
+#~ msgstr ""
+#~ "\tWARN\tУстаревшая версия PPD %.1f\n"
+#~ "\t\tREF: Стр. 42, раздел 5.2. \n"
+
+#~ msgid ""
+#~ "        WARN    Obsolete PPD version %.1f!\n"
+#~ "                REF: Page 42, section 5.2.\n"
+#~ msgstr ""
+#~ "        WARN    Устаревшая версия PPD %.1f!\n"
+#~ "                REF: Стр. 42, раздел 5.2.\n"
+
+#~ msgid ""
+#~ "        WARN    PCFileName longer than 8.3 in violation of PPD spec.\n"
+#~ "                REF: Pages 61-62, section 5.3.\n"
+#~ msgstr ""
+#~ "        WARN    PCFileName длиннее чем 8.3 нарушает спецификацию PPD.\n"
+#~ "                REF: Стр. 61-62, раздел 5.3.\n"
+
+#~ msgid ""
+#~ "        WARN    PCFileName should contain a unique filename.\n"
+#~ "                REF: Pages 61-62, section 5.3.\n"
+#~ msgstr ""
+#~ "\tWARN\tPCFilename должен содержать уникальное название\n"
+#~ "\t\tREF: Стр. 61-62, раздел 5.3. \n"
+
+#~ msgid ""
+#~ "        WARN    Protocols contains PJL but JCL attributes are not set.\n"
+#~ "                REF: Pages 78-79, section 5.7.\n"
+#~ msgstr ""
+#~ "        WARN    Protocols содержит PJL, но атрибуты JCL не настроены.\n"
+#~ "                REF: Стр. 78-79, раздел 5.7.\n"
+
+#~ msgid ""
+#~ "        WARN    Protocols contains both PJL and BCP; expected TBCP.\n"
+#~ "                REF: Pages 78-79, section 5.7.\n"
+#~ msgstr ""
+#~ "\tWARN\tProtocols содержит PJL и BCP;\n"
+#~ "\t\tREF: Стр. 78-79, раздел 5.7.\n"
+
+#~ msgid ""
+#~ "        WARN    ShortNickName required by PPD 4.3 spec.\n"
+#~ "                REF: Pages 64-65, section 5.3.\n"
+#~ msgstr ""
+#~ "        WARN    ShortNickName требуется спецификацией PPD 4.3.\n"
+#~ "                REF: Стр. 64-65, раздел 5.3.\n"
+
+#~ msgid "      %s  %s %s does not exist\n"
+#~ msgstr "\t%s %s %s не существует\n"
+
+#~ msgid "      %s  %s %s does not exist!\n"
+#~ msgstr "      %s  %s %s не существует!\n"
+
+#~ msgid "      %s  %s file \"%s\" has the wrong capitalization\n"
+#~ msgstr "      %s  %s файл \"%s\" имеет неверный регистр\n"
+
+#~ msgid ""
+#~ "      %s  Bad %s choice %s\n"
+#~ "                REF: Page 122, section 5.17\n"
+#~ msgstr ""
+#~ "      %s  Неверный %s выбор %s!\n"
+#~ "                REF: Стр. 122, раздел 5.17\n"
+
+#~ msgid ""
+#~ "      %s  Bad %s choice %s!\n"
+#~ "                REF: Page 122, section 5.17\n"
+#~ msgstr ""
+#~ "      %s  Неверный %s выбор %s!\n"
+#~ "                REF: Стр. 122, раздел 5.17\n"
+
+#~ msgid "      %s  Bad UTF-8 \"%s\" translation string for option %s\n"
+#~ msgstr "\t%s Неверный перевод UTF-8 \"%s\" для параметра %s\n"
+
+#~ msgid "      %s  Bad UTF-8 \"%s\" translation string for option %s!\n"
+#~ msgstr "      %s  Неверный перевод UTF-8 «%s» для параметра %s!\n"
+
+#~ msgid ""
+#~ "      %s  Bad UTF-8 \"%s\" translation string for option %s, choice %s\n"
+#~ msgstr "\t%s Неверный перевод UTF-8 \"%s\" для параметра %s, выбора %s\n"
+
+#~ msgid ""
+#~ "      %s  Bad UTF-8 \"%s\" translation string for option %s, choice %s!\n"
+#~ msgstr ""
+#~ "      %s  Неверный перевод UTF-8 «%s» для параметра %s, выбора %s!\n"
+
+#~ msgid "      %s  Bad cupsFilter value \"%s\"\n"
+#~ msgstr "\t%s Неверное значение cupsFilter \"%s\"\n"
+
+#~ msgid "      %s  Bad cupsFilter value \"%s\"!\n"
+#~ msgstr "      %s  Неверное значение cupsFilter «%s»!\n"
+
+#~ msgid "      %s  Bad cupsICCProfile %s\n"
+#~ msgstr "\t%s Неверный cupsICCProfile %s\n"
+
+#~ msgid "      %s  Bad cupsICCProfile %s!\n"
+#~ msgstr "      %s  Неверный cupsICCProfile %s!\n"
+
+#~ msgid "      %s  Bad cupsPreFilter value \"%s\"\n"
+#~ msgstr "\t%s Неверное значение cupsPreFilter \"%s\"\n"
+
+#~ msgid "      %s  Bad cupsPreFilter value \"%s\"!\n"
+#~ msgstr "      %s  Неверное значение cupsPreFilter «%s»!\n"
+
+#~ msgid "      %s  Bad cupsUIConstraints %s: \"%s\"\n"
+#~ msgstr "\t%s Неверное значение cupsUIConstraints %s: \"%s\"\n"
+
+#~ msgid "      %s  Bad cupsUIConstraints %s: \"%s\"!\n"
+#~ msgstr "      %s  Неверный cupsUIConstraints %s: \"%s\"!\n"
+
+#~ msgid "      %s  Bad language \"%s\"\n"
+#~ msgstr "\t%s Неверный язык \"%s\"\n"
+
+#~ msgid "      %s  Bad language \"%s\"!\n"
+#~ msgstr "      %s  Неверный язык «%s»!\n"
+
+#~ msgid "      %s  Bad permissions on APDialogExtension file \"%s\"\n"
+#~ msgstr "      %s Неверные права для файла APDialogExtension \"%s\"\n"
+
+#~ msgid "      %s  Bad permissions on APPrinterIconPath file \"%s\"\n"
+#~ msgstr "      %s Неверные права для файла APPrinterIconPath \"%s\"\n"
+
+#~ msgid "      %s  Bad permissions on APPrinterLowInkTool file \"%s\"\n"
+#~ msgstr "      %s Неверные права для файла APPrinterLowInkTool \"%s\"\n"
+
+#~ msgid "      %s  Bad permissions on APPrinterUtilityPath file \"%s\"\n"
+#~ msgstr "      %s Неверные права для файла APPrinterUtilityPath \"%s\"\n"
+
+#~ msgid "      %s  Bad permissions on APScanAppPath file \"%s\"\n"
+#~ msgstr "      %s Неверные права для файла APScanAppPath \"%s\"\n"
+
+#~ msgid "      %s  Bad permissions on cupsFilter file \"%s\"\n"
+#~ msgstr "      %s Неверные права для файла cupsFilter \"%s\"\n"
+
+#~ msgid "      %s  Bad permissions on cupsICCProfile file \"%s\"\n"
+#~ msgstr "      %s Неверные права для файла cupsICCProfile \"%s\"\n"
+
+#~ msgid "      %s  Bad permissions on cupsPreFilter file \"%s\"\n"
+#~ msgstr "      %s Неверные права для файла cupsPreFilter \"%s\"\n"
+
+#~ msgid "      %s  Bad spelling of %s - should be %s\n"
+#~ msgstr "      %s Ошибки в %s - должно быть %s.\n"
+
+#~ msgid "      %s  Cannot provide both APScanAppPath and APScanAppBundleID\n"
+#~ msgstr ""
+#~ "      %s Невозможно предоставить APScanAppPath и APScanAppBundleID "
+#~ "вместе.\n"
+
+#~ msgid "      %s  Empty cupsUIConstraints %s\n"
+#~ msgstr "      %s Пустой cupsUIConstraints %s\n"
+
+#~ msgid "      %s  Empty cupsUIConstraints %s!\n"
+#~ msgstr "      %s  Пустой cupsUIConstraints %s!\n"
+
+#~ msgid "      %s  Missing \"%s\" translation string for option %s\n"
+#~ msgstr "\t%s Перевод \"%s\" отсутствует для параметра %s\n"
+
+#~ msgid "      %s  Missing \"%s\" translation string for option %s!\n"
+#~ msgstr "      %s  Перевод «%s» отсутствует для параметра %s!\n"
+
+#~ msgid ""
+#~ "      %s  Missing \"%s\" translation string for option %s, choice %s\n"
+#~ msgstr "\t%s Перевод \"%s\" отсутствует для параметра %s, выбора %s\n"
+
+#~ msgid ""
+#~ "      %s  Missing \"%s\" translation string for option %s, choice %s!\n"
+#~ msgstr "      %s  Перевод «%s» отсутствует для параметра %s, выбора %s!\n"
+
+#~ msgid "      %s  Missing APDialogExtension file \"%s\"\n"
+#~ msgstr "\t%s Файл APDialogExtention отсутствует \"%s\"\n"
+
+#~ msgid "      %s  Missing APPrinterIconPath file \"%s\"\n"
+#~ msgstr "\t%s Файл APPrinterIconPath отсутствует \"%s\"\n"
+
+#~ msgid "      %s  Missing APPrinterLowInkTool file \"%s\"\n"
+#~ msgstr "\t%s Файл APPrinterLowInkTool отсутствует \"%s\"\n"
+
+#~ msgid "      %s  Missing APPrinterUtilityPath file \"%s\"\n"
+#~ msgstr "\t%s Файл APPrinterUtilityPath отсутствует \"%s\"\n"
+
+#~ msgid "      %s  Missing APScanAppPath file \"%s\"\n"
+#~ msgstr "\t%s Файл APScanAppPath отсутствует \"%s\"\n"
+
+#~ msgid ""
+#~ "      %s  Missing REQUIRED PageRegion option\n"
+#~ "                REF: Page 100, section 5.14.\n"
+#~ msgstr ""
+#~ "\t%s Обязательный параметр PageRegion отсутствует.\n"
+#~ "\t\t REF: Стр. 100, раздел 5.14.\n"
+
+#~ msgid ""
+#~ "      %s  Missing REQUIRED PageSize option\n"
+#~ "                REF: Page 99, section 5.14.\n"
+#~ msgstr ""
+#~ "\t%s Обязательный параметр PageSize отсутствует.\n"
+#~ "\t\t REF: Стр. 99, раздел 5.14.\n"
+
+#~ msgid "      %s  Missing choice *%s %s in UIConstraints \"*%s %s *%s %s\"\n"
+#~ msgstr ""
+#~ "      %s Выбор *%s %s отсутствует в UIConstraints \"*%s %s *%s %s\"\n"
+
+#~ msgid ""
+#~ "      %s  Missing choice *%s %s in UIConstraints \"*%s %s *%s %s\"!\n"
+#~ msgstr ""
+#~ "      %s  Выбор *%s %s отсутствует в UIConstraints «*%s %s *%s %s»!\n"
+
+#~ msgid "      %s  Missing choice *%s %s in cupsUIConstraints %s: \"%s\"\n"
+#~ msgstr "      %s Выбор *%s %s отсутствует в cupsUIConstraints %s: \"%s\"\n"
+
+#~ msgid "      %s  Missing choice *%s %s in cupsUIConstraints %s: \"%s\"!\n"
+#~ msgstr ""
+#~ "      %s  Выбор *%s %s отсутствует в cupsUIConstraints %s: \"%s\"!\n"
+
+#~ msgid "      %s  Missing cupsFilter file \"%s\"\n"
+#~ msgstr "      %s  Файл cupsFilter отсутствует «%s»\n"
+
+#~ msgid "      %s  Missing cupsICCProfile file \"%s\"\n"
+#~ msgstr "\t%s Файл cupsICCProfile отсутствует \"%s\"\n"
+
+#~ msgid "      %s  Missing cupsICCProfile file \"%s\"!\n"
+#~ msgstr "      %s  Файл cupsICCProfile отсутствует «%s»!\n"
+
+#~ msgid "      %s  Missing cupsPreFilter file \"%s\"\n"
+#~ msgstr "      %s  Файл cupsFilter «%s» отсутствует\n"
+
+#~ msgid "      %s  Missing cupsUIResolver %s\n"
+#~ msgstr "\t%s cupsUIResolver отсутствует %s\n"
+
+#~ msgid "      %s  Missing cupsUIResolver %s!\n"
+#~ msgstr "      %s  Отсутствует cupsUIResolver %s!\n"
+
+#~ msgid "      %s  Missing option %s in UIConstraints \"*%s %s *%s %s\"\n"
+#~ msgstr "\t%s Отсутствует параметр %s у UIConstraints \"*%s %s *%s %s\"\n"
+
+#~ msgid "      %s  Missing option %s in UIConstraints \"*%s %s *%s %s\"!\n"
+#~ msgstr ""
+#~ "      %s  Параметр %s отсутствует в UIConstraints «*%s %s *%s %s»!\n"
+
+#~ msgid "      %s  Missing option %s in cupsUIConstraints %s: \"%s\"\n"
+#~ msgstr "\t%s Отсутствует параметр %s у cupsUIConstraints %s: \"%s\"\n"
+
+#~ msgid "      %s  Missing option %s in cupsUIConstraints %s: \"%s\"!\n"
+#~ msgstr "      %s  Параметр %s отсутствует в cupsUIConstraints %s: \"%s\"!\n"
+
+#~ msgid "      %s  No base translation \"%s\" is included in file\n"
+#~ msgstr "\t%s Основной перевод \"%s\" не включен в файл\n"
+
+#~ msgid "      %s  No base translation \"%s\" is included in file!\n"
+#~ msgstr "      %s  Основной перевод «%s» не включен в файл!\n"
+
+#~ msgid ""
+#~ "      %s  Non-standard size name \"%s\"\n"
+#~ "                REF: Page 187, section B.2.\n"
+#~ msgstr ""
+#~ "\t%s Не стандартный размер названия \"%s\"\n"
+#~ "\t\tREF: Стр. 187, раздел B.2.\n"
+
+#~ msgid ""
+#~ "      %s  REQUIRED %s does not define choice None\n"
+#~ "                REF: Page 122, section 5.17\n"
+#~ msgstr ""
+#~ "\t ТРЕБУЕТСЯ %s: %s не определяет выбор \"Нет\"\n"
+#~ "\t\tREF: Стр. 122, раздел 5.17\n"
+
+#~ msgid ""
+#~ "      %s  REQUIRED %s does not define choice None!\n"
+#~ "                REF: Page 122, section 5.17\n"
+#~ msgstr ""
+#~ "      ТРЕБУЕТСЯ %s: %s не определяет выбор «Нет»!\n"
+#~ "                REF: Стр. 122, раздел 5.17\n"
+
+#~ msgid "      %s  Size \"%s\" defined for %s but not for %s\n"
+#~ msgstr "\t%s Размер \"%s\" определен для %s, но не определен для %s\n"
+
+#~ msgid "      %s  Size \"%s\" has unexpected dimensions (%gx%g)\n"
+#~ msgstr "\t%s  Размер \"%s\"  имеет неверное значение (%gx%g)\n"
+
+#~ msgid "      %s  cupsICCProfile %s hash value collides with %s\n"
+#~ msgstr "\tХеш-значение %s cupsICCProfile %s конфликтует с %s\n"
+
+#~ msgid "      %s  cupsICCProfile %s hash value collides with %s!\n"
+#~ msgstr "      Хеш-значение %s  cupsICCProfile %s конфликтует с %s!\n"
+
+#~ msgid "      %s  cupsUIResolver %s causes a loop\n"
+#~ msgstr "\t%s cupsUIResolver %s создает цикл\n"
+
+#~ msgid "      %s  cupsUIResolver %s causes a loop!\n"
+#~ msgstr "      %s  cupsUIResolver %s создает цикл!\n"
+
+#~ msgid ""
+#~ "      %s  cupsUIResolver %s does not list at least two different options\n"
+#~ msgstr "\t%s В cupsUIResolver %s не перечислено как минимум два параметра\n"
+
+#~ msgid "      **FAIL**  %s choice names %s and %s differ only by case\n"
+#~ msgstr ""
+#~ "\t**FAIL** Для выбора %s имена %s и %s различаются только регистром "
+#~ "символов\n"
+
+#~ msgid "      **FAIL**  %s choice names %s and %s differ only by case!\n"
+#~ msgstr ""
+#~ "      **FAIL**  Для выбора %s имена %s и %s различаются только регистром "
+#~ "символов!\n"
+
+#~ msgid ""
+#~ "      **FAIL**  %s must be 1284DeviceID\n"
+#~ "                REF: Page 72, section 5.5\n"
+#~ msgstr ""
+#~ "\t**FAIL** %s должно соответствовать 1284DeviceID\n"
+#~ "\t\tREF: Стр. 72, раздел 5.5\n"
+
+#~ msgid ""
+#~ "      **FAIL**  %s must be 1284DeviceID!\n"
+#~ "                REF: Page 72, section 5.5\n"
+#~ msgstr ""
+#~ "      **FAIL**  %s должно соответствовать 1284DeviceID!\n"
+#~ "                REF: Стр. 72, раздел 5.5\n"
+
+#~ msgid ""
+#~ "      **FAIL**  BAD Default%s %s\n"
+#~ "                REF: Page 40, section 4.5.\n"
+#~ msgstr ""
+#~ "      **FAIL**  НЕВЕРНЫЙ Default%s %s\n"
+#~ "                REF: Стр. 40, раздел 4.5.\n"
+
+#~ msgid ""
+#~ "      **FAIL**  BAD DefaultImageableArea %s\n"
+#~ "                REF: Page 102, section 5.15.\n"
+#~ msgstr ""
+#~ "\t**FAIL** Неверный DefaultImageableArea %s\n"
+#~ "\t\tREF: Стр. 102, раздел 5.15.\n"
+
+#~ msgid ""
+#~ "      **FAIL**  BAD DefaultImageableArea %s!\n"
+#~ "                REF: Page 102, section 5.15.\n"
+#~ msgstr ""
+#~ "      **FAIL**  НЕВЕРНЫЙ DefaultImageableArea %s!\n"
+#~ "                REF: Стр. 102, раздел 5.15.\n"
+
+#~ msgid ""
+#~ "      **FAIL**  BAD DefaultPaperDimension %s\n"
+#~ "                REF: Page 103, section 5.15.\n"
+#~ msgstr ""
+#~ "\t**FAIL** Неверный DefaultPaperDimension %s\n"
+#~ "\t\tREF: Стр. 103, раздел 5.15.\n"
+
+#~ msgid ""
+#~ "      **FAIL**  BAD DefaultPaperDimension %s!\n"
+#~ "                REF: Page 103, section 5.15.\n"
+#~ msgstr ""
+#~ "      **FAIL**  НЕВЕРНЫЙ DefaultPaperDimension %s!\n"
+#~ "                REF: Стр. 103, раздел 5.15.\n"
+
+#~ msgid ""
+#~ "      **FAIL**  BAD JobPatchFile attribute in file\n"
+#~ "                REF: Page 24, section 3.4.\n"
+#~ msgstr ""
+#~ "      **FAIL**  НЕВЕРНЫЙ JobPatchFile атрибут в файле\n"
+#~ "                REF: Стр. 24, раздел 3.4.\n"
+
+#~ msgid ""
+#~ "      **FAIL**  BAD Manufacturer (should be \"HP\")\n"
+#~ "                REF: Page 211, table D.1.\n"
+#~ msgstr ""
+#~ "      **FAIL**  НЕВЕРНЫЙ Manufacturer (должен быть «HP»)\n"
+#~ "                REF: Стр. 211, таблица D.1.\n"
+
+#~ msgid ""
+#~ "      **FAIL**  BAD Manufacturer (should be \"Oki\")\n"
+#~ "                REF: Page 211, table D.1.\n"
+#~ msgstr ""
+#~ "      **FAIL**  НЕВЕРНЫЙ Manufacturer (должен быть «Oki»)\n"
+#~ "                REF: Стр. 211, таблица D.1.\n"
+
+#~ msgid ""
+#~ "      **FAIL**  BAD ModelName - \"%c\" not allowed in string.\n"
+#~ "                REF: Pages 59-60, section 5.3.\n"
+#~ msgstr ""
+#~ "      **FAIL**  НЕВЕРНОЕ ModelName – «%c» не разрешено в строке.\n"
+#~ "                REF: Стр. 59-60, раздел 5.3.\n"
+
+#~ msgid ""
+#~ "      **FAIL**  BAD PSVersion - not \"(string) int\".\n"
+#~ "                REF: Pages 62-64, section 5.3.\n"
+#~ msgstr ""
+#~ "      **FAIL**  НЕВЕРНАЯ PSVersion – не «(string) int».\n"
+#~ "                REF: Стр. 62-64, раздел 5.3.\n"
+
+#~ msgid ""
+#~ "      **FAIL**  BAD Product - not \"(string)\".\n"
+#~ "                REF: Page 62, section 5.3.\n"
+#~ msgstr ""
+#~ "      **FAIL**  НЕВЕРНЫЙ Product – не «(string)».\n"
+#~ "                REF: Стр. 62, раздел 5.3.\n"
+
+#~ msgid ""
+#~ "      **FAIL**  BAD ShortNickName - longer than 31 chars.\n"
+#~ "                REF: Pages 64-65, section 5.3.\n"
+#~ msgstr ""
+#~ "      **FAIL**  НЕВЕРНЫЙ ShortNickName – длиннее чем 31 симв.\n"
+#~ "                REF: Стр. 64-65, раздел 5.3.\n"
+
+#~ msgid ""
+#~ "      **FAIL**  Bad %s choice %s\n"
+#~ "                REF: Page 84, section 5.9\n"
+#~ msgstr ""
+#~ "\t**FAIL** Неверный %s выбор %s\n"
+#~ "\t\t REF: Стр. 84, раздел 5.9\n"
+
+#~ msgid ""
+#~ "      **FAIL**  Bad %s choice %s!\n"
+#~ "                REF: Page 84, section 5.9\n"
+#~ msgstr ""
+#~ "      **FAIL**  Неверный %s выбор %s!\n"
+#~ "                REF: Стр. 84, раздел 5,9\n"
+
+#~ msgid ""
+#~ "      **FAIL**  Bad FileVersion \"%s\"\n"
+#~ "                REF: Page 56, section 5.3.\n"
+#~ msgstr ""
+#~ "      **FAIL**  Неверная FileVersion \"%s\"\n"
+#~ "                REF: Стр. 56, раздел 5.3.\n"
+
+#~ msgid ""
+#~ "      **FAIL**  Bad FormatVersion \"%s\"\n"
+#~ "                REF: Page 56, section 5.3.\n"
+#~ msgstr ""
+#~ "      **FAIL**  Неверная FormatVersion \"%s\"\n"
+#~ "                REF: Стр. 56, раздел 5.3.\n"
+
+#~ msgid "      **FAIL**  Bad LanguageEncoding %s - must be ISOLatin1\n"
+#~ msgstr "\t**FAIL**  Неверный LanguageEncoding %s - должен быть ISOLatin1\n"
+
+#~ msgid "      **FAIL**  Bad LanguageEncoding %s - must be ISOLatin1!\n"
+#~ msgstr ""
+#~ "      **FAIL**  Неверный LanguageEncoding %s – должно быть ISOLatin1!\n"
+
+#~ msgid "      **FAIL**  Bad LanguageVersion %s - must be English\n"
+#~ msgstr "\t**FAIL** Неверный LanguageVersion %s - должен быть английский\n"
+
+#~ msgid "      **FAIL**  Bad LanguageVersion %s - must be English!\n"
+#~ msgstr ""
+#~ "      **FAIL**  Неверный LanguageVersion %s – должен быть английский!\n"
+
+#~ msgid "      **FAIL**  Default option code cannot be interpreted: %s\n"
+#~ msgstr ""
+#~ "      **FAIL**  Не удается интерпретировать код параметра по умолчанию: "
+#~ "%s\n"
+
+#~ msgid ""
+#~ "      **FAIL**  Default translation string for option %s choice %s "
+#~ "contains 8-bit characters\n"
+#~ msgstr ""
+#~ "\t**FAIL** Стандартный перевод для параметра %s выбора %s содержит 8-"
+#~ "битовые символы\n"
+
+#~ msgid ""
+#~ "      **FAIL**  Default translation string for option %s choice %s "
+#~ "contains 8-bit characters!\n"
+#~ msgstr ""
+#~ "      **FAIL**  Стандартный перевод для параметра %s выбора %s содержит 8-"
+#~ "битовые символы!\n"
+
+#~ msgid ""
+#~ "      **FAIL**  Default translation string for option %s contains 8-bit "
+#~ "characters\n"
+#~ msgstr ""
+#~ "\t**FAIL** Стандартный перевод для параметра %s содержит 8-"
+#~ "битовыесимволы\n"
+
+#~ msgid ""
+#~ "      **FAIL**  Default translation string for option %s contains 8-bit "
+#~ "characters!\n"
+#~ msgstr ""
+#~ "      **FAIL**  Стандартный перевод для параметра %s содержит 8-битовые "
+#~ "символы!\n"
+
+#~ msgid "      **FAIL**  Group names %s and %s differ only by case\n"
+#~ msgstr ""
+#~ "\t**FAIL** Имена групп %s и %s отличаются только регистром символов\n"
+
+#~ msgid "      **FAIL**  Group names %s and %s differ only by case!\n"
+#~ msgstr ""
+#~ "      **FAIL**  Имена групп %s и %s различаются только регистром "
+#~ "символов!\n"
+
+#~ msgid "      **FAIL**  Multiple occurrences of %s choice name %s\n"
+#~ msgstr "\t**FAIL** Для выбора %s имя %s  встречается несколько раз\n"
+
+#~ msgid "      **FAIL**  Multiple occurrences of %s choice name %s!\n"
+#~ msgstr "      **FAIL**  Для выбора %s имя %s встречается несколько раз!\n"
+
+#~ msgid "      **FAIL**  Option names %s and %s differ only by case\n"
+#~ msgstr ""
+#~ "\t**FAIL** Названия параметров %s и %s отличаются лишь регистром "
+#~ "символов\n"
+
+#~ msgid "      **FAIL**  Option names %s and %s differ only by case!\n"
+#~ msgstr ""
+#~ "      **FAIL**  Имена параметров %s и %s различаются только регистром "
+#~ "символов!\n"
+
+#~ msgid ""
+#~ "      **FAIL**  REQUIRED Default%s\n"
+#~ "                REF: Page 40, section 4.5.\n"
+#~ msgstr ""
+#~ "      **FAIL**  ТРЕБУЕТСЯ Default%s\n"
+#~ "                REF: Стр. 40, раздел 4.5.\n"
+
+#~ msgid ""
+#~ "      **FAIL**  REQUIRED DefaultImageableArea\n"
+#~ "                REF: Page 102, section 5.15.\n"
+#~ msgstr ""
+#~ "      **FAIL**  ТРЕБУЕТСЯ DefaultImageableArea\n"
+#~ "                REF: Стр. 102, раздел 5.15.\n"
+
+#~ msgid ""
+#~ "      **FAIL**  REQUIRED DefaultPaperDimension\n"
+#~ "                REF: Page 103, section 5.15.\n"
+#~ msgstr ""
+#~ "      **FAIL**  ТРЕБУЕТСЯ DefaultPaperDimension\n"
+#~ "                REF: Стр. 103, раздел 5.15.\n"
+
+#~ msgid ""
+#~ "      **FAIL**  REQUIRED FileVersion\n"
+#~ "                REF: Page 56, section 5.3.\n"
+#~ msgstr ""
+#~ "      **FAIL**  ТРЕБУЕТСЯ FileVersion\n"
+#~ "                REF: Стр. 56, раздел 5.3.\n"
+
+#~ msgid ""
+#~ "      **FAIL**  REQUIRED FormatVersion\n"
+#~ "                REF: Page 56, section 5.3.\n"
+#~ msgstr ""
+#~ "      **FAIL**  ТРЕБУЕТСЯ FormatVersion\n"
+#~ "                REF: Стр. 56, раздел 5.3.\n"
+
+#~ msgid ""
+#~ "      **FAIL**  REQUIRED ImageableArea for PageSize %s\n"
+#~ "                REF: Page 41, section 5.\n"
+#~ "                REF: Page 102, section 5.15.\n"
+#~ msgstr ""
+#~ "      **FAIL**  ТРЕБУЕТСЯ ImageableArea для PageSize %s\n"
+#~ "                REF: Стр. 41, раздел 5.\n"
+#~ "                REF: Стр. 102, раздел 5.15.\n"
+
+#~ msgid ""
+#~ "      **FAIL**  REQUIRED LanguageEncoding\n"
+#~ "                REF: Pages 56-57, section 5.3.\n"
+#~ msgstr ""
+#~ "      **FAIL**  ТРЕБУЕТСЯ LanguageEncoding\n"
+#~ "                REF: Стр. 56-57, раздел 5.3.\n"
+
+#~ msgid ""
+#~ "      **FAIL**  REQUIRED LanguageVersion\n"
+#~ "                REF: Pages 57-58, section 5.3.\n"
+#~ msgstr ""
+#~ "      **FAIL**  ТРЕБУЕТСЯ LanguageVersion\n"
+#~ "                REF: Стр. 57-58, раздел 5.3.\n"
+
+#~ msgid ""
+#~ "      **FAIL**  REQUIRED Manufacturer\n"
+#~ "                REF: Pages 58-59, section 5.3.\n"
+#~ msgstr ""
+#~ "      **FAIL**  ТРЕБУЕТСЯ Manufacturer\n"
+#~ "                REF: Стр. 58-59, раздел 5.3.\n"
+
+#~ msgid ""
+#~ "      **FAIL**  REQUIRED ModelName\n"
+#~ "                REF: Pages 59-60, section 5.3.\n"
+#~ msgstr ""
+#~ "      **FAIL**  ТРЕБУЕТСЯ ModelName\n"
+#~ "                REF: Стр. 59-60, раздел 5.3.\n"
+
+#~ msgid ""
+#~ "      **FAIL**  REQUIRED NickName\n"
+#~ "                REF: Page 60, section 5.3.\n"
+#~ msgstr ""
+#~ "      **FAIL**  ТРЕБУЕТСЯ NickName\n"
+#~ "                REF: Стр. 60, раздел 5.3.\n"
+
+#~ msgid ""
+#~ "      **FAIL**  REQUIRED PCFileName\n"
+#~ "                REF: Pages 61-62, section 5.3.\n"
+#~ msgstr ""
+#~ "      **FAIL**  ТРЕБУЕТСЯ PCFileName\n"
+#~ "                REF: Стр. 61-62, раздел 5.3.\n"
+
+#~ msgid ""
+#~ "      **FAIL**  REQUIRED PSVersion\n"
+#~ "                REF: Pages 62-64, section 5.3.\n"
+#~ msgstr ""
+#~ "      **FAIL**  ТРЕБУЕТСЯ PSVersion\n"
+#~ "                REF: Стр. 62-64, раздел 5.3.\n"
+
+#~ msgid ""
+#~ "      **FAIL**  REQUIRED PageRegion\n"
+#~ "                REF: Page 100, section 5.14.\n"
+#~ msgstr ""
+#~ "      **FAIL**  ТРЕБУЕТСЯ PageRegion\n"
+#~ "                REF: Стр. 100, раздел 5.14.\n"
+
+#~ msgid ""
+#~ "      **FAIL**  REQUIRED PageSize\n"
+#~ "                REF: Page 41, section 5.\n"
+#~ "                REF: Page 99, section 5.14.\n"
+#~ msgstr ""
+#~ "      **FAIL**  ТРЕБУЕТСЯ PageSize\n"
+#~ "                REF: Стр. 41, раздел 5.\n"
+#~ "                REF: Стр. 99, раздел 5.14.\n"
+
+#~ msgid ""
+#~ "      **FAIL**  REQUIRED PageSize\n"
+#~ "                REF: Pages 99-100, section 5.14.\n"
+#~ msgstr ""
+#~ "      **FAIL**  ТРЕБУЕТСЯ PageSize\n"
+#~ "                REF: Стр. 99-100, раздел 5.14.\n"
+
+#~ msgid ""
+#~ "      **FAIL**  REQUIRED PaperDimension for PageSize %s\n"
+#~ "                REF: Page 41, section 5.\n"
+#~ "                REF: Page 103, section 5.15.\n"
+#~ msgstr ""
+#~ "      **FAIL**  ТРЕБУЕТСЯ PaperDimension для PageSize %s\n"
+#~ "                REF: Стр. 41, раздел 5.\n"
+#~ "                REF: Стр. 103, раздел 5.15.\n"
+
+#~ msgid ""
+#~ "      **FAIL**  REQUIRED Product\n"
+#~ "                REF: Page 62, section 5.3.\n"
+#~ msgstr ""
+#~ "      **FAIL**  ТРЕБУЕТСЯ Product\n"
+#~ "                REF: Стр. 62, раздел 5.3.\n"
+
+#~ msgid ""
+#~ "      **FAIL**  REQUIRED ShortNickName\n"
+#~ "                REF: Page 64-65, section 5.3.\n"
+#~ msgstr ""
+#~ "      **FAIL**  ТРЕБУЕТСЯ ShortNickName\n"
+#~ "                REF: Стр. 64-65, раздел 5.3.\n"
+
+#~ msgid "    %d ERRORS FOUND\n"
+#~ msgstr "    ОБНАРУЖЕНО ОШИБОК: %d\n"
+
+#~ msgid ""
+#~ "    Bad %%%%BoundingBox: on line %d\n"
+#~ "        REF: Page 39, %%%%BoundingBox:\n"
+#~ msgstr ""
+#~ "    Неверный %%%%BoundingBox: в строке %d\n"
+#~ "\t REF: Стр. 39, %%%%BoundingBox:\n"
+
+#~ msgid ""
+#~ "    Bad %%%%BoundingBox: on line %d!\n"
+#~ "        REF: Page 39, %%%%BoundingBox:\n"
+#~ msgstr ""
+#~ "    Неверный %%%%BoundingBox: в строке %d!\n"
+#~ "        REF: Стр. 39, %%%%BoundingBox:\n"
+
+#~ msgid ""
+#~ "    Bad %%%%Page: on line %d\n"
+#~ "        REF: Page 53, %%%%Page:\n"
+#~ msgstr ""
+#~ "    Неверная %%%%Page: в строке %d\n"
+#~ "\t REF: Стр. 53, %%%%Page:\n"
+
+#~ msgid ""
+#~ "    Bad %%%%Page: on line %d!\n"
+#~ "        REF: Page 53, %%%%Page:\n"
+#~ msgstr ""
+#~ "    Неверная %%%%Page: в строке %d!\n"
+#~ "        REF: Стр. 53, %%%%Page:\n"
+
+#~ msgid ""
+#~ "    Bad %%%%Pages: on line %d\n"
+#~ "        REF: Page 43, %%%%Pages:\n"
+#~ msgstr ""
+#~ "    Неверные %%%%Pages: в строке %d\n"
+#~ "\t REF: Стр. 43, %%%%Pages:\n"
+
+#~ msgid ""
+#~ "    Bad %%%%Pages: on line %d!\n"
+#~ "        REF: Page 43, %%%%Pages:\n"
+#~ msgstr ""
+#~ "    Неверные %%%%Pages: в строке %d!\n"
+#~ "        REF: Стр. 43, %%%%Pages:\n"
+
+#~ msgid ""
+#~ "    Line %d is longer than 255 characters (%d)\n"
+#~ "        REF: Page 25, Line Length\n"
+#~ msgstr ""
+#~ "\tДлина строки %d больше 255 символов (%d)\n"
+#~ "\t REF: Стр. 25, Длина строки \n"
+
+#~ msgid ""
+#~ "    Line %d is longer than 255 characters (%d)!\n"
+#~ "        REF: Page 25, Line Length\n"
+#~ msgstr ""
+#~ "    Строка %d длиннее 255 символов (%d)!\n"
+#~ "        REF: Стр. 25, Длина строки\n"
+
+#~ msgid ""
+#~ "    Missing %!PS-Adobe-3.0 on first line\n"
+#~ "        REF: Page 17, 3.1 Conforming Documents\n"
+#~ msgstr ""
+#~ "    %!PS-Adobe-3.0 отсутствует в первой строке\n"
+#~ "\t REF: Стр. 17, 3.1 Соответствующие документы\n"
+
+#~ msgid ""
+#~ "    Missing %!PS-Adobe-3.0 on first line!\n"
+#~ "        REF: Page 17, 3.1 Conforming Documents\n"
+#~ msgstr ""
+#~ "    %!PS-Adobe-3.0 отсутствует в первой строке!\n"
+#~ "        REF: Стр. 17, 3.1 Соответствующие документы\n"
+
+#~ msgid ""
+#~ "    Missing %%EndComments comment\n"
+#~ "        REF: Page 41, %%EndComments\n"
+#~ msgstr ""
+#~ "    Комментарий %%EndComments отсутствует\n"
+#~ "\t REF: Стр. 41, %%EndComments\n"
+
+#~ msgid ""
+#~ "    Missing %%EndComments comment!\n"
+#~ "        REF: Page 41, %%EndComments\n"
+#~ msgstr ""
+#~ "    Комментарий %%EndComments отсутствует!\n"
+#~ "        REF: Стр. 41, %%EndComments\n"
+
+#~ msgid ""
+#~ "    Missing or bad %%BoundingBox: comment\n"
+#~ "        REF: Page 39, %%BoundingBox:\n"
+#~ msgstr ""
+#~ "    Отсутствует или неверный %%BoundingBox: комментарий\n"
+#~ "\t REF: Стр. 39, %%BoundingBox:\n"
+
+#~ msgid ""
+#~ "    Missing or bad %%BoundingBox: comment!\n"
+#~ "        REF: Page 39, %%BoundingBox:\n"
+#~ msgstr ""
+#~ "    Отсутствующий или неверный %%BoundingBox: комментарий!\n"
+#~ "        REF: Стр. 39, %%BoundingBox:\n"
+
+#~ msgid ""
+#~ "    Missing or bad %%Page: comments\n"
+#~ "        REF: Page 53, %%Page:\n"
+#~ msgstr ""
+#~ "    Отсутствует или неверная %%Page: комментарий\n"
+#~ "\t REF: Стр. 53, %%Page:\n"
+
+#~ msgid ""
+#~ "    Missing or bad %%Page: comments!\n"
+#~ "        REF: Page 53, %%Page:\n"
+#~ msgstr ""
+#~ "    Отсутствующая или неверная %%Page: комментарий!\n"
+#~ "        REF: Стр. 53, %%Page:\n"
+
+#~ msgid ""
+#~ "    Missing or bad %%Pages: comment\n"
+#~ "        REF: Page 43, %%Pages:\n"
+#~ msgstr ""
+#~ "    Отсутствуют или неверные %%Pages:  комментарий\n"
+#~ "\t REF: Стр. 43, %%Pages:\n"
+
+#~ msgid ""
+#~ "    Missing or bad %%Pages: comment!\n"
+#~ "        REF: Page 43, %%Pages:\n"
+#~ msgstr ""
+#~ "    Отсутствующие или неверные %%Pages: комментарий!\n"
+#~ "        REF: Стр. 43, %%Pages:\n"
+
+#~ msgid "    NO ERRORS FOUND\n"
+#~ msgstr "    ОШИБОК НЕ ОБНАРУЖЕНО\n"
+
+#~ msgid "    Saw %d lines that exceeded 255 characters\n"
+#~ msgstr "\tНайдено %d строк, длина которых превышает 255 символов\n"
+
+#~ msgid "    Saw %d lines that exceeded 255 characters!\n"
+#~ msgstr "    Обнаружено строк длиннее 255 символов: %d!\n"
+
+#~ msgid "    Too many %%BeginDocument comments\n"
+#~ msgstr "   Слишком много комментариев %%BeginDocument\n"
+
+#~ msgid "    Too many %%BeginDocument comments!\n"
+#~ msgstr "    Слишком много комментариев %%BeginDocument!\n"
+
+#~ msgid "    Too many %%EndDocument comments\n"
+#~ msgstr "   Слишком много комментариев %%EndDocument\n"
+
+#~ msgid "    Too many %%EndDocument comments!\n"
+#~ msgstr "    Слишком много комментариев %%EndDocument!\n"
+
+#~ msgid "    Warning: file contains binary data\n"
+#~ msgstr "    WARNING: файл содержит бинарные данные\n"
+
+#~ msgid "    Warning: file contains binary data!\n"
+#~ msgstr "    WARNING: файл содержит бинарные данные!\n"
+
+#~ msgid "    Warning: no %%EndComments comment in file\n"
+#~ msgstr "    WARNING: нет комментария %%EndComments в файле\n"
+
+#~ msgid "    Warning: no %%EndComments comment in file!\n"
+#~ msgstr "    WARNING: нет комментария %%EndComments в файле!\n"
+
+#~ msgid "    Warning: obsolete DSC version %.1f in file\n"
+#~ msgstr "    WARNING: устаревшая версия DSC %.1f в файле\n"
+
+#~ msgid "    Warning: obsolete DSC version %.1f in file!\n"
+#~ msgstr "    WARNING: устаревшая версия DSC %.1f в файле!\n"
+
+#~ msgid " FAIL\n"
+#~ msgstr " FAIL\n"
+
+#~ msgid ""
+#~ " FAIL\n"
+#~ "      **FAIL**  Unable to open PPD file - %s\n"
+#~ msgstr ""
+#~ " FAIL\n"
+#~ "      **FAIL**  Не удается открыть PPD-файл – %s\n"
+
+#~ msgid ""
+#~ " FAIL\n"
+#~ "      **FAIL**  Unable to open PPD file - %s on line %d.\n"
+#~ msgstr ""
+#~ " FAIL\n"
+#~ "      **FAIL**  Не удается открыть PPD-файл – %s в строке %d.\n"
+
+#~ msgid " PASS\n"
+#~ msgstr " PASS\n"
+
+#~ msgid "#10 Envelope"
+#~ msgstr "#10 Envelope"
+
+#~ msgid "#11 Envelope"
+#~ msgstr "#11 Envelope"
+
+#~ msgid "#12 Envelope"
+#~ msgstr "#12 Envelope"
+
+#~ msgid "#14 Envelope"
+#~ msgstr "#14 Envelope"
+
+#~ msgid "#9 Envelope"
+#~ msgstr "#9 Envelope"
+
+#~ msgid "%-6s %-10.10s %-4d %-10d %-27.27s %.0f bytes\n"
+#~ msgstr "%-6s %-10.10s %-4d %-10d %-27.27s %.0f байт\n"
+
+#~ msgid "%-7s %-7.7s %-7d %-31.31s %.0f bytes\n"
+#~ msgstr "%-7s %-7.7s %-7d %-31.31s %.0f байт\n"
+
+#~ msgid "%.0f x %.0f millimeters"
+#~ msgstr "%.0f x %.0f мм"
+
+#~ msgid "%.0f x %.0f to %.0f x %.0f millimeters"
+#~ msgstr "%.0f x %.0f — %.0f x %.0f мм"
+
+#~ msgid "%.2f x %.2f inches"
+#~ msgstr "%.2f x %.2f дюймов"
+
+#~ msgid "%.2f x %.2f to %.2f x %.2f inches"
+#~ msgstr "%.2f x %.2f-%.2f x %.2f дюймов"
+
+#~ msgid "%s accepting requests since %s\n"
+#~ msgstr "%s принимает запросы с момента %s\n"
+
+#~ msgid "%s is not implemented by the CUPS version of lpc.\n"
+#~ msgstr "%s не выполнено версией CUPS для lpc.\n"
+
+#~ msgid "%s is not ready\n"
+#~ msgstr "%s не готов\n"
+
+#~ msgid "%s is ready\n"
+#~ msgstr "%s готов\n"
+
+#~ msgid "%s is ready and printing\n"
+#~ msgstr "%s готов и печатает\n"
+
+#~ msgid ""
+#~ "%s not accepting requests since %s -\n"
+#~ "\t%s\n"
+#~ msgstr ""
+#~ "%s не принимает запросы с момента %s -\n"
+#~ "\t%s\n"
+
+#~ msgid "%s not supported"
+#~ msgstr "%s не поддерживается"
+
+#~ msgid "%s not supported!"
+#~ msgstr "%s не поддерживается!"
+
+#~ msgid "%s/%s accepting requests since %s\n"
+#~ msgstr "%s/%s принимает запросы с момента %s\n"
+
+#~ msgid ""
+#~ "%s/%s not accepting requests since %s -\n"
+#~ "\t%s\n"
+#~ msgstr ""
+#~ "%s/%s не принимает запросы с момента %s -\n"
+#~ "\t%s\n"
+
+#~ msgid "%s: %-33.33s [job %d localhost]\n"
+#~ msgstr "%s: %-33.33s [задание %d localhost]\n"
+
+#~ msgid "%s: %s failed: %s\n"
+#~ msgstr "%s: ошибка %s: %s\n"
+
+#~ msgid "%s: Don't know what to do\n"
+#~ msgstr "%s: Дальнейшие действия неизвестны\n"
+
+#~ msgid "%s: Don't know what to do!\n"
+#~ msgstr "%s: Дальнейшие действия неизвестны!\n"
+
+#~ msgid ""
+#~ "%s: Error - %s environment variable names non-existent destination \"%s"
+#~ "\"\n"
+#~ msgstr ""
+#~ "%s: Ошибка - %s переменная окружения указывает на несуществующее "
+#~ "назначение \"%s\"\n"
+
+#~ msgid ""
+#~ "%s: Error - %s environment variable names non-existent destination \"%s"
+#~ "\"!\n"
+#~ msgstr ""
+#~ "%s: Ошибка – %s переменная окружения указывает несуществующее назначение "
+#~ "«%s»!\n"
+
+#~ msgid "%s: Error - bad job ID\n"
+#~ msgstr "%s: Ошибка - неверный ID задания\n"
+
+#~ msgid "%s: Error - bad job ID!\n"
+#~ msgstr "%s: Ошибка – неверный ID задания!\n"
+
+#~ msgid "%s: Error - cannot print files and alter jobs simultaneously\n"
+#~ msgstr ""
+#~ "%s: Ошибка - невозможно печатать файлы и редактировать задания "
+#~ "одновременно\n"
+
+#~ msgid "%s: Error - cannot print files and alter jobs simultaneously!\n"
+#~ msgstr ""
+#~ "%s: Ошибка – невозможно одновременно печатать файлы и изменять задания!\n"
+
+#~ msgid ""
+#~ "%s: Error - cannot print from stdin if files or a job ID are provided\n"
+#~ msgstr ""
+#~ "%s: Ошибка - не удается печать из stdin, если предоставлены файлы или ID "
+#~ "задания\n"
+
+#~ msgid ""
+#~ "%s: Error - cannot print from stdin if files or a job ID are provided!\n"
+#~ msgstr ""
+#~ "%s: Ошибка – не удается печатать из stdin, если предоставлены файлы или "
+#~ "ID задания!\n"
+
+#~ msgid "%s: Error - expected character set after '-S' option\n"
+#~ msgstr "%s: Ошибка - после параметра '-S' должен идти набор символов\n"
+
+#~ msgid "%s: Error - expected character set after '-S' option!\n"
+#~ msgstr "%s: Ошибка – после параметра «-S» должен идти набор символов!\n"
+
+#~ msgid "%s: Error - expected content type after '-T' option\n"
+#~ msgstr "%s: Ошибка - после параметра '-T' должен быть указан тип контента\n"
+
+#~ msgid "%s: Error - expected content type after '-T' option!\n"
+#~ msgstr ""
+#~ "%s: Ошибка – после параметра «-T» должен быть указан тип контента!\n"
+
+#~ msgid "%s: Error - expected copies after '-n' option\n"
+#~ msgstr ""
+#~ "%s: Ошибка - после параметра '-n' должно быть указано количество копий\n"
+
+#~ msgid "%s: Error - expected copies after '-n' option!\n"
+#~ msgstr ""
+#~ "%s: Ошибка – после параметра «-n» должно быть указано количество копий!\n"
+
+#~ msgid "%s: Error - expected copy count after '-#' option\n"
+#~ msgstr "%s: Ошибка - после параметра '-#' должен быть указан номер копии\n"
+
+#~ msgid "%s: Error - expected copy count after '-#' option!\n"
+#~ msgstr "%s: Ошибка – после параметра «-#» должен быть указан номер копии!\n"
+
+#~ msgid "%s: Error - expected destination after '-P' option\n"
+#~ msgstr "%s: Ошибка - после параметра '-P' должно быть указано назначение\n"
+
+#~ msgid "%s: Error - expected destination after '-P' option!\n"
+#~ msgstr "%s: Ошибка – после параметра «-P» должно быть указано назначение!\n"
+
+#~ msgid "%s: Error - expected destination after '-b' option\n"
+#~ msgstr "%s: Ошибка - после параметра '-b' должно быть указано назначение\n"
+
+#~ msgid "%s: Error - expected destination after '-b' option!\n"
+#~ msgstr "%s: Ошибка – после параметра «-b» должно быть указано назначение!\n"
+
+#~ msgid "%s: Error - expected destination after '-d' option\n"
+#~ msgstr "%s: Ошибка - после параметра '-d' должно быть указано назначение\n"
+
+#~ msgid "%s: Error - expected destination after '-d' option!\n"
+#~ msgstr "%s: Ошибка – после параметра «-d» должно быть указано назначение!\n"
+
+#~ msgid "%s: Error - expected form after '-f' option\n"
+#~ msgstr "%s: Ошибка - после параметра '-f' должна быть указана форма\n"
+
+#~ msgid "%s: Error - expected form after '-f' option!\n"
+#~ msgstr "%s: Ошибка – после параметра «-f» должна быть указана форма!\n"
+
+#~ msgid "%s: Error - expected hold name after '-H' option\n"
+#~ msgstr "%s: Ошибка - после параметра '-H' должно быть указано имя хоста\n"
+
+#~ msgid "%s: Error - expected hold name after '-H' option!\n"
+#~ msgstr "%s: Ошибка – после параметра «-H» должно быть указано имя хоста!\n"
+
+#~ msgid "%s: Error - expected hostname after '-H' option\n"
+#~ msgstr "%s: Ошибка - после параметра '-H' должно быть указано имя хоста\n"
+
+#~ msgid "%s: Error - expected hostname after '-H' option!\n"
+#~ msgstr "%s: Ошибка – после параметра «-H» должно быть указано имя хоста!\n"
+
+#~ msgid "%s: Error - expected hostname after '-h' option\n"
+#~ msgstr "%s: Ошибка - после параметра '-h' должно быть указано имя хоста\n"
+
+#~ msgid "%s: Error - expected hostname after '-h' option!\n"
+#~ msgstr "%s: Ошибка – после параметра «-h» должно быть указано имя хоста!\n"
+
+#~ msgid "%s: Error - expected mode list after '-y' option\n"
+#~ msgstr ""
+#~ "%s: Ошибка - после параметра '-y' должен быть указан список режимов\n"
+
+#~ msgid "%s: Error - expected mode list after '-y' option!\n"
+#~ msgstr ""
+#~ "%s: Ошибка – после параметра «-y» должен быть указан список режимов!\n"
+
+#~ msgid "%s: Error - expected name after '-%c' option\n"
+#~ msgstr "%s: Ошибка - после параметра '-%c' должно быть указано имя\n"
+
+#~ msgid "%s: Error - expected name after '-%c' option!\n"
+#~ msgstr "%s: Ошибка – после параметра «-%c» должно быть указано имя!\n"
+
+#~ msgid "%s: Error - expected option string after '-o' option\n"
+#~ msgstr ""
+#~ "%s: Ошибка - после параметра '-o' должна быть указана строка параметра\n"
+
+#~ msgid "%s: Error - expected option string after '-o' option!\n"
+#~ msgstr ""
+#~ "%s: Ошибка – после параметра «-o» должна быть указана строка параметра!\n"
+
+#~ msgid "%s: Error - expected page list after '-P' option\n"
+#~ msgstr "%s: Ошибка - после параметра '-H' должно быть указано имя хоста\n"
+
+#~ msgid "%s: Error - expected page list after '-P' option!\n"
+#~ msgstr "%s: Ошибка – после параметра «-P» должен идти список страниц!\n"
+
+#~ msgid "%s: Error - expected priority after '-%c' option\n"
+#~ msgstr "%s: Ошибка - после параметра '-%c' должен быть указан приоритет\n"
+
+#~ msgid "%s: Error - expected priority after '-%c' option!\n"
+#~ msgstr "%s: Ошибка – после параметра «-%c» должен быть указан приоритет!\n"
+
+#~ msgid "%s: Error - expected reason text after '-r' option\n"
+#~ msgstr "%s: Ошибка - после параметра '-r' должен идти текст причины\n"
+
+#~ msgid "%s: Error - expected reason text after '-r' option!\n"
+#~ msgstr "%s: Ошибка – после параметра «-r» должен идти текст причины!\n"
+
+#~ msgid "%s: Error - expected title after '-t' option\n"
+#~ msgstr "%s: Ошибка - после параметра '-t' должен быть указан заголовок\n"
+
+#~ msgid "%s: Error - expected title after '-t' option!\n"
+#~ msgstr "%s: Ошибка – после параметра «-t» должен быть указан заголовок!\n"
+
+#~ msgid "%s: Error - expected username after '-U' option\n"
+#~ msgstr ""
+#~ "%s: Ошибка - после параметра '-U'должно быть указано имя пользователя\n"
+
+#~ msgid "%s: Error - expected username after '-U' option!\n"
+#~ msgstr ""
+#~ "%s: Ошибка – после параметра «-U» должно быть указано имя пользователя!\n"
+
+#~ msgid "%s: Error - expected username after '-U' option!n"
+#~ msgstr ""
+#~ "%s: Ошибка - после параметра '-U'должно быть указано имя пользователя\n"
+
+#~ msgid "%s: Error - expected username after '-u' option\n"
+#~ msgstr ""
+#~ "%s: Ошибка - после параметра '-u'должно быть указано имя пользователя\n"
+
+#~ msgid "%s: Error - expected username after '-u' option!\n"
+#~ msgstr ""
+#~ "%s: Ошибка – после параметра «-u» должно быть указано имя пользователя!\n"
+
+#~ msgid "%s: Error - expected value after '-%c' option\n"
+#~ msgstr "%s: Ошибка - после параметра '-%c'должно быть указано значение\n"
+
+#~ msgid "%s: Error - expected value after '-%c' option!\n"
+#~ msgstr "%s: Ошибка – после параметра «-%c» должно быть указано значение!\n"
+
+#~ msgid ""
+#~ "%s: Error - need \"completed\", \"not-completed\", or \"all\" after '-W' "
+#~ "option\n"
+#~ msgstr ""
+#~ "%s: Ошибка - требуется \"завершено\",\"не завершено\" или \"все\" после "
+#~ "параметра '-W'\n"
+
+#~ msgid ""
+#~ "%s: Error - need \"completed\", \"not-completed\", or \"all\" after '-W' "
+#~ "option!\n"
+#~ msgstr ""
+#~ "%s: Ошибка – требуется «завершено», «не завершено» или «все» после "
+#~ "параметра «-W»!\n"
+
+#~ msgid "%s: Error - no default destination available.\n"
+#~ msgstr "%s: Ошибка – нет доступного назначения по умолчанию.\n"
+
+#~ msgid "%s: Error - priority must be between 1 and 100.\n"
+#~ msgstr "%s: Ошибка – приоритет должен быть от 1 до 100.\n"
+
+#~ msgid "%s: Error - scheduler not responding\n"
+#~ msgstr "%s: Ошибка - планировщик не отвечает\n"
+
+#~ msgid "%s: Error - scheduler not responding!\n"
+#~ msgstr "%s: Ошибка – планировщик не отвечает!\n"
+
+#~ msgid "%s: Error - too many files - \"%s\"\n"
+#~ msgstr "%s: Ошибка – слишком много файлов – «%s»\n"
+
+#~ msgid "%s: Error - unable to access \"%s\" - %s\n"
+#~ msgstr "%s: Ошибка – не удается получить доступ к «%s» – %s\n"
+
+#~ msgid "%s: Error - unable to queue from stdin - %s\n"
+#~ msgstr "%s: Ошибка – не удается поставить в очередь из stdin - %s\n"
+
+#~ msgid "%s: Error - unknown destination \"%s\"\n"
+#~ msgstr "%s: Ошибка - неизвестное назначение \"%s\"\n"
+
+#~ msgid "%s: Error - unknown destination \"%s\"!\n"
+#~ msgstr "%s: Ошибка – неизвестное назначение «%s»!\n"
+
+#~ msgid "%s: Error - unknown destination \"%s/%s\"\n"
+#~ msgstr "%s: ошибка - неизвестное назначение \"%s/%s\"\n"
+
+#~ msgid "%s: Error - unknown destination \"%s/%s\"!\n"
+#~ msgstr "%s: Ошибка – неизвестное назначение «%s/%s»!\n"
+
+#~ msgid "%s: Error - unknown option '%c'\n"
+#~ msgstr "%s: Ошибка - неизвестный параметр '%c'\n"
+
+#~ msgid "%s: Error - unknown option '%c'!\n"
+#~ msgstr "%s: Ошибка – неизвестный параметр «%c»!\n"
+
+#~ msgid "%s: Error - unknown option '%s'\n"
+#~ msgstr "%s: Ошибка - неизвестный параметр '%s'\n"
+
+#~ msgid "%s: Error - unknown option '%s'!\n"
+#~ msgstr "%s: Ошибка – неизвестный параметр «%s»!\n"
+
+#~ msgid "%s: Expected job ID after '-i' option\n"
+#~ msgstr "%s: Ожидается ID задания после параметра '-i'\n"
+
+#~ msgid "%s: Expected job ID after '-i' option!\n"
+#~ msgstr "%s: После параметра «-i» должен быть указан ID задания!\n"
+
+#~ msgid "%s: Filter \"%s\" not available: %s\n"
+#~ msgstr "%s: Фильтр «%s» недоступен: %s\n"
+
+#~ msgid "%s: Invalid destination name in list \"%s\"\n"
+#~ msgstr "%s: Недопустимое имя назначения в списке \"%s\"\n"
+
+#~ msgid "%s: Invalid destination name in list \"%s\"!\n"
+#~ msgstr "%s: Неверное имя назначения в списке «%s»!\n"
+
+#~ msgid "%s: Invalid filter string \"%s\"\n"
+#~ msgstr "%s: Неверная строка фильтра «%s»\n"
+
+#~ msgid "%s: Need job ID ('-i jobid') before '-H restart'\n"
+#~ msgstr "%s: Необходимо указать ID задания ('-i jobid') перед '-H restart'\n"
+
+#~ msgid "%s: Need job ID ('-i jobid') before '-H restart'!\n"
+#~ msgstr "%s: Требуется ID задания («-i jobid») перед «-H restart»!\n"
+
+#~ msgid "%s: No filter to convert from %s/%s to %s/%s\n"
+#~ msgstr ""
+#~ "%s: Отсутствует фильтр, необходимый для преобразования из %s/%s в %s/%s\n"
+
+#~ msgid "%s: No filter to convert from %s/%s to %s/%s!\n"
+#~ msgstr "%s: Нет фильтра для преобразования из %s/%s в %s/%s!\n"
+
+#~ msgid "%s: Operation failed: %s\n"
+#~ msgstr "%s: Операция не удалась: %s\n"
+
+#~ msgid "%s: Sorry, no encryption support compiled in\n"
+#~ msgstr "%s:  Нет скомпилированной поддержки шифрования\n"
+
+#~ msgid "%s: Sorry, no encryption support compiled in!\n"
+#~ msgstr "%s: Нет скомпилированной поддержки шифрования!\n"
+
+#~ msgid "%s: Unable to connect to server\n"
+#~ msgstr "%s: Не удается подключиться к серверу\n"
+
+#~ msgid "%s: Unable to contact server\n"
+#~ msgstr "%s: Не удается установить связь с сервером\n"
+
+#~ msgid "%s: Unable to contact server!\n"
+#~ msgstr "%s: Не удается установить связь с сервером!\n"
+
+#~ msgid "%s: Unable to determine MIME type of \"%s\"\n"
+#~ msgstr "%s: Не удается определить тип MIME \"%s\"\n"
+
+#~ msgid "%s: Unable to determine MIME type of \"%s\"!\n"
+#~ msgstr "%s: Не удается определить тип MIME «%s»!\n"
+
+#~ msgid "%s: Unable to open %s - %s\n"
+#~ msgstr "%s: Не удается открыть %s – %s\n"
+
+#~ msgid "%s: Unable to open %s - %s on line %d.\n"
+#~ msgstr "%s: Не удается открыть %s – %s в строке %d.\n"
+
+#~ msgid "%s: Unable to open %s: %s\n"
+#~ msgstr "%s: Не удается открыть %s: %s\n"
+
+#~ msgid "%s: Unable to open PPD file: %s on line %d\n"
+#~ msgstr "%s: Не удается открыть PPD-файл: %s в строке %d.\n"
+
+#~ msgid "%s: Unable to open PPD file: %s on line %d.\n"
+#~ msgstr "%s: Не удается открыть PPD файл: %s в строке %d.\n"
+
+#~ msgid "%s: Unable to read MIME database from \"%s\" or \"%s\"\n"
+#~ msgstr "%s: Не удается прочитать базу данных MIME из \"%s\" или \"%s\"\n"
+
+#~ msgid "%s: Unable to read MIME database from \"%s\" or \"%s\"!\n"
+#~ msgstr "%s: Не удается прочитать базу данных MIME в «%s» или «%s»!\n"
+
+#~ msgid "%s: Unknown destination \"%s\"\n"
+#~ msgstr "%s: Неизвестное назначение \"%s\"\n"
+
+#~ msgid "%s: Unknown destination \"%s\"!\n"
+#~ msgstr "%s: Неизвестное назначение «%s»!\n"
+
+#~ msgid "%s: Unknown destination MIME type %s/%s\n"
+#~ msgstr "%s: Неизвестный MIME-тип назначения %s/%s\n"
+
+#~ msgid "%s: Unknown destination MIME type %s/%s!\n"
+#~ msgstr "%s: Неизвестный MIME-тип назначения %s/%s!\n"
+
+#~ msgid "%s: Unknown option '%c'\n"
+#~ msgstr "%s: Неизвестный параметр '%c'\n"
+
+#~ msgid "%s: Unknown option '%c'!\n"
+#~ msgstr "%s: Неизвестный параметр «%c»!\n"
+
+#~ msgid "%s: Unknown source MIME type %s/%s\n"
+#~ msgstr "%s: Неизвестный MIME-тип источника %s/%s\n"
+
+#~ msgid "%s: Unknown source MIME type %s/%s!\n"
+#~ msgstr "%s: Неизвестный MIME-тип источника %s/%s!\n"
+
+#~ msgid ""
+#~ "%s: Warning - '%c' format modifier not supported - output may not be "
+#~ "correct\n"
+#~ msgstr ""
+#~ "%s: Внимание - модификатор формата '%c' не поддерживается - вывод может "
+#~ "быть неправильным\n"
+
+#~ msgid ""
+#~ "%s: Warning - '%c' format modifier not supported - output may not be "
+#~ "correct!\n"
+#~ msgstr ""
+#~ "%s: Внимание – модификатор формата «%c» не поддерживается – вывод может "
+#~ "быть неправильным!\n"
+
+#~ msgid "%s: Warning - character set option ignored\n"
+#~ msgstr "%s: Внимание - параметр набора символов пропущен\n"
+
+#~ msgid "%s: Warning - character set option ignored!\n"
+#~ msgstr "%s: Внимание – параметр набора символов пропущен!\n"
+
+#~ msgid "%s: Warning - content type option ignored\n"
+#~ msgstr "%s: Внимание - параметр типа контента пропущен\n"
+
+#~ msgid "%s: Warning - content type option ignored!\n"
+#~ msgstr "%s: Внимание – параметр типа контента пропущен!\n"
+
+#~ msgid "%s: Warning - form option ignored\n"
+#~ msgstr "%s: Внимание - параметр формы пропущен\n"
+
+#~ msgid "%s: Warning - form option ignored!\n"
+#~ msgstr "%s: Внимание – параметр формы пропущен!\n"
+
+#~ msgid "%s: Warning - mode option ignored\n"
+#~ msgstr "%s: Внимание - параметр режима пропущен\n"
+
+#~ msgid "%s: Warning - mode option ignored!\n"
+#~ msgstr "%s: Внимание – параметр режима пропущен!\n"
+
+#~ msgid ""
+#~ "%s: error - %s environment variable names non-existent destination \"%s"
+#~ "\"\n"
+#~ msgstr ""
+#~ "%s: ошибка - переменная окружения %s указывает на несуществующее значение "
+#~ "\"%s\"\n"
+
+#~ msgid ""
+#~ "%s: error - %s environment variable names non-existent destination \"%s"
+#~ "\"!\n"
+#~ msgstr ""
+#~ "%s: ошибка – переменная окружения %s указывает несуществующее назначение "
+#~ "«%s»!\n"
+
+#~ msgid "%s: error - expected option=value after '-o' option\n"
+#~ msgstr ""
+#~ "%s: ошибка - после параметра '-o' должна идти запись вида option=value\n"
+
+#~ msgid "%s: error - expected option=value after '-o' option!\n"
+#~ msgstr ""
+#~ "%s: ошибка – после параметра «-o» должна идти запись вида option=value!\n"
+
+#~ msgid "%s: error - no default destination available.\n"
+#~ msgstr "%s: ошибка – нет доступного назначения по умолчанию.\n"
+
+#~ msgid "10 x 11\""
+#~ msgstr "10 x 11\""
+
+#~ msgid "10 x 13\""
+#~ msgstr "10 x 13\""
+
+#~ msgid "10 x 14\""
+#~ msgstr "10 x 14\""
+
+#~ msgid "12 x 11\""
+#~ msgstr "12 x 11\""
+
+#~ msgid "15 x 11\""
+#~ msgstr "15 x 11\""
+
+#~ msgid "3.5\" Disk - 2 1/8 x 2 3/4\""
+#~ msgstr "Диск 3.5\" - 2 1/8 x 2 3/4\""
+
+#~ msgid "600 DPI Grayscale"
+#~ msgstr "600dpi, оттенки серого"
+
+#~ msgid "60x720dpi"
+#~ msgstr "60x720dpi"
+
+#~ msgid "7 x 9\""
+#~ msgstr "7 x 9\""
+
+#~ msgid "8 x 10\""
+#~ msgstr "8 x 10\""
+
+#~ msgid "9 x 11\""
+#~ msgstr "9 x 11\""
+
+#~ msgid "9 x 12\""
+#~ msgstr "9 x 12\""
+
+#~ msgid "?Invalid help command unknown\n"
+#~ msgstr "?Неверная команда справки неизвестна\n"
+
+#~ msgid "A Samba password is required to export printer drivers!"
+#~ msgstr "Для экспорта драйверов принтера требуется пароль Samba!"
+
+#~ msgid "A Samba username is required to export printer drivers!"
+#~ msgstr "Для экспорта драйверов принтера требуется имя пользователя Samba!"
+
+#~ msgid "A class named \"%s\" already exists"
+#~ msgstr "Класс с именем \"%s\" уже существует"
+
+#~ msgid "A class named \"%s\" already exists!"
+#~ msgstr "Класс с именем «%s» уже существует!"
+
+#~ msgid "A printer named \"%s\" already exists"
+#~ msgstr "Принтер с именем \"%s\" уже существует"
+
+#~ msgid "A printer named \"%s\" already exists!"
+#~ msgstr "Принтер с именем «%s» уже существует!"
+
+#~ msgid "A3 (Oversize)"
+#~ msgstr "A3 (расширенный)"
+
+#~ msgid "A4 (Oversize)"
+#~ msgstr "A4 (расширенный)"
+
+#~ msgid "A4 (Small)"
+#~ msgstr "A4 (уменьшенный)"
+
+#~ msgid "A5 (Oversize)"
+#~ msgstr "A5 (расширенный)"
+
+#~ msgid "ARCH A"
+#~ msgstr "ARCH A"
+
+#~ msgid "ARCH B"
+#~ msgstr "ARCH B"
+
+#~ msgid "Address - 1 1/8 x 3 1/2\""
+#~ msgstr "Адрес - 1 1/8 x 3 1/2\""
+
+#~ msgid "Attempt to set %s printer-state to bad value %d"
+#~ msgstr "Попытка установить %s printer-state на неверное значение %d"
+
+#~ msgid "Attempt to set %s printer-state to bad value %d!"
+#~ msgstr "Попытка установить %s printer-state на неверное значение %d!"
+
+#~ msgid "Attribute groups are out of order (%x < %x)"
+#~ msgstr "Группы атрибутов не действуют (%x < %x)"
+
+#~ msgid "Attribute groups are out of order (%x < %x)!"
+#~ msgstr "Группы атрибутов не действуют (%x < %x)!"
+
+#~ msgid "Bad device URI \"%s\"\n"
+#~ msgstr "Неверный URI устройства \"%s\"\n"
+
+#~ msgid "Bad device URI \"%s\"!\n"
+#~ msgstr "Неверный URI устройства «%s»!\n"
+
+#~ msgid "Bad device-uri \"%s\""
+#~ msgstr "Неверное значение device-uri \"%s\""
+
+#~ msgid "Bad device-uri \"%s\"!"
+#~ msgstr "Неверное значение device-uri «%s»!"
+
+#~ msgid "Bad device-uri scheme \"%s\""
+#~ msgstr "Неверная схема device-uri \"%s\""
+
+#~ msgid "Bad device-uri scheme \"%s\"!"
+#~ msgstr "Неверная схема device-uri «%s»!"
+
+#~ msgid "Bad document-format \"%s\""
+#~ msgstr "Неверное значение document-format \"%s\""
+
+#~ msgid "Bad document-format \"%s\"!"
+#~ msgstr "Неверное значение document-format «%s»!"
+
+#~ msgid "Bad filename buffer!"
+#~ msgstr "Ошибка в буфере filename!"
+
+#~ msgid "Bad font attribute: %s\n"
+#~ msgstr "Неверный атрибут шрифта: %s\n"
+
+#~ msgid "Bad job-priority value"
+#~ msgstr "Неверное значение job-priority"
+
+#~ msgid "Bad job-priority value!"
+#~ msgstr "Неверное значение job-priority!"
+
+#~ msgid "Bad job-sheets value \"%s\""
+#~ msgstr "Неверное значение job-sheets \"%s\""
+
+#~ msgid "Bad job-sheets value \"%s\"!"
+#~ msgstr "Неверное значение job-sheets «%s»!"
+
+#~ msgid "Bad job-sheets value type"
+#~ msgstr "Неверный тип значения job-sheets"
+
+#~ msgid "Bad job-sheets value type!"
+#~ msgstr "Неверный тип значения job-sheets!"
+
+#~ msgid "Bad job-state value"
+#~ msgstr "Неверное значение job-state"
+
+#~ msgid "Bad job-state value!"
+#~ msgstr "Неверное значение job-state!"
+
+#~ msgid "Bad job-uri attribute \"%s\""
+#~ msgstr "Неверный атрибут job-uri \"%s\""
+
+#~ msgid "Bad job-uri attribute \"%s\"!"
+#~ msgstr "Неверный атрибут job-uri «%s»!"
+
+#~ msgid "Bad notify-pull-method \"%s\""
+#~ msgstr "Неверное значение notify-pull-method \"%s\""
+
+#~ msgid "Bad notify-pull-method \"%s\"!"
+#~ msgstr "Неверное значение notify-pull-method «%s»!"
+
+#~ msgid "Bad notify-recipient-uri URI \"%s\""
+#~ msgstr "Неверный URI notify-recipient-uri \"%s\""
+
+#~ msgid "Bad notify-recipient-uri URI \"%s\"!"
+#~ msgstr "Неверный URI notify-recipient-uri «%s»!"
+
+#~ msgid "Bad option + choice on line %d"
+#~ msgstr "Неверный параметр + выбор в строке %d"
+
+#~ msgid "Bad option + choice on line %d!"
+#~ msgstr "Неверный параметр + выбор в строке %d!"
+
+#~ msgid "Bad port-monitor \"%s\""
+#~ msgstr "Неверное значение port-monitor \"%s\""
+
+#~ msgid "Bad port-monitor \"%s\"!"
+#~ msgstr "Неверное значение port-monitor «%s»!"
+
+#~ msgid "Bad printer-state value %d"
+#~ msgstr "Неверное значение printer-state %d"
+
+#~ msgid "Bad printer-state value %d!"
+#~ msgstr "Неверное значение printer-state %d!"
+
+#~ msgid "Bad request ID %d"
+#~ msgstr "Неверный ID запроса %d"
+
+#~ msgid "Bad request version number %d.%d"
+#~ msgstr "Неверный номер версии запроса %d.%d"
+
+#~ msgid "Bad request version number %d.%d!"
+#~ msgstr "Неверный номер версии запроса %d.%d!"
+
+#~ msgid "Bad subscription ID!"
+#~ msgstr "Неверный ID подписки!"
+
+#~ msgid "Billing Information: "
+#~ msgstr "Реквизиты для выставления счета: "
+
+#~ msgid "C0 Envelope"
+#~ msgstr "Конверт C0"
+
+#~ msgid "C1 Envelope"
+#~ msgstr "Конверт C1"
+
+#~ msgid "C2 Envelope"
+#~ msgstr "Конверт C2"
+
+#~ msgid "C3 Envelope"
+#~ msgstr "Конверт C3"
+
+#~ msgid "C4"
+#~ msgstr "C4"
+
+#~ msgid "C4 Envelope"
+#~ msgstr "Конверт C4"
+
+#~ msgid "C5"
+#~ msgstr "C5"
+
+#~ msgid "C5 Envelope"
+#~ msgstr "Конверт C5"
+
+#~ msgid "C6"
+#~ msgstr "C6"
+
+#~ msgid "C6 Envelope"
+#~ msgstr "Конверт C6"
+
+#~ msgid "C65 Envelope"
+#~ msgstr "Конверт C65"
+
+#~ msgid "C7 Envelope"
+#~ msgstr "Конверт C7"
+
+#~ msgid "Character set \"%s\" not supported"
+#~ msgstr "Набор символов \"%s\" не поддерживается"
+
+#~ msgid "Character set \"%s\" not supported!"
+#~ msgstr "Набор символов «%s» не поддерживается!"
+
+#~ msgid "Chou3 Envelope"
+#~ msgstr "Конверт Chou3"
+
+#~ msgid "Chou4 Envelope"
+#~ msgstr "Конверт Chou4"
+
+#~ msgid ""
+#~ "Commands may be abbreviated.  Commands are:\n"
+#~ "\n"
+#~ "exit    help    quit    status  ?\n"
+#~ msgstr ""
+#~ "Команды могут быть сокращены.  Команды:\n"
+#~ "\n"
+#~ "exit    help    quit    status  ?\n"
+
+#~ msgid "Could not scan type \"%s\""
+#~ msgstr "Не удалось сканировать тип \"%s\""
+
+#~ msgid "Could not scan type \"%s\"!"
+#~ msgstr "Не удалось сканировать тип «%s»!"
+
+#~ msgid "Cover open."
+#~ msgstr "Крышка открыта."
+
+#~ msgid "Created On: "
+#~ msgstr "Дата создания: "
+
+#~ msgid "DL"
+#~ msgstr "DL"
+
+#~ msgid "DL Envelope"
+#~ msgstr "Конверт DL"
+
+#~ msgid "Description: "
+#~ msgstr "Описание: "
+
+#~ msgid "Developer almost empty."
+#~ msgstr "Проявитель почти закончился."
+
+#~ msgid "Developer empty!"
+#~ msgstr "Проявитель закончился!"
+
+#~ msgid ""
+#~ "Device: uri = %s\n"
+#~ "        class = %s\n"
+#~ "        info = %s\n"
+#~ "        make-and-model = %s\n"
+#~ "        device-id = %s\n"
+#~ "        location = %s\n"
+#~ msgstr ""
+#~ "Устройство: uri = %s\n"
+#~ "        class = %s\n"
+#~ "        info = %s\n"
+#~ "        make-and-model = %s\n"
+#~ "        device-id = %s\n"
+#~ "        location = %s\n"
+
+#~ msgid "Document %d not found in job %d."
+#~ msgstr "Документ %d в задании %d не найден."
+
+#~ msgid "Door open."
+#~ msgstr "Дверца открыта."
+
+#~ msgid "Double Postcard"
+#~ msgstr "Двойная открытка"
+
+#~ msgid "Driver Name: "
+#~ msgstr "Имя драйвера: "
+
+#~ msgid "Driver Version: "
+#~ msgstr "Версия драйвера: "
+
+#~ msgid "EMERG: Unable to allocate memory for page info: %s\n"
+#~ msgstr "EMERG: Не удается выделить память для информации страницы: %s\n"
+
+#~ msgid "EMERG: Unable to allocate memory for pages array: %s\n"
+#~ msgstr "EMERG: Не удается выделить память для массива страниц: %s\n"
+
+#~ msgid "ERROR: %s job-id user title copies options [file]\n"
+#~ msgstr "ERROR: %s задание пользователь название копий параметры [файл]\n"
+
+#~ msgid "ERROR: Bad %%BoundingBox: comment seen\n"
+#~ msgstr "ERROR: Неверный %%BoundingBox: комментарий просмотрен\n"
+
+#~ msgid "ERROR: Bad %%BoundingBox: comment seen!\n"
+#~ msgstr "ERROR: Неверный %%BoundingBox: комментарий просмотрен!\n"
+
+#~ msgid "ERROR: Bad %%IncludeFeature: comment\n"
+#~ msgstr "ERROR: Неверный %%IncludeFeature: комментарий\n"
+
+#~ msgid "ERROR: Bad %%IncludeFeature: comment!\n"
+#~ msgstr "ERROR: Неверный %%IncludeFeature: комментарий!\n"
+
+#~ msgid "ERROR: Bad %%Page: comment in file\n"
+#~ msgstr "ERROR: Неверный %%Page: комментарий в файле\n"
+
+#~ msgid "ERROR: Bad %%Page: comment in file!\n"
+#~ msgstr "ERROR: Неверная %%Page: комментарий в файле!\n"
+
+#~ msgid "ERROR: Bad %%PageBoundingBox: comment in file\n"
+#~ msgstr "ERROR: Неверный %%PageBoundingBox: комментарий в файле\n"
+
+#~ msgid "ERROR: Bad %%PageBoundingBox: comment in file!\n"
+#~ msgstr "ERROR: Неверный %%PageBoundingBox: комментарий в файле!\n"
+
+#~ msgid "ERROR: Bad SCSI device file \"%s\"!\n"
+#~ msgstr "ERROR: Неверный файл устройства SCSI «%s»!\n"
+
+#~ msgid "ERROR: Bad charset file %s\n"
+#~ msgstr "ERROR: Неверный файл набора символов %s\n"
+
+#~ msgid "ERROR: Bad charset type %s\n"
+#~ msgstr "ERROR: Неверный тип набора символов %s\n"
+
+#~ msgid "ERROR: Bad columns value %d\n"
+#~ msgstr "ERROR: Неверное значение количества столбцов %d\n"
+
+#~ msgid "ERROR: Bad columns value %d!\n"
+#~ msgstr "ERROR: Неверное значение количества столбцов %d!\n"
+
+#~ msgid "ERROR: Bad cpi value %f\n"
+#~ msgstr "ERROR: Неверное значение cpi %f\n"
+
+#~ msgid "ERROR: Bad cpi value %f!\n"
+#~ msgstr "ERROR: Неверное значение cpi %f!\n"
+
+#~ msgid "ERROR: Bad font description line: %s\n"
+#~ msgstr "ERROR: Неверная строка описания шрифта: %s\n"
+
+#~ msgid "ERROR: Bad lpi value %f\n"
+#~ msgstr "ERROR: Неверное значение lpi %f\n"
+
+#~ msgid "ERROR: Bad lpi value %f!\n"
+#~ msgstr "ERROR: Неверное значение lpi %f!\n"
+
+#~ msgid "ERROR: Bad page setup\n"
+#~ msgstr "ERROR: Неверные параметры страницы\n"
+
+#~ msgid "ERROR: Bad page setup!\n"
+#~ msgstr "ERROR: Неверные параметры страницы!\n"
+
+#~ msgid "ERROR: Bad text direction %s\n"
+#~ msgstr "ERROR: Неверное направление текста %s\n"
+
+#~ msgid "ERROR: Bad text width %s\n"
+#~ msgstr "ERROR: Неверная ширина текста %s\n"
+
+#~ msgid "ERROR: Destination printer does not exist\n"
+#~ msgstr "ERROR: Целевой принтер не существует\n"
+
+#~ msgid "ERROR: Destination printer does not exist!\n"
+#~ msgstr "ERROR: Целевой принтер не существует!\n"
+
+#~ msgid "ERROR: Duplicate %%BoundingBox: comment seen\n"
+#~ msgstr "ERROR: Дубликат %%BoundingBox: комментарий просмотрен\n"
+
+#~ msgid "ERROR: Duplicate %%BoundingBox: comment seen!\n"
+#~ msgstr "ERROR: Дубликат %%BoundingBox: комментарий просмотрен!\n"
+
+#~ msgid "ERROR: Duplicate %%Pages: comment seen\n"
+#~ msgstr "ERROR: Дубликат %%Pages: комментарий просмотрен\n"
+
+#~ msgid "ERROR: Duplicate %%Pages: comment seen!\n"
+#~ msgstr "ERROR: Дубликат %%Pages: комментарий просмотрен!\n"
+
+#~ msgid "ERROR: Empty print file\n"
+#~ msgstr "ERROR: Пустой файл печати\n"
+
+#~ msgid "ERROR: Empty print file!\n"
+#~ msgstr "ERROR: Пустой файл печати!\n"
+
+#~ msgid "ERROR: Error %d sending PAPSendData request: %s\n"
+#~ msgstr "ERROR: Ошибка %d при отправке запроса PAPSendData: %s\n"
+
+#~ msgid "ERROR: Expected quoted string on line %d of %s\n"
+#~ msgstr "ERROR: В строке %d из %s должна быть запись в ковычках\n"
+
+#~ msgid "ERROR: Expected quoted string on line %d of %s!\n"
+#~ msgstr "ERROR: В строке %d из %s должна быть строка в кавычках!\n"
+
+#~ msgid "ERROR: Fatal USB error\n"
+#~ msgstr "ERROR: Критический сбой USB\n"
+
+#~ msgid "ERROR: Fatal USB error!\n"
+#~ msgstr "ERROR: Критический сбой USB!\n"
+
+#~ msgid "ERROR: Invalid HP-GL/2 command seen, unable to print file!\n"
+#~ msgstr ""
+#~ "ERROR: Обнаружена неверная команда HP-GL/2, не удается напечатать файл!\n"
+
+#~ msgid "ERROR: Missing %%EndProlog\n"
+#~ msgstr "ERROR: Отсутствует %%endProlog\n"
+
+#~ msgid "ERROR: Missing %%EndProlog!\n"
+#~ msgstr "ERROR: Отсутствует %%EndProlog!\n"
+
+#~ msgid "ERROR: Missing %%EndSetup\n"
+#~ msgstr "ERROR: Отсутствует %%EndSetup\n"
+
+#~ msgid "ERROR: Missing %%EndSetup!\n"
+#~ msgstr "ERROR: Отсутствует %%EndSetup!\n"
+
+#~ msgid ""
+#~ "ERROR: Missing device URI on command-line and no DEVICE_URI environment "
+#~ "variable!\n"
+#~ msgstr ""
+#~ "ERROR: Отсутствует идентификатор URI устройства в командной строке и "
+#~ "переменная окружения DEVICE_URI!\n"
+
+#~ msgid "ERROR: Missing value on line %d of banner file\n"
+#~ msgstr "ERROR: Отсутствует значение в строке %d в файле баннера.\n"
+
+#~ msgid "ERROR: Missing value on line %d of banner file!\n"
+#~ msgstr "ERROR: Отсутствует значение в строке %d в файле баннера!\n"
+
+#~ msgid ""
+#~ "ERROR: Need a msgid line before any translation strings on line %d of %s\n"
+#~ msgstr ""
+#~ "ERROR: Требуется строка msgid перед строкой перевода в строке %d из %s\n"
+
+#~ msgid ""
+#~ "ERROR: Need a msgid line before any translation strings on line %d of "
+#~ "%s!\n"
+#~ msgstr ""
+#~ "ERROR: Требуется строка msgid перед строкой перевода в строке %d из %s!\n"
+
+#~ msgid "ERROR: No %%BoundingBox: comment in header\n"
+#~ msgstr "ERROR: Нет %%BoundingBox: комментарий в заголовке\n"
+
+#~ msgid "ERROR: No %%BoundingBox: comment in header!\n"
+#~ msgstr "ERROR: Нет %%BoundingBox: комментарий в заголовке!\n"
+
+#~ msgid "ERROR: No %%Pages: comment in header\n"
+#~ msgstr "ERROR: Нет %%Pages: комментарий в заголовке\n"
+
+#~ msgid "ERROR: No %%Pages: comment in header!\n"
+#~ msgstr "ERROR: Нет %%Pages: комментарий в заголовке!\n"
+
+#~ msgid ""
+#~ "ERROR: No device URI found in argv[0] or in DEVICE_URI environment "
+#~ "variable\n"
+#~ msgstr ""
+#~ "ERROR: Не обнаружено URI устройства в argv[0] или переменной окружения "
+#~ "DEVICE_URI\n"
+
+#~ msgid ""
+#~ "ERROR: No device URI found in argv[0] or in DEVICE_URI environment "
+#~ "variable!\n"
+#~ msgstr ""
+#~ "ERROR: Не обнаружено URI устройства в argv[0] или переменной окружения "
+#~ "DEVICE_URI!\n"
+
+#~ msgid "ERROR: No fonts in charset file %s\n"
+#~ msgstr "ERROR: Отсутствуют шрифты в файле набора символов %s\n"
+
+#~ msgid "ERROR: No pages found\n"
+#~ msgstr "ERROR: Страницы не найдены\n"
+
+#~ msgid "ERROR: No pages found!\n"
+#~ msgstr "ERROR: Страницы не найдены!\n"
+
+#~ msgid "ERROR: Out of paper\n"
+#~ msgstr "ERROR: Не хватает бумаги\n"
+
+#~ msgid "ERROR: Out of paper!\n"
+#~ msgstr "ERROR: Нет бумаги!\n"
+
+#~ msgid "ERROR: PRINTER environment variable not defined\n"
+#~ msgstr "ERROR: Переменная окружения PRINTER не указана\n"
+
+#~ msgid "ERROR: PRINTER environment variable not defined!\n"
+#~ msgstr "ERROR: Переменная окружения PRINTER не указана!\n"
+
+#~ msgid "ERROR: Print file was not accepted (%s)\n"
+#~ msgstr "ERROR: Файл печати не был принят (%s)\n"
+
+#~ msgid "ERROR: Print file was not accepted (%s)!\n"
+#~ msgstr "ERROR: Файл печати не принят (%s)!\n"
+
+#~ msgid "ERROR: Printer not responding\n"
+#~ msgstr "ERROR: Принтер не отвечает\n"
+
+#~ msgid "ERROR: Printer not responding!\n"
+#~ msgstr "ERROR: Принтер не отвечает!\n"
+
+#~ msgid "ERROR: Printer sent unexpected EOF\n"
+#~ msgstr "ERROR: Принтер преждевременно передал индикатор EOF\n"
+
+#~ msgid "ERROR: Remote host did not accept control file (%d)\n"
+#~ msgstr "ERROR: Удаленный хост не принял контрольный файл (%d)\n"
+
+#~ msgid "ERROR: Remote host did not accept data file (%d)\n"
+#~ msgstr "ERROR: Удаленный хост не принял файл данных (%d)\n"
+
+#~ msgid "ERROR: There was a timeout error while sending data to the printer\n"
+#~ msgstr ""
+#~ "ERROR: Сбой, связанный со временем ожидания при отправке данных на "
+#~ "принтер\n"
+
+#~ msgid "ERROR: Unable to add file %d to job: %s\n"
+#~ msgstr "ERROR: Не удается добавить файл %d к заданию: %s\n"
+
+#~ msgid "ERROR: Unable to cancel job %d: %s\n"
+#~ msgstr "ERROR: Не удается отменить задание %d: %s\n"
+
+#~ msgid "ERROR: Unable to connect to printer; will retry in 30 seconds...\n"
+#~ msgstr ""
+#~ "ERROR: Не удается подключиться к принтеру; повторная попытка через 30 "
+#~ "секунд...\n"
+
+#~ msgid "ERROR: Unable to copy PDF file"
+#~ msgstr "ERROR: Не удается копировать файл PDF"
+
+#~ msgid "ERROR: Unable to create pipe"
+#~ msgstr "ERROR: Не удается создать конвейер"
+
+#~ msgid "ERROR: Unable to create socket"
+#~ msgstr "ERROR: Не удается создать сокет"
+
+#~ msgid "ERROR: Unable to create temporary compressed print file: %s\n"
+#~ msgstr "ERROR: Не удается создать временный сжатый файл печати: %s\n"
+
+#~ msgid "ERROR: Unable to create temporary file"
+#~ msgstr "ERROR: Не удается создать временный файл"
+
+#~ msgid "ERROR: Unable to create temporary file - %s.\n"
+#~ msgstr "ERROR: Не удается создать временный файл – %s.\n"
+
+#~ msgid "ERROR: Unable to create temporary file: %s\n"
+#~ msgstr "ERROR: Не удается создать временный файл: %s\n"
+
+#~ msgid "ERROR: Unable to exec pictwpstops: %s\n"
+#~ msgstr "ERROR: Не удается выполнить pictwpstops: %s\n"
+
+#~ msgid "ERROR: Unable to execute gs program"
+#~ msgstr "ERROR: Не удается запустить программу gs"
+
+#~ msgid "ERROR: Unable to execute pdftops program"
+#~ msgstr "ERROR: Не удается запустить программу pdftops"
+
+#~ msgid "ERROR: Unable to execute pstops program"
+#~ msgstr "ERROR: Не удается выполнить pstops"
+
+#~ msgid "ERROR: Unable to fork pictwpstops: %s\n"
+#~ msgstr "ERROR: Не удается разветвить pictwpstops: %s\n"
+
+#~ msgid "ERROR: Unable to get PAP request"
+#~ msgstr "ERROR: Не удается получить запрос PAP"
+
+#~ msgid "ERROR: Unable to get PAP response"
+#~ msgstr "ERROR: Не удается получить ответ PAP"
+
+#~ msgid "ERROR: Unable to get PPD file for printer \"%s\" - %s.\n"
+#~ msgstr "ERROR: Не удается получить PPD-файл для принтера «%s» – %s.\n"
+
+#~ msgid "ERROR: Unable to get default AppleTalk zone"
+#~ msgstr "ERROR: Не удается определить стандартную зону AppleTalk"
+
+#~ msgid "ERROR: Unable to get job %d attributes (%s)\n"
+#~ msgstr "ERROR: Не удается получить список параметров (%s) задания %d \n"
+
+#~ msgid "ERROR: Unable to get job %d attributes (%s)!\n"
+#~ msgstr "ERROR: Не удается получить атрибуты задания %d (%s)!\n"
+
+#~ msgid "ERROR: Unable to get printer status (%s)\n"
+#~ msgstr "ERROR: Не удается получить статус (%s) принтера\n"
+
+#~ msgid "ERROR: Unable to get printer status (%s)!\n"
+#~ msgstr "ERROR: Не удается получить статус принтера (%s)!\n"
+
+#~ msgid "ERROR: Unable to locate printer '%s'\n"
+#~ msgstr "ERROR: Принтер '%s' не найден\n"
+
+#~ msgid "ERROR: Unable to locate printer '%s'!\n"
+#~ msgstr "ERROR: Не удается обнаружить принтер «%s»!\n"
+
+#~ msgid "ERROR: Unable to look for PAP response"
+#~ msgstr "ERROR: Не удается провести поиск ответа PAP"
+
+#~ msgid "ERROR: Unable to lookup AppleTalk printers"
+#~ msgstr "ERROR: Не удается провести поиск принтеров AppleTalk"
+
+#~ msgid "ERROR: Unable to make AppleTalk address"
+#~ msgstr "ERROR: Не удается ставить адрес AppleTalk"
+
+#~ msgid "ERROR: Unable to open \"%s\" - %s\n"
+#~ msgstr "ERROR: Не удается открыть «%s» – %s\n"
+
+#~ msgid "ERROR: Unable to open %s: %s\n"
+#~ msgstr "ERROR: Не удается открыть %s: %s\n"
+
+#~ msgid "ERROR: Unable to open PPD file\n"
+#~ msgstr "ERROR: Не удается открыть PPD файл\n"
+
+#~ msgid "ERROR: Unable to open banner file \"%s\" - %s\n"
+#~ msgstr "ERROR: Не удается открыть файл баннера «%s» – %s\n"
+
+#~ msgid "ERROR: Unable to open device file \"%s\": %s\n"
+#~ msgstr "ERROR: Не удается открыть файл устройства «%s»: %s\n"
+
+#~ msgid "ERROR: Unable to open file \"%s\" - %s\n"
+#~ msgstr "ERROR: Не удается открыть файл «%s» – %s\n"
+
+#~ msgid "ERROR: Unable to open file \"%s\": %s\n"
+#~ msgstr "ERROR: Не удается открыть файл «%s»: %s\n"
+
+#~ msgid "ERROR: Unable to open image file for printing\n"
+#~ msgstr "ERROR: Не удается открыть изображение для печати\n"
+
+#~ msgid "ERROR: Unable to open image file for printing!\n"
+#~ msgstr "ERROR: Не удается открыть файл изображения для печати!\n"
+
+#~ msgid "ERROR: Unable to open print file \"%s\": %s\n"
+#~ msgstr "ERROR: Не удается открыть файл печати «%s»: %s\n"
+
+#~ msgid "ERROR: Unable to open print file %s - %s\n"
+#~ msgstr "ERROR: Не удается открыть файл печати %s – %s\n"
+
+#~ msgid "ERROR: Unable to open print file %s: %s\n"
+#~ msgstr "ERROR: Не удается открыть файл печати %s: %s\n"
+
+#~ msgid "ERROR: Unable to open raster file - %s\n"
+#~ msgstr "ERROR: Не удается открыть растровый файл - %s\n"
+
+#~ msgid "ERROR: Unable to open temporary compressed print file: %s\n"
+#~ msgstr "ERROR: Не удается открыть временный сжатый файл печати: %s\n"
+
+#~ msgid "ERROR: Unable to open temporary file"
+#~ msgstr "ERROR: Не удается открыть временный файл"
+
+#~ msgid "ERROR: Unable to print %d text columns\n"
+#~ msgstr "ERROR: Не удается напечатать столбцы с текстом %d\n"
+
+#~ msgid "ERROR: Unable to print %d text columns!\n"
+#~ msgstr "ERROR: Не удается напечатать столбцы с текстом (%d)!\n"
+
+#~ msgid "ERROR: Unable to print %dx%d text page\n"
+#~ msgstr "ERROR: Не удается напечатать страницу с текстом %dx%d\n"
+
+#~ msgid "ERROR: Unable to print %dx%d text page!\n"
+#~ msgstr "ERROR: Не удается напечатать страницу с текстом %dx%d!\n"
+
+#~ msgid "ERROR: Unable to read print data"
+#~ msgstr "ERROR: Не удается считать данные печати"
+
+#~ msgid "ERROR: Unable to read print data\n"
+#~ msgstr "ERROR: Не удается прочитать данные для печати\n"
+
+#~ msgid "ERROR: Unable to read print data!\n"
+#~ msgstr "ERROR: Не удается считать данные печати!\n"
+
+#~ msgid "ERROR: Unable to reserve port"
+#~ msgstr "ERROR: Не удается зарезервировать порт"
+
+#~ msgid "ERROR: Unable to seek to offset %ld in file - %s\n"
+#~ msgstr "ERROR: Не удается перейти к смещению %ld в файле – %s\n"
+
+#~ msgid "ERROR: Unable to seek to offset %lld in file - %s\n"
+#~ msgstr "ERROR: Не удается перейти к смещению %lld в файле – %s\n"
+
+#~ msgid "ERROR: Unable to send LPD command"
+#~ msgstr "ERROR: Не удается отправить команду LPD"
+
+#~ msgid "ERROR: Unable to send PAP tickle request"
+#~ msgstr "ERROR: Не удается отправить контрольный запрос PAP"
+
+#~ msgid "ERROR: Unable to send initial PAP send data request"
+#~ msgstr "ERROR: Не удается отправить исходный запрос PAP на отправку данных"
+
+#~ msgid "ERROR: Unable to send print data\n"
+#~ msgstr "ERROR: Не удается отправить данные для печати\n"
+
+#~ msgid "ERROR: Unable to send print data (%d)\n"
+#~ msgstr "ERROR: Не удается отправить данные печати (%d)\n"
+
+#~ msgid "ERROR: Unable to send print data!\n"
+#~ msgstr "ERROR: Не удается отправить данные печати!\n"
+
+#~ msgid "ERROR: Unable to send print file to printer"
+#~ msgstr "ERROR: Не удается отправить файл печати на принтер"
+
+#~ msgid "ERROR: Unable to send trailing nul to printer"
+#~ msgstr "ERROR: Не удается отправить конечное нулевое значение на принтер"
+
+#~ msgid "ERROR: Unable to wait for pictwpstops: %s\n"
+#~ msgstr "ERROR: Не удается подождать pictwpstops: %s\n"
+
+#~ msgid "ERROR: Unable to write %d bytes to \"%s\": %s\n"
+#~ msgstr "ERROR: Не удается записать %d байт на «%s»: %s\n"
+
+#~ msgid "ERROR: Unable to write %d bytes to printer\n"
+#~ msgstr "ERROR: Не удается записать %d байт на принтер\n"
+
+#~ msgid "ERROR: Unable to write %d bytes to printer!\n"
+#~ msgstr "ERROR: Не удается записать %d байт на принтер!\n"
+
+#~ msgid "ERROR: Unable to write control file"
+#~ msgstr "ERROR: Не удается записать контрольный файл"
+
+#~ msgid "ERROR: Unable to write print data"
+#~ msgstr "ERROR: Не удается записать данные печати"
+
+#~ msgid "ERROR: Unable to write print data: %s\n"
+#~ msgstr "ERROR: Не удается записать данные печати: %s\n"
+
+#~ msgid "ERROR: Unable to write raster data to driver\n"
+#~ msgstr "Не удается записать растровые данные на принтер\n"
+
+#~ msgid "ERROR: Unable to write raster data to driver!\n"
+#~ msgstr "ERROR: Не удается записать растровые данные на драйвер!\n"
+
+#~ msgid "ERROR: Unable to write to temporary file"
+#~ msgstr "ERROR: Не удается записать данные во временный файл"
+
+#~ msgid "ERROR: Unable to write uncompressed document data: %s\n"
+#~ msgstr "ERROR: Не удается записать несжатые данные документа: %s\n"
+
+#~ msgid "ERROR: Unexpected text on line %d of %s\n"
+#~ msgstr "ERROR: Неизвестный текст в %s строки %d\n"
+
+#~ msgid "ERROR: Unexpected text on line %d of %s!\n"
+#~ msgstr "ERROR: Непредвиденный текст в строке %d из %s!\n"
+
+#~ msgid "ERROR: Unknown encryption option value \"%s\"\n"
+#~ msgstr "ERROR: Неизвестное значение \"%s\" параметра шифрования\n"
+
+#~ msgid "ERROR: Unknown encryption option value \"%s\"!\n"
+#~ msgstr "ERROR: Неизвестное значение параметра шифрования «%s»!\n"
+
+#~ msgid "ERROR: Unknown file order \"%s\"\n"
+#~ msgstr "ERROR: Неизвестный порядок файлов «%s»\n"
+
+#~ msgid "ERROR: Unknown format character \"%c\"\n"
+#~ msgstr "ERROR: Символ неизвестного формата «%c»\n"
+
+#~ msgid "ERROR: Unknown message catalog format for \"%s\"\n"
+#~ msgstr "ERROR: Неизвестный формат каталога сообщений для \"%s\"\n"
+
+#~ msgid "ERROR: Unknown message catalog format for \"%s\"!\n"
+#~ msgstr "ERROR: Неизвестный формат каталога сообщений для «%s»!\n"
+
+#~ msgid "ERROR: Unknown option \"%s\" with value \"%s\"\n"
+#~ msgstr "ERROR: Неизвестный параметр \"%s\" со значением \"%s\"\n"
+
+#~ msgid "ERROR: Unknown option \"%s\" with value \"%s\"!\n"
+#~ msgstr "ERROR: Неизвестный параметр «%s» со значением «%s»!\n"
+
+#~ msgid "ERROR: Unknown print mode \"%s\"\n"
+#~ msgstr "ERROR: Неизвестный режим печати «%s»\n"
+
+#~ msgid "ERROR: Unknown version option value \"%s\"\n"
+#~ msgstr "ERROR: Неизвестное значение параметра версии \"%s\"\n"
+
+#~ msgid "ERROR: Unknown version option value \"%s\"!\n"
+#~ msgstr "ERROR: Неизвестное значение параметра версии «%s»!\n"
+
+#~ msgid "ERROR: Unsupported brightness value %s, using brightness=100\n"
+#~ msgstr ""
+#~ "ERROR: Неподдерживаемое значение яркости %s, используется значение "
+#~ "brightness=100\n"
+
+#~ msgid "ERROR: Unsupported brightness value %s, using brightness=100!\n"
+#~ msgstr ""
+#~ "ERROR: Неподдерживаемое значение яркости %s, используется "
+#~ "brightness=100!\n"
+
+#~ msgid "ERROR: Unsupported gamma value %s, using gamma=1000\n"
+#~ msgstr ""
+#~ "ERROR: Неподдерживаемое значение гаммы %s, используется значение "
+#~ "gamma=1000\n"
+
+#~ msgid "ERROR: Unsupported gamma value %s, using gamma=1000!\n"
+#~ msgstr ""
+#~ "ERROR: Неподдерживаемое значение гаммы %s, используется gamma=1000!\n"
+
+#~ msgid "ERROR: Unsupported number-up value %d, using number-up=1\n"
+#~ msgstr ""
+#~ "ERROR: Неподдерживаемое значение number-up %d, используется значение "
+#~ "number-up=1\n"
+
+#~ msgid "ERROR: Unsupported number-up value %d, using number-up=1!\n"
+#~ msgstr ""
+#~ "ERROR: Неподдерживаемое значение number-up %d, используется number-up=1!\n"
+
+#~ msgid ""
+#~ "ERROR: Unsupported number-up-layout value %s, using number-up-"
+#~ "layout=lrtb\n"
+#~ msgstr ""
+#~ "ERROR: Неподдерживаемое значение number-up-layout %s, используется "
+#~ "значение number-up-layout=lrtb\n"
+
+#~ msgid ""
+#~ "ERROR: Unsupported number-up-layout value %s, using number-up-"
+#~ "layout=lrtb!\n"
+#~ msgstr ""
+#~ "ERROR: Неподдерживаемое значение number-up-layout %s, используется number-"
+#~ "up-layout=lrtb!\n"
+
+#~ msgid "ERROR: Unsupported page-border value %s, using page-border=none\n"
+#~ msgstr ""
+#~ "ERROR: Неподдерживаемое значение page-border %s, используется значение "
+#~ "page-border=none\n"
+
+#~ msgid "ERROR: Unsupported page-border value %s, using page-border=none!\n"
+#~ msgstr ""
+#~ "ERROR: Неподдерживаемое значение page-border %s, используется page-"
+#~ "border=none!\n"
+
+#~ msgid "ERROR: doc_printf overflow (%d bytes) detected, aborting\n"
+#~ msgstr "ERROR: Обнаружено переполнение doc_printf (%d байт). Прервать.\n"
+
+#~ msgid "ERROR: doc_printf overflow (%d bytes) detected, aborting!\n"
+#~ msgstr "ERROR: Обнаружено переполнение doc_printf (%d байт), отменяю!\n"
+
+#~ msgid "ERROR: pdftops filter crashed on signal %d!\n"
+#~ msgstr "ERROR: Сбой фильтра pdftops при сигнале %d!\n"
+
+#~ msgid "ERROR: pdftops filter exited with status %d!\n"
+#~ msgstr "ERROR: Фильтр pictwpstops закрыт со статусом %d!\n"
+
+#~ msgid "ERROR: pictwpstops exited on signal %d\n"
+#~ msgstr "ERROR: pictwpstops завершился по сигналу %d\n"
+
+#~ msgid "ERROR: pictwpstops exited on signal %d!\n"
+#~ msgstr "ERROR: Фильтр pictwpstops закрыт по сигналу %d!\n"
+
+#~ msgid "ERROR: pictwpstops exited with status %d\n"
+#~ msgstr "ERROR: pitwpstops завершился со статусом %d\n"
+
+#~ msgid "ERROR: pictwpstops exited with status %d!\n"
+#~ msgstr "ERROR: Фильтр pictwpstops закрыт со статусом %d!\n"
+
+#~ msgid ""
+#~ "ERROR: recoverable: Unable to connect to printer; will retry in 30 "
+#~ "seconds...\n"
+#~ msgstr ""
+#~ "ERROR: Восстанавливаемо: не удается подключиться к принтеру; попытка "
+#~ "будет повторена через 30 секунд…\n"
+
+#~ msgid "ERROR: select() failed"
+#~ msgstr "ERROR: Сбой оператора select()"
+
+#~ msgid "ERROR: unable to stat print file"
+#~ msgstr "ERROR: Не удается установить файл печати"
+
+#~ msgid "Empty PPD file"
+#~ msgstr "Пустой PPD файл"
+
+#~ msgid "Empty PPD file!"
+#~ msgstr "Пустой PPD-файл!"
+
+#~ msgid "Error: need hostname after '-h' option\n"
+#~ msgstr "ERROR: Требуется имя хоста после параметра '-h'\n"
+
+#~ msgid "Error: need hostname after '-h' option!\n"
+#~ msgstr "ERROR: Требуется имя хоста после параметра «-h»!\n"
+
+#~ msgid "FAIL\n"
+#~ msgstr "FAIL\n"
+
+#~ msgid "File Folder"
+#~ msgstr "Каталог файла"
+
+#~ msgid "File Folder - 9/16 x 3 7/16\""
+#~ msgstr "Каталог файла - 9 16/8 x 3 7/16\""
+
+#~ msgid ""
+#~ "File device URIs have been disabled! To enable, see the FileDevice "
+#~ "directive in \"%s/cupsd.conf\"."
+#~ msgstr ""
+#~ "URI-адреса файлового устройства отключены! Чтобы включить их, используйте "
+#~ "директиву FileDevice в «%s/cupsd.conf»."
+
+#~ msgid "Fuser temperature high!"
+#~ msgstr "Высокая температура термофиксатора!"
+
+#~ msgid "Fuser temperature low!"
+#~ msgstr "Низкая температура термофиксатора!"
+
+#~ msgid "German FanFold"
+#~ msgstr "German FanFold"
+
+#~ msgid "German FanFold Legal"
+#~ msgstr "German FanFold Legal"
+
+#~ msgid "Got a printer-uri attribute but no job-id"
+#~ msgstr "Получен атрибут printer-uri, но не job-id"
+
+#~ msgid "Got a printer-uri attribute but no job-id!"
+#~ msgstr "Получен атрибут printer-uri, но не job-id!"
+
+#~ msgid "Hanging Folder - 9/16 x 2\""
+#~ msgstr "Папка подвесного хранения - 9/16 x 2\""
+
+#~ msgid "INFO: AppleTalk disabled in System Preferences\n"
+#~ msgstr "INFO: AppleTalk отключен в Системных настройках\n"
+
+#~ msgid "INFO: AppleTalk disabled in System Preferences.\n"
+#~ msgstr "INFO: AppleTalk отключен в Системных настройках.\n"
+
+#~ msgid "INFO: Canceling print job...\n"
+#~ msgstr "INFO: Отмена задания печати…\n"
+
+#~ msgid "INFO: Connected to printer...\n"
+#~ msgstr "INFO: Подключен к принтеру…\n"
+
+#~ msgid "INFO: Connecting to printer...\n"
+#~ msgstr "INFO: Подключение к принтеру…\n"
+
+#~ msgid "INFO: Control file sent successfully\n"
+#~ msgstr "INFO: Контрольный файл успешно отправлен\n"
+
+#~ msgid "INFO: Copying print data...\n"
+#~ msgstr "INFO: Копирование данных печати...\n"
+
+#~ msgid "INFO: Data file sent successfully\n"
+#~ msgstr "INFO: Файл данных успешно отправлен\n"
+
+#~ msgid "INFO: Finished page %d...\n"
+#~ msgstr "INFO: Последняя страница %d...\n"
+
+#~ msgid "INFO: Formatting page %d...\n"
+#~ msgstr "INFO: Форматирование страницы %d…\n"
+
+#~ msgid "INFO: Loading image file...\n"
+#~ msgstr "INFO: Загрузка файла изображения…\n"
+
+#~ msgid "INFO: Looking for printer...\n"
+#~ msgstr "INFO: Поиск принтера...\n"
+
+#~ msgid "INFO: Opening connection\n"
+#~ msgstr "INFO: Установка соединения\n"
+
+#~ msgid "INFO: Print file sent, waiting for printer to finish...\n"
+#~ msgstr "INFO: Файл печати отправлен, ожидание окончания работы принтера…\n"
+
+#~ msgid "INFO: Printer busy; will retry in 10 seconds...\n"
+#~ msgstr "INFO: Принтер занят; попытка будет повторена через 10 секунд…\n"
+
+#~ msgid "INFO: Printer busy; will retry in 30 seconds...\n"
+#~ msgstr "INFO: Принтер занят; попытка будет повторена через 30 секунд…\n"
+
+#~ msgid "INFO: Printer busy; will retry in 5 seconds...\n"
+#~ msgstr "INFO: Принтер занят; попытка будет повторена через 5 секунд…\n"
+
+#~ msgid "INFO: Printer does not support IPP/%d.%d, trying IPP/1.0...\n"
+#~ msgstr ""
+#~ "INFO: Принтер не поддерживает IPP/%d.%d; попытка использовать IPP/1.0…\n"
+
+#~ msgid "INFO: Printer is busy; will retry in 5 seconds...\n"
+#~ msgstr "INFO: Принтер занят; попытка будет повторена через 5 секунд…\n"
+
+#~ msgid "INFO: Printer is currently off-line.\n"
+#~ msgstr "INFO: В данный момент принтер не подключен к сети.\n"
+
+#~ msgid "INFO: Printer is currently offline.\n"
+#~ msgstr "INFO: В данный момент принтер не подключен к сети.\n"
+
+#~ msgid "INFO: Printer is now online.\n"
+#~ msgstr "INFO: Принтер подключен к сети.\n"
+
+#~ msgid "INFO: Printer is offline.\n"
+#~ msgstr "INFO: Принтер не подключен к сети.\n"
+
+#~ msgid "INFO: Printer not connected; will retry in 30 seconds...\n"
+#~ msgstr ""
+#~ "INFO: Принтер не подключен; попытка будет повторена через 30 секунд…\n"
+
+#~ msgid "INFO: Printing page %d, %d%% complete...\n"
+#~ msgstr "INFO: Печать страницы %d, %d%% завершена…\n"
+
+#~ msgid "INFO: Printing page %d...\n"
+#~ msgstr "INFO: Печать страницы %d…\n"
+
+#~ msgid "INFO: Ready to print.\n"
+#~ msgstr "INFO: Готов к печати.\n"
+
+#~ msgid "INFO: Sending control file (%lu bytes)\n"
+#~ msgstr "INFO: Отправка контрольного файла (%lu байт)\n"
+
+#~ msgid "INFO: Sending control file (%u bytes)\n"
+#~ msgstr "INFO: Отправка контрольного файла (%u байт)\n"
+
+#~ msgid "INFO: Sending data\n"
+#~ msgstr "INFO: Отправка данных\n"
+
+#~ msgid "INFO: Sending data file (%ld bytes)\n"
+#~ msgstr "INFO: Отправка файла данных (%ld байт)\n"
+
+#~ msgid "INFO: Sending data file (%lld bytes)\n"
+#~ msgstr "INFO: Отправка файла данных (%lld байт)\n"
+
+#~ msgid "INFO: Sending print data...\n"
+#~ msgstr "INFO: Отправка данных печати…\n"
+
+#~ msgid "INFO: Sent print file, %ld bytes...\n"
+#~ msgstr "INFO: Отправлен файл печати, %ld байт…\n"
+
+#~ msgid "INFO: Sent print file, %lld bytes...\n"
+#~ msgstr "INFO: Отправлен файл печати, %lld байт…\n"
+
+#~ msgid "INFO: Spooling LPR job, %.0f%% complete...\n"
+#~ msgstr "INFO: Спулинг задания LPR, %.0f%% выполнено…\n"
+
+#~ msgid "INFO: Starting page %d...\n"
+#~ msgstr "INFO: Главная страница %d...\n"
+
+#~ msgid ""
+#~ "INFO: Unable to contact printer, queuing on next printer in class...\n"
+#~ msgstr ""
+#~ "INFO: Не удается установить связь с принтером, постановка в очередь на "
+#~ "следующем принтере в классе…\n"
+
+#~ msgid "INFO: Using default AppleTalk zone \"%s\"\n"
+#~ msgstr "INFO: Используется стандартная зона AppleTalk «%s»\n"
+
+#~ msgid "INFO: Waiting for job to complete...\n"
+#~ msgstr "INFO: Ожидание окончания выполнения задания…\n"
+
+#~ msgid "INFO: Waiting for printer to become available...\n"
+#~ msgstr "INFO: Ожидание доступа к принтеру...\n"
+
+#~ msgid "ISO B0"
+#~ msgstr "ISO B0"
+
+#~ msgid "ISO B1"
+#~ msgstr "ISO B1"
+
+#~ msgid "ISO B10"
+#~ msgstr "ISO B10"
+
+#~ msgid "ISO B2"
+#~ msgstr "ISO B2"
+
+#~ msgid "ISO B3"
+#~ msgstr "ISO B3"
+
+#~ msgid "ISO B4"
+#~ msgstr "ISO B4"
+
+#~ msgid "ISO B4 Envelope"
+#~ msgstr "Конверт ISO B4"
+
+#~ msgid "ISO B5"
+#~ msgstr "ISO B5"
+
+#~ msgid "ISO B5 (Oversize)"
+#~ msgstr "ISO B5 (расширенный)"
+
+#~ msgid "ISO B5 Envelope"
+#~ msgstr "Конверт ISO B5"
+
+#~ msgid "ISO B6"
+#~ msgstr "ISO B6"
+
+#~ msgid "ISO B6 Envelope"
+#~ msgstr "Конверт ISO B6"
+
+#~ msgid "ISO B7"
+#~ msgstr "ISO B7"
+
+#~ msgid "ISO B8"
+#~ msgstr "ISO B8"
+
+#~ msgid "ISO B9"
+#~ msgstr "ISO B9"
+
+#~ msgid "Ink/toner almost empty."
+#~ msgstr "Чернила/тонер заканчиваются."
+
+#~ msgid "Ink/toner empty!"
+#~ msgstr "Чернила/тонер закончились!"
+
+#~ msgid "Ink/toner waste bin almost full."
+#~ msgstr "Корзина чернил/тонера почти полный."
+
+#~ msgid "Ink/toner waste bin full!"
+#~ msgstr "Корзина чернил/тонера полная!"
+
+#~ msgid "Interlock open."
+#~ msgstr "Открыт замок."
+
+#~ msgid "Internet Postage 2-Part - 2 1/4 x 7 1/2\""
+#~ msgstr "Наклейки Internet Postage 2-Part - 2 1/4 x 7 1/2\""
+
+#~ msgid "Internet Postage 3-Part - 2 1/4 x 7\""
+#~ msgstr "Наклейки Internet Postage 3-Part - 2 1/4 x 7\""
+
+#~ msgid "Invite Envelope"
+#~ msgstr "Конверт Invite Envelope"
+
+#~ msgid "Italian Envelope"
+#~ msgstr "Конверт Italian Envelope"
+
+#~ msgid "Job #%d cannot be restarted - no files"
+#~ msgstr "Задание #%d не может быть перезапущено - отсутствуют файлы"
+
+#~ msgid "Job #%d cannot be restarted - no files!"
+#~ msgstr "Задание #%d не может быть перезапущено – нет файлов!"
+
+#~ msgid "Job #%d does not exist"
+#~ msgstr "Задание #%d не существует"
+
+#~ msgid "Job #%d does not exist!"
+#~ msgstr "Задание #%d не существует!"
+
+#~ msgid "Job #%d is finished and cannot be altered"
+#~ msgstr "Задание #%d завершено и не может быть изменено"
+
+#~ msgid "Job #%d is finished and cannot be altered!"
+#~ msgstr "Задание #%d завершено и не может быть изменено!"
+
+#~ msgid "Job #%d is not complete"
+#~ msgstr "Задание #%d не завершено"
+
+#~ msgid "Job #%d is not complete!"
+#~ msgstr "Задание #%d не завершено!"
+
+#~ msgid "Job #%d is not held"
+#~ msgstr "Задание #%d не задержано"
+
+#~ msgid "Job #%d is not held for authentication"
+#~ msgstr "Задание #%d не задержано для идентификации"
+
+#~ msgid "Job #%d is not held for authentication!"
+#~ msgstr "Задание #%d не задержано для идентификации!"
+
+#~ msgid "Job #%d is not held!"
+#~ msgstr "Задание #%d не задержано!"
+
+#~ msgid "Job #%s does not exist"
+#~ msgstr "Задание #%d не существует"
+
+#~ msgid "Job #%s does not exist!"
+#~ msgstr "Задание #%s не существует!"
+
+#~ msgid "Job %d not found"
+#~ msgstr "Задание %d не найдено"
+
+#~ msgid "Job %d not found!"
+#~ msgstr "Задание #%d не найдено!"
+
+#~ msgid "Job ID: "
+#~ msgstr "ID задания: "
+
+#~ msgid "Job UUID: "
+#~ msgstr "UUID задания: "
+
+#~ msgid "Job operation failed:"
+#~ msgstr "Сбой операции задания:"
+
+#~ msgid "Job subscriptions cannot be renewed"
+#~ msgstr "Подписки на задание не могут быть обновлены"
+
+#~ msgid "Job subscriptions cannot be renewed!"
+#~ msgstr "Подписки на задание не могут быть обновлены!"
+
+#~ msgid "Kaku2 Envelope"
+#~ msgstr "Конверт Kaku2"
+
+#~ msgid "Kaku3 Envelope"
+#~ msgstr "Конверт Kaku3"
+
+#~ msgid "Language \"%s\" not supported"
+#~ msgstr "Язык \"%s\" не поддерживается"
+
+#~ msgid "Language \"%s\" not supported!"
+#~ msgstr "Язык «%s» не поддерживается!"
+
+#~ msgid "Large Address - 1 4/10 x 3 1/2\""
+#~ msgstr "Полный адрес - 1 4/10 x 3 1/2\""
+
+#~ msgid "Location: "
+#~ msgstr "Местоположение: "
+
+#~ msgid "Make and Model: "
+#~ msgstr "Марка и модель: "
+
+#~ msgid "Media Dimensions: "
+#~ msgstr "Размеры бумаги: "
+
+#~ msgid "Media Limits: "
+#~ msgstr "Ограничения бумаги: "
+
+#~ msgid "Media Name: "
+#~ msgstr "Название бумаги: "
+
+#~ msgid "Media jam!"
+#~ msgstr "Затор бумаги!"
+
+#~ msgid "Media tray almost empty."
+#~ msgstr "Лоток с бумагой почти пуст."
+
+#~ msgid "Media tray empty!"
+#~ msgstr "Лоток с бумагой пуст!"
+
+#~ msgid "Media tray missing!"
+#~ msgstr "Лоток с бумагой отсутствует!"
+
+#~ msgid "Media tray needs to be filled."
+#~ msgstr "Необходимо вставить бумагу в лоток."
+
+#~ msgid "Missing document-number attribute"
+#~ msgstr "Отсутствует атрибут document-number"
+
+#~ msgid "Missing document-number attribute!"
+#~ msgstr "Отсутствует атрибут document-number!"
+
+#~ msgid "Missing double quote on line %d"
+#~ msgstr "Отсутствует двойная кавычка в строке %d"
+
+#~ msgid "Missing double quote on line %d!"
+#~ msgstr "Отсутствуют двойные кавычки в строке %d!"
+
+#~ msgid "Missing form variable!"
+#~ msgstr "Отсутствует переменная формы!"
+
+#~ msgid "Missing notify-subscription-ids attribute"
+#~ msgstr "Отсутствует атрибут notify-subscription-ids"
+
+#~ msgid "Missing notify-subscription-ids attribute!"
+#~ msgstr "Отсутствует атрибут notify-subscription-ids!"
+
+#~ msgid "Missing requesting-user-name attribute"
+#~ msgstr "Отсутствует атрибут requesting-user-name"
+
+#~ msgid "Missing requesting-user-name attribute!"
+#~ msgstr "Отсутствует атрибут requesting-user-name!"
+
+#~ msgid "Missing required attributes"
+#~ msgstr "Отсутствуют обязательные атрибуты"
+
+#~ msgid "Missing required attributes!"
+#~ msgstr "Отсутствуют обязательные атрибуты!"
+
+#~ msgid "Missing value on line %d"
+#~ msgstr "Отсутствует значение в строке %d"
+
+#~ msgid "Missing value on line %d!"
+#~ msgstr "Отсутствует значение в строке %d!"
+
+#~ msgid ""
+#~ "Model:  name = %s\n"
+#~ "        natural_language = %s\n"
+#~ "        make-and-model = %s\n"
+#~ "        device-id = %s\n"
+#~ msgstr ""
+#~ "Model:  name = %s\n"
+#~ "        natural_language = %s\n"
+#~ "        make-and-model = %s\n"
+#~ "        device-id = %s\n"
+
+#~ msgid "Monarch"
+#~ msgstr "Monarch"
+
+#~ msgid "Monarch Envelope"
+#~ msgstr "Конверт Monarch"
+
+#~ msgid "NOTICE: Print file accepted - job ID %d.\n"
+#~ msgstr "NOTICE: Файл печати принят – ID задания %d.\n"
+
+#~ msgid "NOTICE: Print file accepted - job ID unknown.\n"
+#~ msgstr "NOTICE: Файл печати принят – ID задания неизвестен.\n"
+
+#~ msgid "Nested classes are not allowed"
+#~ msgstr "Вложенные группы не допускаются"
+
+#~ msgid "No PPD name!"
+#~ msgstr "Нет имени PPD!"
+
+#~ msgid "No Windows printer drivers are installed"
+#~ msgstr "Нет установленных драйверов принтера Windows"
+
+#~ msgid "No Windows printer drivers are installed!"
+#~ msgstr "Нет установленных драйверов принтера Windows!"
+
+#~ msgid "No active jobs on %s"
+#~ msgstr "Нет активных заданий на %s"
+
+#~ msgid "No active jobs on %s!"
+#~ msgstr "Нет активных заданий на %s!"
+
+#~ msgid "No attributes in request"
+#~ msgstr "Нет атрибутов в запросе"
+
+#~ msgid "No attributes in request!"
+#~ msgstr "Нет атрибутов в запросе!"
+
+#~ msgid "No authentication information provided"
+#~ msgstr "Нет информации для проверки подлинности"
+
+#~ msgid "No authentication information provided!"
+#~ msgstr "Нет информации для проверки подлинности!"
+
+#~ msgid "No default printer"
+#~ msgstr "Нет принтера по умолчанию"
+
+#~ msgid "No file!?"
+#~ msgstr "Нет файла!?"
+
+#~ msgid "No file!?!"
+#~ msgstr "Нет файла!?!"
+
+#~ msgid "No modification time!"
+#~ msgstr "Не указано время изменения!"
+
+#~ msgid "No printer name!"
+#~ msgstr "Нет имени принтера!"
+
+#~ msgid "No printer-uri found for class!"
+#~ msgstr "Не указан адрес printer-uri для класса!"
+
+#~ msgid "No printer-uri found!"
+#~ msgstr "Не указан адрес printer-uri!"
+
+#~ msgid "No printer-uri in request"
+#~ msgstr "Нет адреса printer-uri в запросе"
+
+#~ msgid "No printer-uri in request!"
+#~ msgstr "Нет адреса printer-uri в запросе!"
+
+#~ msgid "No subscription attributes in request"
+#~ msgstr "Нет атрибутов подписки в запросе"
+
+#~ msgid "No subscription attributes in request!"
+#~ msgstr "Нет атрибутов подписки в запросе!"
+
+#~ msgid "OPC almost at end-of-life."
+#~ msgstr "OPC почти в end-of-life."
+
+#~ msgid "OPC at end-of-life!"
+#~ msgstr "OPC в end-of-life!"
+
+#~ msgid "Options: "
+#~ msgstr "Параметры: "
+
+#~ msgid "Out of toner!"
+#~ msgstr "Недостаточно тонера!"
+
+#~ msgid "Output bin almost full."
+#~ msgstr "Выходной лоток почти заполнен."
+
+#~ msgid "Output bin full!"
+#~ msgstr "Выходной лоток заполнен!"
+
+#~ msgid "Output for printer %s is sent to %s\n"
+#~ msgstr "Вывод для принтера %s отправлен на %s\n"
+
+#~ msgid "Output for printer %s is sent to remote printer %s on %s\n"
+#~ msgstr "Вывод для принтера %s отправлен на удаленный принтер %s на %s\n"
+
+#~ msgid "Output for printer %s/%s is sent to %s\n"
+#~ msgstr "Вывод для принтера %s/%s отправлен на %s\n"
+
+#~ msgid "Output for printer %s/%s is sent to remote printer %s on %s\n"
+#~ msgstr "Вывод для принтера %s/%s отправлен на удаленный принтер %s на %s\n"
+
+#~ msgid "Output tray missing!"
+#~ msgstr "Выходной лоток отсутствует!"
+
+#~ msgid "PASS\n"
+#~ msgstr "PASS\n"
+
+#~ msgid "PRC1 Envelope"
+#~ msgstr "Конверт PRC1"
+
+#~ msgid "PRC10 Envelope"
+#~ msgstr "Конверт PRC10"
+
+#~ msgid "PRC2 Envelope"
+#~ msgstr "Конверт PRC2"
+
+#~ msgid "PRC3 Envelope"
+#~ msgstr "Конверт PRC3"
+
+#~ msgid "PRC32K (Oversize)"
+#~ msgstr "PRC32K (расширенный)"
+
+#~ msgid "PRC4 Envelope"
+#~ msgstr "Конверт PRC4"
+
+#~ msgid "PRC5 Envelope"
+#~ msgstr "Конверт PRC5"
+
+#~ msgid "PRC6 Envelope"
+#~ msgstr "Конверт PRC6"
+
+#~ msgid "PRC7 Envelope"
+#~ msgstr "Конверт PRC7"
+
+#~ msgid "PRC8 Envelope"
+#~ msgstr "Конверт PRC8"
+
+#~ msgid "PRC9 Envelope"
+#~ msgstr "Конверт PRC9"
+
+#~ msgid "Personal Envelope"
+#~ msgstr "Индивидуальный конверт"
+
+#~ msgid "Printed For: "
+#~ msgstr "Напечатано для: "
+
+#~ msgid "Printed From: "
+#~ msgstr "Напечатано из: "
+
+#~ msgid "Printed On: "
+#~ msgstr "Дата печати: "
+
+#~ msgid "Printer Name: "
+#~ msgstr "Имя принтера: "
+
+#~ msgid "Printer offline."
+#~ msgstr "Принтер в режиме не подключен к сети."
+
+#~ msgid "Rank    Owner   Job     File(s)                         Total Size\n"
+#~ msgstr ""
+#~ "Ранг    Владелец   Задание     Файл(ы)                         Общий "
+#~ "размер\n"
+
+#~ msgid ""
+#~ "Rank   Owner      Pri  Job        Files                       Total Size\n"
+#~ msgstr ""
+#~ "Ранг    Владелец   Задание печати     Файл(ы)                         "
+#~ "Общий размер\n"
+
+#~ msgid "Return Address - 3/4 x 2\""
+#~ msgstr "Обратный адрес - 3/4 x 2\""
+
+#~ msgid "Running command: %s %s -N -A %s -c '%s'\n"
+#~ msgstr "Запущенная команда: %s %s -N -A %s -c «%s»\n"
+
+#~ msgid "SCSI Printer"
+#~ msgstr "Принтер SCSI"
+
+#~ msgid "Serial Port #%d"
+#~ msgstr "Последовательный порт #%d"
+
+#~ msgid "Shipping Address - 2 5/16 x 4\""
+#~ msgstr "Адрес доставки - 2 5/16 x 4\""
+
+#~ msgid "Tabloid (Oversize)"
+#~ msgstr "Tabloid (расширенный)"
+
+#~ msgid "The notify-user-data value is too large (%d > 63 octets)"
+#~ msgstr "Значение notify-user-data слишком большое(%d > 63 октета)"
+
+#~ msgid "The notify-user-data value is too large (%d > 63 octets)!"
+#~ msgstr "Значение notify-user-data слишком длинное (%d > 63 октетов)!"
+
+#~ msgid "The printer is almost out of ink."
+#~ msgstr "Заканчиваются чернила."
+
+#~ msgid "The printer is low on toner."
+#~ msgstr "Заканчивается тонер."
+
+#~ msgid "The printer is out of ink."
+#~ msgstr "Чернила закончились."
+
+#~ msgid "The printer is out of toner."
+#~ msgstr "Тонер закончился."
+
+#~ msgid "The printer or class is not shared"
+#~ msgstr "Нет общего доступа к принтеру или классу."
+
+#~ msgid "The printer or class is not shared!"
+#~ msgstr "Нет общего доступа к принтеру или классу!"
+
+#~ msgid "The printer or class was not found."
+#~ msgstr "Принтер или класс не найден."
+
+#~ msgid "The printer-uri attribute is required"
+#~ msgstr "Требуется атрибут printer-uri"
+
+#~ msgid "The printer-uri attribute is required!"
+#~ msgstr "Требуется атрибут printer-uri!"
+
+#~ msgid "Title: "
+#~ msgstr "Заголовок: "
+
+#~ msgid "Toner low."
+#~ msgstr "Тонер заканчивается."
+
+#~ msgid "Too many job-sheets values (%d > 2)"
+#~ msgstr "Слишком много значений job-sheets (%d>2)"
+
+#~ msgid "Too many job-sheets values (%d > 2)!"
+#~ msgstr "Слишком много значений job-sheets (%d > 2)!"
+
+#~ msgid "Too many printer-state-reasons values (%d > %d)"
+#~ msgstr "Слишком много значений printer-state-reasons (%d > %d)"
+
+#~ msgid "Too many printer-state-reasons values (%d > %d)!"
+#~ msgstr "Слишком много значений printer-state-reasons (%d > %d)!"
+
+#~ msgid "US Executive"
+#~ msgstr "US Executive"
+
+#~ msgid "US Fanfold"
+#~ msgstr "US Fanfold"
+
+#~ msgid "US Legal (Oversize)"
+#~ msgstr "US Legal (расширенный)"
+
+#~ msgid "US Letter (Oversize)"
+#~ msgstr "US Letter (расширенный)"
+
+#~ msgid "US Letter (Small)"
+#~ msgstr "US Letter (уменьшенный)"
+
+#~ msgid "USB Serial Port #%d"
+#~ msgstr "Последовательный порт USB #%d"
+
+#~ msgid "Unable to access cupsd.conf file:"
+#~ msgstr "Не удается получить доступ к файлу «cupsd.conf»:"
+
+#~ msgid "Unable to add RSS subscription:"
+#~ msgstr "Не удается добавить подписку RSS:"
+
+#~ msgid "Unable to add class:"
+#~ msgstr "Не удается добавить класс:"
+
+#~ msgid "Unable to add job for destination \"%s\""
+#~ msgstr "Не удается добавить задание для назначения \"%s\""
+
+#~ msgid "Unable to add job for destination \"%s\"!"
+#~ msgstr "Не удается добавить задание для назначения «%s»!"
+
+#~ msgid "Unable to add printer:"
+#~ msgstr "Не удается добавить принтер:"
+
+#~ msgid "Unable to allocate memory for file types"
+#~ msgstr "Не удается выделить память для типов файлов"
+
+#~ msgid "Unable to allocate memory for file types!"
+#~ msgstr "Не удается выделить память для типов файлов!"
+
+#~ msgid "Unable to cancel RSS subscription:"
+#~ msgstr "Не удается отменить подписку RSS:"
+
+#~ msgid "Unable to change printer-is-shared attribute:"
+#~ msgstr "Не удается изменить атрибут printer-is-shared:"
+
+#~ msgid "Unable to change printer:"
+#~ msgstr "Не удается изменить принтер:"
+
+#~ msgid "Unable to change server settings:"
+#~ msgstr "Не удается изменить настройки сервера:"
+
+#~ msgid "Unable to copy 64-bit CUPS printer driver files (%d)"
+#~ msgstr "Не удается копировать 64-битовые файлы драйвера принтера CUPS (%d)"
+
+#~ msgid "Unable to copy 64-bit CUPS printer driver files (%d)!"
+#~ msgstr "Не удается копировать 64-битовые файлы драйвера принтера CUPS (%d)!"
+
+#~ msgid "Unable to copy 64-bit Windows printer driver files (%d)"
+#~ msgstr ""
+#~ "Не удается копировать 64-битовые файлы драйвера принтера для Windows (%d)"
+
+#~ msgid "Unable to copy 64-bit Windows printer driver files (%d)!"
+#~ msgstr ""
+#~ "Не удается копировать 64-битовые файлы драйвера принтера для Windows (%d)!"
+
+#~ msgid "Unable to copy CUPS printer driver files (%d)"
+#~ msgstr "Не удается копировать файлы драйвера принтера CUPS (%d)"
+
+#~ msgid "Unable to copy CUPS printer driver files (%d)!"
+#~ msgstr "Не удается копировать файлы драйвера принтера CUPS (%d)!"
+
+#~ msgid "Unable to copy PPD file"
+#~ msgstr "Не удается копировать PPD-файл"
+
+#~ msgid "Unable to copy PPD file - %s!"
+#~ msgstr "Не удается копировать PPD-файл – %s!"
+
+#~ msgid "Unable to copy PPD file!"
+#~ msgstr "Не удается копировать PPD-файл!"
+
+#~ msgid "Unable to copy Windows 2000 printer driver files (%d)"
+#~ msgstr "Не удается копировать файлы драйвера принтера Windows 2000 (%d)"
+
+#~ msgid "Unable to copy Windows 2000 printer driver files (%d)!"
+#~ msgstr "Не удается копировать файлы драйвера принтера Windows 2000 (%d)!"
+
+#~ msgid "Unable to copy Windows 9x printer driver files (%d)"
+#~ msgstr "Не удается копировать файлы драйвера принтера Windows 9x (%d)"
+
+#~ msgid "Unable to copy Windows 9x printer driver files (%d)!"
+#~ msgstr "Не удается копировать файлы драйвера принтера Windows 9x (%d)!"
+
+#~ msgid "Unable to copy interface script - %s!"
+#~ msgstr "Не удается копировать скрипт интерфейса – %s!"
+
+#~ msgid "Unable to create printer-uri!"
+#~ msgstr "Не удается создать printer-uri!"
+
+#~ msgid "Unable to create temporary file:"
+#~ msgstr "Не удается создать временный файл:"
+
+#~ msgid "Unable to delete class:"
+#~ msgstr "Не удается удалить класс:"
+
+#~ msgid "Unable to delete printer:"
+#~ msgstr "Не удается удалить принтер:"
+
+#~ msgid "Unable to do maintenance command:"
+#~ msgstr "Не удается выполнить команду обслуживания:"
+
+#~ msgid "Unable to edit cupsd.conf files larger than 1MB!"
+#~ msgstr "Невозможно редактировать файлы «cupsd.conf» больше 1 МБ!"
+
+#~ msgid "Unable to find destination for job!"
+#~ msgstr "Не удается найти назначение для задания!"
+
+#~ msgid "Unable to find printer\n"
+#~ msgstr "Не удается найти принтер\n"
+
+#~ msgid "Unable to find printer!\n"
+#~ msgstr "Не удается найти принтер!\n"
+
+#~ msgid "Unable to get class list:"
+#~ msgstr "Не удается получить список класса:"
+
+#~ msgid "Unable to get class status:"
+#~ msgstr "Не удается получить статус класса:"
+
+#~ msgid "Unable to get list of printer drivers:"
+#~ msgstr "Не удается получить список драйверов принтера:"
+
+#~ msgid "Unable to get printer attributes:"
+#~ msgstr "Не удается получить атрибуты принтера:"
+
+#~ msgid "Unable to get printer list:"
+#~ msgstr "Не удается получить список принтеров:"
+
+#~ msgid "Unable to get printer status:"
+#~ msgstr "Не удается получить статус принтера:"
+
+#~ msgid "Unable to install Windows 2000 printer driver files (%d)"
+#~ msgstr "Не удается установить файлы драйвера принтера Windows 2000 (%d)"
+
+#~ msgid "Unable to install Windows 2000 printer driver files (%d)!"
+#~ msgstr "Не удается установить файлы драйвера принтера Windows 2000 (%d)!"
+
+#~ msgid "Unable to install Windows 9x printer driver files (%d)"
+#~ msgstr "Не удается установить файлы драйвера принтера Windows 9x (%d)"
+
+#~ msgid "Unable to install Windows 9x printer driver files (%d)!"
+#~ msgstr "Не удается установить файлы драйвера принтера Windows 9x (%d)!"
+
+#~ msgid "Unable to modify class:"
+#~ msgstr "Не удается изменить класс:"
+
+#~ msgid "Unable to modify printer:"
+#~ msgstr "Не удается изменить принтер:"
+
+#~ msgid "Unable to open PPD file:"
+#~ msgstr "Не удается открыть PPD-файл:"
+
+#~ msgid "Unable to open document %d in job %d"
+#~ msgstr "Не удается открыть документ %d в задании %d"
+
+#~ msgid "Unable to open document %d in job %d!"
+#~ msgstr "Не удается открыть документ %d в задании %d!"
+
+#~ msgid "Unable to print test page:"
+#~ msgstr "Не удается напечатать пробную страницу:"
+
+#~ msgid "Unable to run \"%s\": %s\n"
+#~ msgstr "Не удается запустить «%s»: %s\n"
+
+#~ msgid "Unable to send command to printer driver!"
+#~ msgstr "Не удается отправить команду драйверу принтера!"
+
+#~ msgid "Unable to set Windows printer driver (%d)"
+#~ msgstr "Не удается настроить драйвер принтера Windows (%d)"
+
+#~ msgid "Unable to set Windows printer driver (%d)!"
+#~ msgstr "Не удается настроить драйвер принтера Windows (%d)!"
+
+#~ msgid "Unable to set options:"
+#~ msgstr "Не удается настроить параметры:"
+
+#~ msgid "Unable to set server default:"
+#~ msgstr "Не удается назначить сервер используемым по умолчанию:"
+
+#~ msgid "Unable to upload cupsd.conf file:"
+#~ msgstr "Не удается загрузить файл «cupsd.conf»:"
+
+#~ msgid "Unable to use legacy USB class driver\n"
+#~ msgstr "Не удается использовать устаревший драйвер класса USB \n"
+
+#~ msgid "Unable to use legacy USB class driver!\n"
+#~ msgstr "Не удается использовать устаревший драйвер класса USB!\n"
+
+#~ msgid "Unknown printer error (%s)!"
+#~ msgstr "Неизвестная ошибка принтера (%s)!"
+
+#~ msgid "Unsupported character set \"%s\""
+#~ msgstr "Неподдерживаемый набор символов \"%s\""
+
+#~ msgid "Unsupported character set \"%s\"!"
+#~ msgstr "Неподдерживаемый набор символов «%s»!"
+
+#~ msgid "Unsupported compression \"%s\""
+#~ msgstr "Неподдерживаемое сжатие \"%s\""
+
+#~ msgid "Unsupported compression \"%s\"!"
+#~ msgstr "Неподдерживаемое сжатие «%s»!"
+
+#~ msgid "Unsupported compression attribute %s"
+#~ msgstr "Неподдерживаемый атрибут сжатия %s"
+
+#~ msgid "Unsupported compression attribute %s!"
+#~ msgstr "Неподдерживаемый атрибут сжатия %s!"
+
+#~ msgid "Unsupported format \"%s\""
+#~ msgstr "Неподдерживаемый формат \"%s\""
+
+#~ msgid "Unsupported format \"%s\"!"
+#~ msgstr "Неподдерживаемый формат «%s»!"
+
+#~ msgid "Unsupported format '%s'"
+#~ msgstr "Неподдерживаемый формат '%s'"
+
+#~ msgid "Unsupported format '%s'!"
+#~ msgstr "Неподдерживаемый формат «%s»!"
+
+#~ msgid "Unsupported format '%s/%s'"
+#~ msgstr "Неподдерживаемый формат '%s/%s'"
+
+#~ msgid "Unsupported format '%s/%s'!"
+#~ msgstr "Неподдерживаемый формат «%s/%s»!"
+
+#~ 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 ""
+#~ "Синтаксис:\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"
+
+#~ msgid "Usage: %s job user title copies options [filename]\n"
+#~ msgstr "Синтаксис: %s job user title copies options [filename]\n"
+
+#~ msgid "Usage: %s job-id user title copies options [file]\n"
+#~ msgstr "Синтаксис: %s job-id user title copies options [file]\n"
+
+#~ msgid "Usage: %s job-id user title copies options file\n"
+#~ msgstr "Синтаксис: %s job-id user title copies options file\n"
+
+#~ msgid ""
+#~ "Usage: convert [ options ]\n"
+#~ "\n"
+#~ "Options:\n"
+#~ "\n"
+#~ "  -e                   Use every filter from the PPD file\n"
+#~ "  -f filename          Set file to be converted (otherwise stdin)\n"
+#~ "  -o filename          Set file to be generated (otherwise stdout)\n"
+#~ "  -i mime/type         Set input MIME type (otherwise auto-typed)\n"
+#~ "  -j mime/type         Set output MIME type (otherwise application/pdf)\n"
+#~ "  -P filename.ppd      Set PPD file\n"
+#~ "  -a 'name=value ...'  Set option(s)\n"
+#~ "  -U username          Set username for job\n"
+#~ "  -J title             Set title\n"
+#~ "  -c copies            Set number of copies\n"
+#~ "  -u                   Remove the PPD file when finished\n"
+#~ "  -D                   Remove the input file when finished\n"
+#~ msgstr ""
+#~ "Синтаксис: convert [ options ]\n"
+#~ "\n"
+#~ "Параметры:\n"
+#~ "\n"
+#~ "  -f filename          Указывается конвертируемый файл (в противном "
+#~ "случае stdin)\n"
+#~ "  -o filename          Указывается создаваемый файл (в противном случае "
+#~ "stdout)\n"
+#~ "  -i mime/type         Указывается MIME-тип данных на входе (в противном "
+#~ "случае auto-typed)\n"
+#~ "  -j mime/type         Указывается MIME-тип данных на выходе (в противном "
+#~ "случае application/pdf)\n"
+#~ "  -P filename.ppd      Указывается PPD-файл\n"
+#~ "  -a 'name=value ...'  Указываются параметры\n"
+#~ "  -U username          Указывается имя пользователя для задания\n"
+#~ "  -J title             Указывается заголовок\n"
+#~ "  -c copies            Указывается количество копий\n"
+#~ "  -u                   PPD-файл удаляется после выполнения команды\n"
+#~ "  -D                   Файл, поступивший на вход, удаляется после "
+#~ "выполнения команды\n"
+
+#~ msgid ""
+#~ "Usage: convert [ options ]\n"
+#~ "\n"
+#~ "Options:\n"
+#~ "\n"
+#~ "  -f filename          Set file to be converted (otherwise stdin)\n"
+#~ "  -o filename          Set file to be generated (otherwise stdout)\n"
+#~ "  -i mime/type         Set input MIME type (otherwise auto-typed)\n"
+#~ "  -j mime/type         Set output MIME type (otherwise application/pdf)\n"
+#~ "  -P filename.ppd      Set PPD file\n"
+#~ "  -a 'name=value ...'  Set option(s)\n"
+#~ "  -U username          Set username for job\n"
+#~ "  -J title             Set title\n"
+#~ "  -c copies            Set number of copies\n"
+#~ "  -u                   Remove the PPD file when finished\n"
+#~ "  -D                   Remove the input file when finished\n"
+#~ msgstr ""
+#~ "Синтаксис: convert [ options ]\n"
+#~ "\n"
+#~ "Параметры:\n"
+#~ "\n"
+#~ "  -f filename          Указывается конвертируемый файл (в противном "
+#~ "случае stdin)\n"
+#~ "  -o filename          Указывается создаваемый файл (в противном случае "
+#~ "stdout)\n"
+#~ "  -i mime/type         Указывается MIME-тип данных на входе (в противном "
+#~ "случае auto-typed)\n"
+#~ "  -j mime/type         Указывается MIME-тип данных на выходе (в противном "
+#~ "случае application/pdf)\n"
+#~ "  -P filename.ppd      Указывается PPD-файл\n"
+#~ "  -a 'name=value ...'  Указываются параметры\n"
+#~ "  -U username          Указывается имя пользователя для задания\n"
+#~ "  -J title             Указывается заголовок\n"
+#~ "  -c copies            Указывается количество копий\n"
+#~ "  -u                   PPD-файл удаляется после выполнения команды\n"
+#~ "  -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 ""
+#~ "Синтаксис: cupsaddsmb [options] printer1 ... printerN\n"
+#~ "       cupsaddsmb [options] -a\n"
+#~ "\n"
+#~ "Параметры:\n"
+#~ "  -E               Подключение к серверу шифруется\n"
+#~ "  -H samba-server  Используется названный сервер SAMBA\n"
+#~ "  -U samba-user    Выполняется проверка подлинности с использованием "
+#~ "указанного пользователя SAMBA\n"
+#~ "  -a               Экспортируются все принтеры\n"
+#~ "  -h cups-server   Используется названный сервер CUPS\n"
+#~ "  -v               Подробное отображение (показать команды)\n"
+
+#~ msgid ""
+#~ "Usage: cupsctl [options] [param=value ... paramN=valueN]\n"
+#~ "\n"
+#~ "Options:\n"
+#~ "\n"
+#~ "    -E                      Enable encryption\n"
+#~ "    -U username             Specify username\n"
+#~ "    -h server[:port]        Specify server address\n"
+#~ "\n"
+#~ "    --[no-]debug-logging    Turn debug logging on/off\n"
+#~ "    --[no-]remote-admin     Turn remote administration on/off\n"
+#~ "    --[no-]remote-any       Allow/prevent access from the Internet\n"
+#~ "    --[no-]remote-printers  Show/hide remote printers\n"
+#~ "    --[no-]share-printers   Turn printer sharing on/off\n"
+#~ "    --[no-]user-cancel-any  Allow/prevent users to cancel any job\n"
+#~ msgstr ""
+#~ "Синтаксис: cupsctl [options] [param=value ... paramN=valueN]\n"
+#~ "\n"
+#~ "Параметры:\n"
+#~ "\n"
+#~ "    -E                      Включается шифрование\n"
+#~ "    -U username             Указывается имя пользователя\n"
+#~ "    -h server[:port]        Указывается адрес сервера\n"
+#~ "\n"
+#~ "    --[no-]debug-logging    Включается/отключается ведение журнала "
+#~ "отладки\n"
+#~ "    --[no-]remote-admin     Включается/отключается удаленное "
+#~ "администрирование\n"
+#~ "    --[no-]remote-any       Разрешается/запрещается доступ из Интернета\n"
+#~ "    --[no-]remote-printers  Отображаются/скрываются удаленные принтеры\n"
+#~ "    --[no-]share-printers   Включается/отключается совместное "
+#~ "использование принтеров\n"
+#~ "    --[no-]user-cancel-any  Пользователям разрешается/запрещается "
+#~ "отменять задания\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 ""
+#~ "Синтаксис: cupsd [-c config-file] [-f] [-F] [-h] [-l]\n"
+#~ "\n"
+#~ "-c config-file      Загружается альтернативный файл конфигурации\n"
+#~ "-f                  Задание имеет высокий приоритет\n"
+#~ "-F                  Задание имеет высокий приоритет и выделяется\n"
+#~ "-h                  Отображается данное сообщение\n"
+#~ "-l                  cupsd запускается из launchd(8)\n"
+
+#~ msgid ""
+#~ "Usage: cupsfilter -m mime/type [ options ] filename\n"
+#~ "\n"
+#~ "Options:\n"
+#~ "\n"
+#~ "  -c cupsd.conf    Set cupsd.conf file to use\n"
+#~ "  -e               Use every filter from the PPD file\n"
+#~ "  -j job-id[,N]    Filter file N from the specified job (default is file "
+#~ "1)\n"
+#~ "  -n copies        Set number of copies\n"
+#~ "  -o name=value    Set option(s)\n"
+#~ "  -p filename.ppd  Set PPD file\n"
+#~ "  -t title         Set title\n"
+#~ msgstr ""
+#~ "Синтаксис: cupsfilter -m mime/type [ options ] filename\n"
+#~ "\n"
+#~ "Параметры:\n"
+#~ "\n"
+#~ "  -c cupsd.conf    Используется файл cupsd.conf\n"
+#~ "  -j job-id[,N]    Из указанного задания выбирается файл N (по умолчанию "
+#~ "файл 1)\n"
+#~ "  -n copies        Задается количество копий\n"
+#~ "  -o name=value    Задаются параметры\n"
+#~ "  -p filename.ppd  Задается PPD-файл\n"
+#~ "  -t title         Задается заголовок\n"
+
+#~ msgid ""
+#~ "Usage: cupsfilter -m mime/type [ options ] filename\n"
+#~ "\n"
+#~ "Options:\n"
+#~ "\n"
+#~ "  -c cupsd.conf    Set cupsd.conf file to use\n"
+#~ "  -j job-id[,N]    Filter file N from the specified job (default is file "
+#~ "1)\n"
+#~ "  -n copies        Set number of copies\n"
+#~ "  -o name=value    Set option(s)\n"
+#~ "  -p filename.ppd  Set PPD file\n"
+#~ "  -t title         Set title\n"
+#~ msgstr ""
+#~ "Синтаксис: cupsfilter -m mime/type [ options ] filename\n"
+#~ "\n"
+#~ "Параметры:\n"
+#~ "\n"
+#~ "  -c cupsd.conf    Используется файл cupsd.conf\n"
+#~ "  -j job-id[,N]    Из указанного задания выбирается файл N (по умолчанию "
+#~ "файл 1)\n"
+#~ "  -n copies        Задается количество копий\n"
+#~ "  -o name=value    Задаются параметры\n"
+#~ "  -p filename.ppd  Задается PPD-файл\n"
+#~ "  -t title         Задается заголовок\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 ""
+#~ "Синтаксис: cupstestdsc [options] filename.ps [... filename.ps]\n"
+#~ "       cupstestdsc [options] -\n"
+#~ "\n"
+#~ "Параметры:\n"
+#~ "\n"
+#~ "    -h       Отображается справка по использованию программы\n"
+#~ "\n"
+#~ "    Примечание: данная программа проверяет только комментарии DSC, а не "
+#~ "сам PostScript.\n"
+
+#~ msgid ""
+#~ "Usage: cupstestppd [options] filename1.ppd[.gz] [... filenameN.ppd[.gz]]\n"
+#~ "       program | cupstestppd [options] -\n"
+#~ "\n"
+#~ "Options:\n"
+#~ "\n"
+#~ "    -I {filename,filters,none,profiles}\n"
+#~ "                         Ignore specific warnings\n"
+#~ "    -R root-directory    Set alternate root\n"
+#~ "    -W {all,none,constraints,defaults,duplex,filters,profiles,sizes,"
+#~ "translations}\n"
+#~ "                         Issue warnings instead of errors\n"
+#~ "    -q                   Run silently\n"
+#~ "    -r                   Use 'relaxed' open mode\n"
+#~ "    -v                   Be slightly verbose\n"
+#~ "    -vv                  Be very verbose\n"
+#~ msgstr ""
+#~ "Синтаксис: cupstestppd [options] filename1.ppd[.gz] [... filenameN.ppd[."
+#~ "gz]]\n"
+#~ "       program | cupstestppd [options] -\n"
+#~ "\n"
+#~ "Параметры:\n"
+#~ "\n"
+#~ "    -R root-directory    Задается альтернативный корневой каталог\n"
+#~ "    -W {all,none,constraints,defaults,duplex,filters,translations}\n"
+#~ "                         Вместо ошибок выдаются предупреждения\n"
+#~ "    -q                   Команда выполняется в «тихом» режиме\n"
+#~ "    -r                   Используется открытый режим\n"
+#~ "    -v                   Режим более подробного отображения\n"
+#~ "    -vv                  Режим максимально подробного отображения\n"
+
+#~ msgid ""
+#~ "Usage: cupstestppd [options] filename1.ppd[.gz] [... filenameN.ppd[.gz]]\n"
+#~ "       program | cupstestppd [options] -\n"
+#~ "\n"
+#~ "Options:\n"
+#~ "\n"
+#~ "    -R root-directory    Set alternate root\n"
+#~ "    -W {all,none,constraints,defaults,duplex,filters,translations}\n"
+#~ "                         Issue warnings instead of errors\n"
+#~ "    -q                   Run silently\n"
+#~ "    -r                   Use 'relaxed' open mode\n"
+#~ "    -v                   Be slightly verbose\n"
+#~ "    -vv                  Be very verbose\n"
+#~ msgstr ""
+#~ "Синтаксис: cupstestppd [options] filename1.ppd[.gz] [... filenameN.ppd[."
+#~ "gz]]\n"
+#~ "       program | cupstestppd [options] -\n"
+#~ "\n"
+#~ "Параметры:\n"
+#~ "\n"
+#~ "    -R root-directory    Задается альтернативный корневой каталог\n"
+#~ "    -W {all,none,constraints,defaults,duplex,filters,translations}\n"
+#~ "                         Вместо ошибок выдаются предупреждения\n"
+#~ "    -q                   Команда выполняется в «тихом» режиме\n"
+#~ "    -r                   Используется открытый режим\n"
+#~ "    -v                   Режим более подробного отображения\n"
+#~ "    -vv                  Режим максимально подробного отображения\n"
+
+#~ msgid ""
+#~ "Usage: ipptest [options] URI filename.test [ ... filenameN.test ]\n"
+#~ "\n"
+#~ "Options:\n"
+#~ "\n"
+#~ "-E             Test with encryption.\n"
+#~ "-V version     Set default IPP version.\n"
+#~ "-X             Produce XML instead of plain text.\n"
+#~ "-c             Send requests using chunking (default)\n"
+#~ "-d name=value  Define variable.\n"
+#~ "-f filename    Set default test file.\n"
+#~ "-i seconds     Repeat the last test file with the given interval.\n"
+#~ "-l             Send requests using content-length\n"
+#~ "-v             Show all attributes sent and received.\n"
+#~ msgstr ""
+#~ "Синтаксис: ipptest [options] URI filename.test [ ... filenameN.test ]\n"
+#~ "\n"
+#~ "Параметры:\n"
+#~ "\n"
+#~ "-E\t\tТест с шифрованием.\n"
+#~ "-V version\tЗадается стандартная версия IPP.\n"
+#~ "-X\t\tСоздание XML вместо обычного текста.\n"
+#~ "-c\t\tПередача запроса с использованием chunking (по умолчанию)-d "
+#~ "name=value\tОпределение переменной.\n"
+#~ "-f filename\tСоздание стандартного тест-файла.\n"
+#~ "-i seconds\tПовторение последнего тест-файла с заданным интервалом.\n"
+#~ "-l\t\tПередача запроса с использованием content-length.\n"
+#~ "-v\t\tПоказать все атрибуты отправленных и полученных.\n"
+
+#~ msgid "Usage: lpmove job/src dest\n"
+#~ msgstr "Синтаксис: lpmove job/src dest\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 ""
+#~ "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"
+
+#~ msgid "Usage: lppasswd [-g groupname]\n"
+#~ msgstr "Синтаксис: lppasswd [-g groupname]\n"
+
+#~ msgid ""
+#~ "Usage: lppasswd [-g groupname] [username]\n"
+#~ "       lppasswd [-g groupname] -a [username]\n"
+#~ "       lppasswd [-g groupname] -x [username]\n"
+#~ msgstr ""
+#~ "{>Синтаксис: lppasswd [-g groupname] [username]\n"
+#~ "       lppasswd [-g groupname] -a [username]\n"
+#~ "       lppasswd [-g groupname] -x [username]\n"
+
+#~ msgid ""
+#~ "Usage: lpq [-P dest] [-U username] [-h hostname[:port]] [-l] [+interval]\n"
+#~ msgstr ""
+#~ "Синтаксис: lpq [-P dest] [-U username] [-h hostname[:port]] [-l] "
+#~ "[+interval]\n"
+
+#~ msgid ""
+#~ "Usage: ppdc [options] filename.drv [ ... filenameN.drv ]\n"
+#~ "Options:\n"
+#~ "  -D name=value        Set named variable to value.\n"
+#~ "  -I include-dir       Add include directory to search path.\n"
+#~ "  -c catalog.po        Load the specified message catalog.\n"
+#~ "  -d output-dir        Specify the output directory.\n"
+#~ "  -l lang[,lang,...]   Specify the output language(s) (locale).\n"
+#~ "  -m                   Use the ModelName value as the filename.\n"
+#~ "  -t                   Test PPDs instead of generating them.\n"
+#~ "  -v                   Be verbose (more v's for more verbosity).\n"
+#~ "  -z                   Compress PPD files using GNU zip.\n"
+#~ "  --cr                 End lines with CR (Mac OS 9).\n"
+#~ "  --crlf               End lines with CR + LF (Windows).\n"
+#~ "  --lf                 End lines with LF (UNIX/Linux/Mac OS X).\n"
+#~ msgstr ""
+#~ "Синтаксис: ppdc [options] filename.drv [ ... filenameN.drv ]\n"
+#~ "Параметры:\n"
+#~ "  -D name=value        Указанной переменной присваивается значение.\n"
+#~ "  -I include-dir       Добавляется каталог в путь поиска.\n"
+#~ "  -c catalog.po        Загружается указанный каталог сообщений.\n"
+#~ "  -d output-dir        Указывается каталог для выходных данных.\n"
+#~ "  -l lang[,lang,...]   Указывается язык (регион) для выходных данных.\n"
+#~ "  -m                   В качестве имени файла используется значение "
+#~ "ModelName.\n"
+#~ "  -t                   Вместо создания PPD-файлов выполняется их "
+#~ "проверка.\n"
+#~ "  -v                   Режим подробного отображения (чем больше букв v, "
+#~ "тем выше уровень детализации).\n"
+#~ "  -z                   Файлы PPD сжимаются с использованием GNU zip.\n"
+#~ "  --cr                 Строки заканчиваются на CR (Mac OS 9).\n"
+#~ "  --crlf               Строки заканчиваются на CR + LF (Windows).\n"
+#~ "  --lf                 Строки заканчиваются на LF (UNIX/Linux/Mac OS X).\n"
+
+#~ msgid ""
+#~ "Usage: ppdhtml [options] filename.drv >filename.html\n"
+#~ "  -D name=value        Set named variable to value.\n"
+#~ "Options:\n"
+#~ "  -I include-dir    Add include directory to search path.\n"
+#~ msgstr ""
+#~ "Синтаксис: ppdhtml [options] filename.drv >filename.html\n"
+#~ "  -D name=value        Указанной переменной присваивается значение.\n"
+#~ "Параметры:\n"
+#~ "  -I include-dir    Добавляется каталог в путь поиска.\n"
+
+#~ msgid ""
+#~ "Usage: ppdi [options] filename.ppd [ ... filenameN.ppd ]\n"
+#~ "Options:\n"
+#~ "  -I include-dir\n"
+#~ "  -o filename.drv\n"
+#~ msgstr ""
+#~ "Синтаксис: ppdi [options] filename.ppd [ ... filenameN.ppd ]\n"
+#~ "Параметры:\n"
+#~ "  -I include-dir\n"
+#~ "  -o filename.drv\n"
+
+#~ msgid ""
+#~ "Usage: ppdmerge [options] filename.ppd [ ... filenameN.ppd ]\n"
+#~ "Options:\n"
+#~ "  -o filename.ppd[.gz]\n"
+#~ msgstr ""
+#~ "Синтаксис: ppdmerge [options] filename.ppd [ ... filenameN.ppd ]\n"
+#~ "Параметры:\n"
+#~ "  -o filename.ppd[.gz]\n"
+
+#~ msgid ""
+#~ "Usage: ppdpo [options] -o filename.po filename.drv [ ... filenameN.drv ]\n"
+#~ "Options:\n"
+#~ "  -D name=value        Set named variable to value.\n"
+#~ "  -I include-dir    Add include directory to search path.\n"
+#~ "  -v                Be verbose (more v's for more verbosity).\n"
+#~ msgstr ""
+#~ "Синтаксис: ppdpo [options] -o filename.po filename.drv [ ... filenameN."
+#~ "drv ]\n"
+#~ "Параметры:\n"
+#~ "  -D name=value        Указанной переменной присваивается значение.\n"
+#~ "  -I include-dir    Добавляется каталог в путь поиска.\n"
+#~ "  -v                Подробный режим (чем больше букв v, тем выше уровень "
+#~ "детализации).\n"
+
+#~ msgid "Usage: snmp [host-or-ip-address]\n"
+#~ msgstr "Синтаксис: snmp [host-or-ip-address]\n"
+
+#~ msgid "WARNING: Adding only the first %d printers found"
+#~ msgstr "WARNING: Будут добавлены только первые найденные принтеры (%d)"
+
+#~ msgid "WARNING: Boolean expected for waiteof option \"%s\"\n"
+#~ msgstr "WARNING: Параметр waiteof «%s» должен иметь булево значение\n"
+
+#~ msgid "WARNING: Failed to read side-channel request!\n"
+#~ msgstr "WARNING: Не удалось прочитать запрос бокового канала!\n"
+
+#~ msgid "WARNING: Network host '%s' is busy; will retry in %d seconds...\n"
+#~ msgstr ""
+#~ "WARNING: Сетевой узел '%s' занят; повторить попытку через %d секунд...\n"
+
+#~ msgid "WARNING: Option \"%s\" cannot be included via IncludeFeature\n"
+#~ msgstr ""
+#~ "WARNING: Параметр \"%s\" не может быть добавлен через IncludeFeature\n"
+
+#~ msgid "WARNING: Option \"%s\" cannot be included via IncludeFeature!\n"
+#~ msgstr ""
+#~ "WARNING: Параметр «%s» не может быть включен через IncludeFeature!\n"
+
+#~ msgid "WARNING: Printer not responding\n"
+#~ msgstr "WARNING: Принтер не отвечает\n"
+
+#~ msgid "WARNING: Printer sent unexpected EOF\n"
+#~ msgstr "WARNING: Принтер преждевременно передал индикатор EOF\n"
+
+#~ msgid ""
+#~ "WARNING: Remote host did not respond with command status byte after %d "
+#~ "seconds\n"
+#~ msgstr ""
+#~ "WARNING: Удаленный хост не отвечает на команду в течение %d секунд\n"
+
+#~ msgid ""
+#~ "WARNING: Remote host did not respond with command status byte after %d "
+#~ "seconds!\n"
+#~ msgstr ""
+#~ "WARNING: Удаленный хост не ответил байтом command-статуса после %d "
+#~ "секунд!\n"
+
+#~ msgid ""
+#~ "WARNING: Remote host did not respond with control status byte after %d "
+#~ "seconds\n"
+#~ msgstr ""
+#~ "WARNING: Удаленный хост не отвечает на управляющую последовательность в "
+#~ "течение %d секунд\n"
+
+#~ msgid ""
+#~ "WARNING: Remote host did not respond with control status byte after %d "
+#~ "seconds!\n"
+#~ msgstr ""
+#~ "WARNING: Удаленный хост не ответил байтом control-статуса после %d "
+#~ "секунд!\n"
+
+#~ msgid ""
+#~ "WARNING: Remote host did not respond with data status byte after %d "
+#~ "seconds\n"
+#~ msgstr ""
+#~ "WARNING: Удаленный хост не отвечает при передачи данных в течение %d "
+#~ "секунд\n"
+
+#~ msgid ""
+#~ "WARNING: Remote host did not respond with data status byte after %d "
+#~ "seconds!\n"
+#~ msgstr ""
+#~ "WARNING: Удаленный хост не ответил байтом data-статуса после %d секунд!\n"
+
+#~ msgid "WARNING: SCSI command timed out (%d); retrying...\n"
+#~ msgstr "WARNING: Время команды SCSI истекло (%d). Повтор попытки…\n"
+
+#~ msgid ""
+#~ "WARNING: This document does not conform to the Adobe Document Structuring "
+#~ "Conventions and may not print correctly\n"
+#~ msgstr ""
+#~ "WARNING: Этот документ не соответствует Adobe Document Structuring "
+#~ "Conventions и может быть напечатан неправильно\n"
+
+#~ msgid ""
+#~ "WARNING: This document does not conform to the Adobe Document Structuring "
+#~ "Conventions and may not print correctly!\n"
+#~ msgstr ""
+#~ "WARNING: Этот документ не соответствует Adobe Document Structuring "
+#~ "Conventions и может быть напечатан неправильно!\n"
+
+#~ msgid "WARNING: Unable to open \"%s:%s\": %s\n"
+#~ msgstr "WARNING: Не удается открыть «%s:%s»: %s\n"
+
+#~ msgid "WARNING: Unable to send PAP status request"
+#~ msgstr "WARNING: Не удается отправить запрос статуса PAP"
+
+#~ msgid "WARNING: Unexpected PAP packet of type %d\n"
+#~ msgstr "WARNING: Непредвиденный PAP-пакет типа %d\n"
+
+#~ msgid "WARNING: Unknown PAP packet of type %d\n"
+#~ msgstr "WARNING: Неизвестный PAP-пакет типа %d\n"
+
+#~ msgid "WARNING: Unknown choice \"%s\" for option \"%s\"\n"
+#~ msgstr "WARNING: Неизвестный выбор \"%s\" для параметра \"%s\"\n"
+
+#~ msgid "WARNING: Unknown choice \"%s\" for option \"%s\"!\n"
+#~ msgstr "WARNING: Неизвестный выбор «%s» для параметра «%s»!\n"
+
+#~ msgid "WARNING: Unknown option \"%s\"\n"
+#~ msgstr "WARNING: Неизвестный параметр \"%s\"\n"
+
+#~ msgid "WARNING: Unknown option \"%s\"!\n"
+#~ msgstr "WARNING: Неизвестный параметр «%s»!\n"
+
+#~ msgid "WARNING: Unsupported baud rate %s\n"
+#~ msgstr "WARNING: Неподдерживаемая скорость передачи данных в бодах %s\n"
+
+#~ msgid "WARNING: Unsupported baud rate %s!\n"
+#~ msgstr "WARNING: Неподдерживаемая скорость передачи данных в бодах %s!\n"
+
+#~ msgid "WARNING: number expected for status option \"%s\"\n"
+#~ msgstr "WARNING: Параметр статуса «%s» должен иметь числовое значение\n"
+
+#~ msgid ""
+#~ "WARNING: recoverable: Network host '%s' is busy; will retry in %d "
+#~ "seconds...\n"
+#~ msgstr ""
+#~ "WARNING: Восстанавливаемо. Хост сети «%s» занят. Попытка будет повторена "
+#~ "через %d сек…\n"
+
+#~ msgid "Warning, no Windows 2000 printer drivers are installed"
+#~ msgstr "WARNING: Драйверы принтера Windows 2000 не установлены"
+
+#~ msgid "Warning, no Windows 2000 printer drivers are installed!"
+#~ msgstr "Внимание! Нет установленных драйверов принтера Windows 2000!"
+
+#~ msgid "You4 Envelope"
+#~ msgstr "Конверт You4"
+
+#~ msgid "convert: Use the -f option to specify a file to convert.\n"
+#~ msgstr ""
+#~ "convert: Используйте параметр -f для указания конвертируемого файла.\n"
+
+#~ msgid "cupsaddsmb: No PPD file for printer \"%s\" - %s\n"
+#~ msgstr "cupsaddsmb: Нет PPD-файла для принтера «%s» – %s\n"
+
+#~ msgid "cupsctl: Unable to connect to server: %s\n"
+#~ msgstr "cupsctl: Не удается подключиться к серверу: %s\n"
+
+#~ msgid "cupsctl: Unknown option \"%s\"\n"
+#~ msgstr "cupsctl: Неизвестный параметр \"%s\"\n"
+
+#~ msgid "cupsctl: Unknown option \"%s\"!\n"
+#~ msgstr "cupsctl: Неизвестный параметр «%s»!\n"
+
+#~ msgid "cupsctl: Unknown option \"-%c\"\n"
+#~ msgstr "cupsctl: Неизвестный параметр \"-%c\"\n"
+
+#~ msgid "cupsctl: Unknown option \"-%c\"!\n"
+#~ msgstr "cupsctl: Неизвестный параметр «-%c»!\n"
+
+#~ msgid "cupsd: Expected config filename after \"-c\" option\n"
+#~ msgstr "cupsd: Ожидаемое имя файла конфигурации после параметра \"-с\"\n"
+
+#~ msgid "cupsd: Expected config filename after \"-c\" option!\n"
+#~ msgstr "cupsd: Ожидаемое имя файла конфигурации после параметра «-c»!\n"
+
+#~ msgid "cupsd: Unable to get current directory\n"
+#~ msgstr "cupsd: Не удается определить текущий каталог\n"
+
+#~ msgid "cupsd: Unable to get current directory!\n"
+#~ msgstr "cupsd: Не удается определить текущий каталог!\n"
+
+#~ msgid "cupsd: Unknown argument \"%s\" - aborting\n"
+#~ msgstr "cupsd: Неизвестный аргумент \"%s\" - отмена\n"
+
+#~ msgid "cupsd: Unknown argument \"%s\" - aborting!\n"
+#~ msgstr "cupsd: Неизвестный аргумент «%s» – отмена!\n"
+
+#~ msgid "cupsd: Unknown option \"%c\" - aborting\n"
+#~ msgstr "cupsd: Неизвестный параметр \"%c\" - отмена\n"
+
+#~ msgid "cupsd: Unknown option \"%c\" - aborting!\n"
+#~ msgstr "cupsd: Неизвестный параметр «%c» – отмена!\n"
+
+#~ msgid "cupsd: launchd(8) support not compiled in, running in normal mode.\n"
+#~ msgstr ""
+#~ "cupsd: Поддержка launchd(8) не скомпилирована, работа в нормальном "
+#~ "режиме.\n"
+
+#~ msgid "cupsfilter: Invalid document number %d\n"
+#~ msgstr "cupsfilter: Недопустимый номер документа %d\n"
+
+#~ msgid "cupsfilter: Invalid document number %d!\n"
+#~ msgstr "cupsfilter: Недопустимый номер документа %d!\n"
+
+#~ msgid "cupsfilter: Invalid job ID %d\n"
+#~ msgstr "cupsfilter: Недопустимый ID задания %d\n"
+
+#~ msgid "cupsfilter: Invalid job ID %d!\n"
+#~ msgstr "cupsfilter: Недопустимый ID задания %d!\n"
+
+#~ msgid "cupsfilter: Only one filename can be specified\n"
+#~ msgstr "cupsfilter: Может быть указано только одно имя файла\n"
+
+#~ msgid "cupsfilter: Only one filename can be specified!\n"
+#~ msgstr "cupsfilter: Только одно имя файла может быть указано!\n"
+
+#~ msgid "cupsfilter: Unable to create temporary file: %s\n"
+#~ msgstr "cupsfilter: Не удается создать временный файл: %s\n"
+
+#~ msgid "cupsfilter: Unable to get job file - %s\n"
+#~ msgstr "cupsfilter: Не удается получить файл задания - %s\n"
+
+#~ msgid "cupstestppd: The -q option is incompatible with the -v option.\n"
+#~ msgstr "cupstestppd: Параметр «-q» несовместим с параметром «-v».\n"
+
+#~ msgid "cupstestppd: The -v option is incompatible with the -q option.\n"
+#~ msgstr "cupstestppd: Параметр «-v» несовместим с параметром «-q».\n"
+
+#~ msgid "device for %s/%s: %s\n"
+#~ msgstr "устройство для %s/%s: %s\n"
+
+#~ msgid "device for %s: %s\n"
+#~ msgstr "устройство для %s: %s\n"
+
+#~ msgid "help\t\tget help on commands\n"
+#~ msgstr "справка\t\tполучить справку о командах\n"
+
+#~ msgid "ipptest: \"-i\" is incompatible with \"-x\".\n"
+#~ msgstr "ipptest: \"-i\" несовместимо с \"-x\".\n"
+
+#~ msgid "ipptest: Bad URI - %s.\n"
+#~ msgstr "ipptest: Неверный URI - %s.\n"
+
+#~ msgid "ipptest: Bad version %s for \"-V\".\n"
+#~ msgstr "ipptest: Неверная версия %s для \"-V\".\n"
+
+#~ msgid "ipptest: May only specify a single URI.\n"
+#~ msgstr "ipptest: Может быть определен лишь один URI.\n"
+
+#~ msgid "ipptest: Missing filename for \"-f\".\n"
+#~ msgstr "ipptest: Не определено имя файла для \"-f\".\n"
+
+#~ msgid "ipptest: Missing name=value for \"-d\".\n"
+#~ msgstr "ipptest: Не определено name=value для \"-d\".\n"
+
+#~ msgid "ipptest: Missing seconds for \"-i\".\n"
+#~ msgstr "ipptest: Не указаны секунды для \"-i\".\n"
+
+#~ msgid "ipptest: Missing version for \"-V\".\n"
+#~ msgstr "ipptest: Не определена версия для \"-V\".\n"
+
+#~ msgid "ipptest: Only http, https, and ipp URIs are supported."
+#~ msgstr "ipptest: Поддерживаются только http, https и ipp URI."
+
+#~ msgid "ipptest: URI required before test file."
+#~ msgstr "ipptest: Необходим URI перед указанием тест-файла."
+
+#~ msgid "ipptest: Unknown option \"-%c\".\n"
+#~ msgstr "ipptest: Неизвестный параметр \"-%c\".\n"
+
+#~ msgid "job-printer-uri attribute missing"
+#~ msgstr "Атрибут job-printer-uri отсутствует."
+
+#~ msgid "job-printer-uri attribute missing!"
+#~ msgstr "Атрибут job-printer-uri отсутствует!"
+
+#~ msgid "lpadmin: Class name can only contain printable characters\n"
+#~ msgstr "lpadmin: Имя класса может содержать только печатные символы\n"
+
+#~ msgid "lpadmin: Class name can only contain printable characters!\n"
+#~ msgstr "lpadmin: Имя класса может содержать только печатные символы!\n"
+
+#~ msgid "lpadmin: Expected PPD after '-P' option\n"
+#~ msgstr "lpadmin: После параметра '-P' должен быть указан PPD\n"
+
+#~ msgid "lpadmin: Expected PPD after '-P' option!\n"
+#~ msgstr "lpadmin: После параметра «-P» должен быть указан PPD!\n"
+
+#~ msgid "lpadmin: Expected allow/deny:userlist after '-u' option\n"
+#~ msgstr ""
+#~ "lpadmin: После параметра '-u' должен быть указан allow/deny:userlist.\n"
+
+#~ msgid "lpadmin: Expected allow/deny:userlist after '-u' option!\n"
+#~ msgstr ""
+#~ "lpadmin: После параметра «-u» должен быть указан allow/deny:userlist!\n"
+
+#~ msgid "lpadmin: Expected class after '-r' option\n"
+#~ msgstr "lpadmin: После параметра '-r' должно быть указано имя класса\n"
+
+#~ msgid "lpadmin: Expected class after '-r' option!\n"
+#~ msgstr "lpadmin: После параметра «-r» должен быть указан класс!\n"
+
+#~ msgid "lpadmin: Expected class name after '-c' option\n"
+#~ msgstr "lpadmin: После параметра '-c' должно быть указано имя группы\n"
+
+#~ msgid "lpadmin: Expected class name after '-c' option!\n"
+#~ msgstr "lpadmin: После параметра «-c» должно быть указано имя класса!\n"
+
+#~ msgid "lpadmin: Expected description after '-D' option\n"
+#~ msgstr "lpadmin: После параметра '-D' должно быть указано описание\n"
+
+#~ msgid "lpadmin: Expected description after '-D' option!\n"
+#~ msgstr "lpadmin: После параметра «-D» должно идти описание!\n"
+
+#~ msgid "lpadmin: Expected device URI after '-v' option\n"
+#~ msgstr "lpadmin: После параметра '-v' должно быть указано URI\n"
+
+#~ msgid "lpadmin: Expected device URI after '-v' option!\n"
+#~ msgstr "lpadmin: После параметра «-v» должен быть указан URI устройства!\n"
+
+#~ msgid "lpadmin: Expected file type(s) after '-I' option\n"
+#~ msgstr ""
+#~ "lpadmin: После параметра '-I' должен(-ны) быть указан(-ы) тип(-ы) файла(-"
+#~ "ов)\n"
+
+#~ msgid "lpadmin: Expected file type(s) after '-I' option!\n"
+#~ msgstr "lpadmin: После параметра «-I» должны быть указаны типы файлов!\n"
+
+#~ msgid "lpadmin: Expected hostname after '-h' option\n"
+#~ msgstr "lpadmin: После параметра '-h' должно быть указано имя хоста\n"
+
+#~ msgid "lpadmin: Expected hostname after '-h' option!\n"
+#~ msgstr "lpadmin: После параметра «-h» должно быть указано имя хоста!\n"
+
+#~ msgid "lpadmin: Expected interface after '-i' option\n"
+#~ msgstr "lpadmin: После параметра '-i' должен быть указан интерфейс.\n"
+
+#~ msgid "lpadmin: Expected interface after '-i' option!\n"
+#~ msgstr "lpadmin: После параметра «-i» должен быть указан интерфейс!\n"
+
+#~ msgid "lpadmin: Expected location after '-L' option\n"
+#~ msgstr "lpadmin: После параметра '-L' должно быть указано местоположение\n"
+
+#~ msgid "lpadmin: Expected location after '-L' option!\n"
+#~ msgstr "lpadmin: После параметра «-L» должно быть указано местоположение!\n"
+
+#~ msgid "lpadmin: Expected model after '-m' option\n"
+#~ msgstr "lpadmin: После параметра '-m'должна быть указана модель\n"
+
+#~ msgid "lpadmin: Expected model after '-m' option!\n"
+#~ msgstr "lpadmin: После параметра «-m» должна быть указана модель!\n"
+
+#~ msgid "lpadmin: Expected name=value after '-o' option\n"
+#~ msgstr "lpadmin: После параметра '-o' должно быть указано name=value\n"
+
+#~ msgid "lpadmin: Expected name=value after '-o' option!\n"
+#~ msgstr ""
+#~ "lpadmin: После параметра «-o» должно быть указано значение вида "
+#~ "name=value!\n"
+
+#~ msgid "lpadmin: Expected printer after '-p' option\n"
+#~ msgstr "lpadmin: После параметра '-p' должен быть указан принтер\n"
+
+#~ msgid "lpadmin: Expected printer after '-p' option!\n"
+#~ msgstr "lpadmin: После параметра «-p» должен быть указан принтер!\n"
+
+#~ msgid "lpadmin: Expected printer name after '-d' option\n"
+#~ msgstr "lpadmin: После параметра '-d' должно быть указано имя принтера\n"
+
+#~ msgid "lpadmin: Expected printer name after '-d' option!\n"
+#~ msgstr "lpadmin: После параметра «-d» должно быть указано имя принтера!\n"
+
+#~ msgid "lpadmin: Expected printer or class after '-x' option\n"
+#~ msgstr ""
+#~ "lpadmin: После параметра '-x' должен быть указан принтер или класс\n"
+
+#~ msgid "lpadmin: Expected printer or class after '-x' option!\n"
+#~ msgstr ""
+#~ "lpadmin: После параметра «-x» должен быть указан принтер или класс!\n"
+
+#~ msgid "lpadmin: No member names were seen\n"
+#~ msgstr "lpadmin: Имена пользователей не были найдены\n"
+
+#~ msgid "lpadmin: No member names were seen!\n"
+#~ msgstr "lpadmin: Имена участников не обнаружены!\n"
+
+#~ msgid "lpadmin: Printer %s is already a member of class %s.\n"
+#~ msgstr "lpadmin: Принтер %s уже является членом класса %s.\n"
+
+#~ msgid "lpadmin: Printer %s is not a member of class %s.\n"
+#~ msgstr "lpadmin: Принтер %s не является членом класса %s.\n"
+
+#~ msgid "lpadmin: Printer name can only contain printable characters\n"
+#~ msgstr "lpadmin: Имя принтера может содержать только печатные принтеры\n"
+
+#~ msgid "lpadmin: Printer name can only contain printable characters!\n"
+#~ msgstr "lpadmin: Имя принтера может содержать только печатные символы!\n"
+
+#~ msgid ""
+#~ "lpadmin: Unable to add a printer to the class:\n"
+#~ "         You must specify a printer name first\n"
+#~ msgstr ""
+#~ "lpadmin: Не удается добавить принтер в класс:\n"
+#~ "\t  Необходимо сначала указать имя принтера\n"
+
+#~ msgid ""
+#~ "lpadmin: Unable to add a printer to the class:\n"
+#~ "         You must specify a printer name first!\n"
+#~ msgstr ""
+#~ "lpadmin: Не удается добавить принтер к классу:\n"
+#~ "         Необходимо сначала указать имя принтера!\n"
+
+#~ msgid "lpadmin: Unable to connect to server: %s\n"
+#~ msgstr "lpadmin: Не удается подключиться к серверу: %s\n"
+
+#~ msgid "lpadmin: Unable to create temporary file - %s\n"
+#~ msgstr "lpadmin: Не удается создать временный файл – %s\n"
+
+#~ msgid "lpadmin: Unable to create temporary file: %s\n"
+#~ msgstr "lpadmin: Не удается создать временный файл: %s\n"
+
+#~ msgid "lpadmin: Unable to open PPD file \"%s\" - %s\n"
+#~ msgstr "lpadmin: Не удается открыть PPD-файл «%s» – %s\n"
+
+#~ msgid "lpadmin: Unable to open file \"%s\": %s\n"
+#~ msgstr "lpadmin: Не удается открыть файл «%s»: %s\n"
+
+#~ msgid ""
+#~ "lpadmin: Unable to remove a printer from the class:\n"
+#~ "         You must specify a printer name first\n"
+#~ msgstr ""
+#~ "lpadmin: Не удается удалить принтер из класса:\n"
+#~ "\t  Необходимо сначала указать имя принтера\n"
+
+#~ msgid ""
+#~ "lpadmin: Unable to remove a printer from the class:\n"
+#~ "         You must specify a printer name first!\n"
+#~ msgstr ""
+#~ "lpadmin: Не удается удалить принтер из класса:\n"
+#~ "         Необходимо сначала указать имя принтера!\n"
+
+#~ msgid ""
+#~ "lpadmin: Unable to set the PPD file:\n"
+#~ "         You must specify a printer name first\n"
+#~ msgstr ""
+#~ "lpadmin: Не удается настроить PPD-файл:\n"
+#~ "\t  Необходимо сначала указать имя принтера\n"
+
+#~ msgid ""
+#~ "lpadmin: Unable to set the PPD file:\n"
+#~ "         You must specify a printer name first!\n"
+#~ msgstr ""
+#~ "lpadmin: Не удается настроить PPD-файл:\n"
+#~ "         Необходимо сначала указать имя принтера!\n"
+
+#~ msgid ""
+#~ "lpadmin: Unable to set the device URI:\n"
+#~ "         You must specify a printer name first\n"
+#~ msgstr ""
+#~ "lpadmin: не удается настроить URI устройства:\n"
+#~ "\t  Необходимо сначала указать имя принтера\n"
+
+#~ msgid ""
+#~ "lpadmin: Unable to set the device URI:\n"
+#~ "         You must specify a printer name first!\n"
+#~ msgstr ""
+#~ "lpadmin: Не удается настроить URI устройства:\n"
+#~ "         Необходимо сначала указать имя принтера!\n"
+
+#~ msgid ""
+#~ "lpadmin: Unable to set the interface script or PPD file:\n"
+#~ "         You must specify a printer name first\n"
+#~ msgstr ""
+#~ "lpadmin: Не удается настроить скрипт интерфейса или PPD-файл:\n"
+#~ "\t  Необходимо сначала указать имя принтера\n"
+
+#~ msgid ""
+#~ "lpadmin: Unable to set the interface script or PPD file:\n"
+#~ "         You must specify a printer name first!\n"
+#~ msgstr ""
+#~ "lpadmin: Не удается настроить скрипт интерфейса или PPD-файл:\n"
+#~ "         Необходимо сначала указать имя принтера!\n"
+
+#~ msgid ""
+#~ "lpadmin: Unable to set the interface script:\n"
+#~ "         You must specify a printer name first\n"
+#~ msgstr ""
+#~ "lpadmin: не удается настроить скрипт интерфейса:\n"
+#~ "\t  Необходимо сначала указать имя принтера\n"
+
+#~ msgid ""
+#~ "lpadmin: Unable to set the interface script:\n"
+#~ "         You must specify a printer name first!\n"
+#~ msgstr ""
+#~ "lpadmin: Не удается настроить скрипт интерфейса:\n"
+#~ "         Необходимо сначала указать имя принтера!\n"
+
+#~ msgid ""
+#~ "lpadmin: Unable to set the printer description:\n"
+#~ "         You must specify a printer name first\n"
+#~ msgstr ""
+#~ "lpadmin: Не удается настроить описание принтера:\n"
+#~ "\t  Необходимо сначала указать имя принтера\n"
+
+#~ msgid ""
+#~ "lpadmin: Unable to set the printer description:\n"
+#~ "         You must specify a printer name first!\n"
+#~ msgstr ""
+#~ "lpadmin: Не удается настроить описание принтера:\n"
+#~ "         Необходимо сначала указать имя принтера!\n"
+
+#~ msgid ""
+#~ "lpadmin: Unable to set the printer location:\n"
+#~ "         You must specify a printer name first\n"
+#~ msgstr ""
+#~ "lpadmin: Не удается настроить размещение принтера:\n"
+#~ "\t  Необходимо сначала указать имя принтера\n"
+
+#~ msgid ""
+#~ "lpadmin: Unable to set the printer location:\n"
+#~ "         You must specify a printer name first!\n"
+#~ msgstr ""
+#~ "lpadmin: Не удается настроить размещение принтера:\n"
+#~ "         Необходимо сначала указать имя принтера!\n"
+
+#~ msgid ""
+#~ "lpadmin: Unable to set the printer options:\n"
+#~ "         You must specify a printer name first\n"
+#~ msgstr ""
+#~ "lpadmin: Не удается настроить параметры принтера:\n"
+#~ "\t  Необходимо сначала указать имя принтера\n"
+
+#~ msgid ""
+#~ "lpadmin: Unable to set the printer options:\n"
+#~ "         You must specify a printer name first!\n"
+#~ msgstr ""
+#~ "lpadmin: Не удается настроить параметры принтера:\n"
+#~ "         Необходимо сначала указать имя принтера!\n"
+
+#~ msgid "lpadmin: Unknown allow/deny option \"%s\"\n"
+#~ msgstr "lpadmin: Неизвестный параметр allow/deny \"%s\"\n"
+
+#~ msgid "lpadmin: Unknown allow/deny option \"%s\"!\n"
+#~ msgstr "lpadmin: Неизвестный параметр allow/deny «%s»!\n"
+
+#~ msgid "lpadmin: Unknown argument '%s'\n"
+#~ msgstr "lpadmin: Неизвестный аргумент '%s'\n"
+
+#~ msgid "lpadmin: Unknown argument '%s'!\n"
+#~ msgstr "lpadmin: Неизвестный аргумент «%s»!\n"
+
+#~ msgid "lpadmin: Unknown option '%c'\n"
+#~ msgstr "lpadmin: Неизвестный параметр '%c'\n"
+
+#~ msgid "lpadmin: Unknown option '%c'!\n"
+#~ msgstr "lpadmin: Неизвестный параметр «%c»!\n"
+
+#~ msgid "lpadmin: Warning - content type list ignored\n"
+#~ msgstr "lpadmin: Warning - список типов контента пропущен\n"
+
+#~ msgid "lpadmin: Warning - content type list ignored!\n"
+#~ msgstr "lpadmin: Внимание – список типов контента пропущен!\n"
+
+#~ msgid "lpinfo: Expected 1284 device ID string after --device-id\n"
+#~ msgstr "lpinfo: После --device-id должна идти строка ID устройства 1284\n"
+
+#~ msgid "lpinfo: Expected 1284 device ID string after --device-id!\n"
+#~ msgstr "lpinfo: После --device-id должна идти строка ID устройства 1284!\n"
+
+#~ msgid "lpinfo: Expected language after --language\n"
+#~ msgstr "lpinfo: После --language необходимо указать язык\n"
+
+#~ msgid "lpinfo: Expected language after --language!\n"
+#~ msgstr "lpinfo: После –language должен быть указан язык!\n"
+
+#~ msgid "lpinfo: Expected make and model after --make-and-model\n"
+#~ msgstr "lpinfo: После --make-and-model должна быть указана марка и модель\n"
+
+#~ msgid "lpinfo: Expected make and model after --make-and-model!\n"
+#~ msgstr ""
+#~ "lpinfo: После --make-and-model должна быть указана марка и модель!\n"
+
+#~ msgid "lpinfo: Expected product string after --product\n"
+#~ msgstr "lpinfo: После --product должна идти строка продукта\n"
+
+#~ msgid "lpinfo: Expected product string after --product!\n"
+#~ msgstr "lpinfo: После –product должна идти строка продукта!\n"
+
+#~ msgid "lpinfo: Expected scheme list after --exclude-schemes\n"
+#~ msgstr "lpinfo: После --exclude-schemes должен идти список схем\n"
+
+#~ msgid "lpinfo: Expected scheme list after --exclude-schemes!\n"
+#~ msgstr "lpinfo: После --exclude-schemes должен идти список схем!\n"
+
+#~ msgid "lpinfo: Expected scheme list after --include-schemes\n"
+#~ msgstr "lpinfo: После --include-schemes должен идти список схем\n"
+
+#~ msgid "lpinfo: Expected scheme list after --include-schemes!\n"
+#~ msgstr "lpinfo: После --ixclude-schemes должен идти список схем!\n"
+
+#~ msgid "lpinfo: Expected timeout after --timeout\n"
+#~ msgstr "lpinfo: После --timeout должно быть указано время ожидания\n"
+
+#~ msgid "lpinfo: Expected timeout after --timeout!\n"
+#~ msgstr "lpinfo: После –timeout должно быть указано время ожидания!\n"
+
+#~ msgid "lpinfo: Unknown argument '%s'\n"
+#~ msgstr "lpinfo: Неизвестный аргумент '%s'\n"
+
+#~ msgid "lpinfo: Unknown argument '%s'!\n"
+#~ msgstr "lpinfo: Неизвестный аргумент «%s»!\n"
+
+#~ msgid "lpinfo: Unknown option '%c'\n"
+#~ msgstr "lpinfo: Неизвестный параметр '%c'\n"
+
+#~ msgid "lpinfo: Unknown option '%c'!\n"
+#~ msgstr "lpinfo: Неизвестный параметр «%c»!\n"
+
+#~ msgid "lpinfo: Unknown option '%s'\n"
+#~ msgstr "lpinfo: Неизвестный параметр '%s'\n"
+
+#~ msgid "lpinfo: Unknown option '%s'!\n"
+#~ msgstr "lpinfo: Неизвестный параметр «%s»!\n"
+
+#~ msgid "lpmove: Unable to connect to server: %s\n"
+#~ msgstr "lpmove: Не удается подключиться к серверу: %s\n"
+
+#~ msgid "lpmove: Unknown argument '%s'\n"
+#~ msgstr "lpmove: Неизвестный аргумент '%s'\n"
+
+#~ msgid "lpmove: Unknown argument '%s'!\n"
+#~ msgstr "lpmove: Неизвестный аргумент «%s»!\n"
+
+#~ msgid "lpmove: Unknown option '%c'\n"
+#~ msgstr "lpmove: Неизвестный параметр '%c'\n"
+
+#~ msgid "lpmove: Unknown option '%c'!\n"
+#~ msgstr "lpmove: Неизвестный параметр «%c»!\n"
+
+#~ msgid "lpoptions: No printers\n"
+#~ msgstr "lpoptions: Нет принтеров?!\n"
+
+#~ msgid "lpoptions: No printers!?!\n"
+#~ msgstr "lpoptions: Нет принтеров!?!\n"
+
+#~ msgid "lpoptions: Unable to add printer or instance: %s\n"
+#~ msgstr ""
+#~ "lpoptions: Не удается добавить принтер или представителя класса: %s\n"
+
+#~ msgid "lpoptions: Unable to get PPD file for %s: %s\n"
+#~ msgstr "lpoptions: Не удается получить PPD-файл для %s: %s\n"
+
+#~ msgid "lpoptions: Unable to open PPD file for %s\n"
+#~ msgstr "lpoptions: Не удается открыть PPD файл для %s\n"
+
+#~ msgid "lpoptions: Unable to open PPD file for %s!\n"
+#~ msgstr "lpoptions: Не удается открыть PPD-файл для %s!\n"
+
+#~ msgid "lpoptions: Unknown printer or class\n"
+#~ msgstr "lpoptions: Неизвестный принтер или класс\n"
+
+#~ msgid "lpoptions: Unknown printer or class!\n"
+#~ msgstr "lpoptions: Неизвестный принтер или класс!\n"
+
+#~ msgid "lppasswd: Only root can add or delete passwords\n"
+#~ msgstr ""
+#~ "lppasswd: Только пользователь root может добавлять или удалять пароли\n"
+
+#~ msgid "lppasswd: Only root can add or delete passwords!\n"
+#~ msgstr ""
+#~ "lppasswd: Только пользователь root может добавлять или удалять пароли!\n"
+
+#~ msgid "lppasswd: Password file busy\n"
+#~ msgstr "lppasswd: Файл пароля занят\n"
+
+#~ msgid "lppasswd: Password file busy!\n"
+#~ msgstr "lppasswd: Файл пароля занят!\n"
+
+#~ msgid "lppasswd: Password file not updated\n"
+#~ msgstr "lppasswd: Файл пароля не обновлен"
+
+#~ msgid "lppasswd: Password file not updated!\n"
+#~ msgstr "lppasswd: Файл пароля не обновлен!\n"
+
+#~ msgid "lppasswd: Sorry, password doesn't match\n"
+#~ msgstr "lppasswd: Пароль не встретился\n"
+
+#~ msgid "lppasswd: Sorry, password doesn't match!\n"
+#~ msgstr "lppasswd: Пароль не подходит!\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: Пароль отклонен.\n"
+#~ "Пароль должен состоять как минимум из 6 символов, не может содержать\n"
+#~ "Ваше имя пользователя и должен содержать по крайней мере одну букву и "
+#~ "цифру.\n"
+
+#~ msgid "lppasswd: Sorry, passwords don't match\n"
+#~ msgstr "lppasswd: Пароль не встретился\n"
+
+#~ msgid "lppasswd: Sorry, passwords don't match!\n"
+#~ msgstr "lppasswd: Пароль не подходит!\n"
+
+#~ msgid "lppasswd: Unable to copy password string: %s\n"
+#~ msgstr "lppasswd: Не удается копировать строку пароля: %s\n"
+
+#~ msgid "lppasswd: Unable to open password file: %s\n"
+#~ msgstr "lppasswd: Не удается открыть файл пароля: %s\n"
+
+#~ msgid "lppasswd: Unable to write to password file: %s\n"
+#~ msgstr "lppasswd: Не удается записать файл пароля: %s\n"
+
+#~ msgid "lppasswd: failed to backup old password file: %s\n"
+#~ msgstr "lppasswd: Не удалось создать рез. копию старого файла пароля: %s\n"
+
+#~ msgid "lppasswd: failed to rename password file: %s\n"
+#~ msgstr "lppasswd: Не удалось переименовать файл пароля: %s\n"
+
+#~ msgid "lppasswd: user \"%s\" and group \"%s\" do not exist.\n"
+#~ msgstr "lppasswd: Пользователь «%s» и группа «%s» не существуют.\n"
+
+#~ msgid ""
+#~ "lpstat: error - %s environment variable names non-existent destination "
+#~ "\"%s\"\n"
+#~ msgstr ""
+#~ "lpstat: ошибка - %s переменная окружения указывает несуществующее "
+#~ "назначение \"%s\"\n"
+
+#~ msgid ""
+#~ "lpstat: error - %s environment variable names non-existent destination "
+#~ "\"%s\"!\n"
+#~ msgstr ""
+#~ "lpstat: Ошибка – %s переменная окружения указывает несуществующее "
+#~ "назначение «%s»!\n"
+
+#~ msgid "members of class %s:\n"
+#~ msgstr "члены класса %s:\n"
+
+#~ msgid "no entries\n"
+#~ msgstr "нет записей\n"
+
+#~ msgid "no system default destination\n"
+#~ msgstr "нет назначения системы по умолчанию\n"
+
+#~ msgid "notify-events not specified"
+#~ msgstr "notify-events не указаны"
+
+#~ msgid "notify-events not specified!"
+#~ msgstr "notify-events не указаны!"
+
+#~ msgid "notify-recipient-uri URI \"%s\" is already used"
+#~ msgstr "notify-recipient-uri URI \"%s\" уже используется"
+
+#~ msgid "notify-recipient-uri URI \"%s\" is already used!"
+#~ msgstr "URI-адрес notify-recipient-uri «%s» уже используется!"
+
+#~ msgid "notify-recipient-uri URI \"%s\" uses unknown scheme"
+#~ msgstr "notify-recipient-uri URI \"%s\" использует неизвестную схему"
+
+#~ msgid "notify-recipient-uri URI \"%s\" uses unknown scheme!"
+#~ msgstr "URI-адрес notify-recipient-uri «%s» использует неизвестную схему!"
+
+#~ msgid "notify-subscription-id %d no good"
+#~ msgstr "Неверный notify-subscription-id %d"
+
+#~ msgid "notify-subscription-id %d no good!"
+#~ msgstr "notify-subscription-id %d неверный!"
+
+#~ msgid "ppdc: Adding include directory \"%s\"...\n"
+#~ msgstr "ppdc: Добавляю каталог «%s»...\n"
+
+#~ msgid "ppdc: Adding/updating UI text from %s...\n"
+#~ msgstr "ppdc: Добавляю/обновляю текст интерфейса из %s...\n"
+
+#~ msgid "ppdc: Bad boolean value (%s) on line %d of %s.\n"
+#~ msgstr "ppdc: Недопустимое булево значение (%s) в строке %d из %s.\n"
+
+#~ msgid "ppdc: Bad resolution name \"%s\" on line %d of %s\n"
+#~ msgstr "ppdc: Недопустимое имя разрешения \"%s\" в строке %d bp %s.\n"
+
+#~ msgid "ppdc: Bad resolution name \"%s\" on line %d of %s!\n"
+#~ msgstr "ppdc: Недопустимое имя разрешения «%s» в строке %d из %s.\n"
+
+#~ msgid "ppdc: Bad status keyword %s on line %d of %s\n"
+#~ msgstr "ppdc: Недопустимое ключевое слово статуса %s в строке %d из %s.\n"
+
+#~ msgid "ppdc: Bad status keyword %s on line %d of %s!\n"
+#~ msgstr "ppdc: Недопустимое ключевое слово статуса %s в строке %d из %s.\n"
+
+#~ msgid "ppdc: Bad variable substitution ($%c) on line %d of %s.\n"
+#~ msgstr "ppdc: Недопустимая замена переменной ($%c) в строке %d из %s.\n"
+
+#~ msgid "ppdc: Choice found on line %d of %s with no Option\n"
+#~ msgstr ""
+#~ "ppdc: В строке %d из %s обнаружено значение, не привязанное к параметру\n"
+
+#~ msgid "ppdc: Choice found on line %d of %s with no Option!\n"
+#~ msgstr ""
+#~ "ppdc: В строке %d из %s обнаружено значение, не привязанное к параметру!\n"
+
+#~ msgid "ppdc: Duplicate #po for locale %s on line %d of %s\n"
+#~ msgstr "ppdc: Дубликат #po для региона %s в строке %d из %s\n"
+
+#~ msgid "ppdc: Duplicate #po for locale %s on line %d of %s!\n"
+#~ msgstr "ppdc: Дубликат #po для региона %s в строке %d из %s!\n"
+
+#~ msgid "ppdc: Expected a filter definition on line %d of %s\n"
+#~ msgstr "ppdc: В строке %d из %s должно быть определение фильтра\n"
+
+#~ msgid "ppdc: Expected a filter definition on line %d of %s!\n"
+#~ msgstr "ppdc: В строке %d из %s должно быть определение фильтра!\n"
+
+#~ msgid "ppdc: Expected a program name on line %d of %s\n"
+#~ msgstr "ppdc: В строке %d из %s должно быть имя программы\n"
+
+#~ msgid "ppdc: Expected a program name on line %d of %s!\n"
+#~ msgstr "ppdc: В строке %d из %s должно быть имя программы!\n"
+
+#~ msgid "ppdc: Expected boolean value on line %d of %s.\n"
+#~ msgstr "ppdc: В строке %d из %s должно быть булево значение.\n"
+
+#~ msgid "ppdc: Expected charset after Font on line %d of %s\n"
+#~ msgstr ""
+#~ "ppdc: После Font в строке %d из %s должен быть указан набор символов.\n"
+
+#~ msgid "ppdc: Expected charset after Font on line %d of %s!\n"
+#~ msgstr ""
+#~ "ppdc: После Font в строке %d из %s должен быть указан набор символов!\n"
+
+#~ msgid "ppdc: Expected choice code on line %d of %s.\n"
+#~ msgstr "ppdc: В строке %d из %s должен быть код выбора.\n"
+
+#~ msgid "ppdc: Expected choice name/text on line %d of %s.\n"
+#~ msgstr "ppdc: В строке %d из %s должно быть имя/текст выбора.\n"
+
+#~ msgid "ppdc: Expected color order for ColorModel on line %d of %s\n"
+#~ msgstr ""
+#~ "ppdc: После ColorModel в строке %d из %s должна быть указана цветовая "
+#~ "схема\n"
+
+#~ msgid "ppdc: Expected color order for ColorModel on line %d of %s!\n"
+#~ msgstr ""
+#~ "ppdc: После ColorModel в строке %d из %s должна быть указана цветовая "
+#~ "схема!\n"
+
+#~ msgid "ppdc: Expected colorspace for ColorModel on line %d of %s\n"
+#~ msgstr ""
+#~ "ppdc: Для ColorModel в строке %d из %s должно быть указано пространство "
+#~ "цветов.\n"
+
+#~ msgid "ppdc: Expected colorspace for ColorModel on line %d of %s!\n"
+#~ msgstr ""
+#~ "ppdc: Для ColorModel в строке %d из %s должно быть указано пространство "
+#~ "цветов!\n"
+
+#~ msgid "ppdc: Expected compression for ColorModel on line %d of %s\n"
+#~ msgstr ""
+#~ "ppdc: Для ColorModel в строке %d из %s должно быть указано сжатие.\n"
+
+#~ msgid "ppdc: Expected compression for ColorModel on line %d of %s!\n"
+#~ msgstr ""
+#~ "ppdc: Для ColorModel в строке %d из %s должно быть указано сжатие!\n"
+
+#~ msgid ""
+#~ "ppdc: Expected constraints string for UIConstraints on line %d of %s\n"
+#~ msgstr ""
+#~ "ppdc: Для UIConstraints в строке %d из %s должна быть указана строка "
+#~ "ограничений\n"
+
+#~ msgid ""
+#~ "ppdc: Expected constraints string for UIConstraints on line %d of %s!\n"
+#~ msgstr ""
+#~ "ppdc: Для UIConstraints в строке %d из %s должна быть указана строка "
+#~ "ограничений!\n"
+
+#~ msgid ""
+#~ "ppdc: Expected driver type keyword following DriverType on line %d of %s\n"
+#~ msgstr ""
+#~ "ppdc: После DriverType в строке %d из %s должно быть указано ключевое "
+#~ "слово типа драйвера.\n"
+
+#~ msgid ""
+#~ "ppdc: Expected driver type keyword following DriverType on line %d of "
+#~ "%s!\n"
+#~ msgstr ""
+#~ "ppdc: После DriverType в строке %d из %s должно быть указано ключевое "
+#~ "слово типа драйвера!\n"
+
+#~ msgid "ppdc: Expected duplex type after Duplex on line %d of %s\n"
+#~ msgstr ""
+#~ "ppdc: После Duplex в строке %d из %s должен быть указан тип дуплекса.\n"
+
+#~ msgid "ppdc: Expected duplex type after Duplex on line %d of %s!\n"
+#~ msgstr ""
+#~ "ppdc: После Duplex в строке %d из %s должен быть указан тип дуплекса!\n"
+
+#~ msgid "ppdc: Expected encoding after Font on line %d of %s\n"
+#~ msgstr "ppdc: После Font в строке %d из %s должна быть указана кодировка.\n"
+
+#~ msgid "ppdc: Expected encoding after Font on line %d of %s!\n"
+#~ msgstr "ppdc: После Font в строке %d из %s должна быть указана кодировка!\n"
+
+#~ msgid "ppdc: Expected filename after #po %s on line %d of %s\n"
+#~ msgstr ""
+#~ "ppdc: После #po %s в строке %d из %s должно быть указано имя файла.\n"
+
+#~ msgid "ppdc: Expected filename after #po %s on line %d of %s!\n"
+#~ msgstr ""
+#~ "ppdc: После #po %s в строке %d из %s должно быть указано имя файла!\n"
+
+#~ msgid "ppdc: Expected group name/text on line %d of %s\n"
+#~ msgstr "ppdc: В строке %d из %s должно быть указанно имя группы/текст.\n"
+
+#~ msgid "ppdc: Expected group name/text on line %d of %s!\n"
+#~ msgstr "ppdc: В строке %d из %s должно быть указано имя группы/текст!\n"
+
+#~ msgid "ppdc: Expected include filename on line %d of %s\n"
+#~ msgstr "ppdc: В строке %d из %s должно быть указано имя файла.\n"
+
+#~ msgid "ppdc: Expected include filename on line %d of %s!\n"
+#~ msgstr "ppdc: В строке %d из %s должно быть указано имя файла!\n"
+
+#~ msgid "ppdc: Expected integer on line %d of %s\n"
+#~ msgstr "ppdc: В строке %d из %s должно быть целое число.\n"
+
+#~ msgid "ppdc: Expected integer on line %d of %s!\n"
+#~ msgstr "ppdc: В строке %d из %s должно быть целое число!\n"
+
+#~ msgid "ppdc: Expected locale after #po on line %d of %s\n"
+#~ msgstr "ppdc: После #po в строке %d из %s должен быть указан регион.\n"
+
+#~ msgid "ppdc: Expected locale after #po on line %d of %s!\n"
+#~ msgstr "ppdc: После #po в строке %d из %s должен быть указан регион!\n"
+
+#~ msgid "ppdc: Expected name after %s on line %d of %s\n"
+#~ msgstr "ppdc: После %s в строке %d из %s должно быть указано имя.\n"
+
+#~ msgid "ppdc: Expected name after %s on line %d of %s!\n"
+#~ msgstr "ppdc: После %s в строке %d из %s должно быть имя!\n"
+
+#~ msgid "ppdc: Expected name after FileName on line %d of %s\n"
+#~ msgstr "ppdc: После FileName в строке %d из %s должно быть указано имя.\n"
+
+#~ msgid "ppdc: Expected name after FileName on line %d of %s!\n"
+#~ msgstr "ppdc: После FileName в строке %d из %s должно быть имя!\n"
+
+#~ msgid "ppdc: Expected name after Font on line %d of %s\n"
+#~ msgstr "ppdc: После Font в строке %d из %s должно быть указано имя.\n"
+
+#~ msgid "ppdc: Expected name after Font on line %d of %s!\n"
+#~ msgstr "ppdc: После Font в строке %d из %s должно быть имя!\n"
+
+#~ msgid "ppdc: Expected name after Manufacturer on line %d of %s\n"
+#~ msgstr ""
+#~ "ppdc: После Manufacturer в строке %d из %s должно быть указано имя.\n"
+
+#~ msgid "ppdc: Expected name after Manufacturer on line %d of %s!\n"
+#~ msgstr "ppdc: После Manufacturer в строке %d из %s должно быть имя!\n"
+
+#~ msgid "ppdc: Expected name after MediaSize on line %d of %s\n"
+#~ msgstr "ppdc: После MediaSize в строке %d из %s должно быть указано имя.\n"
+
+#~ msgid "ppdc: Expected name after MediaSize on line %d of %s!\n"
+#~ msgstr "ppdc: После MediaSize в строке %d из %s должно быть имя!\n"
+
+#~ msgid "ppdc: Expected name after ModelName on line %d of %s\n"
+#~ msgstr "ppdc: После ModelName в строке %d из %s должно быть указано имя.\n"
+
+#~ msgid "ppdc: Expected name after ModelName on line %d of %s!\n"
+#~ msgstr "ppdc: После ModelName в строке %d из %s должно быть имя!\n"
+
+#~ msgid "ppdc: Expected name after PCFileName on line %d of %s\n"
+#~ msgstr "ppdc: После PCFileName в строке %d из %s должно быть указано имя.\n"
+
+#~ msgid "ppdc: Expected name after PCFileName on line %d of %s!\n"
+#~ msgstr "ppdc: После PCFileName в строке %d из %s должно быть имя!\n"
+
+#~ msgid "ppdc: Expected name/text after %s on line %d of %s\n"
+#~ msgstr "ppdc: После %s в строке %d из %s должно быть указано имя/текст.\n"
+
+#~ msgid "ppdc: Expected name/text after %s on line %d of %s!\n"
+#~ msgstr "ppdc: После %s в строке %d из %s должно быть имя/текст!\n"
+
+#~ msgid "ppdc: Expected name/text after Installable on line %d of %s\n"
+#~ msgstr ""
+#~ "ppdc: После Installable в строке %d из %s должно быть указано имя/текст.\n"
+
+#~ msgid "ppdc: Expected name/text after Installable on line %d of %s!\n"
+#~ msgstr "ppdc: После Installable в строке %d из %s должно быть имя/текст!\n"
+
+#~ msgid "ppdc: Expected name/text after Resolution on line %d of %s\n"
+#~ msgstr ""
+#~ "ppdc: После Resolution в строке %d из %s должно быть указано имя/текст.\n"
+
+#~ msgid "ppdc: Expected name/text after Resolution on line %d of %s!\n"
+#~ msgstr "ppdc: После Resolution в строке %d из %s должно быть имя/текст!\n"
+
+#~ msgid ""
+#~ "ppdc: Expected name/text combination for ColorModel on line %d of %s\n"
+#~ msgstr ""
+#~ "ppdc: После ColorModel в строке %d из %s должно быть указано имя/текст.\n"
+
+#~ msgid ""
+#~ "ppdc: Expected name/text combination for ColorModel on line %d of %s!\n"
+#~ msgstr "ppdc: После ColorModel в строке %d из %s должно быть имя/текст!\n"
+
+#~ msgid "ppdc: Expected option name/text on line %d of %s\n"
+#~ msgstr "ppdc: В строке %d из %s должно быть указано имя параметра/текст.\n"
+
+#~ msgid "ppdc: Expected option name/text on line %d of %s!\n"
+#~ msgstr "ppdc: В строке %d из %s должно быть указано имя параметра/текст!\n"
+
+#~ msgid "ppdc: Expected option section on line %d of %s\n"
+#~ msgstr "ppdc: В строке %d из %s должен быть указан раздел параметров.\n"
+
+#~ msgid "ppdc: Expected option section on line %d of %s!\n"
+#~ msgstr "ppdc: В строке %d из %s должен быть раздел параметров!\n"
+
+#~ msgid "ppdc: Expected option type on line %d of %s\n"
+#~ msgstr "ppdc: В строке %d из %s должен быть указан тип параметра.\n"
+
+#~ msgid "ppdc: Expected option type on line %d of %s!\n"
+#~ msgstr "ppdc: В строке %d из %s должен быть указан тип параметра!\n"
+
+#~ msgid "ppdc: Expected override field after Resolution on line %d of %s\n"
+#~ msgstr ""
+#~ "ppdc: После Resolution в строке %d из %s должно быть поле "
+#~ "переопределения.\n"
+
+#~ msgid "ppdc: Expected override field after Resolution on line %d of %s!\n"
+#~ msgstr ""
+#~ "ppdc: После Resolution в строке %d из %s должно быть поле "
+#~ "переопределения!\n"
+
+#~ msgid "ppdc: Expected real number on line %d of %s\n"
+#~ msgstr "ppdc: В строке %d из %s должно быть действительное число.\n"
+
+#~ msgid "ppdc: Expected real number on line %d of %s!\n"
+#~ msgstr "ppdc: В строке %d из %s должно быть действительное число!\n"
+
+#~ msgid ""
+#~ "ppdc: Expected resolution/mediatype following ColorProfile on line %d of "
+#~ "%s\n"
+#~ msgstr ""
+#~ "ppdc: После ColorProfile в строке %d из %s должно быть указано разрешение/"
+#~ "тип носителя.\n"
+
+#~ msgid ""
+#~ "ppdc: Expected resolution/mediatype following ColorProfile on line %d of "
+#~ "%s!\n"
+#~ msgstr ""
+#~ "ppdc: После ColorProfile в строке %d из %s должно быть указано разрешение/"
+#~ "тип носителя!\n"
+
+#~ msgid ""
+#~ "ppdc: Expected resolution/mediatype following SimpleColorProfile on line "
+#~ "%d of %s\n"
+#~ msgstr ""
+#~ "ppdc: После SimpleColorProfile в строке %d из %s должно быть указано "
+#~ "разрешение/тип носителя.\n"
+
+#~ msgid ""
+#~ "ppdc: Expected resolution/mediatype following SimpleColorProfile on line "
+#~ "%d of %s!\n"
+#~ msgstr ""
+#~ "ppdc: После SimpleColorProfile в строке %d из %s должно быть указано "
+#~ "разрешение/тип носителя!\n"
+
+#~ msgid "ppdc: Expected selector after %s on line %d of %s\n"
+#~ msgstr "ppdc: После %s в строке %d из %s должен быть селектор.\n"
+
+#~ msgid "ppdc: Expected selector after %s on line %d of %s!\n"
+#~ msgstr "ppdc: После %s в строке %d из %s должен быть селектор!\n"
+
+#~ msgid "ppdc: Expected status after Font on line %d of %s\n"
+#~ msgstr "ppdc: После Font в строке %d из %s должен быть указан статус.\n"
+
+#~ msgid "ppdc: Expected status after Font on line %d of %s!\n"
+#~ msgstr "ppdc: После Font в строке %d из %s должен быть указан статус!\n"
+
+#~ msgid "ppdc: Expected string after Copyright on line %d of %s\n"
+#~ msgstr "ppdc: В строке %d из %s пропущено значение параметра Copyright.\n"
+
+#~ msgid "ppdc: Expected string after Copyright on line %d of %s!\n"
+#~ msgstr "ppdc: После Copyright в строке %d из %s должна быть строка!\n"
+
+#~ msgid "ppdc: Expected string after Version on line %d of %s\n"
+#~ msgstr "ppdc: В строке %d из %s пропущено значение параметра Version.\n"
+
+#~ msgid "ppdc: Expected string after Version on line %d of %s!\n"
+#~ msgstr "ppdc: После Version в строке %d из %s должна быть строка!\n"
+
+#~ msgid "ppdc: Expected two option names on line %d of %s\n"
+#~ msgstr "ppdc: В строке %d из %s должны быть два имени параметра.\n"
+
+#~ msgid "ppdc: Expected two option names on line %d of %s!\n"
+#~ msgstr "ppdc: В строке %d из %s должны быть два имени параметра!\n"
+
+#~ msgid "ppdc: Expected value after %s on line %d of %s\n"
+#~ msgstr "ppdc: После %s в строке %d из %s должно быть значение.\n"
+
+#~ msgid "ppdc: Expected value after %s on line %d of %s!\n"
+#~ msgstr "ppdc: После %s в строке %d из %s должно быть значение!\n"
+
+#~ msgid "ppdc: Expected version after Font on line %d of %s\n"
+#~ msgstr "ppdc: после Font в строке %d из %s должна быть указана версия.\n"
+
+#~ msgid "ppdc: Expected version after Font on line %d of %s!\n"
+#~ msgstr "ppdc: После Font в строке %d из %s должна быть указана версия!\n"
+
+#~ msgid "ppdc: Invalid #include/#po filename \"%s\"\n"
+#~ msgstr "ppdc: Неверное имя файла #include/#po \"%s\"\n"
+
+#~ msgid "ppdc: Invalid #include/#po filename \"%s\"!\n"
+#~ msgstr "ppdc: Неверное имя файла #include/#po «%s»!\n"
+
+#~ msgid "ppdc: Invalid cost for filter on line %d of %s\n"
+#~ msgstr "ppdc: Затраты на фильтр в строке %d из %s указаны неверно.\n"
+
+#~ msgid "ppdc: Invalid cost for filter on line %d of %s!\n"
+#~ msgstr "ppdc: Затраты на фильтр в строке %d из %s указаны неверно!\n"
+
+#~ msgid "ppdc: Invalid empty MIME type for filter on line %d of %s\n"
+#~ msgstr "ppdc: Недопустимый пустой MIME-тип для фильтра в строке %d из %s.\n"
+
+#~ msgid "ppdc: Invalid empty MIME type for filter on line %d of %s!\n"
+#~ msgstr "ppdc: Недопустимый пустой MIME-тип для фильтра в строке %d из %s!\n"
+
+#~ msgid "ppdc: Invalid empty program name for filter on line %d of %s\n"
+#~ msgstr ""
+#~ "ppdc: Недопустимое пустое имя программы для фильтра в строке %d из %s.\n"
+
+#~ msgid "ppdc: Invalid empty program name for filter on line %d of %s!\n"
+#~ msgstr ""
+#~ "ppdc: Недопустимое пустое имя программы для фильтра в строке %d из %s!\n"
+
+#~ msgid "ppdc: Invalid option section \"%s\" on line %d of %s\n"
+#~ msgstr "ppdc: Неверный раздел параметров \"%s\" в строке %d из %s.\n"
+
+#~ msgid "ppdc: Invalid option section \"%s\" on line %d of %s!\n"
+#~ msgstr "ppdc: Неверный раздел параметров «%s» в строке %d из %s!\n"
+
+#~ msgid "ppdc: Invalid option type \"%s\" on line %d of %s\n"
+#~ msgstr "ppdc: Неверный тип параметра \"%s\" в строке %d из %s.\n"
+
+#~ msgid "ppdc: Invalid option type \"%s\" on line %d of %s!\n"
+#~ msgstr "ppdc: Неверный тип параметра «%s» в строке %d из %s!\n"
+
+#~ msgid "ppdc: Loading driver information file \"%s\"...\n"
+#~ msgstr "ppdc: Загружаю файл с информацией о драйвере «%s»...\n"
+
+#~ msgid "ppdc: Loading messages for locale \"%s\"...\n"
+#~ msgstr "ppdc: Загружаю сообщения для региона «%s»...\n"
+
+#~ msgid "ppdc: Loading messages from \"%s\"...\n"
+#~ msgstr "ppdc: Загружаю сообщения из «%s»...\n"
+
+#~ msgid "ppdc: Missing #endif at end of \"%s\"\n"
+#~ msgstr "ppdc: Отсутствует #endif в конце \"%s\".\n"
+
+#~ msgid "ppdc: Missing #endif at end of \"%s\"!\n"
+#~ msgstr "ppdc: Отсутствует #endif в конце «%s»!\n"
+
+#~ msgid "ppdc: Missing #if on line %d of %s\n"
+#~ msgstr "ppdc: Отсутствует #if в строке %d из %s.\n"
+
+#~ msgid "ppdc: Missing #if on line %d of %s!\n"
+#~ msgstr "ppdc: Отсутствует #if в строке %d из %s!\n"
+
+#~ msgid "ppdc: No message catalog provided for locale %s\n"
+#~ msgstr "ppdc: Не указан каталог сообщений для региона %s.\n"
+
+#~ msgid "ppdc: No message catalog provided for locale %s!\n"
+#~ msgstr "ppdc: Не указан каталог сообщений для региона %s!\n"
+
+#~ msgid "ppdc: Option %s defined in two different groups on line %d of %s\n"
+#~ msgstr ""
+#~ "ppdc: Параметр %s определен в двух разных группах в строке %d из %s.\n"
+
+#~ msgid "ppdc: Option %s redefined with a different type on line %d of %s\n"
+#~ msgstr "ppdc: Для параметра %s определен другой тип в строке %d из %s.\n"
+
+#~ msgid "ppdc: Option %s redefined with a different type on line %d of %s!\n"
+#~ msgstr "ppdc: Для параметра %s определен другой тип в строке %d из %s!\n"
+
+#~ msgid "ppdc: Option constraint must *name on line %d of %s\n"
+#~ msgstr ""
+#~ "ppdc: Для ограничения параметра должно быть указано *name в строке %d из "
+#~ "%s.\n"
+
+#~ msgid "ppdc: Option constraint must *name on line %d of %s!\n"
+#~ msgstr ""
+#~ "ppdc: Для ограничения параметра должно быть указано *name в строке %d из "
+#~ "%s!\n"
+
+#~ msgid "ppdc: Too many nested #if's on line %d of %s\n"
+#~ msgstr "ppdc: Слишком много вложенных операторов #if в строке %d из %s.\n"
+
+#~ msgid "ppdc: Too many nested #if's on line %d of %s!\n"
+#~ msgstr "ppdc: Слишком много вложенных операторов #if в строке %d из %s!\n"
+
+#~ msgid "ppdc: Unable to create PPD file \"%s\" - %s.\n"
+#~ msgstr "lpadmin: Не удается создать PPD-файл «%s» – %s\n"
+
+#~ msgid "ppdc: Unable to create output directory %s: %s\n"
+#~ msgstr "ppdc: Не удается создать каталог для выходных данных %s: %s\n"
+
+#~ msgid "ppdc: Unable to create output pipes: %s\n"
+#~ msgstr "ppdc: Не удается создать конвейеры для выходных данных: %s\n"
+
+#~ msgid "ppdc: Unable to execute cupstestppd: %s\n"
+#~ msgstr "ppdc: Не удается выполнить cupstestppd: %s\n"
+
+#~ msgid "ppdc: Unable to find #po file %s on line %d of %s\n"
+#~ msgstr "ppdc: Не удается найти файл #po %s в строке %d из %s.\n"
+
+#~ msgid "ppdc: Unable to find #po file %s on line %d of %s!\n"
+#~ msgstr "ppdc: Не удается найти файл #po %s в строке %d из %s!\n"
+
+#~ msgid "ppdc: Unable to find include file \"%s\" on line %d of %s\n"
+#~ msgstr "ppdc: Не удается найти файл \"%s\" в строке %d из %s.\n"
+
+#~ msgid "ppdc: Unable to find include file \"%s\" on line %d of %s!\n"
+#~ msgstr "ppdc: Не удается найти файл «%s» в строке %d из %s!\n"
+
+#~ msgid "ppdc: Unable to find localization for \"%s\" - %s\n"
+#~ msgstr "ppdc: Не удается найти локализацию для «%s» - %s\n"
+
+#~ msgid "ppdc: Unable to load localization file \"%s\" - %s\n"
+#~ msgstr "ppdc: Не удается загрузить файл локализации «%s» - %s\n"
+
+#~ msgid "ppdc: Undefined variable (%s) on line %d of %s.\n"
+#~ msgstr "ppdc: Не определена переменная (%s) в строке %d из %s.\n"
+
+#~ msgid "ppdc: Unknown driver type %s on line %d of %s\n"
+#~ msgstr "ppdc: Неизвестный тип драйвера %s в строке %d из %s.\n"
+
+#~ msgid "ppdc: Unknown driver type %s on line %d of %s!\n"
+#~ msgstr "ppdc: Неизвестный тип драйвера %s в строке %d из %s!\n"
+
+#~ msgid "ppdc: Unknown duplex type \"%s\" on line %d of %s\n"
+#~ msgstr "ppdc: Неизвестный тип дуплекса \"%s\" в строке %d из %s.\n"
+
+#~ msgid "ppdc: Unknown duplex type \"%s\" on line %d of %s!\n"
+#~ msgstr "ppdc: Неизвестный тип дуплекса «%s» в строке %d из %s!\n"
+
+#~ msgid "ppdc: Unknown media size \"%s\" on line %d of %s\n"
+#~ msgstr "ppdc: Неизвестный размер носителя \"%s\" в строке %d из %s.\n"
+
+#~ msgid "ppdc: Unknown media size \"%s\" on line %d of %s!\n"
+#~ msgstr "ppdc: Неизвестный размер носителя «%s» в строке %d из %s!\n"
+
+#~ msgid "ppdc: Unknown token \"%s\" seen on line %d of %s\n"
+#~ msgstr "ppdc: Неизвестный маркер  \"%s\" в строке %d из %s.\n"
+
+#~ msgid "ppdc: Unknown token \"%s\" seen on line %d of %s!\n"
+#~ msgstr "ppdc: Неизвестный маркер «%s» в строке %d из %s!\n"
+
+#~ msgid ""
+#~ "ppdc: Unknown trailing characters in real number \"%s\" on line %d of %s\n"
+#~ msgstr ""
+#~ "ppdc: Неизвестные конечные символы в вещественном числе \"%s\" в строке "
+#~ "%d из %s.\n"
+
+#~ msgid ""
+#~ "ppdc: Unknown trailing characters in real number \"%s\" on line %d of "
+#~ "%s!\n"
+#~ msgstr ""
+#~ "ppdc: Неизвестные конечные символы в вещественном числе «%s» в строке %d "
+#~ "из %s!\n"
+
+#~ msgid "ppdc: Unterminated string starting with %c on line %d of %s\n"
+#~ msgstr "ppdc: Не завершена строка, начинающаяся с %c в строке %d из %s.\n"
+
+#~ msgid "ppdc: Unterminated string starting with %c on line %d of %s!\n"
+#~ msgstr "ppdc: Не завершена строка, начинающаяся с %c в строке %d из %s!\n"
+
+#~ msgid "ppdc: Warning - overlapping filename \"%s\".\n"
+#~ msgstr "ppdc: Внимание - дублирующееся имя \"%s\".\n"
+
+#~ msgid "ppdc: Writing %s...\n"
+#~ msgstr "ppdc: Записываю %s...\n"
+
+#~ msgid "ppdc: Writing PPD files to directory \"%s\"...\n"
+#~ msgstr "ppdc: Записываю PPD-файлы в каталог «%s»...\n"
+
+#~ msgid "ppdmerge: Bad LanguageVersion \"%s\" in %s\n"
+#~ msgstr "ppdmerge: Неверное значение LanguageVersion \"%s\" в %s\n"
+
+#~ msgid "ppdmerge: Bad LanguageVersion \"%s\" in %s!\n"
+#~ msgstr "ppdmerge: Неверное значение LanguageVersion «%s» в %s!\n"
+
+#~ msgid "ppdmerge: Ignoring PPD file %s...\n"
+#~ msgstr "ppdmerge: Пропускаю PPD-файл %s...\n"
+
+#~ msgid "ppdmerge: Unable to backup %s to %s- %s\n"
+#~ msgstr "ppdmerge: Не удается создать резервную копию %s на %s- %s\n"
+
+#~ msgid "printer %s disabled since %s -\n"
+#~ msgstr "принтер %s отключен с момента %s -\n"
+
+#~ msgid "printer %s is idle.  enabled since %s\n"
+#~ msgstr "принтер %s свободен. Включен с момента %s\n"
+
+#~ msgid "printer %s now printing %s-%d.  enabled since %s\n"
+#~ msgstr "принтер %s сейчас печатает %s-%d. Включен с момента %s\n"
+
+#~ msgid "printer %s/%s disabled since %s -\n"
+#~ msgstr "принтер %s/%s отключен с момента %s -\n"
+
+#~ msgid "printer %s/%s is idle.  enabled since %s\n"
+#~ msgstr "принтер %s/%s свободен. Включен с момента %s\n"
+
+#~ msgid "printer %s/%s now printing %s-%d.  enabled since %s\n"
+#~ msgstr "принтер %s/%s сейчас печатает %s-%d. Включен с момента %s\n"
+
+#~ msgid "request id is %s-%d (%d file(s))\n"
+#~ msgstr "id запроса %s-%d (%d файл.)\n"
+
+#~ msgid "scheduler is not running\n"
+#~ msgstr "планировщик не запущен\n"
+
+#~ msgid "scheduler is running\n"
+#~ msgstr "планировщик запущен\n"
+
+#~ msgid "status\t\tshow status of daemon and queue\n"
+#~ msgstr "статус\t\tпоказать статус демона и очереди\n"
+
+#~ msgid "system default destination: %s\n"
+#~ msgstr "назначение системы по умолчанию: %s\n"
+
+#~ msgid "system default destination: %s/%s\n"
+#~ msgstr "назначение системы по умолчанию: %s/%s\n"
index 7e42112a314930cd3d242db168d56500305fc89e..19ee382d105cd62fc6127d8f23e71ecace69b00a 100644 (file)
@@ -86,6 +86,7 @@ install-exec:
                $(INSTALL_DIR) $(SYMROOT); \
                for file in $(TARGETS); do \
                        cp $$file $(SYMROOT); \
+                       dsymutil $(SYMROOT)/$$file; \
                done \
        fi
 
index c038a5f58c95d8e4645540ff02e687753c47fece..721d4b79ff7ef8a996131f71428f34ef78b02bf7 100644 (file)
@@ -145,6 +145,7 @@ install-exec:
                $(INSTALL_DIR) $(SYMROOT); \
                for file in $(EXECTARGETS); do \
                        cp $$file $(SYMROOT); \
+                       dsymutil $(SYMROOT)/$$file; \
                done \
        fi
 
index 094505f6265f0c85b4c89c60996a43b0b028facd..19e16069d4373a291ebecc779a15f43f024e133a 100644 (file)
@@ -224,6 +224,7 @@ install-exec:
                $(INSTALL_DIR) $(SYMROOT); \
                for file in $(PROGRAMS); do \
                        cp $$file $(SYMROOT); \
+                       dsymutil $(SYMROOT)/$$file; \
                done \
        fi
 
index dc4a642b84e75328c011d8a359a99bb62c6693f0..24d077bbd563e4694a71f33b149d7be6210026da 100644 (file)
@@ -1,9 +1,9 @@
 /*
- * "$Id: client.c 7950 2008-09-17 00:21:59Z mike $"
+ * "$Id: client.c 10886 2013-03-08 17:56:02Z mike $"
  *
  *   Client routines for the CUPS scheduler.
  *
- *   Copyright 2007-2012 by Apple Inc.
+ *   Copyright 2007-2013 by Apple Inc.
  *   Copyright 1997-2007 by Easy Software Products, all rights reserved.
  *
  *   This file contains Kerberos support code, copyright 2006 by
@@ -49,6 +49,9 @@
 
 #include "cupsd.h"
 
+#ifdef __APPLE__
+#  include <libproc.h>
+#endif /* __APPLE__ */
 #ifdef HAVE_TCPD_H
 #  include <tcpd.h>
 #endif /* HAVE_TCPD_H */
@@ -377,8 +380,31 @@ cupsdAcceptClient(cupsd_listener_t *lis)/* I - Listener socket */
 
 #ifdef AF_LOCAL
   if (con->http.hostaddr->addr.sa_family == AF_LOCAL)
+  {
+#  ifdef __APPLE__
+    socklen_t  peersize;               /* Size of peer credentials */
+    pid_t      peerpid;                /* Peer process ID */
+    char       name[256];              /* Name of process */
+
+    peersize = sizeof(peerpid);
+    if (!getsockopt(con->http.fd, SOL_LOCAL, LOCAL_PEERPID, &peerpid,
+        &peersize))
+    {
+      if (!proc_name(peerpid, name, sizeof(name)))
+       cupsdLogMessage(CUPSD_LOG_DEBUG,
+                       "[Client %d] Accepted from %s (Domain ???[%d])",
+                       con->http.fd, con->http.hostname, (int)peerpid);
+      else
+       cupsdLogMessage(CUPSD_LOG_DEBUG,
+                       "[Client %d] Accepted from %s (Domain %s[%d])",
+                       con->http.fd, con->http.hostname, name, (int)peerpid);
+    }
+    else
+#  endif /* __APPLE__ */
+
     cupsdLogMessage(CUPSD_LOG_DEBUG, "[Client %d] Accepted from %s (Domain)",
                     con->http.fd, con->http.hostname);
+  }
   else
 #endif /* AF_LOCAL */
   cupsdLogMessage(CUPSD_LOG_DEBUG, "[Client %d] Accepted from %s:%d (IPv%d)",
@@ -654,7 +680,7 @@ cupsdFlushHeader(cupsd_client_t *con)       /* I - Client to flush to */
 {
   int bytes = httpFlushWrite(HTTP(con));
 
-  con->http.data_encoding = HTTP_ENCODE_LENGTH;
+  con->http.data_encoding = HTTP_ENCODING_LENGTH;
 
   return (bytes);
 }
@@ -697,7 +723,7 @@ cupsdReadClient(cupsd_client_t *con)        /* I - Client to read from */
                  "file=%d",
                  con->http.fd, con->http.error, con->http.used,
                  http_states[con->http.state + 1],
-                 con->http.data_encoding == HTTP_ENCODE_CHUNKED ?
+                 con->http.data_encoding == HTTP_ENCODING_CHUNKED ?
                      "CHUNKED" : "LENGTH",
                  CUPS_LLCAST con->http.data_remaining,
                  con->request,
@@ -734,7 +760,7 @@ cupsdReadClient(cupsd_client_t *con)        /* I - Client to read from */
 
   switch (con->http.state)
   {
-    case HTTP_WAITING :
+    case HTTP_STATE_WAITING :
        /*
         * See if we've received a request line...
        */
@@ -743,12 +769,12 @@ cupsdReadClient(cupsd_client_t *con)      /* I - Client to read from */
        {
          if (con->http.error && con->http.error != EPIPE)
            cupsdLogMessage(CUPSD_LOG_DEBUG,
-                           "[Client %d] HTTP_WAITING Closing for error %d "
+                           "[Client %d] HTTP_STATE_WAITING Closing for error %d "
                            "(%s)", con->http.fd, con->http.error,
                            strerror(con->http.error));
          else
            cupsdLogMessage(CUPSD_LOG_DEBUG,
-                           "[Client %d] HTTP_WAITING Closing on EOF",
+                           "[Client %d] HTTP_STATE_WAITING Closing on EOF",
                            con->http.fd);
 
          cupsdCloseClient(con);
@@ -771,10 +797,10 @@ cupsdReadClient(cupsd_client_t *con)      /* I - Client to read from */
         con->http.activity        = time(NULL);
         con->http.version         = HTTP_1_0;
        con->http.keep_alive      = HTTP_KEEPALIVE_OFF;
-       con->http.data_encoding   = HTTP_ENCODE_LENGTH;
+       con->http.data_encoding   = HTTP_ENCODING_LENGTH;
        con->http.data_remaining  = 0;
        con->http._data_remaining = 0;
-       con->operation            = HTTP_WAITING;
+       con->operation            = HTTP_STATE_WAITING;
        con->bytes                = 0;
        con->file                 = -1;
        con->file_ready           = 0;
@@ -924,19 +950,19 @@ cupsdReadClient(cupsd_client_t *con)      /* I - Client to read from */
        */
 
         if (!strcmp(operation, "GET"))
-         con->http.state = HTTP_GET;
+         con->http.state = HTTP_STATE_GET;
         else if (!strcmp(operation, "PUT"))
-         con->http.state = HTTP_PUT;
+         con->http.state = HTTP_STATE_PUT;
         else if (!strcmp(operation, "POST"))
-         con->http.state = HTTP_POST;
+         con->http.state = HTTP_STATE_POST;
         else if (!strcmp(operation, "DELETE"))
-         con->http.state = HTTP_DELETE;
+         con->http.state = HTTP_STATE_DELETE;
         else if (!strcmp(operation, "TRACE"))
-         con->http.state = HTTP_TRACE;
+         con->http.state = HTTP_STATE_TRACE;
         else if (!strcmp(operation, "OPTIONS"))
-         con->http.state = HTTP_OPTIONS;
+         con->http.state = HTTP_STATE_OPTIONS;
         else if (!strcmp(operation, "HEAD"))
-         con->http.state = HTTP_HEAD;
+         con->http.state = HTTP_STATE_HEAD;
        else
        {
          cupsdLogMessage(CUPSD_LOG_ERROR,
@@ -962,13 +988,13 @@ cupsdReadClient(cupsd_client_t *con)      /* I - Client to read from */
           cupsdSetBusyState();
         }
 
-    case HTTP_OPTIONS :
-    case HTTP_DELETE :
-    case HTTP_GET :
-    case HTTP_HEAD :
-    case HTTP_POST :
-    case HTTP_PUT :
-    case HTTP_TRACE :
+    case HTTP_STATE_OPTIONS :
+    case HTTP_STATE_DELETE :
+    case HTTP_STATE_GET :
+    case HTTP_STATE_HEAD :
+    case HTTP_STATE_POST :
+    case HTTP_STATE_PUT :
+    case HTTP_STATE_TRACE :
        /*
         * Parse incoming parameters until the status changes...
        */
@@ -1098,7 +1124,7 @@ cupsdReadClient(cupsd_client_t *con)      /* I - Client to read from */
        return;
       }
     }
-    else if (con->operation == HTTP_OPTIONS)
+    else if (con->operation == HTTP_STATE_OPTIONS)
     {
      /*
       * Do OPTIONS command...
@@ -1234,7 +1260,7 @@ cupsdReadClient(cupsd_client_t *con)      /* I - Client to read from */
       }
 
       if (con->http.expect &&
-          (con->operation == HTTP_POST || con->operation == HTTP_PUT))
+          (con->operation == HTTP_STATE_POST || con->operation == HTTP_STATE_PUT))
       {
         if (con->http.expect == HTTP_CONTINUE)
        {
@@ -1274,7 +1300,7 @@ cupsdReadClient(cupsd_client_t *con)      /* I - Client to read from */
 
       switch (con->http.state)
       {
-       case HTTP_GET_SEND :
+       case HTTP_STATE_GET_SEND :
             if ((!strncmp(con->uri, "/ppd/", 5) ||
                 !strncmp(con->uri, "/printers/", 10)) &&
                !strcmp(con->uri + strlen(con->uri) - 4, ".ppd"))
@@ -1517,7 +1543,7 @@ cupsdReadClient(cupsd_client_t *con)      /* I - Client to read from */
            }
             break;
 
-       case HTTP_POST_RECV :
+       case HTTP_STATE_POST_RECV :
            /*
            * See if the POST request includes a Content-Length field, and if
            * so check the length against any limits that are set...
@@ -1541,7 +1567,7 @@ cupsdReadClient(cupsd_client_t *con)      /* I - Client to read from */
             }
            else if (con->http.data_remaining < 0 ||
                     (!con->http.fields[HTTP_FIELD_CONTENT_LENGTH][0] &&
-                     con->http.data_encoding == HTTP_ENCODE_LENGTH))
+                     con->http.data_encoding == HTTP_ENCODING_LENGTH))
            {
             /*
              * Negative content lengths are invalid!
@@ -1676,7 +1702,7 @@ cupsdReadClient(cupsd_client_t *con)      /* I - Client to read from */
            }
            break;
 
-       case HTTP_PUT_RECV :
+       case HTTP_STATE_PUT_RECV :
           /*
            * Validate the resource name...
            */
@@ -1763,13 +1789,13 @@ cupsdReadClient(cupsd_client_t *con)    /* I - Client to read from */
            fcntl(con->file, F_SETFD, fcntl(con->file, F_GETFD) | FD_CLOEXEC);
            break;
 
-       case HTTP_DELETE :
-       case HTTP_TRACE :
+       case HTTP_STATE_DELETE :
+       case HTTP_STATE_TRACE :
             cupsdSendError(con, HTTP_NOT_IMPLEMENTED, CUPSD_AUTH_NONE);
            cupsdCloseClient(con);
            return;
 
-       case HTTP_HEAD :
+       case HTTP_STATE_HEAD :
             if (!strncmp(con->uri, "/printers/", 10) &&
                !strcmp(con->uri + strlen(con->uri) - 4, ".ppd"))
            {
@@ -1984,19 +2010,19 @@ cupsdReadClient(cupsd_client_t *con)    /* I - Client to read from */
 
   switch (con->http.state)
   {
-    case HTTP_PUT_RECV :
+    case HTTP_STATE_PUT_RECV :
         do
        {
           if ((bytes = httpRead2(HTTP(con), line, sizeof(line))) < 0)
          {
            if (con->http.error && con->http.error != EPIPE)
              cupsdLogMessage(CUPSD_LOG_DEBUG,
-                             "[Client %d] HTTP_PUT_RECV Closing for error "
+                             "[Client %d] HTTP_STATE_PUT_RECV Closing for error "
                              "%d (%s)", con->http.fd, con->http.error,
                              strerror(con->http.error));
            else
              cupsdLogMessage(CUPSD_LOG_DEBUG,
-                             "[Client %d] HTTP_PUT_RECV Closing on EOF",
+                             "[Client %d] HTTP_STATE_PUT_RECV Closing on EOF",
                              con->http.fd);
 
            cupsdCloseClient(con);
@@ -2026,9 +2052,9 @@ cupsdReadClient(cupsd_client_t *con)      /* I - Client to read from */
            }
          }
         }
-       while (con->http.state == HTTP_PUT_RECV && data_ready(con));
+       while (con->http.state == HTTP_STATE_PUT_RECV && data_ready(con));
 
-        if (con->http.state == HTTP_WAITING)
+        if (con->http.state == HTTP_STATE_STATUS)
        {
         /*
          * End of file, see how big it is...
@@ -2074,7 +2100,7 @@ cupsdReadClient(cupsd_client_t *con)      /* I - Client to read from */
        }
         break;
 
-    case HTTP_POST_RECV :
+    case HTTP_STATE_POST_RECV :
         do
        {
           if (con->request && con->file < 0)
@@ -2095,7 +2121,7 @@ cupsdReadClient(cupsd_client_t *con)      /* I - Client to read from */
            }
            else if (ipp_state != IPP_DATA)
            {
-              if (con->http.state == HTTP_POST_SEND)
+              if (con->http.state == HTTP_STATE_POST_SEND)
              {
                cupsdSendError(con, HTTP_BAD_REQUEST, CUPSD_AUTH_NONE);
                cupsdCloseClient(con);
@@ -2115,7 +2141,7 @@ cupsdReadClient(cupsd_client_t *con)      /* I - Client to read from */
            }
          }
 
-          if (con->file < 0 && con->http.state != HTTP_POST_SEND)
+          if (con->file < 0 && con->http.state != HTTP_STATE_POST_SEND)
          {
            /*
            * Create a file as needed for the request data...
@@ -2144,18 +2170,20 @@ cupsdReadClient(cupsd_client_t *con)    /* I - Client to read from */
             fcntl(con->file, F_SETFD, fcntl(con->file, F_GETFD) | FD_CLOEXEC);
          }
 
-         if (con->http.state != HTTP_POST_SEND)
+         if (con->http.state != HTTP_STATE_POST_SEND)
          {
-            if ((bytes = httpRead2(HTTP(con), line, sizeof(line))) < 0)
+           if (!httpWait(HTTP(con), 0))
+             return;
+            else if ((bytes = httpRead2(HTTP(con), line, sizeof(line))) < 0)
            {
              if (con->http.error && con->http.error != EPIPE)
                cupsdLogMessage(CUPSD_LOG_DEBUG,
-                               "[Client %d] HTTP_POST_SEND Closing for "
+                               "[Client %d] HTTP_STATE_POST_SEND Closing for "
                                "error %d (%s)", con->http.fd, con->http.error,
                                strerror(con->http.error));
              else
                cupsdLogMessage(CUPSD_LOG_DEBUG,
-                               "[Client %d] HTTP_POST_SEND Closing on EOF",
+                               "[Client %d] HTTP_STATE_POST_SEND Closing on EOF",
                                con->http.fd);
 
              cupsdCloseClient(con);
@@ -2185,9 +2213,9 @@ cupsdReadClient(cupsd_client_t *con)      /* I - Client to read from */
                }
              }
            }
-           else if (con->http.state == HTTP_POST_RECV)
+           else if (con->http.state == HTTP_STATE_POST_RECV)
               return;
-           else if (con->http.state != HTTP_POST_SEND)
+           else if (con->http.state != HTTP_STATE_POST_SEND)
            {
              cupsdLogMessage(CUPSD_LOG_DEBUG,
                              "[Client %d] Closing on unexpected state %s.",
@@ -2197,9 +2225,9 @@ cupsdReadClient(cupsd_client_t *con)      /* I - Client to read from */
            }
          }
         }
-       while (con->http.state == HTTP_POST_RECV && data_ready(con));
+       while (con->http.state == HTTP_STATE_POST_RECV && data_ready(con));
 
-       if (con->http.state == HTTP_POST_SEND)
+       if (con->http.state == HTTP_STATE_POST_SEND)
        {
          if (con->file >= 0)
          {
@@ -2278,7 +2306,7 @@ cupsdReadClient(cupsd_client_t *con)      /* I - Client to read from */
         break; /* Anti-compiler-warning-code */
   }
 
-  if (con->http.state == HTTP_WAITING)
+  if (con->http.state == HTTP_STATE_WAITING)
   {
     if (!con->http.keep_alive)
     {
@@ -2550,7 +2578,7 @@ cupsdSendHeader(
 
   httpFlushWrite(HTTP(con));
 
-  con->http.data_encoding = HTTP_ENCODE_FIELDS;
+  con->http.data_encoding = HTTP_ENCODING_FIELDS;
 
   if (httpPrintf(HTTP(con), "HTTP/%d.%d %d %s\r\n", con->http.version / 100,
                  con->http.version % 100, code, httpStatus(code)) < 0)
@@ -2730,22 +2758,22 @@ cupsdWriteClient(cupsd_client_t *con)   /* I - Client connection */
                  "error=%d, "
                  "used=%d, "
                  "state=%s, "
-                 "data_encoding=HTTP_ENCODE_%s, "
+                 "data_encoding=HTTP_ENCODING_%s, "
                  "data_remaining=" CUPS_LLFMT ", "
                  "response=%p(%s), "
                  "pipe_pid=%d, "
                  "file=%d",
                  con->http.fd, con->http.error, con->http.used,
                  http_states[con->http.state + 1],
-                 con->http.data_encoding == HTTP_ENCODE_CHUNKED ?
+                 con->http.data_encoding == HTTP_ENCODING_CHUNKED ?
                      "CHUNKED" : "LENGTH",
                  CUPS_LLCAST con->http.data_remaining,
                  con->response,
                  con->response ? ipp_states[con->response->state] : "",
                  con->pipe_pid, con->file);
 
-  if (con->http.state != HTTP_GET_SEND &&
-      con->http.state != HTTP_POST_SEND)
+  if (con->http.state != HTTP_STATE_GET_SEND &&
+      con->http.state != HTTP_STATE_POST_SEND)
   {
    /*
     * If we get called in the wrong state, then something went wrong with the
@@ -2886,7 +2914,7 @@ cupsdWriteClient(cupsd_client_t *con)     /* I - Client connection */
            }
 
            if (con->http.version == HTTP_1_1)
-             con->http.data_encoding = HTTP_ENCODE_CHUNKED;
+             con->http.data_encoding = HTTP_ENCODING_CHUNKED;
           }
          else
            field_col = 0;
@@ -2914,12 +2942,12 @@ cupsdWriteClient(cupsd_client_t *con)   /* I - Client connection */
        return;
       }
 
-      if (con->http.data_encoding == HTTP_ENCODE_CHUNKED)
+      if (con->http.data_encoding == HTTP_ENCODING_CHUNKED)
         httpFlushWrite(HTTP(con));
 
       con->bytes += con->header_used;
 
-      if (con->http.state == HTTP_WAITING)
+      if (con->http.state == HTTP_STATE_WAITING)
        bytes = 0;
       else
         bytes = con->header_used;
@@ -2929,7 +2957,7 @@ cupsdWriteClient(cupsd_client_t *con)     /* I - Client connection */
   }
 
   if (bytes <= 0 ||
-      (con->http.state != HTTP_GET_SEND && con->http.state != HTTP_POST_SEND))
+      (con->http.state != HTTP_STATE_GET_SEND && con->http.state != HTTP_STATE_POST_SEND))
   {
     if (!con->sent_header && con->pipe_pid)
       cupsdSendError(con, HTTP_SERVER_ERROR, CUPSD_AUTH_NONE);
@@ -2939,7 +2967,7 @@ cupsdWriteClient(cupsd_client_t *con)     /* I - Client connection */
 
       httpFlushWrite(HTTP(con));
 
-      if (con->http.data_encoding == HTTP_ENCODE_CHUNKED && con->sent_header == 1)
+      if (con->http.data_encoding == HTTP_ENCODING_CHUNKED && con->sent_header == 1)
       {
        if (httpWrite2(HTTP(con), "", 0) < 0)
        {
@@ -2953,7 +2981,7 @@ cupsdWriteClient(cupsd_client_t *con)     /* I - Client connection */
       }
     }
 
-    con->http.state = HTTP_WAITING;
+    con->http.state = HTTP_STATE_WAITING;
 
     cupsdAddSelect(con->http.fd, (cupsd_selfunc_t)cupsdReadClient, NULL, con);
 
@@ -3340,14 +3368,14 @@ install_cupsd_conf(cupsd_client_t *con) /* I - Connection */
   * Open the new config file...
   */
 
-  snprintf(filename, sizeof(filename), "%s/cupsd.conf", ServerRoot);
-  if ((out = cupsdCreateConfFile(filename, ConfigFilePerm)) == NULL)
+  if ((out = cupsdCreateConfFile(ConfigurationFile, ConfigFilePerm)) == NULL)
   {
     cupsFileClose(in);
     return (HTTP_SERVER_ERROR);
   }
 
-  cupsdLogMessage(CUPSD_LOG_INFO, "Installing config file \"%s\"...", filename);
+  cupsdLogMessage(CUPSD_LOG_INFO, "Installing config file \"%s\"...",
+                  ConfigurationFile);
 
  /*
   * Copy from the request to the new config file...
@@ -3358,13 +3386,13 @@ install_cupsd_conf(cupsd_client_t *con) /* I - Connection */
     {
       cupsdLogMessage(CUPSD_LOG_ERROR,
                       "Unable to copy to config file \"%s\": %s",
-                     filename, strerror(errno));
+                     ConfigurationFile, strerror(errno));
 
       cupsFileClose(in);
       cupsFileClose(out);
 
-      snprintf(filename, sizeof(filename), "%s%s.N", ServerRoot, con->uri + 11);
-      cupsdRemoveFile(filename);
+      snprintf(filename, sizeof(filename), "%s.N", ConfigurationFile);
+      cupsdUnlinkOrRemoveFile(filename);
 
       return (HTTP_SERVER_ERROR);
     }
@@ -3375,14 +3403,14 @@ install_cupsd_conf(cupsd_client_t *con) /* I - Connection */
 
   cupsFileClose(in);
 
-  if (cupsdCloseCreatedConfFile(out, filename))
+  if (cupsdCloseCreatedConfFile(out, ConfigurationFile))
     return (HTTP_SERVER_ERROR);
 
  /*
   * Remove the request file...
   */
 
-  cupsdRemoveFile(con->filename);
+  cupsdUnlinkOrRemoveFile(con->filename);
   cupsdClearString(&con->filename);
 
  /*
@@ -3683,7 +3711,7 @@ pipe_command(cupsd_client_t *con, /* I - Client connection */
       commptr ++;
   }
 
-  if (*commptr == '?' && con->operation == HTTP_GET && !con->query_string)
+  if (*commptr == '?' && con->operation == HTTP_STATE_GET && !con->query_string)
   {
     commptr ++;
     cupsdSetStringf(&(con->query_string), "QUERY_STRING=%s", commptr);
@@ -3888,7 +3916,7 @@ pipe_command(cupsd_client_t *con, /* I - Client connection */
     envp[envc ++] = http_referer;
   }
 
-  if (con->operation == HTTP_GET)
+  if (con->operation == HTTP_STATE_GET)
   {
     envp[envc ++] = "REQUEST_METHOD=GET";
 
@@ -4194,7 +4222,7 @@ write_file(cupsd_client_t *con,           /* I - Client connection */
   if (cupsdFlushHeader(con) < 0)
     return (0);
 
-  con->http.data_encoding  = HTTP_ENCODE_LENGTH;
+  con->http.data_encoding  = HTTP_ENCODING_LENGTH;
   con->http.data_remaining = filestats->st_size;
 
   if (con->http.data_remaining <= INT_MAX)
@@ -4228,5 +4256,5 @@ write_pipe(cupsd_client_t *con)           /* I - Client connection */
 
 
 /*
- * End of "$Id: client.c 7950 2008-09-17 00:21:59Z mike $".
+ * End of "$Id: client.c 10886 2013-03-08 17:56:02Z mike $".
  */
index cee1e2517bd4520635765793e58125f4b8b7a52e..5492eb5d71e755efe2f65069cddcf91e1ceb549b 100644 (file)
@@ -140,7 +140,6 @@ static const cupsd_var_t    cupsd_vars[] =
   { "PreserveJobFiles",                &JobFiles,              CUPSD_VARTYPE_TIME },
   { "PreserveJobHistory",      &JobHistory,            CUPSD_VARTYPE_TIME },
   { "ReloadTimeout",           &ReloadTimeout,         CUPSD_VARTYPE_TIME },
-  { "RemoteRoot",              &RemoteRoot,            CUPSD_VARTYPE_STRING },
   { "RIPCache",                        &RIPCache,              CUPSD_VARTYPE_STRING },
   { "RootCertDuration",                &RootCertDuration,      CUPSD_VARTYPE_TIME },
   { "ServerAdmin",             &ServerAdmin,           CUPSD_VARTYPE_STRING },
@@ -163,6 +162,7 @@ static const cupsd_var_t    cupsfiles_vars[] =
   { "LPDConfigFile",           &LPDConfigFile,         CUPSD_VARTYPE_STRING },
   { "PageLog",                 &PageLog,               CUPSD_VARTYPE_STRING },
   { "Printcap",                        &Printcap,              CUPSD_VARTYPE_STRING },
+  { "RemoteRoot",              &RemoteRoot,            CUPSD_VARTYPE_STRING },
   { "RequestRoot",             &RequestRoot,           CUPSD_VARTYPE_STRING },
   { "ServerBin",               &ServerBin,             CUPSD_VARTYPE_PATHNAME },
 #ifdef HAVE_SSL
@@ -797,14 +797,22 @@ cupsdReadConfiguration(void)
     cupsFileClose(fp);
 
     if (!status)
+    {
+      if (TestConfigFile)
+        printf("\"%s\" contains errors.\n", CupsFilesFile);
+      else
+        syslog(LOG_LPR, "Unable to read \"%s\" due to errors.",
+               CupsFilesFile);
+
       return (0);
+    }
   }
   else if (errno == ENOENT)
     cupsdLogMessage(CUPSD_LOG_INFO, "No %s, using defaults.", CupsFilesFile);
   else
   {
-    cupsdLogMessage(CUPSD_LOG_CRIT, "Unable to open %s: %s", CupsFilesFile,
-                    strerror(errno));
+    syslog(LOG_LPR, "Unable to open \"%s\": %s", CupsFilesFile,
+          strerror(errno));
     return (0);
   }
 
@@ -817,8 +825,8 @@ cupsdReadConfiguration(void)
 
   if ((fp = cupsFileOpen(ConfigurationFile, "r")) == NULL)
   {
-    cupsdLogMessage(CUPSD_LOG_CRIT, "Unable to open %s: %s", ConfigurationFile,
-                    strerror(errno));
+    syslog(LOG_LPR, "Unable to open \"%s\": %s", ConfigurationFile,
+          strerror(errno));
     return (0);
   }
 
@@ -827,7 +835,15 @@ cupsdReadConfiguration(void)
   cupsFileClose(fp);
 
   if (!status)
+  {
+    if (TestConfigFile)
+      printf("\"%s\" contains errors.\n", ConfigurationFile);
+    else
+      syslog(LOG_LPR, "Unable to read \"%s\" due to errors.",
+            ConfigurationFile);
+
     return (0);
+  }
 
   RunUser = getuid();
 
@@ -940,6 +956,13 @@ cupsdReadConfiguration(void)
     }
   }
 
+ /*
+  * Make sure ConfigFilePerm and LogFilePerm have sane values...
+  */
+
+  ConfigFilePerm &= 0664;
+  LogFilePerm    &= 0664;
+
  /*
   * Open the system log for cupsd if necessary...
   */
@@ -1101,7 +1124,9 @@ cupsdReadConfiguration(void)
                             Group, 1, 1) < 0 ||
        cupsdCheckPermissions(ServerRoot, "ssl", 0700, RunUser,
                             Group, 1, 0) < 0 ||
-       cupsdCheckPermissions(ServerRoot, "cupsd.conf", ConfigFilePerm, RunUser,
+       cupsdCheckPermissions(ConfigurationFile, NULL, ConfigFilePerm, RunUser,
+                            Group, 0, 0) < 0 ||
+       cupsdCheckPermissions(CupsFilesFile, NULL, ConfigFilePerm, RunUser,
                             Group, 0, 0) < 0 ||
        cupsdCheckPermissions(ServerRoot, "classes.conf", 0600, RunUser,
                             Group, 0, 0) < 0 ||
@@ -3296,6 +3321,40 @@ read_cupsd_conf(cups_file_t *fp) /* I - File to read from */
                        "line %d.", value, linenum);
     }
 #endif /* HAVE_SSL */
+    else if (!_cups_strcasecmp(line, "AccessLog") ||
+             !_cups_strcasecmp(line, "CacheDir") ||
+             !_cups_strcasecmp(line, "ConfigFilePerm") ||
+             !_cups_strcasecmp(line, "DataDir") ||
+             !_cups_strcasecmp(line, "DocumentRoot") ||
+             !_cups_strcasecmp(line, "ErrorLog") ||
+             !_cups_strcasecmp(line, "FatalErrors") ||
+             !_cups_strcasecmp(line, "FileDevice") ||
+             !_cups_strcasecmp(line, "FontPath") ||
+             !_cups_strcasecmp(line, "Group") ||
+             !_cups_strcasecmp(line, "LogFilePerm") ||
+             !_cups_strcasecmp(line, "LPDConfigFile") ||
+             !_cups_strcasecmp(line, "PageLog") ||
+             !_cups_strcasecmp(line, "Printcap") ||
+             !_cups_strcasecmp(line, "PrintcapFormat") ||
+             !_cups_strcasecmp(line, "RemoteRoot") ||
+             !_cups_strcasecmp(line, "RequestRoot") ||
+             !_cups_strcasecmp(line, "ServerBin") ||
+             !_cups_strcasecmp(line, "ServerCertificate") ||
+             !_cups_strcasecmp(line, "ServerKey") ||
+             !_cups_strcasecmp(line, "ServerRoot") ||
+             !_cups_strcasecmp(line, "SMBConfigFile") ||
+             !_cups_strcasecmp(line, "StateDir") ||
+             !_cups_strcasecmp(line, "SystemGroup") ||
+             !_cups_strcasecmp(line, "SystemGroupAuthKey") ||
+             !_cups_strcasecmp(line, "TempDir") ||
+            !_cups_strcasecmp(line, "User"))
+    {
+      cupsdLogMessage(CUPSD_LOG_WARN,
+                     "Please move \"%s%s%s\" on line %d of %s to the %s file; "
+                     "this will become an error in a future release.",
+                     line, value ? " " : "", value ? value : "", linenum,
+                     ConfigurationFile, CupsFilesFile);
+    }
     else
       parse_variable(ConfigurationFile, linenum, line, value,
                      sizeof(cupsd_vars) / sizeof(cupsd_vars[0]), cupsd_vars);
index 8a6ffd97f40fa475d910d740d51b3b40ca30bd06..fb088329c98b25f3318c89a93d97ca311440af62 100644 (file)
@@ -3,7 +3,7 @@
  *
  *   Main header file for the CUPS scheduler.
  *
- *   Copyright 2007-2012 by Apple Inc.
+ *   Copyright 2007-2013 by Apple Inc.
  *   Copyright 1997-2007 by Easy Software Products, all rights reserved.
  *
  *   These coded instructions, statements, and computer programs are the
@@ -187,6 +187,7 @@ extern cups_file_t  *cupsdCreateConfFile(const char *filename, mode_t mode);
 extern cups_file_t     *cupsdOpenConfFile(const char *filename);
 extern int             cupsdOpenPipe(int *fds);
 extern int             cupsdRemoveFile(const char *filename);
+extern int             cupsdUnlinkOrRemoveFile(const char *filename);
 
 /* main.c */
 extern int             cupsdAddString(cups_array_t **a, const char *s);
index 8d33610c194a861ae408782e302cfe5a9c429b1e..ca5aa5e2c5284f8d191431fae6fac89b7695014c 100644 (file)
@@ -3,7 +3,7 @@
  *
  *   File functions for the CUPS scheduler.
  *
- *   Copyright 2007-2011 by Apple Inc.
+ *   Copyright 2007-2013 by Apple Inc.
  *   Copyright 1997-2007 by Easy Software Products, all rights reserved.
  *
  *   These coded instructions, statements, and computer programs are the
  *
  * Contents:
  *
- *   cupsdCleanFiles()           - Clean out old files.
+ *   cupsdCleanFiles()          - Clean out old files.
  *   cupsdCloseCreatedConfFile() - Close a created configuration file and move
- *                                 into place.
- *   cupsdClosePipe()            - Close a pipe as necessary.
- *   cupsdCreateConfFile()       - Create a configuration file safely.
- *   cupsdOpenConfFile()         - Open a configuration file.
- *   cupsdOpenPipe()             - Create a pipe which is closed on exec.
- *   cupsdRemoveFile()           - Remove a file using the 7-pass US DoD method.
- *   overwrite_data()            - Overwrite the data in a file.
+ *                                into place.
+ *   cupsdClosePipe()           - Close a pipe as necessary.
+ *   cupsdCreateConfFile()      - Create a configuration file safely.
+ *   cupsdOpenConfFile()        - Open a configuration file.
+ *   cupsdOpenPipe()            - Create a pipe which is closed on exec.
+ *   cupsdRemoveFile()          - Remove a file securely.
+ *   cupsdUnlinkOrRemoveFile()  - Unlink or securely remove a file depending
+ *                                on the configuration.
+ *   overwrite_data()           - Overwrite the data in a file.
  */
 
 /*
@@ -43,7 +45,7 @@ static int    overwrite_data(int fd, const char *buffer, int bufsize,
 /*
  * 'cupsdCleanFiles()' - Clean out old files.
  */
+
 void
 cupsdCleanFiles(const char *path,      /* I - Directory to clean */
                 const char *pattern)   /* I - Filename pattern or NULL */
@@ -65,7 +67,7 @@ cupsdCleanFiles(const char *path,     /* I - Directory to clean */
     return;
   }
 
-  cupsdLogMessage(CUPSD_LOG_INFO, "Cleaning out old files in \"%s\"...", path);
+  cupsdLogMessage(CUPSD_LOG_INFO, "Cleaning out old files in \"%s\".", path);
 
   while ((dent = cupsDirRead(dir)) != NULL)
   {
@@ -81,13 +83,11 @@ cupsdCleanFiles(const char *path,   /* I - Directory to clean */
       status = rmdir(filename);
     }
     else
-      status = unlink(filename);
+      status = cupsdUnlinkOrRemoveFile(filename);
 
     if (status)
       cupsdLogMessage(CUPSD_LOG_ERROR, "Unable to remove \"%s\" - %s", filename,
                      strerror(errno));
-    else
-      cupsdLogMessage(CUPSD_LOG_DEBUG, "Removed \"%s\"...", filename);
   }
 
   cupsDirClose(dir);
@@ -123,7 +123,7 @@ cupsdCloseCreatedConfFile(
   snprintf(newfile, sizeof(newfile), "%s.N", filename);
   snprintf(oldfile, sizeof(oldfile), "%s.O", filename);
 
-  if ((cupsdRemoveFile(oldfile) && errno != ENOENT) ||
+  if ((cupsdUnlinkOrRemoveFile(oldfile) && errno != ENOENT) ||
       (rename(filename, oldfile) && errno != ENOENT) ||
       rename(newfile, filename))
   {
@@ -285,14 +285,27 @@ cupsdOpenPipe(int *fds)                   /* O - Pipe file descriptors (2) */
 
 
 /*
- * 'cupsdRemoveFile()' - Remove a file using the 7-pass US DoD method.
+ * 'cupsdRemoveFile()' - Remove a file securely.
  */
 
 int                                    /* O - 0 on success, -1 on error */
 cupsdRemoveFile(const char *filename)  /* I - File to remove */
 {
 #ifdef HAVE_REMOVEFILE
-  return (removefile(filename, NULL, REMOVEFILE_SECURE_7_PASS));
+ /*
+  * See if the file exists...
+  */
+
+  if (access(filename, 0))
+    return (0);
+
+  cupsdLogMessage(CUPSD_LOG_DEBUG, "Securely removing \"%s\".", filename);
+
+ /*
+  * Remove the file...
+  */
+
+  return (removefile(filename, NULL, REMOVEFILE_SECURE_1_PASS));
 
 #else
   int                  fd;             /* File descriptor */
@@ -301,6 +314,15 @@ cupsdRemoveFile(const char *filename)      /* I - File to remove */
   int                  i;              /* Looping var */
 
 
+ /*
+  * See if the file exists...
+  */
+
+  if (access(filename, 0))
+    return (0);
+
+  cupsdLogMessage(CUPSD_LOG_DEBUG, "Securely removing \"%s\".", filename);
+
  /*
   * First open the file for writing in exclusive mode.
   */
@@ -330,31 +352,9 @@ cupsdRemoveFile(const char *filename)      /* I - File to remove */
   }
 
  /*
-  * Overwrite the file 7 times with 0xF6, 0x00, 0xFF, random, 0x00, 0xFF,
-  * and more random data.
+  * Overwrite the file with random data.
   */
 
-  memset(buffer, 0xF6, sizeof(buffer));
-  if (overwrite_data(fd, buffer, sizeof(buffer), (int)info.st_size))
-  {
-    close(fd);
-    return (-1);
-  }
-
-  memset(buffer, 0x00, sizeof(buffer));
-  if (overwrite_data(fd, buffer, sizeof(buffer), (int)info.st_size))
-  {
-    close(fd);
-    return (-1);
-  }
-
-  memset(buffer, 0xFF, sizeof(buffer));
-  if (overwrite_data(fd, buffer, sizeof(buffer), (int)info.st_size))
-  {
-    close(fd);
-    return (-1);
-  }
-
   CUPS_SRAND(time(NULL));
 
   for (i = 0; i < sizeof(buffer); i ++)
@@ -365,39 +365,31 @@ cupsdRemoveFile(const char *filename)     /* I - File to remove */
     return (-1);
   }
 
-  memset(buffer, 0x00, sizeof(buffer));
-  if (overwrite_data(fd, buffer, sizeof(buffer), (int)info.st_size))
-  {
-    close(fd);
-    return (-1);
-  }
-
-  memset(buffer, 0xFF, sizeof(buffer));
-  if (overwrite_data(fd, buffer, sizeof(buffer), (int)info.st_size))
-  {
-    close(fd);
-    return (-1);
-  }
-
-  for (i = 0; i < sizeof(buffer); i ++)
-    buffer[i] = CUPS_RAND();
-  if (overwrite_data(fd, buffer, sizeof(buffer), (int)info.st_size))
-  {
-    close(fd);
-    return (-1);
-  }
-
  /*
-  * Whew!  Close the file (which will lead to the actual deletion) and
-  * return success...
+  * Close the file, which will lead to the actual deletion, and return...
   */
 
-  close(fd);
-  return (0);
+  return (close(fd));
 #endif /* HAVE_REMOVEFILE */
 }
 
 
+/*
+ * 'cupsdUnlinkOrRemoveFile()' - Unlink or securely remove a file depending
+ *                               on the configuration.
+ */
+
+int                                    /* O - 0 on success, -1 on error */
+cupsdUnlinkOrRemoveFile(
+    const char *filename)              /* I - Filename */
+{
+  if (Classification)
+    return (cupsdRemoveFile(filename));
+  else
+    return (unlink(filename));
+}
+
+
 #ifndef HAVE_REMOVEFILE
 /*
  * 'overwrite_data()' - Overwrite the data in a file.
index 3f2c0191ecfa85a4980ad55be5ef915d618c1133..febd66dfe2e536549b1db258441e3c7f0dd2f69c 100644 (file)
@@ -1235,6 +1235,12 @@ add_file(cupsd_client_t *con,            /* I - Connection to client */
                                           sizeof(mime_type_t *));
   }
 
+  if (compressions)
+    job->compressions = compressions;
+
+  if (filetypes)
+    job->filetypes = filetypes;
+
   if (!compressions || !filetypes)
   {
     cupsdSetJobState(job, IPP_JOB_ABORTED, CUPSD_JOB_PURGE,
@@ -1247,9 +1253,7 @@ add_file(cupsd_client_t *con,             /* I - Connection to client */
     return (-1);
   }
 
-  job->compressions                 = compressions;
   job->compressions[job->num_files] = compression;
-  job->filetypes                    = filetypes;
   job->filetypes[job->num_files]    = filetype;
 
   job->num_files ++;
@@ -1288,10 +1292,8 @@ add_job(cupsd_client_t  *con,            /* I - Client connection */
   static const char * const readonly[] =/* List of read-only attributes */
   {
     "job-id",
-    "job-k-octets",
-    /*"job-impressions",*/             /* For now we allow this since cupsd can't count */
+    "job-k-octets-completed",
     "job-impressions-completed",
-    "job-media-sheets",
     "job-media-sheets-completed",
     "job-state",
     "job-state-message",
@@ -1384,7 +1386,7 @@ add_job(cupsd_client_t  *con,             /* I - Client connection */
        return (NULL);
       }
 
-      cupsdLogMessage(CUPSD_LOG_WARN,
+      cupsdLogMessage(CUPSD_LOG_INFO,
                       "Unexpected '%s' Job Description attribute in a job "
                       "creation request.", readonly[i]);
     }
@@ -1595,9 +1597,27 @@ add_job(cupsd_client_t  *con,            /* I - Client connection */
                   priority);
   }
 
-  if (!ippFindAttribute(con->request, "job-name", IPP_TAG_NAME))
+  if ((attr = ippFindAttribute(con->request, "job-name", IPP_TAG_ZERO)) == NULL)
     ippAddString(con->request, IPP_TAG_JOB, IPP_TAG_NAME, "job-name", NULL,
                  "Untitled");
+  else if ((attr->value_tag != IPP_TAG_NAME &&
+            attr->value_tag != IPP_TAG_NAMELANG) ||
+           attr->num_values != 1)
+  {
+    send_ipp_status(con, IPP_ATTRIBUTES,
+                    _("Bad job-name value: Wrong type or count."));
+    if ((attr = ippCopyAttribute(con->response, attr, 0)) != NULL)
+      attr->group_tag = IPP_TAG_UNSUPPORTED_GROUP;
+    return (NULL);
+  }
+  else if (!ippValidateAttribute(attr))
+  {
+    send_ipp_status(con, IPP_ATTRIBUTES, _("Bad job-name value: %s"),
+                    cupsLastErrorString());
+    if ((attr = ippCopyAttribute(con->response, attr, 0)) != NULL)
+      attr->group_tag = IPP_TAG_UNSUPPORTED_GROUP;
+    return (NULL);
+  }
 
   if ((job = cupsdAddJob(priority, printer->name)) == NULL)
   {
@@ -2426,7 +2446,7 @@ add_printer(cupsd_client_t  *con, /* I - Client connection */
        send_ipp_status(con, IPP_NOT_POSSIBLE,
                        _("File device URIs have been disabled. "
                          "To enable, see the FileDevice directive in "
-                         "\"%s/cupsd.conf\"."),
+                         "\"%s/cups-files.conf\"."),
                        ServerRoot);
        return;
       }
index bc2bd927a7856fbfd769e95edfbfc53605a77edd..c325d06804212b22dd4202f05a9e99081c8c5b9e 100644 (file)
@@ -1111,9 +1111,6 @@ cupsdContinueJob(cupsd_job_t *job)        /* I - Job */
   * Now create processes for all of the filters...
   */
 
-  cupsdSetPrinterReasons(job->printer, "-cups-missing-filter-warning,"
-                                      "cups-insecure-filter-warning");
-
   for (i = 0, slot = 0, filter = (mime_filter_t *)cupsArrayFirst(filters);
        filter;
        i ++, filter = (mime_filter_t *)cupsArrayNext(filters))
@@ -1872,6 +1869,12 @@ cupsdLoadJob(cupsd_job_t *job)           /* I - Job */
                                                 fileid);
         }
 
+       if (compressions)
+         job->compressions = compressions;
+
+       if (filetypes)
+         job->filetypes = filetypes;
+
         if (!compressions || !filetypes)
        {
           cupsdLogMessage(CUPSD_LOG_ERROR,
@@ -1881,12 +1884,6 @@ cupsdLoadJob(cupsd_job_t *job)           /* I - Job */
          ippDelete(job->attrs);
          job->attrs = NULL;
 
-         if (compressions)
-           free(compressions);
-
-         if (filetypes)
-           free(filetypes);
-
          if (job->compressions)
          {
            free(job->compressions);
@@ -1903,9 +1900,7 @@ cupsdLoadJob(cupsd_job_t *job)            /* I - Job */
          return (0);
        }
 
-        job->compressions = compressions;
-        job->filetypes    = filetypes;
-       job->num_files    = fileid;
+       job->num_files = fileid;
       }
 
       job->filetypes[fileid - 1] = mimeFileType(MimeDatabase, jobfile, NULL,
@@ -2196,7 +2191,16 @@ cupsdSaveJob(cupsd_job_t *job)           /* I - Job */
   }
 
   if (!cupsdCloseCreatedConfFile(fp, filename))
+  {
+   /*
+    * Remove backup file and mark this job as clean...
+    */
+
+    strlcat(filename, ".O", sizeof(filename));
+    unlink(filename);
+
     job->dirty = 0;
+  }
 }
 
 
@@ -4154,6 +4158,13 @@ load_job_cache(const char *filename)     /* I - job.cache filename */
                       line, linenum);
   }
 
+  if (job)
+  {
+    cupsdLogMessage(CUPSD_LOG_ERROR,
+                   "Missing </Job> directive on line %d.", linenum);
+    cupsdDeleteJob(job, CUPSD_JOB_PURGE);
+  }
+
   cupsFileClose(fp);
 }
 
@@ -4315,10 +4326,7 @@ remove_job_files(cupsd_job_t *job)       /* I - Job */
   {
     snprintf(filename, sizeof(filename), "%s/d%05d-%03d", RequestRoot,
             job->id, i);
-    if (Classification)
-      cupsdRemoveFile(filename);
-    else
-      unlink(filename);
+    cupsdUnlinkOrRemoveFile(filename);
   }
 
   free(job->filetypes);
@@ -4349,10 +4357,7 @@ remove_job_history(cupsd_job_t *job)     /* I - Job */
 
   snprintf(filename, sizeof(filename), "%s/c%05d", RequestRoot,
           job->id);
-  if (Classification)
-    cupsdRemoveFile(filename);
-  else
-    unlink(filename);
+  cupsdUnlinkOrRemoveFile(filename);
 
   LastEvent |= CUPSD_EVENT_PRINTER_STATE_CHANGED;
 }
@@ -4412,6 +4417,9 @@ static void
 start_job(cupsd_job_t     *job,                /* I - Job ID */
           cupsd_printer_t *printer)    /* I - Printer to print job */
 {
+  const char   *filename;              /* Support filename */
+
+
   cupsdLogMessage(CUPSD_LOG_DEBUG2, "start_job(job=%p(%d), printer=%p(%s))",
                   job, job->id, printer, printer->name);
 
@@ -4465,6 +4473,25 @@ start_job(cupsd_job_t     *job,          /* I - Job ID */
   else
     job->cancel_time = 0;
 
+ /*
+  * Check for support files...
+  */
+
+  cupsdSetPrinterReasons(job->printer, "-cups-missing-filter-warning,"
+                                      "cups-insecure-filter-warning");
+
+  if (printer->pc)
+  {
+    for (filename = (const char *)cupsArrayFirst(printer->pc->support_files);
+         filename;
+         filename = (const char *)cupsArrayNext(printer->pc->support_files))
+    {
+      if (_cupsFileCheck(filename, _CUPS_FILE_CHECK_FILE, !RunUser,
+                        cupsdLogFCMessage, printer))
+        break;
+    }
+  }
+
  /*
   * Setup the last exit status and security profiles...
   */
index a476d2a036209f948ad7d71e0ab82451aca808f5..95768e8464a8dc4830339bce0e05073a3cdbc2d7 100644 (file)
 static int     log_linesize = 0;       /* Size of line for output file */
 static char    *log_line = NULL;       /* Line for output file */
 
+#ifdef HAVE_VSYSLOG
+static const int syslevels[] =         /* SYSLOG levels... */
+               {
+                 0,
+                 LOG_EMERG,
+                 LOG_ALERT,
+                 LOG_CRIT,
+                 LOG_ERR,
+                 LOG_WARNING,
+                 LOG_NOTICE,
+                 LOG_INFO,
+                 LOG_DEBUG,
+                 LOG_DEBUG
+               };
+#endif /* HAVE_VSYSLOG */
+
 
 /*
  * Local functions...
@@ -543,8 +559,12 @@ cupsdLogMessage(int        level,  /* I - Log level */
   if ((TestConfigFile || !ErrorLog) && level <= CUPSD_LOG_WARN)
   {
     va_start(ap, message);
+#ifdef HAVE_VSYSLOG
+    vsyslog(LOG_LPR | syslevels[level], message, ap);
+#else
     vfprintf(stderr, message, ap);
     putc('\n', stderr);
+#endif /* HAVE_VSYSLOG */
     va_end(ap);
 
     return (1);
@@ -984,21 +1004,6 @@ cupsdWriteErrorLog(int        level,      /* I - Log level */
                  'D',
                  'd'
                };
-#ifdef HAVE_VSYSLOG
-  static const int     syslevels[] =   /* SYSLOG levels... */
-               {
-                 0,
-                 LOG_EMERG,
-                 LOG_ALERT,
-                 LOG_CRIT,
-                 LOG_ERR,
-                 LOG_WARNING,
-                 LOG_NOTICE,
-                 LOG_INFO,
-                 LOG_DEBUG,
-                 LOG_DEBUG
-               };
-#endif /* HAVE_VSYSLOG */
 
 
 #ifdef HAVE_VSYSLOG
index 43a4c87c293ff733bac9b29fa4e962e0fa4820ca..c68a0a66692c390db30ea21a1c8b92c0e34685ec 100644 (file)
@@ -233,35 +233,6 @@ main(int  argc,                            /* I - Number of command-line args */
                cupsdSetStringf(&ConfigurationFile, "%s/%s", current, argv[i]);
                free(current);
               }
-
-             if (!CupsFilesFile)
-             {
-               char    *filename,      /* Copy of cupsd.conf filename */
-                       *slash;         /* Final slash in cupsd.conf filename */
-               size_t  len;            /* Size of buffer */
-
-               len = strlen(ConfigurationFile) + 15;
-               if ((filename = malloc(len)) == NULL)
-               {
-                 _cupsLangPrintf(stderr,
-                                 _("cupsd: Unable to get path to "
-                                   "cups-files.conf file."));
-                  return (1);
-               }
-
-               strlcpy(filename, ConfigurationFile, len);
-               if ((slash = strrchr(filename, '/')) == NULL)
-               {
-                 _cupsLangPrintf(stderr,
-                                 _("cupsd: Unable to get path to "
-                                   "cups-files.conf file."));
-                  return (1);
-               }
-
-               strlcpy(slash, "/cups-files.conf", len - (slash - filename));
-               cupsdSetString(&CupsFilesFile, filename);
-               free(filename);
-             }
              break;
 
           case 'f' : /* Run in foreground... */
@@ -352,6 +323,35 @@ main(int  argc,                            /* I - Number of command-line args */
   if (!ConfigurationFile)
     cupsdSetString(&ConfigurationFile, CUPS_SERVERROOT "/cupsd.conf");
 
+  if (!CupsFilesFile)
+  {
+    char       *filename,              /* Copy of cupsd.conf filename */
+               *slash;                 /* Final slash in cupsd.conf filename */
+    size_t     len;                    /* Size of buffer */
+
+    len = strlen(ConfigurationFile) + 15;
+    if ((filename = malloc(len)) == NULL)
+    {
+      _cupsLangPrintf(stderr,
+                     _("cupsd: Unable to get path to "
+                       "cups-files.conf file."));
+      return (1);
+    }
+
+    strlcpy(filename, ConfigurationFile, len);
+    if ((slash = strrchr(filename, '/')) == NULL)
+    {
+      _cupsLangPrintf(stderr,
+                     _("cupsd: Unable to get path to "
+                       "cups-files.conf file."));
+      return (1);
+    }
+
+    strlcpy(slash, "/cups-files.conf", len - (slash - filename));
+    cupsdSetString(&CupsFilesFile, filename);
+    free(filename);
+  }
+
  /*
   * If the user hasn't specified "-f", run in the background...
   */
@@ -535,17 +535,11 @@ main(int  argc,                           /* I - Number of command-line args */
   */
 
   if (!cupsdReadConfiguration())
-  {
-    if (TestConfigFile)
-      printf("%s contains errors\n", ConfigurationFile);
-    else
-      syslog(LOG_LPR, "Unable to read configuration file \'%s\' - exiting!",
-            ConfigurationFile);
     return (1);
-  }
   else if (TestConfigFile)
   {
-    printf("%s is OK\n", ConfigurationFile);
+    printf("\"%s\" is OK.\n", CupsFilesFile);
+    printf("\"%s\" is OK.\n", ConfigurationFile);
     return (0);
   }
 
index ea2f8dda516d58766c0ec6a02d35b029c8e359c6..3baa45ca2dd62d9acc55304e633a14592392878c 100644 (file)
@@ -2030,23 +2030,12 @@ cupsdSetPrinterAttrs(cupsd_printer_t *p)/* I - Printer to setup */
 {
   int          i;                      /* Looping var */
   char         resource[HTTP_MAX_URI]; /* Resource portion of URI */
-  int          num_air;                /* Number of auth-info-required values */
-  const char   * const *air;           /* auth-info-required values */
   cupsd_location_t *auth;              /* Pointer to authentication element */
   const char   *auth_supported;        /* Authentication supported */
   ipp_t                *oldattrs;              /* Old printer attributes */
   ipp_attribute_t *attr;               /* Attribute data */
   char         *name,                  /* Current user/group name */
                *filter;                /* Current filter */
-  static const char * const air_none[] =
-               {                       /* No authentication */
-                 "none"
-               };
-  static const char * const air_userpass[] =
-               {                       /* Basic/Digest authentication */
-                 "username",
-                 "password"
-               };
 
 
   DEBUG_printf(("cupsdSetPrinterAttrs: entering name = %s, type = %x\n", p->name,
@@ -2070,19 +2059,6 @@ cupsdSetPrinterAttrs(cupsd_printer_t *p)/* I - Printer to setup */
   */
 
   auth_supported = "requesting-user-name";
-  num_air        = 1;
-  air            = air_none;
-
-  if (p->num_auth_info_required > 0 && strcmp(p->auth_info_required[0], "none"))
-  {
-    num_air = p->num_auth_info_required;
-    air     = p->auth_info_required;
-  }
-  else if (p->type & CUPS_PRINTER_AUTHENTICATED)
-  {
-    num_air = 2;
-    air     = air_userpass;
-  }
 
   if (p->type & CUPS_PRINTER_CLASS)
     snprintf(resource, sizeof(resource), "/classes/%s", p->name);
@@ -2161,8 +2137,10 @@ cupsdSetPrinterAttrs(cupsd_printer_t *p)/* I - Printer to setup */
                 "job-k-limit", p->k_limit);
   ippAddInteger(p->attrs, IPP_TAG_PRINTER, IPP_TAG_INTEGER,
                 "job-page-limit", p->page_limit);
-  ippAddStrings(p->attrs, IPP_TAG_PRINTER, IPP_TAG_KEYWORD,
-               "auth-info-required", num_air, NULL, air);
+  if (p->num_auth_info_required > 0 && strcmp(p->auth_info_required[0], "none"))
+    ippAddStrings(p->attrs, IPP_TAG_PRINTER, IPP_TAG_KEYWORD,
+                 "auth-info-required", p->num_auth_info_required, NULL,
+                 p->auth_info_required);
 
   if (cupsArrayCount(Banners) > 0)
   {
index 178206414b4874aea4c370e196f8654137b54274..a5bc011a7123eab151129258378a18cab61f0470 100644 (file)
@@ -638,6 +638,9 @@ cupsd_requote(char       *dst,              /* I - Destination buffer */
   {
     ch = *src++;
 
+    if (ch == '/' && !*src)
+      break;                           /* Don't add trailing slash */
+
     if (strchr(".?*()[]^$\\", ch))
       *dstptr++ = '\\';
 
index c534f593c1a644725bdc7af587ce9fcc29f50701..c000ddc83bcb6663dda86cc3cb840b370e6402a6 100644 (file)
@@ -3,7 +3,7 @@
  *
  *   cups-lpd test program for CUPS.
  *
- *   Copyright 2007-2010 by Apple Inc.
+ *   Copyright 2007-2013 by Apple Inc.
  *   Copyright 2006 by Easy Software Products, all rights reserved.
  *
  *   These coded instructions, statements, and computer programs are the
  */
 
 static int     do_command(int outfd, int infd, const char *command);
-static int     print_job(int outfd, int infd, char *dest, char **args);
+static int     print_job(int outfd, int infd, char *dest, char **args) __attribute__((nonnull(4)));
 static int     print_waiting(int outfd, int infd, char *dest);
-static int     remove_job(int outfd, int infd, char *dest, char **args);
-static int     status_long(int outfd, int infd, char *dest, char **args);
-static int     status_short(int outfd, int infd, char *dest, char **args);
+static int     remove_job(int outfd, int infd, char *dest, char **args) __attribute__((nonnull(4)));
+static int     status_long(int outfd, int infd, char *dest, char **args) __attribute__((nonnull(4)));
+static int     status_short(int outfd, int infd, char *dest, char **args) __attribute__((nonnull(4)));
 static void    usage(void) __attribute__((noreturn));
 
 
@@ -76,7 +76,7 @@ main(int  argc,                               /* I - Number of command-line arguments */
   */
 
   op              = NULL;
-  opargs          = NULL;
+  opargs          = argv + argc;
   dest            = NULL;
   cupslpd_argc    = 1;
   cupslpd_argv[0] = (char *)"cups-lpd";
index 1f138c7a1c649775f2a594f96edbc8bfbb1f2e70..314d9cd8738399532716bb713f7a7056c4cc2b28 100644 (file)
@@ -40,7 +40,7 @@ cupsdEndTLS(cupsd_client_t *con)      /* I - Client connection */
   while (SSLClose(con->http.tls) == errSSLWouldBlock)
     usleep(1000);
 
-  SSLDisposeContext(con->http.tls);
+  CFRelease(con->http.tls);
   con->http.tls = NULL;
 
   if (con->http.tls_credentials)
@@ -58,7 +58,7 @@ int                                   /* O - 1 on success, 0 on error */
 cupsdStartTLS(cupsd_client_t *con)     /* I - Client connection */
 {
   OSStatus     error = 0;              /* Error code */
-  CFArrayRef   peerCerts;              /* Peer certificates */
+  SecTrustRef  peerTrust;              /* Peer certificates */
 
 
   cupsdLogMessage(CUPSD_LOG_DEBUG, "[Client %d] Encrypting connection.",
@@ -85,7 +85,8 @@ cupsdStartTLS(cupsd_client_t *con)    /* I - Client connection */
   }
 
   if (!error)
-    error = SSLNewContext(true, &con->http.tls);
+    con->http.tls = SSLCreateContext(kCFAllocatorDefault, kSSLServerSide,
+                                     kSSLStreamType);
 
   if (!error)
     error = SSLSetIOFuncs(con->http.tls, _httpReadCDSA, _httpWriteCDSA);
@@ -93,12 +94,6 @@ cupsdStartTLS(cupsd_client_t *con)   /* I - Client connection */
   if (!error)
     error = SSLSetConnection(con->http.tls, HTTP(con));
 
-  if (!error)
-    error = SSLSetAllowsExpiredCerts(con->http.tls, true);
-
-  if (!error)
-    error = SSLSetAllowsAnyRoot(con->http.tls, true);
-
   if (!error)
     error = SSLSetCertificate(con->http.tls, con->http.tls_credentials);
 
@@ -123,7 +118,7 @@ cupsdStartTLS(cupsd_client_t *con)  /* I - Client connection */
 
     if (con->http.tls)
     {
-      SSLDisposeContext(con->http.tls);
+      CFRelease(con->http.tls);
       con->http.tls = NULL;
     }
 
@@ -139,11 +134,11 @@ cupsdStartTLS(cupsd_client_t *con)        /* I - Client connection */
   cupsdLogMessage(CUPSD_LOG_DEBUG, "Connection from %s now encrypted.",
                   con->http.hostname);
 
-  if (!SSLCopyPeerCertificates(con->http.tls, &peerCerts) && peerCerts)
+  if (!SSLCopyPeerTrust(con->http.tls, &peerTrust) && peerTrust)
   {
     cupsdLogMessage(CUPSD_LOG_DEBUG, "Received %d peer certificates!",
-                   (int)CFArrayGetCount(peerCerts));
-    CFRelease(peerCerts);
+                   (int)SecTrustGetCertificateCount(peerTrust));
+    CFRelease(peerTrust);
   }
   else
     cupsdLogMessage(CUPSD_LOG_DEBUG, "Received NO peer certificates!");
@@ -167,7 +162,6 @@ copy_cdsa_certificate(
   SecIdentityRef       identity = NULL;/* Identity */
   CFArrayRef           certificates = NULL;
                                        /* Certificate array */
-#  if HAVE_SECPOLICYCREATESSL
   SecPolicyRef         policy = NULL;  /* Policy ref */
   CFStringRef          servername = NULL;
                                        /* Server name */
@@ -176,15 +170,6 @@ copy_cdsa_certificate(
 #    if defined(HAVE_DNSSD) || defined(HAVE_AVAHI)
   char                 localname[1024];/* Local hostname */
 #    endif /* HAVE_DNSSD || HAVE_AVAHI */
-#  elif defined(HAVE_SECIDENTITYSEARCHCREATEWITHPOLICY)
-  SecPolicyRef         policy = NULL;  /* Policy ref */
-  SecPolicySearchRef   policy_search = NULL;
-                                       /* Policy search ref */
-  CSSM_DATA            options;        /* Policy options */
-  CSSM_APPLE_TP_SSL_OPTIONS
-                       ssl_options;    /* SSL Option for hostname */
-  char                 localname[1024];/* Local hostname */
-#  endif /* HAVE_SECPOLICYCREATESSL */
 
 
   cupsdLogMessage(CUPSD_LOG_DEBUG,
@@ -198,7 +183,6 @@ copy_cdsa_certificate(
     goto cleanup;
   }
 
-#  if HAVE_SECPOLICYCREATESSL
   servername = CFStringCreateWithCString(kCFAllocatorDefault, con->servername,
                                         kCFStringEncodingUTF8);
 
@@ -278,121 +262,6 @@ copy_cdsa_certificate(
     goto cleanup;
   }
 
-#  elif defined(HAVE_SECIDENTITYSEARCHCREATEWITHPOLICY)
- /*
-  * Use a policy to search for valid certificates whose common name matches the
-  * servername...
-  */
-
-  if (SecPolicySearchCreate(CSSM_CERT_X_509v3, &CSSMOID_APPLE_TP_SSL,
-                           NULL, &policy_search))
-  {
-    cupsdLogMessage(CUPSD_LOG_ERROR, "Cannot create a policy search reference");
-    goto cleanup;
-  }
-
-  if (SecPolicySearchCopyNext(policy_search, &policy))
-  {
-    cupsdLogMessage(CUPSD_LOG_ERROR,
-                   "Cannot find a policy to use for searching");
-    goto cleanup;
-  }
-
-  memset(&ssl_options, 0, sizeof(ssl_options));
-  ssl_options.Version = CSSM_APPLE_TP_SSL_OPTS_VERSION;
-  ssl_options.ServerName = con->servername;
-  ssl_options.ServerNameLen = strlen(con->servername);
-
-  options.Data = (uint8 *)&ssl_options;
-  options.Length = sizeof(ssl_options);
-
-  if (SecPolicySetValue(policy, &options))
-  {
-    cupsdLogMessage(CUPSD_LOG_ERROR,
-                   "Cannot set policy value to use for searching");
-    goto cleanup;
-  }
-
-  if ((err = SecIdentitySearchCreateWithPolicy(policy, NULL, CSSM_KEYUSE_SIGN,
-                                              keychain, FALSE, &search)))
-  {
-    cupsdLogMessage(CUPSD_LOG_ERROR,
-                   "Cannot create identity search reference: %s (%d)",
-                   cssmErrorString(err), (int)err);
-    goto cleanup;
-  }
-
-  err = SecIdentitySearchCopyNext(search, &identity);
-
-#    if defined(HAVE_DNSSD) || defined(HAVE_AVAHI)
-  if (err && DNSSDHostName)
-  {
-   /*
-    * Search for the connection server name failed; try the DNS-SD .local
-    * hostname instead...
-    */
-
-    snprintf(localname, sizeof(localname), "%s.local", DNSSDHostName);
-
-    ssl_options.ServerName    = localname;
-    ssl_options.ServerNameLen = strlen(localname);
-
-    cupsdLogMessage(CUPSD_LOG_DEBUG,
-                   "copy_cdsa_certificate: Looking for certs for \"%s\"...",
-                   localname);
-
-    if (SecPolicySetValue(policy, &options))
-    {
-      cupsdLogMessage(CUPSD_LOG_ERROR,
-                     "Cannot set policy value to use for searching");
-      goto cleanup;
-    }
-
-    CFRelease(search);
-    search = NULL;
-    if ((err = SecIdentitySearchCreateWithPolicy(policy, NULL, CSSM_KEYUSE_SIGN,
-                                              keychain, FALSE, &search)))
-    {
-      cupsdLogMessage(CUPSD_LOG_ERROR,
-                     "Cannot create identity search reference: %s (%d)",
-                     cssmErrorString(err), (int)err);
-      goto cleanup;
-    }
-
-    err = SecIdentitySearchCopyNext(search, &identity);
-
-  }
-#    endif /* HAVE_DNSSD || HAVE_AVAHI */
-
-  if (err)
-  {
-    cupsdLogMessage(CUPSD_LOG_DEBUG,
-                   "Cannot find signing key in keychain \"%s\": %s (%d)",
-                   ServerCertificate, cssmErrorString(err), (int)err);
-    goto cleanup;
-  }
-
-#  else
- /*
-  * Assume there is exactly one SecIdentity in the keychain...
-  */
-
-  if ((err = SecIdentitySearchCreate(keychain, CSSM_KEYUSE_SIGN, &search)))
-  {
-    cupsdLogMessage(CUPSD_LOG_DEBUG,
-                   "Cannot create identity search reference (%d)", (int)err);
-    goto cleanup;
-  }
-
-  if ((err = SecIdentitySearchCopyNext(search, &identity)))
-  {
-    cupsdLogMessage(CUPSD_LOG_DEBUG,
-                   "Cannot find signing key in keychain \"%s\": %s (%d)",
-                   ServerCertificate, cssmErrorString(err), (int)err);
-    goto cleanup;
-  }
-#  endif /* HAVE_SECPOLICYCREATESSL */
-
   if (CFGetTypeID(identity) != SecIdentityGetTypeID())
   {
     cupsdLogMessage(CUPSD_LOG_ERROR, "SecIdentity CFTypeID failure!");
@@ -415,17 +284,10 @@ copy_cdsa_certificate(
   if (identity)
     CFRelease(identity);
 
-#  if HAVE_SECPOLICYCREATESSL
   if (policy)
     CFRelease(policy);
   if (query)
     CFRelease(query);
-#  elif defined(HAVE_SECIDENTITYSEARCHCREATEWITHPOLICY)
-  if (policy)
-    CFRelease(policy);
-  if (policy_search)
-    CFRelease(policy_search);
-#  endif /* HAVE_SECPOLICYCREATESSL */
 
   return (certificates);
 }
diff --git a/templates/ru/Makefile b/templates/ru/Makefile
new file mode 100644 (file)
index 0000000..0abd47d
--- /dev/null
@@ -0,0 +1,204 @@
+#
+# "$Id$"
+#
+#   Template makefile for CUPS.
+#
+#   Copyright 2007-2011 by Apple Inc.
+#   Copyright 1993-2007 by Easy Software Products.
+#
+#   These coded instructions, statements, and computer programs are the
+#   property of Apple Inc. 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
+#   file is missing or damaged, see the license at "http://www.cups.org/".
+#
+
+include ../Makedefs
+
+#
+# Template files...
+#
+
+FILES  =       \
+               add-class.tmpl \
+               add-printer.tmpl \
+               add-rss-subscription.tmpl \
+               admin.tmpl \
+               choose-device.tmpl \
+               choose-make.tmpl \
+               choose-model.tmpl \
+               choose-serial.tmpl \
+               choose-uri.tmpl \
+               class.tmpl \
+               class-added.tmpl \
+               class-confirm.tmpl \
+               class-deleted.tmpl \
+               class-jobs-header.tmpl \
+               class-modified.tmpl \
+               classes.tmpl \
+               classes-header.tmpl \
+               command.tmpl \
+               edit-config.tmpl \
+               error.tmpl \
+               error-op.tmpl \
+               header.tmpl \
+               help-header.tmpl \
+               help-trailer.tmpl \
+               help-printable.tmpl \
+               job-cancel.tmpl \
+               job-hold.tmpl \
+               job-move.tmpl \
+               job-moved.tmpl \
+               job-release.tmpl \
+               job-restart.tmpl \
+               jobs.tmpl \
+               jobs-header.tmpl \
+               list-available-printers.tmpl \
+               modify-class.tmpl \
+               modify-printer.tmpl \
+               norestart.tmpl \
+               option-boolean.tmpl \
+               option-conflict.tmpl \
+               option-header.tmpl \
+               option-pickmany.tmpl \
+               option-pickone.tmpl \
+               option-trailer.tmpl \
+               pager.tmpl \
+               printer.tmpl \
+               printer-accept.tmpl \
+               printer-added.tmpl \
+               printer-configured.tmpl \
+               printer-confirm.tmpl \
+               printer-default.tmpl \
+               printer-deleted.tmpl \
+               printer-jobs-header.tmpl \
+               printer-modified.tmpl \
+               printer-purge.tmpl \
+               printer-reject.tmpl \
+               printer-start.tmpl \
+               printer-stop.tmpl \
+               printers.tmpl \
+               printers-header.tmpl \
+               restart.tmpl \
+               samba-export.tmpl \
+               samba-exported.tmpl \
+               search.tmpl \
+               set-printer-options-header.tmpl \
+               set-printer-options-trailer.tmpl \
+               subscription-added.tmpl \
+               subscription-canceled.tmpl \
+               test-page.tmpl \
+               trailer.tmpl \
+               users.tmpl
+
+
+#
+# Make everything...
+#
+
+all:
+
+
+#
+# Make library targets...
+#
+
+libs:
+
+
+#
+# Make unit tests...
+#
+
+unittests:
+
+
+#
+# Clean all config and object files...
+#
+
+clean:
+
+
+#
+# Dummy depend...
+#
+
+depend:
+
+
+#
+# Install all targets...
+#
+
+install:       all install-data install-headers install-libs install-exec
+
+
+#
+# Install data files...
+#
+
+install-data: $(INSTALL_LANGUAGES)
+       $(INSTALL_DIR) -m 755 $(DATADIR)/templates
+       for file in $(FILES); do \
+               $(INSTALL_DATA) $$file $(DATADIR)/templates; \
+       done
+
+install-languages:
+       for lang in $(LANGUAGES); do \
+               if test -d $$lang; then \
+                       $(INSTALL_DIR) -m 755 $(DATADIR)/templates/$$lang; \
+                       for file in $(FILES); do \
+                               $(INSTALL_DATA) $$lang/$$file $(DATADIR)/templates/$$lang >/dev/null 2>&1 || true; \
+                       done \
+               fi \
+       done
+
+install-langbundle:
+
+
+#
+# Install programs...
+#
+
+install-exec:
+
+
+#
+# Install headers...
+#
+
+install-headers:
+
+
+#
+# Install libraries...
+#
+
+install-libs:
+
+
+#
+# Uninstall files...
+#
+
+uninstall: $(UNINSTALL_LANGUAGES)
+       for file in $(FILES); do \
+               $(RM) $(DATADIR)/templates/$$file; \
+       done
+       -$(RMDIR) $(DATADIR)/templates
+
+uninstall-languages:
+       for lang in $(LANGUAGES); do \
+               for file in $(FILES); do \
+                       $(RM) $(DATADIR)/templates/$$lang/$$file; \
+               done \
+               $(RMDIR) $(DATADIR)/templates/$$lang; \
+       done
+
+uninstall-langbundle:
+
+
+#
+# End of "$Id$".
+#
diff --git a/templates/ru/add-class.tmpl b/templates/ru/add-class.tmpl
new file mode 100644 (file)
index 0000000..a119d86
--- /dev/null
@@ -0,0 +1,40 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">Новая группа</H2>
+
+<FORM METHOD="POST" ACTION="/admin">
+<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+
+<TABLE>
+<TR>
+<TH CLASS="label">Название:</TH>
+<TD><INPUT TYPE="TEXT" NAME="PRINTER_NAME" SIZE="40" MAXLENGTH="127"><BR>
+<SMALL>(может содержать любые символы, кроме "/", "#" и пробела)</SMALL></TD>
+</TR>
+<TR>
+<TH CLASS="label">Описание:</TH>
+<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" SIZE="40" MAXLENGTH="127"><BR>
+<SMALL>(Расширенное описание группы, например, "Дуплексный принтер")</SMALL></TD>
+</TR>
+<TR>
+<TH CLASS="label">Расположение:</TH>
+<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" SIZE="40" MAXLENGTH="127"><BR>
+<SMALL>(Месторасположение группы, например, "Кабинет 55")</SMALL></TD>
+</TR>
+<TR>
+<TH CLASS="label">Состав группы:</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="SUBMIT" VALUE="Добавить группу"></TD>
+</TR>
+</TABLE>
+
+</FORM>
+</DIV>
\ No newline at end of file
diff --git a/templates/ru/add-printer.tmpl b/templates/ru/add-printer.tmpl
new file mode 100644 (file)
index 0000000..6690d88
--- /dev/null
@@ -0,0 +1,47 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">Добавление принтера</H2>
+
+<FORM METHOD="POST" ACTION="/admin">
+<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+<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}">
+{?current_make!?<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE" VALUE="{current_make}">:}
+{?current_make_and_model!?<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE_AND_MODEL" VALUE="{current_make_and_model}">:}
+
+<TABLE>
+<TR>
+<TH CLASS="label">Название:</TH>
+<TD><INPUT TYPE="TEXT" NAME="PRINTER_NAME" SIZE="40" MAXLENGTH="127" VALUE="{?template_name}"><BR>
+<SMALL>(может содержать любые символы, кроме "/","#" и пробела)</SMALL></TD>
+</TR>
+<TR>
+<TH CLASS="label">Описание:</TH>
+<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" SIZE="40" MAXLENGTH="127" VALUE="{?PRINTER_INFO}"><BR>
+<SMALL>(расширенное описание, например, "HP LaserJet с дуплексной печатью")</SMALL></TD>
+</TR>
+<TR>
+<TH CLASS="label">Расположение:</TH>
+<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" SIZE="40" MAXLENGTH="127" VALUE="{?PRINTER_LOCATION}"><BR>
+<SMALL>(месторасположение принтера, например, "Кабинет 55")</SMALL></TD>
+</TR>
+<TR>
+<TH CLASS="label">Подключение:</TH>
+<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
+</TR>
+<TR>
+<TH CLASS="label">Совместный доступ:</TH>
+<TD><INPUT TYPE="CHECKBOX" NAME="PRINTER_IS_SHARED" {PRINTER_IS_SHARED=1?CHECKED:}>
+Разрешить совместный доступ к этому принтеру</TD>
+</TR>
+<TR>
+<TD></TD>
+<TD><INPUT TYPE="SUBMIT" VALUE="Продолжить"></TD>
+</TR>
+</TABLE>
+
+</FORM>
+</DIV>
\ No newline at end of file
diff --git a/templates/ru/add-rss-subscription.tmpl b/templates/ru/add-rss-subscription.tmpl
new file mode 100644 (file)
index 0000000..4567b92
--- /dev/null
@@ -0,0 +1,44 @@
+<FORM METHOD="POST" ACTION="/admin">
+<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-rss-subscription">
+
+<H2 CLASS="title">Добавление подписки по RSS</H2>
+
+<TABLE SUMMARY="Добавление подписки по RSS">
+<TR>
+<TH CLASS="label">Название:</TH>
+<TD COLSPAN="5"><INPUT TYPE="TEXT" NAME="SUBSCRIPTION_NAME" SIZE="40" MAXLENGTH="127" VALUE="{?SUBSCRIPTION_NAME}"><BR>
+<SMALL>(Может содержать любые символы, кроме "/", "#", "?" и пробела)</SMALL></TD>
+</TR>
+<TR>
+<TH CLASS="label">Очередь:</TH>
+<TD COLSPAN="5"><SELECT NAME="PRINTER_URI" SIZE="10"><OPTION VALUE="#ALL#"{?PRINTER_URI=#ALL#? SELECTED:}>Все очереди</OPTION>{[printer_name]<OPTION VALUE="{printer_uri_supported}"{?PRINTER_URI={printer_uri_supported}? SELECTED:}>{printer_name}</OPTION>}</SELECT></TD>
+</TR>
+<TR VALIGN="TOP">
+<TH CLASS="label">События:</TH>
+<TD><INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_CREATED" {?EVENT_JOB_CREATED}>Новое задание<BR>
+<INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_COMPLETED" {?EVENT_JOB_COMPLETED}>Задание выполнено<BR>
+<INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_STOPPED" {?EVENT_JOB_STOPPED}>Задание остановлено<BR>
+<INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_CONFIG_CHANGED" {?EVENT_JOB_CONFIG_CHANGED}>Изменены параметры задания</TD>
+<TD>&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+<TD><INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_STOPPED" {?EVENT_PRINTER_STOPPED}>Очередь остановлена<BR>
+<INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_ADDED" {?EVENT_PRINTER_ADDED}>Очередь добавлена<BR>
+<INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_MODIFIED" {?EVENT_PRINTER_MODIFIED}>Очередь изменена<BR>
+<INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_DELETED" {?EVENT_PRINTER_DELETED}>Очередь удалена</TD>
+<TD>&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+<TD><INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_STARTED" {?EVENT_SERVER_STARTED}>Сервер запущен<BR>
+<INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_STOPPED" {?EVENT_SERVER_STOPPED}>Сервер остановлен<BR>
+<INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_RESTARTED" {?EVENT_SERVER_RESTARTED}>Сервер перезапущен<BR>
+<INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_AUDIT" {?EVENT_SERVER_AUDIT}>Проверка безопасности сервера</TD>
+</TR>
+<TR>
+<TH CLASS="label">Количество событий в ленте:</TH>
+<TD COLSPAN="5"><INPUT TYPE="NUMBER" NAME="MAX_EVENTS" SIZE="4" MAXLENGTH="4" VALUE="{MAX_EVENTS?{MAX_EVENTS}:20}"></TD>
+</TR>
+<TR>
+<TD></TD>
+<TD COLSPAN="5"><INPUT TYPE="SUBMIT" VALUE="Добавить подписку по RSS"></TD>
+</TR>
+</TABLE>
+
+</FORM>
diff --git a/templates/ru/admin.tmpl b/templates/ru/admin.tmpl
new file mode 100644 (file)
index 0000000..ae2aab2
--- /dev/null
@@ -0,0 +1,102 @@
+<TABLE CLASS="indent" SUMMARY="Администрирование">
+<TR><TD VALIGN="TOP">
+
+<H2 CLASS="title">Принтеры</H2>
+
+<P>
+<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-printer"><INPUT TYPE="SUBMIT" VALUE="Добавить принтер"></FORM>
+<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="find-new-printers"><INPUT TYPE="SUBMIT" VALUE="Найти новый принтер"></FORM>
+<FORM ACTION="/printers/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Управление принтерами"></FORM>
+{have_samba?<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="export-samba"><INPUT TYPE="SUBMIT" VALUE="Экспортировать принтер в Samba"></FORM>:}
+</P>
+
+<H2 CLASS="title">Группы</H2>
+
+<P>
+<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-class"><INPUT TYPE="SUBMIT" VALUE="Добавить группу"></FORM>
+<FORM ACTION="/classes/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Управление группами"></FORM>
+</P>
+
+<H2 CLASS="title">Задания</H2>
+
+<P>
+<FORM ACTION="/jobs/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Управление заданиями"></FORM>
+</P>
+
+</TD><TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD><TD VALIGN="TOP">
+
+<H2 CLASS="title">Сервер</H2>
+
+<P>
+<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server"><INPUT TYPE="SUBMIT" VALUE="Редактировать конфигурационный файл"></FORM>
+<FORM ACTION="/admin/log/access_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Показать журнал заданий"></FORM>
+<FORM ACTION="/admin/log/error_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Показать журнал ошибок"></FORM>
+<FORM ACTION="/admin/log/page_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Показать журнал страниц"></FORM>
+</P>
+
+{SETTINGS_ERROR?<P>{SETTINGS_MESSAGE}</P>
+<BLOCKQUOTE>{SETTINGS_ERROR}</BLOCKQUOTE>:
+
+<FORM METHOD="POST" ACTION="/admin">
+<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
+
+{ADVANCEDSETTINGS?<P><B>Параметры сервера\:</B></P>
+
+<P><A HREF="/admin/">Дополнительные параметры<SMALL>&#x25bc;</SMALL></A><BR>
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
+<INPUT TYPE="HIDDEN" NAME="ADVANCEDSETTINGS" VALUE="YES">
+<INPUT TYPE="CHECKBOX" NAME="SHARE_PRINTERS" {?share_printers}> Показать принтеры, использующиеся в других системах<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Протоколы\:
+<INPUT TYPE="TEXT" NAME="MAX_CLIENTS" VALUE="{?max_clients}" SIZE="6"><BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="REMOTE_ANY" {?remote_any}> Разрешить печать из интернета<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="BROWSE_WEB_IF" {?browse_web_if}> Анонсировать веб-интерфейс<BR>
+<INPUT TYPE="CHECKBOX" NAME="REMOTE_ADMIN" {?remote_admin}> Разрешить удаленное администрирование<BR>
+{have_gssapi?<INPUT TYPE="CHECKBOX" NAME="KERBEROS" {?kerberos}> Разрешить аутентификацию Kerberos (<A HREF="/help/kerberos.html?TOPIC=Getting+Started">FAQ</A>)<BR>:}
+<INPUT TYPE="CHECKBOX" NAME="USER_CANCEL_ANY" {?user_cancel_any}> Разрешать пользователям отменять любое задание(не только их собственные)<BR>
+<INPUT TYPE="CHECKBOX" NAME="PRESERVE_JOBS" {?preserve_jobs}> Вести журнал заданий<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Количество заданий\:
+<INPUT TYPE="TEXT" NAME="MAX_JOBS" VALUE="{?max_jobs}" SIZE="6"><BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Записывать метаданные(Retain Metadata)\:
+<INPUT TYPE="TEXT" NAME="PRESERVE_JOB_HISTORY" VALUE="{?preserve_job_history}" SIZE="6"><BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Существующие документы(Retain Documents)\:
+<INPUT TYPE="TEXT" NAME="PRESERVE_JOB_FILES" VALUE="{?preserve_job_files}" SIZE="6"><BR>
+<INPUT TYPE="CHECKBOX" NAME="DEBUG_LOGGING" {?debug_logging}> Сохранять отладочную информацию в журнале<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Максимальный размер журнала ошибок\:
+<INPUT TYPE="TEXT" NAME="MAX_LOG_SIZE" VALUE="{?max_log_size}" SIZE="6"></P>
+
+:<P><B>Параметры сервера:</B></P>
+
+<P><A HREF="/admin/?ADVANCEDSETTINGS=YES">Дополнительные параметры <SMALL>&#x25b6;</SMALL></A><BR>
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
+<INPUT TYPE="CHECKBOX" NAME="SHARE_PRINTERS" {?share_printers}> Разрешить совместный доступ к принтерам, подключенным к этой системе<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="REMOTE_ANY" {?remote_any}> Разрешить печать из Интернета<BR>
+<INPUT TYPE="CHECKBOX" NAME="REMOTE_ADMIN" {?remote_admin}> Разрешить удаленное администрирование<BR>
+{have_gssapi?<INPUT TYPE="CHECKBOX" NAME="KERBEROS" {?kerberos}> Разрешить аутентификацию Kerberos (<A HREF="/help/kerberos.html?TOPIC=Getting+Started">FAQ</A>)<BR>:}
+<INPUT TYPE="CHECKBOX" NAME="USER_CANCEL_ANY" {?user_cancel_any}> Разрешить пользователям отменять любое задание(не только их собственные)<BR>
+<INPUT TYPE="CHECKBOX" NAME="DEBUG_LOGGING" {?debug_logging}> Сохранять отладочную информацию в журнале</P>
+
+}
+<P><INPUT TYPE="SUBMIT" NAME="CHANGESETTINGS" VALUE="Сохранить"></P>
+
+</FORM>}
+
+</TD></TR>
+</TABLE>
+
+<DIV CLASS="indent">
+
+<H2 CLASS="title">Подписка по RSS</H2>
+
+<P>
+<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-rss-subscription"><INPUT TYPE="SUBMIT" VALUE="Добавить подписку по RSS"></FORM>
+</P>
+
+</DIV>
+
+{notify_subscription_id?<TABLE CLASS="list" SUMMARY="Подписки по RSS">
+<THEAD><TR><TH>Название</TH><TH>События</TH><TH>Очередь</TH></TR></THEAD>
+<TBODY>{[notify_subscription_id]
+<TR><TD><A HREF="{notify_recipient_uri}">{notify_recipient_name}</A><BR>
+<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="cancel-subscription"><INPUT TYPE="HIDDEN" NAME="notify_subscription_id" VALUE="{notify_subscription_id}"><INPUT TYPE="SUBMIT" VALUE="Отменить подписку по RSS"></FORM>&nbsp;</TD><TD>{notify_events}</TD><TD NOWRAP>&nbsp;{notify_printer_name?{notify_printer_name}:Все очереди}</TD></TR>}
+</TBODY>
+</TABLE>:}
diff --git a/templates/ru/choose-device.tmpl b/templates/ru/choose-device.tmpl
new file mode 100644 (file)
index 0000000..3472f5f
--- /dev/null
@@ -0,0 +1,53 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">{op=modify-printer?Изменение {printer_name}:Добавление принтера}</H2>
+
+{CUPS_GET_DEVICES_DONE?<FORM METHOD="POST" ACTION="/admin">
+<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+{printer_name?<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">:}
+
+<TABLE>
+{op=add-printer?:<TR>
+<TH CLASS="label">Текущее подключение\:</TH>
+<TD><INPUT TYPE="RADIO" NAME="DEVICE_URI" VALUE="{current_device_uri}" CHECKED>
+{current_device_uri}</TD>
+</TR>}
+<TR>
+<TH CLASS="label">Локальные принтеры\:</TH>
+<TD>
+{[device_uri]{device_class!network?<INPUT TYPE="RADIO" NAME="DEVICE_URI"
+VALUE="{device_uri}{?device_make_and_model!Unknown?|{device_make_and_model}:}">
+{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}<BR>
+:}}
+</TD>
+</TR>
+<TR>
+<TH CLASS="label">Обнаруженные сетевые принтеры\:</TH>
+<TD>
+{[device_uri]{device_class=network?{device_uri~[a-z]+://?<INPUT TYPE="RADIO" NAME="DEVICE_URI"
+VALUE="{device_uri}{?device_make_and_model!Unknown?|{device_make_and_model}:}">
+{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}<BR>
+:}:}}
+</TD>
+</TR>
+<TR>
+<TR>
+<TH CLASS="label">Другие сетевые принтеры\:</TH>
+<TD>
+{[device_uri]{device_class=network?{device_uri~[a-z]+://?:<INPUT TYPE="RADIO" NAME="DEVICE_URI"
+VALUE="{device_uri}{?device_make_and_model!Unknown?|{device_make_and_model}:}">
+{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}<BR>
+}:}}
+</TD>
+</TR>
+<TR>
+<TD></TD>
+<TD><INPUT TYPE="SUBMIT" VALUE="Продолжить"></TD>
+</TR>
+</TABLE>
+
+</FORM>:<P><IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16" ALIGN="ABSMIDDLE"
+ALT="Busy Indicator"> Поиск принтеров...</P>}
+
+</DIV>
diff --git a/templates/ru/choose-make.tmpl b/templates/ru/choose-make.tmpl
new file mode 100644 (file)
index 0000000..55b91db
--- /dev/null
@@ -0,0 +1,64 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">{op=modify-printer?Изменение {printer_name}:Добавление принтера}</H2>
+
+<FORM METHOD="POST" ACTION="/admin" ENCTYPE="multipart/form-data">
+<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+{printer_name?<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">:}
+<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}">
+
+<TABLE>
+{op=modify-printer?:<TR>
+<TH CLASS="label">Название:</TH>
+<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">{printer_name}</TD>
+</TR>}
+<TR>
+<TH CLASS="label">Описание:</TH>
+<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{printer_info}">{printer_info}</TD>
+</TR>
+<TR>
+<TH CLASS="label">Расположение:</TH>
+<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="{printer_location}">{printer_location}</TD>
+</TR>
+<TR>
+<TH CLASS="label">Подключение:</TH>
+<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
+</TR>
+<TR>
+<TH CLASS="label">Совместный доступ:</TH>
+<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_IS_SHARED" VALUE="{?printer_is_shared}">
+{?printer_is_shared=?Нет совместного доступа:{?printer_is_shared=0?Нет совместного доступа:Разрешить совместный доступ}} к этому принтеру</TD>
+</TR>
+<TR>
+<TH CLASS="label">Создать:</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="SUBMIT" VALUE="Продолжить"></TD>
+</TR>
+<TR>
+<TD></TD>
+<TD>&nbsp;</TD>
+</TR>
+<TR>
+<TH CLASS="label">или использовать файл PPD:</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="SUBMIT" VALUE="{op=add-printer?Добавить принтер:Сохранить}"></TD>
+</TR>
+</TABLE>
+
+</FORM>
+</DIV>
\ No newline at end of file
diff --git a/templates/ru/choose-model.tmpl b/templates/ru/choose-model.tmpl
new file mode 100644 (file)
index 0000000..b666329
--- /dev/null
@@ -0,0 +1,60 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">{op=modify-printer?Изменение {printer_name}:Добавление принтера}</H2>
+
+<FORM METHOD="POST" ACTION="/admin" ENCTYPE="multipart/form-data">
+<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+{printer_name?<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">:}
+<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}">
+<TABLE>
+{op=modify-printer?:<TR>
+<TH CLASS="label">Название:</TH>
+<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">{printer_name}</TD>
+</TR>}
+<TR>
+<TH CLASS="label">Описание:</TH>
+<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{printer_info}">{printer_info}</TD>
+</TR>
+<TR>
+<TH CLASS="label">Расположение:</TH>
+<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="{printer_location}">{printer_location}</TD>
+</TR>
+<TR>
+<TH CLASS="label">Подключение:</TH>
+<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
+</TR>
+<TR>
+<TH CLASS="label">Совместный доступ:</TH>
+<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_IS_SHARED" VALUE="{?printer_is_shared}">
+{?printer_is_shared=?Нет совместного доступа:{?printer_is_shared=0?Нет совместного доступа:Разрешить совместный доступ}} к этому принтеру</TD>
+</TR>
+<TR>
+<TH CLASS="label">Создать:</TH>
+<TD>{PPD_MAKE} <INPUT TYPE="SUBMIT" NAME="SELECT_MAKE" VALUE="Выбрать другую модель"></TD>
+</TR>
+<TR>
+<TH CLASS="label">Модель:</TH>
+<TD>
+<SELECT NAME="PPD_NAME" SIZE="10">
+{op=add-printer?:<OPTION VALUE="__no_change__" SELECTED>Текущий драйвер - {current_make_and_model}</OPTION>:}
+{[ppd_name]<OPTION VALUE="{ppd_name}" {op=modify-printer?:{?current_make_and_model={ppd_make_and_model}?SELECTED:}}>{ppd_make_and_model} ({ppd_natural_language})
+}</SELECT>
+</TD>
+</TR>
+<TR>
+<TH CLASS="label">или использовать файл PPD:</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="SUBMIT" VALUE="{op=add-printer?Добавить принтер:Сохранить}"></TD>
+</TR>
+</TABLE>
+
+</FORM>
+</DIV>
\ No newline at end of file
diff --git a/templates/ru/choose-serial.tmpl b/templates/ru/choose-serial.tmpl
new file mode 100644 (file)
index 0000000..5a953a2
--- /dev/null
@@ -0,0 +1,52 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">{op=modify-printer?Изменение {printer_name}:Добавление принтера}</H2>
+
+<FORM METHOD="POST" ACTION="/admin">
+<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+{printer_name?<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">:}
+
+<TABLE>
+<TR>
+<TH CLASS="label">Подключение:</TH>
+<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
+</TR>
+<TR>
+<TH CLASS="label">Скорость передачи:</TH>
+<TD><SELECT NAME="BAUDRATE">
+{[baudrates]<OPTION {?baudrate={baudrates}?SELECTED:}>{baudrates}}
+</SELECT></TD>
+</TR>
+<TR>
+<TH CLASS="label">Печать страниц:</TH>
+<TD><SELECT NAME="PARITY">
+<OPTION VALUE="none" {?parity=none?SELECTED:}>Все
+<OPTION VALUE="even" {?parity=even?SELECTED:}>Только четные
+<OPTION VALUE="odd" {?parity=odd?SELECTED:}>Только нечетные
+</SELECT></TD>
+</TR>
+<TR>
+<TH CLASS="label">Биты данных:</TH>
+<TD><SELECT NAME="BITS">
+<OPTION {?bits=8?SELECTED:}>8
+<OPTION {?bits=7?SELECTED:}>7
+</SELECT></TD>
+</TR>
+<TR>
+<TH CLASS="label">Управление:</TH>
+<TD><SELECT NAME="FLOW">
+<OPTION VALUE="none" {?flow=none?SELECTED:}>Нет
+<OPTION VALUE="soft" {?flow=soft?SELECTED:}>XON/XOFF (Программное)
+<OPTION VALUE="hard" {?flow=hard?SELECTED:}>RTS/CTS (Аппаратное)
+<OPTION VALUE="dtrdsr" {?flow=dtrdsr?SELECTED:}>DTR/DSR (Аппаратное)
+</SELECT></TD>
+</TR>
+<TR>
+<TD></TD>
+<TD><INPUT TYPE="SUBMIT" VALUE="Продолжить"></TD>
+</TR>
+</TABLE>
+
+</FORM>
+</DIV>
\ No newline at end of file
diff --git a/templates/ru/choose-uri.tmpl b/templates/ru/choose-uri.tmpl
new file mode 100644 (file)
index 0000000..3c843f0
--- /dev/null
@@ -0,0 +1,43 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">{op=modify-printer?Изменение {printer_name}:Добавление принтера}</H2>
+
+<FORM METHOD="POST" ACTION="/admin">
+<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+{printer_name?<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">:}
+<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE_AND_MODEL" VALUE="{?current_make_and_model}">
+
+<TABLE>
+<TR>
+<TH CLASS="label">Подключение:</TH>
+<TD><INPUT TYPE="URL" SIZE="60" MAXLENGTH="1023" NAME="DEVICE_URI" VALUE="{current_device_uri?{current_device_uri}:{device_uri}}"></TD>
+</TR>
+<TR>
+<TD></TD>
+<TD>Примеры:
+<PRE>
+    http://hostname:631/ipp/
+    http://hostname:631/ipp/port1
+
+    ipp://hostname/ipp/
+    ipp://hostname/ipp/port1
+
+    lpd://hostname/queue
+
+    socket://hostname
+    socket://hostname:9100
+</PRE>
+
+<P>Смотрите раздел <A HREF="/help/network.html" TARGET="_blank">"Сетевые принтеры"</A> для выяснения правильного адреса вашего принтера.</P>
+
+</TD>
+</TR>
+<TR>
+<TD></TD>
+<TD><INPUT TYPE="SUBMIT" VALUE="Продолжить"></TD>
+</TR>
+</TABLE>
+
+</FORM>
+</DIV>
\ No newline at end of file
diff --git a/templates/ru/class-added.tmpl b/templates/ru/class-added.tmpl
new file mode 100644 (file)
index 0000000..626cfec
--- /dev/null
@@ -0,0 +1,7 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">Новая группа</H2>
+
+<P>Группа <A HREF="/classes/{printer_name}">{printer_name}</A> успешно добавлена.
+
+</DIV>
diff --git a/templates/ru/class-confirm.tmpl b/templates/ru/class-confirm.tmpl
new file mode 100644 (file)
index 0000000..0eb87ef
--- /dev/null
@@ -0,0 +1,10 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">Удаление группы {printer_name}</H2>
+
+<P><B>Предупреждение:</B> Вы действительно хотите удалить группу
+{printer_name}?</P>
+
+<P ALIGN="CENTER"><FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="op" VALUE="delete-class"><INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}"><INPUT TYPE="SUBMIT" NAME="confirm" VALUE="Удалить группу"></FORM></P>
+
+</DIV>
diff --git a/templates/ru/class-deleted.tmpl b/templates/ru/class-deleted.tmpl
new file mode 100644 (file)
index 0000000..08f5999
--- /dev/null
@@ -0,0 +1,7 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">Удаление группы {printer_name}</H2>
+
+<P>Группа {printer_name} успешно удалена.
+
+</DIV>
\ No newline at end of file
diff --git a/templates/ru/class-jobs-header.tmpl b/templates/ru/class-jobs-header.tmpl
new file mode 100644 (file)
index 0000000..8487cbb
--- /dev/null
@@ -0,0 +1,3 @@
+<DIV CLASS="indent">
+<H3 CLASS="title">Задания</H3>
+</DIV>
diff --git a/templates/ru/class-modified.tmpl b/templates/ru/class-modified.tmpl
new file mode 100644 (file)
index 0000000..986a02b
--- /dev/null
@@ -0,0 +1,7 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">Изменение группы {printer_name}</H2>
+
+<P>Группа <A HREF="/classes/{printer_name}">{printer_name}</A> успешно изменена.
+
+</DIV>
\ No newline at end of file
diff --git a/templates/ru/class.tmpl b/templates/ru/class.tmpl
new file mode 100644 (file)
index 0000000..643cbae
--- /dev/null
@@ -0,0 +1,44 @@
+<DIV CLASS="indent">
+<H2 CLASS="title"><A HREF="{printer_uri_supported}">{printer_name}</A>
+({printer_state=3?Idle:{printer_state=4?печать:приостановлен}},
+{printer_is_accepting_jobs=0?Не принимает задания:Принимает задания},
+{server_is_sharing_printers=0?нет совместного доступа:{printer_is_shared=0?нет совместного доступа:разрешен совместный доступ}} {default_name={printer_name}?, Сервер по умолчанию:})</H2>
+
+<FORM METHOD="POST" ACTION="{printer_uri_supported}" NAME="maintenance">
+<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
+<SELECT NAME="OP" ONCHANGE="document.maintenance.submit();">
+<OPTION VALUE="">Обслуживание</OPTION>
+<OPTION VALUE="print-test-page">Печать пробной страницы</OPTION>
+{printer_state=5?<OPTION VALUE="start-class">Данные группы</OPTION>:<OPTION VALUE="stop-class">Приостановить группу</OPTION>}
+{printer_is_accepting_jobs=0?<OPTION VALUE="accept-jobs">Принимать задания</OPTION>:<OPTION VALUE="reject-jobs">Не принимать задания</OPTION>}
+<OPTION VALUE="move-jobs">Переместить все задания</OPTION>
+<OPTION VALUE="purge-jobs">Отменить все задания</OPTION>
+</SELECT>
+<INPUT TYPE="SUBMIT" VALUE="Сохранить" STYLE="display: none;">
+</FORM>
+
+<FORM METHOD="POST" ACTION="{admin_uri}" NAME="Администрирование">
+<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
+<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">
+<INPUT TYPE="HIDDEN" NAME="IS_CLASS" VALUE="1">
+<SELECT NAME="OP" ONCHANGE="document.administration.submit();">
+<OPTION VALUE="">Администрирование</OPTION>
+<OPTION VALUE="modify-class">Изменить группу</OPTION>
+<OPTION VALUE="delete-class">Удалить группу</OPTION>
+<OPTION VALUE="set-class-options">Установить параметры по умолчанию</OPTION>
+<OPTION VALUE="set-as-default">Установить как принтер по умолчанию</OPTION>
+<OPTION VALUE="set-allowed-users">Список разрешенных пользователей</OPTION>
+</SELECT>
+<INPUT TYPE="SUBMIT" VALUE="Сохранить" STYLE="display: none;">
+</FORM>
+
+<TABLE SUMMARY="{printer_name}">
+<TR><TH ALIGN="RIGHT" VALIGN="TOP">Описание:</TH><TD>{printer_info}</TD></TR>
+<TR><TH ALIGN="RIGHT" VALIGN="TOP">Расположение:</TH><TD>{printer_location}</TD></TR>
+<TR><TH ALIGN="RIGHT" VALIGN="TOP">Состав:</TH><TD>{?member_uris=?Нет принтеров:{member_uris}}</TD></TR>
+<TR><TH ALIGN="RIGHT" VALIGN="TOP">По умолчанию:</TH><TD>job-sheets={job_sheets_default}
+media={media_default?{media_default}:неизвестный}
+{sides_default?sides={sides_default}:}</TD></TR>
+</TABLE>
+
+</DIV>
diff --git a/templates/ru/classes-header.tmpl b/templates/ru/classes-header.tmpl
new file mode 100644 (file)
index 0000000..51012c5
--- /dev/null
@@ -0,0 +1 @@
+<P ALIGN="CENTER">{total=0?Нет групп:Показать {#printer_name} из {total} группы{total=1?:es}}.</P>
diff --git a/templates/ru/classes.tmpl b/templates/ru/classes.tmpl
new file mode 100644 (file)
index 0000000..5038bea
--- /dev/null
@@ -0,0 +1,11 @@
+{#printer_name=0?:
+<TABLE CLASS="list" SUMMARY="Список групп">
+<THEAD>
+<TR><TH><A HREF="{THISURL}?QUERY={?QUERY}&amp;WHICH_JOBS={?WHICH_JOBS}&amp;FIRST={FIRST}&amp;ORDER={ORDER=dec?asc:dec}">{ORDER=dec?<SMALL>&#x25b2;</SMALL> Очередь <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> Очередь <SMALL>&#x25bc;</SMALL>}</A></TH><TH>Описание</TH><TH>Расположение</TH><TH>Состав</TH><TH>Статус</TH></TR>
+</THEAD>
+<TBODY>
+{[printer_name]
+<TR><TD><A HREF="{printer_uri_supported}">{printer_name}</A></TD><TD>{printer_info}</TD><TD>{printer_location}</TD><TD>{?member_uris=?Нет принтеров:{member_uris}}</TD><TD>{printer_state=3?В ожидании:{printer_state=4?Печатает:Приостановлен}}{printer_state_message? - "{printer_state_message}":}</TD></TR>
+}
+</TBODY>
+</TABLE></DIV>}
diff --git a/templates/ru/command.tmpl b/templates/ru/command.tmpl
new file mode 100644 (file)
index 0000000..4dc7b4e
--- /dev/null
@@ -0,0 +1,12 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">{title} для {printer_name}</H2>
+
+<P>{job_state>5?:<IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16"
+ALIGN="ABSMIDDLE" ALT="Индикатор занятости"> }Обработка задания
+{job_state=3?в очереди:{job_state=4?удерживается:
+{job_state=5?обрабатывается:{job_state=6?остановлено:
+{job_state=7?отменено:{job_state=8?прервано:завершено}}}}}}{job_state=9?:{job_printer_state_message?,
+<EM>"{job_printer_state_message}"</EM>:}}</P>
+
+</DIV>
diff --git a/templates/ru/edit-config.tmpl b/templates/ru/edit-config.tmpl
new file mode 100644 (file)
index 0000000..d194059
--- /dev/null
@@ -0,0 +1,24 @@
+<SCRIPT TYPE="text/javascript">
+function reset_config()
+{
+  document.cups.CUPSDCONF.value = "{?cupsdconf_default}";
+}
+</SCRIPT>
+
+<DIV CLASS="indent">
+
+<H2 CLASS="title">Редактирование конфигурационного файла</H2>
+
+<FORM NAME="cups" METHOD="POST" ACTION="/admin/">
+<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
+
+<TEXTAREA NAME="CUPSDCONF" COLS="80" ROWS="25">{CUPSDCONF}</TEXTAREA>
+
+<P><INPUT TYPE="SUBMIT" NAME="SAVECHANGES" VALUE="Сохранить изменения">
+<INPUT TYPE="BUTTON" VALUE="Сбросить все изменения"
+onClick="reset_config();"></P>
+
+</FORM>
+
+</DIV>
diff --git a/templates/ru/error-op.tmpl b/templates/ru/error-op.tmpl
new file mode 100644 (file)
index 0000000..922976f
--- /dev/null
@@ -0,0 +1,9 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">{?title} {?printer_name} - ошибка </H2>
+
+<P>Ошибка:</P>
+
+<BLOCKQUOTE>Неизвестная операция "{op}"!</BLOCKQUOTE>
+
+</DIV>
diff --git a/templates/ru/error.tmpl b/templates/ru/error.tmpl
new file mode 100644 (file)
index 0000000..4a35c8f
--- /dev/null
@@ -0,0 +1,9 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">{?title} {?printer_name} - ошибка</H2>
+
+<P>{?message?{message}:Ошибка}:</P>
+
+<BLOCKQUOTE>{error}</BLOCKQUOTE>
+
+</DIV>
diff --git a/templates/ru/header.tmpl.in b/templates/ru/header.tmpl.in
new file mode 100644 (file)
index 0000000..6d16855
--- /dev/null
@@ -0,0 +1,29 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<HTML>
+<HEAD>
+       <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
+       <TITLE>{title} - CUPS @CUPS_VERSION@@CUPS_REVISION@</TITLE>
+       <LINK REL="STYLESHEET" TYPE="text/css" HREF="/cups.css">
+       <LINK REL="SHORTCUT ICON" HREF="/images/cups-icon.png" TYPE="image/png">
+       {refresh_page?<META HTTP-EQUIV="Refresh" CONTENT="{refresh_page}">:}
+</HEAD>
+<BODY>
+<TABLE CLASS="page" SUMMARY="{title}">
+<TR><TD CLASS="body">
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" SUMMARY="">
+<TR HEIGHT="36">
+<TD><A HREF="http://www.cups.org/" TARGET="_blank"><IMG
+SRC="/images/left.gif" WIDTH="64" HEIGHT="36" BORDER="0" ALT=""></A></TD>
+<TD CLASS="unsel"><A HREF="/">&nbsp;&nbsp;Начало&nbsp;&nbsp;</A></TD>
+<TD CLASS="{SECTION=admin?:un}sel"><A HREF="/admin">&nbsp;&nbsp;Администрирование&nbsp;&nbsp;</A></TD>
+<TD CLASS="{SECTION=classes?:un}sel"><A HREF="/classes/">&nbsp;&nbsp;Группы&nbsp;&nbsp;</A></TD>
+<TD CLASS="{SECTION=help?:un}sel"><A HREF="/help/">&nbsp;&nbsp;Справка&nbsp;&nbsp;</A></TD>
+<TD CLASS="{SECTION=jobs?:un}sel"><A HREF="/jobs/">&nbsp;&nbsp;Задания&nbsp;&nbsp;</A></TD>
+<TD CLASS="{SECTION=printers?:un}sel"><A HREF="/printers/">&nbsp;&nbsp;Принтеры&nbsp;&nbsp;</A></TD>
+<TD CLASS="unsel" WIDTH="100%"><FORM ACTION="/help/" METHOD="GET"><INPUT
+TYPE="SEARCH" NAME="QUERY" SIZE="20" PLACEHOLDER="Поиск по справке"
+VALUE="{SECTION=help?{?QUERY}:}" AUTOSAVE="org.cups.help" RESULTS="20"></FORM></TD>
+<TD><IMG SRC="/images/right.gif" WIDTH="4" HEIGHT="36" ALT=""></TD>
+</TR>
+<TR><TD COLSPAN="9">&nbsp;</TD></TR>
+</TABLE>
diff --git a/templates/ru/help-header.tmpl b/templates/ru/help-header.tmpl
new file mode 100644 (file)
index 0000000..d618a66
--- /dev/null
@@ -0,0 +1,45 @@
+<DIV CLASS="indent">
+<FORM ACTION="/help/{?HELPFILE}" METHOD="GET">
+{TOPIC?<INPUT TYPE="HIDDEN" NAME="TOPIC" VALUE="{TOPIC}">:}
+
+<P ALIGN="CENTER"><B>Поиск
+{HELPTITLE?в {HELPTITLE}:{TOPIC?в {TOPIC}:по справке}}:</B> <INPUT
+TYPE="SEARCH" NAME="QUERY" VALUE="{?QUERY}" SIZE="40" PLACEHOLDER=""
+AUTOSAVE="org.cups.help" RESULTS="20">
+<INPUT TYPE="SUBMIT" NAME="SEARCH" VALUE="Поиск">
+<INPUT TYPE="SUBMIT" NAME="CLEAR" VALUE="Очистить"></P>
+
+</FORM>
+
+<!-- Bookmarks -->
+<DIV CLASS="sidebar"><TABLE CLASS="inset" SUMMARY="Содержание">
+<TR><TD>
+
+<H3 CLASS="title">Документация</H3>
+
+<P CLASS="l0"><A HREF="/help/{QUERY??QUERY={QUERY}:}">Все разделы</A></P>
+<HR>
+
+{[BMTEXT]<P CLASS="l{BMINDENT}"><A HREF="{BMLINK}">{BMTEXT}</A></P>
+}
+</TD></TR>
+</TABLE></DIV>
+
+{QUERY?<P>Результаты поиска в {HELPFILE?{HELPTITLE}:{TOPIC?{TOPIC}:всей справке}}\:</P>
+{QTEXT?<UL>
+{[QTEXT]<LI><A HREF="{QLINK}">{QTEXT}</A>{QPTEXT? (in <I><A HREF="{QPLINK}">{QPTEXT}</A></I>):}</LI>}
+{QTEXT?</UL>:}
+:<P>Не найдено совпадений.</P>}
+<HR NOSHADE>:}
+{HELPTITLE?<H1>{HELPTITLE}</H1>
+<FORM ACTION="/help/{?HELPFILE}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="PRINTABLE" VALUE="YES"><INPUT TYPE="SUBMIT" VALUE="Показать версию для печати"></FORM>:
+
+<H1>Справка</H1>
+
+<P>Это справка CUPS. Введите выше слова для поиска в справке и нажмите "Поиск", чтобы показать результаты поиска.</P>
+
+<P>Если вы пока мало знакомы с CUPS, прочтите раздел "<a
+href="/help/overview.html">Введение в CUPS</a>". Опытные пользователи
+могут обратиться к разделу "<a href="/help/whatsnew.html">Что нового в CUPS 1.6</a>".</P>
+
+<P><A HREF="http://www.cups.org/">Веб-сайт CUPS</A> так же содержит большое количество ресурсов для пользователей, включая форум, ответы на часто задаваемые вопросы и форму для регистрации ошибок и пожеланий.</P>}
diff --git a/templates/ru/help-printable.tmpl b/templates/ru/help-printable.tmpl
new file mode 100644 (file)
index 0000000..2463c16
--- /dev/null
@@ -0,0 +1,9 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/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="/images/cups-icon.png" TYPE="image/png">
+</HEAD>
+<BODY>
diff --git a/templates/ru/help-trailer.tmpl b/templates/ru/help-trailer.tmpl
new file mode 100644 (file)
index 0000000..4c1ebed
--- /dev/null
@@ -0,0 +1 @@
+</DIV>
diff --git a/templates/ru/job-cancel.tmpl b/templates/ru/job-cancel.tmpl
new file mode 100644 (file)
index 0000000..cba5644
--- /dev/null
@@ -0,0 +1,7 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">Отмена задания {job_id}</H2>
+
+<P><A HREF="{job_printer_uri}">Задание {job_id}</A> отменено.
+
+</DIV>
diff --git a/templates/ru/job-hold.tmpl b/templates/ru/job-hold.tmpl
new file mode 100644 (file)
index 0000000..162e4a4
--- /dev/null
@@ -0,0 +1,7 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">Приостановка задания {job_id}</H2>
+
+<P><A HREF="{job_printer_uri}">Задание {job_id}</A> приостановлено.
+
+</DIV>
diff --git a/templates/ru/job-move.tmpl b/templates/ru/job-move.tmpl
new file mode 100644 (file)
index 0000000..598e4db
--- /dev/null
@@ -0,0 +1,27 @@
+<DIV CLASS="indent">
+
+<FORM METHOD="POST" ACTION="/{SECTION}/{job_id?:{printer_name}}">
+<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+{job_id?<INPUT TYPE="HIDDEN" NAME="JOB_ID" VALUE="{job_id}">:}
+
+<H2 CLASS="title">{job_id?Перемещение задания {job_id}:Перемещение всех заданий}</H2>
+
+<TABLE>
+<TR>
+<TH CLASS="label">Переместить на принтер:</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="SUBMIT" VALUE="{job_id?Переместить задание:Переместить все задания}"></TD>
+</TR>
+</TABLE>
+
+</FORM>
+
+</DIV>
diff --git a/templates/ru/job-moved.tmpl b/templates/ru/job-moved.tmpl
new file mode 100644 (file)
index 0000000..e5bd656
--- /dev/null
@@ -0,0 +1,8 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">{job_id?Перемещение задания {job_id}:Перемещение всех заданий}</H2>
+
+<P>{job_id?<A HREF="/jobs/{job_id}">Задание {job_id}</A>:Все задания} перемещены на
+<A HREF="/{is_class?группы:принтеры}/{job_printer_name}">{job_printer_name}</A>.</P>
+
+</DIV>
diff --git a/templates/ru/job-release.tmpl b/templates/ru/job-release.tmpl
new file mode 100644 (file)
index 0000000..1cad15a
--- /dev/null
@@ -0,0 +1,7 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">Разблокирование задания {job_id}</H2>
+
+<P><A HREF="{job_printer_uri}">Задание {job_id}</A> разблокировано.
+
+</DIV>
diff --git a/templates/ru/job-restart.tmpl b/templates/ru/job-restart.tmpl
new file mode 100644 (file)
index 0000000..490fc3a
--- /dev/null
@@ -0,0 +1,7 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">Перезапуск задания {job_id}</H2>
+
+<P><A HREF="{job_printer_uri}">Задание {job_id}</A> запущено заново.
+
+</DIV>
diff --git a/templates/ru/jobs-header.tmpl b/templates/ru/jobs-header.tmpl
new file mode 100644 (file)
index 0000000..7b645b5
--- /dev/null
@@ -0,0 +1,5 @@
+<DIV CLASS="indent">{?which_jobs=?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Показать активные задания"></FORM>}
+{?which_jobs=completed?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="which_jobs" VALUE="completed"><INPUT TYPE="SUBMIT" VALUE="Показать завершенные задания"></FORM>}
+{?which_jobs=all?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="which_jobs" VALUE="all"><INPUT TYPE="SUBMIT" VALUE="Показать все задания"></FORM>}</DIV>
+
+<P ALIGN="CENTER">{total=0?Нет заданий:Задание {#job_id} из {total} {?which_jobs=?активных:{which_jobs=all?:завершенных}}}.</P>
diff --git a/templates/ru/jobs.tmpl b/templates/ru/jobs.tmpl
new file mode 100644 (file)
index 0000000..ce80fdb
--- /dev/null
@@ -0,0 +1,36 @@
+{#job_id=0?:
+<TABLE CLASS="list" SUMMARY="Задания">
+<THEAD>
+<TR><TH><A HREF="{THISURL}?QUERY={?QUERY}&amp;WHICH_JOBS={?WHICH_JOBS}&amp;FIRST={FIRST}&amp;ORDER={ORDER=dec?asc:dec}">{ORDER=dec?<SMALL>&#x25b2;</SMALL> Номер <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> ID <SMALL>&#x25bc;</SMALL>}</A></TH><TH>Название</TH><TH>Пользователь</TH><TH>Размер</TH><TH>Страниц</TH><TH>Статус</TH><TH>Управление</TH></TR>
+</THEAD>
+<TBODY>
+{[job_id]
+<TR VALIGN="TOP">
+<TD><A HREF="{job_printer_uri}">{job_printer_name}</A>-{job_id}{?phone? ({phone}):}&nbsp;</TD>
+<TD>{?job_name=?Неизвестное:{job_name}}&nbsp;</TD>
+<TD>{?job_originating_user_name=?Приостановлено пользователем:{job_originating_user_name}}&nbsp;</TD>
+<TD>{job_k_octets}k&nbsp;</TD>
+<TD>{job_media_sheets_completed=0?Неизвестно:{?job_media_sheets_completed}}&nbsp;</TD>
+<TD>{job_state=3?В очереди<BR>{time_at_creation}:{job_state=4?Приостановлено с<BR>{time_at_creation}:
+{job_state=5?Создано<BR>{time_at_processing}:{job_state=6?Остановлено:
+{job_state=7?Отменено<BR>{time_at_completed}:{job_state=8?Прервано:Завершено<BR>{time_at_completed}}}}}}}&nbsp;{job_printer_state_message?<BR>
+<EM>"{job_printer_state_message}"</EM>:}</TD>
+<TD>
+{job_preserved>0?{job_state>5?
+<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="restart-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="HIDDEN" NAME="job_printer_uri" VALUE="{job_printer_uri}"><INPUT TYPE="SUBMIT" VALUE="Перезапустить"></FORM>:}:}
+{job_state=4?
+<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="release-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="HIDDEN" NAME="job_printer_uri" VALUE="{job_printer_uri}">
+<INPUT TYPE="SUBMIT" VALUE="Продолжить"></FORM>:}
+{job_state=3?
+<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="hold-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="HIDDEN" NAME="job_printer_uri" VALUE="{job_printer_uri}">
+<INPUT TYPE="SUBMIT" VALUE="Приостановить"></FORM>:}
+{job_state<7?
+<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="cancel-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="HIDDEN" NAME="job_printer_uri" VALUE="{job_printer_uri}">
+<INPUT TYPE="SUBMIT" VALUE="Отменить"></FORM>
+<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="move-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="SUBMIT" VALUE="Переместить"></FORM>:}
+&nbsp;</TD>
+</TR>
+}
+</TBODY>
+</TABLE>
+}
diff --git a/templates/ru/list-available-printers.tmpl b/templates/ru/list-available-printers.tmpl
new file mode 100644 (file)
index 0000000..90d3c94
--- /dev/null
@@ -0,0 +1,11 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">Доступные принтеры</H2>
+
+{#device_uri=0?<P>Не обнаружено ни одного принтера.</P>
+:<UL>{[device_uri]
+<LI><FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-printer"><INPUT TYPE="HIDDEN" NAME="TEMPLATE_NAME" VALUE="{template_name}"><INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="Локальный принтер"><INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{device_make_and_model}"><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}"><INPUT TYPE="SUBMIT" VALUE="Добавить этот принтер"></FORM>
+{device_make_and_model} ({device_info})</LI>
+}</UL>}
+
+</DIV>
diff --git a/templates/ru/modify-class.tmpl b/templates/ru/modify-class.tmpl
new file mode 100644 (file)
index 0000000..a85698a
--- /dev/null
@@ -0,0 +1,34 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">Изменение группы {printer_name}</H2>
+
+<FORM METHOD="POST" ACTION="/admin">
+<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
+
+<TABLE>
+<TR>
+<TH CLASS="label">Описание:</TH>
+<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" VALUE="{?printer_info}" SIZE="40" MAXLENGTH="127"></TD>
+</TR>
+<TR>
+<TH CLASS="label">Расположение:</TH>
+<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" VALUE="{?printer_location}" SIZE="40" MAXLENGTH="127"></TD>
+</TR>
+<TR>
+<TH CLASS="label">Состав группы:</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="SUBMIT" VALUE="Изменить группу"></TD>
+</TR>
+</TABLE>
+
+</FORM>
+</DIV>
\ No newline at end of file
diff --git a/templates/ru/modify-printer.tmpl b/templates/ru/modify-printer.tmpl
new file mode 100644 (file)
index 0000000..8ec523f
--- /dev/null
@@ -0,0 +1,42 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">Изменение принтера {printer_name}</H2>
+
+<FORM METHOD="POST" ACTION="/admin">
+<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+<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}">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
+
+<TABLE>
+<TR>
+<TH CLASS="label">Описание:</TH>
+<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" VALUE="{?printer_info}" SIZE="40" MAXLENGTH="127"><BR>
+<SMALL>(расширенное описание принтера, например,  "HP LaserJet с дуплексной печатью")</SMALL></TD>
+</TR>
+<TR>
+<TH CLASS="label">Расположение:</TH>
+<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" VALUE="{?printer_location}" SIZE="40" MAXLENGTH="127"><BR>
+<SMALL>(местоположение принтера, например, "Кабинет 55")</SMALL></TD>
+</TR>
+<TR>
+<TH CLASS="label">Подключение:</TH>
+<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
+</TR>
+<TR>
+<TH CLASS="label">Совместный доступ:</TH>
+<TD><INPUT TYPE="CHECKBOX" NAME="PRINTER_IS_SHARED" {PRINTER_IS_SHARED=1?CHECKED:}>
+Разрешить совместный доступ к этому принтеру</TD>
+</TR>
+<TR>
+<TR>
+<TD></TD>
+<TD><INPUT TYPE="SUBMIT" VALUE="Продолжить"></TD>
+</TR>
+</TABLE>
+
+</FORM>
+</DIV>
diff --git a/templates/ru/norestart.tmpl b/templates/ru/norestart.tmpl
new file mode 100644 (file)
index 0000000..a08a467
--- /dev/null
@@ -0,0 +1,7 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">Применение изменений</H2>
+
+<P>Сервер не был перезапущен,поскольку не произошло изменений в конфигурации...</P>
+
+</DIV>
diff --git a/templates/ru/option-boolean.tmpl b/templates/ru/option-boolean.tmpl
new file mode 100644 (file)
index 0000000..e832ee1
--- /dev/null
@@ -0,0 +1,6 @@
+<TR>
+<TH {conflicted=1?CLASS="conflict":CLASS="label"} WIDTH="50%"><A NAME="{keyword}">{keytext}</A>:</TH>
+<TD>
+{[choices]<INPUT TYPE="RADIO" NAME="{keyword-1}" {choices={defchoice-1}?CHECKED:} VALUE="{choices}">{text}}
+</TD>
+</TR>
diff --git a/templates/ru/option-conflict.tmpl b/templates/ru/option-conflict.tmpl
new file mode 100644 (file)
index 0000000..9497fb7
--- /dev/null
@@ -0,0 +1,7 @@
+<P><B>Ошибка:</B> следующие параметры конфликтуют:</P>
+
+<UL>
+{[ckeyword]<LI><A HREF="#{ckeyword}">{ckeytext}</A>: {cchoice}</LI>
+}</UL>
+
+<P>Измените один или несколько параметров для того, чтобы избежать конфликта.</P>
diff --git a/templates/ru/option-header.tmpl b/templates/ru/option-header.tmpl
new file mode 100644 (file)
index 0000000..464726a
--- /dev/null
@@ -0,0 +1,5 @@
+<DIV CLASS="tab" ID="{group_id}">
+
+<H3 ALIGN="CENTER">{group}</H3>
+
+<TABLE WIDTH="100%">
diff --git a/templates/ru/option-pickmany.tmpl b/templates/ru/option-pickmany.tmpl
new file mode 100644 (file)
index 0000000..0da75e5
--- /dev/null
@@ -0,0 +1,6 @@
+<TR>
+<TH {conflicted=1?CLASS="conflict":CLASS="label"} WIDTH="50%"><A NAME="{keyword}">{keytext}</A>:</TH>
+<TD><SELECT NAME="{keyword}" MULTIPLE SIZE="10">
+{[choices]<OPTION {choices={defchoice-1}?SELECTED:} VALUE="{choices}">{text}}
+</SELECT></TD>
+</TR>
diff --git a/templates/ru/option-pickone.tmpl b/templates/ru/option-pickone.tmpl
new file mode 100644 (file)
index 0000000..49a9929
--- /dev/null
@@ -0,0 +1,18 @@
+<TR>
+<TH {conflicted=1?CLASS="conflict":CLASS="label"} WIDTH="50%"><A NAME="{keyword}">{keytext}</A>:</TH>
+<TD><SELECT NAME="{keyword}" ID="select-{keyword}" ONCHANGE="update_paramtable('{keyword}')">
+{[choices]<OPTION {choices={defchoice-1}?SELECTED:} VALUE="{choices}">{text}}
+</SELECT>
+{iscustom=1?<TABLE NAME="paramtable" id="{keyword}-params">{[params]
+<TR><TH CLASS="sublabel">{paramtext}:</TH>
+<TD>{params=Units?<SELECT NAME="{keyword-1}.{params}">
+<OPTION VALUE="pt"{paramvalue=pt? SELECTED:}>Пункты</OPTION>
+<OPTION VALUE="mm"{paramvalue=mm? SELECTED:}>Миллиметры</OPTION>
+<OPTION VALUE="cm"{paramvalue=cm? SELECTED:}>Сантиметры</OPTION>
+<OPTION VALUE="in"{paramvalue=in? SELECTED:}>Дюймы</OPTION>
+<OPTION VALUE="ft"{paramvalue=ft? SELECTED:}>Футы</OPTION>
+<OPTION VALUE="m"{paramvalue=m? SELECTED:}>Метры</OPTION>
+</SELECT>:<INPUT TYPE="{inputtype}" NAME="{keyword-1}.{params}" VALUE="{paramvalue}">}</TD></TR>
+}</TABLE>
+</TD>:}
+</TR>
diff --git a/templates/ru/option-trailer.tmpl b/templates/ru/option-trailer.tmpl
new file mode 100644 (file)
index 0000000..f80e946
--- /dev/null
@@ -0,0 +1,5 @@
+</TABLE>
+
+<P ALIGN="CENTER"><INPUT TYPE="SUBMIT" VALUE="Сохранить параметры по умолчанию"></P>
+
+</DIV>
\ No newline at end of file
diff --git a/templates/ru/pager.tmpl b/templates/ru/pager.tmpl
new file mode 100644 (file)
index 0000000..3c5dc62
--- /dev/null
@@ -0,0 +1,6 @@
+<TABLE CLASS="inset" SUMMARY="Просмотр по страницам">
+<TR>
+       <TD WIDTH="50%">{PREV?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{?ORDER}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{PREV}"><INPUT TYPE="SUBMIT" VALUE="&#x25c0; Предварительный просмотр"></FORM>:&nbsp;}</TD>
+       <TD WIDTH="50%" ALIGN="RIGHT">{NEXT?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{?ORDER}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{NEXT}"><INPUT TYPE="SUBMIT" VALUE="Показать следующую &#x25b6;"></FORM>:&nbsp;}</TD>
+</TR>
+</TABLE>
diff --git a/templates/ru/printer-accept.tmpl b/templates/ru/printer-accept.tmpl
new file mode 100644 (file)
index 0000000..24d100d
--- /dev/null
@@ -0,0 +1,9 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">Прием заданий {is_class?в группу:на принтер} {printer_name}</H2>
+
+<P>{is_class?Группа:Принтер} <A
+HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
+теперь принимает задания.</P>
+
+</DIV>
diff --git a/templates/ru/printer-added.tmpl b/templates/ru/printer-added.tmpl
new file mode 100644 (file)
index 0000000..cc78407
--- /dev/null
@@ -0,0 +1,7 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">Добавить принтер</H2>
+
+<P>Принтер <A HREF="/printers/{printer_name}">{printer_name}</A> успешно добавлен.
+
+</DIV>
diff --git a/templates/ru/printer-configured.tmpl b/templates/ru/printer-configured.tmpl
new file mode 100644 (file)
index 0000000..33c4c14
--- /dev/null
@@ -0,0 +1,8 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">Настройки по умолчанию для {printer_name}</H2>
+
+<P>{OP=set-class-options?Группа <A HREF="/classes/{printer_name}">:Принтер <A HREF="/printers/{printer_name}">}{printer_name}</A>
+теперь используют параметры по умолчанию.
+
+</DIV>
diff --git a/templates/ru/printer-confirm.tmpl b/templates/ru/printer-confirm.tmpl
new file mode 100644 (file)
index 0000000..86b6360
--- /dev/null
@@ -0,0 +1,10 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">Удаление принтера {printer_name}</H2>
+
+<P><B>Предупреждение:</B> вы действительно хотите удалить принтер
+{printer_name}?</P>
+
+<P ALIGN="CENTER"><FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="delete-printer"><INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}"><INPUT TYPE="SUBMIT" NAME="confirm" VALUE="Удалить принтер"></FORM></P>
+
+</DIV>
diff --git a/templates/ru/printer-default.tmpl b/templates/ru/printer-default.tmpl
new file mode 100644 (file)
index 0000000..474f4b8
--- /dev/null
@@ -0,0 +1,12 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">Установка {is_class?группы:принтера} {printer_name} по умолчанию</H2>
+
+<P>{is_class?Группа:Принтер} <A
+HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
+установлены на сервере по умолчанию для новых заданий.</P>
+
+<BLOCKQUOTE><B>Примечания:</B> вы можете переопределить это поведение с помощью команды
+the <TT>lpoptions</TT>.</BLOCKQUOTE>
+
+</DIV>
diff --git a/templates/ru/printer-deleted.tmpl b/templates/ru/printer-deleted.tmpl
new file mode 100644 (file)
index 0000000..43593c7
--- /dev/null
@@ -0,0 +1,7 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">Удаление принтера {printer_name}</H2>
+
+<P>Принтер {printer_name} успешно удален.
+
+</DIV>
diff --git a/templates/ru/printer-jobs-header.tmpl b/templates/ru/printer-jobs-header.tmpl
new file mode 100644 (file)
index 0000000..8487cbb
--- /dev/null
@@ -0,0 +1,3 @@
+<DIV CLASS="indent">
+<H3 CLASS="title">Задания</H3>
+</DIV>
diff --git a/templates/ru/printer-modified.tmpl b/templates/ru/printer-modified.tmpl
new file mode 100644 (file)
index 0000000..21c502f
--- /dev/null
@@ -0,0 +1,7 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">Изменение принтера {printer_name}</H2>
+
+<P>Параметры принтера <A HREF="/printers/{printer_name}">{printer_name}</A> успешно изменены.
+
+</DIV>
\ No newline at end of file
diff --git a/templates/ru/printer-purge.tmpl b/templates/ru/printer-purge.tmpl
new file mode 100644 (file)
index 0000000..c2768c8
--- /dev/null
@@ -0,0 +1,9 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">Очистка всех заданий для {is_class?группы:принтера} {printer_name}</H2>
+
+<P>Все задания для {is_class?группы:принтера} <A
+HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
+очищены.</P>
+
+</DIV>
\ No newline at end of file
diff --git a/templates/ru/printer-reject.tmpl b/templates/ru/printer-reject.tmpl
new file mode 100644 (file)
index 0000000..012e161
--- /dev/null
@@ -0,0 +1,9 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">Отмена заданий для {is_class?группы:принтера} {printer_name}</H2>
+
+<P>{is_class?Группа:Принтер} <A
+HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
+больше не принимает задания.</P>
+
+</DIV>
diff --git a/templates/ru/printer-start.tmpl b/templates/ru/printer-start.tmpl
new file mode 100644 (file)
index 0000000..cb02c79
--- /dev/null
@@ -0,0 +1,9 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">Возобновить работу {is_class?группы:принтера} {printer_name}</H2>
+
+<P>{is_class?Группа:Принтер} <A
+HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
+теперь принимают задания.</P>
+
+</DIV>
\ No newline at end of file
diff --git a/templates/ru/printer-stop.tmpl b/templates/ru/printer-stop.tmpl
new file mode 100644 (file)
index 0000000..d9fa7fc
--- /dev/null
@@ -0,0 +1,9 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">Приостановить {is_class?группу:принтер} {printer_name}</H2>
+
+<P>{is_class?Группа:Принтер} <A
+HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
+{is_class?была приостановлена:был приостановлен}.</P>
+
+</DIV>
\ No newline at end of file
diff --git a/templates/ru/printer.tmpl b/templates/ru/printer.tmpl
new file mode 100644 (file)
index 0000000..90bc7b3
--- /dev/null
@@ -0,0 +1,47 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title"><A HREF="{printer_uri_supported}">{printer_name}</A>
+({printer_state=3?в ожидании:{printer_state=4?печать:приостановлен}},
+{printer_is_accepting_jobs=0?не принимает задания:принимает задания},
+{server_is_sharing_printers=0?нет совместного доступа:{printer_is_shared=0?нет совместного доступа:разрешен совместный доступ}} {default_name={printer_name}?, По умолчанию:})</H2>
+
+<FORM METHOD="POST" ACTION="{printer_uri_supported}" NAME="maintenance">
+<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
+<SELECT NAME="OP" ONCHANGE="document.maintenance.submit();">
+<OPTION VALUE="">Обслуживание</OPTION>
+<OPTION VALUE="print-test-page">Печать пробной страницы</OPTION>
+{printer_commands~.*Clean.*?<OPTION VALUE="clean-print-heads">Очистить головки</OPTION>:}
+{printer_commands~.*PrintSelfTestPage.*?<OPTION VALUE="print-self-test-page">Печать пробной страницы принтера</OPTION>:}
+{printer_state=5?<OPTION VALUE="start-printer">Восстановить печать</OPTION>:<OPTION VALUE="stop-printer">Приостановить принтер</OPTION>}
+{printer_is_accepting_jobs=0?<OPTION VALUE="accept-jobs">Принимать задания</OPTION>:<OPTION VALUE="reject-jobs">Не принимать задания</OPTION>}
+<OPTION VALUE="move-jobs">Переместить все задания</OPTION>
+<OPTION VALUE="purge-jobs">Закрыть все задания</OPTION>
+</SELECT>
+<INPUT TYPE="SUBMIT" VALUE="Go" STYLE="display: none;">
+</FORM>
+
+<FORM METHOD="POST" ACTION="{admin_uri}" NAME="administration">
+<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
+<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">
+<SELECT NAME="OP" ONCHANGE="document.administration.submit();">
+<OPTION VALUE="">Администрирование</OPTION>
+<OPTION VALUE="modify-printer">Изменить принтер</OPTION>
+<OPTION VALUE="delete-printer">Удалить принтер</OPTION>
+<OPTION VALUE="set-printer-options">Установить параметры по умолчанию</OPTION>
+<OPTION VALUE="set-as-default">Установить как принтер по умолчанию</OPTION>
+<OPTION VALUE="set-allowed-users">Список разрешенных пользователей</OPTION>
+</SELECT>
+<INPUT TYPE="SUBMIT" VALUE="Go" STYLE="display: none;">
+</FORM>
+
+<TABLE SUMMARY="{printer_name}">
+<TR><TH ALIGN="RIGHT" VALIGN="TOP">Описание:</TH><TD>{printer_info}</TD></TR>
+<TR><TH ALIGN="RIGHT" VALIGN="TOP">Расположение:</TH><TD>{printer_location}</TD></TR>
+<TR><TH ALIGN="RIGHT" VALIGN="TOP">Драйвер:</TH><TD>{printer_make_and_model} ({color_supported=1?цветной:черно-белый}{sides_supported?, дуплексная печать:})<BR>
+<TR><TH ALIGN="RIGHT" VALIGN="TOP">Подключение:</TH><TD>{device_uri}</TD></TR>
+<TR><TH ALIGN="RIGHT" VALIGN="TOP">По умолчанию:</TH><TD>job-sheets={job_sheets_default}
+media={media_default?{media_default}:неизвестный}
+{sides_default?sides={sides_default}:}</TD></TR>
+</TABLE>
+
+</DIV>
\ No newline at end of file
diff --git a/templates/ru/printers-header.tmpl b/templates/ru/printers-header.tmpl
new file mode 100644 (file)
index 0000000..6621e06
--- /dev/null
@@ -0,0 +1 @@
+<P ALIGN="CENTER">{total=0?Нет принтеров:Принтер {#printer_name} из {total}}.</P>
diff --git a/templates/ru/printers.tmpl b/templates/ru/printers.tmpl
new file mode 100644 (file)
index 0000000..79feae5
--- /dev/null
@@ -0,0 +1,11 @@
+{#printer_name=0?:
+<TABLE CLASS="list" SUMMARY="Список принтеров">
+<THEAD>
+<TR><TH><A HREF="{THISURL}?QUERY={?QUERY}&amp;WHICH_JOBS={?WHICH_JOBS}&amp;FIRST={FIRST}&amp;ORDER={ORDER=dec?asc:dec}">{ORDER=dec?<SMALL>&#x25b2;</SMALL> Очередь <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> Очередь <SMALL>&#x25bc;</SMALL>}</A></TH><TH>Описание</TH><TH>Расположение</TH><TH>Драйвер</TH><TH>Статус</TH></TR>
+</THEAD>
+<TBODY>
+{[printer_name]
+<TR><TD><A HREF="{printer_uri_supported}">{printer_name}</A></TD><TD>{printer_info}</TD><TD>{printer_location}</TD><TD>{printer_make_and_model}</TD><TD>{printer_state=3?Idle:{printer_state=4?Печатает:Приостановлен}}{printer_state_message? - "{printer_state_message}":}</TD></TR>
+}
+</TBODY>
+</TABLE></DIV>}
diff --git a/templates/ru/restart.tmpl b/templates/ru/restart.tmpl
new file mode 100644 (file)
index 0000000..c32a5ae
--- /dev/null
@@ -0,0 +1,8 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">Применение изменений параметров</H2>
+
+<P><IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16" ALIGN="ABSMIDDLE"
+ALT="Ожидание"> Дождитесь перезагрузки сервера...</P>
+
+</DIV>
diff --git a/templates/ru/samba-export.tmpl b/templates/ru/samba-export.tmpl
new file mode 100644 (file)
index 0000000..641ca0b
--- /dev/null
@@ -0,0 +1,53 @@
+<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="org.cups.sid" VALUE="{$org.cups.sid}">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="export-samba">
+
+<H2 CLASS="title">Экспорт принтеров в Samba</H2>
+
+{error?<P>Невозможно экспортировать принтеры в Samba\:</P>
+<BLOCKQUOTE>{error}</BLOCKQUOTE>
+<P>Посмотрите файл <A HREF="/admin/log/error_log"
+TARGET="_blank">error_log</A> для более подробной информации.</P>:
+<P>Эта страница позволяет добавить принтеры в Samba так, чтобы
+клиенты Windows могли получить доступ к ним через значок <VAR>Сетевое окружение</VAR> или <VAR>Сетевые подключения</VAR> на их рабочем столе. Вы должны установить на Windows драйвер принтера PostScript
+как описано на странице руководства <A
+HREF="/help/man-cupsaddsmb.html"
+TARGET="_blank">cupsaddsmb(8)</A>.</P>}
+
+<TABLE>
+<TR>
+<TH CLASS="label">Принтеры:</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()"> Экспортировать все принтеры
+</TD>
+</TR>
+<TR>
+<TH CLASS="label">Имя пользователя Samba:</TH>
+<TD><INPUT TYPE="TEXT" NAME="USERNAME" VALUE="{?USERNAME}"> (обязательный параметр)</TD>
+</TR>
+<TR>
+<TH CLASS="label">Пароль Samba:</TH>
+<TD><INPUT TYPE="PASSWORD" NAME="PASSWORD" VALUE=""> (обязательный параметр)</TD>
+</TR>
+<TR>
+<TD></TD>
+<TD><INPUT TYPE="SUBMIT" VALUE="Экспортировать принтеры в Samba"></TD>
+</TR>
+</TABLE>
+
+</FORM>
diff --git a/templates/ru/samba-exported.tmpl b/templates/ru/samba-exported.tmpl
new file mode 100644 (file)
index 0000000..179b2ad
--- /dev/null
@@ -0,0 +1 @@
+<P>Принтеры успешно экспортированы в Samba.</P>
diff --git a/templates/ru/search.tmpl b/templates/ru/search.tmpl
new file mode 100644 (file)
index 0000000..f338bc6
--- /dev/null
@@ -0,0 +1,10 @@
+<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>Поиск
+{SEARCH_DEST?{SEARCH_DEST}:{SECTION=classes?группы:{SECTION=jobs?задания:принтеры}}}:</B>
+<INPUT TYPE="SEARCH" NAME="QUERY" VALUE="{?QUERY}" SIZE="40"  PLACEHOLDER="" AUTOSAVE="org.cups.{SECTION}" RESULTS="20"> <INPUT
+TYPE="SUBMIT" VALUE="Поиск"> <INPUT TYPE="SUBMIT" NAME="CLEAR" VALUE="Очистить"></P>
+
+</FORM>
diff --git a/templates/ru/set-printer-options-header.tmpl b/templates/ru/set-printer-options-header.tmpl
new file mode 100644 (file)
index 0000000..e5c79dd
--- /dev/null
@@ -0,0 +1,26 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">Установить параметры по умолчанию для {printer_name}</H2>
+
+<FORM METHOD="POST" ACTION="/admin">
+<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+{HAVE_AUTOCONFIGURE?<INPUT TYPE="SUBMIT" NAME="AUTOCONFIGURE" VALUE="Запрос принтера для параметров по умолчанию">:}
+
+<SCRIPT TYPE="text/javascript"><!--
+function update_paramtable(option)
+{
+  var cb = document.getElementById("select-" + option)
+  var paramstable = document.getElementById(option + "-params");
+  if (cb.value == "Custom")
+    paramstable.style.display = "table";
+  else
+    paramstable.style.display = "none";
+}
+--></SCRIPT>
+
+<H3 CLASS="title">{[group_id]
+<A HREF="#{group_id}">{group}</A>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</H3>
+
+<DIV CLASS="tabs">
diff --git a/templates/ru/set-printer-options-trailer.tmpl b/templates/ru/set-printer-options-trailer.tmpl
new file mode 100644 (file)
index 0000000..11adc70
--- /dev/null
@@ -0,0 +1,16 @@
+</DIV>
+
+<SCRIPT TYPE="text/javascript"><!--
+// Hide custom options parameters for browsers that understand Javascript
+var paramtables = document.getElementsByName("paramtable");
+for (var i = 0; i < paramtables.length; i++)
+{
+  var opt = paramtables[i].id.substr(0, paramtables[i].id.lastIndexOf("-"));
+  var cb = document.getElementById("select-" + opt);
+  if (cb.value != "Custom")
+    paramtables[i].style.display = "none";
+}
+--></SCRIPT>
+</FORM>
+
+</DIV>
diff --git a/templates/ru/subscription-added.tmpl b/templates/ru/subscription-added.tmpl
new file mode 100644 (file)
index 0000000..f2b4642
--- /dev/null
@@ -0,0 +1,5 @@
+<DIV CLASS="indent">
+
+<P>Подписка {subscription_name} была успешно добавлена.</P>
+
+</DIV>
diff --git a/templates/ru/subscription-canceled.tmpl b/templates/ru/subscription-canceled.tmpl
new file mode 100644 (file)
index 0000000..5daed1f
--- /dev/null
@@ -0,0 +1,5 @@
+<DIV CLASS="indent">
+
+<P>Подписка #{notify_subscription_id} была отменена.</P>
+
+</DIV>
diff --git a/templates/ru/test-page.tmpl b/templates/ru/test-page.tmpl
new file mode 100644 (file)
index 0000000..6dc1ba1
--- /dev/null
@@ -0,0 +1,8 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">Печать пробной страницы на {printer_name}</H2>
+
+<P>Пробная страница отправлена на печать;Номер задания <A HREF="/{SECTION}/{printer_name}">
+{printer_name}-{job_id}</A>.</P>
+
+</DIV>
diff --git a/templates/ru/trailer.tmpl b/templates/ru/trailer.tmpl
new file mode 100644 (file)
index 0000000..09de926
--- /dev/null
@@ -0,0 +1,7 @@
+</TD></TR>
+<TR><TD>&nbsp;</TD></TR>
+<TR><TD CLASS="trailer">CUPS, а так же логотип CUPS являются зарегистрированными торговыми марками
+<A HREF="http://www.apple.com">Apple Inc.</A> Авторские права на CUPS принадлежат (2007-2013) компании Apple Inc. Все права защищены.</TD></TR>
+</TABLE>
+</BODY>
+</HTML>
diff --git a/templates/ru/users.tmpl b/templates/ru/users.tmpl
new file mode 100644 (file)
index 0000000..ee718b2
--- /dev/null
@@ -0,0 +1,30 @@
+<DIV CLASS="indent">
+
+<FORM METHOD="POST" ACTION="/admin">
+<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
+<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">Доступ пользователей на {printer_name}</H2>
+
+<TABLE>
+<TR>
+<TH CLASS="label">Пользователи:</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:}>Разрешить этим пользователям печатать
+<INPUT TYPE='RADIO' NAME='type' VALUE='requesting-user-name-denied' {requesting_user_name_denied?checked:}>Запретить этим пользователям печатать
+</TD>
+</TR>
+<TR>
+<TD></TD>
+<TD>
+<INPUT TYPE="SUBMIT" VALUE="Сохранить">
+</TD>
+</TR>
+</TABLE>
+
+</FORM>
+</DIV>
index c0953fe64a9c42f8633cd31bdd4a138b720cd457..18b7b9051abd1b32a72efe5cfa9e64a8d6a24f96 100755 (executable)
@@ -391,6 +391,7 @@ cat >/tmp/cups-$user/cupsd.conf <<EOF
 StrictConformance Yes
 Browsing Off
 Listen localhost:$port
+Listen /tmp/cups-$user/sock
 PassEnv LOCALEDIR
 PassEnv DYLD_INSERT_LIBRARIES
 MaxSubscriptions 3
index 7b6081e8075d3bba5689253a7331dc1e43ec005f..86fc301f6b66a9eb94032f4e9490f26710a0032f 100644 (file)
@@ -21,8 +21,8 @@
  * Version of software...
  */
 
-#define CUPS_SVERSION "CUPS v1.6.0"
-#define CUPS_MINIMAL "CUPS/1.6.0"
+#define CUPS_SVERSION "CUPS v1.7.0"
+#define CUPS_MINIMAL "CUPS/1.7.0"
 
 
 /*
 
 
 /*
- * Do we have <scsi/sg.h>?
+ * Use <stdint.h>?
  */
 
-/* #undef HAVE_SCSI_SG_H */
+#define HAVE_STDINT_H 1
 
 
 /*
 /* #undef HAVE_SECURETRANSPORTPRIV_H */
 
 
-/*
- * Do we have the SecCertificateCopyData function?
- */
-
-#define HAVE_SECCERTIFICATECOPYDATA 1
-
-
-/*
- * Do we have the SecIdentitySearchCreateWithPolicy function?
- */
-
-#define HAVE_SECIDENTITYSEARCHCREATEWITHPOLICY 1
-
-
-/*
- * Do we have the SecPolicyCreateSSL function?
- */
-
-#define HAVE_SECPOLICYCREATESSL 1
-
-
-/*
- * Do we have the SecPolicyCreateSSL function?
- */
-
-#define HAVE_SECPOLICYCREATESSL 1
-
-
 /*
  * Do we have the cssmErrorString function?
  */